내가 까먹을까봐 만든 블로그

전체 글

Computer Science/Software Engineering

[QA 전략] 깃 브랜치 전략(Git Branching Strategy) - Git Flow, GitHub Flow, GitLab Flow, Trunk-based development(TBD)

Git은 알려진 툴 중 가장 널리 사용되고 있는 형상관리 및 협업을 위한 도구이다. 개인이 혼자 프로젝트를 진행한다면 자신이 작성한 코드는 곧바로 메인 master 브랜치에 push와 commit을 해도 본인만 해당 버전에 대해 알아볼 수 있다면 크게 상관이 없다. 하지만 협업을 하거나 누군가에게 코드를 공유해야 하는 오픈소스 프로젝트라면 단순히 메인 브랜치에 commit만 남발했을 때 언제 리비전 되었고 무엇을 위한 수정이었는가 등에 대한 질문들을 무수히 받게 될 수도 있다. 이런 리스크는 깃 브랜치 전략(Git Branching Strategy)을 통해 어느 정도 예방할 수 있다. 더 많은 방법론이 존재하지만 가장 범용적이라 생각되는 4가지를 선별해 보았다. Git Flow 우선 Git Flow이다...

Computer Science/Software Engineering

[Server] 스테이징 서버(Staging Server)란?

주요 개념 개발 서버(Development Server) 스테이징 서버(Staging Server) 프로덕션 서버(Production Server) 스테이징 서버(Staging Server)란 Production으로 가기 전 임시서버라 볼 수 있다. 즉, 운영환경에 적용하기 전에 확인하는 서버를 의미한다. 약어로 "ST 서버"라고도 부르기도 한다. 개발자 로컬PC -> (소스저장소) -> 빌드서버(CI서버) -> 개발서버 -> 테스트서버 -> 스테이징서버 -> 운영서버 간략히 아래의 그림과 같이 표현할 수도 있다. 참고 자료 https://ecogeo.tistory.com/tag/%EC%8A%A4%ED%85%8C%EC%9D%B4%EC%A7%95%EC%84%9C%EB%B2%84 https://conflue..

Computer Science/Software Engineering

[Server] Proxy Server와 Reverse Proxy란?

우선 Proxy Server(프록시 서버)란 클라이언트가 자신을 통해 타 네트워크 서비스에 간접적으로 접속하도록 해주는 서버이다. 서버와 클라이언트를 이어주는 역할을 수행하는 중계 서버로 볼 수 있다. 이 프록시 서버를 통해 보안성과 성능 및 안정성 향상 효과를 기대할 수 있다. 프록시 서버는 Forward Proxy Server와 Reverse Proxy Server로 나눌 수 있다. Forward Proxy Server 우리가 일반적으로 지칭하는 프록시 서버는 Forward Proxy Server를 의미한다. 포워드 프록시 서버는 클라이언트 앞에 연결된 부분이다. 아래 그림과 같이 사용자(You)에 해당하는 클라이언트가 인터넷 웹서버에 요청을 보내면 그 중간에 포워드 프록시 서버가 먼저 요청을 수신한..

Languages/Dart(Flutter)

[Dart] const와 final

프로그래밍 언어에는 컴파일(Compile) 언어와 인터프리터(Interpreter) 언어가 있다. 컴파일 언어는 전체 소스코드를 한 번에 번역하여 컴퓨터에게 전달하고, Python과 같은 인터프리터 언어는 각 라인을 실행하며 순차적으로 명령 줄들을 실행한다. 이 두 가지 타입의 언어 중 Dart는 컴파일 언어에 해당하며, 일반적으로 Dart는 Flutter를 이용해 모바일 앱을 구현할 때 주로 사용되고 있다. 컴파일 언어는 한 번에 번역하여 컴퓨터에게 명령을 전달하는 특성이 있고, 이에 따라 명령어를 실행하는 타이밍을 컴파일 타임(Compile Time)과 런타임(Run Time)으로 나눌 수 있다. 즉, 특정한 라인의 명령은 각각의 할당되어야 하는 실행 시간에 명령이 수행된다. 간략하게 말하면 컴파일 ..

Computer Science/Software Engineering

URI(Uniform Resource Identifier)와 URL(Uniform Resource Locator)과의 차이와 URN(Uniform Resource Name)

RESTFul API를 구현하거나 네트워크 이미지를 사용하는 경우 종종 URL(Uniform Resource Locator)과 URI(Uniform Resource Identifier)라는 단어를 접하게 된다. 위 두가지와 함께 추가적으로 URN(Uniform Resource Name)이라는 것도 있다. 이를 이해하기 전 우선 우리가 인터넷 환경에서 자원을 식별하기 위해 사용하는 방법에는 Path Variable 방식과 Query Parameter 방식이 있다는 것을 알아야 한다. 아래는 Path Variable 방식의 예이다. /user/id /user/image /user/address 아래는 Query Parameter 방식의 예이다. /user?job=programmer /user?job=prog..

Languages/Python

[Python] Anaconda 이용 중 Pyinstaller를 사용해 패키징 시 exe파일 용량이 커지는 이유

Pyinstaller는 Python으로 실행파일을 생성해 배포하기 위해 사용되는 패키지이다. cx_Freeze나 py2exe 등의 패키지도 있지만 개인적으로 가장 사용이 간편하다고 느껴진다.하지만 고객이 실행파일만 메일로 받고싶어하는 경우도 있고, 실행시 프로그램 부팅 속도를 빠르게 하기위하거나 등 여러가지 이유로 용량이 작은 것이 더 선호된다.이 때 Anaconda를 사용하여 패키지를 import하고 Pyinstaller를 이용해 마지막으로 패키징을 위해 실행파일을 생성하면 예상보다 훨씬 큰 용량이 되는 것을 볼 수 있다. 거기다 onefile을 사용하지 않으면 훨씬 더 큰 용량으로 패키징이 된다. Anaconda를 사용해 패키지를 설치하면 mkl 계열 dll 파일들이 함께 패키징되기 때문이다. MKL..

AlienCoder
외부 저장소
loading