動かざることバグの如し

近づきたいよ 君の理想に

Capistranoで使えるshared_pathとかcurrent_pathの変数一覧

環境

current_pathとかshared_pathとかユーザーがsetでセットする変数とは別に、最初から定義されている便利な変数もいくつかある。これをうまく活用するとタスクがスッキリするのでメモ

変数一覧

変数名
deploy_to /var/www/article_vote
deploy_path /var/www/article_vote
current_path /var/www/article_vote/current
releases_path /var/www/article_vote/releases
release_path /var/www/article_vote/current
shared_path /var/www/article_vote/shared
stage_config_path config/deploy
deploy_config_path config/deploy.rb
repo_url https://github.com/thr3a/article_vote.git
repo_path /var/www/article_vote/repo
release_timestamp 20190119081416

どこで定義されてるの

公式ドキュメントにそれっぽい記述なかったのでソース見たほうが早い。

capistrano/paths.rb at master · capistrano/capistrano

Capistrano3系でgit submodulesを使ってデプロイをする

環境

最近はめっぽう聞かないが、gitにはサブモジュール(git submodules)という機能がある。

この機能自体は便利なんだろうけど、それをCapistrano経由でデプロイしようとすると厄介な話になってくる。というのもCapistranoはgit submodulesに公式で対応してないからである(2系は対応していたらしい

ってことはプラグイン入れないといけないね、ってことで探したらあった。その名も「capistrano-git-with-submodules

インストール

Gemfileに

gem 'capistrano-git-with-submodules'

を追加して bundle install

で、Capfileに

require "capistrano/scm/git-with-submodules"
install_plugin Capistrano::SCM::Git::WithSubmodules

を追加すればおk

あとは勝手にデプロイ時にサブモジュールもgit cloneしてくれる

注意点

公式サイトにも載っているが、3系とは3.7以降のみ対応している。それ未満のバージョンのCapistranoを使っている場合は同じ作者の「ekho/capistrano-git-submodule-strategy」を使う。

シャープのBDレコーダーが故障したのでHDD換装した

実家のBDレコーダーの調子が悪いということで貰った。

機種はBD-HDW75。シャープ製である。

症状としては電源の付きが遅かったり、録画できたりできなかったりらしい。これ聞いてHDDの故障を疑った。

なにしろ地デジ化寸前に買ったものなので、かれこれ8年前の代物である。むしろよく頑張ったなHDD

ってことで分解したらただ3.5インチのHDDがSATAケーブルでささってただけだったので、結構HDDの交換は楽だと思った。そんなことなかった

用意するもの

  • ビットトレードワン製 USB赤外線リモコン(AD00020)
    • 後述するが、これがないとHDDをフォーマットできないクソ仕様である
    • 大きさから俗にフリスクリモコンと呼ばれてるらしい
    • これを接続するWindowsマシンも必要
    • 自分でハンダで組み立てるタイプ(AD00020)と組み立て済み(AD00020P)の2種類がある。
  • mini USB to USBケーブル
    • microUSBケーブルではないので注意

手順

先にUSB赤外線リモコンがPCから動くか確認しておく

で、以下のサイトからBtoIrRemocon.exeをダウンロードする

DSAS開発者の部屋:親指サイズの USB 赤外線リモコンが面白い

1:まず分解してHDDを交換 2 電源を入れる 3 HDDが認識できませんの表記が出るのでリモコンのホーム→設定からシステムテストを実施 4 テスト結果が出た状態のまま、PCから以下のコマンドを実行

BtoIrRemocon.exe C1AA5A8F30F501

以下の状態でコマンドを実行して赤外線を認識させる

f:id:thr3a:20190114160538j:plain

これがいわゆるサービスマン用リモコンコードと呼ばれるもので、これを受信しないと、シャープのレコーダーは新しいHDDを認識してくれない。 ほんとクソ(再度

コマンドは機種によっても違うらしく

C1AA5A8F30F501
C1AA5A8F31F511
C1AA5A8F32F521

の3種類どれか試せば当たると思う(適当

すると見慣れない変な画面に飛ぶはずなので、リモコンの赤いボタンを押して「エージング」を選択。すると画面が遷移するので、十字キーで「HDD-IDの登録」の「ON」に移動して実行。これで新しいHDDがようやく認識された。

この画面で赤いボタン押す

f:id:thr3a:20190114160558j:plain

最後はHDDの初期化。同じ画面のままエージング項目の最初の「START」にカーソルを合わせて実行。10分待つ

エージング実行中

f:id:thr3a:20190114161132j:plain

右がOKになれば完了 画面を戻れないので電源OFFしかないと思う

f:id:thr3a:20190114161928j:plain

そしたら電源を消して再度つける。あとは普通の画面から入れる設定へ行って「HDDの初期化」を実行

ようやく録画ができるようになった

が、普段テレビを見ない人間なので、当分はバンドリ専用録画機になりそうだが、、、

参考リンク

シャープ製レコーダーでデフォルトの録画画質を変更する方法

実家のBDレコーダーを新しいのに変えた。

価格.com - シャープ AQUOSブルーレイ BD-UT2200 価格比較

今まで使っていたBDレコーダーが、おそらくHDDの故障なのだろう、録画も電源ONすらままならない状況になってしまったためである。

前回もシャープだったので、同じメーカーのほうが操作方法もあんまり変わらないんじゃないかと思ってBD-UT2200にした。実家はわりとテレビ録画するタイプなので、3番組同時録画できるタイプにした。

録画画質が変更できない

のはいいんだけど、録画のデフォルトがDR(最高画質)になってしまう。映像はきれいだけど、全然容量が足りなくなるので、3倍とか5倍とかに変更したい。が、その都度変えるのは非常に面倒だし、一発録画のときは設定変更画面が出ないので、自動で最高画質になってしまう。。。

しかも設定画面で探しても項目がない

デフォルトの録画画質を変更する手順

が、よーく探すとあった

まずレコーダーの電源を入れて、リモコンの「ツール」を押す。

f:id:thr3a:20190104113158j:plain

すると、画面の左側に以下のようなメニューが出るので「録画画質設定」を選択して押す

f:id:thr3a:20190104113204j:plain

すると録画画質の選択画面にようやくいけるので、好みの画質にする。初期値はDRで最高画質なので、右にいけばいくほど画質は落ちる。が、たくさん番組を録画保存できるようになる。我が家では「5倍」で設定した。そんなに違和感はない(テレビのインチが小さいから

f:id:thr3a:20190104102957j:plain

説明書見てもそれらしき説明なかったし、あえて変更させずにレコーダーの購入サイクルを早めようとしてるんじゃないかと疑ってしまうようなUIな気がする。普通に設定画面から維持れるようにしてくれ〜〜

スクレイピングツールMechanizeでリンク先の絶対URLを取得する方法

mechanizeとは言わずとしれたRubyスクレイピングツールである。

で、例えば以下のようにページ内のaタグからリンク先のURLを取得したいとする。

url = "https://stackoverflow.com/questions/34471102/python-nameerror-name-include-is-not-defined"
agent =Mechanize.new
agent.get url
href = agent.page.at('a.question-hyperlink').attr('href')
p href.to_s

が、実際にstack overflowのサイトを見るとわかるが、以下のようにURLではなくpathになってしまう。いわゆる相対パスってやつ

> "/questions/34471102/python-nameerror-name-include-is-not-defined"

絶対パスで取得する方法

http://〜から始まる形で欲しい場合は、以下のようにする

p (agent.page.uri.merge href).to_s
> "https://stackoverflow.com/questions/34471102/python-nameerror-name-include-is-not-defined"

最後に.to_sしているのは、URI::HTTPSクラスになってしまうため。

参考リンク