動かざることバグの如し

殿、温めておいたバグがこちらでございます

Railsでrakeタスクから別のタスクを呼び出す

環境

やりたいこと

Railsのtaskから別のタスクを実行したい。

方法

Railsのタスクはbundle exec rails xxx:xxxxのように実行するが、結局実態はただのrakeタスクなのでinvoke()を実行すれば良い

namespace :sample do
   task hoge: :environment do |t|
    puts "hoge"
  end
  
  task piyo: :environment do |t|
    puts "piyo"
    Rake::Task["sample:hoge"].invoke
  end

rails sample:piyoを実行するとpiyoからhogeが実行される。

piyo
hoge

引数を受け取る場合はinvokeメソッドで渡せば良い

namespace :sample do
  
  task :hoge, [:name] => :environment do |task, args|
    puts "hello ! #{args.name}"
  end
  
  task piyo: :environment do |t|
    puts "piyo"
    Rake::Task["sample:hoge"].invoke("taro")
  end

piyo
hello ! taro

となる

stat.inkの統計CSVのスキーマ

game-ver 2.2.1 #ゲームバージョン
lobby-mode gachi 
lobby standard 
mode yagura
stage tachiuo
time 106
win bravo
knockout TRUE
A1-weapon momiji # A1は必ず投稿者になる
A1-kill-assist 3
A1-kill 1
A1-assist 2
A1-death 3
A1-special 1
A1-inked 413
A1-rank a-
A1-level 41
A2-weapon 52gal_deco
A2-kill-assist 2
A2-kill 2
A2-assist 0
A2-death 5
A2-special 0
A2-inked 221
A2-rank a+
A2-level 28
A3-weapon splatscope
A3-kill-assist 0
A3-kill 0
A3-assist 0
A3-death 3
A3-special 0
A3-inked 284
A3-rank a-
A3-level 31
A4-weapon kelvin525
A4-kill-assist 1
A4-kill 0
A4-assist 1
A4-death 5
A4-special 1
A4-inked 278
A4-rank a-
A4-level 22
B1-weapon bucketslosher_deco
B1-kill-assist 5
B1-kill 5
B1-assist 0
B1-death 1
B1-special 2
B1-inked 421
B1-rank a-
B1-level 19
B2-weapon liter4k_scope
B2-kill-assist 9
B2-kill 7
B2-assist 2
B2-death 1
B2-special 3
B2-inked 511
B2-rank a+
B2-level 52
B3-weapon sshooter_collabo
B3-kill-assist 5
B3-kill 3
B3-assist 2
B3-death 1
B3-special 1
B3-inked 311
B3-rank a+
B3-level 60
B4-weapon hotblaster_custom
B4-kill-assist 0
B4-kill 0
B4-assist 0
B4-death 0
B4-special 0
B4-inked 0
B4-rank a-
B4-level 41

MySQLでSleepのコネクションを一発で殺す方法

MySQLでSleep状態のコネクションを一気に開放したくなるときってありますよね?(ない

まぁ主にRailsたんが勝手にコネクションプーリング張ってDBの接続数圧迫してしまってるときに減らす目的だが

環境

手順

まず対象のDBにログインして

select * from information_schema.processlist where Command = "Sleep"

でSleepになっているコネクションを抽出 *をつけているのは本当に殺していいのかの確認

問題なさそうなら

select *,concat('KILL ',id,';') from information_schema.processlist where Command = "Sleep"

を実行 すると

kill xxxxx;
kill xxxxx;

のようにkillコマンドがひたすら表示されるのでそれをコピって実行

Sequel Proなら結果を貼り付けて右側の「すべてのクエリを実行」をクリックすれば簡単

再度select * from information_schema.processlist where Command = "Sleep"を実行して減っているか確認

参考リンク

テーブルを検索フィルタリングしてくれるJSライブラリ「jquery.ex-table-filter」

やりたいこと

テーブルと検索フォームがあって、デフォルトではテーブルにはすべてのデータが表示されているが、検索フォームに文字を入力すると、入力したワードとマッチした 行のみが表示されるようにしたい。Ajax?そんなんいらんわボケ

それを一発で実現してくれるJavascriptライブラリがcyokodog/jquery.ex-table-filter

環境

  • jQuery依存
  • 本家では1.xを使っていたが3系のバージョンでも動作確認できた

サンプル

See the Pen pKMbod by thr3a (@thr3a) on CodePen.

ダウンロード

以下からZipをダウンロードして適当に解凍すればおk

cyokodog/jquery.ex-table-filter: テーブルフィルタリング機能を提供する jQuery プラグイン

コード

サンプルを見たほうが早いが、実際のJS部分はたったの一行 #mytableがターゲットのテーブルで#myfilterが検索フォームのinput要素だとして、

$('#mytable').exTableFilter('#myfilter');

って書くだけ。

ただし、デフォルトでは全カラム(列)が対象になってしまっているので、特定のカラムのみに絞りたい場合は

$('#mytable').exTableFilter({
  filters : {
    1 : '#myfilter'
  }
});

のように書く。1はカラムのindex番号。サンプルでは名前に相当する。

ほかにもたくさん機能がある。サンプルも充実しているので公式サイトを確認すべし

汎用性重視のテーブルフィルタリング系 jQuery プラグイン | CYOKODOG

Ubuntuでスタティックルートを永続的に設定する

環境

  • Ubuntu 18.04
  • 16.04でも同様

Ubuntu 静的ルーティング追加」とかでググると以下のようなサイトが出てくる。

Ubuntu 16.04 のスタティックルートの設定でハマった話 - try,try,try

多くのサイトでは2つの方法を紹介していて、1つ目は/etc/network/interfacesにpost-upでipコマンドを叩く方法

auto enp0s8
iface enp0s8 inet static
    address 192.168.1.10
    netmask 255.255.255.0
    post-up ip route add 192.168.9.0/24 via 192.168.0.1

2つ目は/etc/network/if-up.d/static-routes.shスクリプトを置く方法

#!/bin/sh
ip route add 192.168.9.0/24 via 192.168.0.1

こちらは確かにservice networking restartでコケる。

が、そもそもUbuntuのネットワークの設定をNetworkManager経由で行っているとどちらの設定も反映されない

NetworkManagerのときの設定方法

だいぶ前置き長くなったけど /etc/NetworkManager/dispatcher.d/02-staticroutesに以下を作成

#!/bin/sh
ip route add 192.168.9.0/24 via 192.168.0.1

これでservice NetworkManager restart でイケた。

参考リンク