Featured image of post 合計・最大値・重複削除・グループ分けを、ループを書かずに1行で【List::Util / List::MoreUtils】

合計・最大値・重複削除・グループ分けを、ループを書かずに1行で【List::Util / List::MoreUtils】

標準の List::Util から sum・max・reduce・first・any・uniq・pairs を、List::MoreUtils から zip・part・firstidx・minmax などを紹介します。集計、ログ解析、ショッピングカート、ユーザーデータの絞り込みといった実用パターンと性能の考え方付き。

Featured image of post Perl WebSocket入門:Mojoliciousで作る3つの実践アプリ

Perl WebSocket入門:Mojoliciousで作る3つの実践アプリ

PerlのMojoliciousでWebSocketを実装する完全ガイド。エコーサーバー、リアルタイムチャット、ダッシュボードを3ステップで構築。初心者でも数行のコードから始められる実践チュートリアル。

Featured image of post eval の例外処理には落とし穴がある。$@ の上書きを避けて書く【Try::Tiny】

eval の例外処理には落とし穴がある。$@ の上書きを避けて書く【Try::Tiny】

eval と $@ による例外処理の問題点を確認し、Try::Tiny の try・catch・finally に置き換えます。特定のエラーだけを捕まえる方法、再送出、リトライ、DB トランザクションや Web API 呼び出しでの使い方、eval との使い分けを解説します。

Featured image of post SQL インジェクションを防ぐプレースホルダとトランザクションから、ORM まで【DBI / DBIx::Class】

SQL インジェクションを防ぐプレースホルダとトランザクションから、ORM まで【DBI / DBIx::Class】

DBI での接続、プレースホルダによる SQL インジェクション対策、INSERT・SELECT・UPDATE・DELETE とトランザクションを押さえたあと、DBIx::Class のスキーマ定義・リレーション・ページネーションに進みます。両者の使い分けも整理します。

Featured image of post テストが書けるようになった後に困ること。壊れやすいテストとアンチパターンの避け方【MooによるTDD講座 #5】

テストが書けるようになった後に困ること。壊れやすいテストとアンチパターンの避け方【MooによるTDD講座 #5】

時刻や外部依存でテストしにくい、実装を変えるたびにテストが壊れる、といったつまずきと対処を扱います。テストしやすい設計、モックとスタブの使いどころ、TDD のアンチパターンを整理する最終回です。

連載 MooによるTDD講座 (第5話 / 全5話)
Featured image of post 日時処理が重いなら DateTime から替える。C 実装の速い日時ライブラリ【Time::Moment】

日時処理が重いなら DateTime から替える。C 実装の速い日時ライブラリ【Time::Moment】

C で実装された Time::Moment の作り方・加減算・フォーマット・タイムゾーン処理を DateTime と比べながら解説します。ログの集計、営業日計算、期間の比較、タイムゾーンをまたぐ会議時刻の調整といった実用例付き。

Featured image of post bless で書くクラスの決まり文句をやめる。属性・ロール・型制約を宣言で書く【Moo/Moose】

bless で書くクラスの決まり文句をやめる。属性・ロール・型制約を宣言で書く【Moo/Moose】

bless による伝統的なオブジェクト指向の問題点から始めて、Moo の has・extends・with、Types::Standard の型制約、before・after・around のメソッド修飾子を解説します。Moo と Moose の使い分け、ユーザー管理システムの実装例、ベストプラクティス付き。

Featured image of post 自分の環境では動くのに、ほかの人の環境では動かない。依存モジュールをそろえる【Carton/cpanfile】

自分の環境では動くのに、ほかの人の環境では動かない。依存モジュールをそろえる【Carton/cpanfile】

cpanfile で依存モジュールとバージョンを宣言し、Carton でプロジェクトごとに分けてインストールします。cpanfile.snapshot で全員の環境を同じにする方法、チームでの追加と取り込みの手順、.gitignore、GitHub Actions での利用まで解説します。

Featured image of post Perl の Web フレームワークがどれも同じサーバーで動く理由。共通の仕組みを知る【Plack/PSGI】

Perl の Web フレームワークがどれも同じサーバーで動く理由。共通の仕組みを知る【Plack/PSGI】

PSGI はアプリとサーバーの間の取り決めで、Plack はその実装です。最小の PSGI アプリ、$env の中身、静的ファイル配信・Basic 認証・セッションのミドルウェアの重ね方、Starlet・Starman での本番運用と Mojolicious との関係まで解説します。