LocalStorage 在 Private Browsing 下的一个限制

下午同事拿了一个装了 iOS 7 的 iPhone 4s 过来问我 饿了么 M 站 怎么访问有问题。第一反应是为何装了 iOS 6 的 iPhone 4 却可以正常访问,因为在做测试的时候就已经拿过同事的 4 测试过。看了一下报了一个这样的错: localStorage.setItem('hello', 'sofish') // Error: QuotaExceededError: DOM Exception 22 查了一下,原来同事开了 Private Browsing 模式。在桌面版的 Safari 也出现了同样的报错。 Safari 果然做的够细致,赞!虽然这种情况非常少,但总不能让接下来的 JS 执行不了吧,所以需要一个 hotfix。这是一个做法:...

Continue reading →

优化你的 AngularJS Web App

这是在今天在「杭·JS」的一个分享。在实践的基础上,从 UI/UX 、Program、Performance 和 SEO 四个方面,讲述对一个 AngularJS Web App 进行优化的一些方法和工具。放出来大家瞄瞄。 使用 Mac OSX 和 iOS 的同学,有兴趣的可以下载 .key 文件:优化你的 Angular Web App。

Continue reading →

Swift 新编程语言 + 资源

昨晚看 WWDC 最期待的是新 iPhone 和 Retina 屏幕的 Macbook Air,可惜都没有。不过 Yosemite 系统一个就足够让人期待了。而对于这样一个开发者大会,最让人激动的还是苹果推出了 Swift 这个新编程语言。之前有学过 2 次 Objective-C,都放弃了。而 Swift 的语法感觉却非常赞,拥有闭包、多返回值、函数可以当变量传递等现代语言的特性。配合 Xcode 有,可以有交互(实时)效果。 虽然是第一天发布,却已经有很多现成(也有未成品、想法)的资源,这里列一个参考列表: Welcome to Swift 官方教程,包括 语言本身 和 与 Objective-C ...

Continue reading →

换成 sofi.sh

不知不觉已经写了 7 年多博客。从第一个域名 happinesz.cn 得名「幸福收藏夹」到用了 3 年多的 sofish.de 换域名经验。今晚折腾了一下,把域名换成 sofi.sh。完全换成自己的 ID。 因为 WordPress 的简单,一直在用,却换过不少主题;从官方推荐的架构 LAMP,到 LNMP;从不懂前端到现在自己偶尔也能当下运维自己折腾 VPS。一回想觉得时间太快,当年一起写博客的一群人,现在几乎都看不到了。大家那时候都还多年轻呢。有段时间觉得可以停掉了,不过一直放着。这段时间重写了博客主题,告别了在 5、6 年前 ul 包 h3 的结构。也不知道还能...

Continue reading →

-webkit-overflow-scrolling 带来的 BUG

重写了博客样式后,已经有好几个朋友说在 Mobile Safari 下 pre 代码块盖住了顶部的导航栏。还有热心的、前端的同学直接告诉我应该是 z-index 导致的 bug。这个 「bug」我也看到了,起因为由于 Mobile 下我给 pre 都加了: -webkit-overflow-scrolling: touch; 不过因为元素如果不设置 position 的时候,默认的值都是 static,所以这理论上与 z-index 是擦不上边。理论告诉我们是这样的,但事实上真的是这样吗? Google 了一圈,W3C Spec 上关于 poistion 的渲染有一段话是这样写的: Each box belongs to one stacking context. Ea...

Continue reading →

JavaScript 函数、作用域和继承

关于函数、作用域和继承,可以写的非常多。不过和 JavaScript 类型浅解 一样,是写给初学者看的,我们着重从简单的来。当然,即使用「简单」来描述,这也是 JavaScript 中最不容易懂的点之一。 一、函数 如你所见,function fn(){},像这个声明式函数。这几乎是函数最常见的内容。一个函数可以有多种形式。虽然初学看起来有点乱,不过我想说的是,你总会知道如何用的,现在知道就可以了。它们除了在 hositing (后面说)表现会有一些不同,其他的都差不多,后面你总会知道如何合理地使用他们的。 1. 声明/匿名函数 当声明函数没有 nam...

Continue reading →

DNS Prefetch 带来的性能问题

把博客的主题给重写了。测试下来页面似乎都没什么大问题,不过在 iPhone 5s 上特别慢,后来再拿 Nexus 5 测试竟然慢的有点吓人。Ping 了一下服务器,即使 DO 速度不快,也是保持在 200ms 左右。看起来不是信号问题。后来突然想起 dns-prefetch,自己在 <head> 写了一句: <link rel="dns-prefetch" href="http://sofish.de" /> 之前是为了测试一下这个是否会带来加速,因为很多人都这么说,HTML5 Boilerplate 也在用,也就一直没拿掉,没想到会给网站带来这么大的性能影响。现在理论上用手机端访问就快多了。如果你真的要...

Continue reading →

JavaScript 类型浅解

对于 JavaScript 类型,可以简单地概括为:相对于强类型语言来说,它是弱(松散)类型的语言;有基本类型和引用类型,他们是区别是一个有固定空间存在于栈内存中,一个没有固定空间保存在堆内存中并且在栈内存中保存了一个指向实现位置的指针。 市面上很多书都有不小的篇幅在讲。这篇文章会讲几个方面,这些方面可能会需要你对 JavaScript 已经有了一些简单的了解,特别是 JavaScript 的类型。如果还不一解,可以随手拿起一本关于 JavaScript 的书翻翻,再来看本文。 一、基本类型与引用类型 基本类型:Undefined / Null / Boolean /...

Continue reading →

天天代码计划

总想起在法学院读书那会每天一篇博客的习惯。新闻坚持写自己的看法,翻译则做亲测,观点则查必至少 3 篇引用。不管刮风下雨,电脑没在身边就跑去网吧写。坚持做这样一件事,非常奇妙。了解了更多自己不懂的内容,甚至自学了前端,并且毕业后走上了程序员这条不归路。认识了很多喜欢自己观点、从文章得到启发的朋友。 很多年后,已经不太写博客。博客本身也在微博等各种 SNS 的出现在慢慢退出历史的舞台,它像一个老人,在我们的记忆里依然年轻,但在 90 后中却很少有人习惯它,更不用说 00 后了。而当年用来获取信息的 RSS,今天依然在...

Continue reading →

创办一家什么样的公司

走着走着,突然停下来回想一下这是不是自己想走的路。用旁观者的心态不全面地看到别人的生活,特别是自己欣赏的人,总觉得他们路走的特别坚定并且纯粹,爱恨坚定。关于创办一家公司也是。以前一直在假设,团队应该是如何的,公司可以是如何的。而现在我就在这条路上,能做成怎样,首先得知道想做成怎样。变通的、文艺的、二叉的都好,至少得知道是怎样的。 首先应该是能盈利,保证一切运转的。这也是不谈的。要谈的在下面列出几点,这也是对我有巨大吸引力的。 一、做酷的事情 不一定是有趣的,也不一定是轻松的,但一定是酷的。当然...

Continue reading →