패럴럴스(Parallels)에 스노우 레오파드 설치하기

맥 어플리케이션을 개발할 때 하위 호환성(backword compatibility)을 유지하기 위해 신경써야 할 점들에 관하여 예전에 포스팅을 했었다. 개발할 때 그런 점들을 신경쓰더라도 실수로 놓치는 부분이 많기때문에 실제로 실행되는지 해당 버전의 OS에서 실행하는 절차는 필수이다. 따라서 10.6 Snow Leopard(스노우레오파드) 까지 지원하려면 가상머신에 스노우레오파드를 설치하여 테스트에 사용하는 것이 가장 편리하다. 하지만 라이센스 문제때문인지, 패럴럴스에 가상머신형태 Mac OS를 설치할 경우 Snow Leopard Server만 설치가능하도록 되어있다. 이부분을 우회하기위해 일반적인 Snow Leopard 설치 시디를 갖고 Snow Leopard Server인것처럼 만들어서 패럴럴스를 속여서 설치하는 방법을 소개한다. ...

2013년 10월 18일 · 2분 · 260단어

미국 서부 여행 정보

다국적 그룹 투어 이번에 혼자 미국여행을 하자니 너무 심심할듯하여 다국적 그룹투어를 다녀왔다. 국내에 잘 알려진 트렉 아메리카가 예약이 꽉차서 다른 그룹투어가 없을까 해서 찾다가 인트레피드를 발견했는데, 진행 방식도 비슷하고, 투어 코스들도 비슷비슷하니 개인 취향이나 일정에 따라 트렉아메리카나 인트레피드나 적절히 선택하면 될 것 같다. 영어가 좀 가능하다면 직접 해외 웹사이트(http://www.intrepidtravel.com/)를 통해 예약하고 이메일로 컨펌받을 수 있다. 국내 에이전시(http://www.intrepid.co.kr/)에서 예약가능하다. 출발이 얼마남지 않은 여행의 경우 last minute deal로 10%이상 할인행사가 있을때도 있으니 잘 노려서 예약하면 좋다. ...

2013년 10월 16일 · 3분 · 442단어

IE 버전별 웹사이트 테스팅 팁

구버전의 인터넷 익스플로러(Internet Explorer)를 사용하는 유저들이 워낙 많기 때문에 웹사이트를 만들때 항상 구버전에 대해서 잘 동작하는지에 대한 체크가 필요하다. Windows XP, Vista 사용자들의 경우 낮은버전의 IE를 사용하는 경우가 많으며 특히 XP의 경우 IE 8 이후의 버전은 설치 자체가 불가능하니 주의가 요구된다. IE 호환성보기 관련 주의사항 정부사이트를 포함한 바보같은 국내 몇몇 웹사이트에서 호환성 보기 체크를 권고할때가 있기때문에, 많은 사용자들이 시키는대로 체크를 한 후 적용해제하는것을 잊어버리는 경우가 꽤 있는듯 하다. 덕분에 최신버전의 인터넷 익스플로러를 사용하면서도 호환성 보기 모드로 웹브라우저를 사용하다보니 레이아웃이 깨지는 경우가 발생한다. 따라서 HTML5 등 최신기능을 사용했다면 웹페이지 <head>부분에 다음 메타태그를 꼭 넣어주는 것이 좋다. ...

2013년 10월 16일 · 2분 · 253단어

PHP를 이용한 PDF 문서 생성

PHP기반의 웹사이트에서 증명서 발급, 영수증 발급, 견적서 발급 등 자동으로 PDF를 생성할일이 많은편이다. 추가적인 라이브러리 설치와 셋업과정 없이 기본적인 PHP 디폴트 설치 상태에서도 잘 동작하는 두가지 대표적인 오픈소스 프로젝트를 소개해 보려 한다. R&OS 홈페이지: http://sourceforge.net/projects/pdf-php/ 트루타입 폰트(TTF)를 지원하지만 유니코드 폰트(예: 맑은고딕, 나눔고딕 등) 지원이 제대로 안되서 한글이 포함된 PDF 문서를 생성하기가 쉽지 않다. 라이브러리에서 유니코드 트루타입폰트를 로딩하면 예외가 발생해서 사용이 불가능하다. 유니코드가 아닌 트루타입 폰트를 사용할경우 한글이 지원되지만(예: 아리따글꼴 등) 해당 폰트를 생성된 PDF문서에 포함(embed) 시켜야만 한다 (포함시키지 않을경우 문서가 깨짐). 그러다보니 한글 폰트가 포함되어 문서용량이 커지고 로딩이 길어지는 것을 감수해야 한다. ...

2013년 10월 10일 · 1분 · 192단어

Mac OS 쓸모없는 파일 정리를 통한 하드 공간 확보

윈도우의 레지스트리와 Temporary 폴더와 마찬가지로, 맥(Mac OS X)도 계속 사용하다보면 다양한 어플리케이션에서 생성되는 설정(preference)데이터나 캐시(cache)데이터들로 인하여 쓸모없는 파일이 계속 생기면서 공간을 많이 차지하게 된다. 이때 단순히 클리너와 같은 프로그램을 이용해서는 정리하는데 한계가 있고, 직접 주요 설정, 캐쉬폴더들을 살펴보면서 용량을 많이 차지하는 녀석들부터 삭제하는 것이 매우 효율적이다. 또한 이러한 데이터들은 타임머신(Time Machine)을 이용하여 백업을 할 경우에도 굳이 백업할 필요가 없는 경우가 많으므로, 이 데이터들을 적절히 취사선택하여 타임머신에서 제외해주면 더 빠르고 효율적인 백업이 가능해진다. ...

2013년 9월 11일 · 2분 · 421단어

나눔고딕 구글 웹폰트(Webfont) 사용하기

한글 웹사이트의 경우 브라우저 및 OS마다 기본폰트도 다르고, 폰트 렌더링 방식도 제각각이다보니 웹사이트 제작시 디자이너-개발자-웹사이트디자인 의뢰인 간에 폰트를 이미지화 해서 쓸 것인지 항상 말이 많다. 영어폰트같은 경우에는 용량이 작아서 부담없이 여러 폰트들을 웹폰트 형식으로 임포트해서 사용가능하지만, 한글폰트의경우 기본적으로 1M가 넘어가는 대용량이기 때문에 하나이상의 폰트를 웹사이트에 사용하는 것은 웹사이트 로딩속도에 치명적인 영향을 끼친다. 하지만 결국 검색엔진 최적화(SEO)와 유지보수 관리의 용이성 때문에 이미지화 시킨 텍스트보다는 실제 폰트를 이용하여 렌더링된 텍스트가 여러모로 장점이 많다. 워드프레스의 메뉴나 위젯등 대부분이 텍스트를 이용한 타이포그라피를 이용하여 만들어진 디자인이 많기때문에 원활한 활용을 위해 한글 웹폰트의 필요성이 더 커지고 있다. 최근에는 네이버에서 무료로 배포하는 나눔고딕 덕분에 폰트선택의 폭이 많이 늘어나서 상황이 많이 좋아진 편이며, 더군다나 구글 웹폰트에서 earlyaccess 형식이긴 하지만 한글폰트를 지원하기 시작했고, 여기에 나눔고딕이 포함되어 있어서 매우 편리하게 나눔고딕을 웹폰트로 사용할 수 있게 되었다. ...

2013년 9월 10일 · 2분 · 369단어

도메인 주소에서 www 없애기

액세스 컨트롤 에러 웹사이트에서 XMLHttpRequest를 이용한 ajax 요청을 보낼 때, 현재 웹사이트의 도메인과 ajax 요청을 보낼 웹사이트의 도메인이 다른 경우 브라우저 차원에서 보안을 위해 다음과 같은 액세스 컨트롤 에러를 발생시킨다. XMLHttpRequest cannot load http://www.example.co.kr/wp/wp-admin/admin-ajax.php?action=get_portfolio_item_action&postid=178. Origin http://example.co.kr is not allowed by Access-Control-Allow-Origin. 위 예시와 같이 상위 도메인이 같더라도, 서브도메인만 달라지면 액세스 컨트롤 에러가 발생한다. 따라서 웹사이트가 www.example.co.kr 로 접속하거나 example.co.kr로 접속했을때 동일한 페이지를 보여준다고 해도 엄연히 다른 사이트에 접속한것으로 웹브라우저가 인식한다. 따라서 위와같이 동일사이트에 접속했다고 생각했음에도 불구하고, 생각치 않게 액세스 컨트롤 에러가 발생하는 실수를 할 수 있기 때문에, 이러한 실수를 막으려면 둘중에 하나의 도메인으로 통일해서 강제 redirection을 걸어놓는 것이 좋다. ...

2013년 8월 24일 · 1분 · 147단어

Responsive 유튜브(비메오) 임베딩 하기

워드프레스로 요즘 유행하는 리스폰시브 테마를 구현하다가 비디오를 임베딩 할일이 생겼다. 유튜브(YouTube)나 비메오(Vimeo)의 경우 보통 iframe을 사용해서 로딩되기 때문에 가로세로 길이를 고정하지 않고 CSS만 갖고 동적으로 표현하려니 쉽지 않았다. 그냥 jQuery로 계산해서 처리하려다가 혹시나 해서 구글링 해보다가 http://avexdesigns.com/responsive-youtube-embed/ 글을 발견했다. 계산식도 없이 CSS만 갖고 리사이징을 하는 구현 아이디어를 보니 무릎이 탁 쳐진다. 역시 세상에 참 똑똑하신 분들 많은걸 새삼 깨닫는다. HTML 코드 CSS 코드 .video-container { position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden; } .video-container iframe, .video-container object, .video-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } 동작 원리 iframe에 width:100%, height:100% 속성을 줘서 일단 부모 엘리먼트를 꽉채우도록 만들어 둔다. ...

2013년 8월 24일 · 2분 · 244단어

개인사업자와 IT 프리랜서를위한 종합소득세 총정리

Updated: 2015-05-10 Added: 홈택스 종합소득세 신고 step by step 포스트 참고 개인사업자를 운영하고있거나 IT 프리랜서 일을 통해 소득이 있으신 분들을 위해 세금관련 내용들을 정리해 보았다. 매출 규모가 얼마되지 않아서 세무사에게 맡기긴 애매한 분들의 세무지식 독학을 위해 종합소득세 관련해서 알아야할 부분들을 모두 포함시켜 보았다. 들어가기 전에: 용어 정리 귀속: 세금관련 글들을 보다보면 2014귀속, 귀속연도, 귀속 월 등의 용어를 보게된다. 이는 세금이 부과되는 소득이 있었던 실제 연도/달을 말한다. 예를들어 “2014 귀속” 종합 소득세 신고 라면, 2015년 5월에 이루어지는 종소세신고로 2014년도 소득분에 대해서 세금을 납부하는 것이다. 세법의 경우 자주 개정되기때문에 해당 귀속연도/월에 따라서 적용되는 법이 달라지게된다. 따라서 세금관련자료를 볼때는 최신자료인지 보려면 귀속연도/월을 확인해야 한다. ...

2013년 8월 17일 · 10분 · 2127단어

코어데이터(Core Data) 한줄로 데이터 불러오기

코어 데이터는 익숙해지면 매우 편리한 기능을 제공해주지만 한번 사용하려고 할 때 마다 셋업해줘야 할 것들이 매우 많아서 처음 접해보는 개발자들에게 문턱이 높은 편이다. 애플의 Core Data Programming Guide에서 데이터를 불러오기(fetch)위해 사용하는 코드는 다음과 같다. NSManagedObjectContext *moc = [self managedObjectContext]; NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Employee" inManagedObjectContext:moc]; NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease]; [request setEntity:entityDescription]; // Set example predicate and sort orderings... NSNumber *minimumSalary = ...; NSPredicate *predicate = [NSPredicate predicateWithFormat: @"(lastName LIKE[c] 'Worsley') AND (salary > %@)", minimumSalary]; [request setPredicate:predicate]; NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:YES]; [request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]]; [sortDescriptor release]; NSError *error = nil; NSArray *array = [moc executeFetchRequest:request error:&error]; if (array == nil) { // Deal with error... } 단순히 데이터를 불러오기 위해 13줄이나 코드를 쓰는 것은 고역이다. ...

2013년 8월 17일 · 2분 · 259단어