2017年6月7日 星期三

cdex 轉mp3 出現 confusing fatal error: can't update LAME-tag frame 錯誤解決方法

這是新版library會出現的錯誤,改用舊版即可。
  1. 點這裡下載 3.96版 lame library 
  2. 解壓縮後把 lame_enc.dll 複製到cdex資料夾內取代原本的
  3. 重開cdex即可

2017年5月26日 星期五

浮點數的範圍及大小計算

好久以前的文章,剛剛才在草稿夾內被我翻出來...

直到前幾天我才搞清楚浮點數的大小與範圍是怎麼計算的,別問我計概怎麼過的,老實說,我也不知道怎麼過的XD
現在由於電腦的儲存空間實在太大,寫程式的時候誰管他花多少個bits,都馬是float(32"bytes")給它用下去就對了,甚至double float(64"bytes")在儲存的都有,不過當你做的東西與壓縮扯上關係時就不能這麼豪氣的使用這些變數了,必須要斤斤計較才可以,所以下面教大家怎麼計算浮點數的範圍與空間大小
浮點數可以把它想像成整數部分與小數部份,整數部分相信大家應該都會,如果要儲存+ - 128的整數需要8個bits的空間,這應該沒問題,但是小數部份呢?

小數部份就比較麻煩一點,看你想要儲存小數點以下幾位,要儲存越多位數自然所需的空間就越多(廢話),例如要儲存到小數點以下第三位,需要多少空間呢?
大家可以把小數點部份暫時想像成整數,所以想要儲存小數點以下三位就表示要儲存的範圍是0~999,0~999所需要的儲存空間是多少呢?8個bits可以表示0~255、9個可以表示0~511、10個可以表示0~1023,所以要表示0~999所需的最少bits數就是10個
所以要儲存+ - 128精確度到小數點以下3位的浮點數所需的空間就是8+10=18個bits,其他請依此類推

FB帳號一註冊就被鎖的解決方式

FB帳號現在莫名其妙的難申請,通常都是一註冊之後馬上就被封鎖,理由都是說名字不是真名,懷疑是假帳號等莫名其妙的理由,有時還會要求上傳完整臉部的照片說審核完會幫你解鎖,我等過一個禮拜完全沒被解鎖,最後要求傳身分證明才可以解鎖,申請個FB帳號還得送你身分證資料,真是有夠爛。

唷~重點是都她媽把我帳號封鎖了,還一直寄垃圾信騷擾我是怎麼回是

XXX,你知道嗎?你的 Facebook 朋友可是超過你想像的多呢。

多有個屁用,我帳號還是進不去阿,掯~

我用申請超過10個以上被鎖的帳號歸納出來的心得

  1. 千萬別用FB APP註冊,很容易被鎖,全新手機的FB APP不知道可不可以
  2. 也不推薦用電腦註冊,很容易被鎖
  3. 記得換IP,用無痕模式
以下是最簡單申請FB帳號的方式
  1. 手機關wifi,開飛行之後再把飛行關掉(換IP)
  2. 用瀏覽器的無痕模式進入FB
  3. 使用email註冊FB,要求手機號碼可以略過
  4. 名稱很重要,名字中間如果取 大、小、阿 等,非常容易被鎖
  5. 會要求使用email收認證碼,沒收到的話檢查一下垃圾信件夾
  6. 能夠順利進入FB塗鴉牆,恭喜你安全過關,沒過關的話把瀏覽器關掉重複1~6步驟再試試看吧

2016年11月30日 星期三

PHP Warning: Header may not contain more than a single header, new line detected in xxxx.php on line xxx 解決方法

剛剛收到一個回覆,運作很久的程式忽然無法動了,看了一下error log 出現以下錯誤
PHP Warning: Header may not contain more than a single header, new line detected in xxxx.php on line xxx

google了很久,抓不到原因,字面上是說你有太多header在運作,但是我把所有header都刪掉了,只剩一個還是出現這個錯誤,後來終於google到一篇,是因為我用header location進行轉址,但是轉址過去的url變數含有換行符號,所以把換行符號過濾掉即可

$url = preg_replace('/\s+/', '', $url);

參考資料:

2016年10月7日 星期五

windows 下使用 bat 指令 auto commit 到 github

最近因為 dropbox 把 public folder 關了,讓我的一個小程式沒辦法再透過html網頁查詢使用情形,只好轉戰 github,不過在 auto commit 時遇到不少問題,特此紀錄一下

我安裝了 github for windows,實在有點討厭這麼肥的程式(3xx MB),不過他也是有好處的,就是自帶了一個git-shell...會自動login...

我研究了很久如何在 windows 底下使用 bat 指令進行 auto commit,但是都會卡在要求帳號密碼的地方,網路上一堆人教如何跳過帳號密碼輸入
使用window認證管理員,還要再安裝一個2xx MB的程式,太誇張,不爽裝,失敗
使用記憶密碼 store,失敗
使用id & pw in url,失敗
使用ssh key,還是失敗

花了很多時間研究到底哪裡出錯,後來終於想到 使用 git-shell 就能跳過輸入帳號密碼的部分了阿...

1. 安裝肥大的github for windows
2. 使用github for windows 把專案下載下來,此時程式會自動建立你的ssh key
3. 確認一下 git-shell 是否可以自動登入
4. 找出 git-bash.exe 這支程式的位置 (c:\user\applocal\local\xxxxxxxxxx)
5. 建立 git_auto_commit.bat 內容如下 code_folder位置改成存放git_commit.sh的位置
@ECHO on
cd /d CODE_FOLDER

C:\github\git-bash.exe ./git_commit.sh
6.建立 git_commit.sh 內容如下 project_folder改為專案資料夾的位置
#!/bin/sh
timestr=$(date +"%Y-%m-%d %T")
cd PROJECT_FOLDER
git add . #加入所有新增檔案
git commit -m "Automated commit on $timestr" #快速commit
git push

這樣 執行git_auto_commit.bat 他就會自動呼叫 git-shell 執行 git_commit.sh 的腳本,因為git-shell已經登入,所以不會再跟你要帳號密碼

2016年7月29日 星期五

Windows 10 VPN斷線自動重撥解決方案

Windows自帶pptp的VPN連線方式,不用安裝任何軟體就可以使用VPN連線,但是從8.1開始,居然把斷線自動重撥的功能拿掉了...

還好有變通方法可以使用...不過有點麻煩...就是使用工作排程器,偵測斷線的事件20226 & 重撥失敗的事件20227

1. 使用工作排程器,新增一個工作
2. 觸發程序 選擇 當事件發生時
3. 紀錄檔 選擇 應用程式
4. 來源 RasClient
5. 識別碼 20226
6. 再新增一個觸發程序 識別碼 20227
7. 動作 新增一個 啟動程式  指令碼填 rasdial
8. 引數填 "VPN_NAME" id pw
9. 完成

這樣就能夠自動斷線重連了(手動斷線不會)

嫌麻煩也可以利用以下的XML檔匯入...VPN_NAME記得修改

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2016-07-29T14:52:44.5247799</Date>
    <Author>DESKTOP-LABE5JE\jikker</Author>
    <URI>\VPN</URI>
  </RegistrationInfo>
  <Triggers>
    <EventTrigger>
      <Enabled>true</Enabled>
      <Subscription>&lt;QueryList&gt;&lt;Query Id="0" Path="Application"&gt;&lt;Select Path="Application"&gt;*[System[Provider[@Name='RasClient'] and EventID=20226]]&lt;/Select&gt;&lt;/Query&gt;&lt;/QueryList&gt;</Subscription>
    </EventTrigger>
    <EventTrigger>
      <Enabled>true</Enabled>
      <Subscription>&lt;QueryList&gt;&lt;Query Id="0" Path="Application"&gt;&lt;Select Path="Application"&gt;*[System[Provider[@Name='RasClient'] and EventID=20227]]&lt;/Select&gt;&lt;/Query&gt;&lt;/QueryList&gt;</Subscription>
    </EventTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>S-1-5-21-687921218-3904265620-350331364-1001</UserId>
      <LogonType>InteractiveToken</LogonType>
      <RunLevel>LeastPrivilege</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>P1D</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>rasdial</Command>
      <Arguments>"VPN_NAME" id pw</Arguments>
    </Exec>
  </Actions>
</Task>

2016年5月16日 星期一

煩人的高鐵網站時刻表&行車時間計算機


因為高鐵現在班次很多又複雜,北高直達的班次又變少,每次要上高鐵網站查詢要搭哪班車,就得計算這班車到底要開多久,一怒之下寫了以下的程式碼,會自動計算行車時間,就是在以下這個畫面執行的時候會把那完全沒用的備註欄改為行車時間。

BTW,購票頁面有行車時間,這頁就沒有,看來(準備)付錢的就是老大阿...



使用方法
1.把 高鐵時間計算機 這串文字拉到我的最愛(Chrome or Firefox, IE管他去死)
2.查詢高鐵的時候按一下那個書籤,可愛的行車時間就跑出來了

以下是未經壓縮的原始碼

var i=1;
$('.column3').each(function(){
var date = $('#SearchDate').val();
var start = $('.column3:eq('+i+')').text();
var end = $('.column4:eq('+i+')').text();
var s_time = new Date(date + ' ' + start);
var e_time = new Date(date + ' ' + end);
var run_time = (e_time-s_time)/1000/60;
var last = run_time % 60;
var run_time_str = '';
if(last < 10){
last = '0'+last;
}
if( run_time <= 60){
run_time_str = '0:'+ last;
}else{
run_time_str = Math.floor(run_time/60) + ':' + last;
}
$('.column2:eq('+i+')').text(run_time_str);
$('.column2:eq(0)').text('行車時間');
i++;
});