Programming 32

Misra-C rule 10.6

얼마전 회사에서 담당했던 소스코드 정적검증 도중 검출된 문제와 관련하여 일주일 가량을 어떻게 리포팅 해야할까 고민하다 Misra-C rule 10.5 에서 이유를 찾았다. Rule 10.5의 내용은 다음과 같다. 10.5 (required): If the bitwise operators ~ and > 4; /* not compliant */result = ((unsigned char)(~port)) >> 4; /* compliant */ 사실 bitwise 연산자에도 integral promotion이 적용된다는 것은 모르고 있었다. C99에도 언급이 되어 있었던 부분인데 사실 이 부분은 사용하는 컴파일러마다 underlying type을 어떻게 처리할지는 다르기 때문에 유심히 살펴볼 필요가 있을 것 같..

Programming/C&C++ 2014.09.15

재미있는 알고리즘

개인적으로 프로그래머란 직업을 선택한 이유중의 하나가 바로 문제를 해결하고 그것을 프로그램으로 옮겨 그 결과가 정답과 일치 할 때 느낄 수 있는 성취감 때문일지도 모르겠다. 학생 때 왜 좀 더 열심히 하지 않았을까? 난 왜 프로그래밍 대회 같은 것에 참여하지 않았을까? 라는 생각들이 요즘 문득문득 들곤 한다. 왜 일까? 아마도 그 시절에 대한 그리움이 돋아나는게 아닐까 싶다. 오후 업무 중 잠시 머리식힐 겸 읽을만한 책을 찾던 중 찾은 "(프로그래밍 대회에서 배우는)알고리즘 문제 해결 전략"이란 놈!!!! (홈페이지도 있다. 요기 ----> http://book.algospot.com) 잠시 그 시절의 내 모습과 생각들이 떠올랐다. 그리고 잠깐 머리 식힐 겸 문제도 하나 풀어봤고... 근데 재미지다.....

Programming 2013.05.14

선점(Preemptive)/비선점(Nonpreemptive) 스케줄링

이번에 Smartkey를 개발하면서 사용한 Scheduler는 비선점(Nonpreemptive). 배운지 혹은 사용한지 1달이 넘으면 깔금하게 머리속에서 clear 해주는 기억력 덕분에 이놈들에 대해 다시 찾아보게 되었다. 1. 선점(Preemptive) 스케줄링 어떤 프로세스가 CPU를 할당받아 실행 중에 있어도 다른 프로세스가 실행 중인 프로세스를 중지하고 CPU를 강제로 점유할 수 있다. 모든 프로세스에게 CPU 사용 시간을 동일하게 부여할 수 있다. 빠른 응답시간을 요하는 대화식 시분할 시스템에 적합하며 긴급한 프로세서를 제어할 수 있다. '운영체제가 프로세서 자원을 선점'하고 있다가 각 프로세스의 요청이 있을 때 특정 요건들을 기준으로 자원을 배분하는 방식이다. 2. 비선점(Nonpreempti..

Programming 2011.08.08

Code Review Checklist

오늘 전자엔지니어 기사 중 Code Review Checklist에 관한 기사가 떠서 읽어보고 많은 부분에서 공감을 할 수 있었다. S/W를 개발함에 있어 가장 중요한 점들 중 하나는 바로 제대로 된 S/W를 개발하는 것이다. 간단한(사람마다 다르겠지만 대략1,000 lines이 넘어가는 코드를 두서없이 작성하면 나중에 알아보기 너무 힘들다.) S/W일지라도 개발 과정에 있어check 되어야 할 공통적인 부분들이 있을 것이다. 예를 들면, 의도한 대로 S/W가 동작을 하는지, 개발된 S/W에 대한문서는 작성 하였는지, S/W가 exception을 제대로 처리하는지 등과 같은 것들이다. 가만히 생각해 보면 나도 제대로 된 checklist를 만들어 본 적이 없었다. 부끄러운 일이 아닐 수 없다. S/W E..

Programming 2008.09.18

[개념]Object Oriented Programming에 있어 중요한 점

C++나 JAVA등과 같은 언어 기반의 객체지향 프로그래밍(Object Oriented Programming)에 있어 가장 중요한 점은 무엇일까? 바로 Class를 잘 활용하는 것이다. 물런 나는 여기에 능숙능란하지 못하다. 아직도 익숙하고 그나마 좀 한다고 말할 수 있는 것은 Imperitive Programming이다. 객체지향 프로그래밍에 있어 가장 중요한 Class와 Interface에 있어 확실한 개념을 가지고 있지 못하기 때문이라고 생각한다. 그래서 요즘 "패턴 그리고 객체지향적 코딩의 법칙"란 책을 보고 있다. 객체지향 프로그래밍에 가장 기본이 되는 개념들을 시작으로 효율적인 프로그램 개발을 위한 패턴(Pattern), 리팩토링(Refactoring), 등에 관한 내용을 담고 있다. 패턴 그..

Programming 2008.04.15

[Java]Oracle jdbc jar 파일 추가하기

오라클을 처음 사용해 보기에 java에서 connection을 위해서는 jdbc jar 파일을 추가하지 않아서 한동안 허우적거리고 있었다... -_-;; 설치된 오라클 디렉토리를 찾아보면 jar 파일이 있는 디렉토리가 있다. Default로 오라클을 설치한 경우에 해당되는 본인의 경로는 "C:\oraclexe\app\oracle\product\10.2.0\server\jdbc\lib"였다. 그리고 이클립스에서 jar 파일만 추가해 주면 끝.

Programming/JAVA 2007.05.14

문자열 처리

일반적으로 우리는 한 문자(Character)를 처리하기 위해서는 1바이트가 필요하다고 생각한다. 하지만 유니코드를 위해서는 UCS-2(2바이트)가 필요하다. 유니코드는 비주얼 베이직, COM, 윈도우NT/2000/XP에서 기본 문자열 타입으로 사용하고 있다. C++코드에서는 문자열을 char 대신에 wchar_t('wide char')로 선언하는 동시에, strr 함수를 대신해 wcs 함수를 사용할 수 있다. 예를 들면 strcat과 strlen 대신에 wcscat과 wsclen을 사용할 수 있다. C코드에서는 상수 UCS-2문자열을 생성하려면 다음과 같이 문자열 앞에 L만 붙이면 된다. L"Hello"

Programming/C&C++ 2007.01.21

ECMA스크립트(ECMAScript)

ECMA스크립트(ECMAScript)는 ECMA 인터네셔널의 ECMA-262 기술 명세에 정의된 표준화된 스크립트 프로그래밍 언어이다. 이 언어는 웹 상에서 널리 쓰이며, 흔히 자바스크립트 혹은 J스크립트로 간주되지만 두 용어는 특별한 의미 차이가 있다. ECMA스크립트와 자바스크립트, J스크립트의 관계를 이해하기 위해서는 ECMA스크립트의 역사를 알 필요가 있다.

Programming 2006.09.28