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++;
});


某遊戲網頁領取獎勵語法

懶的手動領

button1: javascript:name=prompt("角色名稱","");$("#txtCharName").val(name);$("#RBServerList_7").attr("checked", true);$("#ibtnNext").click();

button2: javascript:$("#rdoBox20").attr("checked", true);$("#CheckBuy1").click();