분류 전체보기
고Go 웹서버 만들기 Build a simple web server
2018. 8. 25.Go 는 net/http 패키지를 통해 HTTP 를지원한다. http 패키지를 사용하여 웹서버를 셋팅해보자. 1234567891011121314151617181920212223242526272829package main import ( "fmt" "net/http" "strings" "log") func sayhelloName(w http.ResponseWriter, r *http.Request) { r.ParseForm() // parse arguments, you have to call this by yourself fmt.Println(r.Form) // print form information in server side fmt.Println("path", r.URL.Path) fmt.Println..
How to Write Go Code - Code organization
2018. 8. 24.Workspace작업공간은 Git 등에 의해 관리되는 다수의 버전 관리 저장소를 포함하고 있다. 각각의 저장소는 하나 이상의 패키지를 포함하고 있으며, 각각의 패키지는 단일 디렉토리에 하나 이상의 Go 소스파일로 구성된다. 패키지 디렉토리 경로에 따라 import 경로가 정해진다. 특히 이 점이 프로젝트별로 별도의 작업공간을 갖게 되는 여타 프로그래밍 환경과 다른 점이다. 그리고 작업공간은 버전 관리 저장소와 밀접히 연계되어 있다. 작업공간은 최상단에 3개의 디렉토리를 가진 디렉토리 계층구조를 말한다. src 에는 Go 소스 파일이 들어있다.pkg 디렉토리에는 패키지 객체를 포함한다.bin 디렉토리에는 실행가능한 명령어가 포함되어 있다.go tool 은 소스 패키지를 빌드하고, 결과물인 바이너리를 패키지..
Go 프로그램 삭제 Uninstalling Go
2018. 8. 24.시스템에 존재하는 Go 를 제거할려면, go 디렉토리를 삭제하면 된다. 일반적으로 리눅스, 맥, FreeBSD의 경우 /usr/local/go 에 위치하고, 윈도우의 경우 c:\Go 디렉토리에 존재한다. 그리고 PATH 환경변수에 설정된 Go bin 디렉토리도 삭제해야 한다. 리눅스와 FreeBSD 의 경우 /etc/profile 또는 $HOME/.profile 을 편집해야 한다. Mac OS X 패키지로 설치한 경우 /etc/paths.d/go 파일을 삭제해야 한다. 윈도우 사용자의 경우 환경 변수 섹션을 참고하자.
Go 프로그램 설치 및 테스트 Install the Go tools
2018. 8. 24.설치 파일 다운로드 하단 링크에서 운영체제에 맞는 설치 파일을 다운로드한다. 본 포스팅에서는 리눅스 기반으로 진행한다. https://golang.org/dl/파일을 다운로드한 후 다음과 같이 /usr/local/go 디렉토리를 만들어 압축을 해제한다 (일반적으로 root 계정이나 sudo 를 통해 진행해야 한다).1# tar -C /usr/local -xzf go1.10.3.linux-amd64.tar.gzcs/etc/profile (system-wide 인 경우) 또는 $HOME/.profile 파일을 열어 /usr/local/go/bin 을 PATH 환경변수에 추가한다. 12345# /etc/profile: system-wide .profile file for the Bourne shell (sh(..
엑셀에서 값으로 차트 그래프 정렬하기
2018. 8. 24.원본데이터의 정렬 순서에 따라 차트상의 막대그래프의 정렬도 달라진다. 필터를 이용하여 원하는 열을 정렬할 수도 있고, 아래에서와 같이 데이터 탭에서 원하는 열 선택 후 오름차순이나 내림차순으로 정렬해도 된다.아래는 응시생 기준으로 정렬해본 경우다. 정렬이 되었음을 알 수 있다.국가명으로 정렬하고 싶으면 국가열을 선택 후 데이터 탭에서 정렬순서를 선택하면 된다.
Luminus 를 이용한 Clojure 방명록 만들기 (5) - 테스트 및 패키지화
2018. 8. 23.Luminus 를 이용한 Clojure 방명록 만들기 (5) Adding some tests이제 어플리케이션이 작동할 준비를 마쳤다. 몇 가지 테스트를 하기 위해 test/clj/guestbook/test/db/core.clj 파일을 열어 다음과 같이 업데이트해보자. /home/fukaerii/guestbook/test/clj/guestbook/test/db/core.clj12345678910111213141516171819202122232425262728(ns guestbook.test.db.core (:require [guestbook.db.core :refer [*db*] :as db] [luminus-migrations.core :as migrations] [clojure.test :refer :..
Test failed in clojure luminus guestbook tutorial
2018. 8. 23.guestbook 튜토리얼을 진행하는 중 마지막 테스트 단계에서 아래의 실패 메시지가 나오는 경우를 만날 수 있다.123456789101112131415161718192021222324252627282930313233~/guestbook$ lein test2018-08-23 08:21:32,895 [main] DEBUG org.jboss.logging - Logging Provider: org.jboss.logging.Slf4jLoggerProvider lein test guestbook.test.db.core2018-08-23 08:21:34,884 [main] INFO migratus.core - Starting migrations2018-08-23 08:21:34,909 [main] INFO mig..
Luminus 를 이용한 Clojure 방명록 만들기 (4) - 페이지 생성 및 폼입력 다루기
2018. 8. 23.Luminus 를 이용한 Clojure 방명록 만들기 (4) Creating Pages and Handling Form Inputguestbook.routes.home 네임스페이스에 경로가 정의되어 있습니다. 그러면 파일을 열어서 데이터베이스로부터 메시지를 렌더링하는 로직을 넣어보겠습니다. Bouncer 검증과 ring.util.response 레퍼런스와 함께 db 네임스페이스 레퍼런스를 추가해야합니다. /home/fukaerii/guestbook/src/clj/guestbook/routes/home.clj12345678(ns guestbook.routes.home (:require [guestbook.layout :as layout] [compojure.core :refer [defroutes GET ..
AICPA 시험에서 말하는 테스팅 윈도우(Testing Windows)란 무엇인가?
2018. 8. 23.예전에 한 번 언급해드린 내용입니다만, 응시주와 관련된 내용도 있어 다시 한 번 더 포스팅해봅니다.일단 Notice to Schedule (NTS)를 수령하게 되면, 이제 응시일을 정할 때가 온 것입니다. 컴퓨터로 치러지는 AICPA 시험은 매 쿼터마다 시험을 볼 수 있는데요, 응시 가능한 달을 테스팅 윈도우(testing windows)라고 보통 부릅니다.시험 스케줄링을 할 때, 계획을 잘 짜셔야 합니다. 이미 알고 계시겠지만, AICPA 시험은 매쿼터 마지막 달에는 시스템 및 데이터뱅크 유지 보수 관계로 진행되지 않는 것이 원칙입니다. 올해는 3, 6, 9, 12월 1~10일까지 시험이 있기는 합니다.먼저 봐야하는 과목이 따로 정해져있는 것은 아니므로, 어떤 과목이든 편한대로 예약하시면 됩니다. 하지..
Luminus 를 이용한 Clojure 방명록 만들기 (3) - 어플리케이션 구동
2018. 8. 21.Luminus 를 이용한 Clojure 방명록 만들기 (3) Running the Application다음과 같이 개발모드에서 어플리케이션을 구동할 수 있다.1234567891011121314151617~/guestbook$ lein run2018-08-21 10:14:21,661 [main] DEBUG org.jboss.logging - Logging Provider: org.jboss.logging.Slf4jLoggerProvider2018-08-21 10:14:23,384 [main] INFO guestbook.env --=[guestbook started successfully using the development profile]=-2018-08-21 10:14:23,578 [main] INFO..
Luminus 를 이용한 Clojure 방명록 만들기 (2) - H2 데이터베이스 생성 및 접근
2018. 8. 21.Luminus 를 이용한 Clojure 방명록 만들기 (2) Creating the Database먼저 어플리케이션을 위한 모델을 만들어야 한다. 마이그레이션 폴더에 위치한 -add-users-table.up.sql 파일을 열어보자. 다음과 같은 내용이 포함되어 있을 것이다. 1~/guestbook/resources/migrations$ nano 20180821033932-add-users-table.up.sqlcs 1234567891011 CREATE TABLE users(id VARCHAR(20) PRIMARY KEY, first_name VARCHAR(30), last_name VARCHAR(30), email VARCHAR(30), admin BOOLEAN, last_login TIMESTAMP,..
Luminus 를 이용한 Clojure 방명록 만들기 (1) - 프로젝트 생성 및 루미너스 어플리케이션 구조
2018. 8. 21.Luminus 를 이용한 Clojure 방명록 만들기 (1)Creating a new applicationLeiningen 은 이미 설치되어 있다면, 다음의 명령으로 어플리케이션을 초기화할 수 있다.설치 이전이라면 다음 링크를 참조 http://redhotkorea.tistory.com/1769123$ lein new luminus guestbook +h2Retrieving luminus/lein-template/3.0.1/lein-template-3.0.1.pom from clojars Colored by Color Scriptercs이를 통해 H2 임베디드 데이터베이스 엔진을 지원하는 새로운 템플릿 프로젝트가 생성된다. Anatomy of a Luminus application새롭게 생성한 어플리케이..
일련의 정확한 전략적 단계들이란 존재하지 않는다.
2018. 8. 21.만약 어린 학생이 처음에 등장하는 몇몇 난관을 뛰어넘고, 그 주제와 관련된 독특한 표기들을 극복하면서, 내용들의 단순 암기가 아닌 그 속에 담긴 아이디어들의 ‘이해’가 학습의 진전을 이루어내는 방법이라는 사실을 깨달을 수 있다면, 그 보다 약간 둔한 학생이 이등변 삼각형의 성질에 막혀 꼼짝 못하는 동안, 그 전까지는 존재하지 않았던 난해하면서도 혁신적인 생각들을 향하여 신나게 여행할 수 있다.학교에서 갈루아는 주의가 산만한 학생이었고, 그는 이러한 성격을 평생 고치지 못했다. 그는 ‘풀이과정을 쓰지 않고’, 머릿속에서 문제를 풀어냈기 때문에 교사들을 당혹스럽게 했다. 풀이 과정에 대한 수학 교사들의 집착은 오늘날 다수의 재능있는 어린 학생들을 괴롭히고 있다. 갓 자라나기 시작한 어린 축구 선수가 경기에서..
AICPA 시험의 필수사이트, CPA Central 이란 무엇인가?
2018. 8. 21.NASBA에서는 CPA Central (https://cpacentral.nasba.org/) 인터페이스를 업그레이드하였습니다. 예전에 비하면, 산뜻한 디자인에 유용한 기능을 담고 있습니다. CPA Central 이란, AICPA 시험에 있어 NASBA의 핵심이 되는 사이트로, CPA Central 사이트 한 곳에서 시험을 마치는 순간까지 필요한 모든 것을 지원합니다. CPA Central 은 크게 홈페이지와 사용자 대시보드로 이루어져있습니다. 홈페이지는 다음에 대한 주요링크를 제공하고 있습니다. Learn more about the exam,Take the exam in an international location,Get your scores and related items,Reprint docume..
수리부엉이는 황혼에 날아오른다 (2) 지하 2층에서 일어나는 일
2018. 8. 19.p.81제 경우 소설의 아이디어 같은 걸 적어두는 일은 별로 없어요 손을 움직여 글을 쓰면서 생각하는 타입이라, 일정 분량 이상의 글을 쓰는 작업이 중요합니다. 일단 한 덩어리의 글을 써놓고 조금씩 손대며 고쳐나가고 그 사이 내 안에서 무언가가 자동적으로 움직이기 시작하는.... 그런 걸 기다리는데, 여기에도 역시 시간이 필요해요. 써놓고 한두 달 지나면 소설이 된냐 하면 그건 아니거든요. 아무래도 반년에서 일 년, 일 년에서 이녀이 세월이 필요합니다. p.82네 일단 씁니다, 만약 친구가 와주지 않더라도 와줄법한 환경을 만들어둬야죠. 저쪽에 방석을 좀 깔아놓고 청소도 하고, 책상도 닦고, 차도 내려두고, 아무도 오지 않을 때는 그런 '밑준비'라도 해두는 겁니다. 아무도 안 오니깐 오늘은 실컷 낮ㅈㅁ이나..
탈옥의 키, 무개념 명상 - 위험 속에서는 의식이 단전에 모아진다
2018. 8. 19.위험 속에서는 의식이 단전에 모아진다. 딴 생각을 하면서 앉아 있을 수 없다. 생각할 틈도 없이 즉각적으로 행동해야 한다. 담이 무너지면 피해야 한다. 어떤 동작을 한 상태에서 장시간 머물게 하거나 단순한 동작을 극단적으로 반복하여 고통을 만들어 간다. 그러면 우리 몸은 극한 한계 상황에 처하게 되고 모든 잡념이 사라지게 된다. 힘들게 3천배를 하다보면 망념이 빠져나가는 원리와 같다. 무념의 경지에 이르게 되는 것이다. 태어난지 1년을 조금 지나 곧바로 뇌성마비에 걸린 어린 소녀의 오체투지 기록 p.125 불교에서는 '나무아미타불 관세음보살' 같은 진언이 있다. 이것은 단순한 단어나 문장이 아니라 우리의 의식을 보다 높은 차원으로 데리고 가는 정화 작용을 한다. 비교적 짧은 주문을 진언이라고 하며 긴 것..
클로저 12. 제어문 - 기본적인 논리검사
2018. 8. 18.식과 형식식은 평가될 수 있는 코드, 형식은 평가될 수 있는 적법한 식 class 함수12345 user=> (class true)java.lang.Booleanuser=> cs true? false?함수불린 true 및 불린 false 값인지를 알려주는 함수클로저에서는 함수의 결과가 boolean 인 경우 함수 이름 끝에 ? 를 붙이는 것이 관례1234567 user=> (true? true)trueuser=> (true? false)falseuser=> cs nil? 함수값이 없음을 검사하는 함수1234567 user=> (nil? nil)trueuser=> (nil? 1)falseuser=> cs not 함수부정negation 표현인수가 논리적 거짓이면 true 반환, 그렇지 않으면 false 반환..
클로저 11. 함수 만들기 - 이름공간에서 심볼 관리 (2) require
2018. 8. 18.require 를 사용해서 자신의 이름공간에서 라이브러리를 사용할 수 있는 3가지 방법1) 이름공간을 인수로 받아 require 를 사용하는 것clojure.set 이름공간이 REPL이 시작될 때 로딩된다. 그렇지 않은 경우 require 를 사용해서 작업을 직접할 수 있다.123456789 user=> (clojure.set/union #{:r :b :w} #{:w :p :y})#{:y :r :w :b :p}user=> user=> (require 'clojure.set)niluser=> Colored by Color Scriptercs2) :as 를 사용해서 require 의 별칭 기능을 이용하는 것심볼 이름 앞에 원래의 이름공간 대신 별칭을 붙여서 심볼에 접근할 수 있다.12345678910 use..
클로저 10. 함수 만들기 - 이름공간에서 심볼 관리 (1)
2018. 8. 18.ns 를 이용하여 이름 공간을 새로 만들고 그 이름공간으로 전환할 수 있다.이제 디폴트 이름공간이 user 에서 alice.favfoods 로 바뀌었음을 알 수 있다. 현재 이름공간을 나타내는 *ns*라는 명령을 통해 이를 확인할 수 있다. 123456789 user=> (ns alice.favfoods)nilalice.favfoods=> alice.favfoods=> *ns*#object[clojure.lang.Namespace 0x44fdc648 "alice.favfoods"]alice.favfoods=> Colored by Color Scriptercs여기에서 var 를 정의하면, 그 var 는 직접 접근할 수 있다. 이름공간을 포함하는 완전한 이름인 alice.favfoods/fav-food 를 ..
클로저 09. 함수 만들기 - defn, fn, 그리고 무명함수
2018. 8. 18.'함수를 만들고 그것에 심볼을 할당하고 그 함수를 호출한다.' defn 은 def 와 비슷하지만, 함수를 위한 var 를 만든다. defn 은 함수이름, 함수 인수들의 벡터, 함수 본문을 인수로 받는다 (빈벡터를 사용하여 함수를 인수없이 호출할 수도 있다)함수를 호출하려면 함수를 괄호로 둘러싸서 사용하면 된다. 함수를 호출하면 클로져는 그 함수를 평가한 후 결과를 반환한다. 인수없이 정의한 예1234567 user=> (defn follow-the-rabbit [] "Off we go!")#'user/follow-the-rabbituser=> (follow-the-rabbit)"Off we go!"user=> Colored by Color Scriptercs인수로 2개의 잼을 받고 그 잼들을 포함하는 맵..
AICPA 시험 테스팅 윈도우와 시험결과 발표일정
2018. 8. 17.CPA 시험은 1년에 4번 치뤄집니다. 보통 그 기간을 “testing windows” 라고 부릅니다. 분기별로 살펴보면 다음과 같습니다.Q1: 1/1 ~ 3/10Q2: 4/1 ~ 6/10Q3: 7/1 ~ 10/10Q4: 11/1 ~ 12/10 해당 테스팅 윈도우에 시험을 치루기 위해서는 응시원서를 작성한 후 NTS (Notice to Schedule) 를 수령해야 합니다.아래 표는 테스팅 윈도우별 시험 결과 발표일을 나타내고 있습니다. 이 중 2018 Q2, Q3 Q4 테스팅 윈도우에는 스코어 홀딩 기간이 있습니다. 이 부분에 대해 더 자세히 알고 싶다면 2018 score holds in the Exam FAQ 섹션을 참고하세요. Testing Window: January 1 - March 10 (Q..
클로저 08. 심볼과 바인딩 - def, var, let
2018. 8. 17.def 는 값에 이름을 줘서 참조 가능하게 한다. 심볼에 직접 값을 바인딩하지 않고 var 를 통해서 한다.예를 통해 살펴보자. 12345 user=> (def developer "Alice")#'user/developeruser=> csdef 는 위에서 보는 바와 같이 이름공간 user 에 심볼인 developer 를 위한 var 객체를 만들었다.이제 REPL 에서 developer 을 평가하면 "Alice" 로 평가된다. 심볼 앞에 / 를 붙여서 이름공간을 지정할 수도 있다. 즉, var 의 완전한 이름은 이름공간/var의 이름인 셈이다.하지만 여기서는 현재의 이름공간이 var 의 이름공간과 같기 때문에 developer 만 사용한 것이다. 12345 user=> (def user/developer ..
클로저 07. 데이터 컬렉션 - 리스트가 핵심
2018. 8. 17.맨 앞에 붙은 ' 기호가 리스트를 만드는 역할을 한다. 이 인용기호가 필요한 이유는, LISP 에서는 식expression 의 첫 요소를 연산자나 함수로 인식하기 때문이다. 그 다음 요소들은 모두 연산자나 함수를 위한 인수로 인식된다.따라서 인용기호가 없으면, 아래에서 보듯이 문자열이 리스트의 첫 요소로 있어서 함수로 인식하여 호출하려고 하기 때문에, 에러를 발생시킨다. 문자열은 함수가 아니다. 12345678 user=> ("marmalade-jar" "empty-jar" "pickle-jam-jar")ClassCastException java.base/java.lang.String cannot be cast to clojure.lang.IFnuser/eval1302 (form-init689628077..
클로저 06. 데이터 컬렉션 - 집합
2018. 8. 17.집합은 유일한 값들의 컬렉션이다. 요소의 중복이 없는 컬렉션을 만들 때 유용하다. 집합은 #{} 로 둘러싼다.집합을 생성할 때는 당연히 중복은 허용되지 않는다.1234567 user=> #{:red :blue :white :pink}#{:white :red :blue :pink} user=> #{:red :blue :white :pink :pink}IllegalArgumentException Duplicate key: :pink clojure.lang.PersistentHashSet.createWithCheck (PersistentHashSet.java:68) Colored by Color Scriptercsunion, difference, intersection 과 집합연산이 가능하다. 집합연산을 하기..
클로저 05. 데이터 컬렉션 - 맵
2018. 8. 17.맵은 키-값 쌍으로 구조화된 데이터를 저장하는데 많이 사용된다. 맵은 중괄호 {} 로 둘러싸인다. 123user=> {:jam1 "strawberry" :jam2 "blackberry"}{:jam1 "strawberry", :jam2 "blackberry"} Colored by Color Scriptercsget 함수로 값을가져온다. 123user=> (get {:jam1 "strawberry" :jam2 "blackberry"} :jam2)"blackberry" Colored by Color Scriptercs키가 없을 경우 반환되는 값을 디폴트로 줄 수 있다. get 함수의 마지막 인수로 디폴트 값 주면 된다. 1234 user=> (get {:jam1 "strawberry" :jam2 "blackb..
클로저 04. 데이터 컬렉션 - 컬렉션의 공통점
2018. 8. 17.모든 컬렉션은 불변immutable이고 존속적persistent이다.cons 를 통해 컬렉션에 요소를 요청하게 되면, 원래의 컬렉션은 변하지 않고, 단지 그 요소가 추가된 새로운 버전의 컬렉션이 반환된다. 존속(persistent)이란 구조 공유(structual sharing)라는 기법으로 컬렉션의 신규 버전이 효율적으로 만들어진다는 것을 의미한다. 존속이라는 개념은 저장장치와 관련이 없고, 데이터가 갱신되었지만, 이전 버전의 값이 지워지지 않고 그대로 보존됨을 의미한다.컬렉션은 다음의 함수를 지원한다.시퀀스 함수 (first, rest, last) 를 지원한다.count 함수는 컬렉션의 크기를 반환한다.conj 함수는 컬렉션에 하나 이상의 요소를 추가한다. 그 컬렉션의 데이터 구조에 가장 효율적인 방..
클로저 03. 데이터 컬렉션 - 벡터
2018. 8. 17.벡터벡터는 중간에 있는 요소를 가져오고자 할 때 유용하다. 인덱스 접근이 필요할 때 유용한 셈이다. 벡터는 대괄호로 둘러싸서 만든다.벡터에도 first 와 rest 가 등장한다.123456789 user=> [:jar1 1 2 3 :jar2][:jar1 1 2 3 :jar2]user=> (first [:jar1 1 2 3 :jar2]):jar1user=> (rest [:jar1 1 2 3 :jar2])(1 2 3 :jar2)user=> Colored by Color Scriptercs 벡터는 인덱스를 통해 요소에 빠르게 접근가능하다.1234567891011121314151617 user=> (nth [:jar1 1 2 3 :jar2] 0):jar1user=> (nth [:jar1 1 2 3 :jar2] ..
리눅스 계정 및 홈디렉토리 삭제
2018. 8. 14.계정+홈디렉토리 삭제 삭제할 계정 확인1234 root@:~# cat /etc/passwd | grep kafkakafka:x:1001:1005::/home/kafka:/bin/sh Colored by Color Scriptercs 계정과 홈디렉토리 모두 삭제되었음을 알 수 있다.123root@:~# userdel -r kafkaroot@:~# cat /etc/passwd | grep kafkaroot@:~# ll /home | grep kafkacs
AICPA 시험 문제유형별 가중치 Scoring Weights
2018. 8. 14.서로 다른 유형의 문제에 대한 배점 역시 상이합니다. 각각의 섹션에서 2개의 멀티플초이스 테스트렛이 차지하는 배점 비중은 전체이 50% 입니다. AUD, FAR, REG 의 경우 나머지 3개의 시뮬레이션 테스트렛이 50%의 배점을 차지합니다.BEC 의 경우에는 2개의 시뮬레이션 테스트렛이 35% 를 그리고 나머지 하나의 리튼 테스트렛이 전체 점수의 15% 를 차지합니다. Question Scoring Weights 문제유형 FAR REG BEC AUD MCQ 50% 50% 50% 50% TBS 50% 50% 35% 50% WC - - 15% - 시뮬레이션의 경우 부분 점수를 획득할 수 있습니다. 틀리게 계산했지만 맞는 답이 나오는 것의 경우, 맞는 답에 대한 점수를 획득할 수 있습니다. 그리고 컴퓨터에 ..
다케우치 켄, <10년 후 이과생 생존법> - 살아남기 위해서는 자기가 가진 능력의 폭을 넓히는 것이 중요하다
2018. 8. 14.기술에는 계층이 있다대학 학부 과정에서 배우는 수학, 물리, 화학과 같은 기초 원리는 가장 아래에 있는 기본 단계에 해당한다. 물론 계층의 사하는 우월관계는 아니다. 그 위에 있는 단계는 일반적인 엔지니어가 기초 원리를 활용하여 20~30대 시절에 개발하는 하드웨어와 소프트웨어 등의 분야다. 그보다 위에 있는 단계는 각각의 기술을 높은 곳에서 내려다보며 전체적인 최적화를 생각하는 분야다. 그러므로 학생 시절에 어중간하게 MBA 같은 강좌를 듣고 프레젠테이션 연습을 할바에야 차라리 기초적인 학문을 제대로 공부하는 편이 좋다.수학, 물리, 화학 등은 이른바 보편적인 기술이며, 익혀두면 두고두고 쓸데가 많은 소중한 재산이다. 애초에 이 세상을 지배하는 기본 원리의 가짓수가 그렇게 많은 것도 아니다. 첨단 분야..