UIImage의 scale을 올바르게 처리하기

UIImage의 size 는 픽셀(px)단위가 아닌 포인트(point) 단위로 처리가된다. 따라서 사이즈 정보에 추가적으로 스케일(scale) 정보를 같이 같고있다. UIImage를 bundle에서 [UIImage imageNamed:]를 이용하여 불러올때는 이미지에 붙어있는 @2x 또는 @3x 포스트픽스를 통해서 해당이미지의 스케일이 정상적으로 설정되어 특별히 신경쓸 필요가 없다. 마찬가지로 서버에 이미지 데이터를 요청해서 받아올 경우에도 AFNetworking의 AFImageResponseSerializer을 사용하면 UIImage를 만들어줄 때 스케일 관련 정보 또한 내부적으로 처리를 해주니 신경을 쓸 필요가 없다. 하지만 NSData로부터 UIImage 를 생성할때나 파일명에 포스트 픽스가 없는 다운로드된 파일로 부터 UIImage를 생성할 때는 이러한 스케일 처리를 따로 해줘야 된다. ...

2015년 7월 6일 · 2분 · 241단어

검색엔진 최적화(SEO) 튜토리얼

웹사이트를 운영하는 사람이라면 SEO(Search Engine Optimization)에 대해서 한번쯤은 들어보았을 것이다. 하지만 말로만 들어보았지 어떻게 해야 SEO가 되는지 막연하게만 생각이 떠오르고 구체적으로 어떤 부분에 어떤 액션을 취해야하는지 감이 잘 잡히지 않는 경우가 많다. 필자의 경우도 그랬기 때문에 웹사이트 검색엔진 최적화를 실제로 진행하면서 맞닥뜨렸던 궁금증이나 팁을 위주로 Best Practices를 정리해보았다. 더 많은 공부를 원하시는 분들은 구글 웹마스터 센트럴 블로그에 있는 글을 모두 읽어보길 권하고, 구글의 검색 가이드라인 문서들도 꼭 읽어봐야 할것이며, 이 포스팅에 언급된 다양한 주제들에 대해 추가적으로 더 검색을 해서 공부하시면 큰 도움이 될 것이다. ...

2015년 5월 31일 · 9분 · 1737단어

구글 태그매니저 사용하기

구글 태그매니저란? GTM(Google Tag Manager)은 GA(Google Analytics)를 비롯한 여러 모니터링/마케팅 플랫폼들과 연동할 수 있는 중간자 적인 역할을 하는 플랫폼이다. 바로가기: https://developers.google.com/tag-manager/ 앱/웹을 재배포 하지 않고도 태그매니저내부의 설정값 변경 만으로 이미 배포되어있는 앱/웹의 설정 또는 조건식 들을 동적으로 변경할 수 있도록 기능을 지원하기때문에 사용자 액션에 따라서 좀더 유연한 마케팅/로깅을 할 수 있다.(ex: 200달러 이상 구매 고객일 경우에만 리마케팅을 수행 등) 용어 정리 GTM의 가장 작은 구성단위부터 점점 큰 순서대로 설명하면 다음과 같다. ...

2015년 5월 13일 · 5분 · 916단어

Bluetooth Connection을 사용하는 멀티플랫폼 앱 개발기

블루투스 연결을 사용하는 멀티플랫폼(Mac, Window, Android, Windows Store app) 앱 개발을 하면서 겪은 경험과 노하우들을 정리해 보았다. 아직 완전히 개발이 끝나지 않았기때문에 포스트 내용에도 부족한 점들이 많이 있지만, 일단은 먼저 경험을 공유하는 것이 중요한 것같아서 포스팅을 해둔다. Bluetooth 연결 기본 블루투스는 디바이스를 어떻게 찾는가? 블루투스 디바이스는 자신이 제공할 수있는 서비스를 무선 네트워크상에 publish해서 다른 디바이스들이 검색할 수 있도록 하는데, 이때 사용되는 것이 Service Discovery Protocol(SDP) 이다. 예를들어 블루투스 키보드는 자신이 HID 서비스(입력장치)가 가능하다고 무선네트워크상에 계속 신호를 보내고있는 상태인 것이고, 컴퓨터에서 주변 블루투스 장치를 검색할때 이 신호를 인식하여 “블루투스 키보드 장치가 있다”는 사실을 알게되는것이다. 이때 이러한 서비스들을 유니크하게 구분하기위해 UUID를 사용하게된다. UUID의 기존에 이미 정의된 것들을 사용할 수 있으며, 새롭게 임의로 UUID를 생성해서 사용하는것도 가능하다. ...

2015년 3월 15일 · 8분 · 1502단어

AWS EC2 ssh 로그인 tips

AWS EC2 인스턴스 관리에 있어서 public/private key를 이용한 ssh 인증을 잘 이용하면 높은 보안성과 동시에 비밀번호 입력이 필요없는 편리한 환경을 구축 할 수 있다. AWS에 ssh 로그인 편리하게 하기 AWS(Amazon Web Service) EC2 계정 생성과정에서 필수적으로 public/private key pair를 생성하게 되는데 이를 통해서 인스턴스 접근 인증을 하게된다. 생성시점에 public key는 AWS에 자동으로 저장되고 EC2 console 화면의 Key Pairs 메뉴에서 등록된 public key를 확인할 수 있다. private key의 경우는 생성시점에 .pem 파일 형태로 다운로드를 해서 저장하게되는데 이 키파일에 대한 보관 책임은 사용자에게 있다. 이 key pair 를 통해 로그인 인증을 하게되므로 항상 이 키파일을 보관하는데 주의를 기울여야 한다. ...

2015년 3월 15일 · 2분 · 356단어

워드프레스 table_prefix 변경

기존에 설치하여 사용하고 있던 워드프레스에서 wp-config.php 파일의 $table_prefix를 변경하려면 다음 스텝에따라 진행하자. 본 포스팅에서는 다음 상황을 가정하고 설명할 예정이다. 기존 $table_prefix = ‘wp_’ 변경된 $table_prefix = ‘newprefix_’ 1. DB 테이블명 변경 DB에 접속해서 변경된 prefix를 가지도록 DB명을 변경한다. DB명을 변경 후 워드프레스 사이트에 로그인 해보면 정상적인 로그인이 되고 사이트가 작동하는것을 볼 수 있다. 하지만 기존 사용자들의 capability와 role이 인식이 제대로 되지 않는것을 발견 할 수 있다. 이를 고치기 위해서 2번 스텝을 진행한다. ...

2015년 3월 7일 · 1분 · 182단어

워드프레스 사이트 이전 팁

웹사이트 이전을하면서 도메인을 변경하는 경우 기존에 쌓아왔던 많은 데이터들에 대한 일괄적인 변경이 필요하다. 이를 워드프레스의 글/옵션들 하나하나 찾아다니면서 검색하기는 매우 힘들기때문에 Database에서 sql 구문으로 한번에 변경하면 빠르게 일괄 처리가 가능하다. 일괄변경을 하기전에는 문제가 생기거나 실수를 할 수 있으니 꼭 DB를 백업해두고 작업을 진행하도록 하자. 1. wp_options 변경 다음 쿼리를 이용하여 기존 사이트 주소와 직접적으로 연관이된 옵션설정값들을 일괄로 확인하는것이 가능하다. SELECT * FROM wp_options WHERE option_value LIKE '%기존주소%' siteurl, home 변경 워드프레스의 경우 위의 두 값을 기반으로해서 모든 퍼머링크나, 메뉴링크, 자바스크립트/CSS 링크 등을 출력하므로 위 두개 사항은 필수적으로 확인하여 수정하여여한다. ...

2014년 12월 6일 · 2분 · 321단어

KT 데이터 쉐어링 가입하기

원래 KT에서 아이폰5S를 사용중인데 최근 홍콩판 갤노트 8.0 LTE (Galaxy Note 8.0 LTE)를 중고로 구입했다. 새로 산 갤노트에서 데이터 셰어링 가입을 하면 다음 기능을 사용할수 있다. 문자수신 데이터 사용량 공유 데이터 셰어링만 가입신청을 하더라도 해당 디바이스에 새롭게 전화번호를 할당해준다. 통화가 가능한 통신칩셋이 들어있는 기기의 경우 원래 전화수신도 가능했다고하나, 2014년 4월 이후로 정책이 바뀌었는지 쉐어링된 디바이스에서 이제 전화수신은 불가능하다고 한다. 하지만 여전히 해당 번호로 문자를 수신하거나 데이터를 사용하는것이 가능하다. 요금 메인기기당 최대 3개까지 서브디바이스로 데이터 쉐어링이 가능하다. 그 이상은 월 7천원(부가세 별도)을 요금으로 납부하여야한다. KT 대리점에서 데이터 쉐어링을 가입하면 7천원짜리 부가서비스가 가입되었다고 문자가오는데 이는 가볍게 무시하면된다. (나중에 요금 청구될때 7천원 할인이 다시적용되서 나오기때문에 결국 이용료는 무료이다) ...

2014년 10월 27일 · 2분 · 299단어

Cocoapod version update for Mac OS Yosemite

 Mac OS X Yosemite 로 업그레이드를 하게되면 cocoaPod이 잘 작동하지 않을것이다. 이때 다음 인스트럭션을 따라 해결해 나가면 된다. 코코아팟 최신버전으로 업데이트 (현재 최신은 0.34.4 입니다) sudo gem uninstall cocoapods sudo gem uninstall xcodeproj sudo gem install xcodeproj sudo gem install cocoapods 2. Podfile의 첫줄에 다음 코드 추가 source 'https://github.com/CocoaPods/Specs.git' 이부분은 옵셔널하긴한데, 추가하지 않으면 deprecated warning이 뜨기때문에 추가해주는것이 좋다. 3. 빌드시 Podfile.lock 혹은 Manifest.lock 관련 에러가 날 경우 처리방법 ...

2014년 10월 27일 · 1분 · 97단어

PHP 날짜/시간 Timezone, TimeStamp, DateTime 관계

PHP를 DateTime 클래스를 다루다 보면 입/출력에따라 타임존 오프셋(timezone offset)이 반영이 되는지 안되는지 헷갈리는 경우가 꽤 많은데 아래 두가지 principle만 알면 큰 실수는 하지 않을 수 있다. ‘now’ 등의 기능을 이용하여 현재시간을 타임스탬프로 얻어온다면 항상 이값은 UTC+0 기준 현재시간에 대한 타임스탬프이다. (PHP 디폴트 타임존과 무관) PHP에 디폴트 타임존이 설정된 상태로 DATETIME 스트링을 이용하여 DateTime 객체를 초기화 하면 해당 객체의 타임스탬프 값은 타임존 오프셋이 이미 반영된 값이다. 아래 예시를 보면 더 명확히 이해가 갈것이다. ...

2014년 10월 2일 · 1분 · 203단어