SDKのDynamoDB.DocumentClientのscanメソッドを用いるのですが、そのままではテーブルのサイズが大きい場合に一部のデータしか取得できません。バッチ処理などで、テーブル内の全項目を取得したいシーンもあると思います。(頻繁にそういった操作が必要になるのなら、アプリケーションの設計ミスのような気がしますが...)そういった際はLastEvaluatedKeyを用いれば簡単に実現可能です。以下のコードはTypeScriptですが、JavaScriptの場合もほぼ同じです(型定義を消せばいいだけ)。items;};以下のように用いることができます。express.jspassport.jsを用いると、expressでbasic認証が簡単にできます。passport-httpコード以下のファイルをindex.jsとして保存します。res.sendStatus(200);});app.listen(3000);確認サーバーを立ち上げます。index.jscurlで動作を確かめてみます。http://localhost:3000Unauthorized正しく動いていることがわかります。passport.jsで1分でbasic認証を実装するもっと読むコメントを書く2019-03-03ウェブ開発でNode.jsを採用するメリット・デメリットnode.jsウェブ開発においてある程度の地位を築いた感のあるNode.jsですが、自分も2年ほど使っています。この記事では、Node.jsの良い点・悪い点をまとめてみます。メリットフロントエンドと同じ言語(JavaScript)でバックエンドを書くことができるこれは素晴らしいことだと思います。「一人がフロントエンドとバックエンドの両方に関わる」ということが容易になり、バックエンド開発者とフロントエンド開発者の間で共有できる知見の幅も広がります。プロトタイピングに向いているJavaScriptがダイナミックな言語だということや、フレームワークが充実していることにより、高速なプロトタイプ開発が可能です。AltJSを用いてJavaScriptに足りない点を補完できるある程度大規模なものを作るとなると、JavaScriptにはない機能(型など)が欲しくなってきます。いう場合にはAltJSを用いることで解決することができます。TypeScriptは開発も進んでおり、エコシステムとしても成熟が進んでいるのでよく用いられています。豊富なパッケージNPMにはかなり多くのパッケージが公開されています。ここをみると、他の言語・レジストリよりも多くのパッケージが公開されていることがわかります(量だけではなく質も大切ですがそれを定量化するのは難しいので...)。効率的なIO処理シングルスレッド上でのイベントループにより、少ないオーバーヘッドで効率的にIOを並列に処理できます。大量のスレッドでメモリが逼迫されるということもなく、よくスケールします。デメリット計算量の多いタスクに向いていない計算に時間のかかるタスクを実行するとき、(workerを使って別スレッドで実行するなどしない限り)イベントループをブロックします。イベントループをブロックしている間は他の処理が基本的にストップしてしまいます。イベンドリブンなコードには慣れを要するNode.jsでは、コールバックを利用するなどしてイベントドリブンなコードを書くことになります。1スレッド/1リクエストのモデルではシンプルに書けることも、少し複雑になってしまいます。これには慣れを要します。コールバック地獄Node.jsのコードでは、複数のコールバックがネストされてコードが意味不明になってしまう「コールバック地獄」を生み出してしまいやすいです。async-awaitなどの普及によって改善されつつあります。まとめパフォーマンスのボトルネックが、計算よりもIOになりそうな場合(ウェブアプリケーションの多くはそうだと思います)においてはNode.jsは採用する価値があると思います。LinkedInなども利用しているようです。Dockerを利用してDockerコンテナでGPUを使ってみました。18.04を利用しました。Dockerのインストール・設定まずはDockerをインストールします。インストールバージョンは1.12以降である必要があります。実際に入ったか確かめます。みたいなのが表示されれば成功です。hello-world権限周りの設定rootでdockerコマンドを毎回実行するのもあれなので、設定します。dockerグループに現在のユーザーを追加します。$USER再ログインすると、sudoなしでdockerコマンドを実行できるようになります。Toolkitをインストールします。Nvidiaの公式ドキュメントが参考になります。準備gccやmakeなどもろもろが必要になるので、インストールします。build-essentialインストールインストーラをダウンロードします。https://developer.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.105_418.39_linux.runこちらを参考にハッシュ値を確認します。cuda_10.1.105_418.39_linux.runインストーラを実行します。cuda_10.1.105_418.39_linux.run途中で、規約への同意が求められます。その後何をインストールしたいのか聞かれますが全部選択しても大丈夫だと思います。確認インストールが終了したら、以下のコマンドを実行してみます。現在のGPUの状態などが表示されたら成功です。Dockerをインストールします。dockerd実際に使ってみるTensorFlowの公式ドキュメントにあった、GPUを用いた計算の例をを実行してみます。2次元のテンソルの要素の和を求めています。dtype=float32)うまくいったみたいです。Dockerを用いてDockerコンテナからGPUを利用するもっと読むコメントを書く2019-02-16Numbaを用いたPython/Numpyの高速化pythonまえがき機械学習関連のプロジェクトではPythonを使う人が多いと思うのですが、Pythonでの処理って遅いですよね。Tensorflowでの学習などにおいてはPython側で計算をしているわけではないので大丈夫なのですが、前処理の際などにPythonの実行速度の遅さがとても気になります。コンパイラ言語とスクリプト言語を比べるのは酷ですが、「C++なら数秒で終わるのになあ」という処理も数分かかってしまったりします。C++のプログラムに匹敵するほどの速度を出すのは無理ですが、できるだけ高速化したいですよね。そのための方法はいろいろあるのですが、今回はNumbaというJITコンパイラを用いる方法を紹介したいと思います。code.「Python/Numpyコード(の一部)を、高速な機械語に変換するためのオープンソースJITコンパイラ」ってことみたいですね。細かい特徴としては以下のような感じです。関数にデコレータをつけるだけで動作するNumpyの配列や関数を用いた処理に特化しているランタイム時に、最適化された機械語を作成して実行してくれるNumbaを利用するためにPythonのインタープリターを変えたり、コードの実行前にコンパイルするようにしたりする必要がないCPU/GPUを用いた並列計算のための機能もある実際に使ってみる高速化前のコード以下のような関数があったとします。ような(長さがarrより1短い)配列を返します。