声明
本文系 sinatra 源码系列第 1 篇。系列的目的是通过 sinatra 学习 ruby 编程技巧。文章按程序运行的先后顺序挑重点分析,前一篇文章分析过的略去不说。水平很有限,所写尽量给出可靠官方/讨论链接,不坑路人。
继续阅读 »
声明
本文系 sinatra 源码系列第 5 篇。系列的目的是通过 sinatra 学习 ruby 编程技巧。文章按程序运行的先后顺序挑重点分析,前一篇文章分析过的略去不说。水平很有限,所写尽量给出可靠官方/讨论链接,不坑路人。
继续阅读 »
Ruby ActiveRecord向数据库的批量写入效率很低:要插入一条记录,你只能先用model的`create`方法构造一个对象,然后保存到数据库;如果你有一批数据要插入,你就要循环调用`create`方法——这一过程可能缓慢到令人难以忍受!
继续阅读 »
AppCode 中添加了直接对CocoaPods的关联:
但是直接关联 Ruby SDK 和 CocoaPods 的时候会发现提示错误:
ruby
Usage of the constant `Pod::SourcesManager` is deprecated, use `Pod::Config.instance.sources_manager` instead (called from /Applications/AppCode.app/Contents/bin/cocoapods_common.rb:4:in `init_master_repo') Usage of the co
继续阅读 »
希尔排序不应该放在这个系列的,因为并不十分清楚它的原理,想要完整了解的朋友请看维基百科
下面是原理的简单解释:
继续阅读 »
《编程珠玑》第 32 页,提到:“尽管第一个二分查找程序于1946年就已经公布了,但是第一个没有 bug 的二分查找程序在 1962 年才出现。”还说参加课堂测试的专业程序员中, 90% 写的二分查找程序都有 bug 。
真的有那么难吗?我心血来潮,动手写起了快排(不要问为什么不是二分查找)。隐约记得快排的原理如下:
继续阅读 »
原理
将待排序元素分为前后两部分,分别调用归并排序使它们有序
从头开始逐个比较前后两部分的元素,根据比较结果先后放进新数组,最终返回这个新数组
联想
归并排序用到了递归,递归终止的条件是待排序元素数量小于 2
归并排序比较之后不会交换元素,而是生成新的数组
继续阅读 »
about blocks
methods can calll yield may times
def many_yields
yield(:peanut)
yield(:butter)
yield(:and)
yield(:jelly)
end
继续阅读 »
这是一个基础算法系列,主题是:为什么知道原理还是写不出正确的程序呢?
第一篇已经写好,叫做我尝试去写快排,结果。。。。文章结构都差不多:原理、联想、用法、框架、分步实现、完整代码及测试用例。
原理
插入排序的原理是:
- 将集合分为两个部分:已排好的部分和待排序的部分
- 每次从待排序部分抽一个元素跟已排好部分中的元素逐一比较,直到找到合适的位置,插入待排序元素
- 合适的位置可以是第一个比待排序元素小(大)的,也可能是已排好部分的下界
继续阅读 »
为什么不是Rails?因为Rails太臃肿了!如果你有一个好创意,你应该从Sinatra轻快地开始。Sinatra十分轻盈——它只是在Rack的基础上添加了一些必要的辅助功能,如routes、views以及一些HTTP辅助方法,总共不到2500行代码(v1.4.7)——框架代码越少越好,这样你就容易掌控全局;相比之下,Rails仅ActiveRecord代码就超过35000行!
继续阅读 »