본문 바로가기

Programming

[JSP] HTTP 에러코드 정리 출처 : http://hyeonstorage.tistory.com/97 HTTP 에러코드 정리 - HTTP 에서 에러가 발생하면 해당 에러와 관련 에러 코드를 발생한다. - 이 많은 에러들을 다 알고 있을 필요는 없지만 이번에는 이 에러 코드를 정리해 해보겠다. - 주로 많이 발생하는 에러는 404, 500 에러 이다. HTTP 에러코드 에러 메시지 100 Continue 101 Switching Protocols200 OK, 에러 없이 전송 성공 202 Accepted, 서버가 클라이언트의 명령을 받음 203 Non-authoritative Information, 서버가 클라이언트 요구 중 일부만 전송함 204 Non Content, 클라이언트 요구를 처리했으나 전송할 데이터가 없음 205 Reset .. 더보기
[CUDA] nVidia GPU의 CUDA 관련상세 Specification 정보 알아보기 출처 : http://icysword.blog.me/140202060932 nVidia GPU의 CUDA 관련상세 Specification 정보 알아보기 CUDA 학습을 하기 위하여 nVidia 그래픽 카드 장착후 해당 GPU의 상세 스펙을 알고 싶은데, 사이트에서 찾을 수가 없다. (내가 영어가 약해서 잘 찾지를 못하는 건가 ??? ㅠㅠ) 간단한 예제 프로그램으로 해당 정보를 알 수가 있다. [-] Collapse 위의 Code로 cu 파일을 만들어서 실행하면 화면에 CUDA 관련 상세한 Spec이 출력된다. cudaDeviceProp 의 각 Property의 의미는 아래와 같다. [-] Collapse 위의 방법 말고도 CUDA 설치 파일 중에 deviceQuery.exe 파일을 실행해도 된다. de.. 더보기
[CUDA] 용어 정리 출처 : http://icysword.blog.me/140202059108 SP (Streaming Processor) : GPU 에서 연산을 하는 코어 유닛. 연산을 위한 레지스터, 실수연산용FPU (FP), 정수연산용 ALU (Int), 데이터 로드/스토어용 LSU (move, cmp) . CUDA에서 4개의 Thread를 동작 SFU (Special Function Unit) : Sin, Cos, 역수, 제곱근, Graphic Interpolation 등 특수연산 SM (Streaming Multiprocessor) : 8개 SP, 2개의 SFU, 공유메모리, 캐시로 구성. CUDA에서 워프와 블록을 실행 GTX 770 같은 경우는 8 SM x 192 Core = 1536 CUDA Core 이다. .. 더보기
[CUDA] Visual Studio 2013에서 CUDA 개발 환경 구축 출처 : http://bwoh.tistory.com/79 VS2013에서 CUDA 개발 환경 구축 CUDA설치방법(VS2013).pdf 위의 pdf 파일을 열 수 없으신 분들은 다음의 그림들을 참조하십시오. Microsoft Dream Spark : http://www.dreamspark.comCUDA-Zone : http://developer.nvidia.com/cuda-zoneCUDA 6.5 다운로드: http://developer.nvidia.com/cuda-downloads (아래 그림 링크는 안 열리니 위의 링크를 사용하세요~) 더보기
[CUDA] CUDA C 프로그래밍 예제 출처 : http://blog.naver.com/lsh00124/220648533555 CUDA C 프로그래밍 예제 Standard C Code C with CUDA extensions 호스트, 디바이스 메모리 할당 및 초기화 호스트에서 디바이스로 메모리 카피 커널 실행 디바이스에서 호스트로 메모리 카피(결과값 전달) 호스트, 디바이스 메모리 할당 예제 더보기
[NEON] 수학, 이항, 스칼라 연산 1. 수학연산NEON에서는 수학 함수로 역수와 역수 제곱근에 관련된 함수를 제공한다. (제곱근 함수는 지원하지 않는다.) 1.1 역수 함수벡터의 각 레인에 대해서 역수를 계산한다. float32x4_t r = vrecpeq_f32(float32x4_t a) 1을 레인의 값으로 나누고 그 결과를 저장한다. 1.2 역수 제곱근 함수벡터의 각 레인에 대해서 제곱근의 역수 값을 계산한다.float32x4_t r = vrsqrteq_f32(float32x4_t a)레인의 제곱근 값으로 나누고 그 결과를 저장한다. 수식으로 풀면 r = 1/sqrt(a) 1.3 역수 확장 함수2에서 두 벡터의 레인 사이의 곱하기 연산 결과를 뺀다. 이를 식으로 나타내면 r = 2 - (a * b)와 같다. float32x2_t vr.. 더보기
[NEON] 변환 연산 1. NEON 변환 연산벡터의 변환은 NEON의 모든 연산에서 유용하게 사용되며, 필요에 따라서 여러 방법으로 사용할 수 있다.벡터의 변환은 더블 워드 벡터를 연산하여 쿼드 워드 벡터에 저장하거나, 그 반대의 경우 포화 연산을지원하지 않는 연산에서 오버플로를 방지하기 위해서 사용된다. 1.1 벡터 결합 함수벡터를 두 배 크기로 확장할 때 벡터 결합을 사용한다.벡터 결합 함수는 레인의 수는 변경되고, 레인의 크기는 변경되지 않는다. int16x8_t r = vcombine_s16(int16x4_t a, int16x4_t b)16bit 레인 더블 워드 벡터 2개를 결합하여 16bit 레인 쿼드 워드 벡터를 생성한다. 1.2 벡터 분할 함수벡터 변수의 분할은 high분할과 low 분할로 나뉜다.결합과 마찬가지.. 더보기
[NEON] 비교 연산과 절대값 1. 비교 연산1.1 같음(==) 비교 함수벡터 사이에 레인 값이 같은지 비교한다. uint16x8_t r = vceqq_s16(int16x8_t a, int16x8_t b)벡터 a와 b의 레인이 같은 값인지 비교하여 벡터 r의 각 레인에 결과가 참이면 16진수로0xffff, 거짓이면 16진수로 0x0000을 저장한다. 1.2 크거나 같음(>=) 비교 함수벡터 사이에 레인 값이 크거나 같은지 비교한다. uint16x8_t r = vcgqe_s16(int16x8_t a, int16x8_t b)벡터 a가 b보다 크거나 같은지 비교하여 벡터 r의 각 레인에 그 결과가 참이면0xffff, 거짓이면 0x0000을 저장한다. 1.3 작거나 같음() 비교 함수벡터 사이에 레인 값이 큰지를 비교한다. uint16x8_.. 더보기
[NEON] 비트와 시프트 연산 1. 비트 연산1.1 NOT(~)연산uint8x8_t r = vmvn_u8(uint8x8_t a)벡터의 모든 레인에 NOT 연산을 실행 1.2 AND(&) 연산uint8x8_t r = vand_u8(uint8x8_t a, uint8x8_t b)두 벡터의 레인 사이에 AND(&)연산을 실행 1.3 OR(|) 연산uint8x8_t r = vorr_u8(uint8x8_t a, uint8x8_t b)두 벡터의 레인 사이에 OR(|) 연산을 실행 1.4 XOR(^) 연산uint8x8_t r = veor_u8(uint8x8_t a, uint8x8_t b)두 벡터의 레인 사이에 XOR(^) 연산을 실행 1.5 AND NOT(&~) 연산uint8x8_t ar = vbic_u8(uint8x8_t a, uint8x8_t .. 더보기
[NEON] 레인 설정과 조회 NEON 에서는 벡터 안의 레인에 다양한 값을 저장하거나, 레인의 값을 확인할 수 있다. 또한, 하나의 벡터 안에서 레인 사이의 교환(swap)도 가능하다. 레인 설정함수 중 몇 개는 벡터 저장 함수 중에서 브로드캐스트 함수나 레인 저장함수와 결과가 같은데, 이는 어셈블러 명령어 차이에 따른 것으로 성능의 차이는 없다. 1. NEON 레인 설정NEON 에서는 벡터의 특정 레인의 값을 불러오거나 변경 할수 있다. 단 레인 설정에 관련된 모든 함수는 복수 벡터에 지원하지 않는다. 1.1 레인 추출 함수지정된 레인의 값 하나를 일반 변수에 저장한다.uint16_t r = vgetq_lane_u16(uint16x8_t a, __constrange(0, 7) int lane)예) lane이 2일때 변수 r에 벡터.. 더보기
[NEON 산술 연산과 확장 NEON 에서는 벡터 변수 사이의 기본 산술 연산을 지원하고, 포화 더하기와 인접 레인 더하기 등 NEON만의 독특한 산술 연산도 지원한다. 또한 최댓값 및 최솟값 연산과 Long, Wide, Narrow, 포화와 관련된 산술 연산을 지원한다. NEON에서는 나누기와 제곱근 연산은 지원하지 않아서 Shift 연산이나 역수를 이용해야 한다. 1. NEON 기본 산술 연산 (더하기, 빼기, 곱하기, 레인 최댓값, 최솟값, 인접 레인 더하기 함수)(1) 더하기 함수uint16x8_t r = vaddq_u16(uint16x8_t a, uint16x8_t b) a + b 를 r벡터에 저장 (2) 빼기 함수uint16x8_t r = vsubq_u16(uint16x8_t a, uint16x8_t b) a - b 를 .. 더보기
[NEON] 함수 정리 (로드 함수, 저장 함수) 단일 로드 함수일반 로드 함수uint16x8_t = r = vld1q_u16(__transfersize(8) uint16_t const *ptr)메모리 배열에서 벡터로 데이터를 가져온다. (메모리 배열 요소와 벡터의 레인 크기가 같아야 한다) 레인 로드 함수uint16x8_t r = vld1q_lane_u16(__transfersize(1) uint16_t const *ptr, uint16x8_t a, __constrange(0, 7) int nlane)메모리의 값을 벡터의 특정 레인으로 가져온다.(ptr 메모리 변수에서 nlane번쨰 값을 a로 변환) 브로드캐스트 로드 함수uint16x8_t q = vld1q_dup_u16(__transfersize(1) uint16_t const *ptr)벡터의 모든.. 더보기
[NEON] 벡터 자료형 벡터 데이터형 : 1차원 배열 형태를 갖는 데이터형벡터 데이터 : 공간 정보의 기본 단위인 점, 선, 면을 사용하여 실세계의 위치를 2차원 또는 3차원의 좌표값으로 표현한 자료. 래스터 자료(raster data)와 더불어 공간 정보 저장 방식의 두 축을 이루고 있다. NEON에서의 벡터 데이터 유형벡터를 나타내기 위해 다음 유형을 정의합니다. NEON 벡터 데이터 유형은 다음 패턴에 따라 명명됩니다. x_t예를 들어 int16x4_t는 각각 부호 있는 16비트 정수를 포함하는 4개의 레인이 있는 벡터입니다. Table E.1에서는 벡터 데이터 유형을 나열합니다. Table E.1. 벡터 데이터 유형int8x8_tint8x16_tint16x4_tint16x8_tint32x2_tint32x4_tint64x.. 더보기
[NEON] 기본 개념 출처 : http://vision0814.tistory.com/57NEON의 자료형{0,1}을 통한 다항식 산술이란 숫자 0과 1을 이용하여 bool 산술 규칙을 이용하는 것을 말한다. NEON 벡터의 크기NEON 벡터(변수) 는 레지스터와 연결되어 있고, NEON 함수는 레지스터를 제어하기 위해서 사용된다. 더블워드(64bit) NEON벡터(D 레지스터) 0 + 0 = 1 + 1 = 0, 0 + 1 = 1 + 0 = 1, 0 * 0 = 0 * 1 = 1 * 0 = 0, 1 * 1 = 1 - 8개의 8비트 요소- 4개의 16비트 요소- 2개의 64비트 요소- 1개의 64 비트 요소 쿼드워드(128bit) NEON벡터(Q 레지스터)- 16개의 8비트 요소- 8개의 16비트 요소- 4개의 32비트 요소- 2.. 더보기
CUDA C 확장 키워드(CUDA C Extension) CUDA C extension, 즉 CUDA C에서 확장된 키워드들에 대하여 소개하고자 합니다. 예제 코드를 보면 __global__과 같은 키워드들을 발견할 수 있을 것입니다. 이러한 키워드들이 어떤 의미이며 무슨 역할을 하는지 알아야 보다 효율적인 프로그래밍을 할 수 있을 것입니다. 1. 함수의 수식어 함수의 수식어들은 어디서 호출할 수 있느냐와 어디서 실행되느냐에 따라 나뉩니다. __global__, __device__, __host__, __device__ __host__ 이렇게 총 4가지의 경우가 가능합니다. __global__ 디바이스에서 실행되는 함수를 뜻합니다. 여기서 device란 이전 포스팅에서도 언급했듯이 GPU를 뜻합니다. __global__로 수식된 함수는 host에서 호출할 수는.. 더보기
HTML5를 이용한 프리젠테이션(PPT) 만들기 HTML5 프리젠테이션 도구를 아시나요?외부 강연을 하다보면 발표 자료를 자주 만드는데, 대부분 MS PowerPoint나 Apple Keynote 같은 것을 사용하게 됩니다. 그리고 나서 Slideshare나 Slidedeck 같은데 올리고 공유하게 되지요. 하지만 HTML 마크업만 조금 배우고, 손 코딩에 익숙한 분들에게는 '웹 기반 프리젠테이션 도구'를 추천합니다.전용 프로그램 만큼 강력한 기능을 제공해 주고, 무엇 보다 웹 브라우저만 있으면, 어디서나 쉽게 PT가 가능하고 웹 콘텐츠를 풍성하게 할 수 있으니까요. (아래 데모들은 모바일 보다는 PC 웹 브라우저 특히, 파이어폭스나 크롬에서 잘 보입니다.)1. Reveal.js Github에서 당당하게 가장 많은 인기를 끌고 있는 웹 프리젠테이션 도.. 더보기
캐스트 연산자 reinterpret_cast C++의 4가지 캐스트 연산자에 대한 이야기 중 네 번째다.이번은 그중에서 reinterpret_cast 에 대해서 이야기한다. 자...이제 C++ 캐스트 연산자의 복병이 등장한다.이전에 static_cast 이야기를 하면서 살짝 사기를 쳤다.C 스타일의 캐스팅과 가장 비슷한 기능을 하는 무적의 캐스팅은 그 이름도 복잡한 reinterpret_cast 다. 이 캐스트 연산자는 C 스타일의 캐스팅만큼은 아니지만 별반 차이 없이 무배뽀다.캐스팅 대상을 캐스팅 타겟 타입으로 비트단위로 다시 재해석한다고 보면 된다.다른 캐스트 연산자가 처리하지 못하고 남은 뒤치다꺼리를 모두 한다.다만 const_cast 의 역할인 상수성을 날린다거나 하는 등의 기능은 수행하지 못한다. - reinterpret_cast 사용re.. 더보기
NODE.JS – JADE를 사용한 간단한 RESTFUL API(GET,POST) 출처 : http://avilos.codes/server/nodejs/node-js-jade%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EA%B0%84%EB%8B%A8%ED%95%9C-restful-api/[Express 프로젝트 생성] [package.json에 라이브러리 추가하여 설치]“method-override”:”*” [app.js]12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364var express = require('express');var path = require('path');var favicon =.. 더보기
Node.js 공부 자료 Node.js 기본 사용법http://pyrasis.com/nodejs/nodejs-HOWTO Node.js: 비동기 프로그래밍 이해http://www.nextree.co.kr/p7292/ 왜 Node.js 인가?http://blog.doortts.com/219 http://www.nodebeginner.org/index-kr.html#javascript-and-nodejs NodeJS 한글판 참고자료 입니다. Node.js 웹 애플리케이션을 작성 포함내용 (서버 사이드 JavaScript, 함수형 프로그래밍, blocking 과 non-blocking 동작, callback, 이벤트, custom, 내부, 외부 모듈 그 외) 추가로 프로그래밍 공부 사이트http://codecombat.com/게임하듯이.. 더보기
[html] checkbox 무조건 클릭 된 상태로 변경(read only 비슷한 기능) nodejs위에 Jade로 웹 개발 작업을 하면서 체크박스를 사용하게 될 일이 있었는데체크박스를 눌러도 해제가 되지 않는 체크박스를 구현 해야하는 경우가 있었다.만약 하고 싶다면 아래와 같이 하면 된다. label.checkbox-inline input(type="checkbox" value="value" checked="checked") | checkbox test1brlabel.checkbox-inline input(type="checkbox" value="value" checked="checked" onclick="return false") | checkbox test2 더보기
Python virtualenv 사용법(MAC기준,pip사용) 출처 : http://hackersstudy.tistory.com/43 학생때나 초보때는 실제로 root나 시스템에 기본으로 있는 하나의 컴파일러환경에서 개발하는 경우가 많다 virtualenv를 사용해야하는 이유부터 설명하고 난뒤에 virtualenv를 세팅하는 방법 및 python을 세팅하는법에 대해서 설명을 하도록 하겠다 virtualenv를 사용해야하는이유 : 프로그래머가 개발하는 환경 != 프로그램이 실행될 환경 이경우에 우리는 결국에 다만들어놓고 디버깅끝낸 이후에 프로그램이 돌아갈 대상환경에서 다시한번 디버깅을 해야하는 일을 만들어낸다 또한 개발환경에서 프로젝트별 독립된 개발환경을 제공해줘야 각각의 프로젝트의 환경변수들이 꼬이는 일이 발생하지않는다. 실제로 사용할 프레임워크의 버전충돌을 피할수.. 더보기
Python-및-Django-설치 http://kanilog.com/entry/Python-및-Django-설치 더보기
Developing Websites Using Python and Django https://mva.microsoft.com/en-us/training-courses/developing-websites-using-python-and-django-11415?l=aqdtenejb_4004300477 더보기
Python + Django 개발환경 설정하기 (Windows) http://blog.choyoungil.com/84 더보기
Call by Reference vs Call by Address 1. Call by value 는 쉬운 개념이니 아실거라고 믿고 넘어가겠습니다. 2. Call by Reference는 주소값을 넘기는것입니다.주소값이 넘어 가기 때문에.. foo함수에서 값을 변경한다면main에서의 a의 값도 변경이 됩니다.void foo(int &a){} void main(){ int a = 10; foo(a);} 3. Call by address(참조)이 방식은 함수를 호출하는 형식은 Call by value와 같아 보이지만 함수인자를 받는부분이 다르게 됩니다. 보시면 인자를 받는 함수 부분에 &기호가 있습니다.쉽게 말하면 별명과 같은 의미로 사용이 됩니다.그냥 이해하기 쉽도록 설명 한다면 하나의 메모리 공간을 가르치는 변수명 이외에그 메모리 공간을 가르칠수 있는 별명이 하나 존재하.. 더보기
톰캣 실행 안될 때 * no JDK found - please set JAVA_HOME * no JDK found - please set JAVA_HOME 라고 뜨면서 실행 안될 때 sudo gedit /etc/default/tomcat7 (tomcat6인 사람은 /ect/default/tomcat6)으로 파일 열어서 JAVA_HOME 부분 찾은 다음 앞에 #처리 되어있으면 # 삭제해주고 JAVA_HOME=/usr/lib/jvm/openjdk어쩌구 에서 자신의 경로로 잘 맞춰준다 나의 경우 /usr/lib/jvm/jdk1.8.0으로 변경 후 sudo service tomcat7 start 해주니 잘 작동되었음. 출처 : http://stove99.tistory.com/154 의 마지막 부분[출처] 톰캣 실행 안될 때 * no JDK found - please set JAVA_HOME|작성자.. 더보기
Spring 프로젝트 배포하기(tomcat 이용) spring 프로젝트 war 파일로 export하기 윈도우즈 환경에서 eclipse로 개발했다는 가정하에 설명하겠습니다. 1. 배포할 spring 프로젝트를 우클릭하여 export를 선택한다. 2. export 메뉴가 나오면 Web 카테고리 안의 WAR file을 선택하고 Next를 누른다. 3. Destination에 war파일을 저장할 위치를 지정해준다. (tomcat이 설치된 폴더의 webapps 폴더로 지정해주면 편리하다) 4. Export source files와 Overwrite existing file 항목을 체크해준다. (사실 참조한 블로그 글이 했길래 저도 그냥 했어요) 5. 마지막으로 finish를 누르면 war파일이 생성된다. Windows 환경에서 배포 {tomcat 설치 경로}\w.. 더보기
JUnit Thread Testing 출처 : http://jjeong.tistory.com/791메인 class 에 multi thread 로 구현된 코드를 junit test 로 테스트 할려고 할때 복잡 하지 않고 단순 테스트용 도로만 그냥 돌리고 싶다면 test code 에 sleep(적당한 시간) 을 주면 테스트 가능 합니다. 그냥 돌리게 되면 test 수행이 끝남과 동시에 thread 는 종료가 되어서 실제 thread 내부 코드가 잘 동작 하는지 확인이 안됩니다. 아래는 그냥 테스트 한 코드이니 참고 정도만 하세요. @Testpublic void testClientIndexer() throws Exception { ClientIndexer clientIndexer ; clientIndexer = new ClientIndexer().. 더보기
Test는 JUnit으로! 출처 : http://www.nextree.co.kr/p11104/1. JUnit이란?JUnit은 단위 테스트 도구입니다. 외부 테스트 프로그램(케이스)을 작성하여 System.out으로 번거롭게 디버깅하지 않아도 됩니다. 프로그램 테스트 시 걸릴 시간도 관리할 수 있게 해주며 오픈 소스이며, 플러그인 형태로 Eclipse에 포함되어 있습니다. 하나의 jar 파일이 전부이며 사용법도 간단합니다. 어느 정도 개발이 진행되면 프로그램에 대한 단위 테스트는 반드시 수행해야 합니다. JUnit은 보이지 않고 숨겨진 단위 테스트를 끌어내어 정형화시켜 단위 테스트를 쉽게 해주는 테스트용 Framework 입니다. JDK 1.4에서 추가된 assertXXX를 사용하여 Test를 진행합니다. JUnit은 테스트 결과를.. 더보기
java.lang.Object 메쏘드 분석 6 - wait , notify 출처 : http://egloos.zum.com/iilii/v/5565036 wait과 notify는 한 묶음으로 같이 이해하셔야 합니다. wait은 아래와 같이 3가지 오버로딩된 메쏘드로 있습니다. public final void wait() throws InterruptedException : 누군가 깨울 때까지 기다리겠음. 안 깨워주면 안 일어남. public final native void wait(long timeout) throws InterruptedException : 누군가 깨워주거나 timeout 까지 안 깨워주면 알아서 일어나겠음. public final void wait(long timeout, int nanos) throws InterruptedException : 누군가 깨워주거.. 더보기