Diary

@ssig33

GraphQL について思うこと

という問題がまずある。ヘビーな API コールは想定せずに、 API の型情報を規定して各レイヤーに共有する仕組みとして使うならいいんだろうけど、しかしそれオーバースペックじゃねーかな。

まあなんかいろいろ事情はあるとは思いますが。 URL っていうシステムを捨てるメリットがあるかどうかは、、、

12 Sep 2017 Tue 18:31

秋葉原いくと全然代わり映えのしないパーツショップみたいのが沢山あって まじで意味わからん。いやなんか店ごとに色つけてるよとかあんのかもしれないけど、普通にゲームするために部品買う分にはどこで買ってもかわらないでしょ。

こういうふうに非効率な小規模な販売店が大量に存在するコストというのがどこに現わているかというとそれこそが「ASK 税」なのだった。

本質的には ASK は取引先をある程度の規模の販売店のみに絞り、オペレーションコストを最適化することによって利益を最大化させるはずだ。しかし、なんのかんので秋葉原という街を PC 街として維持するコストは今後も払い続けるつもりではあるようだ。

そのコストをエンドユーザーが負担する理由などなにも無いということに気付いた今、皆が海外通販を利用するようになってしまった。 GPU はともかく CPU は保証もクソもないしね。

ASK としても問題は認識しているだろうし、そもそもスリッパも一部大規模店にのみ重点的に卸すというような行動をとっていた。今後は海外通販との比較の上で価格決定を行なわざるを得ないだろうし、一部大規模販売店への傾斜というのは必然的に強まるだろう。

PC パーツの街としての秋葉原は完全に終了していくものと思われるし、それを寂しいと感じる人ももはやほとんどいないのだろう。

07 Sep 2017 Thu 15:00

redux-api-middleware についてのものすごく表面的な理解

この週末自作 Web アプリに redux と redux-api-middleware を入れるということをやっていた、特に redux-api-middleware はよく理解してなかったので。これまで俺がどうしていたかというと、通信にかんすることは他のコンポーネントにぜったいに影響を与えさせないみたいなことを維持させて axios でアレするのと redux を使うのを併用するみたいな地獄みたいなことしてた、 redux-api-middleware 使うとコードの見た目キモくて嫌いなんだ、、、でもそうも言っておられん社会情勢なので、、、

背景

redux-api-middleware という名前について

redux ではフローの中で副作用を扱うことを禁止している。この為 API アクセスとかは出来ないので、それをなんかこう上手いところやってくれる middleware という仕組みを用意している。

公式ではロギングを例になんかまあいろいろ説明を書いてくれている。ちなみに読んでない。なんでロギングを例にするんだ、あきらかにみんな興味あるのは HTTP アクセスでしょ、こういう微妙に利用者に嫌がらせっぽいことしてくるのが気に食わない、、、

API アクセスという副作用を伴う作業をうまいところやってくれるライブラリが redux-api-middleware

どう使うのか

action creator 側に以下のように書く

import { CALL_API } from 'redux-api-middleware'

export default {
  load: ()=> {
    return {
      [CALL_API]: {
        endpoint: '/api',
        method: 'GET',
        types: ['REQUEST', 'SUCCESS', 'FAILURE'],
        credentials: 'same-origin',
      }
    }
  }
}

このようにしたあと、ふつうに load を dispatch する。 CALL_API とかそういうのはもうそういうもんと思っておく!!!

credentials: 'same-origin' をつけないと Cookie を使ってくれない。

types というのは reducer が受け取る action type 。リクエスト開始されると一番目の名前でアクションが、完了すると二番目の名前でアクションが、失敗すうと三番目の名前でアクションが発生する。

なのでリクエスト成功して state 更新したいときは reducer には

const reducer = (state = initialState, action)=>{
  switch(action.type){
    case 'REQUEST': 
      return {
        loading: true
      }
    case 'SUCCESS':
      return {
        data: action.payload
      }
    case 'FAILURE':
      return { fail: true }
    default:
      return state;
  }
}

これでコンポーネント側では this.props.loading が true ならローディングインジケーターを出して this.props.fail が true ならエラーメッセージを出して、あと this.props.data になにか入っとけばそれでなにか表示する みたいにすればいい。

感想

内部とか、 redux の middleware の根本的な仕組みとか一切理解しなくてもわりと表層的な理解でガシガシ書けるのでいい気はする。する、、、、

04 Sep 2017 Mon 18:26

OSS 版 Fastladder で LDR と全く同じインターフェイスでフィード読む というようなことをやっていきたい人がいると思います。

1. さくら VPS 契約する

1,706円/月 のメモリ 2GB プランがいいと思います。ストレージは SSD じゃなくて HDD にしときましょう。

2. 環境のセットアップ

面倒がすくないと思うので、標準 OS の CentOS 7 でサーバーを起動してください。このへんよくわからん人はさくらのマニュアルみて。

3. Docker のインストール

root ユーザーか sudo 実行できるユーザーで以下を実行してください。 SSH とか分かんない人はあきらめるか調べろ!!!

# curl -fsSL get.docker.com -o get-docker.sh
# sh get-docker.sh
# service docker start

これで Docker インストールされます。

4. git のインストールと構成設定をダウンロードしてくる

# yum install git -y
# git clone https://github.com/ssig33/compose-fastladder

5. データベースのセットアップ

# cd compose-fastladder
# docker-compose run fastladder ./bin/rake db:create db:migrate

6. fastladder の起動

# docker-compose up -d

これでできあがり。これでちょっと待ってると http://さくらVPSのIPアドレス:8080 であなたの Fastladder にアクセスできます。

これがなにやってるのかよく分からない人に向けたメッセージ

これで何が起きているのか分かるようになると普通にそれだけで飯食っていけるのでやっていってみたらどうでしょうか。

01 Sep 2017 Fri 15:42

Rails だけやってると知識偏ってキャリア破滅するのは絶対にあるので 、とりあえず Ruby 分かるなら Sinatra + ActiveRecord でなにか書いてみるといいんじゃないかなあと思う。

28 Aug 2017 Mon 10:39

Rails 5.1 + webpacker + React でアプリを書いてみたが ボイラープレートっぽいコード一瞬で生成してくれるだけで結構うれしいんだけど、だけど、、、

24 Aug 2017 Thu 16:25

前に似た感じの日記書いてた時、 2 年で記事百本とかだった。

http://text.ssig33.com/

これ 1 年で 300 本書いたらしいんで、 Twitter っぽい UI だと強い。

14 Aug 2017 Mon 22:47

チームにとって最適なやり方は?とか言ってると結局自転車小屋になるんで ある程度はトップダウンで決めた方がいいし、チームに日本人が多いなら構成員の多くは自分の意見より場の空気を優先してしまう。よって結局のところ空気を作れる人のトップダウンになる。

名目上の意思決定機構と実質上の意思決定機構が常に一致していないと本当にえらいことになります。

14 Aug 2017 Mon 22:46

メモ: Debian stretch で terminal つきで最新の Vim をビルド

依存ライブラリ

$ sudo apt build-dep vim
$ sudo apt install libgnomeui-dev

build-dep だけだと gvim ビルドできない。 build-dep が信用できないというのはいったいどういうことなのか。

ビルドとインストール

まあふつうに。

$ ./configure --with-gnome --with-features=huge --enable-terminal  --enable-gui=gnome2 --enable-gnome-check=yes
$ make
$ sudo make install
12 Aug 2017 Sat 17:48

なんかいつのまにかにここに投稿できなくなっていたので直したんだけどなんなんだ

12 Aug 2017 Sat 15:24

チーム構成員全員にリーダーシップをもとめる理由 について、よくいわれるのが

  • べつにリーダーじゃないひとでもリーダーシップをとったことがあればあんまりおかしなことはいったりやったりしない

みたいなやつ。これはこれで重要な話なんだろうけど、リーダーシップをとったことがあるひとが組織に少ない場合以下のような問題が起きます

  1. リーダーシップをとることはできる/主体性があり決断力はとにかくある という奴が組織の構造を無視して力をふるいまくるようになる
  2. 「リーダーシップをとることできる」という人間なのでめちゃくちゃな決断をしまくる
  3. 組織のもつ常識とは全然ちがう意味不明な決断がくりかえされ、みんながこまる

「リーダーシップをとることできる」という人間にはいろんなタイプがあります。

  • ガハハおじさん
  • 陰湿だが決断の急所を抑えることが得意
  • などなど

リーダーシップとか決断力とかも結局のところ資源なので、数をそろえないと意味がない。

28 Jul 2017 Fri 00:35

open fastladder フィードが購読できないっていう渋いバグがあったんですが 、この度何となく自作リーダーから open fastladder に引っ越そうという気持ちになったので直しました。

27 Jul 2017 Thu 22:47

シュテファン・ツヴァイク 『ジョゼフ・フーシェ : ある政治的人間の肖像』 読んだ

僕は以前からジョン・エドガー・フーヴァーに興味があって、フーヴァーの精神的な先駆者としてジョセフ・フーシェという人がいるということは知っていた。ただかの有名な伝記すら読んでいないという状態だった。どちらかというとフランスに関してはヴィドックへの関心が深かったという事情がある。この際だからということで読んでおいた。

実際のところ、フーシェが運用していた諜報網はどういうものだったのか、またその結果得られる大量の情報をどのようなシステムで管理していたのかといった問題については全くこの本からは知識を得られなかった。 19 世紀に片足を突っ込んでいるツヴァイクにとってそうした情報システムは自明のものではないと僕は以前から考えていた。近代的な情報システムがヨーロッパにおいて整備されたのは 1890 年代後半から 1900 年ごろにかけてというのは以前論じた。ただまあツヴァイクが物心つく頃にはその整備プロセスの最末期であっただろうし、故にツヴァイクは「情報社会ネイティブ」第一世代というのが実際のところなのかもしれない。ツヴァイクはフーシェの情報システムの詳細について何も記していない。

ツヴァイクは明らかにフーシェに惚れ込んでいる。それは、情報社会を自明のものとして享受する最初の世代としての、先駆者への敬意なのだろう。それはそれでいいのだけどとにかく期待外れの本ではあった。

23 Jul 2017 Sun 23:13

まあここ数日はうまくいっとる

22 Jul 2017 Sat 19:51

Cloud At Cost での Docker 安定運用

Cloud At Cost に限らない話なのかもしれませんが、、、

  • CentOS のアップデートをさぼらない、ちゃんと 7.3 まで上げる
  • devicemapper は安定しない、 overlay のほうがいい

これだけでだいぶ違う。

19 Jul 2017 Wed 11:47

謎の不具合でノードが即死する、、、

18 Jul 2017 Tue 14:55

原因が全く不明だが certbot が CentOS で正しく動かない という問題があり、どうにも解決できないので Docker のなかの Debian で動かしたら動いた

18 Jul 2017 Tue 12:54

conoha で debian 使うと安定しないのではという仮説のもと centos にしてみた

15 Jul 2017 Sat 10:23

node.hostname で管理すると結局 SPoF ができてしまう

15 Jul 2017 Sat 00:25

落ちまくるデータベースサーバー消して再構築した

15 Jul 2017 Sat 00:24

カーネルパニックに悩まされている状態

11 Jul 2017 Tue 23:26

デスクトップ Linux に帰ってきた のだが、やっぱ macOS は本当にクソだったんだなって実感する。 iOS アプリの会社で仕事してるので Mac 使ってるんだけど、普段は Ruby JS Go を書いてるんだから Linux を使っているべきであった。必要なときだけ macOS を使えばいい話で。

家に置いてる開発サーバーに xrdp 入れていろんなマシンから RDP でログインしてやっている。どこからでも同じ開発環境使えて便利。

04 Jul 2017 Tue 19:39

RSS とか今みんなどれくら読んでるものなのか。 自作のリーダーとクローラーを作ってそれに大満足しているせいで世では今みんなどういうふうにサイト読んでるか全く知らない。

03 Jul 2017 Mon 22:48

VPN サーバーを立てては気づいたら壊していた みたいの繰り返していて、自分の中でちゃんと VPN 組むのまじで鬼門みたいな気持ちだったんですけど、ふとルーターの設定画面をみたら VPN サーバーの設定があり、俺はこれまでなにやってたんだという気持ちになった。

それにしても docker run で気軽にわりとまともに動く VPN サーバーが立つという時代はなかなか来ないものである。

03 Jul 2017 Mon 22:46

暑いなか図書館いったら休館日だった

03 Jul 2017 Mon 17:15

Heroku へのデプロイ Ruby アプリとかでも最近どんどん Container Registry 使ってる。

buildpack がどうのとか Heroku 特有のクソみたいな話題を全部忘れることができたので最高に近い。

03 Jul 2017 Mon 17:14

知り合いの都議二人とも再選していた

03 Jul 2017 Mon 16:32

xrdp が以下のようなエラーで接続できない時の直しかた

0.9.x の話です。

[20170702-12:55:19] [INFO ] A connection received from ::1 port 50178
[20170702-12:55:20] [INFO ] ++ created session (access granted): username ssig33, ip 0.0.0.0:54550 - socket: 12
[20170702-12:55:20] [INFO ] starting Xorg session...
[20170702-12:55:20] [DEBUG] Closed socket 9 (AF_INET6 :: port 5920)
[20170702-12:55:20] [DEBUG] Closed socket 9 (AF_INET6 :: port 6020)
[20170702-12:55:20] [DEBUG] Closed socket 9 (AF_INET6 :: port 6220)
[20170702-12:55:21] [DEBUG] Closed socket 7 (AF_INET6 ::1 port 3350)
[20170702-12:55:21] [DEBUG] Closed socket 8 (AF_INET6 ::1 port 3350)
[20170702-12:55:21] [INFO ] Xorg :20 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp  
[20170702-12:55:31] [ERROR] X server for display 20 startup timeout
[20170702-12:55:31] [INFO ] starting xrdp-sessvc - xpid=20458 - wmpid=20457
[20170702-12:55:31] [ERROR] X server for display 20 startup timeout
[20170702-12:55:31] [ERROR] another Xserver might already be active on display 20 - see log
[20170702-12:55:31] [DEBUG] aborting connection...
[20170702-12:55:31] [INFO ] ++ terminated session:  username ssig33, display :20.0, session_pid 20456, ip 0.0.0.0:54550 - socket: 12
[20170702-12:58:30] [INFO ] shutting down sesman 1

/etc/X11/Xwrapper.config を編集して

allowed_users=anybody

にすると直る。

02 Jul 2017 Sun 13:31

2017 にやる FTP サーバーのたてかた

人生において自分で FTP サーバーというのを構築したことがなかったのだが、この度なんと仕事で FTP サーバーを建てることになった(今は 2017 年なのに)!!!システム間連携に FTP サーバーを指定してくるシステムがあったので。それってどうなの間あるけど契約のある相手どうしの連携ならありなのかもしれない(なしかもしれない)。一応言い訳しとくと、こっちが FTP サーバーたててむこうがれ取りにくるとかではなくて、むこうが FTP サーバーたててあってこっちがそこに上げるみたいな話。テストには FTP サーバーいるよねってなった。

いずれにせよやらねばならなかった。おれはやるぞやるぞ、そうかやるのか、やるならやらねば。

現代人なので Docker hub を見ていたところいまいち使いづらいイメージばかりなのだが、一個まともに動くのあった。 bogem/ftp ってのがそれ。

docker run -d -v /home/vsftpd \
                -p 20:20 -p 21:21 -p 47400-47470:47400-47470 \
                -e FTP_USER=ユーザー名 \
                -e FTP_PASS=パスワード \
                -e PASV_ADDRESS=外部から見えてるそのサーバーのIPアドレス \
                --name ftp \
                --restart=always bogem/ftp

これでやっていけます。

30 Jun 2017 Fri 13:50

Next