You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
結論から言うと、ひろせが望ましいと思う順にこうすればいいんじゃないの?ってのを列挙します。 my.cnfに[libmysqlclient]グループを追加しそこにdefault-character-set = utf8mb4と書き、DBD::mysqlでは mysql_read_default_file=/etc/my.cnf;mysql_read_default_group=libmysqlclient と指定する mysql_enable_utf8を使いたい場合はSET NAMES指定も必要 my.cnfの[client]グループにdefault-character-set = utf8mb4と書き、DBD::mysqlでは mysql_read_default_file=/etc/my.cnf と指定する。mysqlbinlogなど--default-character-setオプショ
[twitter:@fujiwara] さんのこれ、 新しいPerlに今まで使ってたモジュールをまとめてインストールする - 酒日記 はてな支店 ExtUtils::Installedで現在インストールされているモジュールからcpanfileを作る をベースにちょっと弄ってモジュールをリストアップするスクリプトを書いて使ってたんですが、core モジュールがリストアップされてなかったので、もろもろ対応したのを上げましたのでどうぞみなさまお使いくださいませ。 https://github.com/hirose31/list-installed-perl-modules 出力フォーマットは、バージョン固定な cpanfile と Perl のハッシュの2つです。 Carton使ってないけど、同じモジュール、同じバージョンのモジュールを一式、新環境にもりっとまるっと入れたい!とかってときに便利か
少し前ですがTest::mysqld 0.17からは copy_data_fromというオプションが加わっています。 これは、Test::mysqld起動時にコピー元のdataディレクトリを指定できるもので MySQLの起動時間を節約することができます。テスト開始時にDBに大量のデータを 入れておきたい場合に特に有効です。 特にゲームなどの場合は、大量のマスタデータもコードの一部と言えるので、ちゃんと 全部流し込んでからテストを実施したいという要件があるので重宝します。 さて、そのdataディレクトリをどうやって作ればよいかという話になるのですが、 それも、Test::mysqldに事前に作らせてどこかに配置しておけば良いでしょう。 手順としては例えば以下のようになります。 ‘tmp/test_mysqld_data’ をdatadirにしてTest::mysqldを起動 DDLとマスタデ
perl は system perl じゃなくて perlbrew で入れて、アプリで必要な CPAN モジュールは全てアプリのディレクトリ下の extlib というディレクトリにインストールする方式は個人的にはいい感じだよなぁと思いつつ、cron とか daemontools がいつもどうやるのが正解なのか分からず困ってた。 またセットアップする機会があったので色々考えた結果、こんな感じなら割とすっきりした感じになった。 env このファイルがキモで、アプリのディレクトリに移動しつつ、いい感じに perl とか PATH とか@INC を設定して、渡されたコマンドを実行してくれる。 # perl -v This is perl, v5.8.8 built for x86_64-linux-thread-multi # ./env perl -v This is perl 5, versi
https://github.com/tokuhirom/Harriet/https://metacpan.org/module/TOKUHIROM/Harriet-0.01/lib/Harriet.pmテストのときにつかう mysqld, memcached, stf, groonga あたりのデーモンを、.t 単位で起動していては遅くてかなわない。かといって、あらかじめ起動させておくというのも。。 というわけで prove のプラグインとしてよしなにする、みたいなのをがんばってかく、というような試みがおこなわれてきたわけですが、どうもめんどくさい。 なんか適当にやったらうまくうごく、っていうかんじのカジュアルなツールがほしいな、なんておもったりするわけですよ そこで、Harriet ってのをつくってみました。 なんかこう、t/harriet/mysqld.pl っていうファイル名でこん
春ですね! 新年度ですね! Perl 書くことになってしまいましたか! 奇遇ですね! sigil が意味わかりませんか! 特殊変数がググれませんか! リファレンスが謎ですか! 1; の存在が不明ですか! オブジェクト指向が難しいですか! むしろオブジェクトじゃないコードの方がゆるくて大変ですか! XS が読めませんか! ええ、XS は僕もあんまり読めません>< さて、この春から Perl を学ぶことになった人も多いかと思いますが、なにはなくともこれまず覚えたら後が楽になるんじゃないかというモジュールを、いくつか紹介したいと思います! (まあ、自分の初期を思い返すと、この辺はやく知っておきたかったなあというリストです) Data::Dumper, YAML 変数(リファレンス)やオブジェクト(blessされたリファレンス)をダンプする用途では、Data::Dumper が一番メジャーのような
注:本稿はまだ書きかけです!書きかけです!まだ一般に知らしめようとする前にブクマされました!w 間違いの指摘やコメント等は lestrrat @twitter にください! Perl環境の設定方法はここ数年で大きく進化し、変わってきました。ここではアプリケーションのデプロイも見据えた、モダンなperl環境の整え方を紹介していきます。具体的にはperl本体や外部モジュールのインストール方法を解説したのち、Perlを使ったアプリケーションを管理・運用していく際に依存関係等はアプリケーション毎に管理できるようにしてグローバル環境に可能な限り干渉しない方法を紹介します。 目次 1.1 Perl本体のインストール 1.2 依存モジュールの管理・インストール 1.3 Cartonによるアプリケーションの実行環境の構築 tl;dr 本稿を読む前にポイントだけ知りたい!という方向けのまとめです: OSに同
Perlの食えない事情 より おっと、そうです、Perlには演算子が多すぎるのでした。せっかくの機会なので、Perlの演算子を紹介します。 ビーナス演算子: 0+, +0 数値として評価してくれます。意外とよく見かけますね。 なぜこの演算子を使う必要があるのかというと、Perlは文字列と数値を明確に区別できないからです。scalarを文字列として解釈するならば文字列として、 print 0+ '10'; #=> 10 print 0+ '123b'; #=> 123 print '1.2e3' +0; #=> 1200 print [] +0; #=> 4303367864 ちなみに、文字列として評価するときにはこのようにするとかっこいいと言われています。 $obj.q(); 一見メソッド呼び出しのように見えますが $obj . ''; と等価です。 ベビーカー演算子: @{[ ]} 文字
このごろ作っているものが幾つかあるのだけど備忘録代わりにこの辺はこうしているということを書いて行こうかなと思います。 まずは Perl によるアプリケーションのデプロイについて。id:antipop と id:shiba_yu36 が開発した "Cinnamon" というミニマムなデプロイツールを利用しています。 Cinnamon - A minimalistic deploy tool https://github.com/kentaro/cinnamon シンプルで使いやすいデプロイツールです。 Capistrano? デプロイツールの定番といえば Capistrano で、最初は Capistrano を使っていました。けど、作っているものはほぼ Perl で書かれているのにデプロイツールだけ Capistrano で Ruby というのが、例えばモジュールの管理に Carton と
以前 Working with Unix Processesという本を読んだのですが、この本がUnixにおけるプロセスについて非常にわかりやすく解説されていました。それで自分で内容をメモしてみたり、さらにわからないところを調べたり、参考のプログラムをPerlで書いたり(この本ではRubyで書かれています)してみたのですが、ブログにまとめてなかったので、ちょっと書いてみます。 (注意)書いていたらすごく長くなりました。興味のある方は、適当に時間のあるときにでもどうぞ。 Chapter 2 : Introduction プロセスのことを知るとコードを読むだけでは分からないややこしい問題が分かるようになるよ Chapter 3 : Primer Unixはユーザ空間とカーネル空間がある kernelの機能はsystem call経由で利用する ユーザ空間ではプログラムが動く manual man
perlでデータベースを使う時に誰もが必ず使うDBI。その接続時に使うconnectメソッドの第4引数に設定しているオプションがサービスによりまちまちなんだけど、だれか鉄板設定を教えてください。 僕が使うのが、 my $dbh = DBI->connect($dsn, $user, $password, { AutoCommit => 1, PrintError => 0, RaiseError => 1, ShowErrorStatement => 1, AutoInactiveDestroy => 1, }); これ。 加えて、mysqlであれば mysql_enable_utf8 => 1 mysql_auto_reconnect => 0, SQLiteだと sqlite_unicode => 1 sqlite_use_immediate_transaction => 1 を追加し
Perlでコマンドラインオプションをparseしようと思うと組込みモジュールとしては Getopt::Std と Getopt::Long がある。が、long style option *1 つまり --option-name のようなオプションを解釈してくれるのは Getopt::Long だけだ。なので普通はこちらを使おう。 ただし 絶対にデフォルト、つまり以下のようにして使ってはいけない。 use Getopt::Long; my (@primary, @secondary, $silent); GetOptions( "server-primary|p=s" => \@primary, "server-secondary|s=s" => \@secondary, "silent|S" => \$silent ); これダメ! 絶対ダメ! 死ぬ! 最初に結論を書く 必ず以下のように
App::Rad というコマンドラインツールがあるのですが、 手軽にサブコマンド作れてだいぶウマーな感じなのに 日本語情報が全くないので紹介してみます。 基本系 まずは「rad.pl」に「bucho」というサブコマンドを作ってみたいと思います。 use App::Rad; App::Rad->run; sub bucho { return "Hello Bucho!"; } たったこれだけです。まずは実行してみましょう。 $ perl rad.pl Usage: rad.pl command [arguments] Available Commands: bucho help show syntax and available commandsいい感じにヘルプが出ました。 定義したサブルーチン「bucho」が勝手にサブコマンドとして認識されていますね。 buchoコマンドを実行してみましょ
ちょくちょく書いてた SQL::Format が大体できたので CPAN に上げました。 機能的にはざっくり以下のような感じ sprintf() の SQL 版みたいな sqlf() 関数を export new() してオブジェクトとしても使える select() / insert() / update() / delete() 完備 sqlf() と同じ format() もある SQL::Maker と SQL::Abstract の syntax をそれなりに実装 という感じで、オブジェクトとして使う場合は、SQL::Maker とか SQL::Abstract と遜色なく使えるかと。 ($stmt, @bind) = sqlf 'SELECT %c FROM %t WHERE %w %o' => ( '*', # %c 'foo', # %t { hoge => 'fuga' }
Hatena-Textbook はてな教科書は、はてなのエンジニアとして最低限必要とされる技術を身につけるための教科書です。 Web開発における重要なトピックを順番に学びながら、課題をといていくことで、Webアプリケーションをひととおり構築できるようになります。 実装言語としてPerlとScalaのどちらを選ぶことができます。 トピックごとに学びたい言語の方の教科書を読み進めてください。 目次 プログラミングの基礎 Perlによるプログラミングの基礎 Scalaによるプログラミングの基礎 データベースの基礎 Perlによるデータベースプログラミング Scalaによるデータベースプログラミング Web開発の基礎 PerlによるWebアプリケーション開発 ScalaによるWebアプリケーション開発 Webフロントエンド開発 はてな教科書JavaScript編 hatena/Hatena-Tex
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く