태터데스크 관리자

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

태터데스크 메시지

저장하였습니다.

#! /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 기반

애플은 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 기반


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 기반

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 기반

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

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

신고
블로그 이미지

*별빛*

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

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

*별빛*

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


[문제점]

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

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

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

*별빛*

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


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

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

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

*별빛*

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

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 기반


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

*별빛*

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

티스토리 툴바