분류 전체보기 23
-
-
프로시저 (Stored Procedure) 개념미리 저장된 SQL 문들의 집합으로, 반복적으로 수행하는 작업을 재사용 가능하게 만들어줌. 파라미터를 받아 복잡한 작업을 수행할 수 있음. 주요 특징실행 방식EXEC 또는 sp_executesql로 호출입력/출력IN, OUT, INOUT 파라미터 가능 (OUTPUT 사용)트랜잭션트랜잭션 내에서 수행하거나, 내부에서 시작할 수 있음로직조건문, 반복문, 에러 처리 등 T-SQL의 모든 로직 사용 가능컴파일최초 실행 시 컴파일되어 캐시에 저장됨 장점복잡한 로직을 DB에 저장해서 비즈니스 로직 분산 가능재사용 가능하고, 보안성 향상 (권한 제어 가능)파라미터를 이용한 동적 쿼리 가능 단점유지보수가 어려워질 수 있음 (버전 관리 문제)함수보다 결과 반환이 자유롭지만,..
-
PIP 원래 웹 프론트를 해와서 그런지 웹이랑 비교하면 이해가 쉬운 것 같다! 📦 패키지 설치pip installnpm install / yarn add📃 의존성 저장requirements.txtpackage.json + package-lock.json🔍 패키지 저장소PyPInpmjs.com🔄 의존성 관리수동 (pip freeze)자동 (npm install 시)🧱 로컬 설치 폴더venv/lib/site-packagesnode_modules/🔄 패키지 업데이트pip install --upgradenpm update, yarn upgrade 주요 명령어 pip install 패키지명 -- 패키지 설치pip uninstall 패키지명 -- 패키지 제거pip freeze -- 현재 설치된 패키지 ..
-
가상환경다른 프로젝트랑 충돌 없이 각자 필요한 라이브러리만 설치해서 쓸 수 있게 해주는 "격리된 공간" 🐍 venvPython 가상환경Python 라이브러리만파이썬 프로젝트간단, 내장됨OS, 시스템 환경은 격리 안 됨🐍 conda환경 + 라이브러리 통합Python + 패키지 + 일부 OS libs과학, ML 프로젝트패키지 관리 쉬움, 빠름무거움, PyPI와 호환성 이슈 있음🐍 pipenv, poetry가상환경 + 의존성 관리venv 기반 + 의존성 고정파이썬 프로젝트버전 관리 깔끔학습 필요🐳 DockerOS 수준 격리파일, OS, 네트워크까지 완전 격리실서버, 팀 협업, 배포완벽한 독립 환경, 재현성설정 복잡, 이미지 용량 큼 venv는 격리된 공간을 만드는 것( 컨테이너 기반 x ) 이 ..
-
SELECT OBJECT_NAME(sm.object_id) AS ProcedureName, sm.definitionFROM sys.sql_modules smJOIN sys.objects o ON sm.object_id = o.object_idWHERE sm.definition LIKE '%찾을문구%' AND o.type = 'P'; -- P = 프로시저 AND o.type IN ('FN', 'IF', 'TF'); -- 'FN' 스칼라 함수, 'IF' 인라인테이블반환 함수, 'TF' 멀티문 테이블 반환함수 AND o.type = 'V'; -- V 뷰 AND o.type = 'TR'; -- TR 트리거
-
인덱스(INDEX) 데이터베이스 테이블에서 검색 속도를 높이기 위한 구조. 책의 목차나 색인과 비슷한 개념 ➡️ 속도 차이 수십~수천 배 인덱스와 기본키(PK)의 차이점 기본 키(PK)인덱스(INDEX)목적데이터 무결성 보장 (식별자)조회 성능 향상중복 허용❌ 불가 (항상 UNIQUE)⭕ 가능 (선택 가능)NULL 허용❌ 불가⭕ 가능갯수테이블당 1개만 가능여러 개 가능자동 인덱스 생성⭕ YES (UNIQUE + CLUSTERED)⭕ 수동으로 생성삭제 시PK 제거하면 인덱스도 사라짐인덱스만 개별 삭제 가능 단점❌ 쓰기 성능 저하 → INSERT, UPDATE, DELETE 시 인덱스도 갱신됨❌ 공간 사용 → 인덱스도 저장공간 차지함❌ 너무 많으면 역효과 → 쿼리 최적화기가 잘못된 인덱스를 쓸 수도 있..
-
프로시저 Procedure 자주 사용하는 SQL 쿼리나 복잡한 비즈니스 로직을 하나의 이름으로 저장해두고 호출해서 실행 - MySQL은 웹 백엔드(PHP, Node.js 등)와 함께 쓰는 일이 많아서,로직을 DB에 넣기보단 애플리케이션 쪽에서 처리하는 경우가 많음- MsSQL에서는 비즈니스 로직을 DB에 넣는 문화가 강해서, 프로시저를 자주 활용 기본구조CREATE PROCEDURE 프로시저이름 @파라미터1 타입, @파라미터2 타입 OUTPUTASBEGIN -- SQL 로직END 프로시저 vs 함수 vs 트리거반환여러 개 가능 (OUT)1개 값없음호출 위치EXECSELECT 등 안에서이벤트 자동 실행트랜잭션OXX (제한적)복잡 로직O (조건/분기 등)제한적제한적
-
Notion Work Space 복구 갑자기 뭘 잘못눌렀는지 노션에 Team 워크스페이스가 생겼는데무료가 곧 끝난다는 Notice가 떳다마음이 급해져서 '팀 스페이스' 삭제에 꽂혀서 막 누르다가 잘못해서 워크 스페이스를 날려 버렸다. 이때까지 했던 프로젝트, 공부 기록이 있고 약 2년간 열심히 쌓아온 워크스페이스 였는데순식간에 날라가서 너무 당황하고 허망.. 어떻게 복구하는법 없나 서칭을 하던 중 노션 문의를 하면 된다는걸 알았다 노션 페이지 오른쪽 아래 아이콘을 선택해서 Notion 지원받기 클릭하면 된다AI에게 워크스페이스 복구 한다고 하면 관리자에게 연동해준다 약 4시간정도 지나고 복구된것 같다 워크스페이스 삭제할때 진짜 주의!
-
API 영수증 검증 Issue Google Play Developer API - Android Publisher API 사용중지속적으로 401 Error를 뱉는 경우가 있었다 "error": { "code": 401, "message": "The current user has insufficient permissions to perform the requested operation.", "errors": [ { "domain": "androidpublisher", "message": "The current user has insufficient permissions to perform the requested operation.", "..
-
공공프로젝트를 하면 Tibero를 사용하는 시스템을 자주 접하는데티베로는 한국산 DBMS이기 때문에 Dbeaver에는 직접 드라이버를 추가해 주어야 연결이 가능하다. - 드라이버 설정 정보 입력Driver Name : Tibero Class Name: com.tmax.tibero.jdbc.TbDriverURL Template : jdbc:tibero:thin:@{host}[:{port}]:{database} Default Port : 8629 - 라이브러리 추가 여기까지 완료후 새 Connection 확인하면 Tibero가 정상적으로 추가된것을 확인할 수 있다.
-
[Branch 구성]Main Branch중앙 저장소의 수명이 무한한 브랜치 1. master branch사용자에게 배포(Release) 가능한 상태만을 관리한다 2. develop branch다음 출시 버전을 개발하는 브랜치해당 브랜치를 기반으로 기능 개발을 진행한다 Supporting Branch제한된 수명을 갖는 브랜치 1. feature branch기능을 개발하는 브랜치새로운 기능 개발 및 버그 수정이 필요할 때마다 develop 브랜치로부터 분기한다. 2. release branch이번 출시 버전을 준비하는 브랜치 3. hotfix branch출시 버전에서 발생한 버그를 수정하는 브랜치배포한 버전에 긴급하게 수정을 해야 할 필요가 있을 경우, master 브랜치에서 분기하는 브랜치이다. [Bra..