Report of Scarlet

@sh4869 tech blog | 猩々緋報

Category: tech

  • ISUCON 12予選参加記

    ISUCON12にチーム using namespace std; で参加して最終スコアが16000ぐらいで42位ぐらいでした。決勝進出ならず。 時系列の情報とかはチームメンバーが大体まとめてくれているので、ざっくり自分がやったことについてまとめて行きたいと思います。 チームメンバーのブログ: ISUCON12予選の参加記 - hoge な blog やったこと 私は主にアプリケーション側の改修の担当でした。 sqliteにindexを張った bulk insertを使ってi
  • @aws-cdk/aws-lambda-nodejs は emitDecoratorMetadata が使えない

    @aws-cdk/aws-lambda-nodejsというCDKのモジュールがあり、Node.js関連(TypeScriptでもOK)のLambda関数を作るときに便利。 new lambda.NodejsFunction(this, 'MyFunction', { entry: '/path/to/my/file.ts', // accepts .js, .jsx, .ts and .tsx files handler: 'myExportedFunc', // defaults to 'handler' }); 以上のような感じで作れるので大変楽なんだけど、内部でesbuildでビルドしている関係でちょっと制限がある。esbuildはemitDecoratorをサポートしてない。対応させるためのp
  • AlpakkaのUnix Domain Socketサポートを使ってScalaからDocker Engine APIを叩く

    Docker Engine API はその名の通り Docker の API である。基本的に docker コマンドはこの API を使って実装されているので、この API を使えばコマンドでできることがすべてできる(僕の理解では)。 Develop with Docker Engine API | Docker Documentation この API は Unix Domain Socket を使って通信している。サンプルでは Python, Go, curl でのサンプルがあるが、Unix Domain Socket を使えればどの言語でも実装できる。Scala ではalpakkaが Unix Domain Socket をサポートしているので、これを使う。 Unix Domain Socket • Alpakka Documentation これでおしまいかというと
  • Travis CIからGitHub Actionsへの移行

    今までブログや日記等に travis-ci を使っていたところを、GitHub Actions に移行した。移行作業自体そこまで大変ではなかったけど、こういうのはメモしておかないと文法や作法を忘れてしまうので備忘録的に書いておく。 diary プロジェクト概要 レポジトリ: sh4869/diary: My Diary System written by Rust 構成 ビルドツール: Rust デプロイ先: Firebase 手元でもざっとビルドできるように、cargo runしてからfirebase deployするとデプロイされるようになっている。デプ
  • fs2(Scala)を使ったBotフレームワークを作る

    この記事はデジクリアドベントカレンダー 9日目の記事です。 こんにちは。この記事では、Scala の Stream プロセッシングライブラリである fs2 を使って、自作のBot フレームワークを作ってみたいと思います。 はじめに Slack や Discord 等で使われるための Bot を作る、といった場合、どのようなプログラムを想定するでしょうか。多くの場合は使いたい言語の Slack のライブラリを利用したり、 hubot や ruboty といったフレームワークを利用することを考えるでしょう
  • VSCodeのLaTeX Workshopの設定について

    VSCode で LaTeX Workshop を使うたびに混乱したくないのでまとめておく. LaTeX Workshop James-Yu/LaTeX-Workshop: Boost LaTeX typesetting efficiency with preview, compile, autocomplete, colorize, and more. これ.VSCode 上で適当に LaTeX を使うには十分なんだけど十分すぎて設定の概念を忘れてしまう. Autobuild LaTeX Workshop はデフォルトでAutobuild が有効.もしこれが気に食わないなら never にすればよいが,監視のプロセスは常に立ち続けているので VSCode 使うなら有効にして委ねてしまうほうが良い. recipes と tools LaTeX Workshop でコンパイルの設定をかえるときに主に「tools
  • React RouterとContext APIを組み合わせて使う

    React Router と Context API を組み合わせて使う方法について記述しておく。 環境 React: 16.4.0 React-Router: 4.2.2 問題 React Router v4 から history.push をするときに、state という引数を渡すことができるようになった。 this.props.router.push({ pathname: "/to", state: { test: "test" } }); これは先のコンポーネントではthis.props.localtion.state.testとして取得できるのだが、これをあまりやりたくない。理由はいくつかあって、 そもそもデータの受け渡しの場所をむやみに増やしたくない this.prop
  • Rustでの日記生成ツール

    自分の日記Daily Bread1のビルドシステムはRustで作ってあって、これのシステムの(といってもそんな複雑なものではないが)の解説をしようと思う。 sh4869/diary: My Dialy System written by Rust 全体の構成 このRustのプログラムでは次のような流れで日記をビルドをしている。 日記ファイルの検索 ファイルそれぞれのビルド トップページのビルド 日記ファイルの検索 ファイルに日付情報を保存させておくのは使用ライブラリ上面倒だったので、ファイ
  • ArchLinuxでFlutterをインストールするときのメモ

    ArchLinuxでFlutterをセットアップするときのメモです。特に躓くことはないのですが、一部別にパッケージをインストールする必要があるのでメモしておきます。 Get Started: Install on Linux - Flutterに書いてある通り、まずプログラムをGit cloneします。 git clone -b beta https://github.com/flutter/flutter.git export PATH=`pwd`/flutter/bin:$PATH PATHを通した状態でFlutterコマンドを実行すると、実行環境諸々勝手にインストールしてきてくれます。便利!! flutter そのあとに、flutt
  • 静的Webサイトを作るためのボイラープレート

    大学のサークルや所属団体等で静的なWebサイトを作成する機会が多かったため,自分が便利に開発できるようにボイラープレートを作成していました.これの解説をしてみたいと思います. sh4869/my-website-boilerplate: My Website Boilerplate 前提 他人に引き継ぐ場合が多いので自動生成を使うにしてもきれいな生成ファイルが吐き出され,それが編集できる必要がある 他人に引き継ぐ場合が多いので Web Application のように構築するとつらくなるのでやめる 大抵デプロイ先とか用意されていない