投稿に紐づくコメントに対するAPIを定義する場合

次のように定義できそうだが、実際の所次のようなルーティングが定義されるので冗長である。

resources :posts do
  resources :comments
end
GET     /posts/:post_id/comments
POST    /posts/:post_id/comments
GET     /posts/:post_id/comments/:id # 冗長なURL
PATCH   /posts/:post_id/comments/:id # 冗長なURL
DELETE  /posts/:post_id/comments/:id # 冗長なURL

実際、次のほうがシンプルである

resoueces :posts do
  resources :comments, only: [:index, :create]
end
resource :comments, only: [:show, :patch, :destroy]
GET     /posts/:post_id/comments
POST    /posts/:post_id/comments
GET     /comments/:id
PATCH   /comments/:id
DELETE  /comments/:id

と考えていたが、これこそが次のオプションの出番だった

resources :posts, shallow: true do
  resources :comments
end

ここまでのまとめ

今さらだけど、rails って便利すぎる shallow: true を徹底して使うと良いのでは?

クエリキャッシュ周り

クエリーキャッシュ状態確認

SHOW STATUS LIKE 'Qcache%';

リセット

RESET QUERY CACHE;

クエリーキャシュ設定

select @@global.query_cache_type;

クエリーキャッシュ有効化(ON) rds では不可

set @@global.query_cache_type = 1;

概要

react.jsで実装レンズページを作ったときの

最小実装

class List extend React.Component {
    constructor(props) {
      super(props)
    }
    render(){
      return (<div></div>);
    }
}

ReactDom.render(
   <List />,
   document.getElementById('app')
)

stateとprops

  • stateは変更してよい、propsは変更しちゃダメ
  • 最上位の親はstateを子のpropsとして渡す
  • stateとはトップレベルの親の持ち物
  • propsは親から渡されてきたstate、またはただの値

setState

stateを変更する

  • ポイント
    • this.setState({count: 1})
    • すぐにthis.state自体がかわるわけではない

stateの設計

  • reactはデータバインディング、stateの設計自体が肝だと思ってる
  • 極力シンプル(少なく)にする
  • 同じstateの値であれば、同じ画面の状態になるように意識する

chrome exteion

Chromeで開いているページのURL一覧をあっという間に作成「Copy All Urls」 | iDEACLOUD/dev https://ideacloud.co.jp/dev/copyallurls.html

Copy All Urls - Chrome Web Store https://chrome.google.com/webstore/detail/copy-all-urls/djdmadneanknadilpjiknlnanaolmbfk

TabCopy - Chrome Web Store https://chrome.google.com/webstore/detail/tabcopy/micdllihgoppmejpecmkilggmaagfdmb

機械学習系

簡単に使えて精度の良い機械学習ライブラリを作ったよ - Qiita http://qiita.com/kazoo04/items/8f155674222b41a8d540

recdiko

harupong/ripdiru: ruby script to record らじる★らじる streaming https://github.com/harupong/ripdiru

twbs/bootstrap-rubygem: Bootstrap 4 Ruby Gem for Rails / Sprockets and Compass. https://github.com/twbs/bootstrap-rubygem

radikoをキーワードで予約する - ザリガニが見ていた...。 http://d.hatena.ne.jp/zariganitosh/20130214/radiko_keyword_preset

Rubyから外部プログラムを起動 - None is None is None http://doloopwhile.hatenablog.com/entry/2014/02/04/213641

itamae

Itamae自分メモ[0] Rails+nginx+puma+CentOSのプロビジョニングをしてみるので基本的な設定とか準備 http://t4traw.github.io/itamae/2016072011-00.html

capistrano

Rails5のActionCableをCapistrano経由でデプロイ - Qiita http://qiita.com/ueokande/items/8d00d7658259221c4a3f

Capistrano 3 で secrets.yml をどう配置するか - Rails Tips - Ruby on Rails with OIAX https://www.oiax.jp/rails/tips/deploy_secrets_yml_with_capistrano3.html

CentOS7, Ruby on Rails 5, PumaでProducrion環境構築@VPS + Capistranoでのデプロイ - Qiita http://qiita.com/eiei19/items/7c08d358c82cb538def0

Capistrano3を最後にもう一度だけ懇切丁寧にまとめてみる - そのねこが学ぶとき http://chroju89.hatenablog.jp/entry/2014/04/12/215628

capistrano3のデプロイを把握する - Qiita http://qiita.com/taizo/items/afff46a260bd11588962

capistrano3のデプロイを把握する - Qiita http://qiita.com/taizo/items/afff46a260bd11588962

Rails4+Capistrano3+pumaで、自動デプロイをしよう! http://ticklecode.com/step14-auto-deploy/

Rails5のActionCableをCapistrano経由でデプロイ - Qiita http://qiita.com/ueokande/items/8d00d7658259221c4a3f

Upgrading from Capistrano 2 to 3 - makandropedia https://makandracards.com/makandra/32813-upgrading-from-capistrano-2-to-3

colorme

カラーミーショップ マニュアル | Google Analytics eコマース設定 https://shop-pro.jp/manual/ga_config

不要なトラフィックを除外! GAで必ず最初に行っておきたい「フィルタ」設定[第7回] | 衣袋教授の新・Googleアナリティクス入門講座 | Web担当者Forum http://web-tan.forum.impressrd.jp/e/2016/07/07/23222

【予告】全ショップのドメインを対象に常時SSL化を行います。 | ECお役立ち情報 ネットショップ運営サービス【カラーミーショップ】 https://shop-pro.jp/news/160330_ssl/

Google ウェブマスター向け公式ブログ: HTTPS をランキング シグナルに使用します https://webmaster-ja.googleblog.com/2014/08/https-as-ranking-signal.html

rails3系、rails4.1未満 で、mysql5.7.3以上を使って rake db:migrate とかすると次のようなエラーが出てしまって migrate できない。

Mysql2::Error: All parts of a PRIMARY KEY must be NOT NULL; 

mysql側で primary key に null が使えなくなったことが原因。 mysql2アダプターのほうの primary key 上での書き方を変更して上げる必要がありそう。

# config/initializers/mysql.rb
class ActiveRecord::ConnectionAdapters::Mysql2Adapter
  NATIVE_DATABASE_TYPES[:primary_key] = "int(11) auto_increment PRIMARY KEY"
end

Postgresql JSON

使えそうなJSON処理関数

1つの配列を要素ごとにレコードに分解する

json_array_elements(information)

値の型を判定する(json_array_elements などを使う時にarray型の値に絞る)

where json_typeof(information) = 'array'
where json_typeof(information) = 'object'

オブジェクトがネストされた構造から値を取り出す

json_extract_path_text(element, 'gender')

サンプル

SELECT json_extract_path_text(el, 'gender') AS gender,
       COUNT(1)
  FROM (SELECT json_array_elements(information) AS el, information FROM results WHERE json_typeof(information) = 'array') AS info
-- WHERE json_extract_path_text(el, 'gender')  = 'female'
 WHERE json_extract_path_text(el, 'gender') IS NOT NULL
 GROUP BY gender;
SELECT information::jsonb FROM results

json型とjsonb型

  • 参考記事
  • json 型
    • 実態は JSON テキストをそのまま文字列として保持しただけのもの
    • 参照するたびにテキストのJSONを毎回パースする => 非効率だ
  • jsonb型
    • 入力時にのみjsonのテキストの解析を行い、正規化されたバイナリ形式で格納される
    • json型よりも値評価の効率が上がっている
  • 結局どっちがいいの?
    • jsonbでもカラムの中身は普通に読める
    • アクセス効率もjsonbのほうが優位
    • 特にjsonbができた以降jsonを積極的に使う理由はなくなったみたい

golang

Downloads - The Go Programming Language https://golang.org/dl/

GitHub - wfarr/goenv: You know, rbenv but for go. https://github.com/wfarr/goenv

install の download = の部分を最新のURLに対応させる必要がある

golang dash button

GitHub - mikeflynn/go-dash-button: A server to handle Amazon Dash button actions; Written in golang https://github.com/mikeflynn/go-dash-button

gobot

Getting Started - Gobot - Golang framework for robotics, physical computing, and the Internet of Things (IoT) https://gobot.io/documentation/getting-started/

goenvをセットアップする | cloudpack.mediasharecloudpack.mediacloudpack https://cloudpack.media/11552

lirc

エアコンの信号をそのまま入れる

lirc の使い方 Raspberry Piで学習リモコン - Qiita http://qiita.com/key_gao_/items/e8394656003f349952d6

chip

golang

C.H.I.P. with Gobot https://gobot.io/documentation/platforms/chip/

gpio

Next Thing Co Documentation https://docs.getchip.com/chip.html#gpio

dash button

Amazon Dash ButtonをただのIoTボタンとして使う - Qiita http://qiita.com/jsoizo/items/3b8bba4160f41aef20f4

golang

Go言語の初心者が見ると幸せになれる場所 #golang - Qiita http://qiita.com/tenntenn/items/0e33a4959250d1a55045

usbからの接続

普通に電源としてc.h.i.pを、macにつなぐことでシリアルコンソールとして 操作することができる

$ ls /dev/tty* | grep usbmodem
> /dev/tty.usbmodemNNNN

$ screen /dev/tty.usbmodemNNNN

wifi設定

ネットワークの設定

$ nmtui

文字化けしてるときの解消

ctrl - a :encoding utf8 eucjp

入れたパッケージメモ

  • vim
  • golang
  • build-essentials
  • git
  • lirc

about gpio

gpioについてのメモ

/sys/class への gpio デバイスの作成

<pin_number> = 対応するpinナンバー

$ cat <pin_number> > /sys/class/export
$ ls /sys/class/export/gpio* # gpio<pin_number> was created
$cat out > /sys/class/export/gpio<pin_number>
$ cat 1 > /sys/class/export/gpio<pin_number> 

chip上のgpioのpin ナンバー

NAME          GPIONUM
PWM0            34
AP-EINT3        35
TWI1-SCK        47
TWI1-SDA        48
TWI2-SCK        49
TWI2-SDA        50
LCD-D2          98 (USED BY 1-WIRE BUS)
LCD-D3          99
LCD-D4         100
LCD-D5         101
LCD-D6         102
LCD-D7         103
LCD-D10        106
LCD-D11        107
LCD-D12        108
LCD-D13        109
LCD-D14        110
LCD-D15        111
LCD-D18        114
LCD-D19        115
LCD-D20        116
LCD-D21        117
LCD-D22        118
LCD-D23        119
LCD-CLK        120
LCD-DE         121
LCD-HSYNC      122
LCD-VSYNC      123
CSIPCK         128
CSICK          129
CSIHSYNC       130
CSIVSYNC       131
CSID0          132
CSID1          133
CSID2          134
CSID3          135
CSID4          136
CSID5          137
CSID6          138
CSID7          139
AP-EINT1       193
UART1-TX       195
UART1-RX       196
XIO-P0         408 (4.3) / 1016 (4.4.11) / 1013 (4.4.13-ntc-mlc)
XIO-P1         409 (4.3) / 1017 (4.4.11) / 1014 (4.4.13-ntc-mlc)
XIO-P2         410 (4.3) / 1018 (4.4.11) / 1015 (4.4.13-ntc-mlc)
XIO-P3         411 (4.3) / 1019 (4.4.11) / 1016 (4.4.13-ntc-mlc)
XIO-P4         412 (4.3) / 1020 (4.4.11) / 1017 (4.4.13-ntc-mlc)
XIO-P5         413 (4.3) / 1021 (4.4.11) / 1018 (4.4.13-ntc-mlc)
XIO-P6         414 (4.3) / 1022 (4.4.11) / 1019 (4.4.13-ntc-mlc)
XIO-P7         415 (4.3) / 1023 (4.4.11) / 1020 (4.4.13-ntc-mlc)

lirc

http://alexba.in/blog/2013/01/06/setting-up-lirc-on-the-raspberrypi/

データベースを先に作成しておく(これは必要ないかも)

createdb データベースネーム;

ダンプファイルからリストア

 pg_restore --verbose --clean --no-acl --no-owner -h localhost -U postgres -d <データベースネーム> <dumpファイルネーム>
Recent Entries