(왕초보)웹개발 종합반 4주차
1) 오늘 차시 시작 전 복습
<script type="module">
4주차 진도를 나가던 도중,
album 이전 주차에 했던 내용이 저장되어 있지 않아서
하나씩 복습의 개념으로 스스로 해결하기 시작했다.
firebase를 실행하려면 script type="module"을 설정해야 하고,
이 상태에서는 onclick이 작동되지 않는다는 사실을 모른 채
계속 기존 코드와 비교하면서 원인을 찾았다.
이렇게 쉽지 않지만 원인을 찾아가는 과정이 개발자의 길에 한 걸음 다가간 것이라고 생각한다.
물론 스스로 해봐도 안 될 경우에는 튜터님께 문의드려야 되겠다.
수학문제처럼 스스로 10분 정도 시간을 주고
시간을 주면 할 수 있는 문제와 시간을 줘도 할 수 없는 문제를 (자신의 한계, 능력) 판단하여
상사에게 도움을 요청하는 것은 매우 중요한 덕목이라는 것을 지난 회사 생활에서 깨닫게 되었다.
회사에서는 혼자서 끙끙 앓는 사람보다는
차라리 일의 진행상황을 공유하고, 도움이 필요할 경우에는 도움을 청하면서 일을 진전시키는 것을 더 좋아한다.
스스로 공부하면서 해결했던 사람들에게는 고쳐야 할 습관이다.
2) Firestore Database 시작하기
$("#id").click(async function () {
let doc = {};
await addDoc(collection(db, "콜렉션이름"), doc);
})
위의 코드를 작성해야 onclick 기능처럼 작동된다.
Spring 사전캠프 퀘스트 모음집
🧑🏻💻Java 알아보기
https://www.ibm.com/kr-ko/topics/java
이참에 공식문서를 통해서 해당 언어와 프레임워크에 대해 파악하는 습관을 들여야겠다.
1. Java 이란?
Java란 무엇인가요?
수십억 개의 장치에서 실행되는,
(노트북 컴퓨터, 모바일 디바이스, 게임 콘솔, 의료 장치 등을 포함)
널리 사용되는 객체 지향 프로그래밍 언어 및 소프트웨어 플랫폼
Java의 규칙과 구문 : C 및 C++ 언어 기반
가장 큰 장점 중 하나는 이식성
노트북 컴퓨터에서 모바일 디바이스로 쉽게 이동가능
1991년 James Gosling의 주요 목표는 '한 번 작성하면 어디서나 실행할 수 있는 것'
Java가 JavaScript와 매우 다르다는 것을 이해하는 것도 중요함
JavaScript는 컴파일할 필요가 없지만 Java 코드는 컴파일해야 함
또한 Javascript는 웹 브라우저에서만 실행되는 반면 Java는 어디서나 실행가능
Java의 수명은 인상적
Java는 만들어진 지 20년이 넘었지만 여전히 애플리케이션 소프트웨어 개발에 가장 많이 사용되는 언어
그 결과 Java는 여전히 구직 시장에서 경쟁하기 위한 중요한 요건
Java 작동 방식
프로그래밍 언어와 소프트웨어 플랫폼을 모두 사용하는 기술
Java를 사용하여 애플리케이션을 만들려면 Java 개발 키트(JDK)를 다운로드해야 함
Java 프로그래밍 언어로 프로그램을 작성
=> 컴파일러가 프로그램을 Java 바이트코드(Java 런타임 환경(JRE)의 일부인 Java Virtual Machine(JVM)을 위한 명령어 집합, JVM을 지원하는 모든 시스템에서 수정 없이 실행가능-> Java 코드를 어디서나 실행가능)로 변환
Java 소프트웨어 플랫폼의 구성 : JVM, Java API 및 전체 개발 환경
JVM : Java 바이트코드를 구문 분석하고 실행하거나 해석
Java API : 기본 객체, 네트워킹 및 보안 기능, 확장 가능한 마크업 언어(XML) 생성 및
웹 서비스를 포함하는 광범위한 라이브러리 세트로 구성되어 있음
Java가 중요한 이유
레거시 애플리케이션의 관점에서만 바라보는 것은 실수
- Android 운영 체제의 핵심을 형성
- 머신 러닝 및 데이터 과학 애플리케이션에 가장 널리 사용되는 언어 중 하나
- 많은 기업에서 인터넷 솔루션을 위해 선택하는 언어
(견고성, 사용 편의성, 크로스 플랫폼 기능 및 보안성으로 인해)
Java 기술 : 모든 산업 분야에서 디지털 비즈니스의 기반이 되는 웹 애플리케이션을 개발하기 위한 이상적인 프레임워크
Java 애플리케이션 서버
- 데이터베이스와 상호 작용하고 동적 웹 콘텐츠를 제공하는 Java 구성 요소, XML 및 웹 서비스를 위한 웹 컨테이너
- 트랜잭션 관리, 보안, 클러스터링, 성능, 가용성, 연결성 및 확장성 등의 기능을 통해 엔터프라이즈 애플리케이션을 위한 안정적인 배포 환경을 형성
기술적 이점
상호 운용성, 확장성, 적응성 등
상호운용성
객체 지향 아키텍처 : 모듈식 프로그램과 재사용 가능한 코드 생성가능
-> 개발 주기 단축, 엔터프라이즈 애플리케이션의 수명 연장가능
플랫폼 확장성 : 광범위한 사용 사례에서 단일 시스템 사용가능
데스크톱 애플리케이션 : 리소스가 제한된 소형 디바이스에서 실행되도록 쉽게 조정가능
모바일에서 데스크톱으로 애플리케이션을 마이그레이션
-> Android 플랫폼용 비즈니스 앱을 개발 후 현재 데스크톱 소프트웨어에 통합가능
=>길고 비용이 많이 드는 개발 주기 생략가능
새로운 사용 사례에 적응할 수 있는 능력
ex)사물인터넷(IoT)에 이상적인 플랫폼
: 일반적인 IoT 애플리케이션은 수많은 서로 다른 장치를 상호 연결하는데,
이 작업은 수십억 개의 장치가 Java를 실행할 때 크게 간소화
광범위한 개발자 에코시스템 : IoT 애플리케이션 개발을 목표로 하는 기능을 갖춘 새로운 라이브러리를 지속적으로 개발하고 공유
비즈니스 이점
대규모 인재 풀, 짧은 학습 곡선 및 광범위한 통합 개발 환경(IDE)과 같은 비즈니스적인 이점
대규모 인재 풀
더 많은 기업이 커넥티드 디바이스, 머신 러닝 알고리즘 및 클라우드 솔루션을 사용함에 따라
-> 숙련된 개발자에 대한 수요가 계속 증가
인사 관리자가 Java 개발자 채용 공고를 게시 시, 자격을 갖춘 많은 이력서를 받고 비교적 빠르게 해당 직책을 채우기 가능
관리자는 인력을 추가하지 않고도 계약 리소스를 활용하여 특정 업무의 사내 인력을 보충가능
짧은 학습 곡선
Java는 다른 프로그래밍 언어에 비해 배우고 익히기가 쉬워 학습 곡선이 짧고 생산성 빠르게 향상 가능
개발자 포럼, 튜토리얼, 사용자 그룹으로 구성된 Java의 광범위한 온라인 커뮤니티는
초보자가 빠르게 적응할 수 있도록 돕고 숙련된 프로그래머에게는 효과적이고 검증된 문제 해결 도구를 제공
광범위한 통합 개발 환경(IDE)
프로그래밍 도구 분야에서 Java는 다양한 IDE를 제공
숙련된 Java 개발자는 새로운 환경에 빠르게 적응할 수 있기 때문에
개발 관리자는 프로젝트, 예산, 개발 방법론 및 프로그래머 기술 수준에 가장 적합한 IDE를 자유롭게 선택가능
많은 노련한 Java 프로그래머는 엔터프라이즈 애플리케이션 개발을 위한
3대 IDE로 NetBeans, Eclipse 및 IntelliJ IDEA를 꼽습니다.
그러나 DrJava, BlueJ, JCreator 또는 Eclipse Che와 같은 보다 가벼운 IDE가 최선의 선택인 경우도 있습니다.
2. Spring 프레임워크 알아보기
출처 : chat GPT
Spring의 특징은 무엇인가요?
1. DI(Dependency Injection)와 IoC(Inversion of Control)
- 의존성 주입(DI): 객체 간의 의존성을 프레임워크가 관리하여 느슨한 결합을 실현
이를 통해 객체 간 상호작용을 단순화하고 테스트 쉽게 수행 가능
- 제어의 역전(IoC): 객체 생성 및 관리를 프레임워크가 담당하여 개발자는 비즈니스 로직에만 집중 가능
2. 경량 프레임워크
Spring은 가벼운 프레임워크로, 필요한 모듈만 선택하여 사용가능
배포 시에도 무거운 애플리케이션 서버가 불필요
3. POJO(Plain Old Java Object) 기반
Spring은 특별한 클래스나 인터페이스 구현 없이도 순수한 Java 객체로 개발할 수 있는 환경을 제공
이는 기존의 Java 코드와의 통합을 쉽게 만듭니다.
4. AOP(Aspect-Oriented Programming)
로깅, 트랜잭션 관리, 보안 등 애플리케이션의 횡단 관심사를 모듈화하여 비즈니스 로직 코드에서 분리
5. 모듈화된 설계
Spring은 여러 개의 모듈로 구성되어 있으며, 필요한 기능만 선택적으로 사용할 수 있습니다.
주요 모듈:
Spring Core: DI와 IoC를 지원.
Spring MVC: 웹 애플리케이션 개발을 위한 모델-뷰-컨트롤러 아키텍처 제공.
Spring Data: 데이터베이스 접근과 관리 단순화.
Spring Security: 인증 및 권한 부여 기능.
6. 다양한 배포 환경 지원
Spring은 독립 실행형 애플리케이션부터 클라우드 환경까지 다양한 배포 플랫폼에서 사용 가능
플랫폼에 구애받지 않는 유연성이 큰 장점
7. 강력한 통합 기능
Spring은 다양한 데이터베이스, 메시지 브로커, 외부 API와의 통합을 쉽게 만듭니다.
Hibernate, JPA, JMS와 같은 기술과 자연스럽게 통합됩니다.
8. 테스트 용이성
Spring은 Mock 객체와 DI를 활용해 단위 테스트와 통합 테스트를 쉽게 수행할 수 있는 환경을 제공
9. Spring Boot와의 통합
Spring Boot는 Spring Framework의 확장판으로, 복잡한 설정 없이 애플리케이션을 빠르게 개발하고 배포할 수 있도록 돕습니다.
장점을 기술해주세요.
1. 생산성 증가: 설정 작업을 줄이고 비즈니스 로직에 집중 가능.
2. 유연성: 필요에 따라 모듈을 선택적으로 사용 가능.
3. 유지보수성: 느슨한 결합 설계로 코드 변경이 용이.
4. 확장성: 다양한 요구사항에 맞춰 손쉽게 확장 가능.
단점을 기술해주세요.
1. 복잡한 초기 설정:XML 설정이 많거나, Java Config 작성 시 시간이 많이 소요될 수 있음.
2. 초기 학습 난이도:DI, AOP 등 다양한 개념을 이해하는 데 학습 곡선이 가파름.
3. 성능 오버헤드:DI 및 AOP 기능이 추가적인 리소스를 소모할 수 있음.
4. 의존성 관리 문제:프로젝트가 커질수록 라이브러리 버전 충돌이나 종속성 관리가 어려워질 수 있음.
5. 소규모 프로젝트에 과도한 기능: 간단한 애플리케이션에는 Spring이 지나치게 복잡하게 느껴질 수 있음.
Spring과 Spring boot의 차이는 무엇인가요?
특징 | Spring | Spring Boot |
설정 | 수동 설정(XML/Java) | 자동 설정(Auto-Configuration) |
시작 속도 | 느림 | 빠름 |
내장 서버 지원 | 없음 | 있음 (Tomcat 등) |
종속성 관리 | 개발자가 직접 관리 | Starter 종속성으로 자동화 |
사용 사례 | 대규모 애플리케이션 | 빠른 개발 및 소규모/클라우드 프로젝트 |
반복문 연습하기 Part 1
1. 1부터 100까지의 숫자 출력하기
- for 또는 while 반복문을 사용하여 1부터 100까지의 숫자를 출력하세요
반복문 연습하기 Part 2
1. 1부터 100까지의 짝수만 출력하기
- 반복문을 사용하여 1부터 100까지의 숫자 중 짝수만 출력하세요.
반복문 연습하기 Part 3
구구단 출력하기
- 2단부터 9단까지의 구구단을 출력하세요.
'CODING > 스파르타 내일배움캠프 TIL' 카테고리의 다른 글
TIL 8일차_2024.12.20(금) (1) | 2024.12.20 |
---|---|
TIL 7일차_2024.12.19(목) (3) | 2024.12.19 |
TIL 5일차_2024.12.16(월) (1) | 2024.12.16 |
TIL 4일차_2024.12.13(금) (2) | 2024.12.13 |
TIL 3일차_2024.12.12(목) (0) | 2024.12.12 |