endgame keyboard...
新しいキーボードを作りました!
Fortitude60
去年の9月頃に Group Buy の募集があったので応募して購入。
くみたて
ビルドガイド に沿って組み立てていけば問題ないです。
今回は、 LED をキー毎に光らせる方向ですすめてみました。
- 基板にダイオードつけます。
- 基板にLED 用に抵抗(470Ω)をスイッチ毎につけます。制御用の抵抗(1kΩ)と FET を各ボード毎につけます。
- スイッチをプレートにはめます。
- 基板とスイッチをはめたプレートを合体させます
- LED をスイッチに刺します。
- 半田付します。
- MCU を基板に接続
- 通電確認!
- keycap まうんと!
おわり
という漢字になりました。 さすがに透過キーキャップだと部屋が明るくなりすぎるので不透明キーキャップに変更していまはつかってますので、大分おちつています。
今年いった日本酒が飲める店 2018
去年は ビール屋さん でしたので今年は日本酒をまとめてみます。
何軒いった?
まず、今年行ったお店を列挙してみます。
- 鷹匠
- 多田
- かず味家
- 喜楽
- 笹一酒造 酒遊館
- 絵馬亭
- オトナリ
- まぼ屋
- 勘助
- 大塚はなおか
- KURARA
- うお座
- うしじま酒店
- 福33
- 魚屋 がぶ
- ずぶ六
- 酒壺しずく
- 坂ノ下ノオリゼ
- 釜竹
- 立ち呑み 庫裏
- いまここ
とりあえず挙げてみました。
どこがよかった?
ここに書いてあるところはどこもよかったですよ
特に気に入ったお店
今年はじめて行ったなかでは、多田、はなおか、しずく、ずぶ六が特に好きでした。
多田とはなおかは、ミシュランのビブグルマンにのっているらしいです。料理がとてもおいしく、うめぇうめぇ言いながらたべてました。 多田は、日本酒が選択できますが、はなおかは料理にあわせたお酒をだしてくれます。 どちらのお店も日本料理となります。
季節によりますが、多田は季節にあわせた肴を出してくれて冬は牡蠣の塩辛?(失念)や夏ですと、鱧のお吸い物を出してくれました。
今年行っていない店
今年行っていない店としては、29rotiと壺中が行けていないですね。
29rotiは生ハムとチーズが大変美味しく、熱燗や常温のお酒とよい感じに合います。要予約のお店ですので今年は行けなかったです。
壺中は熱燗専門のお店で予約とかなく入れますので、そのうち行こうと思い行かずにおわってしまた。
おわり
いかがでしたでしょうか?来年はまたビールをまとめたいとおもいますのでよろしくおねがいします。
docker-composeを利用してRailsアプリ開発を楽にしよう
ていうのをうなすけさんに相談したら、解決策を示してくれたのでそれを開発向けに変えてみた。 Dockerとdocker-composeはみなさんごぞんじだと思うので割愛します。
はじめに
Railsアプリ用 Dockerfile を準備します。こちらは、元記事と同じで良いとおもいますが、元記事ではすべての条件を満たすために、不要な DB
やミドルウェアのライブライをインストールしてますので必要なものだけにします。
このRailsアプリでは、DB
として postgres
を利用していますので関連のライブラリをインストールします。
FROM ruby:2.5.3-stretch
ARG NODE_MAJOR_VER=11
ARG BUNDLER_JOBS=4
RUN curl -sL https://deb.nodesource.com/setup_${NODE_MAJOR_VER}.x | bash - \
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
&& apt update && apt install --assume-yes \
postgresql-contrib \
libpq-dev \
libxml2 \
libxml2-dev \
libxslt1-dev \
git \
make \
nodejs \
yarn \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /rails
COPY . .
RUN bundle install --jobs=${BUNDLER_JOBS}
RUN yarn install
同様に docker-compose.yml
を必要なものだけにします。
version: '3'
services:
rails:
build: .
command: /bin/bash
environment:
- NODE_MAJAR_VER=11
- BUNDLER_JOBS=4
- DB_HOST=postgres
volumes:
- ".:/rails"
links:
- postgres
command: ["bundle", "exec", "rails", "s", "-b", "0.0.0.0"]
ports:
- "3000:3000"
postgres:
image: postgres:11.1-alpine
ports:
- "5432:5432"
こちらも postgres
だけにします。
おわり
あとは docker-compose up rails
とし、実行することで見れるようになっています。
hello language server
ここ1、2週間、 emacs で lsp-emacs
を使いはじめたのでそのメモ
Language Server と Language Server Protocol ってなによ?って人はリンクをみてください。
導入
導入は簡単で以下の3つをpackage-installでインストールしてしまえば OK です。
lsp-mode
lsp-ui
lsp-ruby
インストール後は .emacs.d/init.el
あたりに、
(require 'lsp-mode)
(require 'lsp-ui)
(require 'lsp-ruby)
(add-hook 'ruby-mode-hook #'lsp-ruby-enable)
を追記すると emacs 側の設定はできました。
lsp-ruby
(emacs) を起動する前に gem install solargraph
で solargraph
をインストールしておきましょう。
利用開始!
利用開始するときは利用したいファイルのトップディレクトリ(プロジェクトディレクトリ)に、 Gemfile
が必要です。
でこんなかんじに表示してくれます。
-> <-
matome
lsp-ruby
を導入したけど、solargraph
だとちょっとあれな表示が出て残念な気分に。
また rubocop
も基本的に要求されるようで…
remove rails assets
ひさびさに Ruby on Rails
の話で、自作の rails application で rails-assets
というところからいくつか gem を利用してたので
それを Yarn
で同様のパッケージをインストールするように変更した。
なにをやったのか?
単純に一旦 rails-assets
からインストールしている gem を Gemfile
から削除します。
そのあと、 yarn add
で package.json
を生成し node_modules
にインストールします。
yarn add bootstrap@3 font-awesome jquery
yarn install
rails s
インストールが終了し、railsを起動したら必要な情報(font-awesome, bootstrap) を app/assets/{javascripts,stylesheets}
に記載。
// app/assets/javascripts/application.js
//= require rails-ujs
//= require turbolinks
//= require jquery/dist/jquery.js
//= require bootstrap-sass/assets/javascripts/bootstrap
//= require_tree .
# app/assets/stylesheets/application.scss
@import 'bootstrap-sass/assets/stylesheets/bootstrap';
@import "font-awesome/scss/variables";
$fa-font-path: "font-awesome/fonts/";
@import "font-awesome/scss/mixins";
@font-face {
font-family: 'FontAwesome';
src: font-url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}');
src: font-url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'),
font-url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'),
font-url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'),
font-url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'),
font-url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg');
font-weight: normal;
font-style: normal;
}
@import "font-awesome/scss/core";
@import "font-awesome/scss/larger";
@import "font-awesome/scss/fixed-width";
@import "font-awesome/scss/list";
@import "font-awesome/scss/bordered-pulled";
@import "font-awesome/scss/animated";
@import "font-awesome/scss/rotated-flipped";
@import "font-awesome/scss/stacked";
@import "font-awesome/scss/icons";
@import "font-awesome/scss/screen-reader";
$icon-font-path: "bootstrap-sass/assets/fonts/bootstrap";
ってかいたら使えるようになっています!
おわり
ということで IMASARA ですが rails-assets
からの脱却ついでに簡単に yarn
を利用した assets の導入をやってみました!
new keyboard
タイトルのとおり家のキーボードを新調しました。
Iris
機械学習でよく評価されるやつじゃなくてキーボードであるやつです。
keeb.io で売ってます。
購入
欲しい欲しいといってたらいつのまにか復活したのでケースとセットで購入。
組み立て
公式やASCIIにあるのでそれに従い組み立てハンダ付します。特に言うことはないです。
ハンダ付ミスっても近所に電子工作の得意なお兄さんに工具を借りれたのですぐに解決です。
完成
はい。
-> <-
おわり
この記事は新しいキーボードに慣れるため書いています。
今まで利用していた Kinesis のやつは仕事場に持っていってます。
配列を Kinesis で利用してた時と似せていますが、少し違うのでまだ打ちにくいです。
あと、技術書典5来てくださいた皆さまありがとうございました。 次回も出そうという気が湧いてきましたので次回もよろしくお願いします。
くーも
Rubyで cuda
を利用して GPGPU 使いたいの
で cumo
を導入してみた。
install
はじめに cuda
をインストールしておきます。
gem
に登録されているので、雑に gem install
実施してみます。
export CUDA_PATH="/opt/cuda"
export CPATH="$CUDA_PATH/include:$CPATH"
export LD_LIBRARY_PATH="$CUDA_PATH/lib64:$CUDA_PATH/lib:$LD_LIBRARY_PATH"
export PATH="$CUDA_PATH/bin:$PATH"
export LIBRARY_PATH="$CUDA_PATH/lib64:$CUDA_PATH/lib:$LIBRARY_PATH"
gem install cumo
とすると以下のようなエラーが出てだめです。
gcc -I. -Iinclude -Inarray -Icuda -I/home/katsyoshi/.rbenv/versions/2.5.1/include/ruby-2.5.0/x86_64-linux -I/home/katsyoshi/.rbenv/versions/2.5.1/include/ruby-2.5.0/ruby/backward -I/home/katsyoshi/.rbenv/versions/2.5.1/include/ruby-2.5.0 -I. -I/home/katsyoshi/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/numo-narray-0.9.1.3/ext/numo/narray -DHAVE_NUMO_NARRAY_H -DHAVE_DLFCN_H -DHAVE_DLOPEN -DHAVE_STDBOOL_H -DHAVE_STDINT_H -DHAVE_TYPE_BOOL -DHAVE_TYPE_U_INT8_T -DHAVE_TYPE_U_INT16_T -DHAVE_TYPE_INT32_T -DHAVE_TYPE_U_INT32_T -DHAVE_TYPE_INT64_T -DHAVE_TYPE_U_INT64_T -DHAVE_EXP10 -DHAVE_RB_CCOMPLEX -DHAVE_RB_THREAD_CALL_WITHOUT_GVL -I/opt/cuda/include -I/home/katsyoshi/.rbenv/versions/2.5.1/include -fPIC -O3 -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wmisleading-indentation -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wduplicated-cond -Wno-maybe-uninitialized -o narray/types/bit.o -c narray/types/bit.c
narray/gen/tmpl/lib.c:22:7: エラー: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘/’ token
#define m_map(x) m_num_to_data(rb_yield(m_data_to_num(x)))
^
narray/gen/tmpl/lib.c:23:29: エラー: 終端する > 文字がありません
^
narray/gen/tmpl/lib.c:23:29: 致命的エラー: static ID id_cast;: そのようなファイルやディレクトリはありません
コンパイルを停止しました。
make: *** [Makefile:453: narray/types/bit.o] エラー 1
公式リポジトリ覗いてもとくに問題なさそうなので gem
からのインストールは一旦おいてソースからインストールします。
build
公式リポジトリからダウンロードしてコンパイルをはじめます。
git clone https://github.com/sonotz/cumo.git
cd cumo
export CUDA_PATH="/usr/local/cuda"
export CPATH="$CUDA_PATH/include:$CPATH"
export LD_LIBRARY_PATH="$CUDA_PATH/lib64:$CUDA_PATH/lib:$LD_LIBRARY_PATH"
export PATH="$CUDA_PATH/bin:$PATH"
export LIBRARY_PATH="$CUDA_PATH/lib64:$CUDA_PATH/lib:$LIBRARY_PATH"
bundle install
rake compile
rake install
ってインストールできますが、その前に僕の環境が gcc-8.2.0
だったりして、これを gcc-6.4.0
に戻したりしてインストールしました。
run
これでインストール終わりましたので、 irb
で確認してみようと思います。
irb(main):001:0> require 'cumo/narray'
=> true
irb(main):002:0> Cumo::Int32.new(3, 3).fill(0)
=> Cumo::Int32#shape=[3,3]
[[0, 0, 0],
[0, 0, 0],
[0, 0, 0]]
とこれで実行されたことを確認できます。
と簡単に書きましたが、インストール後にGPUへのアクセス権が無いユーザーで実行したためエラーが出ます(エビデンス取得忘れ)。 手元のPCではGPUにアクセス権がvideo groupにもあるので利用ユーザーをvideo groupへ追加して再起動することでようやく動作確認ができます。
おわり
簡単にGPGPUを利用したプログラムが書けるようになりましたのでおわりです。 技術書典5はこれを使ったはなしを出展しますのできてみてくださいな。
え37でまってます
SATySFi使って本書いてみてる
技術書典5出しますので、それを書くために OCaml で作成された SATySFi を使いはじめました。
インストール
今回は OPAM を利用してインストールをしています。まあ単純にパッケージが今普段使いしてるOSにないだけなんですけどね。 インストール手順は 公式のREADME.md を参考にしています。
OPAM
OCaml Package Manager の略らしいです。
こいつは OCaml
のインストールもしてくれるのでこれを利用します。
OPAM
のインストールは簡単で以下のスクリプトを実行するだけです。
wget https://raw.github.com/ocaml/opam/master/shell/opam_installer.sh -O - | sh -s /usr/local/bin
OCaml
OPAM
のインストールが終ったら、 OCaml
をインストールします。
opam switch 4.06.0
eval `opam config env`
SATySFi
OPAM
の準備が整ったら SATySFi
の準備、インストールをします。
opam repository satysfi-external https://github.com/gfngfn/satysfi-external-repo.git
opam update
git clone https://github.com/gfngfn/SATySFi.git
cd SATiSFi
opam pin add satysfi .
opam install satysfi
compile!!!!
これでインストールされたのでとりあえずリポジトリにある demo/demo.saty
をコンパイルしてみましょう。
cd demo
make
なにも準備していないといきなりエラーがでますのでそれを公式を参考にして解消します。
解消できたら demo.pdf
ができますのでこれでつかえるようになります。
おわり
ちょっと簡単でしたが、 satysfi
の導入日記でした。
そんなことより技術書典5に出します。ネタは酒に関するネタでやっていく予定です。
仕上がっていれば え37
に居るとおもわれます。
wireguardをはじめました
title 通り、 wiregaurd
で家と さくらのVPS にあるサーバーを繋いでみました
install
導入は簡単で gentoo
は公式にあるので
sudo emerge wireguard
だけで、 ubuntu
の場合もインストールガイドがあるため簡単にインストールできます
sudo apt install software-properties-common
sudo add-apt-repository ppa:wireguard/wireguard
sudo apt-get update
sudo apt-get install wireguard
引込
あとは非常にかんたんでここを適宜読み替えることで 接続できます。
おわり
あとは、再起動時に自動で接続するように変更する必要がありそうですがつながったし、おそいのでこれでおわり
Hello, Itamae from docker!!
Itamae の plugin 書いててそろそろ test 欲しいなあとおもって2年くらいたちましたが、 ようやく Docker 使って test 書きました。
方向性
ここでテストを実施するとして何に対しておこなうのかというのを考えましたが、E2Eのテストだけで良いだろうという方向でテストを書くようにしています。
VMを立てて実行することにはチョット大袈裟だろうということでもっと簡単に、楽にということで docker
を選択しています。
itamae で E2E のテストなのでここでは serverspec を利用してテストを行います。
E2E のテスト準備として docker
内で最初に目的のレシピを実施し、そのレシピが正しく動作しているかをテストしています。
準備とテスト実施
準備として以下の gem
を追加しますが、 docker-api.gem の方はなくてもとくに問題ないです。
serverspec
の対象バックエンドで docker
が指定できるようになりますが、 docker
内 (docker run -t hoge bundle exec serverspec
など) で serverspec
を実施すれば実行できますので、好みで追加しましょう。
spec.add_development_dependency "docker-api"
spec.add_development_dependency "serverspec"
次に Dockerfile
を作成します。ここでは単純に必要な準備を実施、テストしたいディレクトリの追加、 bundler
を利用して gem
のインストールを実施してから、対象のディレクトリで itamae
の local
を指定して対象の docker
にレシピ適用します。そのあと docker run
や serverspec
を実施することでテストをすることが可能となります。
FROM ruby
RUN echo "gem: --no-rdoc --no-ri" >> /.gemrc
RUN gem install bundler
ADD . /app
WORKDIR /app
RUN bundle install
RUN bundle exec itamae local samples/recipe.rb
CMD bundle exec rake
itamae-plugin-resource-pip
itamae-plugin-resource-pip でできるようになってます。 とくに docker.io とかで公開していませんので、以下に例を
cd /path/to/itamae-plugin-resource-pip
docker build -t katsyoshi/itamae-plugin-resource-pip .
docker run -t katsyoshi/itamae-plugin-resource-pip bundle exec rake
おわり
これやろうと思って調べてたらみつからずに Dockerfile
書き終えて、travis を追加しようとしたときに、@sue445 さんがやってたのをみつけてしまった。。。