WEB工程师和设计师必学的10个IOS 8新鲜改变

2023-10-27

概述

  • 简介 iOS 8 上的 Safari 的更新
  • iPhone 6 和 iPhone 6 Plus
  • 新 Api 支持
  • Safari 新功能和支持
  • iOS 8 原生优化
  • Safari 插件
  • 新的设计
  • 视频增强
  • iOS 8上的JS
  • Bug 和问题

已经习惯了苹果官方的高冷,这次,苹果依旧没有更新任何与 Safari 或者 iOS 相关的文档,所以下面的所有数据和资料都是基于我自己的测试和 WWDC 上公布的信息。

iOS 8 上的 Safari

  • 支持HTML5新APIs: WebGL (3D canvas), IndexedDB,Navigation Timing API,Crypto API
  • 混合应用:更快的、优化的WebView
  • 支持滚动 Scroll 事件:终于支持了!
  • 视频播放: 全屏API,元数据API
  • HTML模板元素
  • Safari 插件:原生App可以以插件的形式读取网页DOM
  • 图片:支持Image Source Sets和动态PNGAPNG
  • CSS:支持Shapes,支持小数单位
  • 浏览器自动填写表单(支持信用卡调用摄像头扫描)
  • 网页和本地应用交互:登录数据共享
  • EcmaScript 6 :部分支持
  • SPDY:支持谷歌家的新网络协议了
  • 文件上传失效了(这是Bug)
  • 移除了minimal-ui属性
  • 支持Yosemite上的远程调试

相比其他移动端上的浏览器,iOS 8并没有支持有些功能:

  • dp单位的Media queries
  • getUserMedia:访问本地硬件设备,捕获音频和视频的Api
  • WebRTC:网页即时通信
  • @viewport 声明
  • Datalist
  • WebP图片

iPhone 6 和 iPhone6 Plus

iPhone 6 和 iPhone6 Plus 是苹果继 iPhone 5 后的又一款不同尺寸和不同分辨率的设备。iPhone 6 的参数为4.7寸大小和750×1334物理分辨率的屏幕(dpi 值与iphone 5s 相同),iPhone 6 Plus则是5.5寸和1080×1920<分辨率(401 dpi)的屏幕。不走寻常路的苹果给这两分辨率取名叫Retina HD屏,嗯哼,比Retina多了一个HD。

对于Web开发者来说,不同的不仅仅是尺子上的大小。还包括默认viewport(关乎width=device-width的设置),像素比(关乎高清图片的应用),icon图标大小和登录页的图片大小。

2014-10-3

对于新 iPhone 的屏幕尺寸,推荐一篇文章:iPhone 6 Screens Demystified 。

Viewport size

正在读这篇文章的你应该已经知道,直到上周,所有的 iPhone 和 iPod 使用的都是320px的屏幕宽度。iPhone 6 和 Plus 相比前代更加宽,给我们带来了更多的空间,苹果终于决定加宽浏览器宽度了。但是苹果奇葩的是使用了一套特殊的屏幕像素值。大部分4.7~5寸的安卓设备的viewport宽设为360px,iPhone 6上却是375px,大部分5.5寸安卓机器(比如说三星Note)的viewport宽为400,iPhone 6 plus 上却是十分怪异的414px(╮(╯_╰)╭ 苹果你这样折腾是闹哪样啊)。这意味着相比同样尺寸的安卓机器,iPhone 6用户大概要少看4%的内容。也许这并不是什么大问题,但是你也许还是得检查下你的网站是否适配。

适配新iPhone,你可以使用下面两段<meta>

<meta name="viewport" content="width=375">
<meta name="viewport" content="width=414">

设备像素比

iPhone 6与 iphone 5一样,像素比都是2,但是另一方面 iPhone 6 401的dpi真实的像素比值应该大约是2.60。为了解决这个问题,苹果又整了个新概念Rendered pixels 渲染像素,如果像素比是3x,那么理论上一个css宽设为414px的屏幕应该拥有1242px的物理像素(现实中是1080px,小了13%)。

因此,如果你使用一个3x的图给高清的安卓设备,同样这样图也会适配 iPhone 6 Plus 但是iPhone 的浏览器在渲染在屏幕之前首先会调整图片大小。

图标大小

iOS特有的图标大小,在 iPhone 6 plus上是180×180,iPhone 6 上则还是老的120×120。

适配iPhone 6 plus,则需要在<head>中加上这段

<link rel="apple-touch-icon-precomposed" sizes="180x180" href="retinahd_icon.png">

启动图

如果你的webapp有一个启动图,那么你又得增加两行代码适配新 iPhone 了。

iPhone 6对应的图片大小是750×1294,iPhone 6 Plus 对应的是1242×2148 。

<link rel="apple-touch-startup-image" href="launch6.png" media="(device-width: 375px)">

<link rel="apple-touch-startup-image" href="launch6plus.png" media="(device-width: 414px)">

UA探测

目前位置,所有升级到iOS 8的 iPhone都使用同样的UserAgent,所以我们暂时还没有办法在服务端判断这是什么设备,当然,通过JS和Media Queries我们还是可以通过技巧来判断的。

新的API

两个最重要的Api支持终于登录了iOS,分别是WebGL和IndexedDB,与此同时,Safari也开始支持 Web Cryptography 和 Navigation Timing

WebGL支持3D模拟,并且是浏览器默认开启。对于游戏开发者来说,这是一个好消息,更加丰富的交互和形式将在网页上出现。

你可以在微软的这个FishGl 测试下 iOS 8 Safarai上进行3D渲染的效果。

IndexdDB是W3C继起用WebSQL后推出的新的标准,随着 iOS支持 IndexedDB,我们能在不同的手机浏览器上使用同一套数据库API。

Navigation Timing API对于web性能优化来说是个好消息。通过这个API我们能过测量更加精准的加载渲染时间,优化网页的用户体验。

Safari新功能

缩放

iPhone处于横屏的时候,iPad(横竖均可),如果你用手指捏放屏幕(比如说你想放大网页),你会进入一个标签预览模式,用起来倒是挺方面,可是可能会与你在网页上使用的gesturechange事件所冲突,如果你要使用自定义缩放事件,首先爱你你得event.preventDefault()来阻止浏览器的默认事件。

取消 MINIMAL-UI

六个月前,苹果推出了了 Minimal UI mode《iOS 7.1的Safari为meta标签新增minimal-ui属性,在网页加载时隐藏地址栏与导航栏》,iOS 8更新后则又取消了这个,依旧高冷女神范,没说为什么。

表单自动填写和信用卡扫描功能

Safari如今支持自动补全表单,并且当Safari检测到你要填写的是信用卡的时候他会允许你开启摄像头直接扫描实体信用卡。

于此同时,Safari也支持autocomplete属性,参考 latest spec。这意味着如果你在一个登录页面,Safari可以调用Keychain里的数据自动填写用户名帐号、密码。Luis Abreu写过一篇关于iOS 8安全和隐私相关的文章,推荐可以看看:https://lmjabreu.com

RSS!

如果你的网站提供了RSS订阅,iOS 8用户可以直接在浏览你网页的时候在书签栏打开他。就是那个@图标里面有个订阅的按钮,虽说有点小低调,但好歹还是有嘛 ノ( ´ ▽ ` )ノ。

工具栏

现在地址栏和工具栏就变成半透明了。在 iOS 7上只有地址栏是半透明的。这意味着初次加载的时候网页可视区域变得更大(包含了底部的工具栏)。

iPad上的更新

iOS 7以后,使用iPhone上的Safari浏览网页,滚动的时候会自动隐藏工具栏(ipad不会),iOS 8 ipad也有了这个细节上的变化(横竖都有)。不同的是,在横向模式的时候,iPad上面还有一小条,iPhone则是全屏。

除此之外,Safari在横屏模式开启侧边栏会保持原有的viewport大小,只会改变aspect-ratio

书签icon和常用网站

Safari终于支持收藏夹里和书签里的网页附带网站的icon图标。当你在地址栏输入关键字搜索的时候,同样会展示网站的icon(ipad刚刚我测试了下没有)。

跨平台切换

如果你同时使用Mac和iPhone,当你在iPhone上浏览一个网页,你可以在你的Mac上(需要Yosemite)继续阅读(今年WWDC上专门演示了这个功能,还得等到Yosemite的正式更新)。

更像native的webapp

如果你想让用户在网页上,无经确定,就直接跳转到Apple Store下载你的应用,那是不可能的。想让网页与本地应有之间有交互,iOS 8带来更多的便捷性。

  1. Safari插件
  2. 共用认证(web和本地应用之间能共用安全凭证,无需再重新登录)。

新的webview

这次iOS 8更新,最令人激动的消息就是混合应用与 Mac 上共同了一套 API,意味着iOS 上也能有更多的功能,Mac 和 iOS的通信交互,还有:

  1. 支持JavaScript与本地应用之间通过postMessage的交互
  2. New classes configure the Web View similar to the power we have on Android’s Web View.(这段谁能翻译下)
  3. 更强大的 Nitro引擎,相比前代4x速度的js执行速度。

新的 webview(WKWebkit)是新框架(WebKit.framework)的一部分,与老的UIWebView并不是完全兼容。但是老的webviwe依旧保留,所以老的webapp还是会使用老的webview。

目前的GM版本(公开版也是一样的)依旧存在本地文件无法上传的bug,对于一些混合应用(例如Cordova PhoneGap)来说,这(多webviwe)算是个好消息。

这就意味着,目前 iOS 8,拥有4个web引擎,当然,也意味着兼容性和bug都是有差异的。

  1. Safari
  2. Web.app (使用full-screen 桌面应用)
  3. UIWebView (老)
  4. WKWebView(新)

你可以在  HTML5Test.com 这里测试下你webapp的性能。

对于那种包壳应用和webviewe应用来说,这个变化是十分重要的。比如说iOS上的Chrome和Facebook本地应用中的网页应用(我们猎豹的电池医生、手机猎豹也大量应用webview)。根据一份报告,11.5%的iOS流量是来自基于webview的应用。

Safari 插件

iOS 8上的Safar 是第一个支持插件和拓展的系统预装浏览器(Firefox OS也许也算是一个)。从iOS 8开始,本地应用可以拓展到与 Safari 交互,主要通过两种方式:分享(Share extension)和动作(Actions)。Action 可以与DOM交互,意味着可以本地应用可以直接修改DOM元素。

所有的插件都需要用户主动选择来触发(需要点击分享中不同的按钮来触发),暂时还没有可以自动运行的插件。

旧版 Safari 的分享 菜单同样被基于 JavaScript 的插件所替代。比如说添加到桌面如今就是一段 Safari 中的 js 代码。

除了苹果在WWDC上演示的功能,Safari的这个改进意味着浏览网页会有极大的体验改善。比如说你可以在Safari直接调用1Password或者LastPassword 保存的帐号密码登录,如果你的iPhone 有 Touch ID指纹识别,你甚至可以直接指纹验证登录。

Pocket.com 已经声明即将推出针对 iOS 8的插件。

前端和设计师的福利

这次safari新增了很多html5,css3的支持

  • CSS Shapes
  • CSS object-fit
  • CSS Background Blend modes
  • word-spacing
  • CSS Compositing and Blending
  • Subpixel layout 支持小数点
  • Animated PNG supported APNG格式图片
  • Parallax effects and Pull-to-refresh supported (与Scroll事件相关)
  • SVG Fragments Identifiers (for SVG Sprites)
  • Image Source Set support
  • HTML Template support

Animated PNG

APNG格式是PNG位图动画的拓展,但未获得PNG组织官方的认可,与GIF有点类似(只不过GIF是基于JPG的),这意味着我们可以制作32位全彩半透明的动态图。

滚动时差与下拉刷新

如果你做过移动端的项目,你一定知道iOS7以及以前都不支持scrooll事件,iOS 8 终于支持滚动事件,这下大家终于可以在iOS上用到视觉滚差相关的js和css了,但是不保证完全适配。

这个支持让我们可以做出下拉刷新和无限下拉下载的效果。

小数点单位

Safari现在CSS单位从整数转成了浮点数。这意味着CSS对象模型中诸如offsetTop和ClientWidth可能会取得小数值,之前老的iOS都会返回整数值。

与此同时,这也意味着你可以用半个像素单位了。

div {
   border-width: 0.5px;
}

CSS 合成和变形

利用mix-blend-mode这个新属性支持我们把不同形状的不同元素合成到一张图片,这是Adobe在HTML5方面新出的一个功能。在他们的网站(http://adobe.github.io)上你能看到演示的DEMO和文档。

从Adobe官网的例子演示来看,似乎变形是生效了,合成并没有生效(我Mac Chrome也没生效)。

CSS 形状

CSS 形状也是Adobe新出的一个特性。对于这个特性,推荐下W3Cplus上的《CSS Shapes 101》。个人还是很看好这个特性的推广和应用的,能给我们的网页设计带来更多的可能性。

Image Source Set

有了解响应式图片的开发者对这个应该不陌生,随着高清屏的普及,针对不同的分辨率做适配是一个需要注意的问题,苹果iOS 8 支持Image Source Set Spec,意味着可以在<img>标签中使用新的属性。

<img src="lores.png" srcset="hires.png 2x, superhires.png 3x">

在上面这段代码的例子中,iPhone 6 Plus 的像素比是3x,它会加载superhires.png这张图片,而iPhone 5s,iPhone 6 则会加载hires.png这种图,其余的则加载lores.png。但是遗憾的是,iOS 暂时还不支持<picture>元素。

HTML模板

<template>对于webapp来说十分有用,<template>中可以包含一段css或者js(不会被浏览器解析),实际应用中,我们可以利用<template>中的代码创建一个新的node。

视频增强

这次更新对视频播放相关的增强了许多,iOS8开始支持全屏播放,Meta Data Api和CSS layering(话说大家知道HTML5 Video元素是可以通过CSS来控制吧?)

<video>元素的全屏播放

Safari不支持全屏播放API,即使是iOS8也不例外。但是能通过一个特殊的方法解决这个问题,在<video>元素中增加一段js。

<input type="button" value="Go Full screen"  οnclick='document.querySelector("video").webkitEnterFullScreen()'>

视频 Metadata API

Safari开始支持<video>的preload=”metadata”,可以让浏览器触发loadedmetadata事件方便开发者控制。

CSS 分层

我可以通过css控制其他元素放在<video>之前。

iOS 8 JavaScript相关

  • 部分支持ECMAScript 6,包括Promises, Iterators, Maps, For-of, Weak Maps等等。
  • 后台运行:JavaScript会在后台继续运行(哪怕已经切换了窗口甚至Safari切换到后台,但是计时器 times 下降到1s的频率)。
  • 支持scroll事件:不多说了,上面介绍过。
  • Unprefixed Page Visibility AP : 我没搞懂这个是什么(哪位知道求指导)
  • 移除window.doNotTrack
  • 支持window.currentScript

9月18更新:

有开发者发现:iPhone 5上的click事件300ms延迟已经取消了(只是Safari),但是其他设备上的Safari和 WebViews 上还有,延迟依旧在 iPod touch, iPads 和iPhone 5s上。

Bug和存在的问题

说了iOS8和iPhone 的更新,再来说说目前发现的 Bug。

  • 不支持文件上传!!!所有的文件上传都失效了,你能选择或者拍张照片,但是js不能获得任何数据。HTML或者XMLHttpRequest的POST请求也不行。但是这个问题但是在桌面启动的app没发生。
  • WKWebKit:在新的引擎不能读取本地文件是个大问题,所以对于混合app来说,还得使用老的UIWebView。
  • window.prompt可能会导致Safari崩溃
  • 附件:语音在input和labels输入时,不管用。(当输入的时候,label不再发音)
  • 桌面app的iframes中,touch事件没有被监测到。
  • 手机休眠后,桌面app中的Timers和requestAnimationFrame回调没有执行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WEB工程师和设计师必学的10个IOS 8新鲜改变 的相关文章

  • ubuntu镜像下载pytorch,解决time out问题

    安装CUDA CUDnn那些就不赘述 以及下载的pytorch要和自己CUDA版本匹配 比如我的是Ubuntu CUDA版本为11 6 直接选择对应的 在安装过 别的提到的方法都试过 比如 添加清华镜像链接 conda config add
  • jQuery 切换radio 改变validateRule的校验规则

    有这样一个form表单 在切换费率类型时 需要校验不同input框如下图 静态页面代码如下 div class ibox content div
  • 【sqli-labs】Less18~Less22

    Less18 User Agent注入 有错误回显 感叹一句 越来越难了 现在只能先看代码再分析怎么注入了 通过代码 发现username和password均做了校验 但是会有一个插入user agent的sql语句 故要通过user ag
  • 怎样计算期货交易盈亏(期货交易盈利怎么算)

    期货怎么算挣了多少钱 1 浮动盈亏 就是结算机构根据当日交易的结算价 计算出会员未平仓合约的浮动盈亏 如果是正值 则表明多头浮动盈利或者空头浮动亏损 负值则刚好相反 公式如下 浮动盈亏 当天的结算价 开仓价格 合约单位 持仓量 手续费 2
  • 解决Android Studio编译报错:找不到NotNull或Nullable

    问题 在java代码中引入 import org jetbrains annotations NotNull import org jetbrains annotations Nullable 导致代码编译不过 找不到这两个类库 按照官方文
  • 后端学习React的第一天

    java后端了十几年了 曾经在学校写过一些jquery的前端代码 后来前端的框架越来越复杂 加上工作以后都是前后端分离的 并且自己美术功底本来也就不咋地 逐渐就放弃了前端技术 专职后端开发了 最近闲来无事 想写点有意思的小程序 发现没有前端
  • 教你如何用fiddler抓取https(详细教程)

    对于想抓取HTTPS的测试初学者来说 常用的工具就是fiddler 可是在初学时 大家对于fiddler如何抓取HTTPS真是伤了脑筋 可能你一步步按着网上的帖子成功了 那当然是极好的 有可能没有成功 这时候你就很抓狂了 我把网络上的教程进
  • python实现文件(夹)剪切

    自己的需求是这样的 有a和b两个目录 a目录下的文件 夹 要剪切到b目录下 我用下面这种形式来表达需求 不然说得比较乱 需求如下 a目录 1 文件 1 是日志文件 1 文件大小 lt 20m 跳过 2 日志文件 gt 20m 复制名加上当天
  • ssh连接不上Linux怎么办

    原因 被防火墙挡掉 ssh服务配置文件中的参数是否拒绝了连接等等 解决方法 一 开启SSH 以root用户登录Linux 打开终端 运行 etc init d sshd restrat 二 关闭防火墙 1 在终端运行 setup 2 选择
  • es6 处理数组的方法汇总

    目录 创建数组静态方法 ES6 Array from Array of 检测数组方法 instanceof Array isArray 迭代器方法 ES6 keys values entries 复制和填充方法 ES6 Array fill
  • 逻辑回归输出的值是真实的概率吗?

    本文只在博客基础上 在三 指数分布族中有所改动 逻辑回归作为被广泛使用的二分类模型 面试中自然是不可缺少的 但要深刻理解逻辑回归又不是那么容易的 比如说 逻辑回归输出的值是0到1之间的值 这个值是真实的概率吗 逻辑回归为什么要选择sigmo
  • layui树形美化_Layui导航树美化 - walkwithdream的个人空间 - OSCHINA - 中文开源技术交流社区...

    左侧导航 使用方法 skin sidebar layui tree skin sidebar li i color rgba 255 255 255 7 display none layui tree skin sidebar li a c
  • 学习Java——为什么java只有值传递

    目录 Java的求值策略 Java中的对象传递 值传递和共享对象传递冲突吗 总结 参考资料 Java的求值策略 前面我们介绍过了传值调用 传引用调用以及传值调用的特例传共享对象调用 那么 Java中是采用的哪种求值策略呢 很多人说Java中
  • 最优乘车问题/dijsktra最短路径算法

    城是一个旅游胜地 每年都有成千上万的人前来观光 为方便游客 巴士公司在各个旅游景点及宾馆 饭店等地都设置了巴士站 并开通了一些单向巴士线路 每条单向巴士线路从某个巴士站出发 依次途径若干个巴士站 最终到达终点巴士站 阿昌最近到 城旅游 住在
  • typora笔记工具使用详解

    Markdown使用笔记 首先本地使用安装教程 百度搜索typora第一个就是官网 地址为 typora下载地址 下载步骤如下 简单使用教程 3 Markdown标题 使用 号可表示 1 6 级标题 一级标题对应一个 号 二级标题对应两个
  • 读取.ini文件乱码的解决办法

    void CGetConfigInfo GetValueByKey QSettings seting const QString key QString value if seting nullptr value seting gt val
  • Memory write error at 0x100000. MMU section translation fault

    在使用vitis2020 2 JTAG调试MZ702P板子的时候会报下面的错误 原因都是启动模式没有设置到JTAG启动或SD启动 记得之前用SDK的时候好像没有这个问题 记录一下 备忘 Downloading Program F FPGA
  • ONVIF对讲功能漫谈

    ONVIF对讲功能漫谈 前言 一 onvif对讲功能和onvif协议关系大吗 二 如何上报设备支持onvif对讲功能呢 三 onvif协议中哪个接口上报音频解码配置 四 献上抓包报文 前言 本篇文章尝试使用提问的方式来分享onvif对讲功能
  • java类型信息与反射

    初步理解 https www cnblogs com xuanlin666 p 10826809 html

随机推荐

  • 使用Electron开发过程中不能使用remote模块解决

    在 electron 渲染进程中引入BrowserWindow报错 const BrowserWindow require electron remote BrowserWindow 报错 Cannot read properties of
  • c++ADO编程-connection对象

    Connection对象的属性有如下几个 1 ConnectionString属性 是连接字符串 通过传递包含一系列由分号分隔的 argument value 语句的详细连接字符串 可指定用于建立连接数据源的信息 连接串格式根据数据源的不同
  • 3.2面向对象

    面向对象与面向过程的区别 面向过程指的是工作过程如何执行 而面向对象指的是工作该让谁来完成 面向对象三大思想 OOA 面向对象分析 Object Oriented Analysis OOD 面向对象设计 Object Oriented De
  • 剑指 Offer 15. 二进制中1的个数(java+python)

    编写一个函数 输入是一个无符号整数 以二进制串的形式 返回其二进制表达式中数字位数为 1 的个数 也被称为 汉明重量 提示 请注意 在某些语言 如 Java 中 没有无符号整数类型 在这种情况下 输入和输出都将被指定为有符号整数类型 并且不
  • 一万字关于java数据结构堆的讲解,让你从入门到精通

    目录 java类和接口总览 队列 Queue 1 概念 2 队列的使用 以下是一些常用的队列操作 1 入队操作 2 出队操作 3 判断队列是否为空 4 获取队列大小 5 其它 优先级队列 堆 1 优先级队列概念 Java中的Priority
  • uvicorn启动fastapi项目实现热部署

    一 创建在不同的文件中 通过import引入 将app对象定义在一个模块中 如app py 在主模块 如main py 中导入app并运行 app py from fastapi import FastAPI app FastAPI mai
  • 真题详解(关系模型)-软件设计(六十六)

    真题详解 ICMP 软件设计 六十五 https blog csdn net ke1ying article details 130475620 2017年下半年 内存按字节编址 若存储容量为32K 8bit的存储芯片构成地址从A0000H
  • C++基础知识 - 子类的析构函数

    子类的析构函数 注意 为了防止内存泄露 最好是在基类析构函数上添加virtual关键字 使基类析构函数为虚函数 目的在于 当使用delete释放基类指针时 会实现动态的析构 如果基类指针指向的是基类对象 那么只调用基类的析构函数 如果基类指
  • 【DSP】TMS320F28335的ADC模块

    一 功能说明 12位内建采样保持的模数转换器 模拟输入电平 0 3V 16个转换通道 最快转换时钟频率12 5MHz 奈奎斯特定则 25MHz最高能采样12 5MHz的信号 多触发源 软件 ePWM和GPIO 两种采样模式 级联和双通道模式
  • 张大哥笔记-从零开始自己创建一个网站的操作指南

    随着互联网时代的发展 无论是个人还是企业 都想拥有一个自己的网站 通过网站快速展示自己的商品信息 有很多人不了解一个网站是如何形成的 制作一个网站需要多少时间 具体由哪些细节都是全然不知 他们甚至感觉搭建一个网站是一件非常复杂的事情 其实
  • C语言经典100例题(37)--给10个数排序(选择排序和冒泡排序)

    目录 题目 问题分析 选择排序法 冒泡排序法 代码 选择排序法 冒泡排序法 运行结果 题目 给10个数排序 问题分析 选择排序法 从后9个比较过程中 选择一个最小的与第一个元素交换 下次类推 即用第二个元素与后8个进行比较 并进行交换 每一
  • Appium + IOS 自动化环境搭建教程(实践+总结+踩坑)

    文章目录 前言 IOS 自动化相关框架介绍 自动化测试类工具 内测发布工具 Appium驱动IOS测试原理 关于 WebDriverAgent 基础环境搭建 基础环境 安装内容 前提环境 通用环境 iOS 环境 iOS 真机调试环境配置 I
  • Pandas学习之to_csv()

    用法 df to csv 输出路径 参数1 参数2 参数3 sep 以逗号 作为数据的分隔符 如果分隔符不为逗号 则包含符双引号 就会消失 分隔符为Tab时 写法如下 df to csv new csv sep t na rep NA 确实
  • if-else常见的优化方案

    前言 代码中如果if else比较多 阅读起来比较困难 维护起来也比较困难 很容易出bug 接下来 本文将介绍优化if else代码的八种方案 优化方案一 提前return 去除不必要的else 如果if else代码块包含return语句
  • HBase 比较过滤器

    一 行过滤器 RowFilter 测试RowFilter过滤器 Test public void testRowFilter throws IOException Configuration conf HBaseConfiguration
  • echars-all.js 2.2.7组织结构图及自定义右键菜单的实现思路及源码

    组织结构图一般是树图结构 echars是一个很好的开源数据工具 2 x版本也有对树图的定义 要做组织结构图的需求拿到手里后 在网上也翻阅了很多echarts的官网资料及网友的实现思路 最终在网友及自身的努力下完成了这项任务 以上 先上最终结
  • Linux下gdb attach的使用(调试已在运行的进程)

    在Linux上 执行有多线程的程序时 当程序执行退出操作时有时会遇到卡死现象 如果程序模块多 代码量大 很难快速定位 此时可试试gdb attach方法 测试代码main cpp如下 这里为了使程序退出时产生卡死现象 在第51行时push线
  • 服务器连接超时是怎么回事呢?

    服务器连接超时就是在程序默认的等待时间内没有得到服务器的响应 网络连接超时可能的原因有那些呢 1 网络断开 不过经常显示无法连接 网络阻塞 导致你不能在程序默认等待时间内得到回复数据包 2 网络不稳定 网络无法完整传送服务器信息 系统问题
  • MySQL服务状态查看和监控方式

    运行中的MySQL状态查看可以通过以下方式进行监控和衡量不同指标 show global status like Uptime 服务器已运行的秒数 重启服务器后会置零 以下内容使用的Uptime均为此字段 1 QPS 每秒查询量 查询命令
  • WEB工程师和设计师必学的10个IOS 8新鲜改变

    概述 简介 iOS 8 上的 Safari 的更新 iPhone 6 和 iPhone 6 Plus 新 Api 支持 Safari 新功能和支持 iOS 8 原生优化 Safari 插件 新的设计 视频增强 iOS 8上的JS Bug 和