Tramadol News - cheap online order Xanax how does xanax work soma online prescription i want a soma prescription order phentermine cheap online phentermine pay with check helps with tramadol withdrawal buy tramadol cheap online viagra web site cheapest viagra homepage cialis canada health canada buy cialis pharmacy pills ambien online consultation buy ambien on line without a rx script Valium no prescrption cheap Valium cod free fedex fioricet cheap no prescription fioricet purchased online without prescription order meridia no rx buying online Meridia xanax from mexico without rx buy xanax online cod soma online cheap free shipping soma overnight without rx phentermine 37.5 90ct buy phentermine with discount buy tramadol to treat your pain tramadol 50 mg cheapest generic price viagra levitra buy levitra online viagra difference between cialis and tadalafil purchase cialis overnight delivery now ambien fedex without prescription ambien buy on line buy valium online discount cheap cheap valium for sale buy prescriptions online fioricet fioricet ONLINE FEDEX COD FREE CONSULT buy meridia cheap cod no rx meridia 15 mg overnight delivery

灰色的灵魂

黑夜给了我黑色的眼睛, 而我注定要用它来寻找美金

灰色的灵魂 header image 4

Entries Tagged as 'Tech'

Rails Magazine可以下载了

March 15th, 2009 · No Comments · Life

这里可以下载,呃,不知道2009会不会是Rails再次爆发的一年?

[Read more →]

Tags: ·

你需要天使投资么?

February 24th, 2009 · 3 Comments · Life

广告一则:
Trilogy Ventures 创业沙龙(互联网 手机应用方向)

时间:3月2日18:00-21:00
地点:上海交通大学闵行校区光彪楼
欢迎去玩。
Update:补充一下,Trilogy去年和前年各投了一家,今年估计机会会多一些,因为专门成立了Trilogy Ventures China专门投早期,此外,当天Speech胜者貌似有3000块奖金。

[Read more →]

Tags:

重要的是持续改进

February 22nd, 2009 · No Comments · Life

其实开发过程中重要的不是采用了什么样的工具,流程甚至理念,重要的是作为开发人员开发团队应该把精力花在是你的开发变得更好上。无论是你喜欢XP这样的理念,还是因为喜欢Joel而简单地使自己的流程符合Joel Test上,这些问题出现的本质是让你把精力放在把事情变好而不是只是在做做事情。每日构建、单步构建和自动测试是把你从每天“做做构建”、“做做测试”这样的事务中解脱出来;使用源代码管理是让你避免浪费时间去反反复复做做过的事情;不要加班是让你意识到你要做得是效率上得改进而不是重复劳动来做体力活。无论是不是已经有了这些流程,开发人员始终可以做的是每天把精力花在使今天比昨天好上面。只要你有意识去花时间进行改建,那么你之前没有用源代码管理你自然会发现花了很多时间做出来得东西被猫吃了;你没有为每个bug添加test case自然会发现同一个bug会反复出现;你没有用单步构建和每日构建自然会发现每次要发布得时候都会手忙脚乱要通宵加班。而有了这样的意识,即使你已经符合了Joel Test的12条你仍然可以发现你可以使用自动发布来让客户看到每天的开发结果;你可以使用创建VM Image来解决不同开发人员开发环境不同,可能有遗漏的依赖没有放入源代码管理中;你会发现Git比SVN更好地解决了开branch的开销和常常需要它记录一部分不完整代码的问题。
所以,重要的是始终在开发过程中保持持续改进的意识,工具和方法论反而是第二位的。

[Read more →]

Tags:

Tool到用时方恨多

February 22nd, 2009 · No Comments · Life

越来越发现,这个时代实在是工具太多了,多到有点让人讨厌了。随便干点什么,都要会一堆东西;学点新东西,发现要能用要再学一堆新东西。最近用ROR做点东西,发现真要做点Production Quality的东西,至少要用一堆工具,比如New Relic,比如Capistrano,然后如果想要用得爽还有一堆RSpec等等的东西可以用,更不用说HTML/CSS/Javascript/MySQL/Git这些基本的工具。如果在Java世界的话,用的东西更是多到让人厌恶。比起要用的工具,人生时间实在是短到让人绝望,不过没办法,只能慢慢玩了……

[Read more →]

Tags: ·

配置Rails应用

February 13th, 2009 · No Comments · Life

译者注:本文原文来自Rails Guides,版本为January 3, 2009: First reasonably complete draft by Mike Gunderloy。本文根据原文,按照Creative Commons Attribution-Share Alike 3.0授权。
本指南涵盖了可用于Rails应用中的配置和初始化特性。通过本指南,你可以
1.调整Rails应用的行为
2.添加在应用启动阶段运行的代码
本指南的第一版是基于Rails 2.3的源代码撰写的。虽然不保证向前兼容,但是本指南涵盖的信息可广泛地用于Rails 2.2。
1. 初始化代码的位置
Rails(至少)提供了五个好位置来放置初始化代码:

预初始化器(preinitializers)
environment.rb
针对特定环境的配置文件
初始化器(load_application_initializers)
后初始化器(After-Initializers)

2. 使用预初始化器
Rails允许你使用一个预初始化器,在框架自身被装载前来运行代码。如果你把代码存放在RAILS_ROOT/config/preinitializer.rb中,这些代码会在任何框架组件(Active Record, Action Pack, and so on)之前第一个被装载。如果你想要改变任何初始化过程中某些类的行为,你可以在这里(preinitializers文件)做。
3. 配置Rails组件
基本上来说,配置Rails所做的工作就是配置Rails自身以及配置Rails的各个组件。environments.rb文件以及针对特定环境的配置文件(比如config/environments/production.rb)允许你设定各个组件的设置。例如,默认的Rails2.3中的environment.rb文件中包含这样一条配置:

config.time_zone=’UTC’

这是一条Rails自身的设置。如果你想要设定Rails的各个组件的设置,你也可以通过同样的这个config对象来做:

config.active_record.colorize_logging = false

Rails会使用这条设置来配置Active Record
3.1 配置Active Record
ActiveRecord::Base包含许多种配置选项:

logger接收一个符合Log4r或者Ruby1.8.x Logger类的接口的logger,该logger会传递给所有的新创建的数据库连接。你可以在ActiveRecord的model类或者其实例上调用logger来获取该logger。把该值设为nil会经用日志功能。
primary_key_prefix_type用于设置主键列的命名。Rails默认主键列的名字是id(该配置无需设定),但是你可以有两个别的选择:

:table_name会另Customer类的主键为customerid
:table_name_with_underscore会另Customer类的主键为customer_id

table_name_prefix使你可以在表名的前面设置添加一个全局的字符串。如果你将该值设为northwest_,那么Customer类会映射到northwest_customers表。默认该值为一个空字符串
table_name_prefix使你可以在表明的后面设置添加一个全局的字符串。如果你将该值设为_northwest,那么Customer类会映射到customers_northwest表。默认该值为一个空字符串。
pluralize_table_names规定了Rails使用单词的单数还是复数来命名数据库中的表名。如果该值被设置为true(默认值),那么Customer类会使用customers表,如果该值被设置为false,那么Customer类会使用customer表
colorize_logging(默认为true)规定了在ActiveRecord的日志信息中是否使用彩色的ANSI代码。
default_timezone决定了在从数据库中读取日期和时间时,是使用Time.local(如果设置为:local)还是Time.utc(如果设置为:utc)。默认值为:local
schema_format控制了从数据库中导出数据库模式到文件中所用的格式。选项:ruby(默认值)会使用一个数据库无关的migrations,选项:sql会使用(可能依赖于特定数据库的)SQL指令。
timestamped_migrations控制了migrations的数字是使用连续的整数还是时间戳。默认值为true,代表使用时间戳,这在优多人共同开发同一个应用的时候是一个更好的选择。
lock_optimistically控制了ActiveRecord是否使用乐观锁。默认该值为true
MySQL适配器增加了一个额外的配置选项:
ActiveRecord::ConnectionAdapters::MysqlAdapter.emulate_booleans控制了ActiveRecord是否认为MySQL数据库中所有的tinyint(1)列为布尔值。默认该值为true
数据库模式的导出器(schema dumper)增加了一个额外的配置选项:
ActiveRecord::SchemaDumper.ignore_table接受一个表名的数组,该数组中的表不应包含在任何生成的数据库模式文件中。该设置在ActiveRecord::Base.schema_format == :ruby时才会起作用。

3.2 配置Action Controller
ActionController::Base包含了一些配置设定:

asset_host在所有AssetHelper中的辅助方法所生成URL的前面添加一个字符串。这是设计用来将所有的javascript,CSS以及图片文件转移到一个不同的主机(asset host)上。
consider_all_requests_local通常在开发环境中被设为true而在生产环境中被设为false;如果它被设为true,则任何错误都会导致详细的调试信息会被导出到HTTP response中。如果你想做更细致的控制,将其设为false然后实现local_request?方法来决定哪些requests会在出错的情况下提供调试信息。
allow_concurrency为了允许同步(线程安全的)的action处理,该值应当被设为true。默认情况下该值为false。你通常不应当直接修改这个配置,因为你需要一系列的其他调整使得线程安全模式可以正确地工作做。你可以在production.rb文件中简单地调用config.threadsafe!,它会为你做所有需要的调整。

Threadsafe操作和开发模式下的一些功能不兼容。特别是自动的依赖装载和类重装载会在你调用config.threadsafe!之后被自动禁用

param_parsers让你可以设置一个handlers的数组,用于提取HTTP requests中的信息并将它放到params哈希中。默认情况下,multipart forms,URL-encoded forms,XML以及JSON的parsers是被激活的。
default_charset设定了所有render默认使用的字符集。默认值为”utf-8″
logger接收一个符合Log4r或者Ruby1.8.x Logger类的接口的logger,可以被用来在Action Controller中记录日志信息。把该值设为nil会禁用日志功能。
resource_action_separator用来设置RESTful url中resource和action之间的分隔符。默认为”/”。
resource_path_names用来设置一个RESTful action默认的名字的哈希。默认情况下,new action被命名为new而edit action被命名为edit。
request_forgery_protection_token用来设置RequestForgery的参数名。调用protect_from_forgery会将它设为:authenticity_token
optimise_named_routes打开了一些生成路径表(routes table)的优化。它默认被设为true
use_accept_header用于设置确定response格式的规则。如果该值设为true(默认值),则respond_to方法和Request#format方法会根据Accept Header返回相应格式的response。弱该值设为false则request格式会单独由params[:format]来决定。如果没有format参数,则response的格式会根据request是否是一个Ajax request来决定返回HTML还是Javascript。
allow_forgery_protection用于设置启用还是禁用CSRF保护。默认在测试模式下该值为false而在其他模式下为true。
relative_url_root可以被用来告诉Rails你将会将应用部署到一个子目录。默认值为ENV['RAILS_RELATIVE_URL_ROOT']
缓存功能代码将会增加两个额外的设置:
ActionController::Caching::Pages.page_cache_directory用于设置Rails为你的Web服务器创建缓存页面的位置。默认值为Rails.public_path(通常该值被设为RAILS_ROOT”/public”+)。
ActionController::Caching::Pages.page_cache_extension用于设置生成的缓存页面文件的扩展名(如果进来的requests已经带了扩展名则这里的扩展名会被忽略)。默认值为.html。
分发器(dispatcher)包含了这样一条配置
ActionController::Dispatcher.error_file_path给定了Rails用来寻找出错文件如404.html的路径。默认值为Rails.public_path。
使用Active Record的session存储可以这样来配置
CGI::Session::ActiveRecordStore::Session.data_column_name用于设置用来存储session数据的列名。默认值为’data’。

3.3 配置Action View
Action [...]

[Read more →]

Tags: ··

functional tests中的form_authenticity_token

February 9th, 2009 · No Comments · Life

又是一个前一阵遇到的很tricky的问题。
Rails2.0中加入了form_authenticity_token来防止部分的cross-site的攻击,ActionView中默认的form_for标签会自动加入类似于

的代码,如果你自己使用form_tag来创建form的话,可以用类似于

<input type=”hidden” name=”authenticity_token” value=”<%= “#{form_authenticity_token}” %>” />

的代码来加入这个隐藏的form中的authenticity_token。
但是手工加入这个token在functional tests中会带来问题,因为functional tests中是把allow_forgery_protection关掉的
可以在environments/test.rb中看到这样的配置

config.action_controller.allow_forgery_protection = false

但是authenticity现在是hardcode在代码中,所以跑functional tests通常会遇到这样的错误

ActionView::TemplateError: No :secret given to the #protect_from_forgery call. Set that or use a session store capable of generating its own keys (Cookie Session Store).

一种解决办法是在view中加入当前all_forgery_protection状态的判断代码,比如

<input type=”hidden” name=”authenticity_token” value=”<%= “#{form_authenticity_token}” %>” />

但是有位同学用了个更巧妙的hook的办法,在test_helper.rb中hook掉form_authenticity_token,如下

module ActionController
module RequestForgeryProtection
def form_authenticity_token
[...]

[Read more →]

Tags: ··

在新macbook上安装Rails+MySQL

February 9th, 2009 · No Comments · Mac, Tech

嗯,嗯,嗯,这个问题前一阵来来回回折腾过不少时间,主要的问题在于

Macbook 466是64位的CPU
Leopard自带的Ruby是32位的版本
如果安装的MySQL是64位版本的,就需要自己编译个Ruby
要不你就像我这样还是装个32位的MySQL吧

MySQL安装的注意事项

建议安装Startup Item,这样就开机自启动了
如果装了Startup Item但是不想开机自启动,那就修改/etc/hostconfig,把MYSQLCOM=-YES-改成MYSQLCOM=-NO-
默认的encoding是latin1,所以要改一下配置文件,按下面这么办就行了

$ sudo cp /usr/local/mysql/support-files/my-small.cnf /etc/my.cnf
$ sudo vim /etc/my.cnf
# 在对应的节点添加如下信息
[client]
default-character-set = utf8
[mysqld]
character-set-server = utf8
default-table-type = innodb
记得数据库创建要在改完配置重启mysqld之后,不然创建的数据库默认还是latin1的
然后就是gem安装mysql的驱动了,抛弃掉Rails自带的过时的ruby版本的驱动了

sudo env ARCHFLAGS=”-arch i386″ gem install mysql — –with-mysql-config=/usr/local/mysql/bin/mysql_config

如果您装的是64位的Ruby和MySQL那么改一个参数吧

sudo env ARCHFLAGS=”-arch x86_64″ gem [...]

[Read more →]

Tags: ···

D-Link的信号果然不好

January 9th, 2009 · No Comments · Life

果然如shute同学所说,D-Link 624的信号比Netgear WGR614差不少。

[Read more →]

Tags: ·

奇怪的tar的问题

January 7th, 2009 · No Comments · Life

很奇怪的问题,在用脚本打包rails project然后上传服务器,因为本机和服务器间的网速很慢,而git会生成很多以._开头的文件,为了让tar包小一点,要把这些文件去掉,用了这样一条命令

tar -zcvf abc.tar.gz –exclude abc/\.git –exclude *\._* abc
在Centos下work得很好,但是在我的Mac上._开头的文件仍然在tar包中,两边的tar的版本都是tar (GNU tar) 1.15.1,这是为什么呢?或者谁能告诉我在Mac下应该怎么做?

[Read more →]

Tags:

明年准备读的技术书

December 30th, 2008 · 3 Comments · Life

少说多做,慢慢修炼吧,希望明年能读完下面的书单,其实看了看量,读完是不太可能,争取读完超过一般吧
今年读了一半,需要读完的

最近在边写边读beta,已经读了大半了,明年出版了一定搞本回家。

花点时间仔细学习javascript吧,现在还是属于随手查代码改代码的阶段。

主要花点时间做题吧,还有就是看看高级的算法比如近似算法什么的。

基本命令还是不熟啊。

还没读过,但很期待

其实从上个月开始,就开始学用Ruby了,Ruby和Rails会作为明年我主要投资的知识资产吧。

javascript也会是我技术投资的一部分,没准备精通,能拿来熟练干活就行。

不知道能不能安排好时间慢慢看这本神作。

这两本估计不会有时间看了,但是也列在目标里吧。

没读完,但希望能读完的,主要还是书读了一半不读完总觉得不舒服

读了一半,基本的都知道了,但是貌似最近想想有些记不太清了,希望能重新翻开来读完吧。对Java采取保本的投资方式吧,长期不看好。

基本已经读完了,需要整理一下笔记。

读过了,但是需要重读一遍的

PM书中我最喜欢的一本,一定要再读个一两遍。

需要再让我反躬自省多读一遍的书。

厕所书,翻完拉倒

总结下来,明年要看的书更基本了,基本没有“大”的书,所谓架构模式等等,算是对过去几年工作的一个反省吧,太多时间花在这些东西上,技术基本功没有练好,是回过头重新看这些注重细节的书了。
其实还有一堆想读要读的,但是很多明年肯定是无望了,所以就不写了。今年读书上的进步就是终于找到了个做笔记的好办法,就是google docs,要查的时候search一下就完了,终于不会象以前一样读完就忘了,然后要找一点东西花好长时间重新翻书去,记在纸上过两天就彻底找不到了。

[Read more →]

Tags: ··