소소한 일상과 잡다한 정보
반응형

개발 & 서버 99

📌 MSSQL 한 줄 INSERT할 때 실제 DB 용량은 얼마나 늘어날까?

개발하다 보면 한 줄씩 데이터가 쌓일 때 실제 DB 크기가 얼마나 증가하는지 궁금할 때가 있다.저도 그런 상황이 생겨서 직접 확인해봤습니다. 우선 대략적인 증가 용량에 대한 공식부터 확인해보자.📌 1. 증가 용량 추정 공식고정 길이 데이터 + 가변 길이 데이터 + Row overhead✅ 2. 계산 요소항목설명고정 길이 데이터INT, DATETIME, MONEY, FLOAT, CHAR(n) 등가변 길이 데이터VARCHAR(n), NVARCHAR(n), TEXT, XML 등Row overhead보통 7~11바이트 정도의 관리용 메타데이터 공간Page 구조1 Page = 8KB, 1 Page에 여러 row가 들어감할당 단위실제 파일 크기는 Page 단위로 커짐 (8KB씩), 내부적으로는 64KB exten..

🛠 SD카드 강제 포맷 방법.. + 폐기...

홈캠을 설치하고... 움직임 감지 및 동영상 저장을 위해서 집구석에 굴러다니던,마이크로 SD카드를 홈캠에 연결했지만 포맷이 불가능 하다는 안내문구가 떠서...PC에 연결해서 작업을 진행해봤다.... PC에 연결해도 포맷을 할 수가 없다고 뜬다... 이 내용을 좀 정리를 해보려고 한다.이럴 경우 3가지 순서를 통해서 진행해볼 수 있다.🛠 해결 방법✅ 1. DISK PART 명령어로 강제 포맷 1. Windows 검색창 → cmd 입력 → 관리자 권한으로 실행 2. 아래 명령어 입력 :diskpart 3. 디스크 목록 확인 :list disk 4. USB/SD카드 디스크 선택 (용량으로 구분) :select disk 번호 5. 디스크 초기화 :clean 6. 파티션 및 포맷 : crea..

Intelli J jsp 빌드 중 자동 반영 ( Build project automatically )

오늘은 Intelli J 버전 업그레이드를 진행했다...버전 업그레이드를 진행하니까 빌드를 하고 localhost로 Tomcat이 실행 중일때.jsp 파일을 수정/저장 한 다음에 web을 새로고침하면 갑자기 반영이 안되는.... Tomcat 설정 rollback이 발생했다...Intelli J는 가끔 그렇다... Android Studio 기반으로 Java 개발자에게는 Eclipse 보다 훨~~~씬 편하지만 이런건 쫌....그래서 다시 설정하는 방법을 까먹은 김에 정리를 해보려고 한다.✅  1. 자동 빌드 설정 확인IntelliJ에서 JSP 수정 시 바로 반영되려면 아래 설정이 켜져 있어야 함:Preferences → Build, Execution, Deployment → CompilerBuild pro..

Mac(macOS)에서 SQL Server 설치가 직접 안 되는 이유

궁금한게 있어서 정말 열심히 테스트까지 진행해본 결과에 대해서 설명하겠다.... ( 이것저것 테스트 하느라 2시간은 사용한듯.. )우선 나는 회사에서는 Windows 노트북을 사용하고, 집에서는 MAC을 사용하는 유저로써..어차피 맥북에 페럴라이즈가 있으니 이쪽에 로컬로 SQL 서버를 구축해서 개발 데이터를 외장하드로 빼고 사용해보려고 별짓을 다 해봤다..도커도 설치 해보고.. 외장 SSD도 붙여보고.. 페럴라이즈에도 설치해보고... 결론은... 결국 SQL서버는 ARM 기반 즉, M1 이후의 칩셋부터는 설치가 불가능 하다는거다.. 이유를 확인해보자.✅ SQL Server는 Windows 기반 전용 소프트웨어Microsoft SQL Server는 윈도우 커널 기반 API, 서비스, 레지스트리 등 Win..

Dart_14일차 (PostgreSQL 버전): Dart에서 PostgreSQL 연동 및 데이터 CRUD

이번에는  PostgreSQL 기준으로 DB 연동 부분을 진행해보자.( 원래는 MSSQL 부분을 진행하려고 했지만, MAC에서는 제한이 있기 때문에 우선 Dart 코드상으로 테스트를 위해서 포스트그레SQL로 진행해보겠다.. )PostgreSQL 연동을 위해 postgres 패키지를 사용. ✔ 준비 사항PostgreSQL 설치 완료됨test_db 데이터베이스 생성users 테이블 생성:CREATE TABLE users ( id SERIAL PRIMARY KEY, name VARCHAR(50), email VARCHAR(100));✅ 1. postgres 패키지 설치📌 pubspec.yaml에 다음 내용 추가:dependencies: postgres: ^2.6.3📌 터미널에서 설치:dart pub..

Docker란? + Docker 설치

🐳 Docker란?✅ 1. 개념 정리Docker는 애플리케이션을 실행할 수 있는 *가볍고 독립적인 가상 환경(컨테이너)*을 만드는 플랫폼.기존에는 가상머신(VM)을 사용했지만, Docker는 훨씬 빠르고 가벼움운영체제(OS)를 통째로 가상화하는 게 아니라, 애플리케이션만 가상화함 ✅ 2. 핵심 요소구성요소설명Docker Image실행에 필요한 모든 요소(코드, 라이브러리 등)를 담은 템플릿Docker Container이미지를 기반으로 실제 실행되는 인스턴스Dockerfile이미지를 자동으로 생성하기 위한 설정 파일 (레시피)Docker Hub이미지 공유 플랫폼 (공식 저장소)Volume컨테이너 외부에 데이터를 저장하기 위한 공간 (영구 저장 가능)✅ 3. Docker의 장점🧪 일관된 개발환경 제공 (..

jsp : 왜 HTTP 대신 HTTPS가 꼭 필요할까? ( SSL 적용 방법 )

JSP 프로젝트에서 SSL 인증서를 적용하는 방법은 사용하는 서버 환경에 따라 다르지만, 일반적으로 Tomcat을 사용하는 경우가 많으므로 Apache Tomcat을 기준으로 SSL 적용 방법을 설명하겠음.🔍 왜 HTTP 대신 HTTPS가 꼭 필요할까?HTTP는 데이터를 암호화하지 않고 전송하는 반면, HTTPS는 SSL/TLS를 사용해 데이터를 암호화하여 보안성을 높임.HTTPS를 사용해야 하는 주요 보안적인 이유를 정리해보려고 한다.1. 데이터 암호화 (Encryption)🔹 문제점 (HTTP)HTTP는 모든 데이터가 평문(Plain Text)으로 전송됨.공격자는 네트워크를 감청하여 로그인 정보, 카드 정보, 민감한 데이터를 쉽게 가로챌 수 있음.🔹 해결책 (HTTPS)SSL/TLS 암호화를 통..

Dart_13일차 : Isolate (멀티스레드 프로그래밍)

📌 Dart 17일차: Isolate (멀티스레드 프로그래밍)Dart에서 Isolate는 멀티스레드 프로그래밍을 구현하는 방법이다.Isolate 개념 및 사용법기본 Isolate 생성 및 실행 ( spawn )Isolate 간 데이터 통신 ( SendPort, ReceivePort )Isolate 활용 예제 ( 비동기 연산 처리 )1. Isolate란? (멀티스레드 개념) Dart는 기본적으로 싱글 스레드(single-threaded) 언어. 즉, 한 번에 하나의 작업만 실행할 수 있다. 하지만, Isolate를 사용하면 여러 개의 작업을 병렬로 실행할 수 있음! 📌 싱글 스레드 vs Isolate (멀티스레드) 비교특징싱글 스레드 (Future, async-await)Isolate (멀티스레드)실행..

Dart_12일차 : HTTP 요청 및 API 연동

오늘은 Dart에서 HTTP 요청을 보내고 데이터를 처리하는 방법을 진행해보자.Dart에서 HTTP 요청 보내기 ( http 패키지 사용)GET & POST 요청 처리JSON 데이터 변환 ( jsonDecode )비동기 네트워크 요청 ( Future , async-await )1. http 패키지 설치 ( Dart 프로젝트 )  Dart에서 HTTP 요청을 보내려면 http 패키지를 추가해야 한다. ✔️  pubspec.yaml 에 http 패키지 추가 dependencies: http: ^0.13.6 # 또는 최신 버전 사용 ✔️ 패키지 설치//intellij의 하단에 terminal 선택 후dart pub get//또는 Flutter 프로젝트 에서는 flutter pub get 진행패키지가 정상적..

jsp : 파비콘 ( Favicon ) 설정

우선 파비콘을 설정하기 전에 파비콘이 뭔지 무터 한번 알아보자. 📌 파비콘(Favicon)이란?파비콘(Favicon, Favorite Icon)은 웹사이트를 나타내는 작은 아이콘이다.웹 브라우저의 탭, 북마크, 주소 표시줄, 즐겨찾기 목록 등에서 웹사이트를 대표하는 역할을 한다. 📌 파비콘이 표시되는 곳브라우저 탭(Tab)웹사이트를 열었을 때 탭 왼쪽에 표시되는 아이콘북마크(즐겨찾기)웹사이트를 즐겨찾기에 추가했을 때 표시됨주소 표시줄(Omnibox)일부 브라우저에서 URL 왼쪽에 표시됨모바일 홈 화면아이폰 & 안드로이드에서 홈 화면에 추가할 때 표시됨 📌 파비콘 어원Favorite + Icon 의 합성어원래는 **즐겨찾기(Favorites)**에 표시되는 아이콘이라서 이런 이름이 붙음. 📌 파비콘..

Dart 번외 : IDE 선택하기 + 설치

11일차 까지는 Dart만 설치해서 notepad로 학습을 진행했고, 앞으로는 http 요청 및 API 연동, 그리고 각 패키지들을 활용해서 조금더 깊이 Dart를 알아보기 위해서 IDE를 설치해서 진행을 해보자.  우선 Dart를 하는 이유는 flutter 를 개발하기 위해서이고, 보통 대부분의 사람들이 VSCode / Android Studio / intelli J 3개 중 하나의 IDE를 선택해서 진행한다. 📌 VSCode vs IntelliJ IDEA vs Android Studio 비교 ( Flutter 개발 기준 )VSCode, IntelliJ IDEA, Android Studio 모두 Flutter 개발을 지원하지만 각기 다른 장점과 단점이 있다.어떤 걸 선택할지 결정할 수 있도록 각 ID..

Dart_11일차 : 파일 및 디렉터리 관리 (File & Directory Handling)

이번에는 Dart에서 파일과 디렉터리를 관리하는 방법을 확인해보자.디렉터리 생성 및 삭제 (Directory)디렉터리 내 파일 및 폴더 리스트 출력파일 복사, 이동, 삭제 (copy(), rename(), delete())비동기(Async) 방식으로 안전하게 파일 및 폴더 관리1. 디렉터리 생성 및 삭제 ( Directory )  Dart의 dart:io 라이브러리를 사용하면 디렉터리를 생성하거나 삭제할 수 있다. ✔️ 디렉터리 생성 ( create() ) import 'dart:io';void main() async { Directory dir = Directory('test_directory'); if (!await dir.exists()) { await dir.create(); pri..

Dart_10일차: 파일 입출력 (File I/O) & 스트림 (Stream) 활용

이번에는 저번에 맛보기로 진행했던 파일 입출력(File I/O)과 스트림(Stream)을 확인보자.파일을 읽고( readAsString() ), 쓰고( writeAsString() ) 수정하는 방법스트림( Stream )을 사용하여 대용량 파일을 효율적으로 처리하는 방법1. 파일 쓰기 ( writeAsString() , writeAsBytes() )  Dart에서는 dart:io 라이브러리를 사용하여 파일을 생성하고 데이터를 저장할 수 있다. ✔️ 문자열을 파일에 저장 ( writeAsString() ) import 'dart:io';void main() async { File file = File('test.txt'); // 파일 객체 생성 await file.writeAsString('Hello,..

Dart_9일차 : 예외 처리 (Exception Handling) & Future Error Handling

이번에는 Dart의 예외 처리(Exception Handling), 비동기 코드(Future)에서 에러를 다루는 방법을 진행해보자 1. 예외 처리 기본 ( try-catch-finally ) Dart에서는 프로그램 실행 중 예상치 못한 오류(Exception)가 발생할 수 있다. 이때 try-catch-finally를 사용하면 에러를 잡아서 정상적으로 프로그램을 실행할 수 있음! ✔️ 기본 예외 처리 void main() { try { int result = 10 ~/ 0; // 0으로 나누기 → 예외 발생 print("결과: $result"); } catch (e) { print("⚠️ 예외 발생: $e"); } finally { print("✅ 예외 여부와 상관없이 실행되는..

Dart_8일차 : 클래스 심화 (생성자, Getter/Setter, 연산자 오버로딩)

이번에는 Dart의 클래스 개념을 더 깊이 있게 이해하는 시간을 가져보자.생성자(Constructor) 활용법Getter/Setter를 통한 캡슐화연산자 오버로딩 (Operator Overloading)위 사항을 좀 더 공부를 해보면 객체 지향 프로그래밍을 더 강력하게 활용할 수 있을 것이다.   1. 생성자 (Constructor) 클래스의 생성자는 객체가 생성될 때 자동으로 실행되는 함수다.  Dart에서는 기본 생성자 외에도 여러 가지 생성자를 활용할 수 있다. ✔️ 기본 생성자class Car { String brand; int year; // 기본 생성자 Car(this.brand, this.year); void display() { print("🚗 브랜드: $brand, 출시 ..

Dart_7일차 : 파일 입출력 & JSON 데이터 처리

이번에는 파일 입출력 (File I/O)과 JSON 데이터 처리를 확인해보자. 이제 파일을 읽고 쓰는 법, 그리고 JSON 데이터를 다루는 법을 익혀서 실제 애플리케이션 개발에 활용할 수 있도록 하자. JSON 처리는 웹 API 활용에 중요한 부분이니 내용을 정확히 알고 가는 것이 좋을 것 같다.   1. 파일 입출력 (File I/O)  Dart에서는 dart:io 라이브러리를 사용해서 파일을 읽고 쓸 수 있다. ✔️ 파일에 문자열 쓰기 (writeAsString)import 'dart:io';void main() async { File file = File('test.txt'); // 파일 객체 생성 await file.writeAsString('안녕하세요, Dart 파일 입출력!'); // 파일..

Dart_6일차 : 고급 Stream 활용 (listen(), StreamController, Broadcast Stream)

이번에는 Stream을 더 깊이 있게 활용하는 방법을 확인해보자. 특히 listen(), StreamController, Broadcast Stream을 사용할 수 있게 되면 실시간 데이터 처리에 더 강력한 기능을 사용할 수 있다.1. Stream의 기본 동작 복습 (await for) ✔️ await for를 사용한 기본 StreamStream countStream(int maxCount) async* { for (int i = 1; i yield를 사용해 값을 하나씩 방출await for을 사용해 Stream을 반복문처럼 활용 2.  listen()을 사용한 Stream 구독 await for 없이 Stream을 구독하고 데이터가 올 때마다 실행하는 방법이 listen()이다. ✔️ listen()..

Dart_5일차 : 비동기 프로그래밍 (Future, async/await, Stream)

Dart의 비동기 프로그래밍에 대해 진행해볼 예정이다. Future, async/await, Stream을 활용하면 네트워크 요청, 파일 읽기, 데이터베이스 처리 같은 시간이 오래 걸리는 작업을 효율적으로 처리할 수 있다.1. Future ( 미래 값 ) Future는 비동기 작업의 결과를 담는 객체. 예를 들어, 데이터를 다운로드하는 작업이 끝나면 결과를 반환한다. Future는 비동기적으로 Type 값을 반환 / Future, Future 등 다양한 타입도 가능 await를 사용하면 Future의 결과를 기다릴 수 있음 ✔️ 기본 Future 예제Future fetchData() { return Future.delayed(Duration(seconds: 2), () => "📦 데이터 로드 완료!"..

Dart_4일차 : 클래스(Class)와 객체(Object) 기초

1. 클래스 ( Class ) 클래스는 객체(Object)를 만들기 위한 설계도다. 객체는 클래스 인스턴스(Instance)로, 실제로 생성된 데이터 덩어리라고 보면 된다. ✔️ 기본 클래스 만들기 Car 클래스를 새성하고, brand, speed 속성(변수)를 추가 accelerate() 메서드로 속도 증가 , 객체 생성 후 메서드 호출class Car { //클래스 생성 String brand = "BMW"; int speed = 0; void accelerate() { //메서드 생성 speed += 10; print("$brand의 속도: $speed km/h"); }}void main() { Car myCar = Car(); // 객체 생성 myCar.accelerate()..

Dart_3일차 : 컬렉션(List, Set, Map), 예외처리

1. 리스트 ( List )  Dart에서 List는 배열과 비슷한 개념으로 순서가 있는 데이터 모음이다. ✔️ 리스트 생성 및 사용 리스트는 add()로 요소를 추가하고, remove()로 삭제할 수 있음.void main() { List fruits = ["사과", "바나나", "포도"]; print(fruits); // 전체 리스트 출력 print(fruits[0]); // 첫 번째 요소 출력 (사과) fruits.add("오렌지"); // 요소 추가 print(fruits); // ["사과", "바나나", "포도", "오렌지"] fruits.remove("바나나"); // 특정 요소 삭제 print(fruits); // ["사과", "포도", "오렌지"] print(fruits.le..

반응형