iOS 5.0 / iCloud 업데이트에 맞춰 XCode 4.2 업데이트가 출시되었습니다.



- Includes SDKs for Mac OS X 10.7 Lion and iOS 5
- Storyboards let you design multiple iOS screens, and define the segues among them
- Automatic Reference Counting (ARC) saves you from manually managing retain/release
- iCloud entitlements are automatically enabled for Mac and iOS apps
- OpenGL ES Debugger graphically analyzes your OpenGL scene directly within the IDE
- Apple LLVM compiler supports C++11 features and the LLVM libc++ standard library
- Older iOS Simulators and device debugging symbols are downloaded on-demand

Enhancements and fixes in previous Xcode updates:

- Interface Builder support for Auto Layout and new Aqua controls such as NSPopover
- Full screen support in workspace, project, and organizer windows
- Project editor can validate and resolve out of date build settings
- Behaviors can be customized and assigned to unique key bindings
- Source control enhancements to pushing, pulling, and management of remote servers
- Assistant editor support for display of generated assembly and preprocessed output
- Additional bug fixes and stability improvements

일단 iOS 5 / OS X 10.7 지원이 가장 큽니다. 또한 Storyboard기능을 이용할 수 있고, ARC(Auto Reference Counting)을 활용할 수 있습니다.

http://itunes.apple.com/kr/app/xcode/id448457090?mt=12

Mac App Store에서 무료로 업데이트 받을 수 있습니다. 
Posted by Parker Falcon

iPhone 3Gs
http://appldnld.apple.com/iPhone4/041-8356.20111012.SQRDT/iPhone2,1_5.0_9A334_Restore.ipsw

 
iPhone 4
GSM http://appldnld.apple.com/iPhone4/041-8358.20111012.FFc34/iPhone3,1_5.0_9A334_Restore.ipsw

 
iPhone 4s
http://appldnld.apple.com/iPhone4/041-1317.20111012.UVTgr/iPhone4,1_5.0_9A334_Restore.ipsw

 
iPod Touch 3rd Gen.
http://appldnld.apple.com/iPhone4/061-8360.20111012.New3w/iPod3,1_5.0_9A334_Restore.ipsw

 
iPod Touch 4th Gen.
http://appldnld.apple.com/iPhone4/061-9622.20111012.Evry3/iPod4,1_5.0_9A334_Restore.ipsw

 
iPad 1
http://appldnld.apple.com/iPhone4/041-8357.20111012.DTOrM/iPad1,1_5.0_9A334_Restore.ipsw

 
iPad 2(Wi-Fi)
http://appldnld.apple.com/iPhone4/041-9618.20111012.Zxb22/iPad2,1_5.0_9A334_Restore.ipsw

 
iPad 2(GSM) http://appldnld.apple.com/iPhone4/041-9619.20111012.y34Nx/iPad2,2_5.0_9A334_Restore.ipsw

 
AppleTV2,1
http://appldnld.apple.com/AppleTV/0619621.20111012.Vgijx/AppleTV2,1_4.4_9A334v_Restore.ipsw
Posted by Parker Falcon
애플에서 저번주에 발표한 Find My Friends 앱이 출시되었습니다.

iOS 5.0이 설치된 장비로 iCloud.com 을 방문하거나 아래 링크에서 다운 받을 수 있습니다.
나의 친구 찾기 설치
 


 

무료로 제공되고, Universal App으로 출시되었습니다.

 

설치 완료한 화면입니다. 한글로는 "친구 찾기"라고 뜹니다.

 

로그인 화면이 뜹니다. Apple ID를 이용하여 로그인 가능합니다.

 
친구 찾기 화면입니다. 지금은 친구가 등록되지 않았지만, 친구가 등록되면 다른 친구들의 위치를 확인할 수 있습니다.


 
친구들과 특정한 이벤트를 만들어 일정 기간동안 임시적으로 위치를 공유할 수 있습니다.

앞으로 iPhone등을 사용하는 친구들과 위치를 공유하는데 가장 편리한 방법이 될것으로 보입니다.

 
Posted by Parker Falcon
맥용 native 트위터 클라이언트 YoruFukurou 가 2.65 업데이트를 출시했습니다.



다른 기능 보다는 Growl 1.3 지원을 한참 기다렸었습니다. 아직 Mac App Store에는 업데이트가 뜨지 않았지만, 곧 뜰것으로 보입니다.


정확한 내용은 아래 링크에서 확인 가능합니다.
http://aki-null.net/yf/distribution/changelog_sl_en.html 
Posted by Parker Falcon


레지스터리 설정 문제입니다. 어떤 프로그램에 의해 수정되었는지는 정확하지 않지만, 해당 경로를 수정하면 해결 가능합니다.
 
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer 이나
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer  을 참고합니다.

NoChangeStartMenu 값 : 1이면 시작메뉴 아이콘을 수정할 수 없습니다.
NoClose / NoLogOff 값 : 1이면 시스템 종료가 사라집니다.

참고 : http://support.microsoft.com/kb/292504/ko 
Posted by Parker Falcon



이부분에 추가되 항목이 저장되는 곳은 레지스터리

관련 레지스터리 경로 : HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\StartPage\Favorites
다만 Binary로 되어있어 간단하게 내용 수정은 어렵습니다.
Posted by Parker Falcon
0. Perl, HTML::TreeBuilder::XPath, Firefox 및 Firebug addon 이 필요합니다.

1. Perl을 이용해 HTML파일의 DOM 접근이 가능합니다.
HTML::TreeBuilder::XPath 을 이용하면 매우 쉽게 이용할 수 있습니다.

2.  링크 참고
http://search.cpan.org/~mirod/HTML-TreeBuilder-XPath-0.14/lib/HTML/TreeBuilder/XPath.pm

여기에서 매뉴얼 확인 가능합니다.

3. XPath 찾기
Firefox에서 원하는 객체의 오른쪽 클릭하여 요소 검사를 선택합니다.
아래 Firebug창에서 해당 객체가 선택됩니다.
오른 클릭하여 XPath 복사를 선택하면 클립보드에 복사됩니다.

4. 활용 시 주의사항
Firefox 아래 Dom Inspector는 직접 HTML을 파싱하여 이상적인 구조로 만든 것 입니다. 즉 HTML상에는 Table 밑에 tbody가 없는 소스가 많은데, Firefox는 해당 tbody를 생성합니다. 만약 그대로 사용해서 정상적으로 작동이 안된다면, tbody 처럼 실제 소스랑 다른 부분을 확인해봅니다.
 
Posted by Parker Falcon
Apple의 데스크탑 운영체제인 OS X Lion에서 기본 휠 방향이 반대로 바뀌었습니다. 설정에서 기존 방향을 유지하도록 바꿀 수 있지만, 새로운 방향에 적응하여 사용하는 경우도 있습니다. 하지만 Windows를 같이 사용 하는 경우에는 휠 방향이 섞이게 되어 더욱 혼란스럽게 됩니다. 몇 번을 찾아보다가 비슷한 기능을 찾는 사용자들이 많은것을 확인했고, 다행히 영어로 작성된 해결 방법을 발견했습니다.


원본 링크 : http://www.redmondpie.com/get-mac-os-x-lion-style-reverse-scrolling-on-windows-7-how-to-tutorial/
더 원본 링크 : http://www.howtogeek.com/57542/how-to-get-the-worst-os-x-lion-feature-in-windows-reverse-scrolling/

아쉽게도 휠 이외의 다른 조합키 (Ctrl, Alt, Shift)와의 내용은 들어있지 않았습니다. 이 부분을 추가해서 새로 올립니다.

방법은 간단합니다. AutoHotKey라는 프로그램을 설치한 다음 휠 방향을 반대로 하는 스크립트를 실행 시키면 됩니다.

1. AutoHotKey 를 설치합니다.

가벼운 스크립트 프로그램입니다. 설치가 되어있지 않다면 다운 받으시면 됩니다.
 http://www.autohotkey.com/download/  에서 받으실 수 있습니다. Basic 버전이면 무난합니다.

2. 첨부 파일의 스크립트를 실행합니다. 
 

3. 사용합니다.



만약 Windows가 실행될 때 같이 실행을 원한다면 아래 방법을 참고합니다.

1. 방금 받은 ahk 파일을 오른클릭하여 메뉴에서 바로가기 만들기를 선택합니다. 

2. 생성된 바로가기 아이콘을 아래 경로에 넣습니다.

C:\Documents and Settings\[사용자명]\시작 메뉴\프로그램\시작프로그램

Posted by Parker Falcon










델파이에서 구현해보려고 DLL용 .h 파일을 .pas로 만들어보았다.
원본 SDK는 
http://www.inexio.co.kr/07_download/download02.html

에서 받을 수 있으며 ( http://www.inexio.co.kr/pdf/sdk/Nexio_SDK_v2000.zip ) 


기본적으로는 작동되는데, 몇 가지는 의심스럽긴 하다.


아무튼 필요하시면 그냥 쓰시고, 이상해서 고쳐쓰시거든 댓글로 알려주시면 감사하겠습니다.



/////////////////////////////////////////////////////////////////////////////
//
// file inexio_multi.h
//
//
//  Version 1.10
//
//  Copyright (C) 2005-  NEXIO Co., Ltd. All rights reserved
//
// Homepage : http://www.inexio.co.kr
//
/////////////////////////////////////////////////////////////////////////////




unit NexioPlug;

interface

uses Windows, Classes;

const
  MPT_TOUCH_UP = 0;
  MPT_TOUCH_DOWN = 1;
  MPT_TOUCH_MOVE = 2;

  MTOUCH_TOUCH_UP = (MPT_TOUCH_UP); //Touch Up   OutputMulti dwstate
  MTOUCH_TOUCH_DOWN = (MPT_TOUCH_DOWN); //Touch Down OutputMulti dwstate
  MTOUCH_TOUCH_MOVE = (MPT_TOUCH_MOVE); //Touch Move OutputMulti dwstate

  // MPointElement wStatus
  INACTIVE_COORDINATE = $0000;
  ACTIVE_COORDINATE = $0001;
  IMAGE_COORDINATE = $0002;
  REJECTED_COORDINATE = $0003;

  MAX_MPOINTELEMENT = 100;
  MAX_MPOINTELEMENT_V2 = 98;

  EVENT_ARRIVED = 0; //Event arrived
  TIME_WAS_OUT = 1; //Wait time was out
  UNKNOWN_ERR = 2; //Unknown error object

  NEXIO_ROTATE_0 = 0;
  NEXIO_ROTATE_L90 = 90;
  NEXIO_ROTATE_R90 = 270;
  NEXIO_ROTATE_180 = 180;
  NEXIO_ROTATE_360 = 360;
  NEXIO_ROTATE_MIRROR_V = 1;
  NEXIO_ROTATE_MIRROR_H = 2;
type
  TMPointElement = record
    // Screen Coordinate (x,y) state
    // INACTIVE_COORDINATE, ACTIVE_COORDINATE, IMAGE_COORDINATE
    wStatus: WORD;
    wIndex: WORD; // ID of point

    // Pressed touch point width at screen coordinate (x,y)
    wXLength: WORD;
    // Pressed touch point height at screen coordinate (x,y)
    wYLength: WORD;

    wXWidth: WORD; // Reserved
    wYWidth: WORD; // Reserved

    // Pressed touch x point  at screen coordinate (x,y)
    wX: WORD;
    // Pressed touch y point  at screen coordinate (x,y)
    wY: WORD;

    wXStart: WORD;   // Reserved
    wXEnd: WORD;     // Reserved

    wYStart: WORD;   // Reserved
    wYEnd: WORD;     // Reserved
  end;




  POutputMulti = ^TOutputMulti;
  TOutputMulti = record
    // Multi-touch state
    // MPT_TOUCH_UP, MPT_TOUCH_DOWN, MPT_TOUCH_MOVE
    dwState : DWORD;

    // MAX( mX, mY)
    dwNumber : DWORD;
    // Total X coordinate count
    mX : DWORD;
    // Total Y coordinate count
    mY : DWORD;

    case Integer of
      0: (mPpointsOld : Array [0 .. MAX_MPOINTELEMENT - 1] of Array [0 .. MAX_MPOINTELEMENT - 1] of TMPointElement);
      1: (
//        mPpoints : Array[0 .. MAX_MPOINTELEMENT_V2 - 1] of Array [0 .. MAX_MPOINTELEMENT - 1] of TMPointElement;
        mPpoints : Array[0 .. MAX_MPOINTELEMENT - 1] of Array [0 .. MAX_MPOINTELEMENT_V2 - 1] of TMPointElement;
        sUsbID : Array[0 .. SizeOf(TMPointElement) * MAX_MPOINTELEMENT - 1] of char;

        wUsbID : WORD;
        wMonID : WORD;
        dwRESERVED00 : Array[0 .. 4] of DWORD;
        Reserved : Array[0 .. MAX_MPOINTELEMENT-2-1] of TMPointElement;
        dwRESERVED01 : Array[0 .. 5] of DWORD;
      );
  end;




//////////////////////////////////////////////////////////////////////////
//
// Function:    OpenNexioMulti
//
// Description:
//  Open Event of NEXIO Multi-Point TouchScreen coordinate
//
// Returns:
//  TRUE if Event Open successful, FALSE if Event fails....
//
//////////////////////////////////////////////////////////////////////////
//extern "C" __declspec(dllexport)
//BOOL __stdcall OpenNexioMulti();

function OpenNexioMulti: Boolean; stdcall; external 'MultiDll.dll' name 'OpenNexioMulti';




//////////////////////////////////////////////////////////////////////////
//
// Function:    WaitNexioMulti
//
// Description:
//  Wait Event and Touch Coordinate Output
//
// Input :
// nTime : [in] event wait time :: nTime is millisecond (INFINITE wait event infinite)
// Output :
// pBuffer : [out] pointer of touch coordinate
//
// Returns:
// EVENTARRIVED : Event arrived
// TIMEWASOUT : Wait time was out
// UNKNOWNERR : Unknown error object
//
//////////////////////////////////////////////////////////////////////////

//extern "C" __declspec(dllexport)
//int __stdcall WaitNexioMulti(DWORD nTime, OutputMulti *pBuffer);

function WaitNexioMulti(nTime: DWORD; pBuffer: POutputMulti): Integer; stdcall;  external 'MultiDll.dll' name 'WaitNexioMulti';

//////////////////////////////////////////////////////////////////////////
//
// Function:    CloseNexioMulti
//
// Description:
//  Close Event of NEXIO Multi-Point TouchScreen coordinate
//
//////////////////////////////////////////////////////////////////////////
//extern "C" __declspec(dllexport)
//void __stdcall CloseNexioMulti();
procedure CloseNexioMulti; stdcall; external 'MultiDll.dll' name 'CloseNexioMulti';





//////////////////////////////////////////////////////////////////////////
//
// Function:    NexioSetRotate
//
// Description:
//  set rotation of touch-screen
//  iRotateCode : NEXIO_ROTATE_XXX
//////////////////////////////////////////////////////////////////////////
//extern "C" __declspec(dllexport)
//void __stdcall NexioSetRotate( int iRotateCode );
procedure NexioSetRotate(iRotateCode: Integer); stdcall; external 'MultiDll.dll' name 'NexioSetRotate';





//////////////////////////////////////////////////////////////////////////
//
// Function:    NexioGetRotate
//
// Description:
//  get rotation code of touch-screen
//  return : NEXIO_ROTATE_XXX
//////////////////////////////////////////////////////////////////////////
//extern "C" __declspec(dllexport)
//DWORD __stdcall NexioGetRotate();
function NexioGetRotate: DWORD; stdcall; external 'MultiDll.dll' name 'NexioGetRotate';

implementation




// x,y : point for rotation
// mx, my : width, height of screen
// fRatio : mx / my ( ratio in float )
// dwRotateAngle : angle in degree (NEXIO_ROTATE_XXX)

procedure nxRoratePoint(var x, y: Integer; mx, my: Integer; fRatio: Real; dwRotateAngle: DWORD);
var
  x0, y0: Integer;
begin
x0 := x;
y0 := y;
case dwRotateAngle of
    NEXIO_ROTATE_0:
      Exit;
    NEXIO_ROTATE_L90:
    begin
      x := Trunc( mx - y0 * fRatio );
      y := Trunc( x0 / fRatio );
      Exit;
    end;
    NEXIO_ROTATE_180:
    begin
      x := Trunc( mx - x0);
      y := Trunc( my - y0);
      Exit;
    end;
    NEXIO_ROTATE_R90:
    begin
      x := Trunc( y0 * fRatio );
      y := Trunc( my - x0 / fRatio);
      Exit;
    end;
    NEXIO_ROTATE_360:
    begin
      x := Trunc( y0 * fRatio);
      y := Trunc( x0 / fRatio );
      Exit;
    end;
    NEXIO_ROTATE_MIRROR_V: //mirror vertical
    begin
      y := my - y0;
      Exit;
    end;
    NEXIO_ROTATE_MIRROR_H: //mirror horizontal
    begin
      x := mx - x0;
      Exit;
    end;
  end;

end;





end.
Posted by Parker Falcon
인터넷 익스플로어의 일부 기능이 정상적으로 작동하지 않는 경우가 있다.

특히 윈도XP를 예전에 설치하여 업데이트를 한 컴퓨터의 경우 종종 말썽이 있었다.

원인은 actxprxy.dll 이 없어서 그런 것이며, 1000대 PC중 3대 정도 발견했다.

왜 없는지는 모르겠다.

아무튼 없어서 그랬다.

혹시나 IE6인데 미리보기 / 문서 내 찾기 에서 스크립트 오류 뜨는 경우는, 기본적으로 몇 가지 파일들 (특히 actxprxy.dll ) 이 있는지 확인해보자.
Posted by Parker Falcon