2018年12月30日日曜日

LTのコツ

今年はわりとたくさんLTをしてきました。
ここにあるものは一部で、技術関係ないものも結構やりました。以前の日記で書きましたが、Yahoo! JAPANのイベントで開催2時間前にネタを考えて、スライドなしの飛び入りLTなんてものをやったことも。

勉強会でLTをする人もいるかと思いますので、普段心がけている役に立つ(かもしれない)ポイントをいくつか紹介。
いろんな人が「LTのコツ」みたいな記事を書いてくれていますので、なるべくあまり書かれていないことを紹介します。「自己紹介は短く」なんてのは鉄板なのであえて書きません。
LTに限らず、もっと長めの発表や研究発表でも使える部分はたくさんあるとおもいます。

え?LTって何かって?ほら、アレだ。ライトニングトーク(英: Lightning Talks)とはカンファレンスやフォーラムなどで行われる短いプレゼンテーションのことなんですよ。様々な形式があるが、持ち時間が5分という制約が広く共有されているんです。

2018年12月23日日曜日

Web APIの逆引きステータスコード

Web APIでは、呼び出しに失敗した場合にステータスコードでエラーの種類を返します。

それぞれのステータスコードの意味はMDN等でよくまとめられていますが、逆に「どんなエラーのときにどのステータスコードを返せばいいのか」という情報はあまりありません。

そこで、逆引きリファレンスとしてまとめてみました。

2018年12月16日日曜日

クライアントとサーバーで共有できるコード

Node.jsでウェブサービスを開発するとクライアントとサーバーで同じ言語(JavaScript)を使うことになるわけですが、そうなると当然考えるのが「言語が同じだったらコードも共通化できるんじゃね?」ということ。

でも、クライアント用のコードとサーバー用のコードは基本的に言語が同じだけの別物と考えたほうがよく、あまり共有できるものがなかったりします。

それでは悔しいので、共有できそうなコードをピックアップしてみました。

2018年12月9日日曜日

node-adjuster v1.2.0を公開しました

本日はなんの日かというと、誕生日です。プレゼントはいつでも受け付けています

それはおいといて。

node-adjuster v1.2.0をリリースしました。

2018年12月2日日曜日

Chromiumのビルド高速化@Gentoo Linux

Gentoo Linuxを使っていて面倒なのがブラウザのアップデート。
CPUをフル稼働するから他に何もできないし、特にChromiumは丸一日くらいかかります。
そのせいで、先日の東京Node学園祭はわりと焦るハメになりました

そしてまたもアップデート(70.0.3538.110)がありました。
なぜか今回は三日三晩かけても終わらない


というわけで今日はビルド高速化のお話です。

2018年11月25日日曜日

東京Node学園祭2018に登壇したけど質問ある?

先日報告した東京Node学園祭2018(11/23-24) に行ってきました。

iOSDC JAPAN 2018急用で欠席builderscon tokyo 2018チケットを購入していなかったため辞退という散々な結果でしたが、3回目にしてようやく参加できました。

ただし、例によっていろいろなハプニングが…

2018年11月18日日曜日

うどん。

最近、うどんにハマっています。
丸亀製○つるまる饂○をはしごしているんですが、チェーン店だけじゃなくて知る人ぞ知るお店にも行ってみたいなーとおもいながらまだ行っていません

そして、食べに行くだけじゃなくて作ってみようと思い立つのにそう時間はかかりませんでした。
(半年くらいかかってるけどね)

なにしろ小麦粉だけで作れるので、小麦粉1kgを数百円で買っておけば10人前くらい作れる!という単純な思考です。

2018年11月11日日曜日

grub-install: error: unknown filesystem.

現在、わけあってGentoo Linuxを再インストール中です。

GRUBのインストール中にこれまで出なかったエラーが出て、しばらくハマっていました。

2018年11月4日日曜日

絶対音感Q&A

先日…といっても9月の話ですが、Yahoo! JAPANのグランフロント大阪オフィスで、「音楽」について飛び入りLTをしてきました。

だいたい毎週木曜あたりにやっているイベント"Mix Leap"にだいたい毎回参加しているのですが、あまりにも参加しすぎて入り口は完全に顔パス、もともとLTをする予定はなかったのですが当日の17時くらいに「発表者のキャンセルが出たので何か話しませんか?」と主催者さんから連絡が来て急遽話すことにしました。

とはいっても元々「アレ話そうかな、コレ話そうかな」と大雑把には考えていたので全くのゼロからネタを作ったわけではありません。

2018年10月28日日曜日

1週間使用した結果…

先週、今冬の静電気対策の記事を書きました。
  • 放電グッズ
  • リール
この2つを100円ショップで買って組み合わせるという、216円のお手軽静電気対策です。

今まで放電グッズは腕に巻くヘアゴムみたいなやつしか使っていませんでしたが、体に溜まった静電気を放電してくれた試しがないので今回は別のものにしました。
一方の金属部分を握って、もう一方をドアノブとかの金属に近づけると静電気が溜まっていたらフィラメントが光るやつ。なんかめっちゃ効果ありそう。

邪魔にならないようにズボンに取り付けて、必要なときにスッと取り出す。なんだかカコ (・∀・)イイ!!

これを1週間使ってみたので報告します。

2018年10月21日日曜日

あの季節がやってまいりました

恐れていたあの季節が今年もやってまいりました。

もう毎日ビクビクしながら過ごしています。

2018年10月14日日曜日

2018年10月7日日曜日

結果報告 3/3

3つの大規模カンファレンスの3つめ、東京Node学園祭2018の結果が出ました。

1つめのiOSDC Japan 2018採択されたけど急遽不参加、2つめのbuilderscon tokyo 2018チケットを購入するのを忘れて応募取り消しという、1勝1分0参加というよくわからない結果です。今回は果たして。

2018年9月30日日曜日

【Docker】コンテナ起動時に一般ユーザ権限でコマンドを実行したい

…ってことありませんか?
システムの初期化するとか初期設定するとかイニシャライズするとか。

普通の物理マシンや仮想マシンならナンボでも方法はあるんですが、Dockerにはブートという概念がないのでちょっとハマりました。

2018年9月23日日曜日

node-adjuster近況報告

パラメータ調整ライブラリnode-adjusterの最新情報です。

2018年9月16日日曜日

RFC3986に準拠したURI検証用正規表現

以前、可能な限りRFCに準拠したEメールアドレス検証用正規表現という記事を投稿しました。
今度はそのURLバージョン、RFC3986に準拠したURIの正規表現を作ってみました。

前回と違い、可能な限りではなく完全準拠です。多分。

2018年9月9日日曜日

結果報告 2/3

だいぶ間があきましたが、大規模カンファレンスx3の2つめ、builderscon tokyo 2018の結果報告です。

2018年9月2日日曜日

iOSDC Japan 2018

8/30〜9/2までiOSDC Japan 2018が開催されます。ちょうど今日までですね。
参加できた方は楽しめましたか?

2018年8月26日日曜日

入力データの検証場所に関する議論

Webアプリケーションに限らず、ほぼ全てのアプリケーションでは外部からの入力値のバリデーション(検証)が必要です。
いわゆるMVCアーキテクチャでは、それをControllerでやるのか?Modelでやるのか?についての議論が度々俎上に載ります。

今回はそれについての私見を。

2018年8月19日日曜日

11月にDropboxの同期が停止します

突然こんなこと言われました。
Dropboxの場所を移動
11月にDropboxの同期が停止します
( ゚д゚)?

2018年8月12日日曜日

node-adjuster その後

入力パラメータ調整ライブラリnode-adjusterの現況報告です。

2018年8月5日日曜日

jQuery.ajax() で配列をPOST

今更jQueryかよ!というツッコミはなしの方向で。とある事情で必要になったんです。

配列をPOSTする方法について、ちょっとだけハマったのでメモ。

2018年7月29日日曜日

生体工学のビーバー

今更ながら、Ubuntu 18.04 (Bionic Beaver)をインストールしてみました。
例によって入れたのはUbuntu MATEです。

2018年7月22日日曜日

WindowsのわかりにくいUI

この前、久しぶりにWindows10をいじったんですよ。
UIがもうちょっとわかりやすくなんねーかなというお話です。

2018年7月15日日曜日

結果報告 1/3

先日紹介した3つの大規模カンファレンスに応募しました。

iOSDC Japan 2018の結果が出たので報告します。

2018年7月8日日曜日

生きてますよ

ここ半月の間に関西では地震やら豪雨やら。

地震のときは帰宅が25時を過ぎたり、豪雨のときは13時に会社を出て帰宅したのが21時を過ぎたりといろいろ大変でしたが、まあなんとか生きてます。

今回特に役立つネタはありませんが、とりあえず生存報告しときます。

2018年7月1日日曜日

和楽器展示会

6/29にNode学園 31時限目に参加・登壇してきました。
それはいいとして、翌日会場の近辺を散策していると、こんなものを見つけました。

和楽器展示会

和楽器展示会。
和楽器に関しては完全なる無知なので、この機会に見てみようとフラフラ立ち寄ってみました。

2018年6月24日日曜日

先週の動向

大阪で地震がありましたね。家が兵庫県、職場が京都府なので直撃はしていないけど無関係ではないというレベルですが、先週の動向を箇条書きで。

ちなみに、地震の名称は「大阪北部地震」らしいです。

2018年6月17日日曜日

【Node.js】adjuster v0.9.0を公開しました。

先週はいろいろバタバタしていたので記事を更新できませんでした。申し訳ない。

さて、先日このブログでフライング紹介した入力値調整ライブラリnode-adjuster(npmのパッケージ名はadjuster)の最新情報をまたまたフライング紹介しちゃいます。

2018年6月3日日曜日

大規模カンファレンスx3

今年の後半に開催される大規模なカンファレンスを3つ紹介します。

どれに応募しようかな。全部やっとこう。

2018年5月27日日曜日

【Node.js】入力値調整ライブラリ"adjuster"のフライング紹介

ウェブアプリケーションを作っていると、入力値の型とか値のバリデーションをしたいときありますよね。
そして、バリデーションだけじゃなくて状況に応じていい感じにデフォルト値をつけたり、上限下限に収まるように数値を調整したくなるときありますよね。

ありますよね?

そんなあなたに朗報です。

2018年5月20日日曜日

【Node.js】BigIntの追加情報2つ

先月Node学園 30時限目に登壇したときの記事を書きましたが、登壇時には時間の都合上カットした、BigIntとbig-integerの比較記事をQiitaに書きました。

JavaScriptの任意精度整数: BigInt vs big-integer

はい、今更ですね。

これが1つめです。

2018年5月13日日曜日

可能な限りRFCに準拠したEメールアドレス検証用正規表現 完全版

以前、可能な限りRFCに準拠したEメールアドレス検証用正規表現を紹介しました。

記事中にも書いてあるとおり、あの正規表現はIPアドレスを性格に判定できませんでしたが、今回その欠点を解消した完全版をお届けします。

2018年5月6日日曜日

【Node.js】ひらがな→ローマ字変換

とある事情でひらがなをローマ字に変換する必要があったので、ちょっとコードを書いてみました。

仕様はこんなかんじ。
  • ヘボン式
  • 単独の「ぁ」「っ」「ゎ」などは、xをつける(xa / xtsu / xwa
  • uuouooなどはそのまま(「とうきょう」→toukyou
  • ひらがな以外の文字は変換しない

2018年4月29日日曜日

2018年4月22日日曜日

可能な限りRFCに準拠したEメールアドレス検証用正規表現

ウェブサービスを作っていると、入力されたメールアドレスが正しい形式か確かめたいということがあると思います。

今ならHTML5でinput要素にtype="email"が使えますし、そもそも検証せずとも実際に送ってみればいいのですが、やっぱり事前に検証したいというときもありますよね。

ただ、RFC5321RFC5322で規定されているメールアドレスの形式って結構複雑で、ほとんどのサービスでは簡易的に正規表現でチェックしてたりします

そこで、できるだけRFCに準拠した正規表現に挑戦してみました。

2018年4月15日日曜日

ヤフーでライトニング手品してきたけど質問ある?

何がなんだかさっぱりわからないタイトルですが、まあ気にしないでください。

4/5にYahoo! JAPAN OsakaでLT会がありました。
テーマは「新○○」だったので、とりあえず「新ネタ」を披露しようとLTに応募。

なんやかんやで発表が終わって…

ヤフーの中の人に「ライトニング手品」と命名されました。

2018年4月8日日曜日

【英語】前置詞ってむずかしい。

突然ですが、「土曜日にパーティーやるよ!」って英語でどう言いますか?
いや、別に本当にやるわけじゃないですけど。

正解は "We're having a party on Saturday!" です。

2018年4月1日日曜日

MayLily ver2.0.0を公開しました

分散型ユニークIDジェネレータ、MayLilyの新バージョンを公開しました。

2018年3月25日日曜日

【Node.js】64bitの16進文字列→10進文字列

タイトルのとおりです。

もともとはNode.jsでランダムな64bit整数を作りたかったんですが、JavaScriptの数値型では整数は2^53までしかサポートされていないので数値じゃなくて10進文字列で取得しようとしたんです。

別に四則演算を全部やりたいわけではないので、自分で作れるんじゃね?と思いました。

2018年3月18日日曜日

GPLのソフトウェアをサーバサイドで使う場合の著作権表示について

GPLのライブラリをサーバサイドで使う場合、ソースコード公開義務はないという解釈が一般的です。

ただ、著作権表示に関してはどうなのよ、というのは今まであまり深く考えたことはありませんでしたので条文を読んで解釈してみます。

なお、本記事ではGPL自体の是非や「抜け道」を使うことの是非については論じません。また、GPLのバージョンは本質的な問題ではありませんが、一応解釈する文書はGPLv3です。
多分他のオープンソースライセンス(AGPL以外)でも同様だと思います。

そして、この解釈が正しいことを保証しません。この解釈が間違っていたとしても一切責任を負いませんのでご了承ください。
(むしろ間違っていたら教えてください)

ちょい長いので、結論だけ知りたい人はシュパッとスクロールして「結論」を見てください。

2018年3月11日日曜日

JavaScriptに値の弱参照マップがほしい

言いたいことは全てタイトルに書いてしまいましたが、一応説明しておきましょうか。

2018年3月4日日曜日

LINEbot 活用事例

先日、LINEbotを作ってきました
難しいかなと思ったら意外とサックリ作れたので、この調子で他にも何か作ってみようと思ってネタを探していました。

2018年2月25日日曜日

2018年2月18日日曜日

【Node.js】Node学園 29時限目に登壇してくるけど質問ある?

今週の木曜に開催されるNode学園 29時限目
イベントが発表されたときから参加しようと思っていたのですが、先週ふと思い立ちました。

どうせなら登壇してやれ。

さっそく主催の2人に「LT枠空いてる?」と連絡を取ったところ、「15分枠ならね!」とお返事が。

( ゚д゚)?

節子、それLT枠やない。一般枠や。

いやいやそれでもせっかくのチャンス。なんとかして15分しゃべります。おたのしみに。

2018年2月11日日曜日

【Node.js】リソースマネージャーといふもの

これまで、Node.jsでリクエストが切断されたときの処理レスポンス完了後の処理について説明してきました。

そこから導き出されたのは、PerlとかPHPと違って、リソースは勝手に解放されないからちゃんと解放しろよというもの。
正確には言語の違いというよりアーキテクチャの違いですけどね。

そして前回、Node.jsのリクエスト内でリソースを保持する方法と解放の仕方を説明しました。

今回はこれまでのまとめとして、前回の最後に書いた「リクエストが飛ぶと問答無用でリソースを確保するんじゃなくて、必要なときにだけ確保するには?」の実装例(間違いと正しい作法)を解説します。

2018年2月4日日曜日

【Node.js】おまいらちゃんとリソース解放してますか

先月の記事で、クライアントからの接続が途中で切れてもレスポンスを返し終わっても、処理自体はまだ続くことがわかりました。つまり、こんな注意が必要。
  • (意図しない)無限ループのようにCPUを専有する処理があった場合、クライアントからの接続を切っても専有が解除されるわけではない。つまりそういう処理を作り込んでしまったらどうしようもない
  • DBの接続やファイルハンドルのようなリソースは、処理完了時にきちんと解放する必要がある
前者も設計やコードの時点で気をつけてもらわないとダメですが、問題なのが後者。

従来のスクリプト系言語では、リソースはリクエストの処理が終わったら勝手に解放されるから特に何もしなくてよかったりします。
その感覚でNode.jsを触ると、知らないうちにDBの接続数が異常に増えていたりします

さて、どう対処しましょうか。

2018年1月28日日曜日

そろそろこいつを出しておくか

今週の土曜は節分ですね。

節分といえば恵方巻き。

恵方巻きといえば…

2018年1月21日日曜日

【Node.js】レスポンスを返した後の処理はどうなるのっと

前回は、リクエストを処理中にクライアントからの接続が切れた場合、残りの処理がどうなるのかを調べました。

今回は、レスポンスを返した後の処理について調べてみます。

2018年1月14日日曜日

【Node.js】クライアントからの接続が切れたリクエストはどうなるのっと

ブラウザでアクセスしたページの応答が遅かった場合、タブを閉じたりして接続を切るじゃないですか。その後のサーバ側の動作がふと気になったので調べてみました。

いわゆるLAMPスタックのように、1リクエストに1プロセスとか1スレッドを使うアーキテクチャの場合は簡単なんですよ。
プロセスやスレッドをぬっころすだけで全部終わるので。

Node.jsはシングルプロセス・シングルスレッドのイベント駆動だからいろんなリクエストのイベントハンドラやコールバック関数が混在(呼び出し待ち)しているわけで、その場合にうまく該当リクエストの関連イベントだけぬっころしているのかな、と。

2018年1月7日日曜日

【Node.js】Dynamic importをウェブサービスで使うときの注意点

あけましておめでとうございます。今年もよろしくおねがいします。

去年のクリスマスイブに書こうとしていた、V8の最新版に関連するネタを新年最初の記事にします。