把東西移到 logdown 了,感覺還不錯 XD
http://allan914.logdown.com/
Allan的資工隨筆雜記
2013年8月14日 星期三
C/C++: strtok() 與 strtok_r()
好幾個月前的東西了,懶得寫詳細作點筆記就好 XD
strtok() 不是 thread-safe 的,要改用 strtok_r()
char * strtok ( char * str, const char * delimiters );
char * strtok_r ( char * str, const char * delimiters, char ** ptrptr);
其實也不一定要 thread 才用 strtok_r() , 有些方便的狀況可用
例如 "A is 2, B is 3, C is 4"
想要在 strtok() 裡面再切,那就用 strtok_r() 傳不同 ptr 給他就好了。
先這樣,想到其他的再說 XD
2013年7月31日 星期三
Android 學習筆記 : 自訂 listener
有時候需要自己來才抓的到點,比較容易高潮啊...(誤)
2. 在 background thread 寫一個 registration function
- 我之前是寫在 controller 裡
另外註記一下字串比對要用 s1.equals(s2),我卡了一陣子才發現這件事...
1. 寫一個 callback interface
public abstract interface TrackInfoListener {
public abstract void onInfoUpdated();
}
2. 在 background thread 寫一個 registration function
- 我之前是寫在 controller 裡
private ArrayList<TrackInfoListener> trackInfoListeners = new ArrayList<TrackInfoListener>();
public void setOnTrackInfoListener (TrackInfoListener listener)
{
this.trackInfoListeners.add(listener);
}
3. 在適當時機讓 callback 開砲
for (TrackInfoListener listener : trackInfoListeners)
{
listener.onInfoUpdated();
}
4. register listener
setOnTrackInfoListener(trackInfoListener);
另外註記一下字串比對要用 s1.equals(s2),我卡了一陣子才發現這件事...
2013年1月28日 星期一
PHP 讀 csv 檔:fgetcsv()
用 PHP 讀 csv 檔,沒想到還有專用的函式 XD
用法是先 fopen() ,然後再用 fgetcsv() 一行一行抓進來,每行都會存成一個 array 。
其中第二個 argument 是最大字串長度,在 PHP 5 裡面可以不給或是填 0 表示無上限,不過會比較慢。
每行的欄位數量可以不同沒有關係,用 count() 去算一下就好。
另外由於是一行一行處理,連 foreach 都省了 XD
範例程式如下:
用法是先 fopen() ,然後再用 fgetcsv() 一行一行抓進來,每行都會存成一個 array 。
其中第二個 argument 是最大字串長度,在 PHP 5 裡面可以不給或是填 0 表示無上限,不過會比較慢。
每行的欄位數量可以不同沒有關係,用 count() 去算一下就好。
另外由於是一行一行處理,連 foreach 都省了 XD
範例程式如下:
<?php
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
?>
Reference: http://php.net/manual/en/function.fgetcsv.php2013年1月22日 星期二
PHP foreach 與二維陣列
本來用了這樣的方式處理:
<?php
$array = [
[1, 2],
[3, 4],
];
foreach ($array as list($a, $b)) {
// $a contains the first element of the nested array,
// and $b contains the second element.
echo "A: $a; B: $b\n";
}
?>
想說奇怪怎麼跑出錯誤訊息,後來才發現這要 PHP 5.5 以上才有,我灌的是 PHP 5.4.10...
沒辦法只好乖乖用普通方法了:
<?php
$array = [
[1, 2],
[3, 4],
];
foreach ($array as $vals)) {
echo "A: $vals[0]; B: $vals[1]\n";
}
?>
雖然本來也有點想用 $array[0][0], $array[0][1], $array[1][0], $array[1][1] 硬幹不過還是算了XD
2013年1月14日 星期一
訂閱:
文章 (Atom)