炸蝦碎碎念。

[Notes, GNU/Linux, Open Source, Ruby on Rails, Computer Science, Archlinux]

[Linux] Archlinux安裝KDE4.11

以前用KDE的經驗非常差(KDE4.3的時代)印象中就是個又頓又buggy的東西。 這次心血來潮裝裝看,發現現在的KDE不但順,BUG也少很多。整個使用經驗非常愉快。 不過既然Linux遇到中文 不免俗的(?)會遇到不少問題。就分享一下解決方案和一些有的沒的。

關於安裝過程就不贅述了,請自行參考Arch Wiki的條目

  1. Firefox很醜(照理說就是所有的GTK程式都會這樣) 可以參考這個條目Uniform Look for Qt and GTK Applications 安裝完oxygen-gtk和kde-gtk-config之後,到Settings -> Application Appearance -> gtk 裡把theme換成oxygen-gtk就好
  2. Dolphin亂碼(Amarok不能播放檔名非ascii字元的歌 是同個問題) 直接在~/.xprofile裡加上export LC_ALL=en_US.utf-8 (或 zh_TW.utf-8之類的)
  3. 網路管理員 這裡我用wicd和wicd-kde(AUR)
  4. yakuake 好用的下柆式Terminal Emulator,配合F12快速鍵非常方便實用。
  5. Custom keyboard Shorcuts 想把Konsole弄到F10上,在K選單暗右鍵開Edit Applications,在那個條目的右邊Advanced分頁就可以自訂。

有些一時忘掉了 以後有機會再補

[Linux] Convert and Resize Images From Command Line Using ImageMagick

1
2
3
4
5
6
7
8
9
# installing
sudo pacman -S imagemagick
# converting from png to jpg
convert image.png image.jpg
#resizing
convert image.png -resize 1024x768 resized.png
convert image.png -resize 1024 resized.png
convert image.png -resize x768 resized.png
convert image.png -resize 1000x200! resized.png

Source

[整理] 覆議 復議 附議 複議

讀公民的煩人東西 為什麼台灣的法律名詞都喜歡同音(還有 申請 聲請) - 覆議:行政院認為立法院提出的法案窒礙難行,可提出覆議。立法院可在十五天內否決(台:二分之一;美:三分之二;法:reopen debate 國會可不理) - 附議:提出法案時取得部份人的支持 - 復議:立法院審理法案時,如果已經一讀二讀三讀,發現法案錯誤或違憲可以重新審理。 - 複議:中國名詞,等同台灣的申訴

[思考] 一些關於未來和目標的想法

前言

在高三開學前的這幾個禮拜,我寫了很多程式,一切都要感謝@afg984開始了moeblanc這個輸入法Project,和一些遠大的目標。雖然我只commit了一點點code就跑去寫我自己的notedown。不過在寫這兩個Project的中間我大概確定我要的是什麼。這短短的幾天,我終於對Ruby能算上手,發現了Markdown的好,還有對Ruby on Rails和整個生態圈包括github等等愈來愈感興趣,甚至有種歸屬感。會在這麼晚的時間寫這篇是因為逛一逛逛到了XDite大的Blog和裡面一些關於他的公司和很多關於Rails/WebDevelopment的東西,也看到他的2013 Rails Reading List。該說是嚮往呢還是想要當作目標,感覺心理有種「這就對了!」的OS。於是我整理一下自己的思考,趁著這個激動還在的時候快把我的目標和想法紀錄下來。

目標

首先我現在的身份是高三生,離一個專業的Developer還有很長很長的一段路要走,還有很多很多的基礎知識要獲得。所以我的第一個目標是考上台清交的資工系,之所以是這三間的原因是我覺得以我的能力是能挑戰且這三間也是台灣能取的最多相關資源的學校。

在大學甚至是研究所時期,我想做的是為自己的未來鋪路。除了學校的課業、生活以外,最重要的是要累積自己在軟體開發的經驗,如果我的想法沒變的話大概就是Ruby on Rails、Web相關和Linux相關的開發。也要更新自己的資訊,畢竟資訊這行實在瞬息萬變,如果只靠在學校裡的學習,再好的大學出來也沒用。第二個在大學階段的目標是打工存點錢,累積社會經驗,畢竟家裡不是很富裕,無法負擔學費,除了學貸以外,如果能自己負擔生活費是最好的。最後非常希望能出國唸書或是進修,最想去的是日本,沒有什麼偉大的原因,因為我就是宅嘛。

關於未來的想法

第一我絕對不想做我自己沒有興趣的工作,就算薪水很高。第二我希望去的公司希望是能運用最新的Open Source工具,隨時Follow Bleeding Edge的東西,想法創新不守舊。薪水的部份雖然我很想當有錢人,不過剛出社會的前幾年我希望的工作是能累積經驗和從經驗者學習事物,如果能在自己的領域達到專業甚至是頂尖,我想pay這種事情應該不是問題。

最後

要開學了,即將邁入高三生活,也許一段時間不會碰電腦,又也許會繼續寫程式。不過既然目標定下來了就要好好的貫徹,所以維持正常作息和認真唸書是我現在最需要做的事。self.sleep (4點了…)

Linux翻轉螢幕輸出

$ xrandr  
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192  
LVDS-1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 309mm x 174mm  
 1366x768 60.0*+  
 1024x768 59.9   
 800x600 59.9   
 640x480 59.4   
 720x400 59.6   
 640x400 60.0   
 640x350 59.8   
VGA-1 disconnected (normal left inverted right x axis y axis)  
HDMI-1 disconnected (normal left inverted right x axis y axis)  
#查看輸出裝置 我的輸出是LVDS-1  
$ xrandr --output LVDS-1 --rotate right #這裡可以是 right left inverted normal  
$ xrandr --output LVDS-1 --rotate normal #這樣子改回來  

[Vim] Vim 5 分鐘快速入門

最近社團裡有人想用vim

那我就介紹一下基本用法
和怎樣拿來寫C程式最方便
先介紹一下Vim的兩種最簡單的模式:插入模式和命令模式
按i, a可以從命令模式進入插入模式
在其他模式按esc就可以回到命令模式

介紹常用命令:

上下左右:kjhl 或者直接用方向鍵
:q離開、:wq儲存並離開 :w 儲存 :q!離開但不儲存
x 刪除、u 復原
/往後尋找、?往前尋找、n 下一個、N 前一個
全文尋找並取代: :1,$s/word1/word2/g
dd刪除整行(常用!)、ndd(n是行數)刪除n行
yy複製整行、p 貼上在下一行
:!{cmd} 執行指令 (ex: :! gcc test.c)

常用設定
可以直接用:set設定 (ex :set autoindent)
或編輯設定檔~/.vimrc (Linux / Mac) $HOME_vimrc

syntax on 語法高亮度表示
autoindent 自動縮排
cindent C/C++的自動縮排(好用!)
nu/nonu 顯示行號/不顯示行號
tabstop=4 
shiftwidth=4  (tab字元寬度)
com CMD(指令名稱 必須大寫) command (指令內容) 自訂指令 大概這樣
分享一下我寫C用的.vimrc

set cindent  
set nu  
set shiftwidth=4  
set tabstop=4  
syntax on  
com C !g++ % -Wall -g #編譯C++  
com CC !gcc % -Wall -g -ansi #編譯C  
com R :!./a.out #執行  
[][1]參考資料:[http://linux.vbird.org/linux_basic/0310vi.php#vi_command][1]

[GNU/Linux] Kernel 3.3 Ath9k Link Is Not Ready

前幾天升級kernel 3.3

發現無線網路不能連@@

看了一下log之後發現

ADDRCONF(NETDEV_UP): wlan0: link is not ready

上網google了一下

終於找到解法了!

https://bbs.archlinux.org/viewtopic.php?id=139365

$ sudo pacman -S linux-headers  
$ wget http://wireless.kernel.org/download/compat-wireless-2.6/compat-wireless-2.6.tar.bz2  
$ tar -xv -f compat-wireless-2.6.tar.bz2  
$ cd compat-wireless-2012-04-09  
$ make  
$ sudo make install  
$ sudo make unload  
$ sudo sync; sudo reboot #重新開機這樣就OK了!

[Code] TIOJ - 1212 最遠距點對

http://tioj.redirectme.net:8080/JudgeOnline/showproblem?problem_id=1213

先隨便戳一個點(第一個)

找出離他最遠的點

再從那個點再做一次DFS

P.S. 這題是多測資…害我WA了好幾次= =

#include <stdio.h>  
#include <string.h>  
#include <vector>  
#include <algorithm>  
using namespace std;  

typedef struct {  
 int to, cost;  
} edge;  
vector<edge> G[100001];  
int max_v, max_d;  
bool used[100001] = {false};  
void dfs(int v, int d)  
{  
 used[v] = true;  
 if (d > max_d) {  
 max_v = v;  
 max_d = d;  
 }  
 for (int i = 0; i < G[v].size(); i++) {  
 edge e = G[v][i];  
 if (!used[e.to]) {  
 dfs(e.to, d + e.cost);  
 }  
 }  
 return ;  
}  
int main()  
{  
 int n;  
 while (scanf("%d", &n) != EOF && n) {  
 for (int i = 0; i <= n; i++) {  
 G[i].clear();  
 }  
 for (int i = 0; i < n - 1; i++) {  
 int s, t;  
 edge e;  
 scanf("%d%d%d", &s, &t, &(e.cost));  
 e.to = t;  
 G[s].push_back(e);  
 e.to = s;  
 G[t].push_back(e);  
 }  
 memset(used, false, sizeof(used));  
 max_d = 0;  
 max_v = 1;  
 dfs(1, 0);  
 memset(used, false, sizeof(used));  
 max_d = 0;  
 dfs(max_v, 0);  
 printf("%d\n", max_d);  
 }  
 return 0;  
}  

[Code] TIOJ - 1463 打不倒的樹木人

http://tioj.redirectme.net:8080/JudgeOnline/showproblem?problem_id=1463

code應該很好懂

注意一下條件判斷就好了

#include <stdio.h>  
#include <string.h>  

char s[10001];  
long long dp[10001];  
int l;  
long long dfs(int n)  
{  
 if (dp[n] >= 0) {  
 return dp[n];  
 }  
 if (s[n] == '0') {  
 return dp[n] = 0;  
 }  
 if (n == l - 1) {  
 return dp[n] = 1;  
 }  
 if (n == l - 2) {  
 if (s[n] > '2' || s[n] == '2' && s[n + 1] > '6') {  
 return dp[n] = dfs(n + 1);  
 } else {  
 return dp[n] = dfs(n + 1) + 1;  
 }  
 }  
 if (s[n] > '2' || s[n] == '2' && s[n + 1] > '6') {  
 return dp[n] = dfs(n + 1);  
 }  
 return dp[n] = dfs(n + 1) + dfs(n + 2);  
}  
int main()  
{  
 while (gets(s) != NULL) {  
 if (strcmp(s, "0") == 0) {  
 return 0;  
 }  
 l = strlen(s);  
 memset(dp, -1, sizeof(dp));  
 printf("%lld\n", dfs(0));  
 }  
}  

[GNU/Linux] MATE Themes in ArchLinux

用了一陣子的gnome3 實在綁手綁腳
也開始想念gnome2了
TOI爆了以後有時間 就來試試gnome2的fork—MATE Desktop Environment

安裝過程就看Archwiki就好 這裡不詳述
裝display manager 結果gdm、mdm(MATE display manager)都有問題= =
只有lxdm又快又穩定 不過長得太醜 懶得弄主題什麼的
最後決定直接用startx 這樣登入的時候也比較酷(?

用起來很順暢 遇到的問題也只有主題的部份
發現預設主題(ex: Clearlooks)的都不能用
無意中發現了解決方案:

這裡以經典主題——Clearlooks為例

$cd /usr/share/themes/Clearlooks  
$ls  
gtk-2.0 index.theme marco-1 #會出現這三樣東西  
$mv marco-1 metacity-1 #猜測是MATE把metacity改名為marco   
 #但主題程式未同步更改導致讀取不到主題檔案的錯誤  
$cd metacity-1  
$ls  
marco-theme-1.xml  
$mv marco-theme-1.xml metacity-theme-1.xml  
$sudo vim metacity-theme-1.xml  
#把標籤改成  
#記得文件最後一行的關閉標籤也要改  
這樣就可以用我最愛的Clearlooks了XD