공룡호가 사는 세상 이야기



오펜하이머의 분석가 Yair Reiner는 애플이 10.1 인치 태블릿을 2010년 2월부터 양산에 들어갈 것이라고 말했다. 그는 애플의 공급 체인을 확인한 결과 애플이 2월부터 10.1 인치 멀티터치 태블릿의 양산을 시작할 것이라고 말했다. 또한 애플이 도서 출판사들과 접촉해 그들의 컨텐츠를 배포하는 것에 대한 아주 매력적인 제안을 했다고 말했다.
Reiner에 의하면, 애플은 출판사들에게 이북들의 수익 배분을 30/70으로 제안했고, 이는 아마존의 50/50보다 나은 것이다.
이 분석가는 애플이 태블릿을 3월 말 혹은 4월에 $1,000 가격에 출시할 예정이라고 말했다.

만약 사실이라면, 아이폰 보다 이게 더 탐나는데!

[소스] http://www.slashgear.com/apple-tablet-mass-production-in-february-claims-analyst-serious-kindle-rival-in-the-making-0965560/
[출처] 클리앙 http://is.gd/5hkJF

'일상다반사' 카테고리의 다른 글

정리. 그리고 시작.  (1) 2010.04.29
2010 리노바티오  (0) 2010.01.04
힘든 나날들.  (2) 2009.11.18
작고 귀여운 검은고양이, GatoNegro  (4) 2009.10.12
秒速5センチメートル  (3) 2009.05.19

1. [New File] 메뉴를 이용하여 나오는 창에서 C++ 항목을 선택하세요
    - Cocoa Thouch 에서는 C++ 생성 항목이 없습니다, 아래쪽 Cocoa 항목에서 선택할 수 있습니다.

2. 파일이름을 입력하세요( CppObject.mm)
   - 헤더파일과 함께 프로젝트에 생성됩니다.

3. 클래스를 구현하세요.

 CppObject.h

    class CppObject
    {
           int  m_nMeber;
public:        
       CppObject();
       ~CppObject();
    }

 

 CppObject.mm

   CppObject::CppObject()
   {
       m_nMember = 10;
   }   
   CppObject::~CppObject()
   {
   }

4. 컴파일을 우선 해봅니다.
5. 컴파일 성공해서 빌드까지 무사히 성공되는 것을 볼 수 있습니다.

--------------------------------------
 이제 Object-C에서 직접 사용해 보시다.
--------------------------------------

1. AppDelegate 클래스의 초기화 함수에서 호출해 봅니다. 

 AppDelegate.m

 #include "CppObject.h"
 - (void) somefunction
{
   CppObject* pObj = new CppObject();
  delete pObj;
}

2. 컴파일 합니다.
3. 에러가 발생합니다.
   - Object-C는 파일확장자를 이용하여 언어를 구분하는 것 같았습니다.
   - m 확장자인 경우에는 C++ 코드를 사용할 수 없었습니다.
4. 그래서 AppDelegate.m의 확장자를 mm으로 변경합니다

 AppDelegate.mm

 #include "CppObject.h"
- (void) somefunction
{
   CppObject* pObj = new CppObject();
  delete pObj;
}

5. 다시 빌드합니다
6. 빌드 성공해서 디버깅해봅니다.
   m_pObj->m_nMember 값이 생성자에서 설정한 '10'을 가지고 있음을 알 수 있습니다.
이제부터는 C++를 자유롭게 이용할 수 있다니, 한결 개발이 자유로울 것 같네요. 

----------------------------------------------
Cocoa 객체 사용하기
----------------------------------------------

다음으로, C++ 클래스에서 Cocoa 객체를 사용할 수 있는지 테스트 해보았습니다. 
1. 아래와 같이 Cocoa 객체를 선언하고, 생성합니다. 

 CppObject.h

    class CppObject
   {
       int  m_nMeber;
       NSString*   strTitle;
public:        
       CppObject();
       ~CppObject();
    }

 

 CppObject.mm

   CppObject::CppObject()
   {
       m_nMember = 10;
       strTitle = [NSString stringWithString:@"Hello World"];
   }   

   CppObject::~CppObject()
   {
       [strTitle release];
   } 

2. 빌드 합니다.
3. 위의 테스트 코드에서 breakpoint를 설정하고 값을 확인 또는 생성자에서 값을 확인합니다.
   - strTitle이 "Hello World"를 가지고 있는 것을 볼 수 있습니다. 
이상입니다. 

결론은  C++를 사용하고 싶으면 확장자를 mm으로 사용하는 것 이었습니다. 참 쉽죠~

기존에 가지고 있던 C++ 코드가 있다면, 많은 부분을 재사용할 수 있을것 같네요.
C++를 사용함으로써 iPhone에서 다른 문제가 있는지는 저두 입문한지 얼마안되서 잘 모르겠습니다.
이부분은 저두 사용해 보면서, 추가적인 정보가 있으면 올리도록 하겠습니다.

[출처]맥부기 개발자 모임: 아이펠스님 게시물

일단은 간단하게 기록 해 둡니다. VMWare를 이용합니다.

[기본설정]
1. VMWare leopard 10.5.7 torrent 검색(google) - 최신 XCode가 10.5.6 이상을 요구
   - iDeneb Max OSX 10.5.7 이 검색됨
2. torrent를 이용, 파일을 다운로드 하고, 압축 해제.(약 10G)
3. VMWare 6.5실행, Open메뉴에서 압축 푼 폴더에서 파일 선택
4. VMWare에서 새로운 탭이 생성되는 것을 확인
5. [Resume this virtual machine]을 선택하고 실행(기본 상태가 suspend)

※ 주의사항
- 기본상태가 suspend상태임. power-off하고 부팅하면 정상부팅 안됨
- OSX 내부에서 Shutdown 이나 Log-off 하면 안됨.
> 종료시에도 반드시 suspend 사용.

[네트웍 설정]
기본적인 네트웍이 Host 상태임
VMWare의 suspend 상태에서는 네트웍을 변경할 수 없음

1. 가상머신이 설치된 곳의 iDeneb Mac OSX 10.5.7.vmx 파일을 텍스트 에디터로 오픈
2. ethernet0.connectionType = "nat" 를 추가 (메모리 용량도 추가 가능)
3. OSX를 다시 실행(Resume)
4. 네트웍 설정에서 DHCP로 설정
5. 사파리로 웹 커넥션 테스트
6. 안되면 다시 점검

[XCode]
인터넷이 올바로 연결되었으므로
1. developer.apple.com 에서 XCode를 download & install

※ 주의사항
- OS업그레이드 하면 부팅안됨
- 종료시 반드시 suspend
- 종료 가능한 버전이 10.5.4이나, XCode가 10.5.6을 요구하므로 업그레이드 하면 부팅 안됨.

종료 가능한 정상버전 또는 방법을 알고계신 분 계시면 연락 부탁드립니다.

힘든 나날들.

일상다반사2009. 11. 18. 23:40


싱가폴 출장 다녀온 뒤로 눈코뜰 새 없이 바쁘다.
지난 주 에는 정도가 너무 심해서, 감당이 안 될 정도였다.
짧은 교육이라, 배움의 깊이가 너무 얕아서 국내 구축시에 부딪히는 일이 너무 많다.
확실히, 경험없이 메뉴얼만으로 뭔가를 해낸다는 것은 정말 어렵다.
노력해야 할 시기다. 알지만 어렵다. 아이러니 한 것은 항상 그것이다.


생산지: 칠레 / 빈티지(2007) / KRW 5,000
자기전에 간단히 즐길 와인을 고르러 가서 선택한 와인.
가또는 칠레의 산페드로(san pedro)社 에서 생산하는 와인의 브랜드로 이번엔 레드 까베르네 소비뇽을 구입.
당도는 노말한데, 잘 골랐다 싶다. 특별히 곁들일 음식 없이도 무난하다.
그리고 무엇보다 375ml가 매력적이다.
얼마전에 회사 동기들과 와인을 먹는데, 싼 와인은 질이 떨어진다는 의견이 있었다.
비싼 와인이 그만큼 값어치를 한다는 데에는 동의한다. 하지만 싼 와인이 그 반대일거라는 생각은 버려야 한다.
향이 꽤 풍부하다. 내일 퇴근할 때, 한 병 더 사와야겠다. 소비뇽 블랑도 괜찮을런지.

사진출처: 뭉크님

Taejon 2001 :
본선문제 PKU 1060 ~ 1092  or  ARC 2321 ~ 2328
http://acmicpc-live-archive.uva.es/nuevoportal/region.php?r=as4&year=2001
http://acm.pku.edu.cn/JudgeOnline/searchproblem?field=source&key=Taejon+2001


Taejon 2002 :
본선문제 PKU 1330 ~ 1337
http://acm.pku.edu.cn/JudgeOnline/searchproblem?field=source&key=Taejon+2002


Seoul 2003 :
본선문제 ZJU 2679 ~ 2687
2679 :
http://acm.zju.edu.cn/show_problem.php?pid=2679


Seoul 2004 :
예선문제 Hello-World 44
http://www.hello-world.co.kr/?q=node/110


Seoul 2005 :
예선문제 Hello-World 41 - 43
http://www.hello-world.co.kr/?q=node/104

본선문제 TJU 2501~2510
http://acm.tju.edu.cn/toj/search_process.php?s=Asia+-+Seoul+2005


Seoul 2006 :
예선문제 Hello-World 35 - 40
http://www.hello-world.co.kr/?q=node/98

본선문제 ZJU 3131 ~ 3140
http://acm.zju.edu.cn/onlinejudge/searchProblem.do?contestId=1&titlefrom=0&authorfrom=0&sourcefrom=0&query=Seoul%202006


Seoul 2007 :
본선문제 ARC 3900~3909
http://acmicpc-live-archive.uva.es/nuevoportal/region.php?r=as4&year=2007


Seoul 2008 :


원본 출처 : wookayin.com


Advanced Copy Manager V14 교육 출장.
FAPL (싱가폴) 31.Aug ~ 06.Sep



'공장 이야기' 카테고리의 다른 글

Google 입사 시험 문제  (1) 2009.01.14

종종 어플리케이션들은 시작할때 솔라리스의 버전을 체크 합니다. 필자는 최근에 그러한 어플리케이션을 설치 하였습니다. 어플리케이션이 솔라리스의 구버전에서만 인증되었는지에 대해서는 알 수 없었습니다. 또한, 어플리케이션의 인스톨러는 OS 의 버전을 확인할 만큼 훌륭하지 않았었습니다!

그러므로 결국 저는 제 시간을 낭비한 걸까요? 아닙니다! 'dtrace' 가 저를 구원해 주었습니다. 필자는 dtrace 스크립트를 이용하였습니다.

1.실행 파일을 'fubar' 라고 가정해 봅시다. fubar 가 어떻게 솔라리스 버전을 가져오는지를 살펴 봅시다. 결과를 통해서 uname() 시스템 콜임을 알았습니다.

$ truss ./fubar 2>&1 | grep uname
uname(0xFFBFF898)                               = 1

2.'fubar' 가 기대하고 있는 솔라리스 버전을 살펴 봅시다.
$ strings fubar | grep 'SunOS '
SunOS 5.5.1
SunOS 5.6
SunOS 5.7
SunOS 5.8
SunOS 5.7 Generic_106541-05 sun4u

필자가 이것을 이전에 알았다면 아마 솔라리스8 마이그레이션 지원 환경에 설치하였을 것입니다.

3.아래가 'fubar' 를 속이기 위한 dtrace 스크립트 입니다. 'fubar' 는 오직 "SunOS" 와 "5.5.1" 만을 신경 씁니다. 그러므로 솔라리스가 1986년도에 8086에서 돌아가는 것이라도 상관 없습니다.
$ cat unameSol8.d
#!/usr/sbin/dtrace -s
#pragma D option destructive
syscall::uname:entry
/execname == "fubar"/
{
        self->addr = arg0;
}

syscall::uname:return
/execname == "fubar"/
{
        copyoutstr("SunOS", self->addr, 257);
        copyoutstr("PowerPC", self->addr+257, 257);
        copyoutstr("5.5.1", self->addr+(257*2), 257);
        copyoutstr("gate:1996-12-01", self->addr+(257*3), 257);
        copyoutstr("PPC", self->addr+(257*4), 257);
}


필자:
Katsumi Inoue

이 글의 영문 원본은
Spoofing Solaris version using dtrace
에서 보실 수 있습니다.

네트웍 인프라가 너무나 좋아지면서, 대충 설계하고 무거운 이미지를 덕지덕지 붙여놓고, 각종 스크립트들로 도배를 해 놓아도, 요즈음은 큰 불편함이 없이 웹서핑이 가능하다. 그러나, Birds-Eye의 2007년도 Broadband Statistics에 따르면 미국 인구의 25%는 인터넷을 사용하지 않고 있으며, 53%는 광대역을 사용하고 있고, 21%는 아직까지도 전화 접속을 사용하고 있다.
내가 설계한 웹 페이지는 www를 통해 전 세계로 공유가 되는데, 광대역 연결을 사용하는 사람들만 고려할 수만은 없다.
developerWorks에 소개되었는데,

1. 좋은 구조 사용하기
2. 레이아웃을 오버로드 하지 않기
3. 이미지로 텍스트 표시하지 않기
4. 쿠키 사용 검사하기
5. 필요없는 JavaScript 코드를 포함하지 않고 가능한 한 외부화 하기
6. 되도록이면 테이블 사용하지 않기
7. 불필요한 항목 제거하기
8. HTTP 압축을 사용하고 항상 소문자 div 및 클래스 이름 사용하기
9. 이미지 크기 설정
10. 스크립트 로드를 지연시키기
11. CSS파일 최적화하기
12. 컨텐츠 배포 네트워크 사용하기
13. 자산 도메인을 이용하여 연결 수 늘리기
14. Google Gear 사용하기
15. PNG 이미지 사용하기
16. 짧고 적절하기 Ajax 호출 유지하기
17. 핵심 Ajax 호출을 만들고 클라이언트 데이터를 로컬에서 처리하기
18. 코드 테스트
19. 사이트 코드 분석
20. JSLint를 사용하여 JavaScript코드의 오류 또는 잘못된 코드 검사하기
21. 분리된 파일 및 누락된 이미지 검사
22. YSlow 확장
23. YSlow를 사용하여 페이지 분석

잊지말아야 할 원칙들. 기억해 두자.
http://www.ibm.com/developerworks/kr/library/wa-speedweb/index.html











秒速5センチメートル.
이걸 누가 내게 주었더라. 애니메이션이라고는 알라딘과 라이온킹 밖에 모르는 내가, 이 것을 사고 싶어지게 될 줄은.

'일상다반사' 카테고리의 다른 글

힘든 나날들.  (2) 2009.11.18
작고 귀여운 검은고양이, GatoNegro  (4) 2009.10.12
너무나도 멋진 4족 보행 로봇  (0) 2009.04.18
프로그래머와 예술가의 양성  (3) 2009.03.06
그리하여 당신은 누구신가요  (0) 2009.01.28