読者です 読者をやめる 読者になる 読者になる

rsyncでバックアップするだけの接続を許可する

バックアップを保存するサーバ(以下バックアップサーバ)からバックアップしたいデータがあるサーバ(以下対象サーバ)にrsyncで安全に接続したいが、バックアップサーバから対象サーバをフル操作させるのはいや、というときにどうすればいいかを調べた。とりあ…

sshで複数の秘密鍵がある場合、クライアントからはどの秘密鍵が使われたかわからない

authorized_keysでの実行可能なコマンドの制限を試すため、すでにエージェント転送で接続できるサーバに、別の公開鍵を追加した。その上で ssh -i ... で新しく追加した鍵で接続してみたのだが、コマンドの制限が効いていない。-vvvとつけて詳細なログを吐か…

今だとVimのNginxシンタックスはなにを使えばいいのか?

軽くググると複数個出てきて迷ったので、今後迷わないように。 結論から言うと3つ目のがいいんじゃないかな。 github.com> NOTE: As of Dec. 2013, these scripts are maintained in the "contrib" directory of the Nginx source:公式的な扱いで、Nginx本体…

Microsoftの翻訳APIの使い方

なんか古い情報しか転がってなくて混乱したのでまとめておく。と思ったんだけど、ぜんぶ終わってから見つけたんだけど、 に現時点で最新と思われる情報が詳しく載ってるので、そっち参照した方がいいかも。以下手順。 最近Azureの一部になってしまったので、…

YAPC::Kansai 2017に行ってきたのでトークの感想など

YAPC::Kansai 2017に行ってきました。去年のPHPカンファレンス大阪に続いて、カンファレンス2回目。今回は初懇親会も。とりあえず駅までのバス、停留所逆側で待ってて、一本逃がして開場前に余裕で着く予定がぎりぎりに。さらに、新大阪で下りてからだいぶ迷…

Gitの導入はなぜ失敗したか、どうすれば成功したか

YAPC::Kansai 2017のLTに応募してたんだけど不採択になったのでブログ記事にする。落ちるだけあって、大した内容ではないです ;-)あとこの話はフィクションです。一応ね。 経緯 去年一年くらい、地方の中小企業的な某社(以後B社とする)に雇われて働いていた…

Redmineで細かなバグの扱いで悩んだけど、使い方の改善だけでなんとかなりそう

1つあたり平均5分もあれば直せそうな細かなバグが数十個とか報告されて、Redmine上での扱いをどうしようか悩んだ。Redmineの使い方は割と普通。デフォルトからあまりいじっていない。プラグインも入れていない。ちょっと変わっているのが、自分一人で使って…

WindowsでVagrantでPageant使ってSSHエージェント転送

なんかはてなブログの下書きの仕様が変わったのか、書いてたの途中で消えちゃったので面倒なので適当に。WindowsでVagrantでPageant使ってSSHエージェント転送するのは簡単だよという話。provisionでGitとか叩くときとかに必要になるアレ。 GIT_SSHにplink.e…

vagrant-cachierはvagrant-vbguestと競合するっぽい

WindowsでVagrant 1.9.1にcachier, vbguestのプラグインを入れた状態で、 Vagrant.configure("2") do |config| config.vm.box = "centos/7" config.vm.synced_folder ".", "/vagrant", type: "virtualbox" config.vm.provision "shell", inline: "sudo yum u…

composer updateでよくわからないエラーメッセージが出たが、指定したブランチがないだけだった

PHP

あるアプリケーションが依存している Git リポジトリがあったのだが、master 以外のブランチを参照することになった。ので、composer.json を更新して composer update したら、The requested package <VENDOR>/<REPO> <BRANCH> exists as <VENDOR>/<REPO>[dev-master] but these are rejected by</repo></vendor></branch></repo></vendor>…

Vagrantのsynced_folderにはあまり期待してはいけない

そもそもなにがしたかったか Vagrant + VirtualBoxで開発環境を作ろうとしていて、デフォルトのvagrantユーザで作業するのもアレなんでprovision(今回はansible_local)でユーザを作って、そのユーザのホームディレクトリをホストOSと共有したかった。 試した…

plenvでバージョン指定して実行できるやつを作った

Perlで書いたWebアプリケーションのデプロイにはCinnamon使っているのだけど、これはPerl 5.14以上が必要。Perl 5.10 でやらなきゃならない案件があって、plenv local 5.10.1とかしているので、Cinnamonが使えない。さあ困ったとなった。 回避策として考えら…

SQL::Translator の罠

今までデータベースのマイグレーションは DBIx::Migration - Seamless DB schema up- and downgrades - metacpan.org を使っていた。スキーマを変えるためのクエリをそのまま保存すれば migrate できるので非常にお手軽。ではあったものの、変更の数があまり…

PHPカンファレンス関西2016に行ってきた 前編: トーク感想

PHP

先週土曜日、PHPカンファレンス関西2016に行ってきた。PHPカンファレンスは初めて。と いうか、カンファレンスとか勉強会とかに行くこと自体初めて。 前々から興味はあったが、なかなか機会がなかった。今回もだいぶ前から行こうと決めて なかったら行けてな…

Composer の autoloader のハッシュ値はなに?

PHP

vendor/autoload.php にある、 ComposerAutoloaderInitXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX の XXX... のことね。手抜きでサーバ側に Composer 入れず autoloader だけ入れたいなと思ったんだけど、なにか環境ベースの値だったらいやなので調べた。 get('autol…

PHPではグローバル変数は閉じ込めることができる。そして、関連して引っかかったこと

PHP

前提として、PHPでは変数には2つのスコープしかない。グローバルと、各関数(メソッド)ごとのものだ。ブロックスコープがないのが不便とはいえ、グローバル変数を使わなければ割と平和だ。しかしレガシーコードを扱う場合など、仕方なくグローバル変数を使わ…

Microsoft アカウントの登録がいろいろ微妙

Visual Studioのライセンス認証のために必要となったので登録しようと思ったが、いろいろ微妙だった。 URLがlive.comのまま。 ホーム|Microsoft アカウント から登録しようとしたのだが、「旧 Windows Live ID」とかあるのにlive.comのままで、バグってるの…

Firebugなど各種開発ツールで、input:textのvalueの変化が取れない

<html> <head> <script src="//code.jquery.com/jquery-1.11.3.min.js"></script> <script> jQuery(function ($) { $('input:text').val('ok'); $('input:hidden').val('ok'); }); </script> </head> <body> <form> <input type="text" name="text" value=""> </form></body></html>

Windowsフォームデザイナーでツールボックスからカスタムコントロールを追加する場合の注意点

Visual Studio Community 2013で、C#で、Windows Formsでアプリ書いているんだが、なかなかやっかいなはまり方することが多くて困る。今日はListViewを、継承してカスタムしたクラスに置き換えようとしてはまった。カスタムコントロールを作るまでは、MSDNに…

C#のcatchがちょっと面白い

C#

最近C#をちょっと書いているのだが、まったく未知のところからやっているとつい変なコードを書いてしまう。先日は、こんなコードを書いた。 using System; // for Exception class Program { private static void Main() { try { throw new Exception("error…

QuickRunでC#叩けるようにする……までもなかった話

QuickRunはC#デフォルトで対応していた なにを間違ったかC#書いてて、基本はIDEでいいのだけど、ちょっとしたことを試すのにQuickRunが使いたくなったのであちこち検索して設定してみた。のだが、さらに調べるとそもそもQuickRunは現在デフォルトでC#に対応…

Angular.jsとBootstrapを競合させずに使う

普通にやったらアウトっぽい。知らずにBootstrapに後からAngular.js突っ込んでてうまく動かなかったので、以下の手順でなんとかした。 jquery.js, bootstrap.jsを外す。 bower install angular-ui-bootstrap-bower --save angular-ui-bootstrapってのもある…

Node.js, npmインストール時の注意

NODE_PATHを設定しないとnpm install -g ...で入れたモジュールは動作しない。こんな感じ。 # on ~/.bash_profile, ~/.zprofile # npmは重いし、このコマンドの結果は頻繁に変わるわけではないので、生で入れてもいい export NODE_PATH=$(npm root -g) 驚く…

Vimで、式用コマンドラインモードの履歴をコピーする方法

Vim

Vimでは、ノーマルモードでのp, Pによるレジスタ貼り付け以外に、挿入モードでのCTRL-Rからの貼り付けがある。貼り付けられるレジスタにはいくつか特殊なものがあるが、特に=の挙動は変わっていて、これを入力すると、式用のコマンドラインモードになる。こ…

HTML(など)で使うURIの相対的な表記方法についてまとめる

いい加減「ネットワークパス参照」とか覚えたいので。とはいっても、基本的にはRFC 3986を読めば書いてあるのだが。Uniform Resource Identifier (URI): 一般的構文 // で始まるやつ。 「ネットワークパス参照」 昔はあまり見なかったが、httpsや、外部でホ…

Cartonで詰んだっぽい?

Cartonの仕様上、site_perlになにか入ってるとcpanfile.snapshotが壊れる可能性がある。 Carton自体を入れるのにいくつかのモジュールがsite_perlに入る。 それらのモジュールのいずれかがcpanfile.snapshotでrequirementsに入っていると、carton checkがfai…

ansible_ssh_userはansible_connection=localのときは意味がない

まあ、よく考えるとわかることだけど、ansible_ssh_user以外にユーザを指定する方法がなかったのでつい引っかかってしまった。普通ならばansible_connection=localで実行する場合は、ターミナルでコマンドを叩くので、叩いたユーザの権限で実行されるのは自…

Firefoxで、POODLE対策としてsecurity.ssl3.*をいじってるとちゃんとTLSに対応したサイトにもつながらなかったりする件

security.ssl3.*という名前だけど、じっさいにはTLSの設定にも影響しているっぽい。security.tls.version.minを1にすれなどすればPOODLEはとりあえず大丈夫と思われるのでそっちで対応する。というかFirefox 34あたりでそれがデフォルトになってるはず。詳細…

sedで置換ではなく検索でのデリミタを '/' (スラッシュ) 以外に変更する

置換の場合は、Perlでも受け継がれている、sの次の文字がデリミタ、になるので、 sed -ne 's/pattern/replace/' file sed -ne 's#pattern#replace#' file が等価になってまあ問題ないのだが、検索のパターンの場合がよくわからなかった。まさか sed -ne '/pa…

ThunderbirdでIMAPが重いとかつながらない場合の対処法

mail.server.server*.max_cached_connectionsを1にする。GUIからも、「サーバへの最大同時接続数」という項目で設定可能。少なくともGmailにおいては、これを1以外にする理由はなさそう。メール数が少ない状況とかだと問題が起きないことが多いので気付きに…

Vimでcabbrev使って正規表現にエイリアスつけると便利。

Vim

abbrevとか日本人には関係ないよね、とか思ってたらぜんぜんそんなことなかった。ちょっと面倒なのがabbrevの展開で、/がiskeywordに入っちゃってるような環境(helpとか)で、s/aliasとかが展開できない。aliasじゃなくてs/aliasという省略語扱いになっちゃう…

アイスクリームがおいしい季節になりました。

おいしいアイスクリームないですかねー。アイスミルクやラクトアイス、ましてや氷菓ではないのがいいです。まあ、最終的にはおいしければなんでもいいけど。以下各種アイスの感想。 MOW イチオシ。バニラ、チーズは強烈。ただ、その他のフレーバーはいまいち…

PerlでIPアドレスからホスト名をLookupするベターな方法。

gethostbyaddr()は使いにくいしどうもIPv6対応が怪しい。IO::Socket::IPはそろそろ標準モジュールに入るらしいが、それは普及にはもうちょっとかかるってことでもある。オーバースペックな気もする。ということで、普通にSocket.pm使ってみる。 use Socket q…

WebブラウザでKindleの本のサンプルを読めるらしいという話。

WebブラウザでKindleの本のサンプルを読めるらしいという話をGIGAZINEの記事経由で知って、とりあえずブックマークレットのコードを読んでみた。ら、コードがいまいちだったので、書き直すことにした。ASINの取得方法が微妙→windowオブジェクトにあるらしい…

最近はまったこととか。

ちゃんと定期的にブログ書くのってむずかしいね。 Firefoxでcontenteditable="true"が奇妙な動作。HTMLの文法的に? 入力できないようなHTML文字列を貼り付けたりすると、変な位置に貼り付けられてしまい、またcontenteditableが効かなくなる。contenteditab…

evergreenって新しい公式テーマ試そうとしたら、

はてなブログにバグ発見。テーマのプレビューで次のページに行けない。相変わらずバグだらけだねー。

ブラック・スワンという本を読まなかった。

プロローグちょっと読んだだけだが、いくらなんでも頭悪過ぎて……。まず、黒い白鳥が見つかるまでの白鳥に関する事実だけど、 白鳥の羽は白いという証拠が大体そろっている。 という考えがそもそも間違えで、 現在のところ白以外の羽をもつ白鳥が存在する証拠…

次へと前へだけじゃないページングはやっぱり必要だと思う。

YappoLogs: なぜ SQL_CALC_FOUND_ROWS や LIMIT OFFSET のページングが良く無いのかこれ見て、 世の中SQL_CALC_FOUND_ROWSとか使っても大丈夫な規模のデータは少なくないし、 そもそも次へと前へだけじゃないページング(以下ページジャンプ)は便利だし、 無…

XML::LibXMLでHTMLを扱うのはやめておいた方がよさそう。

HTML::Parserはあまり速くなかった気がするので、XML::LibXMLでHTMLを扱おうとしてはまった。XML::LibXMLは、load_html()みたいなメソッドもあるから大丈夫かなー、なんて思ったのが甘かった。 HTMLをパースして、データ構造にする。 データ構造を走査したり…

pycronの罠。

Windowsでcron使いたいならpycronがよさそう、なので使ってみた。一部を除きよさそうだが、一部がかなりまずかったのでメモ。pycronはcrondに相当する機能をWindowsのサービスとして実行するが、このサービスがローカルシステムアカウントで実行される。この…

2013年のあれこれ。

仕事 PerlでWebアプリケーションを作ったりするのがメイン。 Linuxで開発するように。 plenv, Cartonで本番環境との互換性をアップ。 Cinnamonで自動デプロイ。 とかしたおかげで、 デプロイにかかる時間、精神的負担が激減。 それらのメリットが修正時にも…

Linuxのunzipはnon-asciiなファイル名に*まったく*対応していない。

Shift JIS, CP932, UTF-8, その他まったく対応してないっぽい。一部、UNICODEサポート版? があるとか(man unzip on CentoOS)、Ubuntuのunzipは対応しているとかいう話もあるが未確認。Archive::Zipの問題かと思って無駄な時間を費してしまったよ。

feedlyの.selectedEntryに関するバグ。

どこに報告すればいいのかわからなかったので。 Web版feedlyで、 Title OnlyやMagazineビューで、 j or kで移動すると、エントリが開く。 そこでoでエントリを閉じる。 そのエントリから.selectedEntryが外れる。 n or pで移動した上で、oで開いて閉じた、場…

AndroidからSSHしたいけどいいクライアントがない。

前提 公開鍵認証でつなぐ。 ハードウェアキーで使う。もちろんソフトウェアキーで使えるにこしたことはないが。 日本語入力したい。まあ最悪Vim+eskkでいいので、表示だけでも……。 ConnectBot Ctrlが効かない。秘密鍵をSDカードのルートからしか取れない。 I…

ackで気になること。

minifiedなJavaScriptを検索することには使えない、というか死ねる。 一応-o使ってどうにかする方法もある。unix - how to truncate long matching lines returned by grep or ack - Stack Overflow --ignore-dirで深い階層のディレクトリを指定しても意味な…

GmailをIMAPでThunderbirdから使うときに、Thunderbird側で送信済みメールを保存する必要はない。

タイトルでぜんぶ言っちゃった。ThunderbirdにGmailアカウントをセットアップすると、送信済みメールを保存するように設定されるが、Gmailは送信したメールを自動的に送信済みメールに保存してくれるから、Thunderbird側で設定しても無駄な通信が発生するだ…

Test::Moreでマルチバイト文字列を出力する可能性がある場合。

use Test::More; use Term::Encoding; { my $builder = Test::More->builder; my $encoding = Term::Encoding::get_encoding; binmode $builder->output, ":encoding($encoding)"; binmode $builder->failure_output, ":encoding($encoding)"; binmode $buil…

HTTP::Body::MultiPartにまずいセキュリティホールがあるので、しばらくPlack::Request::Upload使うときは気をつける。

経緯 JVNのフィード見てたらPerlモジュールのセイキュリティホールがあったので念の為確認したら思ったより危険だった。 JVNのページ JVNDB-2013-005291 - JVN iPedia - 脆弱性対策情報データベース セキュリティホールの詳細 #721634 - libhttp-body-perl: …

Perlのsingle-quotedなヒアドキュメントはsingle-quotedな文字列とはちょっと違う。

ちょっとはまったので。 print '\ \\', "\n"; # \ \ print <<'HERE'; \ \\ HERE # \ \\ ヒアドキュメントでは、引用符自体のエスケープが必要なくなる。double-quotedなヒアドキュメントの場合、ほかにエスケープしなければならない文字が残るため\自体もエ…

FirefoxやThunderbirdの気になるところ。

起動時にShiftキーを押しているとセーフモードで起動する。 Shift+なんらかのキー、で実行ファイルを実行するような環境でまずい。 起動中にエディタなどに入力をしてるとまずい。 更新の確認をすると確認だけではなくインストールされる。 設定で更新の確認…