fourdollars的聚會手記

2014-05-15

來源: 2014-05-15
Increased Performance In Linux With zRam (Virtual Swap Compressed in RAM) ~ Web Upd8: Ubuntu / Linux blog
http://www.webupd8.org/2011/10/increased-performance-in-linux-with.html

2014-01-23

來源: 2014-01-23
fasd
https://github.com/clvv/fasd

fish shell
http://fishshell.com/

2013-10-10

來源: 2013-10-10
官方推薦的非官方 Autotools Tutorial
http://www.lrde.epita.fr/~adl/autotools.html

2013-10-03

來源: 2013-10-03
HTML Presentations

  • io-2012-slides - HTML5 slide template for Google I/O 2012

https://code.google.com/p/io-2012-slides/

  • bartaz/impress.js · GitHub

https://github.com/bartaz/impress.js

  • reveal.js - The HTML Presentation Framework

http://lab.hakim.se/reveal-js/#/

  • Prezi - Ideas matter.

http://prezi.com/
bmark -title="Prezi - 讓人目瞪口呆的簡報軟體" http://meinews.cc/techknowledge/148-prezi

  • Sozi

http://sozi.baierouge.fr/wiki/en:welcome

# apt-get install sozi

2013-08-29

來源: 2013-08-29
Chromecast
https://tossug.hackpad.com/Chromecast-YRVkyNNjhMz

Chrome 瀏覽器需要裝 plugin : Google Cast

Android device as Chromecast :
cheapcast
aircast

Raspberry Pi as Chromecast :
PiCast
http://www.geek.com/android/picast-the-open-source-raspberry-pi-chromecast-alternative-1564550/

SlimPort
MHL Micro USB to HDMI

2013-08-22

來源: 2013-08-22
Microsoft Skype 與 Google hangouts 的 Open Source 取代方案,已經進 Debian 官方套件庫囉
jitsi.org | Jitsi

2013-07-11

來源: 2013-07-11
AngularFire is an officially supported AngularJS binding for Firebase
https://github.com/firebase/angularFire

Firebase - A scalable real-time backend for your app
https://www.firebase.com/

2013-06-27

來源: 2013-06-27
https://www.firebase.com/tutorial/play.html#-Iy4RBYc-qDnd1VZE6Go

https://apprtc.appspot.com/?r=24628449
https://apprtc.appspot.com/?r=65134835

WebRTC
http://www.webrtc.org/

Super Sync Sports
http://chrome.com/supersyncsports/

LibreOffice 在 Debian/Ubuntu 上面的套件資訊
http://packages.qa.debian.org/libr/libreoffice.html
https://launchpad.net/ubuntu/+source/libreoffice
https://launchpad.net/~libreoffice

2013-06-06

來源: 2013-06-06

usb-creator - Ubuntu startup disk creator transitional meta-package for GTK+

// create LiveUSB from CDROM
$ usb-creator-gtk -n -i ubuntu.iso

// boot from LiveUSB
$ qemu-system-x86_64 -hda /dev/sdb

ipxe - PXE boot firmware

2012-03-15

來源: 2012-03-15
http://tryneeds.westart.tw 翻譯的工作平台
https://groups.google.com/forum/?hl=zh-TW#!forum/chinese-l10n 翻譯者使用的郵件清單
http://www.linux.org.tw/CLDP/ Chinese Linux Documentation Project

    Ubuntu 11.10 $ apt-get install tp-smapi-dkms hdapsd

ThinkPad 擺動偵測

    watch -d cat /sys/devices/platform/hdaps/calibrate /sys/devices/platform/hdaps/position

ThinkPad 充電管理
    sudo modprobe tp_smapi

    cd /sys/devices/platform/smapi/BAT0  可使用的檔案來控制電池充電

http://www.thinkwiki.org/wiki/Talk:Code/thinkpad-smapi.sh 顯示電池資訊

2012-03-01

來源: 2012-03-01
把 Google Chrome Extension 的 Taiwan Radio Tuner 的播放器藏到背景去了
詳情請見 https://github.com/fourdollars/taiwan-radio-tuner/commit/6f1b5d76ac53f6108cfc979c792ab6b7768cebcf

2012-02-09

來源: 2012-02-09
新版的字串反轉,字串內容包含 UTF-8
http://paste.ubuntu.com/835223/
#include <stdio.h>#include <string.h>
int main(int argc, char* argv[]){
char msg[] = "哈囉世界";
int size = strlen(msg);
int i = 0, pos = 0;
for (i = 0; i < size / 2; i++) {
msg[i] ^= msg[size - 1 - i];
msg[size - 1 - i] ^= msg[i];
msg[i] ^= msg[size - 1 - i];
}
while (pos < size) {
int start = pos;
int end = pos;
for (i = pos; i < size; i++) {
if ((msg[i] & 0x80) == 0x80) {
start = i;
break;
}
}
for (i = start + 1; i < size; i++) {
if ((msg[i] & 0xC0) == 0xC0) {
end = i;
break;
}
}
for (i = start; i*2 < (start + end); i++) {
msg[i] ^= msg[end + start - i];
msg[end + start - i] ^= msg[i];
msg[i] ^= msg[end + start - i];
}
pos = end + 1;
}
printf("%s\n", msg);
return 0;
}

2011-12-22

來源: 2011-12-22
Ubuntu Multi-Monitor

http://design.canonical.com/2011/12/improving-the-multi-monitor-experience-in-ubuntu/

http://www.youtube.com/watch?v=lbwNMnNUGFA

https://docs.google.com/a/canonical.com/document/d/1aHvJ-iIw-59bXTYBmIhQqEx0za2h9jpFE_RhZ2VOvJc/edit?authkey=CJO5wPkH&hl=en_GB

Debian - Popularity contest statistics for

git, subversion,mercurial, bzr

http://qa.debian.org/popcon-graph.php?packages=git%2C+subversion%2Cmercurial%2C+bzr&show_installed=on&want_legend=on&want_ticks=on&from_date=&to_date=&hlght_date=&date_fmt=%25y%2C%25m&beenhere=1

scim, gcin, ibus, fcitx, uim

http://qa.debian.org/popcon-graph.php?packages=scim%2C+gcin%2C+ibus%2C+fcitx%2C+uim&show_installed=on&want_legend=on&want_ticks=on&from_date=&to_date=&hlght_date=&date_fmt=%25y%2C%25m&beenhere=1

( Mat: popcon 啥時推出比對功能的啊,真是太酷了!! )

2011-09-15

來源: 2011-09-15

好害羞喔,讓別人看我的設定檔

寫了一個 vim 的 script ,可以用來自動展開 ifdef 巨集跟 copyright header

__BEGIN_DECLS

__END_DECLS

我也來寫一個 calendar

2011-09-08

來源: 2011-09-08

我收到 pofeng 寄過來的 Arduino MEGA ADK 板子跟書一本
有沒有誰想要拿去 Hack 寫一些使用心得之類的文章出來?
希望有興趣的人可以輪流使用它來做些好玩的事情
另外開了一頁 wiki 給大家做記錄

arduino-mega-adk

2011-08-25

來源: 2011-08-25
Debian version -> autotools -> vala project -> … 其實要是講 vala plurk api lib.

Debian versioning
http://www.slideshare.net/FourDollars/debian-policy-5612-version
http://www.debian.org/doc/manuals/developers-reference/pkgs.html#nmu-changelog
http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version

man deb-version

2011-08-04

來源: 2011-08-04
用 gstreamer 來測試多聲道的方式

$ pacmd list-sinks
$ gst-launch filesrc location=/usr/share/example-content/Ubuntu_Free_Culture_Showcase/Josh\ Woodward\ -\ Swansong.ogg ! decodebin2 ! tee name=tee ! pulsesink device="alsa_output.usb-0c76_USB_Headphone_Set-00-Set_1.analog-stereo" tee. ! queue ! pulsesink device="alsa_output.usb-0c76_USB_Headphone_Set-00-Set.analog-stereo"
$ gst-launch filesrc location=/usr/share/example-content/Ubuntu_Free_Culture_Showcase/Josh\ Woodward\ -\ Swansong.ogg ! decodebin2 ! tee name=tee ! pulsesink device="alsa_output.usb-0c76_USB_Headphone_Set-00-Set_1.analog-stereo" tee. ! queue ! pulsesink device="alsa_output.usb-0c76_USB_Headphone_Set-00-Set.analog-stereo" filesrc location=/usr/share/example-content/Ubuntu_Free_Culture_Showcase/How\ fast.ogg ! decodebin2 ! pulsesink device="alsa_output.pci-0000_00_1b.0.analog-stereo"

2011-06-23

來源: 2011-06-23

先成為一些 Debian package 的 maintainer (找現任的 Debian Developer 幫助你上傳 Debian package)

申請 Debian Maintainer (找一些 Debian Developer 幫你背書一下)

六個月後 (這段時間盡量學習跟認識新的 Debian Developer 交換 GnuPG)

申請 Debian Developer (也是找一些 Debian Developer 來幫你背書)

經過一年多後成為新任 Debian Developer (這段時間會有 Debian Developer 來考試)

http://www.debian.org/devel/join/newmaint

buildd - Daemon for automatically building Debian binary packages from Debian sources
wanna-build - Database to track building of Debian binary packages from Debian sources
http://buildd.debian.org/
http://buildd.net/
http://www.debian.org/devel/buildd/
Live Build => Debian Live CD for buildd
http://dsa.debian.org/

2011-06-09

來源: 2011-06-09

整合 BIG-5 日文延伸字集到 PCMAN X 用 Mozilla Conversion

相關資料整理及部份程式碼實作 http://www.plurk.com/p/clgk2q

2011-06-02

來源: 2011-06-02
http://grub.gibibit.com/Themes
bootloader 有小遊戲可以玩 => grub-invaders
grub2 作的圖形選單
GRUB_THEME="…"

2011-05-19

來源: 2011-05-19
* Windows 7 Enterprise 90-day Trial
http://technet.microsoft.com/en-us/evalcenter/cc442495.aspx
* DevC++
* CodeLite http://www.codelite.org/
* Code::Block http://www.codeblocks.org/
* DJGPP
Mingw64 - http://mingw-w64.sourceforge.net/ # which help you to build win32 progrma on Linux

KDE for Tablet
Ubuntu TV version for ARM

2011-03-31

來源: 2011-03-31
http://en.wikipedia.org/wiki/PulseAudio
架構圖:
http://upload.wikimedia.org/wikipedia/commons/0/00/Pulseaudio-diagram.svg
user space,
osx, windows都有
要裝 infinoted, 用來給 gobby 共筆的 server
fc-match -s serif , 把符合的依序列出來

2011-03-10

來源: 2011-03-10
http://dep.debian.net/deps/dep5/ 現在要包 Debian package 裡面的 debian/copyright 的新格式
debian 下的 watch 檔,是 perl 的 regular 的語法,用來自動偵測是否有新的套件釋出

2011-03-03

來源: 2011-03-03
Shell Script 一遇到錯誤就 break

  1 #!/bin/sh
  2 
  3 set -e
  4

現在要分享的是 vim 裡面
有的時候會想要排序

先選起來,然後再打

:'<,'>sort
:'<,'>!sort|uniq
:'<,'>sort | r!ls

最近在讀 perl 的書,有一點心得跟大家分享
其實 perl5 沒有真正的 OO,而是用 bless 來作的

use 5.010;
use strict;
use warnings;
{ package Hello;
  sub world {

      print "hello world!\n";
      }
}
Hello::world();

my $num = 1;
my $obj = \$num;

bless $obj, 'Hello';
$obj->world;

1;
  • perl 的變數前面要有個 my
  • bless 是作用在 reference 上
  • bless 有分幾種,有 array, hash, coderef,

2011-02-24

來源: 2011-02-24
http://qa.debian.org/popcon.php?package=pcmanx-gtk2

2011-01-20

來源: 2011-01-20
設定一分鐘後自動喚醒 Linux 系統

`sudo su -c "echo $(($(date +%s)+60)) > /sys/class/rtc/rtc0/wakealarm" && cat /proc/driver/rtc`

如果你的機器有支援的話,就可以自動睡醒

( Mat:這樣子,就可以在早上快睡醒時,自動開機,然後撥放音樂叫自己起床~~ )
( 阿怪起的頭~~)

2011-01-13

來源: 2011-01-13
Linux Mint, 有兩種版本,一個 base 在 Debian testing 上,一個 base 在 Ubuntu normal release 上

http://grml.org/
這個是專門 for 系統管理的 live system distrobution

2010-12-30

來源: 2010-12-30
SyntaxHighlighter - http://pastebin.ubuntu.com/548818/

最近更新 betaradio

var app = new BetaRadio();

如果沒有 assign 一個 variable 給他的話

new BetaRadio();
就會直接 free 掉了。

2010-12-23

來源: 2010-12-23

adw launcher,這個是 android 上的快捷列,不錯用

lzma -dc -S .lz ../initrd.lz | cpio -id

2010-11-11

來源: 2010-11-11

Tailisman,桌上遊戲
這個就不手記了,因為已經現場分享了 :-P

在 UDS看到有人作一個 lightdm 的 Light Display Manager

http://www.freedesktop.org/wiki/Software/LightDM
https://launchpad.net/lightdm
https://launchpad.net/~robert-ancell/+archive/lightdm

昨天談到 PCMan 寫的 DM 似乎就是在 LightDM 上面寫的一個 Greeter
http://bobthegnome.blogspot.com/2010/11/lightdm-status-update.html

unity => ubuntu 的新 UI 設計

2010-10-21

來源: 2010-10-21

  • kross

先安裝 openjdk-6-jdk 滿足相依性,然後在第一次進入 GNOME 時,進行 sun-java6-jdk 的安裝取代掉 openjdk-6-jdk,可以在製作安裝光碟 ISO 檔時順便把 sun-java6-jdk 需要的東西放到某個目錄底下,這樣就可以達到不需要網路連線的安裝。

2010-10-14

來源: 2010-10-14
週六花了一個下午,寫了一個 bbs client, alphabbs, GUI的
執行下去,出現一個 dialog,填完就直接連

sudo add-apt-repository ppa:fourdollars/alphabbs

source code覺得越寫越有趣,程式只有 100 行,就可以作出很簡單的 bbs
用 vte 來 render bbs 的終端機
重點是 vala 寫起來,真的很簡單啦
寫起來很像 c#, 但要用 c 的想法去寫他

其實主程式是一個 dialog

vala tutorial裡有個 tool,在第 8 章。可以直接掃,就來 generate interface 跟 object.

vala —pkg vte -C -g code.vala 就可以展開 c 的 code

傳 string 時,會不斷複製, 要用 StringBuilder 來達到 string reference

有不是 gobject 的 object 嗎? 需要自己作 binding

在 tutorial 的第 5章的第14節,因為 dbus不是 gobject,所以要再寫一個 wrapper

2010-10-07

來源: 2010-10-07
tmux, 像 screen,dvtm 的 terminal manager
http://hack.ingday.org/consoleenterprise
Ctrl-b + ?

BetaRadio v1.1版釋出
http://fourdollars.blogspot.com/2010/10/betaradio-v11.html

2010-09-23

來源: 2010-09-23
https://launchpad.net/~ubuntu-wine/+archive/ppa 可以玩 Diablo2 :D
裝 wine1.3 加上 Windows XP + OSS 音效設定

https://launchpad.net/~fourdollars/+archive/ppa/+edit

然後把 enable, publish 給 disable 掉,就可以把 PPA 給刪掉了

https://launchpad.net/~fourdollars/+archive/ppa/+delete-packages

可以刪除不要的 Debian Package

2010-09-09

來源: 2010-09-09
kross live cd http://hackingthursday.wikidot.com/kross
TBD

  • arduino porting
  • issue with openjdk

2010-08-26

來源: 2010-08-26

  • kross project

Keep Rock Open Simple Smile

命名規折http://en.wikipedia.org/wiki/Leet
kross
kr055 0
kro55 4
kross-team 0
kr0s5
k-ross 1
k2o55
k2055
kr0ss 3
kr05s

Project URL - https://launchpad.net/~kro55

2010-08-12

來源: 2010-08-12
問題1:用 bzr的舉手, 4
問題2:用 mercurial有 6
用 git => 8個

( kcliu 小聲說, svn 被忽略了…XD)
最近有在用 svn的 => 5
最近還有在用 cvs => Thinker,要 trace freebsd

git clone =>去 branch別人的專案 => bzr branch

git commit 後, push 才會推到遠端 =>
bzr 裡,還有一個 checkout ,跟 git checkout 完全不同,但跟 svn checkout相近。
用 bzr checkout 下來的 tree,若 commit 時,則會直接 upload,跟 svn commit 一樣。
若不想 upload, 就用 bzr commit —local

bzr checkout —lightweight => history 沒有下來,只抓最新的那一筆

一定要看=> http://wiki.inkscape.org/wiki/index.php/Working_with_Bazaar

<pct> 我在開發時,常在想有沒有一個 vendor 的 branch
<thinker>這個通常叫作 foreign repository
http://wiki.freebsd.org/VCSFeatureVendorBranches

2010-07-15

來源: 2010-07-15

1. 先作 all pass 的版本進 ubuntu PPA
2. 測試過後的 PPA,再推 debian official , pass lintian
3. debian official 會再進一步 trigger ubuntu 的 devel stage porting

2010-07-08

來源: 2010-07-08

Boxee
http://www.boxee.tv/

2010-07-01

來源: 2010-07-01

BetaRadio - http://code.google.com/p/betaradio/

gst-launch v4l2src ! video/x-raw-yuv,width=640,height=480 ! ffmpegcolorspace ! xvimagesink
gst-launch v4l2src ! video/x-raw-yuv,width=640,height=480 ! ffenc_mpeg4 ! rtpmp4vpay send-config=true ! udpsink host=192.168.1.20 port=5000
gst-launch playbin2 uri="udp://192.168.1.20:5000"

2010-06-24

來源: 2010-06-24

  • fossil, 這個在 tsung 的 bookmark 看到有附 issue tracker 跟 wiki 的版本控制系統
  • json-cat, 自製的 JSON C Library 模仿 jQuery 串接指令的寫法
design2.png

2010-06-17

來源: 2010-06-17
dpkg —compare-versions 1.2.3 '<' 1.2.3; echo $? # 跟你想的不一樣~
dpkg —compare-versions 1.2.3 '<=' 1.2.3; echo $? # 才是 '<' 的意義
dpkg —compare-versions 1.2.3 lt 1.2.3; echo $? # 官方建議使用文字的 operator
有興趣可以到 dpkg 的 source code 裡面看 src/enquiry.c 的 cmpversions()

2010-06-10

來源: 2010-06-10

Git is object based not delta based. http://www.slideshare.net/chacon/getting-git

 bzr branch lp:~mat/pkg/software
 cd software
 bzr merge lp:~alien/pkg/software
 bzr cdiff
 bzr commit -m "merge with upstream"
 bzr push lp:~mat/pkg/software

svn:externals這個是 property

$ svn help propset

這個是用來指定某幾個目錄是別的 svn pull過來的
$ git help submodule

mercurial也有模組 hgexternals, Pull external repositories into a Mercurial repository
http://mercurial.selenic.com/wiki/HgExternals
svn又多了 merge, mergeinfo ( 1.5之後的版本,可以紀錄那些 merge過的 changesets )
sudo aptitude install dpkg-dev dh-make libgtk2.0-dev xulrunner-1.9.2-dev devscripts
svn checkout http://pcmanx-gtk2.googlecode.com/svn/trunk/ pcmanx-gtk2-read-only
cd pcmanx-gtk2-read-only/
./autogen.sh
cd build/
./snapshot-deb.sh # replace 'xulrunner-1.9-dev' with 'xulrunner-1.9.2-dev'

什麼是 lndir啊? ( Mat問…)
lndir是用 symbolic link來作一層 overlay出來。

2010-06-03

來源: 2010-06-03
UI 快速建模
http://gomockingbird.com
WiGit: A Simple Git-based Wiki
http://el-tramo.be/software/wigit

2010-05-27

來源: 2010-05-27
qemu的 ctrl-alt-f1會被 Xwindow先截掉
=>按右邊的 ctrl-alt-f1就可以了!
( Mat:我的作法是先用 ctrl-alt-1,然後再打 "sendkeys ctrl-alt-f1"的指令 )

2010-05-20

來源: 2010-05-20
用字元對應表,可以選個別單字,然後再選字型
Gucharmap

2010-05-06

來源: 2010-05-06
做了一個可以多重開機的 Live USB
Grub2 可以引導 iso file
grub command(press c) : ls
詳情請看 blog ..

2010-04-29

來源: 2010-04-29
我寫了一個 Makefile

all:
    @echo $(PWD)

用 make 會正常出現,可以用 sudo make 卻看不到,為什麼為什麼。
因為 sudo 後的指令會以 root 執行,可是那時候 shell 還沒有起來,所以沒有環境變數。

all:
        @echo $${PWD}

all2:                                                                                               
        @echo $$(pwd)

2010-04-22

來源: 2010-04-22
http://sites.google.com/site/fourdollars/debian/version
假設今天 pcmanx 出了新版本, pcmanx-0.4.0-rc1.tar.bz2 的話,這時候要怎麼命名
ubuntu 循 debian 的規則。
Rex: 我可能會包 pcmanx-0.4.0.rc1-0.deb
(為什麼會 -0 ) => ( 其實應該是 -1 )
因為這個 package 有人維護了。
不是 maintainer 的話,就只能用 0 。只有 maintainer 才能用 1

解法 => pcmanx-0.4.0.rc1-0pre1NAME.deb ( for non-maintainer )
最正確的寫法 => pcmanx-0.4.0~rc1-1 < 0.4.0-1

( 詳情請看四元的秘密基地~~ )

若 pcmanx-0.4.0~rc1-1.deb 有的話,那麼 ubuntu 要用什麼名稱?

pcmanx-0.4.0~rc1-1ubuntu1.deb ( 最後面這個1要用0還是1? )
如果是從 debian 官方到 ubuntu 官方就用 1 => pcmanx-0.4.0~rc1-1ubuntu0oem1.deb

那麼 oem0 跟 oem1 有什麼分別?

如果所有都沒有,就 => pcmanx-0.4.0~rc1-0ubuntu0oem0fourdollars1.deb

按此類堆: pcmanx-0.4.0~rc1-0ubuntu0oemacelan12fourdollars1

今天當一個 debian package : pcmanx-0.4.0-1.deb

pcmanx-0.4.0-0svn123456.deb

若是日期的:
pcmanx-20100417 => pcmanx-0.0.20100417.deb

Rex: 問題,":" 怎麼用?

若 pcmanx-20100417.deb ,而且這個是 maintainer 的話…怎麼辦?
這時候就用 pcmanx-1:1.0.deb
( 原來的 pcmanx-20100417.deb 等同於 pcmanx-0:20100417.deb )

pcmanx-0.0.20100417-1.deb

Debain Policy Manual 有寫命名規則

Mat: 請問 4$ 大大有沒有提供命名規則的 service? XD

2010-04-15

來源: 2010-04-15
http://wiki.debian.org/mozilla-devscripts
這個將 firefox add-ons 打包成 debian package

Ubuntu 10.04 Installation USB Stick
$ wget http://archive.ubuntu.com/ubuntu/dists/lucid/main/installer-i386/current/images/hd-media/boot.img.gz
$ sudo su -c "zcat boot.img.gz > /dev/sdc"
$ cp -av ubuntu-10.04-alternate-i386.iso /media/Ubuntu\ Inst/

這樣子就不用燒光碟
zcat v.s. dd ??

http://wi.fd.idv.tw/
四元的秘密基地

2010-04-01

來源: 2010-04-01

2010-03-04

來源: 2010-03-04
http://www.youtube.com/watch?v=f_ETSvTAo4A
google android 手機的開箱宣傳片

Google sites 的版面客製化程度更高了

2010-02-25

來源: 2010-02-25
http://fnords.wordpress.com/2009/10/04/run-your-own-uec-part-1/
http://fnords.wordpress.com/2009/10/07/run-your-own-uec-part-2/
http://fnords.wordpress.com/2009/10/13/run-your-own-uec-part-3/

2010-02-11

來源: 2010-02-11
作了 pcmanx-gtk2 的自動包 debian package 的工具

svn checkout https://pcmanx-gtk2.googlecode.com/svn/trunk pcmanx
cd pcmanx
./autogen.sh
cd build
./snapshot-deb.sh

執行完後,binary 跟 source 的 deb 套件就出來了!!

2010-01-28

來源: 2010-01-28
Google chrome extension 的 icon 尺寸大小: 19, 32, 48, 128

2010-01-07

來源: 2010-01-07
http://fd.idv.tw/radio/player.html
跨平台的 hichannel.
用 jqeury 直接塞 <object/>
想作成 firefox 的外掛,或是 gooogle chrome 的 extension.
console 版的也寫了

chrome 的元件:
在目錄下放 manifest.json
封裝 google chrome 外掛 .crx .pem
http://fd.idv.tw/radio/hichannel.crx

2009-12-17

來源: 2009-12-17
cascade function call, jquery 的版本好用,
然後想說不知道有沒有 c 的版本,就寫了一個…
C 版的 cascaded function:

Object *obj = createObject();
obj->foo( obj)->foo(obj)->foo(obj)->foo(obj);

只能訂一個 function pointer
順序是從左到右

2009-12-10

來源: 2009-12-10
Callback function
可變長度的參數
作一個通用的 callback 跟回傳參數的方法
Scons 很適合測試小程式

2009-11-26

來源: 2009-11-26

ls /sys/class/net/

2009-11-12

來源: 2009-11-12

rumor

聽 nmap 的作者說,用 xss 攻擊是很娘的行為 XD

Reference in C++ Programming

http://fourdollars.blogspot.com/2009/11/c-programming-call-by.html

basic.cpp

#include <iostream>
 
void funcA(int &);
void funcB(int);
void funcC(int *);
 
int main(int argc, char* argv[])
{
    int value = 10;
    std::cout << value << std::endl;
    funcA(value);
    std::cout << value << std::endl;
    funcB(value);
    std::cout << value << std::endl;
    funcC(&value);
    std::cout << value << std::endl;
    return 0;
}
 
/* Call by reference */
void funcA(int& val)
{
    val = 20;
}
 
/* Call by value */
void funcB(int val)
{
    val = 30;
}
 
/* Call by pointer */
void funcC(int* val)
{
    *val = 40;
}

adv.cpp

#include <iostream>
 
using namespace std;
 
void funcA(const int&);
void funcB(int);
void funcC(const int*);
 
int main(int argc, char* argv[])
{
    const int value = 10;
    cout << value << " " << &value << endl;
    funcA(value);
    cout << value << " " << &value << endl;
    funcB(value);
    cout << value << " " << &value << endl;
    funcC(&value);
    cout << value << " " << &value << endl;
    return 0;
}
 
/* Call by reference */
void funcA(const int& value)
{
    int &tmp = const_cast<int&>(value);
    tmp = 20;
    cout << "\t" << value << " " << &value << endl;
}
 
/* Call by value */
void funcB(int value)
{
    value = 30;
    cout << "\t" << value << " " << &value << endl;
}
 
/* Call by pointer/address */
void funcC(const int* value)
{
    int* tmp = const_cast<int*>(value);
    *tmp = 40;
    cout << "\t" << *value << " " << value << endl;
}

output

$ ./main
10 0xbfb17040
    20 0xbfb17040
10 0xbfb17040
    30 0xbfb17020
10 0xbfb17040
    40 0xbfb17040
10 0xbfb17040

Rex's comment
main::value 是一個 alias, compiler (g++ 4.3.4) 會替換成 integral literal,但是依然會在 Stack 中配置此變數供人使用。因此你可以對其寫入 (as memory/stack),惟讀取時依然讀 integral literal. 若要讀改過後值應是

    std::cout << "g:" << *(int *)&value << std::endl;

Mat: 剛剛試了一下,發現好像只要只要 pointer 設成 const 的話,那麼 pointer 跟 *pointer 都會是唯讀的。
用 const_cast 取出來的,應該是原唯讀資料的複本。

Rex: const pointer 有三種設法,見 http://yosefk.com/c++fqa/const.html#fqa-18.5

$4: 實驗結果是變數值真的被改變過了~ 而不是建立複本~ 只是後來又被改回原值了~ http://fourdollars.blogspot.com/2009/11/gcc-c-compiler-const.html
$4: GCC C++ Compiler 對 const 變數數值的還原保護僅限於直接傳入函式的變數本身,不包含該 const 變數底下的 const 變數 http://fourdollars.blogspot.com/2009/11/gcc-c-compiler-const_15.html
$4: GCC C++ Compiler 根本沒有還原 const 變數的數值,只不過先行代換掉使用 const 變數的地方。http://fourdollars.blogspot.com/2009/11/gcc-c-compiler-const-const.html

2009-10-29

來源: 2009-10-29
!vi 執行上一個 vi 指令
^vi^ls 把上一個 vi 的 command 換成 ls 來執行
echo !!

while ! ls -l abc; do echo abc; done
=>
while !! ls -l abc; do echo abc; done ( 這裡會變成上一次的命令 )

mkdir git-remote
cd git-remote
git init --bare

mkdir git-local
cd git-local 
git init --bare

git clone file:///home/sylee/git/remote local

local: 剛剛工作的
remote: 遠端

git-clone file:///hom… workspace

git-branch
git-branch <branch name>
git-branch -a

git-checkout master
git-checkout -b master2 開好直接切過去

yuren: 在 hg 就直接 clone 一個新的就好了, 他的意義在那裡
tsung: 可以作 v1,v2 branch

2009-10-22

來源: 2009-10-22
發現了 vim taiwan user group
http://groups.google.com/group/vim-taiwan

vim mksession 快講

錄影紀錄: http://www.youtube.com/chihchun#p/c/A5EEDD8C5C327E46/0/Gj29fbGvGto

vim 自從 7.0 之後,有內建一個功能 mksession ( :mks )

:mks vim
然後 quit
vim -S session.vim
就可以全部還原至原先的編輯狀態!!
( 路徑都會記住 )

切到一個 tab
:tab split <檔案>
:tab help :tab

2009-10-15

來源: 2009-10-15
開機自動掛載模組的方法 (ubuntu 9.04 以 ndiswrapper 為例)
方法 1. # ndiswrapper -mi
方法 2. # echo "ndiswrapper" » /etc/modules
像 cd、echo 這種 builtin 的命令($ type cd), 不能透過 sudo 執行, 所以 $ sudo su - -c "echo 'ndiswrapper' » /etc/modules"

2009-10-08

來源: 2009-10-08
http://fourdollars.blogspot.com/2009/10/vim-python.html
folding 左邊的 block 條

2009-09-24

來源: 2009-09-24
最近在弄 autotools , 寫個簡單的 sample, 一個最簡單的 case

  1. git clone git://github.com/FourDollars/bse.git 下載 git, "bse"
  2. mkdir m4 && autoreconf -ifs
  3. ./configure && make 就作完了

其中 Makefile.am 條列幾種 c 常用的 case, 可以參考看看
像是 dynamic loading libraries 怎麼弄, 加上 libtool, 還有 shared/static libraries 的寫法
程式碼位置 http://github.com/FourDollars/bse

除非特別註明,本頁內容採用以下授權方式: Creative Commons Attribution-ShareAlike 3.0 License