본문 바로가기

전체 글515

구상 기술스택 ✨ 학습보조프로그램1. 업로드 기반 문제제출. 파일 형식은 엑셀, txt파일, ssv파일1.1. 엑셀파일 - A셀에는 긴 설명, B셀에는 정답 C이하 셀에는 다른 보기 (첫 줄은 설명이라 제외)1.2. txt파일양식 1.3. 한번 문제를 풀 때 끊는 단위는 파일단위를 기본으로 한다. 여러 파일을 선택해서 진행할 수도 있다.1.4. 업로드하는 파일의 줄 수가 긴 경우 파일을 끊어서 저장할지는 사용자가 선택하는 옵션에 따라 달라진다. 2. 사용자의 설정2.1. 사용모드를 설정할 수 있다 - 설명모드/문제모드 (디폴트 문제)2.2. 설명혹은 문제가 나오는 순서를 선택할 수 있다 - 순차모드/랜덤모드 (디폴트 랜덤)2.3. 반복모드/1회모드를 선택할 수 있다. 반복모드인 경우 설명모드든 문제모드든 미완료 된 .. 2026. 2. 6.
콜백기반 -> Promise기반 0️⃣ Nodejs 전제Node.js는 DB를 열고 결과를 기다리면서 멈춰 있지 않는다.즉,const result = db.query(...)같은 동기(sync) 코드는 원칙적으로 안 된다.왜냐하면:DB 읽는 동안 서버 전체가 멈추면 안 되니까그래서 Node.js의 기본 DB 라이브러리들은 전부 비동기다.1️⃣ sqlite3 “원래 방식”이란 정확히 이거다sqlite3 공식 사용법:db.all('SELECT * FROM menu', [],(err, rows) => {console.log(rows);});여기서 핵심만 표시하면:db.all(쿼리, 파라미터, 함수);이 마지막 함수가 바로 callback이다.2️⃣ callback이란 말의 실체 (용어 제거)callback =👉 “일 끝나면 이 함수 실행해.. 2026. 2. 2.
backend/src/db/sqlite.js 데이터 접근 레이어 backend/src/db/sqlite.js더보기import sqlite3 from 'sqlite3';import config from '../config/config.js';const db = new sqlite3.Database(config.db.sqlite.path, (err) => { if (err) { console.error('SQLite connection error:', err); } else { console.log('Connected to SQLite database'); }});// Promisify database operationsconst sqliteDb = { all: (sql, params = []) => { return new Promise((reso.. 2026. 2. 2.
메뉴목록 호출 실무 흐름 겉으로 보면 메뉴가 그냥 떠 있는 것 같지만, 실제로는 상태 관리 + 캐시 + 권한 + 렌더링이 겹쳐 있다.실무에서 가장 흔한 구조 기준으로, 단계별로 설명.1️⃣ 메뉴가 SQLite에 저장되는 이유 (먼저 개념부터)네비바 메뉴는 보통 이런 성격을 가진다.화면 구조를 정의함 (UI 골격)권한에 따라 보이기도/안 보이기도 함자주 바뀌지는 않지만, 코드 수정 없이 바꾸고 싶음운영/관리 화면에서 수정 가능해야 함그래서 DB에 이렇게 관리한다.MENU- menu_id- parent_id- menu_name- path- sort_order- use_yn- role_code👉 이건 **비즈니스 데이터라기보다 “설정 데이터”**다.그래서 SQLite 같은 로컬 DB가 잘 맞는다.2️⃣ 앱이 실행될 때 일어나는 일 .. 2026. 2. 2.
Oracle SQL을 PostgreSQL SQL로 바꿀 때 MyBatis에서 자동 치환 가능한 것 / 절대 안 되는 것 목록 MyBatis XML 기준,Oracle SQL → PostgreSQL SQL 전환 시✅ 정규식·스크립트로 자동 치환 가능한 것❌ 절대 자동 치환하면 안 되는 것(사람이 재작성해야 하는 것)을 실무 기준으로 정리한 목록.1️⃣ 자동 치환 가능한 것 (Script / Regex로 처리 가능)조건: 의미가 1:1로 대응되고, 결과가 달라질 여지가 거의 없는 것✅ 1. NULL 처리 함수Oracle PostgreSQL 비고NVL(a, b)COALESCE(a, b)의미 동일NVL2(a, b, c)CASE WHEN a IS NOT NULL THEN b ELSE c END패턴 치환 가능📌 주의NVL 안에 서브쿼리/함수 중첩돼 있어도 대부분 안전✅ 2. 문자열 함수 (단순형)Oracle PostgreSQLSUBSTR.. 2026. 1. 30.
Ora2Pg가 지원하는 SQL 변환 범위 ❌ Ora2Pg는 MyBatis XML 안에 들어있는 SQL을 “자동으로 PostgreSQL 문법으로 변환해주지 않는다”.이 영역은 도구의 지원 범위 밖이고, 사람이 직접 손봐야 하는 구간이야.다만, Ora2Pg가 “어디를 손봐야 하는지 힌트는 줄 수는 있다” 정도로 이해하는 게 정확해.아래에서 왜 그런지, 그리고 실무에서 어떻게 대응하는 게 맞는지를 단계적으로 정리할게.1️⃣ Ora2Pg가 지원하는 SQL 변환 범위 (정확한 경계)*Ora2Pg**의 설계 철학부터 보면 이해가 쉬워.Ora2Pg가 직접 변환하는 것Oracle DB 내부 오브젝트TABLE / VIEW / SEQUENCEFUNCTION / PROCEDURE / PACKAGETRIGGERDB 안에 “저장된 SQL”만 대상임즉,USER_SOUR.. 2026. 1. 30.