PCの時限シャットダウン

「まだ社内に居ると周囲に思わせたままコッソリ帰りたい」というニーズがあって 興味を持って調べてみた。

Windows


コマンドプロンプトで以下を入力すると10分後に自動シャットダウンが走る。

shutdown -s -t 600

コメントをアラート表示させたい場合は、

shutdown -s -c "既に退社済みぢゃ!" -t 600

自動シャットダウンが実行される前に止めたい場合は、

shutdown -a

Mac

ターミナルでコマンドを入力すると実現可能。

時限設定

12分後に終了したい場合

sudo shutdown -h +5

時刻指定

7時31分に終了したい場合

sudo shutdown -h 07:31

2018年2月5日20時00分に終了したい場合

sudo shutdown -h 1802052000

git-svn関連

業務で使ったgit-svnコマンド

チェックアウト

$ git svn clone <url>

# 最新のリビジョンだけを取得する
$ git svn clone -r HEAD <url>

ブランチを最新にする

$ git svn rebase

コミットする

$ git add
$ git commit
$ git svn dcommit

ローカルの作業ブランチをリモートブランチ(trunk)とマージする際の手順

  1. git stash
  2. git checkout master
  3. git svn rebase
  4. git checkout <作業ブランチ名>
  5. git merge master
  6. git stash pop
  7. git commit
  8. git checkout master
  9. git merge <作業ブランチ名>
  10. git svn dcommit

プロセスを検索してkillする

psとgrepの組み合わせだとgrepの結果までがプロセスとして表示されて見づらいので、それを回避する方法

pgrepとkillを組み合わせる

$ pgrep -f 'プロセス名' | xargs kill

pkillを使う

$ pkill -f 'プロセス名'

従来の(?)方法

ps とgrepを組み合わせてプロセスIDを割り出し、それをkillする

$ ps aux | grep 'プロセス名'

$ kill プロセスID

重み付けによる抽選ロジック

<?php


// 以下の配列から抽選で一つを抽出したい
$things = [
  'a',
  'b',
  'c',
  'd',
  'e',
  'f',
  'g',
  'h',
  'i',
  'j',
];

// 重み付けをする
// この設定だと5番目のもの($thingsの'e')が最も出やすい
// 0のものは出ない
$rate = '10,20,13,24,35,0,0,0,0,5';
$rate_array = explode(',', $rate);

$weight = 0;
$rated_indexes = [];
foreach ($rate_array as $key=> $r) {
  // 重みが0になっているものは対象外
  if (empty($r)) continue;
  $weight += (int)$r;
  // 重み付け後のインデックス配列
  $rated_indexes[$weight] = $key + 1;
}

// 抽選
$lot = mt_rand(1, $counter);

foreach ($rated_indexes as $key => $index) {
  if ($lot <= $key) {
    $hit = $things[$index];
    break; 
  }
}
// 結果表示
var_dump($hit);

開発業務のためにインストールしたソフト