0

通知センターにObjective-Cで通知を出す

なぜかMacアプリ作ってます。今をときめくiPhoneアプリでなくMacアプリ。
備忘録として、Macの通知センターにobjective-cで通知させる方法です。

Screen Shot 2013-09-09 at 7.08.17 PM

とか

Screen Shot 2013-09-09 at 7.07.50 PM

とかみたいなやつですね。

■Notification.h

#import <Cocoa/Cocoa.h>
@interface Notification : NSObject <NSApplicationDelegate, NSUserNotificationCenterDelegate>
- (void)notify:(NSString *)title subtitle:(NSString *)subtitle informativeText:(NSString *)informativeText url:(NSString *)url;
@end

■Notification.m

#import "Notification.h"
@implementation Notification
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
}
- (void)notify:(NSString *)title subtitle:(NSString *)subtitle informativeText:(NSString *)informativeText url:(NSString *)url
{
[NSUserNotificationCenter defaultUserNotificationCenter].delegate = self;
 
NSUserNotification *userNotification = [[NSUserNotification alloc] init];
userNotification.title = title;
userNotification.subtitle = subtitle;
userNotification.informativeText = informativeText;
userNotification.userInfo = [[NSDictionary alloc] initWithObjectsAndKeys:url, @"url", nil];
[[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:userNotification];
}

// ダブルクリックでURLで指定した先に飛ぶ
- (void)userNotificationCenter:(NSUserNotificationCenter *)center didActivateNotification:(NSUserNotification *)notification
{
NSURL *url = [NSURL URLWithString:[notification.userInfo valueForKey:@"url"]];
[[NSWorkspace sharedWorkspace] openURL:url];
}
@end

で、通知を出したいところでこのクラスのnotifyというメソッドを呼び出す。

notification = [[Notification alloc] init];
    [notification notify:@"タイトル" subtitle:@"サブタイトル" informativeText:@"テキスト" url:@"http://yahoo.com"];

subtitleは、あまり使われてない印象。
これを引数でタイトルやテキストを指定できるアプリケーションにして、LLから呼び出せるようにしとけば俺々ツール作る時に便利ですねー。

0

Project Creator

Pythonの練習がてら作ったWebサイトの開発環境の構築を自動化するツールです。

Project Creator

他の人はどうやってるかわからないけど、私の場合Webサイトやモックをローカル(Mac)に作る時だいたいこんな流れです。

  1. http://dev.hogehoge.comとかでアクセスできるようにhostsを書き換え。
  2. Apacheの.htaccess fileを編集してバーチャルホストの設定。
  3. プロジェクトフォルダの作成。
  4. ベースとなる適当なHTMLやCSSをBootstrapや以前作ったサイトからコピー。
  5. Apache再起動
  6. ブラウザで確認

と、いった一連のアクションを全部手動で行なっていました。sudoしたり最新のBootstrapダウンロードしたりとけっこう面倒です。
何かを作りたくてもこのステップが面倒で二の足を踏んでしまう事もありました。

Project Creatorはこれを全部自動化するスクリプトです。余計なお世話ですが、最後はFinderとブラウザまで立ち上がります。
“Default”ってフォルダにベースとなるHTML/CSS/JSをぶち込んで置くこともできますが、SymfonyやSinatraなんかを置いていても良いかもしれません。但し適宜run.pyを修正する必要があります。
完全に俺々スクリプト&めったに書かないPythonなんで万人受けしませんが、「何か作ってやるぜ!でも環境構築するのに面倒…」って人に最適です。

GithubからCloneしてconfig.py修正してrun.py動かせば対話型のコマンドが実行されます。
config.pyもだいたいそのまま使えますが、projectpathは恐らく変更する必要があります。

'projectPath': '/virtual/www/'

projectのベースとなるパスです。人によりけりだけど/home/とか/var/www/とかですかね。
私は以前使ったファーストサーバの名残で/virtual/www/となってます。

/virtual/www/projectA/public/ http://dev.a.com
/virtual/www/projectB/public/ http://dev.b.com
/virtual/www/projectC/public/ http://dev.c.com

という形です。

あとは、python ./run.pyとかで動きます。

$ python ./run.py
Enter your domain name. (e.g. dev.test.com) [] dev.test.com
Enter the project path following '/virtual/www/'. (e.g. test) [] test
Enter document root directory following '/virtual/www/test/'. [public]
Choose a template from 'bootstrap/plain'. [] bootstrap
 
---------------------------
Domain: dev.test.com
Project Path: /virtual/www/test
Document Root: /virtual/www/test/public
htaccess: /etc/apache2/extra/httpd-vhosts.conf
Template: bootstrap
---------------------------
 
Are you sure these configurations are all correct?(Y/n) [n] Y
Password: ←rootのパスワードを入力
Your project successfully generated.

 
こんなモックが出来上がります。なぜかフォーム付き。

0

mySQL5.1 on Mac

macOS X(10.6)にphp+apache+mySQLで開発環境を整えてみた。
ここ数年の自分の開発環境というのは、linuxサーバーにcodaでつなげてリモートで開発するような形でした。
ソーシャルアプリだとgadget.xmlを外部からアクセスできる場所に置いておく必要があるのでこれが一番良かったりしたのですが、最近は少しソーシャルアプリから離れつつあるということで開発環境を改めてみました。
といって単に普段使ってるmacを開発環境にしただけなんだけど、実はこのスタイルは初めて。
本番環境はcentOSかfedoraなので、それと違う環境で開発するというのが二度手間になる部分(ソフトのインストールとかpathの設定とか)があるのではないかと躊躇してたけど、実際インストールが完了して開発する事になってもそんな気にする事態は今の所発生していません。

phpとapacheは元々入ってるのでそれをそのまま使います。
mySQLはmac portsから入れました。昔いれたmysql5.0の残骸が残ってたのでこの通りやっても環境によってはうまくインストールされないかもしれません。
ログがなくなってしまったので覚えてる限りです。

ネット上によくあるインストールログのようにするとserverの方が入りません。
# sudo port install mysql5 +server

このコマンドでいれてと親切にでてきたのでそのまま実行します。
# sudo port install mysql5-server

以前5.0が入ってたせいかactivateしろみたいな事がでたのでactivateする。
# sudo port -f activate mysql5-server

面倒なのでmacごと再起動。
# mysql5 -u root
とりあえず動いた。たぶんmysql5.0の残骸のお陰。

# ps aux | grep mysql
_mysql 1463 0.0 0.5 2518252 19688 ?? S 5:57PM 0:00.08 /opt/local/libexec/mysqld --basedir=/opt/local --datadir=/opt/local/var/db/mysql5 --user=_mysql --log-error=/opt/local/var/db/mysql5/aoki-takashi-no-iMac.local.err --pid-file=/opt/local/var/db/mysql5/aoki-takashi-no-iMac.local.pid --socket=/opt/local/var/run/mysql5/mysqld.sock --port=3306
root 1365 0.0 0.0 2435548 784 ?? S 5:57PM 0:00.02 /bin/sh /opt/local/lib/mysql5/bin/mysqld_safe --datadir=/opt/local/var/db/mysql5 --pid-file=/opt/local/var/db/mysql5/aoki-takashi-no-iMac.local.pid
root 1356 0.0 0.0 2446916 1020 ?? Ss 5:57PM 0:00.00 /opt/local/bin/daemondo --label=mysql5 --start-cmd /opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper start ; --stop-cmd /opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper stop ; --restart-cmd /opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper restart ; --pid=none

確かに動いた。親切にも引数の説明がされてる。
# sudo /opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper restart
Shutting down MySQL
... SUCCESS!
Starting MySQL
. SUCCESS!

ちゃんと再起動される。

文字コードをUTF8に変えようと思ったけど、my.cnfがない。
mySQLのページで親切に説明されてる方がいたので参考にさせもらいました。
(このmySQLのページのローカライズはなんでこんな中途半端なんだろうか)

# cd /opt/local/var/macports/software/mysql5/5.1.53_0/opt/local/share/mysql5/mysql/
sudo cp my-medium.cnf /etc/my.cnf

my.cnfを編集する
[mysqld]
max_allowed_packet=16MB
default-character-set=utf8
skip-character-set-client-handshake
 
sudo /opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper restart

これで無事UTF8で動くようになりました。

0

mac book pro購入

先日ついにmacbook proを購入しました。
でるでるといわれ続けて数ヶ月。ようやくでたかといった感じです。
iPadとiPhoneOS4.0の影に隠れてしまって地味な発売となったけど、個人的には最も嬉しかった。
私が買ったのは15インチ: 2.53GHzのオプションなし。ついに初代mac book(中古)を捨て去る時がきた。

特に書くこともないけど新しいmacを使いたいので無理やりメモります。
今回macを買って初めて知った事気付いた事等。

  • iphoneのような慣性スクロールが気持ちいい。長めのページを見るときに非常に便利
  • macのユーザー名は変えれない。姓名が逆になってて気持ち悪いけど我慢
  • 静か。左手のところも熱くならない。
  • トラックパッドは第一関節くらいから触れた方が思い通りに動く
  • 「環境設定」の「トラックパッド」のそれぞれの項目の説明に動画がついてる。すばらしい。
  • itunesのライブラリ移動が簡単。itunesのディレクトリを旧マシン→外付けHD→新マシンでコピーすればok
  • iphotoが楽しい。顔認識技術がすごい
  • iphotoのイベントはよくできてると思うけど、アルバムとの使い分けが難しい
  • iphotoのブック、カレンダー、カードは日本語版にはいらないと思う
  • タイムマシンのUIがカッコ良すぎる
  • 「システム環境設定」の「キーボード」の「F1,F2などのキーを標準のファンクションキーとして使用可能」をチェックをいれるとfnクリックしなくてexposeとかが使える。逆にクリックすると音声上げたり下げたりするのに使える
  • quick silverが開発再開してた。
  • quick silverのトリガーがcommad+spaceが言語関係のなんかとバッティングする。「システム環境設定」の「言語とテキスト」の「入力ソース」の「キーボードショートカット」の「前の入力ソースを選択」のチェックを外す
  • firefoxでcommand + kで検索窓にフォーカス
  • firefoxでcommand + lでロケーションバーにフォーカス
0

外部からpostgreSQLへの接続

外部からpostgreSQLへの接続はデフォルトで禁止されています。
これを許可するの方法はmySQLと大きく違います。
2つのconfigファイルを編集する必要があります。
1./var/lib/pgsql/data/pg_hba.confをに下記を追記

host all all 0.0.0.0/0 password crypt
すべてのIPから接続可能、但しパスワード認証を要求

2./var/lib/pgsql/data/postgresql.confを編集
listen_addresses = 'localhost'

listen_addresses = '*'
 
#port = 5432

port = 5432

で再起動したら完了。
ちなみにこの設定は前回のmacのpostgreSQLのインストールの件とは別でfedoraにインストールした時のメモ

0

macにpostgreSQLをインストール

macでpostgreSQLをインストールした時のメモ。
バージョンは8.3。
macportsでインストール。

port install postgresql83
port install postgresql83-server

自動起動の設定
launchctl load -w /Library/LaunchDaemons/org.macports.postgresql83-server.plist

redhat系のchkconfigにあたるやつ。

PostgreSQL用のデータディレクトリを作成しておく。
mkdir -p /opt/local/var/db/postgresql83/db

postgreSQLを動かすユーザー「postgres」に所有者を変更する
chown postgres:postgres /opt/local/var/db/postgresql83/db

で、postgresにsuする。
mySQLじゃなかったけど、postgreSQLを初期化する。
/opt/local/lib/postgresql83/bin/initdb -D /opt/local/var/db/postgresql83/db

postgreSQL起動
/opt/local/lib/postgresql83/bin/postgres -D /opt/local/var/db/postgresql83/db &

これで無事起動したので色々できます。
以下諸々。

■ユーザーの追加
/opt/local/lib/postgresql83/bin/createuser -s root

■対話モードに入れる
/opt/local/lib/postgresql83/bin/psql

■hogeというデータベースのhugaというテーブルをダンプする
/opt/local/lib/postgresql83/bin/pg_dump -h localhost -p 5432 -d hoge -t huga > hoge.sql
postgres
テーブル名が大文字だけとか混在してる場合は、勝手に小文字に変換されるので'”Hoge”‘とかにしないとだけです。

■データをリストアする
/opt/local/lib/postgresql83/bin/psql -h localhost -U postgres -des < hoge.sql

■CSVで吐き出しもOK
postgreSQLはデータベースのデータをCSVに直接吐き出す事ができる。
copy hoge to 'hoge2.csv' csv;

0

boot campでvistaをインストール

久々にmacについて書いてみる。
macに移行してやるみたいな記事を書いたけど、結局ハードディスクを250Gに増強し、macbookに80Gをleopardに170Gをvistaに割り当てvistaメインで使ってます。
macは気分転換用くらいに。。

vistaをNTFSで使うにしてもBootCampセットアップアシスタント上では何も設定できません。FAT32になってしまいます。
NTFSにするには、とりあえずFAT32にパーティションを分けてvistaのインストールを開始します。
プロダクトキーの入力やライセンス関連がおわった後に、Windowsのインストール場所を指定する画面がでてきます。
そこでFAT32のとこにインストールしようとしても、vistaがこのフォーマットじゃインストールできませんよ、みたいなことを言われるので
右下のドライブオプション(詳細)をクリックします。
そこでフォーマットの選択ができるのでNTFSでフォーマットかけてやれば、元に戻ってインストールを再開できます。

一瞬あせってしまったので、一応メモ。

それにしてもvista快適。
「vista使えね」とかいうやつは、実際使ったのか問い詰めたい。ただのアンチじゃないの?
「unix > windows」「FX >> IE」という図式を支持してたらプロっぽいってだけじゃないの?(特にこの業界)

個人的にはwindowsやIEはもっと評価されてもいいと思う。
市場的シェアでは評価されてるかもしれないけど、(こんな仕事していうのもなんだけど)一部の人間がセキュリティセキュリティと騒ぎすぎる気がする。
ネットのリテラシーが高い人間はmacやfirefoxを使うイメージがあるけど、一企業が作りだしたwindowsやIEにはそれなりの金額の払う価値はあると思う。
オープンソースはネットの社会ですばらしい文化で後世に受け継がれるべきものと思うけど、先人が作りだしたソフトウェアセールスというのも存続すべき。
windowsを売りだしたことどれだけの経済価値を生みだしたか従業員の家族やステークホルダを生活を守ってきたか、どれだけのユーザーの生活を快適にさせてきたかを考えるべき。

結局microsoftの企業体質にあるんかなーとも思ったりする。
まあ、どうでもいいことなんだけど。

0

bootcampでwindowsとmacの切り替え方法

色んなブログを見ているとmacがデフォルトで立ち上がるようなことを書いてるに、僕のbootcampはデフォルトでwindowsが立ち上がるようになっていました。
起動時にOSを選択するのはoptionキーを押し続けとけばいいらしいが、デフォルトで立ち上げるOSはどこで選べるの?
ってことで調べたら、windowsのコントロールパネルに「bootcamp」って項目ができてました。
そこでどちらを起動するかが選択できるようになっています。
もちろんmacにしておきました。

何事も3週間続けると習慣になる、ということなんで3週間がんばってmacに慣れ親しんでみます。

0

bootcamp on leopard

数週間前、bootcampでwindowsを走らせたいと思い、appleのサイトでbootcampを探したらけれど…ない。

調べてみると、leopardの発売と同時にbootcampのベータのダウンロードもなくなったらしい。
bootcampほしいけりゃ、leopardを買いなさいってわけ。
で、まんまとleopardを買ったのが2週間前。

そして、昨日ようやくbootcampでwindowsXPをインストールしました。
驚くほど簡単。
アプリケーションのユーティリティーの「ブートキャンプアシスタント」ってのを起動をさせるとwindowsに割り当てるパーティションを作成できる。
とりあえず、10Gをwindowsに。
フォーマットは、macからアクセスできるということでFAT32を選択。
leopard以外は、windowsのドライバを入れるCDを作成したりするらしいけど、leopardのインストールCDにそれらは入ってるのでmacでやることはそれだけ。

windowsをインストール中1つの目の難所はキーボード選択。
「日本語キーボード」を選択の後、「半角/全角」を押せみたいなことを言われるけどキーボードにそんなキーはない。
で、調べてみると「S」を押すと解決するらしい。

2つ目の難所が、パーティションのフォーマット。
bootcampを選択するんだけど、ここでもう一度FAT32でフォーマットしないと再起動時にerrorがでてこける。

あとは、普通のXPと同じインストール。
XPがインストールされたドライバのインストール。
XPが起動した状態でleopardのインストールCDを挿入してやる。そうすると、自動的にモニタやネットワーク関連のドライバがインストールされる。

で、最後bootcampした人のほとんどが悩まされるキーボードの配置を解決する方法。
caps lockで半角にできるとかコントロールとリンゴマークの場所を変えるとかあったけど、僕がとった手段はKbdAppleというフリーソフトをインストールする方法。
これがめちゃめちゃいい!

変な説明なんかは不要で、macでキーボードをうつ感覚でwindowsでも「普通」にキーボードがうてます。
「英数」も「かな」も、そしてリンゴマークは「control」に置き換わってます。

これで、今はwindowsでも快適にすごせています。

0

macにスイッチ中

最近macにスイッチ中です。
mac自体は今年の4月頃に会社の同僚から売ってもらったものの埃をかぶった状態でした。
開発者の中でmacが流行ってるし、とりあえずのっとこかなと思ったくらいの動機だったので飽きるのも早かったです。
ただ、今家にあるマシンの中で一番スペックがいいのがそのmacのcore duo 1.8Gだったことに気づいてleopardを購入して、再度macを触りだすとすんごい快適!
懸念してたwindowsじゃないとできない仕事っていうのは、この記事を読んでもわかるようにけっこうないです。

web専門のプログラマには、やはりサーバーさえあればなんとかなるもんだとひしひしと感じました。
オフィス系もNeoOfficeを使えば全然問題なし。
結局bootcampもparalellsも使わず一ヶ月がすぎました。
それでも完全にmacに移行できない理由は2つ。

  1. adobe系のソフトがない。
  2. ノートなのでハードの用量が少ない。

プログラマといえども多少のwebデザインはします。
多少はGIMPでもカバーできるけど、やはり使いなれたphotoshopやfireworksがほしいが高すぎる。
用量の問題は増設したいいやん、って話だけど動画や音楽を詰め込みたいので300Gはほしい。
動画をちゃんとみるためにはLANやUSBで繋げたやつでなく内蔵型がいい。
でも、macbookでは増設ではなくリプレースになってしまうので、ここで少し躊躇してしまう。

一ヶ月後、自分がまだmacを触ってるかが楽しみ。