분류 전체보기 182

Go 언어로 간단한 수식 평가기 만들어보기

안녕하세요! 오늘은 Go 언어의 go 패키지를 활용해 간단한 수식 평가기를 만들어보려고 합니다. 평소에 go 패키지를 제대로 써본 적이 없었는데, 요즘 회사 일을 하면서 추상 구문 트리(AST)를 자주 다뤄야 해서 기회가 생겼네요. 수식 평가기는 들리기에는 좀 어려울 수 있지만, 대부분 go 패키지의 기능을 활용하면 상당히 간단하답니다. 그럼 어떻게 만드는지 하나씩 살펴볼까요?AST(Abstract Syntax Tree)란?AST란 프로그래밍 언어의 소스 코드를 추상적인 구문 트리로 나타낸 것을 말합니다. 코드를 파싱하면 이렇게 트리 형태로 만들어지는데, 각 노드는 코드의 구문 구조(문법적 의미)를 나타냅니다. 예를 들어 "x = 1 + 2" 라는 간단한 코드라면, AST는 대략 이런 식으로 구성될 것입..

Go 2024.03.30

Go언어의 const 식별자 iota 소개

Go언어에서 조금 덜 알려진 언어 명세인 iota에 대해 소개하겠습니다. 입문서에도 나오는 내용이지만, 읽고 지나치기 쉽죠. 특별히 새로운 내용은 아니므로 제목만 보고도 알고 있다 싶으신 분들은 다른 글로 넘어가셔도 됩니다.iota란?iota는 const(상수) 선언 내에서 기본으로 사용되는 식별자입니다. 타입 없는 정수의 연속된 값을 생성합니다. 구체적인 예시를 한번 보겠습니다.package mainimport "fmt"const ( zero = iota one = iota two = iota three = iota)func main() { fmt.Printf("zero:%v\n", zero) fmt.Printf("one:%v\n", one) fmt.Pr..

Go 2024.03.30

Go 언어로 작성된 프로세스를 외부에서 모니터링할 수 있는 'gops'

이번에는 Google에서 만든 gops라는 도구를 소개하고자 합니다. GitHub - google/gops: A tool to list and diagnose Go processes current...https://github.com GitHub: Let’s build from hereGitHub is where over 100 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and fea...github.com gops는 ps 명령과 유사하게 동작하지만, Go..

Go 2024.03.30

Docker 기초 배우기

Docker를 사용하는 이점환경 구축 시간 단축인프라를 코드화하여 누구나 동일한 환경을 구축할 수 있음CI, CD 등의 자동화 소프트웨어와 잘 어울림컨테이너란?화물선 등에서 사용되는 격리되고 패키징된 상자와 같습니다. 인프라의 컨테이너도 마찬가지로, 서버 상에서 격리된 앱 공간을 만들 수 있는 기술입니다. Docker 외에도Linux ContainersHyper-V 컨테이너Windows 컨테이너 등이 있지만, Linux에서의 사용 편의성 때문에 Docker가 인기를 얻고 있는 듯합니다.가상화와 컨테이너(Docker)의 차이Docker(컨테이너)메모리 상에 존재게스트 OS가 없음메모리 상에 존재하므로 데이터는 일시적Dockerfile로 코드화 가능가상화디스크 상에 존재호스트 OS와 게스트 OS로 나뉨항상 ..

Docker 2024.03.30

Go 개발할 때 필요한 Makefile 작성해보기

안녕하세요? Go를 사용하여 제품을 만들 때, Makefile을 사용하여 빌드를 지정하는 경우가 많습니다. 이유는 다음과 같습니다.버전 정보 등을 삽입하기에 편리합니다.여러 바이너리를 출력할 때 편리합니다.Go의 빌드 옵션을 지정하는 데 여러 가지가 있어 정리해두고 싶습니다.코드 생성기로 미리 작성해야 하는 부분이 있고, 그것을 고려하면 Makefile 등으로 정리하고 싶습니다.그래서 이번에는 프로젝트가 커져가는 중에 어떤 Makefile 작성 방법을 사용하고 있는지 소개하고자 합니다. ** 목 차 **Step 1. 버전 정보를 삽입하기버전 정보를 어느 파일에 작성할지에 대한 논의첫 번째 MakefileStep 2. -race나 -installsuffix 등 옵션을 환경 변수로 지정하기Step 3. 외부..

Go 2024.03.25

React useReducer 완벽 이해

안녕하세요? 오늘은 React의 useReducer에 대해 완벽히 이해하는 시간을 가져볼까 합니다. ** 목차 **React 상태 관리의 최적 접근 방식useState와 useReducer 기본useState 사용 예시useReducer 사용 예시두 개의 훅 비교useReducer를 활용한 복잡한 상태 관리의 장점상태 업데이트 로직의 분리와 재사용성이벤트 소스 모델로서의 활용복잡한 상태 변경의 명확화Immer를 활용한 상태 업데이트 간소화useReducer와 Immer의 통합useState를 이용한 Immer 활용최적의 방법과 성능useState와 useReducer의 적절한 사용성능에 대한 영향React에서의 최상의 사례 예시결론React 상태 관리의 최적 접근 방식 React에서는 컴포넌트 상태를 관..

Javascript 2024.03.19

Hono 웹 프레임워크 소개

안녕하세요? Cloudflare에서 밀고 있는 Hono에 대해 간단히 알아 보겠습니다. 공식 웹 사이트 Hono - Ultrafast web framework for the EdgesHono is a small, simple, and ultrafast web framework for the Edges. It works on Cloudflare Workers, Fastly Compute, Deno, Bun, Vercel, Netlify, AWS Lambda, Lambda@Edge, and Node.js. Fast, but not only fast.hono.dev ** 목 차 **Hono 웹 프레임워크 소개create-hono 명령어Cloudflare Workers3분 내에 배포하기응답 보내기, 요청 처리하..

Javascript 2024.03.06

2024 React 리액트 치트 시트

안녕하세요? 오늘은 리액트 초보자가 볼 만한 치트 시트 개념으로 모던 리액트에서 다루는 내용을 빠르게 훑어 보도록 하겠습니다. ** 목 차 **React 요소 (Elements)리액트 요소 속성 (Element Attributes)리액트 요소 스타일 (Element Styles)React 프래그먼트 (Fragments)리액트 컴포넌트React PropsReact Children PropsReact 조건문 (Conditionals)리액트 리스트 (Lists)리액트 컨텍스트 (React Context)리액트 훅 (React Hooks)React useState 훅리액트 useEffect 훅React useRef리액트 useContextReact useCallbackReact useMemoReact 요소 (E..

Javascript 2024.03.04

Go 언어 개발 환경 설정 - go mod init과 그 필요성

안녕하세요? Go 언어에 푹 빠져서 요즘 계속 배우고 있는데요. Go 언어(일명 Golang)는 Google에서 개발한 정적 타입 언어로 빠르고 안전한 프로그램을 작성하는 데 많이 사용됩니다. 그러나 처음 Go 언어를 접할 때 go mod init이라는 명령어를 만나면 이게 뭔지 혼란스러울 수 있는데요. 이 글에서는 go mod init가 무엇이며 왜 필요한지 자세히 살펴 보겠습니다. ** 목차 **Go 모듈이란?go mod init이란?go mod init이 왜 필요한가요?Go 언어에서의 모듈 관리도구 체인이란?외부 패키지 github.com/gin-gonic/gin에 대하여Python의 의존성 관리와 모듈 관리Java의 의존성 관리와 모듈 관리결론Go 모듈이란?Go 언어에서는 코드 패키지를 구성하고 ..

Go 2024.03.03

zsh 쉘에서 편리한 fish 쉘로 기본 쉘 변경하기

안녕하세요? M1 맥북 에어 구매 기념 기본 zsh 쉘에서 편리하다고 하는 fish 쉘로 변경했습니다. ** 목 차 ** Home Brew로 zsh 설치 설치가 완료되었지만 다음과 같은 경고 메시지가 표시된 경우 fish 설치 터미널의 기본 쉘을 fish로 변경하기 bobthefish 설치하여 편리하게 사용하기 fisher 설치 bobthefish 설치 터미널 환경 설정에서 폰트 변경 그 외에도 fish로 Home Brew 사용 가능하게 하기 Home Brew로 zsh 설치 $ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)” 설치가 완료되었지만 다음과 같은 경고 메시지가 표시된 경우..

Codings 2024.03.03