JavaScript: forループの中で配列にループ変数扱う関数(クロージャ)を埋め込みたい

forループの中で配列にループ変数扱う関数を埋め込みたいが…

// sample1.js
var funcs = [];
for (var i = 0; i < 3; i++) {
  funcs[i] = function() {
    console.log("My value: " + i);
  };
}


for (var j = 0; j < 3; j++) {
  funcs[j]();
}

以下の通り出力することを期待しているが

My value: 0
My value: 1
My value: 2

実際には以下の通り。

My value: 3
My value: 3
My value: 3

なぜか?

続きを読む

Javaのクラスファイルの中身を知る ConstantPoolテーブル

はじめに

Javaのプログラムがどうやって動いているのかを知りたい。
手始めに、javaのクラスファイルの中身がどうなっているか、特にプログラム中の各種名前(クラス/関数/フィールドなど)や固定値をどうやって格納しどうやってそれを参照しているかについて調べる。

対象読者:

  • Java(またはJava仮想マシンを対象とする言語)のプログラムを書いたことがある人
  • Javaのプログラムがどうやって動いているのかを知りたい人
続きを読む

aws-serverless-express で API をサーバーレス化する

Node.js のフレームワークである Express の書き方で、デプロイすると AWS Lambda + API Gateway で動く aws-serverless-express を使ってみました。Express で作った既存の API を大幅に作り変えることなしにサーバーレス化することができます。

続きを読む

AWS Lambda + API Gateway を使って Quarkus + Scala で実装した Slack の Bot を作ってみた

本エントリは、AWS LambdaとServerless #2 Advent Calendar 2019 - Qiita の 6 日目です。

要約

  • AWS Lambda と API Gateway を使って、Slack の Bot を作ってみました。
  • Scala で書いたプログラムを GraalVM でネイティブ用のバイナリにして、高速起動を実現することを目指しました。
  • その際、Javaフレームワークである Quarkus を利用しました。
  • 主に、Scala を Quarkus で利用する上でハマった点について書きます。
    • Slack Bot の作り方一般、API GatewayAWS Lambda の詳しい設定方法については、参考資料を載せてありますので、そちらをご覧いただければと思います。
続きを読む

GitLab Pages で独自ドメインの静的 Web サイトを HTTPS で公開する

当社のホームページはもともと WordPress で作成されたものを利用していましたが、静的サイトとして提供しても十分な内容であるため、脱・WordPressしました。 その際、これまで VPS 上の Web コンテンツを公開する方法から、「GitLab Pages」を利用する方法に変更しました。独自ドメインHTTPS を使った Web サイトが簡単に公開できたので、その方法をご紹介します。

続きを読む