お引っ越ししました
はてなブログです。
今後ははてなで更新を行います。今後ともよろしくお願いします。
http://sakebook.hatenablog.com/
2014年8月10日日曜日
2014年7月28日月曜日
Android Studioの構成で、既存のプロジェクトをEclipseからAndroid Studioへ移行する
EclipseとAndroid Studioではプロジェクトの構成が異なる
ビルドシステムが異なるので、構成も異なります。
Eclipse
Android Studio
Android Studioから Eclipseのプロジェクトをインポートする
Preview以前は無かった気がするのですが、Android Studioから直接インポートできるようになっていました。
Eclipseからエクスポートする場合と比べて、プロジェクトの構成まできちんと変換してくれます!
これでAndroid Lに触れますね。
既存のリポジトリを活用したい
Android Studioからインポートすればうまいことできるのですが、SCMの設定はうまく引き継がれません。
そういうときは、Android Studioで空のプロジェクトを作り、そこに既存のプロジェクトから、必要なフォルダ/ファイルだけ外部参照してあげると良い感じになります。
Subversionの場合は以下のようにします。
複雑でないプロジェクトならこれで解決します。こうすることによって、EclipseとAndroid Studio同時に開発を進めることが出来ます!環境が異なるのであまりお勧めできませんが、会社などでいち早くAndroid Studioを検証したいときなどに使えると思います。
参考
Qiita / EclipseからAndroid Studioに移行する
うさがにっき / EclipseからAndroidStudioへの開発環境移行、疑問編
WEBTECH WALKER / svnコマンドの覚え書き
ビルドシステムが異なるので、構成も異なります。
Eclipse
. ├── AndroidManifest.xml ├── assets(アセットなど) ├── bin(自動生成) ├── gen(自動生成) ├── libs(ライブラリなど) ├── project.properties ├── res(リソースなど) │ ├── drawable │ ├── layout │ ├── menu │ ├── values │ └── xml └── src(ソースなど)
Android Studio
. ├── プロジェクト名.iml ├── app │ ├── app.iml(自動生成) │ ├── build(自動生成) │ ├── build.gradle │ ├── libs(ライブラリなど) │ └── src │ └── main │ ├── AndroidManifest.xml │ ├── assets(アセットなど) │ ├── java(ソースなど) │ └── res(リソースなど) │ ├── drawable │ ├── layout │ ├── menu │ ├── values │ └── xml ├── build(自動生成) ├── build.gradle ├── gradle(自動生成) │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties(Gradleのバージョンを変えるときに稀にいじる) ├── gradle.properties(ビルドするときの変数などを記述) ├── gradlew(自動生成) ├── gradlew.bat(自動生成) ├── local.properties(Android SDKのパスなどを記述) └── settings.gradle(ビルドするモジュールを記述)
Android Studioから Eclipseのプロジェクトをインポートする
Preview以前は無かった気がするのですが、Android Studioから直接インポートできるようになっていました。
Eclipseからエクスポートする場合と比べて、プロジェクトの構成まできちんと変換してくれます!
これでAndroid Lに触れますね。
既存のリポジトリを活用したい
Android Studioからインポートすればうまいことできるのですが、SCMの設定はうまく引き継がれません。
そういうときは、Android Studioで空のプロジェクトを作り、そこに既存のプロジェクトから、必要なフォルダ/ファイルだけ外部参照してあげると良い感じになります。
Subversionの場合は以下のようにします。
[studio app]$ svn propedit svn:externals . --editor-cmd=vi リポジトリ/libs libs
[studio main]$ svn propedit svn:externals . --editor-cmd=vi リポジトリ/res res リポジトリ/assets assets リポジトリ/AndroidManifest.xml AndroidManifest.xml
[studio java]$ svn propedit svn:externals . --editor-cmd=vi リポジトリ/パッケージ パッケージ
参考
Qiita / EclipseからAndroid Studioに移行する
うさがにっき / EclipseからAndroidStudioへの開発環境移行、疑問編
WEBTECH WALKER / svnコマンドの覚え書き
ラベル:
Android,
Developer,
Subversion
2014年7月26日土曜日
Maven Centralに自作ライブラリを登録するまでの長い道のりと挫折と回り道
ライブラリを簡単に使えるように
Maven Centralというところに登録すればライブラリの導入が簡単になるらしいということで、自作ライブラリを登録した。
- Maven
- プロジェクト管理ツール。ビルドもできるし、依存性も解決してくれるらしい。
環境
- Eclipse() : 4.2 Juno
- 通常のAndroidプロジェクトを作成。
- AndroudStudio版も調べます!てか今後は全部移行すべき。
- Eclipse ADT Plugin : 22.6
- Apache Maven : 3.1.1
Sonatypeアカウント作成
- Maven Centralにライブラリを登録するために必要。
- Sonatypeのリポジトリを通して公開する。
- https://issues.sonatype.org/
EclipseプロジェクトのMaven対応
- プラグインを入れてなければ入れる
- Maven Integration for Eclipse
- Configure -> Convert to Maven
- pom.xml が作成される(pom = Project Object Model)
- 作成時の項目は後から変更できる。
- GroupId
- com.github.sakebook
- ArtifactId
- DialogHelper
- Version
- 0.0.1
- Packaging
- jar
- Name
- DialogHelper
- Description
- Easy way to make dialog for everyone.
- pom.xml が作成される(pom = Project Object Model)
- 変更前の.classpath
- 変更後に追加される
...... ...
- 変更前の.project
DialogHelperSample com.android.ide.eclipse.adt.ResourceManagerBuilder com.android.ide.eclipse.adt.PreCompilerBuilder org.eclipse.jdt.core.javabuilder com.android.ide.eclipse.adt.ApkBuilder com.android.ide.eclipse.adt.AndroidNature org.eclipse.jdt.core.javanature
- 変更後に追加される
...... org.eclipse.m2e.core.maven2Builder ... org.eclipse.m2e.core.maven2Nature com.android.ide.eclipse.adt.AndroidNature org.eclipse.jdt.core.javanature
- 作成されるpom.xml
4.0.0 sample.convert.maven MavenConvertSample 0.0.1 MCS sample src maven-compiler-plugin 3.1
JREが、J2SE-1.5に変更されるので、プロジェクトデフォルトに戻す。
* BuildPath -> Configure Build Path -> Java Build Path -> Libraries -> JRE SystemLibrary -> Edit -> Workspace default library
pom.xmlの設定
- Mavenでビルドする際に必要な記述を追加していく。
また、Maven Centralに登録して皆が使えるようにするには、誰が作ったのか?どのようなライセンスなのか?なども記述しないといけない。先に完成系を張っておく。
4.0.0 org.sonatype.oss oss-parent 7 com.github.sakebook DialogHelper 0.0.1 jar DialogHelper Easy way to make dialog for everyone. https://github.com/sakebook/android-library-dialog-DialogHelper/ Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 repo https://github.com/sakebook/android-library-dialog-DialogHelper scm:git:git://github.com/sakebook/android-library-dialog-DialogHelper.git scm:git:git://github.com/sakebook/android-library-dialog-DialogHelper.git sonatype-nexus-staging Nexus Staging Repository https://oss.sonatype.org/service/local/staging/deploy/maven2/ sakebook Shinya Sakemoto sakebook@gmail.com http://sakebook.blogspot.com/ developer GitHub https://github.com/sakebook/android-library-dialog-DialogHelper/issues UTF-8 UTF-8 UTF-8 UTF-8 4.1.1.4 16 r7 1.6 3.1.1 com.google.android android ${android.version} provided com.google.android annotations ${android.version} com.google.android support-v4 ${android.support.version} ${base.dir}src res org.apache.maven.plugins maven-compiler-plugin 3.1 ${java.version} ${java.version} true ${project.build.sourceEncoding} ${project.reporting.outputEncoding} com.jayway.maven.plugins.android.generation2 android-maven-plugin 3.8.2 ${project.basedir}/AndroidManifest.xml ${env.ANDROID_HOME} ${android.platform} true org.apache.maven.plugins maven-javadoc-plugin 2.9 ${project.build.directory} org.apache.maven.plugins maven-source-plugin package jar org.apache.maven.plugins maven-release-plugin 2.4 ${project.build.sourceEncoding} ${project.reporting.outputEncoding} forked-path true release-sign-artifacts performRelease true org.apache.maven.plugins maven-gpg-plugin 1.4 ${project.build.sourceEncoding} ${project.reporting.outputEncoding} sign-artifacts verify sign
- parent
- 親プロジェクト。sonatypeのレポジトリを利用するため。
- licenses
- プロジェクトのライセンス。
- scm
- プロジェクトのソースコード管理システムを記述。
- distributionManagement
- リモートリポジトリにでプロイするために必要な情報を記述。
- developers
*プロジェクトの開発者を記述。 貢献者がいる場合はcontributorsへ書く。 - issueManagement
- バグ管理システムを記述。
- properties
- 変数を定義。pluginで同様のプロパティ名を持つ場合、pomに記述した内容が用いられる。
- dependencyManagement
- 依存関係を定義。dependenciesのみで定義した場合との違いは、Managementで括ると、子pomに依存関係は、明示的に宣言しないといけない。その代わりバージョンは親pomのものが継承される。
- build
- buildに関する情報を定義。
- sourceDirectory
- ソースディレクトリを相対パスで定義。今回はEclipseのプロジェクトをConvertしたので、通常のMavenプロジェクトとは構成が異なる。
- resources
- リソースを定義。ソースと同様に、EclipseのプロジェクトをConvertしたので、通常のMavenプロジェクトとは構成が異なる。
- pluginManagement
- 依存関係を定義。dependenciesのみで定義した場合との違いは、Managementで括ると、子pomに依存関係は、明示的に宣言しないといけない。その代わりバージョンは親pomのものが継承される。
- plugins
- プラグインに関する情報を定義。
- profiles
- プロジェクトのプロファイルを定義。環境に依存する設定を記述。今回はperformReleaseビルド時のみmaven-gpg-pluginを利用するように。
- ローカルの設定やpasswordの設定は ~/.m2e/setting.xmlに記述。
sonatype-nexus-staging xxxxxxxxx xxxxxxxxx android-sdk xxxxxxxxxx/xxxxxxx android-sdk
issue作成
- 先ほど作成したSonatypeで、リポジトリを作成してもらうようにissueを作成します。
- 僕が作成したissueはこちらです。Group Idに問題があり、やりとりがありました汗
- 作ってもらったら、今度はライブラリをデプロイしたときにまたコメントしましょう。
pgp署名確認
- Maven Centralに登録するには、公開物に対して署名をしなければなりません。
- 未インストールの場合はこちらから。
鍵作成
- 聞かれる値はデフォルト値でOK
$ gpg --gen-key
- 作成された鍵の確認
$ gpg --list-keys
- 対象ファイルの署名
$ gpg -ab FILE
- 署名の確認
- sub鍵で署名されていないか確認
- 45yH63G3 の様な8文字が鍵のID
- pub(公開鍵) のIDと一致していればOK
- sub鍵で署名されていないか確認
$ gpg --verify FILE
- 公開鍵の配布
$ gpg --keyserver hkp://pool.sks-keyservers.net --send-keys 45yH63G3
- 確認
- 45yH63G3 が帰ってくればOK
$ gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 45yH63G3
コマンドラインからビルド
プロジェクトのルートディレクトリで
$ mvm clean package
- ライブラリ本体のjarを作成
$ mvm deploy
- distributionManagementに記述したリポジトリにライブラリ本体とpom.xmlをデプロイ。
- デプロイしたら、次のURLからstagingリポジトリに上がったことを確認できます。
- https://oss.sonatype.org/#stagingRepositories
- ただ、まだリリースできません。署名したjarと、sourceファイルとjavadocも上げる必要があります。
$ mvm source:jar
- ソースファイルのjarを作成
$ mvm javadoc:jar
- javadocのjarを作成
$ mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=pom.xml -Dfile=target/DialogHelper-0.0.1.jar -Dgpg.passphrase=yourpassphrase
- jarを署名してリポジトリにアップロード
$ mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=pom.xml -Dfile=target/DialogHelper-0.0.1-javadoc.jar -Dclassifier=javadoc -Dgpg.passphrase=yourpassphrase
- javadocを署名してリポジトリにアップロード
$ mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=pom.xml -Dfile=target/DialogHelper-0.0.1-sources.jar -Dclassifier=sources -Dgpg.passphrase=yourpassphrase
- sourceを署名してリポジトリにアップロード
- ここまでくれば、Stagingにある自分のリポジトリをCloseして、しばらくすると、Releaseできます。
issue追記
- Releaseが完了したので、その旨をコメントに記入しましょう。
- 返事があり、その後しばらくすると、登録完了です!
使ってみる
- pom.xml
com.github.sakebook DialogHelper 0.0.1 jar
- build.gradle
compile 'com.github.sakebook:DialogHelper:0.0.1'
初めて上がったときは感動です!サンプルアプリや、CI済みなどがわかるとより使われやすくなると思います。皆さんも自作ライブラリを作り、職場や家でも簡単に使い回せるようにしましょう!
参考
#侍ズム / 【最新版】Maven Central Repository へのライブラリ登録方法 #maven@vvakameの日記 / JsonPullParser が Maven Central Repository に入るようです
ノウハウ共有サイト!Knowledge Enabling / appendix. mavenセントラルリポジトリに公開する
エルピーベ / MacOSXでGnuPGを使おう
SlideShare / Maven基礎
Unlimited Island / pom.xml
2014年4月23日水曜日
テックブログまとめに掲載されたブログのRSSまとめ
全部一気に登録したい
成長志向のエンジニアならブックマークすべきテックブログまとめ
に掲載されていたものを読みたいと思ったので、RSSをまとめました。
以下がまとめです。
【国内WEB・IT企業】
クックパッド http://techlife.cookpad.com/feed/
サイバーエージェント http://feedblog.ameba.jp/rss/ameblo/principia-ca
ミクシィ http://alpha.mixi.co.jp/atom.xml
ヤフー http://techblog.yahoo.co.jp/atom.xml
グリー http://labs.gree.jp/blog/feed/
DeNA http://developers.mobage.jp/blog?format=rss
LINE http://tech.naver.jp/blog/?feed=rss2
Googlehttp://googledevjp.blogspot.com/feeds/posts/default
セプテー二 http://labs.septeni.co.jp/?feed=rss2
VOYAGE GROUP http://tech.voyagegroup.com/index.rdf
GMOメディア http://tech.gmo-media.jp/rss
はてな http://developer.hatenastaff.com/feed
サイボウズ http://developer.cybozu.co.jp/tech/?feed=rss2
ヌーラボ http://nulab-inc.com/ja/feed/
Hackist(博報堂アイ・スタジオ) http://hackist.jp/?feed=rss2
DMMツチノコブログ http://tsuchinoko.dmmlabs.com/?feed=rss2
KLab(DSAS開発者の部屋) http://dsas.blog.klab.org/index.rdf
【国内スタートアップ】
VASILY http://tech.vasily.jp/feed/
nanapi http://nanapi.co.jp/blog/feed/
Pixiv http://times.pixiv.net/rss
Qiita http://blog.qiita.com/rss
Wantedly http://engineer.wantedly.com/feed
MUGENUP http://mugenup-tech.hatenadiary.com/feed
【海外(英語)】
Dropbox https://tech.dropbox.com/feed/
Evernote http://blog.evernote.com/tech/feed/
Twitter https://blog.twitter.com/api/blog.rss?name=engineering
Facebook https://www.facebook.com/feeds/page.php?id=9445547199&format=rss20 ※FacebookページのRSSを使いました。
Tumblr http://engineering.tumblr.com/rss
Pinterest http://engineering.pinterest.com/rss
GitHub https://github.com/blog/engineering.atom
Yammer http://eng.yammer.com/feed/
AirBnB http://nerds.airbnb.com/feed/
Square http://feeds.feedburner.com/corner-squareup-com
Foursquare http://engineering.foursquare.com/feed/
Hulu http://tech.hulu.com/blog/feed/
Spotify http://labs.spotify.com/feed/
何を使って読むか
feedlyでもいいですが、Feetrを使いました。適宜置き換えてください。
今回は、
国内WEB・IT企業 http://myfeetr.com/s/78
国内スタートアップ http://myfeetr.com/s/79
海外(英語) http://myfeetr.com/s/80
で3つのレシピを作成したので、Feetrユーザはご活用ください。
参考
CAREER HACK
PushBullet
フィード(RSS)を取得・検出します
バイラルクラブ 1分で終わる!FacebookページのRSSフィードを取得する3つのステップ
成長志向のエンジニアならブックマークすべきテックブログまとめ
に掲載されていたものを読みたいと思ったので、RSSをまとめました。
以下がまとめです。
【国内WEB・IT企業】
クックパッド http://techlife.cookpad.com/feed/
サイバーエージェント http://feedblog.ameba.jp/rss/ameblo/principia-ca
ミクシィ http://alpha.mixi.co.jp/atom.xml
ヤフー http://techblog.yahoo.co.jp/atom.xml
グリー http://labs.gree.jp/blog/feed/
DeNA http://developers.mobage.jp/blog?format=rss
LINE http://tech.naver.jp/blog/?feed=rss2
Googlehttp://googledevjp.blogspot.com/feeds/posts/default
セプテー二 http://labs.septeni.co.jp/?feed=rss2
VOYAGE GROUP http://tech.voyagegroup.com/index.rdf
GMOメディア http://tech.gmo-media.jp/rss
はてな http://developer.hatenastaff.com/feed
サイボウズ http://developer.cybozu.co.jp/tech/?feed=rss2
ヌーラボ http://nulab-inc.com/ja/feed/
Hackist(博報堂アイ・スタジオ) http://hackist.jp/?feed=rss2
DMMツチノコブログ http://tsuchinoko.dmmlabs.com/?feed=rss2
KLab(DSAS開発者の部屋) http://dsas.blog.klab.org/index.rdf
【国内スタートアップ】
VASILY http://tech.vasily.jp/feed/
nanapi http://nanapi.co.jp/blog/feed/
Pixiv http://times.pixiv.net/rss
Qiita http://blog.qiita.com/rss
Wantedly http://engineer.wantedly.com/feed
MUGENUP http://mugenup-tech.hatenadiary.com/feed
【海外(英語)】
Dropbox https://tech.dropbox.com/feed/
Evernote http://blog.evernote.com/tech/feed/
Twitter https://blog.twitter.com/api/blog.rss?name=engineering
Facebook https://www.facebook.com/feeds/page.php?id=9445547199&format=rss20 ※FacebookページのRSSを使いました。
Tumblr http://engineering.tumblr.com/rss
Pinterest http://engineering.pinterest.com/rss
GitHub https://github.com/blog/engineering.atom
Yammer http://eng.yammer.com/feed/
AirBnB http://nerds.airbnb.com/feed/
Square http://feeds.feedburner.com/corner-squareup-com
Foursquare http://engineering.foursquare.com/feed/
Hulu http://tech.hulu.com/blog/feed/
Spotify http://labs.spotify.com/feed/
何を使って読むか
feedlyでもいいですが、Feetrを使いました。適宜置き換えてください。
今回は、
国内WEB・IT企業 http://myfeetr.com/s/78
国内スタートアップ http://myfeetr.com/s/79
海外(英語) http://myfeetr.com/s/80
で3つのレシピを作成したので、Feetrユーザはご活用ください。
参考
CAREER HACK
PushBullet
フィード(RSS)を取得・検出します
バイラルクラブ 1分で終わる!FacebookページのRSSフィードを取得する3つのステップ
2014年4月6日日曜日
MacでChef + Vagrant 環境構築メモ
環境だけを手っ取り早く整えたい方用
用語などは別サイトで学んでください。
Chefのインストール
OfsCodeが提供しているChef配布用スクリプト
knifeの設定
色々聞かれるがとりあえず全部Enterで良い
VirtualBoxのインストール
サイトから入手
[VirtualBox download]
Vagrantのインストール
gemでの配布は更新されていないのでサイトから入手
[Vagrant download]
VagrantでVM初期設定
VagrantloudからOSイメージを探す
[Vagrantcloud]
例:centos-6.5の場合
vmの設定を置きたいディレクトリで下記のコマンドを入力
作成されたVagrantfileを編集
コメントアウトを外す
➡ Vagrantを入れた環境からアクセスできるようにし、VMのIPを192.168.33.10に設定
VM起動
Vagrantfileがあるディレクトリで
ssh接続
~/.ssh/config に下記を追加編集
sshコマンドでvmへ接続できるように
下記のコマンドでも可
ssh設定を出力して書き出し
内容は以下
ssh接続(まだしなくても良い)
knife-soloインストール
gemコマンド
XCode5.1でClangエラーが出る場合は以下のコマンドを用いる
~/.chef/knife.rb に下記を追加編集
tmpディレクトリの設定とCookbookをインポートする際の設定
knife-soloでChef Solo環境を生成
Chefレポジトリを作成
レポジトリを管理したいディレクトリで実行
下記だと chef-repoレポジトリが作成される
合わせてgit管理
Chefレポジトリ直下で以下のコマンドを入力
Chefレポジトリ直下で以下のコマンドを入力
vmにChefをインストール
作成されたjsonファイルをコミット
Cookbook作成
nginx というCookbook作成
Chefレポジトリ直下で以下のコマンドを入力
Recipe編集
site-cookbooks/nginx/recipes/default.rb を編集
上記recipeで使うtemplate(nginx.conf.erb)を作成
site-cookbooks/nginx/templates/default/ に作成
centosでnginxを取得するにはyumのEPELというアドオンパッケージのyumレポジトリを有効にする必要がある
yumのCookbookを取得
Nodeの設定
jsonファイルはサーバ(node)の状態を示す
nodes/192.168.33.10.json
下記のように編集
vmへChef Soloを実行
実行後、http://192.168.33.10 へアクセスし、nginxが起動しているか確認
以上。お疲れさまでした。
参考
Amazon.co.jp 入門Chef Solo
Qiita 「入門 Chef Solo」 on MacOSX ではまったこと
2noの日記 【Mac】clang によるビルドエラー【Xcode 5.1】
用語などは別サイトで学んでください。
Chefのインストール
OfsCodeが提供しているChef配布用スクリプト
$ curl -L https://www.opscode.com/chef/install.sh | sudo bash
knifeの設定
色々聞かれるがとりあえず全部Enterで良い
$ knife configure
VirtualBoxのインストール
サイトから入手
[VirtualBox download]
Vagrantのインストール
gemでの配布は更新されていないのでサイトから入手
[Vagrant download]
VagrantでVM初期設定
VagrantloudからOSイメージを探す
[Vagrantcloud]
例:centos-6.5の場合
vmの設定を置きたいディレクトリで下記のコマンドを入力
$ vagrant init chef/centos-6.5
作成されたVagrantfileを編集
コメントアウトを外す
➡ Vagrantを入れた環境からアクセスできるようにし、VMのIPを192.168.33.10に設定
config.vm.network "private_network", ip: "192.168.33.10"
VM起動
Vagrantfileがあるディレクトリで
$ vagrant up
ssh接続
~/.ssh/config に下記を追加編集
sshコマンドでvmへ接続できるように
HOST 192.168.33.* IdentityFile ~/.vagrant.d/insecure_private_key User vagrant
下記のコマンドでも可
ssh設定を出力して書き出し
vagrant ssh-config --host 192.168.33.* >> ~/.ssh/config
内容は以下
Host 192.168.33.∗ HostName 127.0.0.1 User vagrant Port 2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /Users/$HOST_NAME/.vagrant.d/insecure_private_key IdentitiesOnly yes LogLevel FATAL
ssh接続(まだしなくても良い)
$ ssh 192.168.33.10
knife-soloインストール
gemコマンド
$ sudo gem install knife-solo
XCode5.1でClangエラーが出る場合は以下のコマンドを用いる
$ sudo ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install knife-solo
~/.chef/knife.rb に下記を追加編集
tmpディレクトリの設定とCookbookをインポートする際の設定
knife[:solo_path] = '/tmp/chef-solo' cookbook_path ['./cookbooks']
knife-soloでChef Solo環境を生成
Chefレポジトリを作成
レポジトリを管理したいディレクトリで実行
下記だと chef-repoレポジトリが作成される
$ knife solo init chef-repo
合わせてgit管理
Chefレポジトリ直下で以下のコマンドを入力
$ git init $ git add . $ git commit -m "first commit"
Chefレポジトリ直下で以下のコマンドを入力
vmにChefをインストール
$ knife solo prepare vagrant@192.168.33.10
作成されたjsonファイルをコミット
$ git add nodes/ $ git commit -m "add node json file"
Cookbook作成
nginx というCookbook作成
Chefレポジトリ直下で以下のコマンドを入力
$ knife cookbook create nginx -o site-cookbooks
Recipe編集
site-cookbooks/nginx/recipes/default.rb を編集
package "nginx" do action :install end service "nginx" do supports :status => true, :restart => true, :reload => true action [ :enable, :start ] end template "nginx.conf" do path "/etc/nginx/nginx.conf" source "nginx.conf.erb" owner "root" group "root" mode 0644 notifies :reload, 'service[nginx]' end
上記recipeで使うtemplate(nginx.conf.erb)を作成
site-cookbooks/nginx/templates/default/ に作成
user nginx; worker_processes 1; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; server { listen <%=node['nginx']['port']%>; server_name localhost; location /{ root /usr/share/nginx/html; index index.html index.htm; } } }Cookbookをインポートする
centosでnginxを取得するにはyumのEPELというアドオンパッケージのyumレポジトリを有効にする必要がある
yumのCookbookを取得
$ knife cookbook site vendor yum $ knife cookbook site vendor yum-epel
Nodeの設定
jsonファイルはサーバ(node)の状態を示す
nodes/192.168.33.10.json
下記のように編集
{ "nginx":{ "port":80 }, "run_list":[ "yum-epel", "nginx" ] }
vmへChef Soloを実行
実行後、http://192.168.33.10 へアクセスし、nginxが起動しているか確認
$ knife solo cook vagrant@192.168.33.10
以上。お疲れさまでした。
参考
Amazon.co.jp 入門Chef Solo
2noの日記 【Mac】clang によるビルドエラー【Xcode 5.1】
2014年3月18日火曜日
ダイアログのレイアウトをカスタムできる、DialogFragmentを呼ぶライブラリ (Android)
DialogFragment
ダイアログのレイアウトをカスタムする機会があったので、なるべく使い回しができるようライブラリを作成しました。
APIレベル13から、showDialogは非推奨となってますので、DialogFragmentで実装しました。
android-library-dialog-DialogHelper
設定
ライブラリプロジェクトとして取り込んでください。
APIレベル10以上じゃないと動作しません。
ソース
一行で呼べます。
カスタムレイアウトも利用できるメソッドを用意してあります。
今後
キャンセルの有効無効や、その他のオプションを追加していくといたずらに引数が増えていくのでオプションを作成したい。
Builderで組み立てられるようにしたい。
テーマも変更できるといいな。
pull requestや要望があると喜びます。
参考
Y.A.Mの雑記帳 / Android DialogFragmentを使うときの注意点。
Y.A.Mの雑記帳 / Fragment から Activity にコールバックする方法
暇なメモ帳 / DialogFragmentでのカスタムダイアログ実装方法
ケーワン・エンタープライズのエンジニアメモ(`・ω・´)ゞビシッ!! / Fragmentを使ってみる(画面回転時のライフサイクルについて)
ダイアログのレイアウトをカスタムする機会があったので、なるべく使い回しができるようライブラリを作成しました。
APIレベル13から、showDialogは非推奨となってますので、DialogFragmentで実装しました。
android-library-dialog-DialogHelper
設定
ライブラリプロジェクトとして取り込んでください。
APIレベル10以上じゃないと動作しません。
ソース
一行で呼べます。
カスタムレイアウトも利用できるメソッドを用意してあります。
DialogHelper.callDialog(this, "title", "message", "positive", "negative", "neutral", "tag");
今後
キャンセルの有効無効や、その他のオプションを追加していくといたずらに引数が増えていくのでオプションを作成したい。
Builderで組み立てられるようにしたい。
テーマも変更できるといいな。
pull requestや要望があると喜びます。
参考
Y.A.Mの雑記帳 / Android DialogFragmentを使うときの注意点。
Y.A.Mの雑記帳 / Fragment から Activity にコールバックする方法
暇なメモ帳 / DialogFragmentでのカスタムダイアログ実装方法
ケーワン・エンタープライズのエンジニアメモ(`・ω・´)ゞビシッ!! / Fragmentを使ってみる(画面回転時のライフサイクルについて)
登録:
投稿 (Atom)