본문 바로가기

Programming

iOS - Core Data attribute types iOS 에서 Core Data 를 사용할 때, attribute 들의 type 들이 각각 무슨의미인 지 궁금 했다. Integer 16, Integer 32, and Integer 64 data types are for storing signed integers. The range of values that these types are able to store is as follows:Integer 16:-32,768 to 32, 767Integer 32:-2,147,483,648 to 2,147,483,647Integer 64:-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807Decimal, Double, and Float data types are fo.. 더보기
iOS Core Data - About primary key iPhone 에서 Core Data 를 이용하여 개발할 경우, 일반적인 Database 에서 사용하는 primary key 에 대해서 고민할 필요가 없다. Core Data 에서는 생성되는 object 들에 대해서 id 를 자동으로 만들어 주는 일을 한다. 그러므로, 아래와 같이 해당 object 에 대한 id 를 얻어올 수 있다.NSManagedObjectID *moID = [managedObject objectID]; 더보기
import 문 기술 순서 규칙 import 문이 많아질 경우, 이를 유지보수하기 위해서 아래와 같은 규칙이 존재한다. 1. import 문은 패키지 이름을 기술해야 한다.2. import 문은 가장 기본적인 패키지명 순서로 정렬이 되어야 한다.3. import 문은 서로 관련이 있는 패키지들은 그룹화 되어야 하고 이 들간에 공백 라인이 존재해야 한다. 출처:http://geosoft.no/development/javastyle.html#Package%20and%20Import%20Statements import 문의 순서를 설명하는 예제 import java.util.HashMap; import java.util.Math; import javax.servlet.http.Cookie; import org.apache.common.cli.. 더보기
NSFetchedResultController 가 Core Data 에 업데이트 혹은 추가 된 객체를 재대로 인식하게 하는 법 간혹 NSFetechedResultController 가 Core Data 에서 업데이트 되거나 추가된 객체를 재대로 반영하지 못할 경우가 있다. 이럴 경우에는 아래와 같은 코드를 추가해 주자. - (void)controllerDidChangeContent:(NSFetchedResultsController *)controller { [self.tableView reloadData]; // AddItemViewController 에서 추가한 Item 의 check index 가 제대로 반영되기 위해서 tableView 를 reload 한다. } 더보기
Safe double checked locking Java 프로그래밍으로 multi-threaded 애플리케이션을 만들 때, double checked locking idiom 을 이용하여 코드를 작성할 때, 아래와 같은 코드는 정확히 작동하지 않는다.// Single threaded version class Foo { private Helper helper = null; public Helper getHelper() { if (helper == null) helper = new Helper(); return helper; } // other functions and members... } Multi-threaded 애플리케이션에서 안전하게 코드를 작성하는 방법1. Java 1.5 이상에서는 아래와 같이 코드를 작성하면 위의 코드가 정확히 작동한다.//.. 더보기
git bash auto completion git 명령어를 사용할 때 bash 에서 제공하는 자동 완성 기능을 이용하기 위해서는 아래와 같이 간단한 설정만 하면 된다. $ cd ~/$ vi .bashrc 편집기를 열어서 .bashrc 파일에 아래의 내용을 입력하면 된다. .bashrc source /etc/bash_completion.d/git $ source .bashrc 그러면 shell 에 git 명령어를 친다음 tab 을 누르면 shell 에서 자동 완성 기능으로 추천 명령어를 제공한다. 더보기
gitolite admin 계정 변경 gitolite 를 처음 설치할 때 관리자 계정을 등록할 수 있다. 하지만 여러가지 이유로 gitolite 에 등록되지 않은 계정을 관리자로 등록하고 싶을 경우가 있다.보통 이러한 경우는 gitolite-admin repository 를 다운로드 받지 못하거나, gitolite-admin repository 에 변경사항을 push 하지 못하는 경우에 이러한 방법을 사용할 수 있다. gitolite-admin 에 변경사항을 적용 못하면 사용자 계정, repository 를 추가하는 것이 불가능 하기 때문에 이러한 경우에는 아래의 방법으로 해결 할 수 있다. gitolite 가 설치된 디렉토리에 대한 권한을 가진 사용자로 로그인을 한다.가정사항:1. gitolite 가 git 계정에 설치가 되었다고 가정한다.. 더보기
Mac IntelliJ 11, 12 설정파일 제거 하기 IntelliJ 에 특정 플러그인을 잘 못 설치해서 파일이 열리지 않는 문제가 생겼다. 이 당시에는 파일이 열리지 않는 이유가 플러그인을 잘 못 설치해서 발생하는 문제인 지 몰랐다.하지만 잘 생각해 보니, 플러그인 설치 이후부터 파일이 열리지 않는 문제가 생긴 거 같았다. 그 중에서 markdown 이라는 플러그인을 설치하고 나서부터 파일이 열리지 않는 것이었다.그래서 IntelliJ 설정 창을 열어서 제거를 하려고 해도 이미 IntelliJ 설정이 문제를 일으키는 지 열리지 않는 것이었다.결국 수동으로 모든 설정을 제거하기로 마음을 먹고 설정 파일들을 일일이 찾아서 제거를 시도했다. Mac 운영체제에는 응용프로그램 설정 파일들이 여려군대 나눠져 저장이 되는데, 그중 IntelliJ 프로그램 관련 설정 .. 더보기
Java byte code 에 관하여 이 포스팅의 일부는 IBM Developerworks의 Java bytecode 기사의 일부를 발췌하여 작성하였다. Java compiler는 Java source code를 Java byte code로 해석을 한다.Java byte code는 C/C++ 프로그램의 중간 표현식이라고 할 수 있는 assembler 에 해당한다.유능한 C/C++ 프로그래머는 Debugging과 성능, 메모리 사용을 tuning하기 위해서 assembler instruction 정보를 사용한다. 이는 Java Programmer가 Java bytecode의 instruction의 의미를 이해하는 것과 같은 맥락이다.그러므로, 좀더 고급 Java 프로그래머가 되기 위해서는 Java byte code에 대한 이해가 필요한다. J.. 더보기
Apache Ant 로 Runnable JAR 파일 만들기 Java 언어로 작성된 프로그램이 들어있는 프로젝트를 빌드하기 위해서 Apache Ant 를 많이 사용한다. Eclipse 를 사용하여, 빌드, JAR 내보내기 등등 여러가지 작업들을 편리하게 할 수 있지만, 빌드 자동화 툴, 예를 들어서, Hudson 등을 사용할 경우 Eclipse 를 사용하기에 불편함이 존재한다. 이럴 경우에는 command line 으로 빌드, 패키징을 하기 위해서는 Ant 를 사용하면 간단하게 해결할 수 있다. Ant 를 사용하여 Runnable JAR 파일을 생성하기 위해서는 Ant 의 빌드 스크립트인 build.xml 을 수정하여야 한다. Runnable JAR 파일을 만들기 위해서는 manifest 라는 것을 사용하여야 하는데, 이것은 JAR file 안에 있는 패키징 된 .. 더보기