このすみノート

Webエンジニアが技術や趣味を書くブログです。

Perlを復習しながら、HTTP(S)クライアントとJSONパースからのCSVファイル出力を書いた

「退屈なことはPythonにやらせよう」的な作業があったのですが、せっかくなのでPerlでやることにしました。 なぜPerlを選んだのかと言うと、しばらくPerlから遠ざかっていたこともあり、久しぶりに書きたくなったからです。 やりたいことはWeb APIからJSONを…

PHP中級者を目指すを書くための情報収集とYYPHPの活用

本記事は技術書典5が開催された2018年に書いたため、少し古い可能性があります。 技術書典5で「PHP中級者を目指す 〜言語を使いこなすための本〜」を書いた「このすみ」と申します。 執筆こそ1人で黙々と書いたものの、途中でYYPHPも活用しつつ本書は完成ま…

漸進的型付けというプログラミング言語

世の中には、静的型付けと動的型付けのプログラミング言語の他に、漸進的型付けというプログラミング言語があります。 オライリーの『プログラミングTypeScript』を読んでいたら登場したので、記事にしてみることにしました。 静的型付けのプログラミング言…

MySQLのWHERE狙いのキー(インデックス)と、ORDER BY狙いのキーによるSQLの高速化

少し昔の話ですが、『YAPC::Asia Tokyo 2014』のイベントに参加したとき、『Where狙いのキー、order by狙いのキー』という発表を聞きました。 当時の私はデータベースのインデックスについての知識が皆無だったので、発表を聞いた際は衝撃を受けたことを覚え…

MySQLやPostgreSQLにおけるNULLは、不明な値であり計算に使うと結果がNULLになってしまうことがある

私はプログラミング言語におけるNULLは、「何もない値」または「何も示していない値」という定義で理解しています。 ところがSQLにおけるNULLでは、この単純な理解が通用しないことを知りました。 先に結論を言ってしまうと、「NULLとは不明な値のことである…

MySQLのINFORMATION_SCHEMA.TABLESにおけるテーブルの行数(レコード数)は、概算値だから正確とは限らない

SQLのパフォーマンスをテストするために、試験用にテーブルを作って大量のレコードを入れました。 その時に試験をやり直そうと思い、テーブルをリセットする局面があったのですが。 ふと疑問に思い、「DELETE FROM テーブル名」と「TRANCATE TABLE テーブル…

JavaScriptのES2019の変更点と新機能のガイド

@flaviocopesさんのサイトで、ES2019のガイドが公開されています。 flaviocopes.com ひととおり目を通したので、自分なりに解釈した要約を書きます。 Array.prototype.flat() flat()は、配列内の配列を平坦に整えた、新しい配列を生成します。 引数で深さを…

シェルスクリプト内のエラーで実行を停止する「-e」と、実行コマンドを出力する「-x」オプションを使ったシェルスクリプトの開発

「ソフトウェアデザイン2020年1月号」を読んでいるのですが、その中に次の一節がありました。 GitLab のCI に関する部分は.gitlab-ci.yml に書き、単独でも実行できる内容はシェルにまとめて、scriptで呼び出すのがお勧めです。 そうすると、.gitlab-ci.yml…

SQLのCOUNT関数内で、判定条件を使って集計するときは「OR NULL」を追加しよう

SQLのSELECT結果からCOUNT関数を使い、複数のデータ集計をしたい局面がありました。 /* aのカラムには、「0」と「3」の値が入っている */ mysql> SELECT * FROM sample; +---+ | a | +---+ | 0 | | 3 | +---+ 2 rows in set (0.00 sec) そこで次のSQLを実行…

スペシャリストのキャリアを諦めた結果、技術力が向上した - 「挫折論への招待」その後の物語

「セイチョウ・ジャーニー」「挫折論への招待」アドベントカレンダー Advent Calendar 2019の19日目の記事です。 「挫折論への招待」は、技術書典6でGrowthfactionが頒布した、挫折をテーマとした同人誌です。 私は本書に、スペシャリストを目指したけど挫折…