프로그래밍 55

젠킨스에서 IOS빌드 및 배포

젠킨스의 해당 잡에서 build에 excute shell을 추가합니다. xcode 빌드는 xcodebuild라는 녀석을 통해합니다.xcodebuild는 xcode에서 commandline tool을 설치하면 됩니다. (preference에 있습니다.)xcodebuild -project "프로젝트의 상대경로.xcodeproj" -configuration "Release or Debug or anything else" -scheme 스킴이름 clean archive -archivePath "생성할 xcarchive 상대경로.xcarchive"xcodebuild -exportArchive -exportFormat ipa -archivePath "위에서 생성한 xcarchive 상대경로.xcarchive" -e..

Jenkins에서 Unity 빌드하기

목적 : CI를 통해 Unity빌드를 자동화 한다. 필요한 것Unity proSVNJenkinsJDK(jenkins설치시 필요)Jenkins의 unity build plugin 진행 과정0. 젠킨스 설치0-1. jenkins를 다운로드 후, 설치를 하면 Applications(응용 프로그램)/Jenkins/jenkins.war가 생성된다.0-2. terminal에서 jenkins.war의 디렉터리로 이동 후, $java -jar jenkins.war 명령을 실행한다.0-3. 사파리에서 localhost:8080으로 접속한다. - Default port번호는 8080 변경하고 싶으면 --httpPort=번호 로 바꿔준다.1. 시스템 설정을 한다.1-1. JDK Installations - mac에서 JAV..

아이폰 개발 - In app purchase, store kit

헤더파일 : StoreKit/StoreKit.h 라이브러리파일 : StoreKit.framework 딜리게이트 : SKProductsRequestDelegate 상품 요청 SKProductsRequest *preq = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:PRODUCT_ID]]; preq.delegate = self; [preq start]; - PRODUCT_ID : In app purchase에 등록한 상품 아이디를 입력하시면 됩니다. ex)com.sadun.app.item1 상품 요청에 대한 응답 -(void)productsRequest(SKProductsRequest*)req didReceiveResp..

아이폰 개발 - resource, document폴더(접근가능한 폴더)

아이폰은 잠겨져있는 것들이 많다. 사용자들에게는 상관없는것들은 다 접근이 힘들다. resource폴더 - resource폴더는 어플리케이션에 쓰일 리소스들이 있는 폴더다. 프로그래머는 이곳에 리소스들을 넣어놓고 접근을하여 사용한다. - 읽기만 가능. - 접근방법 NSString* resourceDir = [[NSBundle mainBundle] resourcePath]; const char* szResourceDir = [resourceDir UTF8String]; document폴더 - document폴더는 어플리케이션에 필요한 데이터들이 있는 폴더다. 프로그래머는 이곳에서 필요한 데이터를 저장하고 불러와 사용할 수 있다. - 읽고, 쓰는것 가능. - 접근방법 NSArray* pMyPathList = ..

파일 입출력, 파일 포인터(FILE* fp)

파일포인터는 쓸때마다 까먹는것 같습니다. 사용하는 함수들도 많고... fopen할때도 옵션은 또 뭐 그리 많은지 파일포인터란 파일을 가르키는 포인터입니다. FILE* fp = fopen("FileName.txt", "rb"); FILE* - 파일포인터 입니다. fopen - 파일을 불러오는 함수입니다. "FileName.txt" - 파일 이름입니다. "rb" - 파일을 불러올때의 옵션입니다. 파일 옵션 r - 읽기 전용, 파일이 존재하지 않을 경우 NULL을 리턴. w - 쓰기 전용, 파일이 존재하지 않을 경우 새로 만들고, 파일이 존재할 경우 삭제하고 새로 만든다. a - append(덧붙이다), 파일이 존재하지 않을 경우 새로 만들고, 파일이 존재할 경우 파일 맨 끝에 파일포인터가 존재하게 된다. 맨..

OpenAL의 시작

Openal에 대한 정보가 너무 없네요... 특히 한국어로 된 정보는 찾기 너무 힘듬..ㅜ;;어떻게 제가 찾은 정보라도 번역해서 포스트 해봅니다. 1. Opanal 구조 OPENAL이 초기화 될 때, 적어도 하나의 Device가 초기화 되야 하고, Device하나가 초기화 될 때, 적어도 하나의 Context가 초기화 되어야 합니다. 그리고 Context가 초기화 될 때, 하나의 Listener 객체가 생성되고, 여러개의 Source객체를 생성할 수 있게 되고, 그것에 하나 또는 추가적인 Buffer객체를 연결할 수 있습니다. 여기서 Buffer는 Context의 일부가 아니라 하나의 Device에 있는 모든 Context에 섞여 나뉘어져 있는 것입니다. 2. Device 초기화 // 초기화 Device..

OSI 7계층과 TCP/IP 4계층

OSI 7계층 응용 계층(Application Layer) - 응용 프로세스를 네트워크에 연결할 수 있게 해서 자료를 송수신할 수 있는 창구를 제공한다. 사용자가 이메일을 전송하거나 웹 브라우저를 통해 웹 서버에 연결하면 해당 서비스는 응용 계층에서 SMTP, POP3 HTTP등의 프로토콜을 이용해 서비스한다. 표현 계층(Presentation Layer) - 통신하는 컴퓨터 간의 데이터 표현의 차이를 해결하기 위해 자료의 형식을 변환해 주거나 공통의 형식을 제공해 주는 계층이다. 아스키 코드와 EBCDIC 코드의 변환, 그래픽 정보나 영상 정보를 JPEG나 MPEG 등으로 변환해서 전송하는 기능을 수행한다. 또한 네트워크 보안을 위해 자료를 암호화해서 전송하고 수신측에서는 이를 해독하는 기능도 수행한다..

TCP기반의 에코서버/클라이언트

//TCP기반의 에코서버 //made by chessire #include #include #pragma comment(lib, "ws2_32.lib") void Error(char* szMessage); void main() { SOCKET s; // 서버 소켓 디스크립터 SOCKET cs; SOCKADDR_IN server; // 소켓 구조체 SOCKADDR_IN client; // 소켓 구조체 WSADATA wsaData; // 스타트업 구조체 int size = sizeof(client); char value[256]; //수신을 위한 정수값 WSAStartup(MAKEWORD(2,2), &wsaData); s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); //T..