品質文化を支える小さいクロスファンクショナルなチーム / Cross-functional teams fostering quality culture
前回の(1)はこちらから。 静的解析ライブラリを組み合わせて部分的にコード整形を行う (2)では、PPIとPerl::Tidyを組み合わせて独自のコード整形ツールを作成します。 例として、開発の初期にはPerl::Tidyが導入されていなかったプロジェクトについて考えます。あとからPerl::Tidyを導入する場合、それまでに書かれたコードが一度に整形されます。そうすると、あとになって該当部分のコードが書かれた意図を履歴から調べる際に、コード整形のコミットログが出てきて、本来知りたかったコミットまでたどり着けません。 この問題を解決するために、新しく追加や編集した行に限定してコード整形を行うツールを作成します。 Git::Repositoryで変更した箇所を検知する Gitを導入しているプロジェクトであれば、編集した差分はgit diffで知ることができます。この情報を解析して、整形すべき
こちらはPerl Advent Calendar 2021の21日目の記事になります。 昨日は nanto_viさんによる でした。 さて、今年も軽い気持ちでPerl Advent Calendarに投稿してみようと思ったのですが、 今年は年末進行の深遠なる理由によりネタの仕込みが間に合わなかったため、 昨年のPerlでGitHub webhookを受けるbotを作ってみた話をAWS Lambda + API Gatewayで動作するように手直ししてみましたので、今更のネタですが、軽い紹介とさせてください。。 なぜ今頃これを試したのか? 某所で例のGitHub Webhookを受けるbotを運用しているのですが、 これまではわざわざ専用のホストを用意するまでもないような、ちょっとしたアプリケーション群をコンテナで上げていたのですが、今回事情によりそのホストを縮退することになりました。 わざ
6/22にリリースされたPerlの最新安定バージョン5.32では久しぶりにいろいろ新機能が追加されてたので、perldeltaを読みつつ試してみました。 内容は7/1にあったPerl若手の会で発表したこととほぼ同じで、そこで聞いたことを追記したりしてます。 isa 演算子 左被演算子に渡した値が右被演算子のクラスのインスタンスまたはそこから派生したクラスのインスタンスなのかを調べる演算子です。 use feature 'isa' でこの機能を有効化でき、実験的機能使用による警告は no warnings 'experimental::isa' で抑止できます。 use v5.32; use feature 'isa'; no warnings 'experimental::isa'; package A { use Moo } my $obj = A->new; say '$obj is
metacpan.org 簡単な利用例 Result型は関数の戻り値を成功または失敗として表して、安全なエラー処理をする旨味があり、F#、Rust、Goなど他の言語でも使われています。詳細は他に譲ります。 Perlでも同様にその旨味は享受できます。加えて、このモジュールの実装は、名前の通りシンプルです。関数の返り値をオブジェクトで包む実装を見ることがありますが*1、そういうことはしていません。($data,undef) または (undef, $error) のタプルで結果を表現しています。例えば、Ok関数の実装を見てください。以下の通り、単純です。 # When the function is successful, it should return this. sub Ok { if (CHECK_ENABLED) { croak "`Ok` must be called in lis
この記事は Perl Advent Calendar 2020 の14日目のものです。 最近、久しぶりに Perl のリポジトリをメンテする中で Travis CI から GitHub Actions に載せ替えたので、そのときに整理した Perl で GitHub Actions を使うときのテンプレを紹介します。 それだけだと量が微妙な気がしたため Actions の一部を切り出してみた話も書きます。 テンプレートCarton を使用する場合のテンプレです。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 name: test on: push: branches: [master] pull_request: branche
WEB+DB PRESS vol.119 Perl Hackers Hubも第64回ということでキリが良いですね。 個人的にはありがたいことに3度目のPerl Hackers Hub掲載です。 今回は「少しマニアックなPerlのテクニック」ということでPerlにまつわる少しニッチなTips集のようなものを書かせていただきました。 特殊変数を使って短くシンプルにコードを書き上げるテクニックであったり、Perl組み込み関数のsyscallを使って任意のシステムコールを呼び出す方法などを紹介します。 もっとPerlを使いこなしたい!と思っている方へのヒントとなるような内容を届けられたらと思っております。 もちろん、CPANモジュールを使わないことを推奨するわけではなく、あくまでもPerl本体の機能だけでもここまでのことができるぞという紹介になっております。 Dockerコンテナに潜ってDocke
The Backstory (2020) For many years, the question of what is or is not Perl's logo has been quite murky. There is a fair amount of backstory and there is too much to dive into right here, but I will happily point you at Neil Bowers' tackling of the subject from 4 years ago: https://neilb.org/2020/12/04/perl-and-camels.html It's a quick, but informative read. I encourage you to take a peek. The TL;
UNIXが生まれてから半世紀。脈々とソフトウエアの進化を支えてきた技術は、どのようにして今に至るのか? そこから学べるものとは? 日本UNIXユーザ会「jus」の法林浩之さんが、イベントレポートを中心に「UNIXの今」をお届けします! 日本UNIXユーザ会(jus)の法林です。この連載では、jusの活動報告を通して、IT関連のさまざまな話題をお届けしていきます。お楽しみください。 今回は、2021年8月に開催した「Learn Languages 2021」の模様をお届けします。 イベント概要 ・タイトル:Learn Languages 2021 ・日時:2021年8月28日(土) 12:00-17:00 ・会場:オンライン Learn Languagesとは? Learn Languages(通称:LLイベント)は、「複数のプログラミング言語を学ぼう」という趣旨のもとに開催しているイベント
2021年11月10日と11日の2日間、LINE株式会社が主催するエンジニア向け技術カンファレンス「LINE DEVELOPER DAY 2021」がオンラインで開催されました。そこで大原康平氏が、8年続くPerlプロダクト「LINEポイントクラブ」をKotlinに書き換えたことについて共有しました。後半は書き換えたことによる大変さや知見について。前半の記事はこちら。 プロジェクトの最初のころに発生する大変さ 最後のアジェンダです。プロジェクトの中で発生した大変さや知見、別言語に書き換えるメリットについて話していきます。先ほどのスケジュールの図をもう一度お見せします。これから時系列順に話していきます。 まず、プロジェクトの初期の大変さについて話します。そのあと、プロジェクトが中盤から後半になるにつれて明るみに出てきた反省点について話します。そしてリリースに関する大変さを話したあと、別言語で
レンタルサーバにてアップデートが実施され、Perlのバージョンが上がったことにより想定外のエラーに見舞われました。汎用パッケージではなく古い独自の及びフリー配布系Perl製CGIスクリプトを運用していた人には要注意です。 プライベートでの趣味の延長上で共同運用しているレンタルサーバにアップデートが施されました。個人的にはよくあることかなーと思っていましたが、同時に実施されたPerlのバージョンアップ(from 5.16 to 5.26)が大きく影響しました。 TwitterなどSNSを見るかぎりでは、このバージョンアップに伴って利用していたCGIスクリプトが動作しなくなった、という問題が発生していました。具体的な対処方法は既に判明しており、個別のトラブルを除くと手続きが広まれば自然と収まるはずです。今回は対処手順とどうして発生したのかをまとめました。 発生したトラブル アップデートが実施さ
こういうのは Python が書けると書けないかもしれないので書けないうちに書いておく。入出力やオブジェクト指向など不足部分はたくさんあるが、とりあえずできたところまで。当たり前だが、Python が書ける人には役に立たない。本当に知らない内容を調べながらなので、間違いは優しく指摘していただけるとありがたい。 英語が読める人は、まず最後の参考でも紹介している Python for Perl Programmers をご覧になるといいと思う。 バージョン 気にしだすとキリがないので Python 3 を対象にしている。Python 2 と Python 3 は、perl4 と perl5 ほどは違わないが、上位互換性はないと考えた方がいい。どちらでも動作するプログラムを書こうとしたら、ないとこどりをすることになるので、およそ現実的ではない。 perldoc perldoc に相当するのは p
metacpan.org Perlのコンテキストに戸惑う場面はあると思います。 my @a = ("apple","banana"); if (@a) { ... } 「あれ?なんでifに配列を入れて動く?」 「それは、真偽値コンテキストで解釈されるね」 「なるほど?」 こういった戸惑いが少しでも減ることを目的に、Contextual::Diagというモジュールを書きました*1 Perlのコンテキストについて Perlのコンテキストは「内部的に多態なデータを、評価次第で、型解釈を決める」概念で、 例えば、$str eq "hello"は文字列が一致するか比較している場面なので、Perlは$strを文字列として評価しようとします。 プログラミング言語によっては、toString, to_sといったメソッドを明示的に呼び出しますが、Perlの場合は、eq に反応しています。 詳しいことは、pe
Perl Perl(パール)とは、ラリー・ウォールによって開発されたプログラミング言語である。 実用性と多様性を重視しており、C言語やsed、awk、シェルスクリプトなど他のプログラミング言語の優れた機能を取り入れている。 ウェブ・アプリケーション、システム管理、テキスト処理などのプログラムを書くのに広く用いられている。 https://ja.wikipedia.org/wiki/Perl 素早いウェブ開発の道具として、古くから人気の Lightweight Language はてな、DeNA、mixi、livedoor (LINE)、… ISUCONでも人気言語 はてなでも多くのサービスで使われていて、いまでも使われています Go と違って、コンパイルをしないインタプリタ型言語 Better shell としても使えるし、ウェブアプリケーションを書くことだってできる 最新は 5.30 P
Perl Hackers Hub 第79回最近Perlに追加された実験的機能 try文、defer文、class文(2) 本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはcharsbarこと石垣憲一さんで、テーマは「最近Perlに追加された実験的機能」です。 <前回(1)はこちら。> 今後実装されそうな機能 実際にPerl本体に入った機能と、プロトタイピングに使われたCPANモジュールの機能やToDoメモを比較すると、これから実装されていくであろう機能が予想できます。同様に、Paul Evans氏がSyntax::KeywordやSyntax::Operatorといった名前を冠してリリースしているほかの実験的なモジュールも、今後取り込みの対象となっていくことが予想されます。ここではその一部を紹介します。 複数のcatchブロック ──より柔軟なエラ
I’m building a new startup and file metadata plays an important role. There are thousands of file formats, each format may have dozens of versions, and each stores metadata differently. While I would love to one day invest in creating a library to handle this monumental task, I think many would agree the best tool for this job is ExifTool1 by Phil Harvey. Problem solved - throw it in a Docker cont
DAY5 "マウスの無効化(マウス操作でvisualモードにならない様にする) set mouse-=a "ダーク系<->ライト系カラースキーマ切替 set background=dark "set background=light "シンタックスハイライト syntax on "検索文字をハイライトする set hls DAY6 "ステータスラインの常時表示&表示内容 set laststatus=2 "Dein.vimを導入 "dein Scripts----------------------------- if &compatible set nocompatible " Be iMproved endif " Required: set runtimepath+=/Users/tomcha/.cache/dein/repos/github.com/Shougo/dein.vim
それぞれのトピックを簡単に説明させていただきます。 コンテナベースイメージ 元々CentOS 7をベースイメージとしていました。 2015年当時としては新しく、長年使わせてもらっていろいろありがたい感じだったのですが、 当時は Docker Compose なども無くいろいろと過渡期であったため オンプレ時代の思想を大きく受けており、一つのコンテナに全部入りとなっていました。 例えば、Perlの公式イメージに変えるかどうかも考えたのですが、一部のミドルウェアに影響がありそうだったため、無難にRHEL系を続投する事にしました。 CentOS 8は一足先にEOLとなりましたが、 CentOS 7のEOLも 2024-06-30 と近づいており、 そろそろ乗り換えを検討しないとまずいと考え、悩んだのですが AlmaLinux 8 を選択しました。 と言ってもここについてはほとんど問題もなく、意識
Perl 5 の次期バージョンとして一部後方互換でない変更 (主に間接オブジェクト記法の削除とベストプラクティスのデフォルトでの有効化) を含んだメジャーバージョンアップである Perl 7 がアナウンスされたのは昨年の 6 月 のことだったが、その前に Perl 5 の次期周期リリースである Perl 5.34 が 5 月にリリース予定である。 現在開発版は Perl 5.33.8 がリリースされておりユーザから見える変更は凍結、4 月下旬の 5.33.9 で全コードが凍結され 5 月下旬に 5.34.0 としてリリース予定とのこと。 そういうわけで事前に新機能の予習をしておく。 8進数数値リテラルの新構文 見た瞬間「マジかよ」と口に出た。これまで Perl はプレフィクス 0 がついた数値リテラルを8進数と見做してきたが、プレフィクスに 0o (zero, small o) も使えるよ
この記事は Perl Advent Calendar 2021 の6日目の記事です。 業務では日頃はGo、Perl、PHPを使ってクラウドのバックエンドを作り、JavaScript/TypeScriptでフロントエンドを作っています この記事は昔からherokuで動かしていたサービスをコンテナ化してGraviton2なEC2インスタンス上でk3sでシングルサーバクラスタを作成して動かしているよという紹介です。 対象は以下の2つ tanzak.nomadscafe.jp corelist.nomadscafe.jp それぞれのGitHubのrepositoryはこちら GitHub - kazeburo/tanzak: たんざく GitHub - kazeburo/CoreListWeb: Module::CoreList Web このサービスで使うDockerコンテナはGitHub Act
Perl Hackers Hub 第78回Perl Webアプリケーションのリプレイスで大事なこと ~Stranglerパターンで段階的に移行する(2) 本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは須藤将史さんで、テーマは「Perl Webアプリケーションのリプレイス」です。 <前回(1)はこちら。> 新規のコードで既存のコードを包む リプレイス先のアプリケーションで既存のコードをどれだけ活かすかは、リプレイスで解決したい課題しだいです。本稿では開発効率の改善のため、クライアントとサーバを疎結合にしてREST APIで開発したいとします。この場合、データベースと接続するコードはひとまずそのまま活かします。 データベースと接続するコードはサーバの内側に位置するコードです。ここを起点にクライアント側へと向かってどこまで既存のコードを活かせるか、解決したい課題
休日の方が仕事がらみのプログラムが捗る ってことないですかね? うちはそうです。 つまり逆は・・・この話やめますか こんな業務 以下のフローで処理している業務があります。 他部署から限定公開の Google Sheet の URL がこちらに伝えられてくる Google Sheet を csv ファイルでダウンロードする ファイル -> ダウンロード -> カンマ区切りの値 ダウンロードした csv ファイルを特定のファイル名にリネームする 別なプログラムを起動して csv ファイルを読み込ませる 生成された諸々のファイルをサーバーにあげてなんたらかんたら めんどさの水位を超えた まず、この業務の時にいちいち Google Sheet みなきゃいけないのがめんどいです。 ダウンロードするためだけにブラウザで開くのめんどい。 コマンド一発でファイルをダウンロードできたらいいのに・・・という思
本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは一野瀬翔吾さんで、テーマは「AWS Lambda入門」(1)です。 サーバレスでコードを実行するサービスであるAWS(Amazon Web Services) Lambdaでは、自分の好きな言語を動かすことができます。今回は、Perlを使ってシンプルなアクセスカウンタを作ってみましょう。 本稿のサンプルコードは、本誌サポートサイトから入手できます。 AWS Lambda ── サーバレスでコードを実行するサービス AWS Lambdaはサーバレスでコードを実行するサービスです。 単にAWSでコードを実行するサービスと言えば、Amazon EC2(Elastic Compute Cloud)が第一に挙がるでしょう。Amazon EC2は非常に自由度が高く、物理サーバとほぼ同じことが実現できます。その反面、O
これは Perl Advent Calendar 2022 13日目の記事です。昨日の記事は Perlで戻り値として呼び出した子サブルーチンのコンテキストは親と同じ - hogashi.* でした。 perlcriticは、Perl向けのlinterです。詳しくは以下の記事などを参照してください。 blog.utgw.net perlcriticの組み込みポリシー*1の1つに Subroutines::ProhibitBuiltinHomonyms があります。これは、Perlの組み込みサブルーチンや予約語と同じ名前のサブルーチンの定義を禁止するポリシーです。podから引用すると、以下のようなサブルーチン定義がポリシー違反だとみなされます。 sub open {} #not ok sub exit {} #not ok sub print {} #not ok sub foreach {}
The Hijacking of Perl.com Feb 28, 2021 by brian d foy For a week we lost control of the Perl.com domain. Now that the incident has died down, we can explain some of what happened and how we handled it. This incident only affected the domain ownership of Perl.com and there was no other compromise of community resources. This website was still there, but DNS was handing out different IP numbers. Fir
はじめに この記事はPerl Advent Calendar 2022 - Qiitaの18日目の記事となります。前回は@doikojiさんの高機能軽量マークアップ言語をサポートするperl modulino:wini.pmの2022年 - Qiitaでした。 先日、@tomcha_さんが2023年、Perlをはじめてみよう! - Perlがくしゅう帳(Rubyも)という記事でPerl入学式 プログラミング初心者のためのPerl入門講座というのをやっているぞと書いておられました。 実は前回、そちらに参加させてもらいまして、そのメモは第3(2)回Perl入学式に参加した - 1o0 Projectに書いたのですが、今回は第2(1)回、第3(2)回と合わせて大阪のPerl入学式に参加した感想を書き残しておきます。 前提 Perlは200x年代前半にWindows環境にインストールしようとしたと
Tags: Corinna OOP Perl Corinna in the Perl Core! It’s been a years-long, painful process, but with the release of Perl v.5.38,0 , the first bits of Corinna have been added to the Perl core. For those who have not been following along, Corinna is a project to add a new object system to the Perl core. Note that it’s not taking anything away from Perl; it’s adding a core object system for better memo
Perl入学式 オンライン 第1回 受講された方、サポーターの方、お疲れ様でした。 講師の人です。 拙いところやアクシデントもありましたが、皆様に助けられました。ありがとうございます。 今回ですが、Perlの学習内容としては以下のみとなり、特に復習問題はありません。 #/usr/bin/env perl use strict; use warnings; print "Hello World!"; 講義の途中で言った通り、 「確実に実行結果がわかる、エラーのでない構文」 を一つ知っているのは、とても強い武器です。 この先スクリプトを書いていく中で、 print "Hello World"; がエラーになるなら、それはその部分の周辺、おそらくそこより前に間違いがあるはずです。 「ここまではプログラムが動いた」というアンカー、目印として大いに利用してください。 Perl入学式 オンライン 20
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く