設定 Udev rules
$ sudo vim /etc/udev/rules.d/51-android.rules
SUBSYSTEM=="usb", ATTR{idVendor}=="1004", MODE="0666", GROUP="plugdev"
$ sudo chmod a+r /etc/udev/rules.d/51-android.rules
$ sudo udevadm control --reload-rules # In theory not necessary.
然後把手機開 Debug Mode 用 USB 連接線接上
prism
2011-03-30
2011-03-22
Django 1.3 cheat sheet
整理的粉讚
SOURCE
http://www.revsys.com/django/cheatsheet/
PDF 連結 http://media.revsys.com/images/django-1.3-cheatsheet.pdf
對 Django 快速開發者來說,http://djangopackages.com/ 有點像是套件的 App 及集散地, 分析 github 及 bitbucket 的結果
PS: 在你可以看懂開發者的 code base 之前 , 千萬不要以為自己就了解了什麼是,快速開發,絕對不是把,需要的功能,寫成幾萬行的函式庫,然後,就以為,這輩子,就只靠,這一套來快速開發
SOURCE
http://www.revsys.com/django/cheatsheet/
PDF 連結 http://media.revsys.com/images/django-1.3-cheatsheet.pdf
對 Django 快速開發者來說,http://djangopackages.com/ 有點像是套件的 App 及集散地, 分析 github 及 bitbucket 的結果
PS: 在你可以看懂開發者的 code base 之前 , 千萬不要以為自己就了解了什麼是,快速開發,絕對不是把,需要的功能,寫成幾萬行的函式庫,然後,就以為,這輩子,就只靠,這一套來快速開發
2011-03-21
手機上網眼睛不酸
有時候,非不得已,用手機上網,遇到沒有 mobile 版的網頁,看到眼睛很酸
可以試試看 Google Mobile Proxy
http://www.google.com.tw/gwt/n
PS: 其實,我是在自首,自己的站都還沒有手機版
可以試試看 Google Mobile Proxy
http://www.google.com.tw/gwt/n
PS: 其實,我是在自首,自己的站都還沒有手機版
2011-03-18
可憐可憐我壓
template 的 code 有 20256 行
======================================================
terry@terry:~/Dropbox/Fly/fb32/webdoc$ wc *.htm
45 152 1280 add2mysdi.htm
25 89 840 admeditmenusecond.htm
210 462 5372 admincontrol.htm
19 64 637 admin.htm
75 168 1595 adminitmodule.htm
1 1 14 adminmain.htm
469 1258 16209 adminmenu.htm
36 98 812 advdbdownrec.htm
66 220 2013 advdbdownrecresult.htm
9 17 186 ajaxlog.htm
0 0 0 _ajxaction.htm
347 1068 11331 _alloutputoptions.htm
188 618 7273 allsitelist.htm
105 300 3873 authautocomplete.htm
60 164 1421 authcontentbrowse.htm
17 68 483 _authlimitgroup.htm
48 130 1283 authoritybrw.htm
63 176 1647 authorityfolderhead.htm
8 22 163 authorityfoldertail.htm
93 271 2533 authoritynewrec.htm
42 98 857 authorityresult.htm
120 468 4475 _mysdibrwlist.htm
142 493 4776 _mysdihist.htm
.
..
...
...
略,共 318 個 template file , 不包含已經為各單位客製化的部份
...
32 108 1145 usercommand_score.htm
13 31 245 usercommand_share.htm
14 51 439 userinfo.htm
26 50 1573 webdescription.htm
6 22 142 webmged.htm
11 35 210 webmgedredirect.htm
10 34 265 webmge.htm
5 7 72 windowclose.htm
20256 62906 638262 總計
======================================================
PS: 這還能叫是 template 嗎?
======================================================
terry@terry:~/Dropbox/Fly/fb32/webdoc$ wc *.htm
45 152 1280 add2mysdi.htm
25 89 840 admeditmenusecond.htm
210 462 5372 admincontrol.htm
19 64 637 admin.htm
75 168 1595 adminitmodule.htm
1 1 14 adminmain.htm
469 1258 16209 adminmenu.htm
36 98 812 advdbdownrec.htm
66 220 2013 advdbdownrecresult.htm
9 17 186 ajaxlog.htm
0 0 0 _ajxaction.htm
347 1068 11331 _alloutputoptions.htm
188 618 7273 allsitelist.htm
105 300 3873 authautocomplete.htm
60 164 1421 authcontentbrowse.htm
17 68 483 _authlimitgroup.htm
48 130 1283 authoritybrw.htm
63 176 1647 authorityfolderhead.htm
8 22 163 authorityfoldertail.htm
93 271 2533 authoritynewrec.htm
42 98 857 authorityresult.htm
120 468 4475 _mysdibrwlist.htm
142 493 4776 _mysdihist.htm
.
..
...
...
略,共 318 個 template file , 不包含已經為各單位客製化的部份
...
32 108 1145 usercommand_score.htm
13 31 245 usercommand_share.htm
14 51 439 userinfo.htm
26 50 1573 webdescription.htm
6 22 142 webmged.htm
11 35 210 webmgedredirect.htm
10 34 265 webmge.htm
5 7 72 windowclose.htm
20256 62906 638262 總計
======================================================
PS: 這還能叫是 template 嗎?
2011-03-16
Solr with django-haystack
Solr 和 django-haystack 的組合,真是強大,全文檢索真是太優了,交給專業的就是沒錯,多得是一大堆東西,還要自己蠻幹
這樣可以解決,用 RealTimeSearchIndex 的 ManyToManyField 不更新的問題,不過變成更新資料重複 update Solr ,的 over head ,以後,應該有更好的做好
Google Group 的討論 http://groups.google.com/group/django-haystack/browse_thread/thread/a274b5aeb121b1d4/5f4c4f7632aa1dfc?pli=1
PS: 為什麼 Solr 而不是 Xapian 或是直接用 Sphinx ,考量原因是 Apache 及 GPL license 還有就是成熟度,及 Solr 提供 API ,算是一個很方便 Lucene 接口,不單可以只做資料庫的全文檢索,可以應用的範圍相當大,這就給大家自由發揮了
這樣可以解決,用 RealTimeSearchIndex 的 ManyToManyField 不更新的問題,不過變成更新資料重複 update Solr ,的 over head ,以後,應該有更好的做好
Google Group 的討論 http://groups.google.com/group/django-haystack/browse_thread/thread/a274b5aeb121b1d4/5f4c4f7632aa1dfc?pli=1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# models.py | |
from django.db import models | |
from django.contrib.auth.models import User | |
import datetime | |
class Ejournal(models.Model): | |
user = models.ForeignKey(User) | |
title = models.CharField( max_length=200) | |
author = models.ManyToManyField(blank=True, null=True) | |
publisher = models.CharField(default='', blank=True, max_length=200) | |
publish_date = models.DateTimeField( default=datetime.datetime.now ) | |
abstract = models.TextField(default='', blank=True ) | |
categories = models.ManyToManyField('Category', blank=True, null=True) | |
def __unicode__(self): | |
return self.title | |
class Category(models.Model): | |
title = models.CharField(max_length=200) | |
title_zh = models.CharField(max_length=200) | |
parent = models.ForeignKey('self', blank=True, null=True) | |
def __unicode__(self): | |
return self.parent and "%s---%s" % (self.parent.title, self.title) or self.title | |
class Author(models.Model): | |
title = models.CharField(max_length=200) | |
def __unicode__(self): | |
return self.title | |
# search_indexes.py | |
import datetime | |
from haystack.indexes import * | |
from haystack import site | |
from ejournal.models import Ejournal, Category, Author | |
class EjournalIndex(RealTimeSearchIndex): | |
text = CharField(document=True, use_template=True) | |
publish_date = DateTimeField(model_attr='publish_date') | |
publisher = CharField(model_attr='publisher') | |
language = CharField(model_attr='language') | |
categories = MultiValueField(faceted=True) | |
author = MultiValueField(faceted=True) | |
def prepare_categories(self, obj): | |
return [item.title for item in obj.categories.all()] | |
def prepare_author(self, obj): | |
return [item.title for item in obj.author.all()] | |
def get_queryset(self): | |
"""Used when the entire index for model is updated.""" | |
return Ejournal.objects.filter(publish_date__lte=datetime.datetime.now()) | |
def _setup_save(self, model): | |
super(EjournalIndex, self)._setup_save(model) | |
signals.m2m_changed.connect( self.update_object, sender=Ejournal.author.through) | |
site.register(Ejournal, EjournalIndex) |
PS: 為什麼 Solr 而不是 Xapian 或是直接用 Sphinx ,考量原因是 Apache 及 GPL license 還有就是成熟度,及 Solr 提供 API ,算是一個很方便 Lucene 接口,不單可以只做資料庫的全文檢索,可以應用的範圍相當大,這就給大家自由發揮了
2011-03-15
2011-03-07
自勉之
最近進入一家非常傳統,歷史算是悠久的軟體公司,我們最強最強的是,有一個多年前用 BSDDB 在加值開發的全文檢索系統,還有一個自己刻的 Web Frame Work ,主要的功能,就像是 Django Admin 的功能,來簡化開發,用無數 template ,不斷的 include and include more template,這一種方式,和一般我們用的 template ( Django , Jinja , Mako )很不同,因為,總不知道,下一個 include file 又 include 了多少的 files ,在 template 裡也混用了一大堆的 code
系統越是了解,我越是疑惑,以前學的,不要亂擺程式邏輯,可以和 UI 設計師,完美合作, TDD,真的在業界適用嗎? 更另我震驚是
1. 沒有任何一個單元測試的程式,一行也沒有,所以當然 CI 也是沒有的 (雖然測試不是萬能,不過,一點也沒有,驚)
2. 沒有版本控制,由於,每個專案,都需一點客製化,不過,none version control 也是令我震驚 ( 難道這才是 Agile software development 的終極奧義)
3. Python version 2.2 and 2.4 對不同的產品版本 ( 內心 OS 真虧還有保留下來,我都 download 不到了,原來,這才是愛壓,真正的不離不棄 )
4. C 和 Python 裡,混用 tab 及 space 做縮排 ( 前輩,我知道,這就是考驗我 "火的意志" )
5. 我們用 RedHat , Fedora , CentOS , Solaris ( Debian user 內心 OS ,馬的,現在最通用的不是 ubuntu 和 debian 嗎? 不要跟我說,以前的人寫文件,寫的是 RedHat ,我以前的 server 還都是 FreeBSD 和 RedHat 壓,十年前,那時候,他們是最好的選擇壓 )
6. 由於,自己 rebranding 客製的 BSDDB 的 C extension 是在 unix 平台的,所以開發,都是用 ssh 連到內部伺服器,開 vim 開發,哈哈,可是第一次見到,這麼多人用 vim 來寫東西,不過,我想同仁應該也是迫於無奈 ;-)
是我一直都自以為是,什麼都要 do it right , do it simple ,也不竟,懷疑起來,台灣軟體發展現況真是這樣嗎? 我怕,不知道,我去說服同事,我們也可以這樣做,更簡單,可以快十倍,可以像葉問一樣,一打十,到底是對得,還是? 只是滿足自己,固執的個性,或是,好好把時間,花在自己想玩的東西上面,最需要自勉的是,在傳統的軟體,如果不是走消費端的服務,開發,只是,小小的一小塊,可能只佔整個公司不到 1/10 ,所以不要把自己過度的放大,還有第一線的客服,業務,企劃,系統,專案經理,產品經理,還有一大群協同運作的長官,及成員
另一點,最大的覺醒是,90% 的學校單位是我們客戶,還有無數多政府單位,只要和知識有關的,幾乎都是我們的客戶
PS: 最令人欣慰的是,同事人都超好,不厭其煩的向我解釋,這一個複雜的系統,要如何使用, code 要由哪裡 copy and rewrite ,光是,資深主管,資深同事,帶我的時間,還有內部溝通的訓練,加起來,短短來 2 個月,就應該超過一,兩個星期,這可是台灣老闆,最不願花的成本,連生日派對都是上班時間喔,是我待過教育訓練,最好的公司,前些時候,面試的一些公司,心裡也有許多心得,改天分享
2011-03-04
訂閱:
文章 (Atom)