ETC 14

[Software] Porting, Converting에 대

소프트웨어 공학에서, "포팅(Porting)"과 "컨버팅(Converting)"의 개념이 나오는데, 두 가지 개념이 비슷한 듯 하나 서로 다른 개념이다. 각각의 의미와 차이점에 대해 살펴보자. 포팅 (Porting) 포팅은 한 플랫폼에서 다른 플랫폼으로 소프트웨어를 이식하는 작업을 의미한다. 일반적으로 플랫폼은 운영 체제(OS)나 하드웨어 아키텍처를 가리킨다. 포팅은 기존에 작성된 소프트웨어를 새로운 환경에서도 동작하도록 변경하는 프로세스를 포함한다. 소스 코드를 수정하거나 기존 코드를 새로운 환경에 맞게 컴파일하거나 재작성하는 것이 일반적인 포팅 방법이다. 이렇게 함으로써, 소프트웨어는 다른 운영 체제나 하드웨어에서도 동작할 수 있게 된다. 포팅은 크로스 플랫폼 호환성을 갖춘 소프트웨어를 제공하는 데 ..

블로킹(Blocking), 논블로킹(Non-blocking)에 대해

블로킹과 논블로킹은 프로그래밍에서 자주 사용되는 두 가지 동작 모델 또는 방식을 나타낸다. 이 두 개념은 주로 입출력(IO) 작업, 네트워킹, 멀티스레딩 등과 관련이 있으며, 어떻게 코드가 실행되고 제어가 처리되는지에 영향을 미친다. 아래에서 각 개념을 상세히 살펴보자. 1. 블로킹(Blocking) 블로킹은 어떤 작업이 완료될 때까지 프로그램이 다음 작업으로 진행하지 않고 대기하는 동작 방식을 의미한다. 주로 입출력 작업에서 발생하며, 예를 들어 파일을 읽거나 네트워크에서 데이터를 받아올 때 블로킹 작업이 발생할 수 있다. 블로킹 호출을 하면 해당 호출이 완료 될 때까지 제어가 호출한 코드에 반환되지 않는다. 이는 다른 작업들도 대기 상태에 놓이게 하고, 전반적으로 프로그램의 응답성을 저하시킬 수 있다..

클린 아키텍쳐(Clean Architecture) 에 대해

클린 아키텍쳐에대해 공부하기 위해 포스팅을 찾던 중, 잘 정리된 외국 포스팅이 있어서 이를 번역하여 포스팅하고자 한다. The Clean Architecture Diagram 지난 몇 년 동안 우리는 시스템 아키텍처에 관한 다양한 아이디어를 보았다. 여기에는 다음이 포함된다. Hexagonal Architecture (a.k.a. Ports and Adapters) by Alistair Cockburn, Steve Freeman, Nat Pryce가 멋진 책 Growing Object Oriented Software에서 채택 Jeffrey Palermo의 Onion Architecture Screaming Architecture James Coplien 및 Trygve Reenskaug의 DCI. Iva..

[Visual Studio] IntelliSense(인텔리센스)에 대해

1. IntelliSense란? Intelligent(지능적) + Sense(감지) 의 합성어 메서드, 개체, 속성 등을 드롭다운 리스트 형식으로 제공하고 이것을 개발자가 선택할 수 있도록 하여, 방대한 기능을 찾기 쉽도록 해주며, 코드 입력 시간을 줄이고 철자 오류를 미연에 방지하여 생산성을 향상시킬 수 있는 기능이다. IntelliSense기능을 구현하기 위한 데이터파일이 존재하는데, 작업프로젝트 디렉토리에 있는 *.ncb파일이다. 이 파일을 지운후 Visual Studio를 재시동하면 새로 업데이트 된 새 파일이 생성하고, 이후에 모든 동작이 정상적으로 이루어진다. 그러나 이 기능은 일정시간동안은 제대로 작동하다가 프로젝트에 포함된 파일을 제거하거나 수정하거나 하는 등 여러가지 작업을 하다보면 때때..

ETC 2022.11.26

판교 데이터센터 화재사건으로 보는 서버 이중화의 중요성

1. 개요 2022년 10월 15일 오후 3시경 판교 데이터센터의 무정전 전원장치 부근에 화재가 났다. 그래서 이곳에 입주한 몇몇의 기업들의 서비스가 중단되었었다. 여기서 주목할점은, 어떤 기업은 비교적 빠르게 서비스를 복구하는데에 성공하였지만, 어떤 기업은 밤새토록 복구를 해서야 일부 서비스를 복구할 수 있었고, 완전 정상 복구까지는 수 일이 소요되었다. 업계에서 이 국내 빅테크 ‘투 톱’의 위기대응이 달랐던 점은 메인 서버의 확보와 서버 이중화 구축으로 꼽았는데, 비교적 복구에 능하였던 A기업과 복구에 많은 시간 애를 먹었던 B기업을 두고 차이점을 살펴보자. 2. 서버 이중화란? 서버 이중화 HA(High Availability)는 직역하자면 “고가용성”이다. 가용성이 높다라는 뜻은, 고장날 확률이 ..

ETC 2022.11.25

ESLint와 Prettier (2) - VSCode에 ESLint와 Prettier설치

1. 개요 지난 포스팅에서는 ESLint와 Prettier의 특성과 차이점에 대해 살펴보았다. 이번 포스팅에서는 VSCode에서 ESLint와 Prettier를 설정하는 방법을 살펴보고자 한다. 2. VSCode로 ESLint 및 Prettier 설정하기 코드 편집기에 적합한 확장/플러그인을 설치해야 한다. VSCode의 경우 ESLint및 Prettier를 설치한다. 이러한 플로그인에는 각각 수백만 건의 다운로드가 있으므로 VSCode 확장 마켓플레이스에서 쉽게 찾을 수 있다. 이들을 설치했으면 적절한 사용을 위해 각각을 구성할 준비가 된 것이다. ESLint와 Prettier 설정 앞서 언급했듯이 ESLint와 Prettier는 주의해서 설정하지 않으면 서로 충돌한다. 다행히도 이것은 널리 알려진 문..

ETC 2022.10.17

ESLint와 Prettier (1) - ESLint와 Prettier의 차이점

1. 개요 (이 포스팅은 외국 포스팅글의 내용을 발췌하여 번역 및 일부 수정한 포스팅이다.) 소프트웨어 개발/엔지니어링의 중요한 부분은 의도한 대로 작동하는 코드를 작성하는 것이다. 그리고 가능한 한 버그가 적은 코드를 작성해야 할 것이다. 그러나 실제로 작동하게 만드는 것 보다 코드를 작성하는 데 더 많은 노력을 요한다. 그 이유는 주로 세상에 존재하는 거의 모든 의미 있는 프로젝트/소프트웨어가 협업을 통해 만들어 지기 때문이다. 즉, 내가 다른 사람의 코드를 쉽게 읽을 수 있어야 하고, 다른 사람도 나의 코드를 쉽게 읽고 이해할 수 있어야 한다. 수동 방법을 포함하여 이를 달성하는 많은 방법이 있다. 엔지니어 팀은 코드 검토 중에 코드 스타일 문제를 수동으로 확인할 수 있으며 팀의 모든 엔지니어가 준..

ETC 2022.10.17

Ubuntu 18.04 관리자 권한으로 폴더 프로그램 사용

간혹 root폴더에 진입하는 등 root권한으로 파일 프로그램을 사용해야 할 때가 있다. 터미널을 열고, 아래 명령어로 nautilus-admin 패키지를 설치한다. (nautilus는 우분투의 파일 관리자 프로그램으로, 이 프로그램의 관리자 권한 실행 패키지이다.) $sudo apt install nautilus-admin -y 설치가 끝났다면, 아래 명령어로 nautilus를 재시작 해주면 적용 된다. (기존에 탐색하던 창들이 닫히니 주의하자) $nautilus -q 이제 폴더를 우클릭 해보면 "Open as Administrator" 메뉴가 보이고, 클릭 시 root 권한으로 폴더를 열어 작업할 수 있다. 루트 권한의 폴더인 /root 디렉토리로 진입한 모습이다.

ETC 2022.09.29

[디자인 패턴] MVC, MVP, MVVM이란?

1. 개요 디자인 패턴은 설계자로 하여금 재사용이 가능한 설계는 선택하고, 재사용을 방해하는 설계는 배제하도록 도와준다. 또한 패턴을 쓰면 이미 만든 시스템의 유지보수나 문서화도 개선할 수 있고, 클래스의 명세도 정확하게 할 수 있으며, 객체 간의 상호작용 또는 설계 의도까지 명확하게 정의할 수 있다. 간단히 말해, 디자인 패턴은 설계자들이 올바른 설계를 빨리 만들 수 있도록 도와준다. 2. MVC MVC패턴은 Model + View + Controller를 합친 용어이다. Model과 View는 MVC패턴과 동일하고, Controller 대신 Presenter가 존재한다. MVP 패턴의 구조, 동작, 특징, 장점, 단점을 살펴보자. 2.1 구조 Model: 어플리케이션에서 사용되는 데이터와 그 데이터를..

[VSCode] Prettier 확장 / .prettierrc 파일 작성법

1. Prettier 설치 Prettier는 독단적인 코드 포맷터입니다. 코드를 구문 분석하고 최대 줄 길이를 고려하는 자체 규칙으로 다시 인쇄하여 일관된 스타일을 적용하고 필요할 때 코드를 래핑합니다. (출처: Prettier 공식 설명 문서) VSCode의 사이드 탭에서 확장(Extension)탭을 클릭 후, prettier를 검색하여 설치해준다. 2. Prettier 적용 방법 Prettier를 프로젝트에 적용하는 방법은 세 가지가 있다. .prettier 설정 파일 적용(자주 사용됌) VSCode 전역 설정 파일 사용 Prettier 패키지 설치 후 CLI 사용(거의 사용하지 않는 방법) Prettier 적용하기 - .prettierrc파일 prettier는 기본적으로 프로젝트의 root에 있는 ..

ETC 2022.05.15
반응형