반응형

전체 글 403

키크론 키보드 VIA 매크로(MACRO) 설정 방법

키크론 키보드 VIA 매크로(MACRO) 설정 방법최근 키크론 Q11 키보드를 구매하면서 VIA 프로그램을 통한 매크로 설정 방법을 정리해 보았습니다. 키크론의 Q, Q Pro, K Pro 제품들은 기본적으로 QMK(Quantum Mechanical Keyboard) 펌웨어를 기반으로 하고 있으며, QMK를 지원 및 사용하는 키보드는 펌웨어 수정 도구인 QMK Toolbox를 사용하여 키보드의 펌웨어를 수정할 수 있는데요.QMK Toolbox의 가장 대표적인 도구 중 하나가 바로 'VIA'입니다. * VIA(또는 키크론 런처) 프로그램을 통해 저장된 키매핑 및 매크로 정보는 키보드 하드웨어에 저장되기 때문에 저장 후 다른 환경에서도 동일하게 사용할 수 있다는 특징이 있습니다. 1. 키보드 연결https:..

IT Info 2025.01.07

GitHub Actions + Docker CI/CD 구축하기

github actions + docker ci/cd 구축하기GitHub Actions를 통해 CI/CD를  구축한 지난 포스팅에 이어 이번 포스팅에서는 GitHub Actions + Docker를 사용한 CI/CD를 구축해 보았습니다. Docker를 사용한 CI/CD의 경우 애플리케이션과 그 의존성을 컨테이너화 하여 실행하기 때문에 환경의 일관성을 유지할 수 있다는 장점과, 서버가 여러 개로 확장되었을 때 생성된 Docker Image를 통해 동일한 이미지를 사용할 수 있다는 이식성 측면에서의 장점 등, 여러 가지 장점을 가지고 있으며 때문에 최근에는 CI/CD 파이프라인에 도커를 함께 사용하는 방식이 많이 도입되고 있습니다. 전체적인 CI/CD 구축 과정은 이전 포스팅의 내용과 비슷하며, Docker..

Programming/CICD 2025.01.05

Spring Boot 프로젝트 GitHub Actions CI/CD 구축하기

GitHub Actions CI/CD 구축하기(Spring Boot 프로젝트) CI/CD는 단순히 번거로운 배포 과정을 자동으로 만들 뿐만 아니라, 수동으로 배포했을 때 발생할 수 있는 사용자의 실수를 줄일 수 있고, 자동화된 테스트 과정을 통해 코드의 품질을 검증할 수 있으며, 일관된 빌드 환경을 통해 환경의 차이로 발생하는 문제를 최소화할 수 있는 등의 장점을 가지고 있습니다.* CI/CD: 지속적 통합(Continuous Integration) / 지속적 배포(Continuous Deployment) GitHub Actions 외에도 Jenkins, GitLab CI, CircleCI 등 CI/CD를 구축할 수 있는 다양한 도구들이 있지만, 우선은 사용하고 있는 GitHub 저장소와 연동하여 쉽게 ..

Programming/CICD 2024.12.29

(MyBatis) include refid 용도 및 사용 방법

MyBatis 용도 및 사용 방법구축된 시스템을 분석하는 과정에서 mybatis xml 파일 내부적으로 , 형식의 태그가 사용되는 것을 보았는데요.해당 포스팅에서는 include 태그와 sql 태그는 어떤 용도로 사용되는지, 어떻게 사용되는지에 대해 정리하였습니다. , 태그의 사용 용도 WHERE emp_no = #{empNo} SELECT emp_no , first_name , last_name FROM employees SELECT emp_no , dept_no FROM dept_emp (하나의 SQL Map XML 파일에 정의된 쿼리) 위 예시를 통해 알 수 있는 것처럼 include, sql 태그는 여러..

Programming/Spring 2024.12.14

javascript 배열 비교, 차집합 교집합 구하는 방법

javascript 배열 차집합, 교집합, 대칭차집합, 합집합 구하는 방법javascript에서 배열을 다루다 보면 여러 배열에 대한 비교가 필요할 때가 있는데요. 해당 포스팅에서는 'Array.prototype.filter()' 함수와 'Array.prototype.includes()' 함수를 사용하여 두 배열에 대한 차집합(difference set), 교집합(intersction), 대칭차집합(symmetric difference), 합집합(union)을 구하는 방법에 대해서 정리하였습니다. filter(), includes() 함수먼저 배열 비교에 핵심이 되는 두 함수에 대해서 간단하게 살펴보겠습니다. 1. Array.prototype.filter()const fruits = ["apple", "..

(linux) 로그 파일 비우기, 로그 파일 내용 삭제 '/dev/ null'

(linux) 로그 파일 비우기, 로그 파일 내용 삭제 '/dev/null'애플리케이션 등에서 기록되는 로그 파일의 경우 이상적으로는 rotatelogs, logrotate 등의 기능을 활용하여 날짜별로 파일을 분리하고, 일정 기간이 지난 파일은 자동으로 삭제하는 방식을 통해 로그 파일의 용량이 너무 커지지 않도록 관리합니다. 하지만 실제로는 위와 같은 조치를 하지 않고 있다가 로그 파일의 용량이 너무 커져서 시스템적인 문제가 발생하는 일도 종종 있을 수 있는데요.해당 포스팅에서는 '로그 파일을 비우는 방법'과, '왜 파일 자체를 삭제하지 않고 내용만 비우는지'에 대해서 살펴보겠습니다. 1. 로그 파일 비우는 방법## 기본 형식cat /dev/null > target_file## 로그 파일과 동일한 경로..

Programming/Linux 2024.11.28

(macOS) sqldeveloper 응답 없음 해결 방법

(macOS) SQLDeveloper 응답 없음 문제 해결 방법macOS 환경에서 SQLDeveloper 실행 및 계정 접속 시 프로그램 상태가 '응답 없음'이 되는 상황이 자주 발생하였는데요.문제의 정확한 원인은 파악하지 못했지만 예상되는 부분을 발견하여 조치하였으며, 현재는 응답 없음 문제없이 SQLDeveloper를 사용 중에 있습니다. 문제 발생 환경은 2017 MacBook Pro(Monterey)이며, 사용된 sqldeveloper 버전은 23.1.1.345.2114 버전입니다.조치 내용은 아래와 같습니다. 1. 첫 번째 방법(해결 실패)먼저 구글링을 통해 해당 문제에 대한 해결 방법을 찾아보았는데요. AddVMOption -Duser.language=koAddVMOption -Duser.co..

Programming/MacOS 2024.11.22

ORA-01653: unable to extend table in tablespace 오류 해결 방법

ORA-01653: unable to extend table in tablespace 오류 해결 방법 해당 포스팅은 오라클 데이터베이스 사용 중 데이터 insert 과정에서 발생할 수 있는 'ORA-01653: unable to extend table in tablespace' 오류에 대한 해결 방법을 정리한 것입니다. 오류가 발생한 원인*Cause: Failed to allocate an extent of the required number of blocks for a table segment in the tablespace indicated. 오류가 발생한 원인은 Cause 부분을 통해서 알 수 있는 것처럼 테이블스페이스의 세그먼트(segment)를 할당하지 못했기 때문인데요.쉽게 말하면 해당 테이블..

Programming/Error 2024.11.20

Oracle TABLESPACE란? 테이블스페이스 개념 정리

(oracle) TABLESPACE란? 테이블스페이스 개념 정리해당 포스팅은 Oracle 데이터베이스의 'TABLESPACE' 개념 및 종류에 대해 정리한 내용입니다.이론적 내용이기 때문에 테이블스페이스 생성, 조회, 삭제 등의 쿼리에 대한 내용은 빠져있다는 점 참고 부탁드리며, 이후 추가로 정리하여 포스팅하도록 하겠습니다. TABLESPACE란?(이미지 출처 - https://docs.oracle.com/en/database/oracle/oracle-database/21/cncpt/logical-storage-structures.html) 오라클 데이터베이스에서 관리하는 데이터는 실제로 '.dbf' 확장자를 가진 데이터 파일로 저장되며, 이러한 파일은 데이터가 저장되는 물리적 공간으로 볼 수 있는데요...

Programming/Oracle 2024.11.17

(java) ZipArchiveOutputStream, ZipArchiveEntry 클래스를 통한 파일 압축 방법

ZipArchiveOutputStream, ZipArchiveEntry 클래스를 통한 파일 압축 방법 서비스 개발 과정에서 여러 개의 파일을 하나의 압축 파일 형태로 받을 수 있도록 해달라는 기능 요청이 있었는데요. 해당 포스팅에서는 'Apache Commons Compress' 라이브러리를 사용하여 파일을 압축하는 방법 외 압축 파일의 내부 파일 정보를 가져오는 등의 기능에 대한 코드 예시 및 상세 내용을 정리하였습니다.(Commons Compress 라이브러리의 ZipArchiveOutputStream, ZipArchiveEntry 클래스 등을 주로 활용하였습니다.) * 압축하려는 대상 파일을 가져오거나 생성하는 부분은 구현하려는 기능에 따라 다를 수 있기 때문에 동작 방식 위주로 참고해 주시면 될 ..

Programming/Java 2024.11.13

(network) SYN Flooding 공격이란? 대응 방법은?

(network) SYN Flooding 공격이란? 대응 방법은?리눅스 관련 공부 중 DoS, DDoS 공격의 일종인 'SYN Flooding Attack'에 대한 개념을 접하게 되었는데요.흥미 있는 내용이라 SYN Flooding 공격이란 무엇인지, 또 대응 방법은 무엇인지에 대해 정리해 보게 되었습니다. /*DoS(Denial of Service, 서비스 거부) 공격은 시스템 또는 네트워크의 구조적인 취약점을 이용하거나 대량의 트래픽을 통해 타겟 시스템이 정상적인 서비스를 하지 못하도록 마비시키는 악의적인 시도를 말합니다. DDoS(Distributed Denial of Service, 분산 서비스 거부) 공격은 DoS 공격의 업그레이드된 형태로, DoS 공격이 단일 장치에서 단일 타겟(1:1)에 대..

IT Info 2024.11.05

Logback PatternLayout을 통한 로그 마스킹 처리 방법

Logback PatternLayout을 통한 로그 마스킹 처리 방법(LayoutWrappingEncoder, PatternLayoutEncoder) '개인정보의 암호화' 등 관련된 법령에 따라 비밀번호, 주민등록번호 등은 저장 시에 반드시 암호화하여 저장해야 합니다.그리고 만약 시스템에서 요청 파라미터에 대한 로그를 남기고 있을 경우 암호화 처리 전의 비밀번호, 주민등록번호 등이 로그 파일에 남을 수 있다는 점 또한 주의해야 하는데요. 해당 포스팅에서는 logback 로깅 라이브러리 사용 시 PatternLayout 클래스를 통한 로그 마스킹 처리 방법에 대해 알아보고, 더불어 Encoder, LayoutWrappingEncoder, PatternLayoutEncoder 등에 대한 개념에 대해서도 정리..

Programming/Spring 2024.11.02

이클립스 Tomcat 서버 설정하는 방법

이클립스 Tomcat 서버 설정하는 방법Eclipse를 통해 spring 기반 웹 애플리케이션을 개발하는 경우 대표적으로 'Apache Tomcat'과 같은 웹 애플리케이션 서버를 추가하여 애플리케이션을 실행시켜야 하는데요.해당 포스팅에서는 '이클립스에서 Tomcat 서버를 설정하는 방법'에 대해서 살펴보겠습니다.(설정을 희망하는 tomcat은 미리 설치되어 있어야 하며, 아래 과정은 java11 + tomcat-8.5.97 버전을 기준으로 작업한 내용입니다.) 1. Servers 탭 열기이클립스에서 서버를 추가하기 위해서는 먼저 'Window' -> 'Show View' -> 'Servers' 경로를 통해 Servers 탭을 열어줍니다.만약 Servers 탭이 없다면 Other... 탭을 열고 아래 이..

Programming/Web 2024.10.28

javascript 유효성 검사 함수 test(), exec(), match() 비교 정리

자바스크립트 유효성 검사 함수 test(), exec(), match() 비교 정리 사용자로부터 들어오는 데이터에 대한 유효성 검사는 백엔드뿐만 아니라 프론트엔드에서도 필요한 과정인데요.비록 개발자 도구를 통해 값을 변조할 수는 있지만 사용자에게 빠른 응답을 줄 수 있고, 서버에 요청 부담을 줄일 수 있으며, UI/UX 측면에서의 활용성도 있기 때문입니다. 해당 포스팅에서는 javascript 단에서 데이터의 유효성 검사를 할 때 사용하는 test(), exec(), match() 함수에 대해 비교 정리해 보았습니다./* 위 함수 외에도 필요에 따라 matchAll(), replace(), replaceAll(), split() 등의 함수가 사용될 수 있습니다. */ javascript 정규 표현식 생성..

서브쿼리 종류와 개념 정리(스칼라 서브쿼리, 인라인 뷰, 일반 서브쿼리)

서브쿼리 종류와 개념 정리(스칼라 서브쿼리, 인라인 뷰, 일반 서브쿼리) 서브쿼리와 조인에 대해 공부하던 중 서브쿼리가 사용되는 위치 및 유형에 따라 각각 다른 명칭을 가지고 있다는 것을 알게 되었는데요.해당 포스팅에서는 서브쿼리의 유형인 '스칼라 서브쿼리(Scalar subquery)', '인라인 뷰(Inline view)', '일반 서브쿼리' 등 각각의 개념 및 예시를 정리하여 보았습니다. ***내용을 정리하는 과정에서 중첩 서브쿼리에 대한 개념이 좀 애매하다고 느꼈는데요.우선 내부적으로 서브쿼리가 사용되는 SQL 구문 자체를 '중첩 질의(Nested query)'라고 하며, '중첩 서브쿼리(Nested subquery)'는 말 그대로 서브쿼리 안에 서브쿼리가 중첩된 구조를 말한다고 판단하였습니다.때..

Programming/Oracle 2024.10.20
반응형