2014年8月19日火曜日

2014年8月8日金曜日

Vimperator プラグイン direct_bookmark.js で Delicious への Post に失敗する問題に挑む (WIP)

Delicious の API の仕様が替わったため、vimperator プラグイン direct_bookmark.js でマルチバイト文字を <title> に含むページをブックマークできなくなっていた。
不便なので直そうと思っているのだが、とりあえず途中経過を晒しておく。

2014年7月13日日曜日

PMI日本フォーラム2014 参戦レポート

7月12日~13日の2日間、PMI日本フォーラム2014に参加してきた。
「レポートを書くまでがセミナー」であるが、各トラックの内容を詳細に書くのは問題がありそうなので、所感を簡単に述べるだけに留めることとする。
今年はPMO、ソーシャルPM、リスクといったテーマのトラックを重点的に取ってみた。
Posted in 

2014年2月24日月曜日

NTFSアクセス許可の「サブフォルダーとファイルの削除」が強すぎる

NTFSに詳しい人には当たり前の話かもしれないがメモ。

"test" というフォルダを作成し、そのフォルダの配下に "deleteTest.txt" というファイルを作成する。
 "test" フォルダにて "サブフォルダーとファイルの削除"の許可にチェックを入れる。
Fig.1 上位で "サブフォルダーとファイルの削除" 許可

"deleteTest.txt" にて 上位継承を切り、 "削除" の拒否にチェックを入れる。
Fig.2 下位で "削除" 拒否

ツリーで示すと下図のようになる。
Fig.3 アクセス権設定
この状態でどちらが勝つか。
結果は、"サブフォルダーとファイルの削除" の勝ち。つまり、"deleteTest.txt" は削除できてしまう。
下位のオブジェクトで "削除" を拒否しても全くの無駄
というわけで、あるフォルダの配下のサブフォルダ・ファイルに対して「原則消せるけど、特定のファイルだけ消されたくない」という要件がある場合、"サブフォルダーとファイルの削除" は使わず、
  • 上位フォルダからの継承で "削除" を許可しておく
  • 消されたくない下位フォルダ・ファイルだけ、継承を切って "削除" のチェックを外す
という方法を取る必要がある。
個人的には下位の設定が勝って欲しいんだけど。こういうのって普通は、まず上位の設定が適用された後、下位の設定で上書きされると思うじゃん?

2014年2月19日水曜日

VagrantでWindowsゲストを立ててChef-Soloのrecipeを実行する

2014.02.23 Boxの元の仮想マシン名とBoxの名前がカブってて具合悪かったので一部修正。

VagrantはWindows関連の情報が少ないので色々実践してみた。当ブログはWindows技術者の味方です(おおげさ)。
前回のVagrantの記事はあまりに色々端折っていたので、今回はVagrantを知らない人にも分かる様、少し詳しめに書こうと思う。

今回の目的を下記に定める。

  • ホストOSもWindows、ゲストOSもWindowsという環境
  • VagrantによるゲストOSの起動、ゲストOSに対するChef-Soloの自動インストールとrecipe自動実行まで行う
  • recipeは、とりあえずお試しということで、IISの自動インストールとする
  • ゲストOSはWindows Server 2012 R2 180日評価版とする
  • ゲストOSを複数台同時に立ち上げられるように、sysprepも実施する
  • sysprepの自動応答ファイルも作成することとする

ゲストを評価版にしたのは、元々Vagrantが開発環境を作ったり壊したりするためのツールであることから、ライセンスのアクティベーションが発生する製品版よりは評価版の方が適しているとの考えから。

2014年2月14日金曜日

インフラデザインパターンを読んだので突っ込みを入れておく

インフラデザインパターン ── 安定稼動に導く127の設計方式を読了。
色々言いたいことがあるので、書評を兼ねて突っ込みを入れておきたい。
すべての突っ込みを書いているとキリがないので、強く気になったところだけ書く方針で。
この本は何か
ITインフラの設計要素(可用性とかセキュリティとか)毎に複数のデザインパターンを紹介し、それらのメリット・デメリットを比較する、というのがこの本の主旨である。
全体的な所感
本書全体を通しての感想は、大きく以下の4点。
  1. 一般的に検討しなければいけない設計要素は一通り網羅されている。
  2. パターンもよく整理されている。
  3. しかし、明らかにパターンが不足している箇所がある。
  4. 同列で比較すべきでないパターンを比較している箇所がある。
それぞれ、以下で細かく見ていきたい。

2014年2月13日木曜日

あふw ネットワークドライブ操作メニュー

業務上、社内のファイルサーバやWebDAVを使うことが多いので、あふwから簡単にネットワークドライブとして接続/切断できるようにした。
F8キーにネットワークドライブメニューを割り当てた。
Kxxxx="0119&MENU $~\NetworkDriveMenu.txt"
afx ネットワークドライブメニュー
"P webdav1" net use P: https://example.co.jp/webdav1/ password /user:username
"Q fileserver1" net use Q: \\fileserver1\share password /user:username
"0 deleteAll" powershell $~\deleteAllNetworkDrive.ps1
@(gwmi Win32_MappedLogicalDisk) | % {
 net use $_.DeviceID /delete
}

2014年2月11日火曜日

イメージファイト2周目7面後半新パターン

2014.2.15 動画を追加。

イメージファイトの2周目7面後半は難所として有名だが、この度、背景の星を目印に位置合わせをする横着パターンを開発したので、ここに発表する。
正直、イメージファイトのトッププレイヤーのプレイを見たことがないので、もしかしたらすでに誰かが同じことやってたりして。。。
もし世界初だとしたら7面後半の攻略に革命が起きるのではないか。

2014年2月10日月曜日

SubInACLのFlagとAccessMask早見表

dsp74118の補完庫: Windows のオブジェクトのアクセス権を操作するコマンド subinacl が便利だった で触れたSubInACLのFlag、AccessMaskの早見表を作った。
俺の中ではアクセス権変更ツールとしてのSubInACLはオワコンだが、現在のACLを確認するツールとしてはまだまだ便利に使えると思う。

パスをあふw(Afxw)で開く(File URI Scheme対応版)

引数で与えたパスをあふwで開くvbs。今日、少し手を加えたのでpostしておく。
元ネタは、何年も前にどこかから拾ったもの(2chのあふスレかな? ググったけど出てこなかった)。
あふwこまんど使用。
あふwこまんどは(というか、あふw自体が)ローカルパスとUNCパスは開けるけどfile URI Scheme(file:///)が開けなかったので、その考慮を付け加えたもの。
あふw 及び あふwこまんど のインストール先が"%APP%\afxw\"であることが動作条件。環境によって27~29行目を書き換えてもらえばよいかと思う。

Everythingの「規定のファイラーでパスを開く」に登録しておいたり、ブラウザやメーラーの"file:///"のコンテキストメニューに追加したりすると便利なんではないかと思う。
' Open with Afxw.vbs
' ver.1.1 dsp74118
' Description: Open path(Local path/UNC path/URI) with Afxw
' Requirement: あふこまんど(AFXWCMD.EXE) is installed in %APP%\afxw\
' args:
'  path string
Option Explicit

'Function UrlDecode
' Description: Decode UTF8-Encoded-URI
' args:
'  strSource: Encoded URI string
' return:
'  Decoded URI String
Function URLDecode(strSource)
 Dim objSC
 Set objSC = CreateObject("ScriptControl")
 objSC.Language = "Jscript"
 URLDecode = objSC.CodeObject.decodeURIComponent(strSource)
 Set objSC = Nothing
End Function

' main
On Error Resume Next
Dim wshShell
Dim app, afx, opt, quoteChar, SPC, YEN
Set wshShell = WScript.CreateObject("WScript.Shell")
app = wshShell.ExpandEnvironmentStrings("%APP%")
afx = app & "\afxw\AFXWCMD.EXE"
opt = "-p"
quoteChar = """"
Dim path, arg, runCmd
Set arg = WScript.Arguments
If arg.Count = 0 Then
 WScript.Quit
End If
path = arg(0)
' convert URI(file scheme) to UNC
If Left(path, 8) = "file:///" then
 path = Right(path, Len(path) - 8)
 path = URLDecode(path)
End If
runCmd = quoteChar & afx & quoteChar & " " & opt & quoteChar & path & quoteChar
wshShell.Run(runCmd)

2014年2月7日金曜日

PowerShellでNTFSのACLをいじる(備忘録レベル)

2014.2.13修正 ACLの適用範囲や継承は既存の設定を引き継ぐよう修正

仕事で下記スクリプトを作ったので記録として残しておく。
機能は、引数で与えたフォルダに対し、セキュリティグループ "domainname\groupprefix*" の「サブフォルダーとファイルの削除」権限を削除するというもの。
このスクリプトをベースに、色々と応用が効くはず。
$Path = $args[0]
$acl = Get-Acl $Path
$groupAccess = $acl.access | where {$_.IdentityReference -like "domainname\groupprefix*"}
if ($groupAccess){
    $Access = $groupAccess.IdentityReference

    "Modifying Permissions For $Access"
    $Permission = $groupAccess.FileSystemRights
    "Before: $Permission"
    $Permission = ($Permission -replace "DeleteSubdirectoriesAndFiles(, )*","") -replace ", $", ""
    "After: $Permission"
    $inherit = $groupAccess.InheritanceFlags
    $propagation = $groupAccess.PropagationFlags
    $AccessRule = New-Object system.security.AccessControl.FileSystemAccessRule($Access, $Permission, $inherit, $propagation, "Allow")

    $AccessModification = New-Object system.security.AccessControl.AccessControlModification
    $AccessModification.value__ = 2
    $Modification = $False
    $acl.ModifyAccessRule($AccessModification, $AccessRule, [ref]$Modification) | out-null
}
Set-Acl -aclobject $acl -Path $Path

VagrantでWindowsゲストのBoxを作成


前々からVagrantをいじりたくてうずうずしていた私。最近ようやく触る時間ができたので、Windows Server 2012 R2ゲストのBox自作に挑戦した。
最初は[Vagrant] WindowsServer2012R2のBoxを自作する #Vagrant_ja - NAVER まとめを参考にさせてもらっていたが、このまとめの作者であるk-kukitaさんから「今はvagrant-windows使ったほうがよい」とアドバイスを頂いたので、早速vagrant-windowsを試してみた。

必要な手順はvagrant-windows/README.md at master · WinRb/vagrant-windows · GitHubにほとんど書いてある。
なお、VagrantやVirtualBoxのセットアップは、この記事では省略する。