Wednesday, November 28, 2012

google hangout on Arch linux

install this aur https://aur.archlinux.org/packages.php?ID=40056

sudo yaourt -S google-talkplugin

if there's no video, then add this

sudo echo "O3D_OVERRIDE_RENDER_MODE=2D" >> /opt/google/talkplugin/envvars

Tuesday, November 27, 2012

heapify algorithm

Data Structure 小練習,heapify 算法

關於 heap 更多內容請參考良葛格的精美筆記

感謝強者我同學 Unclehandsome ㄉㄉ指點 <(_ _)>

heap 的性質:

# Max heap
for all nodes in array:
    A[ parent(i) ] >= A[i]


用白文來講就是,

對於 heap 裏面的每一個 node ,他的 value 一定大於他子樹的任一節點的 value

並且他 left-subtree 跟 right-subtree 都要是 heap





簡記一下 make heap 的步驟:

make heap 的作法:想像一個空的 tree, 然後一次 insert 一個在 heap 的尾端


for nodes in array:
    insert node
    
insert:
    1:    append to the end of the heap (the last leaf)
    2:    compare with my parent
    3:    swap if i'm greater than my parent
    4:    goto 2



實作上要注意的地方是 tree 的 array index 從 1 開始 (算 node / 2 時比較好做)


#!/usr/bin/python

import random
import heapq

def mk_heap (arr):
    heap = ['']
    for i in arr:
        heap.append(i)
        l = len(heap) - 1
        while l >= 2 and heap[l] < heap[l//2]:
            heap[l], heap[l//2] = heap[l//2], heap[l]
            l = l // 2

    print heap[1:]


if __name__ == '__main__':
    arr = range (1, 20)
    random.shuffle(arr)
    brr = arr

    print "before heapify"
    print arr

    print "my make heap:"
    mk_heap(arr)

    h = []
    for i in brr:
        heapq.heappush(h, i)
    print "using heapq:"
    print h


Output:


before heapfy
[14, 11, 19, 2, 3, 10, 5, 13, 8, 15, 16, 1, 18, 9, 17, 4, 7, 6, 12]
my make heap:
[1, 3, 2, 4, 11, 5, 9, 7, 6, 15, 16, 19, 18, 10, 17, 14, 8, 13, 12]
using heapq:
[1, 3, 2, 4, 11, 5, 9, 7, 6, 15, 16, 19, 18, 10, 17, 14, 8, 13, 12]

Friday, November 23, 2012

bye bye, mouse!



丟掉滑鼠的方法...



awesome wm - next gerneration framework window manager for X
http://awesome.naquadah.org/

vimium - the hacker's browser
http://vimium.github.com/

w3m text-based browser               # with mobile web pages
http://w3m.sourceforge.net/

turses - twitter client
http://turses.readthedocs.org/en/latest





rxvt-unicode - terminal emulator
http://software.schmorp.de/pkg/rxvt-unicode.html

ranger file manager
http://ranger.nongnu.org/

irssi - the IRC client of the future
http://www.irssi.org/




alsamixer
http://alsa.opensrc.org/Alsamixer

mplayer
http://www.mplayerhq.hu/design7/news.html




emacs - just another operating system(X
http://www.gnu.org/software/emacs/

vim - the ultimate editor
http://www.vim.org/



... lots of command line tools



Good keybord
FILCO ninja majestouch II

Wednesday, November 21, 2012

sha-bang! running scripts on Unix machines

reference: http://en.wikipedia.org/wiki/Shebang_(Unix)

sha-bang 是 Unix 系統上面的特殊慣例,由一個 # (sharp) 和一個 ! (bang) 組成

在 script 中,這個慣例用來表示要用哪個 interpreter 來解釋 / 執行這個 script

一般用絕對路徑來表示,例如 #!/bin/sh 來呼叫外部的 Bourne shell




#!/path/to/the/interpreter [arguments]





常見例子:

#!/bin/sh
#!/bin/sh -x
#!/bin/bash
#!/bin/sed -f
#!/usr/bin/awk -f
#!/usr/bin/perl
#!/usr/bin/python
#!/usr/bin/ruby





當然也可以很空虛的...
#!/bin/cat




另外,有時候為了可攜性,會用 /usr/bin/env python 這種用法來找到該機器的 interpreter 在哪邊

然後不要傻呼呼的吃到 Permission denied. 才在哭說不知道要怎麼跑 lol

chmod +x your_script

Sunday, November 18, 2012

The road not taken


The Road Not Taken       Robert Frost

TWO roads diverged in a yellow wood,
And sorry I could not travel both
And be one traveler, long I stood
And looked down one as far as I could
To where it bent in the undergrowth;

Then took the other, as just as fair,
And having perhaps the better claim,
Because it was grassy and wanted wear;
Though as for that the passing there
Had worn them really about the same,

And both that morning equally lay
In leaves no step had trodden black.
Oh, I kept the first for another day!
Yet knowing how way leads on to way,
I doubted if I should ever come back.

I shall be telling this with a sigh
Somewhere ages and ages hence:
Two roads diverged in a wood, and I—
I took the one less traveled by,
And that has made all the difference.


不知道假若我沒有放棄音樂這條路,應該也會 made it all the difference 吧 

Saturday, November 17, 2012

POPO.tw hacked



看到我朋友被一群腦袋也被 XSS 的 end user 罵的很慘...手癢寫了這個

請注意文中部份內容不盡然是事實的就是XD


====================================================================

Dear all,




我只是單純路過穿拖鞋的阿宅工程師,平常也是跟 POPO 工程師大大們一樣,在老闆壓榨下刻刻網頁、寫寫程式,騙點小錢,對於網路攻擊也不是很懂,但是這次的事件後,在下心裡有些想法學的需要跟大家分享一下 :)



首先,我們何不反過來想想看,白帽子先生到底是為了什麼樣的目的才做這件事情的呢? 我們從頭開始:


1. 白帽子先生透過 "囧 ID" 來提醒大家這邊的平台似乎出了點問題,也許使用者的資料有被竄改的可能,雖然是個無傷大雅的小玩笑,但相信就算是對於網路技術毫無概念,各位冰雪聰明的作家們一定不難推論,咦?好像哪裡怪怪的。而身為服務提供者的站方也應該要意識到,也許自家網站可能某些地方出了點問題,需要修正。


2. 也許過了很久一段時間,白帽子先生再次發現,原本有問題的網站仍然沒有被修好,於是,<刪除線>說破嘴不如跑斷腿,拼資安,做就對了</刪除線> ,他決定用更明顯的方式,來提醒大家,這個平台的資訊安全是有問題的。




3. 這次的行動造成了大家恐懼,引起軒然大波,並擔心自己的帳號安全是否有問題(我自己也嚇了一大跳),站方也馬上著手進行緊急維修。



好,我們總結一下,在 "囧事件" 發生之後,顯然使用者會感受到自己的權益其實是有受到威脅的,而理論上站方應該也知道大概發生了什麼事情,同樣身為阿宅工程師。明眼人看就知道,如果能做到這種直接從外部(留言板)植入惡意程式碼而竄改網頁資料是非常嚴重的漏洞!嚴重程度大概像是我們突然失去了所有遮蔽物而在大街上裸奔一般,相信所有做過網站的朋友們看到這種漏洞都會下出一身冷汗。但是大家秉持著人類的惰性,反正好像沒事就置之不理。對,就是姑息!對於這樣具有危險性甚至可以說是災難性的漏洞姑息!




簡單說明一下,就我的認知,這次的手法其實跟 POPO 網頁語法有關,認至可以說是白帽子完全是透過 POPO 的特色功能 (features) 而進行的,看看這篇吧:


我們可以用一些特殊的 script 語法來替 POPO 網頁引入來自外頭網站提供的額外功能,同樣的,白帽子先生也只是透過這個特色功能,在留言時為自己的留言提供額外的功能!不同的是,這些具有 POPO 特色的額外功能造成大家人心惶惶,也引起站方緊急關站維修一天。最後,如同站方公告所說的:


POPO 原創網在幾經考量與討論的狀況下,我們將修改及暫停部分語法的支援功能,透過停止支援特殊語法來防止類似的漏洞發生。



明白了這個原理,不難相信為什麼在修正掉這個漏洞後,有使用者非常生氣的表示:

祝白帽子走路踩到狗屎跌進水溝 !!!

POPO 改掉了使用語法機制,讓我連貼圖還是放連結都放不上去,這點對我來說真的傷害很大!!!!





順帶一提,就我的了解,POPO 使用的網站技術預設行為本身就會自動過慮掉這些額外的 script (因為不清楚是否會對於網頁造成惡意影響),然而,站方為了方便和提供特色功能,將這個保障網站安全的功能關閉,如此舉動猶如將保障生命的安全網抽離,這樣不尊重使用者權益的網站,各位還敢繼續使用嗎?相信白帽子先生也是想到這點而和我一樣義憤填膺!



最後,希望各位如果有空的話能看一下另外幾位前輩先進的看法 :)




http://littlebmix.blogspot.tw/2012/11/popodarkframemaster.html

https://disp.cc/b/611-4N8c







PS. 我跟這次的事件和白帽子先生沒有任何關係




PSS. 仔細注意可以發現,我並不稱呼這次的事件為攻擊或是入侵,因為如果有心要到真正的入侵行為的話能做的絕對不只這些!只能說 POPO 這是是非常幸運!


====================================================================


在我寫完這邊正思考要不要一時之間腦充血去回這封信時,突然看到底下有人留言,我不想回了,這種站這種使用者還是讓他去吧


這無知、自大的行為會催毀原本還有一點優點的自己
大家都微笑的往前面對自己的生命
只有無知、自大的人還在原地踏步、憤憤不平
覺得可笑~~~也為他感到難過 往前走吧!人生還有更多美好的事值得學習^_^

到底是誰無知呢?





結果發現我柯南電影看到一半 


Thursday, November 15, 2012

web security


前情提要:幾天前的聚會 JC 分享了某網站的 XSS vulnerability ,對於留言框 HTML 幾乎沒過濾,連 script 塞進去都能 run ...




我相信,這個世界應該也還有跟我和我朋友們一樣為著網路安全而在努力著

不斷的學習技術和找尋可能的潛在危險

不過有些網站真的太可怕了...善意提醒卻不知改進 (或是反應遲鈍?)

但假若是我的話應該沒辦法像 JC 那樣做個那麼精緻的"提醒"吧

希望這次的行動可以真正打醒站方,重視使用者安全權益


: )



有人想聽故事嘛?






題外話:

幾天前通知小畢的成大某系系網站也只修好了一部份... 治標不治本 Orz

但另一個據說有領錢的計劃網站有修好,很棒

不過也是發現他褲子沒穿,善意提醒他後放了三個禮拜都沒人動,URP 那天直接幫他穿上我做的褲子後就馬上修好了是哪招 XDrz







事實證明,要通知 admin 你們家有洞最快的方法是幫他改掉密碼 



Monday, November 12, 2012

東方幻想郷/Bad Apple


こんな自分に 未来はあるの? こんな世界に 私はいるの







★流れてく 時の中ででも 気だるさが ほらグルグル廻って
★就算在流逝的時空中仍能發現 你瞧,只在原地打轉不停


私から 離れる心も 見えないわ そう知らない?
我那已失去的心也看不見 你能明白嗎?


自分から 動くこともなく 時の隙間に 流され続けて
就算自己什麼都不做 時光仍漸漸消逝在縫隙中


知らないわ 周りのことなど 私は私 それだけ
週遭的一切我一概不知 「我就是我」 所知的僅此而已



夢見てる? なにも見てない? 語るも無駄な 自分の言葉?
在夢中發現了嗎? 還是什麼都沒發見? 發現自己如何訴說也沒用的真心話?


悲しむなんて 疲れるだけよ 何も感じず 過ごせばいいの
悲傷只會使自己更累 乾脆什麼都別多想 如此度日就好


戸惑う言葉 与えられても 自分の心 ただ上の空
就算聽到令人困惑的話語 我的心早已懸在半空


もし私から 動くのならば すべて変えるのなら 黒にする
若我試著改變這一切的話 這一切就將化為黑暗


こんな自分に 未来はあるの? こんな世界に 私はいるの?
這樣的我能有未來嗎? 這樣的世界能有我嗎?


今切ないの? 今悲しいの? 自分の事も わからないまま
現在我很難過嗎? 現在我很悲傷嗎? 就像這樣連自己的事都不清楚


歩むことさえ 疲れるだけよ 人のことなど 知りもしないわ
就算繼續走下去也只會感到更累 人際關係什麼的 乾脆也別去了解了


こんな私も 変われるもなら もし変われるのなら 白になる?
這樣的我也能改變的話 如果真的改變的話 一切能回歸虛無嗎?



☆流れてく 時に中ででも 気だるさがほら グルグル廻って
☆就算在流逝的時空中仍能發現 你瞧,只在原地打轉不停


私から 離れる心も 見えないわそう 知らない?
我那已失去的心也看不見 你能明白嗎?


自分から 動くことまなく 時の隙間に 流され続けて
就算自己什麼都不做 時光仍漸漸消逝在縫隙中


知らないわ 周りのことなど 私は私 それだけ?
週遭的一切我一概不知 「我就是我」 所知的僅此而已


夢見てる? なにも見てない? 語るも無駄な 自分の言葉?
在夢中發現了嗎? 還是什麼都沒發見? 發現自己如何訴說也沒用的真心話?


悲しむなんて 疲れるだけよ 何も感じず 過ごせばいいの
悲傷只會使自己更累 乾脆什麼都別多想 如此度日就好


戸惑う言葉 与えられても 自分の心 ただ上の空
就算聽到令人困惑的話語 我的心早已懸在半空


もし私から 動くのならば すべて変えるのなら 黒にする
若我試著改變這一切的話 這一切就將化為黑暗


無駄な時間に 未来はあるの? こんな所に 私はいるの?
蹉跎的時光中還能擁有未來嗎? 這種地方還能讓我存在嗎?


私のことを 言いたいならば ことばにするのなら 「ろくでなし」
如果想要描述我這個人的話 以語言表達就是個「沒用的廢人」



こんな所に 私はいるの? こんな時間に 私はいるの?
我在這樣的地方? 這樣的時間能有我嗎?


こんな私も 変われるもなら もし変われるのなら 白になる?
這樣的我也能改變的話 如果真的改變的話 一切能回歸虛無嗎?


今夢見てる? なにも見てない? 語るも無駄な 自分の言葉?
今天在夢中發現了嗎? 還是什麼都沒發見? 發現自己如何訴說也沒用的真心話?


悲しむなんて 疲れるだけよ 何も感じず 過ごせばいいの
悲傷只會使自己更累 乾脆什麼都別多想 如此度日就好


戸惑う言葉 与えられても 自分の心 ただ上の空
就算聽到令人困惑的話語 我的心早已懸在半空


もし私から 動くのならば すべて変えるのなら 黒にする
若我試著改變這一切的話 這一切就將化為黑暗


動くのならば 動くのならば すべて壊すわ すべて壊すわ
想要行動的話 想要改變的話 一切都會毀壞 一切都會崩潰


悲しむならば 悲しむならば 私の心 白く変われる?
如果我感到傷心 如果我感到悲哀 我的心是否就能回歸虛無呢?


貴方の事も 私のことも 全ての事も まだ知らないの
不管是你的一切 或是我的一切 甚至是所有的一切 我還完全不清楚


重い目蓋を 開けたのならば すべて壊すのなら 黒になれ !!!
想張開這沉重的眼睛的話 想毀滅一切的話 就讓黑暗吞噬掉這一切!!

Tuesday, November 6, 2012

disable pulseaudio

pulseaudio 是Linux 下的 Music server

https://wiki.archlinux.org/index.php/PulseAudio

但是常常他把你的聲音送到奇怪的地方,把你的影音功能全部弄的一團遭

像是 youtube 變成靜音、突然變快 2X 速度等很多時候都是這個東西搞爛的

麻煩的是像是 gstreamer 之類的東西又會去 depend 到他 Orz



sudo vim /etc/pulse/client.conf
autospawn = no



直接關掉他,聲音統一交給 alsa  管理

對了,音量管理用 alsamixer 看起來 geek 又專業阿

Saturday, November 3, 2012

麻枝准 My Song / Angle Beats 插入曲




每次聽到這首曲子都會很想哭...這不就是我嗎?

哭泣的你 孤獨的你
才是正確的 才更接近人的原貌
落下的眼淚 這樣宣告
如此的美麗 並非謊言 向真實的我們致謝




「My Song」(第3話)插曲
作詞/作曲:麻枝准 ,編曲:光収容 ,歌:Girls Dead Monster (marina)


苛立ちをどこにぶつけるか探してる間に終わる日
空は灰色をしてその先は何も見えない
常識ぶってる奴が笑ってる 次はどんな嘘を言う?
それで得られたもの 大事に飾っておけるの?
でも明日へと進まなきゃならない
だからこう歌うよ


泣いてる君こそ孤独な君こそ
正しいよ人間らしいよ
落とした涙がこう言うよ
こんなにも美しい嘘じゃない本当の僕らをありがとう


叶えたい夢や届かない夢がある事
それ自体が夢になり希望になり人は生きていけるんだろ
扉はある そこで待っている
だから手を伸ばすよ


挫けた君にはもう一度戦える強さと自信とこの歌を
落とした涙がこう言うよ
こんなにも汚れて醜い世界で出会えた奇跡にありがとう

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=

中文


著急地尋找會在哪裡碰上的時候 一天已經結束
天空灰濛濛的 前方什麼也看不到
假裝正常的傢伙在笑著 接下來又會說什麼謊話?
那樣得到的東西 能小心地裝飾著嗎?
即使如此也不能不向明天前進
所以 如此歌唱著


哭泣的你 孤獨的你
才是正確的 才更接近人的原貌
落下的眼淚 這樣宣告
如此的美麗 並非謊言 向真實的我們致謝


知曉有想要實現的願望和無法傳達的願望
這件事本身便成為夢想 成為希望 人們便能活下去吧
有一扇門 站在門前等待著
所以向它伸出手


對於受了挫折的你 給予能夠再一次戰鬥的堅強與自信與這首歌
落下的眼淚 如此宣告
向著這污穢不堪的 醜陋不堪的世界中 所相遇的奇蹟致謝

compress and decompress

tar options

-c, --create         create a new archive  
-t, --list           list the contents of an archive
-u, --update         only append files newer than copy in archive
-x, --extract        extract files from an archive
-a, --auto-compress  use archive suffix to determine the compression program
-f, --file ARCHIVE   use archive file or device ARCHIVE
-v, --verbose        verbosely list files processed  

compress options
-j, --bzip2
-z, --gzip, --gunzip --ungzip
-J, --xz
--lzma 
-Z, --compress, --uncompress


簡言之,常用的格式

create    [zj]cvf Dir.xxx Dir
extract   [zj]xvf Dir.xxx

懶的想的話 a 選項可以打天下 acf or axf 萬用


================================================


tar
$ tar cvf FileName.tar DirName
$ tar xvf FileName.tar


gz
$ gzip FileName
$ gunzip FileName.gz      # or gzip -d

tar.gz
$ tar zcvf FileName.tar.gz DirName
$ tar zxvf FileName.tar.gz


bz2
$ bzip2 FileName          # or bzip2 -z
$ bunzip2 FileName.bz2    # or bzip2 -d

tar.bz2
$ tar jcvf FileName.tar.bz2 DirName
$ tar jxvf FileName.tar.bz2


tgz (其實就是 gzip)
$ tar zcvf FileName.tgz DirName
$ tar zxvf FileName.tgz

tar.tgz
$ tar zcvf FileName.tar.tgz FileName
$ tar zxvf FileName.tar.tgz



.7z   
Arch pacman:  extra/p7zip
$ 7zr a FileName
$ 7zr x FileName.7z


xz
xz FileName
xz -d FileName


lzma   # XZ 的一種 format
lzma FileName
lzma -z



lha    # 這個很少見,比較有梗的大概是他的 man page 的 BUS 吧(?)

$ lha a FileName.lha FileName
$ lha x FileName.lha




Z (compress)

這個超級古老了,應該不會遇到 (大多已被 gzip 取代)
compress 原本是 UNIX 下的商業軟體,其 POSIX 實現是 ncompress
$ compress FileName
$ uncompress FileName.Z

tar.Z

$ tar Zcvf FileName.tar.Z DirName
$ tar Zxvf FileName.tar.Z






.zip   # we love gzip!
$ zip FileName.zip DirName
$ unzip FileName.zip



.rar
$ rar a FileName.rar DirName
$ rar x FileName.rar
$ unrar x FileName.rar