Tools

Tools

Vim 입문

Vim으로 통일 백엔드 개발자에게도 점점 데브옵스적인 역량이 요구되면서, 리눅스 서버에 터미널로 접근하게 되는 경우가 많아졌다. 간단하게는 로그나 파일이 존재하는지, 또는 설정파일을 변경하거나 프로세스가 살아있는지 등등 여러 가지 이유에서 말이다. 그럴 때마다 리눅스 터미널 단축키를 구글링 하면서 하곤 했는데, 한동안 안 하면 까먹고 다시 찾아보고... 무한 반복이었다. 이런 일이 잦아지면서, 리눅스를 공부해야겠다고 계획했다. 에디터 조작을 vim 단축키로 통일하는 것은 그 과정 중 하나다. 사실 vim을 사용하는 건 굳이라고 생각을 했었다. 하지만 최근 들어서 에디터를 통일할 필요성을 점점 느끼게 됐다. 회사에서는 윈도우OS에 이클립스와 vscode를 사용하고, 개인적으로는 맥OS에 인텔리제이랑 웹스톰..

Tools/git

커밋 주기는 어느정도가 적당할까?

브랜치는 자주 분기하고 커밋 단위는 깔끔하게! 업무 컨텍스트가 바뀌면 브랜치를 분기하고, 작업 후 여러 커밋들을 `squash`해서 유의미한 커밋 메시지 단위를 유지하는 것이 좋다고 생각했다. 실제로 그렇게 했을 때 `revert`하기도 편하고 커밋히스토리도 비교적 깔끔하게 관리되기 때문이다. 하지만 최근에 브랜치 전략을 설명할 일이 생기면서, 다른 회사의 브랜치 전략들을 찾아봤는데 잘못 알고 있던 정보들이 많아 글로 정리한다. 커밋은 적어도 하루에 한 번 유의미한 커밋을 만들어 내는 것은 좋지만, 그것보다 내가 작업한 결과물을 동료들에게 빠르게 공유하는 것이 훨씬 중요하다. 왜냐하면 소스 통합 시 발생하는 충돌(conflict)때문이다. 개인적으로 충돌을 많이 경험하진 못했지만, 발생할 때마다 스트레스..

Tools

Gradle 겉 핥기

왜 maven을 두고 gradle을 배워야 할까? Gradle는 주로 Java 프로젝트에 사용되는 강력한 빌드 자동화 도구다. 소스 코드 컴파일, 테스트 실행, 애플리케이션 패키징 및 배포 과정을 자동화한다. 정의부터 살펴보면 어플리케이션을 배포하기 위해 개발자들이 했던 작업들을 자동화해 주는 툴이다. 이전에는 개발자들이 터미널에서 명령어로 한땀한땀했던 일련의 반복적인 작업들을 빌드 툴이 자동으로 컴파일해주고 테스트코드를 실행시켜 주고 참조하는 라이브러리 파일을 관리해주는 것이다. // 컴파일 후 테스트 // 빌드툴 X $ javac -d /absolute/path/for/compiled/classes -cp /absolute/path/to/junit-4.12.jar /absolute/path/to/Te..

Tools/git

Git 명령어 정리

다른 깃 명령어들도 많지만, 기본적인 것을 제외한 내가 자주 쓰는 명령어 위주로 정리했다. stash git에 의해 추적되고 있는 파일들을 임시로 보관한다. 나같은 경우에는 작업 중에 우선순위가 높은 작업(오류)이 생겨서 급하게 처리해야할 때 자주 쓴다. $ git stash save 명시적인기록 $ git stash --keep-index $ git stash -u stash 스택 조회 $ git stash list stash 적용, 부분이 생략되면 스택 가장 윗부분이 적용됨 $ git stash apply stash 제거, 부분이 생략되면 스택 가장 윗부분이 제거됨 $ git stash drop stash 스택 적용 및 삭제, 부분이 생략되면 스택 가장 윗부분이 제거됨 $ git stash pop 브..

Tools/git

Github-flow, Git-flow (1)

서론 최근에 학원에서 팀프로젝트를 하나 했는데, git branch에 익숙하지도 않고 시간에 쫓기다보니 그냥 master branch에 다 커밋했었다. 그러다보니 깃허브 커밋 이력이 엉망진창이다. 이번 기회에 글을 정리하며 깃허브 커밋 관리에 대해 좀 더 이해해보려 한다. Git Flow 예전에 branch를 공부하면서 얼핏 본 기억이 나는 그림이다. 배울 당시에도 좀 복잡했지만 실무에서는 이렇게 쓰겠구나하는 감이 와서 좋았었다. 위 그림만 봐도 어떻게 브랜치 형상관리가 이뤄지는지 알 수 있다. branch는 총 5개로 구분해서 관리한다. master : 제품으로 출시될 수 있는 브랜치 develop : 다음 출시 버전을 개발하는 브랜치 feature : 기능을 개발하는 브랜치 release : 이번 출..

Tools/gulp

gulp 컴파일시 JS async, await 오류

"uncaught ReferenceError: regeneratorRuntime is not defined" gulp로 개발하는데 자꾸 오류 뜸 babel로 js문법 변환 과정에서 생기는 오류 문법 변환을 @babel/preset-env로 설정해서 async를 regeneratorRuntime 모듈로 변환 나는 저런 모듈을 import 하지 않았기 때문에 오류 발생 해결방법 const js = () => gulp .src(routes.js.src) .pipe( bro({ transform: [ babelify.configure({ presets: [["@babel/preset-env", { targets: { chrome: "55" } }]], }), ["uglifyify", { global: true ..

Tools/gulp

gulp(3) js, git deploy

> npm i gulp-bro -D > npm i babelify -D > npm i uglifyify -D js파일 하나로 컴파일 컴파일하면서 babel js 압축 (공백 제거) -이전 setting에서 babel과의 차이점은 앞에껀 gulpfile.babel.js파일 안의 ES6을 바꾸는 것 -여기서는 src폴더에 있는 js들의 문법을 지원가능한 버전으로 바꾸는 것 gulp-bro babelify uglifify const js = () => gulp .src(routes.js.src) .pipe( bro({ transform: [ babelify.configure({ presets: ["@babel/preset-env"] }), ["uglifyify", { global: true }], ], }) ..

Tools/gulp

gulp(2) image, sass -> css

> npm i gulp-image -D > npm i gulp-sass node-sass -D > npm i gulp-autoprefixer -D > npm i gulp-csso -D image 압축 플러그인 sass => css 플러그인 css 호환성 플러그인 css 압축 플러그인(공백 제거) gulp-image 큰용량의 image일 경우 압축하는데 시간이 오래 걸림 따라서 watch 유무는 프로젝트에 맞게 잘 설정해야 편함 gulp-sass, node-sass import sass from "gulp-sass"; sass.compiler = require("node-sass"); gulp-sass는 node-sass를 컴파일러로 사용해서 이런식으로 적어줘야 함 nodeJS는 import/export ..

비비빅B
'Tools' 카테고리의 글 목록