GoでLTSVをJSONに変換できるコマンドラインツールつくった

直近はRubyKaigiだったりでRubyを書くことが多かったのでGoがご無沙汰だったので素振りをするためにGoでLTSVをJSONに変換するコマンドラインツールを作成した github.com なんで作ったの? 素振り nginxのログをLTSVで出力してたけどJSONにしてjqで見たかった…

RubyData Workshop #RubyKaigi2018 でLTをしてきたよ

RubyKaigi 2日目 今回はRubyDataWorkshopのRed Data Toolsの開発者たちによる1年間の生活発表を行ってきました http://rubykaigi.org/2018/presentations/ktou2.html#jun01 昨日はRed Chainer周りの技術的な部分を話したのですが、今回は生活発表ということ…

RubyKaigi 2018でDeep Learning Programming on Rubyというタイトルで発表してきました

昨日からRubyKaigi 2018にきてます 前回のRubyKaigiも会社に全額出してもらって広島にいったのですが、今回も全額出してもらって有難さを感じてます rubykaigi.org 今回は@mrknさんと一緒に登壇してRubyの深層学習について話をしました http://rubykaigi.org…

tmuxのprefixを一時的に別のキーに変更する

僕はが時々やってしまうケース [Mac] tmuxで新しいセッションを作成する [Mac] リモートのサーバーにSSHでログインする [リモートサーバー] tmuxで新しいセッションを作成する この状態で何が起きるかというとリモートでデタッチしようとした時にMac側のtmux…

tinyint(1)がtrue, falseなのはRailsの世界

今回はRailsネタ 検証環境は次の通りです $ ruby -v ruby 2.5.0p0 $ bundle exec rails -v Rails 5.2.0 例えば今回次のようなコマンドでstringのnameとbooleanのdisabledをもったUserモデルを作ったとしましょう $ bundle exec rails g model User name:stri…

RubyでCIFAR-10, CIFAR-100を扱いやすくしました

以前こんな記事を書いていました blog.hatappi.me CIFAR-10は10クラス, CIFAR-100は100クラスからなる画像セットです CIFAR-10 and CIFAR-100 datasets それぞれはPython(Pickle), Matlab, binaryで提供されます 前の記事でも書いたのですが、Rubyで扱うとな…

備忘録 - Rails + TypeScript + React + Hypernova で SSR

今回はRailsの素振り ただ今回のメインはフロントでやりたいことはTypeScript + React + SSR SSRは今回はAirbnbがOSSとして出しているhypernovaを使用しました github.com 環境 環境は以前次の記事で使用した環境を使用します hatappi.hateblo.jp $ ruby -v …

carrierwaveかpaperclipを使って画像URLからS3にアップロードする

hatappi.hateblo.jp 前回に続いて今回もRailsで素振り 今回やりたいこと Railsで画像URLを指定してダウンロードしたものをS3にアップロードする!! 例えば次のような画像 https://pbs.twimg.com/profile_images/896275871941574656/wAcSCGy4_400x400.jpg 候補…

RailsにTypescriptいれてReactもいれる

今回は次の環境で確認を行なっています。 $ ruby -v ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17] $ rails -v Rails 5.1.6 今回はwebpackerを前提にしているので次のコマンドでプロジェクトを作成しています。 rails new . --webpack TypeS…

Numo::NArrayで配列のパディングしたい

最近Red ChainerでCNNを実現できるようにあれこれ実装をしてるのですが、その過程でパディングをNumo::Arrayで実現する必要がありました。 パディングは畳み込みの処理をする前に入力データの周囲の固定のデータ(例えば0)を埋めることです。 これをNumo::NAr…

第10回フクオカRuby大賞でAWS賞とってきました

技術ブログというよりはただのブログ。 今日は第10回フクオカRuby大賞で福岡にきてます!! www.digitalfukuoka.jp フクオカRubyt大賞とは? 福岡県のRuby・コンテンツビジネス振興会議が毎年主催しているRubyを使ったプロダクトをコンテスト?する場 僕は初め…

CIFARで提供される画像データをRubyで画像ファイルにする

完成品のパフォーマンスがよくなかったので修正しました require 'RMagick' require 'fileutils' labels = %w(airplane automobile bird cat deer dog frog horse ship truck) FileUtils.rm_rf("output") labels.each { |l| FileUtils.mkdir_p("output/#{l}"…

Ruby25でRed Data Toolsとしてポスター出してきました

今日はRubyの25周年を祝うRuby25に参加してきました。 25.ruby.or.jp Rubyの歴史だとか今後についての話が聞けたのですが、今回一番印象に残ったのは日本Rubyの会の高橋さんの講演で最初はrubyだったのがPerlと並べた時の見栄えとしてRubyになったという話を…

SlackのInteractive messagesのselectでデフォルト値を指定する

Slack botを作っていると一方的にメッセージを送りつけるだけでなく、ボタンを押したりセレクトボックスから何らかを選択した時にアクションをとれるようにしたくなる。 これを実現しているのがSlackのInteractive messagesでこれを利用することでボタンをユ…

Red Chainer 0.2.0 リリースしました

Red Chainer 0.2.0をリリースしました 今回は次のような機能をリリースしました Tanh, LeakyReLUの提供 by @naitoh Snapshotのサポート by @hatappi を行いました Tanh TanhはHyperbolic Tangentとも言い次の式で表されます irb(main):008:0> x = Numo::DFlo…

Githubで2段階認証を設定しhttpsリポジトリにpushする

毎回この設定を忘れるのでメモ Githubでセキュリティ面などから二段階認証を設定する。 ただこの二段階認証を設定した状態でpush先のリモートとしてhttpsプロトコルを利用すると問題が生じる。 問題としてはpush時にusernameとパスワードを求められてログイ…

Heroku + BotKitでSlash Command

今回はbotkitを使ってSlackのSlash Commandの作成手順をメモとして残す Slash Commandの連携先の環境としてはHerokuで行う Herokuの準備 まずはHerokuの準備をする Appはブラウザ上から作っても良いしコマンドラインから作成しても良い 今回は便宜上コマンド…

tarで複数のディレクトリを起点にして圧縮する方法

タイトルの通り。 どういうことかというと次のようなディレクトリ構造をもったプロジェクトがあったとする。 . ├── dest │ └── hoge └── src └── config └── dev.yml このディレクトリを圧縮して解凍した時のディレクトリにはhoge, dev.ymlが同じディレクト…

2017年の振り返りと2018年やりたいこと

おけましておめでとうございます!! 年始初エントリは去年の振り返りと今年の抱負的なのを書いていこうと思います。 2017年の振り返り 外に出る機会増えた 2016年とかは外で発表することってほぼなくて年に1,2回だった気がする。 じゃあ2017年はどうだった…

gomodoroの残り時間をtmuxのstatus lineに出すプラグインをつくった

完成したもの キャプチャを見ると分かるようにgomodoroを動作させてない時は--:--になっており、動作している時は24:32のようにtmuxのstatus lineに表示されています!! 今回はこれをつくりました。 なんで作ったのか? gomodoroは元々時間が終わるとデスク…

Gomodoro 0.2.0 Release!!

github.com コマンドラインからポモドーロをすることが出来るgomodoroの0.2.0をリリースしました リリース内容 ちゃんとしたCLIにするための基盤作成 残り時間をかえすコマンドの提供 一つずつ紹介していければと思います。 ちゃんとしたCLIにするための基盤…

GoでCLIを作る時に便利なurfave/cli

GoでCLIを作ろうとなった時には中身のロジックも勿論必要だけどユーザーが入力するインターフェースとなる部分が必要となる。 オプションをわたすようなものの場合は標準のflagパッケージを使えば良いんだけど、commandを指定して機能をわけたいとかなった時…

command lineでテンプレートファイルに環境変数を埋め込む

毎回忘れてしまうのでメモとして残しておく。 設定ファイルとかを使う時に環境変数を埋め込みたい時とかがある。 例えばDBへの接続情報を管理するような次のようなファイルがあったとする。 - DB_HOST: xxx.yyy.zzz - DB_USER: fugafuga - DB_PASS: hogehoge…

たまってるPR一覧をSlackへ通知するgemつくった

チームで開発している時によく起きる?問題としてPRたまってしまう問題がある。 細い理由みたいなのは今回は触れない。 例えば1つのリポジトリでやりとりをしていれば、PRが目に触れる機会があるので良いが複数のリポジトリを使い分けているチームだったり…

Red Chainerをコードを変更せずに約2倍くらい早く処理させる

Speee Advent Calendar 2017の5日目の記事です。 4日は僕からGoとポモドーロなGomodoroを一ヶ月運用してみてでした! はじめに 今回はプライベートで参加しているRed Data ToolsというRuby用のデータ処理ツールを提供するためのプロジェクトで作っているRed C…

GoとポモドーロなGomodoroを一ヶ月運用してみて

Speee Advent Calendar 2017の4日目の記事です。 3日は新しいアルゴリズムをリリースするまでのモロモロでした! はじめに 今回は以前作成したGoで作ったPomodoro、その名も「Gomodoro」を一ヶ月開発、運用したのでそのことを書こうと思う。 今日話すこと 技…

GoでCのライブラリを使ったプログラムをクロスコンパイルする

Goは1つのコードで複数のOS, アーキテクチャにクロスコンパイルすることが出来る。 それも面倒な事前準備とかが必要ないのも特徴でGo1.5より前はmake.bashをコンパイルするプラットフォームで実行してみたいなことが必要だったけどGo1.5からは必要なくなって…

AerospikeでUDFを作ってGoから呼び出す

www.aerospike.com Aerospikeの話。 UDFを使う機会があったのでその基本的な操作方法とかをメモとして残しておく。 UDFとは何か? User-Defined Functionsを略してUDF。 ユーザー定義関数でluaを使ってかく。 公式のドキュメントだとこのへんに書いてある。 …

SSHをちょっとだけ楽にする

~/.ssh/configを次のように書いているとする。 実際開発していると複数台アプリケーションサーバーがあってミドルウェアが入っているサーバーがあってとか気づくとたくさんのサーバーのconfigが追加されている。 Host bastion HostName www.xxx.yyy.zzz User…

Goでファイル系のリソースも一緒にビルドして配布しちゃう!

例えば下記のようなディレクトリ構成のGoプロジェクトがあったとする。 . ├── files │ └── sample.txt └── main.go sampleの中身は sample! sample!! sample!!! main.goの中身は package main import ( "bufio" "fmt" "os" ) func main() { f, err := os.Ope…