- [ CS/네트워크 ]네트워크 인프라 공사 후 발생한 MAC 주소 불일치 문제 해결2025-10-28 10:16:36네트워크 인프라 공사 후 발생한 MAC 주소 불일치 문제 해결1. 문제 개요네트워크 인프라 공사 후 공사 전에는 외부에서 접근 가능했던 서버에 접근하지 못하는 문제(내부 망에서는 접근 가능)가 발생했고, ISP의 MAC 클리어 작업을 통해 해결되었다.2. MAC 클리어의 원리2-1. MAC 클리어의 정의MAC 클리어는 ISP 또는 상위 라우터 장비에 저장된 이전 장비의 MAC 주소 정보를 삭제하고, 현재 연결된 장비의 MAC 주소를 새로 인식하도록 만드는 작업이다.2-2. 문제의 근본 원인2-2-1. MAC-IP 불일치 발생 과정공사 전에는 서버의 공인 IP가 이전 모뎀/라우터의 MAC 주소와 연결되어 ISP 시스템에 등록되어 있었다.공사 후 상황: 모뎀이나 상위 라우터가 교체되었다.MAC 주소 변경: ..
- [ CS/SW공학 ]JSON, Python의 딕셔너리(Dictionary), JavaScript의 객체(Object) 용어 정리: 필드, 속성, 키 그리고 함수의 매개변수2025-08-20 13:37:23JSON, Python의 딕셔너리(Dictionary), JavaScript의 객체(Object) 용어 정리: 필드, 속성, 키 그리고 함수의 매개변수1. 데이터 구조 용어 정리: 키, 속성, 필드JSON, 파이썬 딕셔너리, 자바스크립트 객체는 모두 키(Key)-값(Value) 쌍으로 데이터를 저장하는 공통점이 있다. 이 키는 데이터를 식별하는 이름 역할을 한다. 이 키를 부르는 용어는 상황에 따라 다양하다.키 (Key)정의: JSON, 딕셔너리, 객체에서 값을 식별하는 고유한 이름이다.사용 예: {"name": "Gemini"}에서 "name"이 키다.속성 (Property)정의: 객체가 가진 특성이나 상태를 나타내는 데이터 항목을 의미한다.사용 예: 자바스크립트 객체의 obj.name에서 name이 ..
- [ CS/SW공학 ]인자(引子)와 인수(引數)의 모호함, 명확하게 정리하기2025-08-20 13:19:48인자(引子)와 인수(引數)의 모호함, 명확하게 정리하기1. 인자와 인수의 혼동, 왜 발생할까?프로그래밍을 공부하다 보면 함수를 정의하고 호출할 때 '인자'와 '인수'라는 용어 때문에 혼란을 겪는 경우가 많다. 이 두 용어는 엄밀히 말해 서로 다른 개념을 지칭하지만, 한국어 번역 과정과 실무에서의 혼용 때문에 의미가 뒤섞여 사용되고 있다.2. Parameter vs. Argument, 영어 원어를 먼저 이해하자이러한 혼란을 해결하는 가장 좋은 방법은 한자어 풀이가 아닌, 영어 원어인 Parameter와 Argument를 기준으로 개념을 이해하는 것이다.Parameter (매개변수)정의: 함수를 정의할 때 사용하는 변수의 이름이다. 함수가 어떤 종류의 데이터를 받을지 그 형식과 이름을 정한다.용어의 유래: ..
- [ CS/네트워크 ]내 웹사이트 보안, 어떻게 시작해야 할까? HTTPS 적용 A to Z2025-07-24 14:41:34내 웹사이트 보안, 어떻게 시작해야 할까? HTTPS 적용 A to Z웹사이트를 운영하고 있다면 보안은 가장 중요한 고려 사항 중 하나이다. 특히 개인 정보나 중요한 데이터를 다루는 웹사이트의 경우, 보안에 조금이라도 소홀하면 심각한 문제로 이어질 수 있다. 웹사이트 보안의 첫걸음이자 핵심은 바로 HTTPS(Hypertext Transfer Protocol Secure)를 적용하는 것이다. 이번 글에서는 HTTPS가 왜 중요한지, 그리고 어떻게 적용할 수 있는지 A부터 Z까지 자세히 알아보자.1. 웹 보안의 기초: HTTP의 위험성우리가 인터넷을 사용할 때 흔히 보는 주소창의 'http://'는 웹 서버와 브라우저가 통신하는 기본 프로토콜이다. 하지만 HTTP는 데이터를 암호화하지 않고 그대로 주고받기 ..
- [ CS/SW공학 ]로이 필딩이 처음 의도한 REST API2025-07-15 09:48:13로이 필딩이 처음 의도한 REST API로이 필딩(Roy Fielding)이 2000년 박사학위 논문 "Architectural Styles and the Design of Network-based Software Architectures"에서 처음 제안한 REST(Representational State Transfer)는 오늘날 흔히 사용되는 'REST API'와는 다소 차이가 있다. 필딩이 의도한 REST는 특정 기술이나 프로토콜이 아닌, 분산 하이퍼미디어 시스템(예: 월드 와이드 웹)을 위한 아키텍처 스타일(Architectural Style)이다. 이는 웹의 확장성, 일반성, 독립적인 진화를 지원하기 위한 설계 원칙들의 집합이다.1. REST의 탄생 배경과 핵심 사상필딩은 HTTP/1.0 및 1..
- [ CS/DBMS ][MySQL] ONLY_FULL_GROUP_BY 오류: 개념과 해결 방법2025-06-18 09:48:12MySQL ONLY_FULL_GROUP_BY 오류: 개념과 해결 방법MySQL을 사용하면서 GROUP BY 쿼리 작성 시 In aggregated query without GROUP BY, expression #N of SELECT list contains nonaggregated column ... this is incompatible with sql_mode=only_full_group_by와 같은 오류 메시지를 만나는 경우가 많다. 이 오류는 ONLY_FULL_GROUP_BY라는 MySQL SQL 모드 때문에 발생한다. 이 블로그 포스팅에서는 ONLY_FULL_GROUP_BY가 무엇인지, 왜 이런 오류가 발생하는지, 그리고 효과적인 해결 방법은 무엇인지 상세히 알아보도록 하겠다.1. ONLY_FUL..
- [ CS/DBMS ][Sequelize] `ConnectionAcquireTimeoutError` 해결: 트랜잭션과 연결 풀 관리 팁2025-06-02 23:49:11Sequelize ConnectionAcquireTimeoutError 해결: 트랜잭션과 연결 풀 관리 팁이 블로그 게시물은 Sequelize를 사용할 때 마주칠 수 있는 ConnectionAcquireTimeoutError 문제와 이를 해결하는 효과적인 방법에 대해 설명한다.1. ConnectionAcquireTimeoutError는 무엇인가?ConnectionAcquireTimeoutError는 Sequelize가 데이터베이스 연결 풀에서 새로운 연결을 확보하는 데 정해진 시간(타임아웃) 내에 실패했을 때 발생하는 오류이다. 이는 일반적으로 다음과 같은 상황에서 발생한다.연결 풀 고갈: 데이터베이스에 동시에 너무 많은 쿼리가 실행되어 모든 연결이 사용 중이거나, 사용된 연결이 제때 반환되지 않는 경우..
- [ CS/DBMS ][Sequelize] `findAll` 옵션: `raw`와 `nest`는 언제 사용할까?2025-04-28 14:15:09Sequelize findAll 옵션: raw와 nest는 언제 사용할까?Node.js에서 Sequelize ORM을 사용하다 보면 데이터를 조회하는 findAll 메서드를 자주 사용하게 된다. 이때 raw: true나 nest: true 같은 옵션들을 마주치게 되는데, 이 옵션들이 정확히 어떤 역할을 하고 언제 사용하는 것이 좋은지 정리해 보았다.1. Sequelize findAll의 기본 동작기본적으로 findAll 메서드는 데이터베이스에서 조회한 결과를 Sequelize 모델 인스턴스(Instance)의 배열로 반환한다.// 예시: User 모델 사용const users = await models.User.findAll({ where: { status: 'active' }});// users 배열..