Hatena::ブログ(Diary)

(ひ)メモ このページをアンテナに追加 RSSフィード

2011-12-28 (Wed)

subversionで、trunk下のいくつかのディレクトリだけcheckoutしたい

trunk下にもりもりディレクトリ(&配下に大量のファイル)があり、trunk をまともにcoすると日が暮れて朝日を拝みそうなときのお話です。

必要なディレクトリの数だけそれぞれについてsvn coすると、ディレクトリをまたいだcommit(changeset)ができなくなるのでいまいちだなーと思ってたら、それ、sparse checkout でできるよって教えてもらいました。

$ svn ls http://svn/oreno/trunk
adm/
bin/
elisp/
etc/
...sugoi takusan no dhirekutori...

$ cd ~/repos/oreno/
$ svn co --depth empty http://svn/oreno/trunk .

$ svn up --set-depth infinity ./hoshii
$ svn up --set-depth infinity ./yatsudake
$ svn up --set-depth infinity ./up-sureba-ok
$ \(^o^)/
bash: syntax error near unexpected token `^o^'

パスをコピーする

ファイルサーバー上のファイル/フォルダのパスを、こんな感じのsmb://で始まるURL形式でIRCやメールとかにコピペしたい。

smb://kura/tsudura/でじかめ/あるばむ/2011/

この形式なら、Finder→⌘K→サーバーアドレスにコピー→ッターン!! でアクセスできますし。

で、パスをコピーする方法ですが、LionだとFinderで目的のフォルダとかを選択→⌘I→「サーバ」の項のパスをトリプルクリックとかで選択してコピー、でOKです。

ーーー第一部・完ーーー









てか! Snowは知らないけど少なくともLeopardではここのパスはコピーできなかったんでまさかLionではコピーできるようになってるなんて思わなくて、フォルダとか選択→右クリックのメニューのサービスからAutomatorで作ったヤツを選ぶ→クリップボードにパスがコピーされるってのを作った!→\(^o^)/→⌘Iでコピーできるのに気づく→/(^o^)\←いまここ なわけですが、せっかくなので手順だけメモっておくエントリです。

  • Get File Path.actionからGetFilePathAMA_1.0.zipをダウンロード
  • 展開して、Get File Path.actionをダブクリしてインストール
  • Automator起動
  • 新規→サービス
  • 「"サービス"は、次の選択項目を受け取ります」で「ファイルまたはフォルダ」を選択
  • 「検索対象」で「Finder.app」を選択
  • 左ペインから、アクションのライブラリの、ファイルとフォルダ→ファイルパスを取得ドラッグして右ペインのドロップ
  • URLにチェック
  • 基本的なURLにチェック
  • 先と同じく左ペインのライブラリから、ユーティリティ→シェルスクリプトを右にドロップ
  • 「シェル」のプルダウンで/usr/bin/perlを選択
  • 「入力の引き渡し方法」は「stdinへ」
  • スクリプトはこんな感じ
use URI::Escape;
while (<>) {
	print uri_unescape($_);
}
  • 先と同じく左ペインのライブラリから、ユーティリティ→クリップボードにコピーを右にドロップ
  • 保存。「Copy path URL」とか名前はなんか適当に

これで、ファイル/フォルダを右クリック→サービス、で、今作ったサービスが出てくるので選択すると、URL形式のパスがコピーされるという塩梅です。

ちなみに消したいときは、~/Library/Services/XXX.workflow/ というのがあるので、まるっとrm -frすればOKです。



Automatorは↓な感じでコンポーネントを組み合わせてさくっと作れるので便利ですね^^

f:id:hirose31:20111228014314p:image:w360

2011-12-16 (Fri)

MacBook Airがスリープから醒めない件

MacBook Air (11" Mid 2011, メモリ 4GB)がフタを閉じてスリープ状態に入り1時間ぐらいするとフタを開けても起き上がらず、しかたないので電源ボタン長押で強制再起動の刑で困ってたんですが、結果からいうと、

sudo pmset -a hibernatemode 0

で解消しましたというお話。


起き上がらない事象は再現率100%。Console.appでログを見てみると、フタを閉じて70分後に毎回同じログ(Wake reason: EC.SleepTimerとか)が記録されていたので、これでググったところ、

で機種は違えど同じような症状を発見。

どうも、フタを閉じてしばらくは浅いスリープ(メモリ上に待避)なんだけど、時間が経つと深い眠り(ディスク上に待避、deep sleep, SafeSleep)に入ると。で、このへんはpmsetコマンドで設定を見たり変えたりできる。

$ pmset -g
Active Profiles:
Battery Power		-1
AC Power		-1*
Currently in use:
 standbydelay	4200
 standby	1
 womp		0
 halfdim	1
 panicrestart	157680000
 hibernatefile	/var/vm/sleepimage
 networkoversleep	0
 disksleep	0
 sleep		0
 hibernatemode	3
 ttyskeepawake	1
 displaysleep	30
 acwake		0
 lidwake	1

standbydelayがdeep sleepに入るまでの時間で、4200秒=70分てことで丁度ログとも符合する。

hibernatemodeがdeep sleepに入るかどうかを制御するパラメータで、MacBookとかはデフォルトが3で、standbydelay後にdeep sleepに移行する。デスクトップだと0で、浅い眠りだけでディスクには書き出さないので電源(バッテリ)が切れると内容が失われちゃう。詳しくはman pmsetで。


というわけで自分の場合は、

  • 半日ぐらいならバッテリはもつので浅いsleepでOK
  • 数日使わないときは明にシャットダウンする

という運用にすることにして、 hibernatemode 0 にした塩梅です。

2011-12-13 (Tue)

AppleScriptでデスクトップのサイズを取得する

2011-12-14追記

@ さんに教えていただき、system_profiler SPDisplaysDataTypeから取る方法で落着しましたー

が、bounds of window of desktopで取れないのは未だ謎です。。。


手元のMac OS X 10.7.1, AppleScript 2.2.1にて、bounds of window of desktopでデスクトップのサイズが取れない件。雪なしLeopardのときはこれで取れたんだけど。。。と、思って試してみたら、Leopardでもダメになってました。。。

仕方ないんで、ぐぐって

  • Safariを起動してJavaScript使って取得する
  • shellでdefaults readを実行して取得する
    • ただしdefaults readだと、外部モニタが繋がってるかどうかわからないので、外部モニタあり/なしの条件分岐ができない

って方法ではできたんですが、なんかいい方法ないのすかね?というお話です。

global screenWidth
global screenHeight

-- ★これがよさげー
tell (do shell script "/usr/sbin/system_profiler SPDisplaysDataType | grep Resolution | tail -n 1") to set {screenWidth, screenHeight} to {word 2, word 4}
display dialog "system_profiler: " & screenWidth & "x" & screenHeight

tell application "Safari"
	-- OK
	set screenWidth to (do JavaScript "screen.availWidth" in document 1)
	set screenHeight to (do JavaScript "screen.availHeight" in document 1)
	display dialog "Safari: " & screenWidth & "x" & screenHeight
end tell

-- うごかん
-- error "System Events でエラーが起きました:scroll area 1 of process \"Finder\" を取り出すことはできません。正しくないインデックスです。" number -1719 from scroll area 1 of process "Finder"
try
	tell application "System Events" to set {rightLimit, bottomLimit} to size of scroll area 1 in process "Finder"
	display dialog rightLimit & "x" & bottomLimit
on error number ex
	display dialog "[ERROR] scroll area of Finder: " & ex
end try

tell application "Finder"
	-- OK だけど、外部ディスプレイがつながっているかどうかわからない
	set screenWidth to word 3 of (do shell script "defaults read /Library/Preferences/com.apple.windowserver | grep -w Width  | head -n 1") as number
	set screenHeight to word 3 of (do shell script "defaults read /Library/Preferences/com.apple.windowserver | grep -w Height | head -n 1") as number
	display dialog "shell: " & screenWidth & "x" & screenHeight
	
	-- NG
	-- error "Finder でエラーが起きました:bounds of window of desktop を取り出すことはできません。" number -1728 from bounds of window of desktop
	try
		set theScreen to bounds of window of desktop
		set screenWidth to item 3 of theScreen
		set screenHeight to item 4 of theScreen
	on error number ex
		display dialog "[ERROR] window of desktop: " & ex
	end try
end tell

f:id:hirose31:20111214001850p:image:medium

f:id:hirose31:20111214001849p:image:medium

2011-12-09 (Fri)

株式会社ディー・エヌ・エーに入社しました

12月1日付けで株式会社ディー・エヌ・エーに入りました。

入社して1週間が経ち、少しずつ環境にも慣れてきたところで、優秀な仲間たちと楽しく充実した日々を送っています。

自分の仕事はこれまで通り、コードも書ける(書きたい)インフラエンジニアです。

まだ把握しきれていませんが、想像していた以上のトラフィック、サーバー台数のスケールで、これほど大きなシステムに関われることに興奮して鼻血が出そうな毎日です。

特に前職では人数が少なかったせいもあり、エンジニアリング以外のこともいろいろとやりました(おかげでいろいろと経験できてよかったです)が、ディー・エヌ・エーではエンジニアリングに集中し、自分のこれまでの経験と知識と勘を活かし早期にバリューを出せるように努力しつつ、優秀な仲間たちと切磋琢磨し、より自分の腕に磨きをかけていきたいと思っている所存です。

また、ブログや勉強会等しばらくおやすみしていましたが、時間の許す限り以前のように外にもアウトプットしていきたいと思っています。

というわけで、今後ともよろしくお願いします!

2003 | 11 | 12 |
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 05 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 12 |
2012 | 01 | 02 | 03 | 06 | 08 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 |
2015 | 01 | 02 | 07 | 10 |
2016 | 01 | 05 | 10 | 12 |
2017 | 07 |
2018 | 05 |