さくらのクラウドでRedmine
プロジェクトというかToDO管理がしたくて、やるならメールでチケット登録できてかんばん式管理もできるといいなということで、Redmineを選択。
さくらのクラウドでスタートアップスクリプト使うとRedmineのインストールまで一発OKで環境構築の時間削減できて良さげ。
セットアップに20分ぐらいかかるとのことなので、弱虫ペダルを読む。
意気揚々ブラウザでアクセスしてみる
Apacheです。こちらのページを参考に対応しました。
Apache上でRuby on Railsアプリケーションを動かす/Passenger(mod_rails for Apache)の利用 — Redmine.JP
passengerはインストール済みだったので、
# gem list | grep passenger passenger (5.0.28)
passenger-install-apache2-moduleを実行して、デフォルトのままEnterで処理を進め、
# passenger-install-apache2-module Welcome to the Phusion Passenger Apache 2 module installer, v5.0.28. <snip> <IfModule mod_passenger.c> PassengerRoot /usr/local/rvm/gems/ruby-2.3.0/gems/passenger-5.0.28 PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.3.0/wrappers/ruby </IfModule> <snip>
最後あたりにApacheの設定が表示されるのでコピーして、空のpassenger.confに貼り付けして、Apacheを再起動。
# vi /etc/httpd/conf.d/passenger.conf # /etc/init.d/httpd restart
再度ブラウザでアクセス。やったね。
チケット登録して完了してくと、仕事やってる感はすごい。
各省HPのIPv6対応状況を調べてみた
数週間前に「全スマホでIPv6接続を」ってニュースが流れてました。www.itmedia.co.jp
スマホ(端末)にIPv6割り振っても、コンテンツ提供者がIPv6対応してなければ。。。回線事業者(ISP)がIPv4への疎通性を提供しなければならないのかってことで、各省HPのIPv6対応状況を調べてみた。(2015/11/20現在)
結果は五分五分ってところでしょうか。なお、外務省はアカマイを利用しているようです。
うるう秒が2015年7月1日に挿入された。
うるう秒が2015年7月1日に挿入され、早1週間が経過しました。
2015年7月1日8時59分頃から待ち構え。
$ ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== *ntp-b3.nict.go. .NICT. 1 u 509 1024 377 8.011 -0.132 0.017 +ntp1.jpix.ad.jp 210.171.225.76 2 u 523 1024 377 6.776 -0.076 0.042 +ntp.tut.ac.jp 133.243.238.244 2 u 921 1024 377 16.271 -0.040 0.049 -ntp3.jst.mfeed. 133.243.236.17 2 u 1024 1024 377 6.541 -0.556 0.142
きたコレ。ズレた。(offset)
$ ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== *ntp-b3.nict.go. .NICT. 1 u 112 1024 377 7.945 -843.60 106.717 +ntp1.jpix.ad.jp 210.171.225.76 2 u 123 1024 377 6.758 -951.51 106.788 +ntp.tut.ac.jp 133.243.238.244 2 u 522 1024 377 16.339 -887.23 105.849 -ntp3.jst.mfeed. 133.243.236.17 2 u 625 1024 377 6.559 -1000.3 101.681
その後、徐々に時刻調整され、今に至る。
$ ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== *ntp-a3.nict.go. .NICT. 1 u 105 1024 377 6.445 -3.347 0.308 +ntp1.jpix.ad.jp 210.171.225.76 2 u 984 1024 377 6.820 -3.953 0.126 +ntp.tut.ac.jp 133.243.238.244 2 u 61 1024 377 16.281 -4.001 0.180 -ntp3.jst.mfeed. 133.243.236.17 2 u 64 1024 377 6.551 -2.549 0.151
次はいつか。楽しみに待つ。
CactiのCLI(コマンドライン)ツールはすごい助かる
Cactiに登録するデバイスや作成するグラフが大量にあるとき、CLIツール使うと時間短縮できてすごく助かる。コマンドのオプション指定で試行錯誤したので、備忘録として。
1. デバイスの登録
登録済みのホストテンプレートを確認する。
# php add_device.php --list-host-templates Valid Host Templates: (id, name) 0 None 1 Generic SNMP-enabled Host 3 ucd/net SNMP Host 4 Karlnet Wireless Bridge 5 Cisco Router 6 Netware 4/5 Server 7 Windows 2000/XP Host 8 Local Linux Machine
デバイスを登録する。
# php add_device.php --description=cacti --ip=localhost --template=0 --disable=0 --avail=ping --ping_method=icmp --ping_retries=2 --version=2 --community=public --port=161 --timeout=500 Adding cacti (localhost) as "None" using SNMP v2 with community "public" Success - new device-id: (2)
各オプションは、WebUIと対応付けて
2. デバイスへグラフテンプレート(Graph Templates)を関連付け
デバイスのIDを確認する。
# php add_graph_template.php --list-hosts Known Hosts: (id, hostname, template, description) 1 127.0.0.1 8 Localhost 2 localhost 0 cacti
システムに登録済みのグラフテンプレートを確認する。
# php add_graph_template.php --list-graph-templates Known Graph Templates:(id, name) 2 Interface - Traffic (bits/sec) 3 ucd/net - Available Disk Space 4 ucd/net - CPU Usage <snip> 34 SNMP - Generic OID Template
まだ関連付けられているグラフテンプレートはない。
デバイスへグラフテンプレートを関連付けする。
# php add_graph_template.php --host-id=2 --graph-template-id=4 Success: Graph Template associated for host: (2: localhost) - graph-template: (4: ucd/net - CPU Usage)
グラフテンプレートが関連付けされた。
3. デバイスへデータクエリ(Data Queries)を関連付け
デバイスのIDを確認する。
# php add_data_query.php --list-hosts
システムに登録済みのデータクエリを確認する。
# php add_data_query.php --list-data-queries Known SNMP Queries:(id, name) 1 SNMP - Interface Statistics 2 ucd/net - Get Monitored Partitions 3 Karlnet - Wireless Bridge Statistics <snip> 9 SNMP - Get Processor Information
まだ関連付けられているデータクエリはない。
デバイスへデータクエリを関連付けする。
# php add_data_query.php --host-id=3 --data-query-id=1 --reindex-method=1 Success - Host (2: localhost) data query (1: SNMP - Interface Statistics) reindex method (1: Uptime Goes Backwards) # php add_data_query.php --host-id=3 --data-query-id=6 --reindex-method=1 Success - Host (3: localhost) data query (6: Unix - Get Mounted Partitions) reindex method (1: Uptime Goes Backwards)
データクエリが関連付けされた。
4. グラフ作成
デバイスのIDを確認する。
php add_graphs.php --list-hosts
システムに登録済みのグラフテンプレート(Graph Templates)を確認する。
# php add_graphs.php --list-graph-templates Known Graph Templates:(id, name) 2 Interface - Traffic (bits/sec) 3 ucd/net - Available Disk Space <snip> 21 Unix - Available Disk Space <snip>
システムに登録済みのデータクエリ(Data Queries)を確認する。
php add_graphs.php --list-snmp-queries
データクエリに関連付けされているグラフテンプレートを確認する。
# php add_graphs.php --snmp-query-id=6 --list-query-types Known SNMP Query Types: (id, name) 15 Available Disk Space
Available Disk Spaceが関連付けられている。
データクエリが取得するフィールドを確認する。
# php add_graphs.php --host-id=3 --snmp-query-id=6 --list-snmp-fields Known SNMP Fields for host-id 3: (name) dskDevice dskMount
dskDevice, dskMountの2つのフィールドがある。
データクエリが取得するフィールドの値を確認する。
# php add_graphs.php --host-id=3 --snmp-query-id=6 --snmp-field=dskDevice --list-snmp-values Known values for dskDevice for host 3: (name) /dev/vda2
dskDeviceの値は、"/dev/vda2"の1つ。
グラフを作成する。
# php add_graphs.php --host-id=3 --graph-template-id=21 --graph-type=ds --snmp-query-id=6 --snmp-query-type-id=15 --snmp-field=dskDevice --snmp-value="/dev/vda2" Graph Added - graph-id: (5) - data-source-ids: (8, 8)
チェックボックスが消えて、グラフが作成されていることがわかる。グラフページで実際に確認してみる。
「--graph-typeは、Associated Graph Templatesのグラフを作成する時は、"cg"を指定。Associated Data Queriesのグラフを作成する時は、"ds"を指定。」ということでよいのだろうか。
5. グラフツリー
ツリーの一覧を確認する。
# php add_tree.php --list-trees Known Trees: id sort method name 1 Manual Ordering (No Sorting) Default Tree
Default Treeにデバイス(host)は、登録されていない。
Windowsが起動しなくなった時にXCOPYでデータをバックアップして事なきを得た
使用しているPC(Windows8)がWindows Update後に起動しなくなった。セーフモードでの起動もしない。困った。
そんな時にUSBメモリへデータをバックアップして事なきを得るまでの流れ。
1. PCメーカのサイトを参考にWindows 回復環境 (Windows RE) からコマンドプロンプトを起動する。
2. USBメモリをPCに挿入する。
3. DISKPARTコマンドを実行して、USBメモリのドライブレター(何ドライブ)を確認する。
c:\>diskpart DISKPART>list volume <snip>
c:\>xcopy Desktop I:\Backup /S /E /H /C /Y /R <snip> 668 個のファイルをコピーしました。
常日頃からバックアップを取得することは大事。Amazon Cloud Driveの「Unlimited Everything」を契約するか。
無制限にファイルを保存できるAmazon Cloud Drive新プラン「Unlimited Everything」がついに登場、日本語版も準備中 - GIGAZINE
P.S.
コピー先にドライブ直下を指定したらコピーできず。ずいぶん悩まされた。
c:\>xcopy .\Desktop I:\ /S /E /H /C /Y /R ファイル作成エラー - パラメーターが間違っています。 ディレクトリを作成できません - I:\ 0 個のファイルをコピーしました。
xcopyのオプションは、以下のようにして確認。
c:\>xcopy /?
perlとawkのsubstr関数の違いにはまった
perlとawkのsubstr関数の違いにはまった。文字列から部分文字列を取得するperlスクリプトをawkに書き換えたら結果が異なった。
以下は、文字列"abcde"の1文字目から2文字、3文字目から3文字を取得する。
perlの場合
$ echo "abcde" | perl -lne 'print substr($_, 0, 2)' ab $ echo "abcde" | perl -lne 'print substr($_, 2, 3)' cde
awkの場合
$ echo "abcde" | awk '{ print substr($0, 0, 2) }' ab $ echo "abcde" | awk '{ print substr($0, 2, 3) }' bcd
perlもawkは、1文字目が0と思ったら、awkは1文字目が1のようだ(substrに2番目の引数)。だけど、以下の結果はすべて同じ、なぜなんだ。
$ echo "abcde" | awk '{ print substr($0, 0, 2) }' ab $ echo "abcde" | awk '{ print substr($0, 1, 2) }' ab $ echo "abcde" | awk '{ print substr($0, -10000, 2) }' ab
これは、ドキュメントやソースコードを読めということですね。
Raspberry PiでPWM制御を使ってLEDを点滅
※本サイトを参考にして被った損害、怪我、事故、障害、不都合、不利益等に関して責任は一切負いません。
PWM制御を行うと、点灯時間と消灯時間を調整してLEDの光を明るく見せたり暗く見たりできる。
下記のサイトを参考に(模倣)した。
raspberry-gpio-python / Wiki / PWM
GPIO17, 18, 22, 23のそれぞれに100ΩとLED(アノード)を直列に接続し、LED(カソード)をGNDへ。
4個のLEDが順々に徐々に明るくなって、徐々に暗くなっていく。
#!/usr/bin/python import time import os import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) DEBUG = 0 # 使用するGPIO GPIO17 = 17 GPIO18 = 18 GPIO22 = 22 GPIO23 = 23 # GPIOの設定 GPIO.output(pin1, False) GPIO.output(pin2, False) GPIO.output(pin3, False) GPIO.output(pin4, False) GPIO.setup(GPIO17, GPIO.OUT) GPIO.setup(GPIO18, GPIO.OUT) GPIO.setup(GPIO22, GPIO.OUT) GPIO.setup(GPIO23, GPIO.OUT) p17 = GPIO.PWM(GPIO17, 60) p18 = GPIO.PWM(GPIO18, 60) p22 = GPIO.PWM(GPIO22, 60) p23 = GPIO.PWM(GPIO23, 60) p17.start(0) p18.start(0) p22.start(0) p23.start(0) try: while 1: # 徐々に明るく for dc in range(0, 101, 20): p17.ChangeDutyCycle(dc) time.sleep(0.01) for dc in range(0, 101, 20): p18.ChangeDutyCycle(dc) time.sleep(0.01) for dc in range(0, 101, 20): p22.ChangeDutyCycle(dc) time.sleep(0.01) for dc in range(0, 101, 20): p23.ChangeDutyCycle(dc) time.sleep(0.01) # 徐々に暗く for dc in range(100, -1, -20): p17.ChangeDutyCycle(dc) time.sleep(0.01) for dc in range(100, -1, -20): p18.ChangeDutyCycle(dc) time.sleep(0.01) for dc in range(100, -1, -20): p22.ChangeDutyCycle(dc) time.sleep(0.01) for dc in range(100, -1, -20): p23.ChangeDutyCycle(dc) time.sleep(0.01) except KeyboardInterrupt: pass p17.stop() p18.stop() p22.stop() p23.stop() GPIO.cleanup()
クリスマスイルミネーション作りたいね。