あいつの日誌β

人生はお酒があれば何とかなります。 drunkard.tokyo

Re:dash を Uninstall したい

以前 MacOSX に Re:dash を install したのですが docker の container が消えない。どうやら restart オプションが作動しているらしい。

% docker container ls
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS             
            NAMES
868ecc6330b0        redash/nginx:latest     "nginx -g 'daemon ..."   4 months ago        Up 50 seconds       0.0.0.0:80->80/tcp
, 443/tcp   redash_nginx_1
764aa13baef1        redash/redash:latest    "/app/bin/docker-e..."   4 months ago        Up 50 seconds       0.0.0.0:5000->5000
/tcp        redash_server_1
38e3ee72d655        postgres:9.5.6-alpine   "docker-entrypoint..."   4 months ago        Up 50 seconds       5432/tcp          
            redash_postgres_1
dc7501fbd634        redash/redash:latest    "/app/bin/docker-e..."   4 months ago        Up 50 seconds       5000/tcp          
            redash_worker_1
40d0ce760000        redis:3.0-alpine        "docker-entrypoint..."   4 months ago        Up 50 seconds       6379/tcp          
            redash_redis_1

どうやればいいんだろうということで調べたところ、以下のようにすれば良いらしい。

% docker update --restart=no 868ecc6330b0 764aa13baef1 38e3ee72d655 dc7501fbd634 40d0ce760000
868ecc6330b0
764aa13baef1
38e3ee72d655
dc7501fbd634
40d0ce760000
% docker rm -f `docker ps -a -q`

おしまい

【第3回】JSフレームワーク(またはライブラリ)× ビアバッシュ 初心者勉強会 in秋葉原 に行ってきた

お酒を飲みながらの勉強会、交流会!楽しくフロントエンド開発を語りませんか!と書いてあったので行ってきました。

f:id:okamuuu:20180805002952j:plain

ビアバッシュ とは

ビアバッシュ(Beer Bash)とは、懇親会の一種としてビールやピザを食べながら語らう形のイベントで、シリコンバレーなどでよく開催されてとかいうなんかそんなの。

どうだった?

一応 LT は各自5分間という事だったのですが、しゃべりたい事があればずっと喋っていられるのでその辺は私が東京のはずれによく行く某PMと同じノリかもしれません。会場を抑えている時間がたぶん18時から21時の3時間ぐらいまでだったので結構お酒飲みながら歓談する時間が短くて残念でした。

なので LT 終わった後すぐに目当ての人に話しかけないとすぐにタイムオーバーになると思います。

詳しいタイムスケジュールは以下のような感じです。

https://sakeganaito.connpass.com/event/92540/?utm_campaign=event_reminder&utm_source=notifications&utm_medium=email&utm_content=detail_btn

あとご飯は各自食べていかないとお腹空きます。

LT の内容

  • 既存のレガシーシステムをモダンにするためにしているこ
  • Apolloの紹介とこれから
  • Blazor C# から始める Web フロントフレームワーク
  • 個人サービスをローンチして、本当にあったここだけの話
  • カスタムフィルタを階層化してテンプレートエンジンを使い倒す
  • react-dnd と react-easy-state
  • LTでマサカリに備える盾としての心得

既存のレガシーシステムをモダンにするためにしていること: @comuttun

10年以上の歴史のあるサービスのレガシーな Web Service を一部 SPA 化したお話。常に改修のタスクが発生する為リプレースする人的なリソースはないが試しに局所的に SPA 化したところすんなり適用できた模様。

興味深い話だったのですが Controller と Template Engine の従来のページの一部(参照系)を WebAPI + nuxt.js で適用したという事なのですが、元々あった Controller と Web API の関数は共通化できたのか、それとも別々にメンテする必要があるのか、元々あった Controller は削除したのでその心配はないのか、という質問をしたかったです。

実はLTが矢継ぎ早で質疑応答の時間がなかったのと交流会の時間が短すぎて聞けなかったのが残念です

Apollo の紹介とこれから: @kdnk

GraphQL を実際に使ったお話。たぶんこの話は聞きたい人多かったんじゃないかと思います。この後 GraphQL をお題にして、話したい人たちで GraphQL について語りました。

Tip for OSS: @kuwahara_jsri

npm publisher になるためのお話。ひと昔前は module を公開しないと1人前でないと思ってた時期が自分にもありました。でもそれは決して間違いではないと思うのでそういうメッセージは時折発信してもらうのはありがたいです。

VueJSで工事写真報告ツールをサーバレスで作ったけどだんだん辛くなってherokuに移行した話: @rsooo

サーバレスが流行っているので逆に Heroku に戻る話なのかと思って不思議に思って聞いていました。

最初は画像を雑に S3 に投げ込んでいたがだんだん履歴を追いたいという要望が増えたので機能を増やしたがサーバレスにしなくてもいいじゃないかと思えるようになったので Heroku に移行したとのこと。不慣れなツールを使わなくても良いとし、その都度チームに最適なツールやミドルウェアを選定するほうが賢いなと思いました。

Blazor C# から始める Web フロントフレームワーク

実はこのときトイレに行ってしまい*1話を聞いてなかったです。すいません。

個人サービスをローンチして、本当にあったここだけの話: @Fujiyama_Yuta

個人的に一番印象に残ったトーク。ビンゴゲームを Firebase で作ったそうです。Firebase Realtime Database の特性をうまく活用したナイスアイデアの上にビンゴゲームは地味に用意大変なので結構需要があるのではないかと思っています。

https://the-bingo.jp/

交流会の時間が始まって真っ先に話しかけたのですが、交流会の時間少なすぎてあっという間にお話が終わってしまいました。

カスタムフィルタを階層化してテンプレートエンジンを使い倒す

SPA にするほどの場面でもないのでテンプレートエンジンを使うという話。結構もっともな話だなと思いました。個人的には何をしたいかによって使うツールを使い分けるべきだと思うので SPA がいくら流行っているからといってそれをすると too much になる場面はあるのでこういう昔ながらの作法を聞かせてもらうのは結構大切なんじゃないかなと思います。

react-dnd + react-easy-state: @okamuuu

以前書いた記事(http://okamuuu.hatenablog.com/entry/2018/05/23/231836)をもう一度頭の中で整理して LT してきました。

で、発表したスライドはこちら: https://speakerdeck.com/okamuuu/2018-08-04-dot-js-beer-bash

ざっくり説明すると react で Drag and Drop するときに react-dnd っていう便利なライブラリがあるんだけど結構 state を引き回すのが大変だからそんなときは react-easy-state っていうモジュールの事を思い出すといいですよ。

state を component と切り離して管理するのはもちろん redux などでもできるんですが、そんなに大げさな事したくない時にとっても便利です。

LTでマサカリに備える盾としての心得: @FruitRiin

タイトルのとおり、登壇者にとってはマサカリのような言葉が生まれてしまう、その背景はエンジニアとして正しい情報をみんなで共有したい。まあそんなんですけどねえ。というお話。まあ個人的にはみんなの幸せを守るためならマサカリになっても仕方ないと思うのですが、自己満足なマサカリになってしまったら悲しいですよね。

パネルディスカッション

というわけで LT の中から一つ議題を選んでそれについて興味がある人たちで話し合うのをみんなで生暖かく見守る時間となりました。

GraphQL について話し合ったんですがフロントエンドの人たちは概ね GraphQL を 好意的に捉えていたんですが、サーバーサイドのエンジニアが異議をとなえていました。というか主に私ですが。

Beer Bash ということもあってお酒を飲んでいたため若干記憶が遠のいているのですが「わざわざ GraphQL に変えるコストに見合う成果があるの?」っていうような事を言った気がします。マサカリをなんとかしようというエモい話の直後に思いっきり投げた気がしますけど。

最終的には色々な意見が出てきてなかなか良い着地ができたと個人的には思っています、たぶん。記憶をなんとか回収して別の記事でまとめたいと思います。

まとめ

JS の勉強会に参加したのは初めてだったんですが、想定していたよりも勉強になりました。あとビール飲みながら、だと気楽でいいですね、とはいえ運営がかなり真面目にやっているのでちゃんとしている勉強会でした。また次回も開催されるらしいです。

あとそれから

私はフリーランスのエンジニアで絶賛お仕事募集中です。フロントでもサーバサイドでもAnsible から React まで対応できます。

*1:この会は休憩は各自が適宜にとる方式

Rails 5 でモデル名を変更したい

備忘録です

bundle exec rails g migration RenameUserTabsToUserCategories

edit

class RenameUserTabsToUserCategories < ActiveRecord::Migration[5.2]
  def up
    rename_table :user_tabs, :user_categories
  end 

  def down
    rename_table :user_categories, :user_tabs
  end 
end

maigrate と rollback ができる事を確認しつつ、クエリを発行して動作を確認する

bundle exec rake db:migrate
bundle exec rake db:rollback

変更したテーブルの modle を rename する*1

git mv app/models/user_tab.rb app/models/user_category.rb

あとは関連する model にまだ user_tabs などが使われているのでそれらを手で作業する。おしまい。

*1:これを忘れていたので注意

沖縄へ五泊六日で旅をして来た(3)

というわけで読谷村(よみたんそん)と北谷(ちゃたん)にも行ってきました。読谷村は道路のそばにバナナがあるような場所です。

f:id:okamuuu:20180711172128j:plain

本当は青の洞窟でシュノーケリングを体験しに行く為に来たのですが慶良間諸島でのダイビングですっかり満足してしまったのと、この後宮古島に行く予定だった*1ので予定を変更して近辺をのんびりドライブする事にしました。私がまだ運転不慣れなので良い練習になりました。

ゲストハウス月と海

ダイビングショップもやっているゲストハウスです。私の肌感だとダイビング好きが集まる宿のような気がします。なかなか楽しい宿でした。スタッフとゲストともに沖縄の海に詳しいので結構有意義な話が聞けました。

設備的にはもともとはぼろ家を自分たちで DIY で修復したものなので、そこまで期待しないほうが良いと思いますが DIY でここまでできるのか、と思うとちょっとワクワクしました。

今回慶良間諸島でのダイビング体験ですっかり満足してしまったので青の洞窟へは行きませんでしたが、宿泊している同じゲストから「土曜日は人が多い」「人の少ない早朝の一番最初の時間帯がベスト」との助言をもらいました。

もし青の洞窟に行かれる予定がある人は覚えておくと良いと思います。ちなみにここの人たちに台風8号について詳しく説明を受けて宮古島行きをキャンセルしました。ここに来ていなかったらそのまま宮古島に行っていたかも。

f:id:okamuuu:20180706223234j:plain

やちむんの里

焼き物に興味がある人はおすすめの場所です。割と好きな雰囲気でしたので次回はお土産買いに来ようかなあ。

f:id:okamuuu:20180711172431j:plain

あと近くにやちむん&カフェ 群青っていう素敵な場所があるので焼き物に興味がなくてもおすすめです。

浜辺のキッチン もめんばる

私はカフェ好きでして、ゲストハウスに泊まっている人におすすめのカフェを聞いたところこちらを教えてもらいました。ここは非常に良い感じでした。天気が良く、 風が気持ちよかったです。お店と店員さんの雰囲気も2重丸でした。

f:id:okamuuu:20180707143651j:plain

砂浜は真っ白でした。砂になる前の石も真っ白。大型犬が散歩がてら海に入ってばしゃばしゃ泳いでました。観光客よりも地元の人たちが来るような場所だと思います。

f:id:okamuuu:20180711174154j:plain

アメリカンビレッジ

北谷にある商業施設です。ここには広い駐車場スペースがあるのですが 8:00 にならないとオープンしないので駐車場を探すのに苦労しました。私は早朝に行って駐車場を探す為にぐるぐるここを周回していました。結果的には車の運転が上達したのでよかったです。車も人もほとんどいないのに見通しが良い交差点を好きなだけ運転できたのでこれはこれで良かったです。最終的にはコンビニエンスストアに駐車して8:00になってから車を移動しました。

f:id:okamuuu:20180711185057j:plain

写真は海辺にあるデポから撮影しました。たぶん夕暮れ時になるとカップルがいちゃいちゃするのに最高の場所なんじゃないかな。早朝は館内をほぼ独り占め状態。その後コーヒーを飲みながら浜辺を散歩しました。アメリカンビレッジは本当は夕方来た方がいいんだと思いますが早朝もそれなりに楽しかったです。

まとめ

そんなわけで沖縄の那覇読谷村・北谷を旅して来ました。車がなくても那覇近辺だけで十分楽しめますが、車で中部まで北上するとそれはそれでまた楽しいと思います。というわけで宮古島へは行けませんでしたが大満足の旅でした。おしまい。

*1:この時点では台風8号を甘く見ていた

沖縄へ五泊六日で旅をして来た(2)

というわけで国際通り牧志公設市場国際通り屋台村で食べたご飯を紹介します。

国際通り: 金月そば 国際通りむつみ食堂店

読谷村(よみたんそん)に金月そば(キンチチソバ)という有名店があるのですが那覇にも支店がでありました。読谷村へは別日程で行く予定でしたが沖縄そば好きなので訪問。むつみ食堂というのは以前あった食堂の名前だそうです。メニューが違ったせいもあるのですが麺がちょっと違ってるような?まあどっちも美味しかったですが。 次回沖縄に行く時は同じメニューを食べ比べてみようと思います。

f:id:okamuuu:20180711160151j:plain

国際通り: そら食堂

沖縄に来て一番最初にご飯を食べたところです。宿泊所に荷物を預けた後16時のチェックインまでまだ時間があるのでその辺りでご飯を食べようとしましたがまだ営業してない店が多く、まだ地理にくわしくなかったので近くで見つけたお店に入店。1000円でタコライスオリオンビール2杯を注文しました。沖縄にはせんべろという1000円でお酒とごはんが食べられる形式がたくさんの店に広がっています。

f:id:okamuuu:20180711162424j:plain

場所と営業時間が便利だったので次回また沖縄に行った時に利用する気がします。

国際通り: 琉歌 沖縄本店

那覇の居酒屋です。なかなか良い雰囲気でご飯も美味しかったです。お値段的には少し観光客向けかもしれません。

f:id:okamuuu:20180711161244j:plain f:id:okamuuu:20180711161329j:plain

牧志公設市場: 株式会社上原ミート 市場前本店

200gの和牛が800円で食べられて、ビール等は店内では販売していないので自由に持ち込んで下さいというとんでもないお店です。

f:id:okamuuu:20180708155700j:plain

脂身少なく、柔らかくて美味でした。かけつけは 200g で800円ですが熟成の場合は1200円です。営業時間が19時までだったご注意下さい。

牧志公設市場: パーラー 小やじ

カンパチ刺しとセロリの浅漬けとらっきょうの塩漬けをいただきました。カンパチはぷりぷりしていて、セロリとらっきょうがお酒に合うのでいつまでも呑んでいられる気分になりました。

f:id:okamuuu:20180711163802j:plain

国際通り屋台村

ジーマミー豆腐ミミガーとアグー餃子をいただきました。国際通り屋台村はいろんな店舗があって歩いているだけでも楽しいのでおすすめです。

f:id:okamuuu:20180711165314j:plain f:id:okamuuu:20180711165336j:plain f:id:okamuuu:20180709200237j:plain

まとめ

基本的にどのお店に行ってもご飯は美味しかったです。個人的にもう一度行ってみたいと思った店は金月そば、上原ミート、パーラー小やじ、国際通り屋台村がおすすめです。あと牧志公設市場近辺のお店はどれも雰囲気があって美味しそうです。

ちなみに月、水、木あたりが定休日の店が多い気がしますのでもし那覇に行かれる方は行きたいお店が営業しているかどうか調べておいた方がいいと思います。

あとそれから

国際通り屋台村は11時からやっています。

f:id:okamuuu:20180709195703j:plain

沖縄へ五泊六日で旅をして来た(1)

本当は沖縄、宮古島へ七泊八日で旅をして来た、というタイトルになる予定だったのですが台風8号の影響で旅の途中で変更しました。ちなみに今回は完全に仕事を忘れて旅したので働きながら旅はしてません。

f:id:okamuuu:20180711155320j:plain

旅の目的

ダイビングをした事なかったので挑戦してきました。ダイビングやっている知り合いに最初はどこで体験したらいいのか聞いたところ「とにかく海が綺麗なところだと満足度が高いのでは?」とアドバイスされたので慶良間諸島、青の洞窟、宮古島あたりを一週間ほどかけて行ってみようと思いました。

そんな訳で当初はこのような日程でそれぞれの海を見てこようと思いました。

台風8号の影響で、結果的にはこんな日程になりました。

そんな訳で結局慶良間諸島でダイビングしただけですが、かなり満足しました。

ゆいモノレール

那覇空港から那覇市内まで10分程度で移動出来きるので大変便利でした。ちなみに Suica 使えません。切符はバーコードがついているのでそれをタッチパネルにかざして通過します。通過した後は切符を回収箱に入れるかそのまま持って帰るかしてください。

f:id:okamuuu:20180711154227j:plain

Y's CABIN&HOTEL

ys-cabin.com

とても綺麗で清潔なカプセルホテル、と言えば伝わるのでしょうか?私はドミトリー形式を利用しました。一泊3600円(2段ベッドの下段)です。ドミトリー形式の2段ベッドは頑丈な作りでないと同じベッドの人が寝返りするたびに響く問題があるのですがここのベッドは蜂の巣のように入れ子になっているので上の段の人の振動はまったく気になりませんでした。

f:id:okamuuu:20180704160931j:plain

荷物はチェックイン当日であれば何時からでも荷物を預ける事ができます。毎日朝10時のタイミングで荷物が多い人は一度荷物を全て部屋から持ち出す必要がありますがホテルに預ける事ができますので日中は身軽に移動が可能です。私は荷物が少なかったで鍵付きのロッカーに閉まって外出しました。ちなみにラウンジがあってそこは宿泊中の期間はいつでも利用する事ができるます。ここに宿泊すれば働きながら那覇を旅できると思います。

f:id:okamuuu:20180711153851j:plain

場所が国際通りのすぐ近くでゆいレール県庁前からすぐなのでとても便利でした。私は予約するときに間違えて朝食つけたのですがキャンセルしてもらったり、荷物の引換券を無くしたときにも親切に対応してもらったりしたのでここのホテルの印象は非常に良いです。

シーマックスダイビングクラブ

www.seamax.co.jp

という訳でダイビングしてきました。当日ホテルまで迎えに来てもらい、港まで移動。港で小型船に乗り込み慶良間諸島まで移動します。

あいにくこの日は曇りで風が強い日でしたので波が高く、少し肌寒かったです。天候にもよると思いますが船の上は結構揺れるので何名か吐いている人がいました、私ももう少しで吐きそうでした。

朝早くからお昼過ぎまでずっと船の上にいることになりますので自信のない方は酔い止めを飲んでおいた方が良いかもしれません。波が穏やかだったら要らないかもしれません。

今回体験ダイビングを3箇所で行ってお値段は26500円でした。天候の関係で一箇所スポットを変更しないと行けなかったので1000円割引されています。

海の中は綺麗で泳いでいる亀にも遭遇しました。天気がもう少しよければさらに幻想的で素敵だったと思います。インストラクターがやたら頼もしかったので安心して楽しい時間を過ごしました。 おかげさまでまたダイビングしたいと思いました。

f:id:okamuuu:20180711154507j:plain

f:id:okamuuu:20180711154526j:plain

f:id:okamuuu:20180711154611j:plain

f:id:okamuuu:20180711154635j:plain

まとめ

という訳で那覇で無事ダイビングを楽しんで来ました。長くなるので那覇のご飯に関しては別の記事にします。

vim を起動したときに editorconfig で <SNR>9_InitializePythonBuiltin: のエラーがでてくる

こんな感じ

Error detected while processing function <SNR>9_UseConfigFiles[26]..<SNR>9_Initialize[47]..<SNR>9_InitializePythonBuiltin:
line   23:
/must>not&exist/foo:1: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation
 for alternative uses

vim から python を動かそうとすると様子がおかしい

:python print 'anything'
E319: Sorry, the command is not available in this version
:!vim --version | grep +python                                                                              
+conceal           +linebreak         +python3           +wildignore

どうやら editorconfig-vimPython を使おうとしているんだけど vim が Python3 を使おうとしている?なんだけど python は 2.7 なんだよなあ。*1

% which python
/Users/okamuuu/.anyenv/envs/pyenv/shims/python
okamuuu% /usr/bin/python --version
Python 2.7.10
okamuuu% python --version
Python 2.7.10

よくわからないからしばらく editorconfig-vim をオフにすることにします。

- call dein#add('editorconfig/editorconfig-vim')
+ " call dein#add('editorconfig/editorconfig-vim')

なんだか最近環境がおかしくなってきたなあ

*1:Python3 は python3 で実行可能