• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
 
 

2010年、あけましておめでとうございます。
今年もどうぞよろしくお願いします。

さて、年初からお知らせなのですが、タイトルにありますとおり、「ezPhotoMail」、「投稿百景」、「Shopping Pink」s21gでの開発・販売を終了し、個人アカウント(Satoko Hibi)で開発・販売することになりました。現在、それぞれAppleに申請中です。

またs21gでの販売終了に伴いまして、大変申し訳ない/残念なことに、これまで購入して頂いた方々にアップデートを受けて頂くことができなくなってしまいます(AppIDが変わってしまうため)。

これを考慮しまして販売開始時には、これまで購入して頂いた方の乗り換え促進/お詫びとしまして1週間の無料配布を行いたいと思っています。

また、販売開始はこのブログ, Twitter(@satoko)にてお知らせをする予定ですので、もうしばらくお待ち頂きますようよろしくお願い致します。

posted by Png satoko on Tue 5 Jan 2010 at 02:55

ちょっと気になったので調べてみたら、なかなか直接ContactできないiTunes Connect。結局二つわかったのでメモ。

itunesconnect@apple.com

Twitterで投げたところ、@tomuteさんが教えて下さいました!多謝:

@tomute: @satoko 米国のアドレスになると思いますが、itunesconnect@apple.com はどうでしょう?以前にアプリの会社名を変更してもらうときにここにメールしました。
http://twitter.com/tomute/status/6452800942

appreview@apple.com

もう一つiTunes Connectで見つけたアドレス:

appreview@apple.com

上記はContact Usの"Manage Your Applications" - "Information on Application Reviews Status" - "Status of Specific Application Submission"で見つけました。

posted by Png satoko on Tue 8 Dec 2009 at 05:54

最近、運動不足を感じていたところに、友人も万歩計を持っていることが判明して、万歩計を楽しんで身につけることができるようbotを作ってみました:

@pedometer_bot:歩幅80cm
@pedometer60_bot:歩幅60cm

歩幅に応じて二つのbotを作りました。twtする内容は同じです。よかったら自分の歩幅に応じて適切なアカウントをフォローしてみてください。

使い方

  • followする
  • botからfollow返し:一日一回(現状では17時頃)、フォローの同期を行っています *「今日は13,000歩」、「夕方の散歩は4000歩くらい」などと呟く
  • botから「@satoko さんがエンパイヤ・ステート・ビル(アメリカ)を約1.2周しました:約0.6km #万歩計_」などというmentionがくる

参照される建物・名所、周囲について

建物など歴史的名所を独断と偏見で選び、Google mapsを利用して手動で(!)周囲を計測しましたので、正確ではありません。

今後について

現時点では、あんまり拡張は考えていないのですが、「がんばりましたね」とか「1万歩までもう一息」なんて叱咤激励する方がいいのかしら...とか、はたまた歴史的名称へのリンクへをつけて身近なところを歩いたはずなのに逆に世界を冒険した感を得られるようにするのがいいのかなどとぼんやり考えています。 あと、「○周した」というパターンだけなので、「富士山を一回登った」とか、「万里の長城を1/6制覇しました」なども面白いかなと思っています。+in reply toへの対応などなど...

posted by Png satoko on Mon 7 Dec 2009 at 08:38

メール送信時、長い件名の場合は複数行に分割する

RFC2047によれば、「76文字以内で」複数行に分割すべき
http://www.securehtml.jp/utf-8/long_subject.html

全然知らなかったのですが、分割する必要があるそうです。

全角チルダ(〜)などはdataUsingEncoding:NSISO2022JPStringEncodingで変換できない

NSStringの下記の関数を使って、ISO-2202-JPの文字列を作るのですが、全角チルダ(〜)などがあるとnilが返ってきてしまいます:

  • (NSData *)dataUsingEncoding:(NSStringEncoding)encoding

そういう場合はallowLossyConversion:YESにして、該当の文字を「?」で置き換える必要があります:

  • (NSData *)dataUsingEncoding:(NSStringEncoding)encoding allowLossyConversion:(BOOL)flag

その他

色々調べている間に便利そうだったサイト。メモメモ。

Convert NSData to NSString or vise versa:
http://homepage.mac.com/mnishikata/objective-c_memo/convert_nsdata_to_nsstring_.html

特殊記号の読み方:
http://www1.odn.ne.jp/haru/data-list/mark.html

Unicode版 文字コード表:
http://www.m-hoz.com/jsp/unicode.jsp?Bgn=0&End=65536

NSString encoding problem with extended characters ( AKA : converting NSString to std::string)
http://lists.apple.com/archives/Syncservices-dev/2007/Mar/msg00020.html

[Perl]Perlで日本語(ISO-2022-JP)メールを送信(まとめ):
http://d.hatena.ne.jp/kopug/20060903

posted by Png satoko on Mon 26 Oct 2009 at 06:02

今日はお知らせです。

投稿百景

movapic_100.png 投稿百景
携帯百景に簡単に写真を投稿できるiPhoneアプリ

App Store:
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=329808999&mt=8

プレスリリース:
http://ja.www.s21g.com/releases/12

いつも使わせてもらってる 携帯百景なんですが、専用の投稿アプリがあったらもっと楽しいのに...ということで運営会社の株式会社16Lens様との共同開発でリリースさせて頂きました。

共同開発は初めてだったのですが、アプリ名や罫線絵文字キーボード等のアイディアをkimzoさんから頂きとても楽しく仕事をさせてもらうことができました。kimzoさんありがとうございました!

スクリーンショット

movapic_UI1_60%.png keisen.png

携帯百景には、「罫線絵文字」なるものがあって、ハートマークや晴れなど(21種類)をタイトルに含めることが出来ます。投稿百景では、罫線絵文字キーボードを用意し、簡単に罫線絵文字を入力することができるようになっています(上写真の右側)。

発売を記念して、10月6日から10月19日までの2週間、115円で販売します。
(その後は230円での販売予定)
「投稿百景」を末永くよろしくお願い致します。

posted by Png satoko on Mon 5 Oct 2009 at 05:11 with 2 comments

iPhoneのアプリを作っていると、様々なframeworkを使う場面に出くわします。その際に、色々なインストールの仕方があるようなので、メモしておきます。

via http://code.google.com/p/json-framework/wiki/InstallationInstructions#Option_1:_Copy_the_JSON_source_files_into_your_project

その前にメモ

  • 方法によってステップ3でJSON.hのimport方法が違います。
  • 方法3で、"Copy Files"フェーズができるのですが、DestinationがFrameworks、Products Directoryでどれがいいかよくわかってないです。Buildは通ってもエミュレータで動かないときとかあります。

方法1:ソースをプロジェクトにまるごとコピーする

  1. ソースが含まれているフォルダを追加したいプロジェクトのClassesグループにドロップ
  2. 'Copy items into destination group's folder' オプションをチェック
  3. コード内で #import "JSON.h"などと書いて使う

方法2:iPhoneカスタムSDKを使う

なんかあんまりないかなと思って割愛w

方法3:埋め込みフレームワークを使う

  1. ~/Library/Frameworksディレクトリを作成
  2. JSON.frameworkファイルを上で用意したディレクトリにコピーする
  3. "Add existing file"メニューを選んで、~/Library/Frameworks/JSON.frameworkファイルをアプリケーションに追加する
  4. ターゲットを選択、右クリックして"Add - New Build Phase - New Copy Files Build Phase"メニューを選択
  5. コード内で #import <JSON/JSON.h>などと書いて使う
posted by Png satoko on Mon 28 Sep 2009 at 07:05

[追記] 最後の方、ちょっと不明瞭だったので修正しました。


amend使ったこと無かったのでメモ。

前提

   1  # edit comment.rb    
   2  # edit product.rb  
   3  git commit -am "wrong commit"
(上記のファイルを修正、product.rbを間違ってコミット)

そして、下記の順で変更・修正します:

間違ってコミットしたファイルをコミットから外す

   1  git reset HEAD~1 app/models/product.rb
(変更は維持されたまま、コミットから外されます:unstageという)
(こうすると、# Changed but not updated:のところに出てくる)

コミットメッセージの修正

   1  git commit --amend
(メッセージを修正できる) (+上でcommitから外したファイルを確定する)

amend時にコミットメッセージを再利用する

via http://www.jukie.net/~bart/blog/git-amend

@onoさんにこの記事を教えて頂いたのですが、筆者の方はコミットメッセージを再利用するgit ammendコマンドを作っておくという技を使っておられるようです:

   1  git config --global alias.amend 'commit --amend -C HEAD'
   2  
   3  #今後(メッセージはそのままで)コミットを修正したい時は下記でOK:
   4  git amend

さらに流れ的には、

  1. コミットしてから、
  2. さらにファイルを編集、
  3. それをgit addでファイルを追加、
  4. git commit --amendで3で追加したのを直前のコミットに加える

というワークフローを使って運用。超こまめにコミットして作業したいときに便利そうです!

posted by Png satoko on Fri 25 Sep 2009 at 01:40 with 2 comments

Heroku経由でSinatraを使ってみているのですが、ModelとしてSequelを使ってみることにしました。

Userクラスを作る

DBをオンメモリにしておいて、テーブル作成・クラスの宣言

   1  % irb
   2  require 'rubygems'
   3  require 'sequel'
   4  
   5  DB = Sequel.sqlite
   6  DB << "CREATE TABLE users (id INTEGER PRIMARY KEY, name VARCHAR(255) not NULL)"           
   7   
   8  class  User < Sequel::Model
   9  end

これから、User.なんとかでデータの作成などできます。

   1  User.create(:name => 'satoko')
   2  
   3  User.find(:name => 'satoko')
   4  User.find(:id => 1).update(:name => 'satoko')
   5  User.find(:id => 1).delete
   6  User.first
   7  
   8  User.all
   9  => [#<User @values={:name=>"satoko", :id=>1}>]
  10  
  11  DB[:users].filter(:name => 'satoko').sql
  12  => "SELECT * FROM `users` WHERE (`name` = 'satoko')"

findは1件操作なので、複数件の場合はfilterで行う

   1  User.filter("id > ?", 0).limit(10).each {|u| p[:name]}
   2  => #<Sequel::SQLite::Dataset: "SELECT * FROM `users` WHERE (id > 0)">

また、@orepuriさんに教えてもらったのですが、all、first、eachなどがあって初めてSQLが発行されるそうで、なかなか面白いです

References

Sequel概要(2年前の資料なので、コード的には古いかもしれません)
http://www.slideshare.net/zhesto/ruby-off-rails-japanese

チートシート
http://sequel.rubyforge.org/rdoc/files/doc/cheat_sheet_rdoc.html
http://cheat.errtheblog.com/s/sequel/

Classリファレンス:ModelやDatasetなど
http://sequel.rubyforge.org/documentation.html

posted by Png satoko on Wed 16 Sep 2009 at 21:29

数字だけのタグだとうまくcoが出来なかった覚えがあるので、renameしました。あと、commitハッシュはフルでなくても、最初の5桁くらいで大丈夫だと思います。

タグで使っているcommitハッシュを取得

   1  % git rev-parse 1.1
   2  97f4c33e9a35255b8f8506ffa90ab70605ccf74f

タグのつけ直し

先程入手したcommitハッシュを使って

   1  git tag -a -f v1.1 97f4c33e9a35255b8f8506ffa90ab70605ccf74f

完了と思ったら、つけ直しではなく同じcommitハッシュに別のタグをつけるようになっていまようです。なので、不要なタグを削除します

タグの削除

   1  % git tag -d 1.1
   2  Deleted tag '1.1'

posted by Png satoko on Wed 16 Sep 2009 at 04:30

imagePin.png

前回の続き:

[iPhone] Map Kitで遊ぼう:地図を出して現在位置にピンを立てる
http://blog.s21g.com/articles/1596

参考:

Drawing polyines or routes on a MKMapView (as an MKAnnotationView) – Part 2
http://spitzkoff.com/craig/?p=108

MKAnnotationを実装するクラスを作成

MyAnnotation.h

   1  #import <Foundation/Foundation.h>
   2  #import <MapKit/MapKit.h>
   3  
   4  @interface MyAnnotation : NSObject <MKAnnotation> {
   5  	CLLocationCoordinate2D _coordinate;
   6  }
   7  
   8  @property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
   9  
  10  -(id)initWithCoordinate:(CLLocationCoordinate2D) coordinate;
  11  
  12  @end

MyAnnotation.m

   1  #import "MyAnnotation.h"
   2  
   3  @implementation MyAnnotation
   4  
   5  @synthesize coordinate=_coordinate;
   6  
   7  -(id)initWithCoordinate:(CLLocationCoordinate2D) c{
   8  	_coordinate=c;
   9  	return self;
  10  }
  11  
  12  @end

ViewControllerでMKMapViewDelegateを実装

ポイントとしては

  • .hでMKMapViewDelegateを実装宣言
  • _mapView.delegate = self;
  • -(MKAnnotationView )mapView:(MKMapView )mapView viewForAnnotation:(id )annotationを実装
  • MyAnnotationなら画像を設定する:
    if([annotation isKindOfClass:[MyAnnotation class]]) { annotationView.image = [UIImage imageNamed:@"some.png"];

本当はMKAnnotationViewを派生して、MyAnnotationViewを作るのがベターなんですけど省略しています。

MapTutorialViewController.h

   1  #import <UIKit/UIKit.h>
   2  #import <MapKit/MapKit.h>
   3  
   4  @interface MapTutorialViewController : UIViewController <MKMapViewDelegate> {
   5  	MKMapView *_mapView;
   6  }
   7  @end

MapTutorialViewController.m

   1  #pragma mark MKMapViewDelegate
   2  - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
   3  	MKAnnotationView *annotationView;
   4  	NSString* identifier = @"Pin";
   5  	annotationView = (MKPinAnnotationView*)[_mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
   6  	if(nil == annotationView) {
   7  		annotationView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier] autorelease];
   8  	}
   9  	if([annotation isKindOfClass:[MyAnnotation class]]) {
  10  		annotationView.image = [UIImage imageNamed:@"some.png"]; //地図に表示したい画像を設定
  11  	}
  12  	return annotationView;
  13  }
  14  
  15  - (void)addSomeAnnotations {
  16  	//a location
  17  	double latitude = 37.331688999999997;
  18  	double longitude = -122.030731;
  19  	CLLocationCoordinate2D _location;
  20  	_location.latitude = latitude;
  21  	_location.longitude = longitude;
  22  	
  23  	CLLocationCoordinate2D location1;
  24  	MyAnnotation *annotation;
  25  		
  26  	location1.latitude = _location.latitude+0.1;
  27  	location1.longitude  = _location.longitude+0.1;
  28  	annotation =[[MyAnnotation alloc] initWithCoordinate:location1];
  29  	[_mapView addAnnotation:annotation];
  30  		
  31  	location1.latitude = _location.latitude+0.5;
  32  	location1.longitude  = _location.longitude+0.5;
  33  	annotation =[[MyAnnotation alloc] initWithCoordinate:location1];
  34  	[_mapView addAnnotation:annotation];
  35  }
  36  
  37  - (void)viewDidLoad {
  38      [super viewDidLoad];
  39  	
  40  	_mapView = [[MKMapView alloc] initWithFrame:self.view.bounds];
  41  	_mapView.showsUserLocation=TRUE;
  42  	_mapView.delegate = self;
  43  	[self.view addSubview:_mapView];
  44  		
  45  	[self addSomeAnnotations];
  46  
  47  }
  48  

posted by Png satoko on Wed 9 Sep 2009 at 02:12
Contents
【お知らせ】ezPhotoMail, 投稿百景, Shopping Pinkの個人アカウントへの販売移行のお知らせ
iTunes Connectにメールでコンタクトを取る
[Twitter] 万歩計bot作りました:pedometer_bot、 pedometer60_bot
[iPhone] メール送信アプリでのツボ
[お知らせ] 携帯百景への写真投稿 iPhoneアプリ、「投稿百景」出ました
[iPhone] frameworkのインストールの仕方
[git] 直前のコミットを修正する(ファイルやメッセージを変更):git commit --amend
[ruby] Sequelについてメモ
[git] タグのrename: git rev-parse, git tag -a -f
[iPhone] MapKitで遊ぼう:地図にピンではなく画像を配置する
Comments
KingofSmack: Here also good reads for this mobile applicatio... '14-5
satoko: stackoverflowでも同じエラーを挙げている人がいたので、1.3でアップロードしたよっ... '10-12
ujihisa: :%s/blog/glob/g '10-7
satoko: しゅが〜様 返事が遅くなって申し訳ありません。また、投稿百景ご購入ありがとうございます。 ... '09-10
しゅが~: こんにちは。投稿百景を発売日翌日から利用しています。本当にいいAppを作っていただきました。罫... '09-10
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ