デスクトップPC(Lenovo H520s)のHDDをSSDに変更

自宅のデスクトップPCでストレスを感じることが多くなってきたので、HDDからSSDに移行することにしました。

対象のPCは、Lenovo の H520s という4年くらい前に購入したPCです。

SSDは、CrucialのTLCで480GBのものを購入しました。

このSSDには、Acronis True Image HDのライセンスがついているので、移行はこのソフトを使います。アクティベート方法と、シリアルナンバーが書かれた紙がはいっているので、それにしたがってインストールします。(ソフト自体は、日本語にも対応しているので、英語わからなくても迷うことはないかと)

「ディスクのクローン作製」というメニューがあるので、そのままウィザードに従って進めるだけです。思った以上に簡単に終わりました。

元のHDDを外して、SSDに付け替えます。SSDが2.5インチなので、付け替えには下記を使用しました。

ベンチマークの結果です。(左がHDD、右がSSD)

f:id:onozaty:20160530184016p:plain

メーカ値だと、シーケンシャルな読み込みで540MB/秒となっていますが、今回SATA2.0での接続となった(SATA3.0が見当たらなかった)ため、そこで頭打ちとなっているのかもしれません。

かなり快適になった(vagrant upで1分待たされる&ひきずられて動作が重たくなるといったことが無くなった)ので、大満足です。

Redmine: チケット一覧のコンテキストメニューをクリック時に処理を挟み込む (View customize plugin)

チケット一覧のコンテキストメニューからステータスを変更しようとした際に、アラートを出したいといった質問があったので調べてみました。

単にイベント差し込めばいいよねと、簡単に考えていましたが、コンテキストメニューを表示しようとしたタイミングでサーバに問い合わせて、DOMを生成していました。しかも、その後に呼ばれるようなメソッドも無いので、フックさせることもできなそうです…

clickイベントをdocumentなどの親要素に対して設定して、click対象が該当の要素だったら制御するようにしようとしましたが、リンクになっているので、親要素にclickイベントが通知されたタイミングでは、すでにリンクが押されてしまっています。

ということで、しょうがないので、クリックする直前(マウスオーバのタイミング)で、リンクを無効にして、さらにクリックイベントを差し込むといった方法を取ることにしました。

/*
Path pattern: /issues$
Type: JavaScript
チケット一覧のコンテキストメニューでステータス変更を無効に
*/
$(function() {
  var handler = function() {
    alert('コンテキストメニューからステータスを却下には出来ません。');
    return false;
  }

  $(document)
    .on('mouseover', '#context-menu a[href*="status_id%5D=6"]', function(event) {
      $(this)
        .attr('href', '#')
        .off('click', handler)
        .on('click', handler);
    });
});

上記は、ステータスを却下にしようとした際に、アラートを表示するサンプルです。

複数回マウスオーバしても問題ないように、設定済みの可能性があるイベントを外してから設定するようにしています。わかりずらいコードになりましたね。。

第10回redmine.tokyo勉強会にてView customize pluginについて発表してきました

第9回のLTに引き続き、View customize pluginについて発表してきました。

今回の発表では、View cutomizeの設定方法に関するノウハウを詰め込みました。View customizeを使おうとしている方の役に立てばと思っています。

なお、発表の時に、参加者の方でView customizeを使ったことがある方に挙手をお願いしたところ、20名近くいらっしゃいました。利用してくれる方が増えてきているのが、とてもうれしかったです。

声をかけていただいたredmine.tokyoスタッフのみなさま、ありがとうございました。

GitHubのリポジトリ名変更で、元リポジトリへのアクセスはリダイレクトされる

GitHubでリポジトリ名を変えた場合、元リポジトリに対してのアクセスもちゃんとリダイレクトして新リポジトリに方に飛ばしてくれます。

なので、公開済みのリポジトリの名前を変えてしまって、各種URLが変わってしまっても、とりあえずエラーとなることはありません。

Redmine: View customize plugin の v1.1.4 をリリースしました

View customize plugin の v1.1.4 をリリースしました。

リリース内容

バグ修正

Redmineのバージョンアップに伴い、おかしくなっていた部分を修正しました。

  1. 削除時に確認ダイアログが表示されない問題対処 (Redmine3以降(Rails4.2となったことが要因))
  2. 設定画面のCode欄の高さが低すぎる問題対処 (Redmine3以降?)

機能追加

HTMLに表示ページのPath情報と、適用されたスクリプトのidを埋め込むようにしました。

<!-- [view customize plugin] path:/issues/2 -->
<!-- view customize id:2 -->
<script type="text/javascript">
//<![CDATA[
$(function() {
  $('#top-menu > ul')
    .append('<li><a href="/issues">全てのチケット</a></li>');
});
//]]>
</script>

設定確認の役に立てばと思っています。

Ansibleのdefault(omit)

default(omit) を使うと、未定義の場合にその項目自体の指定が無かったことにできます。

- name: touch files with an optional mode
  file: dest={{item.path}} state=touch mode={{item.mode|default(omit)}}
  with_items:
    - path: /tmp/foo
    - path: /tmp/bar
    - path: /tmp/baz
      mode: "0444"

上記だと、item.modeが定義されていなかった場合、modeの指定自体が無かったことになります。

他に配布するようなRoleだと、結構使いそうです。(指定ができるようにはしておいて、何もなければ処理しない)