tag:blogger.com,1999:blog-16646989393174718522024-03-14T03:02:17.153+08:00筆記人生BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.comBlogger73125tag:blogger.com,1999:blog-1664698939317471852.post-60912411298546837922015-01-22T16:42:00.003+08:002015-01-23T00:28:19.223+08:00[Linux] Porting openssl to MIPS platform嵌入式移植無師... 要很多經驗就是。<br>
<br>
通常僅需要把 x86 gcc compiler 換成 cross-compiler就完成了。<br>
<br>
另外再處理 CFLAGS LDFLAGS makefile 可能還要調一下 configuration 的參數...<br>在倒楣的話還要在小改一下code<br>
<br>
好像越說越多,總之<br>
<br>
<b><span style="font-size: large;">Porting 就像生小孩,你不會知道他背後"幹"了多少次。</span></b> (各種意味)<br>
<br>
<br>
<a name="more"></a><br><br>
這次幫別人debug openssl porting 一看到 crti.o 檔案找不到,就該警覺toolchain 有問題了,根本是內部路徑不完備,浪費一堆時間。<br>
<br>
怎麼可能會有人給出有問題的toolchian 阿?!<br>
<b><span style="color: red;">乾... 真的發生了。</span></b><br>
<br>
重新由 buildroot 開始...(包 toolchain -- > port openssl)<br>
以下筆記<br>
<br>
這篇就寫給... 小鋅大人囉。<br>
<br>
完備:<br>
<b>1. toolchain cross compiler:</b><br>
#wget http://buildroot.uclibc.org/downloads/buildroot-2014.11.tar.gz<br>
<br>
<b>2. Good openssl package:</b><br>
#wget https://www.openssl.org/source/old/1.0.1/openssl-1.0.1g.tar.gz<br>
<br>
<b>For toolchain: (target: mips, version 1)</b><br>
>go into buildroot folder<br>
<br>
#make menuconfig<br>
choose:<br>
Target Architecture (MIPS (big endian)) ---><br>
Target Architecture Variant (mips 32) ---><br>
Toolchain type (Buildroot toolchain) ---> [*] Enable large file (files > 2 GB) support<br>
<br>
#make<br>
DONE<br>
<br>
<b>Setup cross-compiler:</b><br>
Edit file as:<br>
# cat set_PATH_build_root<br>
-----<br>
#! /bin/sh<br>
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin<br>
# chang the path to "YOUR" buildroot-gcc342<br>
TOOLCHAINDIR=/YOUR/PATH/buildroot-2014.11/output/host/usr<br>
export PATH=${TOOLCHAINDIR}/bin:${PATH}<br>
----<br>
<br>
Source it<br>
#source set_PATH_build_root<br>
<br>
<b>For openssl:</b><br>
> go into openssl folder<br>
#./config --prefix=/YOUR/OPENSSL/FOLDER/build --cross-compile-prefix=mips-linux- --openssldir=/YOUR/OPENSSL/FOLDER/ shared no-asm<br>
#make<br>
DONE<br>
<br>
<b>Check</b><br>
#file libssl.so.1.0.0<br>
libssl.so.1.0.0: ELF 32-bit MSB shared object, MIPS, MIPS32 version 1 (SYSV), dynamically linked, not stripped<br>
<div>
<br></div>
BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com0tag:blogger.com,1999:blog-1664698939317471852.post-68718198449601596992014-12-30T20:07:00.001+08:002014-12-30T20:07:58.246+08:00[Linux] 簡單安裝 Install tftp server in Linux simply很久很久以前的 hpa-tftpd 的安裝方法.... <br />
<br />
實在有點難用又過時了。<br />
2009 年 ~ ---> Ubuntu 都不知道換了幾次臉。<br />
<br />
為了讓google 自己方便,下面記載新的方法。<br />
<br />
<br />
<a name='more'></a><br /><br />
採用tftpd + xinetd<br />
<br />
<b>#apt-get install tftpd</b><br />
<b>#apt-get install xinetd</b><br />
<br />
tftpd server 由xinetd 管理<br />
所以編輯<br />
<br />
<b>#vi /etc/xinetd.d/tftp</b> (無此檔案,須手動新增)<br />
<br />
內容範例如下:<br />
<b># cat /etc/xinetd.d/tftp </b><br />
service tftp<br />
{<br />
disable = no<br />
socket_type = dgram<br />
protocol = udp<br />
port = 69<br />
wait = yes<br />
user = root<br />
server = /usr/sbin/in.tftpd<br />
<b>server_args = /home/bejo/tftp</b><br />
per_source = 11<br />
cps = 100 2<br />
flags = IPv4<br />
}<br />
<div>
<br /></div>
<div>
黑體字最重要。</div>
<div>
<br /></div>
<div>
啟動:</div>
<div>
<div>
<b># /etc/init.d/xinetd restart</b></div>
<div>
* Stopping internet superserver xinetd</div>
<div>
* Starting internet superserver xinetd </div>
</div>
<div>
<br /></div>
<div>
完畢。</div>
BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com0tag:blogger.com,1999:blog-1664698939317471852.post-935171850363705762014-12-26T19:03:00.000+08:002014-12-26T19:03:10.643+08:00[慣C] Share memory memoIPC 共享技巧之一<br />
<br />
慣C必備的工具書裡面就有說明,網路牽狗來跑一跑也很多資料<br />
像:<br />
<a href="https://www.google.com.tw/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=shared+memory&lr=lang_zh-TW">https://www.google.com.tw/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=shared+memory&lr=lang_zh-TW</a><br />
<a href="http://lazyflai.blogspot.tw/2007/08/linux-shared-memory.html">http://lazyflai.blogspot.tw/2007/08/linux-shared-memory.html</a><br />
<a href="http://fecbob.pixnet.net/blog/post/42774184-linux-ipc%E2%80%94%E2%80%94shared-memory">http://fecbob.pixnet.net/blog/post/42774184-linux-ipc%E2%80%94%E2%80%94shared-memory</a><br />
<br />
打完收工!!!<br />
<br />
<br />
<a name='more'></a><br />
<br />
ㄜ! 這樣好像太敷衍,多說一點好了...<br />
<br />
首先不管書上還是網路上的範例都是用 fork 來當作一個範例講解,事實上只要我們能取得shared memory 的 ID<br />
就算A 程式已經結束,B程式還是可以在記憶體尚未被釋放的前提下取得共享的內容,甚至進行修改。<br />
<br />
簡單寫一下,程式碼就不放blog,github 方便些。<strike>(迷之音:是因為不會貼漂漂亮亮的程式碼吧)</strike><br />
https://github.com/BejoTW/for_blog/tree/master/share_memory<br />
<br />
<br />
程式 A init 執行並結束<br />
# ./init<br />
shmID = 5636108<br />
<br />
--<br />
(天荒地老時間通過.....泡茶聊天沒關係,資料都還在記憶體裡)<br />
--<br />
<br />
程式B 輸入記憶體ID<br />
# ./get 5636108<br />
get share ID = 5636108<br />
wrote by Bejo<br />
second line<br />
<br />
拿到資料。<br />
<br />
怎麼會這麼無聊寫這個? 其實是因為一個 nvram issue,<br />
<br />
nvram 是什麼?<br />
嵌入式工程師其實會常常看到的關鍵字,不管是滿滿open 的 Linux embedded 還是愛恨交加的Cisco IOS router, 都可以看到他的名字<br />
<br />
就是一塊重開機還會存在的記憶體 - <b>non-volatile memory</b><br />
<br />
通常會在flash 切割一塊MTD空間,裡面作一塊文字檔空間,要不要加密看RD了,存放裝置的設定值,像device name, config ... 三小的<br />
<br />
結合MTD 的讀寫function 就可以作出一塊嵌入式必備的功能,開機時把設定讀出來,有修改就回存進去。<br />
<br />
這邊不大方便把案子的source code 搬上來筆記,那編寫的就是個簡單的神似範例好了。是的...超簡單。<br />
<br />
把一個檔案讀出來(自行想像接到MTD source, X86 示範表示無奈...),映射到記憶體,放到share 空間,<br />
B檔案進行讀取操作。<br />
<br />
這樣帶來一些好處:<br />
<br />
1. 實作簡單 - MTD 讀取寫入API接完幾乎就結束了,大概半天coding 時間就可以擁有一個nvram 完整功能。<br />
2. 放在記憶體空間操作速度快,應該沒有人會作MTD 瘋狂讀寫操作吧 (mount 起來的RW不算...)<br />
3. 取用方便,包成.so 檔,不需要常駐daemon<br />
<br />
缺點:<br />
1. detach attach 要確實,這次issue 噴在這裡,有人黑手腳,可惡。<br />
2. MTD 寫入時間過長,寫回MTD時斷電,那下次開機就是毀損狀態 ->解: 另外寫 MTD heath 照顧程式<br />
<br />
總之,減少硬體操作機會,放到記憶體空間是一個較佳的選擇。<br />
<br />
後記:<br />
嘿!!! 阿笨,這筆記給你的,乖乖看喔。<br />
<div>
<br /></div>
BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com0tag:blogger.com,1999:blog-1664698939317471852.post-37556601058762859402014-12-15T19:28:00.000+08:002014-12-15T19:28:22.597+08:00[Linux] lunbuntu + unetbootin + live USB<div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZmcNxRoHg_vdftj3HMm8zW-623-zAgIZlrZ1Mq5uArYNTUhJRr9fJbiLSdhYjSSVqK3Q0Lb-WjWYTA5cdALG4o4Aofq5k5aMa70zQo7ZH-WcyynR5jCdCk6sVGGOqDO3F6OB0wxH9kVg/s1600/IMG_1870.TIF" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZmcNxRoHg_vdftj3HMm8zW-623-zAgIZlrZ1Mq5uArYNTUhJRr9fJbiLSdhYjSSVqK3Q0Lb-WjWYTA5cdALG4o4Aofq5k5aMa70zQo7ZH-WcyynR5jCdCk6sVGGOqDO3F6OB0wxH9kVg/s1600/IMG_1870.TIF" height="480" width="640" /></a></div>
<br />
這超迷你版的USB,哈~ 超無痕的。可惜速度是假USB3.0<br />
<br />
<br />
unetbootin 用來製作 live USB 這件事情就不用說了,Easy and more in google.</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
稍微解說一下原理:</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
載用syslinux 的booting loader 來帶起作業系統,因為是live 每次開機都會洗掉,根據這點很輕易的就可以在</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
"/xxx/xxx" 發現採用squashfs 一個read-only 壓縮檔案系統,這邊看起來都跟平常工作的嵌入式系統類似,特別的是</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
unetbootin 是有提供使用者讀寫修改,下次重開機可以記錄保留的效果</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br clear="none" /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
何等神奇!!! 馬上下一個 mount & losetup -a 檢查一下<br />
<br /></div>
<code>
root@lubuntu:~# mount
/cow on / type overlayfs (rw) </code><br />
<code>/dev/sdb1 on /cdrom type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro) </code><br />
<code>/dev/loop0 on /rofs type squashfs (ro,noatime) </code><br />
<code>/dev/loop1 on /media/bejo/c698766a-48e2-6d45-81ae-fe5fba3ff6f2 type ext2 (rw,nosuid,nodev,uhelper=udisks2)</code><br />
<code>root@lubuntu:~# losetup -a </code><br />
<code>/dev/loop0: [0811]:35 (/cdrom/casper/filesystem.squashfs) </code><br />
<code>/dev/loop1: [0811]:41 (/cdrom/casper-rw) </code><br />
<br />
loop1 就是那神奇的 casper-w</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br clear="none" /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
如果你做一個 mount 動作</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
mount -o loop casper-rw /mnt/xxx</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
就會發現長得非常類似(根本一樣 = =) 一個基本的file system 又剛剛好是你改過的檔案</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br clear="none" /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
哪有這麼剛好,原來 ...</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
是 overlap ... mount</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br clear="none" /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
原理就是先掛一個static 的image 再把自己可以修改的蓋上去,噹噹 完成檔案系統可以紀錄被修改的樣子</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
效果就會 ---> 先讀取可讀寫的 如果沒有 ---> 讀取靜態的 ---> 結束這回合</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br clear="none" /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
孔明先生,這太妙了。</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br clear="none" /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
說一下重點:</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
1. 從此只要備份好 casper-w 這個檔案,凡是live usb 都可以被還原 (自己還原自己作)</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
2. 可以加大 casper-w 大小</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
方法:</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
(找一台Linux 不是同一台!!!)</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
#dd if=/dev/zero bs=1M count=1024 >> casper-rw // 1024MB ---> 自行更改 別超過4G</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
#e2fsck -f casper-rw</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
#resize2fs casper-rw</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
創造一顆新的:</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
#dd if=/dev/zero of=casper-rw bs=1M count=1024 </div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
#mkfs.ext3 casper-rw</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
曾經想辦法突破4GB,受限於FAT32大小只能支援到此,</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
ext3 -> 可booting 更換不了超過4GB </div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
ext2 -> 開機不能</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
ext4 -> 開機不能</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
ntfs -> ... 你在開玩笑嗎?</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
只好認命了。</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
這種手法來記錄file system 的修改,印象似乎在OPENWRT也是如此,時光有限,待有緣再分享。</div>
BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com0tag:blogger.com,1999:blog-1664698939317471852.post-21816593919203652342014-12-15T19:23:00.001+08:002014-12-15T19:23:05.161+08:00[Linux] dlopen 和 dlsym<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
我都說這些是放再經書 (C tools) 最末頁妖魔鬼怪API ....</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
原理網路上很多,這裡簡單筆記就好。</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<a name='more'></a></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
dlopen和dlsym是用於打開動態鏈接庫中的函數,將動態鏈接庫中的函數或類導入到本程序中:</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<b>dlopen函數:</b></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
功能:打開一個動態鏈接庫</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<b>dlsym函數:</b></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
函數原型是</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
void* dlsym(void* handle,const char* symbol)</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
該函數在<dlfcn.h>文件中。</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
handle是由dlopen打開動態鏈接庫後返回的指針,symbol就是要求獲取的函數的名稱,函數 返回值是void*,指向函數的地址,供調用使用。</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<b>先寫一個so 來讀:</b></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
root@bejo:/home/bejo/code/test# cat libso.c<br />
#include <stdio.h><br />
<br />
int bejo_lib(char *name, int i)<br />
{<br />
printf("I am %s, do i=%d\n", name, i);<br />
<br />
return 0;<br />
}<br />
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<b>包成 dynamic using</b></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
#gcc -c libso.c</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
#gcc -shared -o libso.so libso.o</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<b>寫一個使用者~*</b></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
root@bejo:/home/bejo/code/test# cat use.c<br />
#include <stdio.h><br />
#include <stdlib.h><br />
#include <dlfcn.h><br />
<br />
int main(int *argc, char **argv)<br />
{<br />
void *fHandle;<br />
void (*func)();<br />
<br />
fHandle = dlopen("./libso.so",RTLD_LAZY);<br />
<br />
if (!fHandle) {<br />
fprintf (stderr, "%s\n", dlerror());<br />
exit(1);<br />
}<br />
dlerror();<br />
<br />
func = (void(*)())dlsym(fHandle,"bejo_lib");<br />
<br />
if (func) {<br />
func("BEJO", 999);<br />
}<br />
<br />
dlclose(fHandle);<br />
return 0;<br />
}</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<b>包一包,記得加上 -ldl ---> libdl.so</b></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
#gcc use.c -ldl -o use#include <stdio.h></div>
<span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">#include <stdlib.h></span><br />
<span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">#include <dlfcn.h></span><br />
<br style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;" />
<span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">int main(int *argc, char **argv)</span><br />
<span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">{</span><br />
<span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;"> void *fHandle;</span><br />
<span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;"> double (*func)();</span><br />
<br style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;" />
<span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;"> fHandle = dlopen("./libm.so.6",RTLD_LAZY);</span><br />
<br style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;" />
<span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;"> if (!fHandle) {</span><br />
<span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;"> fprintf (stderr, "%s\n", dlerror());</span><br />
<span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;"> exit(1);</span><br />
<span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;"> }</span><br />
<span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;"> dlerror();</span><br />
<br style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;" />
<span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;"> func = (double(*)())dlsym(fHandle,"fabs");</span><br />
<br style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;" />
<span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;"> if (func) {</span><br />
<span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;"> printf("fabs = %f\n", func(-12.345));</span><br />
<span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;"> }</span><br />
<br style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;" />
<span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;"> dlclose(fHandle);</span><br />
<span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;"> return 0;</span><br />
<span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">}</span><br />
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
# ./use<br />
I am BEJO, do i=999</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
--</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
上面其實都在工具書可以查到</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6CiJUKThZGlLGe5dkG21AkAfkMwJFc5vnxw5gr0IPKLQxPmFJFfR77XT2rqihKr67arfrepySnyA0aXZJxN8TG9NXC4OMsdQm2vG_9sp1xFSC2yeNcwp1WLb75aktYFM2z7uyxGApmeI/s1600/IMG_1866.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6CiJUKThZGlLGe5dkG21AkAfkMwJFc5vnxw5gr0IPKLQxPmFJFfR77XT2rqihKr67arfrepySnyA0aXZJxN8TG9NXC4OMsdQm2vG_9sp1xFSC2yeNcwp1WLb75aktYFM2z7uyxGApmeI/s1600/IMG_1866.JPG" height="400" width="300" /></a></div>
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
這本真的是聖經阿....</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
來作點無聊的事...</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
如果你手上拿到一個陌生的so 檔又想跑跑看?</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
ex:</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
#cp cp /lib/i386-linux-gnu/libm.so.6</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
這個好了。lib math</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
那就:</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
#readelf -s libm.so.6 | grep fabs</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
0000bdb0 7 FUNC WEAK DEFAULT 13 <a href="mailto:fabs@@GLIBC_2.0">fabs@@GLIBC_2.0</a></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
有耶,這是一個把浮點數取決對值的方法</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
修改一下use.c</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
#include <stdio.h><br />
#include <stdlib.h><br />
#include <dlfcn.h><br />
<br />
int main(int *argc, char **argv)<br />
{<br />
void *fHandle;<br />
double (*func)();<br />
<br />
fHandle = dlopen("./libm.so.6",RTLD_LAZY);<br />
<br />
if (!fHandle) {<br />
fprintf (stderr, "%s\n", dlerror());<br />
exit(1);<br />
}<br />
dlerror();<br />
<br />
func = (double(*)())dlsym(fHandle,"fabs");<br />
<br />
if (func) {<br />
printf("fabs = %f\n", func(-12.345));<br />
}<br />
<br />
dlclose(fHandle);<br />
return 0;<br />
}</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
輸出:</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
# ./use<br />
fabs = 12.345000</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
恩... 好吧。我真無聊 囧></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
其實這幾個function 就在工具書裡面,尤其是最末頁幾個妖魔鬼怪專用API,平常工作開發不大會用到,有看到也就review open source 的時候</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
這次跟其他部門合作剛好有開發到,負責撰寫*.so 檔,來切開開發工作。</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
平行的開發方法很多種技巧,像常見的靠include 來切割C files、module 。 </div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
而這種不需要header 的方式,讓開發平行很多。</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
也非常適合來作 user space 的insert packaget module </div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
妖魔鬼怪還有一組 share memory API 剛好這次噴bug 在這裡,下次再來筆記一下。 </div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com0tag:blogger.com,1999:blog-1664698939317471852.post-10415804873262404292014-12-03T19:49:00.004+08:002014-12-03T19:49:43.661+08:00[Bash] bash_completion - 命令強迫補完計畫 (?沒有計畫~ 只有... 搗蛋<br />
<br />
最近幾版的 Ubuntu lubuntu 的兔兔娘... command line 跑起來頗靈異<br />
<br />
當發生<br />
make <tab> <tab> 連按很多下會看到<br />
<div>
<br /></div>
<div>
<div>
--</div>
<div>
root@bbG:~# make 23:set: command not found</div>
<div>
23:set: command not found</div>
<div>
--</div>
</div>
<div>
原本是預期看到 /path/to/some/where</div>
<div>
<br /></div>
<div>
<a name='more'></a><br /></div>
<div>
<div>
那是因為shell 試圖幫你補完make 子項命令</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
例如 svn <tab> <tab><br />
<br /></div>
<code>
root@bbG:~# svn <tab/tab></code><br />
<code>add checkout commit export info merge patch praise propset resolve switch
annotate ci copy -h list mergeinfo pdel propdel pset resolved unlock
blame cl cp help lock mkdir pedit propedit relocate revert update
cat cleanup delete --help log move pget propget remove rm upgrade
changelist co diff import ls mv plist proplist rename status --version
</code>
<br />
<div>
<br />
被觸發的檔案位置<br />
<br />
<b>/etc/profile</b> <--- 可以看到 --> <b>/etc/profile.d/bash_completion.sh</b><br />
<br /></div>
<div>
會被執行</div>
<div>
<br /></div>
<div>
註解 bash_completion.sh 裡面的內容就好</div>
<div>
<br /></div>
<div>
這裡</div>
<div>
<b>/etc/bash.bashrc</b><br />
<b><br /></b></div>
<div>
也有歷史遺跡,有被註解起來,還好沒被打開。</div>
<div>
<br /></div>
</div>
<div>
--</div>
<div>
這其實有機會帶來很方便的指令補完能力,可惜實際上使用習慣的差異,跟舊習慣延伸出來的竅門</div>
<div>
例如:</div>
<div>
# make packages/bejo_all --> 對 bejo 這包package 作 make all 動作</div>
<div>
<br /></div>
<div>
tab 就變得不必要是補完指令了。</div>
<div>
<br /></div>
<div>
--</div>
<div>
還是得說... 順手的工作環境,會讓自己舒暢一點。(完畢)</div>
<div>
<br /></div>
<div>
<br /></div>
BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com0tag:blogger.com,1999:blog-1664698939317471852.post-71071971243844402872014-11-24T20:06:00.000+08:002014-11-24T20:06:32.895+08:00[Linux] lubuntu - Unity byebye<span style="color: red; font-size: large;">Unity you are so xxxx......</span><br />
<br />
恩.. 最近一台工作Server 整個partition 被掛載成 read-only, 稍微檢查一下應該是disk checking 壞軌,很大心的就給他"呂布"...下去<br />
<br />
掛了 =____________=<br />
再起不能。<br />
不要逼我換最新版的烏奔兔,那個U什麼跟什麼nity的好難用又好醜....<br />
<br />
幸好... 跟我一樣煩惱的人很多....<br />
<br />
<a name='more'></a><br />
<br />
<strike>好人</strike>魯大聽了我少年煩惱就推了 "魯幫兔" (lubuntu)<br />
<br />
<b>介紹 "<a href="http://zh.wikipedia.org/wiki/Lubuntu" target="_blank">lubuntu wiki</a>"</b><br />
<br />
內容傳說台灣人自己包,還有<a href="http://pcmanx.blogspot.tw/" target="_blank">電腦人</a>(PCMAN)<strike>醫科、資訊都打趴人</strike>前輩的作品都在裡面。<br />
這不就是: 自己的OS自己寫,自己的Linux自己包... 等等 為啥資訊界都出這種怪物。(翻桌)<br />
<br />
原本開發總是傾向使用Ubuntu server LTS 避開那惱人的Unity桌面,Server版也會比較小巧一點。一個肥大的系統,對於靠嵌入式開發工作吃飯的傢伙,肥胖往往都會增加軟體分析的困難度阿(各種意味...)。<br />
<br />
這麼說好了,要在一台新的Device 上新增一項功能,常用的都是(加法x加法)的方式,在一台空空如也的系統上把所"必須"的lib+package+driver 放上去。一個肥大的系統,卻剛好反過來,必須要 (減法x減法) 把不必要的項目一一剔除。這兩者有什麼關係呢? 因為手上的Linux x86同時也會是開發中的對照組,一個實驗測試對象。<br />
<br />
碎碎念結束。<br />
<br />
掏出最新穩定的魯幫兔 就14.04 LTS --> 關閉BIOS的軟碟機選項,不然會噴dev fd0 找不到<br />
-->古狗自己上次裝過的東西+設定<br />
-->安裝結束<br />
-->一慣簡單的流程(?)。<br />
<br />
目前心得:<br />
<b>桌面:</b> 根本是win 格局在現,很無痛的就習慣了,以後可以考慮把自己NB的10.04除役了。<br />
<b>PCMAN FM: </b>真的好快ㄚㄚㄚ~~~<br />
<b>其他:</b> 跟ubuntu 幾乎無異 GJ~<br />
<br />
兩三個小時就把原本舊設定跟工作資料搬遷到新硬碟上,連cross-compiler 套件相依問題都沒發生,萬幸。<br />
<br />
唯一小問題,猜想應該也是新版的Ubuntu都會遇到: bash_completion<br />
<br />
這可以稱作 命令補完計畫嗎?<br />
解法下篇再寫。(逃)<br />
<br />
<br />
我真是一個OS選擇保守派Orz,一個版本好多年,完全沒嘗鮮衝動。軟體選擇卻剛好相反。哈。<br />
<br />
掰掰烏奔兔。Unity 我們根本沒見過面,不掰了。<br />
<br />
**本文僅記錄OS版本選擇上的另外一個里程碑**<br />
<br />
<br />BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com0tag:blogger.com,1999:blog-1664698939317471852.post-40925875487804287912014-11-11T20:10:00.000+08:002014-11-24T13:58:56.950+08:00[Kernel] 叫你的kernel 跑你程式<span style="font-size: large;">Ask your kernel to run your <strike>mama</strike> userspace process</span><br />
<br />
上面僅供參考。<br />
<br />
通常來說Linux kernel/user space 分際是很嚴謹的,尤其是記憶體存取,往往得靠 copy_to_user copy_from_user 至於操作就更多了,netlink、 proc、ioctl 、open/read/write/fcntl。<br />
Linux效率上會輸給輕鬆達成zero-copy 的Cisco IOS,看完IOS的Source code發現根本就是逆天阿(下略5千字...),天生作message/packet control 的奇才.... @@<br />
<br />
既然兩個模式楚河漢界,能突破這種規範就真的非常值得玩玩。<br />
<br />
<span style="font-size: x-large;">下面就一起來跑你.....(下略</span><br />
<br />
<br />
<a name='more'></a><br />
<br />
首先抓完Linux 入手看到 Linux source 先從 linux/init/main.c 開始,把他當作是Linux 最開始執行的部分(是啦... 細細分當然不是這樣,別鞭我阿)。題外話: 你看看麗娜斯老爸人家寫程式也是從main 開始(驚<br />
<br />
--<br />
裡面有一段:<br />
run_init_process("/bin/init");<br />
run_init_process("/bin/sh");<br />
<div>
赫然發現... kernel 是可以直接執行 file system 裡面 user space 的程式!!!</div>
<div>
流程: run_init_process() -->kernel_execve()--> 自行往下... 看到asm code 就可以去喝涼水了</div>
<div>
<br /></div>
<div>
既然這種二督六脈~路徑沒問題,事實上kernel 的確有提供API 可供 kernel module 執行的時候呼叫</div>
<div>
<br /></div>
<div>
call_usermodehelper(char *path, char **argv, char **envp, enum umh_wait wait)</div>
<div>
<br />
內部內容 -> kernel working queue ... 啪啦啪啦,別人都寫得很好了。<br />
<a href="http://jamesgodzilla.blogspot.tw/2013/03/kernel-space-user-space.html">像這個</a> <a href="http://www.ibm.com/developerworks/library/l-user-space-apps/">還有這個</a> <a href="https://www.kernel.org/doc/htmldocs/kernel-api/API-call-usermodehelper.html">還有聖經</a><br />
<br /></div>
<div>
要注意的是最後一個參數:</div>
<div>
<div>
enum umh_wait {</div>
<div>
UMH_NO_WAIT = -1, /* don't wait at all */</div>
<div>
UMH_WAIT_EXEC = 0, /* wait for the exec, but not the process */</div>
<div>
UMH_WAIT_PROC = 1, /* wait for the process to complete */</div>
<div>
};</div>
</div>
<div>
<br /></div>
<div>
這個 helper 如果要執行在 中斷區間的話,就得使用 UMH_NO_WAIT ,而且不保證執行成功... 使用上要多加考慮。(hotplug 到底是怎麼保證的阿 ?! 找時間再來看看好了...)</div>
<div>
<br /></div>
<div>
教學網路很多,來的sample 方便筆記,腦袋裝東西越來越困難了。寫程是不靠google 查API的神人,大概不會是我 T^T。</div>
<div>
<br /></div>
<div>
<div>
static int call_user(char *exec)</div>
<div>
{</div>
<div>
char *argv[] = {exec, NULL};</div>
<div>
</div>
<div>
// Daemon stdin out err is disable from kernel, so no msg</div>
<div>
static char *envp[] = {</div>
<div>
"HOME=/",</div>
<div>
"TERM=linux",</div>
<div>
"PATH=/sbin:/bin:/usr/sbin:/usr/bin", NULL };</div>
<div>
</div>
<div>
printk("Call user now \n");</div>
<div>
call_usermodehelper(argv[0], argv, envp, UMH_NO_WAIT); </div>
<div>
return 0;</div>
<div>
}</div>
</div>
<div>
<br /></div>
<div>
說到用途?! 配合kernel timer + 變數monitor ,可以逆向來作一些事囉。</div>
<div>
<br /></div>
BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com0tag:blogger.com,1999:blog-1664698939317471852.post-51280481800550211902014-10-25T23:27:00.000+08:002014-10-25T23:27:53.625+08:00[五四三] TPMS 胎壓偵測~裝裝裝其實是看到<a href="http://www.malichuang.com/archives/11841">這篇文章</a>....<br />
<br />
平常開自己也都是疑神疑鬼的... 總是感覺輪胎都偷偷不認真工作!!! 大概是之前中過幾次釘,研究了一下市面上貨色,胎內胎外什麼。<br />
<br />
最後決定來裝 ORO 的 W401B 省電型的,好像買個接收器還可以跟車上的目擊者整合耶,雖然這樣,最近目擊者有點秀逗,還是不要整再一起好了,免得一起過世。<br />
<br />
<br />
<a name='more'></a><br />
<br />
別人高級車或是以後新車都會是標準配件,我們這種菜籽命的... 又老又醜只能靠外掛O__Q。<br />
<br />
這東西原廠裝起來超貴的...<br />
只好從民間保養廠探訪,第一次總是毛毛低,從ORO官網找個一間看起來超專業的,混個時間闖了進去!!!<br />
<br />
大喊!!!!<br />
<span style="color: red; font-size: large;">老闆!!! <strike>最正的姑娘叫出來!!! </strike>我要裝胎壓偵測啦 </span><br />
<br />
在這種地方氣勢不可以輸,免得被當肥羊 (好像一開始就輸了...)<br />
<br />
總之先前訪價,還算合理,也還OK。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgj-7rQI2QVluBQzB2TohaA_7i7AqK3A1HWa0QswWq57-f4Ubhpvp_X179NfOXu2sc02hJD5MlaVH7kk7eR0eG8DeqrY6fAYwWb2GupOeQBSZgVni_bCpqt6SP_GcQNVhlpA70WO_VTdGM/s1600/IMG_1693.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgj-7rQI2QVluBQzB2TohaA_7i7AqK3A1HWa0QswWq57-f4Ubhpvp_X179NfOXu2sc02hJD5MlaVH7kk7eR0eG8DeqrY6fAYwWb2GupOeQBSZgVni_bCpqt6SP_GcQNVhlpA70WO_VTdGM/s1600/IMG_1693.JPG" height="300" width="400" /></a></div>
<br />
一進去餅乾飲料休息室,跟原廠不相上下,連車子都好好用套子裝起來,有套真的很安心(?<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiv4aXRN6YJLvNxp5dem-hSQqFgPiGzEgUpz1-WjVEFI9cJNSafdgtqVY1PbKebBGs0AcI0-Q1Mb45vlyRBTGAovz5C5IMpAfemQWXTk5R93vm3Jj7uAW2y5aYzS1fQvyIvX8nH_e9SWxw/s1600/IMG_1695.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiv4aXRN6YJLvNxp5dem-hSQqFgPiGzEgUpz1-WjVEFI9cJNSafdgtqVY1PbKebBGs0AcI0-Q1Mb45vlyRBTGAovz5C5IMpAfemQWXTk5R93vm3Jj7uAW2y5aYzS1fQvyIvX8nH_e9SWxw/s1600/IMG_1695.JPG" height="400" width="300" /></a></div>
<br />
輪胎拆下來,不只有作記號,不用擔心交錯錯位,裝上去之後還有重量配平,貼了一堆像砝碼的鬼東西,根據計算10克的重量在輪胎上,時速100KM 就會產生三四公斤的離心拉力...<br />
=________= 毛毛的<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh4RLHGYQ8HV5MR9OU8cD3MJfTQ4lK6cSOvJ87df41p60hqG3er-6UguPA1MSF5FeooLPO8EubxziFXou-zawM1VPJh_ADX3idjbxzorJivdyzrBckXMvTrlyRET2xEPvqAh3c17Lzwnc/s1600/IMG_1694.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh4RLHGYQ8HV5MR9OU8cD3MJfTQ4lK6cSOvJ87df41p60hqG3er-6UguPA1MSF5FeooLPO8EubxziFXou-zawM1VPJh_ADX3idjbxzorJivdyzrBckXMvTrlyRET2xEPvqAh3c17Lzwnc/s1600/IMG_1694.JPG" height="300" width="400" /></a></div>
<br />
<br />
夭壽~ 這東西還是第一次看過,好像有點威 @@<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhostaYtFeV4L-FmN8WmSp7PsQg8qWHTmhry2incuJ9Wsc2ACEIJDyXul5q93aKz2w7ZxSvbCa27LPL4Y62u-XtNk-Xv6MIt1vR1dEe_xUSK7AUTREOlDPm7xQhr-Y6zHbga-6LTTTPea8/s1600/IMG_1692.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhostaYtFeV4L-FmN8WmSp7PsQg8qWHTmhry2incuJ9Wsc2ACEIJDyXul5q93aKz2w7ZxSvbCa27LPL4Y62u-XtNk-Xv6MIt1vR1dEe_xUSK7AUTREOlDPm7xQhr-Y6zHbga-6LTTTPea8/s1600/IMG_1692.JPG" height="300" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
最後裝好丟在車內,面板可以查看胎壓+溫度+跟電瓶發電機電壓。<br />
挺不錯的。只是....<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIWz2sHJmGYqbVM9sA2vuTLrVsSpqDC53F3ojrUjBnajeleFSRLUdaFqm7O5bmibmxoLBMX6PmFas8sGlPNyc4Lk0U0zfH3hpQ_atDsB8XUeQYIaPK6VnXzbtdIaQkQ932Hm2Epyn9LcA/s1600/IMG_1698.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIWz2sHJmGYqbVM9sA2vuTLrVsSpqDC53F3ojrUjBnajeleFSRLUdaFqm7O5bmibmxoLBMX6PmFas8sGlPNyc4Lk0U0zfH3hpQ_atDsB8XUeQYIaPK6VnXzbtdIaQkQ932Hm2Epyn9LcA/s1600/IMG_1698.JPG" height="300" width="400" /></a></div>
<br />
<span style="font-size: large;"><b>預設輪胎監控80度C,真的會出現這麼燙嗎 囧????</b></span><br />
<br />
<br />
6500完工價,沒打折也沒得團購...<br />
不過別再去裝啥影音響組合啦!!<br />
聽說電池可以跑六七年以上,買個出入平安囉。<br />
<br />
<br />BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com0tag:blogger.com,1999:blog-1664698939317471852.post-70617253103503386942014-10-20T21:53:00.000+08:002014-10-20T21:53:38.874+08:00[五四三] 讓Line 更方便打電話<br />
現在網路都跑到<b>4G</b>的速度,支撐語音流量早就是一塊蛋糕,二話不說,先去電信局轉平板專案,把話租降到最低 --> $0,這方案還是可以講電話啦,只是僅有區區一百塊的額度,超過就是網內$3網外$6, 還好網路4G頗快,要好好用網路的優勢,把語音的部分也轉到網路使用才對。<br />
<br />
<br />
<a name='more'></a><br />
<br />
<b>那就是用Line 來處理簡訊+語音啦。</b><br />
<br />
身為一個 <strike>Line 社長分身 </strike>宅宅,下載Line 整天玩來玩去是很正常低,現在幾乎一堆朋友都在上面,只是平常訊息如果開提醒,不管誰傳訊息都會一直叫,通常人都會把訊息通知關掉,那Line 電話打進來就跟著不響了....<br />
<br />
<span style="color: red; font-size: large;"><b>這不就完全失去打電話找人的意義了 嘛 囧!?</b></span><br />
<br />
<br />
下面有個方法可以把訊息跟電話的提醒<b>分開</b>。<br />
也就是訊息不叫只有標記符號<br />
Line電話來的時候,會有聲音跟震動。<br />
<br />
就跟電話一樣哩:<br />
<br />
靜音模式--->放在口袋會震動,訊息不給震動<br />
普通模式--->放在口袋會響零,訊息不給響<br />
<br />
設定適用: iphone<br />
<br />
Line 設定畫面:.<br />
新訊息記得不要選<b> <span style="color: red;"><-- 重點</span></b><br />
提醒 -> 開<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-RMfgaHIKT-w/VEDT9vbjjVI/AAAAAAAAkqc/L5NnNWBuB4o/s1600/IMG_1691.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-RMfgaHIKT-w/VEDT9vbjjVI/AAAAAAAAkqc/L5NnNWBuB4o/s1600/IMG_1691.PNG" height="400" width="225" /></a></div>
<br />
<br />
IOS 設定->通知中心->LINE 設定畫面:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-7fBVhdeGhdg/VEDUBwXw_yI/AAAAAAAAkqk/Qh6ifR1Tbgg/s1600/IMG_1690.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-7fBVhdeGhdg/VEDUBwXw_yI/AAAAAAAAkqk/Qh6ifR1Tbgg/s1600/IMG_1690.PNG" height="400" width="225" /></a></div>
<br />
<br />
按照以上調一調。<br />
<br />
<br />
<b>冰友喔~~~找人打Line 比較省喔。</b><br />
<b><br /></b>
<b><br /></b>BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com0tag:blogger.com,1999:blog-1664698939317471852.post-18354122880538559132014-06-03T17:10:00.002+08:002014-06-03T17:10:24.967+08:00[C code] dup() dup2() 奇妙的FD複製....好吧...<br />
是突然看到<br />
--<br />
close(0); close(1); close(2);<br />
if (!tty || !*tty) {<br />
if (open("/dev/null", O_RDWR|O_NONBLOCK) >= 0)<br />
dup(0), dup(0);<br />
return;<br />
}<br />
--<br />
<br />
這沒營養dup(0) 還作兩次,WHY?!<br />
仔細想一下,突然讓人笑出來... 哈,果然不是那麼沒營養...<br />
<br />
<br />
<a name='more'></a><br /><br />
首先<br />
<br />
<b>1. FD的是Linux system 的資源且有限管理</b><br />
<b>2. FD每次打開都會被分配一個系統沒使用且又是最小的數字</b><br />
<b>3. 在 Shell fork 程式裡 0 1 2 預設都是打開的。就所有程式這三個預設都有開啦。</b><br />
<br />
根據上面三原則!!! 這code 的動作就是把 這三個偷偷塞滿啦啦啦.......<br />
<br />
這樣解釋太模糊了,先說用途。<br />
<br />
如果你想要把 stdout 的資訊關掉,下一個 close(1); 就可以,但!!!如果想把他導去檔案呢?<br />
總不能每個 printf 都一一修改吧。上面三原則剛好可以辦到<br />
<br />
馬上動手幾行驗證:<br />
---<br />
int fd = open("/tmp/123", O_WRONLY);<br />
close(1); // 關掉你個 stdout<br />
printf("fd=%d\n", dup(fd)); // dup() 一個新的把 1 的位置塞掉<br />
<div>
printf("bb\n"); //未來所有的 printf ....</div>
<div>
---</div>
<div>
<br /></div>
<div>
查閱 /tmp/123</div>
<div>
就會看到 </div>
<div>
#cat /tmp/123</div>
<div>
<div>
fd=1</div>
<div>
bb</div>
</div>
<div>
<br /></div>
<div>
哈... 得證。</div>
<div>
<br /></div>
<div>
話說... 這在重新寫 shell exec 或是 daemon 訊息重導還算常見 ..... <strike>看過又忘記...</strike></div>
<div>
筆記人生... 筆記一下。</div>
<div>
<br /></div>
<div>
<br /></div>
BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com0tag:blogger.com,1999:blog-1664698939317471852.post-17555354450562863082013-12-26T18:03:00.000+08:002013-12-26T18:03:15.068+08:00[Compiler] Different between gcc and g++這幾天在玩cross-compiler 的重build,換來換去,突然發現 gcc 跟 g++ 的差別呢?<br />
<br />
當然<br />
"g++ 是C++ 的compiler, gcc 是C的compiler" 這個說法隨便google就一堆文章(還都是CP的) 跟你說.... 喔不... 它們不是這樣的!!!<br />
<br />
光看不過癮,來手動證明一下。(絕對不是為了<b>一天一筆記</b>的目標亂充數!!!)<br />
<br />
<br />
<a name='more'></a><br />
<br />
google 大神說:<br />
g++ 在編譯過程中,compiler 還是呼叫 gcc<br />
link 才呼叫g++<br />
事實上... link 也可以呼叫gcc<br />
<br />
手動!!<br />
<b>File name: bejo.cc</b><br />
<br />
<code>
#include <iostream><br />using namespace std;<br />int main() {<br /> cout << "Hello,world!" <<endl;<br /> return 0;<br />}<br />
<b>Compiler:</b><br />
# g++ bejo.cc -o bejo<br />
# ./bejo<br />
Hello,world!<br />
</code>
沒問題<br />
<br />
<code>
#gcc bejo.cc -o bejo<br />
/tmp/ccxrSgbL.o: In function `main':<br />
bejo.cc:(.text+0x14): undefined reference to `std::cout'<br />
bejo.cc:(.text+0x19): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'<br />
<br />
<div>
(delete...)</div>
</code>
有問題!!!
<br />
<div>
Link 錯了...<br />
<br />
</div>
<code>
<div>
<div>
# gcc -lstdc++ bejo.cc -o bejo
</div>
<div>
#./bejo </div>
<div>
Hello,world!<br />
<br /></div>
</div>
</code>
<div>
----> gcc表示: 我也很行的!!!</div>
<div>
<br /></div>
<div>
PS.</div>
<div>
通常附檔名是用來辨認C or C++,例子用.cc 其實很微妙(.cpp 略佳XD)</div>
<div>
要"拉天"一下也可以</div>
<div>
<br /></div>
<code>
<div>
<div>
# gcc -x c++ -lstdc++ bejo.aa -o bejo</div>
<div>
# ./bejo </div>
<div>
Hello,world!</div>
</div>
<div>
<br /></div>
</code>
<div>
靠 -x 來指定語言,無視。</div>
<div>
--</div>
<div>
<br /></div>
<div>
其實這小東西早就知道,這幾天搜尋文件,卻發現絕大部分的網站都cp來cp去,內容相似,看了就懂,可就沒有親自跑一下的感覺,但往往Open Source最有用的東西不是cp來.. 而是前人手動血淚阿...</div>
<div>
趁重build toolchain 的時間,塗鴉一篇 哈。(一天一篇筆記好像有點難 O__Q)</div>
<div>
<br /></div>
BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com0tag:blogger.com,1999:blog-1664698939317471852.post-71688345283185981712013-12-24T15:00:00.000+08:002014-01-10T14:46:58.491+08:00[ATV] 免JB - 新增你的頻道 in Apple TV (自製)在獲得好色龍大人首肯之後,把目前的ATVDoMore打包起來<br />
讓普通使用者能輕鬆使用。還可以播放你硬碟的電影喔。<br />
<br />
這樣就可以躺在床上用電視龍大的翻譯轉播了!!! 馬鈴薯沙發我來啦!!!<br />
<br />
元件教學寫在先前的筆記<br />
<a href="http://bjglife.blogspot.tw/2013/12/atv-apple-tv-do-more.html">http://bjglife.blogspot.tw/2013/12/atv-apple-tv-do-more.html</a><br />
<br />
<br />
<a name='more'></a><br />
<br />
準備工具<br />
<ul>
<li>nodeJS 套件 <a href="http://nodejs.org/">http://nodejs.org/</a> 下載安裝即可</li>
</ul>
<div>
我們需要nodeJS 的工作套件,換句話說,Linux/Win/MAC 都支援。<br />
<br /></div>
<div>
步驟:<br />
<br />
<ol>
<li>安裝好<b>NodeJS</b></li>
<li>從 <a href="http://ppt.cc/jwwD">http://ppt.cc/jwwD</a><br />下載<b>ATV Do More</b> 套件。</li>
<li>修改套件的檔案 <b>system.ini</b><br />name: 'securea.mlb.com',<br />address: '<b><span style="color: red;">xxx.xxx.xxx.xxx</span></b>', (換成你的主機IP)</li>
<li>執行 <b>enableADM.bat</b> 伺服器端完成。</li>
<li>打開 Apple TV<br />設定->一般<br />將光棒移動到 "<b>將資料傳送給Apple</b>"<br />按下 "PLAY" 按鈕 (就是有<b>三角形</b>跟<b>暫停</b>的那顆)</li>
<li>出現 "<b>新增描述檔</b>"<br />使用 <b>http://ppt.cc/PZ17</b> 短網址新增。(要有出現新描述檔項目)</li>
<li><b><span style="color: red;">手動修改你的AppleTV 上面的 DNS IP,指向你的node Server (關鍵,抱歉之前漏了)</span><br />(設定->一般->網路->乙太網路->設定DNS->修改成你的主機IP)</b></li>
<li>躺在<b>床</b>~完畢 XD</li>
</ol>
<div>
***其他人要使用的話只需要<b>步驟 5. </b>跟<b>步驟7.</b> 就可以用別人開的Node Server***<br />
<br /></div>
</div>
<div>
有興趣開發跟新增頻道者,只須提交 www/js/YOURCHANNEL.js 即可新增新頻道。</div>
<div>
目前支援</div>
<div>
<ol>
<li><b>AT (好色龍翻譯)</b></li>
<li><b>JustinTV (www/JstvData.txt 編輯)</b></li>
<li><b>TED</b></li>
<li><b>個人端影片+照片(www/uuidDefault.txt 編輯)</b></li>
<li><b>直播自訂頻道 </b><b>(www/chData.txt 編輯)</b></li>
</ol>
</div>
<div>
<b>DEMO:</b></div>
<div>
<br /></div>
<iframe allowfullscreen="" frameborder="0" height="360" src="//www.youtube.com/embed/HFDx3_y4g70" width="640"></iframe><br />
<br />
<br />
<span style="color: red; font-size: x-large;"><b>NodeJS + embedded 開發很有搞頭的!!! (招手)</b></span>BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com0tag:blogger.com,1999:blog-1664698939317471852.post-8058273224498969092013-12-23T18:19:00.000+08:002013-12-23T18:19:55.021+08:00[NPM] 發行自己的套裝組 npm publish發行耶!!!<br />
<br />
把自己的nodeJS 作品放到資料庫上面讓人下載。 <--- 抖抖<br />
<br />
也就是說以後只要:<br />
#npm install mypackage<br />
<br />
大家都能安裝你的寫的軟體。<br />
<br />
有妹有很威...<br />
<br />
<br />
<a name='more'></a><br />
<br />
照慣例npm 要稍微了解<br />
<br />
<b><a href="https://npmjs.org/doc/json.html#people-fields-author-contributors">這是官網</a> (package.json)</b><br />
<br />
首先把code 放在github並且編寫好<br />
"package.json"<br />
這個檔案不是只有用來做 npm install 的相依連發行也要。<br />
<br />
example:<br />
<code>
{<br />
"name" : "simplednsserver",<br />
"description" : "a workable version of DNS Server",<br />
"dependencies" : {<br />
"native-dns" : "0.4.1"<br />
},<br />
"author" : "BEJO Li",<br />
"email" : "my email",<br />
"keywords" : ["dns", "dns server"],<br />
"main" : "DNSServer.js",<br />
"version" : "0.0.1",<br />
"type" : "git",<br />
"url" : "https://github.com/BejoTW/Simple-NodeJS-DNS-Server.git"<br />
}<br />
</code>
<br />
<b>在本基端註冊npm 發行帳號</b><br />
#npm adduser<br />
<br />
<b>在想發行的目錄有package.json的地方</b><br />
#npm publish<br />
<br />
<b>完成!!!</b><br />
<br />
<b>照剛剛的範例就可以KEYWORD 搜尋啦。</b><br />
#npm search dns<br />
--><br />
simplednsserver a workable version of DNS Server =bejo<br />
<div>
<br /></div>
<div>
#npm install simplednsserver</div>
<b>就安裝好啦!!!</b><br />
<br />
有沒有<br />
APP 上架很簡單 (幻覺)<br />
<br />
<b><span style="font-size: x-large;">這NPM 作者簡直天才。</span></b>BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com0tag:blogger.com,1999:blog-1664698939317471852.post-40820361215280862422013-12-16T19:51:00.003+08:002013-12-18T15:36:04.471+08:00[ATV] Apple TV do more - 自訂你的頻道在台灣用Apple TV有一種很<b>殘廢</b>的感覺,對吧...<br />
<br />
幾乎沒東西可以看,只能玩玩Air Play(還好有這個)... 最強大的就是Youtube,但..誰要在上面看精選影片 <strike>(凸,硬碟裡面精選的還比較多</strike>。<br />
幸好江湖流傳Apple TV 有一招 DNS 挾持密技,把原本預告片的頻道挾持成一個新的窗口。<br />
然後就打開花花世界,各種對岸的影片內容任你看,問題是AppleTV 給對岸<b>挾持,挾持耶!!!</b>怎麼想都毛毛的... 不如就動手來做一個給自己用,<strike>手工做食品安全又健康 </strike>上面的頻道不只慢其實也沒很對胃口。<br />
<span style="color: red;"><b>這僅提供私人使用,切勿商業,隨便改機不負責任。</b></span><br />
也就是說在家裡自己改一改變很好用就好了,乖~~~。<br />
<br />
<a name='more'></a><br />
<br />
技術細節是這樣:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9mWaIE442pwb6ihoNZFIo8NUxgn6l7y2FM8Q7VirlELGG3LGyKduLgDHMQlEtyQ3R6kzpI7AlNwHO8d8rOtzt8hQsfkpy2k_tctHNlEMxklMXeAt1Mw07sjlAKxKysYEy1QHXvesRZ2k/s1600/atvTopo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="428" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9mWaIE442pwb6ihoNZFIo8NUxgn6l7y2FM8Q7VirlELGG3LGyKduLgDHMQlEtyQ3R6kzpI7AlNwHO8d8rOtzt8hQsfkpy2k_tctHNlEMxklMXeAt1Mw07sjlAKxKysYEy1QHXvesRZ2k/s1600/atvTopo.png" width="640" /></a></div>
<br />
這部分對岸已經開發到天荒地老去了<br />
<a href="http://appletv.missde.cn/">http://appletv.missde.cn/</a> <== This<br />
<br />
拜台灣<strike>最大區域</strike>網路所賜,連去對岸的速度在晚上簡直低到悲劇,這些東西是看的到吃不到,還好Apple TV上面還有其他 icon 可以動手腳,就來對 MLB channel 動動,這樣不只可以吃對岸挾持跟自己的都可以並存。<br />
<br />
<b>準備工作:</b><br />
1. DNS 主機+WEB Server<br />
先前寫的小套件就派上用場<br />
<a href="https://github.com/BejoTW/Simple-NodeJS-DNS-Server">Simple DNS Server</a><br />
<a href="https://github.com/BejoTW/SimpleWebSSL">Web Server 一樣可以用node JS 簡單寫完</a>。<br />
PS. apache+bind9 or lighthttp+dnsmasqud 都可以。<br />
<br />
2. 挾持Domain: securea.mlb.com // 換成自己的Web address<br />
<br />
3. 把 "<a href="https://github.com/BejoTW/AppleTvMore">Apple TV do more</a>" 放到 Web Server<br />
4. 因為後來Apple 把連結都改成 https 協定,所以WEB Server 要打開Https 裝上CA (在framework 有), 自己的AppleTV 也要裝另外一個(在framework 有)。方法就Google 吧。<br />
<br />
<b>完成。</b><br />
<br />
基本上就把目標網頁重新解釋給AppleTV 聽,這邊Framework已經完成,要增加那些內容就自己寫吧,一個網站大概編寫十幾分鐘而已,丟進去WebServer 即可。<br />
<br />
<br />
目前範例:<br />
<br />
<ul>
<li>TED</li>
<li>探險活寶 (<a href="http://hornydragon.blogspot.com/search/label/Adventure%20Time">好色龍網站</a>)</li>
<li>自訂直播連結(支援 m3u8 , mp4)</li>
<li>硬碟檔案(mpeg, mp4, 照片... NAS復活了 O__Q )</li>
<li>JustinTV</li>
</ul>
<br />
<br />
Demo:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-a-jRKin1mwI/Uq7onRCGt5I/AAAAAAAAdtE/XZ2hupRnd8Y/s1600/16+-+1" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="http://3.bp.blogspot.com/-a-jRKin1mwI/Uq7onRCGt5I/AAAAAAAAdtE/XZ2hupRnd8Y/s1600/16+-+1" width="400" /></a></div>
<br />
<br />
<br />
<br />
<br />BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com0tag:blogger.com,1999:blog-1664698939317471852.post-27399651604442480142013-12-11T17:48:00.002+08:002013-12-16T19:53:01.976+08:00[JS] RSA 加解密你的 JS code阿.... 把開放又明碼的JS code 加密?<br />
<br />
這擺明是逆天啊。<br />
<br />
<br />
<br />
<a name='more'></a>對... 這招通常只是防君子不防小人,有心要解很簡單,但是我們來防一下專看網頁原始檔懶鬼就好。<br />
<br />
<br />
Ref.<br />
<a href="http://www-cs-students.stanford.edu/~tjw/jsbn/">http://www-cs-students.stanford.edu/~tjw/jsbn/</a><br />
<br />
<div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
範本使用:</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<b>var str; var s; 這兩個是準備 被加密的對象</b></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<b>因為範例不支援太大的訊息,這邊選擇加密關鍵即可。</b></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<b><br /></b></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<b>1. 先把 關鍵計算數字藏在 str = 'var t="0xa";var pw="1234"'; // t 是計算關鍵 pw 是密碼</b></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<b>以上作RSA 加密,避免被搜尋</b></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<b>2. 運算程序用普通的 Unicode shift 加密,強度弱但是支援較長的訊息量 </b></div>
</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<b><br /></b></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<b>Source Code:</b></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<a href="https://github.com/BejoTW/encodeDecodeJS">https://github.com/BejoTW/encodeDecodeJS</a></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
memo:</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
這裡真是放code 好地方....</div>
BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com0tag:blogger.com,1999:blog-1664698939317471852.post-6539296145721853962013-12-09T17:24:00.001+08:002013-12-09T17:24:14.642+08:00[GIT] Fix git ca-bundle.crt issue: disable ssl verifyReinstall ca-bundle.crt:<br />
<br />
done......<br />
<br />
最好是這樣簡單啦!!!<br />
<br />
<br />
<a name='more'></a><br /><br />
Issue case:<br />
root@bejo:/tmp# git clone https://xxx.git<br />
Initialized empty Git repository in /XXXpath/.git/<br />
Password:<br />
error: while accessing https://xxx.git/info/refs<br />
<br />
fatal: HTTP request failed<br />
root@bejo:/tmp#<br />
<br />
Because github runs HTTPS checkout and the web verify SSL by /etc/ca-bundle.crt<br />
<br />
It records valid web but we don't need it. So disable them!!!<br />
<br />
git config --global http.sslVerify false<br />
<div>
<br /></div>
<div>
--</div>
<div>
<br /></div>
<div>
BUT!!! disable SSL verify is not a good idea...</div>
<div>
<br /></div>
<div>
So...</div>
<div>
<div>
#git config --global http.sslcainfo /etc/ssl/certs/ca-certificates.crt</div>
<div>
<br /></div>
<div>
redirect to new one</div>
<div>
<br /></div>
<div>
--</div>
<div>
題外話:</div>
<div>
這個CA裡面含有合法的憑證發行機構,所以缺了就不會認識SSL憑證。</div>
<div>
更新方法:</div>
<div>
#update-ca-certificates</div>
</div>
BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com0tag:blogger.com,1999:blog-1664698939317471852.post-30405228685747487102013-12-06T19:07:00.001+08:002013-12-06T19:07:31.045+08:00[ChromeCast] Install ChromeCast "Emulate" to Linux<div style="orphans: 2; widows: 2;">
<span style="font-family: Tahoma;">想要 $35 鎂的 ChromeCast 嗎?</span></div>
<div style="orphans: 2; widows: 2;">
<span style="font-family: Tahoma;">動手裝一台吧孩子 XD</span></div>
<div style="orphans: 2; widows: 2;">
<span style="font-family: Tahoma;">麗娜斯小妹妹親切服務喔 >////////////<</span></div>
<div>
<span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;"><br /></span></div>
<div>
<span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;"></span><br />
<a name='more'></a><span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;"><br /></span></div>
<div>
<span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">1. Install Python 2.7 (dep. 2.6< need < 3.0), So we need 2.7</span><br />
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
2. Get leapCast</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
#git clone <a href="https://github.com/dz0ny/leapcast.git">https://github.com/dz0ny/leapcast.git</a></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
#cd ./leapcast</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
#python setup.py develop</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
#leapcast --name MyLinux --chrome /usr/bin/google-chrome --fullscreen</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
Sometime, you need to install some module to Python like:</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
requests (do it by easy_install from python tool)</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
Test:</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
1. PC install chromeCast plug-in to Chrome browser</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
2. Project it</div>
</div>
BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com0tag:blogger.com,1999:blog-1664698939317471852.post-39759621802584643762013-12-05T22:05:00.001+08:002013-12-05T22:05:18.114+08:00[GIT] Source list for git stable version<div>
<span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">Meet issue: (when using repo tool)</span><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<b>Exited sync due to gc errors</b></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
This is because git version is too old. So wee renew it </div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
ref: <a href="https://launchpad.net/~git-core/+archive/ppa">https://launchpad.net/~git-core/+archive/ppa</a></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
my sytem is Lucid (10.04) </div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
add to source-list</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
---</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
deb http://ppa.launchpad.net/git-core/ppa/ubuntu lucid main </div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
deb-src http://ppa.launchpad.net/git-core/ppa/ubuntu lucid main </div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
--</div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
<br /></div>
<div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2;">
then update git</div>
</div>
BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com1tag:blogger.com,1999:blog-1664698939317471852.post-68798550609174794792013-12-04T20:09:00.004+08:002013-12-04T20:09:59.152+08:00[Chrome] 找回你的 Chrome恩... 上次搞爆後突然想到... apt source-list 裡面是沒有 chrome 的。in 麗娜斯 10.04 LTS<br />
<br />
好吧。那我來手動裝上妹妹的眼睛。<br />
<br />
<br />
<br />
<a name='more'></a><br /><br />
Download Chrome deb from Google:<br />
File: google-chrome-stable_current_i386.deb<br />
<br />
#dpkg -i google-chrome-stable_current_i386.deb<br />
<br />
完畢!!!<br />
唔~ 好像太簡單。只是單純沒想到 apt source list 裡面沒有,讓我意外找太久。<br />
<br />
如果有相依問題:<br />
#apt-get -f install<br />
<br />
或是這兩個裝一裝<br />
#apt-get install libnspr4-0d<br />
#apt-get install libcurl3<br />
<br />
<br />
---<br />
題外話:<br />
chrome 預設不給 root 跑,進行以下修改:<br />
<br />
-user-data-dir<br />
OR 直接修改檔案: /opt/google/chrome/google-chrome<br />
<br />
exec -a "$0" "$HERE/chrome" "$@" 換成<br />
exec -a "$0" "$HERE/chrome" "$@" -user-data-dir<br />
<div>
<br /></div>
BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com0tag:blogger.com,1999:blog-1664698939317471852.post-38208593215367366742013-12-04T19:38:00.002+08:002013-12-04T19:38:42.912+08:00[GIT] fatal: HTTP request failed - 臥巢泥馬最近玩玩 node JS 跟 v8 engine to embedded, 當然git 這個套件也是要給他上去跑跑跑....<br />
<br />
玩著玩著... 我把它給玩爛了... 還玩爛我的麗娜斯妹妹(大哭。<br />
<br />
<br />
<br />
<a name='more'></a><br /><br />
故事是這樣... git clone 通常都會去 clone 一個 https://github.xxx.xxx.git 三小的連結,通常都會很自然的就抓下來,但是這次沒有。<br />
<br />
出現log 如下:<br />
<br />
<b># git clone https://XXXX@bitbucket.org/XXXXXX.git Folder</b><br />
<b>Initialized empty Git repository in /Folder/.git/</b><br />
<b>Password: </b><br />
<b>error: while accessing https://XXXX@bitbucket.org/XXXXXX.git/info/refs</b><br />
<b><br /></b>
<b>fatal: HTTP request failed</b><br />
<div>
<br /></div>
<div>
根據三千毫髮RD毛... 一定是前天CA產生的時候在本機端亂塞,塞壞了。 (google 表示)RD處理原則->重新安裝..... ca-certificates,然後我竟然真的APT移除在安裝... 死了。他帶著其他的親朋好友包括chrome package 都不見,現在也安裝不回來(眼神死 一.一)</div>
<div>
<br /></div>
<div>
先冷靜,這一定是 git 有關,剛剛 git 也是他的親朋好友,重新安裝後也一樣不行。但是把網路上別人包好的ca-bundle.crt 放在同目錄就可以clone (有解了!!!</div>
<div>
<br /></div>
<div>
原來是 之前git 的環境設定被我弄掉了。</div>
<div>
<br /></div>
<div>
解:</div>
<div>
#git config --global http.sslcainfo /etc/ssl/certs/ca-certificates.crt</div>
<div>
<br /></div>
<div>
重新指向正確的CA即可</div>
<div>
<br /></div>
<div>
--</div>
<div>
題外話:</div>
<div>
這個CA裡面含有合法的憑證發行機構,所以缺了就不會認識SSL憑證。</div>
<div>
更新方法:</div>
<div>
#update-ca-certificates</div>
<div>
<br /></div>
<div>
死定... 一堆親朋好友套件都裝不回來。要幫麗娜斯妹妹詠唱復活魔法了。</div>
<div>
</div>
BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com0tag:blogger.com,1999:blog-1664698939317471852.post-45373270548088899732013-08-09T15:32:00.000+08:002013-10-27T00:23:43.667+08:00[Google] V8 JavaScript engine 安心裝<font size="3">最近開始搞一些有的沒有的,平常是一個慣C人突然短時間跑來寫JavaScript</font><div><font size="3">發現這東西寫起來真的隨興所欲<strike>超級隨便(茶)</strike></font></div><div><font size="3">倒也幫ATV弄了幾個好玩的東西,可以安心看電視了。</font></div><div><font size="3"><br /></font></div><div><font size="3">熊熊想起<a href="http://fred-zone.blogspot.tw/">有個人</a>再推廣node.js</font></div><div><font size="3">JS 可以自己脫離瀏覽器,還可以像C一樣(!?)</font></div><div><font size="3">JavaScript好像有點威Orz。</font></div><div><font size="3"><br /></font></div><div><font size="3">話說...</font></div><div><font size="3">這年頭都在流行...自幹OS跟自幹瀏覽器就是了 (抖抖)</font></div><br /><font size="3">Ubuntu 安裝上面跟別人有點小小不同,memo 一下。</font><div><font size="3"><br /></font></div><div><div><span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><strong><font size="3">1. Tools </font></strong></span></div><div><span style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">git, svn python g++4.6 ... tools (工具一定要)</font></span><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3"><br /></font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><strong><font size="3">2. 更換g++ 到4.6</font></strong></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">原本ubuntu 預裝的是4.4</font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">嘗試過幾版4.8 4.xx 只有4.6順利裝好。</font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">換法:</font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">-----</font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><div><font size="3">更換 g++ and gcc 版本</font></div><div><font size="3"><br /></font></div><font size="3"> 1. add-apt-repository ppa:ubuntu-toolchain-r/test </font><div><font size="3">2. apt-get update</font></div><div><font size="3">3. aptitude 進去選你要的版本</font></div><div><font size="3">4. 更改gcc g++ 軟連結</font></div></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">-----</font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3"><br /></font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">1. <strong>下載V8 Source code</strong></font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">git clone git://github.com/v8/v8.git v8 && cd v8</font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3"><br /></font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">2. <strong>Rebase 到主TREE</strong></font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">git pull --rebase origin master</font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3"><br /></font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">3. <strong>make dependencies</strong></font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">這裡有點奇怪,他會去抓third-party 的code </font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">但是</font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><a href="https://src.chromium.org/"><font size="3">https://src.chromium.org</font></a></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">走https 一直抓不下來,手動改成http:// 不走SSL</font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3"><br /></font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">4. <strong>make native mode=debug library=shared snapshot=on</strong></font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3"><br /></font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">基本上就完成了。</font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">會產生</font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">out/native/lib.target/libv8.so</font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">把他COPY到 /usr/lib/</font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">本機執行會用到</font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3"><br /></font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">5. <strong>小跑一下sample code</strong></font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">#g++ -I../include shell.cc -o shell.o -L../out/native/lib.target -lv8 -lpthread</font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">#./shell.o</font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">V8 version 3.20.15 (candidate) [sample shell]<br /> > print("hi bejo");<br /> hi bejo</font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">></font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><span style="text-align: -webkit-auto"><font size="3">----------</font></span></div></div></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3"><br /></font></div><div style="font-family: Tahoma; orphans: 2; text-align: -webkit-auto; widows: 2"><font size="3">收工!!!</font></div><br />BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com0tag:blogger.com,1999:blog-1664698939317471852.post-12446663980769952602013-06-14T17:12:00.000+08:002013-10-27T00:23:43.656+08:00[Google] Hangouts 搞啥阿!!!好啦~~ 是變好用了... 只是很多東西都亂掉了。<div><br /></div><div>終於iOS 可以支援Gtalk,紀錄一下小問題。</div><br />現在版本的hangouts 會把對話紀錄全部都丟在寄件備份,還一句話一封信的,<div>這樣子整個資料夾都沒辦法用了。</div><div><br /></div><div>解法: (濾掉)</div><div>is:sent -label:chats</div><div><br /></div><div>不爽解法: (砍掉)</div><div>is:sent label:chats</div><div><br /></div><div>然後全砍了,媽的!!!!</div><div><br /></div><div>---------</div><div>現在hangouts 沒辦法顯示聯絡人是否上線的狀態,這google不知道在想啥,做了很多功能卻忘記很基本的事情... </div><br />BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com0tag:blogger.com,1999:blog-1664698939317471852.post-78890205330057365242013-06-14T13:53:00.000+08:002013-10-27T00:23:43.675+08:00[Linux] BitTorrent Sync 檔案的祕密旅行前兩天突然發現BitTorrent Lab在上上個月4/23 發表了 BitTorrent Sync<div>照慣例</div><div><a href="http://labs.bittorrent.com/experiments/sync.html" title="BT Sync" target="_blank">這是官網</a></div><div><br /><div>媽呀~~~ Local 端的 P2P 正是我一直想做的工具,太讚了~</div><div>以後分享檔案不用切來切去了 >////////////<</div><div><br /></div><div><strong><font color="#ff0000" size="5">乾~~~ 這東西好威阿,不只區網,連跨廣域網路(internet)傳送都沒問題啊!!! </font></strong></div><div>家裡一台公司一台到處都可以SYNC!!!</div><div><br /></div><div>目前支援平台</div><div>Win, Linux, ARM Linux, MAC ...</div><div>----------------------------</div><div>官網表示:(.........下面也可以)</div><div><div>Linux ARM</div><div>Linux PowerPC</div><div>Linux i386</div><div>Linux x64</div><div>Linux PPC QorIQ</div><div>Linux_i386 (glibc 2.3)</div><div>Linux_x64 (glibc 2.3)</div><div>FreeBSD i386</div><div>FreeBSD X64</div></div><div><br /></div><div>手機板的開發中... 有點靠杯多,根本為了嵌入式系統招呼來的。</div><div><br /></div></div><br />這個 BTsync 呢? 其實就是 dropbox 的區域網路端版本,但是它不需要Server,傳輸方式靠的是P2P,人越多越快,果然是BT老本家 bitTorrent 的新作品!!!<div><br /></div><div>多好用,以後工作環境、在辦公室、在一堆區域電腦裡不用再開FTP、samba、 webFile就可以分檔案,也不會有主機掛掉的風險啦,還跨平台咧!!! 麗娜斯 小麥麥 都來吧 >////////////<</div><div><br /></div><div><strong>方法:</strong></div><div>先安裝好一台,然後把某個資料夾分享出來GET 特徵碼(Secret) </div><div>EX: GXXXXXM3OKJTOIHYSQ3CZHH7XXXXXXXX</div><div>像上面這樣,其他台只要<strong>先</strong>輸入特徵碼,<strong>再</strong>指定想同步的資料夾即可。</div><div><br /></div><div>特徵碼可以產生三種,第一種當然是讀寫都可以,另外一種是唯讀,還有一種是24HR讀寫(根本免洗筷特徵碼!!!) 愛給別人什麼就給什麼。</div><div><br /></div><div>安裝:</div><div><strong>[WINDOWS]</strong></div><div>只支援winXP SP3 以後 vista win7 都OK</div><div>方法: 隨便裝啦。</div><div><br /></div><div><strong>[MAC]</strong></div><div>隨便啦,拉過去就好了。</div><div><br /></div><div><strong>[Linux]</strong></div><div>麗娜斯小女孩就是這樣,小小麻煩 = =+。</div><div><br /></div><div><ul><li>先把檔案抓回去,解開會發現只有幾個檔案,我們只需要一個bin檔,其他是包裝紙丟掉bin: <strong>btsync</strong></li><li>cp btsync /usr/bin/</li><li>btsync --dump-sample-config > /etc/BTsync.conf</li><li>修改 /etc/BTsync.conf</li></ul>"webui" <br />{<br /> "listen" : "0.0.0.0:8888",<br /> "login" : "bejo",<br /> "password" : "ThisIsPassword"<br />}</div><div><ul><li>btsync --config /etc/BTsync.conf</li><li>完畢。</li></ul><br /></div><div>本身configration file 裡面有經有分享檔案的設定區段,當然預設是mark 掉的。</div><div>不用打開,因為她支援 webUI ㄚㄚㄚ</div><div><br /></div><div>本機</div><div>http://127.0.0.1:8888/gui/</div><div>OR 遠端連</div><div>http://IP:8888/gui/</div><div><br /></div><div>所以一定要改密碼,一定要))一定要)))一定要))))))小妹妹被人偷玩會令人非常生氣的。</div><div><br /></div><div>webUI設定就很簡單了,btsync 砍掉重開,原本設定都還會在,應該沒問題。</div><div><br /></div><div><br /></div><br />BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com0tag:blogger.com,1999:blog-1664698939317471852.post-34627459926459330232013-04-22T15:07:00.000+08:002013-10-27T00:23:43.665+08:00[OSX] 手動增加Booting scriptOSX 怎麼說都像麗娜斯的同父異母妹妹,總是那邊很像這邊差一點,個性很不好捏...<div><br /></div><div>今天想改Ehthernet IP alias 加進去開機booting 裡面才發現,</div><div>OSX真的很傲嬌。</div><br /><div>首先增加 hook 點到</div><div><strong>[ /etc/rc.common ]</strong> 的最後面</div><div><div>if [ -f /etc/rc.local ]; then</div><div> sh /etc/rc.local</div><div>fi</div></div><div><br /></div><div>然後OPEN 新檔案</div><div><strong>[ /etc/rc.local ]</strong></div><div>把想新增的加進去當作 script 用,OSX booting 的時候會把自己當root 身分,所以不用管太多</div><div>當麗娜斯的 RC 用吧</div><div><br /></div><div><strong>[IP alias]</strong></div><div>對~~硬是跟 麗娜斯小妹妹不一樣 ifconfig eth0:0 192.168.2.1</div><div>換成</div><div>ifconfig en2 alias 192.168.2.1</div><div><br /></div><div>丟進去讓他開機就先alias IP吧。</div><div><br /></div><div><strong>[題外話]</strong></div><div>AX772 chip 裡面同捆的 FT232R USB UART</div><div>不要裝太新的驅動,不然 /dev/XXX 裡面會沒有 FD 元件。</div><div>參考Link</div><div><a href="http://www.ftdichip.com/Drivers/VCP.htm">http://www.ftdichip.com/Drivers/VCP.htm</a></div><div><br /></div><div>混再一起就可以安心跑console 啦~~</div><div><br /></div><br />BeJohttp://www.blogger.com/profile/05403327779334750363noreply@blogger.com0