發表文章

T-SQL 日期跟時間合併

之前為了方便處理所以把資料庫裡面的日期跟時間切開 但是現在為了R建模方便,又得把他併在一起了 本來查了網路 有人說是用&就可以併在一起 結果根本是騙肖A 後來又查到其實是用+ 但是日期和時間不能直接用+ 要先轉成字串 範例如下 SELECT Symbol,Name,convert(char(11),Date)+convert(char(8),Time)as DateTime, Price FROM dbname

SQL-運用CASE改變輸出的條件

這個例子是因為我的資料來源有前一個工作天的收盤價 所以我就很自然的把前一天的收盤價撈出來 然後把今天的日期減1天 就是昨天的收盤了 後來才想到如果是星期一的話 那收盤日就會變成星期日了 所以就寫了以下的語法修改 SELECT distinct Symbol,(CASE WHEN DATENAME(weekday, Date)='星期一' THEN DATEADD(day, -3, Date) WHEN DATENAME(weekday, Date) '星期一' THEN DATEADD(day, -1, Date) ELSE Date END) Date, PriorPrice AS ClosePrice FROM Stock order by Symbol,Date 如果直接update的話 範例如下 Update StockClosePrice SET Date = CASE WHEN DATENAME(weekday, Date)='星期日' THEN DATEADD(day, -2, Date) ELSE Date END

Split Strings in String Array (Java)

圖片
Search over through google about this topic but not too much result. Therefore, I would like to share my method. However, should many persons can resolve this better than me. import java.util.ArrayList; public class stringTest { public static void main (String[] args) { //假設有一個String array如下 String [] s={"1001:台泥","1002:台積電","1003:宏電","1004:蘋果"}; //宣告一個String array以承接.split將字串分開後回傳的array String [] a; //宣告一個ArrayList,因ArrayList可使用.add將值加入array ArrayList list= new ArrayList(); //宣告一個迴圈,將String array的值一個一個取出,並分開 for (int j=0; j<s.length;j++){ //使用.split將字串分隔,並以另一個String array承接 a=s[j].split(":"); //因只需要股票代號,故只取array[0],並一個一個加入ArrayList list.add(a[0]); } //印出結果 System.out.println(list); } }

Jsp+R Server

圖片
rServer據開發者說是rJava的theard safe版本 我用jsp呼叫rJava的時候 只要重新整理或是怎麼的 Tomcat就會整個傻住然後shoutdown 必需要自己手動開啟 因為r一次只能有一個執行緒存在 而java是可以多個執行緒的 所以只要r的執行緒還在跑 就不能再新增一個 而rJava的執行緒不知道怎麼回事 就是關也關不掉 換用rServer之後 當然是Tomcat是沒有再死機了 但根據開發者說的( 在這裡 ) Although Rserve works on Windows it is not recommended to use it on that platform. Windows lacks important features that make the separation of namespaces possible, therefore Rserve for Windows works in cooperative mode only, that is only one connection 意思就是說 雖然你用了rServe 但是在windows上面還是一次只能有一個連線哦 靠北啊 那不就等於是單機版 那我寫jsp幹嘛!! 一次只有一個使用者能連進來不是超落漆嗎 唉 算了啦 頭都洗一半了 老師說就先繼續做 之後再看要不要弄一台Linux試試看 在這裡我就先分享如何使用rServe的心得 也算是公德一件 首先要在R裡安裝rServe install.packages("Rserve") 安裝好之了後就在R裡面啟動它 library(Rserve) Rserve() 看到Starting Rserve就表示Rserve已經在幕後啟動 然後打開Java的IDE 或筆記本 任何你習慣寫java code的介面 package rServe; import org.rosuda.REngine.Rserve.*; public class test { public static void main (String[] args) { // new R connection try{ ...

從windows到uduntu的新體驗之打個大易那麼難嗎

圖片
這幾天忽然心血來潮 想用用Linux系統 原因是這陣子接觸很多開放源碼的軟體 覺得開放源碼的軟體再也不是以前想像的又醜又難用(可能是被微軟洗腦洗的太徹底) 甚至有很多人在這一塊耕耘努力 做出來的東西比封閉源碼的東西還好 像是我的手機Andriod 還有統計軟體R等 都做的很好呀 於是查一查網路上Linux的版本 發現現在安裝圖形介面的版本安裝過程也超簡單的 然後就走進了更宅的Linux世界 但是走進來的第一步就踢到鐵板 流程如下: ubuntu內建的ibus沒有大易輸入法 上網查發現要另外裝另外的輸入軟體gcin 灌好gcin發現這個軟體有大概十幾種輸入法 雖然有大易這個選項但是不能用 上網查發現新版的gcin不知道為何獨獨漏了大易的.gtab檔(快崩潰) 上網查發現舊版的gcin有 抓回來裝但是裝不了 一直出現error 終於放棄gcin 上網查有人說另外一套sicm有 裝了scim 真的有 也可以用 雖然是三碼 用了之後發現不如不要用電腦  改用飛鴿傳書還比較快 因為scim打大易反應實在太慢 打完一行都是錯字 大概花了十分鐘(快自殺了) 放棄 scim 開始查要怎麼把gcin修好 發現有一個人好心人做好了大易的gcin專用檔.gtab 只要把這個檔案放到gcin的資料夾下面就可以了 http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?topic_id=52130&forum=8&post_id=241564#forumpost241564 解壓縮發現怎麼是.cin檔 沒關係 有人說只要在linux下指令就可以把cin檔轉成.gtab 下了指令但是一直有問題 查了之後發現這個cin檔的格式有錯誤 這個時候我已經不想自殺了 我想殺人 就在我快要殺人的時候 發現一篇PO文 裡面放的是好心人當初有一起提供的 dayi.gtab 檔 於是心喜若狂 趕快下載來放到~/gcin/table裡面 但是放不進去 說我沒權限 天哪 Linux的權限設定怎麼會這麼龜毛 又上網查 用這個指令gksudo nautilus可以用root權限做檔案管理 然後順利把 dayi.gtab 檔案搬進~/gcin/table 但是gcin還是沒反應 有人說還要再改...

T-SQL轉換Time格式只到"分"

SQL裡的Time資料型態預設為hh:mm:ss,也就是最少要顯示到秒 可是我只需要取到分呀 本來傻傻的這樣寫 SELECT SUBSTRING([系統時間], 1, 5) 結果馬上報錯了 SUBSTRING不可以用在時間的資料型態上 後來又查了一下 忽然有一個靈感 於是這樣 SELECT CONVERT(char(5), [系統時間], 108) as newTime 成了!

碎碎念

台灣實做Java與R結合的人好像不多 每次有問題上google查詢都只找到國外的討論 希望能有更多的人做這方面的研究 但也可能因為R的界面不是那麼親民(必竟是免費) 都是要下指令的 但R可以做的運算不比spss,SAS,Modeler差啊 而且又有很多好心人寫好的package 這樣子工程師就不用那麼辛苦了不是嗎 例如我那天看到一篇論文 是一個工工所的人用java硬寫出類神經網路來預測個股的買賣點 天哪 我想都不敢想 如果我用java寫那不就寫到我曾孫都取媳婦了 如果他知道可以用java call R,然後再把R類神經網路package load進來,資料丟進去,R就算好了 這樣大概一天就寫完了吧 不知道那個人拚了多久 希望他永遠不知道有這個方法 不然他應該會去撞牆或咬舌自盡