dredge up 과거일을 다시 들춰내다
instead of dredging up the whole incident.
2018년 5월 14일 월요일
2014년 5월 26일 월요일
[iOS] iOS 7 블루투스 4 샘플 앱
iOS 7 블루트수 4 데모 앱
http://code.tutsplus.com/tutorials/ios-7-sdk-core-bluetooth-practical-lesson--mobile-20741
http://code.tutsplus.com/tutorials/ios-7-sdk-core-bluetooth-practical-lesson--mobile-20741
2014년 4월 23일 수요일
[JAVA] Netty Tutorial
Netty Tutorial
http://seeallhearall.blogspot.kr/2012/05/netty-tutorial-part-1-introduction-to.html
http://seeallhearall.blogspot.kr/2012/06/netty-tutorial-part-15-on-channel.html
http://seeallhearall.blogspot.kr/2012/05/netty-tutorial-part-1-introduction-to.html
http://seeallhearall.blogspot.kr/2012/06/netty-tutorial-part-15-on-channel.html
2014년 4월 17일 목요일
[iOS] 하나의 애플개발자 계정을 여러대의 맥에서 사용하기
키체인의
키체인: 로그인
카테고리: 인증서 에서
Apple Worldwide Developer Relations Certification Authority
iPhone Developer: xxxxxx(yyyy)
iPhone Distribution: xxxxxx(yyyy)
위의 3가지 인증서를 선택 후 내보기기 한후 (xxxx.p12) 대상 맥에서 더블클릭 후 인증서 설치하면 된다
키체인: 로그인
카테고리: 인증서 에서
Apple Worldwide Developer Relations Certification Authority
iPhone Developer: xxxxxx(yyyy)
iPhone Distribution: xxxxxx(yyyy)
위의 3가지 인증서를 선택 후 내보기기 한후 (xxxx.p12) 대상 맥에서 더블클릭 후 인증서 설치하면 된다
2014년 4월 11일 금요일
Running a Java program as a daemon in Ubuntu Linux
Running a Java program as a daemon in Ubuntu Linux
출처
http://zerocool.is-a-geek.net/running-java-program-as-a-daemon-in-ubuntu-linux/
vsftpdg는 어플리케이션이름
service로 등록
sudo mv vsftpdg.sh /etc/init.d/vsftpdgsudo chmod +x /etc/init.d/vsftpdgsudo update-rc.d vsftpdg defaults
*centos의 경우 update-rc.d 대신에 chkconfig사용
chkconfig를 사용하기위해 쉘형식을 아래와 같이 맞춰야 함
=============#!/bin/sh## chkconfig: 2345 90 60# description: xxx server start / stop.~~~~~~
=============
sudo mv vsftpdg.sh /etc/init.d/vsftpdgsudo chmod +x /etc/init.d/vsftpdgsudo chkconfig --add vsftpdg
서비스로 실행
/etc/init.d/vsftpdg start/etc/init.d/vsftpdg stop/etc/init.d/vsftpdg restart
서비스 실행시
~~~~bad interpreter: 그런 파일이나 디렉토리가 없음 에러가 나올 경우
http://mydoc.digimoon.net/board/skin/ggambo7002_board/print.php?id=board&no=228 참고
2014년 3월 26일 수요일
[Objectiv-C] @property, @synthesize, getter, setter 그리고 _var의 사용법
_var의 사용법
@interface ViewController
@property (NSString *) aaa; //public
@end
===========================
@implement ViewController
@synthesize aaa = _aaa; //기본 필요없으나 setter, getter를 재정의 할때는 필요
@interface ViewController
@property (NSString *) aaa; //public
@end
===========================
@interface ViewController ()
@property (NSString *) bbb; //private
@implement ViewController
@synthesize aaa = _aaa; //기본 필요없으나 setter, getter를 재정의 할때는 필요
- (void)setAaa:(NSString *)aaa
{
_aaa = aaa;
//self.aaa는 사용말자. self.aaa는 setter 통해 접근할경우 사용되므로
//setter에서 다시 setter를 호출하는 형태가 되어버림.
}
- (NSString *)aaa
{
return _aaa;
//self.aaa는 역시 사용말자. self.aaa는 getter를 통해 접근할경우 사용되므로
//getter에서 다시 getter를 호출하는 형태가 되어버림.
}
// 클래스 내부에서 _aaa로 접근할경우 setter 또는 getter는 호출되지 않는다.
// 클래스 내부에서 self.aaa로 접근할경우 setter 또는 getter가 호출된다.
// 따라서 @property에 접근할 때 setter, getter를 통해서 접근할경우 self.var를 사용하고 그럴 필요가 없을 경우엔 _var를 사용한다. getter, setter이외에서는 특별한 이유가 없는 한 self.var를 사용하자.
@end
2014년 3월 11일 화요일
2014년 3월 3일 월요일
2014년 2월 13일 목요일
이클립스에서 웹프로젝트 복사해서 새프로젝트 만들기
- 프로젝트를 선택 후 복사
- 붙여넣기
- \project_name\.settings\org.eclipse.wst.common.component 에서 프로젝트명 변경
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="new_project_name">
<wb-resource deploy-path="/" source-path="/WebContent" tag="defaultRootSource"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/resources"/>
<property name="java-output-path" value="/new_project_name/build/classes"/>
<property name="context-root" value="new_project_name"/>
</wb-module>
</project-modules>
- 다음 파일도 일단 확인
\Projects\workspace\new_project_name\.project
<projectDescription>
<name>new_project_name</name>
.....
</projectDescription>
- 붙여넣기
- \project_name\.settings\org.eclipse.wst.common.component 에서 프로젝트명 변경
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="new_project_name">
<wb-resource deploy-path="/" source-path="/WebContent" tag="defaultRootSource"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/resources"/>
<property name="java-output-path" value="/new_project_name/build/classes"/>
<property name="context-root" value="new_project_name"/>
</wb-module>
</project-modules>
- 다음 파일도 일단 확인
\Projects\workspace\new_project_name\.project
<projectDescription>
<name>new_project_name</name>
.....
</projectDescription>
2014년 1월 21일 화요일
[iOS] XCode 에서 앱 이름 변경
- 전에 된것 같은데 안되는 케이스
1. Project 선택 > Target 선택 > Build Setting 선택 후 검색창에 'product name' 입력 한 후
2. Target 선택
3. Build Setting 선택
4. 검색창에 'product name' 입력
5. Product Name 에서 $(TARGET_NAME)을 새로운 이름으로 변경
6. 끝
...라는데 안되네.
"could not inspect the application package name" 메세지 표시되고 디바이스에 설치 안됨.
- 되는 케이스
1. xxx-Info.plist 선택
2. Bundle display name 선택
3. 새로운 이름으로 변경
4. 끝
*** 그리고 개발자센터에서 앱 등록 정보에서 이름 변경
2013년 12월 23일 월요일
centos svn 서버 구축
centos svn 서버 구축
3. 설정하기
# cd /home/svn/{저장소 이름}/conf
conf 폴더 안에 보면 설정파일이 세 개 있다..
1)
# vi svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
realm = {Repository Group Name}
2)
# vi passwd
[users]
{아이디} = {비번}
3)
# vi authz
[{저장소 이름}:/]
{아이디} = rw
추가의 경우
2, 3, 7, 8 만 작업할면 된다
1. 설치
# yum install -y subversion
2. 폴더 생성 및 Repository 생성
# mkdir /home/svn
# cd /home/svn
# svnadmin create --fs-type fsfs {repository name}
# chmod -R g+w {repository name}
# cd /home/svn/{저장소 이름}/conf
conf 폴더 안에 보면 설정파일이 세 개 있다..
1)
# vi svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
realm = {Repository Group Name}
2)
# vi passwd
[users]
{아이디} = {비번}
3)
# vi authz
[{저장소 이름}:/]
{아이디} = rw
4.방화벽 설정
# vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 3690 -j ACCEPT
# service iptables restart
* 방화벽 포트 설정이 에러가 날 경우 리눅스 자체의 setup 커맨드를 이용해서 방화벽 3609(tcp, upd)를 열어줄것
* 방화벽 포트 설정이 에러가 날 경우 리눅스 자체의 setup 커맨드를 이용해서 방화벽 3609(tcp, upd)를 열어줄것
5. 환경파일설정
svnserve를 서비스로 구동시키려면 아래와 같이 환경설정파일을 추가해줘야한다
# vi /etc/sysconfig/svnserve
위 경로에 파일이 존재하지 않을텐데 vi편집기로 파일을 생성해서 아래의 내용저장
OPTIONS="--threads --root /{repository 디렉토리}"
6.서버 기동
# svnserve -d -r /home/svn/ --listen-port 3690
# killall svnserve
# svnserve -d -r /home/svn/ --listen-port 3690
# killall svnserve
7. 기본 폴더 생성
8. 소스 코드 import
8.1 이클립스에서 작업
이클립스에서 이미 생성된 프로젝트를 share project 메뉴를 통해 trunk에 하면 root에 커밋이 되버린다. 따라서 svn repositories 에서 위의 작업으로 생성된 리파지토리를 추가 trunk선택 후 메뉴에서 import 한다. trunk에서 checkout 할것.
8.2 터미널에서 작업
svn server 로그아웃 후 로컬 작업
# export SVN_EDITOR=/usr/bin/vim
# svn mkdir svn://{Server domain or IP}/{저장소 이름}/trunk
* 위 명령어 치면 에디터가 뜨는데 :wq! 명령으로 저장후 닫은후 계속(C)를 선택하면 된다.
* trunk 생성 시 "Store password unencrypted (yes/no)?" 에서 yes 또는 예(리눅스 인코딩이 한글의 경우)를 입력
* 위 명령어 치면 에디터가 뜨는데 :wq! 명령으로 저장후 닫은후 계속(C)를 선택하면 된다.
* trunk 생성 시 "Store password unencrypted (yes/no)?" 에서 yes 또는 예(리눅스 인코딩이 한글의 경우)를 입력
# svn mkdir svn://{Server domain or IP}/{저장소 이름}/branches
# svn mkdir svn://{Server domain or IP}/{저장소 이름}/tags
#기본폴더 확인
svn list svn://{Server domain or IP}/{저장소 이름}
branches/
tags/
trunk/
8. 소스 코드 import
8.1 이클립스에서 작업
이클립스에서 이미 생성된 프로젝트를 share project 메뉴를 통해 trunk에 하면 root에 커밋이 되버린다. 따라서 svn repositories 에서 위의 작업으로 생성된 리파지토리를 추가 trunk선택 후 메뉴에서 import 한다. trunk에서 checkout 할것.
8.2 터미널에서 작업
svn server 로그아웃 후 로컬 작업
# svn import -m "initial import" ./project_folder/ svn://[user_name]@[server_name]/[repository_path]/project_name/trunk/
* branches, tags는 클라이언트에서 필요할때 커밋하는게 편함추가의 경우
2, 3, 7, 8 만 작업할면 된다
==================== 참고 ==============================
아래 두 사이트를 비교해 가서 설정 할 것
** 방화벽 포트 설정이 에러가 날 경우 setup을 이용해서 방화벽 3609(tcp, upd)를 열어줄것
** trunk 생성 시 "Store password unencrypted (yes/no)?" 에서 yes 또는 예(리눅스 인코딩이 한글의 경우)를 입력
svn 구축 후 trunk, branches, tags에 소스 import(branches와 tags는 필요에 따라)
http://www.netrail.info/?p=2477(4,5,6번 실행)
기본적으로 trunk에서 작업하고 tag 또는 branches를 사용하고 싶을 때는 UI툴 보다는 터미널에서 svn copy로 작업하는게 빠르겠다.
==================================================
구축 후 새로운 프로젝트(=repository)를 추가 할 경우
1. repository 생성
2. conf 파일 수정
3. trunk, branches, tags폴더 생성
4. 로컬 프로젝트를 서버의 trunk로 import
svn import -m “new import" ./test_app/ svn://username@xxx.xxx.xxx.xxx/project_name/trunk/
5. 서버의 trunk에서 tags, branches로 카피
6. IDE에서 svn tool로 checkout(프로젝트 하나당 리포지토리하나)
7. 끝
2013년 11월 18일 월요일
Remove my project from SVN source control
출처
http://iphonedevsdk.com/forum/iphone-sdk-tools-utilities/96459-remove-my-project-from-svn-source-control.html
1. cd to the top level project directory in Terminal
2. find ./ -name .svn -exec rm -rf {} \;
http://iphonedevsdk.com/forum/iphone-sdk-tools-utilities/96459-remove-my-project-from-svn-source-control.html
1. cd to the top level project directory in Terminal
2. find ./ -name .svn -exec rm -rf {} \;
2013년 11월 11일 월요일
다른 프로젝트를 참조하는 웹 프로젝트에서 classnotfoundexception일 발생할 경우
Build Config에서 참조 프로젝트가 추가되어 있는 지 확인 후
Project의 Properties > Deployment Assembly > Add...후 배포 경로에 프로젝트를 추가 해 주면 되더라.
* 주의) 실제 배포 시 위의 두 가지 설정과는 별개로 참조되는 프로젝트는 jar파일로 만들어 lib폴더에 배포해줘야 함.
Project의 Properties > Deployment Assembly > Add...후 배포 경로에 프로젝트를 추가 해 주면 되더라.
* 주의) 실제 배포 시 위의 두 가지 설정과는 별개로 참조되는 프로젝트는 jar파일로 만들어 lib폴더에 배포해줘야 함.
2013년 11월 10일 일요일
XCode 5 에서 신규 프로젝트 svn서버에 넣기
Xcode 5, Export Project to SVN repository
http://stackoverflow.com/questions/18894195/xcode-5-export-project-to-svn-repository
2013년 8월 12일 월요일
스프링 기반 웹프로젝트 구축
◆ JEE용 이클립스 다운
◆ 프로젝트 인코딩 설정(java 및 페이지파일등등)
Window>Pref..>General>Content Types에서 페이지파일 UTF-8으로 설정
Window>Pref..>General>Workspace에서 UTF-8으로 설정
◆ 이클립스(JEE) market place에서 sts설치
◆ 이클립스 market place에서 subversive 설치(+커넥터)
◆ Dynamic web project 생성
◆ 폴더 및 스프링 설정
◆ 초기페이지 /WEB-INF/view/의 페이지로 리다이렉션
/index.jsp -> /web-inf/view/main.jsp
스프링시큐리티 세팅 후 삭제
◆ jquery, ajax 세팅
각 메뉴는 일반 submit으로 1:1로 페이지를 만들고 페이지 내부는 ajax로 처리
all ajax는 history back을 고려했을 때 문제가 있음.
◆ json 세팅
jackson-all-1.9.0.jar
json-lib-2.3-jdk15.jar
json-lib-ext-spring-1.0.2.jar
json-simple-1.1.1.jar
+
http://json-lib.sourceforge.net/ (필요한 라이브러리 리스트)
◆ mybatis설정
◆ log4j설정
◆ 스프링시큐리티 설정
◆ jQuery validation
◆ jQuery i18n
스크립트단 jQuery i18.properties
html단 spring tag(MessageSource)
http://viralpatel.net/blogs/spring-3-mvc-internationalization-i18n-localization-tutorial-example/
◆ 프로젝트 인코딩 설정(java 및 페이지파일등등)
Window>Pref..>General>Content Types에서 페이지파일 UTF-8으로 설정
Window>Pref..>General>Workspace에서 UTF-8으로 설정
◆ 이클립스(JEE) market place에서 sts설치
◆ 이클립스 market place에서 subversive 설치(+커넥터)
◆ Dynamic web project 생성
◆ 폴더 및 스프링 설정
◆ 초기페이지 /WEB-INF/view/의 페이지로 리다이렉션
/index.jsp -> /web-inf/view/main.jsp
스프링시큐리티 세팅 후 삭제
◆ jquery, ajax 세팅
각 메뉴는 일반 submit으로 1:1로 페이지를 만들고 페이지 내부는 ajax로 처리
all ajax는 history back을 고려했을 때 문제가 있음.
◆ json 세팅
jackson-all-1.9.0.jar
json-lib-2.3-jdk15.jar
json-lib-ext-spring-1.0.2.jar
json-simple-1.1.1.jar
+
http://json-lib.sourceforge.net/ (필요한 라이브러리 리스트)
◆ mybatis설정
◆ log4j설정
◆ 스프링시큐리티 설정
◆ jQuery validation
◆ jQuery i18n
스크립트단 jQuery i18.properties
html단 spring tag(MessageSource)
http://viralpatel.net/blogs/spring-3-mvc-internationalization-i18n-localization-tutorial-example/
2013년 7월 21일 일요일
String 을 Byte 단위로 자르는 함수
출처 http://dreamchaser.tistory.com/10
/**
* String 을 BYTE 단위로 자르는 함수
* @author 박동규
* @param startIndex, length
* @return String 잘려진 문자열
*/
public String cutStringToByte (String str, int startIndex , int length) {
byte[] b1 = null;
byte[] b2 = null;
try{
if(str == null ) {
return "";
}
b1 = str.getBytes();
b2 = new byte[length] ;
if( length > (b1.length - startIndex) ) {
length = b1.length - startIndex;
}
System.arraycopy(b1,startIndex,b2,0,length);
} catch (Exception e) {
e.printStackTrace();
}
return new String(b2);
}
/**
* String 을 BYTE 단위로 자르는 함수
* @author 박동규
* @param startIndex, length
* @return String 잘려진 문자열
*/
public String cutStringToByte (String str, int startIndex , int length) {
byte[] b1 = null;
byte[] b2 = null;
try{
if(str == null ) {
return "";
}
b1 = str.getBytes();
b2 = new byte[length] ;
if( length > (b1.length - startIndex) ) {
length = b1.length - startIndex;
}
System.arraycopy(b1,startIndex,b2,0,length);
} catch (Exception e) {
e.printStackTrace();
}
return new String(b2);
}
2013년 5월 30일 목요일
Xcode 에서 프로젝트 복사해서 별도의 프로젝트 생성하기
1. 파인더에서 프로젝트 폴더로 가서 프로젝트 폴더를 통채로 별도의 폴더에 복제
2. 복제된 폴더의 프로젝트 파일을 연다.
3. 왼쪽 창에서 프로젝트 루트를 선택한 후 오른쪽 인스펙터의 project name 창에서 원하는 프로젝트 명을 입력한 후 엔터를 누르면 target, pch, info 파일 등을 rename할 거냐고 물어본다.
4. rename 선택하면 끝
2013년 5월 29일 수요일
안드로이드 레이아웃 겹치기
혹시 저작권에 문제가 된다면 연락주시면 삭제하겠습니다.
레이아웃 겹치기
카메라 어플을 쓰다보면 기능을 조작하는 부분과 화면이 보이는 2가지 레이아웃을 겹치게 되
는데 이것을 한번 해봅시다.
main.xml
<?xml version="1.0" encoding="utf-8"?>
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="이것은 바닥에 있는 레이아웃입니다."
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="바닥의 버튼"
/>
</LinearLayout>
over.xml
<?xml version="1.0" encoding="utf-8"?>
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:background="#40ffff00"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="이것은 위쪽에 겹쳐진 레이아웃입니다."
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="위쪽의 버튼"
/>
</LinearLayout>
자바파일
package com.android.ex85;
import android.app.*;
import android.content.*;
import android.os.*;
import android.view.*;
import android.widget.*;
public class ex85 extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Window win = getWindow();
win.setContentView(R.layout.main);//첫번째에 메인을 깔고
//그다음 인플레이션으로 겹치는 레이아웃을 깐다
LayoutInflater inflater = (LayoutInflater)getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
LinearLayout linear = (LinearLayout)inflater.inflate(R.layout.over, null);
LinearLayout.LayoutParams paramlinear = newLinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.FILL_PARENT);
win.addContentView(linear, paramlinear);//이 부분이 레이아웃을겹치는 부분
//add는 기존의 레이아웃에 겹쳐서 배치하라는 뜻이다.
}
}
피드 구독하기:
글 (Atom)