続・毎日温泉に入りたい

見た物や買った物、投資についてを書いてますヽ(* ॑꒳ ॑* )ノダァーッ!!メインブログが凍結されたので転記中です

【tech】やっぱり便利!ある意味エコなMilkode

Milkode - 行指向のソースコード検索エンジン 

Gitの管理リポジトリが16個あるのですが、横断検索検索したいときに不便でした。

古巣で使っていたmilkodeというソースコード用の検索エンジンを利用すると、こう言った煩雑化したリポジトリの検索に非常に効果的です。

導入にあたってはバグの箇所以外は上記公式をご確認くださいませ。

 

milk add -b develop https://github.com/ongaeshi/milkode.git milk

のように記載するとgitから直接引っ張ってこれます。

 

検索用アプリなので使い方は千差あると思います。

前職はメジャーバージョンアップしたタイミングで新しいリポジトリのコピーを作成して、過去の資産を検索用に残していました。

 

RroongaというかGroongaのせいで環境によってインストールがコケる可能性があるのでそれが厄介です。

この場合gemのeventmachineが腐っているようなので、一度

gem uninstall -I eventmachine

でアンインストールし

gem install eventmachine --platform ruby

とすると動きました。

5年ほど前もWindowsrubyを動かす際にバグに悩まされましたが現在もこんなバグあるんだなと。 

【Git】指定したブランチをcloneする

普通にcloneするとmasterが選択されます。

git clone git@github.com:ユーザー名/リポジトリ名.git

git clone https://github.com/ユーザー名/リポジトリ名.git

 

特定ブランチをcloneしたい場合は下記のコマンドを利用する事で実現可能です。

git clone -b ブランチ名 git@github.com:ユーザー名/リポジトリ名.git

git clone -b ブランチ名 https://github.com/ユーザー名/リポジトリ名.git

URLの後に適当な名前を付けておくとその名前でlocalにcloneする事が可能です。

 

 

【Git】cloneしたリポジトリを確認する

いつも忘れてしまうので備忘
コマンドラインでcloneしたリポジトリのフォルダに移動
下記のコマンド実行
git remote -v

↓のように出てくれば確認可能

origin https://glab.name/./.git (fetch)
origin https://glab.name/./.git (push)

 

Presented by「瑣末な問題」

【Git】作業ファイル(ステージング)とのファイル差分

忘れてしまうので備忘

作業ファイルだけ抽出できる都合のいいコマンドないかな〜♨️と探してた時に、よく考えるとHEADと差分があるだけだからこれでいけると気づき納得

git --no-pager diff HEAD --name-only

 

ついでに対象ブランチ同士の比較-ファイル名だけ

git --no-pager diff develop master --name-only

 

--name-only

でファイル名だけ表示

--no-pager

で大量にある場合表示をスキッピングさせない

【tech】Google Apps Scriptを使ってgmail取得

これが一番簡単ですかね。

chromeGoogle Apps Scriptのプラグインをインストールして

GAS(Google Apps Script)のプロジェクト作成、プログラム実行 

function myFunction() {
var threads = GmailApp.search("from:xxxxxxxxxxxxxxxx");
//var len = threads.length;
for(var x = 0; x < 30; x++){
var subject = threads[x].getMessages()[0].getSubject();
var message = threads[x].getMessages()[0].getBody();
Logger.log("------------------------------------");
Logger.log(subject);
Logger.log(message);
}
}

Logger.logで出力したログをGAS上で見るにはスクリプト実行後に、GAS画面のツールバーの「表示」>「ログ」を押下するとログ確認できるビューが表示されます。

 

 

件名、本文以外で取得したい項目は↓とか参考に

 

作成したメソッドを外部から叩く事もできるらしい!それはまた今度try

 

Presented by「瑣末な問題」

【tech】cronで毎分以下間隔設定をする時の注意点

今日日crontabに秒間の設定をしようと思う人が居るかは謎ですが、

職場でリアルタイム処理を設けないで何でもバッチにしたがる遅延魔人がいます。

そのためこう言った内容も重要だなと。

 

パッと思いつく限り、負荷が掛かりそうと思っていたら良い内容見つけました。

確かに監視ツールで見るとLA上がっている杞憂ではなかったわけです。

cronで毎分以下の間隔に設定する時の注意点 - 日本だんでぃ協会

個人的にこう言った場合、スクリプトをデーモンプロセスとして動かすなどとするのが良いんじゃないかなと思ってます。

niceコマンド経由でプロセスの優先度を下げておくと、サーバが高負荷となった場合にプロセスがkillされにくくなります。

実際にどのプロセスがkillされるかは管理者次第なのでおまじない、niceしたところで失う物もないので付けといた方が良いかもしれませんが…

ただ、都合よく優先度下げられる定期処理があるのだろうか…

Presented by「瑣末な問題」

【tech】SQLで総数を出した後の各項目の絞込み

開発と関係のない業務でのsqlは個人的に嫌いなのですが
年月単位での件数を求める必要があり、かつその総数ごとに条件がありました。
うーんGROUP BY 。
基本は下記にまとまってます、
MySQL 日時ごとの集計まとめ - Qiita

count()で数えられるのはnull以外なのでそれを利用する。

SELECT DATE_FORMAT(base_table.rest_date, '%Y-%m') AS 年月''
, COUNT(*) AS '単純総数'
, COUNT(base_table.target_flag) AS 'mainテーブルフラグON総数' 
, COUNT(sub_table._id) AS spare_count 'subテーブル総数'
FROM base_table 
LEFT JOIN sub_table ON base_table._id = sub_table._id 
GROUP BY DATE_FORMAT(base_table.rest_date, '%Y-%m');

多岐にわたる場合はsumで増置していく方法もあります。
sum(case when target_flag=1 then 1 end) AS 'フラグオン総数'

presented by「瑣末な問題」