분류 전체보기
하스켈 Starting out - (9) 타입 변수 Type variables
2017. 12. 5.head 함수의 타입이 무엇이라고 생각하는가? head 함수는 리스트를 받아 첫 번째 요소를 반환한다. 지금 확인해보자. Prelude> :t headhead :: [a] -> a여기서 a는 무엇인가? 타입을 뜻하는 것인가? 앞서 타입은 대문자로 쓴다고 말한바 있다. 그러므로 a는 타입이 아니다. 타입이 아니라 타입변수(type variable)이다.a는 어떤 타입이라도 될 수 있다는 의미이다. 다른 언어의 제너릭같은 개념이다. 타입 변수를 가지고 있는 함수는 다형함수(polymorphic functions) 라고 부른다. head 의 타입 선언은 어떤 타입의 리스트를 받아서 그 타입의 한 원소를 반환한다는 말이다. fst 함수를 기억하는가? 페어의 첫 번째 요소를 반환하는 함수이다. 타입을 확인해보자...
하스켈 Starting out - (8) 타입
2017. 12. 5.하스켈은 정적 타입 시스템이다. 모든 표현식의 타입이 컴파일 당시에 이미 알려져있다. 예를 들어 불린 타입을 어떤 숫자로 나눌려고 하면, 컴파일되지 않는다. 프로그램이 충돌하기 전에 컴파일 당시에 이런 오류가 발견되는 것이 좋다. 하스켈의 모든 것은 타입을 가지며, 따라서 컴파일러는 컴파일하기 전에 프로그램에 대해 어느 정도 판단을 할 수 있다. 자바나 파스칼과는 다르게 하스켈은 타입추론(type inference)을 가진다. 만약 숫자를 쓰면, 굳이 하스켈에게 그것이 숫자라고 말할 필요가 없다는 것이다. 하스켈에 있어 타입 시스템을 이해하는 것은 매우 중요하다.타입은 모든 표현식이 가지는 일종의 라벨이다. 표현식이 어떤 카테고리에 속하는지 말해주는 셈이다. 표현식이라는 것은 True 같은 불린이나 "h..
Error haskell: Variable not in scope
2017. 12. 4.다음과 같이 Variable not in scope 에러가 발생하는 경우Prelude> addThree :: Int -> Int -> Int -> Int :89:1: error: Variable not in scope: addThree :: Int -> Int -> Int -> Int 이 경우에는 다음과 같이 멀티플 라인 입력을 해야한다. 아니면 해당 코드를 파일로 저장하여 :load 을 이용하여 로딩할 수도 있다.Prelude> :{Prelude| addThree :: Int -> Int -> Int -> IntPrelude| addThree x y z = x + y + zPrelude| :}Prelude> addThree 3737 383839 393939393939393939781515Prelude>
하스켈 Starting out - (7) 튜플 Tuples
2017. 12. 2.하나의 값에 다수의 값을 저장한다는 측면에서 튜플은 리스트와 유사하다. 하지만 몇 가지 근본적인 차이점이 있다. 숫자의 리스트는 숫자의 리스트일 뿐이다. 그 자체가 타입이고 하나의 숫자만 갖느냐 아니면 무한개의 숫자를 갖느냐는 아무런 문제가 되지 않는다. 하지만 튜플은 결합시킬 값의 갯수를 정확히 알고 있을 때 사용할 수 있다. 얼마나 많은 요소를 포함하고 있고 그 요소의 타입이 무엇인지에 따라 타입 또한 결정된다. 튜플은 괄호로 표시되고 구성요소는 콤마로 구분된다.다른 주요한 차이점은 구성요소들이 동질(homogenous)의 것일 필요는 없다는 것이다. 리스트와 다르게 튜플은 다양한 타입의 요소를 포함할 수 있다.하스켈에서 2차원의 벡터를 어떻게 나타낼 수 있을지 생각해보자. 하나의 방법은 리스트를 사..
하스켈 Starting out - (6) list comprehension
2017. 12. 2.10보다 작은 자연수를 2배로 곱하는 리스트를 만들려면 take 10 [2,4..]와 같은 방식으로 작성할 수 있다. 이와는 달리 list comprehension 을 사용할 수 있는데, 이는 set comprehensions과 매우 유사하다. 아래에서 사용한 list comprehension 즉, [x*2 | x [x*2|x 그러면 위의 구문에 조건을 붙여보자. 이제 2배를 했을때 12보다 큰 원소만 골라내보자. 다음과 같다.Prelude> [x*2|x = 12][12,14,16,18,20]Prelude>그러면 50에서 100까지 모든 숫자에 대해서 7로 나누는 경우 나머지가 3인 원소만 골라내보자.Prelude> [x|x boomBangs xs = [ if x [ x | x [x*y | x [adje..
ghci, stack ghci 버전 확인하기
2017. 12. 2.다음과 같이 함수를 정의할 때 parse error 가 나는 것은 ghci 버전 차이에 따른 것이다. GHCi 가 7.x 또는 그 미만인 경우에는 let 을 통해 함수를 정의해야 한다. Prelude> boomBangs xs = [if x
하스켈 Starting out - (5) range, cycle, repeat, replicate 함수
2017. 12. 2.Range 함수는 숫자, 알파벳 등 셀수 있는 원소들을 산술적으로 나열할 때 유용하게 쓰인다. 예를 들어, 1에서 20까지 모든 자연수를 포함하는 리스트를 만들려면 [1..20]라고 작성하면 된다. 물론[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] 와 같이 작성해도 똑같으나 이건 멍청한 방법이다. Prelude> [1..20][1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]Prelude> ['a'..'z']"abcdefghijklmnopqrstuvwxyz"Prelude> ['K'..'Z']"KLMNOPQRSTUVWXYZ"Prelude>그러면 1과 20 사이에 있는 짝수로 이루어진 리스트는 어떻게 만들 수 있는가?..
하스켈 Starting out - (4) 리스트 입문
2017. 12. 1.length는 리스트의 길이를 반환한다.Prelude> length [5,4,3,2,1]5null 은 리스트가 비어있는지 체크해서 True, False 를 반환한다. Prelude> null [1,2,3]FalsePrelude> null []Truereverse 함수는 리스트를 반전시킨다.Prelude> reverse [5,4,3,2,1][1,2,3,4,5]take 함수는 숫자와 리스트를 인수로 갖고, 리스트의 처음부터 원소를 일정 갯수 가져온다. Prelude> take 3 [5,4,3,2,1][5,4,3]Prelude> take 1 [3,9,3][3]Prelude> take 5 [1,2][1,2]Prelude> take 0 [6,6,6][]Prelude>해당 리스트에 포함된 원소의 갯수보다 많은 수를..
하스켈 Starting out - (3) 리스트 입문
2017. 12. 1.하스켈에서 리스트는 동질(homogenous)의 데이터 구조이다. 리스트는 같은 타입의 원소를 가진다. 이 말은 정수의 리스트 또는 문자 리스트 등은 가질 수 있지만, 정수 일부, 문자 일부로 구성되는 리스트는 존재하지 않는다는 의미이다. * let 키워드를 이용하여 GHCI 에서 이름을 정의할 수 있다. GHCI 에서 let a = 1 이라고 하는 것은 스크립트에 a = 1 이라고 쓰고 로딩하는 것과 동일하다. Prelude> let lostNumbers = [4,8,15,16,23,42]Prelude> lostNumbers[4,8,15,16,23,42]Prelude>리스트는 대괄호로 표현되고고, 리스트의 값들은 콤마로 구분되어진다. 문자에 관해서 이야기하면 문자열은 단지 문자의 리스트라고 보면 된다...
하스켈 Starting out - (2) 함수를 만들어보자
2017. 11. 30.이제 간단한 함수를 만들어보자.함수는 호출될 때와 유사한 방식으로 정의된다. 함수 이름에 이어 공백 다음에 파라메터가 나온다. 하지만 함수를 정의할 때는 = 다음에 해당 함수가 수행할 기능이 나온다. 아래와 같이 작성한 후 baby.hs 등으로 저장하자. 해당 파일이 저장된 경로로 이동하여, :l baby 라고 치면 해당 스크립트가 로딩된다. baby.hs 1doubleMe x = x + x cs 123456789(blackbriar) root@gcloudx:~/blackbriar/blackbriar/lab/miran# ghciGHCi, version 7.10.3: http://www.haskell.org/ghc/ :? for helpPrelude> :l baby.hs[1 of 1] Compiling M..
하스켈 Starting out - (1) 간단한 수학 연산
2017. 11. 30.주요 연산은 직관적으로 이해가 가능할 것이다. 하스켈의 경우 다음 몇 가지 사항만 유의하자.+ 는 숫자의 경우에만 작동하고, == 는 비교가능한 대상간에 작동하기 때문에 위의 경우에는 오류를 발생시킨다. Prelude> 5 + "llama" :5:3: No instance for (Num [Char]) arising from a use of ‘+’ In the expression: 5 + "llama" In an equation for ‘it’: it = 5 + "llama"Prelude> Prelude> 5 == True :3:1: No instance for (Num Bool) arising from the literal ‘5’ In the first argument of ‘(==)’, namely ..
하스켈 웹프레임워크 - Yesod 라우팅 구문 Routing Syntax
2017. 11. 30.하스켈 웹프레임워크 - Yesod라우팅 구문 Routing Syntax MVC(Model-View-Controller) 프레임워크 관점에서 Yesod를 보면, 라우팅과 핸들러는 이 중 컨트롤러에 해당한다. 다른 웹개발 환경과 비교해보면 다음과 같다.PHP, ASP와 같은 파일 이름 기반 처리방식Django나 Rails 처럼 정규표현식에 기반하여 파싱하는 방식Yesod는 원리상 후자에 가깝다. 그렇다고 하지만 몇 가지 차이점이 있다. Yesod는 정규표현식을 사용하는 대신에 루트의 부분에 매칭한다.단방향 라우트-핸들러 매핑이 아니라, Yesod는 route datatype 또는 type-safe URL 라고 불리는 데이터 타입을 사용하고 양방향 전환 기능을 만들어낸다. Route SyntaxYesod는 기..
재해 등의 이유로 시험장이 문을 닫는 경우 안내 NASBA Exam Site Closures
2017. 11. 27.재해 등의 이유로 시험장이 문을 닫게 되어 예약이 취소되면, 프로메트릭에서 이로 인해 영향을 받는 모든 수험생에게 연락을 취하게 됩니다. 이 경우 수험생은 NTS 상의 남은 시간내에 리스케줄링을 하실 수 있습니다. 스케줄링을 위해 NTS 기간 연장이 필요하다면 candidatecare@nasba.org 로 연락을 취해야 합니다. 클로징된 테스트 센터의 목록은 Prometric > Centerclosure 에서 확인하실 수 있습니다. 하지만 센터가 정상적으로 오픈되어 있지만, 안전 등의 이유로 결시가 불가피한 경우 candidatecare@nasba.org로 연락을 취하고 아래의 정보를 제공해야 합니다. Candidate’s name as it appears on the NTSName of section ..
Haskell 웹프레임워크 Yesod 퀵 스타트 가이드
2017. 11. 25.Haskell 웹프레임워크 Yesod 퀵 스타트 가이드Yesod 웹 프레임워크의 주요 특징은 다음과 같다.safety & security guaranteed at compile timedeveloper productivity: tools for all your basic web development needsraw performancefast, compiled codetechniques for constant-space memory consumptionasynchronous IOthis is built in to the Haskell programming language (like Erlang) 1. Stack build tool은 다음 포스팅을 참조하여 설치한다. 하스켈 설치 및 Hello World ..
하스켈 설치 및 Hello World 출력해보기 Quick steps to get up and running with Haskell on Ubuntu
2017. 11. 24.하스켈 설치 및 Hello World 출력해보기Quick steps to get up and running with Haskell on Ubuntu 하스켈을 설치하고 Hello World 를 출력하는 간단한 예제를 실행해보자.먼저 가상환경을 만든다.12345678root@gcloudx:~# virtualenv -p python3 venvhaskellRunning virtualenv with interpreter /usr/bin/python3Using base prefix '/usr'New python executable in /root/venvhaskell/bin/python3Also creating executable in /root/venvhaskell/bin/pythonInstalling setup..
구글 애드센스 비동기 광고 구현하기
2017. 11. 23.구글 애드센스 설정 최적화 방법 중의 하나인 비동기 광고 코드 구현 방법입니다. 비동기 광고 코드는 아래의 설명대로 모바일 배너에 적용되며, 광고가 콘텐츠 로드에 영향을 주지 않기 때문에 방문자가 콘텐츠를 더 빨리 확인할 수 있다는 장점이 있습니다. 비동기 코드의 이점은 웹페이지에 있는 다른 요소의 로드에 전혀 지장을 주지 않는다는 점이라고 합니다. 즉, 사용자가 광고를 로드하는 데 문제가 있어도 페이지의 콘텐츠는 정상적으로 로드할 수 있다는 것이지요. 이 특징은 특히 모바일 사용자가 웹페이지를 로드할 때 지연 시간 감소가 두드러집니다.설명에 따르면, 비동기 및 동기 광고 코드 간의 중요한 차이점입니다.속도: 비동기 광고 코드를 사용하면 특히 모바일에서 웹 로드 지연 시간이 향상됩니다.향상된 사용자 환경..
AICPA 시험 BEC 리튼 커뮤니케이션 답안 작성팁 CPA BEC Written Communication Answering Strategies
2017. 11. 23.AICPA 시험 BEC 리튼 커뮤니케이션 답안 작성팁CPA BEC Written Communication Answering Strategies CPA 시험의 다양한 유형 중 BEC 섹션에서만 만나볼 수 있는 것이 바로 흔히 리튼이라고 불리는 Written Communication Task (WCs, 이하 리튼) 입니다. 리튼은 BEC 시험 점수의 15% 를 차지합니다만, 점수 비중이 크지않다고 절대 소홀히 해서는 안됩니다. CPA BEC 리튼 커뮤니케이션 기본 정보BEC 섹션의 마지막인 5번째 테스트렛에 바로 리튼 문제가 3문제가 포함되어 있습니다. 3문제 중 하나는 pre-test, 즉 더미 문제이고, 2문제만이 채점대상이 됩니다. 물론 어느 문제가 더미인지 알 수 없으므로 3문제 모두 최선을 다해야겠..
우분투 호스트이름 바꾸기
2017. 11. 23.우분투 호스트네임은 다음과 같이 변경할 수 있다. 호스트네임 임시 변경 (재부팅시 원상복귀됨)12345root@gcloud-seoul-5d188bdade7:~# hostnamegcloud-seoul-5d188bdade7root@gcloud-seoul-5d188bdade7:~# hostname gcloudroot@gcloud-seoul-5d188bdade7:~# hostnamegcloudColored by Color Scriptercs 호스트네임 영구 변경1234567891011root@gcloud-seoul-5d188bdade7:~# hostnamectl set-hostname gcloudxroot@gcloud-seoul-5d188bdade7:~# hostnamectl Static hostname: gc..
우분투에 pgAdmin 설치하기 How To Install pgAdmin on Ubuntu 14.04
2017. 11. 18.우분투에 pgAdmin 설치하기How To Install pgAdmin on Ubuntu 14.04 시스템 패키지 업데이트 완료, 관련 패키지 설치완료, 그리고 가상환경 설치까지 마쳤다고 가정하고 진행합니다. Installing PGAdmin 4가상환경을 활성화하여 PgAdmin 파이썬 휠을 다운로드한다.12345678910111213141516171819 root@localhost:~# source venv/bin/activate(venv) root@localhost:~# wget https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v1.6/pip/pgadmin4-1.6-py2.py3-none-any.whl--2017-11-18 15:35:29-- https://ftp..
우분투 14.04에 PostgreSQL 설치하기 How To Install and Use PostgreSQL on Ubuntu 14.04
2017. 11. 18.How To Install and Use PostgreSQL on Ubuntu 14.04 Installation우분투의 기본 저장소는 Postgres 패키지를 포함하고 있으므로, apt 패키징 시스템을 이용해서 설치할 수 있다. 로컬 apt 저장소를 업데이트하지 않았으므로, 먼저 apt 저장소를 업데이트한다. Postgres 패키지와 "contrib" 패키지를 가지고 와서 설치한다.123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596..
Username is not in the sudoers file. This incident will be reported
2017. 11. 18.test1 으로 접속시 다음과 같은 오류가 발생하는 경우 아래와 같이 처리한다. 해당 오류와 관련한 문답은 다음 링크에서 확인할 수 있다.https://unix.stackexchange.com/questions/179954/username-is-not-in-the-sudoers-file-this-incident-will-be-reported 1234 [sudo] password for test1:test1 is not in the sudoers file. This incident will be reported. Colored by Color Scriptercs 123456 test1@localhost:/$ su -암호:root@localhost:~# visudoroot@localhost:~# cs 라인 ..
페이팔 사전 승인결제(Preapproved payments) 취소방법
2017. 11. 18.페이팔을 통한 사전 자동 결제 승인을 취소하는 방법은 다음과 같다. 페이팔에 로그인 후 우측 상단의 톱니바퀴를 클릭한다. 프로필 화면으로 이동하게 되고 여기서 결제 탭을 누른다. 사전 승인 결제 관리 버튼을 누른다. 취소를 원하는 프로필을 선택한다. 세부정보를 확인 후 Cancel 을 눌러서 사전 승인결제를 취소한다. 반복결제가 취소되었다.
리눅스 사용가능한 사용자 계정 조회 A command to list all users and how to add, delete, modify users
2017. 11. 11.리눅스 사용가능한 사용자 계정 조회 A command to list all users and how to add, delete, modify users 사용가능한 로컬 유저 목록 보기1234567891011 postgres@localhost:~$ cut -d: -f1 /etc/passwdrootdaemonbinsyssyncpostgrestest1postgres@localhost:~$ Colored by Color Scriptercsgetent를 이용해서도 사용자 목록을 볼 수 있다. 다만 getent가 /etc/passwd 또는 LDAP 등 사용자 db 백엔드에 구성된 모든 사용자를 반환한다는 점에서 위와 방식과 차이가 있다.1234567891011 postgres@localhost:~$ getent p..
호리에 다카후미, <모든 교육은 세뇌다> - (1) 학교는 국가의 세뇌기관, 글로벌 인재와 지역인재, 탈학교 사회의 배움은 몰입이다.
2017. 11. 7. 0.자신의 욕망을 억누르는 듯한 '인내'와 '준비'에는 적극적이면서, 왜 가장 하고 싶은 '행동' 앞에서는 주춤거리는 것일까? 참고 견뎌서 도대체 무엇을 얻는단 말인가?단언컨대, 나는 '인내'를 정말 싫어한다. 하고 싶은 일이 있으면 곧바로 행동으로 옮기고, 하기 싫은 일은 격렬히 하지 않는다. 현재 상황이 불만족스러운데 참는 것 따위는 있을 수 없다. 노력은 인내와는 전혀 다른 것이다. 내가 말하는 노력이란 어떻게 해서든 이루고 싶어서 누가 뭐라고 해도 추진하는 행위다. 발걸음을 멈추지 않는 것, 즉 '몰입하는 것'이다. 1. 일반적인 학교 교육을 받은 사람은 모두 '만일의 경우'를 위해 학교를 다녔다. 그리고 도움이 될지 안될지 알 수 없는 공부를 했다. 학교를 다니는 동안에는 당연히 하고 싶은 ..
고이케 히로시, <2억 빚을 진 내게 우주님이 가르쳐준 운이 풀리는 말버릇> - 시간은 미래에서 과거로 흐르고 있다
2017. 11. 7. "그렇다면 현재의 네가 9년 전의 너를 만난다면 어떻게 할래? 그때 그 눈물콧물을 흘리며 탄식을 하던 너를 만난다면?""그건... 현재의 나는 이미 빚을 모두 변제했고, 행복하게 살고 있으니까 절대로 포기하지 말라고 말하겠지요.""그렇지? 그럼 포기하지 말라고 말해.""네? 어떻게요?""시간은 미래에서 과거로 흐르고 있다고 하잖아. 즉, 미래로부터의 목소리는 과거에 전달되는 거라고. 과거는 바꿀 수 있는 거라고. 과거는 바꿀 수 있는 거야. 그러니까 과거를 향해서 크게 소리치라고!"2억 빚을 진 내게 우주님이 가르쳐준 운이 풀리는 말버릇국내도서저자 : 고이케 히로시 / 이정환역출판 : 나무생각 2017.08.14상세보기
Getting Started with CLISP (17) - 텍스트 출력 및 읽기 Printing and Reading Text
2017. 11. 4.Getting Started with CLISP (17) - 텍스트 출력 및 읽기 Printing and Reading Text 이번 포스팅에서는 사용자 인터페이스의 가장 기본인 command-line 인터페이스에 대해서 알아본다. Printing and Reading Text스크린에 프린트하기1234567 Break 83 [84]> (print "foo") "foo""foo"Break 83 [84]> cs"foo"가 2번 출력이 된다. 첫번째 "foo"는 실제 print 함수가 출력하는 부분이며, 두번째 "foo" 는 REPL이 입력된 표현식의 값을 그대로 출력해주기 때문이다. 숙련된 리스퍼들은 prin1 함수도 애용한다. print 와 prin1 의 차이점을 이해하기 위해 다음의 예를 살펴보자.123..
2018 AICPA 시험 변경내용 (AUD) 2018 AICPA Exam Changes - AUD
2017. 11. 2.AUDITING AND ATTESTATION (AUD)Blueprints2018 AUD 블루프린트에는 추가되거나 삭제된 컨텐츠 영역은 없습니다. 하지만 SAS 130, An Audit of Internal Control Over Financial Reporting 용어 업데이트를 반영한 12개 representative tasks 와 컨텐츠 그룹에 대한 수정이 있었습니다. Content2018년 AUD 응시를 고려중이신 수험생들은 주요한 변경사항을 숙지하고 계셔야 합니다. 다만 평가에 반영되는 시기는 내용별로 상이합니다. SAS 132, The Auditor’s Consideration of an Entity’s Ability to Continue as a Going Concern (AU-C 570)— ..
2018 AICPA 시험 변경내용 (BEC) 2018 AICPA Exam Changes -BEC
2017. 11. 2.BUSINESS ENVIRONMENT AND CONCEPTS (BEC) Blueprints:블루프린트상 변경 부분은 없습니다. Content: 실제 BEC 컨텐츠의 변경은 없습니다. 다만 IT 섹션의 경우 아래와 같이 일부 포커스가 변경됩니다. Information Technology (IT)현재까지는 주로 컴퓨터가 하는 역할에 대한 이야기였다면, 2018년에는 CPA가 컴퓨터를 어떻게 활용하는가에 대한 측면으로 그 주안점이 이동한다고 보면 되겠습니다.또한 2018년부터 IT 섹션에 새로운 관련 용어들이 등장하게 됩니다. 해당 용어들은 이미 수년전부터 업계에서는 사용되고 있었습니다. 예를 들면 다음 용어들입니다.Artificial intelligence and machine learningAutomati..
2018 AICPA 시험 변경내용 (REG) 2018 AICPA Exam Changes -REG
2017. 11. 2.REGULATION (REG)Blueprints REG 시험 블루프린트에는 매우 적은 변화만 있습니다. 레퍼런스 목록에 “Treasury Regulations” 을 추가한 것과 Reference 목록 중 Internal Revenue Code of 1986, as amended, and Regulations 에서 "and Regulations" 부분이 삭제된 것이 전부입니다. Content2018 REG 섹션과 관련해서는 현재 컨텐츠 업데이트 내용이 없습니다. 시험 내용 변경에는 항상 6개월간의 예고 기간이 있으므로 시험을 앞두신 분들은 너무 염려하지 않으셔도 되겠습니다.
2018 AICPA 시험 변경내용 (FARE) 2018 AICPA Exam Changes - FAR
2017. 11. 2.2018년 AICPA 시험은 테스팅되는 컨텐츠에서 시험 툴의 인터페이스 디자인 개선 등 몇 가지 부분에서 변화가 예정되어 있다. 이러한 변화들은 수험생에게 어느 정도 영향을 줄 수 있음에도 불구하고, 사실 2017년 시험 변경만큼 이슈가 되고 있지는 않다. 아래에서 해당 내용을 좀 더 살펴본다. 2018 CPA EXAM CONTENT CHANGESAICPA 시험에 출제되는 모든 컨텐츠는 다음과 같이 2가지 유형으로 나눠볼 수 있다.- AICPA Blueprints에 대응되는 representative tasks 업데이트 - alterations to authoritative guidance 에 기반을 둔 컨텐츠 변경 FINANCIAL ACCOUNTING AND REPORTING (FAR) Blueprin..