소프트웨어 아키텍처 101 - YES24 막막했던 아키텍처가 쉬워지는 실무 지침서소프트웨어 아키텍트는 전 세계 연봉 10위 안에 드는 직업이지만, 지금까지 ‘개발자가 아키텍트’로 전향하는 데 실질적으로 도움이 될 만한 지침이 www.yes24.com 파이프라인 아키텍처는 꽤 흔하게 볼 수 있다. 머신러닝의 워크플로(workflow)가 이와 같은 형태이며, 함수형 프로그래밍(FP), bash shell의 경우는 이 구조를 따른다. 파이프(pipe)와 필터(filter) 이 아키텍처에서는 가장 기본적으로 두 가지 요소로 구성된다. 파이프 한 소스(source)에서 입력을 받아 다른 소스로 출력을 내는 필터 간 통신 채널이다. 우리가 실생활에서 볼 수 있는 긴 파이프 라인을 구성하는 각각을 떠올려서 생각해보면..
소프트웨어 아키텍처 101 - YES24 막막했던 아키텍처가 쉬워지는 실무 지침서소프트웨어 아키텍트는 전 세계 연봉 10위 안에 드는 직업이지만, 지금까지 ‘개발자가 아키텍트’로 전향하는 데 실질적으로 도움이 될 만한 지침이 www.yes24.com 프레젠테이션(Presentation) 레이어 비즈니스(Business) 레이어 퍼시스턴스(Persistence) 레이어 데이터베이스(Database) 레이어 관심사의 분리 (separation of concerns) 모듈화와 인터페이스간의 연결에 대한 이야기로 표현할 수도 있는데, OSI 7계층처럼 각각의 영역이 담당하는 역할과 책임을 기준으로 만든다는 것이다. 따라서, 역할과 책임을 기준으로 레이어를 나누고 각 레이어별로 어떠한 인터페이스를 가지고 데이터를..
Github preview feature Github의 preview (beta) 기능을 써볼 수 있는 곳이 있다. 우측 상단의 아바타를 누르면 드롭다운되는 메뉴에서 [Feature preview]를 누르면 된다. PR (Pull Request) File Tree PR Files changed 탭의 default UI는 파일트리 뷰를 제공하지 않는다. 그냥 변경된 파일 뷰의 연속인데, PR에 포함된 파일의 변화량이 적으면 다행이지만, 가끔 잘 설계되어 있지 않은 레거시 코드에 대한 리팩토링 작업 (커플링으로 인해 대량 파일 작업 필요) 등을 하다 보면 많은 파일이 변경되어 하나의 PR로 올라오게 된다. 이때, [Viewed] 박스를 체크하며 보긴 하지만, 그래도 변경된 파일을 한눈에 보고 싶을 때가 있다..
소프트웨어 아키텍처 101 - YES24 막막했던 아키텍처가 쉬워지는 실무 지침서소프트웨어 아키텍트는 전 세계 연봉 10위 안에 드는 직업이지만, 지금까지 ‘개발자가 아키텍트’로 전향하는 데 실질적으로 도움이 될 만한 지침이 www.yes24.com 전제 오류 (fallacy) 어떠한 계획/설계를 하던지 간에 우리는 당연시하거나 가정하는 전제들이 있다. 책에서는 특히 분산 아키텍처 설계시 놓칠 수 있는 '오류(fallacy)'들을 소개하고 있다. 여기서 오류라 함은 옳다고 믿거나 가정하지만 사실은 틀린 것을 의미한다. 사실 아키텍처를 설계하는 사람이 이러한 오류에 빠질 수 있다는게 말이 안된다는 생각이 들면서도, 사람이기에 실수할 수 있다는 부분과, 아키텍트가 아니지만 이러한 부분에 대한 지식이 부족한 ..
소프트웨어 아키텍처 101 - YES24 막막했던 아키텍처가 쉬워지는 실무 지침서소프트웨어 아키텍트는 전 세계 연봉 10위 안에 드는 직업이지만, 지금까지 ‘개발자가 아키텍트’로 전향하는 데 실질적으로 도움이 될 만한 지침이 www.yes24.com 트레이드오프와 최고의 제일 나은 아키텍처 최고(best)의 아키텍처를 고집하지 말고 나쁜 것 중에서 제일 나은(least worst) 아키텍처를 선택하세요 - 소프트웨어 아키텍처 101, p.99. 제목과 위의 인용문에 있듯 나쁜 것중에 제일 나은(least worst) 아키텍처를 선택하는 것이 핵심 내용이다. Generic 프로그래밍을 너무 좋아한 나머지 아키텍처에서도 Generic 아키텍처를 찾는 사람들이 있는데, 이는 가장 흔한 안티 패턴이라고 한다. ..
Linus Torvalds prepares to move the Linux kernel to modern C | ZDNet The Linux kernel's foundation is the ancient C89 standard of C. Now, Torvalds has decided to upgrade to 2011's more modern C11 standard. www.zdnet.com 사실 리눅스가 C89를 사용는지도 몰랐다. 작년인가? 리눅스 커널은 Rust로 포팅하는 단체가 생겨났어서, 윈도우처럼 리눅스도 일부분에 대해서는 사용하게 될까? 라는 생각을 가진적이 있었는데, 이 기사를 보니 당분간은 계속 C로만 갈 것 같아 보인다. Rust for Linux Organization for addin..
React – A JavaScript library for building user interfaces A JavaScript library for building user interfaces reactjs.org 왜 만들었는가? 리액트는 자바스크립트의 라이브러리이다. 그렇다면, 라이브러리는 왜 만드는가? 에 대한 질문도 된다. 우선, 반복적인 작업을 줄이고, 한정되어 있는 자원을 효율적으로 사용하기 위함이라고 일반적으로 말할 수 있겠다. 여기서 자원이라고 함은 컴퓨팅 자원뿐만 아니라 사람(개발자)도 포함된다. 이건 일반적인 내용이고, 리액트 자체에 국한해서 이야기하려면 공식 페이지에서 소개하고 있는 아래의 핵심가치들을 살펴보면 이해할 수 있다. 리액트의 핵심가치 1. Declarative (선언적 Vi..
NodeJS & npm 설치 NodeJS: For local JS engine Download | Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org npm: package manager Downloading and installing Node.js and npm | npm Docs Documentation for the npm registry, website, and command-line interface docs.npmjs.com npx 패키지 설치 npm package binary들을 실행하기 위함 npm install -g npx npx execute npm package binari..
아두이노 라이브러리 매니저 아두이노는 라이브러리를 사용하는 방법이 여러가지가 있다. 스케치 파일의 하위 폴더로 포함시키는 방법 압축파일을 등록하여 라이브러리 사용하기 스케치 폴더 로컬 라이브러리 패스에 추가하여 사용하기 공식 라이브러리 매니저에 등록하기 그 중에서도 오늘은 이 '공식 라이브러리 매니저'에 등록하는 방법에 대한 이야기이다. GitHub - arduino/library-registry: Arduino Library Manager list Arduino Library Manager list. Contribute to arduino/library-registry development by creating an account on GitHub. github.com 사실 방법은 간단하며, 위 링크인..
가끔, 아주 오래된 개발환경을 위해, 예전 개발자가 구축해둔 개발환경을 사용해야 되는 경우가 있습니다. 제가 이번에 겪었던 것이 위와 같았는데... 커널 2.6.27을 사용하는 고대 유물 우분투였습니다 하지만, 먼 과거의 인수인계에서 일부 정보가 누락이되어, ID/PASS에 대한 자료가 남지 않았습니다. 개발환경을 구축했던 개발자 역시 너무나 오랜시간이 흘렀기때문에, 기억하지 못합니다. 이때! 어떻게 해야할까요? 자, 먼저 아래는 아이디/패스워드를 몰라서 틀리기만 하는 화면입니다.. 재부팅하여 GRUB부팅이 시작될 때, 아래와 같이 Menu로 들어갈 수 있는 방법이 나옵니다. [ESC]를 눌러줍니다. 오 맙소사 Ubuntu 8이네요.. 어쨌든, 기본 커널에 위치해놓고서, [e] 를 눌러 edit 모드로 ..