对这种不能姑息,必须曝光,最好能上电视...
textmate 2 查找替换基本不用调出对话框的:
ctrl+s 增量查找 cmd+e 将选中内容变成查找目标,cmd+g 就到下一个了。常用的组合是 ctrl+w (选中当前词) -> cmd+e -> cmd+g cmd+opt+f 同时编辑文件内所有匹配查找目标的内容
另外全工程替换效果也很赞。可以进一步编辑工程下面的 .tm_properties
设置工程内查找可以忽略哪些文件。例如忽略 vendor
目录,.bundle
文件,.sfd
文件和压缩的 js
可以这么写:
exclude = "{$exclude,vendor/**/*,*.bundle,*.sfd,*.sfd~,*.a,*.min.js}"
键盘操作限定搜索范围在一个文件夹内的方法:cmd+opt+tab 把焦点切换到目录中选中文件夹 (焦点在目录时可以连续敲入文件的前几个字母快速跳到那个文件上,就和在 finder 中差不多), 然后就可以 cmd+shift+f 了。
Cython 也是要虚拟机的吧?
可以做 "恭喜你中了六合彩" 之类的声讯台..
剩下那个是小卡车?
class var 各种坑尽量别用...
之前据说他已经找到了工作?
搬家没网错过了 party 啊...
IDE 的做法是折中的:内存中既保存文本又有 AST, IDE 追踪文本的修改然后尝试把 AST 的变化最小化。但 parse 就是个世纪难题,增量 parse 依然有很高的复杂度也很难并行化。而且 CPU 的单核速度已经发展到极限,没法再快了。所以人们开发出二相着色和 flymake 等各种技术 (自然会被科学家鄙视,但是科学一直没发展,怪谁呢)...
结构化编辑器的载体就完全是树,保存的时候才生成文本或者干脆就不要文本了。smalltalk 时代结构化编辑器就辉煌了,smalltalk 就不谈文件,谈 image... 现在所谓的 refactor 命令都是结构化编辑器上的基本编辑动作...
另外结构化版本控制工具没跟上的话,结构化编辑器都还不够实用 -- 难道是变相给 ydiff 做广告?? (其实之前 @hlxwell 提的 xib 版本控制问题,如果 git 支持 ydiff 就直接解决了...)
其实我最喜欢经典编辑器... 就是在平面上搞文本。高亮是通过词法为主,语法辅助的方式做,着色都是 "99% works and nobody complains"... 什么都能做还可以 out-of-box 的思考:例如把 end
这个关键字编辑改成 endo
这个方法,或者把整段代码用引号包起来,或者为了对齐某个符号鼓捣一些奇怪的缩进和空格...
只是现在,IDE, 文本编辑器,结构化编辑器已经没有明显的分界线了... 多多少少什么都有掺杂...
#51 楼 @hhuai 你的代码是错的... 而且是常见错误:把指针赋给了数组 (不要以为指针和数组是完全等价的...)
简单 fix 就是把 char p[1];
改成 char* p;
另外就算 fix 了这个错误,还有别的问题。例如别人得到了你的这个字符串 b
, 他怎么知道 b.p
能否 free? 最后还是编程者必须知道字符串的内部结构和生命周期,全手动管理,就和没有封装字符串这个 struct 一样。
字符串可以说是 C/C++ 世界里的亘古难题 (说是编程世界的难题都不为过), std::string
的包装就已经是 C++ 语法里能表示得最好的了... C++ 里要做 COW 的封装必须引入引用计数或者类似 GC 的机制,否则只能暴露内部表示让编程者去 hack
不过这个 helper 还是有用的,有时真的是需要固定字符串长度而不是刚好装得进一个框...
不用 css 搞?
text-overflow: ellipsis;
跨浏览器 ellipsis: http://compass-style.org/reference/compass/typography/text/ellipsis/
#30 楼 @wendal 好吧刚 checkout 了 go 的 edge 版本,在我的机器上速度有较大改进,接近 ruby slim 了。
$ go version
go version devel +13e00572ed0b Thu Apr 18 17:37:21 2013 -0700 darwin/amd64
$ go build b.go
$ time ./b
...
1.415287306s
./b 1.38s user 0.05s system 100% cpu 1.435 total
还是比 ruby 慢一点,如果换成 html/template
:
$ time ./b
6.516209338s
./b 6.45s user 0.11s system 100% cpu 6.554 total
#34 楼 @hhuai c++ 换个难看的写法是可以。java 的例子已经比曼德布罗集或者 n 体问题 之类的八辈子都用不到的 benchmark 有实用意义多了。
ruby 做命令行工具的性能和内存优势都很大。
ruby 也有带 jit 的实现:rubinius. 算上 jruby 的话就是有两个带 jit 的实现了。官方 python 也和 cruby 一样没有 jit 的哦。jit 说白了就是用内存和代码的灵活度换性能。例如在 js 的代码里轮流给一个变量赋不同的类型的值,jit 的 assumption 就会被打破,会拖慢程序... 另外不区分整型和浮点的 js 本身就是残废语言,和主题无关就不展开了...
@wendal 我为了让例子中的 go 代码尽可能跑得快,还专门用了 text/template 而不是 html/template, 你 time 出来的 59ms 忽略了 system 部分吧
老实说 go 这个慢都能感觉出来的...