Watch Youtube

之前在Mint 11時,Minitube就有問題。 到了Mint 13還是有問題= =
解決的方法是更新到1.7.1以後的版本就可以了。
這篇稍微提到問題是因為GStreamer bug: minitube crashes on 12.04 64bit [closed]
不過官方庫裡的版本比較舊,要用PPA的版本。:
sudo add-apt-repository ppa:ferramroberto/minitube
sudo apt-get update
sudo apt-get install minitube
之前是以 gmediafinder 作為替代品,支援的網站比minitube多。
不過使用上有點小問題: 在全螢幕時會不斷模擬按下'a'鍵。(如果開著文字編輯器就很明顯了)
安裝 gmediafinder:
sudo apt-add-repository ppa:s-lagui/ppa
sudo apt-get update
sudo apt-get install gmediafinder 

ffmpeg with mp3 encoder


之前在用youtube-dl將youtube轉成mp3時,會發生問題。
原本以為要重編ffmpeg 將libmp3lame編入ffmpeg中。
現在有比較簡單的解決方法:
sudo apt-get --reinstall install ffmpeg libavcodec-extra-53 # for Ubuntu 12.04/Mint 13
參考文章:

安裝Catalyst 12.4


安裝Catalyst 12.4,網路上找到兩種裝法。
  1. 不建立發行版本的套件
  2. 建立發行版本的套件(比較麻煩點)

不建立發行版本的安裝方法
  1. 先移除之前的安裝版本:
  2. sudo sh /usr/share/ati/fglrx-uninstall.sh
    sudo apt-get remove --purge fglrx fglrx_* fglrx-amdcccle* fglrx-dev* xorg-driver-fglrx
  3. 從AMD網站下載 Catalyst 12.4
  4. 執行 installer:
  5. chmod +x amd-driver-installer-12-4-x86.x86_64.run
    sudo sh ./amd-driver-installer-12-4-x86.x86_64.run
  6. 產生一個新的X設定檔:
  7. sudo aticonfig --initial -f
  8. 重開機:
sudo reboot
我照著上面的方法裝過一次,執行 dpkg -l | grep fglrx 的結果是空的@_@,不過基本上沒什麼大問題就是。
只是不能安裝影片播放硬體加速的套件。(裝上後cpu使用率有下降一些)
64bit去執行 installer --buildpkg,因為缺少32bit函式庫,會build不出來。

建立發行版本的安裝方法
  1. 要讓--buildpkg不出錯,要先作列的準備工作。:
  2. sudo apt-get install build-essential cdbs dh-make dkms execstack dh-modaliases fakeroot libqtgui4
    
    
    # 64bit 額外需要安裝下列套件
    sudo apt-get install ia32-libs-multiarch:i386 lib32gcc1 libc6-i386
    cd /usr ; sudo ln -svT lib /usr/lib64
  3. 從AMD網站下載 Catalyst 12.4
  4. 建立並安裝.deb:
  5. chmod +x amd-driver-installer-12-4-x86.x86_64.run
    sudo sh ./amd-driver-installer-12-4-x86.x86_64.run
    
    
    sh ./amd-driver-installer-12-4-x86.x86_64.run --buildpkg Ubuntu/precise # for Ubuntu 12.04/Mint 13
    sudo dpkg -i fglrx*.deb
  6. 產生一個新的X設定檔:
  7. sudo aticonfig --initial -f
  8. 重開機:
  9. sudo reboot
  10. 以root權限執行Catalyst:
  11. gksudo amdcccle
  12. 安裝影片播放硬體加速的相關套件:
     sudo apt-get install xvba-va-driver libva-glx1 libva-egl1 vainfo 

Wesnoth

wesnoth很好玩,也很累。
一個場景的單位數破百也不啥稀奇的事情。這樣控兵好累= =。
好想要夢幻模擬戰的方式,設定一個指揮官後,一堆兵就可以跟著跑。不用每個都需要自己去移動。
wesnoth玩了兩個禮拜。最難調適的還是心態啊....Orz
這畢竟跟聖火系列差很多,沒有超強的單位。丟個Master到高迴避點就可以痛宰一堆敵兵。
在wesnoth裡這樣玩法會是只有死路一條。還是會捨不得,畢竟培養一個高階單位不容易啊>"<。
大局為重 = 死兵免不了。對於單位陣亡要"淡定"。

是一把(邪惡的)劍
[attack]
    damage=12
    description=_"這是一把劍"
    icon="attacks/baneblade.png"
    name="saber"
    number=4
    range="melee"
    type="blade"
    [specials]
        [firststrike]
            description=_"First Strike:
            This unit always strikes first with this attack, even if they are defending."
            id="firststrike"
            name=_"firststrike"
        [/firststrike]
        [slow]
            description=_"Slow:
            This attack slows the target until it ends a turn. Slow halves the damage caused by attacks and the movement cost for a slowed unit is doubled. A unit that is slowed will feature a snail icon in its sidebar information when it is selected."
            id="slow"
            name=_"slows"
        [/slow]
        [damage]
            active_on="offense"
            backstab=yes
            description=_"Backstab:
            When used offensively, this attack deals double damage if there is an enemy of the target on the opposite side of the target, and that unit is not incapacitated (turned to stone or otherwise paralyzed)."
            id="backstab"
            multiply=2
            name=_"backstab"
        [/damage]
        [poison]
            description=_"Poison:
            This attack poisons living targets. Poisoned units lose 8 HP every turn until they are cured or are reduced to 1 HP. Poison can not, of itself, kill a unit."
            id="poison"
            name=_"poison"
        [/poison]
        [drains]
            description=_"Drain:
            This unit drains health from living units, healing itself for half the amount of damage it deals (rounded down)."
            id="drains"
            name=_"drains"
        [/drains]
        [chance_to_hit]
            active_on="offense"
            cumulative=yes
            description=_"Marksman:
            When used offensively, this attack always has at least a 60% chance to hit."
            id="marksman"
            name=_"marksman"
            value=95
        [/chance_to_hit]
        [plague]
            description=_"Plague:
            When a unit is killed by a Plague attack, that unit is replaced with a Walking Corpse on the same side as the unit with the Plague attack. This doesn’t work on Undead or units in villages."
            id="plague"
            name=_"plague"
            type="Walking Corpse"
        [/plague]
    [/specials]
[/attack]

存檔修改
[side] SideWML
Key
Desc
gold
目前的持金(想看海的沒人性的獸人大軍就把AI控制的陣營改一下吧...)
recruit
能招募的單位。ex: recruit="Bowman,Spearman"
canrecruit
yes|no(是否可以進行招募)

[unit] UnitWML
Key
Desc
advances_to
能轉職的單位。ex: advances_to="Swordsman,Pikeman,Javelineer"
attacks_left
攻擊剩下的次數
experience
目前經驗值
extra_recruit
配合canrecruit=yes,就可以讓該單位進行招募(嘿嘿,誰規定招兵買馬是主角的專利!)
hitpoints
目前HP
level
等級
max_attacks
最大攻擊次數
max_experience
升至下一級所需要的經驗值
max_hitpoints
最大HP
max_moves
最大移動力
moves
目前剩餘移動力
zoc
yes|no 是否擁有控制區域(通常是Lv2以上單位才會有)
[defense]
迴避率(100->0%, 20->100-20=80%),不過設為100會變成每次敵方攻擊都會造成1點損傷。
[movement_costs]
各種地形,消費的移動力
[resistance]
對各種攻擊的抗性(100->0%, 超過100%則為 負數)
[attack]
攻擊方式,詳細可參考: data/core/macros/abilities.cfg。
[trait]
特質,詳細參考: data/core/macros/traits.cfg。
[abilities]
兵種技能,詳細可參考: data/core/macros/abilities.cfg。
關於攻擊與兵種技能 這裡 有篇比較完整的內容解釋。 版本有有點舊,但是還是差不多。 另外,關於石化的特殊攻擊,照著abilities.cfg的設定,敵方還是可以進行攻擊? 不知道是哪邊有問題。 會不會只是只有定義了標籤,但還沒有實作?或者是被停用了?

BuildingUnits 比較簡單, 基本上拿現有單位當成藍本去修改就好。
不過,還是想要自編戰役啊~
BuildingScenarios 看起來就複雜多了。

將程式移動指定的desktop


# Install wmctrl
sudo apt-get install wmctrl

wmctrl -r 'window title or window ID' -t [0~n]

Mint 13上面沒用= =,改用xdotool


* 列出window的的標題欄(後面直接用複製貼上就可以了,可以少打一些字啊XD)

    wmctrl -l

* 將window移動到指定的workspace(desktop編號從0開始)

   # 取得 window ID
   ID=`xdotool search --onlyvisible --name  '{window title}'`

   # 移動到指定的desktop
   xdotool set_desktop_for_window $ID{desktop_id}



參考文章:

Install wine1.5


sudo apt-build --reinstall install wine # wine1.5
錯誤訊息:
E: The value 'apt-build' is invalid for APT::Default-Release as such a release is not available in the sources
apt-build version 0.12.42
雖然有錯誤訊息,不過編譯完的檔案放在 /var/cache/apt-build/repository/
自己再用 dpkg -i 手工安裝就好。
原因看來似乎是apt-build的bug? from here

# Get cpu information
cat /proc/cpuinfo
AMD Phenom(tm) II X4 945 Processor -> amdfam10
File: /etc/apt/apt-build.conf
build-dir = /var/cache/apt-build/build
repository-dir = /var/cache/apt-build/repository
Olevel = -O2
mtune = -march=amdfam10
options = " -pipe -mmmx -msse -msse2 -msse3 -msse4a -m3dnow -mpopcnt -fomit-frame-pointer -mabm -combine"
make_options = " -j4"
依照這樣的設定,大約15分鐘就可以編譯完成。比起我之前的編譯設定,速度實在是快很多啊。
參考文章:

Wine can't find gnome-keyring-pkcs11.so


System:Mint 13
在執行winecfg出現下列錯誤訊息:
p11-kit: couldn't load module:
    /usr/lib/i386-linux-gnu/pkcs11/gnome-keyring-pkcs11.so:
    /usr/lib/i386-linux-gnu/pkcs11/gnome-keyring-pkcs11.so:
cannot open shared object file: No such file or directory
問題的原因是Ubuntu 64bit上面沒有預設裝上32bit libs。
解決方法安裝Getblibs 參考 Getlibs – 32 bit libraries on your 64 bit Ubuntu
Steps:
# install getlibs
wget https://launchpad.net/~jcollins/+archive/jaminppa/+build/1482994/+files/getlibs_2.06-0ubuntu1%7Eppa2_all.deb

sudo dpkg -i getlibs_2.06-0ubuntu1~ppa2_all.deb
# Install the 32bit library
getlibs -p gnome-keyring:i386
# Create pkcs11 directory in /usr/lib/i386-linux-gnu
sudo mkdir /usr/lib/i386-linux-gnu/pkcs11
# Make the symbolic link
sudo ln -s /usr/lib32/i386-linux-gnu/pkcs11/gnome-keyring-pkcs11.so /usr/lib/i386-linux-gnu/pkcs11/gnome-keyring-pkcs11.so

讓lxmusic播放.aac格式


在Mint 13裝了lxmusic才發現播放.aac檔案會出現問題, 是因為xmms2 plugin沒有裝起來。
雖然可以播放.aac檔案,不過播放清單中的時間顯示有點問題。
sudo apt-get install xmms2-plugin-faad # 讓 xmms2可以播放 .aac格式

這次換Google了嗎?


看到這篇 Google掃蕩YouTube轉MP3網站 真的能阻止所謂的 非法使用 嗎?
大概是Youtube-MP3.org這類網站會減少Google的廣告收入的關係?
那下一步,是不是去寫信警告youtube下載工具的開發者嗎?(助紂為虐?!)
Youtube-MP3.org目前還能用,只是不知道還能用多久?
網路服務方便是方便,但真的是個好主意嗎?
* 大老闆一句話,(不賺錢的服務)就.....byte byte了。 
* 服務本身有爭議(說到底還不是為了錢 = =)
這次換Google do evil了嗎?

用youtube-dl擷取youtube的音樂。
zenity --entry --text='Extract Youtube Music' | xargs youtube-dl --extract-audio -o "%(title)s.%(ext)s"
也不知道Youtube-MP3.org還可以撐多久,先用這個備案吧。

caja

caja toolbar button

File: /usr/share/caja/ui/caja-navigation-window-ui.xml
+<toolitem ....>
操作 XML
剪下 <toolitem name="Cut" action="Cut"/>
複製 <toolitem name="Copy" action="Copy"/>
貼上 <toolitem name="Paste" action="Paste"/>
刪除 <toolitem name="Delete" action="Delete"/>
屬性 <toolitem name="Properties" action="Properties"/>
新增目錄 <toolitem name="New Folder" action="New Folder"/>

 

caja script directory

${HOME}/.config/caja/scripts/
caja variables(caja換成nautilus一樣可以跑,為了相容吧)
Name Description
NAUTILUS_SCRIPT_SELECTED_FILE_PATHS newline-delimited paths for selected files (only if local)
NAUTILUS_SCRIPT_SELECTED_URIS newline-delimited URIs for selected files
NAUTILUS_SCRIPT_CURRENT_URI current location
NAUTILUS_SCRIPT_WINDOW_GEOMETRY position and size of current window

Name
Description
CAJA_SCRIPT_SELECTED_FILE_PATHS
newline-delimited paths for selected files (only if local)
CAJA_SCRIPT_SELECTED_URIS
newline-delimited URIs for selected files
CAJA_SCRIPT_CURRENT_URI
URI for current location
CAJA_SCRIPT_WINDOW_GEOMETRY
position and size of current window
CAJA_SCRIPT_NEXT_PANE_SELECTED_FILE_PATHS
newline-delimited paths for selected files in the inactive pane of a split-view window (only if local)
CAJA_SCRIPT_NEXT_PANE_SELECTED_URIS
newline-delimited URIs for selected files in the inactive pane of a split-view window
CAJA_SCRIPT_NEXT_PANE_CURRENT_URI
URI for current location in the inactive pane of a split-view window

 

caja-actions

參考 http://forums.mate-desktop.org/viewtopic.php?f=17&t=36
不知道什麼時候會入庫?

flash抓圖

寫了程式用crontab排程,卻發現crontab排程中的工作,如果調用了需要X Window的程式會問題。 解決的方式是用xvfb。



xvfb-run --server-args="-screen 0, 1280x1024x24" Get_TWII_Chart.sh

kstart --> 將arora的window最大化
arora --> 使用簡單,也能解析出含有flash的網頁。重點是不會每次開啟都會問一堆問題。

目前的解決方法有些限制:
  1. 如果網路不穩定,設定的延遲時間可能不夠用。
  2. 如果頁面讀取失敗,當然就.....是garbage out了。
  3. 如果網頁的內容很長,設定的大小可能也會不夠用。
不過,目前來說夠用了。
參考文章:

Real-Debrid

Login

GET http://www.real-debrid.com/ajax/login.php

Query String:
Field Value
user username
pass 以MD5計算後的密碼
captcha_challenge ''
captcha_answer ''
time int(time.time()*1000)

Return: JSON data (cookie要加到後面request中,忘記加會被ban~)
----------------------------------------------------------------------
{"error":0,"message":"OK","cookie":"auth=......","captcha":0}

用程式登入後,就換成瀏覽器需要重新登入了,所以直接抓瀏覽器的cookie來用比較好。
免得瀏覽器常常需要重新登入Readl-Debrid。

 

unrestrict

GET http://www.real-debrid.com/ajax/unrestrict.php

Query String:
Field Value
link url
password ''
remote 0
time int(time.time()*1000)

Return: JSON data
----------------------------------------------------------------------

{

    "error": 0,    # 不是0就代表有問題了
    "file_name": "filename",
    "file_size": "xx.yy (KB|MB|GB)",
    "file_size_bytes": xxxxxx,
    "generated_links": [
        [
            "filename",
            "",
            "實際可下載網址"
        ]
    ],
    "link": "url",
    "hoster_name": "Filepost",
    "hoster_url": "filepost.com",
    "hoster_image": "filepost.png",
    "media_keys": false

}

Dropbox vs Google Docs?



想把一些沒有提供RSS服務的網站,將網站內容節錄成RSS feed,不過feed弄出來後要放哪?
 當初考慮的是Google Drive,不過看到那讓人蛋疼的API......跳過...= =

Dropbox. API很簡潔。

其實節錄網站內容的程式碼用BeautifulSoup寫沒幾行,如果用Google Docs API, 上傳那部份的程式碼,都比節錄網站的那段還多...... 想想還是別自虐好了。

example中有個cli_client.py的範例。Dropbox API能做什麼,都在這範例中了。

其中有段 load_creds(self)比較重要,會紀錄access token。
這樣就不需要每次都重新取得授權。
而要取得access token直接用這隻程式的login指令就好。
class StoredSession(session.DropboxSession):
"""a wrapper around DropboxSession that stores a token to a file on disk""" TOKEN_FILE = "token_store.txt"
def load_creds(self):
try:
stored_creds = open(self.TOKEN_FILE).read()
self.set_token(*stored_creds.split('|'))
print "[loaded access token]"
except IOError:
pass # don't worry if it's not there

def write_creds(self, token):

f = open(self.TOKEN_FILE, 'w') f.write("|".join([token.key, token.secret])) f.close()

參考文章:

自製雙螢幕桌布


看到這篇:雙螢幕桌布DIY製作程式 也想來弄個自製桌布。

Gnome的虛擬桌面竟然不能設置不同的桌布,有點.....。
不過,要自動更換桌布似乎也不難,只需要隔段時間將檔案內容更新就可以了。


Monitor/Image
Size
note
Monitor 1
1440x900

Monitor 2
1280x1024

image1.jpg
1096x894
for monitor 1
image2.jpg
1260x912
for monitor 2
  1. resize image:
  2. convert -reisze x876 1.jpg r1.jpg # 讓image 1避開底下的工作列(高度=24, 900-24=876)
    convert -reisze 1280x1024! 2.jpg r2.jpg
  3. create image for monitor 1:
  4. convert -size 1440x900 xc:black -page +183+0 r1.jpg r1-1.jpg
  5. merge images:
convert -page +0+0 r1-1.jpg -page +1440+0 r2.jpg -layers mosaic out.jpg 
參考文章:

gedit + reStructuredText = blogger writer

之前有找過blogger用的編輯器,不過都用的不是很順手。
反到是gedit + reStructuredText用的很習慣,只缺沒有把寫完的文章轉換成HTML,並上傳到blogger.
所以,就寫了這個小程式。



參考文章:


apt-get 安裝指定的版本


apt-get 安裝指定的版本
  1. apt-cache showpkg <pkgname> 查詢版本
  2. apt-get install pkgname=version
參考資料:
How to install a specific version of a Debian package using apt-get