# 서울숲_J_Day07 리뷰레포트 ### 참석자 - 김준표, 유현희, 이영훈, 최성찬 ## 1. 코드 동작 이해 ### 환경 구축 #### by docker - docker pull ubuntu - 이미지를 가져온다. - docker images - 생성된 image를 목록으로 확인할 수 있다. - docker run -lt -p 8000:8000 -p 22:22 --name [container] [image] - --detach , -d Run container in background and print container ID - --interactive , -i Keep STDIN open even if not attached - --tty , -t Allocate a pseudo-TTY - --publish , -p Publish a container’s port(s) to the host - --privileged Give extended privileges to this container - docker start [container] - Start one or more stopped containers - docker attach [container] - Attach local standard input, output, and error streams to a running container - docker stop [container] - Stop one or more running containers - docker commit [container] - Create a new image from a container’s changes #### by virtualBox ### js파일 압축 shell script ```shell sdirList=$(ls| grep ^d | grep day) backup="" for dir in $dirList do file=$(ls $dir | grep .js) if [ ! -n "$file" ]; then echo "$dir is empty" else for filename in $file do backup=$backup" ./"$dir"/"$filename done fi done zipname="backup_20"$(Date +%y%m%d)".zip" echo $zipname echo $backup zip -r $zipname $backup echo "zip -r "$zipname" "$backup scp $zipname basiltoast@192.168.56.1:/home/basiltoast/backup ``` - 디렉토리 내의 day가 포함된 디렉토리의 이름을 결과로 저장한다. - 각 디렉토리별로 *.js파일이 있는지 검사한다. - *.js파일이 존재하면 압축할 파일이름에 추가한다. - 파일이름을 backup_현재날짜.zip으로 설정한다. - 파일을 압축한 뒤 scp name@ip:path 명령어를 통해 가상환경으로 복사한다. - bash에서는 모든 것을 String으로 인식하므로 ""가 필요없다 ## 2. 코드 동작 개선 @최성찬 - grep 명령과 |(파이프라인)을 이용해서 실행결과를 필터링하는 기능 사용해보기 ```shell sdirList=$(ls| grep ^d | grep day) ``` ## 3. 스스로 확인할 사항 - 리눅스 역사와 유닉스와 차이를 학습한다. - linux의 역사 - linux는 linus torvalds가 커뮤니티 주체로 개발한 컴퓨터 운영체제이다. 초기 리눅스는 개개인의 애호자들이 광범위하게 개발하였다. 이후 linux는 IBM, HP와 같은 거대 IT 기업의 후원을 받으며, 서버 분야에서 유닉스와 마이크로소프트 윈도 운영체제의 대안으로 자리잡았다. - linux - 오픈소스 OS - 일반인부터 개발자까지 모두가 사용한다. - unix - 주로 메인프레임, 서버의 용도로 사용한다. - [참고사이트](https://12bme.tistory.com/220) - [wikipedia-linux](https://ko.wikipedia.org/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4) - [Linux vs. Unix](https://www.diffen.com/difference/Linux_vs_Unix) - 여러 가지 쉘 종류에 대해 학습한다. - shell은 운영 체제 상에서 다양한 운영 체제 기능과 서비스를 구현하는 인터페이스를 제공하는 프로그램이다 - sh(Bourne shell)은 유닉스 버전 7의 기본 유닉스 셸이었다. - zsh(Z shell)은 상호작용 로그인 셸이자 셸 스크립트를 위한 강력한 명령 줄 인터프리터로 사용할 수 있는 유닉스 셸이다. Zsh는 bash, ksh, tcsh의 일부 기능을 포함하여 수많은 개선 사항이 갖추어진 확장형 본 셸이다. - ksh(Korn shell)은 1980년대 초에 벨 연구소의 데이비드 콘이 개발한 유닉스 셸이다. 콘 셸은 본 셸과 하위 호환되며, 벨 연구소 사용자들의 요청을 통해 추가된 C 셸의 수많은 기능을 포함한다. - csh(C shell)은 빌 조이가 개발한 유닉스용 셸로, 본 셸보다 한층 강력하고 사용하기 쉬운 셸이다. csh는 기본적으로 C언어를 전신으로 하여 만들어졌으며 강력한 프로그램 작성 기능을 가지고 있어 C 셸이라 불리게 되었다. - [wikipeadia-shell](https://ko.wikipedia.org/wiki/%EC%85%B8) - 타입스크립트가 자바스크립트 다른 점에 대해 학습하고, ts 파일과 js 파일을 비교한다. - typescript - 컴파일 언어, 정적 타입 언어 - 코드 수준에서 미리 타입을 체크하여 오류를 체크한다. - parameter나 Class의 member variable의 type을 명시해야한다. - TypeScript=JavaScript+Type - javascript - 인터프리터 언어 ``` 컴파일 언어 vs 인터프리터 언어 1. 컴파일 언어 - 컴파일러는 고급 언어로 작성된 프로그램 전체를 컴퓨터에서 실행 가능한 프로그램으로 생성한다. 2. 인터프리터 언어 - 인터프리터는 고급 언어로 작성된 프로그램을 한줄 단위로 받아들여 번역하고, 번역과 동시에 프로그램을 한줄 단위로 즉시 실행시키는 프로그램이다. ``` ## 4. 다같이 확인할 사항 - 셀 스크립트에 활용한 다양한 사례에 대해서 조사해보자. - 새로운 유저의 개발환경을 자동으로 설정 - 컴파일 옵션을 저장하여 재사용 - 타입스크립크를 왜 써야하는지 각자 나름의 이유를 찾아서 비교하고 정리한다. 1. 큰 규모의 자바스크립트 프로젝트에 적용하는 경우, ES5에 비해 객체지향 프로그래밍을 복잡하지 않게 구현하는 기능을 제공한다. 2. 명시적인 타입을 제공함으로써, 컴파일 단계에서 오류제거하여 자바스크립트의 단점을 보완한다. - babel 도구의 트랜스파일링 동작방식과, 실무에서 babel도구가 어떤목적으로 사용되는지 조사하자. - Parsing - Abstract Syntax Tree가 만들어진다. - Transformation - Genereation - [참고사이트](https://moonformeli.tistory.com/28) <!-- - ### Keyword - #### [PolyFill](https://webdir.tistory.com/328) - 개발자가 특정 기능이 지원되지 않는 브라우저를 위해 사용할 수 있는 코드 조각이나 플러그인을 말한다. - HTML5 및 CSS3와 오래된 브라우저 사이의 간격을 메꾸는 역할을 담당한다. --> ## 5. 토론 내용 #### #!bin/bash - 스크립티 파일을 Bash Shell로 실행시킨다는 의미 - (참고)Bash Shell에서 #!bin/bash에서#은 주석이 아니다 - [#!bin/bash 참고자료](https://hahoital.tistory.com/145) #### docker `--privileged` 옵션 - 도커는 가상머신이 아니다! - `--privileged` 옵션을 주고 실행하면 컨테이너 안에서 호스트의 리눅스 커널 기능을 모두 사용할 수 있음