RansackでGoogleの検索フォームのように入力枠をひとつだけにしてその検索語をスペース区切りして複数カラムをLIKE検索したい(add_predicateとransacker)

タイトルからしてややこしいんですけどw

"milk corn"で検索するとこういうSQLを発行したい。

SELECT 
  "users".* 
FROM 
  "users" 
WHERE 
  (
    (name ILIKE '%milk%' OR email ILIKE '%milk%') AND
    (name ILIKE '%corn%' OR email ILIKE '%corn%')
)

なんでこんなことをしてるかというと移行元システムのCGI.pmにベタ書きで実装されてるSQLがこのようになっていて新システムのUI/UXが落ちてると指摘されたためです。

検索フィールドが5個も10個もあるのは嫌だとのこと。(今後、開始終了年月日とかで絞り込みたいとか言われそうなのでRansack使えないとそれはそれで辛い)

Ransackのcont_all, cont_anyだと想定しているSQLにならない。

scope.mergeやAdvancedSearchで検索自体はできるけどparams[:q]を書き換えてるので検索フォーム側とattributesの整合が取れずキーワードを維持できなかったりする。

例えば、name_or_email_contをname_cont, email_contのようにして@q = Ransack.search(search_query)するといった具合。

searchkick(+elasticsearch)なんかも試しだしてこれは盛大に脱線してる、namazuみたいな感じでこれはこれで狙った検索結果にならなかった。

Ransackなしで実装できるけど別テーブルのカラム検索とかsort_linkとかの面倒みないといけないのかと悶々とする。

add_predicateとransackerを使って対応した。

Userモデルはname, emailカラムだけあるとします。

name_or_email_cont_all

puts User.ransack(name_or_email_cont_all: "milk corn".split).result.to_sql
SELECT 
  "users".* 
FROM 
  "users" 
WHERE 
(
  ("users"."name" ILIKE '%milk%' AND "users"."name" ILIKE '%corn%') OR 
  ("users"."email" ILIKE '%milk%' AND "users"."email" ILIKE '%corn%')
)

name_or_email_cont_any

puts User.ransack(name_or_email_cont_any: "milk corn".split).result.to_sql
SELECT 
  "users".* 
FROM 
  "users" 
WHERE 
(
  ("users"."name" ILIKE '%milk%' OR "users"."name" ILIKE '%corn%') OR 
  ("users"."email" ILIKE '%milk%' OR "users"."email" ILIKE '%corn%')
)

Ransackで簡単に検索フォームを作る73のレシピ - 猫Rails

「045 半角スペース区切りの文字列で検索する」のとおりに述語(predicate)を追加する

config/initializers/ransack.rb

Ransack.configure do |config|
  config.add_predicate 'has_every_term',
    arel_predicate: 'matches_all',
    formatter: proc {|v| v.split.map {|t| "%#{t}%"}}
end

name_or_email_has_every_term(cont_all相当)

puts User.ransack(name_or_email_has_every_term: "milk corn").result.to_sql
SELECT 
  "users".* 
FROM 
  "users" 
WHERE 
(
  ("users"."name" ILIKE '%milk%' AND "users"."name" ILIKE '%corn%') OR 
  ("users"."email" ILIKE '%milk%' AND "users"."email" ILIKE '%corn%')
)

Ransackで簡単に検索フォームを作る73のレシピ - 猫Rails

「049 full_nameを検索する」のとおりに対象となるカラムをransackerで定義する

app/models/users.rb

ransacker :search_fields do
  Arel.sql('CONCAT(name, email)')
end

search_fields_has_every_term

puts User.ransack(search_fields_has_every_term: "milk corn").result.to_sql
SELECT 
  "users".* 
FROM 
  "users" 
WHERE 
(
  CONCAT(name, email) ILIKE '%milk%' AND 
  CONCAT(name, email) ILIKE '%corn%'
)

別テーブル(Product.name)も検索したい場合

app/models/users.rb

ransacker :search_fields do
  Arel.sql('CONCAT(name, email, products.name)')
end

でも、これはこれでCONCATしてるからindex使えてないのが辛い。

あとArel.sql('CONCAT(name, ' ', email, ' ', products.name)')のように半角スペースを挟み込まないと予期しない検索結果になりそうではある。

ミニマリストと粗大ごみ

昨日の夜、粗大ごみとして3点をマンションのゴミ収集所に持っていった。

事前に市のホームページにアカウントを作り、粗大ごみの種類をフォームで入力し、コンビニで粗大ごみ券を買って貼り付けた上でマンションのゴミ収集所に配置した。

今朝、出社する際に回収されてるかな?と思いマンションのゴミ収集所を覗いてみると1点が見当たらない。

Omronの体重計だ、Amazonで2000円くらいで買ったやつだ。

どうやら盗まれたらしい。

金額の大小はさておき盗んだ人が使ってくれてるだろうか?メルカリに売っただろうか?それほどの価値はないと近所の川に不法投棄してないだろうか?

などと妄想をしつつ、結局は盗まれてしまったのだからどうしようもないと電車に乗った。

電車内で「粗大ごみ 盗まれる」などと検索すると発言小町的なページが表示されまじまじとそのレスを眺めていたのだが、さまざまな意見がありそれは自分の想像を超えていた。

途中で気持ち悪くなってみなくなってしまった、消化不良だ、様々な意見があった。

はっきりいえることは粗大ごみ券が貼られた粗大ごみは市、自治体との契約であり、それを第三者が盗むことは窃盗罪にあたる。

そのような輩がこの近辺にいるということが悲しくて仕方ない 。

ギターで覚える音楽理論を読んだ

いろんな音楽理論の本があるけどギターの指板と連動してないというかピアノを元に説明してるのが多い感じでわかったようなわからないようなそんな感じがあるんだけどこの本はよかった。

用語をみただけではササッと説明できないんだけど、 強進行、完全5度下降進行、四度進行と順次進行が基本にあるんだなあとか、ノンダイアトニックコードっていったいぜんたいどこから出てきてるの?みたいなのがなんとなくわかった感じになったのはためになった。

あとはPart4の07の実践的ギターボイシングでバンドスタイルでのギターの役割というかルートと五度はベースがやってくれるので省略して3度と7度とテンションで演奏してみてはどうですか?みたいなのはそんなの考えたこともなかった。

確信を持ってプレイするというか耳と手に染み込ませるのはこれからたくさんの時間がかかりそうだけど、わかんなくなったときに立ち戻れる本があるのは心強いなと。

0キロカロリーの続き

結局なんだかんだと水曜日くらいには冷蔵庫にいろいろぶちこんでしまった…

  • 豆腐
  • 納豆
  • キムチ
  • 山形のだし
  • めかぶ
  • カッテージチーズ
  • プロセスチーズ
  • そばめし
  • 冷凍うどん
  • 冷凍ほうれん草
  • オートミール

冷蔵庫は断舎離できない、自分にとってめちゃくちゃ大事なものだと気付かされたわけだ。

愛してるよ、冷蔵庫。もっと冷凍室がでかくなるといいね、チルドもほしいよね。

家の中を1週間だけ0キロカロリーにしてみる話

去年くらいから自炊をするようになった

他人に食べてもらうことを目的とした料理ではないのでかなり適当にやってるし塩分とか化学調味料とか気になるけど自炊している

冷蔵庫にスーパーで買ってきた食材を詰め込んで朝昼晩3食とそれとは無関係の間食をする癖がついてしまった

家に食べ物があるとすぐ作れるしすぐ食べれる、なんならお酒も欲しくなって買いに行ってしまう

  • 白米
  • オートミール
  • うどん
  • パスタ

  • カッテージチーズ

  • キムチ
  • もずく
  • 山形のだし

  • たまご

  • 豆腐
  • 納豆
  • プロセスチーズ
  • クリームチーズ

  • 牛肉

  • 豚肉
  • 鶏肉(胸肉)
  • たら
  • ミックスシーフード

  • 冷凍ブロッコリー

  • 冷凍パプリカ
  • 冷凍だいこん
  • 冷凍とうがん
  • 冷凍和風5種野菜
  • 冷凍洋風5種野菜
  • 冷凍たまねぎ
  • 冷凍オクラ
  • 冷凍ごぼう+にんじん
  • 冷凍アボカド
  • 冷凍ブルーベリー
  • 冷凍ミックスベリー
  • ごぼうささがき1kg

  • バナナ

  • オレンジ
  • カット野菜
  • もやし
  • なめこ
  • えのき
  • 大豆水煮
  • こんにゃく
  • しらたき

  • トマトジュース

  • オレンジジュース
  • アセロラジュース
  • 飲むヨーグルト
  • 豆乳
  • 牛乳
  • インスタントコーヒー

  • ミックスナッツ

  • ポテトチップス
  • チョコレート
  • 冷凍ピザ
  • 冷凍お好み焼

  • プチッと鍋

  • レトルトカレー

  • ビール

  • 発泡酒
  • 99.99
  • ハイボール
  • レモンサワーのもと

という感じでやりたい放題だ

先ほど家の中を0キロカロリーにした+冷蔵庫の電源を切った

この状態で1週間過ごしてみる(無駄な間食が減るはず...減ってほしい...減らしたい...)

厳密にはプロテインサプリメント、ガム、炭酸水、果実酢(アサイー、レモン)はあるんだけど、そこはノーカンだしん!

禁煙して1年たった

禁煙して1年たったので半年前に書いたブログを振り返ってみる

3月末から禁煙外来に通い始めて、9月末で半年禁煙できてる

そこからさらに半年たった次第

過去、何度も禁煙しては失敗しを繰り返してきたけど、最近は飲みの席でもタバコのことをすっかり忘れてしまっていて、このまま禁煙し続けられそう

ほんとそのとおりで飲むのと喫煙がワンセットだった

物足りなさを感じていたのに、いまではなんとも思わない、単に飲むのを楽しめていることに我ながら驚いている次第

タバコは百害あって一利なし、時間、お金、健康を失うし、副流煙で周りに悪影響あるし

喫煙による時間、お金、健康を失っている感覚がないし、副流煙を気にしなくていいのはストレスフリー

歯が黒ずんで汚くなるし

近所の歯医者に通って虫歯を全部直した

親知らずもかなりびびったけど腹くくって抜いた

いま思い出したけど、麻酔してるとはいえ、意識が完全にある状態で万力みたいなのでグリグリと歯をひっこ抜かれるのは恐怖としかいいようがない

10月から値上げして一箱500円(年間18万円)くらいになるし、

ということで18万浮いた

渋谷の喫煙所は閉鎖したし、飲食店ではどんどん吸えなくなってる

最近は外で吸ってるひとあんまり見かけないかも

自分がそういう場所に足を運んでいないのもあるけど

タバコミュニケーションとはなんだったのか

タバコ吸ってるひとが少数派になっていたりして価値を感じられなくなってきている

これまでもそうだったけど、今後も喫煙が歓迎されるなんてことはない

確かに今後も歓迎されることはない

禁煙してから1ヶ月1kgペースで増量してて、再来週の健康診断でメタボ認定されそう

結局1ヶ月1kgペースで増量してて76kgになった

きっちりメタボ認定されております

どっかを引っ込めればどっかが突き出てくる感じでなかなかうまくいかない

ほんとうにうまくいかない

タバコをやめて正解だと思っている

でも、いままで当たり前のように吸ってきたたばこが吸えない制約、ストレスとまでいかないが欲求がすべて食欲に変換されてしまっている感じ

糖質とりまくり、お酒も飲みまくりで際限がない

半年後は+6kgで82kgになっているんだろうか?w

もし82kgになっていたらタバコ代18万+9万=27万でライザップ通うことをここで宣言します (いや、いますぐ行ったほうがいいのか?w 高いカネ払ってライザップ行っても糖質制限して筋トレしてください以上のことは言われないんだけど…)

健康診断

f:id:kanetann:20181104040659j:image

普通にめちゃくちゃ太ってて草

標準体重61.9kgに対して74.3kgでした

愚鈍なるデブっすね、財布盗まれたら100mも走って追っかけられないほどのデブです、泣き寝入りです、あ、豚っすね、やられたい放題、かわいそうな僕

腹囲男〜84.9ってなってるけど91.3とかになっててH、男は84.9までです、残念、もしかして女なのかな?

血液全般はたばこを辞めたことが功を奏したのかAに急浮上

代謝の糖代謝は前日に普通に酒飲んでたのが影響してると思う

脂質の中性脂肪はいままでの残念な生活態度から導かれし完全なるデブです、おめでたい身体です

尿酸値が年々増加しているのはビールをひたすら飲んでるのが影響してて、このままビールを呑み続けるといつの日にか男3.7〜7.0の範囲を超えてしまう日が訪れることでしょう、2019年はレモンサワー、焼酎などを嗜む人間に生まれ変わろうと画策しております(といってもビールめちゃうまいし幸せだし好きだしその瞬間のためだけに生きてるようなもんなんだよな…)

健康なのか不健康なのか、たばこを辞めたことが功を奏してる一方、ただのデブ感に成り下がってる感半端ない
腰痛は相変わらず回復する様子はなく毎日腰に手を当てながら痛みを堪えながらかろうじて生きております

体重が一気に増えて腰が悲鳴あげてるのは間違いなくて、ここ二ヶ月位はひたすら自炊(!)して糖質制限しているものの結局腹減って家の近所の溝の口の家系ラーメンだとかてんやのオールスター天丼だとか日高屋のモツ野菜ラーメンだとかかつやの全部乗せカツ丼とかバグースのビールとか好き放題注文しまくってて全くもって自炊している意味はない、デブまっしぐらございます

そんな2018年の健康診断でした、あれ以来ずっと痩せるスイッチはいんねえし、ただのデブまっしぐらでかわいそう

ジムとか筋トレとか有酸素運動とか糖質制限とかそういうことじゃなくてただただ毎日飲んでるビールを辞めれば問題の大半が解決できる気がしてならないけど半ばアル中のような状態になっている自覚があるものの習慣というのは空恐ろしいという感じでどうにもならない

禁煙できたと思ってたら酒に溺れてるところがあってなにかを辞めると何かで埋めようとするのは人間の性かもしれない
お酒は人付き合いもあって禁酒を始める前からかなり難しいことがわかってるのだが、自分の健康を第一に考えた場合、酒も完全に辞めなければならないのかもしれない

酒でしか繋がれない人間はその程度の価値しかないのは間違いないわけだし、改めて立ち返ってみれば自分の健康を害してまでつながらなければいけない人間関係などあるはずもなく、大概はくだらない希薄な人間関係でありそれを維持する余裕などないというのはあるのにもかかわらず酒に溺れてて悲しい人間だ、もう人間ですらないのかもしれない
自堕落な人間は恥を振りまく醜悪な存在であり生きてる価値はないのです

腰痛

2週間前の金曜日あたりから急に腰痛になった

当初は歩くのも大変で手で腰を支えながら一歩ずつすり足で歩いて移動していた

病院でレントゲンを撮ってもらったところ、骨に異常はないらしくぎっくり腰(原因不明)とされた

ヘルニアだなんだと言われて不安しかない

2週間経ってもあまり状況は変わらずいよいよMRIを受けなければならないのかもしれない

24時間常に腰をかばいながら生活していて健康で何も意識していなかったときのことを忘れてしまっている

ずっとこういう状況が続いていて、急激に気力が削がれきているのを実感している

38歳になってついに焼きが回ってきたのかもしれない

仕事でISMSの資料を作ったりしているけど、内容がオープンクエスチョンすぎて本当に辛い、OS、ミドルウェア、アプリケーションとか主語がめちゃくちゃ曖昧だから分けてほしいし(OSはNGだけどアプリはOKとか)、人それぞれでセキュリティレベルはまちまちだし属人的な回答になるの当たり前すぎる

表計算を目的としないEXCELファイルはこの世から滅びてほしい

腰痛くてたまらないのに伝言ゲーム+小さなツッコミにちまちま回答したりしてて仕事の速度、質が低すぎて一生仕事が終わらない感じがしてきていて悲壮感しかない

全部Yes/Noで答えられるクローズドクエスチョンにするか、

脆弱性検知ツール+ServerSpecでフォローしてオープンクエスチョンの数を減らすとかしたほうが客観的指標で現状分析できて回答の質が同じになるからそうすべきだって考えてほしいよな…

そんなことなんとも思わずにただただ仕事してる気になってる人たちマジで頭おかしいんじゃないかって思うくらいには最近は腰痛で余裕がない

腰痛で余裕がないです

健康は当たり前のものじゃないのです

禁煙

f:id:kanetann:20180930235927j:image

 

3月末から禁煙外来に通い始めて、9月末で半年禁煙できてる

過去、何度も禁煙しては失敗しを繰り返してきたけど、最近は飲みの席でもタバコのことをすっかり忘れてしまっていて、このまま禁煙し続けられそう

タバコは百害あって一利なし、時間、お金、健康を失うし、副流煙で周りに悪影響あるし、歯が黒ずんで汚くなるし、10月から値上げして一箱500円(年間18万円)くらいになるし、渋谷の喫煙所は閉鎖したし、飲食店ではどんどん吸えなくなってる
これまでもそうだったけど、今後も喫煙が歓迎されるなんてことはない

禁煙してから1ヶ月1kgペースで増量してて、再来週の健康診断でメタボ認定されそう
どっかを引っ込めればどっかが突き出てくる感じでなかなかうまくいかない

プログラミングフォント Ricty Diminishedがいい感じ

プログラミング用フォント Ricty Diminished http://www.rs.tus.ac.jp/yyusa/ricty_diminished.html

セットアップがなんとなく面倒でmacosデフォルトのOsakaフォント使ってたんですが、Ricty Diminishedはほんと見やすくて捗ります、ありがとうございます

Ricty Diminished DiscordはDとか0とかのあの感じがある意味かっこいいけど採用するのやめました、みやすさ重視、ストレスフリー重視です

他にもCica、Takao、Migu、Myrica、Noto、VLゴシック、ゆたぽん、Rounded、S2Gらぶ、Source Code Pro、Ubuntu Mono、Anonymous Proとかおすすめされてましたが、個人的にRicty Diminishedで優勝しました、ありがとうございます、優勝です

MHW マムタロト鑑定武器当たりを手に入れた数の振り返り

片手剣   RARE8 0水   0爆破 0幻
         RARE7 0土砂 0痺賊
双剣     RARE8 1水   1氷
         RARE7 0蛮顎
ランス   RARE8 1雷   3水   1睡眠
         RARE7 0惨爪
ガンス   RARE8 0水   0毒   2睡眠
         RARE7 1王
スラアク RARE8 0雷   1麻痺
         RARE7 0角
チャアク RARE7 0角
操虫棍   RARE8 3水   0麻痺
ライト   RARE8 1射撃 1狙撃 3迫撃
         RARE7 1王
ヘビィ   RARE8 0援撃 2爆撃
         RARE7 1角   0賊
弓      RARE8 0雷   0水   0爆破

ランスの惨爪 ヘヴィの賊

これが欲しくて結構頑張ってたけど取れなくて残念無念

ライトボウガンの狙撃と迫撃はマム太郎で活躍した、射撃は業【カルマ】の上位互換だけど通常弾速射運用は使いこなせる気がしない

結局、スラッシュアックスの麻痺だけかな〜

鉄拳はライフワーク

近所でやってた大会に出てました、ヤスシですヤスシです…

ファランたのしい

試合後に負けた相手に教えてもらったんですが、起き攻めで青ライ重ねても左横されたら余裕でスカるとのこと

さすが聖帝、対策も読みもしっかりしてはります

日々精進です

youtu.be

MHWを15時間やった感想

たのしー

いままでのモンスターハンターシリーズの面倒な仕様が改善されててよい

でも、結局モンハンはモンハン、ずっと同じことの繰り返しだし、これを新シリーズが出たらゼロから始めるのに飽きてきててかなりオッサン化が進行してる

最近はYoutubeとかTwitchとかで他人のゲームプレイをみて満足してしまう自分がいる

別に自分でプレイしなくてもゲームの構造が理解できていたら満足してしまえる

何がポイントでどうすべきか理解できてたら自分でカネを払ってプレイしなくても満足してしまえる

自分より上手なプレイヤー、自分にはない発想、自分より情熱を傾けてるひと、自分にはない反応速度、自分にはないトークテクニック

こういうのをYoutubeなりTwitterなりブログなりである程度楽しめてしまうので、わざわざ自分でカネと時間を費やして追体験する価値ってなんだろうとは思ってしまう

でも、とりあえず買ったからにはクリアするし、突き詰めたい

積みゲーは罪ゲー

そうやってゲーム離れが加速していってる

MacBook Mid 2017を買った

MacBookAirのバッテリーを交換して誤魔化したりしてたけど本当にお亡くなりになった ま、10年くらいもったので潔く諦めよう

さて、買い替え候補として以下を検討して悩みに悩みまくってMacBookにした

  • msi GS63VR Stealth Pro
    • PUBGと鉄拳7をノートPCで遊びたかった
  • Surface Pro4
    • 久しぶりにWindows使ってみるのも悪くないかな?
  • iMac Retina 5Kディスプレイ 3.8GHzプロセッサ 2TBストレージ
    • PUBGと鉄拳を大きい画面で遊びたかった
  • MacBook
    • ちょっとしたブラウジングとかしかしないならこれが一番軽くて取り回しやすい

ということでMacBookです、そんな込み入ったことはしてないし、ゲーム面白いだろうけど時間のムダ、YoutubeとかTwitchで満足するのでこれでいい、これが正解

セットアップしてて気づくのはデフォルトから外れたショートカットキー設定しすぎてて再現するのが辛い

あとchrome keyconfigがchrome webstoreになくてめちゃくちゃ辛いんだけど、こればっかりはマジで困る、これからどうすればいいんだ…

chromecastを買った

「OK, Google テレビをつけて」をやってみたいだけの人生だった

chromecastのセットアップ自体は15分くらいでサクサク終わった

でも「OK, Google テレビをけして」は反応するのに「OK, Google テレビをつけて」は無視されるという片手落ちの状況

うちのテレビが古いからしゃーないか…買い換えるしかないか…と半ば諦めつつ調べてたら素晴らしい記事を発見

Google Home】声でテレビを操作!OFFは出来るのにON出来なかったのを解決 | 次の誰かが迷わぬために http://dare-tame.com/google-home-tv-onoff/

うちのは2009年製のAQUOS 32型で、シャープはファミリンクという機能があり、テレビの設定画面からポチポチ有効化してみたところ反応するようになりました

ああ、便利すぎ

次はHueブリッジを買いに行こう、amazonサイバーマンデーで安くなるの期待してたけどダメでおまけに発送が12/15以降だったのでまたビックカメラに突撃してこよう