2007 mac mini에서 가끔 오디오 디바이스가 사라지는 문제가 있었다.
가끔은 정상 동작 하는 경우도 있다.
소리가 나지 않을때는 내장 오디오 디바이스 자체가 없다.
어떤 경우에는 DVD-ROM도 인식 못하는 경우도 있다.
이런 경우는 CD를 삽입 했다가 꺼내지 못하는 상황도 발생한다.
여러 사이트에 구글링을 해보니
2007 mac mini에 문제가 아니라
OSX 10.7.5의 문제 인듯한 글이 보인다.
라이온 마지막 버젼에 문제
결국 10.7.4 버젼을 구해서 다운그레이드 하였다.
설치되는 상태 그래도 다운그레이드를 하여 모든 동작이 정상 동작임을 확인 하였는데
사파리가 동작 하지 않는다.
결국 OS X 10.7.4로 다운그레이드 하고 크롬 브라우저려를 설치 하였다.
어린이들 미디어 플레이어로 TV에 붙어 있는 맥미니 2007의 생명을 연장 시켜 주었다.
2015년 2월 16일 월요일
2015년 2월 6일 금요일
Xcode 6.1.1 버그 삽질기
teacher 버젼과
parent 버전을 개발 해야 하는데
두앱은 공통 코드가 너무 많다.
해서 일단 먼저 개발된 teacher 버젼의 프로젝트를 완성 시킨 다음
duplicate target 을 해서
(무료 유료 버젼을 하나로 만들 때 주로 하는 방법, lite 버젼 pro 버젼 등...)
작업을 하려 했다.
물론 provisioning profile도 teacher 벼젼과 parent 버젼은 두가지로 준비 되어있었다.
허나 무한 resolve provisioning을 시도한다.
머가 잘못되었는지 계속 검색에 검색을 해도 답이 없다.
해서 provisioning profile이 잘못되었나 그냥 생으로 프로젝트를 만들어서 Team 항목에
developer 계정을 주니 처음에는 provisioning 못하고 어쩌고 하더니
성공 한다.
그런다음 duplicate target을 프로젝트에서 해보니 거기도 성공한다.
결국 Xcode 버그 갔다.
해결 법은 빈프로젝트를 프로덕트 이름을 갖게 하여 provisioning을 xcode가 제너레이트 하게
해서 성공 시킨 다음 duplicate target으로 만든 프로젝트를 resolve 하면 되는 듯 하다.
parent 버전을 개발 해야 하는데
두앱은 공통 코드가 너무 많다.
해서 일단 먼저 개발된 teacher 버젼의 프로젝트를 완성 시킨 다음
duplicate target 을 해서
(무료 유료 버젼을 하나로 만들 때 주로 하는 방법, lite 버젼 pro 버젼 등...)
작업을 하려 했다.
물론 provisioning profile도 teacher 벼젼과 parent 버젼은 두가지로 준비 되어있었다.
허나 무한 resolve provisioning을 시도한다.
머가 잘못되었는지 계속 검색에 검색을 해도 답이 없다.
해서 provisioning profile이 잘못되었나 그냥 생으로 프로젝트를 만들어서 Team 항목에
developer 계정을 주니 처음에는 provisioning 못하고 어쩌고 하더니
성공 한다.
그런다음 duplicate target을 프로젝트에서 해보니 거기도 성공한다.
결국 Xcode 버그 갔다.
해결 법은 빈프로젝트를 프로덕트 이름을 갖게 하여 provisioning을 xcode가 제너레이트 하게
해서 성공 시킨 다음 duplicate target으로 만든 프로젝트를 resolve 하면 되는 듯 하다.
2015년 2월 2일 월요일
iOS 팁 여러개( sqlite, html, adhoc distribute, NSNotificationCenter, UIColor rgb
sqlite 테이블 리스트 보기
select name from sqllite_master where type ='table';html text를 lalbel에 보이게 하려면
NSString *htmlString =[NSString stringWithFormat:@"%@", [[self.arrMessageData objectAtIndex:indexPath.row] objectAtIndex:indexOfMessage]];NSAttributedString *attributedString = [[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];
cell.messageLabel.attributedText = attributedString;
html을 일반 plain text로 변경 하려면
- (NSString *)flattenHTML:(NSString *)html {NSScanner *theScanner;
NSString *text = nil;
theScanner = [NSScanner scannerWithString:html];
while ([theScanner isAtEnd] == NO) {
[theScanner scanUpToString:@"<" intoString:NULL] ;
[theScanner scanUpToString:@">" intoString:&text] ;
html = [html stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"%@>", text] withString:@""];
}
html = [html stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
return html;
}
adhoc 배포
http://blog.saltfactory.net/242드랍박스에 디렉토리를 만들고
거기에 ipa 파일 아카이브 할때 adhoc으로 한다.
물론 이에 필요한 provisioning이 필요 하다.
이렇게 해서 생성한 ipa파일과
.plist 파일이 필요 하다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>https://드랍박스 .ipa링크를 생성해서 붙인다.</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.ssomon.InaschoolTeacher</string>
<key>bundle-version</key>
<string>1.0</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>InaschoolTeacher</string>
</dict>
</dict>
</array>
</dict>
</plist>
<a href="itms-services://?action=download-manifest&url=드랍박스 plist의 링크를 붙여서 html
파일을 만든다.
www.ropbox.com -> dl.dropboxusercontent.com 으로 변경 한다.
객체간 자료 전송
http://blog.naver.com/iss6388/10183297308--> 노티가 왓을때 다른 viewController에게 알리는 코드를 응용 할수 있다.
NSNotificationCenter postNotificationName으로 전송 (NSDictionary를 전송하고)
이를 다른 ViewController에서 받아서 처리 하도록 한다.
전송 예제
[[NSNotificationCenter defaultCenter]
postNotificationName:@"UIApplicationDidReceiveRemoteNotification"
object:self
userInfo:nil];
받는곳
viewDidLoad에서 등록
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(didReceiveRemoteNotification:)
name:@"UIApplicationDidReceiveRemoteNotification"
object:nil];
viewDidUnload에서 해제
[[NSNotificationCenter defaultCenter]
removeObserver:self
name:@"UIApplicationDidReceiveRemoteNotification"
object:nil];
이렇게 하면 UiApplicationDidReceiveRemoteNotification이 호출 된다.
rgb 칼라를 UICrolro 매크로
http://winplz.tistory.com/entry/UIColor-간단히-Macro로-사용하기
#define RGB(r, g, b) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1]
cell.textLabel.textColor = RGB(0x60,0x60,0x60);
2015년 1월 27일 화요일
iOS multi target code reuse
https://www.itexico.com/blog/ios-mobile-development-using-xcode-targets-to-reuse-the-code
예전에 앱을 처음 만들던 시기에는 광고를 붙이고 무료 앱
광고가 없는 1$ 유료 앱을 이렇게 항상 두개를 만들었다.
자연스럽게 하나의 코드로 #if ~ #else ~ #end
를 하면서 무료 앱인 경우 추가로 iAD, Cauly 코드를 추가 했다.
당연히 앱스토어에 다르게 올라가야 하므로 번들provisioning도 두개 필요 하다.
지금은 너무 오래되어서 이런 절차가 잘 기억이 나지 않아 찾아 보니 잘 정리가 되어 있다.
최신 Xcode에서 이러한 작업에 대한 자세한 절차를 기술해 놓은 페이지 링크를 걸어둔다.
이러한 작업은 유료 무료 뿐만 아니라 비슷한 앱을 다른 앱으로 만들때 유용하다.
예전에 앱을 처음 만들던 시기에는 광고를 붙이고 무료 앱
광고가 없는 1$ 유료 앱을 이렇게 항상 두개를 만들었다.
자연스럽게 하나의 코드로 #if ~ #else ~ #end
를 하면서 무료 앱인 경우 추가로 iAD, Cauly 코드를 추가 했다.
당연히 앱스토어에 다르게 올라가야 하므로 번들provisioning도 두개 필요 하다.
지금은 너무 오래되어서 이런 절차가 잘 기억이 나지 않아 찾아 보니 잘 정리가 되어 있다.
최신 Xcode에서 이러한 작업에 대한 자세한 절차를 기술해 놓은 페이지 링크를 걸어둔다.
이러한 작업은 유료 무료 뿐만 아니라 비슷한 앱을 다른 앱으로 만들때 유용하다.
2015년 1월 23일 금요일
sqlite를 iOS app에 이용하기 위한 방법 정리
알바 하며 얻은 내공들을 기록 한다.
알바로 하면 급하게 지식을 습득한다.
그냥 취미 삼아 할 때와 다르게 일정과 시간에 쪼들리며 결국은 해답을 찾게 되어 있다.
자동으로 증가 하며 insert 한다.
sqlite api의 리턴 값을 BOOL 변수로 받아 오류가 있다.
int로 리턴 값을 받아야 올바르게 동작 한다.
알바로 하면 급하게 지식을 습득한다.
그냥 취미 삼아 할 때와 다르게 일정과 시간에 쪼들리며 결국은 해답을 찾게 되어 있다.
sqlite 스키마 보기
SELECT sql FROM sqlite_master WHERE name = 'tablename';sqlite 프롬프트 나가기
.exitprimary key
id integer primary key 라고 만들고 데이터를 넣지 않고 insert 하면자동으로 증가 하며 insert 한다.
tableview custom cell 작업
http://www.ioscreator.com/tutorials/customize-tableviewcells-with-storyboardssqlite와 tableview 연동 샘플 코드
http://www.appcoda.com/sqlite-database-ios-app-tutorial/sqlite api의 리턴 값을 BOOL 변수로 받아 오류가 있다.
int로 리턴 값을 받아야 올바르게 동작 한다.
2015년 1월 13일 화요일
최근 iOS 개발을 하면서 알게된 tip들 기록
한 동안 iOS 개발에 손을 놓고 있다가 하려 하니 강산도 바뀌고 코드도 바뀌고
storyBoard도 사용해야 하고 어질 어질 하다. @.@
1. WebView에서 back 버튼을 만들고 back을 하다가 최초의 페이지에서 back 버튼을 누르면
이전 ViewController로 가려면
==>
- (IBAction)goBack:(id)sender {
if ([ webView canGoBack])
{
[webView goBack];
}
else
{
[self.navigationController popViewControllerAnimated:YES];
}
}
2. 조건에 따라 여러 segue중에 선택하여 viweController 전환
==>
if ( /* condition */ )
{
[self performSegueWithIdentifier:@"XXXSegue" sender:sender];
}
else
{
[self performSegueWithIdentifier:@"YYYYSegue" sender:sender];
}
storyBoard도 사용해야 하고 어질 어질 하다. @.@
1. WebView에서 back 버튼을 만들고 back을 하다가 최초의 페이지에서 back 버튼을 누르면
이전 ViewController로 가려면
==>
- (IBAction)goBack:(id)sender {
if ([ webView canGoBack])
{
[webView goBack];
}
else
{
[self.navigationController popViewControllerAnimated:YES];
}
}
2. 조건에 따라 여러 segue중에 선택하여 viweController 전환
==>
if ( /* condition */ )
{
[self performSegueWithIdentifier:@"XXXSegue" sender:sender];
}
else
{
[self performSegueWithIdentifier:@"YYYYSegue" sender:sender];
}
3. 숫자를 문자열로 바꾸는 기존 코드는 이제 동작하지 않는다.
NSstring * str = [NSString stringWithFormat:@"%d", num];
==>
NSString * str = [[NSNumber numberWithInt:num] stringValue];
2015년 1월 12일 월요일
iOS altertView가 아닌 커스텀 팝업 view 만들기
스토리 보드를 처음으로 사용하다 보니 삽질을 하고 있다.
popover는 iPad에서만 되는 것으로 보인다.
iPhone app은 모든 viewController가 전체 화면으로 구현 해야 하는 것 같다.
storyboard에 어떻게 view 만을 정의 하고 그 것을 현재 viewController에 view에 추가 하느냐?
결론은 안되더라
현재 알바로 의뢰 받아 작업중인 앱에 디자인 가이드에서는 표준 alertView가 아닌
팝업 창이 디자인 되어 있으며
이 팝업 창이 뜰때 기존에 보이던 viewController의 전체 view는 dark색이 65% alpha 값으로
가려져야 하는게 미션이다.
구현 방법은 정답은 아닐수 잇으며 여러 삽질에 삽질 끝에 구현한 방법이다.
스토리 보드에 추가 하려는 viewController의 디자인을 마무리 한다.
스토리 보드에 새로운 viewController를 추가 한 다음 어떠한 방법으로도 iphone에서는
pop을 할수 없음을 깨달았다. 그러므로 바로 포기하고 새파일을 만든다.
오래된 방법인 xib를 추가한다.
디자인을 한다.
포인트는 View를 추가해서 투명도 65%에 검정 뷰를 하나 추가 한다.
소스를 추가 해서 NotiView라는 클래스 파일과 헤더 파일을 작성 한다.
xib를 초기화 하는 init 코드가 필요 하다.
닫기 버튼을 구현 하였다면 버튼을 IBAction을 연결 하고 다 음과 같은 코드로
뷰를 보이지 않게 할 수 있다.
스토리 보드로 돌아 와서 추가하려는 viewController에 view를 추가 하고 가장 하위 바닥에
viwe를 넣는다.
그리고 그 view의 클래스 파일을 NotiView로 연결 한다.
Hidden을 YES로 설정 하고 NotiView 를 IBOutlet으로 연결 하여 코드에서 Hidden을 NO
로 하여 팝업 창이 나타나는 효과를 내준다.
popover는 iPad에서만 되는 것으로 보인다.
iPhone app은 모든 viewController가 전체 화면으로 구현 해야 하는 것 같다.
storyboard에 어떻게 view 만을 정의 하고 그 것을 현재 viewController에 view에 추가 하느냐?
결론은 안되더라
현재 알바로 의뢰 받아 작업중인 앱에 디자인 가이드에서는 표준 alertView가 아닌
팝업 창이 디자인 되어 있으며
이 팝업 창이 뜰때 기존에 보이던 viewController의 전체 view는 dark색이 65% alpha 값으로
가려져야 하는게 미션이다.
구현 방법은 정답은 아닐수 잇으며 여러 삽질에 삽질 끝에 구현한 방법이다.
스토리 보드에 추가 하려는 viewController의 디자인을 마무리 한다.
스토리 보드에 새로운 viewController를 추가 한 다음 어떠한 방법으로도 iphone에서는
pop을 할수 없음을 깨달았다. 그러므로 바로 포기하고 새파일을 만든다.
오래된 방법인 xib를 추가한다.
디자인을 한다.
포인트는 View를 추가해서 투명도 65%에 검정 뷰를 하나 추가 한다.
소스를 추가 해서 NotiView라는 클래스 파일과 헤더 파일을 작성 한다.
xib를 초기화 하는 init 코드가 필요 하다.
- (id) initWithCoder:(NSCoder *)aDecoder {
if(self = [super initWithCoder:aDecoder]) {
[[NSBundle mainBundle] loadNibNamed:@"NotiView" owner:self options:nil];
[self addSubview:view];
}
return self;
}
뷰를 보이지 않게 할 수 있다.
#pragma -IB Action -
- (IBAction)CloseButtonClick:(id)sender {
[self setHidden:YES];
}
스토리 보드로 돌아 와서 추가하려는 viewController에 view를 추가 하고 가장 하위 바닥에
viwe를 넣는다.
그리고 그 view의 클래스 파일을 NotiView로 연결 한다.
Hidden을 YES로 설정 하고 NotiView 를 IBOutlet으로 연결 하여 코드에서 Hidden을 NO
로 하여 팝업 창이 나타나는 효과를 내준다.
피드 구독하기:
글 (Atom)