본문 바로가기

전체 글93

[메이플 사진관] 프로젝트 기획부터 서비스 공개까지 들어가며이 글의 내용중 일부는 일반인이 이해하기 힘든 내용이 포함되어 있을 sudo 있습니다. 안녕하세요. 메이플 사진관을 1인 개발한 7년차 서버 개발자 SpiralMoon 입니다.오늘은 메이플스토리 관련 서비스인 메이플 사진관의 기획부터 오픈까지의 과정과 이후에 마주한 상황에 대해 기록을 하려 합니다.  메이플 사진관 - 메이플 프로필 제작소메이플스토리 스타일로 커스텀 프로필을 만들어보세요!maplestudio.app프로젝트 시작 전 GitHub - SpiralMoon/maplestory.openapi: 🍁 MapleStory Open API Client Library for JavaScript, TypeScript, Java, C#, Python.🍁 MapleStory Open API Clien.. 2024. 9. 6.
[Node.js] Event Loop와 non-blocking I/O 실행 과정 Event Loop와 non-blocking I/O 실행 과정Node.js가 Single Thread 임에도 어떻게 non-blocking I/O를 처리하는지 알아보자사전 지식스레드 스레드 (컴퓨팅) - 위키백과, 우리 모두의 백과사전위키백과, 우리 모두의 백과사전. 두 개의 스레드를 실행하고 있는 하나의 프로세스. 스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으ko.wikipedia.org 콜백 콜백 - 위키백과, 우리 모두의 백과사전위키백과, 우리 모두의 백과사전. 프로그래밍에서 콜백(callback) 또는 콜백 함수(callback function)는 다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 말한다. 콜백을 넘겨받는 코드는 이 .. 2024. 7. 4.
[Javascript] V8 Engine이 string과 number 값을 다루는 방법 V8 Engine이 string과 number 값을 다루는 방법V8 Engine이 자바스크립트의 문자열, 숫자 데이터의 메모리 최적화를 수행하는 방법에 대해 알아보자사전 지식V8 Engine Node.js — The V8 JavaScript EngineNode.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.nodejs.orgConstant pool를 통한 메모리 절약V8 Engine에서는 JS 코드의 런타임 최적화 및 빠른 실행을 위해 다양한 최적화 기법을 사용한다. 그 기능중 하나인 constant pool은 런타임 동안 변하지 않는 상수(bytecode에서 상수로 참조되는 heap 객체)들의 집합을 저장하는 구조이다. V8 En.. 2024. 6. 28.
[Typescript] Module 절대경로 설정 방법 Module 절대경로 설정 방법 타입스크립트 프로젝트에서 소스코드 관리를 위한 절대경로 설정 방법을 알아보자. 절대경로를 사용하는 이유 타입스크립트 프로젝트는 기본적으로 상대경로를 통해 module을 import 하도록 되어있는데 프로젝트나 소스파일의 규모가 커지면 자연스럽게 import 구문도 늘어나면서 소스코드가 더러워질 수 있다. ../으로 도배된 import 구문으로 인해 가독성 저하 소스파일 이동 시 상대경로 변경으로 인한 사이드이펙트 등의 문제가 발생한다. 상대경로 대신에 절대경로를 적용하면 위 문제를 해결할 수 있다. 절대경로 설정 절대경로를 적용하려면 tsconfig.json를 수정해야한다. // tsconfig.json { "compilerOptions": { "baseUrl": ".",.. 2024. 3. 14.
[Ubuntu] 부팅 시 스크립트 자동 실행하기 부팅 시 스크립트 자동 실행하기 우분투 부팅 시 프로그램이나 스크립트가 자동으로 실행될 수 있도록 환경을 구성해보자. rc.local 이란? rc.local 파일은 리눅스 시스템에서 부팅 과정 중 마지막에 실행되는 스크립트 파일이다. 이 파일은 부팅 시에 자동으로 실행되는 사용자 정의 명령이나 스크립트를 포함시킬 수 있다. rc.local 수정 $ sudo vi /etc/rc.local root 권한으로 rc.local 파일을 연다. [설치] WantedBy=multi-user.target #!/bin/bash // 부팅 시 실행하고 싶은 명령어 or 스크립트 작성 exit 0 파일의 내용을 위 내용처럼 작성한다. #!/bin/bash로 시작하여 파일의 내용이 bash 쉘 스크립트임을 선언 부팅 시 실행.. 2024. 3. 9.
[Typescript] Typescript와 OOP 언어의 Function Overloading 비교 Typescript와 OOP 언어의 Function Overloading 비교 타입스크립트와 객체지향 언어의 함수 오버로드의 차이점에 대해 알아보자 사전 지식 함수 오버로드 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 함수 오버로드(영어: Function overloading)는 다양한 에이다(Ada), C#, C++, 자바(Java) 등의 다양한 프로그래밍 언어에서 사용되는 함수의 특징으로, 같은 함수 이름을 가 ko.wikipedia.org Typescript와 OOP 언어의 함수 오버로드 정의 방법과 차이점 스타크래프트 오버로드 프로그래밍 언어들은 다형성을 만족시키기 위해 함수 오버로드를 지원한다. 그러나 타입스크립트에서는 일반적인 객체지향 언어에서의 함수 오버로드와 다른 .. 2024. 3. 7.
[Python] Python 라이브러리 패키지를 Github Actions를 이용하여 PyPi에 배포하는 방법 Python 라이브러리 패키지를 Github Actions를 이용하여 PyPi에 배포하는 방법 파이썬 라이브러리를 Github Actions을 이용하여 쉽고 빠르게 pypi에 배포하는 환경을 구축해보자. 시리즈 2023.12.08 - [Programming/Javascript] - [Javascript] Javascript 라이브러리 패키지를 Github Actions를 이용하여 npm에 배포하는 방법 2023.12.15 - [Programming/C#] - [C#] C# 라이브러리 패키지를 Git Actions를 이용하여 NuGet에 배포하는 방법 2024.01.02 - [Programming/Java] - [Java] Java 라이브러리 패키지를 Git Actions를 이용하여 Maven centra.. 2024. 2. 23.
[Java] Java 라이브러리 패키지를 Github Actions를 이용하여 Maven central repository에 배포하는 방법 Java 라이브러리 패키지를 Git Actions를 이용하여 Maven central repository에 배포하는 방법자바 라이브러리를 Github Actions을 이용하여 쉽고 빠르게 Maven central에 배포하는 환경을 구축해보자.주의!해당 문서는 sonatype의 정책 변경으로 인해 2024년3월12일 이후에는 유효하지 않습니다.시리즈2023.12.08 - [Programming/Javascript] - [Javascript] Javascript 라이브러리 패키지를 Github Actions를 이용하여 npm에 배포하는 방법2023.12.15 - [Programming/C#] - [C#] C# 라이브러리 패키지를 Git Actions를 이용하여 NuGet에 배포하는 방법2024.02.23 -.. 2024. 1. 2.
[C#] C# 라이브러리 패키지를 Github Actions를 이용하여 NuGet에 배포하는 방법 C# 라이브러리 패키지를 Git Actions를 이용하여 NuGet에 배포하는 방법 C# 라이브러리를 Github Actions을 이용하여 쉽고 빠르게 NuGet에 배포하는 환경을 구축해보자. 시리즈 2023.12.08 - [Programming/Javascript] - [Javascript] Javascript 라이브러리 패키지를 Github Actions를 이용하여 npm에 배포하는 방법 2024.01.02 - [Programming/Java] - [Java] Java 라이브러리 패키지를 Git Actions를 이용하여 Maven central repository에 배포하는 방법 2024.02.23 - [Programming/Python] - [Python] Python 라이브러리 패키지를 Githu.. 2023. 12. 15.
[Javascript] Javascript 라이브러리 패키지를 Github Actions를 이용하여 npm에 배포하는 방법 Javascript 라이브러리 패키지를 Github Actions를 이용하여 npm에 배포하는 방법 자바스크립트 라이브러리를 Github Actions을 이용하여 쉽고 빠르게 npm에 배포하는 환경을 구축해보자. 시리즈 2023.12.15 - [Programming/C#] - [C#] C# 라이브러리 패키지를 Git Actions를 이용하여 NuGet에 배포하는 방법 2024.01.02 - [Programming/Java] - [Java] Java 라이브러리 패키지를 Git Actions를 이용하여 Maven central repository에 배포하는 방법 2024.02.23 - [Programming/Python] - [Python] Python 라이브러리 패키지를 Github Actions를 이용하.. 2023. 12. 8.
[프로그래밍 이론] HTTP forward와 redirect HTTP forward와 redirect HTTP 통신에서 request를 다른 URL로 보내버리는 기법인 forward와 redirect를 알아보자. 포워딩 (Forwading) 포워딩은 클라이언트의 request를 서버 내부에서 다른 리소스로 전달하는 기법이다. 모든 처리가 서버 내부에서 이루어지기 때문에 클라이언트는 이 과정을 알 수 없으며, 클라이언트는 처음 요청한 URL을 유지하게 된다. 단일 요청/응답 구조를 가진다. 리디렉션 (Redirection) 리디렉션은 클라이언트의 request를 새로운 URL로 이동하도록 서버가 클라이언트에게 재안내하는 기법이다. 서버는 클라이언트에게 HTTP 상태코드와 함께 새로운 URL을 제공하여 다시 request를 보낼 것을 명시적으로 알린다. 클라이언트는 .. 2023. 12. 7.
[AWS] EC2 인스턴스 구축하기 EC2 인스턴스 구축하기 AWS에서 온디맨드 EC2 인스턴스를 구축해보자. EC2란? EC2는 AWS 클라우드 환경에서 사용할 수 있는 가상 컴퓨팅 서비스를 의미한다. 사용자가 원격으로 제어할 수 있는 컴퓨터를 빌리는 것이다. 사용자는 대여한 컴퓨터에 원격으로 접속하여 웹서버를 운영하거나 데이터베이스를 설치하는 등 원하는 작업을 수행할 수 있다. 선행 작업 이 글은 VPC가 있어야 진행 가능하므로 아직 VPC를 생성하지 않았다면 아래 링크에서 먼저 작업을 완료해야한다. (선택) [AWS] VPC 구축하기 VPC 구축하기 AWS에서 가상 네트워크인 VPC를 구축해보자. VPC란? VPC는 Virtual private cloud의 약자로 논리적인 가상 네트워크망 개념을 의미한다. AWS에서 EC2나 EKS .. 2023. 11. 28.
반응형