声明
本文系 sinatra 源码系列第 4 篇。系列的目的是通过 sinatra 学习 ruby 编程技巧。文章按程序运行的先后顺序挑重点分析,前一篇文章分析过的略去不说。水平很有限,所写尽量给出可靠官方/讨论链接,不坑路人。
继续阅读 »
声明
本文系 sinatra 源码系列第 3 篇。系列的目的是通过 sinatra 学习 ruby 编程技巧。文章按程序运行的先后顺序挑重点分析,前一篇文章分析过的略去不说。水平很有限,所写尽量给出可靠官方/讨论链接,不坑路人。
继续阅读 »
安装ruby,RubyGems 和 jekyll
```
使用yum安装,这一般不会碰到问题
$ sudo yum install ruby
ruby-devel可能不会默认安装,可以使用如下命令更新ruby-devel
$ sudo yum install ruby-devel
安装ruby的过程中会自动安装RubyGems,可以使用如下命令更新RubyGems
$ gem update --system
安装 jekyll
$ sudo gem install jekyll
继续阅读 »
原理
堆排序中的“堆”,它是:
一棵完全二叉树
树的每个节点都不比它的两个子节点小(有序)
由此得到最有用的信息:根节点是二叉树里面最大的元素
堆排序的过程是:
构造有序的堆
输出并删除最大的元素
重复前面两个步骤
继续阅读 »
为什么不是Rails?因为Rails太臃肿了!如果你有一个好创意,你应该从Sinatra轻快地开始。Sinatra十分轻盈——它只是在Rack的基础上添加了一些必要的辅助功能,如routes、views以及一些HTTP辅助方法,总共不到2500行代码(v1.4.7)——框架代码越少越好,这样你就容易掌控全局;相比之下,Rails仅ActiveRecord代码就超过35000行!
继续阅读 »
about blocks
methods can calll yield may times
def many_yields
yield(:peanut)
yield(:butter)
yield(:and)
yield(:jelly)
end
继续阅读 »
《编程珠玑》第 32 页,提到:“尽管第一个二分查找程序于1946年就已经公布了,但是第一个没有 bug 的二分查找程序在 1962 年才出现。”还说参加课堂测试的专业程序员中, 90% 写的二分查找程序都有 bug 。
真的有那么难吗?我心血来潮,动手写起了快排(不要问为什么不是二分查找)。隐约记得快排的原理如下:
继续阅读 »
这是一个基础算法系列,主题是:为什么知道原理还是写不出正确的程序呢?
第一篇已经写好,叫做我尝试去写快排,结果。。。。文章结构都差不多:原理、联想、用法、框架、分步实现、完整代码及测试用例。
原理
插入排序的原理是:
- 将集合分为两个部分:已排好的部分和待排序的部分
- 每次从待排序部分抽一个元素跟已排好部分中的元素逐一比较,直到找到合适的位置,插入待排序元素
- 合适的位置可以是第一个比待排序元素小(大)的,也可能是已排好部分的下界
继续阅读 »
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
继续阅读 »
公司的微信企业号用了 wechat 这个 gem 包。如果要在各个 controller 中调用 gem 包提供的 api ,就先得在 controller 里调用 wechat_api 。如果要使用微信的 JS-SDK ,也得在 controller 里面调用 wechat_api 。
继续阅读 »