作者別: chiyama

Programming, コンピュータ

Redmine の Workflow 定義を直感的におこなう

Redmine では、マトリックスにチェックを入れることで Workflow を定義します。

慣れればこれはこれでいいのですが、直感的ではないですし、編集した結果どのようになるのかもわかりづらいです。

ちょっと調べたところ、Google chart API を使って図にするプラグイン redmine_workflow_viz が見つかったものの古くて最近の Redmine で動かないようです。また、グラフを見るためには Save をしなければいけないため、やっぱりちょっと不便です。

そこで、編集中の Workflow の状態をリアルタイムに見ることのできるプラグイン、workflow_graph を作りました。ブラウザ上で描画をおこなっているため、チェックのオンオフに連動して表示が更新されますしレイアウトも好きに調整できます。

workflow_graph from JCGS on Vimeo.

参考にしたサイト:

未分類

Windows10 で Alt-Tab を押したときにサムネイル表示をしないようにする

Windows10 で Alt-Tab を押してアクティブなウィンドウを切り替えようとすると、ウィンドウのサムネイル表示をするようになっています。これ、一見するとカッコよくてウィンドウの中身も見えるため切り替えがしやすそうなんですが、実際に触ってみると情報過多で見づらい上に、Alt-Tabを押してからウィンドウ一覧を表示するまでコンマ数秒の遅れが発生します。

ウィンドウの切り替えは頻繁かつ無意識に行う操作なので、このホンの少しの遅れが大きなストレスとなります。そのような場合、以下のコマンドを管理者権限つきのコマンドプロンプトから実行した後にエクスプローラを再起動すると従来の通りアイコン表示に切り替わります。

reg add HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer /v AltTabSettings /t REG_DWORD /reg:32 /d 1

コンピュータ

ネットワークトラブル(現在進行形)

去年末に Intel Core i7 8700K が出たタイミングでこれまで使用していたサーバーをリプレースしたのですが、ネットワーク周りのトラブルがずっと続いていてホトホト困っているので対応の履歴を残してみます。

起こっている現象

ある日突然(数時間おきの場合もあれば一週間以上大丈夫な場合もある)社内ネットワークが落ちてしまい、外部接続はおろか内部も接続が切れてしまう。

調べてみると HUB が死んでいるようで、その HUB に繋がっている計算機が接続できなくなっている。

さらに調べてみると、ファイルサーバーや Web サーバーなどを兼務している計算機で NIC が死んでいることがわかった。この計算機の OS は下記のような感じ。Ubuntu 16.04。

neo@matrix2:~$ uname -a
Linux matrix2.XXXX.co.jp 4.13.0-32-generic #35~16.04.1-Ubuntu SMP Thu Jan 25 10:13:43 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
neo@matrix2:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION=”Ubuntu 16.04.3 LTS”
neo@matrix2:~$

ログを確認すると NIC がリセットされていることがわかる

Feb 6 13:13:11 matrix2 kernel: [80014.946129] e1000e 0000:00:1f.6 enp0s31f6: Reset adapter unexpectedly
Feb 6 13:13:11 matrix2 kernel: [80014.946287] br0: port 1(enp0s31f6) entered disabled state
Feb 6 13:13:15 matrix2 kernel: [80018.988532] e1000e: enp0s31f6 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
Feb 6 13:13:15 matrix2 kernel: [80018.988605] br0: port 1(enp0s31f6) entered blocking state
Feb 6 13:13:15 matrix2 kernel: [80018.988614] br0: port 1(enp0s31f6) entered forwarding state
Feb 6 13:13:52 matrix2 kernel: [80055.906251] e1000e 0000:00:1f.6 enp0s31f6: Reset adapter unexpectedly
Feb 6 13:13:52 matrix2 kernel: [80055.906522] br0: port 1(enp0s31f6) entered disabled state
Feb 6 13:13:56 matrix2 kernel: [80059.956583] e1000e: enp0s31f6 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
Feb 6 13:13:56 matrix2 kernel: [80059.956662] br0: port 1(enp0s31f6) entered blocking state
Feb 6 13:13:56 matrix2 kernel: [80059.956670] br0: port 1(enp0s31f6) entered forwarding state
Feb 6 13:14:46 matrix2 kernel: [80109.922310] e1000e 0000:00:1f.6 enp0s31f6: Reset adapter unexpectedly
Feb 6 13:14:46 matrix2 kernel: [80109.922620] br0: port 1(enp0s31f6) entered disabled state
Feb 6 13:14:50 matrix2 kernel: [80113.984597] e1000e: enp0s31f6 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
Feb 6 13:14:50 matrix2 kernel: [80113.984657] br0: port 1(enp0s31f6) entered blocking state
Feb 6 13:14:50 matrix2 kernel: [80113.984660] br0: port 1(enp0s31f6) entered forwarding state

こういった内容が延々続いている。また、ルーターと ping で疎通確認をすると、最初に Reset adapter unexpectedly が起きた時点で接続が切れているらしいことがわかる。

現時点での解決策

以下の手順を踏むと、しばらくの間症状が出なくなる

  • 問題が起きている PC の電源を完全に落とし、電源ケーブルも抜いて数十秒待った後に起動
  • HUB の電源も一度切って入れなおす

HUB の電源オンオフやマシンの再起動でも一時的には治るが、大抵すぐに同じ問題が起きる。

これは到底解決策とは言えないので、根本的な原因の調査と対応をおこなう必要がある。

調査内容

まずは HUB, NIC, ネットワークケーブルそれぞれの不調を疑ったので、ひとつづつ交換してみる。

  • HUB → 別のメーカー・型番のものに交換しても同じ症状が起きる
  • ネットワークケーブル → 交換しても同じ症状が起きる
  • NIC はオンボードなので、BIOS で殺したうえで USB 接続タイプの NIC を使用してみる → 同じ症状が起きる

次に、マザーボードの不調を疑ったので新たに別のメーカー、型番のものを調達して交換したものの症状は変わらず。

GRUB での ASPM 無効化

カーネルオプションで ASPM を無効化するとよいという内容が見つかったので、GRUB で ASPM を無効化

/etc/default/grub で設定

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash pcie_aspm=off”

→ 解決せず。

BIOS での ASPM 無効化

BIOS で ASPM を無効化

→ 解決せず。

TSO 無効化

Reset adapter unexpectedly で Google 先生に聞いてみるといくつかのサイトが引っかかる。

TSO 無効化をするとなおると書いているので試す。

/sbin/ethtool -K enp0s31f6 gso off gro off tso off

起動時に毎回実行する必要があるので、/etc/rc.local にも記述しておく。

→ 解決せず。

NIC のドライバの更新

NIC のドライバを更新してみる。

更新後の環境は以下の通り

neo@matrix2:~/tmp$ ethtool -i enp0s31f6
driver: e1000e
version: 3.2.6-k
firmware-version: 0.2-4
expansion-rom-version:
bus-info: 0000:00:1f.6
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no
neo@matrix2:~/tmp$

→ 解決せず。ただ、ドライバが最新になっていないかも?要確認。

(ToDo)disabling enhanced C1 power saving state (C1E) in the BIOS settings

https://superuser.com/questions/1270723/how-to-fix-eth0-detected-hardware-unit-hang-in-debian-9

(ToDo)Update Firmware

neo@matrix2:~/tmp$ lspci -nn -s 00:1f.6 -v
00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection (2) I219-V [8086:15b8]
Subsystem: ASUSTeK Computer Inc. Ethernet Connection (2) I219-V [1043:8672]
Flags: bus master, fast devsel, latency 0, IRQ 134
Memory at df300000 (32-bit, non-prefetchable) [size=128K]
Capabilities:
Kernel driver in use: e1000e
Kernel modules: e1000e

neo@matrix2:~/tmp$

もしかして解決?

再度問題が発生し、サーバーを再起動するとシステムディスクにエラーが発生して正常に起動できない。
コンソールに以下のようなメッセージが延々と出力される。EXT4-fs error ということなのでファイルシステムがおかしいようだが、fsck をしても正常だと言われてしまう。

結局いろいろ試してもこの問題は解決しなかった。ただ、このままだとサーバーが止まったままになってしまうので手持ちの HDD に dd でイメージをコピーしてそちらから起動したところ、何の問題もなく動作するようになった。

システムディスクに使用していた SSD が壊れていたのかもしれないが、ストレージの問題ならイメージのコピー中にエラーが出たりコピーしたイメージが壊れるなど何か問題が起きるような気がするのだがそんな様子もない。(dd の場合、エラーも含めてコピーしてしまうという話はありそう。。。)

この SSD はサーバーリプレース時に新規購入したものなのでまさかこれが壊れるとは思っていなかった。心当たりとしては、システム更新時に最初に使用していたマザーボードを電源周りのトラブル(煙を吹いた!)で交換しているので、その時に SSD にまで何か影響を及ぼしたのかもしれない。

いろいろと釈然としない部分はあるが、ひとまず現在の環境で様子見をしてみる。

コンピュータ

Windows10 上で、タスクバーのサムネイル表示をおこなわないようにする

マウスカーソルをタスクバーのアプリケーションのところに持っていくと、ウィンドウのサムネイルが表示されます。
でも、、、正直サムネイルの中身って似たような内容なので判別できないよっ!!意味ないよっ!!

ってことで、サムネイル表示しないでウィンドウタイトルがリスト表示されるようにします。

以下の二つのコマンドを管理者モードで立ち上げたコマンドプロンプトから実行するだけ。

reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband /v NumThumbnails /t REG_DWORD /reg:32 /d 0
reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v ExtendedUIHoverTime /t REG_DWORD /reg:32 /d 36000

コンピュータ

Windows10 で Caps lock を Ctrl にする

OSインストールのたびにネットの海をさまうことになるので自分用メモ。

以下の内容をhoge.reg とかのファイルに書いてダブルクリック。

REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
“Scancode Map”=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00

これで Caps lock が Ctrl になる。元々の Ctrl はそのまま。

コンピュータ

Linux 上で NVIDIA の GPU のファンをコントロールする

ちょっとハマったのでメモ。

Ubuntu で NVIDIA の GPU を、X を使用しない状態(headless)で動かしているときにファンコントロールをする方法。

何も考えないで nvidia-settings を使うとエラーになってしまう。

cluster@cluster:~$ sudo nvidia-settings -a [gpu:0]/GPUFanControlState=1
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused

ERROR: The control display is undefined; please run `nvidia-settings –help` for usage information.

X を使用しなくてもそのための設定が必要なので nvidia-xconfig を使って設定ファイルを生成する。

sudo nvidia-xconfig -a –cool-bits=31 –allow-empty-initial-configuration
sudo DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 nvidia-settings -t -q GPUUtilization

そうすると、実行できるようになる。DISPLAY と XAUTHORITY は指定しておく必要があるっぽい。

cluster@cluster:~$ sudo DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 nvidia-settings -a [gpu:0]/GPUFanControlState=1

Attribute ‘GPUFanControlState’ (cluster:0[gpu:0]) assigned value 1.

cluster@cluster:~$ sudo DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 nvidia-settings -a [fan:0]/GPUTargetFanSpeed=50

Attribute ‘GPUTargetFanSpeed’ (cluster:0[fan:0]) assigned value 50.

Mental ray

mental ray 終了

mental ray が遂に開発終了となったというニュースが流れてきました。Wikipedia によると 1989 年から開発されていたとのことなので、実に 28 年に渡って開発が続けられてきたソフトウェアということになります。

ここ数年はさすがにかつての勢いは見えず、nVidia に買収されてからは新しい GPU レンダラにバトンタッチするんだろうなという雰囲気がビシビシと伝わってきていたんですが遂にその時が来たようです。この blog でも Metntal ray カテゴリがあるくらいいろいろとお世話になったので感慨もひとしおです。

確かに無くなってしまうのは惜しいものの、進化の早いレンダラという分野の中で 28 年も開発が続けられたと考えれば驚異的で、天寿を全うしたと言ってもいいでしょう。開発者の皆さん、おつかれさまでした。

SICP

SICP を読んでみる #83 第二章 pp.120-121

先月末は旅行に行ったり、その旅行の間に滞った仕事をさばいたり月末締切のモロモロをやっつけたりで全く手がつけられなかったです。いくら忙しくても何とか時間を取ってちょっとづつでも進められるようにしないといけないですね。ということで三週間ぶりに気を取り直して再開。

三週間ぶりだとさすがにどこまで何をやったか忘れてしまっているので復習からやらないとです。学生時代、夏休みとか平気で二か月くらい勉強しない期間があったんですが、今思うと恐ろしいです。二か月も何もしなかったら全部綺麗に忘れちゃいますよね、、、、

本文

2.5.3 記号代数から。

SICP の文章、久しぶりに読むと全然頭に入ってこないです(汗。過去のメモを見つつ整理。

SICP

SICP を読んでみる #82 第二章 pp.119-121

2.5.3 記号代数の続き。

本文

多項式の演算を要素毎に分解して考える。

加算 : 同じ次数の項の組み合わせ
(5x^2+3x+7) + 3x → 5x^2 + ((3+3)x) + 7 → 5x^2 + (6x) + 7

乗算 :
(5x^2+3x+7) × 3x → (5x^2)×3x + 3x×3x + 7×3x → 6x^3 + 9x^2 + 21x

一通り実装がおわって汎用算術演算システムへの組み込みがおわると add/mul を用いて多項式演算を自動的に扱うことができるようになる。
これはちょっと感動。

SICP

SICP を読んでみる #81 第二章 pp.118-119

問2.86 はちょっと気力切れでパス。ぐぬぬ。

本文

2.5.3 例:記号代数
多項式の算術演算をするシステムの設計をおこなう

不定元:変数のこと

話を簡単にするために一元多項式を扱う→(y^2+1)*x^3+(2y)*x+1 も一元多項式の組み合わせということでいいのかな?

今回は 5x^2+3x+7 と 5y^2+3y+7 は別のものとして扱う(構文形式として扱う)