程序员…
24 Mar
用了acts_as_taggable_on_steroid和will_paginate插件,发现不能分页,查找解决办法,如下得最方便:
options = Product.find_options_for_find_tagged_with(params[:tag_name],:order => “updated_at DESC”).merge(:page => params[:page] ||1,:per_page =>20 )
@products = Product.paginate(options)
20 Mar
MySQL CONCAT function is used to concatenate two strings to form a single string. Try out following example:
mysql> SELECT CONCAT(‘FIRST ‘, ‘SECOND’);
+—————————-+
| CONCAT(‘FIRST ‘, ‘SECOND’) |
+—————————-+
| FIRST SECOND |
+—————————-+
1 row in set (0.00 sec)
ie.
mysql -u eoewallpapers -p123456123 wallpapers -e ‘set names ‘utf8′; select CONCAT(base_url,”400″,title) from photos where state > 10 ‘ > photos_400.txt
6 Mar
上次装完后发现rails命令没法使用,一直不晓得原因,就卸载了,今天又装了一次,然后运行下rails,看到
eoe:~ IceskYsl$ rails -v
/Library/Ruby/Site/1.8/rubygems.rb:334:in `bin_path’: can’t find executable rails for rails-3.0.0.beta (Gem::Exception)
from /usr/bin/rails:19
看来还是有问题,看看都装了啥gems,如下
eoe:~ IceskYsl$ gem list
*** LOCAL GEMS ***
abstract (1.0.0)
actionmailer (3.0.0.beta, 2.3.5, 2.3.4, 2.2.2, 1.3.6)
actionpack (3.0.0.beta, 2.3.5, 2.3.4, 2.2.2, 1.13.6)
actionwebservice (1.2.6)
activemodel (3.0.0.beta)
activerecord (3.0.0.beta, 2.3.5, 2.3.4, 2.2.2, 1.15.6)
activeresource (3.0.0.beta, 2.3.5, 2.3.4, 2.2.2)
activesupport (3.0.0.beta, 2.3.5, 2.3.4, 2.2.2, 1.4.4)
奇怪,没看到railties,看来这个没装上,我再装一次。
eoe:~ IceskYsl$ sudo gem install railties –pre
Successfully installed railties-3.0.0.beta
1 gem installed
Installing ri documentation for railties-3.0.0.beta…
Installing RDoc documentation for railties-3.0.0.beta…
eoe:~ IceskYsl$ rails -v
Rails 3.0.0.beta
ok,可以了!
参考资料:
http://oscardelben.com/articles/2009/12/06/how-to-test-rails-3.html
http://adamfortuna.com/2010/02/06/getting-rails-3-beta-setup/
http://d.hatena.ne.jp/h-nakao/20100210/1265775935
5 Feb
我已经记不清距离上次大版本更新时什么时间了,好像很久很久了,自从去年(具体时间忘记了)Merb和Rails宣布合并推出Rails3后,N多人就在期待其发布的一天,终于,来了!
这次升级需要新装很多的gem,如下:
gem install tzinfo builder memcache-client rack rack-test rack-mount erubis mail text-format thor bundler i18n
gem install rails –pre
期间遇到一个错误:
Due to a rubygems bug, you must uninstall all older versions of bundler for 0.9 to work
然后这边有N多关于Rails3的资料供参考:
18 Jan
Q:how to get distance between two GeoPoints in sdk 1.0 ? MapPoint.distanceSquared(MapPoint) is gone
thaks!!
A:you’ll need to brush up on your trigonometry, and first compute the Haversine function (this is the standard way of doing it). In order to use the Java trig functions, you’ll have to first convert all your angles from degrees to radians.
Given two longitude/latitude pairs, and the earth’s average radius (assume 6356.78km for your calculations),
you can calculate the distance between the 2 points via this Java code:
double EarthRad = 6356.78; // in km !
// first convert to radians…
double geo1_lat = geo1.getLatitude()*java.lang.Math.PI/360;
double geo1_lng = geo1.getLongitude()*java.lang.Math.PI/360;
double geo2_lat = geo2.getLatitude()*java.lang.Math.PI/360;
double geo2_lng = geo2.getLongitude()*java.lang.Math.PI/360;
double deltaLat = java.lang.Math.abs(java.lang.Math.abs(geo2_lat) – java.lang.Math.abs(geo1_lat));
double deltaLng = java.lang.Math.abs(java.lang.Math.abs(geo2_lng) – java.lang.Math.abs(geo1_lng));
double dist = 2*EarthRad*java.lang.Math.asin(java.lang.Math.sqrt(haversine(deltaLat)
+ java.lang.Math.cos(pair1_lat)
*java.lang.Math.cos(pair1_lng)*haversine(deltaLng)));
Where "dist" now contains the distance between along the earth’s surface.
You can find the Haversine function trig equation by Googling it, then construct a method that returns the appropriate value.
Computing the speed is straightforward: you know your sampling frequency, and you now know the distance between the most recent two points, so, employee speed = distance / sampling interval
参考:http://www.anddev.org/distance_between_two_geopoints_in_sdk10-t4195.html
http://www.anddev.org/calculating_distance_between_two_gps_points-t3708.html
18 Jan
以前在黑莓手机里面有个GPS跟踪软件非常有趣,可以显示目前的方向,在Android中使用其提供的Sensor非常方便,如下是强制Landscape时候的情况:
values[0]:方位角(水平旋转角),简单的说就是手机的头现在朝向哪个方位,0=北、90=东、180=南、270=西(可是好像不太准)
values[1]:纵向旋转角,0=面朝上平置、-90=垂直向上、-180/180=面朝下平置、90=垂直向下
values[2]:橫向旋转角,0=朝前、90=往右倒、-90=往左倒
9 Jan
知道Erlang很久了,在我接触Ruby不久之后就了解了Erlang,但是一直没静下心好好看,恰巧利用这段时间开始我的Erlang之旅吧。
说句题外话,Erlang这个名字我很有亲切感,要是熟悉我的人肯定不会奇怪,呵呵。
Erlang概述
Erlang不但是一种编程语言,而且它具有比编程语言更加贴近操作系统的一些特性:并发线程、作业调度、内存管理、分布式、网络化等。据说使用Erlang编写的Yaws Web服务器,其并发性能是apache的15倍!(这个没啥好炫耀的吧~)
这个Erlang初始开源版本包含了Erlang的实现,同时它也是用于构建分布式高可用性系统的Ericsson中间件的最大组成部分。
Erlang具有以下特性:
并发性 - Erlang具有超强的轻量级进程,这种进程对内存的需求是动态变化的,并且它没有共享内存和通过异步消息传送的通讯。Erlang支持超大量级的并发线程,并且不需要操作系统具有并发机制。
分布式 - Erlang被设计用于运行在分布式环境下。一个Erlang虚拟机被成为Erlang节点。一个分布式Erlang系统是多个Erlang节点组成的网络(通常每个处理器被作为一个节点)。一个Erlang节点能够创建运行在其它节点上的并行线程,而其它节点可以使用其它操作系统。线程依赖不同节点之间的通讯,这完全和它依赖于单一节点一样。
健壮性 - Erlang具有多种基本的错误检测能力,它们能够用于构建容错系统。例如,进程能够监控其它进程的状态和活动,甚至这些进程是在其它节点上执行。在分布式系统中的线程能够配置为在其它节点故障的情况下自动进行故障恢复,并在故障节点恢复时自动迁移回到恢复节点。
软实时性 - Erlang支持可编程的“软”实时系统,这种系统需要反应时间在毫秒级。而在这种系统中,长时间的垃圾收集(garbage collection)延迟是无法接受的,因此Erlang使用了递增式垃圾收集技术。
热代码升级 - 一些系统不能够由于软件维护而停止运行。Erlang允许程序代码在运行系统中被修改。旧代码能被逐步淘汰而后被新代码替换。在此过渡期间,新旧代码是共存的。这也使得安装bug补丁、在运行系统上升级而不干扰系统操作成为了可能。
递增式代码装载 - 用户能够控制代码如何被装载的细节。在嵌入式系统中,所有代码通常是在启动时就被完全装载。而在开发系统中,代码是按需装载的,甚至在系统运行时被装载的。如果测试到了未覆盖的bug,那么只有具有bug的代码需要被替换。
外部接口 - Erlang进程与外部世界之间的通讯使用和在Erlang进程之间相同的消息传送机制。这种机制被用于和操作系统通讯、与其它语言编写的程序交互。如果出于高效率的需要,这种机制的一个特殊版本也允许例如C程序这样的代码直接链接到Erlang运行时系统中来。
入门参考文档:
9 Jan
大悲大喜的2008年也是我的本命年,中国发生了很多大大小小的或喜或悲的事情,我也发生了很多那些传说会在本命年发生的事情,囧~总之还好,2008年已经过去了。
上次去滑雪,无奈的是手腕摔伤了,非常无奈还是右手手腕,现在就是用一个左手打字的,右手还打折石膏呢,医生说了差不多要1-2月才能恢复,算算时间,才过去10天,还要慢慢恢复了,幸好年关了,公司事情不是很多了,主要做产品讨论和技术预研,加上一个手生活多有不便,于是就请假呆在家好好养伤。
由于受伤的是右手,不方便IM,有事情的给我发mail吧。。
接下来一段时间,一来好好养伤,二来需要接触些新东西,大概列举一下吧:
哇,好多,抓紧看书。。
24 Dec
Ruby的来两大主流框架都挺不错的,至少我做Ruby,也时常使用merb写东西,在我看来,两者上午有点非常鲜明,但是从来不曾想到raila和merb会合作。个人感觉DHH和Ezra两个领军人物性格差异非常大,DHH看上去更hacker一点,有时会有点偏执和自以为是,有时会和zed就raills缺点炒得热火朝天;而Ezra则显得内敛的多,内敛低调,虚心接受很多建议,自身也非常牛。Ezra更像一个程序员。
但是,真的,Merb和rails会在下个版本开始合作,按照merb官方的说法,会将merb很多好的经验带给rails,而merb依然是存在的。很多人对这个消息绝对的感兴趣,一些天天吵着是merb好还是rails好的问题的人也终于可以歇歇了。
rails又将迎来哪些大的变革,AR难道也会成插件,会引入merb多少东西,非常值得期待;rails到目前这个版本(2.2.2),明显感觉到发展的瓶颈,这次rails2.2.2的发布,并没有带来想象中的异常强大的东西,国际化和线程安全在ruby1.8上效果不甚理想,国际化也被人口水了一把,再不搞出点花样,估计又有人急了,而这次动作还算大,也算是圣诞的大餐吧,但是应该需要等到明年5月才会发布版本。
回头再想想,merb的如意算盘应该是借助rails推广自己的engineyard,也很不错。
PS:手指被菜刀划破了,打字真鬼速,囧。。
参考信息:
http://yehudakatz.com/2008/12/23/rails-and-merb-merge/
http://weblog.rubyonrails.org/2008/12/23/merb-gets-merged-into-rails-3
21 Dec
音乐指纹,是采用特定的算法对音乐文件的声波进行分析得到的唯一码,主要用于自动分类和标识音乐文件。
当前国外拥有此项技术专利的公司有Gracenote和MusicIP等,其基本原理是通过对音乐文件的全部或部分声波(通常是音乐文件的前几分钟)进行分析产生音乐指纹数据,这部分技术难度并不太大,关键的问题是对音乐指纹进行比对,当前Gracenote已经支持对一首音乐文件的任意部分(至少需要10秒的数据)进行指纹识别。
由MusicIP开发的一个叫libofa的开源音乐指纹生成软件可以从MusicDNS得到,它是通过对音乐文件的前135秒进行分析产生音乐指纹,为了提高匹配的准确性,通常在提交音乐指纹的同时也提取音乐文件的其他信息如MP3文件的ID3信息等。
PS:部分播放器号称利用音乐指纹技术来做的歌词同步实际上是通过音乐文件的相关信息(如MP3的ID3信息)来确定该文件,并非真正意义上的音乐指纹技术。
这项技术在国内尚未有实际的使用,国内对音频文件分析的时候,一般是采用ID3信息,而对音乐指纹的使用目前还是空白的。不过这个空白很快就被填补了。
参考资料:
Comments::最新评论