NPM package.json

NPMJS

一般不管什麼語言,幾乎都沒有內建套件管理,但是 Node.js 現在除了一直保持初衷,
要維持核心程式的精簡外,加入了 node 一直以來,必裝的 npm 套件管理,方便 node 的使用者,管理套件,及更新

所以 maybe node.js is not battery included but with charger.

參考資料

官方網站
http://npmjs.org/

原文
http://blog.nodejitsu.com/npm-cheatsheet
http://package.json.nodejitsu.com/

中文
http://dreamerslab.com/blog/tw/npm-basic-commands/

screen

改一下 ~/.bashrc


GITPS1=’$(__git_ps1 " (%s)")’

case “$TERM” in
xterm*|rxvt*)

PS1="${debian_chroot:+($debian_chroot)}[\033[01;32m]\u@\h[\033[00m]:[\033[01;34m]\w[\033[00m]${GITPS1}$ “
PS1=”[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a]$PS1"
;;
screen*)
PS1="${debian_chroot:+($debian_chroot)}[\033[01;32m]\u@\h[\033[00m]:[\033[01;34m]\w[\033[00m]${GITPS1}$ “
PATHTITLE=’[\ek\W\e\]’
# Use program name as title
PROGRAMTITLE=’[\ek\e\]’
PS1="${PROGRAMTITLE}${PATHTITLE}${PS1}"
;;
*)
;;
esac


小抄一下別人的 ~/.screenrc

# Caption line
#caption always “%{= R}[ %{=b b}%-w%{=rb db}%>%n %t%{-}%+w%{-b}%< %=%{R}][%{M} %Y-%m-%d %{G}%c%{R}]"
caption always “%{=b k}%{b y} %m-%d %c / %{k}%L=%-w%7>%{g}%n %t%{-}%+w%-014< %-016=%{c} %l “


# Set default encoding using utf8
defutf8 on

# Refresh the display when exiting programs
altscreen on

# Dynamic title
shelltitle ‘$ |bash’

# Set xterm’s title
hardstatus string “screen: %t”

# C-a b –(switch to)–> view big5 data
bind b encoding big5 utf8
# C-a u –(switch to)–> view utf8 data
bind u encoding utf8 utf8


參考

http://adam8157.info/blog/2010/05/terminal-bash-screen/

http://archerworks.blogspot.com/2010/05/linuxscreenbindkey.html

這樣,顏色,還有訊息都豐富了,不會逛到哪一台主機 git 到哪一個 branch 都分不出來

Get your Node

node.js

MEMO 一下 Debian testing 上面的 Node 安裝

實在進步太快了,裝 pre compiled 的套件沒有感覺

sudo apt-get install build-essential python-software-properties libssl-dev libreadline-dev git-core curl libcurl4-openssl-dev

記一下 libcurl4-openssl-dev # 只是目前 debian testing 上面依存的套件

git clone https://github.com/joyent/node.git
cd node
git checkout v0.6.6 # 目前最新的 release tag
./configure
make
sudo make install



發展快速,社群活躍,最重要就像的第四台老師有說得 Location, Location, Location

Node.js 是 Open, Open, Open (community, community, community, 內建的 npm 套件管理, 這一點夠方便吧)

想要變高,變帥,變聰明前,不要忘了,上場前,把 node.js 的傢伙戴上

http://www.webresourcesdepot.com/the-awesome-node-js-and-its-gang/

https://github.com/joyent/node/wiki/modules

參考
http://fred-zone.blogspot.com/2011/12/debian-nodejs-express.html

http://www.freshblurbs.com/install-node-js-and-express-js-nginx-debian-lenny


八卦一下,我的 VPS RAM 太小,本來是要說 Get your JVM,不過看起來,這一隻怪獸,還是要找多一點 RAM 的主機,才願意開始幹活

terry@atomvm:/node$ java -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
terry@atomvm:
/node$ node -v
v0.6.6

得了不寫 Test Case 會死的病

Glassware and things

許久以前每開始一個專案,會以時間為重要的考量因素
(很像沒有作過不趕時間的專案)

漸漸一個專案,如果不是像活動性質的案例

專案功能少有幾十項,多則分到各個模組拆作

沒有寫 test case ,團隊成員新增功能,或是修復 bug ,只要整個程式庫有了變動,都是風險,越來越膽小,小到,現在都是邊寫程式,到一個階段後,直接把 test case 寫完,才敢上線,或是更新,不然沒有安全感,以前舊有的 test case 就是一點一滴,紀錄整個系統進化的日記一樣,可以確保每個細節,可以安全無誤

一般人的想法,可能覺的寫 code 都沒時間了,還寫什麼 test case 尤其是在台灣的軟體生態裡,更是如此,有 bug 可以修的修,不好修的,藏起來,時間為先,只要這不是一個用過就丟的系統

不過現在欠下來的,以後還是要還,尤其是自己的產品時,都會有長遠的發展,及早養成習慣,使用正確的工具,可以讓你的測試,寫起來,又快,又笨,又簡單,時間花的就不會像你想像的那樣多了 ;-)

PS: test case 我是泛指所有的測試,不管是功能測試,效能測試,還是介面的部份…

django-pipeline

一個簡單,好用的 django plugin


https://github.com/cyberdelia/django-pipeline

用途,用來產生,壓縮處理, css ,javascript 或是圖片,也可以自動處理 version (也有支援 git 喔) 可以搭配的工具很多,SAAS,LESS,或是 Coffee Script 都 OK,有沒有開始傻笑了 ;-)


Compressors

YUI Compressor compressor (這個是預設的)

Closure Compiler compressor

UglifyJS compressor

JSMin compressor

CSSTidy compressor

Write your own compressor class

Compilers

Coffee Script compiler

LESS compiler

SASS compiler

Stylus compiler

Write your own compiler class


拜託,要用時,還是看一下文件,及 source code

 文件 http://django-pipeline.readthedocs.org/en/latest/index.html

 EXAMPLE: 我先假設,用的是

Django 1.3.1
settings.py INSTALLED_APPS 有 ‘django.contrib.staticfiles’,把 ‘pipeline’,也加到 INSTALLED_APPS 裡

yuicompressor-2.4.7.jar 我放到 project 資料夾的 pkgs 目錄下面

在 Debian 上面有安裝 openjdk-7-jdk

PIPELINE_JS 的部份,依此類推

settings.py 部份

PROJECT_ROOT = BASE_DIR = os.path.abspath(os.path.dirname(file))

INSTALLED_APPS = (
‘pipeline’, # 這個要有,當然還有其他你要的
)

# django-pipeline
PIPELINE_YUI_BINARY = ‘java -jar ’ + os.path.join(PROJECT_ROOT, ‘pkgs/yuicompressor-2.4.7.jar’)
PIPELINE_VERSION = True
PIPELINE_CSS = {
‘main’: {
‘source_filenames’: (
‘css/style.css’, # 後面可以加很多
),
‘output_filename’: ‘css/pipeline_r?.css’,
’extra_context’: {
‘media’: ‘screen,projection’,
},
},
# other CSS groups goes here
}

我的 base.html 裡的部份
……
{% load compressed %}
……
…..
{% compressed_css ‘main’ %}
…..

..

覺的不合用,看更多 Django asset-managers
http://djangopackages.com/grids/g/asset-managers/

[政黑]新年希望台灣更好


覺得上一篇,應該 fork 一篇,比較有禮貌一點

新年希望

1. 這個國家不要分公保,勞保,農保,漁保,就一種人就好了,大家都週休二日,退休所得替代率都一樣,孩子上大專以上,學雜費都可以像是公務人員的子女一樣減免

2. 福利政策,不要分天龍國,和外縣市不同 (例如:殘障福利,祝你好孕,等….)

3. 不要在搞什麼奢侈稅,新的把戲,就房屋稅實價課稅,例如:市價兩百萬的房屋,稅率假如是千分之一,應繳房屋稅 2000000 x 0.001 = 2000 元,那 兩億的房子,200000000 x 0.001 = 200000 元,政府這一點作不到,不是劫貧濟富是什麼

4. 網路,可不可以不管誰當選,都可以直追南韓,目前 台灣 37 名 ,南韓第 1 名 http://netindex.com/upload/allcountries/

5. 公務機關,什麼時候可以停止那一種,每年預算花光光的作為

6. ETC 這種吃像這麼噁心,官商相愛的現象,什麼時候停止,擺明違法,當初設計不良,紅外線槓微波,最後說賠錢作的老闆得標後,現在也要換成微波系統了,這不是裝孝為嗎?交通部給什麼寬限期

7. 政府可不可以停止詐騙集團化
   
    政府詐騙集團化的具體作為

     a. 以前,勞保,包含健康保險,另立名目,增加全年健保,保障不加,保費加倍

     b. 原本實施老人年金後,發現財政會透支,所以改成國保,只要你沒有繳錢國家 (勞保等等) 就強制要繳交國民保護費,只要成年,一定繳錢,管你失業,還是生病

     c. 健報一代,不如一代,政客獻金,醫師,藥廠要的一個子都不能少, 自費項目越來越多,繳的保費越來越高

      d. 說一句,國人平均壽命變高,所以退休延長由 60 歲改為 65 歲退休

8 …. 待續


[政黑]執業二十五年律師,踢爆司法黑幕

執業二十五年律師 踢爆司法黑幕 
台灣司法真不是普通的黑,看了,好友的官司,還有,已故很久三舅的勞保官司 

法院裡是恐龍的地盤,不是一般人可以去的,那裡的進步可以說是和社會脫節得很嚴重

說一下,三舅的例子好了,這大概是 7,8 年前的事了(官司通常要打很多年,這樣法官才有事情作,律師也有錢拿)

1. 三舅,先是失業一段時間後,勞保自動失效(我國的勞保,是保有工作的勞工,只要沒了工作, 勞保局會自動把你踢出去,所有的保障都自動消失)

2. 後來三舅找了新工作,一家小公司,幫忙送貨

3. 一次工作中,心肌梗塞,造成促死

4. 請領勞保死亡給付

5. 勞保局,不給付,說是,你已經退保,超過4 個月,還是六個月,就不可領了,新工作的老闆,沒有幫他續保 (哪有人保了二,三十年沒有領退休金,自己退保的)

6. 這一種情形,必須要你以前有心臟病史,才可以給付(就是說,生前要常看病,所有的科都要掛過)

7. 三舅,就這樣,保了二,三十年勞保,一毛錢也沒有拿,平常身體不舒服,也不常看病,都是止痛藥吃一下,就繼續工作,有三個唸大學的孩子要栽培

8. 這一個官司,當然還是勞保局贏 (幹有沒有天理壓)

所以法院只是浪費生命也是剝奪生命的地方真是一點也不為過

新年新希望

1. 這個國家不要分公保,勞保,農保,漁保,就一種人就好了,大家都週休二日,退休所得替代率都一樣,孩子上大專以上,學雜費減免 ( 不然誰要生小孩)

2. 不要再搞甚麼奢侈稅,就房屋稅實價課稅這麼難嗎?( 我外縣市的公寓,房屋稅,繳的比新北市的透天還高,是那招,這一個政府還說暫時不考慮實價課稅,什麼時候報假的價格變對的,現在大家都做兩套帳才正常)

3. 網路,可不可以不管誰當選,都可以直追南韓,目前 台灣 37 名 ,南韓第 1 名 http://netindex.com/upload/allcountries/

4. 哈哈,最後,我的 VPS 經銷服務,快要開張了,希望可以順利

ps: Happy New Year

It’s all Text

https://addons.mozilla.org/zh-tw/firefox/addon/its-all-text/

這一個是一直愛用的 firefox 元件 也是目前在 Chrome 上面,我一直找不到的替代品 

最近流行用靜態網頁的方式,來 host 部落格網站,要得就是簡單,還有就是,可以自由自在的編輯

 不需要在網頁的 text area 裡編輯,這一 firefox 外掛就是解決這一個問題用的,可以用你超高效的 VIM 打開你的 textarea ,自由自在的編輯 也是目前偶爾回來用用 firefox 的原因之一 :-)

uWSGI –vhost



用 uWSGI 來啟動 wsgi 的服務,除了傳統的方式,還可以一次管理多個 wsgi 的服務

還有另外一種作法 Emperor 可以對特定資料夾裡所有的設定檔,個別管理,更適合作 PASS 服務的人, http://projects.unbit.it/uwsgi/wiki/Emperor

我的需求沒有這麼大,只是一起跑多個 wsgi ,省一些記憶體,就可以了


用 daemontools 來啟動,這裡面的 buffer-size 有要吃外部的 post back 要加大,不然,預設的實在是太小,最重要的是預設值 PayPal
IPN callback 吃不下,收到錢還不知道,夠重要了吧

#!/bin/bash
# default buffer-size is 4k 4096
exec setuidgid yourname uwsgi –buffer-size 32768 -s 127.0.0.1:3031 -p 3 -M –vhost

以在 Debian 上面的 nginx 裡面的設定範例


server {
listen 80;
server_name yourcoolsite.com;
location /static {
alias /yourstatic/folder/;
}
location / {
include uwsgi_params;
#uwsgi_pass unix:/tmp/digez.sock;
uwsgi_param UWSGI_PYTHONPATH /home/yourname;
uwsgi_param UWSGI_CHDIR /home/yourname/yourcoolsite;
uwsgi_param UWSGI_ENV DJANGO_SETTINGS_MODULE=yourcoolsite.settings;
uwsgi_param UWSGI_MODULE application;
uwsgi_pass 127.0.0.1:3031;
}


放在 /home/yourname/yourcoolsite/ 的 wsgi application.py script 範例
sys.path.append 那兩行,在 Django 1.4 以下,也就是 1.3.1 (含) 以下,都要加,比較不會有路徑的問題

Django 目前的 Dev(或是 trunk 或是 github 上面 master) 開發版,已經改變 project 的路徑,所以不用再加了

# coding: utf-8
import sys
import os
sys.path.append(os.path.abspath(os.path.dirname(file)))
sys.path.append(’..’)
os.environ[‘DJANGO_SETTINGS_MODULE’] = ‘settings’

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()