RubyのNumeric#coerce

最近Rubyのgemを作る中で作ったクラスを対象として四則演算をoverrideするものを作った時にはまったのでそれを書く。 何にはまったのか 例えば今回は加算を例にして下記のようなクラスを例に使う。 class Hoge def initialize(value:, weight: 10) @value = …

dein.vimをMItamaeで扱う時に困ったこととその解決策

最近はUbuntuを使うなどして個人の開発環境が変わっていっている。 せっかく変わっている機会なのでvimもちゃんと使うおうと思ってまずはプラグインマネージャーをいれることに。 とりあえずプラグインマネージャーといったらこれでしょ!! github.com ただリ…

Route 53を使用しつつ独自ドメインでメールアドレスをGmail上で送受信する

今までメールアドレスは~~~@gmail.comのようなGmailを使用していたけど、自分のドメインもあるしそのドメインでメールアドレス作ってやろうとしたいなと思って、早速実行した。 今回やりたいこと 独自ドメインでメールアドレスを作成したい 今回は例としてex…

Pythonでコードチェックをするためにflake8いれた時に少しはまった

最近Pythonを書くことがあるけどRubyでいうrubocopみたいな静的解析をそろそろしたくなってきたのでflake8を使った。 ただそのオプションで少しはまったのでそれを書く。 flake8とは gitlab.com PyFlakes pycodestyle Ned Batchelder’s McCabe script 上の3…

C++のxtensorのPythonバインディングを扱う

hatappi.hateblo.jp 前々回の記事でC++製のxtensorという多次元配列を扱うライブラリをさわった記事を書いた。 この時Pythonのバインディングもあると書いたので、今回はそれを使用していく。 github.com 自分が理解出来てない部分もあるかもしれないが、REA…

C++のコードをPythonで呼ぶ

github.com C++11のコードをPythonから利用できるようにするためのアプローチの1つに上のpybind11を使用する方法があるらしい。 今回はそれを実際に動かしてみる。 pybind11とは C++のコードをPythonから利用できるようにするためのヘッダーライブラリ。 ヘ…

C++製のxtensorで多次元配列を扱ってみる

github.com 今回はこのxtensorというC++で多次元配列を扱うライブラリを使う。 このxtensorはnumpyにinspireされて作られているとのこと。 numpyに関してはPythonから使うのだがxtensorはC++で作られているとのことで、各言語でバインディングを用意してあげ…

任意のユーザーのログインシェルを任意のシェルにコマンド一発で変更する

あまり使用することのないコマンドとかのhelpとかmanで見たりすると「あっこんなオプションあったんだ」って気づくことがある。 今回はログインシェルを変更する時に使用するchsh 例えばhatappiというユーザーのログインシェルをzshに変えるとする。 今まで…

生まれて初めてGPUにふれた

生まれてこの方GPUというものにふれてこず印象はなんか計算が早くなるんでしょみたいな解釈しかしてませんでした。 とはいえさわってみないと分からないので今回は実際にさわってみてその効果のほどを確認することにしました。 まずGPUインスタンスを搭載し…

Ubuntuでテレビをモニタとして使った時に起きることとその対策

自宅にUbuntuのDesktop環境を整えたのは良いが、モニタがなくて今はテレビを使っている。 始まった pic.twitter.com/XbORRGhtEO— はたっぴ (@hatappi) 2017年7月23日 ただテレビをモニタとして使うと困ることがある。 テレビを見ながら作業が出来ない 最近の…

ブログを書き続ける方法とその結果

今回は今までのような技術ネタではないエントリです。 後はあくまでも個人的な意見なので参考になれば嬉しいです。 4月くらいにとあるきっかけがありブログを書くぞ!!という気持ちが高まって毎日ではないけど書き続けられるような体にはなったので、それに…

UbuntuでAtomのキーバインドを変更する

自宅の開発環境をMacからUbuntuしたのですが、結果がこちらです ubuntu最高ー— はたっぴ (@hatappi) 2017年7月24日 快適になった部分も多いのですが、Macの時とキーバインドが違って開発してると「あれっ??」ってなる時がある 例えば現状開発をする時はAto…

自宅開発環境をUbuntuにしました

hatappi.hateblo.jp 前書いたように最近自宅の開発環境をAWSに移行するとともに開発環境をDockerに移行した これ自体はよくて何か問題があればコンテナを立て直せばよいし、必要なものはMItamaeでいれてDocker Imageつくるだけでwebアプリケーションとバッチ…

Ubuntu 17.04でコピーをmacでいう ⌘ + c でする

最近Ubuntu Desktopを触りはじめた 今までUbuntuだとDocker ImageとかのCLIの環境でしか使ってこなかったからGUIがあるの新鮮 今回はそんな初めてのUbuntu Desktopをセットアップする時にいつものようにコピペをしようと思ったらなぜか出来ない どうやらコピ…

任意の場所に自宅の温度、湿度をPOSTしたい

前回はこんな記事書きました hatappi.hateblo.jp ただこれの欠点としてはUDPなので届いてるかも分からないですし、学習リモコンの電源が抜けてるとかで送信出来ないかもしれない といった問題が考えられます 根本的な解決にはなりませんが、温度をとれるよう…

自宅サービスUPDATE: エアコンが外から操作できるようになった

hatappi.hateblo.jp 上記で自宅サービスをDockerで動かせるようにしたので、ついでに今回は機能開発もした hatappi.hateblo.jp 今回追加した機能は前回の記事でも触れたエアコンを外から付けたり消したりするものを実際に運用できる形にしたもの LINEから操…

PythonのディクショナリでKey Errorを出さない

Ruby脳でPython書いてた時に下記の壁にあたった ※ Pythonは2.7.10を使っている Rubyの時 > hash = { a: 'a!' } # => {:a=>"a!"} > hash[:a] # => "a!" > hash[:b] # => nil Pythonの時 >>> dict = { 'a': 'a!' } >>> dict['a'] 'a!' >>> dict['b'] Traceback…

Rubyで家電を操作する

最近暑くなってきて何が困るかでいうと外から帰宅した時の家に熱がこもってる時ですね エアコンをつけてもすぐ涼しくなるわけではない そこで休日に秋葉原にいってネットワーク対応した学習リモコンをかった ただそれは専用アプリからしか操作が出来ないもの…

GCPからAWSへ移行しKuroko2はAWS Batchにした

2017/07/15にGCPからAWSへ移行した理由を記載しました 数週間かけて少しづつやってきた自宅サービスのGCPからのAWS移行がすべて完了した まずGCPからAWSへ移行した理由としてはいくつかあるのですが、一番は会社で使用するインフラ環境がGCPからAWSに移った…

ElasticBeanstalk, RDSを自動停止・自動起動する

hatappi.hateblo.jp 最近個人で運営しているサービスをGCPからAWSへと少しづつ移行している 今回はElasticBeanstalk(以降はEB)の自動停止・自動起動をする 個人で使用しているアプリケーションなので、お金は出来るだけ安くしたい そこで深夜とか使わない時…

Elastic BeanstalkでRails newしたものをproductionで動かす

会社のほうでGCPを使っていたけど最近はAWSを使うようになったので、個人で作っているサービスもGCPで動かしてたのでAWSに移行しようと思った 後はせっかく移行するのでDockerでやってみようということでまずはそれをどう実現できるかさぐった そこで出てき…

YAMLの検証をpyKwalifyを使って行う

Python環境化にてYAMLが正しく書かれているかを検証する必要があった ここでいう正しく書かれているというのは今回は下記をみたすもの 必要なキーが書かれている バリーに意図した型(boolean, string, numeric)の値が入っている この2つが満たされていること…

あっ!ec2-userでsudoできなくなってしまった時にすること

AWSのEC2便利ですよね 自分の好きなスペックのマシンをクリックするだけで立ち上げられる時代 ある時 sudo visudo で設定をいじっていた時に間違ってec2-userでsudoする時にパスワードを入力するようにして保存してしまった!! そんな時の奥義としては一度…

CircleCI2.0でPackerでDocker ImageをビルドしてDocker HubにPushするまで

これはCircleCI2.0がBetaの頃に書いた記事なので正式リリースされた時は変わっている可能性はあります hatappi.hateblo.jp 昨日はTravis CIネタを書きましたが今回はCircleCI 2.0ネタ CircleCI2.0から実行環境にDocker Imageが使えるようになり、1の頃に必要…

TravisCIでGoをクロスコンパイルしてGitHub Releasesで配布する

hatappi.hateblo.jp 前回の記事でlaher/goxcを使ってGoをクロスコンパイルしてGithubReleasesで各プラットフォームにむけてのバイナリを配布する仕組みを作成した ただこれを毎回のリリースでやるのは面倒なのでCIでデプロイすることにしたのが今回 CIは普段…

GoをクロスコンパイルしてGithub Releasesで配布する

hatappi.hateblo.jp 2日前にGoを練習するためのMItamaeを使うPackerプラグインをリリースした ただこの時のPluginのインストール方法としてはgo getしかなかった もちろんそれでも良いが折角なのでGithub Releasesからバイナリで配布したい 例: https://gith…

packer-provisioner-mitamae つくった

hatappi.hateblo.jp 以前の記事でも書いたように最近Goに入門しました とりあえず何か作りながら学ぼうとして作ったのが github.com です! どんなものを作ったか PackerのミドルウェアなどをいれるProvisionerにおいてMItamaeを使うためのプラグインです bu…

『社内で初SPAをAngularで完成させるまでとその後』という話をRoppongi.rb #3でしてきた

こんにちは@hatappiです 先週くらいにRoppongi.rb #3 “Rails x Frontend-Tech”で 社内で初SPAをAngularで完成させるまでとその後という題名で話をしてきました speakerdeck.com 資料内でもふれていたのですが、初期のリリース時は初期ローディングが8…

Mecabのユーザー辞書をつくる

MeCabはいつも用意された辞書を使うだけだったので今回は作る方にまわってみる Mecabって何?? MeCabはオープンソースの形態素解析エンジンで、奈良先端科学技術大学院大学出身、現GoogleソフトウェアエンジニアでGoogle 日本語入力開発者の一人である工藤拓…

Packerのプラグインについて調べたこと

最近Goを書こうかなと思ってとりあえず A Tour of Goを一通り進めた ただやっぱり実際にものを作りながら身につけたいので何か作ることにした 最近業務でも個人でも使っているPackerがGoで作られれたので勉強がてらプラグインを作ってみる Packerとは? www.p…

Serverless FrameworkでLambdaに入門する

今まではGCPを使っていたのですが、最近は会社でAWSを使い始めました 今回はLambdaを使う必要があったので入門しました Lambdaで関数を作成する際にはzipをアップロードしたりS3からアップロードしたりブラウザで書いたりする方法があるようですが ローカル…

並列して大量にhako oneshotした時におきたこと

最近hakoの話ばかりしてる @hatappi 業務でとある分散バッチシステムを作成する時にhako oneshotを使用しています hakoのYAMLファイルにはAutoScalingGroupを設定していてリソースが足りない時は追加してパラレルで実行していきます 検証した時は最大で約60…

hako oneshotで何度でもDigdagのsession情報を保持する

以前こんな記事を書きました hatappi.hateblo.jp この記事ではDigdagをDocker上で動かす際にsession情報をDataVolumeにおくことでコンテナを立ち上げ直した時もsession情報を参照できるようにするというものでした これはECS上でも実現することは出来る デー…

Hakoをコンテナインスタンス0の状態からoneshotする

hatappi.hateblo.jp 昨日はHakoで狙ったコンテナインスタンスにたいしてoneshotする記事を書きました このoneshotを僕が使う時はバッチ目的として使用するのでサービスの用にコンテナインスタンスを立て続けるわけではありません もちろん起動し続けたままで…

Hakoで狙ったコンテナインスタンスにoneshotしたい

1週間くらい前からHakoに入門している @hatappiです hatappi.hateblo.jp 以前hako oneshotを使用してサンプルのようなものを動かしました 今回は少しECSのタスク配置を掘り下げてそれをHakoで設定しようというものです ECSにはクラスター内でタスクを起動す…

Rails+webpackerでAngularをさわってみる

出遅れた感はありますが今回はRails5.1からrailsで使用できるようになったwebpackerを使用してみようと思います ※ 2017/05/20時点の情報をもとにかいてます webpackerとは? rails/webpackerはRails5.1からRails配下に入ったyarnでパッケージを管理してくれた…

PackerでDocker Imageを作る時に知ったこと

最近はAWSのAMIやECSでコンテナたてる時に使うDocker ImageをPackerで作成している @hatappiです Packerを使うとAMIにしてもDocker Imageにしても自分の好きなプロビジョニングを使用することが出来るので好きです 今回は例えば元となるdocker imageにはrben…

Hakoを使い始めた

github.com 最近Hakoを使い始めたのでノウハウをためていく Hakoとは?? Dockerコンテナをデプロイするためのツールです Hakoがうまれた背景はECS を利用したデプロイ環境 by Kohei Suzukiによると ECSを利用しつつ、秘匿値の注入や関連するリソースや設定を…

PackerでECRにpushする時はaws ecr get-loginの工程はいらなかった

hatappi.hateblo.jp 以前上記の記事でPackerでDocker Imageを作成する中で最後にDocker Pushする際の情報をawsコマンドを使用してDocker Login用のコマンドを出力してそれを使っていた # 事前にaws configureがすんでいること $ aws ecr get-login --region …

ECSでコンテナインスタンス間でデータボリュームを同期したい時

ECSの話 ECS以前にDockerを使っているとデータを永続化したかったりコンテナ間でデータを共有したいってことがあると思う hatappi.hateblo.jp 今回は前の記事でDigdagのセッション情報をデータボリュームに退避させコンテナを立て直しても続きからをECS上で…

Digdag on Dockerで何度コンテナを立て直しても状態を維持する

digdag入門しはじめた— hatappi (@hatappi) 2017年5月11日 しました DigdagはDocker上でタスクに依存性をもたせて処理を実行するために使用し始めました Digdagを使うことが出来るDocker Imageは今回は自前で用意したものを使用します ※ Digdagのバージョン…

コマンド一発で今いるディレクトリに対してhttpでアクセスしたい

題名通りで時々ローカルにあるファイルを file:// のfileプロトコルではなくてhttpでアクセスしたいってことがありました こんな時はrubyだと library webrick (Ruby 2.4.0) を使うと実現できます 例えば下記のようなhtmlファイルがあったとして index.html <html> <body></body></html>…

PackerでECRにpushする

—– 2017 / 05 / 15 ——- PackerでECRにpushする時はaws ecr get-loginの工程はいらなかった - hatappiのブログ 動作としてこの記事でも問題ないのですが、よりよい方法があったので上記書き直しました 最近は個人でも会社でもPackerでDocker Imageをbuildして…

lsofは指定されたポートを使用しているプロセスを調べるためだけではなかった

普段任意のポートを使用しているプロセスはなんだろうってなった時にlsofを使う $ lsof -i:80 # port:80を使用しているプロセス COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 1 root 6u IPv4 229552 0t0 TCP *:http (LISTEN) おっport:80はngi…

AngularでGithubUserPagesをつくりはじめる

業務でAngularを書いていたがそのプロジェクトから話されたのでAngularをかくことがなくなった ただAngularは個人的には好きなので書き続けようと思ってはいる そこで作ろうと思ったがGithub User Pages User, Organization, and Project Pages - User Docum…

MItamaeでのcookbookの取り込みを少し見やすくする

MItamaeを使っていく中でディレクトリ構成などはItameのBest Practice · itamae-kitchen/itamae Wiki · GitHubを参考にしている . ├── cookbooks │ └── nginx │ ├── default.rb │ ├── files │ └── templates │ └── fluentd │ ├── default.rb │ ├── files │ └…

MItamaeでのrun_commandの挙動が気になる

プロビジョニングとしては業務でも個人でもItamaeを使っていたが最近はMItamaeを使っている github.com MItamaeについては作者のk0kubunさんのItamaeのmruby実装「MItamae」が大体いい感じになった話 - k0kubun's blogをご覧ください 今日はそんなMItameのru…

Pythonの環境を整えよう

普段はRubyを書いているがPythonをさわることになったので環境を整える Rubyの時はrbenvがあったがPythonだとpyenvというものがあるらしい https://github.com/pyenv/pyenv この~~env系はperlのGitHub - tokuhirom/plenv: Perl binary managerとかもあるみた…

Sidekiqで動かしているjobごとにuuidがほしい

普段Railsでキューライブラリでいうとsidekiqを使っている github.com Job自体はRails4.2から入ったActiveJobを使っている # app/jobs/application_job.rb class ApplicationJob < ActiveJob::Base end # app/jobs/sample_job.rb class SampleJob < Applicat…

PrivateGemをCapistranoでbundle installする

普段RailsかいていてデプロイはCapistranoを使用している その中でbundle installする工程があるが通常はrubygemsに公開されているものを使用するので特に意識することがないがGithubのプライベートレポジトリにおいているものを使用する時はちょっと工夫が…