< 올해의 책 >

우리 아기 장난감 : 호리카와 마코토 ( ★★★☆☆ )

-> 주변의 물건으로 아이와 교감하며 놀기... 꼭 공산품 장난감으로만 놀이를 할 필요는 없다. 상상력을 키우기 위해서라도 직접 만들어서...


엄마, 힘들땐 울어도 괜찮아 : 김상복 지음 장차현실 그림( ★★★☆☆ )

부엌 창문으로 영국을 보다 / 김혜란

영차영차 영국축구 / 마이클콜먼

도토리의 집 : 야마모토 오사무( ★★★☆☆ )

만화가 상경기

어짜피 레이스는 길다 : 나영석

설치에서 서버구축까지 리눅스활용 /21세기사

Git 분산버전관리시스템

리눅스 시스템 프로그래밍

엄마의 말공부( ★★★☆☆ )

머릿속 정리 기술 ( ★★☆☆☆ )

윤재성의 소리영어 / 윤재성

엑셀로 쉽게 배우는 수학/씨아이알/ 다카하시 유키히사, 와타나베 야이치, 전영배 역

나는 왜 저인간이 싫을까?: 오키다 다카시( ★★☆☆☆ )

 - 싫은 이유를 객관화 한다 

 - 고민을 이야기할 친구나 가족과 그 문제에 대해 대화 한다 

 - 상대의 의도를 확대 해석하지 않는다. 상대는 내가 생각하는 것보다 나에게 관심이 없다. 

 - 싫다면 어린시절 비슷한 경험이 있을 것이다. 장단점을 비교 해보고 그래도 싫다면 그사람과 되도록 피하는 것이 좋다.

 - 심리적 안식처를 잘 마련하라 가족 친구등


나는 단순하게 살기로 했다( ★★★☆☆ )

저는 부동산 경매가 처음인데요/ 신정현 / 한빛비즈( ★★★☆☆ )

 - 이론서로 추천


< 올해의 강의 >

화내지 않고 아이 잘 키우기 / 오은영


Posted by 고무함지
,

컴퓨터에 설치할 프로그램 리스트


윈도우 PC 

- virtual box : 리눅스 OS를 가상 머신으로 운영하기 위함

- Ubuntu linux OS 이미지 파일

- 네트워크 터미널 프로그램 : putty, MobaXterm(터미널창을 tab으로 여러개 사용 가능)

- RS-232 터미널 프로그램 : Embedded 보드 개발시엔 필요(라즈베리 같은 것), MovaXterm에서도 RS-232 터미널 지원함.


Ubuntu 가상 머신

- ctags : 코드의 함수 및 변수의 위치를 쉽게 인식 할 수 있는 인덱스를 만드는 유틸리티

          사용법 : http://bowbowbow.tistory.com/15#ctags-란 


HW target board

- 라즈베리파이

- 안드로이드 레퍼런스폰 (nexus 5 폰 같은)

- ARM Mali Ref Board : http://malideveloper.arm.com/news/mali-t604-low-cost-development-board/



공부 목표 


[v] 1. 리눅스 기본 명령어 - ls, ps, grep, find

[v] 2. 리눅스 유틸리티 명령어 - vi, gcc, make

[ ] 3. 리눅스 시스템 프로그래밍 : 이론 위주( 파일 시스템, 자료구조. ...)

[ ] 4. 리눅스 네트워크 프로그래밍 : 이론 위주

[ ] 5. 리눅스 실습 : 시스템 / 네트워크 : 라즈베리파이를 직접 제어 

[ ] 6. 리눅스 디바이스 드라이버 : 라즈베이파이로... GPIO 제어, 주변 장치제어(온도센서)

[ ] 7. 리눅스 어플리케이션 : 웹서버, 영상 처리, Qt

[ ] 8. 커널 소스, 안드로이드 코드가 공개된 안드로이드 레퍼런스 폰의 카메라 & Display 드라이버

   - Camera ISP (WB, Auto Focus, HDR)  /  Display Engine (Gamma, WB, gamut, Calibration)

[ ] 9. ARM의 GPU 관련 멀티미디어 처리(ARM Mali GPU)

[ ] 10. Color Science : 


참고 교재 : 


자료 구조

1. [책] C로 쓴 자료구조 / 오용철 / 이프레스 

2. [책] 열혈강의 자료구조 / 이상진 / 프리렉

2. [Youtube] mycodeschool : https://www.youtube.com/channel/UClEEsT7DkdVO_fkrBw0OTrA


리눅스

1. [책] 사물 인터넷을 위한 리눅스 프로그래밍 with 라즈베리파이 (임베디드 리눅스 입문서로도 추천)

2. [웹] 리눅스 커널 : https://wiki.kldp.org/KoreanDoc/html/EmbeddedKernel-KLDP/index.html

3. [웹] 리눅스 디바이스 드라이버 : http://forum.falinux.com/zbxe/index.php?mid=device_driver&page=4&document_srl=406200


Color Science 

1. KhanAcademy : Color Science / Color Space : https://www.khanacademy.org/partner-content/pixar/color

2. 




주의 사항:

리눅스 디바이스 드라이버나... 커널 코드 분석은... 플렛폼에 따라 다르기 마련인데, 꼭 그 플렛폼에 맞는 해결책을 찾기 위해 시간 낭비하지 말자.

리눅스의 기본 구조와 원리에 집중하고, 플랫폼별 차이는 큰틀에서 볼때 그냥 tip정도로만 정리하자. 

되도록 코드를 읽고, 그림으로 그리면서, 추상화된 것을 도면(계층도, 순서도, 블럭도)으로 그려보자.


(수정: 2016-11-16: 공부목표(1, 2) 완료 처리)



Posted by 고무함지
,


보통 정해지지 않은 크기의 문자열을 저장할 때는 

1차원 메모리를 동적으로 할당 받아 사용합니다. 


이 메모리는 1차원 배열처럼 사용할 수 있지요.

다만, 할당받은 메모리의 위치를 벗어난 곳을 사용하면,

access 위반으로 프로그램이 동작하다가 강제 종료됩니다. (Run-time Error)

프로그래밍 하다보면 많이 발생되는 문제입니다. 

당연한 말이지만, 허가된 공간에서만 접근하고 사용해야합니다.


허가된 공간의 시작 주소는 string이며, 끝나는 지점(주소)은 string + STR_NUM입니다.

다만, 사용할 크기만큼 문자열을 넣어 사용하고 마지막 위치에 NULL을 넣어서

그 끝을 알릴 수 있습니다.


NULL 

 

 

다음처럼 5개의 공간을 할당 받더라도, 두개만 쓰고 3번째에 NULL을 넣어, 그 끝을 알릴 수 있습니다.





이젠

2차원 배열형태로 메모리 할당을 받은 경우를 설명하려 합니다


아래와 같이 1열엔 seoul, 2열엔 olympic, 3열엔 korea가 있고, 마지막열에 NULL로 그 끝을 알리려 합니다.

또한 각 행마다의 단어의 끝을 알리기 위해 seoul NULL, olympic NULL, korea NULL 로 저장합니다.


s

NULL 

 

 

 o

NULL 

 k

NULL 

 

 

 NULL

 

 

 

 

 

 

 


문자열의 경우 끝에 자동으로 NULL이 붙지만, 마지막 열은 일부로 NULL을 사용합니다. 


이 경우 print_strings함수에 단어의 갯수를 알려주지 않더라도, NULL이란 값이 보이면, 마지막 단어라는 점을 알릴 수 있습니다.

(물론 pring_stirng(char ** strs, int word_num) 이렇게 word_num을 직접 함수에 전달할 수 도 있지만요.)


print_strings함수에서는  NULL이 나오기 전까지 단어 출력을 반복합니다.( while(current[i]) )



다시 정리하면, 포인터의 사용시 마지막엔 NULL을 넣음으로...

허가 받지 않은 공간을 모르고 침범하는 오류를 피할 수 있습니다.


1차원 공간 뿐 만아니라 (문자열의 끝)

2차원 공간에서도, NULL을 사용할 수 있습니다. ( 마지막 단어)





Posted by 고무함지
,