tag:blogger.com,1999:blog-44361744330014432342024-03-19T14:09:13.173+09:00湘南社中テクニカルブログスマートフォン向けアプリ開発やサーバサイドの開発に関する技術ブログです。<br>
エンジニアdommyのつぶやきは<a href="https://twitter.com/#!/shonanshachu">@shonanshachu</a>、ソースコードは<a href="https://github.com/morodomi">GitHub</a>で配信中。Anonymoushttp://www.blogger.com/profile/09576425824013497315noreply@blogger.comBlogger248125tag:blogger.com,1999:blog-4436174433001443234.post-75742379766298210552016-10-11T07:00:00.000+09:002016-10-11T07:00:25.472+09:00【Apache】mod_watchdog is required
ぱくたその画像を使ってみました。
この画像を使っているブログや広告は良く見ますね。
EC2で動かしているapacheをyumでアップデートしたら、
知らない間に2.4になっていて、エラーが出て止まっていました。
エラーの内容が、
[suexec:notice] [pid 32371] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[proxy_hcheck:crit] [pid 32371] AH03262: mod_watchdog is required
AH00016: Configuration Failed
と、mod_watchdogという見たことも聞いたことも無いモジュールを要求されました。
検索してみたら、
/etc/httpd/conf.modules.d/Anonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0tag:blogger.com,1999:blog-4436174433001443234.post-50816324986975771612014-12-26T07:00:00.000+09:002014-12-26T07:00:03.013+09:00【Rails】Nokogiriのインストールで失敗した7月に転職いたしまして、ソースコードを書くことがほとんど無くなりまして、
暇を見つけてiOS/Androidの変なライブラリ書いたり、
JavaScript書いたり、
とりあえず、仕事に関係の無いところでぼちぼちやっております。
ブログはサボりすぎて、書くことが無かったり、書く気が失せたりで、
放置していましたが、またメモしていければと思います。
今日は、Rubyのgemのインストールでエラーが出て、
ちょっと詰まったので、エラーで探しに来る人が見つけれればなぁぐらいのメモです。
$ sudo gem install nokogiri -v '1.6.4.1'
Building native extensions. This could take a while...
ERROR: Error installing nokogiri:
ERROR: Failed to Anonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0tag:blogger.com,1999:blog-4436174433001443234.post-77227576157094220542014-05-20T07:00:00.000+09:002014-05-20T07:00:03.476+09:00【iPhone】UIViewにUIImageを背景設定する方法
UIViewには、setBackgroundImageのメソッドは無いので、
その為のメモ
UIViewにUIImageを背景設定するには、setBackgroundColorを使います。
[self.view setBackgroundColor:[UIColor colorWithPatternImage:backgroundImage]];
と、まぁ、こんな感じになるのですが、
描画範囲に最適化して背景を描画したい場合もあります。
その場合は、
UIGraphicsBeginImageContext(self.view.frame.size);
[backgroundImage drawInRect:self.view.bounds];
UIImage *bgImg = UIGraphicsGetImageFromCurrentImageContext();
Anonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0tag:blogger.com,1999:blog-4436174433001443234.post-65981613810226839862014-05-15T07:00:00.000+09:002014-05-19T11:57:24.921+09:00【iPhone】iOS4.3で、sendAsynchronousRequest
iOS7ベースに、アプリのプログラムをしていたら、
iOS4.3ではよく落ちる。
落ちる原因の1つ、
[NSURLConnection sendAsynchronousRequest:request queue:mainQueue completionHandler:completionBlock]
を解決しました。
まずはメソッドを追加します。
-(void)sendAsynchronousRequest:(NSURLRequest*)request queue:(NSOperationQueue*)queue completionHandler:(void(^)(NSURLResponse *response, NSData *data, NSError *error))handler
{
__block NSURLResponse *response = Anonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0tag:blogger.com,1999:blog-4436174433001443234.post-47280400514880645312014-03-18T07:00:00.000+09:002014-03-18T07:00:03.848+09:00【iPhone】iOS7.1からipaのインストールにはSSLが必須
以前、TestFlightライクなアプリケーションを作成したのですが、
iOS7.1にして、早速問題が発生。
問題はipaのダウンロードにhttpから、httpsが必須になった事。
今までは、リンクURLが
itms-services://?action=download-manifest&url=http://example.com/manifest.plist
だったものが、
itms-services://?action=download-manifest&url=https://example.com/manifest.plist
と、sしか変わってませんが、SSL通信が必須になりました。
で、どうやらオレオレ証明書でも出来るようなのですが、
ん〜、node.jsに証明書を設定しても、
"Cannot connect to 192.168.0.1"
なんて言Anonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0tag:blogger.com,1999:blog-4436174433001443234.post-55108429165095023562014-03-15T07:00:00.000+09:002014-03-15T15:15:17.291+09:00【Mac】Marvericksにwgetをインストールしてみた。
MacBook Airを新調して、wgetが無いので、ソースからインストールしてみました。
curl -O http://ftp.gnu.org/gnu/wget/wget-1.15.tar.gz
tar zxvf wget-1.15.tar.gz
cd wget-1.15
./configure --with-ssl=openssl
make
make install
だけです。
sudo権限が無いと出来ないかもしれません。Anonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0tag:blogger.com,1999:blog-4436174433001443234.post-34402750646534872582014-02-26T07:00:00.000+09:002014-02-26T07:00:06.991+09:00【Jenkins】Bitnamiを使ってMacにインストールしてみた。
あけましておめでとうございます。
サボりにサボったブログを約2ヶ月ぶりに復活です。
今回はJenkinsをローカルにインストールしようと思い、
Bitnamiを使ってみたかったので、とりあえずBitnami使ってインストールしてみました。
最初の画像から、とりあえずインストーラをダウンロードして、インストールします。
途中で、アカウントのID/PASSを聞かれたような気がします。
そして、インストール後のファイルがこちら。
で、選択されている、"manager-osx.app"から起動して、
BitnamiによるJenkinsの管理画面みたいなもんですかね。
タブを移動すると、どうやらTomcatで動いているようです。
Configを押すと、Portの設定なども出来ると、
3枚目の画像の、"Go to Application"を押すと、
JenkinsAnonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0tag:blogger.com,1999:blog-4436174433001443234.post-28618611760617969422013-12-23T07:00:00.000+09:002013-12-23T15:56:45.441+09:00【Android】Silent Notificationをやってみたい
Android Advent Calendar 2013の23日目。
リア充イベントのクリスマスがもう目の前に迫ってますが、
今年は急遽、サンタがインフルエンザの為、中止みたいですよ。
この記事は23日に急遽書いています。
忘れていたわけではありません。
どちらかと言うとネタが無かった。
無理やり探しました。
ネタ無いんだもん。
Androidのコードを全然書いていないので、
KitKatについてとか書きたかったんですが、
あんまりネタが無い。
ので、iOSから横流しし、Silent Notificationの記事を書きます。
ってか、そもそも、AndroidのNotificationは、自分で書かないと、
表示してくれません。
何もしなくてもSilent Notificationになるんです。
そんな事は分かっています。
やりたい事は、
1. Anonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0tag:blogger.com,1999:blog-4436174433001443234.post-11951497388627005302013-12-18T07:00:00.000+09:002013-12-18T07:00:00.883+09:00【Jenkins】TestFlightライクなアプリケーション
Jenkins CIのAdvent Calendar 18日目。
言い出しっぺなのに、特にネタが思い浮かばず。
GitHubに公開してるアプリケーションの解説をいたします。
morodomi/Install-APK-and-IPA
このアプリケーションは内部ネットワーク経由でIPAやAPKをインストールする為に適当に作りました。
社内で開発中のバイナリはTestFlightがいくら安全といえども、
社外にバイナリを置くこと自体があまり安全とは言えません。
しかし、アプリ開発者としては、運営者に、
最新のビルドを勝手にインストールしておいて欲しいんですよ。
なんせ、Jenkinsからapkやipaを落として、
端末をケーブルに繋いで、
インストールして、
はい、出来ました〜ってやるのは凄い面倒なので。
Yahoo!ニュースを読んだり、
Facebookを読んだり、
Anonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0tag:blogger.com,1999:blog-4436174433001443234.post-56455611240407793142013-11-22T07:00:00.000+09:002013-11-22T07:00:02.578+09:00【iPhone】NSURLSessionを使う
iOS7から、NSURLSessionというクラスが追加されました。
NSURLConnectionもHTTP通信をするクラスなのですが、
NSURLSessionは大変使いやすいので、iOS7ではこちらを使いましょう。
NSURLConnectionとNSURLSessionを使って、HTTP通信をするサンプルです。
typedef void (^NSURLRequestCompletionHandler)(id, id, id);
// Completion Handler Block
NSURLRequestCompletionHandler handler = ^(NSURLResponse *response, NSData *data, NSError *error) {Anonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0tag:blogger.com,1999:blog-4436174433001443234.post-59440612255708116902013-11-19T07:00:00.000+09:002013-11-19T07:00:01.858+09:00【iPhone】User Interaction is not allowed. (2)
以前も書いたこの記事。
【iPhone】User Interaction is not allowed
が、再発しまして、
以前と違う原因のようなので、いろいろ修正しておりました。
そもそも、設定は何も変えてない。
プロジェクトもJenkinsのビルド設定も。
と、思ったら、
そういえば、大分前に、Jenkinsをビルドサーバ再起動時に自動で起動するように、
plistを
LaunchAgents/
から
LaunchDaemons/
に移動させたんだった。
というのを思い出し、
plistをLaunchAgents/へ戻して、
Jenkinsを再起動!
したら直りました。
なんででしょう?Anonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0tag:blogger.com,1999:blog-4436174433001443234.post-25462033048674811332013-10-17T07:00:00.000+09:002013-10-17T07:00:00.761+09:00【iPhone】64bitの静的ライブラリをビルドする方法
arm64を追加したユニバーサルライブラリをビルドする方法を書いていきます。
まず、今までのarmv7 armv7s向けにビルドします。
xcodebuild -project StatisLibrary.xcodeproj -configuration Release -sdk iphoneos -target StatisLibrary clean build ARCHS="armv7 armv7s" IPHONEOS_DEPLOYMENT_TARGET='4.3' TARGET_BUILD_DIR='./build-arm' BUILD_PRODUCT_DIR='./build-arm'
次に、arm64向けにビルドします。
xcodebuild -project StatisLibrary.xcodeproj -configuration Release -sdkAnonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0tag:blogger.com,1999:blog-4436174433001443234.post-42485934472740236932013-10-04T07:00:00.000+09:002013-10-04T07:00:02.897+09:00【iPhone】Push通知証明書の期限切れ確認
期限切れのAPNs用pemファイルを更新し忘れました。
ので、今回はチェック用のcronを回すように設定。
SSLの証明書はopensslコマンドで有効期限を確認出来ます。
この有効期限を30日前になったらメールで通知してくれるように設定しました。
確認コマンドは下記サイトからコピーしてきました。
リンクを貼ろうと思ったのですが、
ブログを書いている時はサーバダウンしてました。
https://raim.codingfarm.de/blog/2013/03/07/checking-expiry-dates-of-local-and-remote-ssl-certificates/
下にコマンドをコピーしておきますので、
ssl-cert-checkと名付けて、実行権限を付けて保存して下さい。
保存したら、Jenkinsに、
/usr/local/share/Anonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0tag:blogger.com,1999:blog-4436174433001443234.post-18748111415780577652013-10-02T07:00:00.000+09:002013-10-02T07:00:01.773+09:00【Jenkins】アップデートしてみた
Jenkinsが知らない間にどんどんアップデートするので、
ビルドサーバのJenkinsもアップデートしてみました。
まず、トップ画像の右側の
Latest and greatest
から、最新のjenkins.warファイルをダウンロードします。
ダウンロードしたら、Jenkinsを1回止めて
launchctl unload -w /Library/LaunchAgents/homebrew.mxcl.jenkins.plist
plistで指定していたwarファイルを差し替え。
今回は/usr/local/opt/jenkins/libexecにありましたので、
cp ~/Download/jenkins.war /usr/local/opt/jenkins/libexec
そして、Jenkinsの起動
launchctl load -w /Anonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0tag:blogger.com,1999:blog-4436174433001443234.post-87825610638879801522013-10-01T07:00:00.000+09:002013-10-01T07:00:05.512+09:00【iPhone】iOS7のバグまとめ
iOS7、iPhone5S/C発表から約2週間が経ち、
いろいろ分かったバグまとめ。
全画面表示なのにステータスバーが表示される
iOS6までは表示されなかったのに、
iOS7で表示されるアプリがあるようです。
iOS7から新たに、
UIViewControllerBasedStatusBarAppearance
がInfo.plistの設定項目に追加されましたので、
ターゲットのInfoタブを開いて、
UIViewControllerBasedStatusBarAppearance
を
NO
に設定すると消えてくれると思います。
ModalViewControllerが表示されないiPhone5Sのみの挙動ですが、
presentViewControllerメソッドでModalViewを表示させるときに、
システムが設定したViewController
(Anonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0tag:blogger.com,1999:blog-4436174433001443234.post-17610832370841469282013-09-30T07:00:00.000+09:002013-09-30T07:00:06.941+09:00【iPhone】Missing recommended icon file
6月ぐらいから、Appleへアプリの申請をする際に、
タイトルのようなメールが返って来ます。
対応方法をまとめました。
iPhone対応アプリiPhoneのみの場合は120x120のアイコンを設定する必要があります。
まずは、120x120のアイコンを用意し、プロジェクトへ追加します。
(iPadアイコンも追加しています。)
追加したら、ビルドターゲットへも追加します。
ビルドターゲットへ追加したら、ターゲットのInfoタブを開き、
Icon filesの項目へ、追加したアイコンのファイル名を追加します。
icon-60@2x.pngが、120x120のアイコンです。
後は、このままビルドすると、
iOS7で120x120のアイコンが反映されます。
iPad対応アプリiPadも対応する場合は76x76と、152x152のアイコンを用意する必要があります。Anonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0tag:blogger.com,1999:blog-4436174433001443234.post-12419306685803021462013-09-20T07:00:00.000+09:002013-09-20T07:00:02.388+09:00【iPhone】GameController.frameworkの実装
iOS7から新たに登場した、GameController.frameworkの実装方法のまとめです。
(リリース前情報をまとめた感じですので、リリース後は少し違うかもしれません)
iOS7からGameController.frameworkが登場いたしました。
Appleのリファレンスだけでは分かりづらかったので実装方法をまとめました。
はじめに今回、ゲームコントローラーには3種類のコントローラーがあります。
基本ゲームパッド、拡張ゲームパッド、独立拡張ゲームパッドです
基本ゲームパッドには
十字キー
ボタンA、B、X、Y
ボタンL、R
が付いています。
拡張ゲームパッドと独立拡張ゲームパッドには、上のボタンに追加して、
3Dスティック
ボタンL2、R2
が付いています。
コントローラーの接続iPhoneに常にコントローラーが接続されている訳ではありません。Anonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0tag:blogger.com,1999:blog-4436174433001443234.post-78330028858489372282013-08-28T07:00:00.000+09:002013-08-28T07:00:03.364+09:00【iPhone】Bottom SpacingをTop Spacingへ変更する
慣れない事をするものでは無いですね。
ちょっとモック作ってて、インターフェースビルダーなんて
普段触らない機能を触っていました。
で、iPhone5が出てから、スペースの位置に気を使うようになりました。
今まではインターフェースビルダーでパーツを配置して終わりだったのですが、
今回は下から何pixelか、上から何pixelか気にして配置してました。
使ってて思ったのは、画面下半分に配置されたパーツは
デフォルトで「Bottom Space」になっているのでした。
で、画面全体は上に合わせたいので、「Top Space」へ変更したので、
手順をメモしておきます。
まず、Spacingを変更したいパーツを選択します。
次に、右下の3つ並んでいるボタンの真ん中を押して、
「Top Space」を追加します。
終わったら、再度、パーツを選択します。
選択Anonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0tag:blogger.com,1999:blog-4436174433001443234.post-73764305601187502672013-08-26T07:00:00.000+09:002013-08-26T07:00:04.104+09:00【iPhone】UIWebViewのリクエストヘッダーを書き換える
そろそろiPhone5S発表されますかねぇ。
発売が楽しみです。
今回はUIWebViewのリクエストヘッダーをどうこうする方法をメモ
User-Agentを書き換える
NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"Custom User Agent", @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
の2行でデフォルトのUser-Agentが上書きされます。
ただ、アプリ内全てのUIWebViewが書き換わってっしまいますので、
一部の箇所でのみUser-Agentを変更したいなんて場合には使えません。
カスタムヘッダーを付ける
Anonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0tag:blogger.com,1999:blog-4436174433001443234.post-16923717151472511782013-08-21T07:00:00.000+09:002013-08-21T07:00:05.931+09:00【Android】JavaScriptからネイティブコードが呼べない
いろいろアプリを作っていたら、
Android 4.2系でJavaScriptからネイティブコードが呼べない事があったので、
解決方法のメモ。
JavaScriptのInterfaceを登録するには、
webview.addJavascriptInterface(new JSObject(this), "jsobject");
と登録していました。
そこは今までと変わらず、
4.2以降では、
このJSObjectのJavaScriptから呼び出すメソッドに、
@JavascriptInterface
のアノーテーションを付ける必要があるようです。
ので、
class JSObject {
public JSObject(Context context) {
}
@JavascriptInterface // ここを追加
public void Anonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0tag:blogger.com,1999:blog-4436174433001443234.post-25118092569561201342013-08-08T07:00:00.000+09:002013-08-08T07:00:05.422+09:00【Jenkins】iPhoneアプリをWi-Fiでインストール
アプリでJenkinsをビルドしたら、そのままiPhoneへインストールしたいので、
TestFlight的な何かを作ってみました。
作るために必要となる知識をまとめてみました。
ビルド
iPhoneのアプリのビルドをしますが、
ビルドする際にiPhoneが登録してあるProvisioning Profileでビルドします。
また、.ipa形式までビルドします。
JenkinsにはXcode Pluginがあるので、そちらを使ってもいいですし、
以前、
【iPhone】Jenkins CIで自動ビルド
という記事も書いているので、そちらのシェルをコピーしてもビルド出来ます。
ビルドが終われば.ipa形式のファイルが出来上がります。
ビルド結果一覧
Jenkinsでビルドされたビルド結果は、
/path/to/.jenkins/jobs/Anonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0tag:blogger.com,1999:blog-4436174433001443234.post-88887576483441621502013-08-07T07:00:00.000+09:002013-08-07T11:07:56.194+09:00【Blogger】Feedlyの購読者カウントを表示
Google Readerが終了して1ヶ月以上経ちまして、
Feedlyが結構ユーザを増やしていると勝手に思っています。
ので、Feedlyでちょこっと遊んでみました。
今回はこんなものを表示してみたいと思います。
現在の購読者カウントですね。
こことか参考にしました。
ソースも公開しちゃいます!Feedly登録ボタンの購読者数カウンタを自作してみました
ちなみに、記事を書いてる時点では、
クロスドメインのAJAX使っているので、普通には表示されません。
事前準備まずはFeedlyボタンを作成しなければいけません。
Feedly buttonのページへ行き、ボタンを作成します。
aタグとimgタグの混ざったタグが表示されますので、貼り付けます。
blog.shonanshachu.comでは、
<a href="http://Anonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0tag:blogger.com,1999:blog-4436174433001443234.post-33212167888991943002013-08-05T07:00:00.000+09:002013-08-05T07:00:06.652+09:00【Node.js】MochaでIntegration Testing
今回はMochaを使った、APIのIntegration Testについてです。
アプリを作っていると、APIも見たり書いたり、アップデートしたりするのですが、
アップデートするごとに、他のAPIへ影響していないかをテストします。
Mochaは、JavaScriptのテストフレームワークです。
とりあえずインストールします。
npm install mocha -g
これでmochaコマンドが実行可能です。
次に、APIのテストなので、requestモジュールをインストールしました。
npm install request
requestに、APIの条件に合わせてqsやGET/POSTを変更しつつ、
ひと通りAPIを叩きますが、
まずは、成功するケース、失敗するケース等をひと通り書きだします。
ケースを出し終わったらプログラミングしていきます。
例として、xxxというAnonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0tag:blogger.com,1999:blog-4436174433001443234.post-83801740001511863882013-07-16T07:00:00.000+09:002013-07-16T07:00:07.027+09:00【Blog】FeedBurnerのブラウザ・フレンドリにFeedlyを追加する
Google ReaderからFeedlyに乗り換えた方も多いと思いますので、
FeedBurnerにFeedlyを追加しました。
追加したのはこれ
手順はYouTubeから参照しました。
途中で出てくるURLはこちら。
http://visuex.com/feedly.xml
なんとも手抜きなブログですいません。Anonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0tag:blogger.com,1999:blog-4436174433001443234.post-13849553257075834892013-07-10T07:00:00.000+09:002013-07-10T07:00:06.311+09:00【Jenkins】アプリビルドに便利なプラグインまとめ
Jenkinsにアプリビルドを任せっきりなdommyです。
一応コミット前にはローカルでちゃんとビルドしますよ。
たまに忘れますけど。
と、今回はアプリビルドに特化したJenkinsプラグインの紹介です。
Jenking GIT Plugin
まずはSCMプラグインから、Gitプラグインの紹介。
単純にGitからcloneする為のプラグインです。
ブランチの指定も出来ます。
ポーリング感覚を5分とかに設定しておけばレポジトリをチェックしてくれます。
コミット後、すぐにビルドしたい場合はgitのhooksに登録して下さい。
登録方法は【Jenkins】GitのコミットをHookしてJobを実行を参考に
Jenking Multiple SCMs Plugin
複数のSCMからソースをコピーしてくる為のプラグインです。
例えば、デザイン、ライブラリ、アプリAnonymoushttp://www.blogger.com/profile/13222501687355536296noreply@blogger.com0