kkty’s blog

おそらく大学3年生です

Numbaを用いたPython/Numpyの高速化

まえがき 機械学習関連のプロジェクトではPythonを使う人が多いと思うのですが、Pythonでの処理って遅いですよね。 Tensorflowでの学習などにおいてはPython側で計算をしているわけではないので大丈夫なのですが、前処理の際などにPythonの実行速度の遅さが…

Express/Node.jsでTypeScriptを使ってみる

最近、バックエンド開発でNode.jsを用いています。 JavaScriptは仕様がどんどん良くなってきているし、コールバックを用いた非同期処理も個人的には好きです。 しかしコードベースが大きくなると「型があればなあ...」と思うこともしばしば。 そこでTypeScri…

AWS S3 の特徴まとめ

AWSを使っている人全員が触ったことがあるであろうS3。整理のためのメモ。 データを複数の場所に複製するという特徴から、データの更新・削除には結果整合性が採用されている Getでファイルをダウンロードできる Putでファイルをアップロード(新規/更新)で…

AWS DynamoDB の特徴まとめ

aws

使う機会がったのでメモ。AWSすごい。 SPOF(単一障害点)が存在しない、信頼性の高いマネージド型NoSQLデータベース テーブルごとにRead, Writeそれぞれに対して必要な分のスループットキャパシティをプロビジョンすることができる 運用中にオンラインでキ…

AWS Key Management Service (KMS) の特徴まとめ

aws

使う機会があったのでメモ。 データの暗号化には、通信の暗号化(in transit)と保管データの暗号化(at rest)があるが、KMSは保管データの暗号化に使われる KMSは、鍵の保管・管理を提供する Customer Master Keyは、KMS内部のHSMでのみ平文で存在し、最大4KB…

libuvとは(特にイベントループについて)

libuvのロゴ http://docs.libuv.org/en/v1.x/design.html を読み進めていった際のメモです。 概要 libuvは「クロスプラットフォームサポートのためのライブラリ」で、Node.jsで使われることを想定して開発が進められてきた(現在はNode.js以外でも用いられて…

V8 JavaScriptエンジンとは(そしてその高速化について少し)

v8

V8のロゴ V8とは V8はGoogleが開発しているオープンソースのJavaScript実行エンジン(JavaScriptのコードを解析し、機械語まで落とし込んで実行してくれるもの)である。 C++で書かれていて、Google Chromeで使われているほか、Node.js(サーバーサイド向け…

Node.js なぜノンブロッキングなコードを書くべきなのか

Node.jsのロゴ Node.jsで「イベントループをブロックするコードを書いてはだめで、ノンブロッキングなコードを書かないといけない」とかよく言われる。 Node.jsを用いて実際に開発をしている人にとっては至極当然のことであるし、「まあそうなんだろう」と納…

V8をアプリケーションに組み込むためのガイド

v8

V8のロゴ https://v8.dev/docs/embed を読み進めていったときのメモです。 概要 C++アプリケーション内に、V8 JavaScriptエンジンを組み込むためのガイド。 次の2つの方法を紹介する C++のオブジェクトやメソッドをJavaScriptで使えるようにする JavaScript…

ContentfulとexpressとNuxt.jsで簡単なブログを作ってみる

Contentfulというサービスを知る機会があったので、それを用いてブログを作ってみました。 Contentfulは、ユーザー向けのページを提供しないCMS(ヘッドレスCMS)というもので、コンテンツの追加・編集画面やデータベース、そしてそのコンテンツを利用するため…

node.jsでaws s3のデータを読み書きする

aws-sdkパッケージを使います。以下のコマンドでインストールします。 npm i aws-sdk このドキュメントは https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html で見ることができます。適宜参照しましょう。 また、別途S3の読み書き権限のある…

dockerのコンテナ・ボリュームを掃除する

逐一きれいにしていくのが一番なのですが、dockerを用いていろいろやっていると、不要なファイルが残っていたりします。 そういうときには以下のコマンドを実行します。 docker rm `docker ps -qf "status=exited"` docker volume rm `docker volume ls -qf …

knex.jsを用いてnode.jsでmysqlを使う

knex.jsとは Node.js向けのSQLクエリービルダーです。 以下のデータベースに対応しています。 Postgres MSSQL MySQL MariaDB SQLite3 Oracle Amazon Redshift 実際に使ってみる 今回はmysqlとのセットでknex.jsを使ってみます。 まず、今回使用するmysqlをdo…

Dockerを用いて一行でmysqlサーバーを動かす

以下のコマンドを実行します。 docker run -e MYSQL_ROOT_PASSWORD=password -d -p 3306:3306 mysql --character-set-server=utf8mb4 これだけで、dockerのmysqlサーバーの動いているコンテナが立ち上がります。なお、以下のように設定しています。 rootのパ…

nginxでリバースプロキシを使ってみる

リバースプロキシとは クライアントからWEBサーバーへのリクエストを経由させるサーバーのことです。 クライアント -> WEBサーバー という状況を、クライアント -> リバースプロキシ -> WEBサーバー のようにします。 この冗長化により、 セキュリティの強化…

gitでmasterブランチ以外のブランチを一括で削除する

git

以下のコマンドを実行するだけ git branch | grep -v 'master' | xargs git branch -d ブランチ一覧を取得し masterが含まれていないものを抜き出し その結果を git branch -d の引数にする

ubuntuにnode.js(v10)をインストールする

ここにある github.com これだけ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - sudo apt-get install -y nodejs

Cの良さげなハッシュテーブルのライブラリ

c

C++のunordered_mapやPythonのdictなど、ほとんどの言語でハッシュテーブルが使えます。しかし、Cにはハッシュテーブルがありません。 言語仕様が小さいということなのでそれはそれで良いのですが、やはりハッシュテーブルが必要になることが多々あります。 …

日本人ゼロの環境でエンジニアインターンした記録

この夏休み、IndeedのAustinオフィスで2ヶ月弱働いていました。 AustinはTexasの州都で、最近はIT企業が集積して景気が良さそうな場所です。 なんか日記的なものが残っていたのでそれをほぼそのまま箇条書きで適当に書いちゃいます。技術的な話はちょこっと…