ラベル Mac の投稿を表示しています。 すべての投稿を表示
ラベル Mac の投稿を表示しています。 すべての投稿を表示

2016年1月31日

中古のMacを買うとき:バッテリー寿命

中古でMacを買うときはバッテリーの寿命も調べておこう。

Appleサポート「Mac ノートブックのバッテリーの充放電回数を確認する」
https://support.apple.com/ja-jp/HT201585


わたしのMBAの場合、きょうで715回。あと28%くらい。

買ったときには80数%あった。4年は使ったかな。けっこう長持ちしてる。けど、そろそろ買い替えの資金を準備し始めよう。

2013年5月15日

プレビューで見られるものは何でもアイコンに

これもまた遼東の豕だろうけど……

OS Xではプレビュー.appで表示できるものなら、ファイルやフォルダのアイコンに使える。しかも、わざわざアイコンファイルに変換する必要もない。Windowsでもそうなのかな?

では、手順を…

(1) ファインダー:アイコンを変えたいファイル・フォルダの「情報」を表示する。
(2) プレビュー:アイコンに使いたい画像をプレビュー.appで表示する。


(3) プレビュー:サムネールを表示させる。



(4) プレビュー:サムネールを選択して、command+C でコピー。


(5) ファインダー:「情報」のアイコンをクリックして、command+V でペースト。


(6) できあがり。簡単。




2012年3月28日

ひらがな・カタカナ変換

ひらがなをカタカナに、カタカナをひらがなにそれぞれ変換するperlスクリプト。
これをOS Xのサービスに入れておくと便利かも。

ひらがな→カタカナ
use utf8;
binmode STDOUT, ':utf8'; 
binmode STDERR, ':utf8'; 
binmode STDIN, ':utf8';
while (<>) {
 tr/ぁ-ゖ/ァ-ヶ/;
 s/わ゙/ヷ/;
 s/ゐ゙/ヸ/;
 s/ゑ゙/ヹ/;
 s/を゙/ヺ/;
 tr/ゝゞ/ヽヾ/;
 s/ゟ/ヨリ/;
 print $_;
}

カタカナ→ひらがな
use utf8;
binmode STDOUT, ':utf8'; 
binmode STDERR, ':utf8'; 
binmode STDIN, ':utf8';
while (<>) {
 tr/ァ-ヶ/ぁ-ゖ/;
 s/ヷ/わ゙/;
 s/ヸ/ゐ゙/;
 s/ヹ/ゑ゙/;
 s/ヺ/を゙/;
 tr/ヽヾ/ゝゞ/;
 s/ヿ/こと/;
 print $_;
}



「わ゙ゐ゙ゑ゙を゙」で、trコマンドじゃなくて、sコマンドを使ってるのは、合成用濁点を使っているからです。濁点付きの「わゐゑを」という文字はありませんもん。

なお、小書きの「ヵ」「ヶ」を「ゕ」「ゖ」に変換するのは間違っていると思うけど、ここでは形式的に変換してみました。「ヵ」「ヶ」は「箇」や「个」の略字・異体であって、仮名ではないはず。


 NOTA BENE :  当初「use encoding "utf8";」という指定をしてましたが、これは使うべきではないとのことです(→『404 Blog Not Found』「perl - use encoding; #は黒歴史」)。


2012年3月24日

たくさんのファイルをいっぺんにリネーム

きのうの隔週勉強会で「リネームソフトってWindows用ばっかりや」という声が(一部から)聞こえたけど*、Mac OS Xだと別段必要もないんじゃないかな。Windowsはシェルがしょぼいから、ファイルのリネーム程度のことでもソフトを作らなあかんということですよ。実際にはMac用のもたくさんあるようです。私がWindowsのこともMacのことも知らないだけでした^^)

OS Xはunixですから。


勉強会で出て来たのは、「感-5864.ai」という形式の名前を持つファイルを、冒頭の漢字1文字とハイフンまでを外した「5864.ai」という形式の名前にリネームしたい。たくさんあるのを一括処理したいという課題でした。

Terminal(shellはbash)でやれば簡単。
bashの「for name [ in word ] ; do list ; done」構文を使います。

sedでやってみる

まず、考えたのは手に馴染んでいるsedを使うやりかた。
for i in *.ai
> do
> cp $i `basename $i | gsed -e 's/^.-//'`
> done
  1. basenameコマンドでファイル名をテキストとして取得:basename $i
  2. それをパイプを通じてsedに渡し、
  3. 先頭の一文字とそれに続くハイフン(^.-)を削除:s/^.-//
  4. ここまでの実行結果(`basename $i | gsed -e 's/^.-//'`)を新しいファイル名としてcpコマンドに渡す
という手順。

ただし、漢字など多バイト文字はOS X付属のsedではうまく変換できないので、GNU sedが必要です。(bashの環境変数のうちLANGも、LANG=ja_JP.UTF-8とする必要があります)

perlをつかう

そこで、OS X付属のperlを使ってみました。こんな感じです。
for i in *.ai
> do
> cp $i `basename $i | perl -CIO -pe 'use utf8; s/^.-//;'`
> done

】当初、perl -pe 'use utf8; s/^.+-//;'」と書いていて、どうして「+」が必要なんだろうと不思議に思っていたのですが、エンコーディングの指定書式を旧式の「use encoding "utf8"」にすると文字数が思惑どおりになりました。しかし、その後、perlの起動オプション「-C」で出入力のエンコーディングを指定することを教わりました(man perlrun参照)。これでやっと現代的なコードになりました。みなさん、ありがとうございます。


bashだけでできる

そうこうしているうちに、bashだけでできるのに気付きました。こうです。
for i in *.ai
> do
> cp $i ${i/*-/}
> done

変数を展開する際にその一部を書き換える機能をbash自体が持っているんです。
bashのmanpageでは、「Parameter Expansion」項の最後の方に載ってます。
 ${parameter/pattern/string}という構文です。
(今回はpatternの文字列を削除するのでstring文字列は

検索パターンの書き方にちょっと癖があるし、機能もsedやperlほどではないのですが、今回のような事例ならこれで充分役立ちます。

2012年3月5日

どこでもunixフィルタ

おとといの記事のつづきです。


OS Xの「サービス」に「シェルスクリプトを実行」を組み込む時、オプションの「ワークフローの実行時にこのアクションを表示」をONにしておけば、その時々でスクリプトを書き換えられるので便利。


環境変数の設定だけしておけば汎用フィルタとなります。
export LANG=ja_JP.UTF-8
これを「汎用篩」という名前で保存しておきます。

では、facebookの投稿欄で使ってみましょう(ブラウザはSafariです)。


無理矢理の例ですが、各教科ごとの平均点を計算させてみます。計算する行を選択して、上で作ったサービス「汎用篩」を呼び出します。


生徒 A  B  C  平均
国語 85 89 84
算数 92 90 88
理科 78 75 80
社会 94 90 92

おとといの例とは違って、「シェルスクリプトを実行」windowが現れます。
ここにスクリプトを書きこみます。

今回はawkスクリプトを書いてみましょう。awkはOS Xネイティブのものでもutf-8テキストをちゃんと扱えます。

awk '{total=$2+$3+$4; avg=total/3; print $0, avg}'


えい!


生徒 A  B  C  平均
国語 85 89 84 86
算数 92 90 88 90
理科 78 75 80 77.6667
社会 94 90 92 92

できました^^

2012年3月3日

InDesign上のテキストをperlやsedで編集

(2016-1-11注記: CS6ぐらいから仕様が変わったのか、InDesignからサービスにテキストを渡せなくなっています。残念 orz)

Macはテキスト処理も強力なのです。なにせunix系ですから。
しかも、Terminalじゃなくても、Webページの入力フォーム内や、もちろんInDesignのフレームグリッド内でもperlやsed、awkを使ったテキスト編集ができてしまうのです。

もう、これだけでもWindowsを捨てて、Macにしなさいと声を大にして言えます。

InDesignだとこんな具合;
洋数字を漢数字に:置換前
置換後
このあと、「六八〇」→「六百八十」と単位語を書き加えたりしなければなりませんが、手間や書き換え間違いはずいぶん減ります。



これは、OS Xの「サービス」という名前のサービスを使っているのです。
「サービス」は選択部分に対して適用されます。(選択部分が何なのかによってサービスメニューの内容が変ります)


「サービス」はOS X付属のAutomator.appで作ります。
Otto君が手にしているのは他ならぬ「パイプ」です。









起動したら「新規作成」ダイアログで「サービス」を選びます。












左側にある「アクション」を右側の編集欄にドラッグして、unixのフィルタをパイプで繫いでいくように、並べていきます。

↑これは「サービス」ではなく「フォルダアクション」の例です
今回作るフィルタで使う「シェルスクリプトを実行」は「アクション」の「ユーティリティ」の中にあります。それを編集欄にドラッグすると…
ここで、「選択されたテキストを出力で置き換える」にチェックを入れるのがミソです(デフォルトではOFFになってます)。

unix流にいうと選択部分を標準入力・標準出力として扱っているのです。
なお、流れるテキストストリームは、文字コード:utf-8、改行:LF (とおもいきや、InDesignのようにCR改行のテキストを渡すものもあるようです)。



シェルには各種のshellが選べます。perl、python、pubyを直接呼び出すこともできます。








それぞれ、あらかじめ、標準入出力用の枠組みが用意されています。perlだとこんな具合。










あとは、やらせたいフィルタスクリプトをここに書いて、適当な名前をつけて保存すれば、メニューバーのアプリケーションメニューやマウス右クリックでのコンテキストメニューでの「サービス」から呼び出せるようになります。

(この段階では特定のスクリプトを書かず、「汎用のフィルタ」とするのも便利です。詳しくは後日の「どこでもunixフィルタ」記事をどうぞ)


なお、自作の「サービス」は、各ユーザの「~/Library/Services/」フォルダに保存されるのですが、Lionからこのフォルダが不可視とされてしまいました。Finderのメニューバーの「移動」をOptionキーを押しながらクリックすると「ライブラリ」に移動できますが、Automatorの「開く」ダイアログには「移動」がないので、Finderのサイドバーにドラッグして登録しておくことをお薦めします。


実例:

洋数字を漢数字に書き換えるサービスならこんな具合です。shellとしてperlを使ってます。

use encoding 'utf-8';
while (<>) {
 y/0-9/0-9/;
 y/,./,./;
 y/0123456789/〇一二三四五六七八九/;
 y/,./千・/;
 print $_;
}
「use encoding 'utf-8'」と宣言してやれば、仮名漢字スクリプトもOKです。

メールなど改行で体裁を作ってしまったテキストの行を連結させるサービスでは、bashからsedを呼び出しています。

export LANG=ja_JP.UTF-8
tr \\r \\n | /usr/local/bin/sed -f /Users/mt/bin/jointline.sed
「export LANG=ja_JP.UTF-8」で環境変数LANGをutf-8用にするのが肝心。

なお、OS Xネイティブのsedはutf-8をまだうまく扱えないので、GNU Sedを使う必要があります。GNU Sedはソースから、configure→make→make install で簡単にインストールできます。
また、InDesignのようにCR改行テキストを渡すものもあるので、「tr \\r \\n」で改行をLFに揃えます。

この例で呼び出している jointline.sed は2010年6月に書いた「行連結sedスクリプト」です。
:loop
$!N
s/\(.\+\)\n\([^ ]\+\)/\1\2/
t loop
P
D
 は全角空白です。


*改題しました。2012-03-04

2012年2月17日

MacBiffでMail.appでないメーラを召喚

iCloudとGmailの新着チェックにMacBiffを使ってみました。

この2つについてはMail.appの代わりにSparrowを使っているんですが、はて? MacBiffのプルダウンメニューの「Launch Mail」でSparrowが起動しない。


MacBiffの設定パネルの「Options > Mail Application」の「Choose」ボタンでSparrowを指定したのです。こんな風に…
OSはLion(10.7. 3)です。

う〜ん… う〜ん… … …
これでどうじゃ? … …

(^o^)y  Sparrowが起動しました。




file://localhost」が不要だったようです。




2011年10月23日

Lionのテキスト読み上げ:そこの君、ちょっと読んでくれない?

Lionのテキスト読み上げは多国語対応になったんだけど、読み上げさせる言語を自動的に切り替えてはくれません。

環境設定の「スピーチ」でそれぞれの言語をしゃべってくれる「声」を切り替えないといけないんだけど、いちいち環境設定を起動するのはけっこう面倒。

そこで、Automatorでこんなサービスをつくって、「声を指定して読み上げる」とでも名前を付けて保存しておくといいかも。


「実行時にこのアクションを表示」にチェックをいれておくのがミソ。


これで、テキストを扱えるアプリケーションで読み上げさせたい部分を選択して、アプリメニューからこのサービスを呼び出せばよし。


でも、Lionの「声」は言語によって出来不出来の差がけっこうありますね。日本語担当のkyokoさんは、なんだか懐かしい感じがしますよ^^



2011年10月20日

不可視旗:母さん、僕のあのファイルどうしたでせうね

他のOSでつくったZipなどアーカイブファイルをMacで展開すると、展開は成功しているらしいのに、Finderではファイルが見つけられないことが、ままあります(「一太郎Ark」のパッケージでそんなことがありました)。

Terminalでls を実行すると目当てのファイルが見つかる場合、そのファイルにhiddenフラグがついているのです(もとのOSでは別の役割を果たしていたんでしょうけど)。

そのhiddenフラグを取るには、
chflags nohidden ファイル名
とすればOKです。直ちにFinderにそのファイルが現れますよ。





2011年6月14日

複数のテキストフレームをひとつずつ別文書にコピー

わたしがつくっている新聞では「新年あいさつ」と「暑中見舞い」、年2回の名刺広告を掲載してます。

1枠の料金は年間購読料よりも高く、全体でけっこうな収入になるのですが、募集事務の手間がたいへんなのです。かつては編集部に4人もいて、財政部門も手伝ってくれていたのですが、ここ10年ぐらいはわたしひとりで作業をしています。
  1. 前回の降版データから、個々の名刺広告(ひとつひとつがテキストフレームに入っています)をコピーし、
  2. 1枚の募集要綱にひとつずつペースト(内容の確認や今回の掲載に向けての変更を広告主にしてもらうためです)、
  3. 広告主を照合しながら、募集要綱を宛名ラベルを貼った封筒に詰めて発送しています。
これをなんとか省力化しようと、大組ゲラ上の前回データを募集要綱(小組ゲラ)へコピー&ペーストするという作業をInDesignで自動化させてみました。

CS2なので複数文書の取り扱いに不便なところがあります。CS2ではcopy()とpaste()でしか文書間のコピー&ペーストができないようなのです。しかも、copy()とpaste()は前面のlayoutWindowにしか作用しない。

そこでlayoutWindowを切り替えてやらねばならないのですが、その際、documents[0]とdocuments[1]とが指し示す文書まで入れ替わってしまいます(そのためオブジェクト名の表記を変数をもちいて簡略化できません)。

CS4だとduplicateでコピー元やペースト先が明確に指示できるし、layaoutWindowを切り替える必要もないので、もっと楽にできそうです。

とりあえず動くようになったスクリプトはこんな具合です(エラー処理その他は未実装)。

var ohgumi = File.openDialog ("大組ゲラを開く");
app.open(ohgumi);
var kogumi = File.openDialog ("小組ゲラを開く");
app.open(kogumi);
 /*document[1]は大組ゲラ*/
var numTF = app.documents[1].textFrames.length;
for (i=0; i<numTF; i++){
 /*前面を大組ゲラに切り替え*/
 app.layoutWindows[1].bringToFront();
 app.select(NothingEnum.nothing);
 /*documents[0]は大組ゲラ*/
 app.documents[0].textFrames[i].select();
 app.copy();
 /*前面を小組ゲラに切り替え*/
 app.layoutWindows[1].bringToFront();
 app.paste();
 app.select(NothingEnum.nothing);
 /*documents[0]は小組ゲラ*/  
 app.documents[0].pages[i].textFrames[0].move(["0mm","0mm"]);
 if (i<numTF-1){
 /*documents[0]は小組ゲラ*/
  app.documents[0].pages.add(1701733408);
  }
 }

2010年8月4日

Apple Magic Trackpadがマニュアルの手順ではインストールできない?

これまでMagic Mouseしか使ってなかったMac miniにMagic Tracpadをインストールしようとしたのですが、Tracpad付属のマニュアル冊子(クイックスタート)の手順ではうまくいきませんでした。

クイックスタートでは、
  1. ソフトウエア・アップデートでトラックパッドソフトウエアをインストールする
  2. トラックパッドの電源を入れる
  3. トラックパッドを登録する
という手順です。

しかし、Mac mini側でMagic Trackpadの接続を認識していない状態では、ソフトウエア・アップデートをしてもトラックパッドソフトウエアはインストールされず、システム環境設定にトラックパッドの項目が現れません。

そこで、
  1. トラックパッドの電源を入れる
  2. システム環境設定>BlueoohでMagic Trackpadを認識し、接続を確立する(この時点では種類「マウス」として認識されます)
  3. ソフトウエア・アップデートを行い、トラックパッドソフトウエアをインストールする
  4. 再起動後、「bluetoohトラックパッド設定」が自動的に起動する
  5. トラックパッドの電源を入れ直すと、登録が行なわれる(こんどは種類「トラックパッド」と認識されている)
私の場合、この手順でMagic Trackpadが使えるようになりました。

追記:
同文をAppleのディスカッションボードに書いたら、さっそく、アドバイスがありました。
件のソフトウエアをまず探せばいいんですね。
Magic Trackpad および Multi-Touch アップデート 1.0

すると手順は、
  1. ソフトウエア・アップデートをする(念のため)
  2. 最新のトラックパッドソフトウエアをアップル→サポート→ダウンロードで探してダウンロード・インストールする
  3. トラックパッドの電源を入れる
  4. トラックパッドを登録する
となります。

-

2010年6月13日

Macのsedはやっぱり変! でも『ネコのマロン...』は面白そう

MacOSXのsedは、まだマルチバイト文字がうまく扱えないようです。

このsedでも、

 script_0  y/1234567890/1234567890/g

は、環境変数LANGがja_JP.UTF-8にセットされていればちゃんと動きますし、modernな正規表現も「E」オプションをつければ使えるのですが、下のtest.txtを
 script_1  s/[^]+/NEKO/g
で編集してみると... 元のままのテキストが出力されるだけ。patternがマッチしていないようです。

test.txt
[A]
コのマロン参院選に立つ。』の著者さん編集担当さんには
鳩山首相の辞任はとんだとばっちりではないですか?

今回の参議院選挙に間に合わせて公職選挙法を改正してット選挙を
解禁することはすべての党派で一致していたのに、辞任のドタバタで
会期を延長しないと改正が間に合わない...

ところでット選挙が解禁されても私がつくっているような印刷物での
選挙は従来どおりほとんどできないままになるようです。

[B]
コのマロン,参院選に立つ。』の著者さん編集担当さんには

[C]
コのマロン参院選に立つ。』の著者さん,編集担当さんには


そこで、マルチバイト文字である「」をシングルバイト文字の「,」に替えてみると...
 script_2  s/[^,]+/NEKO/g

編集結果は:
[A]
『NEKO
鳩山首相の辞任はとんだとばっちりではないですか?

今回の参議院選挙に間に合わせて公職選挙法を改正してNEKO
解禁することはすべての党派で一致していたのに辞任のドタバタで
会期を延長しないと改正が間に合わない...

ところでNEKO
選挙は従来どおりほとんどできないままになるようです。

[B]
『NEKO,参院選に立つ。』の著者さん編集担当さんには
[C]
『NEKO,編集担当さんには

変な文章になりますが、これは意図どおり。script_2は正しく作動しました。


私が編集しているのは日本語テキストなので、MacOSXのsedがこの有様では仕事になりません。(あ、書き忘れましたが、この記事でのスクリプトや処理対象テキストのエンコードはUTF-8です)。

そこで、GNUのsedをインストールしてみました。GNU sedでは「+」はエスケープしないといけないので、スクリプトは、
 script_3  s/[^]\+/NEKO/g

編集結果は:
[A]
『NEKO参院選に立つ。』の著者さん編集担当さんには
鳩山首相の辞任はとんだとばっちりではないですか?

今回の参議院選挙に間に合わせて公職選挙法を改正してNEKO
解禁することはすべての党派で一致していたのに辞任のドタバタで
会期を延長しないと改正が間に合わない...

ところでNEKO私がつくっているような印刷物での
選挙は、従来どおりほとんどできないままになるようです。

[B]
『NEKO編集担当さんには
[C]
『NEKO参院選に立つ。』の著者さん,編集担当さんには
はい、これも意図どおり (^_^)y これなら仕事に使えます。


なお、『ネコのマロン、参院選に立つ。』(植松眞人著, 保育社から7月上旬発売予定)は、ネット選挙が主なテーマじゃなくて今まで政治や選挙に興味がなかったり敬遠していた人々、または政治に興味を持ち始めた学生たちに、選挙のしくみをネコのマロンを通して楽しみながら知ってもらいたい...と企画されたのだそうです。

選挙や投票とは何か、参院選の任期のこと、など基本的なことから説明します、とのこと。つまり、私が上のtest.txtで書いたようなことは心配ないということです。


この本について詳しくは「ほいくしゃの本屋さん」サイトのページをご覧ください。
http://hoikusha-shop.jp/SHOP/9784-586-08510-1.html



なお、なお、GNU sedはオリジナルのソースからコンパイルしました。4.2.1版なのですが、MacOSX 10.6のXcodeであっさりインストールできましたよ。
MacPortとかFinkとかを使おうかと思ったのですが、それ自体がちょっと大層な(かつて、OSX 10.4で使った折の印象)システムなのでやめました。それに、MacPortだとsedをインストールするにはgettextとlibiconvが必要、gettextはexpat・libiconv・ncursesの3つが必要で、さらにncursesはncurseswが必要、戻ってlibiconvにはgperfが必要.......こんな風に芋蔓式にインストールするものが増えていくのも難儀なことでした(これはFinkでも、*BSDやLinuxのパッケージ管理システムでも同じですね)。今回、sedのソースだけでコンパイルできたってことは.... あの芋蔓はいったい (@_@;;