2012年12月27日 星期四

使用Boost C++ Library產生random number generator

boost library的下載網址如下:

http://www.boost.org/

此library有提供一些數學distribution的random number generator:

以下是一個lognormal distribution的範例,其他distribution的作法類似:

#include <boost/random.hpp>

double mean_of_lognormal = 1 ;// 這是log normal distribution的mean,也就是 e^{mu+sigma^2/2}
double variance_of_lognormal=1000*mean_of_lognormal*mean_of_lognormal; //這是log normal distribution的variance,
double sigma = sqrt(log(variance_of_lognormal/(mean_of_lognormal*mean_of_lognormal)+1));
double mu = log(mean_of_lognormal) - pow(sigma,2)/2 ;

boost::random::mt19937 rng(static_cast<unsigned int>(std::time(0)));   
boost::random::lognormal_distribution<> boost_lognormal(mu,sigma);

double value_of_lognormal = boost_lognormal(rng);

2012年8月18日 星期六

解決titanium backup儲存空間不足的問題

先移除titanium backup,然後利用Root Explorer 開啟 /data/app,找出 com.keramidas.TitaniumBackup-1.odex 這檔並刪除,然後再重裝 titanium backup即可

2012年6月22日 星期五

HTC Magic 刷機教學

基本上就是以下兩個網站交叉著看

http://www.mobile01.com/topicdetail.php?f=566&t=1599400&p=1

http://abintech.twidv.com/2010/03/htc-magic.html

HTC Desire 刷機教學

現在刷這支老手機是很容易的:

http://android.bloggle.biz/?p=1279

2012年5月24日 星期四

HTC One X 通話錄音的方法

這篇教學寫的很詳細了:

http://forum.xda-developers.com/showthread.php?t=1663642

我就不用再做什麼補充

2012年5月5日 星期六

HTC One X內建SD卡消失大量空間的解法

One X手機與電腦連線傳輸資料後手機儲存空間1G空間遺失原因是:

手機儲存空間連線時,暫存檔案占據儲存空間。

要排除此問題,您僅需將手機儲存空間資料備份後格式化即正常
以下提供給您故障排除步驟:

1.話機透過USB傳輸線連接電腦。
2.話機端出現詢問畫面選擇”磁碟機”。
3.電腦端等待約15-20秒後,出現”卸除式磁碟機”
  (或是點選”電腦”會出現”HTC Storage”)
4.滑鼠移動到HTC Storage硬碟選項後,請先將磁碟槽內的資料匣跟檔案備份到電腦端
5.備份完成後,點選HTC Storage按滑鼠右鍵,選擇格式化。
6.格式化格式請務必選擇”NTFS”。
7.格式化完成後再將檔案還原到手機儲存空間即可。

我後來發現即使做了上面這個方法, 手機重開機後,好像還是會變成FAT32格式?

然後手機sd內的資料都會不見?

所以最好手機sd內的資料要備份到其他電腦上,預防萬一。

2012年5月2日 星期三

HTC One X相關資訊(刷機)

新機檢查:
http://www.hkepc.com/forum/viewthread.php?tid=1778990&extra=page%3D1

在撥號畫面輸入以下字串,可以進入工程測試模式:
*#*#3424#*#*

刷機及回復原廠方法
http://www.mobile01.com/topicdetail.php?f=566&t=2702844&p=1#35384102

刷機相關研究
http://www.mobile01.com/topicdetail.php?f=566&t=2685112&last=35576340

刷ROM步驟,以ARHD為例:
  • Download ROM and place it on your SD card
  • Download "Super Wipe" script & place it on your SD card (optionally if coming from earlier version of my ROM, obligatory if coming from stock or other custom ROM)
  • 手機重開機進入fastboot mode,然後用usb接上電腦
  • 用 fastboot flash boot boot.img指令將boot.img刷進手機
  • 接著打  fastboot  erase cache
  • Boot your phone in recovery mode (vol down + power)
  • In main menu, select "install zip from sdcard"
  • Select "choose zip from sdcard" and browse to the location of "Super Wipe" script
  • Once again select "choose zip from sdcard" and browse to the location of Android Revolution ROM
  • After flashing process is complete, reboot the device

2012年4月28日 星期六

HTC手機強制關機法

先同時按下音量鍵上與下,不要放掉,接著再按電源鍵

也就是三鍵同時按,持續幾秒,手機就自動關機了。


HTC手機測試模式

只要在撥號的介面輸入以下字串,就可以進入測試模式
*#*#3424#*#*

可是測試手機功能是否正常

2012年4月19日 星期四

透過ip查詢電腦名稱 (Windows)

在windows底下,可以透過此指令查出電腦名稱:

 nbtstat -A [IP address]

只要在 [IP address] 填入你想查詢的ip位址

2012年3月22日 星期四

將GPS經緯度座標轉換成直線距離

我在網路上找到別人寫好,疑似是C#的版本:

http://www.dotblogs.com.tw/jeff-yeh/archive/2009/02/04/7034.aspx

我改成C/C++的版本:

#define M_PI 3.14159265358979323846
double ConvertDegreeToRadians(double degrees)
{
    return (M_PI/180)*degrees;
}
double GetDistance(double Lat1, double Long1, double Lat2, double Long2)
{
    double Lat1r = ConvertDegreeToRadians(Lat1);
    double Lat2r = ConvertDegreeToRadians(Lat2);
    double Long1r = ConvertDegreeToRadians(Long1);
    double Long2r = ConvertDegreeToRadians(Long2);

    double R = 6371; // Earth's radius (km)
    double d = acos(sin(Lat1r) *
    sin(Lat2r) + cos(Lat1r) *
    cos(Lat2r) *
    cos(Long2r-Long1r)) * R;
    return d;
}

想要使用這個function很簡單
例如想要得知24.797254,120.969189到24.803545,120.979038的距離,就這樣呼叫:

cout<<GetDistance(24.797254,120.969189,24.803545,120.979038)<<endl;

function回傳的單位是公里。

2012年1月11日 星期三

解決 pcnet32 device eth0 does not seem to be present

今天在vmware上面跑fedora的時候,不知道為什麼之前網卡正常,但是後來網卡都無法啟動

於是我找到這個網站的教學:
http://newyorks.blog.51cto.com/2612618/498819

解決方法就是在/lib/modules/`uname -r`/下執行 depmod,重新生成modules.dep和modules.alias,重新開機。

2012年1月2日 星期一

C++ Big5 與 Unique 轉換

big5轉unicode是用MultiByteToWideChar

    char *str = "big5轉unicode.txt";
    wchar_t wcbuf[32];
    MultiByteToWideChar (950,0,str,-1,wcbuf,32);


unique轉big5是用WideCharToMultiByte
    wchar_t *wstr = L"unicode轉big5";
    char mbcsbuf[32];
    WideCharToMultiByte(950  ,0,wstr,-1,mbcsbuf,32,NULL,NULL);


記得要#include<Windows.h>