编程珠玑
显示全文编程珠玑
显示全文Memcached 是一个高性能的分布式内存对象缓存系统,通过在内存中缓存数据和对象来减少读取数据库的次数,提高系统访问速度。
Cache Results
function get_foo(foo_id)
foo = memcached_get("foo:" . foo_id)
return foo if defined foo
foo = fetch_foo_from_database(foo_id)
memcached_set("foo:" . foo_id, foo)
return foo
end
brew install redis
brew services start redis
redis-cli, the Redis command line interface
redis-cli –help
显示全文完整内容请查看You-Dont-Know-JS,仅作为笔记参考。
object的两种定义形式:声明形式和构造形式
//声明
var myObj = {
key: value
// ...
};
//构造
var myObj = new Object();
myObj.key = value;
JavaScript 引擎在初始化时,会构建一个全局对象,在客户端环境中,这个全局对象即为window。
内置对象,在JavaScript中,实际上只是一些内置函数,可用当作构造函数(由new调用函数),构造一个对应子类型的新对象。
String
Number
Boolean
Object
Function
Array
Date
RegExp
Error
var strPrimitive = "I am a string";
typeof strPrimitive; // "string"
strPrimitive instanceof String; // false
var strObject = new String( "I am a string" );
typeof strObject; // "object"
strObject instanceof String; // true
// inspect the object sub-type
Object.prototype.toString.call( strObject ); // [object String]
在必要时语言会自动把字符串字面量转换成一个String 对象,不需要显式创建一个对象
显示全文渐进式Web应用(Progressive Web Apps)简称PWA
PWA 关键技术
Web App Manifest
Service Worker
Cache Storage
安全 – 通过 HTTPS 来提供服务来防止网络窥探,保证内容不被篡改。
渐进式 – 能够让每一位用户使用,无论用户使用什么浏览器,因为它是始终以渐进增强为原则
响应式 – 适应任何环境:桌面电脑、智能手机、平板电脑,或者其他设备。
不依赖网络连接 – 通过用 service workers 增强,可以在离线或者低质量网络下工作
类原生应用 – 有像原生应用般的交互和导航给用户原生应用般的体验,因为它是建立在 app shell model 上的。
持续更新 – 受益于 service worker 的更新进程,应用能够始终保持更新。
可发现 – 可识别为“应用程序”,是得益于 W3C manifests 元数据和 service worker 的登记,让搜索引擎能够找到 web 应用。
可再次访问 – 通过推送通知等特性让用户再次访问变得容易。
可安装 – 允许用户保留对他们有用的应用在主屏幕上,不需要通过应用商店。
可链接 – 通过 URL 可以轻松分享应用,不用复杂的安装即可运行。
service worker 是独立于当前页面的一段运行在浏览器后台进程里的脚本。
service worker不需要用户打开 web 页面,也不需要其他交互,异步地运行在一个完全独立的上下文环境,不会对主线程造成阻塞。基于service worker可以实现消息推送,静默更新以及地理围栏等服务。
service worker提供一种渐进增强的特性,使用特性检测来渐渐增强,不会在老旧的不支持 service workers 的浏览器中产生影响。可以通过service workers解决让应用程序能够离线工作,让存储数据在离线时使用的问题。
显示全文分而治之,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。
对于一个规模为n的问题,若该问题可以容易地解决(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解。
分解:将原问题分解为若干个规模较小,相对独立,与原问题形式相同的子问题
解决:若子问题规模较小且易于解决时,则直接解。否则,递归地解决各子问题
合并:将各子问题的解合并为原问题的解
原文protip-nobody-expects-3d,只是觉得有趣记录一下,并非完整翻译。
一个简单的制造深度感觉的方式是混合使用box-shadow, scale and transform。
显示全文