전체 글 92

도서 리뷰: 소프트웨어 설계의 정석

올바르게 동작하고 비즈니스 목표에 부합하는 소프트웨어를 구현하기 위해서는 무엇보다 설계가 중요하다. 소프트웨어 공학의 태동기 이래로 소프트웨어 설계에 대한 중요성은 항상 강조되어 왔지만, 정작 제대로 소프트웨어를 설계하기 위한 실천적인 지식과 방법을 배우기 어려운 상황이 고스란히 이어져 왔다. 눈에 보이지 않는 소프트웨어의 본질적인 특성과 다양한 복잡성이 내재되어 있는 제약이 언제나 소프트웨어 설계를 어렵게하는 요인으로 작용해 왔고, 경력과 연륜을 갖춘 노련한 대가에 의해 훌륭한 소프트웨어 설계가 이뤄져 왔도 해도 과언이 아니다. 그렇다면 소프트웨어 설계를 누구나 쉽게 시작할 수 있는 방법은 없는 것일까? 이 물음에 대한 답을 제공하기 위해 오늘 소개하는 서적과 함께 이야기를 풀어 나가 보려고 한다. 이..

2024.09.29

도서 리뷰: 네트워크 인프라 자동화

IT를 둘러싼 다양한 변화와 그에 따른 요구를 수용하면서 IT 시스템은 더욱 고도화되고 복잡성도 역시 함께 증가하게 된다. 문제는 겉잡을 수 없을 정도로 복잡성이 커지게 되면 시스템을 처리하고 장애에 대응하기가 결코 수월하지 않게 된다는 것이다. 이럴 때 바로 자동화가 빛을 발하게 되는데, 네트워크 분야 역시 자동화에 대한 요구에서 벗어날 수 없으며 이제는 하나의 큰 흐름으로 자리 잡고 있는 추세다. 오늘은 네트워크 인프라 자동화에 대한 서적에 대해 이야기하고자 한다.  본 서적은 SDN(소프트웨어 정의 네트워킹)의 등장 배경을 통해 네트워크 업계에 대한 동향을 살펴보는 것으로 시작된다. 모든 것이 소프트웨어로 제어되고 관리되는 시대에 네트워크 분야 역시 이러한 거대한 흐름 속에서 예외적인 상황이 될 수..

2024.08.26

도서 리뷰: 처음 시작하는 FastAPI

파이썬 생태계에서 무섭게 빠른 속도로 위용을 과시하고 있는 웹 프레임워크가 어느덧 우리 곁에 성큼 다가오고 있다. 바로 그 주인공은 FastAPI다. FastAPI는 기존에 Django와 Flask로 양분화되어 있던 구도를 변화시키고 풍부한 기능과 다채로운 특성을 자랑하며 끊임없이 발전에 발전을 거듭하고 있는 양상을 보이고 있다. 오늘은 FastAPI를 다루고 있는 도서인, '처음 시작하는 FastAPI'로 이야기를 풀어 보려고 한다.   본 도서는 4개의 파트로 크게 구성되어 있고, 첫 번째 파트에서는 모던 웹과 모던 파이썬에 대한 주제로 이야기를 시작한다. 현대 웹 서비스를 구성하는 요소와 이를 지탱하는 구조 그리고 레거시 파이썬의 모습이 아닌 보다 강건한 형태의 모던 파이썬의 특징을 살펴보게 되며 ..

2024.07.28

도서 리뷰: 실전 레디스

오늘날 보다 빠르게 그리고 효율적으로 데이터를 다루기 위한 기술적 요구 사항은 날이 갈수록 늘어나고 있는 상황이다. 기존의 하드디스크 기반 DBMS 방식으로는 대량의 데이터를 빠르게 처리하기 위한 태생적 한계가 명확하고, SSD 기반으로 DBMS를 구성하더라도 앞서 하드디스크 방식의 DBMS가 가지는 한계를 극복하기 어려운 건 마찬가지다. 이러한 기술적 어려움을 해소하기 위해 인메모리 DBMS가 태동되었었고, 이에 대한 대표적인 케이스로서 Memchaced와 Redis가 존재한다. 오늘은 인메모리 데이터베이스 생태계의 왕좌를 굳건히 지키고 있는 레디스에 대한 서적으로 이야기를 풀어 나가려고 한다.   본 서적은 레디스의 특징과 설치 그리고 기본 설정에 대한 이해를 학습하는 것으로 첫 장이 시작된다. 그러..

2024.06.23

도서 리뷰: 실무로 통하는 ML 문제 해결 with 파이썬

세간에는 머신러닝과 관련된 다양한 툴과 도구를 제공하는 생태계가 여럿 조성되어 있지만, 아직까지는 파이썬과 이를 뒷받침하는 풍부한 라이브러리가 여전히 세를 과시하고 있는 중이다. 또한 이와 관련된 도서가 도처에 존재하지만, 레시피 기반의 쿡북 스타일을 지향하는 책은 거의 없는 실정이다. 그런데 파이썬 기반 쿡북 스타일의 머신러닝과 관련된 레시피를 풍부하게 제공하는 도서가 출간되었고, 오늘은 이에 대해 이야기를 하려고 한다. 본 도서는 수치 데이터를 다루는 데 있어 독보적 라이브러리인 넘파이를 시작으로 내용이 전개된다. 넘파이의 벡터 및 행렬과 관련된 다양한 예제를 통해 기초를 익히고 본격적으로 데이터 분석 최고의 라이브러리인 판다스를 활용한 레시피가 제공된다. 여러 데이터 소스로부터 데이터셋을 적재하기 ..

2024.05.26

도서 리뷰: 인사이드 머신러닝 인터뷰

머신 러닝과 관련된 서적은 도처에 편재하지만, 머신 러닝 인터뷰에 대해 안내하는 책은 전무한 실정이다. ML과 관련된 지식과 스킬을 함양하고 다양한 경험을 쌓더라도, 실제 인터뷰에서 합격에 이르는 길은 결코 순탄하지만은 않다. ML 자체의 특수성에서 기인한 문제이기도 하지만 ML 이론과 지식을 인터뷰 현장에서 온전히 드러내기 위해선 좀 더 전략적이고 현실적인 방법이 필요하다. 오늘 소개하는 이 책이 바로 ML 인터뷰를 준비하는 이들에게 최고의 무기가 될 수 있지 않을까 생각한다.  이 책은 ML 면접에 대한 다양한 유형의 평가 방법을 먼저 설명한다. 테크니컬 폰 스크린을 비롯해서 ML 시스템 설계 면접까지 각각의 세부 유형을 구체적으로 다루면서 놓치지 말아야 할 핵심과 중요 평가 고려 항목에 대해 명징하..

2024.04.28

[Python] pypi-search를 통한 PyPI 패키지 정보 조회

파이썬 패키지 매니저인 Pip에서 더이상 search 서브커맨드를 지원하지 않기 때문에 특정 패키지에 대한 조회가 필요할 경우 일일이 PyPI 공식 웹사이트에 접근해야하는 불편함이 있었다. 그런데 pypi-search 패키지를 통해 더이상 그런 수고스러움을 덜 수 있게 되었다.  아래는 pypi-search 패키지를 설치 후 특정 패키지에 대한 조회 결과이다.# pypi-search 패키지 설치pip install pypi-search Collecting pypi-search Downloading pypi_search-2.0-py3-none-any.whl (7.1 kB)Collecting html2text>=2020.1.16 Downloading html2text-2024.2.26.tar.gz..

IT/Programming 2024.04.27

[서평] 파이썬 FastAPI 개발 입문

오늘날 웹 개발 생태계에있어 API의 중요성은 나날이 커져만 가고 있다. 웹 기반의 비즈니스를 영위하는 기업 또는 특정 서비스를 제공하는 조직은 풍부한 API를 수요자에게 제공함으써 수요자의 요구와 기대를 충족할 수 있으며, 다양한 수요자의 참여를 통해 생태계는 더욱 확장되고 이는 곧 서비스의 발전을 제고하는 선순환을 촉진한다. 그런데 양질의 API를 빠른 시간 내에 다양한 수요자에게 제공하는 것은 결코 쉬운 일이 아니다. 보안, 성능, 효율성, 유지 보수성등의 다양한 요소를 고려해야 하고, 무엇보다 프로그래밍 언어와 짝을 이루는 웹 프레임워크가 개발자를 충분히 지원하지 못한다면 빠르고 안정적인 개발은 허상에 불과할 뿐이다. 파이썬 기반의 웹 프레임워크인 FastAPI는 바로 앞서 언급했던 다양한 요구 ..

2024.04.14

[Python] CLI 인터프리터 환경 Tab/자동 완성

Windows 환경에서 CLI 기반의 파이썬 인터프리터를 사용할 때 Tab을 이용한 자동 완성 기능이 제공되지 않아 여간 불편하지 않을 수가 없다. 다행히 이를 해결해 주는 라이브러리가 존재하는 걸 이제서야 알게 되었다-.- pyreadline3 라이브러리를 설치 후 Tab을 통해 자동 완성이 가능하다! C:\>python -m pip install pyreadline3 Collecting pyreadline3 Downloading pyreadline3-3.4.1-py3-none-any.whl.metadata (2.0 kB) Downloading pyreadline3-3.4.1-py3-none-any.whl (95 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 95.2/..

IT/Programming 2024.04.14

[Python] sorted 함수, sort 메서드 정렬 시 key 함수 활용 용례

sorted 함수와 리스트의 sort 메서드 사용 시, 매개변수로 key 함수를 별도로 지정하면 key 함수에서 리턴되는 값을 기준으로 정렬이 적용된다. >>> sorted(student_tuples, key=lambda student: student[2]) [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)] >>> sorted(student_tuples, key=lambda student: student[2], reverse=True) [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)] >>> student_tuples = [ ... ('john', 'A', 15), ... ('jane', 'B', ..

IT/Programming 2024.04.12