たまたんのぶろぐ

たまたんが時たま言いたいことを書いてます。ジャンルはめっちゃええ加減ですwソフトやプログラムのことが多いかもしれませんが。。。。。

エクセルをplistに変換する方法(ruby版)

なかなかブログを更新しないたまたんっす。

 

 

そろそろ、マジでアプリを発表しんと。。。。。

 

Objective-CでCSVをプロパティリストに変換する方法 - たまたんのぶろぐCSVからplistを作成しようとしましたが、拡張CSVで1セル内に改行が入っているとうまくうごかないっすつД`)・゚・。・゚゚・*:.。..。.:*・゚

 

それに、エクセルで一度作成してCSVに変換してiOSで・・・・って、めんどくさいことしてました。自分で思ったけど、アホやな。。。。。

ほんでもって、仕事で使おうとしてめんどくさかった。。。。。

 

って言うことで、手っ取り早くplistに変換する方法をスクリプトを作成しました。v(´∀`*v)ピース

仕事もめっさ楽になりましたw

 

Ruby(2.0)で動作確認しております。

「roo」ライブラリでExcelを操作読み込みし、「CFPropertyList」ライブラリでplistに変換出力します。

ソースはこちら。

> 入力

f:id:tama-jp:20140323125050p:plain

 

>出力 

f:id:tama-jp:20140323125101p:plain

 

ひっさしぶりにRubyで書いてみたけど、やっぱり難しいなぁ。。。

はやく、Rubyをマスターしたい。。。。。

 

ではでは。

 

UITableViewをアコーディオンっぽくする方法(簡易版)

またまた投稿!!\(^-^)/バンザーイ、/( )\モヒトツ\(^o^)/バンザーイ

 

今回も、またまた、iOSですなのだ!!

 

一時期、UITableViewのアコーディオンが流行りましたが、

そん時は全く興味がなかったのでスルーしてましたw

 

今、ちょうど、自作アプリを作っている最中に、オープンソースとかで簡単に作れるようなのないかなぁって、見てみたら、表示ばかりを気にするものが多く、自分で装飾を変えるのがめんどくさそうなのばかりでした。だから、自作しようかと思い、多階層を作る前に簡単な2階層までのアコーディオンを作ってみました。

 

まぁ、当たり前のソースなんでだれでも、作れるとは思いますがね。

ミソは、カテゴリを作るところだけですので、

説明せんでもわかるでしょうから今回はソースだけです。w

 

 動作はこんなんになります。

 

 

ではでは。<(_ _)>

 

 

Objective-CでCSVをプロパティリストに変換する方法

珍しく2日連続で投稿w

 

昨日、Cocoa勉強会関西ビギナーズに参加してきました。

おまえビギナーだったんかいって突っ込まれそうですが、いつも心は初心者です。( ー`дー´)キリッ

それは冗談で、難しいことは教えられないですが、

初心者の方に教える力はありますので、参加させていただいております。(⌒〜⌒)ニンマリ

それで、その時に、CSVXMLからplist(プロパティリスト)に変換する方法はないかと聞かれました。

 

そもそも、plistは、XML形式になっていています。

Appleが設定しているDTDにしたがって作られています。

詳しくは、

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

f:id:tama-jp:20140223103247p:plain

 

ちょいと、後者は難しかったかもしれないなぁ。。。。

 

Sublime TextでObjective-Cのプチコンパイル

ひっさしぶりに投稿!! (。・_・。)ノ

 

Objective-Cでの開発をしているときに、数学的なロジックを作成するのに、

簡単なコンパイルが欲しいときがあります。

エディタをちょっと変更したいなぁ〜って思うときありませんか?

え?「ない」って?(; ̄ー ̄A アセアセ・・・

いやあるでしょ?(; ̄ー ̄A アセアセ・・・

「だから、ない」って?(; ̄ー ̄A アセアセ・・・

そういう人は無視して紹介します。ヽ( ゜ 3゜)ノ

 途中からメニュー画面が日本語化され色が変わりますが、

ご愛敬で・・・・・(; ̄ー ̄A アセアセ・・・

 

こんな時は、今までCodeRunnerと言うソフトを使ってました。

f:id:tama-jp:20140222113746p:plain

まぁ、これでできますよぉ〜っなんですが、

いつも使ってるエディタでコンパイルがしたかったので、

Sublime Textコンパイルできるようにしました♪ d(⌒o⌒)b♪

 

ちなみに、コマンドラインでは、

  clang -g -x objective-c -fmessage-length=0 -std=gnu99 -fobjc-arc -Wno-trigraphs -fpascal-strings [ターゲットファイル] -framework Foundation -o [アプリ名]
  

っと書きます。

 

これをsublimeのBuildSystemに書き込むだけ。

 

Sublime Textを開いて。

f:id:tama-jp:20140222155956p:plain

 

 

メニューバーから「Tools」をプルダウンします。

f:id:tama-jp:20140222160230p:plain

 

 BuildSystemから・・・

f:id:tama-jp:20140222160447p:plain

 

New Build System...を選ぶ。

f:id:tama-jp:20140222160604p:plain

 

そうするとファイルが表示されます。

f:id:tama-jp:20140222160646p:plain

 

それを下のコマンドを入力する。

=========================

{
    "cmd": ["clang" , "-g" ,"-x" ,"objective-c" ,"-fmessage-length=0" ,"-std=gnu99" ,"-fobjc-arc" ,"-Wno-trigraphs", "-fpascal-strings" , "${file}" , "-framework Foundation" , "-o", "${file_base_name}"],
	 "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
 	"working_dir": "${file_path}",
 	"selector": "source.c",
	 "variants":
 	[
		{
			"name": "Run",
			"cmd": ["bash", "-c", "clang -g -x objective-c -fmessage-length=0 -std=gnu99 -fobjc-arc -Wno-trigraphs -fpascal-strings '${file}' -framework Foundation -o '${file_base_name}' && '${file_path}/${file_base_name}'"]
		}
	]
}

 =========================

こんな風に。。。

f:id:tama-jp:20140222160835p:plain

 

んで、保存。[コマンド+S]で保存する場所が出てくるので

名前を変えて、パスはそのままで保存!!

f:id:tama-jp:20140222161006p:plain

 

すると新しくメニューに追加されます。

f:id:tama-jp:20140222161104p:plain

 

これでしたごらえOK!! 

じゃぁ、テスト!!

とりあえず、1から10まで足し算するコード。

f:id:tama-jp:20140222161926p:plain

 

書いたら、ビルドを選択して(自動でもいいかも)

 

f:id:tama-jp:20140222162240p:plain

 

ビルドして実行を実行する!!

f:id:tama-jp:20140222162251p:plain

 

 

こんな風に出来ます。

f:id:tama-jp:20140222162301p:plain

 

簡単でしょ?(˶‾᷄ꈊ‾᷅˵)

 

 

    

MacでRVMを違うバージョンをスクリプトで動かす方法

ようやく、まともな投稿( =̴̶̷̤̄ .̫ =̴̶̷̤̄ )

 

Rubyのテストのために、1.8.7を使用して、

 

それ以外は、2.0.0を使おうと思ったら、すっごくめんどくさい。

 

そこで、RVMを使用して切り替えて使うことにした!!

 

でも、使うときにいちいち、

 

> rvm 1.8.7

 

のように、変更しなきゃならない。

 

じゃぁ、これごとスクリプト化してやればいいじゃん!!(*Θ_Θ*)/

 

つうことで、やり方。。。。

 

普通にシェルにrvmを設定しても動作しないので、

 

gemsetを使用する。

# rvm use 1.8.7

# rvm gemset create ruby187

 

これでgemsetができあがったので、

 

# rvm env --path -- 1.8.7@ruby187

で、パスをとってみると、以下のようなパスがとれる(環境によって違うので注意)

/Users/ruby187/.rvm/environments/ruby-1.8.7-p374

 

これを、viエディタか何かで以下のスクリプトを作成する。

例えば、「rubyT.sh」のように。。。。

======ここから=====

#!/bin/bash

 

# load rvm ruby

source /Users/ruby187/.rvm/environments/ruby-1.8.7-p374

 

ruby $@

======ここまで=====

 

これの引数に、スクリプトを読み込ましてあげればOK!!

 

例えばこんな風にでます°₊·ˈ∗( ˃̶᷇ ‧̫ ˂̶᷆ )∗ˈ‧₊°

 

f:id:tama-jp:20140125093550p:plain

 

 

これで、CodeRunnerとかで簡単に使えるようになったヾ(^v^)k

 

参考:

 

http://rvm.io/integration/cron

 

 

githubのクローン( =̴̶̷̤̄ .̫ =̴̶̷̤̄ )

閉鎖的なところでgitHubが使えるのはないかなぁ~*1

って思ってたら、ありました!!( =̴̶̷̤̄ =̴̶̷̤̄ )

 

それは、「GitBucket」です。

完全にgitHubのクローンです。

 

出来ることは以下の通り、

・Public / Private Gitリポジトリ (http のみ)

・Repository viewer (オンライン編集は搭載していない)

・Repository search (Code と Issuesのみ)

Wiki

・Issues

・Fork / Pull request

・Mail notification

・Activity timeline

・User management (Administrator用)

・Group (like Organization in Github)

LDAP integration

・Gravatarもサポート

 

まだまだ発展途上なところはありますが、

社内で作るには、すごっく楽じゃないかと思います。

 

JAVAが動いていればどこでも作れます!!すげー(゚д゚)!

あっ、エンジンとしてTomcat 7.x, Jetty 8.x, GlassFishのいずれか必要ですよぉ。

 

インストール方法

今回は、Tomcat7でインストールします。

システムにJAVAをインストールしておきます。

#JDK のインストール

# yum -y install java-1.7.0-openjdk

 

tomcatをダウンロードし、解凍。

$ wget http://ftp.meisei-u.ac.jp/mirror/apache/dist/tomcat/tomcat-7/v7.0.47/bin/apache-tomcat-7.0.47.tar.gz

$ tar xzf apache-tomcat-7.0.47.tar.gz

 

次に今回の主人公「gitbucket.war」をダウンロード

$ wget https://github.com/takezoe/gitbucket/releases/download/1.7/gitbucket.war

ちなみに、これでダウンロードするとファイル名がおかしくなります。

例:

$ ls

95d6668e-3d95-11e3-9de6-e4a25fcf1676.war?response-content-disposition=attachment; filename=gitbucket.war&AWSAccessKeyId=AKIAISTNZFOVBIJMK3TQ&Expires=1384676769&Signature=Xwp9Ak4FllbN8kZhPTmosHwxluM=

 

これをmvで「gitbucket.war」にリネームし、「webapps」に移動する。

$ mv gitbucket.war apache-tomcat-7.0.47/webapps/

 

あとは、tomcatを起動するだけ!!

$ apache-tomcat-7.0.47/bin/startup.sh

 

そうすると、以下のサイトから起動することができます。

http://localhost8080/gitbucket/

 

こんなかんじ!!gitHubににてるでしょ!!

これからも期待できますよね。♪ d(⌒o⌒)b♪

 

 

 

f:id:tama-jp:20140125092549p:plain

 

f:id:tama-jp:20140125092616p:plain

 

f:id:tama-jp:20140125092650p:plain

 

f:id:tama-jp:20140125092728p:plain

 

あっ、止める場合は以下を実施します。

$ apache-tomcat-7.0.47/bin/shutdown.sh

 

 

 

*1:(・・ )( ・・)

VagrantでVMWareFusionを使う方法

これから、Systemの手順書を文章ではなくてスクリプトで各時代が来ましたねぇ。

VagrantでVMWareFusionが使用出来るので、

とりあえずメモとしてインスコ方法を書いときます。y( ̄ー ̄)yピースピース

いつもの通りええかげん手順書を見て下さいw

 

1)Vagrantのインストール

Vagrantから本体をダウンロードしてインストール。

これ出来ない人は、Macを使わないでw(冗談です)

一応確認、バージョンの確認

$ vagrant -v

Vagrant version 1.2.2

 

2) VmwareFusion用のプラグインをインストール

 $ vagrant plugin install vagrant-vmware-fusion

 

このプラグインは有料です。ここから購入して下さい。

購入したら、ライセンスファイルが送られてくるので、

それを読み込ませます。

vagrant-vmware-fusion ライセンスの設定

$ vagrant plugin license vagrant-vmware-fusion license.lic

 

3)vmware用のcentOSをダウンロード

以下のコマンドをたたきます。

(Boxのバージョンが上がっているかもしれないのでここで確認)

$ vagrant box add centos https://dl.dropbox.com/u/5721940/vagrant-boxes/vagrant-centos-6.4-x86_64-vmware_fusion.box --provider vmware_fusion

 

 4)Vagrantfileを作る

$ vagrant ini

上のコマンドで自動的に作られるのですが、内容を以下のように作っちゃいました。

 

$ vim Vagrantfile

--------------------------------------------

# -*- mode: ruby -*-

# vi: set ft=ruby :

 

Vagrant.configure("2") do |config|

   config.vm.box = "centos"

  config.vm.box_url = "https://dl.dropbox.com/u/5721940/vagrant-boxes/vagrant-centos-6.4-x86_64-vmware_fusion.box"

  # config.vm.network :forwarded_port, guest: 80, host: 8080

  #config.vm.network :private_network, ip: "192.168.33.10"

  # config.vm.network :public_network

  # config.ssh.forward_agent = true

  # config.vm.synced_folder "../data", "/vagrant_data"

   config.vm.provider :vmware_fusion do |vb|

     # Don't boot with headless mode

#      vb.gui = true

     vb.customize ["modifyvm", :id, "--provider", "vmware_fusion", "--memory", "1024"]

   end

end

--------------------------------------------

 

たぶん以上で、出来ちゃいます。

 

vmwareを使用可能にしておかなければ動作しないようで、

以下のコマンドをたたきパスワードを入れる。

 

$ vagrant up --provider=vmware_fusion

>> パスワードが聞かれるのでシステムのパスワードを入れる。

これで、次回からは「vagrant up」で起動出来ます。

 

通常

$ vagrant up

お試しあれぇ〜!! ( ^ω^ )ニコニコ

 

※ 結局、まだ、プラグインが少ないし、資料があまりないのでVirtualBoxを使用することにしますね。