123
 123

Sat 14 July, 2007

Click here to bookmark this link.Channel Image07:07 ubuntu 7.04的小插曲» 动态感觉 静观其变
昨晚有空在家,把ubuntu 7.04装上去看看,装好之后做软件更新的时候,发生了意外,总是报一堆的目录failed to write cache。我也没有引起特别的注意,还接着用,结果一用,发现启动任何程序都很慢,cpu占用很严重,这才意识到可能是前面那个错误造成,在网上发现是有这个bug,真是哭笑不得,只好照着作吧,这些命令就是简单地把这些目录的时间调成最新的,用的就是touch命令。摘录过来,以备查:

#!/bin/bash
#
# 修正 Ubuntu 7.04 fc-cache failed to write cache
#

sudo touch /usr/share/fonts
sudo touch /usr/share/fonts/X11
sudo touch /usr/share/fonts/X11/100dpi
sudo touch /usr/share/fonts/X11/75dpi
sudo touch /usr/share/fonts/X11/Type1
sudo touch /usr/share/fonts/X11/encodings
sudo touch /usr/share/fonts/X11/encodings/large
sudo touch /usr/share/fonts/X11/misc
sudo touch /usr/share/fonts/X11/util
sudo touch /usr/share/fonts/truetype
sudo touch /usr/share/fonts/truetype/arphic
sudo touch /usr/share/fonts/truetype/baekmuk
sudo touch /usr/share/fonts/truetype/freefont
sudo touch /usr/share/fonts/truetype/kochi
sudo touch /usr/share/fonts/truetype/openoffice
sudo touch /usr/share/fonts/truetype/thai
sudo touch /usr/share/fonts/truetype/ttf-arabeyes
sudo touch /usr/share/fonts/truetype/ttf-bengali-fonts
sudo touch /usr/share/fonts/truetype/ttf-bitstream-vera
sudo touch /usr/share/fonts/truetype/ttf-dejavu
sudo touch /usr/share/fonts/truetype/ttf-devanagari-fonts
sudo touch /usr/share/fonts/truetype/ttf-gentium
sudo touch /usr/share/fonts/truetype/ttf-gujarati-fonts
sudo touch /usr/share/fonts/truetype/ttf-kannada-fonts
sudo touch /usr/share/fonts/truetype/ttf-lao
sudo touch /usr/share/fonts/truetype/ttf-malayalam-fonts
sudo touch /usr/share/fonts/truetype/ttf-mgopen
sudo touch /usr/share/fonts/truetype/ttf-oriya-fonts
sudo touch /usr/share/fonts/truetype/ttf-punjabi-fonts
sudo touch /usr/share/fonts/truetype/ttf-tamil-fonts
sudo touch /usr/share/fonts/truetype/ttf-telugu-fonts
sudo touch /usr/share/fonts/type1
sudo touch /usr/share/fonts/type1/gsfonts
sudo touch /usr/share/X11/fonts
sudo touch /usr/share/X11/fonts/100dpi
sudo touch /usr/share/X11/fonts/75dpi
sudo touch /usr/share/X11/fonts/Type1
sudo touch /usr/share/X11/fonts/encodings
sudo touch /usr/share/X11/fonts/encodings/large
sudo touch /usr/share/X11/fonts/misc
sudo touch /usr/share/X11/fonts/util
sudo touch /usr/local/share/fonts
sudo touch /var/lib/defoma/fontconfig.d
sudo touch /var/lib/defoma/fontconfig.d/A
sudo touch /var/lib/defoma/fontconfig.d/B
sudo touch /var/lib/defoma/fontconfig.d/C
sudo touch /var/lib/defoma/fontconfig.d/D
sudo touch /var/lib/defoma/fontconfig.d/E
sudo touch /var/lib/defoma/fontconfig.d/F
sudo touch /var/lib/defoma/fontconfig.d/G
sudo touch /var/lib/defoma/fontconfig.d/H
sudo touch /var/lib/defoma/fontconfig.d/J
sudo touch /var/lib/defoma/fontconfig.d/K
sudo touch /var/lib/defoma/fontconfig.d/L
sudo touch /var/lib/defoma/fontconfig.d/M
sudo touch /var/lib/defoma/fontconfig.d/N
sudo touch /var/lib/defoma/fontconfig.d/O
sudo touch /var/lib/defoma/fontconfig.d/P
sudo touch /var/lib/defoma/fontconfig.d/R
sudo touch /var/lib/defoma/fontconfig.d/S
sudo touch /var/lib/defoma/fontconfig.d/T
sudo touch /var/lib/defoma/fontconfig.d/U
sudo touch /var/lib/defoma/fontconfig.d/V
sudo touch /var/lib/defoma/fontconfig.d/a
sudo touch /var/lib/defoma/fontconfig.d/j
sudo touch /var/lib/defoma/fontconfig.d/m
sudo touch /var/lib/defoma/fontconfig.d/u

然后运行


sudo fc-cache -f -v

出现succeed就可以了。

eiffelqiu还提示说有个桌面效果,我试了一下,我的机器用起来还行,有些动画的效果,和vista类似,看上去挺有趣的。
...
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image02:28 Copying and pasting in OS X...» Projectionist

Copying and pasting in OS X from Ruby

IO.popen('pbcopy', 'w+') do |clipboard| clipboard.write('Hello') end # ^V # => "Hello" IO.popen('pbpaste') do |clipboard| puts clipboard.read end # => "Hello"

add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl

Fri 13 July, 2007

Click here to bookmark this link.Channel Image22:50 第5回 整理を拒否して能率を上げる (葉玉匡美の脱時空勉強術):NBonline(日経ビジネス オンライン)» Matzにっき
机は資料のキャッシュであると割り切って、 整理せずに積み上げる方式。すぐに見つからなければもう探さない。 単なる言い訳という気もしないでもないが、 とてつもなく散らかった机の持ち主としては非常に共感する。 ちなみに積み上がった机は限界が来た時点(大体年末の大掃除の時)で フラッシュし、きれいになる。が、机の面が見えるのはその後数週間だけだ。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image21:52 随机数是怎么产生的» 404 梦想没找到
最近在研究彩票,为什么人们那么在乎历史数据呢,虽然说简单的rand之类的函数不是很随机,但是彩票摇奖是像摇元宵那样从桶里摇出来的。 言归正传,买彩票还没中过什么奖呢。 刚才搜索了一下,原来是有一定的算法的,至于算法的理论基础,我就不知道了,也许是数学能证明的吧。 这里是一个类似glibc的实现的算法: http://www.mscs.dal.ca/~selinger/random/
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image16:23 [動画]RubyがLispから継承したもの、してないもの − @IT情報マネジメント» Matzにっき
平鍋さんとの対談シリーズ、第三回(全6回)。 今回はLispとRubyの関係。 「RubyとPythonはLispの別の側面を受け継いでいる」とかは 他人には話したことのないネタかもしれない。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image16:23 旭川に移動。» Matzにっき
島大の野田先生と、出雲空港から羽田経由で旭川へ。 北海道と聞いて寒いところじゃないかと思っていたんだけど、 気温は30℃近い。暑いじゃないか。 お昼は「いちくら」で鮭節塩ラーメンを。 最初の一口は物足りないかな、と思ったのだけど、 最後まで食べたら十分おいしかった。不思議な味。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image16:23 旭山動物園» Matzにっき
旭川SOHO協議会の会長さん、副会長さんにエスコートしていただいて、 いまや日本で一番人気の動物園である旭山動物園へ。 「なぜ旭川なのに旭山か」という素朴な質問に対しては、 「動物園が旭山という山にある」という答えが。なるほど。 昔から旭川の子供たちの遠足の地であった動物園は しかし90年代には不人気から閉園の危機にあったとか。 しかし、創意工夫でここまでもってきたとか。 今は人気のために施設が新設されたりしているが、 老朽化した施設の中で工夫をして人気を集めたという話の方が (プロジェクトXに感動しがちな)..
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image16:23 世界に広がるオブジェクト指向スクリプト言語〜Rubyについて開発者が語る» Matzにっき
というわけで、講演。 内容は先週の島大でのものと近いが、 先週の反省を踏まえてスライドの順序を並べ替えたり、 新しいものを書き足したりしている。 が、正直、もう少し若い人たちが多いと思っていたのだが、 予想以上にスーツ率が高くてどきどきしてしまった。 お役に立てたのかしら。 私の後は野田教授が島根での活動について 語ってくださった。さすが教育職だけあって、 なかなかプレゼンがうまい。RubyKaigiで(聞けなかったけど)好評だったのも わかるというものである。 その後、懇親会。さらに一部の人とはお酒の席に(私は飲ま..
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image16:23 インタビュー» Matzにっき
帰りは乗り継ぎが悪くて、 羽田で2時間ほど待つことになっていた、のだが、 「楽天技術研究所について取材したい」という話で、 このタイミングで、楽天の人と、日経の人とを羽田に呼びつけて(えらそー)、 取材を受ける。 ちゃんと「楽天の中の人」として仕事ができたかな。 まだまだ新米だけど
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image16:23 とりあえず暇だったし何となく始めたブログ - flymake でリアルタイム文法チェック» Matzにっき
Emacs 22に標準添付のflymakeを使うと (Rubyでも)リアルタイムに文法チェックができる、という話。 IDEでは時々見かけるこの機能が欲しいと言う人は それなりにいるようなので、そういう人は喜ぶんじゃないかな。 そういう人はそもそもEmacsを使わないという懸念はとりあえず置いといて。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image16:23 mixiが自社開発の検索エンジンに移行、ウェブ検索はYSTに:ニュース - CNET Japan» Matzにっき
やっとHyperEstrailerがmixi経営に活かされるということか。 っていうか、今まで使ってなかったの? それでも、 使われずに塩漬けになるプロジェクトも多い中、 ちゃんと使われるのは良いことだと思うけど。 っていうか、うちのRastが絶賛塩漬け中ってのは 大問題だと思う。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image16:23 cdiggins.com >> My Goal: Naive Programming» Matzにっき
アルゴリズムを直接書き下したようなプログラムを書くと、 「素朴」とか「工夫がない」とかけなされるけど、 考えてみりゃ思ったまま書いてちゃんと動く「素朴なプログラム」が一番じゃね? という話。 さらに言えば、ある言語特有のイディオム(特に性能に関するもの)は、 その言語の弱さの表明以外の何者ではないのでは、という懸念。 そう。人はもっと「実行可能擬似コード」の重要さについて 考えたほうがいい。あと、性能のためにはたくさん書く勤勉さは美徳ではないことも。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image16:23 Rhino on Rails» Matzにっき
Rhino on Railsについての、Steve Yegge本人による「釈明」。 端で揶揄されるほどRhino on Railsは馬鹿げた技術的選択ではないということ。 ま、そうだろうとも。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image16:23 Programming for the masses» Matzにっき
プログラミング人口は増えてるっていうけど、 増えたのは半分素人のようなのばっかりじゃないか、 フォーラムで「C#で配列はどうやって宣言するの」なんて 質問する連中がいくらいても役に立たない、という話。 まあねぇ、この業界、半分素人のような開発者は多いからねぇ。 アルゴリズムがなんだかわからない人とか。 Googleの使い方がわからない人とか。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image16:23 ITmedia エンタープライズ:ゼンド、PHP開発企業のための新パートナー制度を発表» Matzにっき
ゼンド・ジャパンは頑張っている(ように見える)。 オープンソースにどっぷりの身からは、こういうのがどこまで有効なのか 全然わからないんだけど、スーツな人にとってはこういうのが安心感を提供する、 のかもしれない。ま、それでスーツな人が大満足して オープンソースがうまく行くのであれば、それくらいのことはなんでもない気がする。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image16:23 CodeZine:Java開発者のためのRubyガイド(Word, 言語比較)» Matzにっき
私自身が「Java視点」というものをまったく持っていないので、 そういう意味では新鮮な記事であった。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image13:20 2ちゃんねる実況中継 あるベルギー人から見た日本» Matzにっき
確かに納得した。 334 :可愛い奥様:2007/06/26(火) 09:46:19 ID:raxdPvfD0 OLだった頃、会社で働いていた日本に超詳しいベルギー人が言ったことに納得してた。 日本文化は身内受けの凝り性文化だそう。 外国文化に負けまいとしているのではなく、 世に意図的にインパクトを与えようとしているのでもなく、 今ここにいる同じ価値観を共有する仲間からの喝采を浴びたいと考える。 その結果、同じものを志す者同士の「これすごいだろ、おもしろいだろ」合戦が始まり、 そこで生み出される物が自然と研ぎ澄まされていく。 でもその競争は、..
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image13:20 第一安息日» Matzにっき
もう7月だよ。時間がたつのが速すぎる気がする。 司会はビショップが引き受けてくださった。 私は日曜学校で教師、 「神権組織について」。 なんとなく蘊蓄っぽくなってしまった。 教会ではそういう知識偏重なやり方はやめようと思っているのに。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image09:03 新的一天又开始了» Ruby Object Oriented
今天早上想到的几个概念: 一.过滤器 [1,2,3].find [4,5,6].select [7,8,9].map 过滤器针对给定的集合,对集合的元素进行遍历,按照”约束条件”进行相应的处理. “约束条件”也就是过滤规则,该规则通俗的说法就是所谓的”筛选条件”. 例如:对于美国来说,恐怖分子是一个危险的元素,因此不能让恐怖分子混入美国的一些重要地区. 对于我们日常生活来说,针对人的集合,加一个”约束条件”来过滤,有时是非常必要的—-不是每个人都可以做任何事情(例如:你一般不会允许别人任意的冒犯你) 给定的集合,按照约束条件构造的集合是原来集合的子集,该集合的元素个数比原来的少,但是更加有序. 二.浏览器web应用UI(用户界面表示系统) javascript与UI相关问题 三.戏剧(略) 四.财务(相关业务知识) 略 需要做的事情还很多,前进…
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image07:51 IronRuby plans revealed on .NET Rocks» John Lam on Software
Richard and Carl interviewed me a few weeks ago on .NET Rocks! We had a fun discussion about a whole range of topics from my experience emigrating to the Republic of Microsoft to why Ruby the language is important. The...
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image03:20 Capturing Middle-Mouse Click in Safari» Joey Gibson's Blog

I have been a consistent user of the nightly builds of the WebKit project for some time now. For those of you who don't know, WebKit is essentially the work-in-progress that will be the next production version of Safari. I like the nightlies because they are extremely fast, and while they occasionally have problems, that's OK.

The point of that discussion was to say that I have stopped using Firefox on my Mac, because the nightly builds of WebKit are so much faster. But there's one problem. In Firefox I could click a tab with my middle-mouse button, and it would close. Safari doesn't have that feature, and that's the one feature from Firefox that I really miss.

So, I've been trying to solve this problem using SIMBL. What SIMBL does is let you write a standard Cocoa bundle and have it load into another program, like Safari. Once loaded, you can replace methods in the application with your own versions, in a way known as "method swizzling." I have successfully written a Cocoa bundle, made the approrpriate changes to make it loadable by SIMBL, and have loaded it into Safari/WebKit. I have logging statements at various points in the bundle, and I can see these on the system console, thus I know it's loading.

Once the bundle was loading, I needed to pick the objects and their methods that I thought would be most likely to let me do what I needed, and then swizzle in my changes. Using F-Script Anywhere I was able to identify a single tab as an instance of TabButton. Using class-dump I was able to generate header files for Safari that would let me see the methods on TabButton and it's parents. My first thought was to override mouseUp:. This works, and I can now trap mouse events when you click on any tab. According to the Apple docs, once I get a mouse event, I should be able to call [theEvent buttonNumber] to figure out which button was pressed. Well, maybe. No matter if I clicked with the left- or middle-mouse button, [theEvent buttonNumber] always returned 0. Further digging in the docs turned up an event called NSOtherMouseUp that is sent when a button "other" than left- or right-mouse is clicked. Supposedly, I should be able to override otherMouseUp: to get those events. I have successfully swizzled this method, but it never gets called. I know that TabButton had a version of this method, because when I swizzle, I can tell if there was already a method there, and there was. I'm just not sure why it isn't being called.

So what did I get working? Well, after working a long time trying to get the middle-mouse detection working, I decided to punt for the moment. I added some code to the mouseUp method to check the event for modifiers and if the user held down Command while clicking, then I will close the tab. This is close to what I want, but nearly as sexy as just middle-mouse clicking. In case you're interested, my TabButton.m looks like this:

	 1 #import "TabButton.h"
	 2 #import "WebKit/WebKit.h"
	 3 
	 4 @implementation TabButton (MCCSwizzle)
	 5 - (void)_mcc_mouseUp:(NSEvent *) theEvent
	 6 {
	 7   NSLog(@"_mcc_mouseDown");
	 8   int buttonNumber = [theEvent buttonNumber];
	 9 
	10   NSLog(@"buttonNumber: %d", buttonNumber);
	11   NSLog(@"type: %d", [theEvent type]);
	12   NSLog(@"modifierFlags: %d", [theEvent modifierFlags]);
	13 
	14   if ([theEvent modifierFlags] & NSCommandKeyMask) {
	15     NSLog(@"Cmd-Click!");
	16     [self closeTab: theEvent];
	17   } else {
	18     [self _safari_mouseUp: theEvent];
	19   }
	20 }
	21 @end
	
and then the swizzling looks like this:
	 1 #import <WebKit/WebKit.h>
	 2 #import "AppController.h"
	 3 #import "MiddleClickClose.h"
	 4 
	 5 typedef struct objc_method *Method;
	 6 
	 7 struct objc_method {
	 8   SEL method_name;
	 9   char *method_types;
	10   IMP method_imp;
	11 };
	12 
	13 BOOL MCCRenameSelector(Class _class, SEL _oldSelector, SEL _newSelector)
	14 {
	15   NSLog(@"OLD: %s", _oldSelector);
	16   NSLog(@"NEW: %s", _newSelector);
	17 
	18   Method method = nil;
	19 
	20   // Look for the methods
	21   method = (Method)class_getInstanceMethod(_class, _oldSelector);
	22   if (method == nil)
	23     return NO;
	24 
	25   // Point the method to a new function
	26   method->method_name = _newSelector;
	27   return YES;
	28 }
	29 
	30 @implementation MiddleClickClose
	31 + (void) load
	32 {
	33   int rc;
	34 
	35   rc = MCCRenameSelector([TabButton class], @selector(mouseUp:),
	36                                    @selector (_safari_mouseUp:));
	37   NSLog(@"RC: %d", rc);
	38 
	39   rc = MCCRenameSelector([TabButton class], @selector(_mcc_mouseUp:),
	40                                                  @selector(mouseUp:));
	41   NSLog(@"RC: %d", rc);
	42 
	43   rc = MCCRenameSelector([TabButton class], @selector(rightMouseUp:),
	44                                    @selector (_safari_rightMouseUp:));
	45   NSLog(@"RC: %d", rc);
	46 
	47   rc = MCCRenameSelector([TabButton class], @selector(_mcc_rightMouseUp:),
	48                                                  @selector(rightMouseUp:));
	49   NSLog(@"RC: %d", rc);
	50 
	51   NSLog(@"MiddleClickClose loaded");
	52 }
	53 
	54 + (MiddleClickClose*) sharedInstance
	55 {
	56   static MiddleClickClose* plugin = nil;
	57 
	58   if (plugin == nil)
	59   {
	60     plugin = [[MiddleClickClose alloc] init];
	61   }
	62 
	63   return plugin;
	64 }
	65 @end
	
Line 35 renames Safari's original mouseUp: method to _safari_mouseUp: and then line 39 renames my _mcc_mouseUp: method to mouseUp:. The otherMouseUp: method is handled on lines 43 and 47, but as I said otherMouseUp never gets called.

What's especially frustrating about this is that I know Safari knows how to bag a middle-click, because I frequently will middle-click on a link in a web page, and Safari will open that link in a new tab. So, why can't I get a middle-click in the TabButton instance? Does anyone have any ideas on this? I'd appreciate any pointers. I feel like I'm thiiiiiiiiiiis close to getting this working, but there's some small piece of info that is eluding me.


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl

Thu 12 July, 2007

Click here to bookmark this link.Channel Image20:17 復活の予感……!» 青木日記
あー、適当なこと書いてたら調子よくなってきた。 明日には復活できるだろうか。 つーかさっさと寝ろという話だ。 はいそれじゃテンション高いまま寝ます。 (20:38)
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image20:17 うわー日記書くのめっちゃ久しぶりだ» 青木日記
風邪で完全にダウン。やすめないのがきつい。 …… 38 度台かあ。体感のわりに低いな。 まあ、おれは 39 度こえると吐くからそんなもんかもしれない。 (19:37)
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image20:17 Windows でパイプをつなぐ (2)» 青木日記
あれ? なんで IO.popen(ls | grep build | false) ってちゃんと動くんだろ。 ……あああそうかこれ Mac OS X じゃん……。 だめだ本当に風邪はよくない。 もう寝ゆ。 (20:45)
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image20:17 Windows でパイプをつなぐ» 青木日記
Windows でパイプをつなぎたくなったとする。 それでいて system とかは使わず自力でつなぎたいとする。 なんでパイプをつなぎたいのかってのは人それぞれだが、 「パイプをつながないと死んじゃう病」になったとか、 cmd.exe にプチきれてシェルを書き始めたとか、理由はいろいろ考えられる。 そんなわけで Win32API を調べたりしたんだけど、 つなげるだけなら Ruby では IO.popen を使えばいいので IO.popen([こまんど, 引数]) と書いとけばいいわけである。 あ、第一引数に配列が渡せるのは 1.9 限定だな確か。 ただ、IO.popen で一段..
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image16:57 3 ways to invoke a method in Ruby» Suave's Blog
string = “Hello” string.method(:length).call string.send(:length) string.length ...
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image13:38 Links for 2007-07-11 [del.icio.us]» John Lam on Software

add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image13:17 设计非艺术» Ruby Object Oriented
设计非艺术 艺术是关于个人表达的。它关于生命,关于情感——艺术家的想法和主意。它不太关注第三者干什么,活动也不是必须的,仅是他们的鉴赏。艺术实践不需要这些。鉴赏是艺术家的必需品,同时他们也是孤独的。   设计,从另一方面来说,是关于使用的。设计师需要别人来使用(而不仅仅是鉴赏)他们的作品。设计不存在不让人们使用它的目的。设计辅助解决人类问题。我们能授予一个设计的最高荣誉不是它多漂亮,多艺术,而是它用途多广。   不像艺术,设计总是存在于情景中的。情景对一个设计至关重要:它要解决什么问题?为谁设计?在什么时期?这就是为何设计与技术如此紧密的缘故。因为技术变化太快,所以设计必须步随其后。十年前的设计在今天可能不值一提。充满精彩设计的历史没有必要继续存在。   伟大的艺术,从另一角度说,永远风行。就算今天我们可以复制一百万个大卫像,我们依然欣赏米开朗基罗的原作,因为它是一个人的辛劳和表达。艺术永远不会凋谢。伟大的设计则依赖于它产生的年代和要解决的问题。但艺术不这样,艺术是永恒的。 伟大的设计是无形的 伟大的设计一个有趣的属性是,它来源于认可。用得爽的时候我们忘了创造它时的种种艰辛。有时,就像普通的汤匙,显而易见,这东西太简单了,但我们会忽视了在历史的某一时期它并不这样。还有,就像汽车,这东西尽管很复杂但依然容易使用,但是我们却对于它背后数以万计的工时视而不见。这是一种羞耻……每一个伟大的设计都有丰富的历史。每一设计背后都是一个或一群设计师,他们想通过解决某些问题来让世界更美好。   烂的设计显然是因为它伤害了使用。它拙劣,困难和复杂。最为讽刺的是,这个世界上烂的设计比好的设计更容易碰着。它像恶徒一样在我们面前逞威风。因为有用,伟大的设计通常都是无形的。 http://realazy.org/blog/2007/03/07/five-principles-to-design-by/
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image11:17 Two Years of Rails Podcasting» Riding Rails - home

Two years ago today, Scott Barron published the first episode of the Ruby on Rails Podcast. —Geoffrey Grosenbach

Wow, has it been two years already? Geoffrey’s been a major positive force in the Rails community even longer then that, starting with the humble Pluralizer, which helped us all figure out what table names our ActiveRecord models were supposed to be using. For his next podcast, he’s turning the tables and letting himself be interviewed by Dan Benjamin. Be sure to send in some challenging questions (see Geoffrey’s blog post for details).

Congrats on the milestone, Geoffrey, Scott, and everyone else that’s been involved with the Rails Podcast!


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image11:17 Rising» James Britt - Code, Content, Caffiene

I’ve mentioned it to some people in the Phoenix tech crowd, but thought I should mention it here, too.

I’m quite pleased to say that I’ve joined Rising Tide Software.

If you’re curious, you can get an idea of the culture behind the company from David’s recent post.

We’re a wicked cool team of skilled, smart people, so keep an eye on future announcements.


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image11:17 Desert CodeCamp 2007» James Britt - Code, Content, Caffiene

Planning is underway for Desert CodeCamp 2007. It will be held Saturday, September 15th, 2007, at the University of Advancing Technology in Tempe. Presentation proposals are being accepted now (see previous link).

I’d like to give talk, but I’m not sure what I want to talk about.

Here’s what’s running through my mind:

  • Trac: A Crash Course
  • Beyond Ruby: A Potentially Hasty Intro to Haskell, Erlang, and Io.
  • Nothing. Be a spectator and razz Josh and David

Comments and suggestions invited.


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image07:08 Food first, then morality.» Projectionist

Wed 11 July, 2007

Click here to bookmark this link.Channel Image21:22 亚洲杯» 404 梦想没找到
哦,亚洲杯。 有人说日本平了是冷门,中国大胜也是冷门。 刚才伊朗是反败为胜的,有人说是为了攒rp,有人说是太热 现在韩国正在和沙特踢,沙特人都不白,换上黄衣服挺像巴西队的。 不知道欧洲人有没有熬夜看我们的亚洲杯?(转joke,妈的就知道你这么说) 不过李玮峰和政治依然的脑子被×踢了似的申请黄牌。 昨天丢了一把伞,今天换了一把伞,晚上买的鸡蛋不小心摔在了地上,只好炒着吃了,5个,太撑了。 今天在新系统上编译了一下程序,新的编译器提示了很多warning,发现几个比较搞笑的: 1. switch的default拼写错误,有的被写为defaut,有的被写为dafault,结果被编译器当成了label。 2. 一个函数,类似如下: while(1){ 一些判断,然后return } free(a); free(b); 所有的返回都是在while里处理的,后面的怎么释放? 3. 很多非void的函数都没有return。 不过还好,都是小问题,要是真的哪个api不被支持了可就惨了。谢谢你,hp。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image13:39 The past is not dead. It...» Projectionist
The past is not dead. It’s not even past.

William Faulkner


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image07:05 Phoenix Dev House» James Britt - Code, Content, Caffiene

Super happy Phoenix Dev House has arrived.

Sweet logo. ;)

Saturday August 4th, 2pm – 1am

21469 East Lords Way, Queen Creek AZ

Only an hour drive from my home.

Phoenix Dev House hopes to become the greater metro Phoenix premier hackathon event mimicking the now famous Bay Area SuperHappyDevHouse.

We’re about rapid development, ad-hoc collaboration, and cross pollination. Whether you’re a l33t hax0r, hardcore coder, or passionate designer, if you enjoy software and technology development, Phoenix Dev House is for you. Code in Ruby? PHP? Java? .NET? Perl? It doesn’t matter.

Phoenix Dev House is not a marketing event. It’s a non-exclusive event intended for passionate and creative technical people that want to have some fun, learn new things, and meet new people. In this way, we’re trying to resurrect the spirit of the Homebrew Computer Club. We also draw inspiration from the demoscene as one of the only intentional getting-things-done computer events in the world.

add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image01:50 RailsForge?» Riding Rails - home

Jason Perry has started a survey at http://railsforge.com/, asking for community feedback on whether a Rails-specific forge-site would be useful or not. What are your thoughts? Head on over and let him know!


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image01:50 Haml 1.7» Riding Rails - home

The Haml team recently announced the release of Haml 1.7, which is an alternative markup system that you can use in Rails, instead of the default ERb-based markup. Version 1.7 is significantly faster than previous releases (and is almost as fast as Rails’ default system, now!). There are a few other new features, too: read all about it in the release notes. Great work!


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl

Tue 10 July, 2007

Click here to bookmark this link.Channel Image23:15 Gizmodo Reviews the iPhone» Lovable Lyle
From Brian Lam’s No BS iPhone Review, on Apple’s decision to partner with AT&T: Signing up for the iPhone is like being tossed into a menage a trois with Angelina and Rosie O’Donnell. You want the beauty, you have to sleep with the beast. His verdict on the iPhone, based on ten days of ownership, is that [...]
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image16:38 佣金和折扣» Ruby Object Oriented
在商品价格中,有时会包含佣金和折扣。 A.佣金   佣金(Commission)是指卖方或买方支付给中间商代理买卖或介绍交易的服务酬金。 我国的外贸专业公司,在代理国内企业进出口业务时,通常由双方签订协议规定代理佣金比率,而对外报价时,佣金率不明示在价格中,这种佣金称之为"暗佣"。如果在价格条款中,明确表示佣金多少,称为"明佣"。在我国对外贸易中,主要出现在我国出口企业向国外中间商的报价中。   包含佣金的合同价格,称为含佣价,通常以含佣价乘以佣金率,得出佣金额。其计算公式为:   佣金=含佣价X佣金率   佣金=含佣价-净价   整理后得含佣价和净价的关系:   含拥价=净价/1-拥金率   佣金通常以英文缩写字母C表示。比如每公吨1000美元 CFR西雅图包含佣金2%,可写成:每公吨1000美元CFRC2西雅图。其中的"C2"即表示佣金率为2% 。 卖方应在收妥货款后,再向中间商支付佣金。   B.折扣   折扣(Discount)是卖方在原价格的基础上给予买方的一定比例的价格减让。 使用折扣方式减让价格,而不直接降低报价,使卖方既保持了商品的价位,又明确表明了给予买方的某种优惠,是一种促销手段、如数量折扣、清仓折扣、新产品的促销折扣等。比如每件20美元CIF纽约减5%折扣。卖方在开具发票时,应标明折扣,并在总价中将折扣减去。 http://hi.baidu.com/wietrade/blog/item/eb0c3d227fbd3ba64723e870.html
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image11:25 写字楼出租率和平均单价» Ruby Object Oriented
写字楼出租率=已出租的写字楼/(已出租的写字楼+未出租的写字楼) 平均单价=出租的租金/已出租的写字楼数 http://zhidao.baidu.com/question/12012201.html
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image10:42 什么是营业收入» Ruby Object Oriented
基本公式(许多公式的前提) 利润=收入-支出 收入有很多:营业收入,营业外收入,其他业务收入,等等 支出有很多:营业费用,管理费用,财务费用,其他业务支出等等   营业收入是利润的主要成分 在会计中 一般把利润的形成写成以下形式 利润=主营业务收入-主营业务支出-营业费用+其他业务收入-其他业务支出+营业外收入-营业外支出-管理费用-财务费用 净利润的话还要减去税收   以上公式没有写制造费用,因为制造费用属于期间费用,在期末要分配到成本和费用中去 http://zhidao.baidu.com/question/15497190.html
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image10:17 入账和出帐» Ruby Object Oriented
入账:enter an item in an account 网友的一些看法: “入”是进入,录入的意思。“入帐”就是对会计事项在账上进行记载、记录,纳入帐上监督管理的意思。 就象你们家花钱要记帐的,今天买了一斤肉记在纸上,会计上叫入帐。 相关资料:收据可以作为入账凭证吗 那么什么叫出帐?
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image09:54 累计» Ruby Object Oriented
data=[   [1,10],   [2,15],   [3,17] ]   r=[] sum=0 data.each do |row|   sum+=row[1]   r<<[row[0],sum] end    p r 应用背景:http://zhidao.baidu.com/question/13025280.html?si=9
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image07:09 Implicit is better than exp...» Projectionist
Implicit is better than explicit, if you and computer feel same way.

Matz


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image06:35 Subversion Browser on Rails» Riding Rails - home

ActiveReload has just released Warehouse, a simple subversion browser written using Rails. It sports a beautiful UI and can handle the mundane task of user and permission management for you. It’s also being distributed in a unique fashion for most Rails applications. Instead of being hosted, it is sold and downloaded to be installed on your own server.

If you’re interested, check us out at the Warehouse site.


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl

Mon 09 July, 2007

Click here to bookmark this link.Channel Image18:14 select和select_tag的不一致» Ruby Object Oriented
u.id是数字,params[:sale_id]是字符串,select能,但是select_tag需要手动转换保持一致,这样才能够默认选中. <% @sales = User.find(:al).map{|u| [u.name, u.id]} -%>         销售:<%= select_tag :sale_id, options_for_select(@sales, params[:sale_id].to_i) %> 使用select_tag默认选中的办法是 params[:sale_id].to_i,或者u.id.to_s,保持类型一致即可(都是字符串或者都是数字) select这个helper没有这个问题(即使u.id是数字,params[:sale_id]是字符串也能够正确选中). 造成这样的不一致的原因,可能是因为select_tag需要处理”多选”的缘故.
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image16:14 Links for 2007-07-08 [del.icio.us]» John Lam on Software
  • Madonna's got a blog?!
    I should have expected this, but I'm still blown away that she's got a blog. I found it when I was looking for some more info about Hey You.

add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image08:00 Research on why and how adopts Rails» Riding Rails - home

Michel Barbosa has completed his bachelor thesis Delivery of the Key Adoption Factors and Key Characteristics of Companies Using Ruby on Rails. It presents research he has done and conclusions the why and who of switchers.

I’m happy to see that “Joy in Development” was a key adoption factor for 92% of the people interviewed.


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image08:00 Without a Cause» James Britt - Code, Content, Caffiene

I like a good amount of what Lennon did, but this quote from This idiocy is all John Lennon’s fault is dead on:

Lennon invented the pop star as conscientious rebel, a fog that has enveloped others in the years since. In fact, pop music, rock music, call it what you will, is essentially conservative. People conform to certain types, and one of those types is “the rebel”, who considers himself to be some sort of anti-establishment character because he wears a leather jacket, drops his Hs, and swears in interviews.

add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image08:00 Hot Air» James Britt - Code, Content, Caffiene

Reading about the carbon footprint of those participating in the Live Earth concerts makes me think that it’s a bit like PETA holding a promotional barbecue.


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image06:19 Projectionist Archives» Projectionist

Tip Projectionist Archives

For Projectionist’s second birthday it got an Archives section at http://project.ioni.st/archives.


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl

Sun 08 July, 2007

Click here to bookmark this link.Channel Image23:22 生成方法的Wrapper» 梦想风暴

在《管窥Ruby——方法定义》中,我们曾经讨论过在Java中实现方法定义时,因为Java语言的限制,我们不得不为方法加上了一个Wrapper,让它可以满足接口定义的需要。事实上,XRuby一直就是这么做的,通常Wrapper放在com.xruby.runtime.builtin这个包中,而诸如Array、Hash、String之类的具体实现放在com.xruby.runtime.value这个包中。初涉XRuby的人,常常会被这两个包搞得晕头转向。到底方法的具体实现应该放在哪里,大多是根据感觉来定义的。

在那篇blog中,我还讨论了JRuby的实现,不过,那里面的讨论并不是特别的完善。事实上,除了利用reflection,其中还有一种方式,通过代码生成动态产生这个Wrapper。我将这个实现借鉴到了XRuby中。通过采用这种生成Wrapper的方式,我们就可以在实际编写的代码中,忽略掉Wrapper部分的实现,而将原来令人混淆的builtin和value包统一起来。

下面是Array的clear方法原来的实现:
class Array_clear extends RubyNoArgMethod {
    protected RubyValue run(RubyValue receiver, RubyBlock block) {
        RubyArray value = (RubyArray) receiver;
        return value.clear();
    }
}

在这里,其实只要将receiver转型,然后调用它的方法就好。实际上,生成的代码只是做这样简单的工作就好,当然,根据具体的方法还会略有些差别。关于如何使用ASM进行代码生成,我在几篇blog中都进行了介绍,这里就不介绍生成代码的实现了。下面是在代码中如何使用这个方法。
MethodFactory factory = MethodFactory.createMethodFactory(RubyArray.class);
c.defineMethod("clear", factory.getMethod("clear", 0));

在这个方法的实现过程中,还有一些比较有趣的点。首先,并不是每次都需要调用getMethod都要动态生成一个类,因为一个类一旦已经加载,就没有必要再次进行加载,即便强行加载,class loader也是会抱怨的。所以,在创建类之前,我们需要尝试加载一下这个,如果加载成功,便省去了再次生成的麻烦。

再有,每次都去创建这个Wapper实际上也没有什么必要,一次生成之后,保存起来就可以了。如果我们把它放在class path中,那么我们尝试加载就会成功,所以,刚才提到的尝试加载还有这样一层含义。

作为builtin实现,我们还是希望这些生成类是可以放在我们最终发布的jar文件中,所以,我们通常的做法,是在打包之前,先用XRuby做一次最简单的执行,让所有的Wrapper生成出来,这样,打包的时候就可以将它们都加入其中。

具体的做法可以参考XRuby中MethodFactory和build.xml。


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image21:41 Warum es sich lohnt...» chris blogs

seine Abinoten ins Netz zu stellen: unter Umständen gewinnt man bei Weberberg.de einen vom vielen Preisen. :-)

Wie lese ich eine Bilanz? Ein Crash-Kurs für Nicht-Fachleute Wie man Bill Clinton nach Deutschland holt. Networking für Fortgeschrittene

Und dazu gabs noch einen Tweety-Gutschein über eine Pizza samt Getränk, einen Frisörgutschein von Figaro Claus und einen Essensgutschein im Poco Loco.

Abitur machen kann sich also durchaus lohnen. *g*

NP: Love—You Set The Scene


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image21:19 杨一:烤白薯» 404 梦想没找到
还是挺有深度的,这里就不提供MP3了,想要的话跟我说一声。 现在还在美术馆附近,可惜我从来没见过,毕竟在地安门附近生活了3年。 他又上街烤白薯, 东张西望躲着工商。 北风吹呀吹不走这里的病, 嗳呦,看见他总是孤孤单单。 他这人啊,就象烤白薯, 薰黑的脸,软绵绵的心。 骑着单车呀串街走巷, 嗳呦,就这样一天到头只求能卖个好价钱。 狗日的一天也没卖几个钱,壮着胆子来到了王府井。 求求你呀,警察大哥, 睁一只眼闭一只眼,放过我吧。 嗳呦,把我兜里掏了个精光光。 我几天的忙活全都泡了汤。 这个城市泛滥着冬天, 我在喧闹的人群中带着冷冰冰的脸。 这么多的高楼也找不到我的家园, 嗳呦,什么时候才能多挣点钱, 回家过个象样的年。 夜已深沉,风也停了, 寂静的街看不见路人。 卖烤白薯的兄弟回到一冰冷的被窝里, 安睡吧,不必叹息, 总有一天,你会到天堂, 就没有警察和工商。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image19:11 什么是BCL» 404 梦想没找到
BCL就是Broadcasting Listening / Listener 的缩写。 广义上的意思,就是一种把收听广播为作为乐趣的爱好,狭义上来说,指的是以收听国外的短波广播为目的的爱好者。 对于狭义上的意义,欧美也称为SWL (ShortWave Listening / Listener)。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image19:02 一个人踢球了» 404 梦想没找到
很是无聊,老婆去参加同学聚会了,就我一个人了,在楼下踢了一会。 一个人,就是踮了一会,结果很惨,最多一次踮了32个。 好久没踢了,虽说现在美洲杯,亚洲杯都在进行中,但是没什么兴趣去看。 昨天看了一会伊拉克的比赛,那个倒钩很nb。 今天好像有澳大利亚比赛,不过好像比较晚。 有钱了买一个俱乐部,不为夺冠,就为了陪我踢球。 这是一个梦想,也许到老也只是个幻想。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image16:07 django的一个典型应用» 动态感觉 静观其变
django的应用有很多了,特别是它网站上列举的一些新闻网站,最近有一个网站推出应该会对django和python社区来说是一个好消息,它就是pownce,有一篇blog介绍了它的来龙去脉,看看也非常有意思。尤其还是一位女将领头,呵呵。

http://immike.net/blog/2007/07/06/interview-with-leah-culver-the-making-of-pownce/

...
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image13:58 Mistakes are beautiful baby.» Projectionist
Mistakes are beautiful baby.

Ann’s piano player in Evening


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image13:57 Malcolm at his desk» Projectionist
Click here to bookmark this link.Channel Image10:50 收音机» 404 梦想没找到
不得不承认,我是很喜欢听收音机的。 很小的时候家里三间房,东屋,堂屋,西屋,应该是典型的华北住房了。 家住东屋,西武没炕,放了几个大刚,里面装了好多小麦,还有很多其它农产品和工具之类的,算是仓库 第一次记忆中的收音机就是这个时候,听得内容是蒋大为的“漂亮的姑娘,十呀十八九”,现在觉得也是很经典的一首歌,至少反映了那个时代的人民的想法。那个收音机应该是个黑色的,砖头大小。 对这个收音机的印象,也就这么一个片段而已,至于那个收音机的下落,就不知道了。 第二个应该是从天津一个有钱人家亲戚那里得到的,京华的牌子,但是不是火腿。 那个收音机也是砖头大小,同时是能放磁带的,就是要4节电池,好像我的零花钱都用来买电池了。 那个时候是初中,94年左右,是大陆流行音乐最火的一年,那个时候把收音机能到学校,晚上也都是在听 主要的节目是天津音乐台,fm的。除了音乐,当然还有其它节目,名字都忘了,很多都是念一些精美的文章之类的所谓的文学艺术类节目。当然还有相声。 高中的时候买了个非常小的袖珍式的收音机,12块钱,那时候,中午还能在宿舍休息会,也是那时候,听到了后来风靡全国的《心太软》,那时候常听FM567交通台。高中后半主要听随身听了,收音机听得少了。 大学的时候发了个烽火收音机,好像只有FM,毕竟是学校的吗,英语考试要用的。47块钱,到挺结实,怎么摔都不碎。中午休息的时候听到了那个过关夺奖的节目,跟后来的开心辞典类似。现在的频率都不记得了,只记得音乐台的两个主持人,高杰和方言。西安的朋友应该都知道吧。除了休息,睡觉的时候也是要听着收音机睡去的,上自习的时候也是离不开收音机的。 后来毕业了,2004年吧,买了个得劲的1103,这个被自己认为是这么多大以来买的最划算的东西了。功能还是效果上来说都是很好的,而且,质量非常不错,做工好,背面一点没有被磨过的痕迹,就是前面板有点开胶,翘起来,不过毕竟用了4年了,而且自带的充电电池到现在还能用,非常的不错,也算是用过的最好的国货了吧。真希望国内像得劲这样的厂子多些在。 北京的节目好像比较多,不过主要的还是974音乐网和1039交通台,还有文艺台,除了修车的节目,其它都是自己可以听的。出租车中,也主要是听这三个台。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl

Sat 07 July, 2007

Click here to bookmark this link.Channel Image17:16 小资-愤青-朋克-歌特,看看自己属于哪一派!(转载)» 404 梦想没找到
http://post.baidu.com/f?kz=215016371 小资喝咖啡是因为已经上瘾. 愤青喝咖啡是因为有人给了他一包咖啡. 朋克喝咖啡是为了在自己家里倒时差. 歌特喝咖啡是因为个人的品位修养是这样 小资骑自行车时想的是,有朝一日我要开宝马. 愤青骑自行车时想的是,全世界骑自行车的无产者万岁. 朋克骑自行车时想的是,这自行车是谁的呀? 歌特不会这么多世俗想法…… 小资戴着耳机,很可能什么都没听,而是在装酷. 愤青戴着耳机听的什么,你离他五米都能听到 — 摇滚版的. 朋克自己就是个大音箱. 歌特听音乐时不希望被人打扰,所以别的歌特是怎样的,我不知道
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image04:33 Like most Bobbindoctrin pro...» Projectionist
Like most Bobbindoctrin productions, this show is built for grown-ups. But unlike most Bobbindoctrin productions, the content in THE GIFT OF NIGHT will not traumatize children.

Disclaimer about The Gift of Night puppet show


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Sources