태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.
Creative Commons License
Creative Commons License

#! /usr/bin/perl
# Autofetch category rank

package itunesRank;

use warnings;
use strict;

# FSWB
my $appName = "Full Screen Web Browser";
my $appID = 303154925;
# my $categoryName = "Top Overall";
my $categoryName = "Utilities";

my %categories = (
	"Top Overall"		=> 25204,
	"Books"				=> 25470,
	"Business"			=> 25148,
	"Education"			=> 25156,
	"Entertainment"		=> 25164,
	"Finance"			=> 25172,
	"Healthcare & Fitness"		=> 25188,
	"Lifestyle"			=> 25196,
	"Medical"			=> 26321,
	"Music"				=> 25212,
	"Navigation"		=> 25220,
	"News"				=> 25228,
	"Photography"		=> 25236,
	"Productivity"		=> 25244,
	"Reference"			=> 25252,
	"Social Networking"	=> 25260,
	"Sports"			=> 25268,
	"Travel"			=> 25276,
	"Utilities"			=> 25284,
	"Weather"			=> 25292,
	"All Games"			=> 25180,
	"Games/Action"		=> 26341,
	"Games/Adventure"	=> 26351,
	"Games/Arcade"		=> 26361,
	"Games/Board"		=> 26371,
	"Games/Card"		=> 26381,
	"Games/Casino"		=> 26341,
	"Games/Dice"		=> 26341,
	"Games/Educational"	=> 26411,
	"Games/Family"		=> 26421,
	"Games/Kids"		=> 26431,
	"Games/Music"		=> 26441,
	"Games/Puzzle"		=> 26451,
	"Games/Racing"		=> 26461,
	"Games/Role Playing"=> 26471,
	"Games/Simulation"	=> 26481,
	"Games/Sports"		=> 26491,
	"Games/Strategy"	=> 26501,
	"Games/Trivia"		=> 26511,
	"Games/Word"		=> 26521,
);

# print "$appName Ranking in Category $categoryName:\n";
# getAppRankingInCategoryForUS($appID, $categories{$categoryName});

print "$appName Ranking in Category Top Overall:\n";
getAppRankingInCategoryForWorld($appID, $categories{"Top Overall"});

print "$appName Ranking in Category $categoryName:\n";
getAppRankingInCategoryForWorld($appID, $categories{$categoryName});

#
# Subroutines
#

sub getAppRankingInCategoryForUS {
	my ($appID, $categoryID) = @_;
	my ($country, $storeID);
	$country = "United States";
	$storeID = 143441;
	# $categoryID = 25284;
	fetchAppCategoryRankForCountry($appID, $categoryID, $country, $storeID);
}

sub getAppRankingInCategoryForWorld {
	my ($appID, $categoryID) = @_;
	my %appStore = (
		143441 => "United States",
		143505 => "Argentina",
		143460 => "Australia",
		143446 => "Belgium",
		143503 => "Brazil",
		143455 => "Canada",
		143483 => "Chile",
		143465 => "China",
		143501 => "Colombia",
		143495 => "Costa Rica",
		143494 => "Croatia",
		143489 => "Czech Republic",
		143458 => "Denmark",
		143443 => "Deutschland",
		143506 => "El Salvador",
		143454 => "Espana",
		143447 => "Finland",
		143442 => "France",
		143448 => "Greece",
		143504 => "Guatemala",
		143463 => "Hong Kong",
		143482 => "Hungary",
		143467 => "India",
		143476 => "Indonesia",
		143449 => "Ireland",
		143491 => "Israel",
		143450 => "Italia",
		143466 => "Korea",
		143493 => "Kuwait",
		143497 => "Lebanon",
		143451 => "Luxembourg",
		143473 => "Malaysia",
		143468 => "Mexico",
		143452 => "Nederland",
		143461 => "New Zealand",
		143457 => "Norway",
		143445 => "Osterreich",
		143477 => "Pakistan",
		143485 => "Panama",
		143507 => "Peru",
		143474 => "Phillipines",
		143478 => "Poland",
		143453 => "Portugal",
		143498 => "Qatar",
		143487 => "Romania",
		143469 => "Russia",
		143479 => "Saudi Arabia",
		143459 => "Schweitz/Suisse",
		143464 => "Singapore",
		143496 => "Slovakia",
		143499 => "Slovenia",
		143472 => "South Africa",
		143486 => "Sri Lanka",
		143456 => "Sweden",
		143470 => "Taiwan",
		143475 => "Thailand",
		143480 => "Turkey",
		143481 => "United Arab Emirates",
		143444 => "United Kingdom",
		143502 => "Venezuela",
		143471 => "Vietnam",
		143462 => "Japan"
	);
	while (my ($storeID, $country) = each(%appStore)) {
		# print "$storeID\n";
		# my $country = $appStores{$storeID};
		fetchAppCategoryRankForCountry($appID, $categoryID, $country, $storeID);
	}
}

sub fetchAppCategoryRankForCountry {
	my ($myAppID, $categoryID, $country, $storeID) = @_;
	my ($rank, $found);
	my @top100= fetchTop100InCategory($storeID, $categoryID);
	for (my $i = 0; $i < $#top100; $i += 3) {
		$rank = $top100[$i];
		my $appID = $top100[$i+1];
		my $title = $top100[$i+2];
	    # print $rank . " " . $title . " " . $appID . "\n";
		if ($appID == $myAppID) {
			$found = 1;
			# print $rank . " " . $title . "\n";
			last;
		}
	}
	if ($found) {
		# $rank = "n/a";
		print "$country: $rank\n";
	}
}

sub fetchTop100InCategory {
	my($storeID, $categoryID) = @_;

	# 30 == paid
	# 27 == free
	my $popId = 30;

	my $fetchcmd = qq{curl -s -A "iTunes/4.2 (Macintosh; U; PPC Mac OS X 10.2" -H "X-Apple-Store-Front: $storeID-1" 'http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewTop?id=$categoryID&popId=$popId' };
	# Might need to pipe through these...
	# | gunzip
	# | xmllint --format -

	my $doc = `$fetchcmd`;

	# DEBUG: read from local file
	# my $filename = '/Users/phatblat/tmp/itunes_utilties_top100.xml';
	# open (FILE, "<", $filename)  or  die "Failed to read file $filename : $! \n";
	# my $doc;
	# {
	#     local $/;
	#     $doc = ;
	# }
	# close(FILE);

	my @top100;
	while ($doc =~ m#(\d+)\.\.*?viewSoftware\?id=(\d+).*?draggingName="([^"]+)"#gs) {
		# 1 => rank
		# 2 => app ID
		# 3 => app name
	    # print $1 . " " . $3 . " " . $2 . "\n";
		push(@top100, ($1, $2, $3));
	}

	return @top100;
}
신고
블로그 이미지

*별빛*

UI/UX관련 개발이슈 및 방법을 나누는 곳입니다. Flex/AIR, Silverlight등 pc 기반 iPhone, Android등 smartphone 기반

Creative Commons License
Creative Commons License
애플은 3월 18일 iPhone OS 3.0 preview event에서 다음과 같은 성과를 발표했다.

2008년 기준
판매대수 : 1370만대 -> 목표(1000만대) 대비 37% 초과달성
               iPod touch 및 iPhone 1세대 포함하여 3000만대이상 판매

SDK 다운로드 : 80만회 이상

개발회사 및 개발자 : 5만이상, 이중 60%정도는 이전에 애플플랫폼을 개발한 적이 없음

등록된 App : 약 25,000개, 등록률 96%

총 App 다운로드수 : 약 8억회

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

또한, 3.0에 대한 신규기능이 다음과 같다고 한다.

1.  App 내에서의 결제기능 : 정액제, 추가 스테이지 다운로드시 과금 등이 가능

2. P2P : 대전 게임이 본격적으로 가능

3. Maps : App 내에 구글 맵을 직접 embedding 가능 --> 네비게이션 App등 가능.

4. Push notifications : 서버에서 iphone으로 Alarm 송신이 가능.
                                3rd-party보다 배터리 소모가 적고, Callback과 같이 사용자가 선택시 app이 바로 실행됨
                                예를 들어 ESPN에 특정 팀의 경기에 대해 push notification을 사용하는 경우 그 팀의
                                경기중계 (streaming), 경기 결과 (text)등을 바로 즐길 수 있게 된다.

5. Cut/Copy/Paste : App들간의 cut, copy, paste로 데이터 이동 가능. Undo 지원. (좌우로 흔들면 undo)

6. Multiple Select 지원 : 사진등에서 한번에 여러개를 선택할 수 있고 이것을 copy하여 메일또는 메시지에 paste하여 보낼 수 있다.


7. Landscape : 메일이나 Notes, SMS등에서 Landscape모드를 사용할 수 있다.

8. Messages : Text Messaging (SMS) + MMS

9. Voice Memo

10. CalDAV 지원


11. Dock connector, Bluetooth를 통한 custom protocol 가능:
     --> 3rd-party H/W와 직접 통신 지원 : FM transmitter, 혈압측정등이 가능
     --> standard 및 custom 프로토콜 개발 가능
     --> 이를 통한 다양한 Accessory H/W 개발 가능


12. 1000여개의 새로 추가된 API


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

또다시 애플은 큰 일을 저지르고 말았다.

1.0이 시도, 2.0이 확산이었다면, 3.0은 혁신이라고 할 만하다.

일단, 3.0을 직접 써봐야 겠다.
신고
블로그 이미지

*별빛*

UI/UX관련 개발이슈 및 방법을 나누는 곳입니다. Flex/AIR, Silverlight등 pc 기반 iPhone, Android등 smartphone 기반

Creative Commons License
Creative Commons License

AnyClock 1.0 has been released on Feb.18.2009.

Features:
    - Synchronize with google calendar
    - Show date, time, day of the week
    - Support Backlight

ToDo:
    - Support weather info.
    - Support alarm
    - Support skin
    - Support Multi-language (English, Korea, Japanese)

You can ask anything by writing comment.

AnyClock 1.0.0 이 릴리즈 되었습니다.

특징은 다음과 같습니다.

- 날짜, 시간, 요일 표시
- 구글 캘린더와 연동하여 오늘의 일정 표시
- 백라이트 지원 (화면을 1-2초정도 누른 후 뗀다)


추후 지원예정.

- 날씨정보 연동
- 알람 기능
- 스킨 기능
- 다중 언어 지원 (한,영,일)

궁금한 점은 아래 코멘트에 문의하세요.
신고
블로그 이미지

*별빛*

UI/UX관련 개발이슈 및 방법을 나누는 곳입니다. Flex/AIR, Silverlight등 pc 기반 iPhone, Android등 smartphone 기반

Creative Commons License
Creative Commons License
Objective-C를 사용하다보면, Async event를 사용하여 callback 형식으로 객체를 구성하는 경우가 있다.

이 때, selector를 사용하면 간단하게 해결할 수 있다.

예)
[TestSelector.h]
#import <UIKit/UIKit.h>

interface TestSelector : NSObject {
@private
    id rootDelegate;
    SEL noargTask;
    SEL argTask;
}

- (void)SetNoArg:(id) delegate selector:(SEL)selector;
- (void)SetArg:(id) delegate selector:(SEL)selector;
- (void)DoNoArg;
- (void)DoArg : (NSString*)arg1;
@end

[TestSelector.m]
#import "TestSelector.m"

@implementation TestSelector

-(void)SetNoArg:(id) delegate selector:(SEL)selector
{
    rootDelegate = delegate;
    noargTask = selector;
}

-(void)SetArg:(id) delegate selector:(SEL)selector
{
    rootDelegate = delegate;
    argTask = selector;
}

-(void)DoNoArg
{
    if ([rootDelegate respondsToSelector:noArgTask])
        [rootDelegate performSelector:noArgTask];
}

-(void)DoArg:(NSString *)str
{
    if ([rootDelegate respondsToSelector:argTask])
        [rootDelegate performSelector:argTask withObject:str];
}

다른 곳에서 사용할 때,

TestSelector *test = [[TestSelector alloc] init];
[test SetNoArg:self selector:@selector(MyNoArg)];

-(void)MyNoArg
{
}

실행하면 정해진 조건이 될때, MyNoArg가 실행된다.
신고
블로그 이미지

*별빛*

UI/UX관련 개발이슈 및 방법을 나누는 곳입니다. Flex/AIR, Silverlight등 pc 기반 iPhone, Android등 smartphone 기반

Creative Commons License
Creative Commons License
어플에서 링크된 웹사이트 내용중 "iphone XXX"라는 내용이 있으면 Reject.

예) iPhone Games (X)
     Games for iPhone (O)

신고
블로그 이미지

*별빛*

UI/UX관련 개발이슈 및 방법을 나누는 곳입니다. Flex/AIR, Silverlight등 pc 기반 iPhone, Android등 smartphone 기반

Creative Commons License
Creative Commons License
AppStore에 제출한 Description에 표현된 동작방법과 실제 동작방법이 다른경우 Reject
신고
블로그 이미지

*별빛*

UI/UX관련 개발이슈 및 방법을 나누는 곳입니다. Flex/AIR, Silverlight등 pc 기반 iPhone, Android등 smartphone 기반

Creative Commons License
Creative Commons License

[문제점]

웹서비스와 연동하는 어플의 경우 통신장애시 예외사항 처리가 되어야 한다.

예외사항 처리가 정확하게 되지않는다면 Reject.

[해결방안]
통신장애시 Alert를 띄운다던지, 통신에러 아이콘이 표시된다던지 등의 처리가 필요.
신고
블로그 이미지

*별빛*

UI/UX관련 개발이슈 및 방법을 나누는 곳입니다. Flex/AIR, Silverlight등 pc 기반 iPhone, Android등 smartphone 기반

Creative Commons License
Creative Commons License

[문제점]
기본 제공되는 카메라버튼으로 직접 카메라 촬영뷰를 열면 Reject됨

기본 제공되는 카메라버튼 아이콘은 카메라와 포토앨범중 어느것을 사용할 것인지 선택할 경우에만 사용
(애플 권고사항이라고 함)

[해결방법]
카메라 아이콘을 따로 만들어 적용해야 함
신고
블로그 이미지

*별빛*

UI/UX관련 개발이슈 및 방법을 나누는 곳입니다. Flex/AIR, Silverlight등 pc 기반 iPhone, Android등 smartphone 기반

Creative Commons License
Creative Commons License
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
    }
   
    CGRect contentRect = CGRectMake(80.0, 0.0, 240, 40);
    UILabel *textView = [[UILabel alloc] initWithFrame:contentRect];

textView.text = mytext;
textView.numberOfLines = 2;
textView.textColor = [UIColor grayColor];
textView.font = [UIFont systemFontOfSize:12];
        [cell.contentView addSubview:textView];
[textView release];
신고
블로그 이미지

*별빛*

UI/UX관련 개발이슈 및 방법을 나누는 곳입니다. Flex/AIR, Silverlight등 pc 기반 iPhone, Android등 smartphone 기반

Creative Commons License
Creative Commons License

[User]/라이브러리/Application Support/iPhone Simulator/User
신고
블로그 이미지

*별빛*

UI/UX관련 개발이슈 및 방법을 나누는 곳입니다. Flex/AIR, Silverlight등 pc 기반 iPhone, Android등 smartphone 기반

티스토리 툴바