Perl

最近の技術的な勉強について

入社して恐しいことにもう5ヶ月(!!)経とうとしていますが、Web開発にも段々慣れてきたかなと思います。この5ヶ月で勉強したことや復習したこと、これから勉強が必要そうかなと思う技術について、忘れないうちに書きとめておこうと思います。 サーバーサイド …

大きなプロダクトを作っているチームに配属された間もない時期に、どうやったら早くコードを読み書きできるようになるか?

前提: 配属の前は一人でスクラッチから書くことがほとんど。チームでコードを書くという経験はあまりない はてなのシステムはコードが大変大きくなっているため、チーム配属後、コードの読み書きをいかに正確に早くできるかが自分の直近の課題だと思っていま…

YAML::XSのインストールに手間どった

使用する予定のスクリプトがPerlのYAML::XSに依存しており、cpanmでインストールしようとしたが、以下のエラーでこける。 cpanm (App::cpanminus) 1.7039 on perl 5.018002 built for darwin-thread-multi-2level Work directory is /Users/yasuhisa/.cpanm/…

perlbrewのインストール

最近のPerl事情がよく分からないので、ちまちまと調べながら環境を入れる。 昔はシステムにcpanでガンガンライブラリを入れていたが、最近はユーザー領域に入れるのがいいようなので、そのやり方で。使われているツールとしてはperlbrewとplenvがあったが、…

dispatherについてのメモ

某所のほげほげでCGI的何かを作るお仕事をやろうと思って、HTTP::Engineを久しぶりに見てみたり。dispathはやってくれないようなので、その辺について調べる。ディスパッチャの比較 - モダンなPerl入門で紹介されていたPath::Dispatcherが使いやすそうなので…

ある年代のディレクトリにおいてあるファイル数を調べる

こんなディレクトリ構成になっていて /Users/syou6162/dbcls/pne% ls 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 1885-1995のディレクトリ配下にあるファイルの数と1996-2006以下にあ…

アルファベット、数字、記号のみからなるような行を捨てる

Perlワンライナー。 perl -nle 'print unless $_ =~ m/^[!-~\s]+$/' result.txt ついでに半角カタカナさんも死んで欲しいとき。 perl -nle 'print $_ if $_ !~ /^(?:\xEF\xBD[\xA1-\xBF]|\xEF\xBE[\x80-\x9F])+$/' umls.txt 参考 http://code.nanigac.com/so…

Trieとかtcとか系列タギングとか

タブ区切りデータの三列目を取り出す「-F」の使い方、すぐ忘れる。。。 perl -F"\t" -anle 'print $F[2]' umls2ja.tab Trieを構築するためのライブラリTx http://www-tsujii.is.s.u-tokyo.ac.jp/~hillbig/tx-j.htm dartsのほうは日本語だとうまく動かない…?T…

色々メモ

コマンドラインオプションを活用 perldoc を使いこなす コマンドラインスイッチと特殊変数を使いまくる perldoc -l Web::Scraper perldoc -m Web::Scraper emacsclient `perldoc -l Web::Scraper` perldoc -f -X perldoc perlrun 関数のラッピング 型グロブ …

Path::Classが便利そうだったのでメモ

use strict; use warnings; use Path::Class; use Perl6::Say; dir("/Users/syou6162/hoge")->recurse( callback => sub { my $path = shift; say $path; } ); おおお。

MVCによるウェブアプリケーション開発(Ridgeを使った開発)

今日はRideによるMVCによるアプリケーション開発でした。昨日Modelの部分は作っていたので、それを使ってコントローラー周りを中心に実装しました。予習をしていたときに「MVCのCとMがよく分からん!!」と書いていたんですが、id:nanolia先生の講義のおかげで…

はてダラがhttpsなページでうまく動かない

インターンのことが大体はてなグループに載っているような感じなので、はてなグループを書くことになる。それを編集すると言えばはてダラだが、httpsなページだとはてダラがうまく動かない。https://hoge.g.hatena.ne.jpのようなページだと。インターンで使…

今日のPerl

無名関数っぽいものとか。 /Users/syou6162/config/.emacs.d/elisp% perl -MPerl6::Say -e 'map {say $_->("hoge")} @{[sub {shift}, sub {my $s = shift; $s x 10}]}' hoge hogehogehogehogehogehogehogehogehogehoge Devel::REPLが便利 perlshとかでなんと…

はてなグループのキーワード機能の劣化版を実装してみた

この前書いてみたのは、Template Toolkitの練習ということでDBを見ることしかできないやつでした。というわけでinsert、update、deleteとかもできるような機能があるものを作ろうと思った。世の中にははてなダイアリーをローカルのテキストファイルからアッ…

Perlとテスト

テストというものをほとんど知らなくてやばいので、勉強します。モダンPerl入門 (CodeZine BOOKS)によるとCPANの形式で開発を進めていくとテストを走らせるための基本機能も組み込まれているということなので、CPAN形式にまとめます*1。こんな感じ。 /Users/…

DBIモジュールを使ってデータベースを叩いて、Template Toolkitで整形する簡単なお仕事をやってみた

昔はtomcatとかを使ってjsp&サーブレットで遊んでいたりしたんですけど、最近はWeb関連のところはほとんどやってませんでした。。。ということでこのままではインターン破滅なので、簡単な例をとりあえずやってみることに。テーブルの作成とかはこの付近を参…

深さ優先探索をPerlで

深さ優先探索自体はどうでもいいんだけど(ぉ、Perlのデリィファレンス付近を復習しないと破滅なので深さ優先探索を題材に書いてみる。Rubyでも昔書いてた。 package Graph; use strict; use warnings; use Perl6::Say; use Data::Dumper; use base qw(Class:…

設定でやったこと

Perlな会社に行くので、設定を整えるというありがちなところから。 perltidy IT Office Nishimiyahara インデントとかを整理してくれるもの。 sudo perl -MCPAN -e shell として、 install YAML install Perl::Tidy をやった。その後に.emacsに以下を追記。M…

クイックソート

数学的基礎とデータ構造 (アルゴリズムイントロダクション)のp140付近。 クイックソートも分割統治のアルゴリズム A[q]で配列を2つの部分配列に分解、A[q]より大きいか小さいかで分解する 部分配列の中でもクイックソートする 全ての部分配列の中でソートさ…

優先度付きキュー

数学的基礎とデータ構造 (アルゴリズムイントロダクション)のp131付近。エラー処理をさぼっている。。。 ヒープソートは優れたアルゴリズムだけど、ソートのアルゴリズムとしてはクイックソートのほうが実際上より優れている なんだって!! でも、ヒープのデ…

ヒープソート

数学的基礎とデータ構造 (アルゴリズムイントロダクション)のp129付近。これまで作ってきた ヒープ条件の維持 ヒープの構築 を元にヒープソートを行こなう。ヒープの根を取り除いて(根は必ず一番大きくなっている性質を利用)、ヒープを再構成というのを繰り…

ヒープの構築

数学的基礎とデータ構造 (アルゴリズムイントロダクション)のp126付近。 use strict; use warnings; sub parent { my $i = shift; return int($i/2); } sub left { my $i = shift; return 2 * $i; } sub right { my $i = shift; return 2 * $i + 1; } sub he…

ヒープ条件の維持

数学的基礎とデータ構造 (アルゴリズムイントロダクション)のp124付近。 use strict; use warnings; sub parent { my $i = shift; return int($i/2); } sub left { my $i = shift; return 2 * $i; } sub right { my $i = shift; return 2 * $i + 1; } sub he…

Ruby&Perlでマージソート

数学的基礎とデータ構造 (アルゴリズムイントロダクション)のp28付近にあるマージソートをRubyでそのまま書きくだす簡単なお仕事。2行で書けるとかそんなの知るか。 require 'pp' def merge_sort(a, p = 1, r = a.length) def merge(a, p, q, r) n1 = q - p …

Shibuya.pmに参加するよ

Shibuya Perl Mongers : Shibuya Perl Mongersテクニカルトーク#11 id:wakutekaと一緒に行く予定。

ファイルの先頭に空白を入れる

自己メモ。pukiwikiにプログラム結果を張ろうとしたら、はてなのpre記法っぽいのもがなくて、空白を入れるとかだった。行数が長いので手で入れたくはない。というわけでワンライナー。 /Users/yasuhisa% perl -pe 's/^(.*)/ $1/' test.txt 似たようなやつ。 …

EmacsからPerlのデバッグしようとしたら、モジュールの関係で怒られたので、設定を変更した

Perlでデバッグをやろうとしていたら、cpanでつっこんだモジュールを探せないと怒られた。terminalとかでやるとちゃんと動くのに、Emacs上でデバッグすると言われる。悩んでたら、@elimさんに教えてもらった。 https://twitter.com/elim/statuses/955405133 …

一連のほげほげをいっぺんにダウンロードしてくるためのワンライナー

とあるサイトのpdfが連番になっていて、それをダウンロードしたいが、手だと面倒。そんなときのワンライナー。上のxargsはそのために調べた。 perl -e 'map{printf ("http://example.com/%02d.pdf\n",$_)} 1..20;' | xargs -P0 wget パイプの前までを出力す…

RでPerlのmapを実装するのにてこづる

いや、それだけ。まだ、できてない。この辺を実装しようとしている。ベクトルとかを投げると、べき集合っぽいものを返すような関数を再起を用いて書きたいのだが、なかなかうまくいかない。

データマンジング

Unixのパイプを使って柔軟性を持たせるperlのプログラムの中ではを使って、起動時に perl test.pl < test.txt とかってやるとよい。 ダイヤモンド演算子 perl test.pl < test.txt と、ダイヤモンド演算子を使ったりしたときの perl test.pl test.txt は等価…