このすみノート

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

技術

汎用テンプレートエンジンmustacheについて

とある理由から複数プログラミング言語で使えるテンプレートエンジンを探しているのですが、その結果mustacheに行き着きました。 本格的にコーディングをしてみるのは来週からなのですが、イントロを兼ねて書いてみます。 qiita.com 対応言語が多い テンプレ…

WSL2 + Docker Desktop + Window ターミナルのやっていきはじめ

普段はMacBookを使っているのですが、WSL2(Windows Subsystem for Linux2)が気になってきたので、気分転換を兼ねてプライベートPCをWindowsに変更しました。 数年前に買ったWindows 10のノートPCはHomeエディションで、Docker Desktop for Windowsを使おう…

正規表現の中にコメントを含める、/xオプションによるフリーフォーマット記法について

詳説正規表現を読んでいるのですが、正規表現の中にコメントを含める方法を知りました。 実際にいくつかのプログラミング言語で試してみたので、ご紹介します。 PHP PHPでは、preg_match()に/xオプションを追加します。 /xオプションはフリーフォーマットと…

Laravelのインストールから環境設定までについて覚えたことまとめ

仕事の都合で、Laravel5系を採用しているプロジェクトに関わることとなったため、Laravelについて公式および翻訳ドキュメントで学習しました。 全部書くと大変なので、まずは環境周りについて覚え書きを記します。 インストール Laravelを使ったプロジェクト…

『基礎から学ぶVue.js』で、Vue.jsに入門した

仕事の都合でNuxt.jsを触る機会が出てきたので、Vue.jsを勉強しています。 React.jsとAngularの開発経験はあるのですが、Vue.jsは未経験なので新鮮です。 まだ勉強2日目なので、にわかではありますが、現時点のVue.jsの感想を書きます。 読んでいる本 『基礎…

Next.jsのチュートリアルが、丁寧ですごくわかりやすかった

業務上必要なこともあり、Next.jsのチュートリアルをやってみました。 nextjs.org 良かった点 SSG(Static Site Generator)とSSR(Server Side Rendering)が両方学べる 英語なのに読みやすかった チュートリアルが丁寧なので、難しくない SSG(Static Site Gene…

Linuxコマンドにおけるwhereisとwhichの違い

Linuxコマンドについて調べている過程で、ひとつ疑問に感じたことがありました。 それは、whereisとwhichの違いです。 なお同じく似通ったコマンドとしてwhatisもあり、さらに混同します。 どうやら、次の違いがあるとのことです。 which:コマンドのパスを…

Content-Typeの設定がXSS(クロスサイト・スクリプティング)に有効な理由

HTMLの本を読んでいたのですが、その中に適切なContent-TypeがXSS対策に有効と書いてあります。 XSSとContent-Typeの関連性が、イマイチしっくり来なかったのですが、日経の記事を見たら理由がわかりました。 xtech.nikkei.com JSON形式のファイルでXSSが起…

MojaveのSafari 14で、input type="file"のアップロードボタンが反応しない件

macOS MojaveのSafari 14にて、<input type="file" ~~>ボタンが反応しないケースに遭遇しました。 なぜ発生するのか? 調査した限りでは、Safari 14におけるバグのようです。 Safari 14.0.1 File Selection button not working I have a standard web form which has a file select…

正規表現における括弧の3つの役割

現在は「詳説 正規表現」を読んでいる途中なのですが、その中で気になっているのが括弧です。 正規表現における括弧では、主に3つの役割があります。 選択(|で連結すれば、正規表現の中で「または」を表現できる) グループ化(量指定子の繰り返し指定を、…

Linuxコマンドにおけるmoreとlessの違い

moreとlessは、どちらもLinuxにおいてファイルの中身を表示(確認)するコマンドです。 今までは、違いを意識することはなかったのですが、たまたまLPICの問題で出たので調べました。 moreとlessの違い 末尾まで行くと自動的にプロンプトへ戻るのがmore、戻…

自己組織化によるチームの自律的な成長を目指そう - エラスティックリーダーシップ

「エラスティックリーダーシップ(ELASTIC LEADERSHIP) - 自己組織化チームの育て方」は、IT系の専門書で有名なO'Reillyより出版された、リーダーシップをテーマにした書籍です。 エラスティックリーダーシップ ―自己組織化チームの育て方作者:Roy Osherove発…

はてなブログの独自ドメインは、名前解決やHTTPS化をどのような技術で実現しているのか

私が今書いているブログは、はてなブログの独自ドメインを採用しています。 本ブログのドメインは、『www.konosumi.net』です。 何気なく使っているはてなブログの独自ドメインですが、内部的な仕組みが少し気になったので、調査ついでに概要をまとめてみま…

機械学習を演習するために、DockerでJupyter Notebookを起動するまで - 技術メモ

お妃様シリーズの「Pythonで機械学習入門」を本格的に読み始めたので、さっそく環境構築から始めました。 Pythonで機械学習入門: 深層学習から敵対的生成ネットワークまで作者:真之, 大関発売日: 2019/05/31メディア: 単行本 本書ではAnacondaをインストール…

C++でint型同士の演算結果をlong longで受け取っても、オーバーフローで正しい値にならない場合がある - ABC 162 D - RGB Triplets

緊急事態宣言に伴う自粛期間中なので、昨日は家にこもってAtCoder(競技プログラミング)の過去問を練習していました。 昨日は「ABC 162 D - RGB Triplets」を解いていたのですが、なぜかtestcase_17とtestcase_18だけACにならず、長時間悩みました。 結論から…

PerlのHTML::TagParserを使ったHTML解析

前回の記事に引き続きPerlです。 今回はURLから取得したHTMLのパースを行いました。 www.konosumi.net Perlの開発環境準備 まずは開発環境を準備します。 「-it /bin/bash」で、起動したDockerコンテナーの中に入ります。 docker run -v $(pwd):/work -it --…

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が頒布した、挫折をテーマとした同人誌です。 私は本書に、スペシャリストを目指したけど挫折…

90年代のパソコン通信とインターネットがわかる同人誌 - ゆゆ式'90と続・ゆゆ式'90

【推し祭り】技術書典で出会った良書 Advent Calendar 2019の9日目の記事です。 今回推しとしてご紹介するのは、サークルLavenderBlueさんの「ゆゆ式 '90」と「続・ゆゆ式'90」です。 私は技術書典6で購入しました。 techbookfest.org 「ゆゆ式'90」と「続・…

Kuin for Web - Kuin言語のJavaScript出力機能と、KuinをKuinでコンパイルするKuinInKuin

この記事は、「write-blog-every-week Advent Calendar 2019」の2日目の記事です。 「write-blog-every-week」は、毎週ブログを書くことを目標としたコミュニティです。 kojirooooocks.hatenablog.com 私がブログを書き始めたのは2017年の8月ですが、アクセ…

「Pythonで機械学習入門: 深層学習から敵対的生成ネットワークまで」を読み始めた - お妃さまシリーズ第3作目

オーム社の「Pythonで機械学習入門: 深層学習から敵対的生成ネットワークまで(著:大関真之さん)」を読み始めました。 Pythonで機械学習入門: 深層学習から敵対的生成ネットワークまで作者: 大関真之出版社/メーカー: オーム社発売日: 2019/05/31メディア:…

2019年のテック系ポッドキャスト - フロントエンド・モバイル・WEB・インフラ・アジャイルなど

最近は忙しく、テック系ポッドキャストをあまり聴けていない日々が続いていたのですが、また聴き始めることにしました。 ただ、以前書いた「2017年とテック系Podcast(ポッドキャスト)を、紹介しつつ振り返る」という記事から、すでに1年以上が経過しています…