작게 시작한 프로젝트 규모가 점점 커지면서 리팩토링을 하게 됐는데 크고 작은 실수가 몇개 있었다. 덕분에 엄청난 시행착오를 거쳐 오랜 시간걸렸다. 몇가지 실수를 적어 보겠다. 첫번째는 메세지 전달 부분에서의 의존성을 줄이지 못한 부분이다. 각 모듈을 DLL로 쪼개는 리팩토링을 감행 하였는데 여기서 각 DLL 간 의존성을 0으로 하고, 최대한 독립적으로 General 하게 코딩하려 했다. A DLL에서 B DLL로 메세지를 전달 하는 과정에서 상수값을 어쩔 수 없이 공유하게 됐는데, 차라리 A DLL에 SetListener 메소드를 구현하고, B DLL에서 해당 메소드를 콜해서 원하는 핸들러를 등록하게 했어야 했다. 두번째는, Data와 Controller를 완벽하게 분리 하지 못했다. 기본적으로 Data..
삼성소프트웨어멤버십 하던 시절에 진행했던 유니코드의 다양한 이해 세미나
자기를 전문적인 소프트웨어 개발자(프로그래머)라고 부를려면 무슨 능력이 필요할까 어플 하나 만들고 나는 개발자다!우왕ㅋ굳ㅋ 하면 뭐하러 대학 4년동안 소프트웨어를 전공한걸까 안타까운건 내가 중요하게 생각하는 능력은 대학 4년 다닌다고 저절로 생겨나지 않는다. 대학 4년을 다니면 세상을 보는 안목이 늘고 도전정신 등이 더 투철해 질 수는 있지만, 그만큼 학과 공부를 하는 등 다른 활동을 하느라 소프트웨어 공부만 깊게 해볼 수는 없는 노릇인 듯 하다. 그렇다고 대학생 개발자에게 높은 개발역량을 요구하는 것도 초중고 10년 교육을 막 받고 개발현장에 투입된 사람에게는 무리수인듯. 그렇다면 이제 막 대학을 졸업하고 산업 현장에 발을 내딛은 당신이 소프트웨어를 잘 하는 개발자가 되고 싶다면 무엇을 해야될까? 내가..
화자인식은 화자 식별(Speaker Identification)기술과 화자검증(Speaker Verification)기술로 나눌수 있다. 화자식별 기술은 고립 단어인식과 개념이 비슷하다. 고립단어인식은 발화된 음성과 가장 가까운 단어를 등록된 인식 대상 단어 중에서 찾아낸다. 마찬가지로 화자식별도 등록된 화자중에서 가장 유사한 화자를 골라 내는 것이다. 이 기술은 여러 명의 요의 자 중 누가 범인인지 알아 내는 데 사용될 수 있다. 화자 검증 기술은 핵심어인식처럼 승인(Acceptance)과 거절(Rejection)과정을 거치게 된다. 이 과정은 기준 패턴과 입력 패턴을 서로 비교해 미리 정해 놓은 발생 확률 값을 넘으면 승인하고, 그렇지 않으면 거절하는 것이다. 이를 응용하면 음성 자물쇠로 이용할 수 ..
괜히 게임이나 문서작성 유틸 같은 것에 실행 전 로딩이 있는 것이 아니다..Image건 Sound건 모두 미리 Texture() 객체를 디스크로부터 메모리에 올려놓는 과정이 필요하다.물론 절대 메모리 해제 되지 않게 잘 로딩해야될테고...만약 로드해야되는 리소스 양이 너무 방대하면 중간 중간에 다시 로딩과정을 해주고(예를 들면 스테이지 이동 등)근데 이럴 때 기존에 로딩돼있던 리소스풀을 해제해주는 것도 매우 힘든 과정!!따라서 여러가지 리소스 풀을 이용할 땐 로드와 언로드가 정말 완벽하게 잘 이루어 졌는지 컨트롤알트델리트 눌러서 잘 확인하자..ㅜㅜ 사용할 때 마다 리소스를 디스크에서 읽어서 출력하는 방법은.. 매우 매우 위험하다...으헝헝..괜히 로딩과정이 있는게 아니여~~~~ 컴퓨터야 디스크 읽는 속도..
초급과정을 뗀 프로그래머, 초보티를 벗어나면서.. C++ 초급 책으로 공부를 다 하면, 보통 포인터까지 배운다. 그러면 포인터를 배운 이후에는 뭘 해야하는가? 도대체 뭘 해야하는지 알 수가 없었다. 왜 '중급' 프로그래머 책은 없는게야!(지금은 있는지도 모르겠다. 여튼 나 공부할 시절에는 없었다. 있긴 있었나? 여튼..) 이제 중급으로 가려면 무엇을 해야하나 싶어서 무작정 시작한 것이 Windows API였다. 이제 이것도 다 뗐는데.. 그럼 난 중급자라고 불러도 되는 것인가? 그럼 난 실무에 바로 투입되도 되는것인가? 이렇게 프로그래밍 새내기가 무작정 실무에 투입되면.. 엄청나다.. 그들에게는 프로그램이 돌아가는 것이 중요하지 가독성이지 유지보수 따위니 하는 것은 당연히 신경쓰지 않는다. 심지어 변수명..
우와.. 이번에 멀티바이트랑 유니코드랑 수 없이 교환시키는 작업을 하면서 인코딩에 대한 이해가 많이 는 것 같다.. 유니코드는 2바이트로 이 세상의 모든 언어를 표시 할 수 있는 그런 놈이다. 이건 알고 아래 글을 읽도록 하자 후후. 일단 UTF-8이 널리 쓰이는 이유에 대해 설명을 간략이 들여보자. UTF-8은 멀티바이트이다. 65536개의 문자를 사용하는 캐릭터셋은 유니코드의 캐릭터셋을 사용하지만 유니코드는 무조건 1글자에 2byte씩이다. 그걸 1~4byte의 가변길이로 인코딩하는 방식이 UTF-8이다.(그래서 CP_UTF8을 멀티바이트 변환 상수에서 찾을 수 있음.) (캐릭터셋이라 하면 유니코드가 나타낼 수 있는 모든 문자를 말함) UTF-16이랑 32같은 놈들도 있지만 자주 쓰이는건 UTF-8이..
우선.. C++에서 CTest라는 클래스가 있을 경우 해당 객체에 대한 선언은 다음과 같이 할 수 있다. CTest test1, test2; 이 경우에 const를 붙여 쓰는 사람은 아마 거의 없을 것이다 -.-;; 그럴거면 왜 만들었어.. 만약 저 앞에 const CTest test1, test2; 이런식으로 const를 붙였다면 더이상 해당 객체는 변경을 할 수 없게 된다. 자 그럼 const가 사용되는 다양한 예를 쭉 적어보자 const CTest* pTest = new CTest; //이건 CTest const *pTest = new CTest; 와 같다 CTest* const pTest = new CTest; const CTest* const pTest = new CTest; int CTest:..
- Total
- Today
- Yesterday
- java
- kering
- algorithm
- Visual C++
- linux
- it
- 안드로이드
- db
- MFC
- driver
- winapi
- 프로그래밍
- 음악
- database
- AWS
- NDK
- Quiz
- C
- Troubleshooting
- 드라이버
- source
- C++
- 리눅스
- Cloud
- API
- jni강좌
- gcc
- jni
- Python
- android
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |