2013년 8월 31일 토요일

SELINUX 016 - 쉬운 설명.

이건 관계자 들이 SELINUX가 뭔지 궁금해 할 때 5분만에 설명할 수있는 내용이다.

리눅스를 10년간 이상 사용해 오면서 SELINUX는 그냥 애물단지로만 생각했었는데 요즘엔

조금씩 괜찮은 솔루션이라는 생각이 든다. 관련 일을 하고 있어서겠지.

우선 SELINUX를 알기 위해서는 rwx rwx rwx, 명령어로는 chown, chmod를 알아야 한다.

------------ 이제 모두 안다고 가정하자.

root는 chown이나 chmod를 해서 해당 context의 권한을 바꿀 수 있다.
그러나 미리 정해져서 root 도 바꿀 수 없는 extended attributes가 있는데
그게 seinfo 값이고 이것을 지원하는 LINUX PULUG IN이 SELINUX 다.

------ 라고 이해하면 쉽다.

SEANDROID 정책은 빌드 할 때 나오므로 한번 플래싱을 하고 나면 정책을 바꾸지
않는 이상 root 유저도 권한을 얻지 못한다. 리눅스나 윈도우의 chattr로 애트리뷰트를
변경하고 나면 root나 admiistrator도 해당 context를 지울 수 없는 것과 같다.

그러나 애트리뷰트는 변경가능하다. 변경 후 지우면 지워지는데 SELINUX는 컴파일 타임,
인스톨 타임 때 정해진 또다른 이름(도메인)에 부여된 권한에 의해 통재된다.


SELINUX 015 - TROUBLE SHOOTING & 회사 생활

selinux 는 구글 메인브랜치에 머지되어 관련 feature를 잘 켜주면 된다.

커널쪽 컴파일 하면서 많은 mk 파일들로 꼬여서 알수 없는 에러가 발생하는데

그럴 때는 파일을 하나에 여러 옵션을 적어주어 필요 없는 파일을 줄임으로서

해결이 가능하다.

포팅 후에는 대부분 labeling 작업과 policy 작업이다. 

파일 시스템이 만들어 질 때 labeling은 file_contexts를 잘 정의하면 되고

정의가 되었는데도 제대로 레이블링이 안될 때에는 init.rc에 restorecon을

이용한다.  boot 전이라면 recovery쪽 시작 파일들을 점검해서 다시 레이블링을 해

주어야 한다.

system running 상황에서는 패키지 매니저에서

인스톨 타임 때 제대로 레이블링을 못하거나

키 값이 등록이 되어 있지 않는 경우가 있다.

패키지 매니저와 연관된 부분을 건들지 않으면 프레임웍쪽 selinux feature는

문제를 일으킬 소지가 없다. 키 값은 apk에서 뽑아서 등록해 주면 된다.

모든 라벨링이 된 상태에서는 allow rule을 정하는 것이 일이다.

allow rule은 안드로이드 시스템에 정통한 1명이 만드는 것이 바람직 하다.

그 외에는 

로그를 정리해 주는 사람이 따로 있어야 하고 SEAndroid로 막을 수 있는

보안 관련 부분을 조언해 주는 사람도 필요하다.

 회사에서 관련일을 하면서 여러가지 엉뚱한 경우가 있었는데

1. SELinux를 너무 만만하게 보고 마켓 앱을 무작정 받아서 관련 룰만 열어주는 실수.
2. 관계 부처에 탑재 사실을 알지 지도 않아서 3일 이상 부서 전체가 해당 모듈 이상점을
분석했더니 결국 SELinx 문제.
3. 모듈에 대한 파악이 제대로 되지도 않은 상황에서 새로운 관련 모듈 탑재.
4. 그 모듈들이 보안에 위배 되지는 나중에 밝혀지는데도 별다른 대책이 없는.

기타 여러가지  상황들을 보고 또 관련해서 직언을 서슴치 않았지만.

대한민국 관리자드은 엔지니어들이 하는 말을 조금만 듣고 나면 자신이 설계자가
된양 행동하는 행동거지 때문에 삐뚤삐뚤 쌓아올려진 소프트웨어는 나중에  결국
무너지고 만다.

 그러나  어느 정도 실패를 경험하고 나면 다시 처음으로 돌아와서 loose한 룰을
만들고 필요없는 모듈은 넣지 않는 등의 행동들을 하지만. 책임 소재는 없다.

적어도 자신이 밀고 나간게 삐뚤어 졌으면 책임 정도는 져야 하는데.

그래서 생각했다. 아 이 회사에서는 저 정도는 년차 동안은
 회사 생활을 할 수 있겠구나 하고.

2013년 8월 30일 금요일

지금의 구글이 좋다.

원통형 컴퓨터를 낸 애플도 여전히 대단하다.

그러나 지금 내 연구 대상은 구글.

그 철학을 배워보자.


http://www.google.com/intl/ko_kr/about/company/philosophy/

Google이 발견한 10가지 진실

이 ‘10가지 진실’은 Google 창립 몇 년 후에 처음 제정되었습니다. 가끔 이 내용을 다시 들여다보고 지금 상황에서도 적절한지 확인합니다. Google은 이 ‘10가지 진실’의 내용이 현재에도 적절하기를 기대하며 이를 지키도록 노력할 것입니다.

사용자에게 초점을 맞추면 나머지는 저절로 따라옵니다.

처음부터 Google은 최고의 사용자 환경을 제공하는 데 초점을 맞췄습니다. Google은 새로운 인터넷 브라우저를 개발하든 홈페이지의 외양을 새롭게 변경하든 언제나 내부의 목표나 수익보다는 이러한 작업이 사용자에게 최상의 서비스를 제공하는가를 가장 크게 고려합니다. Google 홈페이지의 인터페이스는 간단하고 명료하며 페이지가 즉시 표시됩니다. 검색결과 게재위치도 판매의 대상이 된 적이 없으며, 광고는 광고로서 확실히 표시될 뿐 아니라 관련성 있는 콘텐츠를 제공하며 산만하지 않습니다. 또한 Google은 새로운 도구와 애플리케이션을 개발할 때 사용자가 부족함을 느끼지 않도록 완벽을 기합니다.

한 분야에서 최고가 되는 것이 최선의 방법입니다.

Google은 검색 전문 업체입니다. 검색 문제 해결에 주력하는 세계 최대 규모의 연구원을 보유한 Google은 Google의 강점이 무엇인지, 그리고 이러한 강점을 어떻게 발전시켜 나갈 수 있는지 충분히 인식하고 있습니다. 어려운 문제에 대한 끊임없는 해결 노력을 통해 복잡한 사안을 해결하고 수많은 사용자에게 신속하고 유연한 정보 검색 환경을 제공하고 있는 서비스에 대한 지속적인 개선 노력도 기울일 수 있었습니다. 검색 환경을 향상시키고자 노력하는 과정에서 Google은 Gmail이나 Google 지도 같은 새 제품에도 연구 성과를 적용할 수 있었습니다. Google은 검색 기능을 새로운 분야로 확장하고 사용자가 일상 생활에서 훨씬 더 많은 정보를 접하고 사용할 수 있게 되길 바랍니다.

느린 것보다 빠른 것이 낫습니다.

Google은 시간의 소중함을 알기에 웹에서 정보를 검색할 때 원하는 결과를 곧바로 제공해 드리기 위해 최선을 다하고 있습니다. 사용자가 최대한 빨리 사이트를 떠나도록 하는 것이 목표라고 하는 기업은 Google밖에 없을 것입니다. Google은 페이지에서 불필요한 비트와 바이트를 모두 제거하여 서비스 환경의 효율성을 높임으로써 검색 속도 기록을 자체적으로 계속 갱신하고 있습니다. 그 결과 검색결과에 대한 평균 응답 시간이 1초도 걸리지 않습니다. Google은 모바일 애플리케이션이나 현재 웹에서 빠른 속도를 낼 수 있도록 디자인된 브라우저인 Chrome과 같은 새로운 제품을 출시할 때마다 속도를 항상 염두에 둡니다. Google은 지금도 더 빠른 서비스를 제공하기 위해 끊임없이 노력하고 있습니다.

인터넷은 민주주의가 통하는 세상입니다.

Google은 사이트가 가치 있는 콘텐츠를 제공하는지 여부를 판단할 때 수많은 웹사이트 운영자의 의견을 참조하기 때문에 성공을 거두었습니다. Google은 웹에서 다른 페이지의 ‘투표’를 거쳐 어떤 사이트가 웹에서 최고의 정보원으로 선정되었는지 분석하는 Google의 특허 기술인 PageRank™ 알고리즘을 비롯하여 200가지가 넘는 다양한 신호와 기술을 사용해 모든 웹페이지의 중요도를 평가합니다. 웹의 규모가 커지면서 각각의 새로운 사이트가 또 하나의 정보원과 투표원이 되기 때문에 이러한 접근 방식은 더욱 정확해지고 객관성을 갖게 됩니다. 같은 맥락에서 Google은 오픈소스 소프트웨어 개발에 적극적으로 나서고 있으며 이를 통해 많은 프로그래머들의 공동작업을 통한 혁신이 이루어지고 있습니다.

책상 앞에서만 검색이 가능한 것은 아닙니다.

모바일 환경에 대한 전 세계의 의존도는 점점 커지고 있습니다. 사용자는 언제 어디서나 필요한 정보에 액세스하기를 원합니다. Google은 전 세계 모든 사용자가 휴대전화로 Google 검색에 액세스하는 다양한 방법을 비롯하여 이메일과 캘린더 일정을 확인하고 동영상을 보는 등 휴대전화로 원하는 작업을 수행할 수 있게 돕는 모바일 서비스를 위한 새로운 기술을 개발하고 솔루션을 제공하는 데 앞장서고 있습니다. 또한 Google은 무료 오픈소스 모바일 플랫폼인 Android를 통해 모바일 사용자에게 더 뛰어나고 혁신적인 기능을 제공하기 위해 노력하고 있습니다. Android는 인터넷의 모태가 된 개방성을 모바일 세계에 선사할 것입니다. Android는 고객이 더 다양하고 혁신적인 새로운 모바일 세상을 경험하게 할 뿐 아니라 통신업체나 제조업체 및 개발자에게도 새로운 수익을 창출하는 기회를 열어 줄 것입니다.

부정한 방법을 쓰지 않고도 돈을 벌 수 있습니다.

Google은 영리를 추구하는 기업입니다. Google은 다른 회사에 검색 기술을 제공하고, Google 사이트나 웹의 기타 사이트에 게재된 광고 영업을 통해 수익을 창출합니다. 전 세계 수많은 광고주가 제품 홍보를 위해 애드워즈를 사용하고 수많은 사이트 운영자가 애드센스 프로그램을 사용하여 사이트 콘텐츠와 관련된 광고를 게시하고 있습니다. Google은 궁극적으로 광고주를 비롯한 모든 사용자에게 서비스를 제공하고자 하며 이를 위해 다음과 같이 광고 프로그램과 활동의 기준이 되는 일련의 원칙을 적용하고 있습니다.

Google은 결과 페이지에 관련이 없는 광고가 게재되지 못하도록 하고 있습니다. Google은 사용자가 찾는 정보와 관련이 있는 광고만이 유용한 정보를 제공할 수 있다고 믿습니다. 따라서 검색결과에 광고가 전혀 포함되지 않는 경우도 발생할 수 있습니다.

Google은 현란하지 않은 광고로도 광고 효과를 충분히 거둘 수 있다고 생각합니다. 팝업 광고는 사용자가 콘텐츠를 보는 데 방해가 되기 때문에 허용하지 않습니다. 연구에 따르면 사용자와 관련성이 높은 텍스트 광고가 무작위로 표시되는 광고에 비해 클릭률(clickthrough rate)이 훨씬 더 높은 것으로 나타났습니다. 광고주는 사업의 규모와 관계 없이 정확하게 타겟팅된 잠재고객층을 활용할 수 있습니다.

Google에 게재된 광고는 ‘스폰서 링크’로 확실히 구분이 가능하기 때문에 검색결과의 신뢰성을 손상하지 않습니다. Google은 검색결과에서 파트너의 게재 순위를 높이는 방식으로 조작하지 않으며 돈을 받고 더 나은 PageRank를 팔거나 하지 않습니다. 사용자는 Google의 객관성을 신뢰할 수 있으며 Google은 단기적인 이익을 얻고자 사용자의 신뢰를 저버리는 행위를 하지 않습니다.

세상에는 무한한 정보가 존재합니다.

Google이 그 어떤 검색 서비스보다도 더 많은 HTML 페이지를 인터넷 검색 색인에 포함하는 데 성공하자 Google의 엔지니어들은 그보다 액세스하기 어려운 정보에 관심을 기울였습니다. 어떤 경우는 전화번호 및 주소 조회나 업종별 전화번호부를 추가하는 것과 같이 새로운 데이터베이스를 검색에 포함하는 정도의 간단한 일이었지만 때로는 뉴스 자료실이나 특허권, 학술 기사, 수십억 개의 이미지와 수백만 권의 책을 검색할 수 있는 기능을 추가하는 것과 같이 좀 더 창의성이 필요한 작업도 있었습니다. Google은 지금도 정보를 찾아 헤매는 사람들에게 세상의 모든 정보를 제공하고자 끊임없이 연구하고 있습니다.

정보의 필요성에는 국경이 없습니다.

Google은 캘리포니아에서 시작했지만, 전 세계 모든 정보를 모든 언어로 편리하게 이용할 수 있도록 하는 것을 목표로 합니다. 이를 위해 60개국 이상에 지사를 두고 180개 이상의 인터넷 도메인을 관리하고 있으며, 검색의 절반 이상이 미국 이외 지역의 사용자에 의해 이루어지고 있습니다. Google은 검색 인터페이스를 130개가 넘는 언어로 제공하고 있으며, 검색결과를 본인의 언어로 기록된 콘텐츠로만 제한하는 기능을 제공할 뿐 아니라 가급적 많은 언어와 액세스 가능한 형식으로 애플리케이션과 제품을 제공하고자 노력하고 있습니다. Google의 번역 도구를 활용하면 지구 반대편에 있는 전혀 알 수 없는 언어로 기록된 콘텐츠도 검색할 수 있습니다. 이러한 도구와 자원 번역가의 도움으로 Google은 지구 저편 멀리 떨어진 지역에 이르기까지 서비스의 다양성과 품질을 개선할 수 있었습니다.

정장을 입지 않아도 업무를 훌륭히 수행할 수 있습니다.

Google 창립자들은 일은 도전적이어야 하며 그 도전은 즐거워야 한다는 생각을 바탕으로 Google을 창립했습니다. Google은 뛰어나고 창조적인 성과는 올바른 기업문화 안에서 더 잘 이루어진다고 생각합니다. 단순히 라바 램프나 짐볼이 연상되는 좋은 근무 환경만을 말하는 것이 아닙니다. 회사의 전체적인 성공에 기여하는 팀의 성과와 개개인의 성취감을 중요하게 여깁니다. Google은 독창적인 방식으로 일과 삶에 다가가며 다양한 분야의 경험을 갖춘 열정적이고 활기에 찬 직원들을 매우 소중하게 생각하고 있습니다. 사내 분위기가 여유로워 보이지만 일단 새로운 아이디어가 카페, 팀 회의 체육관에서 제시되면 빠른 속도로 교환, 테스트되고 실행에 옮겨집니다. 그리고 이런 과정이 전 세계를 대상으로 하는 새로운 프로젝트의 시작이 될 수도 있습니다.

위대하다는 것에 만족할 수 없습니다.

Google에게 최고란 끝이 아니라 시작을 의미합니다. Google은 아직 도달할 수 없는 것을 목표로 삼습니다. 그 목표에 도달하기 위해 노력할 때 기대했던 것보다 더 많은 것을 얻을 수 있다는 사실을 알고 있기 때문입니다. 혁신과 반복을 통해, Google은 성공적인 서비스도 예상치 못한 방법으로 개선하고자 합니다. 예를 들어, 정확한 철자를 입력했을 때 검색 기능이 잘 작동하는 것을 보고 한 엔지니어는 오타를 입력한 경우에는 어떻게 처리해야 하는가를 연구했습니다. 그리고 이를 통해 직관적이면서도 더 유용한 맞춤법 검사 기능을 개발하게 되었습니다.

비록 사용자가 자신이 무엇을 찾고 있는지 정확하게 알지 못한다 해도, 웹에서 답을 찾는 일은 Google이 해결해야 할 문제이지 사용자의 문제가 아닙니다. Google은 아직 사용자가 명확하게 표현할 수 없는 요구조차도 미리 파악하여 이를 해결하고 새로운 표준을 제시할 제품과 서비스를 제공하고자 노력하고 있습니다. Gmail을 출시했을 당시 다른 어떤 이메일 서비스보다도 더 큰 저장 용량을 가지고 있었습니다. 지금 보면 너무나 당연해 보이는 것인지도 모르지만 그것은 Google이 이메일 저장 용량에 대한 새로운 표준을 제시했기 때문입니다. 그러한 것들이 Google이 바라는 변화이며 Google은 언제나 변화를 이끌어 낼 수 있는 새로운 분야를 추구할 것입니다. 결국 Google이 끊임없이 만족하지 못하는 부분들이 Google이 시도하는 모든 작업의 원동력이 됩니다.

2013년 8월 28일 수요일

makefile 구조

김 병 곤
gom1999@hotmail.com
makefile의 구조 및 이용방법
목 차
About Makefile......................................................................................... 3
makefile 의 구조....................................................................................... 4
1) Target Line...................................................................................4
2) Shell Command Line.................................................................... 4
3) Macro Line................................................................................... 5
4) Include Line..................................................................................5
Dependent................................................................................................. 6
make Options............................................................................................ 7
Inference Rules.......................................................................................10
Built-In Targets..................................................................................... 11
Built-In Macros...................................................................................... 12
참고자료...................................................................................................14
- 3 -
AAbboouutt Maakkeeffiillee
프로그램을 Comiple/Link 할 때, 간단한 어플리케이션은 cc와 같은 컴파일러를 직접 써서 컴
파일/링크를 할 수 있지만, 일반적으로 복잡한 어플리케이션을 유지보수하기 위해서는 make 명령
과 makefile을 사용한다.
make는 일련의 프로그램들을 관리/갱신/재생성 하는 데 사용할 수 있는 툴이다. make는
makefile에 지정된 일련의 명령(Batch Job)을 수행해준다.
어플리케이션을 유지/관리하기 위한 복잡한 로직은 makefile에 들어있다. 따라서 유지보수 담
당자는 makefile 안에 구현된 어플리케이션 생성로직을 정확히 이해하고, 필요시 이를 유지보수
할 수 있어야 한다.
- 4 -
maakkeeffiillee 의 구조
11)) TTaarrggeett LLiinnee
작업 대상을 가리킨다. 일련의 명령들이 뒤에 따라온다.
Target Line은 콜론(:) 또는 이중콜론(::)으로 끝나야 하고, Target 명은 공백으로 분리하여
여러이름을 동시에 지정할 수 있다.
즉, 아래는 Target Line 에 Target명으로 clean, del, clear와 같이 3개의 이름이 지정되었으
며, 셸 프롬프트 상에서 make clean 또는 make del, make clear 명령은 모두 똑같이 rm 명
령을 실행하게 된다.
makefile 예)
clean del clear :
rm -f *.obj *.o *.lis
실행 예)
$ make clean
( = make del = make clear )
※ 타겟중에 이미 만들어져 선택적으로 사용할 수 있는 타겟들이 있으며, 이를 Built-In 타겟
이라고 한다. 이는 아래 Built-In Targets 섹션에서 다룬다.
22)) SShheellll Coommaanndd LLiinnee
실제 수행될 작업이 기술된다. 즉, Shell Command가 기술되는 라인을 말한다.
Target Line 다음에 기술되고, 라인의 첫 컬럼은 반드시 Tab문자이어야 한다.
하나의 셸 커맨드가 길어서 여러 라인으로 기술할 때는 라인마지막 컬럼에 백슬래시(\)를 붙
여주어야 한다.
※ Target Line 과 Shell Command Line 을 합쳐서 보통 Rule 이라고 부른다.
Target Line : Target명으로 clean, del, clear 를 정의했다.
콜론(:) 다음에 file이나 매크로가 올 수 있고, 이는 이 타겟을
실행하기 위해서는 지정된 file이나 매크로에 지정된 파일이 존
재해야 함을 나타낸다. 이를 가리켜 dependency 라고 한다.
Shell Command Line : 실제 수행될 작업이 기술된다.
앞에 Tab 문자가 꼭 있어야 한다.
Target 명을 3개를 지정하였고, 각각의 지정된 Target명은 결
국 같은 타겟들이다.
- 5 -
33)) Maaccrroo LLiinnee
C 언어의 define 문과 비슷하다.
등호(=) 를 사용해서 지정되고, 지정된 매크로를 사용할 때는 $(매크로명) 과 같이 사용된다.
makefile 예)
OBJS = file1.o file2.o file3.o
test :
echo $(OBJS:.o=.c)
실행 예)
$ make test
echo file1.c file2.c file3.c
file1.c file2.c file3.c
※ Macro는 커맨드상에서 다음과 같이 지정할 수도 있다.
$ make OBJS=file4.o test
.profile 이나 Shell 상에서의 export 명령 등으로 지정된 환경변수는 makefile안에서 지정되
는 매크로와 같은 역할을 한다. SHELL 변수를 제외한 모든 환경변수는 makefile안에서 재정
의될 수 있다. 단, makefile에서 지정된 매크로는 make명령에서만 유효하고, 일반 Shell 환경
을 변경시키지는 않는다.
44)) IInncclluuddee LLiinnee
makefile 안에 다른 makefile을 포함시킬때 사용한다.
include line은 라인의 첫컬럼에 "include"라는 문자열로 시작된다.
OBJS 매크로를 지정했다.
test Target을 지정했고, 여기서는 echo 명령을 수행하
도록 되어있다. OBJS 매크로의 값을 출력하는데, 그전
에 .o 문자열을 .c 문자열로 치환하도록 하였다.
test Rule을 실행하면, 먼저 명령을 그대로 표시하고,
다음에 실행결과를 표시한다. 매크로는 이미 명령이 표
시될 때부터 적용되었음을 알 수 있다.
- 6 -
DDeeppeennddeenntt
지정된 타겟을 처리하기에 앞서 선행되어 처리되어야할 타겟을 지정하는 것을 Dependent(종속관계)
라고 한다.
makefile 예)
pgm: a.o b.o
cc a.o b.o -o pgm
실행 예)
$ make -n pgm
cc +DA2.0W +DS2.0 -Ac -I. -I/sys0.d/oracle/precomp/public -c a.c
cc +DA2.0W +DS2.0 -Ac -I. -I/sys0.d/oracle/precomp/public -c b.c
cc a.o b.o -o pgm
Dependent 를 반드시 사용해야 하는 것은 아니다. 위의 예를 다음과 같이 Rule을 한번에 정의해도
결과는 마찬가지가 된다.
makefile 예)
pgm:
cc $(CFLAGS) -c a.c
cc $(CFLAGS) -c b.c
cc a.o b.o -o pgm
Dependent 를 사용하는 이유는 일종의 모듈화로 볼 수 있다. *.c 에서 *.o 를 만드는 컴파일 과정
은 보통의 경우에 항상 공통적인 부분이므로 이를 매번 실행파일을 만드는 Rule에 일일이 나열할
게 아니라 .c.o Rule로 따로 빼고 Dependent 만 설정해주면 되는 것이다.
pgm 타겟을 실행하기 위해서는 a.o b.o 가 있어야 한다는
Dependent가 설정되어 있다.
a.o b.o 를 만들기 위한 Rule 이 makefile 안에 별도로 지정
되어 있지 않다면, .c.o Rule이 기본적으로 실행된다. .c.o
는 기본적으로 내장되어 있는 Inference Rule 이다.
-n 옵션을 주어 실제로 실행될 명령들을 디스플레이하였다.
설정된 depedent에 따라 먼저 a.o를 만들기 위해 .c.o Rule
이 실행되어 a.c를 a.o 로 컴파일하고, 두번째로 b.c를 b.o로
컴파일한다. 마지막으로 생성된 a.o 와 b.o 를 가지고 pgm
실행파일을 만들고 있다.
- 7 -
maakkee OOppttiioonnss
make 명령을 실행시 사용할 수 있는 옵션을 설명한다.
-d
make 커맨드를 디버깅하기 위해서 여러가지 디버그 정보를 출력한다.
makefile 에서 정의된 매크로 등의 정보가 출력된다.
-e {매크로}
makefile 내에서 정의된 매크로를 대체한다.
예를 들어 make -e LANG=english .... 은 makefile에서 정의된 LANG 값을 english로
바꿔치기해서 실행한다.
-f {makefile}
지정된 makefile을 사용하도록 한다.
사용예) make -f demo_proc.mk sample1
-i
실행된 커맨드에서 에러가 났어도 무시하고 다음 명령을 계속 실행하도록 한다.
makefile안에 .IGNORE 타겟이 지정되어 있으면 -i 옵션과 같은 역할을 한다.
-n
실행하지 않고 명령을 디스플레이만 한다.
단, 명령앞에 +문자가 붙어있거나 명령라인에 $(MAKE) 문자열을 포함하고 있는 경우
는 이 옵션에 상관없이 실행된다.
-p
전체 매크로 정의와 타겟 정보를 출력한다.
- 8 -
-P
한번에 한 타겟이상을 병렬로 실행한다.
단, 아래와 같이 병렬실행이 가능한 경우에 해당한다.
makefile 예)
OBJS = a.o b.o
pgm: $(OBJS)
cc $(OBJS) -o pgm
a.o: incl.h a.c
cc -c a.c
b.o: incl.h b.c
cc -c b.c
실행 예)
$ export PARALLEL=2
$ make -P pgm
※ Parallel 실행을 방지하고자 하는 경우엔 .MUTEX 타겟을 아래와 같이 지정해주면
된다. 이것은 a.o 와 b.o 를 순차적으로 처리하겠다는 의미이다.
.MUTEX : a.o b.o
-q
현재 make 대상파일이 최신인지 아니면 make를 다시 해야되는 건지 체크한다.
최신이면 0을, 아니면 0이 아닌 값을 리턴한다.
-r
Suffix List를 Clear 하고, 내장된 Rule을 사용하지 않도록 지정한다.
예를 들어, 현재 디렉토리에 test1.c 파일이 있고, make test1 을 실행하면 .c Rule을
makefile에 지정하지 않았어도, 기본적으로 내장된 .c Inference Rule이 실행되어 컴파
일이 되지만, make -r test1 을 실행하면 이 내장된 Rule이 사용하지 않기 때문에 에
러가 난다.
-s
Rule을 실행할 때 command를 보여주지 않고 그냥 실행만 한다.
makefile내에 .SILENT 타겟이 지정되어 있으면 -s 옵션과 같은 역할을 한다.
pgm 타겟을 실행하기 위해서는 $(OBJS) 와 종속관계가
있음을 나타낸다. 따라서 pgm 타겟을 실행하기 전에
a.o 와 b.o 파일이 있는지 체크하고 없으면, 먼저 a.o
와 b.o 타겟을 먼저 실행해서 파일을 만든 다음에 pgm
타겟을 실행한다. 이때 a.o 와 b.o 는 병렬로 진행할
수 있기 때문에 -P를 사용한 것이다.
OBJS 매크로는 pgm 타겟보다 먼저 나와야 한다. 뒤에
나오면 값만 치환하고 만다.
환경변수에 다음과 같이 Parallel 프로세스를 몇개 띄
워서 작업할 것인지를 지정해 주어야 한다.
- 9 -
-S
Rule을 실행중 특정 command에서 에러가 발생하면 거기에서 실행을 중지하도록 지정
한다.
-t
Shell 커멘트상의 touch 명령과 같다.
-u
최신여부에 상관없이 무조건 타겟을 재생성한다.
최신의 타겟을 다시 실행하는 경우 아래와 같은 메시지가 뜨는데, -u 옵션을 써서 무조
건 실행하도록 지정할 수 있다.
$ make test1
`test1' is up to date.
-w
Warning 메세지를 표시하지 않는다. 단, 에러메세지는 이 옵션에 상관없이 계속 출력된
다.
- 10 -
IInnffeerreennccee RRuulleess
Inference Rule (= Implicit Rule) : 첫문자가 도트(.)로 시작하는 타겟을 가진 경우를 말한다.
Target Rule (= Explicit Rule) : 그 외 타겟을 말한다.
Inference Rule 은 실행시 해당 확장자를 가진 파일이 존재하는지 먼저 체크한다.
makefile 예)
.pc:
$(PRC) $(PRCFLAGS) iname=$*.pc
$(CC) $(CFLAGS) -c $*.c
$(LINK) $(CFLAGS) -o $* $*.o $(ORALIBES)
rm -f *.c *.o *.lis
실행 예)
$ make test1
Inference Rule에는 다음과 같이 두가지 Suffix Rule이 있다.
Single Suffix Rules : .c .pc .o 등...
예) .pc : xxx.pc 파일을 찾아서 처리해주는 Rule이다.
Double Suffix Rules : .c.o .pc.c 등...
예) .c.o : xxx.c 파일을 찾아서 xxx.o 를 만들어주는 Rule이다.
※ Inferece Rule 은 디폴트로 이미 정의되어 있는 것들이 많이 있다. 이것들을 보려면
make -p 로 조회해 볼 수 있다.
※ 타겟명앞에 도트(.)만 붙인다고 모든 Inference Rule이 실행되는 것은 아니고, SUFFIXES
에 포함이 되어있어야 한다. 기존 SUFFIXES를 보려면 make -p 로 조회해서 .SUFFIXES
부문을 보면 된다. 여기에 새로운 Inference Rule을 추가하고 싶으면, makefile안에
.SUFFIXES built-in 타겟을 사용하면 된다.
.pc 로 끝나는 파일들을 처리하는 Inferece Rule 이다.
test1.pc 파일이 반드시 존재해야 한다.
test1.pc 파일을 test1 으로 만들어준다.
- 11 -
BBuuiilltt--IInn TTaarrggeettss
타겟들중에는 사용자가 만들어서 사용하는 타겟외에도 이미 만들어져 필요에따라 선택적으로
사용할 수 있는 타겟들이 있다. 이런 타겟들을 Built-In 타겟이라고 부르고, 아래와 같은 것들
이 있다.
.DEFAULT:
말그대로 디폴트 타겟이다.
makefile안에 특별히 지정된 타겟이 없어 적절한 Rule을 찾을 수 없는 경우에 .DEFAULT
타겟이 이용된다.
.PRECIOUS:
QUIT, INTERRUPT, TERMINATE, or HANGUP 등의 시그널을 받았을때, 이 타겟의
Dependent로 설정된 파일들은 지워지지 않도록 한다.
.SILENT:
make option 중의 -s 옵션과 같다.
Rule을 실행할 때 command를 보여주지 않고 그냥 실행만 한다.
.IGNORE:
make option 중의 -i 옵션과 같다.
실행된 커맨드에서 에러가 났어도 무시하고 다음 명령을 계속 실행하도록 한다.
.SUFFIXES:
Inference Rule에 지정된 Dependent들을 추가한다.
예)
.SUFFIXES: .pc .x1
.MUTEX:
make -P 옵션으로 병렬처리를 할때, 여기에 지정된 타겟들은 병렬처리를 하지 않도록 지
정한다.
.pc와 .x1 타겟에 대한 Inference Rule을 사용하겠다는
의미이다. 이와같이 지정해주지 않으면 .pc와 .x1 타겟
에 대한 Inference Rule은 동작하지 않는다.
- 12 -
BBuuiilltt--IInn Maaccrrooss
Rule을 작성할 때 유용하게 사용할 수 있는 내부적인 매크로가 있다.
$@
현재 타겟의 타겟명을 가리킨다.
$%
현재 타겟이 Archive Library 멤버인 경우만 해당된다.
이때, $@는 라이브러리명을 가리키고, $%는 라이브러리내의 오브젝트명을 가리킨다.
$?
현재 타겟에 지정된 dependents 를 가리킨다.
$<
Inference Rule에서만 사용된다.
Inference Rule에서 타겟의 Suffix와 매칭되는 소스파일명을 가리킨다.
$*
$< 에서 Suffix를 제거한 파일명만 가리킨다.
VPATH=path1:path2...
Dependent를 찾기위한 패스를 지정한다.
먼저, 현재 디렉토리를 찾아서 매칭되는 게 없으면 path1, path2 를 차례로 찾는다.
※ 추가로 F 와 D 옵션이 있다. 이들은 위 5개의 매크로들과 함께 쓰이며, F는 파일명을, D는
디렉토리를 각각 의미한다. 예를들어, $(@F)는 현재 타겟명 중에서 파일명만을 가리키고,
$(@D)는 현재 타겟명 중에서 디렉토리명을 가리킨다.
- 13 -
SSiimppllee Maakkeeffiillee
오라클 응용프로그램을 컴파일할 때 사용하는 makefile을 단순화 시켰다.
#
# Variables of ORACLE
#
ORACLE_SID=KCSDB64
ORACLE_HOME=/sys0.d/oracle
NLS_LANG=American_America.KO16KSC5601
ORALIBES=-L/sys0.d/oracle/lib64/ -lclntst8 `cat /sys0.d/oracle/lib64/ldflags` `cat /sys0.d/oracle/lib64/sysliblist`
-lm -lpthread
#
# Oracle Include & Bin directory
#
PROINCDIR=$(ORACLE_HOME)/precomp/public
ORABINDIR=$(ORACLE_HOME)/bin
#
# Precompiler flags & C Compiler flags
#
PRCFLAGS=include=$(PROINCDIR) ireclen=132 oreclen=132 select_error=yes release_cursor=yes hold_cursor=no dbms=v8
CFLAGS=+DA2.0W +DS2.0 -Ac -I. -I$(PROINCDIR)
#
# Precompiler, C compiler, Link program
#
PRC=$(ORABINDIR)/proc
CC=cc
LINK=cc
#
.SUFFIXES: .pc .c .o
#
# Rule for creating server files from source or object files
#
.pc.c:
$(PRC) $(PRCFLAGS) iname=$*.pc
.c.o:
$(CC) $(CFLAGS) -c $*.c
.o:
$(LINK) $(CFLAGS) -o $* $*.o $(ORALIBES)
.pc:
$(PRC) $(PRCFLAGS) iname=$*.pc
$(CC) $(CFLAGS) -c $*.c
$(LINK) $(CFLAGS) -o $* $*.o $(ORALIBES)
rm -f *.c *.o *.lis
.c:
$(CC) $(CFLAGS) -c $*.c
$(LINK) $(CFLAGS) -o $* $*.o $(ORALIBES)
rm -f *.o *.lis
#
# Rule for cleaning out generated files
#
clean del clear:
rm -f *.c *.obj *.o *.lis *.cod *.cud
Oracle Library 를 지정한다.
여기에는 Shared Library와 Static Library가 섞여 있으며,
같은 라이브러리가 중복되어 나와도 한번만 링크된다.
Oracle 접속 환경을 세팅한다.
Pro*C Include 디렉토리와 proc를 찾기위한 패스를 지정한다.
proc 와 cc 컴파일러에서 사용할 옵션들을 각각 지정한다.
proc 는 *.pc 파일을 *.c로 만들어주는 Pre-Compiler 이다.
cc 는 *.c 파일을 Compile/Link 하여 실행파일을 만들어준다.
Double Suffix Rule 이다.
.pc 파일을 찾아서 .c로 만들어주는 Rule 이다.
그러나 아래 .pc Rule 에서 dependent를 사용하지 않고
바로 .pc에서부터 실행파일까지 한번에 만들도록 되어있기
때문에 실제로 여기서는 사용되지 않는다.
Single Suffix Rule 이다.
.pc 파일을 찾아서 실행파일을 만들어주는 Rule 이다.
다음과 같이 실행되도록 되어있다.
프리컴파일(proc) -> 컴파일(cc) -> 링크(cc) -> 임시파일
삭제
$ make clean 명령으로 임시파일들을 모두 삭제해준다.
clean 대신 del 이나 clear 로 쓸 수 있다.
SUFFIXES 를 지정한다.
지정된 Inference Rule이 실행가능하도록 지정하는 역할을
한다. .c.o는 기본적으로 지정되어 있으므로 따로 지정할
필요가 없지만 .pc.c 는 여기에 지정되지 않으면 사용할
수 없다.
- 14 -
참고자료
♨ HP Online Manual ( http://docs.hp.com )

20만 히트 돌파 스샷.

2013년 8월 27일 화요일

식물

다음(www.daum.net)에서...

Q 화초의 줄기와 잎이 길고 연약하게 웃자란다.
A . 빛의 양이 부족하다.
. 질소성분 비료를 과다하게 주었다.
. 영양분이 부족하다.
. 너무 건조하게 키웠다.
. 뿌리가 상했다.
Q 잘 자라지 않는다.
A . 비료를 너무 많이 주었다.
. 너무 건조하게 키웠다.
. 과습으로 뿌리가 상했다.

Q 아래 잎이 말리고 새로 나오는 잎이 작아진다.
A . 빛이 너무 강하다.

Q 꽃봉오리가 피지 않거나 잘 생기질 않고 잎만 무성하다.
A . 빛의 양이 부족하다.
. 질소성분 비료를 너무 많이 주었다.

Q 잎의 일부가 시든다
A . 물을 말렸다.
. 과습으로 뿌리가 상했다.
. 비료를 과다하게 주었다.
. 실내 습도가 부족하다.
. 빛이나 온도 등의 급격한 환경 변화가 생겼다.
. 병충해가 발생했다.
. 햇볕에 탔다.
. 동해를 입었다.
. 장기간 바람을 맞았다.

Q 잎이 노랗게 말라간다.
A . 벌래가 생겼다.
. 빛이 부족하다.
. 과습으로 뿌리가 썩었다.
. 온도가 너무 높다
. 영양부족이다.

Q 아래 잎이 노랗게 마르고 시든다.

A . 질소 성분 부족이다.
. 화분 안에 뿌리가 꽉 찼다.

Q 잎새가 점차적으로 떨어지고 줄기가 말라간다.
A . 빛의 양이 부족하다.
. 영양분이 부족하다.
. 비료를 너무 과다하게 주었다.
. 너무 건조하게 키웠다.
. 과습으로 인해 뿌리가 상했다.
. 벌레가 생겼다.
. 병에 걸렸다.
. 동해를 입었다.

Q 새순이 시든다
A . 고온건조한 바람이나 저온 건조한 바람에 노출되었다.
. 화분을 너무 말렸다.
. 온도가 너무 높거나 너무 낮다.
. 햇볕에 탔다.
. 동해를 입었다.
. 거름을 너무 많이 주었다.

Q 새순에서 잎새가 기형으로 많이 나오며 말리거나 오그라진다.
A 유해가스나 대기의중의 오염된 공해물질에 노출되었다.

Q 잎새 전체가 갑자기 모두 떨어진다.
A . 극심한 건조로 인해 뿌리가 상했다.
. 빛이나 온도 등에 급격한 환경 변화가 생겼다.
. 과습으로 뿌리가 상했다.
. 벌레가 생겼다.
. 병에 걸렸다.
. 동해를 입었다.

Q 화초 전체가 갑자기 시든다.
A . 물을 말렸다.
. 과습으로 뿌리가 상했다.
. 벌레가 생겼다.
. 병에 걸렸다.
. 비료를 과다하게 주었다.
. 화분내 염분이 축적되었다.
. 실내 습도가 부족하다.
. 뿌리겹음병에 걸렸다.

Q 잎새의 색이 녹색에서 연두색으로 변했다.
A . 영양분이 부족한 경우일 수 있다.
. 비료의 거름성분이 고르게 주어지지 못하고 한 성분으로 편중되었다.
. 빛이 너무 강할 수 있다.

Q 잎새가 오그라들거나 말리거나 잎새 주변을 따라 갈색으로 테두리가 생긴다.
A . 영양분이 부족한 경우일 수 있다.
. 비료를 너무 많이 주었다.
. 화분 안에 염분이 축적되었다.
. 스프래이 살충제를 잎새 가까이에 대고 뿌려 주었다.
. 살충제를 규정보다 너무 진하게 뿌려 주었다.

Q 잎새 끝이 갈색으로 마른다
A . 병에 걸렸다.
. 과습으로 뿌리가 상했다.
. 화분을 말렸다.
. 비료를 너무 적게 주거나 너무 많이 주었다.
. 화분 안에 염분이 축적되었다.
. 실내 공기가 고온 건조했다
. 불소, 나트륨, 붕소성분이 많이 포함된 물을 주었다.
. 토양산도가 너무 높거나 낮다.

Q 잎새 끝이 주름이 지며 갈색으로 마른다.
A . 실내 공기의 습도가 너무 낮다.

Q 잎새에 반점이 생겼다.
A . 병에 걸렸다.
. 벌레가 생겼다.
. 잎새에 물방울이 맺힌 상태에서 강한 햇볕을 쪼였다.
. 잎새의 온도와 온도차가 많이 나는 물방울이 묻었다.
. 통풍이 안뺝다.
. 실내 공기가 너무 습하다.

Q 잎새 전체가 갈색으로 변햇다
A . 태양광선에 탔다.
. 동해를 입었다

Q 아래 잎이 말리면서 시들어간다.
A . 물을 너무 많이 주어 과습 했기 때문이다.
. 잎새 앞 뒷면에 벌래가 끼었다.

Q 나무 밑둥치가 무른다.
A . 과습으로 뿌리가 겹었다.
. 너무 깊게 심었다.
. 배양토가 너무 습해 곰팡이나 박태리아가 번성했다.
. 화분 안에 염분이 축적되었다.

Q 화분표면에 하얀 것이 끼고 잎이 시들고 나무가 말라 죽어간다.
A . 화분 안에 염분이 축적되었다.

Q 화초에 끈끈한 액체가 맺히거나 작은 솜 덩어리나 거미줄 같은 것이 생겼다.
A . 벌레가 생겼다.

껌딱지

2013년 8월 26일 월요일

쉬크로~

질레트에서 쉬크로 넘어갔습니다. 여러 가지 고려 대상이 있겠지만 성능이 질레트랑 비교해서



비등비등하고 가격이 싸기 때문입니다.



전 수염이 송송 나기 시작한 때부터  질레트 유저였지요.



그러다가 국산 애용해 보자고 하다가 도루코로 갔었는데



아... 이건 제가 수염이 별로 나지 않는 스타임에도 불구하고 피부 망가짐에



잘 질리지도 않고 ㅠㅠ 6중날은 안 써봐서 모르지만 브랜드에 대한 신뢰를



많이 잃었었습니다. 요샌 국내기업도 대부분 주식이 외국애들꺼라 국내 기업이라고



할수도 없어서 국산품보다는 시장 원리에 따라서 좋은 제품을 사자고 생각하던 때입니다.



그러다가 친구가 쉬크 쓰다가 옆으로 해도 베이지 않는다는 광고를 보고 옆으로 장난쳐봤다가



베여서 그냥 쓰던 질레트 안에서 놀자라고 마음 먹었지요.



질레트도 종류가 많지만 퓨전이랑 프로글라이드, 그리고 진동이 되는 제품이 가장 좋은 것 같습니다.



우선 진동이 되면 거친 부분에서 막혔을 때 조금의 힘만 주고 있어도 진동의 힘에 의해 내려가니까요.



그런데 그런 진동보다도 더 중요한 건 면도날의 상태 입니다. 거품젤도 쓰는데요.



면도날을 자주 바꿔주는 것 만큼 중요한 것은 없더라구요.



 면도날은 자주 바꿔주려니 돈이 많이 들고 해서 결국 쉬크로 넘어왔는데



결과는 10년 넘게 질레트를 써온 것 같은데요. 처음쓰는 쉬크가 거부감이 없었다는거.



요렇게 수염 깎는 기술도 바둑처럼 무궁무진한게 아니라 장기처럼 일정 기술 수준이 되면



최고에 수렴이 되는 것 같습니다.



질레트에서 고민하시던 분들께 도움되시라고 적어봤습니다.

휴대폰 wifi와 노트북 wifi

는 다르다.
성능.차이가.심하다.

속도는 모르겠고 폰 와이파이는.질.안 잡힌다. 삼성 엘지 애플.다


2013년 8월 23일 금요일

GNU는 유순한가?

모두다 공개하는데 유순하지 않을까?

아니다. 자유를 찾는데 유순함만으로 가능할까.

실재적으로 안드로이드도 우분투도 Free Software는 아니다라는...

앞으로의 더 이야기를 들어봐야 알겠지만 그들의 행보에는 큰 태클보다는

Free쪽으로 유도하려는 모습이 보인다.

Will Ubuntu Edge commit to using only free software?

by John Sullivan Contributions — Published on Jul 25, 2013 12:26 PM
With $32 million to spend, will Canonical and Ubuntu commit to software freedom as the foundational design principle?
Ubuntu is aiming to raise $32 million in crowdfunding to fund Ubuntu Edge, a mobile computer that can dual-boot between Android and Ubuntu GNU/Linux.
Will Ubuntu Edge commit to using only free software? If the project succeeds and has $32 million available to spend, this is surely possible, but there is no indication in any of the promotional materials that this is part of the plan.
Isn't Android already free software? In theory, yes, but in practice, no. To work on actual hardware, Android ends up relying on device drivers that are either outright proprietary or use proprietary firmware blobs. All commonly available Android devices also come with proprietary software applications installed.
This is why today we announced a fundraising partnership with the Replicant project, which produces a version of Android that runs on existing devices without proprietary system software.
Isn't Ubuntu already always committed to free software? No. Ubuntu's default GNU/Linux distribution includes nonfree drivers, and its software marketplace promotes proprietary programs.
But, we don't want to make assumptions about what Ubuntu Edge will or won't be. We and many other free software supporters excited about the possibility of a GNU/Linux mobile device would like to hear official confirmation:
  1. Will the Ubuntu Edge versions of both Android and Ubuntu contain or rely on any proprietary software or proprietary firmware?
  2. Will the Ubuntu Edge include any Digital Restrictions Management (DRM) software?
  3. Will the device's bootloader be free software?
  4. Will the device have Restricted Boot, or will users be able to replace the operating system with a free one of their choice?
  5. Will Ubuntu Edge include F-Droid, the free software Android application repository, as part of a commitment to promote and recommend only free software?
Ubuntu in the past has said they are forced to make temporary compromises in software freedom in order to have their operating system work on the computers people own and speed adoption of free software. But in this case, Ubuntu would have the chance to dictate the design of the hardware themselves. Software freedom should be the foundation of that design. There is no reason for compromise.
Conveniently, Canonical founder Mark Shuttleworth is doing an AMA on Reddit starting at 12:30 EDT, so maybe we will get some answers.

다음 달이면 GNU 30주년

공부하는데 도움을 참 많이 받았다. GNU에게서.


Dear junho,
Are GNU ready to party?

It's been 30 years since the GNU manifesto was penned. What began as frustration over a printer driver has grown into a massive social movement. The GNU system itself has exploded; not only is it a fully free operating system, but it has expanded to include an entire universe of software. Now, GNU is on the threshold of another amazing leap, and we want you to be a part of it.
You're Invited: GNU 30th anniversary celebration and hackathon
Featuring Richard Stallman
When: Saturday and Sunday, September 28 - 29, from 10am until midnight. Special fundraising dinner to be held on Friday, September 27th.
Where: MIT, Cambridge, MA
RSVP: Registration is now open!
GNU's 30th will be an opportunity for free software legends and enthusiastic newcomers to tackle important challenges together, while toasting to the GNU system's success. That's why this 30th anniversary event is more than just a celebration, it's also a hackathon. This event isn't just for programmers either; there will also be opportunities to contribute in many other ways besides writing code, such as a Free Software Directory sprint, crypto workshops, and much more. Come join us in developing and documenting free software for our Web-based world, with a focus on federated publishing and communication services, as well as tools to protect privacy and anonymity. Plus, it has cake and coding; what could be better?
And of course, you'll want to be in the room when Richard Stallman makes a highly anticipated announcement about the future direction of GNU.
Register now!
The anniversary celebration is a chance to come together with other free software supporters to launch GNU on the path to another successful decade. In addition to contributing code and documentation, consider joining us for a special fundraising dinner on Friday, September 27th. Give back to GNU while enjoying a delicious meal with Richard Stallman, Bradley Kuhn, and John Sullivan. More details about the fundraising dinner will be available soon, and a limited number of tickets will be available. To reserve advance tickets, please email campaigns@fsf.org.
See you in Boston,
Libby Reinish
Free Software Foundation, on behalf of GNU
P.S. Can't make it to Boston? 30th anniversary satellite celebrations will be held around the world. If you'd like to be notified if a satellite event is planned in our area, sign up for our GNU 30th satellite event notifications list.

2013년 8월 22일 목요일

컴퓨터시스템응용기술사 영문명 : Professional Engineer Computer System Application

영문명이 Professional Engineer라 도전해 보고 싶어 졌다.

자격명 : 컴퓨터시스템응용기술사
영문명 : Professional Engineer Computer System Application

 개요
현대사회는 매우 급속히 발달하고 있는데 그중 컴퓨터 산업의 발달은 전자산업의 총아로 서 더욱 더 가속화되어 가고 있다. 국제적 경쟁력을 갖춘 전자공업국으로 성장하기 위하여 전자산업에 우수한 기술인력을 공급하고자 컴퓨터 시스템에 관한 전문적인 지식과 기술, 풍부한 실무경험을 가진 인력의 양성이 필요하여 자격제도 제정.
 변천과정
’74.10.16.
대통령령 제7283호
’91.10.31.
대통령령 제13494호
’10.12.13.
고용노동부령 제11호
현재
정보처리기술사
(전자계산기조직응용)
전자계산조직응용기술사
컴퓨터시스템응용기술사
컴퓨터시스템응용기술사
 실시기관 홈페이지
http://www.q-net.or.kr
 실시기관명
한국산업인력공단
 종목별 검정현황
종목명 연도 필기 실기
응시 합격 합격률(%) 응시 합격 합격률(%)
컴퓨터시스템응용기술사 2012 189 32 16.9% 43 30 69.8%
소 계 189 32 16.9% 43 30 69.8%

닭백숙에 사과

넣지말자 ㅠㅠ 국물이 단데
맛이 오묘함

국물 다 버림

악돌이와 악순이

잘 산듯 ㅋㅋ
살땐 욕먹음
사고나서도

리틀보리 팻맨

핵폭탄 크기
작지는 않네

닭백숙

마트가서 닭사서 마늘 한웅큼 양파 파 좀 넣고 30분 정도 끓이면 된다. 닭도 맛있고 국물도 맛있다. 싸고 맛있고 영양 좋고

2013년 8월 21일 수요일

xe 대용량 파일 업로드 용량

대용량 파일이 게시판에서 파일첨부로 업로드가 안될때 

먼저 아래 첨부된 phpinfo.php 파일을 다운받아서 자신의 계정(예:public_html/요기)에 올립니다.
그리고 주소창에 "홈페이지 주소/phpinfo.php"를 입력하면 php정보가 나타납니다.

post_max_size = 8M ; 
upload_max_filesize = 2M ; 
값을 확인하면 현재의 업로드 용량에 대한 정보를 볼 수 있습니다. 

이제 이것을 원하는 용량으로 변경하려면

아래 첨부된 php.ini 에서 아래 값들을 수정해서 올리시면 됩니다. (첨부된 파일은 아래처럼 수정되었음)
파일을 올리는 위치는(예:public_html/요기)

max_execution_time = 30     ; 원하는 시간(초) 으로 변경 ==>300
max_input_time = 60 ; 원하는 시간(초) 으로 변경, 파일용량이 올라 가는 시간을 계산 해서. ==>600
memory_limit = 128M ; 원하는 용량으로 변경 ==>999M
post_max_size = 8M ; 원하는 용량으로 변경 ==>995M
upload_max_filesize = 2M ; 원하는 용량으로 변경 ==>990M

변경한 숫자는 자신에 맞게 수정하여 사용하세요.
파일 크기를 upload_max_filesize < post_max_size < memory_limit 요 순서대로 하시면 문제 없을거라 생각됩니다.

이제 올렸으면 대용량 파일을 게시판에 업로드하여 확인해보세요.

팁제공자 : DeJavu346

2013년 8월 19일 월요일

윈도우 현재 폴더 위치에서 cmd 창 열기.

폴더 위에 가서 Shift + 마우스 우클릭

하면 여기서 명령창 열기(W) 가 나옴.

컬쳐 쇼크 ㅠㅠ

2013년 8월 18일 일요일

가정 폭력에 관한 추억.

13~14살 때였던 것 같다.

지금은 두배가 넘는 나이가 되었는데도 불구하고 어릴 때 살던 집 벽면이 생생하게

떠오른다.

오래된 아파트라서 그런지 천정에 데어놓았던 합판이 살짝 떨어져서 도배를

한 적이 있었다. 어머니랑 나랑 했는데 정말 팔이 떨어져 나갈 것 같았었다.

도배라는 것이 쉬운줄만 알았었는데 막상 해보니 너무 힘들었고,

힘든 때문이었는지 밤 11시가 되어서 끝났을 때는 너무도 뿌듯하고

기분이 좋았다.

겨우 중학생이었지만 가난해서 사람을 못 쓴다는 것도 알고 있었고

그렇지만 그런데 개의치 않던 시절이었다. 어머니와의 추억을 쌓기엔

충분한 가난이었다.

 하지만 그러한 가난을 현실로 바꿔주신 분이 아버지다.

일이 끝난지 얼마 안되어서이다.

아버지는 만취되어 들어오셨고 자세한 내용은 지금도 별로 적고 싶지 않다.

추운 겨울에 유리창도 깼고 어머니도 패서 얼굴 반쪽은 공포 설화에 나오는

반쪽이 처럼 알아볼 수 없을 정도로 되었었다.

 시간이 흘러 지금은 당신이 했었던 행동들 때문에 나를 만나기를 꺼려하지만

난 만나서 안아드릴 정도로 성장했다.

 그러나 마음속 한 구석에서 꿈틀대는 수많은 아픈 기억들 중(내가 개입하고도 
10년 이상을 맞으면서 사셨으니) 한가지만 꺼내고 그것을 분노로 바꾸어 
머릿속의 잡념들을 통일된 하나의 생각으로 만든다면 얼마든지 패륜을
저지를 수 있는 동기들도 많다.

 그러나 어머니도 아버지를 원망하지만 잘못되기를 바라지는 않는다.

사랑한게 죄라고 하시면서. 그리고 결혼은 한번 뿐이라고 생각하시는 걸 보면

재혼한 아버지보다 더 남자답다.

 이혼하고 나서 니가 와서 살았던 거지, 사랑한적 없다는 식으로 말하는 건

아무리 했던 잘못이 많아서 정신적으로 회피하고 싶은 상황이라고 해도

사람으로서는 행해서는 안되는 일.

 그러나 그런 행동들을 잘못되었다고 해주는 사람도 없고 해주는 사람이 있어도

너무 힘이 없었기에 지금도 큰 반성은 커녕 자신이 했던 것들에 대해서 정당한

보상을 받지 못한 것에 불만인 어른을 보면. 화가 치민다.

 양가 부모가 살아 있어도 친구집에 살아야 했던, 그리고 그 시절이 많은 사람들이

가난 했던 옛날이 아니라 상대적 박탈감은 더 큰 나도 그냥저냥 해내고 살고 있는데.

암 투병중인 어머니한테 해준게 뭐냐며 화내는 동생이나 그렇게 기른 아버지나

잘못을 모르고 사는 것은 똑같다.

 그러나 아버지나 동생에게 팔다리 다 잘라서 평생 TV만 보게 만들고 똑같이

정신 피폐하게 만든 다음 어머니처럼 행동하는지 안 하는지 한번 해 볼까하며

협박을 했었을 때. 보았던 그들의 태도와 나에 대한 원망에서

 그들이 대단해서 어머니를 괴롭힌게 아니라 

 당하면서도 제대로 이야기를 못했고, 지금 엉뚱한 사람들에게 화풀이 하는 어머니에게서

잘못이 있다고 깨달았다.

 이런 연유로 부부 싸움에 개입 안하는 경찰이 있는 우리나라 시스템 자체를 싫어했었고
그런 사회적 시스템에 대한 분노가 고등학교 때부터 자라 군대에 가서도 과격 단체를
만들 계획을 세웠고 면담을 받기에 이른다.

 그러나 사회는 내가 생각한 것 만큼 심각하진 않더라.

촛불 집회도. 사람들이 하는 데모도, 정말 생각을 가지고 하는 사람들이 있는 반면서

재미로 나가는 사람들도 수두룩 하더라.

 내가 과격 단체를 만들어 술공장을 폭파하고 사회적 시스템이 정의 구현을 못하는

해쳐먹는 아헤들을 해할 계획들을 짠다고 해도.

 술 마시고 세상 즐기는 사람도 많고 해쳐먹는 아헤들도 혼자서만 해쳐먹는게 아니더라.

결국 세상은 절대적인 정의는 없더라. 그리고 사랑 못 받아서 어머니께 막한 아버지와

같이 어머니도 나중에는 똑같이 나나 친인척 들에게 똑같이 하더라.

 윗물이 있으면 아랫물도 있듯이

누군가는 밑바닥 인생을 살아야 한다. 경제적인 밑바닥이 아니라 사랑의 밑바닥.

그런데 그럴만한 사람들을 크게 붙잡지 말자.

 대충 사는 사람들 변명하는 사람들 어줍잖게 붙잡고 사랑주는 그 사람이

밑바닥에 가는 건 자신이 선택한 길인 것이다.

 아쉽긴 하지만 짧은 인생 사람 변화시키는 것이 어렵다는 것을 배우는데 20년

이상이 걸리듯.

 그런 사람이 있다면 붙잡고 변화시키려고 하지도 말자.

 이미 하늘이 밑바닥 인생을 살라고 했던 사람이기 때문에 천명을 거스르지 말자.


그럴 시간에 자기 자신을 위해 사색하고 그런 사색의 생각이 깊어지도록 책을 많이 읽자.

거지 같은 책 말고.

무소유 같은.

참... 무소유도 스님 자신만을 위한 책이지. 사람들이 원하는데 절판에 버렸으니.

번 돈을 유니세프로 기증하게 해 버리지 이름값 더 올리려고 하는 수작이 아닌가.

아니면 처음부터 혼자 수련하고 깨달음에 닿던가.

잘 팔리면 자기 수양이 사람들에게 먹히는 수양인가?

하긴 무소유 쓴 사람에게 무소유 읽었다고 난을 선물하는 대통령보다는 나은 사람이겠지.

내 거친 생각과 위험한 눈빛과... 자신이 그 노래 주인공과 같다고 생각하면

결혼을 안했어야지.

후회하고 있다면 깨끗이 잊어버리라면서 대마초 피고 잊진 말았어야지.

쇼프로 나와서 사람들에게 좋은 사람인냥 하면서 뺑소니 시체 유기는 안했어야지.

내가 잘났다는게 아니라. 모든 사람은 결점이 있다.

그래서 당신이 잘났다는 걸 알아야 한다.

그래서 맞았으면 신고하고 죽을 것 같으면 죽여라.


그리고 당부컨데... 밑바닥 인생의 사람은 가까이 하지 마라.

모든 사람들은 결점이 있는데 밑바닥 인생은 만나지 마라.

그리고 나와 같은 가장들.

꼭 나라를 구할 때만 이순신 장군의 명언이 필요한게 아니다.

가정이 곧 나라의 기초니까.

가정을 지키는 것에 죽을 정도의 각오는 필요하다.

그것이 가정 폭력을 없애는 방법이다.

2013년 8월 16일 금요일

Dry finished D

D 라는 맥주.

맛은 없는데 광고는 너무 좋다.

원빈, 싸이...

아쉽다. 왜 나한텐 맛이 없을까...

국내 맥주는 OB나 골든 라거나 카스 카프리가 딱 좋다.

디 마시고 원빈, 싸이 되고 싶어.

요즘 속도 관련 휴대폰 광고를 보면

https://www.youtube.com/watch?v=nCgQDjiotG0&feature=youtube_gdata_player

구글 크롬 브라우저 광고가 떠오른다.
2010년에 나온건데

삼성에서 하고 있는 광고에 비해.엔지니어틱.하다.

엔지니어 만세

2013년 8월 15일 목요일

스타크레프트 2 리치 미네랄 필드

리치 미네랄 필드에서 미네랄을 캐면 7이 캐진다.

일반 미네랄은 5가 한번에 캘 수 있는 양이다.

리치 미네랄 필드에서 Command center의 특수 기능을 이용해

노란색 SCV를 소환하면 30씩 캔다.

일반은 얼마나 캐는지 안 보고 계산을 해 보고 싶었는데

5:x=7:30 ㅡㅡ; 정수로 나오지 않는다.

20 캐겄지. 21이나.

상상편 - 다음카카오 네이버 제끼는 방법

0. 송길영 부사장이 진두지휘한다.


1. 쥬니버 보다 많이 좋은 어린이 서비스를 만든다.

2. 다카 욕하는 사람들도 애기 낳으면 다카편 된다.

- 끝 -


1. 각 분야 지식인을 뽑아서 퀄리티 있는 지식인 서비스를 한다. 

    네이버와 다르게 구글에서도 검색되게 한다.

    초딩 지식인은 황봉알, 노숙자, 김구라를 영입한다. 

    - 예전 구라.org 운영자 - 

2. 진정한 '공개' 이미지를 심어줘서 우리 모두의 기업 이미지를 만든다.

- 끝 -


1. 다음맵 티맵을 품었는데 구글맵도 품는다. 네비도 낸다.

2. 아이폰 버전도 완벽 지원한다.

- 끝 -


1. 디씨갤 합병한다. 여기는 돈보다는 좋은 취지로 합병하는게 좋다.

2. 갤을 위한 모바일 버전을 낸다.

- 끝 -


1. 성장 때는 돈을 위해서 초점을 맞춰도 된다.

2. 충분히 회사가 돌아갈 때는 메인 페이지의 광고 다 버리고, 중소기업을

    위한 광고만 저렴하게 실어준다. 기업의 명예.

- 끝 - 


1. 성장하고 난 다음에는 싸이월드, 아이러브 스쿨 등등등 좋았던 서비스

   다 흡수하고, 삼성, LG, 현대와 콘텐츠 제휴하고 세계로 진출한다.

2. 페이스북, 구글과 맞짱뜬다.

- 끝 -


1. 세계 1위가 되고 난 다음에는 모든 팀을 쪼개서 하나하나의 

    중소기업으로 만든다. 

2. ICT 강국, 절대 무너지지 않는 대한민국을 만든다.

- 끗 -


현존하는 기술로는 이 루트가 좋아 보인다.



명사

1 . 사물보거나 생각하는 처지. 또는 어떤 생각 의견 따위를 이루는 사상이나 학식수준.
2 . <물리> 물리량성질나타내는 것. 또는 물리량기본 단위유도 단위관계.
    3 . <수학> 기하학적 도형, 물체, 공간 따위의 점의 위치말하는 데에 필요한 실수최소 개수. 직선은 1차원, 평면은 2차원, 입체는 3차원이지만 n차원이나 무한 차원공간생각할있다.

    차원이 뭔지 궁금해 졌다.

    옵투스 투자 프로그램 강의를 들을 때 만들어지 알고리즘이 몇백 차원 단위라고 한다. 3차원이 넘어가면 이미 머릿속에서 그릴 수 있는 것은 없다고 하지만...

    실재 세상을 잘못된 차원의 단위의 잣대로 재려고 한다고 생각한다.

    그래서 4차원까지는 이해할 것 같다.

    3차원은 우리가 사는 공간이고 4차원은 시간의 개념까지 더해진.

    꼭 시간일 필요는 없겠지만 모두가 들어도 고개를 끄덕여 줄 정도는 아니다.

    시간은 내가 제어할 수 없지만 특정 공간에 칸막이를 두어 공간을 나눌수도 있고

    찰흙을 변형시켜 뭔가를 만들수는 있으니 3차원까지는 내가 뭔가를 할 수 있는

    부분이라 하겠다.

    괜찮은 글이 있어 퍼왔다. 


    출처 http://mirror.enha.kr/wiki/4%EC%B0%A8%EC%9B%90

    4차원

    최종 확인 버전: 

    Contents

    1 일반적인 뜻
    2 모에 요소(?)
    2.1 4차원으로 유명한 인물
    2.2 4차원 천재 기믹
    3 게임의 버그

    1 일반적인 뜻 

    http://www.boxncase.co.kr/img/npe9e_enwlcjstk.jpg?width=270http://www.govhs.org/vhsweb/Gallery.nsf/Files/The%20Fourth%20Dimension/$file/cube.jpg?width=270
    오른쪽의 그림은 4차원 공간에서 가장 네모반듯한 정방도형을 2차원에 투사한 것이다. 정팔입체라는 이름인데 정육면체를 각 차원축마다 2개씩 해서 8개를 붙이면 나오는 도형이라고 한다... 3차원 공간에서 가장 네모반듯한 정방도형인 정육면체가 각 차원축마다 정사각형을 2개씩 해서 6개를 붙인 도형이듯이 4차원 공간에서 만든 것이라고 한다. 일반인들은 무슨 말인지 못 알아듣는 게 당연하다. 일단 4차원 공간을 각 축에 수직한 3차원 공간 8개로 나누는 작업부터 해야 하는데 (정육면체를 만들려면 3차원 공간을 각 축에 수직한 2차원 공간 6개로 나눠야 하듯이) 우리들은 3차원 공간 1개에서 살아가고 있다 (...) 이게 머리속에 쉽게 떠오른다면 당신은 에드워드 위튼의 뒤를 이을 사기캐다. 이런 게 있다는 것만 알아두자.

    4개의 차원(dimension)으로 이루어진 임의의 공간. 수학적으로는 4개의 기저(basis) 벡터(vetor)들의 선형결합으로 생성되는 공간을 뜻한다.[1] 쉽게 말해 좌표축이 4개 있다는 이야기. 1차원을 한 개의 직선, 2차원을 좌표평면, 3차원을 좌표공간으로 표현할 수 있는 것처럼 4차원 역시 4개의 축으로 표현할 수 있다. 다만 시각적으로 정확히 묘사하기 어려울 뿐.[2]

    많은 사람들이 4차원이 3차원 공간+시간이라고 생각하는데 꼭 다른 하나가 시간일 필요는 없다. 퍼텐셜일 수도 있고, 확률일 수도 있고, 아무튼 그때 필요한 무언가가 들어가면 된다. 초끈이론에 의하면 우리의 우주는 11차원 공간으로 이루어졌다고. 차원에 시간을 포함할 경우는 시공간이라고 부른다.

    단 "4차원 시공간"이라고 말하는 경우는 3차원 공간+시간을 말하는 게 맞다. 이 경우 우리가 살고 있는 현실세계는 4차원이 맞다. 공간을 나타내는 3개 차원축에다가 시간을 더해야만 좌표 값을 뽑을 수 있다. 예를 들면 이 글을 읽는 당신은 지금 컴퓨터 앞에 앉아 있지만, 시간이 지나면 결국 자리에서 일어날 것이다. (그렇지 않다면 조금 무섭다.) 그래서 당신의 좌표가 바뀌는 것을 세 개의 좌표축으로는 설명할 수 없다. 이건 뉴턴역학에서도 퍼텐셜을 V(x,y,z,t) 따위로 나타내기 때문에 새로운 개념이 아니고, 그저 우리가 필요로 하는 값에 시간이 하나의 기저로서 영향을 주기 때문에 자연스럽게 그렇게 표현하는 것뿐이다.

    4차관과는 관계 없다

    2 모에 요소(?) 

    수식어. '3차원에 사는 일반인은 이해할 수 없는 무엇'
    근데 현실은 4차원이 맞으니까 이걸 읽고 있는 당신이 4차원이다이라는 뜻이다. 상기했다시피 잘못된 패러다임에서 시작된 말이다. '4차원 소녀'등으로 사용되며, 이 경우 일반인이 이해할 수 없는 행동과 생각을 가진 소녀라는 뜻.

    간혹 10대 소녀 중에서 귀엽게 보인다며 4차원이 되고 싶다고 하는 사람이 있는데, 일부 어르신들한테 불손하다는 말을 듣는다든지, 선임이나 선배한테 이상하다는 이유로 혼날수도 있다…. 특히 이런걸 못 참는[3] 사람들 하고는 트러블이 생길 수 있다. 그런 사람이 당신의 상사라면 더 말할 것도 없다. 물론 4차원이여도 다른 사람들에게 잘 보일 수 있는 방법이 있는데 그것은 철저한 자기 스펙관리이다. 예를 들자면 잘생긴 사람이 4차원이면 귀엽다는 말을 듣지만 못생긴 사람이 4차원이면 생긴것도 못생겼는데 하는짓도 호구라는 소리를 듣고. 똑똑한 사람이 4차원이면 천재로 칭송받지만 무식한 사람이 4차원이면 그냥 바보다. <- i="">

    물론 잘생긴 사람이 너무 4차원 기질을 발산하면 얼굴값을 못하는 사람이 되며 똑똑한 사람이 심하게 4차원으로 빠지게 되면 매드 사이언티스트가 된다. 응?

    미녀들의 수다에 나오는 일본 미녀 사유리는 그 4차원적인 사고 때문에 시청자들이 뽑는 미녀들의 한국 이름 이벤트에서 아예 사차원이라는 이름을 얻었다.

    모에 요소로도 널리 쓰이며, 천연/백치미/전파계와는 조금 다르다.
    천연이나 백치미는 '눈을 뗄 수 없게 만드는 보호본능'을 자극하지만, 4차원은 '의외성', 즉 갭 모에에 중점을 둔 속성이다. 언뜻 완벽해보이거나 무언가 있어 보이는 사람이 알고 보니 별나다는 점에서 인간미와 함께 흥미를 느낄 수 있게 한다. 단, 정도가 지나치게 별나면 똘끼로 보일 가능성이 높다.(…)

    2.1 4차원으로 유명한 인물 

    2.2 4차원 천재 기믹 

    3 게임의 버그 

    오락실 게임의 버그를 일컫는 은어. 이것 때문에 한때 게임기에는 오락실 주인이 '4차원 금지'라는 쪽지를 붙이기도 했다. 간혹 게임기의 기판 에러 등의 문제로 설정이 프리 코인(무한 컨티뉴)이 되는 경우가 있었는데 일부 지역에선 이를 타임머신이라 부르기도 했다.

    보통 80년대 게임에서 기판의 한계라던가 버그 등으로 이 4차원이 생기는 경우가 있는데, 대표적인 예로 80년대 게임은 아니지만 던전 앤 드래곤(게임) 2탄의 영문판에서 기본 이름이 6글자인 캐릭터(2P 전사/2P 드워프/1P 도적)한테 있는 무적이 되는 비기.

    ----
    [1] 대학교 1~2학년 수준의 선형대수학이나 미적분학을 들으면 알 수 있는 내용이다.
    [2] 4차원의 구의 부피는 1/2pi^2*r^4, 겉넓이는 2pi^2*r^3이다.
    [3] 정도에 따라 못 참는 사람이 남이 보기에 이상해 보일수 있다지만
    [4] 4차원 연예인의 시초라고 할 수 있다. 고슴도치를 까면 밤이 나온다거나 강아지를 분양받아서 한국어와 영어를 가르친다느니, 공식 홈페이지에 혜완찌개 레시피를 올리기도 했었다. (참고로 혜완찌개의 주 재료는 같은 멤버인 신혜성과 김동완...)
    [5] 진짜 물리학의 4차원으로도 유명하고, 성격이 4차원이라서도 유명하고. 4차원 시공간이라고 해서 시간축과 공간축을 서로 변환가능한 것으로 취급한 것이 아인슈타인이 최초이고, (다만 실제 이론화는 민코프스키라는 다른 물리학자가 했다) 그걸 다룬 이론이 상대성 이론이니까.
    [6] 진짜 사차원. 아인슈타인도 이 사람의 사차원도는 못 따라간다. 다만 이 사람은 상대성 이론보다는 양자역학 쪽. 뭐... 양자역학 이론에서는 우리 우주는 11차원이다.

    bootcamp 지우기

    맥북 프로 레티나 터치바 diskutility 에서 bootcamp 파티션 삭제하면 검은색에서 회색으로 바뀐다(APFS로 지정) 파틴션 아이콘 클릭하여 - 버튼을 이용하여 삭제하면 끝.