Objective-CでCSVをプロパティリストに変換する方法
珍しく2日連続で投稿w
昨日、Cocoa勉強会関西ビギナーズに参加してきました。
おまえビギナーだったんかいって突っ込まれそうですが、いつも心は初心者です。( ー`дー´)キリッ
それは冗談で、難しいことは教えられないですが、
初心者の方に教える力はありますので、参加させていただいております。(⌒〜⌒)ニンマリ
それで、その時に、CSVやXMLからplist(プロパティリスト)に変換する方法はないかと聞かれました。
そもそも、plistは、XML形式になっていています。
詳しくは、
Property List Programming Guide: Introduction to Property Lists
を参照してください。英語だけどね。。。
plistには、形式がいろいろありまして、
配列型、辞書型、文字列型、データ型、日付型、整数型、浮動小数点数型、ブーリアン型(YES/NO)があります。
今回は、配列と辞書型を変換するようにしてみます。
また、CSVは、カンマ区切りでやってみます。(ダブルコート「"」を使用したものとそうでないものとを扱います。)
ちなみに、Objective-C(NSObject)には、plistへシリアライズ化するものがあるので、簡単に変換できるようになっています。(参照)
それを使ってプログラムを書いてみます。
小さいプログラムを作るので、ちょっと冗長なところはあるかもしれませんが、
勘弁してくらはい。<m(__)m>
ソースは、自由に使ってかまいませんが、
出来れば、Webサイトの紹介をしていただければありがたいです。<(_ _)>
まずは、単なるカンマ区切りのCSVを変化するプログラム
単に、1行ずつ読み込んで
行を「,」で分割して順番に辞書にほりこんでいきます。
そしてそれを配列に突っ込んで、後はシリアライズ化!!
どう?かんたんでしょ?
でもこれだと、カンマが入った文章中にのCSVだと、少々難しくなるので、
正規表現でカンマの位置を取得して、
順番にカンマ位置までのワードを取り出していき、「"」がついていたらトリムするようにしてます。
こんな感じですね。
後者のテストデータと実行後の出力データをのしておきます。
test.csv
-----------------------------------
test1,test2,test3,test4,test5
あ,い,う,え,お
か,き,く,け,こ
"さ","し","す","せ,","そ"
た,ち,つ,て,と
-----------------------------------
test.plist
ちょいと、後者は難しかったかもしれないなぁ。。。。
CackPHPをMac(with MAMP)で動作させるやり方
いつもの通り超ええかげんブログ。
今回は、Mac(with MAMP)内にCackPHPを設定する方法です。
説明不足だからわからんかったらなんか言ってね。
前提条件:
MacにMAMPが既に入っているものとします。
MacOSX 10.8.3
MAMP Pro 2.1.4
1)CakePHPのダウンロードとインストール
CakePHP 2.3.4
1.CakePHP: 高速開発 php フレームワーク。 Homeから
「CakePHP 2.3.4安定版」をダウンロード。
2.「cakephp-2.3.4.zip」を解凍する。
「cakephp-2.3.4」と言うフォルダが出来る。
フォルダー名を任意に変更今回は「cakephp」に変更。
3.「cake」フォルダ一式を「アプリケーション/MAMP/htdocs/」に移動する。
4.ふぁるだ等の権限を変更しておく
chmod -R 755 /Applications/MAMP/htdocs/cakephp/app/tmp
chmod -R 755 /Applications/MAMP/htdocs/cakephp/lib/Cake
2)CakePHPの設定編集
1.エディタでcore.phpをオープン
open /Applications/MAMP/htdocs/cakephp/app/config/core.php
「Security.salt」と「Security.cipherSeed」を編集。
初期値以外のものに変更する。
Configure::write('Security.salt', '任意の文字列');
Configure::write('Security.cipherSeed', '任意の文字列');
2.データベースの設定
あらかじめphpMyAdminにてホストをローカルで設定したユーザとターゲットのテーブルを作成しておく
「database.php.default」を「database.php」に変更し修正
mv /Applications/MAMP/htdocs/cakephp/app/config/database.php.default /Applications/MAMP/htdocs/cakephp/app/config/database.php
open /Applications/MAMP/htdocs/cakephp/app/config/database.php
ログインとパスワードを編集する
これで、URL「http://localhost:8888/cakephp/」にアクセスし問題ないか見てみる
こんな風にでていてばOK!!
一番下の警告はデバッグに関してなのでほっておいていい。
3)コマンドラインからのパス設定
bakeコマンドなどを使うと標準のPHPが動作してしまうらしく、
エラーが出てしまうので、パスを変更。
これで、「bake」をつかっても大丈夫なはず。
メモ代わりに書いてみた。ようやくこれで勉強できるε-(´∀`*)ホッ
AppCodeの初期設定
久しぶりの投稿かな?
PHPStormやWebStormでも有名なJetBrainsのObjective-C用のIDEの私が使用している「AppCode」。
デフォルトだとちょいと使いにくいので設定の変更のメモ。
JetBrains製だとたぶんどれでも使えるはず。まだ試してないけど。
0.設定画面の出し方(mac)
コマンド + ,
1.行番号を表示する方法
「show line number」で検索してから、Editor→Appearanceと選択し、フォーカスされたチェックボックスをチェックする
2.エディタのタブの表示を1行で行う設定を解除する
「Show tabs single row」で検索してから、フォーカスされたチェックボックスを外す。
3.エディタのタブの表示のリミット数を増やす。
「tab limit」で検索してから、テキストボックスの数字を多くする。
(100ぐらいにしときゃそうそう、リミットは超えないですw)
4.スペースを表示する
「show whitespace」で検索してから、Editor→Appearanceと選択すれば、設定項目がハイライトされています。
5.行末尾のキャレット配置を無効にする方法
「Allow placement of caret after end of line」で検索してから、フォーカスされたチェックボックスを外す。
そろそろ、本格的にプログラム組まなきゃなぁ。。。。
MacPortsがMountainLionに対応。
MacPortsよりMountainLion版MacPortsんpパッケージ版が出ております。
もうソースからコンパイルする必要はないですね。(^O^)
因みに、7月4日にOpenCVもiOS版FlameWorkがでてますね。OpenCV Wikikからたどってください。OpenCV.jpは、全然更新かからないので直接見に行った方がいいですね。
muCommanderが久々にバージョンアップされてました。
「muCommander」が、久しぶりにバージョンアップ!!かれこれ2年ぶりですかねぇ。
って、たぶん誰も知らないでしょうな。。。。((((((;_ _)σ‖エエモン、エエモン・・・
このアプリケーションは、2画面ファイラーで、
UNIX、Windows、Macで同じ操作ができるマルチプラットフォームです。
データ整理をしたい時に、マウスでクリックしながら、コピーや移動するのがめんどくさくなりませんか?クリックミスをしてコピー漏れや移動漏れ、または、新旧間違って新しいものを上書きしてしまったとか。。。。
そこで、キーボードだけで、コピーや削除が簡単にできるファイラーがあると便利です。
このアプリケーションの特徴としては、
・FTP等のプロトコルにも対応している。
・UNIX、Windows、Mac版が出ておりマルチプラットフォーム対応
・キーボードのみで操作可能
・GUI操作にも対応
・ZIPファイルの中も見られる。
・日本語対応。
など。
私は、7年以上前から使用していますが、
今までこれ以上シンプルで使いやすいソフトはいたことはありません。
どうだ!!エッ( ̄ ̄ ̄ ̄^ ̄ ̄ ̄ ̄)ヘン << イミフです。
いちどおためしあれ〜〜〜〜。.:♪*:・'(*⌒—⌒*))) スペシャルスマイル
muCommanderのスクリーンショット
Mountain LionにアップデートしたあとにLionに戻したいときに。。。
Mountain LionにアップデートしたあとにOSを戻したくてどうしようと思ったりしている人が多いようですね。
AppStoreからダウンロードができないしどうしようと。。。。。
実を言うと、簡単にダウンロードできます。
「SystemVersion.plist」に記載しているOSバージョンを低くしてあげるとダウンロードできます。
1)SystemVersion.plistのアクセス権を変更します。
$ sudo chmod 777 /System/Library/CoreServices/SystemVersion.plist
2)エディタでSystemVersion.plistを書き換えバージョンを偽装します
$ sudo vi /System/Library/CoreServices/SystemVersion.plist
エディタで以下のようにします。
------------------------------------------------------------------
<key>ProductUserVisibleVersion</key>
<string>10.8</string>
<key>ProductVersion</key>
<string>10.8</string>
------------------------------------------------------------------
↓
------------------------------------------------------------------
<key>ProductUserVisibleVersion</key>
<string>10.7.3</string>
<key>ProductVersion</key>
<string>10.7.3</string>
------------------------------------------------------------------
3)念のためアクセス権を戻しておきましょう。
sudo chmod 444 /System/Library/CoreServices/SystemVersion.plist
これで、AppStoreから購入済みからダウンロードできます。
ダウンロード後は、このまま、インストールできるでしょうが、
ダウングレードインストールと言うことなのでハードディスクは
一度フォーマットしてからインストールした方がいいでしょう。。。。
DVDに落とす方法は、いろいろサイトに載ってますのでそれを参考にしてください。
たとえば、Lionインストールディスクを作るとか。。。。
どうでしょうか。。。。。。
起動音のみ音を消す方法
外出先(たとえば電車の中)で、起動音が出てしまうと
ひんしゅく者です。目立ちもしますね。>*0*<キャアアッ
音を消しておくと起動音も鳴りません。
でも、音を消しておいたらいつもは不便ですよねぇ。
また、起動してからは、
ちょっと音が鳴って欲しいときがありますよね。
メール受信とかだけでも。。。。。
そんな方に朗報!!起動音だけ消す方法があります!!
どうするかと言うとスクリプトでシャットダウンするときに音を消して
起動したあとに音を出すようにします。
【手順】
① エディタにてスクリプトを作成
1)OS終了時にミュートにするスクリプトを作成
$ sudo vi /Library/Scripts/mute-on.sh
----↓ここから
#!/bin/bash
osascript -e 'set volume with output muted'
----↑ここまで
2)OS起動時にミュートを解除するスクリプトを作成
$ sudo vi /Library/Scripts/mute-off.sh
----↓ここから
#!/bin/bash
osascript -e 'set volume without output muted'
----↑ここまで
②作成したファイルの権限を変更
実行可能ファイルにする
$ sudo chmod u+x /Library/Scripts/mute-on.sh
$ sudo chmod u+x /Library/Scripts/mute-off.sh
③MacOSの設定に登録
$ sudo defaults write com.apple.loginwindow LogoutHook /Library/Scripts/mute-on.sh
$ sudo defaults write com.apple.loginwindow LoginHook /Library/Scripts/mute-off.sh
<ついでに>
解除の方法です。
①MacOSの設定から外す
$ sudo defaults delete com.apple.loginwindow LoginHook
$ sudo defaults delete com.apple.loginwindow LogoutHook
②ファイルの削除
$ sudo rm /Library/Scripts/mute-on.sh
$ sudo rm /Library/Scripts/mute-off.sh
ちなみに、Mountain Lionでも動作します( ̄∇ ̄)