sironekotoroの日記

Perl で楽をしたい

Perl から MySQL 8.x に接続した時の警告を消す

PlanetScale というサーバレスDBを使ってみました。 以下のQiita見てサインアップしました。 多少画面遷移は変わっていますが、なんとかなるレベルです。スクショ貼ってくれるのは本当にありがたい・・・ あ、無料プランで登録したのですがクレカの登録は必…

YAPC::Kyoto 2023 に参加してきました

yapcjapan.org 3年ぶりにリアル開催のカンファレンスに参加してきました。 3年、長いですね。 この間、Perl入学式 in 東京 のスタッフとして、id:xtetsuji や godan さんと講義をオンライン配信したり、小規模な対面形式の講義を行ってきました。 お二方は今…

年末年始に母のスマホ移行に付き合う

母のスマホ購入 元々、母からスマホを利用したいということを聞いていました。 職場(保育園の看護師)や民生委員の活動、友達との集いで LINE の利用が多いとのこと。 LINE を使うためにスマホに変えたいということでした。 母は iPad を利用してニュースや…

2022年もお疲れ様でした

2022年を振り返って お仕事が忙しかったりなんなりで、2ヶ月も空いてしまいました。 Perl入学式 in 東京の講師と、テキストの改修を担当しておりました。 今年は春、秋と開催し、オフラインでの講義に切り替えました。 やはり近くに講義を受けている方がいて…

「良いコード/悪いコードで学ぶ設計入門」第13章 モデリング 〜 第14章 リファクタリング

13章もパラパラっとページをめくってみた感じ、文章がメインぽいですね。 13.1 邪悪な構造に陥りがちな User クラス 面白い。いかにもありそうな気がする。 User というログインユーザーを示すクラスを作る そこにIDや名前などのプロパティを追加していく Us…

「良いコード/悪いコードで学ぶ設計入門」第11章 コメント 〜 12章 メソッド

久々に 経理の仕事において、四半期決算ってのは本当に大変なお仕事で、ほぼ1ヶ月持っていかれます。 翌月はそのリカバリでボーッとしているという感じでした。 (これはどうにかして負荷を軽減したいところ・・・) その余波で「良いコード/悪いコードで学…

macOS Monterey で IO::Socket::SSL, Net::SSLeay のインストールに失敗する

何度目かの環境再構築中 色々あって、業務で利用している Macbook Pro 2017 をリカバリすることにしました。 ディスクユーティリティで SSD を一旦まっさらに。 そこに macOS Monterey をネットワーク経由でクリーンインストール。 ちょうど経理の月初作業も…

autossh を macOS 起動時に実行する

macOS 起動時に autossh を実行したい autossh という ssh のラッパーソフトがあり、sshが切れたら自動的に繋ぎ直してくれるという便利なやつです。 autossh は homebrew で入れられます。 これを ターミナル起動時 ではなく、macOS の起動時に自動実行させ…

「良いコード/悪いコードで学ぶ設計入門」第10章 #ミノ駆動本

第9章から文字比率が高くなり、そのまま書き出すと文章を書写するだけになってしまう・・・ということで、小見出し&ときどき感想って形式で。 目的駆動名前設計 名前から目的や意図が読み取れることを特徴とします。 10.1 悪魔を呼び寄せる名前 例として挙…

「良いコード/悪いコードで学ぶ設計入門」第9章 #ミノ駆動本

ここはコードがほとんどないというか、あっても見てすぐに動作が予測できるものばかりなので、さらっと。 9.1 デッドコード または到達不能コード。 本文では絶対に通らない else 文の例で表されている。 コードの可読性を損なうので、削除。 9.2 YAGNI原則 …

「良いコード/悪いコードで学ぶ設計入門」第8章 密結合 各種事例 #ミノ駆動本

リスト8.7 ,リスト8.8 物理攻撃クラス&武闘家の物理攻撃クラス Mouse での継承で override を使うの初めて。 というか、それ以前でもなかったかも。 親クラスの同名のメソッドを上書きして使いたい時に使うもの、程度の認識です。 今回は差をわかりやすくす…

「良いコード/悪いコードで学ぶ設計入門」第8章 密結合 単一責任の原則 #ミノ駆動本

ちょっと時間あいてしまいましたあが、のんびりやっていきます。 来月7月はお仕事が忙しくなる予定なので、やっぱり時間が空いてしまうのではないかなぁ、という感じです。 8章は6章なみに長くて盛り沢山だし・・・ しかし、現実逃避的に学習が進む可能性も…

「良いコード/悪いコードで学ぶ設計入門」第7章 #ミノ駆動本

リスト7.1 「牢屋の鍵」の所持を調べるコード まずは例示コードを愚直に。 #!/usr/bin/env perl use strict; use warnings; use feature qw/say/; use constant { false => !!0, true => !!1 }; my $has_prison_key = false; my @items = qw(steal_sword iro…

「良いコード/悪いコードで学ぶ設計入門」第1章〜第6章のまとめ #ミノ駆動本

一旦まとめ 7章を目前に、どの内容をどこで学んだんだっけ・・・?というのを自分なりにまとめておきたくなりました。 コード書いたからか、結構覚えているなーという感じです。 あと、本を先に進めたい!という気が勝っておざなりにしてるところがあるなぁ…

「良いコード/悪いコードで学ぶ設計入門」第6章その4 フラグ引数 #ミノ駆動本

リスト6.62 フラグ引数を使っている例 damege(true, damegeAmount); 確かに、これだけでは何が true なのかはコードを追いかけて関数の中身を見ないとわからんよなぁ。 ということで、それを「メソッドを分離する」で改良したところから。 ここクリックして…

「良いコード/悪いコードで学ぶ設計入門」第6章その3 型チェックで分岐しない #ミノ駆動本

リスト6.51〜6.54まで 一気にまとめたコードがこれ。 途中でしれっと出てくる Money クラスの add メソッドも書いております。 ・・・Perl で書き換えながらめっちゃ書きにくさを感じることがあります。 このコードだと、interface の HotelRates の中で分岐…

MouseX::AttributeHelpers に感動した話

「このコード、動いたけど納得いかないかっこ悪い。絶対にもっとまともな実装の方法が有るはず」という直感は外れたことない気がする— sironekotoro (@sironekotoro) 2022年6月13日 という直感があって、その解が得られるタイミングは往々にして年単位だった…

「良いコード/悪いコードで学ぶ設計入門」第6章その2 ポリシーパターン #ミノ駆動本

リスト6.41 と 6.42 Gold会員とシルバー会員の判定メソッド あー、こういうコード書いた覚えあります・・・ ゴールド会員の判定ロジック if ( 100000 <= $history->total_amount ) { if ( 10 <= $history->purchase_frequency_per_month ) { if ( $history->…

Perl で interface を理解するための長い旅

脚注からヒントを得る ここしばらく「良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方」をやっております。 gihyo.jp その中でインターフェースって何?ということでググりつつ、適当にネットから拾いつつやっていたのですが…

「良いコード/悪いコードで学ぶ設計入門」第6章その1 ストラテジーパターン #ミノ駆動本

早期 return でネスト解消 まぁ、これは書くまでもなく、わかる。 というか、例示コード書くのも辛い・・・ if ( $a == 1 ) { if ( $b == 2 ) { if ( $c == 3 ) { } } } 的な。 これに else や elsif が入ってくるとさらにカオスになるという。 ネストの深淵…

「良いコード/悪いコードで学ぶ設計入門」第5章 後半 #ミノ駆動本

リスト5.19 C# の出力引数 ここでサンプルコードが C# になってますが、まぁなんとか読める気がします。 関数に参照渡しを行って宣言元の変数を変えるというコードです。 Perl だとこんな感じですかね。 #!/usr/bin/env perl use strict; use warnings; sub …

Perl 5.36 が出ました &(anyenv経由の)plenvでのインストール&移行方法

祝!Perl 5.36 ! ということで、初夏のはじめ頃のイベントである Perl の新規安定版リリースです。 metacpan.org うちは(anyenv経由の) plenv で複数の Perl のバージョンを扱っているので、 plenv での作業を書いておきます。 誰のためってもちろん、来…

「良いコード/悪いコードで学ぶ設計入門」第5章の前半 #ミノ駆動本

目的を見失いがち そもそも、例示コードを自分の好きに発展させて満足するのが目的ではない・・・ので、そういうのはほどほどに本を読み進めることにする。 5.1 staticメソッドの誤用 Java にはインスタンスを生成することなく、メソッドを呼び出す方法とし…

Google フォーム → Google スプレッドシート → PDF で出力君を作った

想定外に時間ができた2022年5月 今は経理のお仕事メインでやってるのですが、5月は月初の連休のため月次の処理が後ろ倒しになります。 しかし、親会社への報告とか後ろ倒しにできないものもあり、気合を入れてゴールデンウィーク前から準備し、ゴールデンウ…

「良いコード/悪いコードで学ぶ設計入門」第4章 #ミノ駆動本

リスト4.1 変数tmpへの度重なる再代入 サンプルコードから書かれてないところを想像して書いていくの、楽しいですよね。 ってわけで、Perl で書いてみます。 これまでいろんな方法で Perl のオブジュエクト書いてきたけど、Function::Parameters でやります…

「良いコード/悪いコードで学ぶ設計入門」第3章の後半 #ミノ駆動本

この調子でやっていくの・・・? やっていきます。 リスト3.14 金額ではない値を渡せてしまう final int ticketCount = 1 // チケット枚数 money.add(ticketCount); とまー、金額の足し算のメソッドなのに、予期しない引数がきちゃうかもしれないよね?とい…

「良いコード/悪いコードで学ぶ設計入門」第3章の前半 #ミノ駆動本

リスト3.1 金額を表すクラス 前回に続いてやっていきます。 sironekotoro.hateblo.jp そして早速なやむ。 インスタンス変数しか持っていない、典型的なデータクラスです。 Java でいうところのインスタンス変数ってのは、Perl のオブジェクトでいうところの…

「良いコード/悪いコードで学ぶ設計入門」を読み始めた

巷で話題の本(2022年春現在) gihyo.jp DMM Books が 30% ポイント還元をやっていたので、他の本と一緒に購入しました。 なんで読もうと思ったか 自分のコードが良いコードではない、という漠然とした不安がありました。 また自分の書いたコードも保守性が…

WEB+DB PRESS vol.128 に共同で寄稿しました

WEB+DB PRESS vol.128 に共同で寄稿しました ご存知、技術評論社の WEB+DB PRESS。 個人的には基本情報、応用情報の過去問でお世話になった出版社さんでもあります。 Perl入学式校長の id:xtetsuji さん、Perl入学式大阪の id:tomcha0079 さんと共同で Perl …

YAPC::Japan::Online 2022 懇親会での「和暦西暦変換」を実況中継風に

YAPC::Japan::Online 2022 から 2週間が経ちました 興奮冷めやらぬ・・・と言いたいのですが、興奮もそこそこに業務の嵐に飲み込まれた2週間でした。 で、やろうと思っていた Perl入学式プレゼンツのお題やるのすっかり忘れておりました。 和暦西暦変換 こん…