최신 글
어떤 기술을 학습해 가는 방법은 여러 가지가 있다. 최근 가장 관심 있는 방법 중 하나로써 기본적인 개념을 익힌 뒤 실용적인 관점에서의 예시들을 포함, 어떻게 활용하는지 익혀나가고 점진적으로 왜 이렇게 했는지 등 사고의 폭을 넓혀가는 방법이 와닿는다. 그런 관점에서 한빛미디어에 나온 "실무로 통하는..." 시리즈의 책들은 인과추론, 타입스크립트, 엑셀, 데이터 시각화등 책이 나와있는데 "실무로 통하는 클린코드" 또한 이러한 시리즈 책 중 하나이다.클린코드는 읽고, 이해하고, 유지보수하기 쉬운 코드를 의미합니다. 이를 위해 잘 구조화되고 간결하며 변수, 함수, 클래스에 의미 있는 이름을 사용합니다. 또한 모범 사례와 디자인 패턴을 따르며 성능과 구현 세부 사항보다 코드의 가독성과 동작을 우선시합니다. p3..
최근에는 프로덕션 레벨로 Java을 활용하여 작업을 이어오면서 개인프로젝트 몇몇을 제외하고는 Python 기반의 웹 서비스 개발을 거의 못하고 있었다. 종종 FastAPI에 대한 이야기를 듣곤 했었다. 작년말 해커톤에 참여할 일이 있었는데 그 때 함께 작업하시는 분이 FastAPI 이야기를 하셔서 1시간 정도 레퍼런스 문서를 보고 백엔드 API 서버를 만들기는 했었는데 이번에 이렇게 관련 서적을 읽을 기회가 있어서 한번 각을 잡고 읽어보게 되었다.Python을 개발언어의 강력함은 배우기 쉽고 이를 지탱하는 프레임워크가 굉장히 많다는 점이다. 그 중 웹 프레임워크는 과거부터 2가지 종류가 굉장히 인기가 많았다. 일종의 거대한 프레임워크라고 할 수 있는 Django와 대조적으로 경량화된 Flask이다. 어드..
10년 전만 하더라도 AI 기술을 활용하는 사람들은 기계학습, 딥러닝을 포함하여 알고리즘과 수학적 지식을 필요로 했다. 이미지(또는 데이터)에서 사물을 식별하거나 이상패턴을 판별하는 등 특정 분야에서만 활용하고 있었고 전문적인 지식뿐 아니라 다양한 경험이 뒷받침되어야 사용할 수 있는 수준이었다. 학습 모델을 어떤 데이터로 만들것인지 그리고 최종 결과가 잘 동작하는지등 가늠하는 것도 어려운 주제이고 전문적인 최신 트렌드를 계속해서 학습해야하는 고충이 있다. 하지만 생성형 AI가 태동하기 시작하면서 분위기가 바뀌었다. 생성형 AI(generative AI)는 프롬프트에 대응하여 텍스트, 이미지, 기타 미디어를 생성할 수 있는 일종의 인공지능(AI) 시스템을 말한다. 즉, 프롬프트만 잘 만들수 있다면 전문적인..
IT News
-
Stackoverflow 2021년 개발자 설문 조사
세계적으로 영향력 있는 QnA 서비스이자 커뮤니티인 stacoverflow는 매년 개발자 설문을 진행하여 웹사이트에 공유한다. 아래는 응답자 상위 10개 국가이다. 북미, 인도, 유럽 등이 주요 응답자들이다. 전 세계 대상의 설문조사라고 하지만 전문적인 샘플링 아니기 때문에 내용 자체는 일부 국가에만 맞는 내용일 수 있다. 개발 트렌드에 대한 소소한 인사이트를 얻을 수 있는 자료 또는 참고용으로 보면 좋다. Years coding 약 10년차를 기점으로 10년 차 미만이 50% 10년 차 이상이 약 50% 비율을 갖는다. 전 세계적으로 10년 차 넘게 일하고 있는 개발자들이 생각보다 많음을 알 수 있다. 개인적인 경험으로 우리나라에서도 10년 이상 경력자들이 과거 대비 꽤 늘어나고 있어 긍정적인 하나의 ..
-
Django framework 3.2 LTS 릴리즈
4월 6일, Django 3.2 마이너 버전이자 3.X의 LTS 버전이 릴리즈 되었다. 이번 릴리즈에는 편의 기능들이 다소 많이 포함되었는데 그 중 가장 반가운 소식은 ORM에서 AutoField에 설정에 대해서 전체 설정을 할 수 있게 됬다는 점이다. AutoField, 즉 PK가 기본값이 int이기 때문에 각 Model마다 BigAutoField로 재정의 해야하는 귀찮음(?)이 있었는데 간단한 설정으로 기본값을 변경할 수 있게 되었다. 이번 마이너 릴리즈의 주요 변경사항은 아래 3가지이다. AppConfig 자동 발견 Django에서는 하나의 프로젝트에 여러개의 앱을 운용할 수 있게 지원하고 있다. python manage.py startapp [APP_NAME] 명령으로 기본 뼈대를 만들어낼 수 있..
-
JQuery 3.6 릴리즈와 4.0 준비
jquery/jquery jQuery JavaScript Library. Contribute to jquery/jquery development by creating an account on GitHub. github.com 지난 2020년 4월 3.5 릴리즈 이 후 거의 1년만에 JQuery 3.6이 릴리즈되었다. jQuery는 오랜 시간 파편화된 브라우저의 DOM을 단일 코드로 문제 없이 다룰 수 있게 하여 빠른 생산성과 안전성을 제공하는 섹시한 javascript 라이브러리였다. 하지만 이제는 ECMAScript 표준을 준수하는 웹 브라우저들이 많고 성능적인 이슈도 있기 때문에 jQuery가 프로젝트를 진행할 때 필요한가라는 질문에 쉽게 예스라고 말할 수는 없을 것이다. 또한 ajax를 위해서도 많..
-
Amazon EC2 T4g 인스턴스 서울 리전 출시
EC2는 AWS에서 제공하는 Virtual Machine이다. Amazon Elastic Compute Cloud(Amazon EC2)이 풀 네임이다. Ealstic에 E 그리고 Compute Cloud에 대문자 C가 두번 들어가서 EC2라고 불리운다. 이렇게 반복 문자를 숫자로 대체하는 것이 AWS 서비스 이름의 특징이다. EC2는 목적에 따라서 다양한 버전을 제공하는데 이번에 T4 시리즈가 출시되어 서울리전에서 사용할 수 있게 되었다. EC2 T familty는 순간적으로 성능을 Burst할 수 있는 기능을 제공하고 사용한 만큼 가격을 내는 인스턴스 타입이다. 예를 들어 평상시에 적은 컴퓨팅 파워로 운용이 가능하지만 상황에 따라 순간적으로 CPU 파워를 사용하여 어느정도 대응이 가능하도록 설계 되었는..
-
Wireshark 2.0 릴리즈
Wireshark와 X11 MacOS에서는 Wireshark를 실행시키기 위해서는 X11이 필요했다. X11은 OS X 10.5~ 10.7까지만 사용된 윈도우 시스템이라 기본적으로 설치되어 있지 않다. Wireshark를 사용하기 위해서 X11을 설치를 해야하고 심지어 X11이 동작하는데까지 2-3분이상 기다려야하는 불편함을 겪어야 했다. Wireshark 2.0 2.0부터는 X11가 아닌 MacOS 어플리케이션으로 직접 실행이 되기 때문에 X11을 별도로 설치하거나 오랜 시간을 기다리지 않아도 된다. 그리고 프로그램을 시작하면 첫 페이지에 인터페이스별 캡쳐되고 있는 현재 상태가 그래프로 표시된다. 아래는 https://www.wireshark.org..
리뷰 글
-
실무로 통하는 클린 코드
어떤 기술을 학습해 가는 방법은 여러 가지가 있다. 최근 가장 관심 있는 방법 중 하나로써 기본적인 개념을 익힌 뒤 실용적인 관점에서의 예시들을 포함, 어떻게 활용하는지 익혀나가고 점진적으로 왜 이렇게 했는지 등 사고의 폭을 넓혀가는 방법이 와닿는다. 그런 관점에서 한빛미디어에 나온 "실무로 통하는..." 시리즈의 책들은 인과추론, 타입스크립트, 엑셀, 데이터 시각화등 책이 나와있는데 "실무로 통하는 클린코드" 또한 이러한 시리즈 책 중 하나이다.클린코드는 읽고, 이해하고, 유지보수하기 쉬운 코드를 의미합니다. 이를 위해 잘 구조화되고 간결하며 변수, 함수, 클래스에 의미 있는 이름을 사용합니다. 또한 모범 사례와 디자인 패턴을 따르며 성능과 구현 세부 사항보다 코드의 가독성과 동작을 우선시합니다. p3..
-
처음 시작하는 FastAPI
최근에는 프로덕션 레벨로 Java을 활용하여 작업을 이어오면서 개인프로젝트 몇몇을 제외하고는 Python 기반의 웹 서비스 개발을 거의 못하고 있었다. 종종 FastAPI에 대한 이야기를 듣곤 했었다. 작년말 해커톤에 참여할 일이 있었는데 그 때 함께 작업하시는 분이 FastAPI 이야기를 하셔서 1시간 정도 레퍼런스 문서를 보고 백엔드 API 서버를 만들기는 했었는데 이번에 이렇게 관련 서적을 읽을 기회가 있어서 한번 각을 잡고 읽어보게 되었다.Python을 개발언어의 강력함은 배우기 쉽고 이를 지탱하는 프레임워크가 굉장히 많다는 점이다. 그 중 웹 프레임워크는 과거부터 2가지 종류가 굉장히 인기가 많았다. 일종의 거대한 프레임워크라고 할 수 있는 Django와 대조적으로 경량화된 Flask이다. 어드..
-
한 권으로 끝내는 이미지 생성 AI with 미드저니
10년 전만 하더라도 AI 기술을 활용하는 사람들은 기계학습, 딥러닝을 포함하여 알고리즘과 수학적 지식을 필요로 했다. 이미지(또는 데이터)에서 사물을 식별하거나 이상패턴을 판별하는 등 특정 분야에서만 활용하고 있었고 전문적인 지식뿐 아니라 다양한 경험이 뒷받침되어야 사용할 수 있는 수준이었다. 학습 모델을 어떤 데이터로 만들것인지 그리고 최종 결과가 잘 동작하는지등 가늠하는 것도 어려운 주제이고 전문적인 최신 트렌드를 계속해서 학습해야하는 고충이 있다. 하지만 생성형 AI가 태동하기 시작하면서 분위기가 바뀌었다. 생성형 AI(generative AI)는 프롬프트에 대응하여 텍스트, 이미지, 기타 미디어를 생성할 수 있는 일종의 인공지능(AI) 시스템을 말한다. 즉, 프롬프트만 잘 만들수 있다면 전문적인..
-
You Don't Know JS Yet - 자바스크립트 개념, 스코프와 클로저
최근 함께 일하는 동료와 가볍게 JavaScript 주제로 이야기를 했었다. 기억나는 내용 중 하나는 JavaScript 개발자 면접관으로써 생각보다 숙력자를 찾기 어렵다는 것이다. JavaScript는 과거 웹 브라우저에서 동작시키기 위한 스크립트 언어였지만 이제는 서버뿐 아니라 앱 또는 GUI 개발까지 다양하게 활용되고 있다. github 플랫폼에 가장 많이 등록되어 활용되는 개발언어이기도 하고 각종 리포트의 항상 상위권 인기에 머무르는게 이 언어이다. 같이 일하던 동료가 말하는 숙련자란 Javascipt를 잘 이해하고 서버 개발에 활용할 수 있는 사람을 말한다. 그러한 관점에서 나 또한 비슷한 사람에 속한다. 오랫동안 다뤄왔지만 JavaScript 내부 동작에 대해 고민해보거나 개발 언어 특성에 맞..
-
Release의 모든 것
소프트웨어 개발을 처음 시작하는 사람들은 요구사항에 대한 정교한 설계 보다는 어떤 기술을 사용해서 어떻게 구현할 것인지에 대해 고민을 하게 되는데 운용을 포함한 입체적인 관점보다는 구현 자체에만 의미를 두는 경우가 많다. 여기서 정교한 설계는 어떤 시스템과 통합될 것인지 그리고 사용하게될 사용자수는 어떻게 되는지, 안정성을 위해 테스트 시나리오는 무엇일지 그리고 마지막으로 이 모든것을 포함하여 구현해야할 기능들에 대해 일정내 가능할지등 고민하는 것을 말한다. 문제는 실제 제품이나 서비스 운용 경험이 있어야 설계에 여러가지 고려사항들을 포함시킬 수 있다는 점이다. thread safe하지 않는 API를 사용해서 간헐적으로 프로세스가 죽는다던가 또는 책에서도 나오는 예시로 try-catch-finally에서..
인기 글
-
[SQL] 사용자별 제일 마지막 데이터 조회하기
때때로 사용자 기준으로 제일 마지막 데이터 조회가 필요할 때가 있다. 다양한 방법이 있을텐데 SQL로 간결하게 데이터를 조회할 수 있는 방법을 정리하려고 한다. 결론부터 말하면 사용자 ID를 기준으로 group by를 하고 나서 그 중 updated_at 필드가 가장 큰 값을 조건으로 데이터를 찾으면 된다. 예를 들어 가상의 테이블을 하나 만들어서 확인해보자. 아래는 사용자별 과목에 대한 점수를 저장하는 테이블이다. create table test_score ( id bigint(11) auto_increment comment 'PK' primary key, user_id bigint(11) round int, subject varchar(30), score int, created_at datetime ..
-
ubuntu 데스크탑과 서버 커널의 차이점은?
서버와 데스크탑의 차이점이란?일반적으로 서버와 데스크탑은 사용 용도가 다르다. 데스탑은 문서작성, 게임, 웹, 그래픽등 다양한 환경과 같이 범용적인 PC 환경을 사용할 수 있음을 의미하지만 서버용은 서비스에 최적화됨을 의미합니다. 백그라운드 프로세스들을 주로 사용하여 서비스와 데이터처리, 네트워크 처리에 최적화되어야 한다. 하드웨어 자원이 일을 많이 하도록 GUI를 사용하지 않는 것도 그 이유이다. Ubuntu에서의 커널 차이점데스크탑에서는 genric이란 키워드를 사용하는 커널을 사용한다. 서버용을 확인하기 위해서 12.10 버전 Ubuntu 서버를 설치해보았다. morenice@ubuntu-morenice:~/linux-3.5.0$ uname -aLinux ubuntu-morenice 3.5.0-17..
-
ps명령어를 통하여 thread 정보를 확인하는 방법
개발하는데 있어서 thread를 사용하는 경우가 많다. "나는 thread가 필요 없어!" 하는 분들도 한번쯤은 보면 나중에 우연히 만나게 될 때 조그마한 도움(빠른 원인분석등)이 될수 있다. ps 명령어를 사용하면 linux 시스템의 프로세스 정보들을 얻을 수 있다. 시스템을 운용하는 사람들에게 있어서도 유용히 사용되는 정보인데, 이러한 ps 명령어에서 해당 프로세스가 thread정보를 함께 출력하게 정보를 얻을 수 있다. ps -eLf | grep testsrv UID PID PPID LWP C NLWP STIME TTY TIME CMD root 2588 2587 2588 0 11 00:05 ? 00:00:07 ./testsrv root 2588 2587 2589 2 11 00:05 ? 00:23:1..
-
ls 명령어 디렉토리만 확인하는 방법에 대하여
ls 명령어는 파일과 디렉토리 리스트를 출력해주는 unix계열의 명령어다. ls --help 명령어를 확인하면 -d 옵션으로 directory만 출력하게 하는 옵션을 확인할 수 있다. morenice@ubuntu:~$ ls --help 사용법: ls []... []... List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort. 긴 옵션에서 꼭 필요한 인수는 짧은 옵션에도 꼭 필요합니다. -a, --all do not ignore entries starting with . -A, --almost-all do not list impli..
-
C언어, enum 타입의 크기는?
enum 타입으로 정의된 리스트를 정리하고 있다가, 최대치가 궁금해서 간단한 확인을 해보았다. 변수들은 일반적으로 sizeof를 이용하여 크기를 알아 낼 수 있는데, sizeof(enum)이 안되기 때문에, struct로 enum 타입을 감싸고 sizeof로 크기를 확인해보았다. linux 64bit 그리고 gcc 컴파일러를 사용하였다. #include enum enum_number { ONE, TWO, THREE }; struct enum_struct { enum enum_number num; }; int main(int argc, char* argv[]) { printf("enum:%ld\n",sizeof(struct enum_struct)); return 0; } enum:4 4byte 크기면, e..