2016年4月8日 星期五

對mysql的欄位進行split的方法

先宣告原文出處:http://blog.fedecarg.com/2009/02/22/mysql-split-string-function/
我在網路上找到一篇,先建立一個function,然後就可以使用該function達到目的了!
再搭配CONVERT使用就可以把分離出來的字串轉成數字避免排序不如預期的情況了~
例如:CONVERT(SPLIT_STR(week,'-',1),UNSIGNED INTEGER)
以下是function的寫法以及用法
Function
CREATE FUNCTION SPLIT_STR(
  x VARCHAR(255),
  delim VARCHAR(12),
  pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
       LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
       delim, '');
Usage
SELECT SPLIT_STR(string, delimiter, position)
Example
SELECT SPLIT_STR('a|bb|ccc|dd', '|', 3) as third;

+-------+
| third |
+-------+
| ccc   |
+-------+
最後順帶一提,在mysql中建立的function會跑到哪邊呢?
會在database: mysql     table: proc裡面!


2015年11月15日 星期日

使用jQuery支援所有瀏覽器播放音效

首先要準備音效檔,因為要支援幾乎所有的瀏覽器,所以我們要準備三種格式的音效檔:
music.ogg
music.mp3
music.wav

然後將支援三種音效格式的audio元件注入:
$(function()
{
    $('<audio id="myAudio"><source src="music.ogg" type="audio/ogg"><source src="music.mp3" type="audio/mpeg"><source src="music.wav" type="audio/wav"></audio>').appendTo('body');
});

在要播放的時候執行以下呼叫:
$('#myAudio')[0].play();  //myAudio為注入audio元件時設定的id

使用jQuery遍歷指定Class的DOM

如果我們有一堆表格的內容需要依照規則去處理,我們可以將這些<td>的class設為相同的,然後使用以下當方式遍歷所有的<td>,然後針對每個被讀到的<td>來進行處理,非常好用呢!

$('.classname').filter(
    function()
    {
 //使用 $(this) 可以存取到可以存取到當下讀到的jQuery DOM !
   });


2015年8月17日 星期一

各種社群分享按鈕的製作

<!--Facebook分享按鈕(純HTML語法)-->
<a target="_blank" href="http://www.facebook.com/share.php?u=<要分享的網址>">
<img title="分享到臉書!" src="https://upload.wikimedia.org/wikipedia/commons/1/13/Facebook_like_thumb.png" border="0" width="20" /></a>

<!--Google+分享按鈕(純HTML語法)-->
<a target="_blank" href="https://plus.google.com/share?url=<要分享的網址>">
<img title="分享到Google+!" src="https://www.gstatic.com/images/icons/gplus-32.png" border="0" width="20" /></a>

<!--Twitter分享按鈕(純HTML語法)-->
<a target="_blank" href="http://twitter.com/home/?status=<要分享的標題> <要分享的網址>">
<img title="分享到維特!" src="https://upload.wikimedia.org/wikipedia/commons/thumb/7/74/Twitter_Logo_Mini.svg/2000px-Twitter_Logo_Mini.svg.png" border="0" width="20" /></a>

<!--Plurk分享按鈕(純HTML語法)-->
<a target="_blank" href="http://plurk.com/?qualifier=shares&status=[分享] <要分享的網址> (<要分享的標題>)">
<img title="分享到噗浪!" src="https://upload.wikimedia.org/wikipedia/commons/thumb/3/3d/Plurk.svg/1024px-Plurk.svg.png" border="0" width="20" /></a>

<!--微博分享按鈕(純HTML語法)-->
<a target="_blank" href="http://v.t.sina.com.cn/share/share.php?title=<要分享的標題>&url=<要分享的網址>">
<img title="分享到微博!" src="http://www.i-marketing.com.tw/fbliker/wp-content/uploads/2015/07/weibo.png" border="0" width="20" /></a>

2015年7月21日 星期二

php壓縮檔案

$zip = new ZipArchive();
if($zip->open([存放壓縮檔的完整徑名],ZIPARCHIVE::CREATE) !== true)
{
return false;
}
$zip->addFile([要壓縮的檔案的完整徑名],[在壓縮檔中的檔名]);
header("location:".[存放壓縮檔的完整徑名]);//直接輸出壓縮檔供下載

PHP匯出CSV的方式

導向的頁面中用下面的方式就會自動輸出下載

header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: filename=export1.csv;");
//輸出CSV的內容
die();//如果程式後面仍有輸出可以使用




2015年6月21日 星期日

R語言抓取股票價格並計算相關性

這幾天玩R語言,然後我做了以下的測試:
(1)2014年宏達電(t2498)與大立光(t3008)的股價關係
(2)2014年蘋果(taapl)與大立光(t3008)的股價關係
數據方面:
AAPL我是抓google提供的股價,所以已經有還原分割前的價格
大立光股價除以20以免價格與宏達電或蘋果相差太多
測試的結果如附圖:




結論:果然大立光與蘋果的股價高度正相關ㄚ~~

相關程式碼如下:

#!/usr/bin/Rscript
Sys.setenv("HADOOP_PREFIX"="/usr/local/hadoop")
Sys.setenv("HADOOP_CMD"="/usr/local/hadoop/bin/hadoop")
Sys.setenv("HADOOP_STREAMING"="/usr/local/hadoop/contrib/streaming/hadoop-streaming-1.1.2.jar")

library(quantmod)
library(rhdfs)

hdfs.init()
library(rmr2)

makeReport = function(input)
{
  report=as.data.frame(input, stringsAsFactors=F)
  colnames(report)=c('Month','Max Price')
  return(report)
}

getMaxDirect = function(symbol,year,from="google")
{
  stock = getSymbols(symbol,src=from,auto.assign=FALSE)
  monthes=1:12
  data = c()
  for(m in monthes)
  {
    data = c(data,max(stock[paste(year,"-",m,sep=""),4]))
  }
  result=keyval(monthes,data)
  return(result)
}

getMaxReduce = function(symbol,year,from="google")
{
  stock = getSymbols(symbol,src=from,auto.assign=FALSE)
  data=stock[year,4,1]
  monthes=1:12
  date=numeric(length(index(data)))
  for(m in monthes)
  {
    date[index(data)>=as.Date(paste(year,"-",m,"-1",sep=""))]=m
  }
  indata=to.dfs(keyval(date,as.double(data)))
  out=mapreduce(input=indata,reduce=function(k,v) keyval(k,max(v)))
  result=from.dfs(out)
  return(result)
}

getMaxMapReduce = function(symbol,year,from="google")
{
  stock = getSymbols(symbol,src=from,auto.assign=FALSE)
  data=stock[year,4,1]
  indata=to.dfs(keyval(as.double(index(data)),as.double(data)))
  mymap=function(k,v){
    monthes=1:12
    date=numeric(length(k))
    for(m in monthes)
    {
      date[k>=as.Date(paste(year,"-",m,"-1",sep=""))]=m
    }
    keyval(date,v)
  }
  out=mapreduce(input=indata,map=mymap,reduce=function(k,v)keyval(k,max(v)))
  result=from.dfs(out)
  return(result)
}

result=getMaxDirect("AAPL","2014","yahoo")
aapl2014 = makeReport(result)
aapl2013 = makeReport(getMaxReduce("AAPL","2013","yahoo"))
aapl2012 = makeReport(getMaxMapReduce("AAPL","2012","yahoo"))
aapl2012
aapl2013
aapl2014

t3008=getMaxDirect("3008.tw","2014","yahoo")
t2498=getMaxDirect("2498.tw","2014","yahoo")
x=c(t3008$key,t2498$key)
y=c(t3008$val/10,t2498$val)
plot(x,y)
abline(lm(y~x))
cor(x,y)