スポンサーサイト

Tags :
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

今更OS X 10.4.8アップデート

Tags : [MacOSX]
仕事で使ってるMacにはOS Xの10.4.7と10.3.9がインストールしてあって、普段の作業では10.3.9を使ってます。

と言うのも、10.4以降は他のMacの共有フォルダにアクセスする際、OS 8.x以前の古いMacにはAppleTalkで接続出来なくなってるのと、MOを繋いでるSCSIの互換性が今一つみたいで、カーネルパニックが頻発するので使い物にならないんです。

印刷会社ではまだまだ古いスキャナが稼働してると思うんですが、フロントエンドになってるMacでは漢字Talk7.xなんかが当然の様に動いてるし、かといってAppleTalkの互換性云々の為だけにOS9に入れ替えたりとか、調子良く動いてる物にわざわざ手を加えたくもないし(そもそも動作保証されてない)、困ったもんです。

で、試しに普段使ってない10.4を10.4.8にアップデートしましたが、今までと同じくSCSI絡みでカーネルパニック様ご降臨。



AppleTalkの方も相変わらず…どちらかと言えば、こっちの方をどうにかしてもらいたいんですけど。

この言い方だと期待薄か。
http://docs.info.apple.com/article.html?artnum=301183
スポンサーサイト

Lightbox JS v2.0入れました

『Lightbox JS v2.0』
http://www.huddletogether.com/projects/lightbox2/

あちこちで良く見かけるので、自分もやってみたくなりました。

ロード中の『くるくる』は『ajaxload.info』で生成してカスタマイズするのがよさげです。

前のエントリのアップロードスクリプトを何で書こうと思ったかと言うと、Lightboxで使うファイル15個くらいをブログの管理画面からちまちまと1個ずつアップロードしていて、ちょっと面倒臭いなーと思ったから。まぁそんな機会はそれ程ないですが。





画像は癒し効果のあるちょっと古めのコンピュータたち。

ドラッグ&ドロップでブログに画像をアップロードするAppleScript

■追記
このエントリのスクリプトは、FC2Blogがリニューアルで仕様変更されたため動作しなくなっています。
リニューアル後のFC2Blogに対応した改良版は、下記のエントリで公開しています。
ドラッグ&ドロップでFC2ブログに複数の画像をまとめてアップロードするAppleScript その4
■追記ここまで


◆FC2ブログ専用です◆

なんかAppleScriptがメインコンテンツになりつつあります。

OS Xメインで使う様になってしばらく経ちますが、OS 9の時と比べてAppleScriptで出来る事がかなり広がって、今までなら手間が掛かるような事が割と簡単に出来るようになったので、スクリプト書くのが楽しくてしょうがありません。

で、通常ブログサービスでは画像などのファイルをアップロードするのに、管理画面でファイルを1つずつ選んでアップロードする必要がありますが、このスクリプトは複数のファイルをドラッグ&ドロップで一気にアップロードします。

使い方は、ドロップレットとして保存したスクリプトにアップロードしたい画像を一度にドロップすると、ブログの管理画面のパスワードを聞いてくるので(人に見られないように)入力します。シャドウパスワードになっていないので注意が必要。
後は勝手にアップロードが始まり、処理が終わると終了のダイアログが表示されます。数が多いと何も起こってないように見えますが、アップロードは進んでます。
ファイル名や容量、種類等の判定はサーバ側がやってくれるので特に何もしてません。(単にアップされないだけですけど)

サーバへのアクセスはcurlコマンドを使っていて、処理中、cookieを保持するために一時ファイルをホームディレクトリに保存してますが、アップロード後に削除します。
本当は受け取ったcookieを変数に入れて保持するのが良いと思うんですが、内容を整形するのが手間かかりそうだったので今回は見送り(今後の課題)。

現状はFC2ブログ専用ですが、アップロード画面の<FORM>タグに囲まれた範囲の<INPUT>タグの要素を調べてcurlコマンドで渡す様にしてやれば他のサービスにも使えると思います。(でも、ちょっとコード読み辛いですね)

curlコマンドについては以下のサイトを参考にしました。

『curlの使い方』
http://www.big.or.jp/~crane/cocoa/0800_internet/curl/

『cURL - Manual - Japanese Translation』
http://zaurus.catstar.org/misc/curl_manual_ja.html


■動作確認
Mac OS X 10.3.9
AppleScript 1.9.3
curl 7.10.2

■Firefoxからコピペする場合、バックスラッシュを円マークに置換する必要があります
property myURL : "<管理画面のURL>"
--"<ブログのURL>/admin.php"を入れる

property myID : "<ユーザ名>"
--FC2ブログのユーザ名を入れる
 
 
property msg1 : "管理画面のパスワードを入力" as Unicode text
property msg2 : "終了しました。" as Unicode text
property cookieName : "FC2upldr_cookie.txt"--一時保存するcookieのファイル名

on open drop
   if cookieName contains "*" then
      beep
      display dialog "cookieNameが不適切です。" as Unicode text
      error number -128
   end if
   activate me
   set myPass to text returned of (display dialog msg1 default answer "")
   
   repeat with theFile in drop
      tell application "Finder"
         set fPath to POSIX path of theFile as Unicode text
      end tell
      
      set loginScript to "curl -d \"id=" & myID & "&pass=" & myPass & "&mode=admin\" -c ~/" & cookieName & " -L " & myURL
      set uploadScript to "curl -b ~/" & cookieName & " -F \"upfile=@" & fPath & "\" -F  mode=upload -L " & myURL
      
      do shell script loginScript
      do shell script uploadScript
   end repeat
   
   do shell script "rm -f ~/" & cookieName
   beep
   display dialog msg2 default button 1 buttons "OK" 
   
end open

画像に適切な拡張子を付けるAppleScript

◆画像ファイル専用◆

sipsを使ったAppleScriptその2。といっても、画像をいじったりはしないんですが。

仕事では大量に画像のファイル名を操作する事が割と多くて、この手のスクリプトは欠かせません。
で、sipsを使えば画像ファイルのフォーマットを判別出来るので、勝手に拡張子を付けてくれるスクリプトを書いてみました。
ただ、sipsはEPSファイルを扱う事が出来ないので、EPSを判別する部分だけ別に付け加えてます。

OS Xでは(■追記 これはOS XではなくPhotoshopCS2の仕様みたいです。CS3では改善されました)、ファイルを開く際にファイルタイプよりも拡張子が優先されて、 例えば実際のフォーマットは『EPS』なのに拡張子が『.jpg』だとエラーで開く事が出来ません。これは適切にファイルタイプが『EPSF』となっていても同様です。
なのでPhotoshopでJPEG画像を開いた時、『.jpg』の拡張子が付いた同名のEPSで上書き保存してしまうとダブルクリックで開かなくなってしまいます。
(Photoshopの『開く』メニューからでないと開けない)
あと、古くからMac使ってる人って拡張子を付けない習性があるように感じるんですが、そんな人たちから受け取った拡張子の付いて無い画像にも使えると思います。

ドロップレットとして保存したスクリプトに画像ファイルをドロップすると、元から拡張子が付いていれば適切な拡張子に変更、付いて無い場合は新たに拡張子を追加します。

一応、イジワルなファイル名でエラー処理のテストをしてますが、ファイル名の末尾にドットが並んでたりとか、変なファイル名には対応しきれないかも知れません。

Mac OS X 10.3.9で動作確認
property cr : (ASCII character 13)

on open drop
   set errList to {}
   tell application "Finder"
      activate
      repeat with theFile in drop
         set fName to name of theFile
         
         set newExt to my get_Extension(theFile) ----ファイルのフォーマットをチェックし、拡張子を得る
         
         if newExt is not "false" then
            ---- "." 以降4文字以内の末尾を拡張子として取得
            if fName contains "." and length of fName > 4 then
               set targetTxt to text -1 thru -4 of fName
            else
               set targetTxt to ""
            end if
            set currentExt to (do shell script "echo " & quoted form of targetTxt & " | sed 's/.*\.//'")
            if (count of character of currentExt) > 4 then
               set currentExt to ""
            end if
            ----既に拡張子が付いていた場合は現状の拡張子と置換
            if currentExt is not "" then
               do shell script "echo " & quoted form of fName & " | sed 's/" & quoted form of currentExt & "$/" & quoted form of newExt & "/'"
               set fName to result
            else
               ----拡張子が付いていなければ新たに付ける
               set fName to name of theFile & "." & newExt
            end if
            try
               set name of theFile to fName
            on error
               ----ファイル名変更時Finderでエラーが起きた場合エラーリストに追加
               set errList to errList & name of theFile
            end try
         end if
      end repeat
      
      if errList is not {} then
         beep
         set myResult to ""
         repeat with aElement in errList
            set myResult to myResult & aElement & cr
         end repeat
         display dialog "以下のファイルは拡張子を付けられませんでした。(ファイル名のダブり等)" & cr & cr & myResult
      end if
   end tell
end open


on get_Extension(theFile)
   set fPath to POSIX path of theFile as Unicode text
   try
      set newExt to 2nd word of (do shell script "sips -g all " & quoted form of fPath & " | grep format")
      if newExt is "tiff" then set newExt to "tif"
      if newExt is "jpeg" then set newExt to "jpg"
   on error
      ----sipsでフォーマットが判明しない場合、EPSかどうかをチェック
      open for access theFile without write permission
      set readText to read theFile to 20
      close access theFile
      if readText contains "EPSF" or readText contains "ナミモニ" then
         set newExt to "eps"
      else
         set newExt to "false"
      end if
   end try
   return newExt
end get_Extension

カラープロファイル毎に画像ファイルを分別するスクリプト

AppleScriptのImage Events(とかsipsコマンド)で何か出来ないかと色々考えてたんですが、画像をいじるのはPhotoshopのアクションで事足りてるし、そうなると後は画像の情報を得て何か処理をするくらいかなーーとか考えつつ色々と試してます。

で、手始めに画像ファイルに含まれてるカラープロファイル毎に、ファイルを分別するスクリプトを作ってみました。

ドロップレットとして保存したスクリプトに画像ファイルをドラッグすれば、同じプロファイルを持つ画像が一つのフォルダにまとまります。

素性の分からないJPEG画象とかをまとめて受け取った時なんかに使えるかも知れませんが、自分でも利用価値があるのかどうかよく分かりません。

プロファイル名を得るのはImage Eventsよりsipsコマンドの方がシンプルに出来そうだったので、do shell scriptでsips使う様にしました。
sipsで処理出来ないファイル(EPSや画像でないファイル)や、プロファイル名を得られないフォーマット(PSD等)、プロファイルが埋め込まれてない画像は何も処理をしないようになってます。

Mac OS X 10.3.9で動作確認

on open drop
   repeat with theFile in drop
      set myResults to my get_ImageProps(theFile)
      
      --プロファイル名を得られないファイルは処理対象としない(falseにする)
      set color_space to 1st item of myResults
      
      set file_format to 2nd item of myResults
      set profile_name to 3rd item of myResults
      
      if color_space is not "false" then
         tell application "Finder"
            set fName to name of theFile as string
            set newFolderName to profile_name & "@" & color_space & "-" & file_format
            set currentDir to parent of theFile as Unicode text
            if not (folder newFolderName of folder currentDir exists) then
               make new folder with properties {name:newFolderName} at currentDir
            end if
            move theFile to folder newFolderName of folder currentDir
         end tell
      end if
   end repeat
end open


on get_ImageProps(theFile)
   set profile_name to ""
   set file_format to ""
   try
      set fPath to POSIX path of theFile as Unicode text
      set color_space to 2nd word of (do shell script "sips -g all " & quoted form of fPath & " | grep space")
      set file_format to 2nd word of (do shell script "sips -g all " & quoted form of fPath & " | grep format")
      set profile_name to (do shell script "sips -g all " & quoted form of fPath & " | grep profile | sed 's/profile: //'")
      
      ---なぜか頭に何らかのスペース(?)が入るので除去
      set profile_name to (items 3 thru -1) of profile_name as Unicode text 

      if profile_name is "" then set color_space to "false"
   on error
      set color_space to "false"
   end try
   return {color_space, file_format, profile_name}
end get_ImageProps
Profile
choco
Author : choco

印刷・製版の現場を経て、広告制作会社でPhotoshopを使ったビジュアル制作を担当。

→現在は車載機器開発ベンダにて、組み込み3Dデータ作成やUIデザインなどを行っています。

Categories
Favorites


Search
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。