2012年8月15日

快速尋找 Linux Process 並刪除

以前的方法

ps -ef | grep httpd
然後再去 kill pid


新發現的方法

pgrep httpd 可以直接取得 pid 不用再 grep
pkill 可以直接接  process name, 不用使用 pid


2012年6月1日

[MAC] iPhoto 照片檔案位置

之前備份了 iPhoto,記錄一下實際照片存放的路徑

iPhoto 圖庫 -> Masters -> 2011 -> 01

以上就代表 2011年1月的實際照片存放路徑囉

2012年5月10日

[Perl] 陣列在副程式之間傳遞

通常傳遞陣列都是傳一個 reference 的記憶體位址過去,而不會真正把整個 Array 傳過去(雖然也是可以)

傳遞到副程式時:前面要加 \ ,讓 Perl 傳遞 reference 到 sub 內,副程式內用 scalar ($) 來接
副程式回傳後,要接收時:要解析 reference (通常稱作 dereference),在外面加上 @{ } 來 dereference
下面是一個簡單的範例

#!/usr/bin/perl

@mainAry = ("abc", "def");
#deference and expand the array
@returnAry = @{ &getInterface(\@mainAry) };
print "origin : @mainAry\n";
print "return : @returnAry\n";

sub getInterface() {
        my ($rec_ref) = @_ ;
        $a_ref = [];
        foreach $values (@{ $rec_ref }) {
                push(@$a_ref, $values);
                print "push $values\n";
        }
        return $a_ref;
}

2012年5月4日

[Perl] cpanm 搭配 CPAN::Mini 的設定方式

之前的文章有介紹了 CPANPLUS 與 CPAN::Mini 但是現在更好用的模組管理程式是 cpanm (發音為 cpanminus)安裝方式為


curl -L http://cpanmin.us | perl - --sudo App::cpanminus

或直接下載 cpanm 檔案,本身是一隻 Perl 程式

curl -LO http://xrl.us/cpanm
chmod +x cpanm 

使用方式跟 CPANPLUS 比起來真的是 minus 許多,摘錄 cpanm 使用方式
如下

 cpanm Test::More # install Test::More
 cpanm MIYAGAWA/Plack-0.99_05.tar.gz              # full distribution path
 cpanm http://example.org/LDS/CGI.pm-3.20.tar.gz  # install from URL
 cpanm ~/dists/MyCompany-Enterprise-1.00.tar.gz   # install from a local file
 cpanm --interactive Task::Kensho                 # Configure interactively
 cpanm .                                          # install from local directory
 cpanm --installdeps .                            # install all the deps for the current directory
 cpanm -L extlib Plack                            # install Plack and all non-core deps into extlib
 cpanm --mirror http://cpan.cpantesters.org/ DBI  # use the fast-syncing mirror
 cpanm --scandeps Moose                           # See what modules will be installed for Moose

在這邊要介紹的是如果之前有用 CPAN::Mini 在本地 mirror 了
最新的 CPAN 模組庫,此時要配合 cpanm 使用的話

./cpanm --mirror /cpan/mirror --mirror-only 模組名稱

P.S. /cpan/mirror 是 cpan local repository 的路徑

2012年5月3日

[iOS] UITextview 拉到最下方文字無法完整顯示問題

最近開發一個新聞閱讀軟體,裡面有些內容使用 UITextview 來呈現,呈現當然是沒有問題但是奇怪的是將卷軸拉到最下面後大概有兩行的內容會看不到,需要用手往上拉(捲動 scrollbar)才能看得到,經過一番查詢看來是 iOS 預設的呈現方式,我們必須自己插入一些空間讓文字能夠往上提一點而不會被隱藏起來,方法如下

UITextview 名稱為 : newsTextView

UIEdgeInsets contentInset = newsTextView.contentInset; //產生一個 UIEdgeInsets 物件
contentInset.bottom = 45.0; //下方空白空間,視需求增減
newsTextView.contentInset = contentInset; //設定 UITextview 的 contentInset 屬性

原始出處 : http://stackoverflow.com/questions/1582554/iphone-uitextview-leaves-room-for-2-lines-at-the-bottom

2012年4月27日

[Perl] 本地端使用 CPANPLUS 安裝 CPAN 模組(CPAN::Mini 應用)

CPAN 是 Perl 吸引人的特點之一,裡面有成千上萬個模組,都是全世界程式設計師的智慧結晶,所以要寫一個功能前都會先上來看看是否有相似的模組就不用自己再發明輪子。但是通常在企業的 production 環境都是在內部網路,所以根本無法連到在 Internet 的 CPAN 網站。
還好有一位大師 Ricardo SIGNES 解決了這個問題,CPAN:Mini 模組把現在最新的 CPAN 模組蒐集起來 (2012/04 mirror 約 2G),我們可以利用可以連線至 Internet 的機器,把模組 mirror 下來,再傳到內部網路主機即可在裡面安裝 CPAN 模組。

可先手動安裝 CPAN::Mini  之後你在命令列就有 minicpan 指令

再執行
minicpan -l /minicpan -r http://ftp.funet.fi/pub/languages/perl/CPAN

就開始 mirror 了,至少需 2HR 以上時間,完成後進 CPANPLUS 開始初始設定
1. 輸入 cpanp
2. 輸入 s reconfigure
3. 選 7> Select mirrors
4. 看到 Would you like to keep your current hosts? [Y/n]: 選 n
5. 再選 2> Custom
6. 填上剛剛 mirror 到 /minicpan 的路徑  
file:///minicpan (注意有三個 / )
7. 按 Enter 跳出
8. 選 4> Quit
9. 選 9> Save & exit
10. 輸入 q 離開
11. 再進入 cpanp
接下來就可以不用網路,在本地安裝 CPAN 模組囉,CPANPLUS 簡易用法請參考如下

CPANPLUS 簡易用法
安裝模組  (模組名稱查詢)
i Date::Manip

移除模組
u  GD::Cairo

查詢模組
m Chart::Clicker

查詢作者
a 作者名

2013/11/29 補充
假設 mini cpan 已經解開在 Linux 的 /cpan/mirror 目錄
則使用 cpanm 進行安裝模組的話可以執行如下指令
cpanm --mirror /cpan/mirror --mirror-only  CPAN_MODULE_NAME

2012年4月19日

SQLite 簡易指令說明

SQLite 資料型態有
NUMERIC, INTEGER, TEXT, REAL, NONE
日期型別是用 TEXT 的 data type

建立 DB 與 table 三步驟
1. 執行指令 sqlite3 mydatabase.db
2. 在 console 執行

CREATE TABLE peoplestatus(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, birthday TEXT, score1 REAL, score2 REAL, score3 REAL, height INTEGER, weight INTEGER);
3. .exit or .q or .quit

Insert 語法 (id 是 AUTO INCREMENT, 所以我們不用自己 insert id 值)

sqlite3 mydatabase.db "insert into peoplestatus(name, birthday, score1, score2, score3, height, weight) values(1, '2012-04-18', 60.58, 77.23, 90.54, 172, 70);"

Select 語法

sqlite3 mydatabase.db "select * from peoplestatus limit 2";
sqlite3 mydatabase.db "select * from peoplestatus order by id limit 1 offset 2";

看 DB 裡面有什麼 table

sqlite3 mydatabase.db "select * from sqlite_master;"

看 peoplestatus 這個 table schema

sqlite3 mydatabase.db ".schema peoplestatus";

Table 新增欄位

sqlite3 ip_pool.db "ALTER TABLE poolstatus ADD phoneno INTEGER"

查詢身高 2012-04-10 生日的人

sqlite3 mydatabase.db "select * from peoplestatus where birthday like '2012-04-10%' order by id desc"

CentOS 載入 MIB file

一般網路設備都有支援 SNMP 網管功能,但直接使用 snmpwalk 去看由於作業系統沒有載入設備的 MIB file 所以無法解析 OID 跟設備的對應關係,只看得到一堆 1.3.6.1.4.1.......

所以我們必須載入廠商提供的 Mib file,讓我的 CentOS 知道對應關係,方法如下

1. 複製廠商 Mib file 到 /usr/share/snmp/mibs/ 例如我們需要三個檔案

cp RBN-IPPOOL-MIB.my /usr/share/snmp/mibs/

cp RBN-SMI.my /usr/share/snmp/mibs/

cp RBN-TC.my /usr/share/snmp/mibs/


2. 在要執行程式的使用者下面建立 .snmp 目錄,並將剛剛三個檔案的檔案寫入 snmp.conf 設定檔

mkdir $HOME/.snmp

echo "mibs +RBN-IPPOOL-MIB" >> $HOME/.snmp/snmp.conf

echo "mibs +RBN-SMI" >> $HOME/.snmp/snmp.conf

echo "mibs +RBN-TC" >> $HOME/.snmp/snmp.conf


測試

snmptranslate -Td 1.3.6.1.4.1.2352.2.15 /usr/bin/snmpwalk -v 2c -c community 10.20.1.2 1.3.6.1.4.1.2352.2.15


如果有把 OID 解析成名稱, 那就成功囉~

2012年4月13日

[Perl] Check null value in Perl


if ( ! defined $var  ) {
  print "not defined\n";
}
else {
  print "defined\n";
}

來源 : http://www.unix.com/shell-programming-scripting/38416-not-null-cheking-argument-perl.html

2012年4月9日

CH57 健康同學會 - 五大防癌食物

核桃熱量比較高, 應適量攝取, 其他的能吃多少就吃多少了 XD

Xcode v4.2 升級到 v4.3.2 問題

前陣子因為 Apple 釋出 iOS 5.1, 所以開發工作也跟著出到 v4.3.2 版, 於是在閒暇的時候利用 Mac App store 把 Xcode v4.2 自動升級到 4.3.2. 升級完畢後點選 dock 上的 Xcode 圖示, 但是怎麼開起來還是 v4.2 版.... 後來利用 finder 搜尋 xcode 關鍵字, 發現在另一個地方也有一個 Xcode 執行檔, 原來 Mac App store 升級後不會自動替換掉 原本的 Xcode, 要自己拉出來才行阿!

2012年3月9日

[iOS] 程式進入背景後之支援類型

iOS 4.0 之後允許以下型態的用途進入背景執行

1. audio
2. Voice over IP
3. Background location
4. Push notifications
5. Local notifications
6. Task finishing - If your app is in mid-task when your customer leaves it, the app can now keep running to finish the task.
7. Fast app switching - All developers should take advantage of fast app switching, which allows users to leave your app and come right back to where they were when they left - no more having to reload the app.

一般都用 Task finishing, 系統會分配時間給你執行, 如果超過分配的時間 (預設是 600 秒 也就是10 分鐘), 系統會自動結束 process, 可利用下列語法查看, 系統分配備背景執行時間是多少
NSLog(@"Background remain time %f : ", [application backgroundTimeRemaining]);

參考來源 : iOS App Programming Guide: App States and Multitasking

2012年3月3日

[CentOS] date 顯示上個月, 兩個月前的月份

做 log housekeeping 時可用

這個月是 201203

上個月份
date -d 'last-month' +%Y%m
顯示 201202

前兩個月
date -d '2 months ago' +%Y%m
顯示 201201

2012年2月13日

iOS 好用 framework 或模組分享 (2012/9/12 更新)

開發 iOS app 時, 一些常用的功能都會有熱心的人已經開發好了, 如有找到適合的 framework 或 module 就不用重新自己造輪子囉~


搜集網站
http://www.cocoacontrols.com

iBook like reader
Leaves (https://github.com/brow/leaves)

書架
AQGridView (https://github.com/AlanQuatermain/AQGridView)
KKGridView (https://github.com/kolinkrewinkel/KKGridView)
GMGridView (https://github.com/gmoledina/GMGridView)
GSBookShelf (https://github.com/ultragtx/GSBookShelf)

PDF reader
VFR reader (https://github.com/vfr/Reader)

EPUB reader
AePubReader (https://github.com/fedefrappi/AePubReader)

eBook 製作工具 (HTML5 to iOS)
Baker Ebook http://bakerframework.com/

XML 解析
TBXML (http://www.tbxml.co.uk/TBXML/TBXML_Free.html)

JSON 解析
SBJson (http://stig.github.com/json-framework/)

Pull to reload
https://github.com/enormego/EGOTableViewPullRefresh

Three20 (Facebook App 使用)
http://three20.info/

CoverFlow 效果
Tapku (http://tapku.com/)
OpenFlow (http://apparentlogic.com/openflow/)

MGSplitViewController for iPad (比內建 UISplitViewController 更多功能)
http://mattgemmell.com/2010/07/31/mgsplitviewcontroller-for-ipad/

ASIHTTPRequest (上下載檔案, 非同步處理等)
http://allseeing-i.com/ASIHTTPRequest/


AFNetworking (一樣是網路連線的 wrapper)
https://github.com/AFNetworking/AFNetworking


ziparchive (壓縮/解壓縮 ZIP)
http://code.google.com/p/ziparchive/

QR Code
zxing (http://code.google.com/p/zxing/)

fmdb SQLite wrapper (簡化 SQLite 操作)
https://github.com/ccgus/fmdb

展開效果的 UIView
https://github.com/jwilling/JWFolders

ViewDeck (View 滑動效果)
https://github.com/Inferis/ViewDeck

ShareKit (快速製作 Facebook, twitter 分享功能)
http://getsharekit.com/

iCarousel (跑馬燈效果)
https://github.com/nicklockwood/iCarousel

iNotify (簡化 UINotification 類別)
https://github.com/nicklockwood/iNotify

TISwipeableTableView (滑動 tableview cell 產生新的 view)
https://github.com/thermogl/TISwipeableTableView

DTGridView (橫向 tableview cell)
https://github.com/danielctull/DTGridView

Kal - A calendar component for the iPhone (the UI is designed to match MobileCal)
https://github.com/klazuka/Kal

JHNotificationManager (A queue-able notification manager for custom view notifications)
https://github.com/jeffhodnett/JHNotificationManager

MBProgressHUD (客製化 alertview)
https://github.com/jk/MBProgressHUD

DejalActivityView (客製化 alertview)
http://www.dejal.com/developer/?q=developer/dsactivityview

YRDropdownView – A Polite UIAlertView Alternative for iOS (在上面會出現 UIAlertView)
http://buildinternet.com/2012/02/yrdropdownview-a-polite-uialertview-alternative-for-ios/

LIExposeController (linkedin style 的 view)
https://github.com/linkedin/LIExposeController

Cocoa plotting framework for OS X and iOS (畫折線圖、長條圖等)
http://code.google.com/p/core-plot/

MIMChart-Library (畫折線圖、長條圖等)
https://github.com/ReetuRaj/MIMChart-Library

翻頁效果1 (XBPageCurl)
https://github.com/xissburg/XBPageCurl#readme

翻頁效果2 (PaperStack)
http://api.mutado.com/mobile/paperstack/

iOS Boilerplate(A base template for iOS apps)
http://iosboilerplate.com/

ToolDrawer (伸縮的 toolbar)
https://github.com/aspitz/ToolDrawer

CMPopTipView (彈出 Tip 視窗功能)
https://github.com/chrismiles/CMPopTipView

wunderradio (Internet Radio SDK)
http://www.wunderradio.com/code.html

appirate (讓使用者增加評論 - review)
http://arashpayan.com/blog/2009/09/07/presenting-appirater/


2012年1月31日

[iOS] Flash (FLA, SWF) 轉換為 HTML5

由於 iOS 不支援 Adobe Flash, 但是支援 HTML5 所以在既有很多 Flash 內容的 content (動畫, 遊戲...), 可以嘗試利用一些工具來把 fla, swf 轉換成 HTML5 格式以放到 iOS 上執行...

FLA into HTML5 : Adobe wallaby
SWF into HTML5 : Google Swiffy
HTML5 開發 iOS (Hybrid 開發方式) : appmobi 網站

2012年1月16日

光華商場 2012 年公休日期表

大家去之前可以先留意一下, 不要撲空囉

2012年1月4日

安裝 PHP 擴充函式 (PEAR)

PEAR (PHP Extension and Application Repository)

可上 http://pear.php.net/ 官網搜尋想要使用的套件, 例如想安裝 Package Information: HTML_QuickForm2

可連 Internet 的話, 可用簡易安裝法
pear install HTML_QuickForm2

無法連外的話, 先手動下載該套件 (*.tgz or tar), 再執行
pear install HTML_QuickForm2-0.6.1.tar

P.S 如有相依套件則須按照一樣的方法事先安裝~
這個小工具發生錯誤