訪客留言簿

星期日, 1月 29, 2012

[筆記] 行事曆管理程式

前言

因為我不會寫程式,所以我把靈感寫在這。(圖片稍後畫完會再上傳)

介面說明

操作介面分成以下三個部分。

  1. 最上方的年份及狀態說明欄:會顯示目前所在欄位的年份、當月的一些統計,並提醒你,程式正在執行什麼動作,請不要打斷它。

  2. 直行並列的月份欄:最上層的月份小欄是固定住的,而裡面的筆記小欄是可以各行分開捲動的,所以若筆記項目一多,在游標指到的月份欄,右上角及右下角,都會顯示向上及向下的箭頭。

  3. 直向排列的筆記欄:就是筆記欄而已。各筆記欄的左上角,會有一個小小的數字,標示這是該月的第幾筆資料。不過因為會自動排序整理,所以並不是固定的。

主要功能

  1. 只用鍵盤即可操作,不需要滑鼠。
  2. 可以依特定格式,將純文字轉成超連結。
  3. 背景作業時,會照筆記的頭文字,自動排序整理。

操作方式

  1. 安裝後即會自動在背景作業。

  2. 按 F9 鍵,可以切換前景及背景作業。預設是全螢幕顯示。(若有其它程式也是在全螢幕下執行的話,本程式就不會有任何反應。)

  3. 第一次執行的話,游標會先停在系統現在所在的月份那欄,並建立一個空白筆記欄。只要在空白筆記欄中,輸入任何字,再按 Enter 鍵,就會在下方,新建一個空白筆記欄。如果你按住 Alt 加方向鍵左右,讓游標移到其它月份欄時,按下 Enter,原本沒有筆記事項的月份,也會出現一個空白筆記欄。

  4. 原則上,以下操作,是不會讓游標跑出現在編輯中的筆記欄的:四方向鍵、Home / End / Ctrl-Home / Ctrl-End、Shift 加四方向鍵。

  5. Alt 加四方向鍵,會讓游標在不同月份欄及筆記欄間移動。而 Ctrl 加四方向鍵,則是讓游標固定在現在的位置,只讓整份行事曆移動而已。(要怎麼在切換不同月份時,不讓游標跑掉是件麻煩事,可能到時只能依照編號來跳了。)

  6. 只要在筆記欄中,照著「連結 (文字)」這種格式輸入資料,就會自動建立超連結文字。當你把游標移到超連結文字內,按下 Enter 鍵時,就會展開原先的文字格式。展開原先格式的情況下,只要游標不離開小括號裡,就不會跳回超連結文字的形式。當然你也可以在展開的情況下,把任一邊的小括號拿掉,重新編輯連結。(就跟 plurk 一樣)

  7. 按 Tab 鍵,可以切換不同的顯示介面。預設還提供了「以月曆形式來顯示當月筆記數」的模式。

  8. 按 Alt 加空白鍵,就可以叫出改變視窗大小等的選單。(即圖形化系統內建的操作選單)

  9. 按 Ctrl 加 F 鍵,可以向前向後搜尋文字及連結。

筆記檔案的樣貌

筆記檔案,會存在你的家目錄底下,一個叫作 A_A 的資料夾內。(目前計畫是第一次執行程式時,會先問你要存放在哪。)

打開來,會先看到以西元年為名的不同資料夾。

再打開各年份的資料夾,裡面會有以 2012-01 這種年加月份的格式,來命名的「純文字檔案」。

打開純文字檔案,裡面只有一行行緊鄰著的純文字,並不會有任何標記語言。

所以你應該可以想像,為什麼一按 Enter,就會建立新的筆記欄了。

著作權聲明

我不會限制你,但也不希望你限制人。如果你的確是因為這篇文章,而寫出一個這種程式來的話,你可以宣告你的權利,但請不要用這份權利作惡。

星期五, 1月 27, 2012

[筆記] 理想的免空

前言

純筆記。

最近因為違法下載問題,讓很多免空被迫關門或設限,也妨礙到其他不是上下傳違法檔案的人,所以我想提出一些方案。

型態一:連坐懲處

全員註冊制。你上傳的檔案,可以分給指定的人,指定的人可以再分給他指定的人,但只要分出去的,有任何一個人被檢舉違法,由那個人到你這最根源的人為止,所有在同一條線上的,都得受處罰。(如:全員終生停用帳號且禁止再註冊)

型態二:評價篩選制度

與其讓少數版權持有人的帳號,或是站方來決定檔案是否該刪除,不如交由大眾來決定吧!

自動砍檔規則:

  1. 閱覽人數達一定數
  2. 註冊使用者給的正負評價總和達一定數
  3. 註冊使用者給的負評達一定比率

這樣子不但可以交由大家決定盜版是否該存在,還能把爛檔埋進黑暗裡,一舉兩得!

[linux] 利用文字終端機整理圖片 (1)

前言

純文字命令列好方便的呀!

本次目標

  1. 將檔名符合的圖片抓到單一資料夾內
  2. 大量轉換圖片格式並指定新檔名
  3. 快速打包複數資料夾成不同壓縮檔

基本觀念

  1. linux 的終端機是以 bash 這支程式為主,所以你要用的 shell 語言就叫 bash shell。(大概)

  2. bash 吃不到的東西就沒法交給指定程式處理。比如說 bash 預設是不會去抓「現在目錄中的隱藏檔」的,所以你用 ls 指令是列不出隱藏目錄的或檔案的,用 cp 指令也一樣複製不了那些東西。

  3. 你可以寫 shell script 檔案(副檔名為 sh 的純文字檔),來執行比較需要繁複判斷和使用者輸入資料的工作,但 shell script 裡的指令,跟你平時輸入到純文字終端機裡的是一樣的東西,只是有變數需要引用時,寫 shell script 檔案比較輕鬆。

將檔名符合的圖片抓到單一資料夾內

假設今天,我們用 Firefox,裝了 ScrapBook 跟 AutoSave,想要抓無名相簿的圖片的話,就會在我們的 ScrapBook 的 data 資料夾下,開出很多的資料夾來。不過要一個個打開來找想要的圖複製到別處,不是很麻煩嗎?

所以為了快速複製圖片,我們就必須先瞭解 bash 的萬用字元有哪些,還有我們要找的圖的共通特點有什麼。

假設我們要抓的圖片,都是數字 1 開頭,然後總共有 10 位數,格式是 JPEG 的話,就可以用「1?????????.jpg」來代表這些圖片。(可以先用 ls 指令測試)

在此假設你現在所在的目錄 /tmp,底下有一個 Firefox 的使用者設定檔資料夾名為 User,以及一個你想拿來放整理好的圖片的資料夾 GRAPH。這時,先把你的終端機,切換到 /tmp 底下,再輸入以下指令即可。(請不要連 /tmp$ 也輸入了)

/tmp$ cp User/ScrapBook/data/*/1?????????.jpg -f GRAPH/

大量轉換圖片格式並指定新檔名

假設你有一堆 BMP 圖,覺得太佔空間,想轉成 PNG 或 JPEG 圖,但直接用 convert 沒辦法保留原先的檔名時,就可以利用變數來讓程式自動填上正確檔名。

for f in *.bmp; do convert $f $f.png; done && rename 's/.bmp.png/.png/' *.png

上面這一行,其實是兩道指令。第一個是 convert 轉檔程式,第二個是 rename 重新命名。

然後這裡有利用「迴圈判斷式」中的 for...do...done 來處理不同檔名的檔案。f 是我給這 for 迴圈命名的變數名稱(可隨意改成其他英數字),$f 則是代表我要引用這變數。

迴圈裡面有個 in 是在指定迴圈的執行範圍,這裡是指定跑完全部的 bmp 就結束迴圈,也就是說,當有 01.bmp 和 02.bmp 兩個檔案時,第一次 bash 抓到 01.bmp,開始跑(do)一次轉檔,結束後(done)會再去跑 02.bmp,然後 bash 抓不到別的 bmp 時,就會結束這個迴圈。

(※用數學來說,就是函數 f(x)=a+1 時,假設 a 為 1-10 共十個數字,那就是計算十次;若假設 a 為 1 2 3 的話,就是計算三次。)

然後迴圈之中的工作,一定要記得在適當的地方加上分號「;」來斷開,才能再下達其他動作。比如說你可能會想 do 了 convert,就直接 do rename,這兩個 do 的動作,一定要用分號「;」隔開。(分號「;」要緊鄰前面的字,後面也要記得空一格,有時怎樣都跑不成功,就是因為多一格少一格的關係。)

而雙 and 符號「&&」,則是代表做完前一個指令,再接著做下一個指令。以這邊來說,用「&&」的話,就可以繼承前面的迴圈變數,繼續工作。跟寫在迴圈中不一樣的地方,只差在會跑一次迴圈就馬上做,或是迴圈全做完,才來做而已。

如果做完後,想順便清掉 bmp 圖,可以在上面的指令,加寫「&& rm *.bmp」,記得「&&」前要空一格。(如果寫進迴圈裡的話,一張張轉檔改名的同時,就會清掉,而不是全做完才清。)

rename 的用法改天有機會再談。這邊的 rename,主要是因為引用 f 變數,會讓檔名多出 .bmp,所以才要再修改一次的。

快速打包複數資料夾成不同壓縮檔

最後這節沒啥好說的。如果你有裝 7z 這程式的話,可以用下面的迴圈,幫你把不同名稱的資料夾,打包成不同名稱的壓縮檔。(7z 可以換成其他你喜歡的壓縮程式,壓縮格式和壓縮級別、是否加密也可以自己調整。)

for f in *; do 7z a "$f.7z" -mx=0 "$f"; done

這邊要記得用雙引號「"」包住檔名(即 $f.7z$f),不然檔名有空格時,程式會出錯。

希望 7z 加密的話,請加入「-p -mhe=on」這兩個功能,就會向你問密碼,然後加密檔名,讓人看不見壓縮檔裡面有啥了。

 

本站著作(不包含圖片、影音以及回應留言)係採用 Creative Commons 姓名標示-非商業性-相同方式分享 2.5 台灣 (中華民國) 授權條款授權