자신의 미래 수익의 10%를 투자해야 한다면, 투자하고 싶은 사람을 주위에서 골라보십시오.

 

대부분은 가장 잘생긴 사람이나 운동을 잘하는 학생

키가 큰 학생, 가장 날쌘 학생

가장 돈이 많은 학생

... 나아가 가장 머리가 좋은 학생을 고르지는 않습니다.

 

당신이 고르는 대상은 그들 가운데 가장 인격이 뛰어난 사람일 것입니다.

누가 가장 많은 수익을 올릴지 모든 사람은 본능적으로 알기 때문입니다.

 

거꾸로,

당신이 가장 투자하고 싶지 않은 사람,

다시 말해 가장 수익이 떨어질 것으로 보이는 사람을 골라보십시오.

 

이번에도 가장 성적이 떨어지거나

운동시합이 있을때마다 후보신세를 벗어나지 못하고 만년벤치를 데우고 있는 학생이나

나아가 지능이 가장 떨어지는 학생이 아닐 가능성이 큽니다.

 

당신이 고르는 대상은

잔머리를 굴리고 거짓말을 하고

남의 공로를 가로채는-

신뢰할 수 없고 이기적이고 오만하며 독선적이고 신용이 없는 사람일 것입니다.

 

이 두 부류 사람들의 차이는 인생에서 성공하느냐 실패하느냐의 차이입니다.

 

인격은

당신의 말, 행동, 옷차림, 당신이 쓴 글,

심지어 당신의 생김새에서까지...

모든면에서 드러납니다.

 

결코 숨길 수도 위조할 수도 없습니다.

 

숨길 수 없지만,

고쳐질 수 없는 것도 아니니 희망을 잃지 마십시오.

 

인격 또한 하나의 습관이기 때문입니다.

 

당신이 닮고 싶은 사람의 인격의 특징을 종이 한장에다가 써보십시오.

반대로 당신이 닮고 싶지 않은 사람의 인격의 특징을 써보십시오.

 

야구공을 100미터 넘게 던지느냐, 못 던지느냐

역기를 100킬로 넘게 드느냐, 마느냐의 차이가 아닐 것입니다.

 

거짓말을 하느냐, 안 하느냐

자기 마음대로 말을 뱉느냐, 한 번 더 생각을 하느냐

남을 배려하는 말투인가, 남을 무시하는 말투인가

조금 더 신경써서 일하느냐, 조금 더 게으르게 행동하느냐..

잘못을 저질렀을 때 정직한가, 아니면 둘러대며 남탓하는가

 

결코 큰 차이가 아닌.... 이런 작은 차이가 엄청난 차이를 만들어냅니다.

 

여러분이 아직 젊다면,

여러분이 닮고 싶은 인격을 조금만 신경 써서 연습한다면,

머지 않아 당신의 인격으로 만들 수 있을 것입니다.

 

인격 또한 습관이기 때문입니다.

 

습관은 처음엔 깃털같아 결코 느낄 수 없지만,

나중엔 무거운 쇳덩이 같아 결코 바꿀 수 없습니다.

 

내 나이때 습관을 고치는 것은 거의 불가능에 가깝습니다.

여러분은 아직 젊습니다.

아직 충분히 기회가 있습니다.

 

그러니 정직하십시오.

어떠한 경우에도 거짓말하지 마세요.

변호사가 뭐라 하든 신경쓰지 마세요.

그저 자기가 보는 그대로 풀어놓으십시오.

 

저의 성공에는

우리(버크셔해서웨이)의 평판덕이 큽니다.

 

저는 저의 사람들에게 법의 테두리보다 훨씬 더 안쪽의 경계선에서 행동하며,

우리에게 비판적이고 또한 영리한 기자가 우리의 행동을 신문에 대서특필할 수 있을 정도로 행동하기를 바랐습니다.

 

저는 저의 회사들의 지사장들에게 2년에 한 번 이와 같은 메세지를 보내줍니다.

 

" 여러분은 돈을 잃어도 상관없습니다.

많은 돈이어도 괜찮습니다. 하지만 평판을 잃지 마십시오.

인격을 잃지는 마십시오.

우리에겐 돈을 잃을 여유는 충분히 있으나 평판을 잃을 여유는 조금도 없습니다. "

 

여러분(대학생들)은 아직 젊습니다.

지금의 모습보다 훨씬 낳아질 가능성이 충분합니다.

 

결코 돈 때문에 직장을 선택하거나 사람을 사귀지 마십시오.

여러분이 좋아하는 직업을 가지고 좋아하고 존경할 만한 사람만을 사귀십시오.

 

저는 아무리 큰 돈을 벌어준다고 해도,

도덕적으로 믿을 수 없고,

신용이 가지 않은 사람과는 함께 사업을 하지 않습니다.

 

그것은 언젠가는 뱉어내야 한다는 것을 알고 있기 때문입니다.

 

저는 1년 내내 제가 좋아하는 일을 제가 좋아하는 사람들과만 함께 합니다.

제 속을 뒤집어 놓는 사람과는 상종도 하지 않죠.

결국 가장 중요한 것은 이것이라고 생각합니다.

 

이것이 제 원칙입니다.

금전적으로 성공하는 것은 두 번째의 일입니다.

 

전 가난했던... 젊은 시절에도,

저는 충분히 행복했고, 지금처럼 제 일을 사랑했습니다.

가난했던 때와 조금은 부유해진 지금과 바뀐 것은 저에겐 별로 없습니다.

 

여러분들이 좋아하는 일을 즐겁게 하고,

성실히.

그리고 정직하게 생활한다면,

거기다 유머 또한 잃지 말고 하루를 유쾌히 감사한다면..

여러분은 성공을 결코 피할 수 없을 것입니다.

 

... - 워렌 버핏 미국의 대학생들에게 -

 

 

------------------------------

너무 좋은 말인 것 같습니다... 진짜 어느 하나도 공감이 가지 않는 단어가 없네요. (전부 공감이 간다는 뜻)

저도 이 글을 블로그에 싣었으니, 이 글대로 정말 인격이 좋은 사람이 되겠습니다.

 

머리가 뛰어나고 좋은 능력을 가지는 것도 중요하지만

인격자체가 없다면 어느 누구도 저와 같이 일을 하려고 하지 않겠지요.

 

성공의 기회는 결국 인격, 인격을 갖추는 습관에 의해서 생긴다...라고 요약할 수 있겠네요.

 

와우... 소름...!!

 

꼭 지키겠습니다!

2. SAMBA란 무엇인가?

삼바는 SMB 프로토콜을 유닉스 컴퓨터에 구현한 프리웨어로서, 원래 국립 호주대학의 앤드루 트리젤이 유닉스용으로 개발하였다. 

이것은 윈도우 클라이언트에서 유닉스 서버에 있는 파일들이나 프린터를 공유할 수 있게 해준다. 

예를 들면, 유닉스 서버에 있는 파일을 편집하기 위하여 텔넷으로 접속하는 대신에, 

윈도우95/98 사용자가 윈도우 익스플로러 내에 있는 드라이브에 연결함으로써 유닉스 컴퓨터 상의 삼바 서버에 접속한 후, 

윈도우용 에디터를 이용하여 그 파일을 편집할 수 있다.


무슨 말인지 모르겠죠...ㅎ

ssh는 '설치'한다고 했는데 samba는 '구축'한다고 할거에요.

왜냐하면 samba는 윈도우 운영체제에서 유닉스 컴퓨터에 접근할 때 사용하는 프로그램이거든요.

우리는 지금 리눅스 우분투를 기반으로 하고 있잖습니까? 즉 우리가 서버 역할을 하는 입장인 거에요.

따라서, 우리한테는 samba를 구축한다고 하는게 더 어울리는 표현인거죠.

이제, 삼바 SAMBA 를 구축하는 방법을 소개해드립니다.


2-1. samba 설치하기

$ sudo apt-get install samba

2-2. smb.conf 파일 수정하기
$ sudo vi /etc/samba/smb.conf

smb.conf 파일은 약간의 수정과 추가할 것이 있어요... 


수정해야 할 것:
....
# security = user
....

줄을 찾아서 #을 지워 주석처리를 해제하고 저장합니다.

추가할 것:
[userid]
path = /home/userid
public = no
only guest = no
writable = yes
create mask = 0777
force user = userid

가장 마지막 줄 뒤에
를 추가합니다. 여기서 'userid'는 사용자 이름입니다.

가령 제 계정 이름이 jeongmin 이면

[jeongmin]
path = /home/jeongmin
public = no
only guest = no
writable = yes
create mask = 0777
force user = jeongmin

이렇게 추가하는 겁니다.



2-3. 사용자 등록
$ sudo smbpasswd -a userid // userid는 사용자 이름 

2-4. samba 재 시작
$ sudo /etc/init.d/smbd restart


리눅스 운영체제는 유닉스 시스템을 기반으로 하고 있으며, 기본적으로 운영체제가 부팅될 때,

'로그인'이라는 과정을 진행하게 됩니다. 


로그인 과정은 user ID 즉, 계정 이름과 비밀번호를 요구합니다. 

오늘은 user ID를 생성하는 방법

계정에 sudo 권한을 부여하는 방법에 대해서 설명하겠습니다.



1. user ID 생성

$ sudo adduser [userid]            // 사용자 계정을 새로 만드는 명령어


[userid]는 생성하고자 하는 user id 값입니다.

가령, jeongmin 이라는 계정을 추가하고 싶다면

$ sudo adduser jeongmin

이렇게 사용하시면 됩니다.



2. 계정에 sudo 권한 부여하기

 우선, sudo 권한이 무엇인지 부터 알려드려야 겠네요.

리눅스 운영체제를 사용해보신 적 있다면 sudo apt-get install... 등 과 같이 sudo 명령어를

은근히 몇 번 써보셨을 겁니다. sudo 명령어는 사용자에게 루트 권한을 부여하는 것입니다.


리눅스 운영체제에서는 일부 중요한 데이터나 시스템을 변경하는 등의

책임이 큰 행동에 대해서는 루트 권한을 요구합니다. 

쉽게 생각해서 루트 권한을 뭐든지 할 수 있는 슈퍼 유저라고 생각하십시오.


그리고 일반 사용자가 잠시동안 루트 권한을 빌리는 방법이 바로 sudo 명령어를 사용하는 것입니다.

그런데 아무 사용자나 sudo 명령어를 쓸 수 있다면 굳이 sudo 명령어가 필요하겠습니까?

일반 사용자도 sudo 명령어를 쓸 수 있는 계정/ 쓸 수 없는 계정이 있습니다.


한 사용자 계정이 sudo 권한을 부여 받으려면 /etc/sudoers 파일 안에 등록이 되어야 합니다.

다음 명령어를 입력해봅시다.

$ sudo visudo                         // /etc/sudoers 에 접근


/etc/sudoers 파일 내에서

....

# User privilege specification

root ALL=(ALL:ALL) ALL

....

이 곳에 

[userid] ALL=(ALL:ALL) ALL                // [userid] 는 권한을 부여하고자 하는 계정 이름.

을 추가하시면 됩니다.


예를 들어, jeongmin 을 추가했다면

jeongmin    ALL=(ALL:ALL) ALL

을 추가해주시면 됩니다.

computer science Archives - Global Processing Services | GPS


세마포어(Semaphore)란?


프로세스 간 메시지를 전송하거나, 공유메모리를 통해 특정 데이터를 공유하게 되는 경우 문제가 발생할 수 있다.

즉, 공유된 자원에 여러 개의 프로세스가 동시에 접근하면서 문제가 발생하는 것이다. 

공유된 자원 속 하나의 데이터는 한 번에 하나의 프로세스만 접근할 수 있도록 제한해 두어야 하는데, 

이를 위하여 고안된 것이 바로 Semaphore 세마포어 이다.

 

참고로, 공유된 자원의 데이터를 여러 프로세스가 접근하는 것을 막는 것이 세마포어이고,

공유된 자원의 데이터를 여러 스레드가 접근하는 것을 막는 것을 뮤텍스라고 한다.

 

 부트로더란?

  • 시스템의 하드웨어를 초기화하고 운영체제의 커널을 메모리에 올려 실행시키는 시스템 프로그램
  • JTAG/BDM -> 부트로더의 디버깅 및 Writing을 도와주는 장비

 

 부트로더의 위치

  • 일반적으로 시스템 메모리의 물리 주소 0번지부터 위치
  • 롬, 플래시메모리, SRAM 등 정적인 메모리에 위치.

 

 부트로더의 기능

  • 메모리 초기화
  • 하드웨어 초기화
    • 직렬포트의 초기화
    • 네트워크초기화
    • 프로세서 속도, 인터럽트의 초기화
  • 커널과 램 디스크 적재: 커널과 램 디스크를 램에 적재하여 실행
  • 사용자 인터페이스 기능


부트로더의 특징
  • 하드웨어 의존성이 강하다.
  • 초기화코드는 대부분 어셈블리언어로 작성된다.
  • 프로그래머는 프로세서 구조, 특징, 사용법을 알고 있어야 한다.
    • clock, memory controller, UART, Ethernet, 기타 등등...


부트로더의 종류

  • U-Boot(Universal Bootloader)
    • PPCBoot와 ARMBoot 프로젝트 기반
  • LILO(Linux Loader)
  • GRUB(Grand Unfied Bootloader)
  • Loadlin
  • EtherBoot
  • Blob
    • ARM용 부트로더
  • PMON(PROM Monitor)
    • MIPS 보드용
  • RedBoot
    • RedHat에서 개발 및 배포
    • eCos 기반

 

임베디드 시스템이란? 정의 및 개념 총정리 - 도라가이드


호스트 시스템(Host System)

타깃 시스템을 개발하기 위한 개발환경을 제공하는 시스템.

타깃 시스템을 위한 어셈블러, 컴파일러, 링커 등 개발도구 제공

보통 IDE(Integrated Development Environment)형태로 제공.

 

타깃 시스템(Target System)

개발하고자 하는 임베디드 시스템

 


크로스 디벨롭(교차 개발, Cross Development)을 위한 개발 도구

 


1. 교차 컴파일러(cross compiler)

: 호스트 시스템의 프로세서와 운영체제 위에서 동작하면서, 

다른 프로세서 용 오브젝트 코드를 생성할 수 있는 컴파일러


- 교차컴파일러의 예:

- GNU의 GCC

- ARM의 ADS(ARM Devlopment Suit)/ RVDS(RealView Develpment Suit)

- CodeWarrior for ARM


임베디드 시스템 소프트웨어의 개발은 Cross Compiler를 이용함.

(보통 타깃 시스템에서 직접 개발하는 것은 어려움.)

 


2. 링커(Linker)

: 불완전한 오브젝트 파일들을 합쳐 모든 코드와 데이터를 포함한 새로운 오브젝트 파일을 생성해 내는 도구.

크로스 컴파일 후 생성된 오브젝트 파일은 단순히 명령어 코드로 해석만 되어있는 상태, 

문법적으로 해석만 되어있는 상태이다.

프로그래머가 선언한 변수의 메모리 공간이나 참조한 함수의 위치에 대한 정보 등이 결정되지 않은 상태.

링커는 각각의 오브젝트 파일들이 서로 참조하고 연결될 수 있도록 링크시키는 역할을 한다.

 


3. 로케이터(Locator)
: 메모리에서 실행 가능하도록 코드와 데이터를 배치하여 최종 바이너리 이미지를 생성하는 도구.

프로그램의 일부분은 ROM에 있어야 하고, 또 다른 부분은 RAM에 있어야 한다.

소스 코드는 전원이 꺼지더라도 지워지짖 않아야 하기 떄문에 ROM에 있어야 한다.

변수는 값이 변경되어야 하기 떄문에 RAM에 있어야 한다.

- 부팅 시 RAM영역으로 Copy.

- 부트코드에 ROM에서 RAM으로 복사하는 과정이 필요.


Linker Script 파일

: 코드와 데이터의 메모리 배치를 정의한 파일

대부분 링커에 포함되어 있다.


+ Recent posts