标签页管理、隐私保护、划词搜索…… 这 10 款新扩展让你的 Chrome 焕然一新

本文我将介绍 10 款近期上架的 Chrome 新扩展,从标签页到网站内容抓取再到隐私保护,它们总有一款能满足你的口味。

Qlearly

Qlearly 是一款有些特殊的 Chrome 新标签页扩展,你可以用它一键保存当前打开的标签页,将自己的收藏夹、喜欢的网站、暂存备用的标签页等分组收纳,并在需要时快速开启。此外,你还可以与他人协作,并分享自己的标签页组,提高自己的工作效率。 你可以在 Chrome 网上应用店 免费获取 Qlearly。

Spider

工作中,你可能会有批量抓取网站内容的需求:淘宝上的商品介绍、网站上的新闻标题、表格中的行列数据……如果只是单纯的复制粘贴,之后还要费心整理,想要写个爬虫又考验编程水平。这时,不妨试试 Spider,它可以一键抓取网页上的结构化数据,并导出为 JSON 和 CSV 文件,轻松高效。 你可以在 Chrome 网上应用店 免费获取 Spider。

Repl.it

Repl.it 是一款允许你浏览器上编程的云端 IDE,支持编译并运行包括 C、Python、JavaScript、Ruby 等在内的超过 50 种语言,无需下载,即开即用。而其第三方 Chrome 扩展,则给任意网页中的代码片段增加了一键运行按钮,省去复制到本地编译的流程。 你可以在 Chrome 网上应用店 免费获取 Repl.it。

Password Checkup

不论你是自己发明了一套密码策略,还是用 1Password 等应用随机生成密码,都无法避免网站后台被拖库造成的安全隐患。为了最大限度地减少这一风险,Google 于近期推出了 Password Checkup 扩展,当检测到你正在使用的用户名和密码存在于 40 亿条泄露数据库内时,自动弹出提醒,保护个人隐私。 你可以在 Chrome 网上应用店 免费获取 Password Checkup。

Web Activities

时间线是 Windows 10 春季创意者更新带来的最重要变化之一,允许你在一处查看所有历史活动记录,如浏览器访问过的网页、使用过的文件等。而微软近期推出的 Web Activities 扩展将这一特性带到了 Chrome,并支持多设备同步浏览记录,体验近似原生。 你可以在 Chrome 网上应用店 免费获取 Web Activities。

划词小窗搜索

划词翻译扩展我们见得多了,例如我此前推荐过的 沙拉查词 和 达达划词翻译 都可以在选中单词后通过悬浮小窗查询释义。而划词小窗搜索的泛用性更广一些,可以调用 Google、百度或 Bing 通过小窗搜索选中的文本,无需离开当前页面。 你可以在 Chrome 网上应用店 和 GitHub 免费获取划词小窗搜索。

Simplify Gmail

为了完成 KPI,Google 大刀部把广受欢迎的 Inbox 砍掉了,如果你曾是 Inbox 忠实用户,可能会对陈旧的 Gmail 界面感到不适应。为了拯救你的收件箱,前 Inbox 设计师 Michael Leggett 开发了 Simplify Gmail 扩展,重新设计了按钮和元素的摆放位置,隐藏了侧边栏,让界面更加清爽干净。 你可以在 Chrome 网上应用店 免费获取 Simplify Gmail。

Google Results Previewer

使用 Google 搜索时,你可能需要同时浏览对比多个结果。这时,按首页排序一路点下去就未免过于低效。而 Google Results Previewer 就可以在当前页面小窗加载鼠标悬停的链接,并支持进一步交互,提高信息检索效率。 需要注意的是,由于 Google Results Previewer 无法运行 JavaScript,部分网站可能会出现加载异常或失败等情况,仍待改进。 你可以在 Chrome 网上应用店 免费获取 Google Results Previewer。

NoScript

NoScript 是 Firefox 上知名的隐私保护扩展,近期移植到了 Chrome 上,作用是禁止加载 JavaScript、Flash、Silverlight 等可能收集你个人信息的脚本,让你的浏览更加安全。不过,由于 JavaScript 已然成为了网页标配,禁用后会导致大多数网站无法正常访问,需要一段时间的白名单调教后才能正常使用。 你可以在 Chrome 网上应用店 免费获取 NoScript。

简易扩展

简易扩展的名字相当实诚,但功能性却毫不逊色。它可以帮助你快速切换用户代理、管理多个 Cookies、监听网络请求、改写静态和动态网址等,可谓前端开发者必备。 你可以在 Chrome 网上应用店 免费获取简易扩展。

前端小白入门之再学JavaScript (二)

JavaScript 是一种弱类型或者说动态语言。这意味着你不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。这也意味着你可以使用同一个变量保存不同类型的数据:

var foo = 42;    // foo is a Number 
nowfoo = "bar"; // foo is a String 
nowfoo = true;  // foo is a Boolean now

最新的 ECMAScript 规范,定义了7种数据类型

  • String
  • Number
  • Boolean
  • Undefined
  • Null
  • Symbol (ES6新定义类型)
  • Object

一般面试过过程中一般会问基础类型(简单类型)或者复杂类型(引用类型),那么以上6种就是所谓的基本类型,Object属于复杂类型它包含有Object,Array,Function。 在计算机运算过程中变量的存放一般是俩种方式栈(stack)和堆(heap) stack是有结构的,先进后出,存放基本类型和对象的引用,每个区块的大小是明确的。如果你不太好理解,就想一想古时候客栈,计算机中的栈也类型一层一层,你想如果1楼最后来的人把门口堵住了2楼,3楼是不是无法出去必须等一楼出去才可以,这就是所谓的先进后出的原则????。 heap没有结构,数据任意存放,js中主要存放的是引用类型,比如:Array,Object对象 很容易看出来,如果进行数据查询速度比较的话stack效率远远高于heap,毕竟人家都是登记好的拿了本子就可以查到是不是???? 在实际开发过程中,偶尔遇到栈溢出的情况,stack overflow错误,一般在代码运行时会分配1M-2M空间,不同设备可能不同的。栈因为stack创建时候,大小是确定的,超过额度大小就会发生栈溢出【当js出现死循环或者错误的递归时候】。 heap大小是不确定的,需要可以一直累加。 js是单线程的,核心特征哈,那么怎么利用多核的CPU呢?H5的Web Worker标准,允许js脚本创建多个线程,但是子线程受主线程的控制,且不能操作DOM。 stack是线程独占的,heap是线程共有的。 好了回到正题继续讨论今天的数据类型

Undefined

Undefined类型只有一个值,即特殊的undefined。在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。不过,一般建议尽量给变量初始化,但是在早期的js版本中是没有规定undefined这个值的,所以在有些框架中为了兼容旧版浏览器,会给window对象添加undefined值。

window['undefined'] = window['undefined'];  //或者
window.undefined = window.undefined;

Null Null类型是第二个只有一个值的数据类型,这个特殊的值是null。从逻辑角度来看,null值表示一个空对象指针,而这也正是使用typeof操作符检测null时会返回object的原因。

var car = null;  
console.log(typeof car); // "object"

如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null而不是其他值。这样一来,只要直接检测null值就可以知道相应的变量是否已经保存了一个对象的引用了。

if(car != null){    
    //对car对象执行某些操作
}

Boolean

该类型只有两个字面值:true和false。这两个值与数字值不是一回事,因此true不一定等于1,而false也不一定等于0。 虽然Boolean类型的字面值只有两个,但JavaScript中所有类型的值都有与这两个Boolean值等价的值。要将一个值转换为其对应的Boolean值,可以调用类型转换函数Boolean(),也可以使用小技巧!!俩个叹号转译为布尔类型

数据类型

转换为true的值

转换为false的值

Boolean

true

false

String

任何非空的字符串

“”(空字符串)

Number

任何非0数值(包括无穷大)

0和NaN

Object

任何对象

null

Undefined

不适用

undefined

Number 这种类型用来表示整数和浮点数值,还有一种特殊的数值,即NaN(非数值 Not a Number)。这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。 NaN本身有两个非同寻常的特点。首先,任何涉及NaN的操作(例如NaN/10)都会返回NaN,这个特点在多步计算中有可能导致问题。其次,NaN与任何值都不相等,包括NaN本身。例如,下面的代码会返回false。 String String类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串。字符串可以由单引号(‘)或双引号(“)表示。我建议在js中一律使用单引号,毕竟少按一个shift 而且很多权威规范也都是这样 string类型有些特殊,因为字符串具有可变的大小,所以显然它不能被直接存储在具有固定大小的变量中。由于效率的原因,我们希望JS只复制对字符串的引用,而不是字符串的内容。但是另一方面,字符串在许多方面都和基本类型的表现相似,而字符串是不可变的这一事实(即没法改变一个字符串值的内容),因此可以将字符串看成行为与基本类型相似的不可变引用类型 Boolean、Number、String 这三个是Javascript中的基本包装类型,也就是这三个其实是一个构造函数,他们是Function的实例,是引用类型,至于这里的String与以上说的String是同名,是因为其实上文说的String是指字符串,这里的String指的是String这个构造函数,上面那么写,是为了更好的理解,因为Javascript是松散类型的。我们可以看下String实例化的例子:

var name = String("v5ant");
alert(typeof name);//"string"
var x=new String('12345')
typeof x //object 
x='12345'
typeof x //string
var author = "Tom";
alert(typeof name);//"string"

symbol 新加入的一原始类型,表示独一无二的值 注意,Symbol函数前不能使用new命令,否则会报错。这是因为生成的Symbol是一个原始类型的值,不是对象 Symbol函数可以接受一个字符串作为参数,表示对Symbol实例的描述,主要是为了在控制台显示,或者转为字符串时,比较容易区分 我们可以通过调用Symbol()函数来创建一个Symbol实例:

let s1 = Symbol()
let s2 = Symbol('another symbol')
let s3 = Symbol('another symbol')

s1 === s2 // false
s2 === s3 // false

应用场景1:使用Symbol来作为对象属性名(key)

const PROP_NAME = Symbol()
const PROP_AGE = Symbol()
let obj = {
  [PROP_NAME]: "一斤代码"
}
obj[PROP_AGE] = 18

obj[PROP_NAME] // '一斤代码'
obj[PROP_AGE] // 18

随之而来的是另一个非常值得注意的问题:就是当使用了Symbol作为对象的属性key后,在对该对象进行key的枚举时,会有什么不同?在实际应用中,我们经常会需要使用Object.keys()或者for...in来枚举对象的属性名,那在这方面,Symbol类型的key表现的会有什么不同之处呢?来看以下示例代码:

et obj = {
   [Symbol('name')]: '一斤代码',   
   age: 18,   
   title: 'Engineer'
}
Object.keys(obj)   // ['age', 'title']
for (let p in obj) {   
    console.log(p)   
    // 分别会输出:'age' 和 'title'
}
Object.getOwnPropertyNames(obj)   // ['age', 'title']

由上代码可知,Symbol类型的key是不能通过Object.keys()或者for...in来枚举的,它未被包含在对象自身的属性名集合(property names)之中。所以,利用该特性,我们可以把一些不需要对外操作和访问的属性使用Symbol来定义。 也正因为这样一个特性,当使用JSON.stringify()将对象转换成JSON字符串的时候,Symbol属性也会被排除在输出内容之外: 然而,这样的话,我们就没办法获取以Symbol方式定义的对象属性了么?非也。还是会有一些专门针对Symbol的API,比如:

// 使用Object的API
Object.getOwnPropertySymbols(obj) // [Symbol(name)]
// 使用新增的反射API
Reflect.ownKeys(obj) // [Symbol(name), 'age', 'title']

应用场景2:使用Symbol来替代常量

应用场景3:使用Symbol定义类的私有属性/方法

前端小白入门之再学JavaScript (一)

JavaScript(缩写:JS)是一门完备的 动态编程语言。当应用于 HTML 文档时,可为网站提供动态交互特性。由布兰登·艾克( Brendan Eich,Mozilla 项目、Mozilla 基金会和 Mozilla 公司的联合创始人)发明。 JavaScript 的应用场合极其广泛。简单到幻灯片、照片库、浮动布局和响应按钮点击。复杂到游戏、2D 和 3D 动画、大型数据库驱动程序,等等。 JavaScript 相当简洁,却非常灵活。开发者们基于 JavaScript 核心编写了大量实用工具,可以使 开发工作事半功倍。其中包括:

  • 浏览器应用程序接口(API)—— 浏览器内置的 API 提供了丰富的功能,比如:动态创建 HTML 和设置 CSS 样式、从用户的摄像头采集处理视频流、生成3D 图像与音频样本,等等。
  • 第三方 API —— 让开发者可以在自己的站点中整合其它内容提供者(Twitter、Facebook 等)提供的功能。
  • 第三方框架和库 —— 用来快速构建网站和应用。

-------https://developer.mozilla.org [MDN] script标签简单介绍:

所有浏览器都支持 <script> 标签。
属性        值
type       MIME-type   指示脚本的 MIME 类型。    
async      async       规定异步执行脚本(仅适用于外部脚本)。    
charset    charset     规定在外部脚本文件中使用的字符编码。    
defer      defer       规定是否对脚本执行进行延迟,直到页面加载为止。    
language   script      不赞成使用。规定脚本语言。请使用 type 属性代替它。    
src        URL         规定外部脚本文件的 URL。    
xml:space  preserve    规定是否保留代码中的空白。

上面属性简单了解一下就OK,因为html5以后标签的type不是不是必须所以新手的话只需要记住标签写法就可以,如果外链脚本加上src属性就好了。

写下我们第一个JavaScript脚本

听起来是不是很兴奋????,学习js的前提我假设大家已经学习过了html+css后面不再做过多解释哈。 对于我们程序猿来说当然第一个代码就是输出一个hello world。 新建一个index.html,然后输入

<!DOCTYPE html>
<html>
    <head>
        <title>我的第一个JavaScript脚本</title>
    </head>
    <body>
        <h1>学习</h1>
        <script>
            document.write("Hello World!")
        </script>
    </body>
</html>

这样我们一个就完成了万里长征的第一步,很简单是不是 下面我们再尝试一下js的dom(document object model文档对象模型,简单理解有一下可以操作问题的API)操作能力

<script>
    var title = document.querySelector('titl

    title.innerHtml = '学习JavaScript';

</script>

以上就是一个简单的js开发上手实践,后面文章我们正式学习js基础知识,后面每篇文章大致分为俩部分:基础概念和手写实践。

iOS 13 不只有深色模式,这 15+ 个新功能同样值得关注

按照惯例,苹果于北京时间 6 月 4 日凌晨的 WWDC 上发布了各个平台的新一代操作系统。相比去年专注于性能和稳定性的 iOS 12,今年的 iOS 13 有了大幅改动,带来了众多系统新特性,以及原生应用也得到了大幅改进。

系统外观:姗姗来迟的深色模式

自 iPhone X 发布以来,iOS 的深色模式就成了许多媒体每年 WWDC 预测的保留部分。在两年之后,苹果终于在 iOS 13 中将深色模式带到了 iPhone 上。 刷上 iOS 13 并在设置中开启深色模式后,我发现 iPhone 的锁屏页面、主屏幕、通知中心小组件页面以及原生应用的背景都会相应变为深色。此外,iOS 13 还提供了一组与 macOS Mojave 类似的壁纸,可以随深色模式的开关而变化。 你可以在「设置-显示与亮度」中更改深色模式的设置。除了手动更改外,还可以选择根据日出与日落时间进行自动更改,或是自定义深色模式的时间段。 除了在设置中开启 / 关闭深色模式,你也可以在控制中心长按亮度选项,借助弹出的选项来更加方便地切换系统外观。 虽然苹果在系统界面和内置应用上下了不少功夫,但要实现全方位的一致外观,还离不开第三方 App 的支持。iOS 13 也为开发者提供了新的 API,使第三方应用也能更容易地适配深色模式。 除了深色模式,iOS 13 还对整体的设计语言进行了微调,向 iOS 12.3 中的钱包 app 的风格靠拢。例如,备忘录等应用新增了卡片式的视图;许多应用右上角也新增了「…」的选项按钮。

摄影:除了拍,后期修图和管理也很重要

苹果除了在 iPhone 上会通过硬件提升拍照的能力,还通过系统软件来提升拍照的体验,其中就包括了照片和相机应用的大幅优化。

照片:全新的浏览视图,增强的编辑功能

照片应用在原本的「所有照片」之外,又新增了「年度」、「月」和「日」三个维度。不同维度间的过渡动画颇为流畅,并会自动播放实况照片和视频。相比「所有照片」平铺式的显示方式,新的显示模式进一步优化了浏览体验,帮助使用者更好地重温回忆。 借助机器学习技术,照片应用会隐藏重复照片、屏幕截图、白板照片等干扰,并自动选取一张最佳照片进行放大展示。如果你正在按年份浏览,照片会尽量选取往年的今日照片进行展示;按照月份浏览时,照片还会根据照片展示的事件对图片进行分类,并显示事件的名称、位置等信息。 尤其值得一提的是,当应用检测到生日照片时,还会对照片中的人物进行识别,并与通讯录中的生日信息进行对照,从而在标题中显示寿星的名字。 在浏览照片拥有了更合理的方式之外,iOS 13 还增强了编辑图片和视频的功能。现在,包括自动增强在内,你可以通过滑动来调节色温、色调、对比度、噪点消除等 16 项参数,并可以实时预览效果。在添加滤镜时,应用同样允许你调节滤镜强度,并实时展示滤镜效果。 此外,原本的旋转和裁剪页面还加入了矫正畸变的功能。 值得一提的是,以上功能同样适用于视频编辑。总的来看,更新后的照片 app 已经足以满足一定的后期需求。美中不足的是,原生照片 app 缺失了局部编辑功能,因而依然无法替代泼辣修图等更为专业的修图应用。

相机:人像光效更进一步

iOS 13 进一步提升了最新一代 iPhone 的人像模式效果。你可以调节不同光效的光源距离,从而实现更为理想的成像效果。 此外,人像模式还新增了名为「High-Key Mono」的光效模式,帮你拍摄出对比强烈、风格独特的人像。不过遗憾的是,本次相机的更新仅适用于 iPhone Xs、iPhone Xs Max 和 iPhone XR 机型。 样张来源:苹果官网

原生应用:全新的设计,更多的功能

这次 iOS 13 更新苹果继续在自家的应用上发力,为提醒事项、备忘录、地图、Safari、文件等应用都带来新设计和更加强大的功能。

提醒事项:更实用的筛选功能

iOS 13 带来了全新的提醒事项 App。新设计的主页可以帮你更清楚地浏览任务。你还可以在创建列表时自定义使用的图标和颜色。 此外,创建提醒也更为容易。除了会在键盘上方提供可能的触发方式,提醒事项还会通过自然语义识别功能进一步协助你创建提醒。当你在信息 App 中聊天时,Siri 将会根据对话内容,为你创建建议的任务;当你在提醒事项 App 中输入任务时,Siri 可以根据你的输入提供建议的提醒时间。 创建提醒事项后,你还可以在详情中进一步编辑,如添加子事件,添加图片和链接作为附件等。 提醒事项还提供了新的触发方式。现在,除了设置在某一时间提醒、到达某一地点提醒,你还可以选择让提醒事项在你与选定的联系人发送短信时进行提醒。

备忘录:查看、编辑、分享更为便捷

借助备忘录的列表页面新增的选项,备忘录可以将笔记以缩略图的形式呈现。相比之前的列表,新的视图更方便你查找带有图片和 Apple Pencil 标注的笔记。 除此之外,备忘录的搜索功能也得到了提升。新增的搜索建议功能可以帮你按照不同的类别进行检索。当你输入关键词后,备忘录可以在包括笔记中添加的图片、扫描的文档等在内的位置查找关键词。 iOS 13 还为备忘录带来了多层级的文件夹系统。你可以新建一个文件夹,然后点击右上角的「…」将其移动到另一个文件夹之下。 不仅如此,备忘录还完善了其协作功能。你可以将笔记甚至整个文件夹共享给其他用户来进行协作,并可以控制协作者之间的权限。

Safari 浏览器:新增下载管理器

Safari 浏览器的空白标签页也在 iOS 13 中发生了变化。「经常访问的网页」变为了与「个人收藏」平级的项目。如果你并不需要,可以在设置中将其关闭。 尽管苹果只在 iPadOS 中提及了 Safari 浏览器的下载管理器,但实际上 iOS 13 也为 Safari 浏览器加入了这一功能。你可以在「设置-Safari 浏览器-下载项」中更改下载文件的默认存放位置。值得一提的是,下载过程中并不需要保持 Safari 浏览器在前台。 除此之外,Safari 浏览器还允许你针对每个网页设定不同的显示和隐私选项。点击智能搜索栏左侧的图标,即可调整字体大小,并选择是否开启阅读模式。在「网页设置」中,你还可以进一步更改该网页的权限。在打开阅读模式后,你还可以进一步调整背景色和字体。 值得一提的是,「请求桌面网站」选项同样出现在了 iOS 的 Safari 浏览器上。尽管 iPhone 的屏幕并不适合桌面网站,但这一功能可以绕开知乎等网站强制要求打开 App 才能进一步阅读的障碍。 除了上文所述之外,Safari 浏览器还有以下更新:

  • 上传图片时,可以更改图片尺寸;
  • 当你搜索的关键词与已经打开的标签页相关时,建议栏可以让你直接跳转到该标签页;
  • Safari 浏览器会在你用弱密码注册账号时进行警告;
  • 通过 iCloud 同步的 Safari 浏览器浏览记录和打开的标签页会被端到端加密。

总的来说,本次更新为 Safari 浏览器带来了不少实用的功能,已经可以在一定程度上实现 iCab 等 进阶型浏览器 的功能。

文件:朝访达迈出的又一步

iOS 13 也进一步增强了文件 App 的功能。首先,你可以与其他用户共享 iCloud Drive 中的文件夹,从而进行远程协作。要为文件夹添加协作用户,只需选中文件夹后,在分享页面选择「Add People」即可。 此外,苹果还更新了长按文件后弹出的操作页面,并新增了数个功能:

  • 压缩与解压缩。相应的操作不再需要绕道捷径;

  • 快速查看。通过这个功能可以直接在文件应用中浏览文件,而无需跳转到第三方应用;

不仅如此,iOS 13 还将备忘录中的扫描文档功能带到了文件 App 中。点击应用首页的「…」,选择「扫描文稿」即可。扫描后的文档可以直接分享,或是存储到文件 App 中。虽然这一原生功能并没有类似 Scanner Pro 等应用的 Workflow 选项,但扫描并保存文档的流程要比第三方 App 便捷不少。 文件 App 的搜索还增加了关键词过滤的功能。你可以在输入文件的格式后,点击搜索建议的提示对搜索结果进行过滤,从而更快地找到所需的文件。 值得一提的是,iOS 13 的文件 App 同样支持 iPadOS 中外接 USB 设备和连接服务器的功能。不过,目前苹果官网在售的相应配件只有一款 闪电转 USB 相机转换器 ,其是否能支持连接 U 盘等设备还有待测试。

地图:更详尽,更智能

得益于苹果的测绘工作,新版本的地图精细度有了极大的提升。 新旧地图精细度对比 除此之外,新版地图还加入了类似 Google Maps 的街景功能,从而方便用户获取更为准确的道路和地址等信息。苹果计划于未来两年内将这一改进应用至更多国家和地区。不过鉴于国内对测绘的管理,这一新特性能否应用至国内尚未可知。 街景功能 此外,地图还对收藏位置的显示进行了优化。现在,你可以对不同的地点进行分类,设定家庭、工作等多个预设地址,并将这些地点和预计到达时间分享出去。 新版地图的导航功能也得到了提高。增强的 Siri 导航功能会用类似「下个红绿灯左转」的指示代替过去的「500 米后左转」指令,并在导航快要结束前,引导你前往目的地的入口处。 除了上述的内容外,新版地图还可以实时更新你的航班信息,自动获取公交线路的时刻表,并额外为开发者提供了新的 API 接口 。

健康:个性化与新增功能

iOS 13 的健康应用也获得了全新的界面。通过机器学习,健康应用会将一天中最重要的健康信息呈现给你,并将其 与之前一周的情况进行对比,激励你更加重视个人健康。当然,你也可以选择将部分数据加入收藏,从而使其始终在应用顶部显示。你也可以在「搜索」标签页中查看所有健康数据。 健康应用还同时新增了数个模块,包括:

  • 月经周期记录。在「搜索」标签页中点击「周期跟踪」,即可根据提示进行设置。应用会根据记录数据对排卵期等进行预测和提醒。
  • 噪音检测。如果你有 Apple Watch 与 iPhone 配对,Apple Watch 将会对你的周围环境噪声进行监控,并为你提供其对听力的损害情况。此外,这一模块还会收集你使用的耳机音量,帮你判断是否需要将其调小。
  • 口腔健康。你可以在「搜索」标签页的「Other Data-刷牙」中手动记录每日的刷牙时长,或是通过带有相应功能的牙刷自动记录。
  • 教育模块,以短文的形式出现在主页面底部,为你普及健康知识。

查找:找朋友找设备合二为一

iOS 13 将查找我的朋友和查找我的设备进行了合并,组成了新的「查找」应用。不过更引人关注的则是应用在查找离线设备上的进步。当其他人的 iPhone 检测到周围你的离线设备的蓝牙信号后,iOS 会自动将这一信息发送至云端,从而帮你定位丢失的设备。整个过程通过端到端加密来保证隐私安全,并且不会额外占用 iPhone 的数据流量。

Siri 和捷径:更自然的声音、自动化的触发机制

相比此前 Siri 将多段语音拼合在一起的发音方式, iOS 13 采用了 TTS 模型,利用深度学习技术直接生成完整的句子,从而使 Siri 的声音听起来更为自然。此外,你还可以通过 Siri 来收听无线电广播、播客和有声书等内容。 iOS 13 也为捷径带来了新的重要功能:自动化。你可以设置通过时间、闹钟、体能训练、位置、打开应用、设备状态、NFC 贴纸等方式,自动触发相应的捷径。 这一新模块的加入,又进一步增加了捷径的玩法和实用性。例如,你可以令捷径在早晨闹钟结束后,自动为你播报今天的天气等信息。相比之下,Launch Center Pro 的订阅吸引力又小了不少。美中不足的是,目前捷径创建自动化时,其触发的动作无法设定为已经存在的捷径,制作起来略为繁琐。

系统功能:更好玩,更安全

拟我表情(Memoji)与动话表情(Animoji):在线化妆,还能做贴纸

iOS 13 为拟我表情带来了大量的可调节特性,如眼线、眼影、耳饰等。在发布会上,苹果还特意请来了 Youtube 网红 Patrick Starrr 和 Desi Perkins 进行了 演示新增的人物细节 动话表情也得到了更新,新增了老鼠、章鱼和奶牛三款形象。此外,制作完毕的 Memoji 和动画表情还会被自动转化为一套贴纸,可以和 Emoji 一起在表情键盘中使用,不再仅局限于信息 App 中。 3 款新增动话表情 值得一提的是,尽管动话表情需要 iPhone X 及更新机型才能使用,Memoji 贴纸和动话表情贴纸可以在所有搭载 A9 及更新处理器的机型上使用。

新的文本编辑和浏览手势

iOS 13 还带来了数个新的手势功能,更好地利用多点触控屏的优势来编辑和浏览文本:

  • iOS 13 可以让你直接拖动并移动光标,不再需要长按;
  • 长按并拖动光标可以选取文本,不再需要双击光标;
  • 三重点击文本可以选取整句话,四重点击可以选取整段文字;
  • 在浏览较长的文章或网页时,可以长按屏幕侧面的滚动条来快速跳转和预览;
  • 在文件、邮件、信息等 App 中,可以通过双指轻点的方式进入文件选择模式,顺势滑动还可以快速多选文件;
  • 在选中文本后,三指捏合即可复制文本,捏合两次即可剪切;张开三指可以粘贴文本。

屏幕使用时间:One More Minute

屏幕使用时间的功能也在本次 WWDC 上得到了优化,主要包括:

  • 在应用达到时间限额后,iOS 13 额外提供了「多一分钟」的选项,方便你快速保存或退出当前的工作;

  • 在「设置-屏幕使用时间-应用限额」中,你现在可以精确地选取所需的 App 来组成一组应用限额,不再只局限于同时选择某一类别的所有应用;

应用限额页面

  • 屏幕使用时间还新增了「通信限制」的选项,可以设置允许设备拨打电话、收发短信、使用 FaceTime 通话等功能的时间段和联系人;
  • 屏幕使用时间的数据保存时间延长至 30 天,从而方便你具体对比本周和过去数周的数据。

隐私与安全性

iOS 13 还进一步提升了对隐私的保护力度,主要包括了以下方面:

  • 当 App 请求获取位置信息时,新增了「只允许一次」的选项;
  • 当 App 在后台使用你的位置信息时,iOS 13 会通过弹窗进行提醒,你可以据此选择是否更新对该应用的隐私权限设置;
  • 在分享图片时,可以在「Options」中选择是否抹除照片的地理位置信息;

  • 改进后的 API 使应用更难通过 Wi-Fi 和蓝牙信息获取当前位置。此外,iOS 13 还提升了 Safari 浏览器阻止网页追踪的能力。

除此之外,苹果还在 iOS 13 中推出了「通过 Apple 登陆」(Sign In with Apple)的选项。相比常见的通过 Facebook、Google 登陆,通过 Apple 登陆不会向网页泄露除名称和邮箱地址外的任何个人信息。 如果你希望更进一步,还可以在登录时隐藏真实邮箱地址,而以苹果创建的随机邮箱地址进行替代。你甚至还可以为不同应用设置使用不同的匿名邮箱。通过 Apple 登陆不需要设置密码,借助面容 ID 或 触控 ID 即可登陆,还可以通过双重验证来进一步提高安全性。

AirPods 和 HomePod

iOS 13 也为 AirPods 和 HomePod 带来了新功能。现在,当使用了 SiriKit 的应用接收到消息后,AirPods 会自动为你朗读内容,并可以让你即时通过 Siri 来回复。此外,当你使用 AirPods 听音乐时,还可以通过轻触设备的方式与另一名 AirPods 使用者共享当前歌曲。这一功能同样适用于所有使用了 SiriKit 的第三方 App。 来源:WWDC 2019 与此同时,HomePod 带来了对多用户的支持。通过对不同家庭成员声音进行分析,HomePod 可以对联系人、短信、通话等指令做出更为个性化的回答。 家庭 App

其他

除了上文的主要更新外,iOS 13 还带来了以下变化:

  • 在没有 3D Touch 的手机上使用 Haptic Touch 可以获得 Context Menu 的效果;
  • 新增 Image Capture API,允许第三方 App 直接打开外接设备中的图片,无需再经过照片 App;
  • App Store 界面调整,新增订阅服务 Arcade 界面,应用更新移动至个人页面;

  • 音量调节页面更新,不再占用过多屏幕面积,并可以在屏幕上直接滑动调节;

  • 图书 App 新增了每日阅读目标功能,鼓励你坚持每日读书;

  • 音乐 App 采用了新的播放页面,并新增了歌词滚动显示功能;

  • 邮件 App 可以屏蔽特定邮箱的来信,并新增了自动补全邮箱地址、改良的工具栏等功能;
  • 家庭 App 提升了对 HomeKit 配件的保护,自动化可以触发捷径。此外,苹果还推出了新的 HomeKit 监控,符合这一标准的配件将可以在不占用 iCloud 空间的情况下,通过 iCloud 发送录像内容;
  • 你可以在「设置-电话」中开启「静音未知来电」选项,减少骚扰电话的干扰;
  • 优化了充电方式,通过学习用户的充电习惯,并暂缓充电至 80% 以上,来减缓电池的老化;
  • 支持游戏时使用 PlayStation 4 和 Xbox One S 的手柄;
  • 在控制中心长按 Wi-Fi 和蓝牙图标后,可以直接选择要连接的网络 / 设备;

  • 可以在「设置-信息-共享姓名和照片」中设置是否在开始新对话时,发送自己的头像和姓名给对方;
  • 可以用 Memoji 为通讯录中的联系人添加头像;
  • 分享页界面得到了更新,并会根据使用习惯,建议可能的分享对象;

  • 可以在 App Store 中下载字体使用,并在设置中进行管理;
  • 截图标注页面更新,加入了直尺工具。编辑后的图片可以直接保存至文件 App;

  • 系统键盘加入了滑动输入的功能,可以通过指尖在键盘区域不间断地滑动来实现更流畅地输入,并减少误触的情况;
  • 表情成为了系统键盘的一枚独立的按键。在多个语言之间切换时,将不会再收到表情键盘的干扰;
  • iPhone Xs、iPhone Xs Max 和 iPhone XR 增加对杜比全景声效的支持;
  • 解除了蜂窝网络环境下不能下载超过 200MB 的应用的限制;

相比往年,苹果今年并没有放出 iOS 13 的 Developer Beta 版描述文件,并在相关界面特别提醒普通用户应等待 Public Beta。在我的体验中,iOS 13 的测试版也存在发热、卡顿等问题。如果你希望提前体验 iOS 13,不妨等待 7 月推出的 Public Beta 测试版。

传说中图片防盗链的爱恨情仇

原理

注:这里有个很有趣的就是 Referrer 和 Referer 的故事了感兴趣的自行去了解以下

我们先来了解了解防盗链的原理,在http 协议中,如果从一个页面跳到另一个页面,header字段里面会带个 Referer。图片服务器通过检测 Referer 是否来自规定域名,来进行防盗链。如果盗用网站是 https 的 协议,而图片链接是 http 的话,则从 https 向 http 发起的请求会因为安全性的规定,而不带 referer,从而实现防盗链的绕过。官方输出图片的时候,判断了来源(Referer),就是从哪个网站访问这个图片,如果是你的网站去加载这个图片,那么Referer就是:你的网站地址;你的网址肯定没在官方的白名单内,(当然作为可操作性极强的浏览器来说referer是完全可以伪造一个官方的URL这样也也就也可以饶过限制????)所以就看不到图片了。 因此,若不发送Referer,也就是没有来源。那么官方那边,就认为是从浏览器直接访问的,所以就能加载正常的图片了。

目的

盗链是指在自己的页面上展示一些并不在自己服务器上的内容。通常的做法是通过技术手段获得它人服务器上的资源地址,绕过别人的资源展示页面,直接在自己的页面上向最终用户提供此内容。比较常见的是一些小站盗用大站的资源(图片、音乐、视频),对于这些小站来说,通过盗链的方法可以减轻自己服务器的负担,因为真实的空间和流量均是来自别人的服务器。对大站造成的影响确实徒徒增加了服务器压力,用户还不是自己的。。。 防盗链就是防止这种行为的产生,实施防盗链系统后,因为屏蔽了那些盗链的间接资源请求,从而可以大大减轻服务器及带宽的压力,也正如此,越来越多的站点都开始实施防盗链技术。

实现

> nginx

location ~* \.(gif|jpg|png|bmp)$ {    
    valid_referers none blocked *.ttlsa.com server_names ~\.google\. ~\.baidu\.;    
    if ($invalid_referer) {        
        return 403;        
        #rewrite ^/ http://www.xxx.com/403.jpg;    
    }
}

以上所有来至xxx.com和域名中包含google和baidu的站点都可以访问到当前站点的图片,如果来源域名(白名单列表)不在这个列表中。 那么$invalid_referer等于1,在if语句中返回一个403给用户,这样用户便会看到一个403的页面,如果使用下面的rewrite,那么盗链的图片都会显示403.jpg。 > apache 在根目录下创建.htaccess 文件

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !phpddt.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !baidu.com.com [NC]
RewriteCond %{HTTP_REFERER} !feedburner.com [NC]
RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
RewriteRule .*\.(rar|zip)$ http://www.xxx.com/ [R,NC,L]

这段话也可写在Apache配置文件当中 .htaccess文件将影响其所在的目录及其子目录。你可以将其放在根目录或项目的子目录 上面这段代码也是很容易理解的: RewriteCond %{HTTP_REFERER} !^$ [NC] 允许空的来源,即用户浏览器手动属于则允许访问文件。 RewriteCond %{HTTP_REFERER} !phpddt.com [NC] 允许站点自身访问,同理,后面还要允许百度,谷歌,和一些订阅源访问。 RewriteRule .\.(rar|zip)$ http://www.xxx.com/ [R,NC,L] 这里可以设置防止盗链的类型,如果盗链可以跳转到网站首页,本站没有做图片防盗链,如果你做图片防盗链可以设置被盗链的替代图片: RewriteRule .\.(gif|jpg|png)$ http://xxx.com/logo.png [R,NC,L]

破解

????道高一尺魔高一丈既然知道原理那么就来看看一些常用的破解方案如果你有更好的记得给我留言。 >1. 如果盗用图片资源是http协议那么盗用网址可以使用https去请求会因为安全性的规定,而不带 referer,从而实现防盗链的绕过。 >2. 在HTML代码的head中添加一句 <meta name="referrer" content="no-referrer" /> >3.

function showImg( url ) {
        var frameid = 'frameimg' + Math.random();
        window.img = '<img id="img" src=\''+url+'?'+Math.random()+'\' />
        <script>window.onload = function() { parent.document.getElementById
        (\''+frameid+'\').height = document.getElementById(\'img\').height
        +\'px\'; }<'+'/script>';
        document.write('<iframe id="'+frameid+'" src="javascript:parent.img;
        " frameBorder="0" scrolling="no" width="100%"></iframe>');
}

6. 前面也提到来可以服务端伪造请求头具体不同的语言自行搜索对应方案,这里就不一一列举了。

反破解

既然有破解就当然有常用的防御机制???? 1、不允许referer为空(不建议,因在某些开启隐私模式的浏览器中,或https页面引用下,referer是空的) 2、地址变更(lighttpd的是根据有效时间,nginx的根据是md5,IP地址变化) 3、登录校验(如必须登录网站帐号后才能访问) 以下是防止网站被镜像,被iframe 1.防止网站被镜像(被恶意解析和转发等) 现象:他人域名访问到的是我的网站解析的ip地址我的 解决方法: http.ini里可以这样写

<script type=”text/javascript> 
   if(window!=parent) 
  window.top.location.href = window.location.href; 
< /script>

代码的意思也很简单,用js方法检测地址栏域名是不是当前网站绑定的域名,如果不是,则跳转到绑定的域名上来,这样就不怕网站被别人iframe了。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×