라벨이 보완필요인 게시물 표시

Gitlab으로 CI/CD하기( DevOps 구축 )

DevOps = Development + Operations 개발 조직과 운영 조직을 융합하기 위한 개발 방법론이다. 운영 조직에서는 서비스를 안정적으로 운영, 확장, 관리하는 것이 중요하다. 트래픽 모니터링, 재고 용량에 대해서 모니터링 등의 작업을 수행한다. 개발 조직에서는 기획에 따라서 새로운 기능을 개발하거나, 버그 수정, 성능 최적화 등을 수행한다. 어떤 작업을 수행하든 코드의 변경이 운영 조직에 영향을 미치고 결국에는 운영 서버에 반영돼야한다.

소프트웨어 개발 버전 표기법

<버전 증가 규칙> 초기 개발 버전 : 0.x.x : 안정화되지 않은 버전이다. 최초 배포 버전 : 1.0.0 : 추후의 버전은 최초 배포 버전의 소프트웨어를 기준으로 명세 버그 수정 시 : X.Y.Z에서 Z를 증가시킨다. 수 버전 또는 Patch버전 증가.  기능 추가    : X.Y.Z에서 Y를 증가시킨다. 부 버전 또는 Minor버전 증가. 기존 버전과 호환되지 않는 변화 : X.Y.Z에서 X를 증가시킨다. 주 버전 Major버전 증가. 부 버전 증가 시 수 버전은 0으로 초기화 주 버전 증가 시 부 버전 및 수버전은 0으로 초기화 < 정식 출시를 앞둔 pre-release 버전 관리 > 버전 + a1, a2, a3...의 형태로 표기. 2.1.12+a1 < 빌드 메타데이터를 적용하는 경우 > 커밋해시의 앞부분(최소6글자)를 이용하여 버전 + 커밋해시의 형태로 표기한다. 1.0.11+f36e00 버전은 무조건 증가시키는 방향으로 기입한다. 출처 :  https://tttsss77.tistory.com/57

Sphinx로 문서화하고 Gitlab Pages에 배포하기

이미지
파이썬 프로젝트에 좋은 문서화 툴 pip install sphinx sphinx-build . _build 이 글은 https://cpusuite.blogspot.com/2022/08/essentials-pycharm-ide-git.html 의 Pycharm setting essential이라는 글과 '나의 파이썬 프로젝트 초기 세팅법'이라는 제목으로 통합될 예정입니다. GItlab pages를 통해 hosting을 하려면 특별한 룰을 따라야한다. 1번 룰 : 정적 컨텐츠는 반드시 public/  에 위치한다. 2번 룰 :  artifacts 경로를 정의할 것. artifacts with a path to the public/ directory must be defined * artifacts란? Job artifacts란 명세한 Job이 성공했는지, 실패했는지에 대한 파일과 경로의 리스트이다. Job이 수행되면 Job이 어떤 형태로 완료되었는지 정보를 담은 파일을 경로에 저장한다. pages:   stage: deploy   script:     - mv docs/build/html/ public/   artifacts:     paths:     - public   only:   - master For further reference, an example sphinx project for GitLab Pages was pushed around the time you originally posted this question. numpydoc_show_class_members = False gitlab 호스팅을 위한 공식 가이드. image: python:3.7-alpine test: stage: test script: - pip install -U sphinx - sphinx-build -b html ....

Pycharm 세팅 essentials

개발 환경을 세팅할 때는 언어 팩과 개발용 프로그램 설치 뿐 아니라 여러 세팅이 필요하다. 환경이 바뀔 때마다 하나 둘 제외하고 세팅해서 귀찮았던 적이 많아서 여기에 개발 환경 세팅법을 템플릿처럼 만들어서 고정하려고 한다.  1 Stable 한 언어 팩 설치 2 환경변수 PATH 설정 3 Git message 설정 (.gitmessage.txt에 템플릿 작성 후) git --global 명령어로 commit template로 지정한다. 4 git message를 설정하고 commit을 하게되면   terminal에서 vim을 통해 gitmessage를 편집하게 되는데   '^M' 라는 개행문자가 그대로 표출되는 경우가 있다.   운영체제의 인코딩이 달라서 나타나는 문제로,    terminal에서 dos2unix [대상 filename]으로 인코딩을 바꿔주자. 5 Pycharm - setting - Terminal - 기본 터미널 쉘을 powershell 말고 bash로 지정  (git설치 후 git 폴더에 있는 bin - bash.exe를 쓰자)  ( 레퍼런스가 적은 powershell보다는 bash가 더 배우기 쉬웠다. )  6 Pycharm - setting - override IDE shortcuts - configure key bindings switch focus to editor -> escape 할당 된 것 삭제 Terminal에서 gitmessage 작성 할 때, vi 명렁어를 쓰게 되는데 얘 때문에 아주 골치였다. escape가 할당되어있으면  vi에서 esc를 눌러서 모드를 변경해야되는데 모드 변경은 안 되고 열려있는 에디터로 커서가 이동한다. Pycharm 기본값으로 escape를 할당 안 하는 게 더 편할 것 같다는 생각이다. 7 pycharm setting project setting file encodings - global encoding,...

Blogger 이애하기 : 구글 PageSiteInsight로 페이지 로딩 속도 개선하기-1(보완필요)

이미지
개인 블로그 또는 개발하는 웹 사이트의 속도를 개선하고 싶다면 구글에서 제공하는 PageSiteInsight 서비스로 간단하게 측정을 해볼 수 있다. 측정하고자 하는 페이지의 URL만 넣고 실행시키면 Headless Chromium을 사용하여 다양한 테스트를 거쳐 지표로 나타내어준다. 지표 뿐 아니라 어느 부분에서 지연이 되고, 어떤 부분을 개선해야한다고 리포트까지 해주니 사이트가 심각하게 느리다 싶으면 참고하는 것이 좋다.

SPA(Single page application)

 SPA란? Single page application. 과거의 웹에서는, 서버에서 클라이언트(사용자 입장에서는 웹 브라우저 프로그램)로 전달하는 데이터 양이 크지 않았다. 현재는 그 데이터양이 훨씬 크다. 보여주는 데이터양이 크지만, 매번 Page를 Refresh하고 로딩하는 것은 비효율적이다. 그렇기에 전체 Page내에서 제공되어야할 내용을 하나의 Page에서 바뀌어야할 데이터 부분만 동적으로 바꿔주는 로직을 반영한 구조가 SPA이다.  말 그대로 Single page에서 application이 운영된다. 예 최초의 Page가 로딩 될 때, 미리 로딩된 Javascript 코드가  사용자가 일으키는 Trigger, Event를 감지하여 바뀌어야 할 컴포넌트만 바꿔주는 것이 그 예라고 볼 수 있다. 유명한 SPA Framework Angular, React, Vue가 있다.   세 프레임워크의 구현은 다르나, 목적은 확장성있는 SPA의 구현에 있다. 세 프레임워크 모두 Virtual DOM 개념을 사용한다. SPA의 단점과 VirtualDOM SPA의 단점은 동적으로 로딩하는 코드가 많을 경우 자바스크립트의 DOM 조작이 빈번하게 일어나 브라우저의 성능 저하. -> 변경된 코드를 다시 브라우저가 렌더링하는 과정에서 발생하는 것으로 추정 Virtual DOM을 사용하는 프레임워크들은 실제 DOM 트리를 흉내 낸 가상의 객체 트리로 html 정보를 저장하고 있다가, 이 트리에 변경이 발생하면 모든 변화를 모아 단 한번 브라우저를 호출해 화면을 갱신하는 방법을 사용한다.  이렇게 하면 브라우저와의 불필요한 상호작용을 최소화하면서 인터렉티브한 웹 사이트를 만드는 것이 가능하다. Q. 트리에 변경이 발생하면 변화 내역을 모아서 한번에 브라우저를 호출하면서 갱신하다는데, 한번에 모아서 호출한다면, 실시간으로 Interaction이 안되지 않을까? 변화는 이미 생겼는데 변화를 모을 때까지 기다려야하니까.라는 의문이 생겼다....

Producer-Consumer

생산자-소비자 패턴은 프로그램 디자인 패턴의 한 종류. 특히 멀티스레드 환경에서 쓰인다.  운영체제에서도 자원 분배 문제를 해결할 때 짚고 넘어가는 주제이다.

이 블로그의 인기 게시물

실무진 면접 경험으로 정리하는 백엔드 (1) : 에듀 테크 기업 면접

노마드코더 개발자북클럽 Clean code TIL 6 : 6장. 객체와 자료구조

백엔드 개발자가 Djnago fullstack 사이드 프로젝트를하며 ( html, css, vanillaJS 그리고 JS프레임워크 )