星期日, 9月 25, 2022
youtube-dl的分支程式yt-dlp簡介
youtube-dl是一個可以直接下載youtube上面影片的一個軟體,如有需要通常都會用這個來下載。
但youtube看起來有在擋youtube-dl下載影片的情況,會讓下載的速度變得很慢。
於是有開發團隊將youtube-dl開立了一個分支,取名yt-dlp,這個軟體目前下載youtube上面的影片時會用比較快的速度進行下載。
下載點在這裡:
https://github.com/yt-dlp/yt-dlp/releases
目前最新的版本是20220901版。
星期五, 1月 25, 2019
2019/01/23 普奇科技(Potix)面試心得
很久沒有面試了,這家是還沒去中國大陸之前想投的。
後來從中國大陸回來之後就到現在的公司上班,弄一弄也快六年了。
我是直接從104上面投的,跟人事約好面試時間之後上台北面試。
由於公司規定只能在前十分鐘到,就在差不多時間進去。
題目是分邏輯、JS、Java。邏輯有30分鐘可以寫。寫完人事改好之後才能繼續往下寫。
邏輯主要是依據現有的描述來分析是否足以完成某項目標。
我的邏輯測驗有通過,於是往下一個階段去寫。
JS的部份像是return function, CSS, 迴圈改寫,setTime 與 setInterval 的比較。
Java的部份像是Private, Public, Static的綜合考題、一些composite的概念、實作一個二元搜尋樹、如何用Java 將字串反轉、ArrayList跟LinkList的比較。
考完之後,開始玩手機。
後來來了一位Leader,開始聊我履歷上的資訊。看以前有解過什麼問題、現在的工作狀態如何、有解過什麼問題、覺得什麼最有趣、對技術的敏感度。
畢竟是裸考,考式沒有考得很好,就只是普通普通。
由於TonyQ 跟 Ryan有在這邊待過,就順便提一下TonyQ是我同學。以前有在讀書會碰過面。
(提這個其實有點不太好,因為是靠這個點引起別人的興趣,而不是用實力引起別人的興趣)。
聊完之後換Jumper進來(讓我意外的是Jumper還在),Jumper是由黑手轉換跑道來寫程式的人。
討論了許多技術上的東西,公司賺錢的產品是什麼、如果我要加入是要如何訓練、考核的依據、期望的薪資。
結論,口頭offer get。
看有沒有機會拿到正式的offer,拿不到都是空。
越來越覺得面試要不要給offer真的是很主觀。
2019/01/30 update:
接到104通知,以資歷及專長目前不符合本公司的需求而拒。
看來還是薪水談的太高了,而且對方不需要年紀太大的人。
對方看起來是需要資策會訓練出來的年輕小伙子,領一個較低的薪水就好。
2019/02/27 update:
後來有去寫104訊息詢問是不是可以過1~2年後再投履歷。
對方人事表示可以。
2019/01/30 update:
接到104通知,以資歷及專長目前不符合本公司的需求而拒。
看來還是薪水談的太高了,而且對方不需要年紀太大的人。
對方看起來是需要資策會訓練出來的年輕小伙子,領一個較低的薪水就好。
2019/02/27 update:
後來有去寫104訊息詢問是不是可以過1~2年後再投履歷。
對方人事表示可以。
星期三, 12月 05, 2018
工程師的壞習慣
1. Not Taking Enough Breaks 休息時間不夠
2. Refusing To Ask For Help 拒絕尋求協助
3. When You Stop Being A Student 停止學習的心態
4. Dirty Code 髒亂的程式碼
5. Bad Work/Life Balance 工作與生活沒有取得平衡
6. Bad Office Politics 糟糕的辦公室政治 - 許多開發人員傲慢,總是認為自己是正確的。 即使他們知道他們犯了一個錯誤,他們錯了,他們中的一些人永遠不會承認。
7. Not Learning From Mistakes 不要從錯誤中學習 - 作為一個開發者,你會犯很多錯誤。 這是不可避免的,也沒有什麼錯。 如果你一直犯同樣的錯誤,卻沒有從中吸取教訓,那麼就會有問題。
8. Giving Up Too Soon 太早放棄
9. Being A Know It All 認為自己無所不知
10. Not Taking Constructive Criticism 不接受建設性的批評
2. Refusing To Ask For Help 拒絕尋求協助
3. When You Stop Being A Student 停止學習的心態
4. Dirty Code 髒亂的程式碼
5. Bad Work/Life Balance 工作與生活沒有取得平衡
6. Bad Office Politics 糟糕的辦公室政治 - 許多開發人員傲慢,總是認為自己是正確的。 即使他們知道他們犯了一個錯誤,他們錯了,他們中的一些人永遠不會承認。
7. Not Learning From Mistakes 不要從錯誤中學習 - 作為一個開發者,你會犯很多錯誤。 這是不可避免的,也沒有什麼錯。 如果你一直犯同樣的錯誤,卻沒有從中吸取教訓,那麼就會有問題。
8. Giving Up Too Soon 太早放棄
9. Being A Know It All 認為自己無所不知
10. Not Taking Constructive Criticism 不接受建設性的批評
星期一, 11月 19, 2018
如何調整JBoss使用的JVM參數,使它開啟監控模式。
首先,至JBoss的執行目錄,也就是eap6.4/bin/
找到 standalone.conf 檔案。
使用vim 開啟檔案,並找到以下設定碼:
if [ "x$JAVA_OPTS" = "x" ]; then
#JAVA_OPTS="-Xms1303m -Xmx1303m
-XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true"
若是井號在開頭,表示這行是註解。
JAVA_OPTS="$JAVA_OPTS -Xms2048m -Xmx2048m
-Xmn512m -XX:PermSize=1024m -XX:MaxPermSize=2048m -XX:+UseParallelGC
-XX:+DisableExplicitGC -XX:ParallelGCThreads=8"
啟動ParallelGC以及設定ParallelGC所使用的CPU線程個數,因為伺服器上的CPU有8線程,我們設定它為8。
JAVA_OPTS="$JAVA_OPTS
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.port=1099"
這個地方是要設定使用JMX連線時是否需要使用遠端認證,以及是否使用ssl,開啟的連接埠為何。
JAVA_OPTS="$JAVA_OPTS
-Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS
-Djava.awt.headless=true"
JAVA_OPTS="$JAVA_OPTS
-Djava.util.logging.manager=org.jboss.logmanager.LogManager"
JAVA_OPTS="$JAVA_OPTS
-Djboss.modules.policy-permissions=true"
JAVA_OPTS="$JAVA_OPTS
-Djboss.modules.system.pkgs=org.jboss.byteman,org.jboss.logmanager"
JAVA_OPTS="$JAVA_OPTS
-Xbootclasspath/p:/home/tachen/eap6.4/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-1.5.4.Final-redhat-1.jar"
其中有一個以p:開頭的,不要被嚇到了,以為它是用windows的目錄。它只是一個設定檔的寫法,並不會影響。
但要記得logmanager的正確位置。
else
echo "JAVA_OPTS already set in environment;
overriding default settings with values: $JAVA_OPTS"
fi
設定完後,啟動JBoss。
使用Jconsole,輸入ip以及連接埠之後,即可開始堅控JBoss Container使用的情形。
星期四, 11月 08, 2018
如何繞過網路區域限制看最新的美劇
美國電視公司現在都會把自製的劇放到自家的網站上,
這些電視公司像是CBS(Columbia Broadcasting System), NBC(National Broadcasting Company), FOX,會製作出好看的電視劇,像是The Black List, The Big Bang Theory, Hell's Kitchen。
由於要等到台灣的電視公司播出,大概要花個一二年等待。既然這些電視公司會把節目放到自家網站上,我為何不直接上網看呢?
一開始是不行的,因為你的網路的地區是在台灣,非美國ip是不給你看的。
或許你會想,那就用vpn不就行了? 沒錯,有的網站用vpn就可以看,但有的網站用vpn還是不行看。要不就是用vpn之後網速變慢。
這邊我要介紹一個繞過網路區域限制的服務,SmartDNSProxy
它主要是透過設置dns主機位置,加上網頁認證啟動,來讓這些國外的網頁主機認為你是從美國連進來的,也由於使用的是dns,不是vpn,所以它的速度會跟一般連網頁時一樣快。
SmartDNSProxy很便宜,我買二年份的服務也還不到台幣一千塊。
如果你覺得不錯,可以用這個服務連結購買。:
星期三, 11月 07, 2018
使用FFMpeg將影片向右旋轉90度
使用youtube-dl下載的影片,它的方向不一定是正常的。
之前在youtube上面想找關於泱泱的影片,
後來找到一個叫作「泱泱 菁英薈」的影片。(現已被刪除)
這個影片在youtube上面就是向左旋轉90度的,如果要看就變成頭要向左轉90度,很不方便。
就想說要把這個影片向右轉90度,但我又不想要安裝其它的影片編輯軟體。
先前有使用ffmpeg將youtube-dl將影音檔合併的經驗,推論ffmpeg應可以做影片旋轉的功能。
果不其然,使用方法如下:
使用ffmpeg 旋轉影片
ffmpeg.exe -i input.mkv -vf "transpose=1" input90.mkv
之後等待一段時間,程式就會把影片向右轉90度,看影片的時候頭就不用刻意的向左轉90度。
星期一, 11月 05, 2018
使用youtube-dl 下載youtube轉成mp3檔
這個方法要搭配FFMpeg使用,以Windows 為例:
下載FFMpeg,將執行檔放在跟youtube-dl同樣一個目錄就可以了。
指令如下:
youtube-dl -x --audio-format mp3 youtube影片連結
以Links in a Chain 這首歌為例,指令如下:
youtube-dl -x --audio-format mp3 https://www.youtube.com/watch?v=NoW61zQ0ipQ
youtube-dl會只下載音訊的部份,也就是m4a檔。
下載完之後,它會自動呼叫FFMpeg,將m4a檔轉換成mp3檔。
請記得,僅供自已收聽,不要拿這個音樂檔從事商業行為。
下載FFMpeg,將執行檔放在跟youtube-dl同樣一個目錄就可以了。
指令如下:
youtube-dl -x --audio-format mp3 youtube影片連結
以Links in a Chain 這首歌為例,指令如下:
youtube-dl -x --audio-format mp3 https://www.youtube.com/watch?v=NoW61zQ0ipQ
youtube-dl會只下載音訊的部份,也就是m4a檔。
下載完之後,它會自動呼叫FFMpeg,將m4a檔轉換成mp3檔。
請記得,僅供自已收聽,不要拿這個音樂檔從事商業行為。
使用youtube-dl 下載youtube上面高畫質的影片
在「使用youtube-dl下在youtube上面的影片」,這篇文章中,我提到了最基本的使用方法。
youtube-dl 你想下載youtube影片的連結。
這時youtube-dl下載的影片格式預設大小是720p,而不是1080p或是更高的4k影片。
如果要確認是不是有支援比720p更好的影片格式,可以使用以下的指令:
youtube-dl -F 你想要查詢youtube影片的連結。
以20181103播出的綜藝玩很大為例:
影片連結:
https://www.youtube.com/watch?v=JAAGFdNAinU
youtube-dl -F https://www.youtube.com/watch?v=JAAGFdNAinU
執行結果如下:
我們可以看到其中1920*1080(Full HD)的影片,的代碼是137,其中video only表示只有影片,沒有聲音。
然後最佳的音訊的代碼是140,只有聲音沒有影片。
確認影片代碼跟音訊代碼之後,我們用底下這個指令:
youtube-dl -f 137+140/mp4+mp3 https://www.youtube.com/watch?v=JAAGFdNAinU
它會分別下載影片檔跟音訊檔,然後把影片跟音訊合併在一起。
為了把影片跟音訊合併在一起,需要搭配FFMpeg使用,下載連結:
https://ffmpeg.zeranoe.com/builds/
如果沒有下載FFMpeg,它會跟你反應沒有辦法將檔案合併在一起。
Version(版本)點選上面的2018開頭的。
Architecture(架構)點選Windows 64-bit。
Link(編譯連結)點選Static。
之後點選底下藍色按鈕下載。
解壓縮之後,將bin資料夾底下的ffmpeg.exe放到跟youtube-dl.exe同樣的位置。
就能夠下載1080p影片檔。
下載下來的影片檔請自已欣賞,請勿拿來從事商業行為。
youtube-dl 你想下載youtube影片的連結。
這時youtube-dl下載的影片格式預設大小是720p,而不是1080p或是更高的4k影片。
如果要確認是不是有支援比720p更好的影片格式,可以使用以下的指令:
youtube-dl -F 你想要查詢youtube影片的連結。
以20181103播出的綜藝玩很大為例:
影片連結:
https://www.youtube.com/watch?v=JAAGFdNAinU
youtube-dl -F https://www.youtube.com/watch?v=JAAGFdNAinU
執行結果如下:
我們可以看到其中1920*1080(Full HD)的影片,的代碼是137,其中video only表示只有影片,沒有聲音。
然後最佳的音訊的代碼是140,只有聲音沒有影片。
確認影片代碼跟音訊代碼之後,我們用底下這個指令:
youtube-dl -f 137+140/mp4+mp3 https://www.youtube.com/watch?v=JAAGFdNAinU
它會分別下載影片檔跟音訊檔,然後把影片跟音訊合併在一起。
為了把影片跟音訊合併在一起,需要搭配FFMpeg使用,下載連結:
https://ffmpeg.zeranoe.com/builds/
如果沒有下載FFMpeg,它會跟你反應沒有辦法將檔案合併在一起。
Version(版本)點選上面的2018開頭的。
Architecture(架構)點選Windows 64-bit。
Link(編譯連結)點選Static。
之後點選底下藍色按鈕下載。
解壓縮之後,將bin資料夾底下的ffmpeg.exe放到跟youtube-dl.exe同樣的位置。
就能夠下載1080p影片檔。
下載下來的影片檔請自已欣賞,請勿拿來從事商業行為。
星期日, 11月 04, 2018
使用youtube-dl 下載youtube上面的影片
youtube-dl 是一個用python寫的程式,跨各個平台。
我常使用youtube-dl下載上面的影片。
官方網站在這裡:
使用方法,打開console視窗,切換到youtube-dl所在的目錄:
輸入
youtube-dl 你想下載youtube影片的連結。
下載下來的影片檔請自已欣賞,請勿拿來從事商業行為。
星期一, 8月 27, 2018
leetcode weekly contest心得
第一次寫leetcode weekly contest的心得是:
狀況差,花了二個小時連個easy都寫不出來。
然後有很多對岸的同胞都可以在rank前10。
覺得自已太弱,還要多加強。
狀況差,花了二個小時連個easy都寫不出來。
然後有很多對岸的同胞都可以在rank前10。
覺得自已太弱,還要多加強。
星期三, 9月 27, 2017
如何讓行動裝置專案輸出不同名稱
由於最近要交付二個不同平台的App出去,在開發上必需要比較有彈性。
以往的作法是,一個專案的名稱叫 myApp,那它輸出的app 名稱就叫作 myApp。
若是要改名稱,以我的作法,會把專案刪除了,另外創一個新的名稱的專案。
使得它輸出的名稱跟調整後的名稱是一樣的。
這樣的笨方法其實是不可行的,由其是專案越來越大的時候,不太可能為了一個app 名稱去刪除專案。
依照系統設計的邏輯,一定有什麼地方是可以調整輸出app 名稱。
Android的設定是在:
app->main->res->values->string.xml
<string name="app_name">app name you want</string>
iOS的設定是在:
Info.plist->Bundle display name -> Value -> app name you want
就可以解決問題。
以往的作法是,一個專案的名稱叫 myApp,那它輸出的app 名稱就叫作 myApp。
若是要改名稱,以我的作法,會把專案刪除了,另外創一個新的名稱的專案。
使得它輸出的名稱跟調整後的名稱是一樣的。
這樣的笨方法其實是不可行的,由其是專案越來越大的時候,不太可能為了一個app 名稱去刪除專案。
依照系統設計的邏輯,一定有什麼地方是可以調整輸出app 名稱。
Android的設定是在:
app->main->res->values->string.xml
<string name="app_name">app name you want</string>
iOS的設定是在:
Info.plist->Bundle display name -> Value -> app name you want
就可以解決問題。
解決因調整程式執行編碼,導致其它程式出現亂碼的問題。
為了解決程式輸入產生亂碼的問題,我把啟動前端程式的JVM的編碼參數移除。
使得JVM啟動程式時使用系統預設編碼。但這個導致了我們呼叫服務器get function回傳的中文值是亂碼。
為了要解決這個亂碼問題,我們打算先了解各系統使用的編碼本質,偵測程式碼如下:
String enc = System.getProperty("file.encoding");
System.out.println(enc);
得到的不是UTF-8,而是繁中系統所使用的MS950。
由於服務器系統回傳的是UTF-8,如果不使用UTF-8接收,直接用MS950接收,會產生亂碼。
於是我們將HttpURLConnection回傳的Inputstream,使用編碼為UTF-8的InputStreamReader接收。
這樣就可以解決MS950與UTF-8之間串接所造成的亂碼問題。程式碼如下,紅字部份為重點:
public static String doGet(String urlString, String contentType, String charset) throws IOException {
URL url = new URL(urlString);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setConnectTimeout(30000);
con.setRequestMethod("GET");
con.setRequestProperty("Content-Type", contentType);
con.setRequestProperty("charset", charset);
//
int http_status = con.getResponseCode();
if (http_status == 200) {
StringBuilder sb = new StringBuilder();
BufferedReader bfrd = new BufferedReader(new InputStreamReader(con.getInputStream(),"UTF-8"));
String temp = null;
while ((temp = bfrd.readLine()) != null) {
sb.append(temp);
sb.append("\r\n");
}
bfrd.close();
return sb.toString();
} else {
throw new IOException("Http Connection Error: " + http_status);
}
}
使得JVM啟動程式時使用系統預設編碼。但這個導致了我們呼叫服務器get function回傳的中文值是亂碼。
為了要解決這個亂碼問題,我們打算先了解各系統使用的編碼本質,偵測程式碼如下:
String enc = System.getProperty("file.encoding");
System.out.println(enc);
得到的不是UTF-8,而是繁中系統所使用的MS950。
由於服務器系統回傳的是UTF-8,如果不使用UTF-8接收,直接用MS950接收,會產生亂碼。
於是我們將HttpURLConnection回傳的Inputstream,使用編碼為UTF-8的InputStreamReader接收。
這樣就可以解決MS950與UTF-8之間串接所造成的亂碼問題。程式碼如下,紅字部份為重點:
public static String doGet(String urlString, String contentType, String charset) throws IOException {
URL url = new URL(urlString);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setConnectTimeout(30000);
con.setRequestMethod("GET");
con.setRequestProperty("Content-Type", contentType);
con.setRequestProperty("charset", charset);
//
int http_status = con.getResponseCode();
if (http_status == 200) {
StringBuilder sb = new StringBuilder();
BufferedReader bfrd = new BufferedReader(new InputStreamReader(con.getInputStream(),"UTF-8"));
String temp = null;
while ((temp = bfrd.readLine()) != null) {
sb.append(temp);
sb.append("\r\n");
}
bfrd.close();
return sb.toString();
} else {
throw new IOException("Http Connection Error: " + http_status);
}
}
星期一, 5月 08, 2017
使用Maven jboss plugin 進行佈署
Maven 有很多的外掛軟體可以使用,能夠幫助管理專案的建置與佈署。
這邊介紹的是Maven jboss plugin。
先將 jboss eap 6 打開。
設定值為:
<plugin>
<groupId>org.jboss.as.plugins</groupId>
<artifactId>jboss-as-maven-plugin</artifactId>
<version>7.9.Final</version>
<configuration>
<hostname>127.0.0.1</hostname>
<port>9999</port>
</configuration>
</plugin>
把這個設定值加入到POM檔之後,輸入Maven指令。
mvn jboss-as:deploy-only
啟動後,就會發現jboss會跳出正在deploy的訊息,而且它會把舊的專案更新成新的專案。
底下這個是由Maven產生出的訊息,Build Success表示沒有錯誤,WAR檔更新成功。
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building xxx0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- jboss-as-maven-plugin:7.9.Final:deploy-only (default-cli)
五月 08, 2017 9:48:46 上午 org.xnio.Xnio <clinit>
INFO: XNIO Version 3.0.7.GA
五月 08, 2017 9:48:46 上午 org.xnio.nio.NioXnio <clinit>
INFO: XNIO NIO Implementation Version 3.0.7.GA
五月 08, 2017 9:48:47 上午 org.jboss.remoting3.EndpointImpl <clinit>
INFO: JBoss Remoting version 3.2.12.GA
Authenticating against security realm: ManagementRealm
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.156 s
[INFO] Finished at: 2017-05-08T09:48:53+08:00
[INFO] Final Memory: 12M/190M
[INFO] ------------------------------------------------------------------------
這邊介紹的是Maven jboss plugin。
先將 jboss eap 6 打開。
設定值為:
<plugin>
<groupId>org.jboss.as.plugins</groupId>
<artifactId>jboss-as-maven-plugin</artifactId>
<version>7.9.Final</version>
<configuration>
<hostname>127.0.0.1</hostname>
<port>9999</port>
</configuration>
</plugin>
把這個設定值加入到POM檔之後,輸入Maven指令。
mvn jboss-as:deploy-only
啟動後,就會發現jboss會跳出正在deploy的訊息,而且它會把舊的專案更新成新的專案。
底下這個是由Maven產生出的訊息,Build Success表示沒有錯誤,WAR檔更新成功。
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building xxx0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- jboss-as-maven-plugin:7.9.Final:deploy-only (default-cli)
五月 08, 2017 9:48:46 上午 org.xnio.Xnio <clinit>
INFO: XNIO Version 3.0.7.GA
五月 08, 2017 9:48:46 上午 org.xnio.nio.NioXnio <clinit>
INFO: XNIO NIO Implementation Version 3.0.7.GA
五月 08, 2017 9:48:47 上午 org.jboss.remoting3.EndpointImpl <clinit>
INFO: JBoss Remoting version 3.2.12.GA
Authenticating against security realm: ManagementRealm
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.156 s
[INFO] Finished at: 2017-05-08T09:48:53+08:00
[INFO] Final Memory: 12M/190M
[INFO] ------------------------------------------------------------------------
星期四, 5月 04, 2017
MySQL Universal date format transform
由於一開始沒有控管日期的格式如何,資料蒐集起來有點雜亂。
但是MySQL沒有像Oracle資料庫系統有比較好用的日期處理Function,在經過不斷嘗試後終於找到一個適合的方法。
使用UNIX_TIMESTAMP這個function,就可以同時把不同格式的日期一併轉成是統一的格式。
不會再有一種格式轉出來是正常的,另外一種格式轉出來卻是null的情況發生。
select count(callDate) from DeliverLog where from_unixtime(UNIX_TIMESTAMP(callDate),'%Y-%m-%d %H:%i:%s')
>= STR_TO_DATE('2016-12-01 00:00:00', '%Y-%m-%d %H:%i:%s') and from_unixtime(UNIX_TIMESTAMP(callDate),'%Y-%m-%d %H:%i:%s') < STR_TO_DATE('2017-01-01 00:00:00', '%Y-%m-%d %H:%i:%s')
select count(*)
deliverTime from DeliverLog where deliverTime is not null and TIME_TO_SEC(TIMEDIFF(STR_TO_DATE(deliverTime, '%Y-%m-%d %H:%i:%s') ,STR_TO_DATE(pickTime, '%Y-%m-%d %H:%i:%s'))) < 14400 and
STR_TO_DATE(deliverTime, '%Y-%m-%d %H:%i:%s') >= STR_TO_DATE('2016-11-01 00:00:00', '%Y-%m-%d %H:%i:%s') and STR_TO_DATE(deliverTime, '%Y-%m-%d %H:%i:%s') < STR_TO_DATE('2016-12-01 00:00:00', '%Y-%m-%d %H:%i:%s')
但是MySQL沒有像Oracle資料庫系統有比較好用的日期處理Function,在經過不斷嘗試後終於找到一個適合的方法。
使用UNIX_TIMESTAMP這個function,就可以同時把不同格式的日期一併轉成是統一的格式。
不會再有一種格式轉出來是正常的,另外一種格式轉出來卻是null的情況發生。
select count(callDate) from DeliverLog where from_unixtime(UNIX_TIMESTAMP(callDate),'%Y-%m-%d %H:%i:%s')
>= STR_TO_DATE('2016-12-01 00:00:00', '%Y-%m-%d %H:%i:%s') and from_unixtime(UNIX_TIMESTAMP(callDate),'%Y-%m-%d %H:%i:%s') < STR_TO_DATE('2017-01-01 00:00:00', '%Y-%m-%d %H:%i:%s')
select count(*)
deliverTime from DeliverLog where deliverTime is not null and TIME_TO_SEC(TIMEDIFF(STR_TO_DATE(deliverTime, '%Y-%m-%d %H:%i:%s') ,STR_TO_DATE(pickTime, '%Y-%m-%d %H:%i:%s'))) < 14400 and
STR_TO_DATE(deliverTime, '%Y-%m-%d %H:%i:%s') >= STR_TO_DATE('2016-11-01 00:00:00', '%Y-%m-%d %H:%i:%s') and STR_TO_DATE(deliverTime, '%Y-%m-%d %H:%i:%s') < STR_TO_DATE('2016-12-01 00:00:00', '%Y-%m-%d %H:%i:%s')
星期一, 6月 16, 2014
MAC OSX homebrew installation log
Last login: Mon Jun 16 09:17:46 on ttys001
soniccol-de-MacBook-Pro:Desktop soniccol$ brew
-bash: brew: command not found
soniccol-de-MacBook-Pro:Desktop soniccol$ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go/install)"
==> This script will install:
/usr/local/bin/brew
/usr/local/Library/...
/usr/local/share/man/man1/brew.1
==> The following directories will be made group writable:
/usr/local/.
/usr/local/bin
==> The following directories will have their group set to admin:
/usr/local/.
/usr/local/bin
Press RETURN to continue or any other key to abort
==> /usr/bin/sudo /bin/chmod g+rwx /usr/local/. /usr/local/bin
==> /usr/bin/sudo /usr/bin/chgrp admin /usr/local/. /usr/local/bin
==> /usr/bin/sudo /bin/mkdir /Library/Caches/Homebrew
==> /usr/bin/sudo /bin/chmod g+rwx /Library/Caches/Homebrew
==> Downloading and installing Homebrew...
remote: Counting objects: 179226, done.
remote: Compressing objects: 100% (49600/49600), done.
remote: Total 179226 (delta 128486), reused 179193 (delta 128464)
Receiving objects: 100% (179226/179226), 35.40 MiB | 2.06 MiB/s, done.
Resolving deltas: 100% (128486/128486), done.
From https://github.com/Homebrew/homebrew
* [new branch] master -> origin/master
HEAD is now at b68d746 libwps: run test program in addition to compiling it
==> Installation successful!
==> Next steps
Run `brew doctor` before you install anything
Run `brew help` to get started
soniccol-de-MacBook-Pro:Desktop soniccol$
星期六, 4月 26, 2014
CSS
使用 CSS 樣式表,有幾點需注意:
如果同一 HTML 文件內有兩個樣式定義,以最後的定義為準。
在瀏覽器方面,IE 5.0 版與 NetScape Communicator 均支援 CSS 語法,但部份瀏覽器則不支援 CSS 樣式指令。如果這些瀏覽器在無法辨識時,將會把 CSS 語法當成本文,而變成亂碼。 為免此狀況發生,則可以在 <style> </style> 之間用 <!-- --> 將 CSS 指令隱藏起來。
一般使用 Notepad 來撰寫 CSS 指令。在網頁編輯軟體方面,IE 的 FrontPage 2000 可撰寫 CSS,但 NetScape Composer 沒有撰寫 CSS 的功能。
星期四, 2月 27, 2014
使用git push 到遠端主機遇到的問題與解法
通常學一個東西還沒有感受到它強大的威力往往就會先感受到它的不便,偏偏會有一堆人來跟你行銷說習慣了就很好用之類的...
應同事的邀請,開始使用git。
在我 push 到遠端主機(gitlab)時,一直跟我說錯誤。
$ git push
Counting objects: 9292, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2136/2136), done.
error: RPC failed; result=22, HTTP code = 411
fatal: The remote end hung up unexpectedly
Writing objects: 100% (8222/8222), 1.27 MiB | 837 KiB/s, done.
Total 8222 (delta 6060), reused 8181 (delta 6033)
fatal: The remote end hung up unexpectedly
Everything up-to-date
後來才知道要把上傳時的buffer調大,才有辦法成功。
調整postBuffer至五百多MB
git config http.postBuffer 524288000
供各位參考。
星期二, 2月 25, 2014
Linux 上 Command Line 存取MySQL 不出現亂碼的方法
平常在存取DBMS使用都是GUI介面,但是碰到那種只能用Command Line 存取DBMS的情況,也不得不乖乖的一個指令一個指令key in。只是用Command Line 選出來的字大多都是亂碼,明明就是用utf-8建立的database,怎麼資料選出來還是亂碼 ?
答案就是 : set names 'utf8';
下了這行指令後,說也奇怪,選出來的中文資料就正常了。
分享給各位。
答案就是 : set names 'utf8';
下了這行指令後,說也奇怪,選出來的中文資料就正常了。
分享給各位。
星期四, 11月 21, 2013
星期二, 9月 17, 2013
java 中文排序
java 基本上是美國人發明的,所以一開始對英文字母的排序一定是最好的(廢話)。
A到Z有什麼好排的? 這邊就可以顯示中華文化的可看性。
我曾經在java的comparator 實做過中文排序,可總老是看不清那規則在哪裡。
應該是big5碼吧 ? 可是現在不都在推廣utf-8 ? 用big5沒辦法國際化。
問題是,utf-8在制定的時候,有它一套的規則在,
我在中國把客戶的資料庫安裝成utf-8之後,就被要求產品名稱要用拼音做排序,問題是它不是按照筆畫順序,也不是按照拼音方試去排,
只能把客戶的需求丟在一邊,快樂的回台灣了(喂)
只能用java 做排序了,oracle那邊還找不到漂亮的解法。
實做comparator 介面,使用java.text.collator 進行比較。
public class Asc implements Comparator { public int compare(Object arg0, Object arg1) { VLG_ItemMaster m1 = (VLG_ItemMaster)arg0; VLG_ItemMaster m2 = (VLG_ItemMaster)arg1; Collator collator = Collator.getInstance(Locale.TRADITIONAL_CHINESE); return collator.compare(m1.getItemDesc(),m2.getItemDesc()); }}
在Locale是TRADITIONAL_CHINESE時,中文字是按照筆畫排序。
在Locale是SIMPLIFIED_CHINESE時,中文字是按照拼音排序。
A到Z有什麼好排的? 這邊就可以顯示中華文化的可看性。
我曾經在java的comparator 實做過中文排序,可總老是看不清那規則在哪裡。
應該是big5碼吧 ? 可是現在不都在推廣utf-8 ? 用big5沒辦法國際化。
問題是,utf-8在制定的時候,有它一套的規則在,
我在中國把客戶的資料庫安裝成utf-8之後,就被要求產品名稱要用拼音做排序,問題是它不是按照筆畫順序,也不是按照拼音方試去排,
只能把客戶的需求丟在一邊,快樂的回台灣了(喂)
只能用java 做排序了,oracle那邊還找不到漂亮的解法。
實做comparator 介面,使用java.text.collator 進行比較。
public class Asc implements Comparator { public int compare(Object arg0, Object arg1) { VLG_ItemMaster m1 = (VLG_ItemMaster)arg0; VLG_ItemMaster m2 = (VLG_ItemMaster)arg1; Collator collator = Collator.getInstance(Locale.TRADITIONAL_CHINESE); return collator.compare(m1.getItemDesc(),m2.getItemDesc()); }}
在Locale是TRADITIONAL_CHINESE時,中文字是按照筆畫排序。
在Locale是SIMPLIFIED_CHINESE時,中文字是按照拼音排序。
訂閱:
文章 (Atom)


