NS不是最厉害的,但国内搞Ruby的人里面,你可以从他身上学会很多...向杯具们致敬..
1.
Ajax for Rails (oreylly白皮山羊) 也挺不错的
书不厚,主讲view
前半部分大致讲了prototype,scriptaculous和rjs,后半介绍了3个项目,内容相当丰富
不过好像还没中文版
2.有人用过cell么?
http://www.iteye.com/topic/176186
3.
你可以轻视文凭,轻视分数,但不能轻视知识
没学历,需要多花很多很多努力而不是一点点,缺了四年,你需要十几年来补
建议你先学点基础,离散数学,数据结构,算法等,比学几个框架有用得多
框架什么的过几年就变样了,从培训班出来的,以后还得被培训
有出路的捷径就是上大学,而不是培训班
有一种人不需要学历,那就是牛人,不过我看lz聪明有限,牛不到哪里去
4.
引用
有一个文档A,有三列信息(key,内容,分数)共计1000万数据,所有信息无序排列;一个文档B,有两列信息(key,姓名) ,共计1000万数据,所有信息无序排列,现在要把A文档所有与B文档key相同的key都替换为B文档的姓名,说下具体的思路及相关的数据结构,不能通过数据库或 shell来实现
NS
引用
name长的话没关系,换成整数位置pos就行了
通读B,取出(key, pos)做成map,大不到哪里去。
然后顺序读A,读一行line,B文件流检索pos,置换line,写line,循环往复,完毕。
5.Ruby升级到1.9后,String#size将变成字符计数,字节计数是String#bytesize
最好备忘一下,以免将来升级后出现奇异的问题
6.
def self.self
"I am not myself..."
end
self
#=> main
__send__ :self
#=> "I am not myself..."
7.做一个彻底干净的sandbox
http://www.iteye.com/topic/335171
8.跑了下Ruby/DL2速度测试,比1.9.0快了一个数量级,但是还是比1.8.7的win32api慢
但是官方binary比自己编译的慢一倍……
1.9.1 mswin32 官方binary
user system total real
win32api 3.312000 0.015000 3.327000 ( 3.328125)
dl2 2.735000 0.000000 2.735000 ( 2.734375)
1.9.1 mswin32 build vc2008
user system total real
win32api 1.703000 0.000000 1.703000 ( 1.718750)
dl2 1.453000 0.000000 1.453000 ( 1.453125)
hwnd = 0
require 'Win32API'
module WATest
ScreenToClient = Win32API.new("user32", "ScreenToClient", "IP", "I")
def self.screentoclient(hwnd, x, y)
r=[x, y].pack("ii")
ScreenToClient.call(hwnd, r)
r.unpack("ii")
end
end
=begin win32/api gem
require 'win32/api'
module WA2Test
ScreenToClient = Win32::API.new("ScreenToClient", "IP", "I","user32")
def self.screentoclient(hwnd, x, y)
r=[x, y].pack("ii")
ScreenToClient.call(hwnd, r)
r.unpack("ii")
end
end
=end
require 'dl/import'
require 'dl/types'
module DLTest
extend DL::Importer
dlload "user32.dll"
include DL::Win32Types
extern "BOOL ScreenToClient(HWND, void *)", :stdcall
def self.screentoclient(hwnd, x, y)
r=[x, y].pack("ii")
ScreenToClient(hwnd, r)
r.unpack("ii")
end
end
require 'benchmark'
n = 100000
puts Benchmark::CAPTION
puts Benchmark.measure { n.times{ WATest.screentoclient(hwnd, 0, 0) } }
#puts Benchmark.measure { n.times{ WA2Test.screentoclient(hwnd, 0, 0) } }
puts Benchmark.measure { n.times{ DLTest.screentoclient(hwnd, 0, 0) } }
9.这么看来,清华科技园就是外观漂亮,里面不怎的啊……
清华主楼虽然外观很土,但是主楼后厅简直是神级的,想起当年上谭浩强的C语言课了~
10.有实力,就算是文盲都抢着要
11.就随意bla bla一些呗
——"就算需求已经写好,先复查需求是不是准确
就算需求已经写好,也要弄清楚将来需求可能会如何变化
大家商量订立一些规矩,如定期重构,最大限度DRY……"
答太多可能也不好,说不好人家是测你忠诚度的
——"多协调,照领导的意思办"
一时答不上的问题,也可以用joke忽悠过去,更能给人深刻的好印象
——"呵呵,你听说过这个故事么……"
12.震惊:这也是注释
http://www.iteye.com/topic/342091
13.语言大师可以用一种语言解决所有问题
我等小人物只能多学几种,以备不时之需
14.A计划:攻心
首先,你要确认他们谁是最关键的话事人
然后想法子调查他的背景,爱好,行为——不要详尽的,要关键的
然后制定一个简单而又精巧的攻略计划
让他彻底站到你这边
最后在适当的时机吐露真相,当然也要把说谎的理由打造得情理交加,可歌可泣
——you passed
B计划:伪证——前提是他们不去仔细验证,或者你悄悄修改他们验证的那台机器的dns路由方式,让它检索你的号码时可以跳到你仿造的页面上
你可以编造新的谎言来掩盖旧的谎言,没关系的
你只是为了让他们不被伤害,不要感到内疚!
C计划:坦诚
你真的是感到内疚吗?
那样更好,只要真诚的说出来(非常能打动人的那种),反正你很内疚,被赶走也是你希望得到的惩罚吧!
人都是有人性的,你有机会(大不大要看你自己的表现了)得到同情和考量(你已经成为这个组织里闪闪发光的新星,或者补人太麻烦)
如果能留下,好好干吧!
15.递归计算向非递归计算转换模板
http://www.iteye.com/topic/201084
引用
递归修改成迭代是不错的教材。
可是没很大实用性,因为瓶颈是递归算法的情况不很多,我们还可以把包含很多局部变量的代码段抽出成函数,还可以增加栈空间。
当然模版化的修改方法也不错,让机器完成这类工作,就更加不需要手动把递归改成非递归了。
建议不用在这种问题上纠结,因为太机械,这两算法本质上没什么区别。
像lisp就没有迭代,只有递归~~
如果你的算法会造成递归栈溢出,改成非递归以后很可能也会堆溢出-_-。
ps1:
递归与迭代的区别,其实是差分方程反向和正向递推的区别,也是归纳和演绎的区别。
ps2:
一些不需要栈就能改写的例子:
如f(n) = f(n-1) + f(n-2)
从n开始算就是递归,从2开始算就是迭代,这种转化连栈都不需要。
又如f(n) = f(n/2) + f(n/4)
我们可以设g(n) = g(n-1)/2
f*g(n) = f*g(n-1) + f*g(n-2)
设f' = f*g,则f = f'* g^-1
f'(n) = f'(n-1) + f'(n-2)
同样也不需要栈。
如果f(x)满足: 对任意a, f(a)==f(a),
那么我们可以:写出对应的差分方程,求出差分方程的通解,将f改写成通解。
这样也不需要栈。
一些递归可以在编译期完成,c++的expression template,
这样运行时也不需要栈。
16.
http://www.iteye.com/topic/333167
17.
http://www.iteye.com/topic/348988
引用
因为大到一定程度时,Fixnum自动变成Bignum。
Fixnum是直接量,Bignum是比较完整的object了。
不过,两者都不能用dup。
1073741823.class
#=> Fixnum
1073741824.class
#=> Bignum
18.Ruby 1.9: 中文编程
http://www.iteye.com/topic/348809
19.版权页要这样写才对
http://www.iteye.com/topic/351588
引用
发帖之前有右上角就好了……
20.[元编程系列] nil? respond_to?
http://www.iteye.com/topic/351546
21.萌语言
http://www.iteye.com/topic/349735
22.我已经退出这浑水了。
比起认真的答,钓鱼式答题比较有效率……
23.Rails UnitTest 测试机制浅析
http://www.iteye.com/topic/352443
24.11个小球和另外1个变态小球的故事
http://www.iteye.com/topic/352254
25. Haskell in 5 steps
http://www.iteye.com/topic/355244
26.Ruby 1.9.1 和1.8.6 Hash描述的差异
http://www.iteye.com/topic/354938
http://www.iteye.com/topic/354938#940910
27.CPS
http://www.iteye.com/topic/356708
28.个人理解,接口有两个好处
协作方面:先写文档,再写程序,容易分工
OO方面:将依赖大文件变成依赖小文件,体现多继承关系等等
但不好的是:产生了不少重复的代码。
不过IDE有自动copy and paste,省掉了手工copy and paste……
而且接口如果改动,改起来累死人。
29.windows suck ,shoes windows 上中文解决方案
require 'iconv'
Shoes.app do
alias _button button
def button txt
_button(Iconv.conv 'gbk','utf-8',txt){ yield if block_given? }
end
button "用得着一个个改吗?"
end
30.说 erlang 摸不着头脑有点过了,毕竟语言的设计者都是希望写出来尽量简单好懂的。把 def / var 改成 let,再加个 ->,然后把不纯的部分用 IO 包起来,就没多少区别了……
其实语法上 scala 和 java 的区别才是比较大吧…… java 没有 def 和 var 关键字,也不能省略括号和分号。我觉得它们的亲和性在于库而不是语法。
为什么“血统纯正”这么重要?因为 pure 函数的行为非常稳定,不管外界怎么变化,相同的自变量总是产生同一个结果,让人非常放心,从而可以集中精力去处理其它问题。如果没有纯洁性,复合函数,优化算法,延迟求值等特性都不好实现。不变性(定义而非变量)也能使开发并发程序开发变得简单高效。
杂交语言让你既能写 java 风格的代码,又能写 FP 风格的代码,如果不注意,肯定会产生非常严重的可读性问题。
31.教你用Ruby算命!
http://www.iteye.com/topic/362901
32.每赚1块钱,就删10行代码。
33.用 haskell 扩展 ruby
http://www.iteye.com/topic/364801
34.强大的 fold
http://www.iteye.com/topic/366101
35.用 Ruby 踩踩四人帮
http://www.iteye.com/topic/370266
36.SQL 与函数式编程
http://www.iteye.com/topic/370674
37.XML 就像弱化的 lisp,不过它是确定性(decidable)的,适合表达文档,但没法表达程序。
XSL 就很像 lisp 了。
但是标签太冗长了,标签嵌套比括号嵌套啰嗦得多了……
现在的人连括号都懒得敲,以缩进代替括号的精简语法更加舒服(如 yaml,python)
有兴趣可以看看为什么当初选了树形文档表达网页
http://www.w3.org/History/1989/proposal.html
如果当初选了 lisp,现在 web 开发不知会简单多少 ……
38.[Ruby 1.9] 超箭头运算符
http://www.iteye.com/topic/376293
39.UI 技术有两点是非常重要的:
1.可以分离界面设计和事件响应:这对团队协作和 IDE 开发很重要。
2.使用的语言支持闭包:能大大简化事件处理。
目前流行的大部分UI如 xaml,xul,flex,html+js 都可以做到这两点……
所以呢,剩下的就是商业运作和推广问题了。
40.each 是人民群众喜闻乐见的吊尾 proc,风格归一,行为清楚。
但也正因为 each 是 proc 语法,受 proc 限制。
for in 不是 proc 语法,所以实现上能优化多一点。
我觉得优化瓶颈的时候可以考虑 for,其它时候肯定是 each 好。
http://www.ruby-doc.org/core/classes/Benchmark.html
41.其实回字有7种写法...
http://www.iteye.com/topic/378553
42.JavaScript里面真的需要继承吗?
http://www.iteye.com/topic/371900?page=3#991232
43.Ruby 静态编程 (你看错了……)
http://www.iteye.com/topic/382080