このすみろぐ

とあるWebエンジニアが、技術や趣味について書くブログです。

テクノロジー

はてなブログの独自ドメインは、名前解決や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を…

テレワーク・リモートワークのための、環境整備のガイドライン

LINEと厚生労働省が行なった調査では、テレワークの実行率が5.6%という調査結果が出ています。 www.huffingtonpost.jp テレワークが普及しない理由はさまざまかと思いますが、その中の理由のひとつに、自宅で仕事に集中できる環境がないという点が考えられま…

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メディア:…

駆け出しWEBエンジニア(新人WEBエンジニア)の失敗談 - エンジニアアンチパターンNEXT

技術書典7で頒布した「エンジニアアンチパターンNEXT」は、私自身の失敗談から教訓を得るという同人誌です。 konosumi.booth.pm 新人のWEBエンジニアとしてキャリアをスタートした入社1年目から始まり、プロジェクトマネージャーとして炎上プロジェクトを経…

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

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

ボット作成で学ぶ、Dockerとdocker-compose入門 - 技術書典7「BotFrameworkで勤務報告Bot作った」

「BotFrameworkで勤務報告Bot作った」は、技術書典7でさとう( @honhotate )さんが頒布していた本です。 私は技術書典7にサークル参加していたのですが、ほとんどサークルを出られなかったため、お隣のサークルさんで唯一普通に購入することができた本とも言…

ポッドキャスト駆動の技術学習と、ブログから始まり商業誌へ至る執筆によるアウトプットのふりかえり

技術書典7に向けて、「エンジニアアンチパターンNEXT」という技術系同人誌を書いてます。 自分の失敗談をアンチパターンに見立てた本で、そこから「どうすれば良かった?」を考える本です。 その中に「キャリア」をテーマとした章があるのですが、自分のエン…

Ionic + Stencil + CapacitorでWeb Componentsを使ったPWA & ハイブリッドアプリ開発

Ionicチームが開発しているStencilとCapacitorを組み合わせることで、Web Componentsを使ってハイブリッドのモバイルアプリ開発ができます。 「Stencilってなに?」「Capacitorってなに?」と、思われるかもしれません。 どちらも2019年にバージョン1.0系が…

CoffeeScriptとCoffeeScript2を試してみた - AltJS(代替JavaScirpt言語)

技術書典7に向けて「Node.js中級者を目指す」という本を書いてます。 その過程でAltJSについて勉強していたのですが、「CoffeeScript 2」の存在を知りました。 本記事はその備忘録にあたり、実行したインストールおよびサンプルプログラムと所感を共有します…

ES2015・ES2016・ES2017・ES2018を手早く学習するTHE ES Guide

技術書同人誌博覧会(技書博)向けのNode.js同人誌を書いてる際に、オススメのサイトを見つけたのでご紹介します。 @flaviocopesさんの「THE ES Guide」です。 ES2015(ES6) ES2015はlet・const・class・Promiseをはじめとする重要な構文や機能が目白押しなの…

続・未踏ジュニアのスーパークリエイタという世界 - 2018年度未踏ジュニアの感動を語り隊

「未踏ジュニア」というプロジェクトがあります。 独創的なアイデア、卓越した技術を持つ17歳以下の小中高生および高専生を対象とした、ミニ未踏です。 jr.mitou.org 優れた能力を持つ若い人材を発掘・育成することを目的としているプロジェクトですが、これ…

JavaScriptの配列風オブジェクトと「[].slice.call()」による配列変換について

書店で購入したオライリーの「Node.jsデザインパターン」を読んでます。 本の内容はNode.js流のコードの書き方「The Node Way」を学ぶことに主眼が置かれており、さらにクラスタリングをはじめとするNode.jsのスケーラビリティや負荷分散についても書かれて…

TypeScriptでsetTimeout()がNodeJS.Timerになる理由から、window.setTimeout()との違いを理解する

AngularのSPA(Single Page Application)のプログラムを書いてたら、以下の問題に遭遇しました。 TypeScriptのコード内でのsetInterval()の返り値には罠がある https://blog.kubosho.com/entry/setinterval-trap-on-typescript/ 内容としては「Type 'Timer' i…

ALOHAnet - 有線LANより早く生まれた無線LANの起源と、CSMA/CA方式への発展

2019年秋の情報処理試験で、「ネットワークスペシャリスト」を受験してみることにしました。 そこで毎日少しずつ学習を進めているのですが、データリンク層の学習でハワイの「ALOHAnet(ALOHAネット)」に出会いました。 無線LANの先駆的存在で興味深かったの…

PHP中級者を目指すステップアップ本「レベルアップPHP」について

「レベルアップPHP」という本を書きました。 技術書典6の個人サークルでお披露目しまして、現在好評発売中です。 レベルアップPHP ?言語を理解して中級者へ? (技術の泉シリーズ(NextPublishing))作者: 佐々木勝広出版社/メーカー: インプレスR&D発売日: 20…