2011/12/26

scanf 回傳值

剛學 C 時並沒有注意到 scanf 回傳值。

scanf 讀取成功時會傳回轉換完成的參數數量,如果失敗則會傳回 EOF。讀取資料直到 EOF 可以寫成:
while( scanf(" %s", intput) != EOF ){
   // Todo
}

2011/12/24

for 迴圈

以前用 for 迴圈跑字串,都要寫好常一串:
char s[5]="123";
int index = 0;
while( s[index] != '\0' ){
   // get s[index];
   index++;
}

無意間看到有人這樣寫:
char s[5]="123";
int index;
for(index=0; s[index]; index++){
   // get s[index];
}

原因是 \0 會被當作 false,換做其他資料型別的陣列就沒辦法這樣寫。

2011/12/23

PHP Closing Tags


一般寫 PHP 會將系統設定、資料庫連結等功能分開放在多個不同的檔案中。

index.php:
<?php
   require('settings.php');

   // something else

   session_start();
?>

settings.php:
<?php
   // some settings
?>
 

以上程式執行以後會噴錯誤訊息:
session_start(): Cannot send session cache limiter - headers already sent
原因是在 index.php 呼叫 session_start() 之前已經輸出資料,不過到底是哪裡有輸出資料?仔細看才會發現 settings.php 在「?>」後方還換了一行,換行是在 PHP closing tag 之外,所以就被當作一般資料送出。

當程式很龐大時,這種 bug 實在會讓人摔鍵盤、丟滑鼠、凹螢幕。

事實上 PHP 程式不加上結尾的「?>」也是可以執行的,直譯器到檔案結尾會自動當作該程式段落結束,所以程式可以改寫成這樣:

index.php
<?php
   require('settings.php');

   // something else

   session_start();
 


settings.php
<?php
   // some settings
 
 

2011/12/08

Enable SSH in VMware ESXi

在 ESXi host 上按 F2 登入,選 Troubleshooting Options,將 local / remote Tech Support 啟動。

設定完畢後重新啟動 Management Agent。

2011/12/03

清理硬碟小方法

最近硬碟漲價,聽說是幾乎買不到,只能靠節省硬碟使用量來撐一段時間。

很久前有提到清除系統暫存檔的方法,但重複的檔案其實是最佔硬碟空間的。

我們時常把檔案複製到不同的目錄、更改檔案名稱,整理時卻又忘記改回來,或是懶得打開看內容就乾脆放在一起,硬碟中很可能有二份甚至更多份相同內容的檔案,找出並刪除這些檔案可以省下不少硬碟空間。

網路上有不少搜尋重複檔案的免費工具,我用的是 DuplicateCleaner,能指定搜尋目錄以及搜尋條件 (日期、大小、內容),搜尋後會將重複檔案已群組方式列出,並能透過選擇工具縮短整理的時間。


DuplicateCleaner 執行畫面



單比較檔案內容可能還是會有漏網之魚,例如照片檔案大小不同,但是打開來看到的畫面可能還是會相同。找出這些重複的影像檔能再多幫你省下不少硬碟空間。

網路上也有不少搜尋重複影像檔的工具,我只試了 VisiPics,感覺還不錯用。VisiPics 能設定搜尋目錄、辨識重複影像的門檻,也有快速選擇工具協助減少整理的時間。

VisiPics 執行畫面


天啊 .... 我好宅 XD

2011/11/16

ChromiumOS


從 ChromiumOS 發表當天編來玩玩後,已經好一陣子沒碰了,前陣子某然看到 Google OS 的新聞,就把 ChromiumOS checkout 出來在編一次,沒想到與之前看到的差非常多。

新版的介面很有親和力,網路、中文支援也比以前完整。


開機後先選擇語言



可以選擇要使用哪一個網路設定,選無線網路可先設定連線密碼



網路可以使用時,系統會自動檢查更新



使用 Google Account 登入




登入成功



網路設定頁面





可以使用 File Manager 從取硬碟、隨身碟上的資料




File Manager 操作畫面



File Manager 操作畫面


另外,當網路環境必須先透過網頁驗證後才能使用的話,ChromiumOS 可以先用隱身模式開啟瀏覽器,等到使用者驗證完畢以後,再切回一般模式繼續使用。

幾套輕量的 Linux 發行版

朋友一台舊筆電捨不得丟掉,想找方法讓他可以繼續用。CPU 600MHz、RAM 128M,要跑有圖形介面的 OS 實在頗辛苦。

從網路上找了幾套測試,目標是有圖形介面,操作盡量不碰到 terminal,可以上網也看得到中文字。


Lubuntu




記憶體 128MB 就可以動,圖形介面可漂亮,且已經支援中文。另外有套件庫可以自行安裝需要的軟體。




xPud





記憶體至少 192MB,整個 ISO 僅 50MB 左右,開機非常快,介面乾淨漂亮且有中文。xPud 整個系統僅安裝 Firefox,沒有其他軟體。




Tiny Core Linux



網址:http://distro.ibiblio.org/tinycorelinux/welcome.html

記憶體 128M 就可以動,開機頗快,可以透過套件庫安裝軟體,好像沒中文。




Damn Small Linux





記憶體 128M 就可以跑,開機稍慢,進入桌面後記憶體只使用 25MB 左右,可以透過套件庫安裝軟體,沒有中文 (另外安裝字型檔後可以顯示中文)。



2011/10/26

使用 EXIFStat 統計拍攝資訊



好用的小工具,可以為統計照片資訊,列出常用焦段、光圈大小以及快門速度。可以利用這些資訊當作設備選購的參考。



EXIFStat v1.6
http://drizztcp.wordpress.com/2010/12/29/exifstat-v1-6-release/

2011/10/14

Ubuntu 11.10 Released

這次官方做的展示網頁實在讓人讚嘆,左方的軟體啟動圖示點了都有過做!



網頁載入時還顯示開機畫面,讓我下了一跳 XD

展示頁面:

2011/09/23

Ruby Passenger with Nginx on FreeBSD

事實上 FreeBSD 安裝很簡單,ports 都整理好了:
cd /usr/ports/www/rubygem-passenger
make config  # "Use Nginx"
make install clean


不過這次因為 Redmine 卡在套件版本相依性,除了 Ruby 從 ports 裝,其他 RubyGems、Rails、Rake 都沒用 ports。好險裝 passenger 再編譯 nginx 模組沒想像中的困難。

安裝 passenger:
gem install passenger

裝好後 passenger 的資料會在 /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.9/ 目錄下,nginx 模組的程式碼會在底下的 ext/nginx/。

找到以後就可以準備編譯 nginx。到 /usr/ports/www/nginx 目錄下編輯 Makefile,在「CONFIGURE_ARGS」後加上 --add-module 參數:
CONFIGURE_ARGS+=--prefix=${ETCDIR} \
      --with-cc-opt="-I ${LOCALBASE}/include" \
      --with-ld-opt="-L ${LOCALBASE}/lib" \
      --conf-path=${ETCDIR}/nginx.conf \
      --sbin-path=${PREFIX}/sbin/nginx \
      --pid-path=${NGINX_RUNDIR}/nginx.pid \
      --error-log-path=${NGINX_ERRORLOG} \
      --user=${WWWOWN} --group=${WWWGRP} \
      --add-module=/usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.9/ext/nginx

接著 make install clean 便會自動將 passenger 模組編譯進去。


最後修改 nginx.conf:
http {
   ...
   passenger_root  /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.9;
   passenger_ruby  /usr/local/bin/ruby;
   passenger_max_pool_size  10;
   ...
   server {
      listen 80;
      server_name  my.site;
      root /path/to/my/site;
      passenger_enabled on;
      passenger_use_global_queue on;
   }
}


參考資料
Installing Passenger Nginx module on FreeBSD
http://www.snippety.org/articles/2009/05/16/installing-passenger-nginx-module-on-freebsd/


Phusion Passenger users guide, Nginx version
http://modrails.com/documentation/Users%20guide%20Nginx.html

2011/09/16

MySQL 5.5 編碼相關參數異動

前陣子把主機上的 MySQL 從 5.1 升到 5.5,啟動時發生錯誤:
[ERROR] /usr/local/libexec/mysqld: unknown variable 'default-character-set=utf8'
[ERROR] Aborting

看了「What Is New in MySQL 5.5」才知道 default-character-set 參數已經不再使用,my.cnf (in FreeBSD) 的設定改需要稍做修改:
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

2011/09/10

sshd Listen on Multi Port


某些網路環境會擋 port 22,sshd 只 listen port 22 就沒辦法用。

sshd 可以同時 listen 多個 port,在 FreeBSD 中修改 /etc/ssh/sshd_config:
Port 22
Port 2222

重新啟動 sshd:
/etc/rc.d/sshd restart

sockstat 看一下應該就會看到:
< sockstat | grep sshd
root     sshd       1586  4  tcp4   *:22                  *:*
root     sshd       1586  6  tcp4   *:2222                *:*

2011/07/28

GnuWin32

用慣了 Linux 上的終端機以後,再用 Windows 終端機大概會很不習慣,許多好用的小工具會找不到。GnuWin 將一些開放原始碼的小工具移植到 Windows 上,如 ls、grep、awk、wget 等,想得到的幾乎都有。

下載壓縮檔,該壓縮檔只包含安裝工具。執行 download.bat,程式會將工具包下載回來,再執行 install.bat 將下載回來的工具解壓縮放進「gnuwin32」目錄,執行檔會在 gnuwin32/bin/ 中。

最後在 Windows 環境參數 PATH 中加入 gnuwin32/bin/ 就可以在使用了。



GnuWin
http://gnuwin32.sourceforge.net/

2011/07/06

[轉貼] 10 個社群技巧

原文來自 louisgray.com - The Secret 10 Step Guide to Giving Good Social,翻譯自 esor huang
  • 做個有趣的人
  • 發掘有趣的事 (尤其如果做不到第一點)
  • 盡量 (厚著臉皮) 和他人互動
  • 用熱情的態度分享你感興趣的事物
  • 不要當個怪人
  • 但要證明你確實是個活生生的人
  • 融入社群的 (潛) 規則
  • 不要製造過多重複訊息
  • 不要太興奮聒噪
  • 當個友善的人~

我要加油  >"<

2011/06/29

暑期社群活動

7.02 BlackTrack 5 Linux 聚會

簡介:Backtrack 5 是一套集各類資訊安全工具於一身的 Linux 發行版本,不僅僅是一套專給資訊安全人員用的 Linux 發行版,也是可以供給一般人學習 Linux 資訊安全的好工具,本課程將會帶大家入門使用 Backtrack 5 和介紹他的特色。
主講是正妹小飛機!趕快報名吧!

報名網址:http://www.openfoundry.org/en/workshop/details/158


7.03 Ubuntu 11.04 Release Party in Taichung

活動報名網址:http://www.accupass.com/Event/Register?eid=561045917168188


7.22 - 7.23 HIT 駭客年會

一年一度的駭客聚會,討論資訊安全相關議題,包括各種攻擊手法、病毒與防毒、逆向工程等等,會場還有 wargame 可以玩。在會場使用電子產品需要特別小心 ... XD

網站:http://blog.hitcon.org/


8.20 - 8.21 COSCUP 開源人年會

以開放原始碼為主軸的社群聚會,是台灣眾多軟體開發者、推廣者與使用者共同參與的活動。別忘了緊張刺激的「閃電秀」和數量無限多的 pizza!

網站:http://coscup.org/2011/zh-tw/

2011/06/25

FlickrLinker 擷取照片網址工具



Flickr 網站提供使用者存放自己的照片,但免費帳號僅能檢視最新的 200 張照片。

FlickrLinker 工具可以讀取網頁內容並將照片的獨立網址紀錄下來,當照片超過 200 張以後,可以透過留下來的連結連到照片的獨立頁面,以後變不需擔心找不到舊照片的網頁連結。

打開 FlickrLinker 後輸入使用者 Photo Stream 網址,如「http://www.flickr.com/photos/johnroyer/」,程式便會自動讀取網頁內容並將照片獨立頁面網址顯示於文字方塊中。

另外程式會自動判斷是否有「下一頁」,有的話會自動翻頁直到所有照片連結讀取完畢,若付費帳號顯示頁數過多,程式會不中斷直到頁面讀取完畢,執行中仍然可以複製網頁連結,跳出請點選試穿關閉按鈕。

下載:請至程式下載頁面

2011/06/11

逢甲畢業典禮

轉貼:開元中最好的 web 開發資源

CoolShell.cn 網站上整理了不少網頁開發相關資源,包括:
  • 學習 HTML5 編成與設計
  • Server 端工具
  • PHP Framework 與工具
  • 資料庫
  • API 與即時資訊處理 (在線數據)
  • 線上軟體開發與媒體工具
  • 程式資源與版本管理工具
  • JavaScript Framework
  • JavaScript 移動與觸摸相關 framework
  • jQuery 外掛與相關資源
  • HTML5 視訊播放器
  • JavaScript 音訊處理與視覺化工具
  • JavaScript 2D、3D 圖形
  • JavaScript 與 HTML5 API (接口?)
  • 其他 JavaScript 工具
  • Client 端工具
  • CSS3 與字型資料
  • 網站樣板

忘了貼網址 XD

开源中最好的Web开发的资源

2011/06/10

Redmine 簡介

軟體開發時,通常都會記得程式碼要用版本管理系統,不過很容易忘記時間管理、文件管理,程式實做後一定會遇到 bug,到時除錯、系統異動等管理又會是一大問題,若需要包含這些功能的管理平台,Redmine 應該會是個不錯的選擇。


2011/06/08

ACM 解題

很久沒碰手癢摸了幾題簡單的,發現幾年沒碰後現在像個渣,連 scanf 也不會寫。還蠻懷念以前和同學互尬程式的感覺。

以下幾個 online judge 平台,大家可已是是身手:

若有其他平台上面沒有列出,歡迎提供!謝謝。

2011/06/06

上班族

轉貼 from Plurk
上班打卡制

下班責任制

出包自顧自

過勞沒得治

ClamAV in Ubuntu

安裝 Clam AntiVirus:
sudo aptitude install clamav clamav-freshclam

安裝完畢先更新病毒定義檔:
sudo freshclam

掃描資料夾內容:
clamscan -r /home

將有問題的檔案移動到 tmp/ 目錄:
clamscan -r /home --move=tmp/

Clamav 辨識率還可以接受,不過話說 tar 把包以後沒掃壓縮檔內容,不知道是不是自己參數下錯:
clamscan --bytecode=yes --include-pua=packed --include-pua=spy --scan-archive=yes packed.tbz

若 ClamAV 沒掃出已知病毒,可以透過下面網址將病毒樣本交給 ClamAV 團隊測試建檔:
http://cgi.clamav.net/sendvirus.cgi

2011/06/04

+1 按鈕

在部落格中塞了分享按鈕潮一下 :P

Blogger 的只要在設計選項中勾選「顯示分享按鈕」就會自動顯示,如果網頁樣板中沒有這個設定,可以參考這篇文章加入代碼即可。


在您的網站中加入 +1 按鈕 - +1 button API - Google Code
http://code.google.com/intl/zh-TW/apis/+1button/

2011/05/29

讓 Google Docs 幫你輕鬆記帳

由於 Google Docs 操作簡單,再加上還可以自己寫 query 撈資料,放棄自己寫的工具全部丟到上面跑了。

個人記帳大概只用到輸入、列表、月支出、類別支出幾項功能,Google Docs 的試算表、問卷功能、Visualization API 幾個功能剛好滿足需求,拼拼湊湊大致就有個陽春的介面可以用哩。

新增「表單」,利用寫問卷的方式輸入資料。



依照自己習慣的填寫方式建立表單,建立完成後記得將網頁底下的網頁連結記下,以後記帳就是連到這個網址。當然,網址不要給別人看到,不然其他人會幫你花錢 XD。

回到 Google Docs 列表會看到剛剛建立的表單,點一下會以試算表的方式打開,如果有輸入資料的話大概會長得類似下面那樣,有特別注意的話應該會看到 Google 另外多放了一個「時間戳記」欄位,這個欄位會紀錄新增資料的時間。



接下來從左下角新增一個工作表,新增的工作表專門做來做資料統計。

與 Excel 的用法類似,在儲存格中以等號開始就會當作運算指令處理資料,例如針對剛剛建立的表單輸入:「=sum( B:B )」則會顯示總支出金額。

Google Docs 提供的 Visualization API 功能,能讓使用者用類似 SQL 的語法把試算表當作一個資料表操作,「按月計算支出」以及「統計各類別的支出金額」語法會稍微複雜一點,不過大概同一個格式複製貼上,改一改欄位名稱就可以用了。

Query 語法分成二部份,第一部份為指令資料範圍,第二部份查詢條件,二部份由分號「;」隔開。第一部份要告知需要處理的資料範圍,若需要存取不同工作表的資料需要加上工作表名稱。查詢條件需使用雙引號「"」將語法包起來,以下語法是利用欄位 A 的時間戳記將資料以「月」分開加總,可以得到每個月的支出總和。如果欄位不一樣,記得更換一下代號。
=query('工作表1'!A:B; "select year(A), month(A) , sum(B) group by year(A), month(A) order by year(A) desc, month(A) desc ")



按照類別統計支出金額感覺上簡單很多。
=query('工作表1'!B:C; "select (C), sum(B) group by C order by sum(B) desc ")


最後,若要繪製統計圖表,將要用來繪圖的資料區塊選取後,點選「插入圖表」按鈕即可。





相關資料:Google Visualization API Query Language
http://code.google.com/intl/zh-TW/apis/chart/interactive/docs/querylanguage.html

2011/05/26

Ubuntu 客製化

安裝 Ubuntu Customization Kit:
sudo aptitude install uck

主選單 => 系統工具 => Ubuntu Customization Kit 啟動。

製作 LiveCD 或 LiveUSB 用系統內建的「開機磁碟建立工具 (usb-creator-gtk)」似乎就夠了。


自己改了 Ubuntu 11.04 映像檔,主要塞了一些 CLI 常用工具,另外裝了 ClamAV 拿來掃毒。二個載點內容相同,用 7zip 解壓縮後大約 1.9GB,再用 Universal USB Installer 轉到 USB 上。

MediaFire:
http://www.mediafire.com/?dvlhhf8ix5mv9rh
http://www.mediafire.com/?0bdvcvrp7nagqt3
http://www.mediafire.com/?bv3hixm0ymu867u
http://www.mediafire.com/?lilbp55s4k88bw9

MegaUpload:
http://www.megaupload.com/?d=1NF2VTHL
http://www.megaupload.com/?d=3G8HFY6V
http://www.megaupload.com/?d=9ERGNZ1F
http://www.megaupload.com/?d=PDBFV8VG

MD5 checksum:
b8ed7023636b8d67070e0aced87d6416 ubuntu-11.04.1-desktop-i386-custom.iso

94a8700b13c33362592cf1083114ead8 ubuntu-11.04.1-desktop-i386-custom.7z.001
3589b1e8d61e51df3df6b1f34267ecbf ubuntu-11.04.1-desktop-i386-custom.7z.002
181ec1c6b7a2290a4a5f01582b616bbb ubuntu-11.04.1-desktop-i386-custom.7z.003
30893200b18e46cede41d93eac40fe6d ubuntu-11.04.1-desktop-i386-custom.7z.004

2011/05/25

MySQL Case Insensitive for Table Names

MySQL 的資料庫為一目錄、資料表為數檔案,MySQL server 會依照 SQL query 去讀取指定位置的檔案,但在 Windows 底下檔名不分大小寫、Linux 底下則有分大小寫。

在 Windows 中底下二個 SQL query 的結果相同:
select * from user_Name;
select * from user_Name; -- 不分大小寫,結果同上

但若是將做資料轉移從 Windows 轉到 Linux 後,卻會因為區分大小寫而造成 dump 回去的資料與 query 到的資料表被視為不同:
create table `user_Name` ( blablabla ..... );
select * from user_name; -- 大小寫不同撈不到資料

若遇到這情況,可以在 my.ini (或 my.cnf) 的 [mysqld] 標籤後加上「lower_case_table_names」參數,讓 MySQL server 處理指令時自動處理。

= 0:資料庫與資料表名稱均區分大小寫

= 1:資料庫與資料表檔案名稱均使用小寫,SQL 語法中的資料庫與資料表名稱均轉換成小寫再做比對

= 2:建立資料庫與資料表時檔案名稱區分大小寫,查詢時轉換成小寫再做比對,僅是用於不區分大小寫的檔案系統。


參考資料:MySQL case insensitive table and column names - Cosmin's Wiki
http://cosminswiki.com/index.php/MySQL_case_insensitive_table_and_column_names

2011/05/24

藍星侵略地圖


在較大的地圖上查看藍星侵略地圖


我還蠻好奇那個在海上的是怎麼回事? XD

2011/05/14

打包檔案的好幫手:tar 與 split

想幫資料做備份,可用 tar 合併成一個檔案:
tar -cvf backup.tar mydata/

tar 只是將多個檔案合併在一起,若希望將資料壓縮省點空間,可以使用 -z (gzip) 或是 -j (bzip2) 壓縮:
tar -zcvf backup.tgz mydata/

若是壓縮後的資料還是太大沒辦法燒錄是光碟,可以使用 split 工具將備份檔分割。先使用 tar 將資料打包、壓縮,在傳給 split 做分割:
tar -xcvf - mydata/ | split -b 650M - backup.tgz.

split 預設使用 a、b、c 當作分割檔標記,上述方式讓單檔最大 650M,檔名分別為 backup.tgz.a、backup.tgz.b、backup.tgz.c ...。

若要讓 split 以數字方式為檔案命名,可以加上 -d 參數,檔案 suffix 則會改為 1、2、3 ...。另外 split 預設字串遞增一次為二個位數,表示檔名後面會是:00、01、02、03 ....,用參數 -a 1 可讓字串遞增改為一位數。


要還原資料時,使用 cat 把資料串接回來即可:
cat backup.tgz.* | tar -xvf -



參考資料:仲佑的網誌 » Blog Archive » Tar and Split
http://yowlab.shps.kh.edu.tw/wordpress/?p=289

wget 續傳、限制速度

wget 是 Linux 上幾個很長用來下載檔案的工具,使用方法很簡單:
wget http://my.url.com/file.zip


當下載到一半斷線,wget 參數 -c 讓檔案續傳:
wget -c http://my.url.com/file.zip


如果下載的檔案很大,想留先頻寬給其他程式使用,則加上 --limit-rate 參數:
wget --limit-rate=400k http://my.url.com/file.zip


下載檔總是需要等待,如果想先去做其他事情,用 -b 參數讓 wget 在背景下載檔案:
wget -b http://my.url.com/file.zip

網路




網路改變了不少生活方式。明明並肩而坐卻用 Plurk 或是 Facebook 聊天,硬是要等到沒電腦、沒網路才肯開口。現在手機可以上網後,路上、捷運上、公車上甚至斑馬線上,都可以看到人二眼僅盯著手機螢幕,完全不理會周遭進入自己的網路世界。






話說現在什麼東西都要資訊化,什麼東西都要上傳到雲端,不如跟攻殼機動隊一樣做電子腦化,以後通訊可以改用加密無線通訊或是有線通訊,連橇鍵盤的力氣都省了。若以後真的只剩下一張嘴的話,說不定還可以把電子腦上傳到雲端服務,身體就不要用了,「升天」以後還長生不老多好。

2011/05/09

XX 產生器

1. Commit Message Generator (純惡搞)
http://whatthecommit.com/

範例:commit -c "Test commit. Please ignore"



2. 專案出包理由產生器 (看也知道是惡搞的)
http://bingo.handlino.com/machines/3586

範例:直到上線前一天,PM 離職了

圖片編碼後鑲在網頁中

無意間發現 Google 404 頁面中的背景圖片並非以圖片形式存在,瀏覽器將 CSS 中的 base64 解碼後轉成圖片顯示而成。

檢視原始碼可看到:
background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKsAAA....)


以這種方式鑲圖片的好處,除了點右鍵沒辦法令存圖片、暫存檔沒有實體檔案外 (其實我原始的目的就是想複製他的圖片 XD),主要的用途是讓瀏覽器不會對伺服器做而外的要求動作。

一般來說,瀏覽器會先取得 HTML,解譯過後發現需要額外的檔案,如:CSS、Javascript、圖片等,就會依照 HTML 中的網址向伺服器要檔案,若檔案數量很大則可能會造成伺服器不少負擔。若是將檔案直接鑲在網頁當中,瀏覽器解譯後直接使用,則不必再向伺服器要求資源。


參考資料:Data URI Scheme @ Wikipedia
http://en.wikipedia.org/wiki/Data_URI_scheme


找到一個工具可以將網路上的資源轉 base64,供大家將資源鑲在網頁中。

Binary / Image File to Base64 Encoder / Translator
http://www.greywyvern.com/code/php/binary2base64

2011/05/01

uSketch:讓照片走素描風

uSketch 是最近在 App Store 上面找一個很棒的修圖軟體,可藉由程式原本設定的樣式將原本的照片轉成類似素描的畫風。



原始照片




應過 uSketch 調整過後的照片,很有美感。

iPad Apps

一些不錯用的 apps 列表。

網路類:
  • Google Search
  • Opera
  • ReadPad (for Google Reader)
  • IM+


社群:
  • Facebook / MyPad
  • Plurk / 破浪
  • Twitter


旅遊相關:

照片工具:

音樂:

遊戲:
  • Angry Bird (讓人 angry 的 bird ...)
  • Gun Bros.
  • Fruit Ninja
  • Tesla Wars (非常不建議在客運上面玩 Orz)


其他:
  • TED / TED + SUB
  • UNIQLOCK (很有藝術感的時鐘)
  • Calculator Pro for iPad


只碰了一個月 iPad 所以比較喜歡的 apps 差不多就是些,有遺漏什麼好玩的東西再請大家推薦吧~


相關網站:appleseed, 蘋果核 - 樂多日誌
http://blog.roodo.com/appleseed

2011/04/30

無線網路定位好恐怖

當初一直以為一定要 GPS 才可以定位,線最近發現無線網路也可以精確的定位而且誤差超小,但是百思不解到底是如何定位,一直到最近才發現 .....。

無線網路的定位方式不是即時測量,而是透過網路搜尋無線 AP 的 MAC 所在位址。由於家裡的 FON 幾年沒開過機,加上回家以後附近幾乎沒有基地台,無線網路定位就失靈。

由於定位要有無線網路,基地台又必須在某個時段曾經開機過,所以 .... Google 街景車!

聽說 Android 手機用 GPS 定位以後又連上網路,還會自動更新附近基地台的地理位置 ...

2011/04/27

dos2unix in Ubuntu

Ubuntu 10.04 的套件庫中似乎沒有 dos2unix 或是 unix2dos 套件,不過有其他工具可以使用「tofrodos」。

安裝套件:
sudo aptitude install tofrodos


安裝完畢,需要轉到 unix 格式使用「fromdos」,轉到 dos 格式則使用「todos」。

轉為 unix 格式:
frodos file.txt

轉為 dos 格式:
todos file.txt


參考資料:dos2unix missing (Ubuntu 10.04)
http://www.virtualhelp.me/linux/164-dos2unix-missing-ubuntu-1004

2011/04/24

數學家與酒保

轉貼 from Plurk
一群數學家走進一家酒吧。

第一位說:「我要一杯啤酒。」
第二位說:「我要半杯啤酒。」
第三位說:「我得四分之一杯的啤酒。」

酒保拿出兩杯,說:「這就是你們的極限嗎?」

使用 qrc 為執行檔加上圖示 (for Windows)

Qt 編譯出的執行檔預設沒有圖示,可以透過設定檔方式修改執行檔所要使用的圖示。

新增一個 qrc 檔案:
IDI_ICON1 ICON DISCARDABLE "myApp.ico"

myApp.ico 可以設定成自己要使用的圖示,不過只支援 ico 檔案類型。建立完畢後打開 Qt 專案檔 (*.pro) 加入一行參數:
RC_FILE += app.qrc

重新編譯專案以後應該可以看到執行檔鑲上 ico 圖示。

這個方法只有在 windows 上可行,在 Ubuntu 底下編譯後仍然沒效。上述所建立的 qrc 文件不是官方所使用以 XML 方式撰寫的文件,官方教學文件也沒有提到這個作法,搞不太清楚為什麼?

參考資料:
怎样设置QT生成exe文件的ico图标呀? - Qt中文论坛
http://www.qtcn.org/bbs/read.php?tid=18001

2011/04/20

同學們上課囉

同學們上課囉


很有趣的一間餐廳,有班長、副班長、康樂股長衛大家服務,還有國立編譯館出版的菜單,旁邊還放了一堆玩具、桌遊和漫畫。說是去吃飯,不如說是去玩。

下次台中幫聚餐試試看吧 XD

Facebook 粉絲頁面:同學們上課囉

FreeBSD 使用者資源限制

之前某堂課讓大家到學校的大型主機寫程式,有些人大概想試試看大型主機到底有多強,就弄了個迴圈下去跑:
while( 1 )
   fork();

高級的 server 果然不一樣,load avarage 衝到幾百都還活著,問題是別人上機考就爆了。

FreeBSD 中有個設定檔在 /etc/login.conf 可以限制使用者 CPU、記憶體和程序的使用,印象中預設是的吧。設定檔中有少可以使用的參數:

  • coredumpsize:core dump 最大值
  • cputime:最大 CPU 時間
  • datasize:最大記憶體使用量
  • filesize:單一檔案最大體積
  • stacksize:單一程序最大可使用 stack 大小
  • maxproc:最大可執行程序量
  • memoryuse:單一程序最大記憶體使用量
  • vmemoryuse:單一程序最大虛擬記憶體使用量
  • openfiles:單一程序最大可開啟的檔案數量

詳細說明還是手冊最詳細。

13.7 使用者資源限制 - FreeBSD 使用手冊
http://www.freebsd.org/doc/zh_TW/books/handbook/users-limiting.html

2011 暑期活動

COSCUP:8/20 - 8/21
http://coscup.org/2011/

駭客年會:7/22 -7/23
http://blog.hitcon.org/

鳳中管樂暑期演奏會:8/20 @ 鳳山國父紀念館


最重要的二個活動撞期,殘念 >"<

整人大法

本是同根生,何必搞成這樣咧? XD

2011/04/11

Gnome Launch Party

Gnome 3 Launch Party 好歡樂啊,可惜沒有在金錢豹舉辦 ... (誤)




Gnome 3 的介面設計差好多,怎麼看都很不習慣。話說整個 OS 裡面只有 Firefox 可以打中文,這樣算是 Gnome 的 bug 還是 Firefox 的 bug? XD

2011/04/07

宅!

在某餐廳看到的對聯:
一入宅門深似海

從此正妹變路人

2011/04/02

愚人節快樂

愚人節快樂!玩電腦的總是要在 4/01 惡搞一下~ XD




今年最歡樂的大概是噗浪吧,騙人的騙人、換暱稱的換暱稱,河道上面大概沒什麼可以相信的了,連掰噗都是假的! XDDD









感謝 CrBoy 大大願意出來分享



掰噗大亂!

2011/03/27

馴獸師

在「瘋台灣」看到一句很有趣的對話:「海豚很聰明,聰明到只要兩個禮拜就可以訓練工作人員站在岸邊為他們吃東西」

2011/03/16

在 FreeBSD 中使用 ramdisk 編譯 ports

再次想不開在 FreeBSD 底下編譯 KDE。

希望速度能夠加快,使用 4 核心機器並加大記憶體,參考餅乾之前的文章「用 ramdisk 加速 freebsd 編譯 ports 的速度」,配了 2GB 的記憶體拿去塞 obj。

不過這次還是沒能讓 CPU 跑到 100%,感覺還是卡在 IO。

在編譯 KDE library 的時候 CPU 停頓很久,用 iostat 看到有實體硬碟的 IO (不過只有 3MB/s 左右),才想到編譯新的 lib 時會 dep 到已經安裝的 lib。另外編譯時 cc1plus 用掉了 1.7GB 的 SWAP 使整體速度又往下掉了不少。

這次 make install KDE4 比上一次快好多,扣掉等待 make config 的時間還不到一天!

2011/02/28

耳機專賣

首都音響
http://www.kcaudio.com.tw/

海恩耳機
http://www.avmega.com.tw/earmega/


跑了幾間店買耳機。

感謝首都音響的老闆,居然能在人這麼多的行況下讓我靜下細細品味一小時的音樂。

ps. 神鬼奇航的原聲帶交響樂似乎不錯 .... (手癢)

2011/02/26

urDiary

urDiary 是為了「晨間日記」撰寫的小工具。

2011/02/24

耍笨

駭客攻擊 127.0.0.1 以後,今天又有個笨蛋把 DNS 設定成 192.168.1.1

ps. 那個笨蛋就是我 / ____ \

2011/02/19

NCHC for Ubuntu sources.list

最近 tw.archive.ubuntu.com 有時候連不上,安裝套件時常常卡住,所以將 sources.list 改連到國網中心。(我直接 s/tw.archive.ubuntu.com/free.nchc.org.tw/,還不知道會不會出問題,修改前請記得備份)

deb http://free.nchc.org.tw/ubuntu/ maverick main restricted
deb-src http://free.nchc.org.tw/ubuntu/ maverick main restricted

deb http://free.nchc.org.tw/ubuntu/ maverick-updates main restricted
deb-src http://free.nchc.org.tw/ubuntu/ maverick-updates main restricted

deb http://free.nchc.org.tw/ubuntu/ maverick universe
deb-src http://free.nchc.org.tw/ubuntu/ maverick universe
deb http://free.nchc.org.tw/ubuntu/ maverick-updates universe
deb-src http://free.nchc.org.tw/ubuntu/ maverick-updates universe

deb http://free.nchc.org.tw/ubuntu/ maverick multiverse
deb-src http://free.nchc.org.tw/ubuntu/ maverick multiverse
deb http://free.nchc.org.tw/ubuntu/ maverick-updates multiverse
deb-src http://free.nchc.org.tw/ubuntu/ maverick-updates multiverse

參考資料:凍仁的 Ubuntu 筆記: Ubuntu 9.10 sources.list
http://jonny.ubuntu-tw.net/2009/11/ubuntu-910-sourcelist.html

2011/02/09

VMware ESXi: File not found

ESXi 沒有 template 功能,建立好樣板以後只能打開 database vrowser 手動複製虛擬機器設定。



參考「How to clone virtual machines in VMware ESXi」一文,複製了 vmx、vmdk 二個檔案到新的資料夾,不過啟動新建立的虛擬機器都會出現錯誤訊息「File not found」。

後來複製資料夾下所有的檔案,複製後發現 001.vmdk 和 002.vmdk 檔案大小都會變成 4G 左右,整個 VM 的容量增加到三倍。

查資料才知道 001.vmdk、002.vmdk 可能是 snapshop 所建立,複製時可能會被當成 link 連回原來的 vmdk,所以檔案大小會改變。

將 vmx 下載開啟後,找到「ide0:0.fileName = "133.12_XP-000002.vmdk"」,所以複製檔案時選擇 002.vmdk 即可。

2011/02/08

Qt with QSqlDatabase

程式中有使用到 QSqlDatabase 函式庫,標頭檔也正確引入,編譯時若出現錯誤訊息:
error: QSqlDatabase: No such file or directory

表示 *.pro 設定檔尚未設定 SQL 支援,參考程式範例加入設定:
QT += core gui sql

2011/01/27

qtcore4.dll 找不到「_Z5qFreePv」進入點

使用 Qt Creator 編譯後,執行檔會找不到動態函式庫。二種解法,一種是設定系統環境參數 (PATH),一種是將函式庫複製到執行檔目錄當中。

原本是將 Qt\2010.05\bin\qtcore4.dll 複製到執行檔的目錄下,執行時會出現找不到「_Z5qFreePv」進入點的訊息,後來才知道 Qt 有二個 bin 的目錄,且二個動態函式庫的大小也不一樣,需要複製的是 Qt\2010.05\qt\bin 底下的檔案。


參考資料:QT编译后release下无法执行,找不到dll输入点
http://blog.163.com/modingfa_002/blog/static/11092546620103291173056/