作成者別アーカイブ: baw

baw について

常時睡魔と格闘を繰り広げる暇人。

[新企画]六甲山(おいしい水コース)踏破

新企画

登った山を記録する新企画を開始します。撮影した写真を交えつつご紹介できればと思います。

趣旨

今回は、六甲山を登る過程に点在する「おいしい水」を巡るコースがあるブログで紹介されていましたので、実際に辿ってみました。初めに言っておくと、結局飲めたのは「天然炭酸水」だけです。

道程

実際に辿ってみると、2016/05/05時点では過去の台風で一部の道が崩落しており、通行禁止となってしまっておりました。そのため、残念ながら「鼓ケ滝」付近にある「高塚の清水」は飲めませんでした。

コース

目印となるポイントを記します。

  1. JR六甲道駅(付近に「六甲宮ウォーター」有)以降はひたすら北に向かって歩く。
  2. 阪急六甲駅
  3. 神戸大学のキャンパス脇(ものすごい急坂です)
  4. 六甲ケーブル下駅(駅を正面にして右に逸れる道を行きます)
  5. たくさんの老人ホーム(登山口が分かりにくいので注意してください。一見何もなさそうに見えますが、老人ホームの道をひたすら行った突き当りです)
  6. 六甲ケーブル上駅(道中ではないのでトイレ休憩等に寄り道してください)
  7. 六甲山ガーデンテラス(昼食に最適な場所です。レストランもあると言えばあります。通り抜けると左右にわかれて下り坂がありますので、右の坂を下ってください。)
  8. 極楽茶屋跡(私は発見できませんでした。かなり分かりにくいのではないかと思いますので、目印にならないかもしれません)
  9. 紅葉谷コース(ひたすら下ります。ここに「有馬四十八滝」と各滝においしい水があるようです。序盤に見える「蟇滝」「百間滝」「似位滝」「七曲滝」などは初心者の装備では危険が伴うため、私はいきませんでした。「鼓ケ滝」は公園化しているので手軽に行けるようですが、前述した通り道が封鎖されているので行けません)
  10. 封鎖口(3箇所くらい封鎖されているルートがあります。大変残念ですが迂回しましょう。「六甲ガーデンテラス」から「ずっと下り坂だ!」と思っていると、迂廻路はキッツイ上り坂となっていて心を挫かれるので注意してください)
  11. 他下山ルートと合流
  12. 杖置き場(山を下りきりアスファルトが見えてくる頃、左手にあります。右手に曲がると左右にホテルが点在しています)
  13. S字下り坂(上記アスファルトの道をしばらく行くと、左手にS字の下り坂が見えますので下ります)
  14. 炭酸泉源公園(S字下り坂を降り切る前に右手に見えます。一見、全く飲めなさそうですが、上を見上げると祠があり、その前に設置してある蛇口から天然の炭酸水を飲むことが出来ます。ぶっちゃけ、硫黄臭と鉄分臭で不味いです。珍しさだけでした……)
  15. 有馬温泉(温泉にでも入って体を休めましょう)

道中記録

なんと、最初の「おいしい水ポイント」である「六甲宮ウォーター」を見逃してしまい飲めませんでした。最初の写真は「六甲ケーブル下駅」の右脇を抜けた老人ホーム街から始まります。

老人ホームを右手と左手に見ながら突き当りに登山口があります

老人ホームを右手と左手に見ながら突き当りに登山口があります


登山口を入ったところ

登山口を入ったところ

やっと登山っぽくなってきました

やっと登山っぽくなってきました

トイレ休憩のために立ち寄った六甲ケーブル上駅

トイレ休憩のために立ち寄った六甲ケーブル上駅

六甲ガーデンテラスには昼食に最適な場所

六甲ガーデンテラスには昼食に最適な場所

ガーデンテラスから降り始めて暫くすると立てかけてある看板

ガーデンテラスから降り始めて暫くすると立てかけてある看板

最後の迂廻路は厳しい上り坂

最後の迂廻路は厳しい上り坂

これほど社会貢献するラクガキを初めて見た

これほど社会貢献するラクガキを初めて見た

蛇口から炭酸水

蛇口から炭酸水

PostgreSQLのpg_dumpで単一のfunctionのみ取得する

pg_dumpでは-tオプションで単一または複数のtable/view/sequenceを指定して定義の抽出が可能ですが、functionの指定はできません。これを解決する、裏技チックな方法が英語ページにしか掲載されていなかったので、日本語ページの一人目になるべく本記事を執筆しました。

pg_dump -Fc -s | pg_restore -P 'funcname(args)' > function_define.dmp

-sオプションでスキーマ(定義)のみを抽出します。(ここでいうスキーマとは、テーブルの完全修飾名の前半に使う名称(schema)ではないので注意。単なる定義情報(雑に言うとcreate table)のことを指します。この注意事項は本家にも記されています。ややこしいですね。)

これと–schemaオプションと混乱しないでください。”schema”という単語を異なる意味で使用しています。pg_dump

結果をパイプでpg_restoreに繋いでいます。pg_restoreはcustom形式しか処理できないため、-Fcオプションを付与しています。(デフォルトはplainです。)

-Pは名称を指定してcustomからfunctionの定義を取り出すことができます。また、pg_restoreは特に接続先データベースが指定されていない場合、標準出力にplain形式で吐き出すため、リダイレクトでファイルに出力しています。

データベース名が指定された場合、pg_restoreはそのデータベースに接続し、アーカイブを直接そのデータベースにリストアします。 データベース名が指定されなかった場合は、データベースを再構築するために必要となるSQLコマンドが含まれたスクリプトが作成されます(ファイルもしくは標準出力に書き出されます)。pg_restore

functionに引数(args)がある場合、正しい引数の数だけ、型を指定してやる必要がありますので注意が必要です。不明の場合は下記コマンドで確認できるでしょう。

pg_dump -Fp -s | less

注意事項

私の環境では2回以上-Pを指定した場合、最後に指定したfunction以外が無視されました。そのため、下記のように工夫する必要があります。

pg_dump -Fc -s | pg_restore -P 'funcname(args)' > function_define.dmp
pg_dump -Fc -s | pg_restore -P 'funcname2(args)' >> function_define.dmp
pg_dump -Fc -s | pg_restore -P 'funcname3(args)' >> function_define.dmp

最終的な出力ファイルを見ると、SETが重複して出力されていますが、特に弊害はありません。

参考

Linuxの/proc/cpuinfoからわかる情報メモ

Linuxの/proc/cpuinfoを初めてまともに読もうとしたのでメモを残しておきます。複数コアを搭載したCPUや、HT(ハイパースレッディング)により、論理プロセッサ数と物理CPU数が一致しないことがよくあります。cpuinfoを読み解いていけば、いずれも判別可能となるようです。

シンプルな構造

下記はあるサーバでcpuinfoを覗いた例です。キーワードはgrepにかけている通りです。まずは生で見てみるのも良いでしょう。コロン以降は私が説明を追記したものです。

# cat /proc/cpuinfo | grep -E "physical id|cpu cores|siblings|processor" | sort | uniq

cpu cores       : 4 ←1個の物理CPUに搭載されている"物理"コア数
physical id     : 0 ←物理CPU(1個目)
physical id     : 1 ←物理CPU(2個目)
processor       : 0 ←論理プロセッサ(=合計論理コア数:1個目)
processor       : 1 ←論理プロセッサ(=合計論理コア数:2個目)
processor       : 2 ←論理プロセッサ(=合計論理コア数:3個目)
processor       : 3 ←論理プロセッサ(=合計論理コア数:4個目)
processor       : 4 ←論理プロセッサ(=合計論理コア数:5個目)
processor       : 5 ←論理プロセッサ(=合計論理コア数:6個目)
processor       : 6 ←論理プロセッサ(=合計論理コア数:7個目)
processor       : 7 ←論理プロセッサ(=合計論理コア数:8個目)
siblings        : 4 ←1個の物理CPUに搭載されている"論理"コア数

上記を読み解くと、本サーバは物理CPUを2個搭載しており、CPUには1個あたり4個の物理コア(合計8個)搭載されていることがわかります。1コアを仮想的に2コアに見せるintelのHTが適用されないCPUであるため、物理コア=論理プロセッサとなっており、前述したとおりシンプルな構成となります。

模式図にしてみました。

シンプルなCPU

シンプルなCPU

HTが有効となっている構造

HTの環境を用意できなかったため、下記の実行結果は手で作りました。現状販売されているモデルでは、あり得ないと思います。また、不整合等あったら申し訳ないです。

# cat /proc/cpuinfo | grep -E "physical id|cpu cores|siblings|processor" | sort | uniq

cpu cores       : 1 ←1個の物理CPUに搭載されている"物理"コア数
physical id     : 0 ←物理CPU(1個目)
physical id     : 1 ←物理CPU(2個目)
processor       : 0 ←論理プロセッサ(=合計論理コア数:1個目)
processor       : 1 ←論理プロセッサ(=合計論理コア数:2個目)
processor       : 2 ←論理プロセッサ(=合計論理コア数:3個目)
processor       : 3 ←論理プロセッサ(=合計論理コア数:4個目)
siblings        : 2 ←1個の物理CPUに搭載されている"論理"コア数

物理CPUを2個搭載しており、CPUには1個あたり1個の物理コア(合計2個)が搭載されており、HTにより仮想的に2個の論理コア/プロセッサ(合計4個)となることがわかります。ポイントは、cpu coresとsiblingsの差に着目する点です。この場合、物理コア×2=論理プロセッサとなります。

HT有効モデル

HT有効モデル

スマートフォンのタッチパネルが全く反応しない場合の対処(Android)

落としたり踏んづけたりしてタッチパネルが全くきかず、反応がなくなった場合にどう対処したかメモしておきます。結論は「PC用マウスをスマートフォンに接続して操作する」です。

具体的には、USB変換アダプタを用いてUSB接続のマウスをスマートフォンに直接接続するか、もしくは、Bluetoothでワイヤレス接続するかだと思います。ただし「タップに全く反応しない」前提条件があるので、ペアリングという事前作業が必要な後者の選択肢は自ずと落ちます……。

上記以外にも、PCからリモート接続で操作をする等の選択肢もあるかのように見えますが、大概スマホ側でリモート接続を「承認(タップ)」する必要があるので、やはり落ちます。

そして最後に残るのが、前述した「USB変換アダプタを使ってUSB接続でマウス操作する」です。変換アダプタは500円程で購入できます。代替スマートフォンを買いに行く足でついでに調達してしまいましょう。

また、次の相棒はASUS製の「Zenfone2Laser」にしました。ASUSはZenbookでもお世話になっているので、元々の印象から良いです。購入後に数時間初期設定で触ってみましたが、初期IME(ATOK?)に癖がある程度で、目につく挙動や作りの悪さは見えてきませんでした。

Zenfone2Laser

Zenfone2Laser

ただし、背面パネルが開けにくすぎです。不要なカード等を隙間にねじ込んでこじ開けるしかありませんでした。加えて、デュアルSIMが可能な設計となっているため、SIM/SIM/MicroSDで差し込む場所に迷います。実際、MicroSDを誤ってSIM側に挿してハマりかけました。マニュアルは事前にキチンと読んだほうが良いですね。(書いてありました……。)

マニュアル

マニュアル

2年間使用したリチウム電池は大して劣化していない(XperiaA(SO-04E))

件名で結論が出ていますが、実際試してみたことと試してみるべきだったことを先人の知恵として書き記しておきます。

約2年半前に購入して以来、docomoからDMMmobile(MVNO)に乗り換えても使い続けていたXperiaA(SO-04E)が、いくらなんでも普段の電池消費が激しすぎる。リチウム電池の劣化だろうと言う仮説の元、とるべき行動について調査と検討をしていました。個人ブログを中心に様々な感想等を拾い集めると「リチウム電池の交換は有効」という結論に至りました。

そこで、まずは電池が本当に劣化しているのか確認しようと思いました。docomoショップに行けば、回線契約が無くとも(docomoで購入した端末であれば)無料で診断できます。(docomoヘルプデスクに問い合わせ確認済み。)ただ、ふらっとdocomoショップに行って用件を言うと「ひとまず1時間待って欲しい」と言われ、確認せずに諦めて帰ってしまいました。

ここがそもそもの間違いです。しっかり確認しておくべきでした。

Amazonで見つけた若干怪しい商品をポチると、20日もかかって遥々中国から国際郵便で届きました。まあ、元々の正規品もmade in chinaなので、あまり気にはしませんでした。

そんなこんなで種々の稼働をかけて手に入れたリチウム電池ですが、入れ替えても改善の実感を得られません。分析まではできていませんが、今更の結果論で言うと、常駐アプリをもう一度見なおすべきだったのかもしれません。2年程度ではリチウム電池は劣化しないという教訓を得られました。高い授業料です。

ちなみにその直後、SO-04Eは画面にヒビを入れてしまい、当たりどころが悪かったのかタッチパネルが死に、結局端末を買い換えるというオチまで付きました……。

LINEで友だちを擬似グループ管理する

今やインフラと言って差し支えない程に普及したLINEですが、未だに友だちのグループ管理機能は実装されません。管理・整理整頓魔として大変気持ち悪いので、擬似的にグループ管理するアイデアを記しておきます。

ポイントは「表示名」にあります。スマートフォン版LINEでは、「友だち」タブから対象をタップして、名前の横にある小さな「ペン」をタップすると変更可能です。一方、PC版LINEでは、「友だち」タブから対象を右クリックして「表示名の変更」から呼び出せます。

「表示名」の命名規約は「[擬似グループ名]_[本名]([渾名/HN])」です。例えば、ABC社2015年度入社の後輩である渡辺太郎君の渾名が「なべさん」だった場合は、「ABC2015_渡辺太郎(なべ)」とします。

これを全ての友だちに実施します。友だちは表示名でソートされますので、めでたく擬似的にグループ管理できました。

また、副産物としては、プロフィールの「名前」に渾名を設定している人も少なくないので、「誰だったっけ?」も防止できます。擬似グループの命名センス次第で便利さは増すかと思います。

同じテーブル構造で違うスキーマにデータをコピーする

違うschemaに存在する、同じ構造のtableに対して、pg_dumpでデータを抽出/挿入する方法を記します。最初にオチを言うと、\COPYを使用したほうが楽です。

環境

PostgreSQL
8.4.20
CentOS
6.7

前提条件

下記の通り、test1.testからtest2.testに対してデータをコピーします。

postgres=# \dn
        List of schemas
        Name        |  Owner   
--------------------+----------
 information_schema | postgres
 pg_catalog         | postgres
 pg_toast           | postgres
 pg_toast_temp_1    | postgres
 public             | postgres
 test1              | postgres
 test2              | postgres
(7 rows)

postgres=# \d test1.test
    Table "test1.test"
 Column | Type | Modifiers 
--------+------+-----------
 val    | text | 

postgres=# \d test2.test
    Table "test2.test"
 Column | Type | Modifiers 
--------+------+-----------
 val    | text | 

postgres=# select * from test1.test;
    val     
------------
 testvalue1
 testvalue2
 testvalue3
(3 rows)

postgres=# select * from test2.test;
 val 
-----
(0 rows)

手順

対象テーブルに対して、pg_dumpをplainでダンプします。customで色々と試してみましたが、結局徒労に終わりました。

pg_dump --file=./test.dmp --format=p --data-only --table=test1.test

plainのため、中身はviで見ることができます。

-bash-4.1$ ll
total 12
drwx------.  2 postgres postgres 4096 Jun 29 08:59 backups
drwx------. 12 postgres postgres 4096 Oct  8 22:38 data
-rw-r--r--.  1 postgres postgres  463 Oct  8 23:06 test.dmp
-bash-4.1$ cat test.dmp 
--
-- PostgreSQL database dump
--

SET statement_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = off;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET escape_string_warning = off;

SET search_path = test1, pg_catalog;

--
-- Data for Name: test; Type: TABLE DATA; Schema: test1; Owner: postgres
--

COPY test (val) FROM stdin;
testvalue1
testvalue2
testvalue3
\.


--
-- PostgreSQL database dump complete
--

スキーマが書かれている箇所を手で直してしまっても構いませんが、コマンドで自動化してしまいます。

sed -i.`date "+%Y%m%d-%H%M%S"` -e 's/test1/test2/g' test.dmp

念のため、diffで確認してみます。

diff test.dmp*
12c12
< SET search_path = test2, pg_catalog;
---
> SET search_path = test1, pg_catalog;
15c15
< -- Data for Name: test; Type: TABLE DATA; Schema: test2; Owner: postgres
---
> -- Data for Name: test; Type: TABLE DATA; Schema: test1; Owner: postgres

後は普通にpsqlで流し込みます。

psql --file=test.dmp

下記の通り確認してみます。成功です。

postgres=# select * from test2.test;
    val     
------------
 testvalue1
 testvalue2
 testvalue3
(3 rows)

最後に

今回はpg_dumpにこだわってみたのですが、\COPYを使用するほうが楽だと思います。対象のテーブルをコマンド実行時に指定できますしね。

docomoからDMMmobileにMNPしました

NTTdocomoからDMMmobileにMNPしました。手順や感想をメモしておきます。端末は、Xperia A(SO-04E)を持ち込んでいます。

  1. docomoのお客様サポートからMNP申込をします。インターネットからの手続きにも関わらず、何故か営業時間(受付時間)があります。意味がわかりませんが、昼間に申し込まなければなりません。ちなみに、docomoの2年縛りは契約月+2年+1月です
  2. DMMmobileのページからMNP付きのプランを選択して、必要情報を入力します。SO-04Eの製造メーカは「ソニーモバイルコミュニケーションズ」です。「SONY」ではありませんのでご注意を。ちなみに、SO-04Eは「マイクロSIMサイズ」ですので、直接選択しても構いません。
  3. その後、本人確認書類の提出をします。具体的には、普通運転免許証をスマートフォンで撮影してアップロードすれば良いです。
  4. 数日すると、docomoの通信が何の前触れもなく切断されます。モバイルWi-Fiルータ類を持っていないと死にます。死にます。(迫真)SIMカードが郵送されてくるまで何もできなくなるので、本当に気をつけてください。
  5. 端末設定は公式マニュアル(APN設定マニュアル)の通り実施すれば良いです。
  6. SO-04Eが「docomoIDを設定しろ」とうるさく言ってくるので、docomoのお客様サポートからID変更(電話番号→メールアドレスに変更)して、端末に再設定すれば何も言ってこなくなります。
  7. デフォルトではテザリングができなくなっているため、ここの記事を参考にして、設定変更します。(SO-04Eの場合。)

私はこれで毎月の通信量がかなり安くなりました。

xreaアップデートに伴うDB移行手順メモ

xreaが大規模更改にあたり、各ソフトウェアのバージョンがドラスティックに変わりました。MySQLも大幅にバージョンアップするため、本ブログ(Wordpress)のデータがすべて削除されました。xrea運営が作業前に取得してくれていたdumpファイルを元に無事復旧できたのでメモしておきます。

蛇足ですが、XREA自体がそもそも上級者向けの低価格低サポートなサービスだっただけに、殆どの方は自分で解決されているようでした。また、公式サポートフォーラムでも技術者らしい冷静な対応をされている方ばかりだったので、なんだか安心しました。

[usename]や[dbname]やサーバ名やファイル名は適宜読み替えてください。

手順

xreaのコントロールパネルからDBを作成

xreaのコントロールパネルから、過去にWordpressで使用していた名前でDBを作成します。パスワードも過去(Hint:初期パスワードはFTPパスワードの前8文字)と同じにしてください。稀に、xreaの更改作業を乗り切ってしまうDBもあるそうですが、間違いなく中途半端にしか復元できていないため、一旦削除してから再作成(空のDBを用意)してください。

sshで接続してftp8変換とインポート

サーバにsshで接続します。xreaのコントロールパネルから「ホスト登録」をお忘れなく。出来ない場合は1~3分待ってください。

ssh -l [username] sXXX.xrea.com

公式からutf8への変換が必要とアナウンスがあるため、dumpファイルをutf8に変換します。nkfでいけます。

MySQL4以前などの古いデータベースからデータは完全には引き継げませんので、データベース内のデータが一旦空になります。
特に文字コードはUTF-8が標準となりますので、そのまま引き継ぐと不具合が出る可能性があります。
MySQL/PostgreSQL/Apache/PHPのバージョンアップメンテナンスについて

ll
cd _DB_BACKUP_XREA_UPGRADE/
ll
nkf -w mysql_[dbname].dump > mysql_[dbname].dump.nkf
ll
view mysql_[dbname].dump.nkf

中身を見て問題なさそうならインポートします。先ほど設定したDBのパスワードを聞かれます。

mysql -u [dbname] -D [dbname] -p < mysql_[dbname].dump.nkf

特にエラーが起きなければ以上となります。念のためレベルで、インポートしたDBを確認してみてください。

mysql -u [dbname] -D [dbname] -p
use [dbname]
show tables;

その他

phpMyAdminの再インストール(バージョンアップ)

phpMyAdminを使用する場合は再インストールが必要です。公式では下記のように説明されていますが、私はコントロールパネルで「インストール」を選択するだけでいけました。

1、ファイルマネージャーもしくは、ご利用のFTPクライアントから、現在のディレクトリ「./public_html /log /phpmyadmin_」等に名前を変更します。
2、XREAサーバー管理画面二ログインし、「データベース」メニューから
「■PhpMyAdmin自動インストール(MySQL管理) 」項目の「インストール」ボタンをクリックします。
3、「./public_html /log /phpmyadmin」が生成されたことを確認されましたら、ログインします。
【公式】XREAサーバー:最新の環境へのアップデートメンテナンス関連

リトルノア正解パターン

最近やり込み始めているリトルノアの正解パターンを幾つか紹介します。いくつかの選択肢を吟味しながら自分で考えたい人には不要な記事です。あまりこういう切り口の記事ってないですよね。

せっかちな人はタイトルだけでOKです。

SRは進化後に、R以下は進化前にユニット増殖合成をする

SR進化後のSSRではユニット増殖確率が100%になり、ドロップしにくいSRの頭数を揃える手間が省けるからです。R以下は腐るほどドロップするため頭数を揃える手間が掛からないことに加え、序盤にユニット数を上げたほうがより戦力になりやすいためです。

個人的な例外として、対人でSRエンジェラが腐るほどドロップしたので、進化前にユニット最大にしてしまいました。

最高の理想は、SSRレベル最大にした後にユニット増殖合成をすることです。レベル最大になると、付与経験値あたりの消費マナが激減するため、マナを節約できます。ただし、レベル上げをグロウポットでチマチマやるならマナ消費はほぼ変わらないため、通常気にする必要はありません。さっさとユニット数を挙げて戦力に格上げしましょう。

レベルはハイグロウポット以上を使って一気に上げる

付与経験値あたりの消費マナは、合成前レベルに応じて決定されます。より低レベルほど、消費マナは低い傾向にあります。そのため、レベルの低いうちにハイグロウポットやスーパーグロウポットを10個まとめて食わせたほうが、全体として見た時に必要マナは少なくなります。

ノアの育成順は火>白>剣

現状、ノア(のスキル)はレイドでしか使いません。レイドで一番使えるスキルを所持しているのが火ノアだからです。ノアは一旦HPをゼロにしてしまうと回復まで面倒なことになるので、殺さないように気を使いつつスキルを繋げるテクニックが必要となります。スキル連鎖の切れ際はいつもチキンレースになります。

序盤のキャラ育成順はブロッカ>アーチェ>(ボマ)>ウィネ>SR

この章は特に趣味が混じっています。まずは壁役となる万能ブロッカを推します。次点で、ブロッカとタッグを組ませるアーチェ、9-1ハツメ周回をギルドメンバとする場合はボマ、範囲砲台を射程の外から攻撃できるSSRウィネと続きます。その後は、手に入ったSRを順次育てていきますが、きっとマナ不足に悩まされます。

課金せずともビルダーハウス5個購入できるほどのルビーは貯まる

ゲーム開始直後に課金してしまいましたが、2〜3週間程で購入できるほどのルビーは貯まるかと思いますので、序盤で一気にあげたい人以外は不要かもしれません。

鉄巨人は遠距離ユニットを必ず最後に出撃させる

鉄巨人はタゲったユニットのタイプ(遠距離/近距離)によって攻撃パターンが変わります。近距離の場合は真下に剣を突き立てるモーション、遠距離の場合は前方に剣を叩きつけるモーションです。当然、後者が避けやすいため出撃順には注意が必要です。