분류 전체보기
Go 언어 입문 - Your First Program (golang-book)
2018. 8. 27.“Hello World” 를 출력하는 간단한 프로그램을 만들자. ~/src/golang-book/chapter2 라는 폴더를 만들고, 다음의 내용으로 main.go 파일을 만든다.123456package mainimport "fmt" func main() { fmt.Println("Hello World")}cs해당 폴더로 이동하여 다음과 같이 실행한다. 123~/go# cd src/golang-book/chapter2~/go/src/golang-book/chapter2# go run main.goHello WorldColored by Color ScriptercsHello World가 터미널에 출력되는 걸 확인할 수 있다.go run 명령은 뒤이어 오는 go 파일을 임시 디렉토리에 실행가능한 형태로 저장..
Gramblr로 PC에서 인스타그램 게시물 올리기
2018. 8. 27.아시다시피 인스타그램 웹페이지에는 게시물 업로드 기능이 없다.PC 나 맥에서 포스팅을 할려면 별도의 프로그램을 사용해야 한다.크롭의 앱스토어에서 확장 기능을 이용해도 되지만, gramblr 를 사용하면 사진 편집, 내용 삽입 등이 가능하여 훨씬 편리하다. 아래의 링크에서 운영체제에 맞는 파일을 다운로드 한다.https://gramblr.com/uploader/#home특히 Switch Account 기능이 있어 여러 개의 계정을 가지고 있는 유저의 경우 전환이 편리한 장점이 있다.사진이나 영상을 고른 뒤, 편집이나 필터를 적용한다. 설명을 단다. 물론 여기에 들어가는 내용중 링크는 당연히 클릭이 안된다. Send 를 눌러 업로드를 마친다.
<뭐든 시작하면 어떻게든 된다> - 목표가 달라지는 것은 자연스러운 현상
2018. 8. 26.그때그때마다 자기가 계속 달려갈 수 있게끔 해주는 가장 효과적인 생각을 적용하면 그만이다. 정답은 없다.3가지를 동시에 하면 최단거리로 달릴 수 있다. 3가지 병행이 시간적으로 힘들다고 생각할 수도 있는데, 오히려 바로 그런 점이 이 방법의 핵심이다. 자연히 효율적인 시간 사용법을 궁리하게 되고, 무엇보다 질리지 않는다. 사람은 늘 성장하고 새로운 깨달음을 얻기 때문에 목표가 달라지는 것은 자연스러운 현상이다. 성장했기 때문에 보이게 되는 경치 혹은 현재 당신이 모르는 세계도 많다. '이 행동의 목적은 뭐지?'하고 스스로에게 되물어라. 목적이 있다면 무엇이든 쓸데없는 행동은 없다. 공을 멀리날리기 위해 똑바로 위로 던지는 사람은 없는데도, 노력에 관해서는 - 왠지는 몰라도 - 던지는 각도가 너무 크거나 ..
Strings, bytes, runes and characters in Go - (4) Range loops, Libraries
2018. 8. 25.Strings, bytes, runes and characters in Go Range loopsGo 가 UTF-8 을 특별히 다루는 하나의 방법은 문자열에 for range 루프를 사용할 때이다. for range 루프의 경우, 각각의 반복에서 하나의 UTF-8-encoded rune 을 디코딩한다. 루프를 도는 동안, 루프의 인덱스는 현재 rune 의 시작점으로 바이트로 측정되며, 코드 포인트는 그것의 값이 된다. 코드포인트의 유니코드 값과 출력 형태를 보여주는 다음의 예를 보자. 1234567891011package main import "fmt" func main() { const nihongo = "日本語" for index, runeValue := range nihongo { fmt.Print..
Strings, bytes, runes and characters in Go - (3) Code points, characters, and runes
2018. 8. 25.Strings, bytes, runes and characters in Go 유니코드 표준은 단일값으로 표현되는 아이템에 대해 "code point" 라는 용어를 사용한다. 코드포인트 U+2318 은 hexadecimal 값 2318을 갖고 ⌘ 기호로 표현된다(더욱 자세한 내용은 Unicode page 참조). 다른 예를 들어보면, 유니코드 코드 포인트 U+0061 은 LATIN SMALL LETTER A 인 a이다. 그러면 다음과 같은 억음 부호 'A', à 는 어떤가? 물론 문자이고, 코드 포인트 U+00E0 를 갖는다.하지만, 다르게 볼 수도 있다. 아래의 억음 부호 코드 포인트 U+0300 에 U+0061 인 소문자 a를 덧붙인 것으로 말이다. 일반적으로 문자는 얼마간의 서로 다른 코드 포인트의 ..
Strings, bytes, runes and characters in Go - (2) UTF-8 and string literals
2018. 8. 25.Strings, bytes, runes and characters in Go 문자열은 단순히 바이트를 나열해놓은 것이다. 문자를 문자열로 저장할 때, byte-at-a-time representation 을 저장하는 셈이다. 하나의 문자를 가진 문자열 상수를 다음의 3가지 서로 다른 방법으로 출력하는 간단한 프로그램을 만들어보자.plain stringASCII-only quoted stringindividual bytes in hexadecimal 123456789101112131415161718192021package main import "fmt" func main() { const placeOfInterest = `⌘` fmt.Printf("plain string: ") fmt.Printf("%s"..
Strings, bytes, runes and characters in Go - (1) Printing strings
2018. 8. 25.Strings, bytes, runes and characters in Go Go에서 문자열이란 사실 '읽기전용' 바이트 슬라이스라고 할 수 있다. \xNN 표기법을 사용하는 다음의 예를 보자 (바이트는 hexadecimal 값으로 00 에서 FF 까지의 값을 가진다)1const sample = "\xbd\xb2\x3d\xbc\x20\xe2\x8c\x98"cs앞선 예제의 일부 바이트는 ASCII 나 UTF-8 이 아니다. sample 을 출력하면 다음과 같이 흉한 결과물이 나올 것이다 (환경에 따라 출력되는 모양은 다소 다를 수 있다).123fmt.Println(sample) ▒▒=▒ ⌘cs문자열이 어떤 값을 가지고 있는지 정확히 알아보기 위해서, 부분부분 나눠서 살펴볼 필요가 있다. 몇 가지 방법이 있..
고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..