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

IT 98

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..

IT/Dart 2025.03.31

Docker란? + Docker 설치

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

IT/Docker 2025.03.30

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 암호화를 통..

IT/jsp 2025.03.18

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 (멀티스레드)실행..

IT/Dart 2025.03.17

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 진행패키지가 정상적..

IT/Dart 2025.03.12

jsp : 파비콘 ( Favicon ) 설정

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

IT/jsp 2025.03.12

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..

IT/Dart 2025.03.11

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..

IT/Dart 2025.03.10

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,..

IT/Dart 2025.03.09

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("✅ 예외 여부와 상관없이 실행되는..

IT/Dart 2025.03.07

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, 출시 ..

IT/Dart 2025.03.06

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 파일 입출력!'); // 파일..

IT/Dart 2025.03.05

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()..

IT/Dart 2025.03.04

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), () => "📦 데이터 로드 완료!"..

IT/Dart 2025.02.21

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()..

IT/Dart 2025.02.20

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..

IT/Dart 2025.02.19

Dart_2일차 : 제어문과 함수 심화 학습

1. 조건문 ( if-else, switch ) 심화 ✔️ if-else 문 심화 if-else를 활용하여 다양한 조건에 따른 결과 출력void main() { int score = 80; if (score >= 90) { print("A 학점"); } else if (score >= 80) { print("B 학점"); } else if (score >= 70) { print("C 학점"); } else { print("F 학점"); }} ✔️ switch 문 심화 switch문은 여러 개의 if-else를 간결하게 표현할 때 유용하다.void main() { String grade = "C"; switch (grade) { case "A": print..

IT/Dart 2025.02.17

Dart_1일차 : 기본 문법

1. Dart 개발환경 설정Dart 코드를 실행하는 방법은 여러 가지가 있다. - Dart 설치: 공식 사이트(https://dart.dev/get-dart)에서 다운로드 가능- 실행 방법:   1. VS Code + Dart 플러그인 사용  2. DartPad(웹에서 실행 / dartpad.dev)   3. 터미널에서 실행 (dart run 파일명.dart) 우선적으로 DartPad를 이용해서 공부를 하다가 콘솔로부터 값을 입력 받아야 하는 부분은 DartPad에서 Support 해주지 않기 때문에 마무리 예제 부분에서는 Dart를 설치하였다.2. Dart 기본 문법 ✔️ 변수 및 데이터 타입 Dart는 정적 타입의 언어이며, 변수 타입을 명시적으로 지정할 수 있다.void main() { int n..

IT/Dart 2025.02.16

Dart를 공부하게 된 이유 + Dart 특징

0. 풀스택 도전 현재 웹 개발자이며, 회사 내부에서 전산업을 담당하는 사람으로써.. 풀스택을 한번 도전해봤으면 좋겠다는 생각이 들었다. 1. Dart 언어란? Dart는 Google이 개발한 오픈소스 프로그래밍 언어로, 주로 Flutter 프레임워크에서 사용된다. 웹, 모바일, 데스크톱 애플리케이션 개발이 가능하며, 빠른 실행 속도와 비동기 프로그래밍에 최적화되어 있다. 2. 왜 Dart를 선택했는가? ✔️ 뛰어난 성능 Dart는 AOT(미리 컴파일) 방식으로 동작하여 네이티브 코드로 변환된다. Flutter는 자체 렌더링 엔진(Skia)을 사용하여 플랫폼과 관계없이 일관된 UI와 빠른 렌더링을 제공한다. React Native는 JavaScript와 네이티브 간 브릿지를 사용하기 때문에 성능이 Flu..

IT/Dart 2025.02.14

[ Synology NAS ] HDD 추가 및 RAID 구성

이번에는 필자가 사용하고 있는 NAS에 RAID 구성을 진행해보려고 한다. 우선 현재 사용중인 NAS에 2TB 짜리 HDD를 추가로 2개 더 정착해주었다. 현재 필자는 2번 슬롯과 3번 슬롯에 2TB짜리를 추가하였다. 현재 아무것도 진행하지 않은 부분으로 인하여 초기화를 아직 진행하지 않았다. 저장소 관리자에서 확인했을 때에도 동일하게 초기화가 되지 않은 것을 확인할 수 있다. 그럼 이제 RAID 구성을 진행해보도록 하자. RAID 구성을 위해 저장소 관리자에서 볼륨을 생성해준다. 그리고 볼륨구성에 필요한 스토리지 풀을 생성하기 위해서 기존 스토리지 풀이 아니라 새로운 스토리지 풀을 만들어 준다. 스토리지 풀을 만들면서 필자는 새로운 2개의 HDD를 장착하였기 때문에 RAID1로 구성을 하였다. 추가적으..

IT/Synology Nas 2023.01.26
반응형