├── source ├── _drafts │ └── .gitkeep ├── _redirects ├── widget │ └── index.md ├── favicon.ico ├── 404.md ├── _headers ├── links │ └── index.md ├── _posts │ ├── 2015-07-13-macid.md │ ├── 2016-04-16-the-way-to-home-in-shazhou.md │ ├── 2016-04-11-the-way-to-shazhou-school.md │ ├── 2016-12-17-fix-strange-font-type.md │ ├── 2016-01-15-tl-pa500.md │ ├── 2015-11-20-activite-pop.md │ ├── 2016-01-10-why-cdn.md │ ├── 2016-01-03-static-website.md │ ├── 2016-01-23-piwik-wordpress.md │ ├── 2016-03-25-talk-about-spreading-of-video-on-the-internet.md │ ├── 2015-08-18-block-haosou.md │ ├── 2015-07-19-eye-fi.md │ ├── 2015-05-16-mobile-first-beginning.md │ ├── 2015-07-15-mobile-first-2.md │ ├── 2016-10-04-cloudflare-2016-new-feature.md │ ├── 2015-08-06-4k.md │ ├── 2015-05-22-procamera-review.md │ ├── 2022-12-18-aliyun-hk-down.md │ ├── 2024-10-24-ipad-pro.md │ ├── 2017-01-24-2017-is-a-https-year.md │ ├── 2017-04-08-free-server-monitors.md │ ├── 2018-12-07-wordpress-5-0-update.md │ ├── 2015-08-17-using-srcset.md │ ├── 2024-02-04-vision-pro-experience.md │ ├── 2016-01-29-wordpress-plugins.md │ ├── 2016-08-22-back-to-wordpress-builtin-comment-system.md │ ├── 2016-08-09-talk-about-config-ipv6-on-server.md │ ├── 2017-05-20-cloudflare-argo.md │ ├── 2016-06-09-wordpress-optimize.md │ ├── 2022-02-20-iphone-5g-mmwave.md │ ├── 2016-06-25-use-gitlab-on-own-server.md │ ├── 2018-08-25-backup.md │ ├── 2016-02-18-canon-releases-new-aps-c-model-80d-powerful-video-recording-new-af-system-and-cmos.md │ ├── 2018-11-15-azure-dns-ns1-constellix-compare.md │ ├── 2025-11-14-hertz-debt-collection.md │ ├── 2022-08-09-choose-a-web-service.md │ ├── 2016-05-29-rage4-best-dns.md │ ├── 2017-01-07-suggestion-on-hosting.md │ ├── 2022-04-10-own-domain-1.md │ ├── 2016-10-01-asia-google-compute-engine.md │ ├── 2015-12-13-https-everywhere-is-coming.md │ ├── 2021-11-26-mac-mini.md │ ├── 2016-08-21-install-nginx-1-11-on-ubuntu.md │ ├── 2020-04-20-magic-keyboard-for-ipad-pro.md │ ├── 2016-10-04-build-a-anycast-network-gce.md │ ├── 2019-08-30-powerdns-2.md │ ├── 2019-02-26-ssd-usb-and-wtg.md │ └── 2022-03-14-website-optimization.md ├── privacy-policy │ └── index.md ├── license │ └── index.md ├── ads │ └── index.md ├── favicon.svg ├── about │ └── index.md └── files │ └── ze3kr.pem ├── scaffolds ├── draft.md ├── page.md └── post.md ├── utterances.json ├── README.md ├── .gitignore ├── .gitmodules ├── package.json ├── .github └── workflows │ └── deploy.yml └── _config.yml /source/_drafts/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /scaffolds/draft.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: {{ title }} 3 | tags: 4 | --- 5 | -------------------------------------------------------------------------------- /utterances.json: -------------------------------------------------------------------------------- 1 | { 2 | "origins": ["https://www.guozeyu.com"] 3 | } -------------------------------------------------------------------------------- /source/_redirects: -------------------------------------------------------------------------------- 1 | /feed/ /feed.atom 301 2 | /atom.xml /feed.atom 301 3 | -------------------------------------------------------------------------------- /scaffolds/page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: {{ title }} 3 | date: {{ date }} 4 | --- 5 | -------------------------------------------------------------------------------- /source/widget/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: widget/widget-recent.pug 3 | --- 4 | -------------------------------------------------------------------------------- /scaffolds/post.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: {{ title }} 3 | date: {{ date }} 4 | tags: 5 | --- 6 | -------------------------------------------------------------------------------- /source/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZE3kr/GuoZeyu.com/main/source/favicon.ico -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # guozeyu.com 2 | 3 | # Deploy 4 | 5 | ``` 6 | hexo clean && hexo deploy 7 | ``` 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | Thumbs.db 3 | db.json 4 | *.log 5 | node_modules/ 6 | public/ 7 | .deploy*/ 8 | -------------------------------------------------------------------------------- /source/404.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 页面没有找到 3 | comments: false 4 | layout: page 5 | --- 6 | 7 | 当前页面不存在。[返回首页](/) 8 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "themes/hexo-theme-claudia"] 2 | path = themes/hexo-theme-claudia 3 | url = https://github.com/ZE3kr/hexo-theme-Claudia.git 4 | -------------------------------------------------------------------------------- /source/_headers: -------------------------------------------------------------------------------- 1 | https://www.guozeyu.com/* 2 | Strict-Transport-Security: max-age=63072000; includeSubDomains; preload 3 | 4 | https://:project.pages.dev/* 5 | X-Robots-Tag: noindex 6 | 7 | /*.js 8 | Cache-Control: public, max-age=86400 9 | 10 | /*.css 11 | Cache-Control: public, max-age=86400 12 | -------------------------------------------------------------------------------- /source/links/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 友情链接 3 | tags: [] 4 | categories: [] 5 | comments: false 6 | date: false 7 | layout: post 8 | adb: false 9 | ads: false 10 | --- 11 | 12 | + [烧饼博客](https://u.sb/) 13 | + [数字移民](https://blog.shuziyimin.org/) 14 | + [杰克部落](https://renjikai.com/) 15 | + [Urox](http://i.urox.cn/) 16 | + [米饭粑](https://www.mf8.biz/) 17 | -------------------------------------------------------------------------------- /source/_posts/2015-07-13-macid.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: MacID 让 iPhone 指纹解锁苹果电脑 3 | tags: 4 | - 软件 5 | id: '126' 6 | categories: 7 | - - App 推荐 8 | date: 2015-07-13 22:10:24 9 | languages: 10 | en-US: https://www.ze3kr.com/2015/07/macid/ 11 | --- 12 | 13 | 大多数人不在电脑上设置密码,是因为设置了密码后解锁电脑会变的很麻烦。但是通过使用 MacID,可以让你轻松的解锁你的电脑,这就是这个软件所能帮助你完成的主要目的。[前往 App Store 获取](https://apps.apple.com/cn/app/macid/id948478740?at=10lJIS) 14 | 15 | 当你激活 Mac 的显示器后,你的手机会收到一条通知,向右滑动点击 “解锁” 然后按下指纹,你的电脑就已经被无线解锁了。除此之外,你还可以在手机上无线让电脑锁定,或者是播放歌曲等等,十分方便。 另外 MacID 的电脑客户端甚至可以通过声音检测你是否离开,然后自动锁定。如果你的电脑有 Muti-Touch 触控板的话,你还可以设定特定的手势来解锁 Mac,为了安全性,你可以设定仅当手机连接电脑后才可以使用手势解锁。 而且 MacID 不仅可以让你方便的解锁电脑,而且可以在手机和电脑上双向互相传送剪贴板的内容。对于经常同时使用两个设备的人来说,这个功能十分贴心。 16 | 17 | ## 支持今日视图插件 18 | 19 | MacID 还支持今日视图中的插件,更是可以随时随地解锁 Mac,方便至极。 20 | 21 | ## 支持多个 Mac 22 | 23 | 一个手机可以无线控制很多台 Mac 解锁等功能,列表简洁美观。 24 | 25 | ## 支持 Apple Watch 26 | 27 | 你还可以使用 Apple Watch 无线控制 Mac 哦。 28 | -------------------------------------------------------------------------------- /source/_posts/2016-04-16-the-way-to-home-in-shazhou.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 从沙州中学到家 3 | tags: [] 4 | id: '1551' 5 | categories: 6 | - - 日志 7 | date: 2016-04-16 08:15:27 8 | --- 9 | 10 | 周四这一天过得飞快,20:30 晚自习结束的铃声准时响起,我们开始往住宿的地方走。回去还有约 2 公里的行程,大概需要步行半个多小时,此时,天已经完全黑了。我们一行人沿着白龙路一直往南走,很快走到了白水大桥。白水大桥坐落于国道 212 上, 是于 2008 年大地震后修的。从白水大桥上,可以看到两侧的白龙江。我所住的家庭的孩子告诉我,这里的水质曾经是出了名的好,鱼类也异常的丰富,因为人们过度捕捞和饲养,以及附近的工厂直接将未处理的污水直接排放,这里的水质逐年变差。现在,整个湖都已变成深绿色,谁能想象到这里的水曾经能一眼望到底……不过,今天不知道为什么,我还是多看了几眼,大概是因为我很快就要离开这里了吧。不知不觉已经过去了六天,再有一天我就要离开这里了。 11 | 12 | 虽然桥上有路灯,但是已经有一半都坏了。当地的孩子说,这些灯很久以前就坏掉了,也从来没人修过。走着走着,路灯彻底没有了,月光映出我们的影子。把我们的影子拉得长长的,说不出的孤寂,好像也在和我们告别着。 13 | 14 | 无论是白天还是夜晚,这里都非常安静。路上很难看到汽车,人们也普遍不走人行道而走马路上。红绿灯?这里一个都没有。夜空中的星星非常多,足以百计,当地的孩子不屑地告诉我:“这算什么!要是赶上晴天,星星要多好几倍!” 15 | 16 | 这里的景确实很美,据说即将也会开发成旅游景区,人们可以在这里享受清新的空气、享受钓鱼的乐趣、在湖中划船。从好的方面说,这的确能迅速发展这里的经济,但是也会吞噬这个沙州镇这一片净土。 17 | 18 | 不知不觉,我们已经走回住宿的地方,今天的情景还是挥之不去。明天,将是最后一个完整的日子了。晚自习的时候,我们组的三个人都留下了联系方式,也说了一些惜别的话,同学们都表达了自己不忍分别的情感,我们都非常感动。 19 | 20 | 再见!沙州镇!我会想念这个地方!想念这里的学生!还有那些留给我的珍贵回忆! 21 | 22 | 写下此文留作纪念。 23 | -------------------------------------------------------------------------------- /source/privacy-policy/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 隐私政策 3 | id: '3527' 4 | tags: [] 5 | categories: 6 | - - uncategorized 7 | comments: false 8 | date: 2018-05-18 21:58:27 9 | adb: false 10 | ads: false 11 | --- 12 | 13 | ## 我们是谁? 14 | 15 | 我们的网址是: https://www.guozeyu.com. 此文章面向 guozeyu.com 的访客。 16 | 17 | ## 我们会收集什么样的数据?为什么? 18 | 19 | ### 评论 20 | 21 | 当访客浏览时,我们不仅会存储你在表单中填写的内容,还会记录下你的 IP 地址、浏览器信息。 由你的邮箱生成的一段字符也会被传送到 Gravatar,具体可以参考 Gravatar 的隐私政策: https://automattic.com/privacy/ 。在你的评论被批准后,你的 Gravatar 头像会被公开显示。 22 | 23 | ### Cookies 24 | 25 | 为了便于你下次使用,你在提交评论时使用的邮箱、姓名、网站地址将通过 Cookie 存储在你的浏览器中。这些 Cookie 的有效期为一年。 26 | 27 | ### 统计 28 | 29 | 我们使用自建的 Matomo 进行统计,只要你访问了本网站,无论 JavaScript 是否启用,你的数据都有可能被收集,这些数据包括但不限于你的 IP 地址、浏览器信息。此统计系统使用了 Cookie 以识别用户,并进行关联。此外,当你提交评论或从本站前往外部网站时,这些操作也会被收集。具体可以参考 Matomo 的隐私政策 https://matomo.org/privacy-policy/ 。 30 | 31 | ## 我们与谁共享了数据 32 | 33 | 我们可能会将你的数据交给这些第三方: 34 | 35 | * **Akismet**:你的评论内容会被发送到 Akismet 以进行垃圾检查 36 | 37 | ## 你的数据会被保留多久 38 | 39 | 如果你留下评论,你的评论内容及其元数据会被永久保存。 对于详细的统计日志(包括 IP 地址、浏览器信息等),我们会保留至少一个月。 -------------------------------------------------------------------------------- /source/license/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 版权许可 CC BY-NC-SA 3 | id: '1614' 4 | tags: [] 5 | categories: 6 | - - uncategorized 7 | comments: false 8 | date: 2016-05-01 09:28:57 9 | adb: false 10 | ads: false 11 | --- 12 | 13 | > 此页面属于一种著作权许可使用合同,供他人转载时方便直接链接至此 14 | 15 | **首先你应当认识到:** 16 | 17 | * **弃权** — 若您获得著作权人准许,则下述所有条件都可予以免除。 18 | * **公有领域** — 若在可适用法律下本作品或本作品的任何部分处于公有领域,则其处于公共领域的状态不受本许可协议影响。 19 | * **其他权利** — 以下权利不受本许可协议影响: 20 | * 合理使用,或其他相关法律规定的著作权保护的限制或例外; 21 | * 作者的人身权; 22 | * 其他人拥有的与本作品本身或与本作品的使用方式有关的权利,例如商品化权或隐私权 23 | 24 | ## CC BY-NC-SA 25 | 26 | 包括但不限于文章主体、文章插图、文章特色图像、文章中的视频以及页头图像,采用[知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议](https://creativecommons.org/licenses/by-nc-sa/4.0/)进行许可。此协议的摘要: **你可自由:** 27 | 28 | * **分享** — 复制、发行、展览、表演、放映、广播或通过信息网络传播本作品 29 | * 创作**演绎作品** 30 | * 为了节省你的带宽资源,你可以直接外链到本站 31 | 32 | **惟须遵守下列条件:** 33 | 34 | * **署名** — 您必须按照作者或者许可人指定的方式对作品进行署名。 35 | * **相同方式共享** — 如果您改变、转换本作品或者以本作品为基础进行创作,您只能采用与本协议相同的许可协议发布基于本作品的演绎作品。 36 | * **声明** — 在再使用或者发行本作品时,您必须向他人明示本作品使用的许可协议条款。提供链接是明示的最佳方法。 37 | * **非商业使用** — 不得将本作品进行商业使用。 38 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hexo-site", 3 | "version": "0.0.0", 4 | "private": true, 5 | "scripts": { 6 | "build": "hexo clean && hexo generate", 7 | "clean": "hexo clean", 8 | "deploy": "hexo clean && hexo deploy", 9 | "server": "hexo server -p 4100", 10 | "install": "git submodule update --init --recursive" 11 | }, 12 | "hexo": { 13 | "version": "7.3.0" 14 | }, 15 | "dependencies": { 16 | "hexo": "^7.3.0", 17 | "hexo-deployer-git": "^3.0.0", 18 | "hexo-generator-archive": "^1.0.0", 19 | "hexo-generator-category": "^1.0.0", 20 | "hexo-generator-feed": "^3.0.0", 21 | "hexo-generator-index": "^2.0.0", 22 | "hexo-generator-search": "^2.4.3", 23 | "hexo-generator-sitemap": "^2.2.0", 24 | "hexo-generator-tag": "^1.0.0", 25 | "hexo-renderer-ejs": "^2.0.0", 26 | "hexo-renderer-marked": "^7.0.1", 27 | "hexo-renderer-pug": "^2.0.0", 28 | "hexo-renderer-sass": "git+https://github.com/ZE3kr/hexo-renderer-sass.git", 29 | "hexo-renderer-stylus": "^2.0.0", 30 | "hexo-server": "^2.0.0", 31 | "hexo-theme-landscape": "^0.0.3" 32 | } 33 | } -------------------------------------------------------------------------------- /source/_posts/2016-04-11-the-way-to-shazhou-school.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 从家到沙州中学 3 | tags: [] 4 | id: '1543' 5 | categories: 6 | - - 日志 7 | date: 2016-04-11 20:30:36 8 | --- 9 | 10 | > 背景介绍:2016 年 4 月 9 日(周六),我所在的学校开展了青川社会实践活动,经历 1 天多的路途,来到了青川。这次活动共要教授 4 个课时的课程。我们班级所被分配到的是沙州初等中学。青川位于四川,是 2008 年四川地震的重灾区之一。 11 | 12 | 每天早上,我一般会在 05:45 时起床,在简单的准备后,就出发了。此时,虽然太阳还没有升起(日出时间大约为 06:30),却已经有微微曙光了。大多数星星已经变得不再可见,但是此时的路仍然很 13 | 14 | 难看清。路上可以听见鸟鸣和鸡叫,我们就一直向北走着。路过桥时,右侧已经可以看到金黄色的曙光,天就逐渐亮了起来,直到到了学校后,就开始准备跑步了,跑步之前也不需要什么准备活动,直接开始沿着操场跑。 15 | 16 | 操场虽不算很大,却足以容得下这个学校所有的班级。第一天(周一),我所任教的八年级二班由于多数同学都去县里踢足球赛了,直到周二才能回来。所以在这期间,这个班级只有自习课,我便只能到其他班级里听课。这里的老师讲课注重基础(文科),一堂课所涉及到的知识点不会很多,老师课堂提问和学生回答占据了课程中很大的比例。 17 | 18 | 在这一天的下午,我成功要到了一节数学课。在这一节课的前半部分,我讲了二元一次方程组(的第一课时),后半部分我给他们上习题课。上习题课的时候,我注意到他们其实并没有真正理解数学中的一些概念。比如我在课上复习实数的分类的时候,我把其中的有理数分成了整数和分数,还特意强调了零是包含在整数里面的,然后同学们就说我讲的不对,要有零,因为书中把有理数分为了正有理数、零和负有理数(在此就不吐糟人教版奇葩的分类了)……所以我得重复很多遍这之间的区别他们才能够理解。后面的题我还是讲得比较细致,最终我在下课铃响后 40 秒才完成讲课,我们的学校老师告诉我这是严重的教学事故。(由于学校的表比我的表快了 2 分钟,在此之后这样的 “严重教学事故” 依然频频发生……) 19 | 20 | 上完这一次的数学课后,老师所给我的反馈是:讲二元一次方程组的时候比较快。课后我想到,确实是这样。这是他们第一次见到这样的方程,理解其中的含义还是需要一段时间的,我讲得确实比较快。但是从各方面反映的结果来看,我的习题部分讲的还是非常好的。 21 | 22 | 一天的教学任务就这样结束了,我对自己所做的还算比较满意。 23 | -------------------------------------------------------------------------------- /source/ads/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 关于本站广告 3 | tags: [] 4 | categories: [] 5 | comments: false 6 | date: false 7 | layout: post 8 | toc: false 9 | adb: false 10 | --- 11 | 12 | 本站使用 Google AdSense 广告服务创收。如果您启用了广告屏蔽插件/内容过滤器,本站将无法从中获得收益。 13 | 14 | 33 | 34 |
35 | 36 | ## 真棒!🎉你已经关闭了广告屏蔽 37 | 38 | 感谢你为本站持续运营做出的贡献!本站将因你做的更好,谢谢。 39 | 40 |
41 | -------------------------------------------------------------------------------- /source/_posts/2016-12-17-fix-strange-font-type.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 修复 WordPress 2017 主题中奇怪字形的 Bug 3 | tags: 4 | - WordPress 5 | id: '2282' 6 | categories: 7 | - - 开发 8 | date: 2016-12-17 17:18:28 9 | --- 10 | 11 | 最近国外掀起了一股用 system-font 的热潮(额,好像国内一直都在用系统字体)。最近更新了 WordPress 4.7,并用上了其 2017 主题,这个主题正是使用系统字体。但是在 macOS 上查看发现中文显示的是繁体字形。 实在是太丑了,究其原因,其实是因为新版的主题的 system-font 用的是繁体中文字体: 12 | 13 | 14 | ``` 15 | html[lang^="zh-"] body, 16 | html[lang^="zh-"] button, 17 | html[lang^="zh-"] input, 18 | html[lang^="zh-"] select, 19 | html[lang^="zh-"] textarea { 20 | font-family: "PingFang TC", "Helvetica Neue", Helvetica, STHeitiTC-Light, Arial, sans-serif; 21 | } 22 | ``` 23 | 24 | 看来这是 WordPress 的 Bug,[已经提交并修复](https://core.trac.wordpress.org/changeset/39942)。在官方修复前,可以在外观的 “自定义” 里面添加以下 CSS 解决此问题: 25 | 26 | ``` 27 | html[lang="zh-CN"] body, 28 | html[lang="zh-CN"] button, 29 | html[lang="zh-CN"] input, 30 | html[lang="zh-CN"] select, 31 | html[lang="zh-CN"] textarea { 32 | font-family: "PingFang SC", "Helvetica Neue", Helvetica, STHeitiSC-Light, Arial, sans-serif 33 | } 34 | ``` 35 | 36 | 为什么这次 WordPress 要为每个语言单独指定系统字体呢?因为如果将字体设置为 `-apple-system` 后,在 Safari 下能够正确显示苹方字体,但是在 Chrome 下显示的还是老的字体。但如果特定指明字体种类,就能正确显示了。 37 | -------------------------------------------------------------------------------- /source/_posts/2016-01-15-tl-pa500.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: TL-PA500 电力猫,部署无线局域网集群 3 | tags: 4 | - 网络 5 | id: '612' 6 | categories: 7 | - - 科技 8 | date: 2016-01-15 22:49:32 9 | languages: 10 | en-US: https://www.ze3kr.com/2016/01/tl-pa500/ 11 | --- 12 | 13 | 电力猫就是一个能够让家中的电线代替网线,实现拿电缆代替网线的数据传输,解决家中没有布全网线的问题。当然,如果有网线,那就不需要它了。 TL-PA500 标称是 500M 的电力适配器,由于家中网线并没有覆盖到所有的位置,于是就买了 3 个。我有 3 个 AirPort 基站,其中一个(AirPort Express)放在了弱电箱中,直接接入网线,并作拨号连接,并接出一个网线连接电力猫。然后在另两个位置接入电力猫,并连上另外两个 AirPort 基站。实现三个 AirPort 基站有线连接,让全家 Wi-Fi 信号满格。 14 | 15 | AirPort 集群截图 16 | 17 | 其实,在 TL-PA500 的说明书中,写明了它的网线端口为 10/100Mbps 端口,也就是说它根本无法达到 100M 以上的速度…… 其实我并不相信这个电力猫真的能达到 500M 的速度,于是我对其进行了测试,在连接另一个 AirPort 基站(无线)的情况下,拷贝一个 3 GB 的文件到 AirPort Time Capsule。并在直接连接 AirPort Time Capsule (无线)情况下拷贝,对比时间,两个基站距离约 15m。 特别要注意的是,另一个基站(AirPort Extreme)是不支持 802.11ac 的,而 AirPort Time Capsule 是支持的。二者都支持 5GHz 频段,拷贝时都使用了它。 经过了电力猫之后,传输这个 3GB 的文件消耗了 **8 分钟**,大约达到了 **50M** 的速度,没有达到 802.11n 在 5GHz 下的极限。 直接传输,消耗了 **2 分 20 秒**,大约是 **170M**。 所以,经过了电力猫之后,传输速度被限制在了 50M 左右(但或许是用了网线也是这个速度),这个速度还是可以接受的,因为中国地区普遍的网速都没有达到这个极限,用来部署互联网还是完全可行的。 然而最终还是重新走了暗线,全家局域网终于达到 1000M,可算是够用了。 18 | -------------------------------------------------------------------------------- /source/favicon.svg: -------------------------------------------------------------------------------- 1 | ZE3kr -------------------------------------------------------------------------------- /source/_posts/2015-11-20-activite-pop.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Withings Activité Pop 智能手表推荐,睡眠跟踪、运动记录、智能闹钟 3 | tags: 4 | - 智能设备 5 | - 硬件 6 | id: 220 7 | categories: 8 | - - 科技 9 | date: 2015-11-20 17:27:29 10 | cover: https://customer-qz3v4c7e4vfly110.cloudflarestream.com/12d9fb47f8bf1560187d3b57c26816f1/thumbnails/thumbnail.jpg?time=1m4s 11 | video: 12d9fb47f8bf1560187d3b57c26816f1 12 | languages: 13 | en-US: https://www.ze3kr.com/2015/11/activite-pop/ 14 | --- 15 | 16 | 这个智能手表与众多现有智能手表不同的是,他拥有实体的指针。[在亚马逊上购买正品](https://www.amazon.cn/gp/product/B00S5I9H4O?tag=ze3kr-23) 17 | 18 | 19 | ## 记录健康数据 20 | 21 | Activité Pop 可以自动的检测走路、跑步、游泳以及睡眠。你根本不需要去进行任何设置,他就能正确的识别出当前的运动类型,包括睡眠记录也是如此。 它可以记录运动时长、步行/跑步距离、运动中消耗的卡路里,还有睡眠总时长、醒来的次数、深睡眠时长、浅睡眠时长。这一切都是自动的。 22 | 23 | ## 智能闹钟 24 | 25 | Activité Pop 有震动闹钟功能,不仅如此,它还拥有智能唤醒功能,当即将到已经设定的时间,并且它检测到你已经醒来后或者进入浅睡眠时就提前唤醒你。 26 | 27 | 智能闹钟 28 | 29 | ## 超长续航 30 | 31 | 续航时间长达 8 个月,使用标准纽扣电池。 32 | 33 | ## 视频 34 | 35 |
36 |
37 |
38 | -------------------------------------------------------------------------------- /source/_posts/2016-01-10-why-cdn.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 为何要使用一个 CDN 服务? 3 | tags: 4 | - CDN 5 | id: '60' 6 | categories: 7 | - - 开发 8 | date: 2016-01-10 15:00:00 9 | languages: 10 | en-US: https://www.ze3kr.com/2016/01/why-cdn/ 11 | --- 12 | 13 | CDN(内容分发网络)是一种网站服务,可以让用户从周围最近的服务器上获取静态的内容(尤其是图像、视频、音频、CSS 和 JavaScript),服务器尽可能地遍布全球各地。一个 CDN 网络,说白了就是一堆会自动缓存的代理服务器。 那么,使用 CDN 有什么好处呢?首先,就是可以减少延迟。我的服务器在美国,从北京到美国的通信一次往返大约要 300ms,当我使用了 (有中国服务器的)CDN 之后,通信一次往返就只需要不到 10ms 了。除此之外,CDN 还能有效的减少下载时间,因为某些国家会控制网络流量的出口带宽,当使用了内地的服务器后,速度就能明显提升。 14 | 15 | ## CDN 的工作原理 16 | 17 | 通常,你并不需要将文件上传到 CDN,你只需要将域名解析到对应的服务器。当用户访问你的网站时,就相当于访问到了这个服务器。这个服务器会检查是否有缓存,若有,那么会直接从这个缓存返回给你;如果没有,则会去从原始服务器上下载下来,然后再返回给用户。此后(再次在这个位置的)用户访问时, 就会直接从 CDN 上缓存的文件下载,速度大大提升。 访问你网站的用户越多,这个速度提升就越明显。如果大多数的请求都没有缓存,那么几乎就没有什么速度提升。除此之外,最好将 CDN 的域名放在一个没有 Cookie 的根域名下。 关于 CDN 的推荐,已经在[新的一篇文章](https://www.guozeyu.com/2017/01/wordpress-full-site-cdn/)里总结概括 18 | 19 | ## 国内 CDN 服务推荐 20 | 21 | ### [又拍云](https://www.upyun.com/) 22 | 23 | 又拍云是一个使用起来非常方便的 CDN 服务器,价格极低,按需付费。在国内 CDN 节点覆盖良好,并且还有实时统计等功能。同时支持绑定自定义域名,免费自定义 SSL 服务。 又拍云同时支持静态加速和动态加速两种,适合全站 CDN 加速。 24 | 25 | ## 国外 CDN 服务推荐 26 | 27 | ### [KeyCDN](https://www.keycdn.com/?a=7126) 28 | 29 | KeyCDN 使用起来也非常方便,节点覆盖全球,价格极低,按需付费。它也有实时的日志。同时支持绑定自定义域名,免费自定义 SSL 服务,同时提供免费的 SSL 证书(Let's Encrypt)。KeyCDN 只支持静态资源的加速, 30 | 31 | ### [CloudFlare](https://www.cloudflare.com/) 32 | 33 | 为了使用 CloudFlare,你需要更改你域名的 NS 解析提供商,仅此而已,无需其他设置。CloudFlare 默认是动态资源加速。同时提供免费的 SSL 证书(Comodo Positive SSL Wildcard),而且 CloudFlare 是有免费版的。 34 | -------------------------------------------------------------------------------- /source/_posts/2016-01-03-static-website.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 静态网页的优与劣 3 | tags: 4 | - 网站 5 | id: '1008' 6 | categories: 7 | - - 开发 8 | date: 2016-01-03 14:00:00 9 | languages: 10 | en-US: https://www.ze3kr.com/2016/01/static-website/ 11 | --- 12 | 13 | 静态网页,即**纯 HTML 的网页**,博客中的每一个页面均为一个 `.html` 文件。 首先这里存在一个误区,一些人认为静态网页是不能很方便更新的,实际上静态网页是可以很方便更新的,借助静态网页生成器,更新它并不复杂。当它需要更新一篇文章时,需要重新生成主页和这篇文章,还好这一切一般不到一分钟就能完成。 如果博客要使用动态网页呢?这样做当然是可以的,现在有很多成熟的软件,比如 WordPress,运行在 PHP 环境中,需要 MySQL 数据库。每次访问网页时,需要服务器读取数据库的内容(或从缓存中读取),再处理成有一定样式的 HTML 返回给用户。当然动态网页能够实现一切静态网页的功能,当然还能有更多的功能,比如图片上传,定时发布等。 既然动态网页能实现一切静态网页的功能,那么静态网页有什么优势呢? 14 | 15 | 16 | ## 优势一 节省服务器开销,不怕攻击 17 | 18 | ### 不怕 DDOS 攻击 19 | 20 | 经过大量的 DDOS 攻击测试,我发现静态网页相比动态网页难攻击很多,甚至难一个到几个数量级。每次访问动态网页时,需要解析 PHP,读取数据库或缓存,需要远大于静态网页的计算量。所以 DDOS 攻击基本上效果不明显,甚至速度都不会慢。 21 | 22 | ### 难被黑 23 | 24 | 静态网页根本不需要数据库,它本身只是一个文件,所以根本不存在数据库注入等问题。漏洞什么的更是少之又少。 25 | 26 | ### 网页上 CDN 简单 27 | 28 | 静态网页上 CDN 极其简单,全站缓存即可。每一个页面都可以直接被缓存,网页有更新时清除所有缓存。有了 CDN 之后,那就更不怕 DDOS 了,攻击对方几个甚至 GB 都不算事,人家只不过需要为此付几毛钱流量费而已。 29 | 30 | ## 优势二 服务器部署简单 31 | 32 | 静态网页根本不需要数据库,它只需要一个能上传文件并外链的服务器,比如 Amazon S3 都能放它。大多数服务器都能部署它。 33 | 34 | ## 优势三 维护简单 35 | 36 | 基本上只要会 HTML、CSS 和 JavaScript,就会写静态网页了,再利用一些静态网页生成器直接生成出来所有的页面。 37 | 38 | ## 问题一 更新实时性 39 | 40 | 如果使用了静态网页生成器,那么就一定存在着延迟,延迟大小取决于网页生成的速度。有两种生成方式可供选择,一是在本地生成,二是在服务器生成。 41 | 42 | ## 问题二 评论和统计功能 43 | 44 | 这些功能一般只能在动态网页中实现,因为他们都需要数据库。但是静态网页可以选择第三方的服务,比如评论可以用 [Disqus](https://disqus.com),统计可以用 [Google Analytics](https://www.google.com/analytics/),或者你可以自己建一个动态服务器专门来做这些事,安装上 Piwik。 45 | 46 | ## 总结 47 | 48 | 拿静态网页做博客是没有任何问题的,而且也是我所推荐的(打脸,现在其实已经转用 WordPress 了)。它方便且简单,也没有什么硬伤。 49 | -------------------------------------------------------------------------------- /source/_posts/2016-01-23-piwik-wordpress.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Matomo 与 WordPress 配合使用,建立强大统计系统 3 | tags: 4 | - WordPress 5 | id: '70' 6 | categories: 7 | - - 开发 8 | date: 2016-01-23 08:00:00 9 | languages: 10 | en-US: https://www.ze3kr.com/2016/01/piwik-wordpress/ 11 | --- 12 | 13 | 在配合使用之前,首先需要安装 Matomo (原 Piwik)。[前往 Matomo 官网下载软件包](https://matomo.org/download/),然后解压到服务器上。当然,如果你的服务器上支持一键安装 Matomo 那更好。需要 PHP 环境和 MySQL 数据库。安装只需要根据步骤一步步来就好了。最好和 WordPress 安装在一个主机下,这样更方便配合使用。 14 | 15 | ## 地理位置功能 16 | 17 | 前往设置中的地理位置页面,在页面左下角选择下载一个 GeoIP 数据库。下载了之后,你就可以使用 GeoIP (Php) 了,然而这个比较慢。我推荐你使用 GeoIP (PECL),如果你使用的是 cPanel,那么你可以直接在 Select PHP Version 页面中开启 GeoIP 模块,然后再去 `php.ini` 中加入或编辑这一行: 18 | 19 | ``` 20 | geoip.custom_directory = /Matomo/misc 21 | ``` 22 | 23 | 然后就 OK 了,选择 GeoIP (PECL) 即可! 24 | 25 | ## 安装中文字体 26 | 27 | 如果你的语言设置的是中文,那么你的图像报表中会出现乱码。请 [下载字体文件](https://matomo.org/wp-content/uploads/unifont.ttf.zip),然后解压放到 `plugins/ImageGraph/fonts/` 下即可。 28 | 29 | ## 与 WordPress 配合使用 30 | 31 | 首先,需要在 WordPress 下安装 [Matomo Analytics](https://wordpress.org/plugins/matomo/)(完美支持多站点),之后前往设置。如果你的 WordPress 和 Matomo 都安装在一个站点下了,那么就选择 PHP API,否则选择 HTTP API。填写 Matomo 路径和 Auth Token(可在 Matomo 的后台中找到)即可,然后打开 Enable Tracking,选择默认跟踪即可。在 Show Statistics 里可以选择在哪些地方显示哪些统计,非常方便。 32 | 33 | 当你选择了 Show per post stats 后,你可以在每一个文章的编辑页面都能看到这个文章的访客信息,非常赞。 34 | 35 | ## 与 CloudFlare 配合使用 36 | 37 | 首先,为了能够正确的识别用户 IP,你需要在 `config/config.ini.php` 中添加下面这行代码。 38 | 39 | ``` 40 | proxy_client_headers[] = "HTTP_CF_CONNECTING_IP" 41 | ``` 42 | 43 | 如果你的 CloudFlare 启用了 IP Geolocation 功能,那么你其实不需要在主机上开启 GeoIP。只需要根目录下创建 `.htaccess` 文件,添加下面这几行代码: 44 | 45 | ``` 46 | RewriteEngine On 47 | RewriteBase / 48 | RewriteRule ^ - [E=GEOIP_COUNTRY_CODE:%{HTTP:CF-IPCountry}] 49 | ``` 50 | 51 | 然后前往 Matomo 统计的地理位置选项,现在,你的地理位置选项就可以选第三个了 GeoIP (Apache),这个是速度最快的。 52 | -------------------------------------------------------------------------------- /source/_posts/2016-03-25-talk-about-spreading-of-video-on-the-internet.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 谈谈视频在互联网上的流播 3 | tags: 4 | - HTML5 5 | id: '1433' 6 | categories: 7 | - - 科技 8 | date: 2016-03-25 23:15:47 9 | languages: 10 | en-US: https://www.ze3kr.com/2016/03/talk-about-spreading-of-video-on-the-internet/ 11 | --- 12 | 13 | 视频在互联网上分发,最普遍的方式,是通过**万维网**的方式分发——用户通过直接输入网页链接/搜索引擎搜索/其它网站的链接,或者通过任何阅读器(包括 Podcasts 客户端在内)播放。这样做完全不局限在任何平台,但是意味着你得为你的视频流量付费,不过咱们先不谈这方面的事(这只是最理想的方案)。 首先,先从视频的格式来说。想要让用户播放出视频,你需要使用用户能够解码的格式。你可能希望有一种自由的格式,在所有平台上都能够播放,可事实并不存在这样的一种格式。 14 | 15 | 16 | 用 MP4 封装的 H.264 + AAC 格式是目前兼容性最强的格式,能够在绝大多数的设备上播放,但是它不是一个开源的格式,在一些只用开源软件的客户端或者服务器上就不能使用这个格式。典型的例子就是维基百科背后的媒体资源站 Wikimedia Commons 就没有使用 MP4 格式,导致了在维基百科上的视频在一些浏览器上根本无法播放。不过对于大多数情况来说,使用 MP4 封装的 H.264 + AAC 格式就足够了。 其次,需要将视频展示出来,在 21 世纪来说,这已经不是什么难事了。如果你想在网页上展示,一个好消息是:所有的主流浏览器都遵循着一套统一的规范(HTML5),只要你也使用这套规范,那么就可以在主流的浏览器上嵌入视频了(虽然它们遵循同一套规范,但是支持的编码有所不同。就好比说现在用户的信箱都是统一的规格,你可以将你要寄的书放到这些信箱里。但是你的书是用中文写的,那么不懂中文的人就无法知道书中的内容。)。 17 | 18 | 同一个视频,在互联网上流播的版本是与在本地播放的质量是有所不同的。为了能够让视频在互联网上流畅播放,会降低视频的画质。很多视频网站也会准备一个视频的不同画质的多个版本,方便在不同网络环境下播放更好的画质的版本。 19 | 20 | 其实写本文的目的,还是想说说中国的视频网站与国外的差距。有些是不能避免的因素,但是有一些是这些网站本应该做,却没有做。 国外的 YouTube 视频画面分辨率能到 7680×4320@60FPS,就这也不敢称作为 “超清”,然而国内普遍将 1280×720@30FPS 甚至更低的分辨率,就叫 “超清”,这比前者低了将近 100 倍(从像素的信息量上来说)。而且,同等分辨率下的画质也是有很大区别的,使用越低的画质越能节约钱(中国大陆很多视频网站都是很有钱的,但为什么还要节约钱呢?这就不得而知了~)。 21 | 22 | 更高的视频分辨率,意味着能够在更高分辨率的显示器上获得更好的效果。4K、8K 的电视以及显示器已经有很多了,而且能够录制 4K、8K 视频的相机/手机也越来越多。这些高画质内容正在走向低端消费市场,所以视频网站还是有支持的必要的。 23 | 24 | 但之前说的这些,我并不指望国内的视频网站能做到,因为它们都还想多赚钱呢。但是为什么还要使用一个漏洞百出,并且官方已经停止维护,需要通过额外安装插件的方法来播放视频呢?我说的就是 Flash(当然有少数网站已经不用它了),仅仅播放一个视频,用 HTML5 完全就够了,根本不需要这么一个复杂的东西。 想要让它们不用 Flash,首先得让 Flash 彻底地从客户端消失(如果浏览器能够主动屏蔽 Flash 就更好了,例如 Safari),渐渐的,它们会发现有大量的用户流失(这件事正在发生),然后终于有一天就能使用上新的技术了。 在国外,就比中国领先的多。从很多年前开始,主流的视频网站默认都不再使用 Flash 了。 25 | 26 | 视频在互联网上的流播实际上还有很多很多可以讲的,本文仅仅是粗略的谈一下而已。 27 | -------------------------------------------------------------------------------- /source/_posts/2015-08-18-block-haosou.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 好搜所做的恶心事 3 | tags: 4 | - 搜索引擎 5 | id: '176' 6 | categories: 7 | - - 科技 8 | date: 2015-08-18 23:10:44 9 | --- 10 | 11 | 现在的搜索引擎都在尝试转码桌面站点,把网页内容重新排版。百度等搜索引擎都在尝试做这个,目的是让用户有 “一致化” 的体验。但是如果有一家商业公司将重新排版网页用作商业目的,这可就不好了。 我认为这种一致化有好有坏,不能下结论。但是你把网页内容重新排版后还加广告,那不就相当于是**商业使用**了么?好搜就是光明正大的做这个**无视著作权**的事情,在我创作的内容中加入它们的广告,于是它们便可以从中获利。但是它们官方的客服[却说这样的话](http://bbs.360safe.com/thread-4784046-1-1.html#post_38104495),我归纳的大意就是: 12 | 13 | 1. 你可以去我们的平台修改这个设置 14 | 2. 你们的网站没有适配移动端,展现比较差 15 | 3. 我们这样做是为你好,提高你的转化率 16 | 17 | 但是,它们官方并没有明确的提出如何不让好搜给网站重新排版,说白了就是 “绑架” 站长,我好搜就给你的网站重新排版,就做**无视著作权**的事情,钻大陆法律空子。 18 | 19 | ## 截图证据 20 | 21 | 重新排版后去掉了网站名 22 | 23 | 重新排版后加上了广告 24 | 25 | ## 屏蔽好搜 26 | 27 | 首先能做的事情就是屏蔽它,我特意看了[它们的文档](http://www.haosou.com/help/help_3_2.html) 然后我发现了啥?好搜竟然不支持使用 `robots.txt` 文件协议单独屏蔽它,好搜跪着求我:“不要屏蔽我,我还想那你的内容赚钱,你要非要屏蔽就把所有的都屏蔽了吧!” 当然,我是不怕这些的,我直接屏蔽你的 User Agent 不就好了。于是我在 `.htaccess` 文件下加入了如下内容: 28 | 29 | ``` 30 | RewriteEngine on 31 | SetEnvIfNoCase User-Agent "360Spider" bad_bot # 屏蔽垃圾搜索引擎 32 | SetEnvIfNoCase User-Agent "HaoSouSpider" bad_bot # 屏蔽垃圾搜索引擎 33 | SetEnvIfNoCase User-Agent "360Spider-Image" bad_bot # 屏蔽垃圾搜索引擎 34 | SetEnvIfNoCase User-Agent "360Spider-Video" bad_bot # 屏蔽垃圾搜索引擎 35 | Deny from env=bad_bot 36 | ``` 37 | 38 | 然后我竟然发现了就算这样也依然没有效果!看来好搜为了不想让别的网站屏蔽可是下了功夫啊,没关系,我还有方法。 39 | 40 | ### 利用 Referer 屏蔽它加载图片 41 | 42 | 嗯,很成功,图片加载不了了,但是并没有完全屏蔽它。 43 | 44 | 利用 Referer 屏蔽 45 | 46 | ### 利用好搜缺陷屏蔽它 47 | 48 | 于是,我发现好搜并不支持抓取 HTTPS 站点,那好,我强制 HTTPS。好搜终于怂了。 49 | -------------------------------------------------------------------------------- /source/_posts/2015-07-19-eye-fi.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Eyefi Mobi 立刻让你的相机支持 Wi-Fi 3 | tags: 4 | - 智能设备 5 | - 相机 6 | - 硬件 7 | id: '138' 8 | categories: 9 | - - 科技 10 | date: 2015-07-19 12:40:14 11 | languages: 12 | en-US: https://www.ze3kr.com/2015/07/eye-fi/ 13 | --- 14 | 15 | Eyefi Mobi 是一张有 Wi-Fi 功能的 SD 卡。当配置好后,相机每照完一张照片,手机上就能立即显示并分享它。[在亚马逊上购买正品](https://www.amazon.cn/gp/product/B00CS4WPD6?tag=ze3kr-23) 16 | 17 | ## 兼容性 18 | 19 | [兼容绝大多数能安装 SD 卡的相机](http://www.eyefi.com/cameras) 比如佳能 5D Mark III、7D Mark II 等机型都不带 Wi-Fi 功能,但是都是 CF/SD 双卡槽,可以将照片同时存进两张卡中。考虑到 Eyefi Mobi 卡的速度以及容量不及 CF 卡。所以我设置在 Eyefi Mobi 卡中存储 JPEG 格式,在 CF 卡中存储 RAW 格式,JPEG 格式更适合手机分享到社交网络,RAW 格式适合后期编辑,十分方便。我在佳能相机中每拍下一张照片都会同时存储 JPEG 和 RAW 格式的照片至两张卡(相机中设置为“同时记录”即可),即使是使用 7D Mark II 的每秒十张连拍也没有丝毫问题,可见这张卡在专业相机上当作副卡是表现不错的,可以快速从手机分享刚刚拍摄的照片。 除此之外,Eyefi Mobi 卡还适合仅有 SD 卡的入门级机型,这些相机没有很快的连拍,这张卡能达到日常需要,也很适合喜欢分享照片的入门级用户。 20 | 21 | ### Eyefi 联动功能 22 | 23 | 兼容 Eyefi 联动功能的相机可以直接配置 Eyefi 卡的设置,同时还能够保证相机关闭后还能够继续传输文件,通过相机的显示屏显示传送进度,或在机器的菜单中直接看到Eyefi的运行情况。 以佳能相机为例,在安装了 Eyefi 卡后,相机设置中就会有一个新菜单选项: 24 | 25 | Eyefi 菜单选项 26 | 27 | Eyefi 连接信息 28 | 29 | ## 易用性 30 | 31 | Eyefi Mobi 卡首次使用时,只需要在手机上下载一个软件,在软件中输入这张卡的 ID,待配置完成后,将此卡装入相机中照一张照片,你就会发现手机上立刻就出现了这张照片,使用十分方便。在相机中可以查看此卡的传输状态,以及进度。通常这张卡仅在有新照片的时候无线功能才工作,当图片全部传输完成后,无线功能自动关闭,相机续航能力几乎没有什么变化。 32 | 33 | ## 小提示 34 | 35 | * 如果你的相机是 CF/SD 卡双卡槽,建议你仍然配一个高性能大容量 CF 卡,这样既能达到高速传输,同时还能有 Wi-Fi 功能,而且不用购买容量很大的 Eyefi Mobi 卡,将其当做一枚副卡。而且,请设置“同时记录”,并设置存在 Eyefi Mobi 卡上的照片格式为 JPEG。 36 | * 如果你仅仅是将其当作副卡,那么你不需要在这张卡上保存全分辨率的照片,可以存储尺寸更小的照片,这样可以很大程度上减少手机上的空间占用,使照片更适合分享。(同时,照片中的噪点也少了) 37 | * 这张卡可以存储任何格式的照片,但是只有 JPEG 格式的照片以及 AVI、MP4、MPG、MTS 和 MOV 格式的视频能够被传输到手机,RAW 格式照片不会被传输到手机。 38 | * 如果你的相机只安装 Eyefi Mobi 卡,同时很需要 RAW 格式的照片,又需要将照片传输到手机,那么请选择“同时记录 RAW + JPEG”。 39 | -------------------------------------------------------------------------------- /source/_posts/2015-05-16-mobile-first-beginning.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 移动优先 – 起源 3 | tags: 4 | - HTML5 5 | - 响应式设计 6 | id: '1000' 7 | categories: 8 | - - 开发 9 | date: 2015-05-16 13:36:43 10 | languages: 11 | en-US: https://www.ze3kr.com/2015/05/mobile-first-beginning/ 12 | --- 13 | 14 | 现有的桌面上的操作系统大多都有浏览器,浏览器可以让我们方便的浏览一个网页。 然而最初的手机浏览器访问网页是很困难的,因为它们分辨率不高、屏幕很小而且浏览器不支持众多前沿的 CSS 以及 JavaScript,使它们没有能力访问桌面版网站。那时的手机访问的网站都是专门为设备大幅度简化的版本,就像这样: 15 | 16 | 简化版本的移动网页 17 | 18 | 不过,直到 iPhone 的发布,这一切都得到了很大的改变。因为 iPhone 上的浏览器 —— Safari 是一个真正的且非常前沿的 Web 浏览器,而且它还支持 HTML5 标准。它配备有几乎和电脑一样的浏览器 —— 以至于它支持 CSS3 和 JavaScript。但是这一切,却是在一个宽度仅有 320 个像素的设备上显示。 然而当一个桌面浏览器宽度缩小到 320 个像素时,它就变的大不一样,当他访问一个没有对它优化的网页时,它就会将其缩放(宽度将缩放至 1/3),以百度新闻为例,若没有适配,则将现实电脑版网站,这样页面的字会很小,但是用户可以通过缩放就能够解决,所以并没有什么问题。然而,百度新闻做了一个专门为 iPhone 的版本,像这样: 19 | 20 | 百度新闻 iPhone 版 21 | 22 | 它能够更好的适应触摸屏,并且没有了字体小的问题,也不需要缩放。但是请要注意,这个页面已经不是刚才的那个页面了,也就意味着百度需要专门重新设计一个为 iPhone 版本的网页,成本是很高的。 然而在 CSS 的帮助下,不需要准备两个网页就可以同时适配电脑和手机,它们加载到的页面相同,但是应用的样式表并不同。例如没有针对移动而优化的 [Wikipedia 导航页](https://www.wikipedia.org/),iPhone 上的 Safari 访问时将会缩放显示,布局就如同电脑访问一样: 23 | 24 | 没有针对移动而优化的 Wikipedia 导航页 25 | 26 | 然而通过增加的 CSS 样式表(当然还包括 `head` 中的 `viewport`),这个页面在手机上就会完美的显示了,就像下图: 27 | 28 | 针对移动优化了的 Wikipedia 导航页 29 | 30 | 像 Wikipedia 导航页这样先根据电脑布局设计,再新增 CSS 使其支持移动设备的网页,就是桌面优先而不是移动优先。而移动优先则正好相反,页面根据手机而设计,然后再让它适配电脑,电脑与手机也是访问同一个页面,这就属于移动优先。由于移动优先的网站是根据手机设计,自 iPhone 发布之后,很多智能手机也使用了前沿的浏览器,所以移动优先的网站自然会使用 HTML5、CSS3 中的众多新特性,大大缩短了一个网页所需要的开发时间。而且移动优先的网站根据手机的高延迟网络而设计,减少了页面大小,无论身处什么网络环境,加载速度都有很大的提升。移动优先的优点众多,这就是导致其流行起来的原因。 31 | -------------------------------------------------------------------------------- /source/_posts/2015-07-15-mobile-first-2.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 移动优先 – 速度 3 | tags: 4 | - HTML5 5 | - 响应式设计 6 | id: '34' 7 | categories: 8 | - - 开发 9 | date: 2015-07-15 14:00:25 10 | languages: 11 | en-US: https://www.ze3kr.com/2015/07/mobile-first-2/ 12 | --- 13 | 14 | 移动设备上的网速通常并不快,他们通常会有比宽带更慢的速度、更高的延迟,那么移动端的浏览器是如何加载页面的呢?这便是本文要介绍的内容。 其实无论是在移动端还是桌面端加载页面,都会需要以下几个步骤: 15 | 16 | ### 1\. 解析域名 17 | 18 | 域名通常对应着一个 IP 地址,浏览器只有在知道了这个 IP 地址后才能与服务器通讯。为了解析域名,客户端会向 DNS 解析服务器发送一个关于这个域名的请求,就能查询到这个域名的 IP 地址。DNS 解析是存在 “TTL 生存时间” 的,也就是缓存时间,这个内容会被缓存在 DNS 解析服务器上、路由器和客户端上,按照缓存时间存储。DNS 解析服务器通常会由运营商提供,如果存在缓存,那么解析速度则是相当快的。(目前的 DNS 解析是以十分不安全的明文的方式传输的,任何中间人都能破坏或者是修改解析结果) 19 | 20 | ### 2\. 发起请求 21 | 22 | 有了 IP 地址之后,浏览器会与服务器建立 TCP 链接,然后发出一个请求。请求中会包含需要访问网站的域名(得以使 IP 可以给多个域名提供不同内容)、请求方式、网址路径、所能接受的数据,压缩类型和编码方式、 Cookie 以及浏览器信息(能够判断你是否在手机上访问网站)。 23 | 24 | ### 3\. 下载页面 25 | 26 | 浏览器开始下载页面本身,下载页面本身后又会开始下载页面中依赖的其他内容,包括 CSS 、JavaScript 、图片等。随着优先级不同,它们可能是在渲染之前或者之后下载。 27 | 28 | ### 4\. 渲染页面 29 | 30 | 浏览器会等待加载了最重要的依赖内容(也就是在 `head` 部分中的 CSS 和 JavaScript,之后会重点提到)加载完毕后,进行渲染。因为渲染时要依赖这些内容, CSS 也就是我们常说的样式表,这些样式表十分重要,比如百度这个网页: 31 | 32 | 没有样式表的百度 33 | 34 | 没有 CSS 样式表后,整个网页的布局是 “失控” 的,页面不会以预期的方式被加载,这种体验十分糟糕。没有样式表与有样式表的网页通常是两种完全不同的样子。然而 JavaScript 通常与布局无关,可以放在之后加载,不影响页面样式。 35 | 36 | ## 提升速度 37 | 38 | 网页中的每一个内容都要经历这样的过程,以被客户端得到。只有到了渲染页面这一步时,用户才能够看到页面的内容,在此之前,页面是一片空白。要知道如果一个页面在 3 秒之内都是一片空白,那么多半用户会退出。 移动优先会考虑高延迟移动网络下的用户体验,然而当到了桌面端则也能享受到移动有限带来的速度提升。为了提升速度,有以下几种常用方法: 39 | 40 | ### 将不必要的 JavaScript 放在页面末尾 41 | 42 | 如果 JavaScript 放在末尾,可以在页面被渲染后再加载,大大减少了页面空白的时间。这是最简单,且提升效果最明显的一条。 43 | 44 | ### 使用 CDN 45 | 46 | 使用 CDN 的意思是尽可能把静态文件放在 CDN 服务器上,一个 CDN 包含很多个节点,用户下载 CDN 上的文件时会从物理位置最近或者是相同运营商的节点上下载,如果这个节点上已经有缓存则直接传给用户,如果没有缓存则从最近的数据中心下载并缓存,再传给用户。 我的做法是把网站上所有图片、视频、CSS 样式表和 JavaScript 放在 CDN 上,网站本身不在 CDN 上。这样做能大大减少加载时间,而且成本不大。无论是个人博客还是行业网站,使用 CDN 都很有必要。如果没有钱买自己的 CDN,没关系,你可以免费使用常用开源 CSS 和 JavaScript 的 CDN,官网地址地址:[cdnjs.com](https://cdnjs.com/)。 47 | 48 | ### 妥善利用缓存机制 49 | 50 | 将图片、CSS 样式表和 JavaScript 设置缓存。我习惯于设置相当长的时间(一周、一年等),有的人为了能够经常修改而把缓存期限调小。我在修改文件时会直接换文件目录,这样文件从能保持是最新的。利用好缓存,可以让用户在第二次访问时大大加速。 51 | 52 | ## 总结 53 | 54 | 对于网站速度,既要注重首次启动速度,还要利用缓存提升下一次访问速度。而且应该注意在提升速度的同时也要注重用户体验。 55 | -------------------------------------------------------------------------------- /source/about/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 关于 3 | id: '575' 4 | tags: [] 5 | categories: 6 | - - uncategorized 7 | comments: false 8 | date: false 9 | layout: post 10 | languages: 11 | en-US: https://www.ze3kr.com/about/ 12 | adb: false 13 | ads: false 14 | --- 15 | 16 | ZE3kr 是郭泽宇用于发布内容的 ID,发布的内容汇集以科技、摄影为主的原创精选文章、视频、图片、短文和 App 推荐。 17 | 18 | 如果有任何问题,请直接在相关文章下评论,或者在这里[反馈](https://github.com/ZE3kr/guozeyu.com/issues)。 19 | 20 | ## 联系我 21 | 22 | ### 社交网络 23 | 24 | 我使用去中心化的 Mastodon: [`@ZE3kr@tlo.xyz`](https://mastodon.tlo.xyz/@ZE3kr) 25 | 26 | ### 私聊 27 | 28 | 你可以通过这些方式与我私聊。以下方式均可启用端到端加密: 29 | 30 | + iMessage: [i@ze3kr.com](imessage://i@ze3kr.com) 31 | + ✅ 默认端到端加密 32 | + 电子邮件: [i@ze3kr.com](mailto:i@ze3kr.com) 33 | + ⚠️ [安装我的 S/MIME 公钥](/files/ze3kr.pem)并[加密邮件](https://support.apple.com/zh-cn/HT202345) 34 | + Telegram: [@ZE3kr](https://t.me/ZE3kr) 35 | + ⚠️ [启用 Secret Chat](https://telegram.org/faq#q-how-do-i-start-a-secret-chat) 36 | 37 | 如果你知道我的美国手机号,你也可以通过以下方式与我端到端加密私聊: 38 | 39 | + WhatsApp 40 | + ✅ 默认端到端加密,可通过其他联系方式与我核验端到端加密安全代码 (Security Code) 41 | + FaceTime/iMessage 42 | + ✅ 默认端到端加密 43 | 44 | 如果你知道我的美国手机号,你也可以通过以下**不安全**的方式与我联系。你需要知道,这些方式的通信不支持端到端加密,因此**会被监听**: 45 | 46 | + SMS (短信)/MMS (彩信)/电话 47 | + ❌ 非端到端加密 48 | + ⚠️ 可能有运营商资费 49 | 50 | ### 微信? 51 | 52 | 我不使用微信。 53 | 54 | ### 为什么要使用端到端加密? 55 | 56 | 我注重我的隐私,同时我也重视你的隐私。使用不支持端到端加密的聊天方式会导致你我都没有隐私:假如你使用微信这种端到端加密的聊天软件与我通信,除了你和我之外,[在法律法规规定的情形下,即使未经用户许可,腾讯也会向第三方公开、透露用户个人信息](https://weixin.qq.com/agreement?lang=zh_CN#%E5%85%AD%E3%80%81%E7%94%A8%E6%88%B7%E4%B8%AA%E4%BA%BA%E4%BF%A1%E6%81%AF%E4%BF%9D%E6%8A%A4)。一些组织可能会宣称自己会加密数据,但却不明确使用了 “端到端” 加密。这类软件提供的加密是不完整的,因为服务提供商自己可能有能力解密并读取你的数据。 57 | 58 | ## 订阅 59 | 60 | ### RSS 61 | 62 | 你可以使用 RSS 阅读器订阅本站 (推荐),本站的 RSS 地址是: 63 | 64 | [`https://www.guozeyu.com/feed.atom`](https://www.guozeyu.com/feed.atom) 65 | 66 | [在 RSS 阅读器中打开](feed://www.guozeyu.com/feed.atom) 67 | 68 | ### Telegram 69 | 70 | 你也可以在 Telegram 上订阅本站的频道: [ZE3krChannel](https://t.me/ZE3krChannel) 71 | 72 | ## 关于版权 73 | 74 | 如无特殊声明,本网站文字、图片、视频部分采用本作品采用[知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议](https://creativecommons.org/licenses/by-nc-sa/4.0/)进行许可。 75 | 76 | ## 隐私策略 77 | 78 | 本网站使用[自建的 Matomo](https://www.guozeyu.com/2016/01/piwik-wordpress/) 件进行统计,会使用一小段匿名 Cookie 以用于标识访客 ID,这段 Cookie 绝不会传送给第三方。 79 | -------------------------------------------------------------------------------- /source/_posts/2016-10-04-cloudflare-2016-new-feature.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Cloudflare 的全新功能体验——Load Balancing、Rate Limiting 3 | tags: 4 | - CDN 5 | id: '2031' 6 | categories: 7 | - - 开发 8 | date: 2016-10-04 09:26:00 9 | cover: Load Balancing 截图 10 | --- 11 | 12 | Cloudflare 在 2016 年末终于增加了两个重磅的功能,分别是: 13 | 14 | * Load Balancing(原名:Traffic Manager) 15 | * Rate Limiting(原名:Traffic Control) 16 | 17 | Load Balancing 支持更加高级的负载均衡功能,并终于支持了大家很需要的跨区域负载均衡功能;Rate Limiting 支持了高级的访问次数限制功能。越来越多的原本需要在服务器上配置的功能,现在在 Cloudflare 上也能进行配置了。(目前这两个功能还属于 Beta 阶段,需要认证用户才能使用) 18 | 19 | 20 | ## Load Balancing 21 | 22 | 此功能可以把 Cloudflare 当作负载均衡器使用,而不需要再在主机提供商上配置负载均衡,[官网介绍](https://www.cloudflare.com/load-balancing/)。目前此功能仅向 Enterprise 账户和部分有资格的用户开放。该功能有两种实现方式,分别如下: 23 | 24 | ### 通过 Cloudflare 的 CDN 实现(Anycast) 25 | 26 | 负载均衡的功能是在 Cloudflare 的边缘服务器上实现,是通过第 7 层反代的方式实现,其实很类似于原本的 CDN 功能,不过回源可以高度定制。源站可以配置多个地区(需手动设置服务器的位置),每个地区也可以配置多个服务器,可以将这些众多服务器设置为一个 Group。将域名指向这个 Group,然后 Cloudflare 的边缘服务器的回源可以根据服务器的地区来**自动**选择最近的源站服务器。这样可以非常有效的降低首字节的延迟,对动态资源速度的提升会有很大的帮助。 27 | 28 | 可配置服务器的地区 (两种方式一样) 29 | 30 | 此外,Cloudflare 还自带了 Health Check 功能,可以当服务器宕机后能够自动更改回源。虽然通过 DNS 的方式也可以实现宕机后切换,但是 DNS 方式毕竟会收到缓存时长影响,若使用 CDN 切换,则可以实现秒级切换。 我的一个 WordPress 站点 tlo.xyz 就使用了这个功能,默认是美国东部和亚洲东部跨区域负载均衡,两者有一者宕机自动切换。如果全部宕机,则 fallback 到 Google Cloud Storage 上的静态页面。你可以观察 https://tlo.xyz 上的 TLO-Hostname 的 Header 来判断是哪一个服务器做的响应。 31 | 32 | Load Balancing 截图 33 | 34 | ### 通过 DNS 实现(GeoDNS + 权重) 35 | 36 | 使用此功能不需要开启它的 CDN 功能,故访客是直接连接源站的。同上一种方式也是配置一个 Group,只是不开启 CDN 功能,然后 Cloudflare 会只作为 DNS 服务器的功能。它会自动进行 GeoDNS,给访客返回最近的服务器的 IP 地址,同样也支持 Health Check 功能,当服务器宕机后会自动切换解析。 不同于其他的 DNS 解析商,Cloudflare 真正做到了智能,只需要配置一个 Group 即可,剩下的 Cloudflare 会自动搞定,而不是去手动地选择哪一个地区解析到哪一个服务器。 此功能已经被我测试,目前的测试期间,GeoDNS 的定位功能是根据请求最终抵达的 CloudFlare 的服务器来决定的,也就是说是依靠 Anycast 系统来决定的。然而中国用户绝大多数会被运营商定向到 CloudFlare 的美国西部服务器,于是就会被 GeoDNS 系统解析道美国西部位置所对应的结果。所以此功能还是十分有限,不适合国内使用。 37 | 38 | ## Rate Limiting 39 | 40 | Cloudflare 终于可以限制 IP 的请求速率,此功能能够相当有效的过滤 CC 攻击,而且对于普通访客几乎没有影响(以前只能通过 I'm under attack 功能实现,然而这个功能会让所有用户等 5 秒才能载入)。它可以根据不同的路径配置不同的请求速率,能够实现防止暴力破解密码、防止 API 接口滥用等功能。 41 | -------------------------------------------------------------------------------- /source/_posts/2015-08-06-4k.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: DELL P2415Q 4K 显示器推荐 3 | tags: 4 | - 硬件 5 | id: '183' 6 | categories: 7 | - - 科技 8 | date: 2015-08-26 16:52:57 9 | languages: 10 | en-US: https://www.ze3kr.com/2015/08/4k/ 11 | --- 12 | 13 | 4K,23.8 英寸的屏幕。具有 Retina 效果、出色的色彩还原,清晰度堪比印刷品。最近买了一个,效果不错。[在亚马逊上购买正品](https://www.amazon.cn/gp/product/B00S7WRWL8?tag=ze3kr-23) 14 | 15 | ## 什么是 4K 16 | 17 | 4K 屏幕通常是指分辨率为 1080p 的 4 倍(即宽和高分别是两倍)的显示器。论 4K 屏幕和 1080p 清晰度的差别,就相当于 iPhone 4 与其上一代的差别,用过的人都知道,iPhone 4 的 Retina 屏幕与非 Retina 屏幕差距十分明显。特别是在显示文字是变得更加清晰、锐利。然而由于显示器要比手机大很多,如果大于 19 英寸的显示器也要做到 Retina 的效果,那就需要 4K 的超高分辨率。 18 | 19 | 20 | 经过实际使用,4K 的屏幕果然没有让我失望,特别是文字和图片的展现十分出色。 21 | 22 | ## P2415Q 显示器 23 | 24 | 这算是一款中端的 4K 显示器,作图、处理照片等均能胜任。16:9 的宽屏幕、60 Hz 的刷新率以及最低 6 ms 延迟,使其也适合当做游戏屏幕,功能十分广泛。 25 | 26 | ### 兼容性 27 | 28 | 如果在这个显示器上使用 HDMI 接口,最高只能到 3840 x 2160 @ 30 Hz,只有拥有 DisplayPort 接口的电脑,才**有可能**支持 3840 x 2160 @ 60 Hz。随设备会附赠一条 MiniDP 到 DisplayPort 的线。 Mac 下所有系列的最新款都能够支持 3840 x 2160 @ 30 Hz,配备 Retina 屏幕的 MacBook Pro 的最新机型、Mac Pro 和 5K iMac 都能支持 3840 x 2160 @ 60 Hz(需要启用此款显示器的 MST 功能)。 为了达到 Retina 效果,需要放大显示。Mac 下支持的很好,几乎所有第三方 App 都能支持 Retina。PC 上 Windows 8.1 及更新的版本也支持放大显示,可惜并不是很多第三方 App 支持 Retina,对于这些 App 则会有锯齿效果,显得不那么清晰。 特别是如果你正在使用视网膜的 Mac,那么这个显示器若作为扩展屏幕则不会让你感到与原本显示器的太大差距。但假如你使用视网膜的 Mac,但却配的是 1080p 的屏幕,那么你会明显感觉到在 1080p 的屏幕上文字十分模糊。 29 | 30 | ### 关于这个显示器的 USB Hub 功能 31 | 32 | 这个显示器能够当作 USB Hub 使用,具体使用方法是将电脑上的一个 USB 输出口连到显示器上,显示器上有 4 个 USB 3.0 的输出口连接任何基于 USB 设备,于是电脑就能与这些设备建立连接。如:硬盘、手机、鼠标、键盘、网卡等等,就相当于直接连到电脑上,可以省一个 USB Hub。随设备会附赠一个 USB 3.0 - Type A 到显示器上的 USB 输入的线。本人的 Mac 在实际使用中没有遇到任何问题,也不用安装任何驱动程序。 当然显示器上的口也能给任何 USB 设备充电,更神奇的是——当电脑处于关闭状态或者显示器没有连接电脑的 USB 口,且显示器开启或处于待机状态时,显示器上的 4 个 USB 口依然能够给设备充电。(默认当显示器待机时不给设备供电,可在设置里启用这个功能) 33 | 34 | ### 屏幕参数 35 | 36 | | 参数名称 | 对应值 | 37 | | ------ | ------ | 38 | | 屏幕对角线尺寸 | 60.47 cm (23.80”) | 39 | | 宽高比 | 宽屏幕 (16:9) | 40 | | 面板种类 | IPS | 41 | | 最佳分辨率 | 3840 x 2160 @ 60 Hz | 42 | | 亮度 | 最高 300 cd/㎡ | 43 | | 响应时间 | 最低 6 ms | 44 | | 颜色 | 10.7 亿色 | 45 | 46 | ### 接口 47 | 48 | #### 输入 49 | 50 | 1. DisplayPort 51 | 2. Mini DisplayPort 52 | 3. HDMI (MHL) 53 | 4. USB 3.0 (用于当作 USB Hub) 54 | 55 | #### 输出 56 | 57 | 1. USB 3.0 x 4 58 | 2. DisplayPort (用于菊花链) 59 | 60 | ### 关于屏幕尺寸 61 | 62 | 我认为 24 英寸附近的 4K 屏幕的像素密度是基本接近于配备 Retina 屏幕的 Mac 的,相比之下我更推荐 24 英寸的 4K 显示器。而 27 英寸就需要 5K 或更高了。而目前能够传输 5K 分辨率的接口很少,所以 24 英寸 4K 是最合适的选择。 63 | 64 | ### 其他 65 | 66 | * [此显示器的使用说明](https://static.bhphotovideo.com/lit_files/104995.pdf) 67 | * [更多关于在 Mac 上对 4K 屏幕的支持情况](https://support.apple.com/zh-cn/HT202856) 68 | -------------------------------------------------------------------------------- /source/_posts/2015-05-22-procamera-review.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: ProCamera – iPhone 照相软件推荐 3 | tags: 4 | - 相机 5 | - 软件 6 | id: '81' 7 | categories: 8 | - - App 推荐 9 | date: 2015-05-22 17:03:14 10 | languages: 11 | en-US: https://www.ze3kr.com/2015/05/procamera-review/ 12 | cover: 与 Apple Watch 配合使用 13 | --- 14 | 15 | 这是一个很值得使用的软件,包含强大的手动自定义功能、分享功能以及惊人的 HDR 合成能力。[前往 App Store 获取](https://apps.apple.com/cn/app/procamera-capture-the-moment/id694647259?at=10lJIS) 16 | 17 | ## 独创的 HDR 18 | 19 | 这个软件内置自己的 HDR,完全不同于系统的 HDR 功能,它的 HDR 堪比在 PhotoShop 上合成后的效果,十分出彩。并且有多种 HDR 格式可供选择,而且可以进行手动 HDR,自己调整 HDR 的亮度,满足所有需求。(HDR 功能需要单独购买) 20 | 21 | ## 强大的自定义设置 22 | 23 | 它支持手动对焦、手动曝光。不仅如此,它还可以调整快门速度、ISO 感光度、白平衡等等,均能实时显示,满足绝大多数照片需要。它的快门速度最高可以设置到 0.5 秒,可以轻松应对夜景(通常,系统的相机是自动曝光,然而它不会照出 0.5 秒长时间快门速度,所以噪点通常很多)。 除此之外,它还可以调整图像格式,它支持保存 JPEG 格式 (可调质量)、无压缩 TIFF 和无损压缩的 TIFF,得到无损的照片。 它可以实时手动调节画面的色温,达到最完美的白平衡。 24 | 25 | 照相界面的设置 26 | 27 | 设置截图(节选) 28 | 29 | 手动对焦 30 | 31 | ## 夜景模式 32 | 33 | 通常情况下,系统的相机从来不提供长曝光,因为长曝光会因为手抖导致画面模糊。然而 ProCamera 可以允许 0.5~1 秒的曝光时间,如果有正确的持握方式,画面并不会模糊。长时间曝光可以让画面更明亮,或者同样亮度下有更少的噪点,大大提升夜景的画质。 34 | 35 | 夜景菜单 36 | 37 | ## 后期处理 38 | 39 | 此软件有丰富的后期处理的功能,甚至可以调节曝光曲线等参数,操作十分简便。 40 | 41 | 曝光曲线 42 | 43 | 除此之外,它还有众多滤镜,甚至还能调节每一种滤镜的参数,十分强大。 44 | 45 | 对比效果 46 | 47 | ## 定时器 48 | 49 | 这个软件有强大的定时器功能,非常适合高级的自拍或者间隔拍摄。通过后期制作,能够达到 800 万像素的间隔拍摄视频。此功能类似单反上的定时器,十分有用。你甚至不需要为了定时器去购买别的软件了。 50 | 51 | 定时器设置截图 52 | 53 | ## 支持 Apple Watch 54 | 55 | 购买此软件后,可以在 Apple Watch 上遥控 ProCamera 进行照相,同时还可以浏览已经拍摄的照片,充分利用 Apple Watch。如你已经拥有一个 Apple Watch,并正在寻找一个可以用 Apple Watch 遥控照相的第三方软件,那么这款软件正是你要找的。 56 | 57 | 与 Apple Watch 配合使用 58 | 59 | ## 总结 60 | 61 | 虽说这个软件功能十分繁多,但是在使用时你丝毫不会觉得这个软件过于“沉重”,它的界面是十分简洁友好的,同时适合专业与非专业用户使用。这一款软件就可以完成全部的图片创作了。 62 | 63 | ## 小提示 64 | 65 | 我这里的截图可能提供的是英文版截图,但实际上这款软件是完全支持中文的,可放心购买。 66 | -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: Deploy to AWS China 2 | 3 | on: 4 | push: 5 | branches: [ main ] 6 | workflow_dispatch: 7 | 8 | env: 9 | AWS_REGION: cn-northwest-1 10 | S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }} 11 | CLOUDFRONT_DISTRIBUTION_ID: ${{ secrets.AWS_CLOUDFRONT_DISTRIBUTION_ID }} 12 | AWS_MAX_ATTEMPTS: 10 13 | 14 | jobs: 15 | deploy: 16 | runs-on: ubuntu-latest 17 | 18 | steps: 19 | - name: Checkout code 20 | uses: actions/checkout@v4 21 | with: 22 | submodules: recursive 23 | 24 | - name: Setup Node.js 25 | uses: actions/setup-node@v4 26 | with: 27 | node-version: '18' 28 | cache: 'npm' 29 | 30 | - name: Install dependencies 31 | run: npm ci 32 | 33 | - name: Build site 34 | run: npm run build 35 | 36 | - name: Replace URLs for S3 deployment 37 | run: | 38 | find public/ -type f -name "*.html" -o -name "*.xml" | xargs sed -i 's|https://cdn.tloxygen.com/images/|https://cdn.yangxi.tech/images/|g' 39 | 40 | - name: Configure AWS credentials 41 | uses: aws-actions/configure-aws-credentials@v4 42 | with: 43 | aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} 44 | aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} 45 | aws-region: ${{ env.AWS_REGION }} 46 | 47 | - name: Deploy to S3 48 | run: | 49 | # Sync all files except Cloudflare-only files and assets we will set headers for separately 50 | aws s3 sync public/ s3://${{ env.S3_BUCKET }} --delete \ 51 | --exclude "_redirects" --exclude "_headers" \ 52 | --exclude "*.js" --exclude "*.css" \ 53 | --cli-connect-timeout 60 --cli-read-timeout 300 54 | # Upload JS with Cache-Control header 55 | aws s3 cp public/ s3://${{ env.S3_BUCKET }} --recursive \ 56 | --exclude "*" --include "*.js" \ 57 | --cache-control "public, max-age=86400" \ 58 | --cli-connect-timeout 60 --cli-read-timeout 300 59 | # Upload CSS with Cache-Control header 60 | aws s3 cp public/ s3://${{ env.S3_BUCKET }} --recursive \ 61 | --exclude "*" --include "*.css" \ 62 | --cache-control "public, max-age=86400" \ 63 | --cli-connect-timeout 60 --cli-read-timeout 300 64 | - name: Create S3 website redirects 65 | run: | 66 | aws s3api put-object --bucket ${{ env.S3_BUCKET }} --key "atom.xml" --website-redirect-location "/feed.atom" 67 | aws s3api put-object --bucket ${{ env.S3_BUCKET }} --key "feed/index.html" --website-redirect-location "/feed.atom" 68 | - name: Invalidate CloudFront cache 69 | if: env.CLOUDFRONT_DISTRIBUTION_ID != '' 70 | run: | 71 | aws cloudfront create-invalidation \ 72 | --distribution-id ${{ env.CLOUDFRONT_DISTRIBUTION_ID }} \ 73 | --paths "/*" 74 | -------------------------------------------------------------------------------- /source/_posts/2022-12-18-aliyun-hk-down.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 谈一谈阿里云香港的宕机 3 | date: 2022-12-18 20:48:00 4 | tags: 5 | - 网站 6 | - 网络 7 | - 备份 8 | - DNS 9 | categories: 10 | - 开发 11 | languages: 12 | en-US: https://www.ze3kr.com/2022/12/aliyun-hk-down/ 13 | --- 14 | 15 | 2022 年 12 月 18 日,阿里云香港服务出现了异常。本站所用的香港服务器也中招,由于本人不正确的报警配置,导致部分域名没有正确切换解析,造成了一小部分用户最长半小时的不可用。然而,阿里云香港机房出现问题的时间远不止一个小时。根据我这里的监控,自北京时间 10:49 开始,我跑在香港阿里云上的 HTTP、HTTPS 服务就完全不可用了,直至 20:46 才恢复,共计宕机时间 10 小时。 16 | 17 | ## 事故回顾 18 | 19 | 本人是在早上起床后就发现阿里云香港服务器不可用。一开始以为是被神秘力量封锁了,但是看到报警邮件后发现,香港服务器在国外其他地区也不可用。 20 | 21 | 然后我就测了一下,发现主机能 ping,但无法 SSH 上去,HTTP/HTTPS 服务亦不可用。此外,[yangxi.tech](https://www.yangxi.tech) 网站服务也受到了影响。然后我登录了 AWS 中国区的 Route 53 去查看报警,结果发现 Route 53 上没有任何报警(我的 guozeyu.com 和 yangxi.tech 都在用中国区 Route 53)。查看最近的监控,发现我在 Route 53 上有一处配置错误,导致程序实际上没有在监控香港阿里云……于是修改了监测规则。此时我登录了 AWS 国际区,发现国际区的阿里云香港监控是在正常报警,发现是从 10:49 开始,全球所有监测点均不可用。 22 | 23 | 由于此时 AWS 中国区的报警已经被我改成正确的了,所以已经根据规则,在 DNS 层面进行自动宕机切换了;而且,我之前配置的 DNS TTL 也仅有 120 秒,所以我的所有网站应该在 11:20 前就已经完全恢复正常了。如果没有错误的报警规则,我的网站总共宕机时间也不会超过 5 分钟。 24 | 25 | 然后我登录了我自建的 Observium 监控,不出意外的看到了阿里云香港的机器已经宕机了。但我发现在宕机前,服务器的 CPU 是 100%。我就怀疑这是不是我自己服务器上某个程序卡死了,占用了所有资源,导致看起来 HTTP/HTTPS/SSH 服务都不可用了。 26 | 27 | Observium 监控 28 | 29 | 此时已经 11:30 了,我还觉得这个是我自己的问题,毕竟我也没收到阿里云任何邮件、电话提醒。于是我登录了阿里云后台,尝试进行重启。此时我没有选择强制关机。结果,关机指令已经执行了 10 分钟,机器仍未关闭。平时我使用 GCP 时,如果关机指令执行超过两分钟,那么就会自动执行强制关机,所以此时执行了 10 分钟的关机就很离谱。然后我就尝试发工单,但没能进入到工单,被转到了在线客服。我向在线客服描述了问题后,无人回复。然后我又尝试发工单,结果工单也是无人回复。只是得到了机器人回复,说在关机时,Windows 会执行系统更新,有时需要 10-15 分钟。请在等待 20 分钟后联系客服。 30 | 31 | 大概又过了半个小时,机器终于成功关闭了,但在尝试多次后,机器无法启动。即便我点了启动,机器也会在一段时间后变成 “已停止” 状态。由于此时我还是以为是我自己的问题,不是阿里云的问题,我以为是刚刚强制关机导致系统损坏了,于是尝试给现有云盘打快照,尝试回滚。但离谱的事又发生了,我发现我根本无法打快照!快照的进度一直是 0%。 32 | 33 | 在 11:55,我终于收到了工单的回复:“您好!阿里云监控发现香港地域某机房设备异常,影响香港地域可用区C的云服务器ECS、云数据库polardb等云产品使用,阿里云工程师已在紧急处理中,非常抱歉给您的使用带来不便,若您有任何问题,请随时联系我们”。此时我才知道,这次的宕机可能不是我自己的问题,我放弃了自己尝试恢复服务。 34 | 35 | 该回复没有提供解决方案,也没有预计的恢复时间,可以说无非就是告诉了我 “这个是我们阿里云的问题”,对于恢复服务没有实质性帮助。 36 | 37 | ## 无力吐槽阿里云 38 | 39 | 本次事件最值得吐槽的地方是,我从未收到阿里云发来的有关通知。直至现在,我在邮箱、短信、站内信中没有收到任何阿里云关于此次服务宕机的提醒。我相信阿里云是有很多监控的,我坚信阿里云早在我发现我的服务出现问题之前,就已经知道了我的服务,以及其他人的服务器出现了问题了。但我却没有收到任何通知。唯一告知我阿里云存在问题的还是我发工单自己问出来的。 40 | 41 | 我觉得阿里云有必要向所有受影响的,以及可能受影响的客户发送相关提醒。在连续宕机了 8 小时,且仍未恢复的情况下,阿里云仍不主动通知客户,我实在是难以怀疑阿里云是否是故意不做通知,试图掩盖问题。 42 | 43 | ## 那还用阿里云吗? 44 | 45 | 会的。作为中国第一大,以及全球也能排的上前几的云服务商,我不怀疑阿里云的技术实力。我现在用阿里云主要是为了阿里云香港的 CN2 精品网,用于数据跨境(价格为 3元/GB)。目前在这方面也没有什么可替代的方案。专线也考虑过,太贵了,买不起。 46 | 47 | 但是,我不会把核心业务放在阿里云上了。放在 AWS 上我更安心一些。本次阿里云香港宕机只影响了我的网站一小会儿,也正是因为我没有把核心业务放在阿里云上。 48 | 49 | ## 本站是如何做到高可用的? 50 | 51 | 很简单,本站在四个地区,使用了四个不同服务商的服务器: 52 | 53 | + 德国 OVH 54 | + 北京 AWS 55 | + 香港 阿里云 56 | + 美国 Google Cloud 57 | 58 | 而且本站是纯静态网站。本站会在构建后,将构建产物分别同步到四个服务器上,没有主服务器的概念。本站通过 GeoDNS,将访客解析到最近的服务器,以降低延迟。在阿里云香港服务器宕机后,只需要停止响应解析即可。原本亚太地区解析到香港,现在亚洲会解析到北京,澳洲会解析到美国,这部分用户就被分流到可用的服务器上了。 59 | 60 | 本站还使用了 Route 53 的 Health Check 功能,可以实现接近实时的监控主机运行状态,在发现运行状态异常时,自动停止响应解析。目前,我的网站会在出现异常后一分钟内检测并识别到,并停止响应解析。相关 DNS 记录的时间设置在了 120 秒,因此服务发生不可用时,用户影响的时间不会超过 3 分钟。 61 | -------------------------------------------------------------------------------- /source/_posts/2024-10-24-ipad-pro.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 在 iPad 上运行 macOS? (with Jump Desktop) 3 | date: 2024-10-25 7:00:00 4 | tags: 5 | - 智能设备 6 | categories: 7 | - 科技 8 | languages: 9 | en-US: https://www.ze3kr.com/2024/10/ipad-pro/ 10 | --- 11 | 12 | 在读了 [Will Apple EVER consider macOS for iPads?](https://www.reddit.com/r/iPadPro/comments/1gbcy29/will_apple_ever_consider_macos_for_ipads/) 后,我觉得我应该分享一下我在 iPad 上使用 macOS 的经验(kind of)。 13 | 14 | 这是因为我发现,在 iPad 上使用远程桌面应用(在我的情况下,是 **Jump Desktop**)并且在家里有一台 Mac mini,我就不再需要 MacBook Pro 了。让我解释一下: 15 | 16 | 我的 iPad 支持蜂窝网络。使用无限的 5G 蜂窝计划(每月 $11.5-16.5)。当我在家时,我使用 Mac mini 和 Studio Display。当我离开家时,我只带 iPad。如果我需要做一些 iPad 无法处理的事情,我可以直接 “Jump” 到家里的 Mac mini。 17 | 18 | ## 为什么这个组合比 MacBook 更好? 19 | 20 | ### 蜂窝网络 21 | 22 | iPad 支持蜂窝网络,它始终保持联网。而 Mac 可能没有这种功能,尤其当我不在家时。 23 | 24 | 1. 当我打开邮件/信息应用时,iPad 上的邮件已经全部下载完毕。然而在 Mac 上,我需要先连接到 iPhone 的热点或 Guest Wi-Fi,然后等待邮件下载。这可能需要 30 秒到几分钟。 25 | 2. 我可以随时随地通过蜂窝网络将 iPad 备份到 iCloud。然而在 Mac 上,除非我带着 USB 硬盘或者连上家里的 Wi-Fi,否则我无法通过 Time Machine 备份 Mac。(不过,我仍然可以通过第三方应用将 Mac 备份到云端。) 26 | 3. 我还可以通过蜂窝网络备份 Lightroom 照片。使用 USB 3,我可以将所有照片导入 iPad,然后通过 5G 上传到 Lightroom。然后我 Jump 到 Mac mini 上,这些照片已经在 Mac mini 的 Lightroom 中了。Jump 到 Mac 后,我可以做 AI 降噪等处理。完成 AI 去噪后,我可以返回 iPad 的 Lightroom 进行更多操作。 27 | 3. 流媒体、应用体验等。有了蜂窝网络,这些事情都变得更加方便。 28 | 29 | ### 娱乐应用 30 | 31 | 1. Netflix for iPad(或者其他许多流媒体应用)。在飞行前,我可以在 iPad 上下载一堆节目。Mac 上无法做到这一点。有些流媒体网站甚至无法在 Mac 上播放 4K HDR,但可以在 iPad 应用中做到(比如 Paramount,至少曾经是这样)。 32 | 2. 在 iPad 的 OLED 显示屏上流媒体播放效果更好,而且更方便。它更小、更轻,我可以在观看节目时取下键盘。这比 Vision Pro 还要简单。 33 | 3. 阅读书籍。用 iPad 读书比用 MacBook 更自然。 34 | 35 | ### 其他 36 | 37 | 1. 触摸屏和 Apple Pencil。Mac 没有这些功能。而且,当我 Jump 到 macOS 时,我还可以使用触摸屏和 Pencil。 38 | 2. 我家里的 Mac mini 连接了许多外设:两个 4TB 的 SSD 和超过 10TB 的硬盘。它还有千兆网速。当我 Jump 到我的 Mac 时,所有这些外设都可以访问。如果不使用远程桌面,我就必须带上这些外设,而这有丢失的风险,数据安全得不到保障。 39 | 40 | ### 它比 iPad + MacBook Pro 还好: 41 | 42 | 1. iPad 比 MacBook Pro 更轻便。带着 iPad 和 MacBook Pro 一起旅行太重了。 43 | 2. 在旅行中拥有更多设备也很难管理。比如还要给额外的设备充电,我得带更多的线,有时还会忘记给其中一个设备充电。此外,跨两个设备同步也很麻烦。 44 | 45 | ## 我使用的具体配置 46 | 47 | 我使用 [Jump Desktop](https://apps.apple.com/app/id364876095),因为它也支持流式传输扬声器和麦克风。如果你想通过流体协议传输音频,还需要安装 [Jump Desktop Connect](https://jumpdesktop.com/connect/)。 48 | 49 | ### SwitchResX 50 | 51 | 我使用 [SwitchResX](https://www.madrau.com/srx_download/download.html) 来为我的 Mac 添加新的自定义 iPad 分辨率。当我的 iPad Jump 到我的 Mac 时,Mac 可以切换到 iPad 的分辨率以匹配 iPad 的屏幕。 52 | 53 | 首先,截取你 iPad 的屏幕截图。然后,打开照片应用,读取分辨率。我的 iPad 分辨率为 2420 × 1668: 54 | 55 | iPad 截图详细信息 56 | 57 | 然后,水平方向减去 50 像素。在我的情况下,1668 - 50 = 1618,所以新的分辨率为 2420 × 1618。 58 | 59 | 在 SwitchResX 中,添加该新分辨率。记得选择缩放分辨率。 60 | 61 | 给 Mac 添加自定义分辨率 62 | 63 | 然后保存(Command + S),并重启。在 iPad 上,打开 Jump Desktop,使用这个配置: 64 | 65 | Jump Desktop Host Machine 配置 66 | 67 | ### 为什么要减去 50 像素? 68 | 69 | 这是因为默认情况下,Jump 不会使用 Home 指示器区域。如果你想使用 Home 指示器区域,你可以在 iPad 上的 Jump Desktop 设置中启用“外观 - 使用 Home 指示器区域”,并且不用减去这 50 像素。 70 | 71 | 我发现我不想使用这个区域,因为我的 Mac 的 Dock 在底部。使用这个区域会影响我点击 Mac 的 Dock。 -------------------------------------------------------------------------------- /source/_posts/2017-01-24-2017-is-a-https-year.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 2017 年,再看 SSL 和 HTTPS 3 | tags: 4 | - HTTPS 5 | - 安全 6 | id: '2430' 7 | categories: 8 | - - 科技 9 | date: 2017-01-24 15:46:29 10 | languages: 11 | en-US: https://www.ze3kr.com/2017/01/2017-is-a-https-year/ 12 | --- 13 | 14 | 一年之前,我发表过一篇文章:[全面 HTTPS 时代即将到来](https://www.guozeyu.com/2015/12/https-everywhere-is-coming/)。到现在,HTTPS 又有什么新变化呢?本文就来一起探索 HTTPS 在 2016 年的变化以及今后的发展可能。 15 | 16 | 17 | ## SSL 和 HTTPS 简介 18 | 19 | HTTPS 是加密了的 HTTP 协议,网址以 `https://` 开头,就代表是使用了这个协议。 HTTPS 相比 HTTP,拥有**全部的**以下特性: 20 | 21 | * **传输数据加密**:与网站之间的通讯无法被中间人(如无线路由器所有者、运营商、在之间线路上的监听者)获取。 22 | * **数据完整性**:保证所传输数据没有被篡改。 23 | * **身份验证**:保证数据是网站所有者提供,而不是第三者提供。 24 | 25 | 由于 HTTPS 要完成身份验证,所以若需要配置 HTTPS,就必须要取得被公认的证书颁发商颁发的证书。 26 | 27 | ## 2016 年 28 | 29 | ### Let's Encrypt,首个真正免费的证书颁发商 30 | 31 | 部署 HTTPS 必须要拥有 SSL 证书,而 SSL 证书的价格区间在每年几百甚至上万元不等,高昂的证书价格成为了部署 HTTPS 的一个重大负担。2015 年末,Let's Encrypt 正式开始公测,可以免费签发多域名的证书,此类证书原先的价格在百元到千元左右。即使是在测试阶段,仅仅 3 个月时间就签发了 100 多万张证书! Let's Encrypt 的证书使用**自动化部署**,验证、签发过程均通过 API 自动实现,大大缩短了申请证书所需要的时间;同时各种服务提供商也纷纷提供了自动签发 Let's Encrypt 证书的渠道。由于 Let's Encrypt 的出现,确实大大加快了 HTTPS 的普及。 32 | 33 | ### HTTP/2,SPDY 的升级版 34 | 35 | 在 2015 年初,HTTP/2 正式成为标准,紧接着各大浏览器和操作系统纷纷支持:Firefox 36、Chrome 41、iOS 9 & macOS 10.11(Safari 9)、Windows 10(IE 11 & Edge)。紧接着,Cloudflare、CloudFront、UPYUN 这些 CDN 提供商也纷纷支持了 HTTP/2,HTTP 服务器 Nginx 和 Apache 也对其做了支持。 HTTP/2 的出现是为了取代 HTTP 1.1 和 SPDY。HTTP/2 主要是支持了**多路传输**,原本需要合并 CSS 和 JS 文件、为众多的图片准备多个域名的做法,使用了 HTTPS/2 之后就没什么必要了。相比 HTTP 1.1 的每一个数据需要单独的一个连接,HTTPS/2 中网站的所有数据只需要一个连接。 36 | 37 | ![HTTP 1.1 与 HTTP/2 对比](/images/2017/http2-3.svg) 38 | 39 | 由于浏览器会限制连接数量,这就会导致在 HTTP 1.1 中,每次只能同时下载几个文件。多路传输可以让这些文件一块儿传输,大大减少加载时间。 40 | 41 | ![HTTP 1.1 传输时间轴](/images/2017/http2-1.svg) 42 | 43 | ![HTTP/2 多路传输时间轴](/images/2017/http2-2.svg) 44 | 45 | 然而,这些浏览器里只是针对 HTTPS 站点做了 HTTP/2 的实现。于是想到让网站提高加载速度,又不得不用 HTTPS。所以,HTTP/2 的出现也推进了 HTTPS 的发展。 46 | 47 | ## 2017 年 48 | 49 | ### Google Chrome 放大招,对有无 HTTPS 的网站区别显示: 50 | 51 | 现在,Chrome 已经开始对使用了 HTTPS 的网站显示 “安全” 字样(EV 证书这个地方则显示企业名称): 52 | 53 | Chrome 对 HTTPS 网站显示安全字样 54 | 55 | 在未来的某一个版本中,对于无 HTTPS 的网站,最终将会这样显示(对于所有 HTTP 网站,未来不同的版本显示的过程是:灰色叹号、红色警报叹号、红色警报叹号 + “不安全字样”;有信用卡或密码提交的会先进行这类显示。下图是最终的第三阶段): 56 | 57 | Chrome 对 HTTP 网站显示不安全字样 58 | 59 | 你也可以在 [Chrome 设置页面](chrome://flags/#mark-non-secure-as)将其调整为 “一律将 HTTP 网页标为不安全”。我推荐所有人都这样设置,因为 HTTP 确实是毫无安全可言! 相信没有公司愿意让用户看到自己的网站被标记为 “不安全” 吧?浏览器的推进起到至关重要的作用。 60 | 61 | #### 更新 1 62 | 63 | 在最新的 Chrome 58 版本里,非 HTTPS 的密码输入处已经显示这样的信息(此处为 weibo.com 的网站登陆窗口): 64 | 65 | Chrome 对 HTTP 网站额外的警告 66 | 67 | 经测试,只要主站是 HTTP,即使表单是提交到 HTTPS 页面,也会显示此信息。 68 | 69 | ### Apple 强制要求使用 HTTPS 加密(ATS) 70 | 71 | 2015 年末的时候,苹果就开始实施 ATS,然而开发者仍能找到选项去关闭这个功能。而在 2017 年或之后某个时刻后(具体 deadline 苹果尚未明确给出,不过可以确定的是不开 ATS 审核会逐渐变严格,并要求提供更多的理由),所有新提交的 APP 必须开启 ATS,也就是说新提交的 APP 必须全部使用 HTTPS 内容了。这促使着众多国内厂商去做 HTTPS 支持。 72 | 73 | ## cPanel 虚拟主机自动获取免费 SSL 证书方法 74 | 75 | 本站特别推荐的虚拟主机提供商 [TlOxygen](https://domain.tloxygen.com/web-hosting/index.php?promo=ze3kr) 现在就支持申请免费 SSL 证书了。整个过程十分简单,并且会自动续签!实现方式:自动为虚拟主机安装 acme.sh 软件,然后自动执行安装流程。此外,[TlOxygen](https://domain.tloxygen.com/web-hosting/index.php?promo=ze3kr) 的虚拟主机支持 SSH 访问,所以你也可以自行使用 acme.sh 或者任何其他工具操作。 76 | -------------------------------------------------------------------------------- /source/_posts/2017-04-08-free-server-monitors.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 几个免费的服务器监控服务推荐 3 | tags: 4 | - VPS 5 | - 安全 6 | id: '2456' 7 | categories: 8 | - - 开发 9 | date: 2017-04-08 08:00:34 10 | languages: 11 | en-US: https://www.ze3kr.com/2017/04/free-server-monitors/ 12 | --- 13 | 14 | 有了服务器监控服务,就能知道网站运行的情况以及在线时间。当服务器出现问题时,便能第一时间收到通知。个人网站运维需要这些服务来保证稳定性。但是,大量的此类服务都是面向企业,导致价格十分昂贵,而且并用不到其所提供的功能。本文就给各位站长推荐几个免费的服务器监控服务。 15 | 16 | 17 | ## 在线率(Uptime)监控服务 18 | 19 | ### StatusCake 20 | 21 | StatusCake 同时提供免费和付费的监控服务。免费版本可以创建无限多个 HTTP(s)、TCP、DNS、SMTP、SSH、Ping 和 Push 的协议监控,监控周期最短为 5 分钟,提醒主要支持 E-mail 和 Webhook 两种方式。免费版本不支持监控服务器配置信息,所以也无需在服务器上安装任何软件。 22 | 23 | StatusCake 面板截图 24 | 25 | 此外,StatusCake 支持 Public Reporting,你可以利用 StatusCake 建立一个监控页面。它还支持将在线率图像及网页嵌入在你自己的网页中,十分方便。 26 | 27 | [注册地址](https://app.statuscake.com/Try/?Plan=FREE) 28 | 29 | ### UptimeRobot 30 | 31 | UptimeRobot 也提供免费的监控服务,支持 HTTP(s)、端口检测、Ping,监控周期最短为 5 分钟。同样不支持监控服务器配置信息,所以也无需在服务器上安装任何软件。最多只能创建 50 个监控,支持 E-mail 提醒。 32 | 33 | UptimeRobot 面板截图 34 | 35 | 相比 StatusCake,它的监控功能要少,但是 Public Reporting 的页面要漂亮一些。由于 StatusCake 所多的那些功能个人站长也几乎用不到,所以 UptimeRobot 也是 StatusCake 的一个良好的替代。 36 | 37 | [注册地址](https://uptimerobot.com/signUp) 38 | 39 | ### 监控宝 40 | 41 | 监控宝是一家国内的监控服务,长期提供的免费版可以创建 6 个 HTTP(s)、Ping、DNS、FTP、TCP、UDP、SMTP 甚至是使用 SNMP 对服务器性能监控(需要软件),监控周期最短为 15 分钟。如果你需要检测国内到你的主机的速度,或者你的主机在国内,监控宝是一个不错的选择。它的免费监控是从中国内 3 个位置同时监控。它支持 E-mail 和**手机短信**告警。它不支持 Public Reporting,但是可以给分享网站的 SLA 证书。功能相当齐全,就是网站的界面设计比较欠缺。 42 | 43 | [注册地址](https://www.jiankongbao.com/new_signup) 44 | 45 | ## 服务器指标监控服务 46 | 47 | ### Stackdriver 48 | 49 | 最后,就要介绍我最近开始使用的强大的 Stackdriver。Stackdriver 是 Google Cloud Platform(下文简称 GCP)旗下的服务器监控服务,支持监控、调试、跟踪、日志。其中的 Uptime Check 支持 HTTP(s) 和 TCP,监控周期最短为 **1 分钟**。它支持 E-mail 、手机短信和 APP 内告警。它的 Uptime Check 是从全球 6 个地区同时监控,可以看到每一个地区的延迟。用来检测 CDN 的速度肯定会很不错。 50 | 51 | Stackdriver 面板截图 52 | 53 | 如果你正在使用 Google Compute Engine(下文简称 GCE) 或者其他 GCP 的服务,那么这个服务还可以帮你记录服务器日志,每月有 5 GB 额度,超出后每 $0.5/GB。此外,它还能进行服务器性能监控,监控服务器各项指标。虽然原本 GCE 面板也能提供 CPU 等信息,但是这个是需要在服务器上安装 Agent,于是就能提供更丰富更准确的信息。安装过程如下: 54 | 55 | ``` 56 | curl -O https://repo.stackdriver.com/stack-install.sh 57 | sudo bash stack-install.sh --write-gcm 58 | curl -sSO https://dl.google.com/cloudagents/install-logging-agent.sh 59 | sudo bash install-logging-agent.sh # 谨慎安装,见下文 60 | ``` 61 | 62 | 毕竟是 Google 自家的服务,安装不需要任何登陆等操作。安装完毕后就会自动采集数据。它分为两个部分,Stack Monitoring 用于监控服务器指标,包括硬盘存储空间、内存占用(包括 Used、Buffered)等 GCE 默认无法监控到的数据。还有就是 Logging,它可以自动同步日志到 Google 的云端,你可以集中的执行搜索等操作。然而 Logging 这个进程会大概占用 100M 内存,小内存实例谨慎使用。需要注意的是,**只有 Logging 是免费的,Monitoring 是收费的,每月 $8**。 然后,你还可以为某一项指标建立告警,比如我创建了一个当磁盘空间高于 90% 的时候给我发邮件。 它可以创建公开页面分享服务器指标和 Uptime Check 延迟的图标,但是却不能显示在线率,实在是一个奇怪的设计。 63 | 64 | ### Observium 65 | 66 | [Observium](http://observium.org/) 通过 snmp 可以用来监控服务器的各项指标,包括内存、储存、网卡等。它可以[免费安装](http://observium.org/wiki/Installation)在自己的服务器上,需要 MySQL 和 PHP 环境。官网给的是 Apache 的范例,如果你用 Nginx 就不需要安装 Apache。 67 | 68 | Observium 面板截图 69 | 70 | 它通过在服务端生成 PNG 来显示图表,所以图表很漂亮精致,但是由于不是矢量图,所以很难做到实时增量更新而且不能精细看到某一个时刻的数值。 Observium 可以轻松的管理许多个服务器。你可以体验[在线 Demo](http://demo.observium.org)。 71 | -------------------------------------------------------------------------------- /source/_posts/2018-12-07-wordpress-5-0-update.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: WordPress 5.0 更新现已发布,全新编辑器,全新主题 3 | tags: 4 | - WordPress 5 | id: '3651' 6 | categories: 7 | - 开发 8 | date: 2018-12-07 07:14:57 9 | languages: 10 | en-US: https://www.ze3kr.com/2018/12/wordpress-5-0-update/ 11 | --- 12 | 13 | WordPress 5.0 正式版已于 2018-12-07 发布,自建 WordPress 用户可以在 WordPress 后台的 Web 管理页面中进行升级。本次更新的最明显的两个特点就是:1. 后台管理使用了全新的编辑器,2. 新增了 2019 年的主题,该主题适配这个全新的编辑器。 14 | 15 | 16 | 这次的 5.0 是一个大版本更新,而不像之前的 4.9、4.8 更新那样,这从版本号就可以看出。 17 | 18 | ## 编辑器 19 | 20 | 这个新的块编辑器(Gutenberg Editor)给人的第一感受就是更加简洁了,这个新的编辑器有着更大的留白。初次使用编辑器的时候会感觉有些不适应,这是因为新的编辑器中没有我们熟悉的工具条了。取而代之的是一个简单的添加块(Add Block)按钮和其他的一些基本操作。 21 | 22 | 在新版的编辑器中,每一个自然段、图片、副标题、引用等都是一个 “块”。你可以为每个块进行自定义操作,如为每个自然段设置不同的字体大小、字体颜色,甚至是背景色和自定义 CSS。而这一切都是通过右侧的 “组件” 工具可视化的实现的。 23 | 24 | 你可以直接拖移块,以实现拖移自然段等效果。 25 | 26 | ### 经典块(Classic Block) 27 | 28 | 新版编辑器兼容老板编辑器。要想使用老款的编辑模式,可以通过插入一个或多个经典块(Classic Block)来实现。这个经典块与新编辑器中的其他块(如自然段块、副标题块等)同等级别。经典块中能包含一个或多个自然段、副标题,对于简单的排版,它可以代替最新的块编辑器。在使用经典块时,你依然能够看到你所熟悉的工具条。 29 | 30 | 经典块 31 | 32 | 经典块截图 33 | 34 | 在编辑以前发布的文章与页面时,默认依然使用原有的编辑模式,即在新的编辑器中包含**一个**经典块。 35 | 36 | ### 支持的原有的块 37 | 38 | 原有的块都是与 HTML 标签对应的,功能相对少一些。经典块用于兼容上一代编辑器。要想使用新特性,你需要学习使用这些新的块。 39 | 40 | * 自然段块(Paragraph):对应原先的 `

` 41 | * 标题块(Heading):对应原先的 `

` ~ `

` 标题。 42 | * 列表块(List):对应原先的 `