본문 바로가기

마소 30주년 축하 합니다 현재 한국에 거의 유일한 소프트웨어 관련 정기 간행물!(내가 아는게 마이크로 소프트웨어 밖에 없는지도..)마이크로 소프트웨어가 벌써 30 주년 이군요.나보다 나이가 많아... 대학생 시절 도서관 정기 간행물 코너에 들어온 마소를 종종 보면서 처음 접했었죠.여러모로 도움이 많이되는 잡지 마이크로 소프트웨어.30주년 축하드립니다. 앞으로도 힘써 주세요! 책장의 마소들... 몇권은 어디로 갔지 -_-;; 더보기
[Spring] 1. 오브젝트와 의존관계 해당 글에 사용된 토비의 스프링 3의 그림 및 소스 등에 대한 저작권은 이일민 님께 있습니다. 문제가 발생시 해당 글은 언제든지 내려질 수 있습니다.해당 글은 이일민 님의 허락하에 작성되었습니다.덧. 본인의 복습과 정리를 목적으로 작성하였기에 토비의 스프링을 읽지 않으셨다면 잘 안맞는 부분이 있을 수 있습니다. 토비의 스프링 1장은 초난감 DAO라 칭하는 하나의 DAO클래스를 보여주며 시작한다. 왜 초난감 DAO일까?소스코드를 보면 기능 자체는 잘 작동한다. 하지만 잘 살펴보면 객체지향 설계원칙이 전혀 지켜지지 않았다.특히나 (본인이 생각하기에) 객체지향 프로그래밍시 가장 먼저 우선되어야 할 '단일 책임의 원칙'이 완전히 깨져 있다. 1장의 내용은 이 초난감 DAO를 리팩토링 하면서 스프링의 중심철학(I.. 더보기
[Spring] 스프링 정리 시작합니다. 토비(이일민)님께 토비의 스프링의 일부 코드 및 그림등에 대해 사용허가도 받아놓고...스프링 공부도 이미 시작해 놓구선 블로그에 대한 정리는 이제부터 시작합니다 -_-;;;; 준비는 한참전에 다 해놓고 시작이 너무 늦었어 Orz 현재 스프링은 3.2 버전까지 릴리즈가 되어 있고, 대략 내년을 기해 스프링 4가 릴리즈될 예정이라고 합니다.그러나 제가 구입한 책은 토비의 스프링3 입니다. 구입하고 2주후에 토비의 스프링 3.1이 출시되더군요[.....](한참전에 구입했단 소리) 그래도 스프링의 패러다임, 구조 등이 크게 달라지진 않을 것이기에... 토비의 스프링3 를 가지고 하나하나 정리 이후 3.1과 그 이후 버전의 변경점 형태로 블로그에 정리해 나가고자 합니다. 글의 순서는 토비의 스프링3의 목차 순서와.. 더보기
[iOS] 코드로 오토레이아웃 조절하기 iOS 6.0 부터 오토레이아웃이 적용되었다.잘만 조정하면 코드한줄도 없이 다양한 상황에 대응되는 레아웃을 만들 수 있다.하지만 언제나 원하는 대로는 되지 않는 법이고, 종종 코드로 오토레이아웃을 조절해 줘야하는 상황이 생긴다.오토레이아웃을 코드로 조절하면 사실 코드가 굉장히 길어지고 헛갈리기 마련인데...그것을 매우 쉽게 할 수 있는 오픈소스 라이브러리가 존재한다. 바로 Keep Layout 이다.이 라이브러리는 다음의 깃 허브에서 받을 수 있다KeepLayout 사용은 굉장히 간단한데 위 깃허브에서 source 폴더에 있는 파일을 모두 프로젝트에 포함시킨다. xxxx.h #import #import "KeepLayout.h"/KeepLayout 사용을 위해 헤더에 포함 @interface xxxxCo.. 더보기
[Linux] CentOS sudo로 톰캣 실행시 JAVA 환경변수 리셋 문제 Q : 상황 sudoers에서 wheel 그룹의 계정에게 root권한을 주도록 옵션 설정 후 wheel 그룹 계정을 생성톰캣 실행 스크립트의 기본 소유권은 root root 이기에 sudo 명령어를 이용하여 startup.sh 를 실행 Using CATALINA_BASE: /usr/java/apache-tomcat-7.0.42Using CATALINA_HOME: /usr/java/apache-tomcat-7.0.42Using CATALINA_TMPDIR: /usr/java/apache-tomcat-7.0.42/tempUsing JRE_HOME: /usr/Using CLASSPATH: /usr/java/apache-tomcat-7.0.42/bin/bootstrap.jar:/usr/java/apache-to.. 더보기
[Linux] 집 컴퓨터를 웹서버로 만들기 (CentOS 6.4) 집에 있는 컴퓨터를 외부에서 접속할 수 있는 서버로 만들어 봅시다.서버로 사용할 컴퓨터엔 CentOS 6.4가 이미 깔려 있음을 가정 합니다.사용 공유기는 ipTime n6004r 입니다. 접속 경로[?]를 보자면 다음과 같습니다. 외부 ---------------------------- 공유기 -------------------------- 집 컴퓨터 (SK, KT등이 할당해준 ip) (CentOS Server) 공유기 설정으로 들어가면 (ipTime 기준 브라우저에서 192.168.0.1) 외부아이피 라는게 있을 겁니다.외부에서 해당 ip로 접속 하면 공유기가 포트포워딩을 통하여 집에 설치된 서버로 포워딩을 해주고 해당 서버에서 웹페이지를 보여준다는 시나리오 입니다. 1. 우선 서버의 내부 ip를 고.. 더보기
[sqlite] sqlite_bind_text() (blob, text16...) 인자 값 sqlite_bind_text(), sqlite_bind_text16(), sqlite_bind_blob() 의 세 함수는 다른 바인드 함수보다 파라메터의 수가 좀더 많다. 텍스트를 기준으로 원형은int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));이다. 여기서 첫번째 인자는 statement 핸들이다. 두번째 인자는 데이터가 들어갈 순서이다.~~~ values(?,?,?,?) 식으로 구성이 되어있을때 맨 좌측 ?표가 1번째 물음표이다. 두번째 인자가 3 이라면 맨좌측으로부터 세번째 ?표에 데이터를 넣으라는 뜻. 세번째 인자는 db에 넣을 데이터 이다. 네번째 인자는 세번째에서 지정한 데이터의 크기를 정한다. -1(음.. 더보기
[iOS] 번들에서 Document로 파일 복사하기 (sqlite) sqlite사용할 때(혹은 그 이외에도) 앱 내에서 직접 데이터베이스를 다 만들어 주는것 보다 파이어폭스의 sqlite manager등으로 기본 틀을 만들어 주고, 그렇게 생성된 디비파일을 앱에 추가하여 사용하는게 편하다.다만 그냥 xcode에서 추가한 상태로 사용하면 해당 파일은 읽기 전용파일이 되므로번들(간단하게 개발자가 만든 리소스의 모음, Nib파일등등)에서 앱내의 Document폴더로 이동이나 복사를 한 후 사용해야 한다. 파일을 복사하는 코드는 다음과 같다 NSArray *documentArr = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory =.. 더보기
[maven] 메이븐 라이프사이클 Phase 와 Goal 메이븐 라이프사이클에 대해 정리된 블로그 링크 - 메이븐의 라이프 사이클은 Default, Clean, Site 의 세 가지가 있다.- Phase는 각 라이프사이클의 빌드 단계만을 정의, 해당 단계의 어떤 동작은 연결된 Plug-In 으로 실행됨- Goal은 Ant의 타겟 이라고 한다... 대략 특정 Phase에서 동작할 플러그인을 구동시키는 명령어 정도로 이해하면 된다고 생각한다. 각 단계의 Phase 에 대한 설명 Default Lifecycle validate 프로젝트가 정확한지, 필요한 정보를 모두 이용할 수 있는지 확인 initailize 빌드 상태를 초기화 generate-sources 컴파일에 포함되는 소스 코드 생성 process-sources 소스 코드 처리 generate-resourc.. 더보기
[maven] 메이븐 내용정리 블로그 링크 최근 메이븐 공부를 하면서 이를 어떻게 정리하고 기억하면 좋을까 고민하다가...정리가 매우 잘 되어있는 분의 블로그를 찾게되어 그 주소를 링크합니다. http://gt1000.tistory.com/category/maven 더보기
[javascript] JavaScript Date Format javascript에서 날짜 관련된 코딩을 할때... 그 때 마다 날짜 포맷 정해주고 중간에 0 넣고 빼고 어쨋뜬 으아아아앙 귀찮아서혹 누군가 관련된 라이브러리나 코드를 만들어놓지 않았을가 검색하다가 찾아냈다.(사실 내가 만들어보겠다고 짜다가 포기) 원본 출처는 이곳http://www.codeproject.com/Articles/11011/JavaScript-Date-Format // a global month names array var gsMonthNames = new Array( 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ); .. 더보기
[CSS] 100% Height 흔이있는 경우는 아니겠지만... 특정 엘레먼트의 Height를 어떤 상황에서도 세로 길이가 웹 브라우저의 전체가 되어야 할 때가 있다. 하지만 보통 태그가 하나 있고 그 태그에 'height:100%'를 주면 박스 안의 컨텐츠의 높이가 의 Height가 된다. 이를 해결하려면 다음과 같이 코딩을 해야 한다. HTML 코드 100% 첫번째는 안쪽 초록색 블록의 크기를 정확히 알고 있을 때 사용하는 방법입니다. 시작 지점을 50% 내린다음에, 블록크기 절반만큼 위로 마이너스 마진을 준 것이죠. 크기를 모를때는 사용할 수 없습니다. 그래서 크기와 상관없이 무조건 세로 중앙정렬을 사용하는 방법으로는 두번째 방법을 사용하셔야 합니다. 하지만... 여기서 또 문제가 발생하는 부분이 있는데요? float:left, .. 더보기
[JAVA] JVM(Java Virtual Machine) 메모리 구조 - 이해한 부분들로 JVM에 관해 정리 하였으나, 정확하게 이해했다고 확답할 수 없습니다.- 혹 이 포스팅을 보시는 분들께서 잘못된 부분을 지적해주시면 감사하겠습니다. 1. JVM 메모리 구조 - Class Area (Method Area)- Java Stack- Heap- Native Method Stack 2. Class Area (Method Area)JVM의 모든 Thread가 공유하는 영역.JVM에 의해 로딩된 클래스들이 저장됨.구현된 메소드들이 저장됨.클래스 변수들이 저장됨.적재된 클래스의 모든 Property는 변경되지 않음. 3. Java StackMethod가 호출될 때마다 Stack Frame이 생성. Java Stack Frame이 모여 Java Stack 이 된다.Java Stack.. 더보기
[iOS] NSDate를 이용해 날짜값 얻기 NSDate 는 특정날짜(2001년 1월 1일 자정)를 기준으로 객체에 설정된 날짜 까지의 기간을 초단위로 계산하여 저장하고 있다.그렇기에 단순한 NSDate 객체로는 년, 월, 일 등의 날짜 값을 얻을 수 없다. 각각의 날짜값을 얻기위해선 다음과 같이 NSCalender 와 NSDateComponents 를 이용해야 한다. NSDate *now = [NSDate date]; //현재 날짜로 객체 생성NSCalendar *calender = [NSCalendar currentCalendar]; //캘린더 객체생성unsigned int calendarFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekCalendarUnit;//NSYearCalendarUn.. 더보기
[iOS] iOS 화면 자동 회전 제어(Autorotate) 하기 iOS 5.0 이전에서는 뷰 컨트롤러의 특정 방향만 회전하도록 제어하는 코드는 다음과 같았다. #pragma mark iOS5 rotate- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{ return (interfaceOrientation == UIInterfaceOrientationPortrait); // 세로보기만 지원 //return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); //거꾸로 들기 빼고 다 허용} 하지만 위의 shouldAutorotateToInterfaceOrientation: 메소드가 iOS .. 더보기