2014-12-26

2014-12-11

使用 jquery post data 進 django 系統

django 有 csrf 防止 cross site 攻擊,所以當你要使用 ajax post 到 django 時就會被擋。
解決方法有二:
第一是用 get, 例如:

2014-12-08

python @classmethod and @ staticmethod 的不同(筆記)

大家都知道我們可以把類別(class)裡的方法(method)設置為 static(靜態),這樣我們就可以直接使用該 method, 而不需要去產生(new)一個class出來

那麼,python是否也有同樣功能呢?

2014-11-28

crispy-forms 一個個field客製化表單的語法


在 crispy-forms 中,預設的uni-form, bootstrap, bootstrap3 是不是無法符合你要顯示的表單樣式呢?
你是不是想一個個欄位塞到你的 form 裡呢?

存取 crispy field 的語法就是
{% crispy_field  field  attr1 value1 attr2 value2 ... %}


例如在你的 template.html 裡

<form>
......

            {% crispy_field form.email "placeholder" "someone@example.com" "attr1" "value1" "attr2" "value2"%}
......
......
</form>

執行結果他會顯示為
<input attr1="value1" attr2="value2" class="emailinput form-control" id="id_info-email" maxlength="75" name="info-email" placeholder="someone@example.com" type="email">




2014-11-26

你的 python 該用PIL還是用Pillow 來作影像處理?

該用PIL還是用Pillow?
如果你去 Pipy 看,你會發現PIL從2009年後就不再update囉
有些bug也沒有處理(例如這篇),必需用Pillow解決
所以
若你使用 python2.7 以下,且用了什麼 package 或功能非得要依賴(depends on)PIL,否則建議你們使用 Pillow

2014-11-24

如何同時用多個 git bare repository來管理你的專案並同步

無論是何原因,假設你想用多個repository來管理你的專案,
如何同時用多個 git bare repository來管理你的專案並同步呢?
一句話,
如果你需要多個 git repository (相同的git專案), 那麼你需要用 --mirror 命令列去複製主 repository

例如:

狀況一:master repository --clone--> mirror repository,再由 mirror --create-->project
                project commit --sync back--> mirror --sync back--> master
建立主要 repository
$ mkdir main_repo
$ cd main_repo/
main_repo$ git init --bare

Initialized empty Git repository in /Users/user/temp/main_repo/

2014-10-07

如何解決升級 django 1.6/1.7 後 test runner 造成的問題?

如果你升級到 django 1.6.1 以上, 你可能會遇到以下錯誤訊息
這是因為 在 v1.6 以上時 test runner 的方式已經改了, 詳看這裡


$ python manage.py check
System check identified some issues:

WARNINGS:
?: (1_6.W001) Some project unittests may not execute as expected.
HINT: Django 1.6 introduced a new default test runner. It looks like this project was generated using Django 1.5 or earlier. You should ensure your tests are all running & behaving as expected. See https://docs.djangoproject.com/en/dev/releases/1.6/#new-test-runner for more information.

System check identified 1 issue (0 silenced).



那麼這問題要怎麼解決呢?

2014-09-16

git "index-pack failed" and "pack has unresolved deltas" solutions


無論是在安裝 yocto 還是在使用 git
你是不是遇過底下這兩行錯誤呢?
fatal: pack has unresolved deltas
fatal: index-pack failed

網路有很多鄉民, 提供很多怪招, 但對我來說都沒用
於是我只能自己解決, 依照邏輯來分析, 最後找到原因...

2014-08-29

rsync 指令

rsync 為單向備份的工具, 其指令從網路搜集較常用的如下:

rsync語法:

rsync -選項 /來源目錄 /目的路徑/


rsync [-avrlptgoD] [-e ssh] [user@host:/dir] [/local/path]
選項與參數:
-v : 輸出訊息以供除錯
-q : 安靜模式,僅顯示錯誤訊息;
-r : 遞迴複製,處理時包含子目錄

2014-08-12

python-social-auth 使用上的問題

[facebook]
* 若你在使用 fbconnect 遇到底如底下的錯誤訊息, 這不代表你不能在 facebook app 設定內用 localhost, 而是你某個設定設錯了. 包含開發人員都被使用者唬弄了, 竟在文件內寫不能用 localhost.

HTTPError at /complete/facebook/
400 Client Error: Bad Request
Request Method:    GET

2014-08-09

迷失霧的第一猜想

2014/08/09
什麼是猜想?
所謂猜想是指當你無法證明或反證某事的真偽時的一種敘述,通常是猜測某數學式或物理/化學現象。猜想在被證明或反證前它只是一種猜想,但當猜想被證明後,它便會成為定理。


你是否想過人為什麼會活著? 人又是怎麼死去? 造成人現在的狀態是生是死的開關是什麼?
是靈魂的存在與否?

迷失霧的第一猜想: 在人與動物的腦袋裡,有一個或一組控制開關,當人腦並未被嚴重破壞時,它可以控制人的生死狀態.

pip install failed w/ message "error: invalid command 'egg_info'"

當使用 pip 安裝 package 時若遇到以下錯誤訊息

C:\>pip install django-social-auth3
Downloading/unpacking django-social-auth3
  Running setup.py (path:c:\docume~1\admini~1\locals~1\temp\pip_build_Administrator\django-social-auth3\setup.
py) egg_info for package django-social-auth3
...
...
...
error: invalid command 'egg_info'

----------------------------------------
Cleaning up...
Command python setup.py egg_info failed with error code 1 in c:\docume~1\admini~1\locals~1\temp\pip_build_Admi
nistrator\django-social-auth3
Storing debug log for failure in C:\Documents and Settings\Administrator\pip\pip.log


2014-08-06

pyenv, tkinter, ubuntu2.2, python3 的混亂問題解法

* 若你沒法安裝 python-dev 然後錯誤訊息類似以下
python-dev : Depends: python (= 2.7.3-0ubuntu2) but 2.7.3-0ubuntu2.2 is to be installed
它的意思是說 python-dev 是依賴 2.7.3-0ubuntu2而作的, 但是你的系統卻是2.7.3-0ubuntu2.2, 多了個 ".2". 這表示你可能曾經手動安裝過 deb package. 而這 package 並非官方 apt-get 支援版. 故最佳解法就是回復到系統原來的版本

$sudo dpkg -r python-dev
$sudo apt-get install python-dev

2014-07-31

centos6 下如何安裝 pyenv?

在 centos6 下要如何安裝 pyenv?
 
首先安裝程式開發需要用到的套件
#yum install -y gcc gcc-c++ make git patch openssl-devel zlib-devel readline-devel sqlite-devel bzip2-devel

2014-07-28

cx_Freeze 安裝到 python 3.1 以後版本遇到的問題解決辦法(無廢話)

如果你安裝 cx_Freeze 遇到類似以下訊息



In file included from source/bases/Console.c:41:0:

source/bases/Common.c: In function ‘ExecuteScript’:

source/bases/Common.c:307:5: warning: passing argument 1 of ‘PyEval_EvalCode’ from incompatible pointer type [enabled by default]

2014-07-21

svn 指令小記


* To check different file names between two revisions
$svn diff -r revision1:revision2 --summarize
note that parameter '--summarize' force svn lists file names only.

ex,
user@ub1204:~/MyAnt_422$ svn diff -r 4355:4211 --summarize
M       mkandroid.sh
M       kernel_imx/build.sh
M       kernel_imx/arch/arm/mach-mx6/board-mx6q_myant.c
M       kernel_imx/drivers/video/mxc/ldb.c
M       device/fsl/sabresd_6dq/BoardConfig.mk
M       configuration

Monitor resolution definitions


VESA(視訊電子標準協會)訂定的電腦解析度規格標準如下。

QVGA    320(橫) x 240(縱) 像素
VGA        640(橫) x 480(縱) 像素
SVGA    800(橫) x 600(縱) 像素
XGA        1,024(橫) x 768(縱) 像素
SXGA    1,280(橫) x 1,024(縱) 像素
UXGA    1,600(橫) x 1,200(縱) 像素

2014-07-20

「作為一粒沙華麗的存在」


你從不會去關心身邊任何的一粒沙
因為對你來說,它們是多麼卑微的存在
但是,
對於擁有兩千億顆恆星的銀河系來說,我們甚至連銀河塵埃都算不上
更別說我們活在三千億個星系的浩瀚宇宙裡,銀河系連宇宙光塵都不是

即使你是如此的卑微
你還是要被這世界的制度所摧殘
遵守大家認為你該做的、該學的、該說的
一旦不如眾意,就好像世界即將崩潰一樣的嚴重
我們可以沒有華麗的外表,但是我們卻要有堅強的內心
即使事事不見得如意

但在有限的時間裡,有限的空間裡
即使像沙粒一樣渺小...
我們還是可以選擇......「華麗的存在」

2014-07-18

git 指令小記

* git add
# git add . # add to index only files created or modified and not those deleted
# git add -u # add to index only files modified or deleted and not those created
# git add -A # do both operation at once, add to index all files

* undo delete
1. 用 git reflog 找出 sha1 碼
2. 使用指令
git branch branchName <SHA1>

* 重新命名 local branch
git branch  -m  <原來名>    <新名>

* 刪除遠端 branch
git push remote :遠端branch名

* 在 git repository 中切換 main branch
git symbolic-ref HEAD refs/heads/BRANCH_NAME
註: 等同 local 的 git checkout BRANCH_NAME

* 如果早已把 file 加入 track, 但現在不想讓改變一直被 track, 例如 config file. 則可以下以下命令
git update-index --assume-unchanged FILENAME
未來, 又想它被 track 可以用以下命令回復

git update-index --no-assume-unchanged FILENAME

* git push 後造成 objects 目錄下的權限問題
當有人上傳新版code, 則會在objects下產生其自有的目錄, 權限是user:group, 其中 group 只有 read 權限,
故必需要在建立 git repository 時先就要設 group share 或已經建立後, 可再下命令改 git config
a. 建立時
# git init --bare --shared=group my-repo.git
 

b. 建立後修補方法
$ git config core.sharedRepository group

 

c.建立步驟參考
# mkdir -p /usr/local/share/git/stuff.git
# cd /usr/local/share/git/stuff.git
# chgrp gitusers . # make sure all users that need access are in the group
# chmod 0660 .
# chmod g+s .     # setguid bit
# git init --bare --shared=0660 .

or
# git init --shared=0644

參考文件: http://chirp.syxyz.net/2012/02/sharing-a-git-repository-over-ssh/


* git 移除已加入 git repository 的檔案
git rm --cached FILE_NAME

use -r to recursively remove files from cache,
git rm --cached -r FILE_NAME

* git 放棄 merge
git reset --merge


===================================
[rebase]

f you are not sharing develop branch with anybody, then I would just rebase it every time master updated, that way you will not have merge commits all over your history once you will merge develop back into master. Workflow in this case would be as follows:

> git clone git://<remote_repo_path>/ <local_repo>
> cd <local_repo>
> git checkout -b develop
....do a lot of work on develop
....do all the commits
> git pull origin master
> git rebase master develop
Above steps will ensure that your develop branch will be always on top of the latest changes from the master branch. Once you are done with develop branch and it's rebased to the latest changes on master you can just merge it back:

> git checkout -b master
> git merge develop
> git branch -d develop

========================
檢查兩個 commit 的不同檔案
git diff --name-status 65813002de..9bafa9b3f9




* 當你在windows 及 linux 之間編輯檔案時, 可能會因 windows 換行符號與 linux 不同而讓 git 誤以為檔案有所改變. 這時候你需要一個聰明辨別 windows/linux 的 git.很巧的是 git 的確有提供這個功能, 指令如下:

$git config --global core.autocrlf true
這樣子, 當你再下 git status 時, 那些惱人的因錯辨換行符號而誤以為是檔案被更改過的問題就一掃而空了.
$git status


* 變更 git commit 時使用旳編輯器(editor) 
例如使用 nano  
$ git config --global core.editor nano 
例如使用 OSX 的文字編輯器(TextEdit)
$ git config --global core.editor 'open -a TextEdit' 

*將舊 log 裡的某個檔案拿出來儲存成其它名稱
git show 897be4c3902:api/old_file_name.py > new_file_name.py
 

========================
當你有兩個遠端 bare repository, 例如 repo  A 跟 repo B 
基本上你都 將 local push 到 repo B 再由 repo B push 到 repo A 
 
[repo A]  <-- [repo B] <-- [local] 
 
可是今天可能是同伴開發時 未經 B 直接就 push 到 A
也就是 repo A 比 repo B 新
[repo A](new)  <-- [someone]  ,      [repo B] (old)    
這時你從 repo B push 上 repo A 時會遇到這個訊息: 
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and merge the remote changes
hint: (e.g. 'git pull') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details. 
 
 
若你真的確定 A 比 B 新,你要從 A pull 到 B,你可以在 B 裡下以下指令 
$ git fetch origin +refs/heads/*:refs/heads/* --prune
 
這個動作會將 repo A 的所有 branch update "覆蓋" 你的 repo B
然後你就可以再重新在 local pull repo B, merge repo B
最後再經一般上傳方式上傳
 
 
 
======================== 
當你想產生版本差異的完整檔案(非 patch),且照既有目錄排好,這時你要如何產生?

假設你要取版本 71eba333 ~ 目前 HEAD 位置的所有差異檔案
git archive --format=zip HEAD `git diff 71eba333 HEAD --name-only` > a1.zip

解壓 a1.zip 就是你要的,而且會依照原目錄的結構存放
真的太好用了

延伸題
如上,但你 71eba333 ~ 目前 HEAD有刪除的檔案,這時怎麼辦?可以用 --diff-filter 來過濾掉 D(deleted) 的檔案
git archive --format=zip HEAD `git diff --diff-filter=ACMRTUXB 71eba333 HEAD --name-only` > a2.zip


這個好處是你可以給 patch 檔給不會程式的人,但有 sense 知道如何解壓覆蓋,例如客戶,叫他直接解壓覆蓋即可。什麼語言合適?類interpreter 語言均好用,php, python, perl, bash, ...


參數意義
A Added
C Copied
D Deleted
M Modified
R Renamed
T have their type (mode) changed
U Unmerged
X Unknown
B have had their pairing Broken
* All-or-none
========================
修改最後一個 commit message
git commit --amend
按enter後直接修改即可

修改之前 commit message
只能利用 rebase git rebase -i @˜4 然後利用交談式介面完成 註 @ 即 HEAD

===================================
中止 rebase
git rebase --abort回

回復到未 rebase 狀況
git reset --hard ORIG_HEAD
這不常用,會忘記 head 名稱(不常用是對的)

===================================
樹狀顯示 git log
git log --pretty=format:"%h %s" --graph
git log --graph


===================================


2014-07-12

Python 的 decorator (Part III)

問題
前面 decorator Part I & Part II 已經涵蓋了 decorator 困難部分8成
這裡我們再進階看一個 "參數問題"

Decorator 的下一個問題是, 如果我 decorator 要傳參數的話要怎麼辦呢?
個人覺得這個架構是 python 一個很醜很醜的敗筆

請看一下底下例子

2014-07-11

Python 的 decorator (Part II)


前篇 Python 的 decorator (Part I) 遺留了一個問題


如下程式碼, 那就是明明是 Star 為什麼 Star.__name__ 變成了 my_wrap ?

2014-07-10

Python 的 decorator (Part I)

緣起
當我第一次看到 python 的 @ 符號時,當場傻眼,這是什麼東咚? 這是 command line 的變數的控制符號嗎?
後來去 goo 了一下才發現這東西叫 decorator
花了五分鐘看了一下, 瞭解了
但再實際不同 source 去運作及比對, 才發現...好像怪怪的, 不懂
再去搜集研究比對一下, 好像又懂了
再遇到 wraper 名稱取代 ... 哇~ 又不懂了
一波三折~ 5分鐘的事搞成半小時

Pre-說明
我最討厭只是為了要瞭解一個東西的意義/作用, 就要看人家 blog 寫的落落長的教學文, 寫一堆無關緊要的東西, 但重點只有一個. 甚至還講不到重點(我想即使版主未來想自己參考, 我猜他自己還會看不懂, 真的~)
但 decorator 要說清楚真的需要落落長, 廢話少說開始吧...
我的理解是...

2014-07-09

Android 查 activity 指令 & 指令喚起執行 apk/app

Android 查 activity 指令

aapt dump xmltree PmCalib.apk AndroidManifest.xml  <== Android SDK提供的命令
user@ub1004:~/temp/penmount/calibration/android-4$ aapt dump xmltree PmCalib.apk AndroidManifest.xml
N: android=http://schemas.android.com/apk/res/android
  E: manifest (line=2)

Android Keyevent 大全

adb shell input keyevent 7    # for key '0'
adb shell input keyevent 8    # for key '1'
adb shell input keyevent 29    # for key 'A'
adb shell input keyevent 54    # for key 'B'

linux 指令小記

Linux 最大的缺點就是安裝程式一定是落落長(configure, make, make install), 第二大缺點就是指令一久不用就忘會, 以下小記常用到的指令

[journalctl 查看最後幾行 log]
journalctl --unit=my.service | tail -n 300
journalctl -f tail 


刪除指定名稱的程序(process)
刪除 dnsmasq
ps aux | grep "^dnsmasq" | awk '{print $2}' | xargs  kill -9
但以上會刪到 kill 本身, 若起頭的 "執行身份" 是 nobody, 用以下限制刪除
ps aux | grep "^nobody.*dnsmasq" | awk '{print $2}' | xargs  kill -9
ps aux | grep "^.*nginx:\ .*process.*" | awk '{print $2}' | xargs  kill -9

android logical display density

理論上, Android 的 display density 定義如下,
• 120 dpi, known as 'ldpi'
• 160 dpi, known as 'mdpi'
• 213 dpi, known as 'tvdpi'
• 240 dpi, known as 'hdpi'
• 320 dpi, known as 'xhdpi'
• 480 dpi, known as 'xxhdpi'

實際上請依照 Panel 顯示狀況調整, 但相差不遠

Launcher 的 navigator bar 若有問題, 可調整 device/fsl/sabresd_6dq/frameworks/base/core/res/res/values/dimens.xml 下的 “navigation_bar_height” and “navigation_bar_height_landscape”

理論上 Android 的 navigation bar 是 48dp@160dpi
所以若你調成 140dpi, 新的 navigation bar 應該調整成 = 48dp x 160 / 140.

王里 言侖 上 口拉
.


參考資料
http://developer.android.com/guide/practices/screens_support.html

2014-07-04

從 IP 查地理位置

從 IP 查地理位置

[Database]
http://lite.ip2location.com/main (內詳, 格式詳細, 分lite跟商業兩種版本)
http://db-ip.com/db/  (free + 收費版本)

DONATIONWARE
http://software77.net/geo-ip/
http://software77.net/geo-ip/?license

wget software77.net/geo-ip/?DL=1 -O /path/IpToCountry.csv.gz      IPV4 gzip
wget software77.net/geo-ip/?DL=2 -O /path/IpToCountry.csv.zip     IPV4 zip
wget software77.net/geo-ip/?DL=3 -O /path/IpToCountry.csv.MD5     IPV4 MD5 (CSV file)
wget software77.net/geo-ip/?DL=4 -O /path/IpToCountry.dat         IPV4 Geo::IPfree
wget software77.net/geo-ip/?DL=5 -O /path/IpToCountry.dat.MD5     IPV4 MD5 Geo::IPfree
wget software77.net/geo-ip/?DL=6 -O /path/country-codes.txt       Country Codes
wget software77.net/geo-ip/?DL=7 -O /path/IpToCountry.6R.csv.gz   IPV6 Ranges
wget software77.net/geo-ip/?DL=8 -O /path/IpToCountry.6R.csv.MD5  IPV6 Ranges MD5
wget software77.net/geo-ip/?DL=9 -O /path/IpToCountry.6C.csv.gz   IPV6 CIDR
wget software77.net/geo-ip/?DL=10 -O /path/IpToCountry.6C.csv.MD5 IPV6 CIDR MD5
Please NOTE the "/" before the "?"




2014-07-03

Django "Writing your first Django app" 的完整程式



Django "Writing your first Django app" 的完整程式
下載點點我




python, django 有用資源 & 相關網址

Python, Django 有用資源 & 相關網址

* Django snippets
https://djangosnippets.org/

* Django可參考部落格
http://www.weiguda.com/blog/categories/1/

*Social Authentication (OAuth) - Python Social Auth
你是否希望支援可以利用 facebook, twitter, gmail... 來登入你的網路呢? 不用再找了, 用 python-social-auth 就對了, 支援 python3 (#pip install python-social-auth)

#pip install python-social-auth

2014-06-25

2014-06-24

Jane McGonigal 在 TED 裡提到的 "人們在臨終前最後悔的五件事"


據說人類是地球上最依賴, 最晚離開父母保護的動物. 羊一生下來, 為了活命, 從媽媽開始舔羊水開始, 短短幾十分鐘內就可以站起來了. 但是, 人類寶寶卻七坐八爬要到一歲才會走, 更別說獨立生活. 而且現在更誇張, 人類的下一代因為飽受呵護, 在22歲(大學畢)甚至更晚, 才能脫離父母獨立生活.

2014-06-23

pip 安裝錯誤

你是否遇到這種安裝錯誤訊息?

user@ub1004:~$ pip install pinax
Downloading/unpacking pinax
  Could not find a version that satisfies the requirement pinax (from versions: 0.9a2)
Cleaning up...
No distributions matching the version for pinax
Storing debug log for failure in /home/user/.pip/pip.log

2014-06-22

加油的迷思


因為小噗噗沒油了, 今晚跑去加油, 結果....人滿為患, 汽車大排長籠不說, 連機車也三排長長的, 深不見底, 簡直是場杯具. 我排了約20分鐘才加到油, 更不要說是加汽車民眾. 中間本來想說要換遠一點的加油站, 但是後面都被塞住了, 想走也走不了, 於是只能既來之則安之.

後來才想起, 好像伊拉克是不是要內戰, 影響國際油價. 民眾為了省錢大排長龍去加油, 而且因為星期一中油要大幅調漲 0.6 元/升, 所以民眾特地選週日晚上去加油, 因為油才加的多. 果然是聰明的民眾.

但是
我們靜下心來想想, 聰明的民眾真的是賺到了嗎?

2014-06-20

virtualenv and pyevn 指令小記

[virtualenv]
建立虛擬環境
$virtualenv [環境名稱]


$virtualenv my_python27

[pre-survey]virtualenv, pythonbrew 和 pyenv有什麼不同, 該選哪一個?


緣起
因為 Python2 及 python3 有著重大的改變, python2.7 跟 python3 是個分水嶺, 很多lib架構, 用法已改變, 故困擾很多 python 使用者. 現在的 os 通常還是用 2.x python, 若你將它移除, 那麼杯具就會發生.
所以如果有工具可以完美解決 python2 , 3 切換問題, 讓我們想用2時就用2, 想用3時就用3是不是就很完美呢?

什麼是 LOG

如果有人問你: "什麼是 LOG?"
你應該會回答: "很簡單啊, 就是記錄"





沒錯, 答對了.


不過, log 還有另一個意思, 就是 "圓木"
而且啊, 圓木才是它原本的意思

2014-06-19

什麼是 serverlet, 什麼是 applet ?

身為一個非英語系國家, 對英文文化不熟是很理所當然的. 很多英文常用的字首詞我們蠻瞭解的, 考試也常考. 但是英文有字尾詞你知道嗎?


我第一次遇到 applet 這個字是在學 Java 時, 那時在學寫支 app 然後在上面放 UI, 做幾個簡單功能. 所以對我來講 applet 就是寫 app 的 template? interface? ancestor class? 用來繼承, implement 然後寫出你的 UI App.

後來在弄湯姆貓(TomCat), 才認識了第二個字 serverlet. serverlet 當時對我來講應該是你可以不用 Apache, 只要單純 run Tomcat就可以達到你要執行 JSP translator 的功能.

這兩字原本對我來講沒有什麼意義, 但在某年某月的某一天, 很奇怪的突然腦袋同時跑進了這兩個字. 腦袋裡的我告訴我自己, 為什麼這兩個字為什麼都有 -let? 它一定有它的意思存在, 自此我才去查字典, 才知道 -let 的意思

-let 是小的意思
所以 applet 是小的 app
serverlet 是小的 server
不像阿帕契(Apache), 湯姆貓(Tomcat)就是一種小的 server, 它足夠用來Interpret JSP, 而不需要阿帕契的存在.

雖然知道的太慢, 但至少是知道了, 多年後想到當時還真是有趣的 "進展"

2014-06-12

少數服從多數還是多數服從少數? 我受夠了多數服從少數.

又是迷失霧的迷思


在民主國家, 我們從小就被灌輸一個觀念: 少數服從多數, 多數尊重少數.
你們若有仔細注意, 你們就會發現: 當少數服從了多數後, 事件就告一段落, 不會有什麼多數尊重少數, 或者後續為了補償少數所做的任何動作.

你是否有想過 "為什麼少數一定要服從多數?". 你可能會想, 這個人一定是瘋了, 或者有精神病, 或者是 "背骨", 怎麼會對 "少數服從多數" 有所懷疑. 如果你問我為什麼要質疑"少數服從多數", 我覺得你最好問一下自己為什麼我要尊從"少數服從多數" 這個定理?

As, When 跟 Whenever 的差異

又是一個迷思


我最近常在原文(其實很多原文都是非natvie英語系國家寫的)句子中發現很多用 when 這個字, 但我卻覺得怪怪的, 好像應該用 whenever. 所以我去 "確定" 了一下什麼時候下用 When? 什麼時候下用 Whenever?

也許你會覺得這個問題很蠢, 但若你 google 一下 "when whenever difference", 你會發現, 原來英語系國家也很多自家人在問這個蠢問題 (攤手)

2014-06-10

Centos6.x 下 Apache2.2 + mod_wsgi + django embedded mode 之安裝設定(無廢話)

前言
Django 要能透過 mod_wsgi 結合 Apache 正常運作首先
1. 你必需要安裝好 Apache
2. 你必需要安裝好 Python, 請參考這篇
3. Apache 必需安裝好 mod_wsgi, 請參考 這篇

安裝 Django
接下來就是安裝 Django, 安裝方法很簡單, 指令如下(這裡我是雙系統, python/pip, python3.3/pip3.3, 請依自己環境使用 pip 或pipx.x)
#pip3.3  install  django


2014-06-05

mod_wsgi 跟 Apache 的 config (無廢話)

若你要安裝 mod_wsgi 請看這篇
若你要設定 mod_wsgi 使其運作則請繼續

環境
Apache2.2
mod_wsgi 4.1.3




httpd.conf 設定
打開 httpd.conf 找到一堆 LoadModule 的地方, 在下方加入以下這行
LoadModule wsgi_module modules/mod_wsgi.so
存檔離開, 重啟 apache
#apachectl restart

若 wsgi 成功運作則你可以在 [apache]/log/error_log 看到以下訊息
 Apache/2.2.15 (Unix) DAV/2 mod_wsgi/4.1.3 Python/3.3.3 configured


在 Centos 下安裝 mod_wsgi (無廢話版)

前言
mod_python 及 mod_wsgi 要安裝哪一個較好?
若你 goo 完資料後答案很明顯, 就是 mod_wsgi. 因為
1. mod_wsgi 效率較好
2. mod_python 最後會淘汰不再更新



2014-04-25

迷失霧的丟垃圾理論


我們常說人才是一個公司最重要的資源
無論是亞馬遜的貝佐斯或者阿里巴巴的馬雲都說過他們求才若渴
人才的確是一個公司最重要的資源
不要說馬雲求才若渴  我個人也求才若渴

可是,人才是有限的資源,不是你想要多少就有多少。

2014-04-22

Python 安裝 SetupTools(easy_install, pip)


1. 首先到這裡(ez_setup.py)下載 ez_setup.py
2. 執行以下指令
#wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py -O - | python

如果你遇到
ERROR: cannot verify bitbucket.org's certificate, issued by `/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV CA-1':
  Unable to locally verify the issuer's authority.
To connect to bitbucket.org insecurely, use `--no-check-certificate'.
Unable to establish SSL connection.


則表示你的系統不支援驗證 SSL, 請依指示加上參數--no-check-certificate

2014-04-17

如何在 Centos 6 下安裝 Python3.4

Centos6 內建的 Python 是 2.6.6 版
如果你將內建的 Python upgrade 成 python 2.7 或以上版本, 那麼你將會遇到毀滅性的災難 (在 Ubuntu 內移除 python 也是相同的情況)
這是因為  Centos 6 的 image 內建工具許多都是使用 Python 2.6 來運作, 一旦沒有 python 2.6, Centos 6 連最基本的 yum 都動不了

以下將教你如何安裝 python 3.4 於 Centos6 而不會覆蓋影響到原來的 python2.6.6. 也就是 python 3.4 和 python 2.6 並存於 Centos6  (雖以 python 3.4 為例, 不過其它 python 版本均同 )

2014-04-15

Internet (網際網路) 的迷思


只要說到 Internet,在台灣,大家平常都會講「網際網路」。
據說是台灣的某一個人翻譯的,之後大家就據此叫「網際網路」。
可是不知道大家有沒有想過,為什麼要叫「網際網路」?


每當有人講到網際網路,我第一個想到的是,為什麼要多一個「網際」?
這個冗詞是不是多餘的?
網路就網路,為什麼要叫網際網路?難道國際網路就不是網路?電信網路就不是網路?一定要網際上的網路才叫網路?
網際又是什麼意思?

我們打開字典,看一下它是怎麼解釋的。
Internet 是由 Inter  + Net 組成,而 inter 的意思如下:

2014-04-07

Windows 下安裝 lxml

你是否遇到在 Windows 下安裝 lxml 時, 有以下訊息

C:\>pip install lxml
.......略
.......
c:\users\user\appdata\local\temp\pip_build_user\lxml\src\lxml\includes\etree_defs.h(9) : fatal e
rror C1083: 無法開啟包含檔案: 'libxml/xmlversion.h': No such file or directory

C:\Python32\lib\distutils\dist.py:257: UserWarning: Unknown distribution option: 'bugtrack_url'




這時候你若上 google 找解決方法, 會找到很多解法, 不外乎
1. 叫你安裝 minGW
2. 叫你去  http://xmlsoft.org/sources/win32/ 下載 sources, 然後一一的放到正確位置 (參考這篇 http://zzq635.blog.163.com/blog/static/19526448620132845436686/)

2014-03-19

什麼是 Legacy?



從事資訊業常會碰到一個字 - Legacy
什麼是 Legacy? Legacy 是什麼意思?
What is legacy?
我發現台灣即使是資訊工程師, 能清楚說明什麼是 legacy 的, 屈指可數啊~
我本來也不甚瞭解, 但後來在矽谷待一陣子, 不想瞭也瞭了

記得研究所的時候
某大電信公司的很高層主管來授(兼)課
而我上台報告時很準確的將 legacy 意思傳達出來

2014-03-12

PyDev 無法在 Eclipse IDE 介面上正確顯示


當你發現你正確的安裝了 PyDev 之後但 Eclipse 上依然沒顯示 PyDev 的選項, 這時候最有可能就原因就是你的 JRE(JDK) 版本太舊. 新版 PyDev 似乎要吃 JDK 1.7 以上的版本

請上 sun 官網下載 JDK

如何使用 Python3 連接 MySQL

相信大家想用 Python 來連接 MySQL 時一定也會搜尋一下網路
然後你可能會發現類似這個網站教導你如何用 MySQLdb 連MySQL

當然啦, 這並沒有錯, 不過有一點要注意的是, 如果你用的是 Python 3.x, 那麼, 很抱歉的是, MySQLdb 已經不再更新了, 你可能會在安裝時遇到以下訊息


2014-03-11

艾維斯的撿橘子理論

2010-2-15 

今天在大賣場裡閒晃
突然發現 想到一個理論
這個理論叫 "撿橘子理論"

理論的故事是這樣的

在市場有一個賣橘子的攤販
市場裡 人來人往
客戶甲來到了橘子攤販前

如何使用 wget 下載 https 的檔案? (How do you use wget to download SSL links file?)


如何使用 wget 下載 https 的檔案?
如果你並不在意檔案的憑證,只要在命令後加入 --no-check-certificate 即可
例如
#wget --no-check-certificate https://www.example.com/somefile.link.tar.gz


2014-02-26

CentOS6 php 無法使用 ftp_connect 的解決辦法

雖然常常遇到,但每每遇到又會忘記,所以在此筆記。

在 Security Enhanced Linux 下,Apache 可能不能如你原來習慣的方式使用。

在 PHP 下,當你遇到連 connect 都會失敗時
<testftp.php>
$conn_id = ftp_connect($ip,$port,$timeout);
if (!$conn_id)
{
    print "FTP connect failed!!";
    exit();
}