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の最新版に関連するネタを新年最初の記事にします。