没有实践过 PhoneGap, 貌似现在最大的问题是 Android 上面的性能。希望经验人士能多分享一下。
杭州电信毫无鸭梨是怎么回事,求测试:http://saito.im
代码里直接写 debugger
, 打开 chrome development tools 执行到那里自动就断了。
简单情况直接 console.log
调试你得先看自己激活了什么事件,页面逻辑基本都是 event driven 的。找到 id
className
基本就知道 callback 在哪里了。你一般都不会调试 jQuery, 只会调试自己的业务逻辑。
jQuery 的 selector
是关键。
Found
Etag 的方式确实防不胜防啊.. 大部分都可以通过禁用三方 cookie & site data 防止。
没有对应的。
这贴可以转移到 Clojure 节点。嗯..
noir 已经不维护了,并且推荐大家用 Compojure.
<lol type="yaml">:omakase</lol>
via: Twitter
模块化风格相当于给了你一个作用域.. 域与域之间隔离。helper plugins 什么的不会串。
大概就这点好处。
!![]((http://d.pr/i/MJEs+)
今晚最大的收获就是学会了 Block third-party cookies and site data
.
#13 楼 @fastzhong 反正我是查 API 的时候放弃的:
!![]((http://d.pr/i/xB5S+)
(println (seq "123𝄞"))
#=> (1 2 3 ? ?)
这个确实是错的。orz...
统一内码 UTF-8
就没啥问题了。只是性能要下降.. Java 的这个内码选择可能在当时已经是最优的了..
没记错的话,Matz 的书上说:Java 生早了..
(def wtf "𝄞")
(println (.length wtf))
(println (.codePointCount wtf 0 (.length wtf)))
好吧,跟编码扯上关系就没完了..
内码一致 还是 没有内码 各有各的好处。
Char 还是有点用的,Ruby 的 String 不是 Enumerable 的,也没有 Char. 所以很多好使的方法都用不了。( Ruby String 没有内部编码。间接导致实现了个 each_byte each_char. each_char 出来的还都是 String, 这才是略坑爹的地方。
Clojure:
user=> (seq "abc")
(\a \b \c)
user=> (first "abc")
\a
user=> (last "abc")
\c
user=> (cycle "abc")
(\a \b \c \a \b \c \a \b \c \a ...)
user=> (take 2 "abc")
(\a \b)
user=> (every? char? "abcdefg")
true
Ruby:
[1] pry(main)> "123"
=> "123"
[2] pry(main)> "123".first
NoMethodError: undefined method `first' for "123":String
from (pry):3:in `__pry__'
[3] pry(main)> "123".last
NoMethodError: undefined method `last' for "123":String
from (pry):4:in `__pry__'
[4] pry(main)> "123".map
NoMethodError: undefined method `map' for "123":String
from (pry):6:in `__pry__'
[5] pry(main)> "123".each
NoMethodError: undefined method `each' for "123":String
from (pry):8:in `__pry__'
[6] pry(main)> "123".each_char
=> #<Enumerator: ...>
[7] pry(main)> "123".each_char{|c| p c.class}
String
String
String
=> "123"
如果 Ruby 有 Char, 直接 Mixin Enumerable 就好了。该有的都有了..
'
=> Char
"
=> String
'''
=> String W/O escape
其实这样挺好的。
[1] pry(main)> require'json'
=> true
[2] pry(main)> JSON.parse("{\"val\":\"test\",\"val1\":\"test1\",\"val2\":\"test2\"}")
=> {"val"=>"test", "val1"=>"test1", "val2"=>"test2"}
[3] pry(main)> '''
[3] pry(main)* {
[3] pry(main)* "name": "name",
[3] pry(main)* "id": 12112,
[3] pry(main)* "sex": "male",
[3] pry(main)* "birthday": "2012-09-08"
[3] pry(main)* }
[3] pry(main)* '''
=> "\n{\n\"name\": \"name\",\n\"id\": 12112,\n\"sex\": \"male\",\n\"birthday\": \"2012-09-08\"\n}\n"
[4] pry(main)> x = _
=> "\n{\n\"name\": \"name\",\n\"id\": 12112,\n\"sex\": \"male\",\n\"birthday\": \"2012-09-08\"\n}\n"
[5] pry(main)> JSON.parse(x)
=> {"name"=>"name", "id"=>12112, "sex"=>"male", "birthday"=>"2012-09-08"}
#8 楼 @lgn21st 哈,多谢。还有 你必须知道的 Clojure !.