Showing posts with label perl. Show all posts
Showing posts with label perl. Show all posts
By Unknown | Friday, March 15, 2013
Posted in: , | 0 comments

Mojolicious: Render picture in non-public folder

今天在製作專案時想到可能會需要這種作法,上網找了一下,發現有人有問過相同的問題,就順便記錄下來了。在設定完header後,要用rendered而不是render_static。

Loading from Gist ....

Read more
By Unknown | Tuesday, February 05, 2013
Posted in: , | 0 comments

Parse html entities into perl string

原文在此

昨天遇到一個頁面,他把部分內容用javascript顯示,大概是這樣
addy7788 = addy7788 + 'ucxray' + '.' + 'berkeley' + '.' + 'edu';
很明顯的除了特殊符號之外,一般文字也在裏頭,但是HTML::Entities只能處理掉特殊符號,必須要再用Text::Unidecode把文字轉出來(你要把它手動轉成\x{101}這樣也是可以拉,不過有寫好的套件不用白不用),用法大概就是這樣:
unidecode(decode_entities($str));
 搞定

Read more
By Unknown | Sunday, February 03, 2013
Posted in: | 0 comments

Perl中文字比對

剛剛有一段code,把Excel讀出來之後要確認裡面的內容。但判斷的內容是中文,使的條件無法通過
if ($str eq "二抗"){
...
}
這一段一直出問題,後來就用了治標不治本方法。用原本的code比對...
echo '二抗' | hexdump -C 
然後條件寫成
if ($str eq "\xe4\xba\x8c\xe6\x8a\x97"){
...
}
還是我把它decode在比對好了,不然每次看到這段碼都不知道他是啥...

來源

Read more
By Unknown | Monday, January 28, 2013
Posted in: , | 0 comments

Neo4p一些使用筆記

今天下午跟Neo4j還有REST::Neo4p奮戰了一陣子,該是作些筆記。
假設我要增加一個Node,只要以下指令就可以了,其中的name是Node的property。
my $n1 = REST::Neo4p::Node->new( {name => $val} );
 接著我要對這一個Node增加Relationship的用法是
$n1->relate_to($to_node,'RELTYPE');
$to_node表示對象node,第二個變數是Relationship的類別,第三個變數如果你要同時設定property的話再寫入就可以了。接下來是一個查詢:

my $query = REST::Neo4p::Query->new("START n=node(156) MATCH (n)-[r]-(x) RETURN n,r,x");
$query->execute();
while(my $row = $query->fetch){
    print $row->[0]->id."\n";
    print $row->[1]->type."\n";
    print $row->[2]->id."\n";
}

上面的例子使用了Cypher語法作為查詢,查詢與ID為156相連的Node及Relationship;$row->[0]及$row->[2]是REST::Neo4p::Node物件,$row->[1]是REST::Neo4p::Relationship物件。如果想要更進一步的到Node的property可以使用$row->[0]->get_property('Property_name')來取得。

基本上依照上面列出的功能,就可以簡單的建構出匯入Pathway資料的程式,不過這部份可能得等到下禮拜才能完成。另外我也在網路上找到一些文章,也是關於這部份的教學而且看起來目的和我差不多,等到明天再參考看看。希望可以藉由Graph DB的特性充分利用在我們Pathway資料建制,並增加可用性及方便度,部份根據我這兩天研究的結果應該是會有滿大的幫助就看之後我有多少時間把這些東西弄起來了。

一些連結
Cypher Query Language:寫的還算滿好懂的,如果啥都不知道就從這邊來吧。
REST::Neo4p:大致上都還ok,但是Node的那部份get_properties這個傳回來的東西跟他上面寫的不一樣勒。

Read more
By Unknown | Friday, January 18, 2013
Posted in: , , | 0 comments

DBIx::Class UTF8

剛剛用DBIx::Class上傳Excel的內容後發現,中文居然都變亂碼了,上網搜尋一下,原來只要在連線時設定utf8就可以了


$schema = LIB::Table->connect($dsn,$user,$pass,
    {
        mysql_enable_utf8 => 1
    }
);

Read more
By Unknown | Sunday, January 13, 2013
Posted in: , | 0 comments

TheSchwartz

為了想要建構一個Job Queue的系統,從好幾個月前就一直在看及思考怎樣的方案會比較好,後來因為手邊的程式大都數都以perl撰寫,所以就決定在perl的套件當中尋找。本來是想要利用proc-fork這類的套件去做實現,但是後來發現雖然這樣的套件很多,但是在工作submit出去之後,仍然沒有一個管理的機制去對排程的工作去做管理,而且怎樣去管理這些worker也是一個問題。

後來東看看西瞧瞧找到了這東西,這一兩個禮拜大概試出了一點東西,所以稍微紀錄。

安裝&基本跑法

大概的過程我全都寫在我的github上面,其實還滿簡單的

排程器

這邊我目前想到這樣做,先把要執行的工作包成一個worker,大概內容差不多如下
Loading ....
然後主要的程式如下
Loading ....
接著如果是要在command line下操作,只要利用list_jobs這類的function就可以把目前正在執行的工作顯示出來,稍微可以達到我想要的工作監控的情形。接著在web端,我利用mojo寫一個簡單的程式去顯示目前正在跑的工作,大概類似下面

 15 get '/job' => sub {
 16     my $self = shift;
 17
 18     my $client = TheSchwartz->new( databases =>
 19         [{
 20             dsn => $db_set->[0]{dsn},
 21             user => $db_set->[0]{user},
 22             pass => $db_set->[0]{pass}
 23         }]
 24     );
 25
 26     my @all = $client->list_jobs(
 27         { funcname => ['Process2','Process1']}
 28     );
 29
 30     $self->render('job', 'job' => \@all);
 31 };
 .
 .
 55 __DATA__
 56 @@ job.html.ep
 57 <!DOCTYPE html>
 58 <html>
 59     <body>
 60         <h1>THis is Hello</h1>
 61         The magic numbers are <%= $job %>
 62         <ul>
 63         % foreach my $j (@$job) {
 64             <li><%= $j->jobid %></li>
 65         % }
 66         </ul>
 67     </body>
 68 </html>
其實還有像是gearman這樣很多人在用的工作排程器,只可惜他工作丟出去了我不曉得要怎樣管理執行狀況(或許是我沒看到也說不定),不然他在各種語言上都有實作,也是個很不錯的選擇。有看到另外一種用法是用gearman丟工作到TheSchwartz,不過我現在還不明白為何要這樣做的原因。

接著就是要寫網頁的控制端,先筆記一下mojo::template及wiki,之後可能還會花些時間k他的表示法。

Read more
By Unknown | Thursday, October 11, 2012
Posted in: , | 0 comments

Thinking About Job

最近小小的研究了一下Mojo跟Plack,根據Mojo的說明把大概需要的功能都把他摸出來,然後再用Plack啟動mojo的application,感覺相當的清爽。完完全全就像是把網頁當成是一個應用程式來撰寫,不過用的是Perl罷了,我想這類的應用伴隨未來PaaS的發達需求應該會越來越高。

可以寫網頁程式的選擇多了,可以把許多不同性質的工作分配在不同的語言平台上,預計會有這些項目:

  1. BioInfo Site:這部分的規畫還是以PHP為主,Framework的部分還是CI,但是邏輯程可能需要大改寫(一天到晚都在改寫.....)。
  2. 生物資訊程式:上禮拜把架構訂下來之後,預計之後的程式都要按照新的架構翻修,包含測試的程式也需要加入。最後這些程式會變成系統的底層,並依照使用的需求去做更新,也可以支援網頁查詢的部分。總之我要讓他完完全全的自動化,只是目前控制介面跟控制方法缺很大(沒時間想要怎麼實現比較好)。
  3. Job控制介面:目前看來有可能會用Plack做服務器,然後中介層用Mojo寫,這是為了要可以方便直接使用底層的Perl工具,以後要維護起來也比較方便。
上禮拜天在GitHub寫了Plack的筆記,寫超久的不過感覺很讚,因為完全是用我自己寫的筆記程式做紀錄,還滿有成就感的。其實,只是看到人家用Ruby寫jekyll跟octipress之後,覺得這樣用很方便,但是我的目的是想要直接用程式生成完完全全的靜態頁面,可以放在任何電腦上面看。只是如果要做新增文章之類的動作,就一定需要用到Perl才行,或許之後可以想到什麼更棒的方法去實現,在這之前我還是乖乖地用Perl吧。

打這麼多,其實本來只是想把Speaker Deck的投影片直接放進來,看來應該是不行了,只好先放連結,都是Plack相關的:




                                                                                               

Read more
By Unknown | Thursday, October 04, 2012
Posted in: | 0 comments

AnyEvent投影片

從gugod大的網頁看來的,投影片連結,如果有時間的話再來玩玩

Read more
By Unknown | Thursday, June 28, 2012
Posted in: | 0 comments

Perlbal

Read more
By Unknown | Friday, June 15, 2012
Posted in: | 0 comments

Some Slide about Plack

Perl Plack,目前還滿感興趣的一個專案,希望之後有時間可以慢慢研究該怎樣利用這個東西。
還有另一個,Plack的作者寫的

Read more