顯示具有 軟體 標籤的文章。 顯示所有文章
顯示具有 軟體 標籤的文章。 顯示所有文章

2016年4月21日 星期四

FreeBSD 磁碟自動修復

最近心血來潮,想說把server風扇清潔一下, 之後開機出現 /backup unmount not property... 結果就重開機,開到進入讀取硬碟,還是一樣訊息,然後又重新開機... 這時,請在 FreeBSD Boot的畫面上 請在倒數秒數結束前,按2. Boot single User 輸入 fsck -y 再重新開機,可以解決不斷開機的問題!

2014年8月12日 星期二

Ubuntu 10.04 開機設定

Ubuntu 10.04預設開機選單裡有好幾個,如果想將選單簡單化,可依照以下步驟:
首先,/etc/grub.d/ 下
將 10_linux,
    20_memtest86+,
    30_os-prober

chmod 000 上述三個檔.


Edit  40_custom
        裡頭增加兩個選項 menuentry 'Linux.....
                                    ...略
        可以參考或複製 /boot/grub/grub.cfg裡                         
        menu option的區段寫法

Edit  05_debian_theme 找到以下函數,可設定選單及選擇bar的前背景色.
        set_mono_theme()
       {
           cat << EOF
           set menu_color_normal=white/blue
           set menu_color_highlight=black/yellow
           EOF
        }

另外,是選擇倒數秒數的選項,
如果想拿掉倒數,執行以下
sudo edit /etc/default/grub
裡面的GRUB_TIMEOUT=-1

記得最後一定要執行 sudo update-grub 來更新
相關設定才會生效!

2014年5月10日 星期六

Google Blogger程式碼貼碼設定

首先,需要在您的 Google blogger,點選「設計」,

介面上找「編輯HTML」,

點選「編輯範本」,然後在編輯視窗中,按 Ctrl+F 輸入關鍵字 </head>
在前面貼上:

<script src='https://google-code-prettify.googlecode.com/svn/loader/run_prettify.js'/></script> 


再尋找  .post-body
在前面一行插入貼上以下程式碼:

.post .code {
  display: block; /* fixes a strange ie margin bug */
  font-family: Courier New;
  font-size: 10pt;
  overflow:auto;
  background: #f0f0f0 url(http://你的圖檔位置/Code_BG.gif) left top repeat-y;
  border: 1px solid #ccc;
  padding: 10px 10px 10px 21px;
  max-height:200px;
  line-height: 1.2em;
}

按下儲存範本,設定完成。

皆下來,只要在HTML模式下,將您的程式碼以:


<pre class="code prettyprint">
   程式碼
</pre>

就可以有程式碼區塊效果。

如果需要加上行數標示, 可以在<pre class="code prettyprint linenums" > 此標籤也會幫您每5行標示出行數。 但若要每一行都標出「行數」,則需在HTML碼中加入
<style>
li.L0, li.L1, li.L2, li.L3,
li.L5, li.L6, li.L7, li.L8
{list-style-type: decimal }
</style>
結果會是:
#include 
main()
{
   printf("Hello World!\n");
}
旁邊灰色的CODE圖,請上網查詢link再將正確位置填入。

2014年3月11日 星期二

手機通訊錄聯絡人VCF轉CSV

最近因為家人攜碼換電信商,遭遇到手機裡幾百個聯絡人、簡訊等資料備份轉移問題。

1. 首先, 可以到apps商店裡,找一個「超級備份」
2. 裡頭可以選擇「程式、聯絡人、簡訊、通話記錄、日曆活動」等項目備份。
3. 先備份聯絡人,手機需要有SD卡,且要有空間。
4. 可以將檔案備份到SD卡,或者如果能夠上網,也可以email到你的gmail信箱
5. 備份的檔案是.VCF
6. 可以到網友joney0210 介紹的網站進行轉換 vCard to LDIF/CSV Converter 這裡
7.選擇CSV, TAB間隔,[add header file]打勾(可以看到欄位)
8. 編碼可以選UTF8
9. Filter過濾,看您是只要匯出電話、或只要email address
10.  按下convert轉換,等一會,就會有轉檔下載。

2014年2月23日 星期日

惱人的ARP病毒攻擊

這兩天,因為二樓小徐(阿德)希望我能夠一起加入使用他們家的網路,實體的網路佈線都已經拉好了,就差把網路頭接上我們家的Hub。

但因為我們家裡,老爸目前也算是網路重度依賴者,也因為如此,我只好拿出測試平台先接上觀察,發現「剛接上」使用內建設定是沒問題,但只要電腦停止使用三分鐘之後,Firefox、IE等全連不上;重新拔線後,測通後再連線到測速網站,除了幫小徐測一下是否網路頻寬真的有繳費的那個速度外,在第二次斷線後,我再點選下載、上傳之後,發現只有上傳還能動,下載完全鎖死,這也說明為什麼停用三分鐘後,「使用瀏覽器會斷網」的結果。

此外,前幾天測試結果,狀況時好時壞,因為其中一天,過了午夜十二點後,真的不是見鬼 ,網路順暢的不得了;因為用戶數還算少,不得讓我先懷疑用戶裡可能有人中毒,網路病毒、蠕蟲等百百種,會是什麼黑心軟體呢?而且要怎麼確認哪些電腦有問題呢?

翻箱倒櫃後,剛好手上有台頻寬管理器,於是乎利用下午時間,大致設定好後,給它On上去,也怪,我先將用戶接上,再開管理器power,居然管理器整個死當,看來這毒發真厲害,於是乎,先將線頭拔光、機器重開穩定後,將用戶逐條接上,在下午出門運動前,將所有人都放到防火牆下面。

在晚餐回來後,看到小徐留了緊急紙條,說他們家、跟另一戶網路從傍晚就上不了網,我順道先去小徐那檢查,也用小紅傘掃過,似乎沒可疑結果(另一連不了網的也一樣是小紅傘沒顯示);最後去檢查確認仍有人在防火牆下,一樣可以正常運作後(排除是管理器設定錯誤問題),於是先將那兩戶會被管理器斷網的接回小烏龜那肆虐(以免用戶抱怨),判斷很可能是arp的攻擊(這類攻擊不容易被防毒軟體偵察)。

後記:在研究機器說明後,發現只有PPPop帳號設定、跟設定固定虛擬ip可以阻斷這類攻擊。我後來選擇後者,果然,調查完各用戶電腦及數量,及設定完各用戶固定的虛擬ip後,再將完全不認識的連線ip都給砍了,之後,連線不上、不穩的問題都不再出現了!

參考:arp攻擊防護

2012年5月29日 星期二

Ubuntu下還原桌面

Ubuntu下,有同學不小心將桌面底的虛擬工具列刪除
可透過管理者帳號刪除該使用者目錄下的幾個目錄檔來還原:

Delete the hidden directories under /home//
.gnome2
.gnome2_private
.gconf
.gconfd

2012年2月3日 星期五

指令模式FTP無法看到回傳字串

怪哉!學校換了防火牆後,發現原本可以從server下指令ftp抓packages的方式,似乎會卡住。出現下面藍色的命令結果出來。查詢了一下,才發現老外早就有人討論!

EXTENDED PASSIVE MODE AND FIREWALLS
     Some firewall configurations do not allow ftp to use extended passive
     mode.  If you find that even a simple ls appears to hang after printing a
     message such as this:

           229 Entering Extended Passive Mode (|||58551|)

     then you will need to disable extended passive mode with epsv4 off.  See
     the above section The .netrc File for an example of how to make this
     automatic.

Above it states:

     epsv4       Toggle the use of the extended EPSV and EPRT commands on IPv4
                 connections; first try EPSV / EPRT, and then PASV / PORT.
                 This is enabled by default.  If an extended command fails
                 then this option will be temporarily disabled for the dura-
                 tion of the current connection, or until epsv4 is executed
                 again.

You can use this setting either via .netrc or as an interactive command.

意思就是,學校裡的防火牆應該設定不讓IPv4傳輸使用extended passive mode,你必須在傳輸前,手動下指令epsv4 off,或者採用如下設定方式,就可以一勞永逸。

在登入目錄下,開啟一個 .netrc設定檔,內容存成:
 default
 macdef init
 epsv4 off
再次連線試看看,就可以看到ftp server內容了。

2011年10月3日 星期一

Excel會出現 「"系統資源不足,無法完全顯示"」

方法:
記憶體系統資源不足
1、執行 regedit,進入登錄編輯。
2、找「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer」
3、在右方窗格新增一個「AlwaysUnloadDll」「字串值」。
4、在「AlwaysUnloadDll」上按下滑鼠右鍵選擇「修改」。
5、將「值」設為「1」。
6、重新開機,即可。

發生原因:

每個 Microsoft Excel 執行僅限 64MB記憶體 (內部暫存空間)。當您執行copy動作,每個執行限制在 32,760 來源儲存格。當您複製或填滿大範圍工作表一次或多次,這些限制可能會影響結果。

版本早於 Microsoft Excel 2002,記憶體限制是 64 MB。
在 Excel 2002 限制增加到 128 MB。
在 Microsoft Office Excel 2003 限制增加到 1 GB (GB)。

這是執行限制,如果有兩或三個excel檔開啟,或開出資料欄位太多的活頁簿時,也可能會發生這樣的問題。

建議由減少複製範圍在copy作業中,可以解決 32,760 來源儲存格的限制。

資料參考:http://support.microsoft.com/kb/313275/zh-tw

2011年9月21日 星期三

扯!Yahoo禁止轉寄Gmail

這幾年為了教導大家使用Gmail,建議Yahoo的重度使用者以設定轉寄方式,無痛轉換到Gmail去體驗Gmail強大的功能,故推薦學生使用重灌狂人Briian的教學網:
 上週到昨天,在課堂介紹都還可以使用,結果,今天示範教學時,發現這個Link被Yahoo給禁用了!
真糟糕,居然有這樣的事情,當大家都是推廣免費且好用的功能,Yahoo台灣居然反其道而行,轉寄郵件、 POP這種功能居然禁用,先前這Link:
http://popfwd.mail.yahoo.com/pf/PopFwd?.done=http://tw.f738.mail.yahoo.com/ym/Options?YY=15186&y5beta=yes
還可以免費讓使用者設定轉寄,目前已經被Yahoo台灣給拿掉!真是可惜!這種「防堵」的心態,恐怕只會讓自己更封閉!唉!


2011年9月20日 星期二

Eee PC 安裝XP

拿到一台Eee PC 1015px Seashell Series ,只有一台機器和變壓器!
沒光碟機,沒附usb光碟機...通通沒有!

請我幫忙的人希望裝M$ XP,
只好拿1G USB Flash 利用WintoFlash做成XP開機隨身碟,
以為說馬上開始安裝,應該OK了!
安裝到一半,xp說,沒有磁碟控制驅動,得自選S,F6...
使用手冊有跟沒有一樣,只都是俯視圖、按鍵說明等

還好網上有人貼文,說BIOS裡頭System Configuration中
SATA Controller Mode設定改成IDE或Compatibility!
一改完!重開安裝,OK!終於抓到硬碟!
怪的是,Eee PC抓取硬碟Hard utility時,只能HD和USB擇一
之前一直以為是這地方設定有問題。

有人說得抓AHCI.zip並安裝至xp相關目錄
還好沒去做(因為不用這麼麻煩),這樣已經花掉我一個多禮拜時間了

2011年9月9日 星期五

Ubuntu 10.04網路eth0 eth1...

在重新CDROM Restore後,發現Ubuntu 10.04下的網路介面會跑出三個,分別為eth0, eth1 和eth2,因為最早作的檔案,還原後多出eth1,且Mac在還原後,系統會自動去抓取新的而跑出了eth2。

修正方法:
編輯以下路徑檔案 sudo gedit /etc/udev/rules.d/70-persistent-net.rules
將eth0的Mac複製到eth2上
再將eth2改為eth0後
刪除前面eth0, eth1的設定
存檔,重開機即可!

2011年8月29日 星期一

使用快十年的J88陣亡了

前天,想要打電話給朋友,發現使用快十年的J88居然沒有訊號格,完全無法使用。才發現,原來跟隨多年的J88,居然掛了!但一想起要換手機,又要輸入一堆電話,網路上尋找了一下,有人寫了如何將J88的資料下載,但麻煩的是,需要特殊的U-cable傳輸線(台製U-ST02或日製MC-6750),而且似乎原廠當初是沒有的,得另外找過,才能下載,要不然,恐怕得重新輸入應該有一百多筆的電話資料了!

資料來源:將phs j88 的電話簿匯出

2011年7月5日 星期二

Facebook不可不知的事

你FB了嗎?似乎成了現在年輕一代學生的代名詞,在電腦課剛剛打鐘,老師還沒上課的空檔,我們可以去瞭解,學生們上網的流行趨勢,FB似乎成了他們目前共通的上網嗜好,同學們會互相問:「你FB了嗎?」、「FB帳號加我」、「加我社團」等等之類的話題。
在FB上面,大家的話題似乎也蠻沒什麼內容,大多是一些噓寒問暖、開玩笑、或者取綽號等情勢,但是,就算是大學生,甚至是碩博士研究生,也趨之若鶩,似乎不瞭解這平台的恐怖威力和效果。

中國古有云:「水能載舟,亦能覆舟」,這FaceBook似乎就像水一樣有趣、好玩,吸引著許多的人用它,但是,使用的時候,大家是否知道使用FB的利弊呢?

截至目前為止,超哥使用FB,覺得它的優點是,能夠讓你在上面尋找自己的同學或熟悉的朋友,對於長期失連的那些同學來說,只要他/她有註冊登錄FB,且也有加到部分同學的話,平台的計算會讓你可以容易找到這些人。其二,平台上也開發了許多小遊戲,像是開心農場、德州撲克等,也是結合這些人際網路的關係鏈來進行的遊戲,讓你能夠和熟悉的同儕或朋友藉由遊戲增加互動的興致。其三,藉由一些粉絲團、社團的機制,讓你認識「朋友的朋友」「朋友的朋友的朋友」...,讓你逐漸可以去擴大自己的交友圈;這也符合當初FB就是校園版的社群交友系統的建置初衷。

然而,學術界對於教育上去使用FB的看法,蠻兩極;有些人覺得,使用FB會讓學生上課不專心、留下諸多的個人資訊或隱私讓別人探勘,也許是一種自我欲埋炸彈的行為;而支持FB使用於教育的學者,期盼藉由FB對年輕一代的影響或吸引力,來導引他們進入軌道。但是,這裡仍然會發生以前發生過的問題,大多數老師們都沒在使用,那如何導引學生呢?甚至,有使用的教師,搞不好仍然有不少人,對於自己隱私的保護也都沒有概念,教導學生使用,也是有可能會造成一些學生隱私資訊的暴露。前天與一位在美攻讀phd留學的學弟談論到此事,他提到,可能得在他FB上,多揭露一些讀論文的心得發表,以免以後求職時,老闆去探勘他的過去和交友,來決定是否錄用他;哇!這樣看起來,使用FB對於學生來說,可能不是一種抒發,而是壓力了。

「人肉搜尋」,也是目前一種網路上,某種形式無法去控制的集體民粹行為,結果的好壞與否,很難馬上得知。這種集體且快速的網路行動,有時會有誤殺的情形,對於當事人來說,很有可能造成反效果。好比當我們不小心違規,被警察攔下來,警察若是一陣尖酸刻薄的話,再開你罰單,我想被開罰單的人,應該都會想去挑戰公權力;若換一個情境,警察攔你違規,但是好言相勸,而且只開出勸導單給你,希望你下次不要如此,我想10位被開單的,應該10位都能虛心接受去改過!不過,超哥是支持對於危害「人命」的這種人,應該要給予嚴重譴責,例如:之前的台大比中指生,延誤救護的那一位就是。

延伸資訊:
如何徹底消滅你的Facebook帳號

2011年6月10日 星期五

困擾的System Volume Information

最近小紅傘在掃毒時,有隻木馬病毒躲在 D槽的System Volume Information 裡面
此資料夾又系統隱藏檔,殺不掉
(一般作法)在網路上看到如何搞定"System Volume Information"!!
看文章之前,先來看看這個吧
~[Microsoft 技術支援服務]如何存取 System Volume Information 資料夾
1. 我的電腦(滑鼠右鍵)->內容->系統還原->關閉所有磁碟上的系統還原。
2. 我的電腦(滑鼠右鍵)->管理->服務及應用程式->
服務->Distributed Link Tracking Client 服務->服務狀態->停止->啟動類型->已停用。
3. 依據你有多少個磁碟(分割區),
重覆以下指令. 將指令中的 C: 逐步替換成各個磁碟(分割)的代碼。
cacls "C:\System Volume Information" /e /g everyone:f && rd /s /q "C:\System Volume Information"

2011年6月9日 星期四

phpBB資料庫刪除法

delete FROM `phpbb_topics` WHERE `topic_id` >1416 and `topic_id` <1541;


delete FROM `phpbb_posts_text` WHERE `post_id` >4324 and `post_id` <4332;

2011年5月19日 星期四

FaceBook的由來去從

能在台面上發光發熱的人,必定是不簡單的人,而不簡單的人,也必定有不簡單的方法、方式來成就,所謂一將功臣萬骨枯。我想Facebook也是一樣,剛開始使用Facebook,發現上面有很多的資料欄位需要填寫,但每每想到以前大學學用BBS的情境,馬上有「先用假資料來註冊吧!」這樣的想法出來,因為以前在BBS上有人常會嘴砲,甚至有人一看到是男生名字帳號,往往就會直接跳過不理等情況,造成許多同學會爭相告知要以代名來註冊的行為習慣。

而這種現象,前陣子台大­歷史學系博士生跟救護車比中指事件,也是用網路上資料作「人肉搜索」,比對出當事人,更可見FB上資料自行登載越詳細者,未來萬一變成媒體焦點時,其下場恐怕也越慘。這會讓我們再使用這類科技或軟體時,是需要注意在上面的資料,也別以為使用代名或代號,就無法查出對象喔!

但是,我想,一個軟體或系統平台的開始,甚至變成潮流,某程度和人性或使用習慣有關連,這點,不難從FB的由來,與發展過程,可以看出端倪。

參考資料:
Mark Zuckerberg與Facebook的醜陋陳年往事

2011年4月18日 星期一

Antivir XP下關閉廣告的方法

Avirahttp://www.avira.com/
小紅傘關閉廣告方法:

For XP professional version:

  1. 在【控製台】->【效能與維護】->【系統管理工具】->【本機安全性原則】。
  2. 選擇「軟體限製原則」,並按右鍵,選擇「建立新原則」。
  3. 選擇「其它原則」,並按右鍵,選擇「新增路徑規則」。
  4. 在路徑選擇「C:\Program Files\Avira\AntiVir Desktop」底下的「avnotify.exe」,並將安全性等級設為「不允許」,再按「確定」即可。
For XP Home version:

  1. 開機切到安全模式(開機按F8)
  2. 開啟「我的電腦」並打開下面的資料夾 C:\Program Files\Avira\AntiVir PersonalEdition Classic
  3. 在avnotify.exe上點右鍵->內容
  4. 切至"安全性"並點"進階"
  5. 在"權限"下對清單內的所有使用者做下面設定:在"周遊資料夾/執行檔案"的拒絕處打勾(每做一次清單內會多一個)
  6. 全部做完後按下方的確定,並在跳出的對話框選擇"是",並在檔案內容按下確定
  7. 重開機至正常的 xp home即可

2011年3月15日 星期二

[Linux] gcc自製library

引用: PTT看板: LinuxDev (作者: cole945)

Library可分成三種,static、shared與dynamically loaded, 下面會介紹如何利用 gcc 製作 這三種 library 與引用.

Static libraries :Static 程式庫用於靜態連結,簡單講是把一堆object檔用ar(archiver)包裝集合起來,檔名以 `.a' 結尾。優點是執行效能通常會比後兩者快,而且因為是靜態連結,所以不易發生執行時找不到library或版本錯置而無法執行的問題。缺點則是檔案較大,維護度較低;例如library如果發現bug需要更新,那麼就必須重新連結執行檔.

* 編譯編譯方式很簡單,先例用 `-c' 編出 object 檔,再用 ar 包起來即可. 考慮代碼如下 :
____ hello.c ____
#include
void hello(){ printf("Hello "); }

____ world.c ____
#include
void world(){ printf("world."); }

____ mylib.h ____
void hello();
void world();

進行編譯 :
# gcc -c hello.c world.c
# ar rcs libmylib.a hello.o world.o
<產出 libmylib.a>
這樣就可以建出一個檔名為 libmylib.a 的檔。輸出的檔名其實沒有硬性規定,但如果想要配合 gcc 的 '-l' 參數來連結,一定要以 `lib' 開頭,中間是你要的library名稱,然後緊接著 `.a' 結尾。

* 使用 :
考慮代碼 main_mylib.c :
#include "mylib.h"
int main() {
hello();
world();
}

使用上就像與一般的 object 檔連結沒有差別 :
# gcc main_mylib.c libmylib.a <預設會產出 a.out>
也可以配合gcc 的 `-l' 參數使用 :
client:/home/max/src # gcc main_mylib.c -L. -lmylib <預設會產出 a.out>

`-Ldir' 參數用來指定要搜尋程式庫的目錄,`.' 表示搜尋現在所在的目錄。通常預設會搜 /usr/lib 或 /lib 等目錄。`-llibrary' 參數用來指定要連結的程式庫 ,'mylib' 表示要與mylib進行連結,他會搜尋library名稱前加`lib'後接`.a'的檔案來連結 :
client:/home/max/src # ./a.out

Hello world <成功執行>

Shared libraries :
Shared library 會在程式執行起始時才被自動載入。因為程式庫與執行檔是分離的,所以維護彈性較好。有兩點要注意,shared library是在程式起始時就要被載入,而不是執行中用到才載入,而且在連結階段需要有該程式庫才能進行連結。

首先有一些名詞要弄懂,soname、real name與linker name。

soname 用來表示是一個特定 library 的名稱,像是 libmylib.so.1 。前面以 `lib' 開頭,接著是該 library 的名稱,然後是 `.so' ,接著是版號,用來表名他的介面;如果介面改變時,就會增加版號來維護相容度。

real name 是實際放有library程式的檔案名稱,後面會再加上 minor 版號與release 版號,像是 libmylib.so.1.0.0 。一般來說,版號的改變規則是(印象中在 APress-Difinitive Guide to GCC中有提到,但目前手邊沒這本書),最尾碼的release版號用於程式內容的修正,介面完全沒有改變。中間的minor用於有新增加介面,但相舊介面沒改變,所以與舊版本相容。最前面的version版號用於原介面有移除或改變,與舊版不相容時。

linker name是用於連結時的名稱,是不含版號的 soname ,如: libmylib.so。通常 linker name與 real name是用 ln 指到對應的 real name ,用來提供彈性與維護性。

* 編譯 :
shared library的製作過程較複雜 :
# gcc -c -fPIC hello.c world.c

編譯時要加上 -fPIC 用來產生 position-independent code。也可以用 -fpic參數。 (不太清楚差異,只知道 -fPIC 較通用於不同平台,但產生的code較大,而且編譯速度較慢)。
# gcc -shared -WI,-soname,libmylib.so.1 -o libmylib.so1.0.0 hello.o world.o

-shared 表示要編譯成 shared library
-Wl 用於參遞參數給linker,因此-soname與libmylib.so.1會被傳給linker處理。
-soname用來指名 soname 為 limylib.so.1

library會被輸出成libmylib.so.1.0.0 (也就是real name)若不指定 soname 的話,在編譯結連後的執行檔會以連時的library檔名為soname,並載入他。否則是載入soname指定的library檔案。

在編譯後再用 ln 來建立 soname 與 linker name 兩個檔案 :
# ln -s libmylib.so1.0.0 libmylib.so
# ln -s libmylib.so1.0.0 libmylib.so.1

* 使用 :
與使用 static library 同 :
# gcc main_mylib.c libmylib.so

或用
# gcc main_mylib.c -L. -lmylib

如果目錄下同時有static與shared library的話,會以shared為主, 可以使用 -static 參數可以避免使用shared連結 :
# gcc main_mylib.c -static -L. -lmylib <會花比用 shared library 久的時間>

此時可以用 ldd 看編譯出的執行檔與shared程式庫的相依性 :
# ldd ./a.out
linux-gate.so.1 => (0xffffe000)
libmylib.so => not found
libc.so.6 => /lib/libc.so.6 (0xb7dda000)
/lib/ld-linux.so.2 (0xb7f0a000)

輸出結果顯示出該執行檔需要 libmylib.so 這個shared library。會顯示 not found 因為沒指定該library所在的目錄,所找不到該library. 執行時會要求載入libmylib.so:
# ./a.out.
/a.out: error while loading shared libraries: libmylib.so: cannot open shared object file: No such file or directory

因為找不到 libmylib.so.1 所以無法執行程式. 有幾個方式可以處理 :
a. 把 libmylib.so 安裝到系統的library目錄,如/usr/lib下
b. 設定 /etc/ld.so.conf ,加入一個新的library搜尋目錄,並執行ldconfig 更新快取
c. 設定 LD_LIBRARY_PATH 環境變數來搜尋library, 這裡是以加入目前的目錄來搜尋要載作的library

client:/home/max/src # export LD_LIBRARY_PATH=.
client:/home/max/src # ./a.out
Hello world <成功執行>

Dynamically loaded libraries :
Dynamicaaly loaded libraries 才是像 windows 所用的 DLL ,在使用到時才載入,編譯連結時不需要相關的library。動態載入庫常被用於像plug-ins的應用.

* 使用 :
動態載入是透過一套 dl function來處理, 請參考如下 API :

  1. #include
  2. void *dlopen(const char *filename, int flag);
  3. //開啟載入 filename 指定的 library。
  4. void *dlsym(void *handle, const char *symbol);
  5. //取得 symbol 指定的symbol name在library被載入的記憶體位址。
  6. int dlclose(void *handle);
  7. //關閉dlopen開啟的handle。
  8. char *dlerror(void);
  9. //傳回最近所發生的錯誤訊息。
下面範例代碼示範如何使用上述 API :
____ dltest.c ____

  1. #include
  2. #include
  3. #include
  4. int main() {
  5. void *handle;
  6. void (*f)();
  7. char *error;
  8. /* 開啟之前所撰寫的 libmylib.so 程式庫 */
  9. handle = dlopen("./libmylib.so", RTLD_LAZY);
  10. if( !handle ) {
  11. fputs( dlerror(), stderr);
  12. exit(1);
  13. }
  14. /* 取得 hello function 的 address */
  15. f = dlsym(handle, "hello");
  16. if(( error=dlerror())!=NULL) {
  17. fputs(error, stderr);
  18. exit(1);
  19. }
  20. /* 呼叫該 function */
  21. f();
  22. dlclose(handle);
  23. }

編譯時要加上 -ldl 參數來與 dl library 連結 :
# gcc dltest.c -ldl
# ./a.out
Hello <成功執行>





2011年1月30日 星期日

找出USB還原Ubuntu+XP的方法

這幾天為了測試Ubuntu10.04+XP光碟開機還原失敗的問題,試驗了好幾種方式:
1. 使用舊版本clonezilla 1.0.5-8nk,但可惜的是,開機順序中斷,跑到command mode下,可能是Kernal舊了,一些周邊驅動也不符合。
2. 之前用clonezilla 1.2.6.24,改用stable中最新1.2.6.59,以新版開機,重做開機iso,失敗!
3. 用clonezilla 1.2.6.59,測試整顆硬碟備份及製作開機還原光碟iso,失敗!
4. 改用Ubuntu支援系列的clonezilla版本,做出的還原開機iso光碟,在啟動時,就當掉!失敗中的失敗!

最後,跑回去以一支16Gb USB來做,之前也試驗過,但似乎在抓取USB時,找不到。而這一次,我反覆執行Clonezilla再生龍,且以指令模式察看,發現在執行過程中,USB並沒有載入,必須得手動先轉換成root mode(sudo su),然後mount -a /dev/sdb /home/partimag 將USB掛載上去(USB 檔案格式需為F32 or F16),然後再結束回到畫面進行還原動作!

ㄟ嘿!居然這樣就成功了。

由於檔案目前作起來不到4Gb,應該以隨身碟模式可以撐一陣子!呵

2011年1月28日 星期五

Super Mario Bros

超級瑪利歐,紅白任天堂經典遊戲 Graphic from http://mario.ngamer.net/
在網上,有人成立官網來記錄這些點滴。真的是相當令人懷念。Graphic from http://mario.ngamer.net/