TOP
본문 바로가기
끄적끄적/전직 (또는 창업)일기

[전직일기 #9] 본 수업 세 달차!

by 기록자_Recordian 2025. 4. 19.
728x90
반응형
이전 일기
 

[전직일기 #8] 본 수업 두 달차!

이전 일기 [전직 일기] #7 본 수업 시작 어느새 한 달이전 일기 [전직 일기] #6 본 수업 시작 첫 주이전 일기 [전직일기] #5 선수 학습 종료지난 일기 [전직일기] #4 학원 훈련 시작(은 또 연기)지난 일

puppy-foot-it.tistory.com


25년 4월, 어느덧 세 달차

 

25년 4월. 어느덧 수업이 시작한 지 세 달이 지났다.

이제 종료까지 반도 안 남았다.

 

세 달차에 배운 내용은

  • Streamlit: 파이썬 + Streamlit을 이용해서 웹 사이트 만들기 (+프로젝트)
  • 자바: 문법
  • 자바 스프링 부트: 백엔드 개발

크게 이렇게 세 가지다.


◆ Streamlit 대시보드 개발 프로젝트

 

Streamlit의 경우, 2-3일 정도 배우고 이를 토대로 조를 편성해서 프로젝트를 진행했다.

프로젝트 내용은

  • 고객 데이터 / 판매 데이터 / 마케팅 데이터 중 한 가지를 선택
  • 데이터 분석 대시보드 만들기
  • 머신러닝 기법은 최소 한 가지 이상 사용되어야 함

이 정도였고, 우리 조원은 (가위바위보에 져서) 마케팅 데이터를 선택하게 되었는데, 결과적으로는 미흡한 점도 있지만 잘 마무리한 듯하다.

미흡했던 점

  • 예측 모델 (특히 분류 모델)의 성능이 너무 떨어졌다는 점.
  • 직접 가상의 데이터를 만들다보니 데이터 자체의 질도 좋지 못했다는 점

 

오랜만에 들어가보니, 그래도 여전히 배포가 잘 되어 잘 작동하고 있다.

 

재활용 이벤트 성과 지표

2025년 3월 27일 배포

appprjgroup3-dtiyavdpz8ywuhdu6nhint.streamlit.app


◆ Java 

웹 개발 프로젝트가 종료되고 본격적으로 자바를 배우기 시작했다.

자바는 학원 다니기 전에 선수 학습으로 2주간 배운 적이 있지만, 매일 2시간 밖에 배우지 못해서 많이 안다고는 할 수 없었다.

 

솔직히 자바를 시작하고 나서 멘붕이 많이 오기도 했고, 의욕이 많이 떨어지기도 했다.

 

왜냐하면 나의 프로그래밍 첫 시작, 그리고 메인 언어는 파이썬이고, 대부분의 프로젝트와 공부를 파이썬 위주로 하다보니 파이썬에 비해 자유도가 떨어지고 엄격한 언어인 자바의 문법들이 잘 숙지가 안 됐었다.

 

[자바와 파이썬의 주요 차이]

항목 자바 파이썬
언어 종류 정적 타이핑 언어 동적 타이핑 언어
문법 엄격하고 명확한 문법 간결하고 직관적인 문법
실행 방식 컴파일 후 실행 인터프리터 방식으로 진행
객체 지향성 완전한 객체 지향 언어 객체 지향 및 절차적 프로그래밍
성능 일반적으로 더 빠름 상대적으로 느릴 수 있음
라이브러리 풍부한 표준 라이브러리 및 프레임워크 많은 라이브러리 및 패키지
플랫폼 독립성 JVM을 통한 플랫폼 독립성 다양한 운영 체제에서 사용 가능
사용 분야 대규모 시스템, 안드로이드 앱 개발 웹 개발, 데이터 과학, 인공지능
변수 선언 명시적 변수 타입 선언 필요 변수 선언 시 타입 불필요
[컴파일과 인터프리터]

※ 컴파일러
- 컴파일러는 전체 소스 코드를 한번에 읽어 머신 코드(바이너리 코드)로 변환하여 실행 파일을 생성.
- 이 과정이 완료된 후, 생성된 실행 파일은 별도의 컴파일 과정 없이 실행할 수 있다.
- 자바는 먼저 바이트 코드로 컴파일된 후, JVM에서 실행.

※ 인터프리터
- 인터프리터는 소스 코드를 한 줄씩 읽고, 바로 실행하는 방식.
- 코드 실행 중 오류가 발생하면 즉시 알림을 주며, 수정 후 파일을 다시 실행할 필요 없이 계속 진행할 수 있다.
- 파이썬은 주로 인터프리터 방식으로 실행되며, 코드 한 줄씩 해석하여 실행.

 

물론, 초반에는 잘 이해가 되고 곧잘 했었는데, static 변수라는 개념에 들어가면서부터 이해가 너무 안됐다.

그리고 정점을 찍은 거는 다형성 개념이었다. 교수님은 자바가 객체 지향 언어라서 어려웠을 거라고 하는데, 객체 지향 프로그래밍이란

◆ 객체 지향 프로그래밍(OOP, Object-Oriented Programming)
소프트웨어 개발을 위한 프로그래밍 패러다임으로, 데이터를 객체로 묶어 처리하고, 객체 간의 상호작용을 통해 프로그램을 구성하는 방식이다. 이 방식은 전통적인 절차적 프로그래밍에 비해 코드 재사용성과 유지보수성을 뛰어나게 하여, 복잡한 시스템을 보다 쉽게 관리할 수 있도록 도와준다.

※ 다형성 (Polymorphism)
다형성은 동일한 메서드 이름이 서로 다른 객체에 대해 서로 다른 동작을 수행할 수 있는 능력을 의미한다. 이는 코드의 유연성과 재사용성을 높이는 데 기여한다.

  캡슐화 (Encapsulation)
캡슐화는 데이터와 메서드를 하나의 단위로 묶고, 외부에서 직접 접근하지 못하도록 보호하는 개념이다. 이를 통해 일관성을 유지하고 변경에 강한 코드를 작성할 수 있다.

※ static
변수와 메서드가 클래스에 속하며 클래스의 모든 인스턴스가 공유할 수 있도록 정의되는 특성을 갖는 것.

 

아무튼, 해당 개념들이 너무너무 체득이 안 돼서 자바를 배우고 예제를 풀 때 한참을 헤맸다.

처음으로 나는 프로그래밍에 적성이 안 맞나 라는 생각을 해봤다.

그럴때마다 교수님은 외국어를 배우는데 처음부터 유창하게 하는 사람이 어딨냐며, 외국어를 잘하려면 많이 보고 듣고 쓰고 말해야 하듯이, 자바에 익숙해지려면 많이 보고 써야 한다고 말씀해 주셨다.

 

그래서 자바 관련 유튜브 강의 영상도 많이 보고, 특히 그중에 이해 안 되는 개념들(static, 다형성)은 해당 내용만 따로 만든 영상을 찾아보면서 공부했다.

 

[자바 기본 개념 짚어주는 강의 - 나도코딩 님]

https://youtu.be/DNCBaeCoMug?si=iN6O5HJxWZsVQAfm

 

[Static 개념 - 모모코딩 님]

https://youtu.be/UKsGXOC2DI8?si=P5GqNuxsvKLgcwIF

 


◆ Spring Boot

스프링 부트는 현재 진행 중인 과정이다.

 

[Java] Spring Boot: 인텔리제이(커뮤니티) 다운로드

이전 내용 [Java] JDBC : 데이터베이스이전 내용 [java] 컬렉션 프레임워크, 제네릭이전 내용 [java] 스레드 제어이전 내용 [java] java 스레드(thread) - 멀티, 메인, 작업 / 동기화 메소드이전 내용 [java] java.

puppy-foot-it.tistory.com

 

운이 좋게도, 인텔리제이 제작사 JetBrains에서 학생 이메일 계정이 있으면 Ultimate 버전을 1년 단위로 무료로 사용할 수 있게 해준다고 하여 라이선스를 받아 Ultimate 버전을 사용하고 있다. (유료 결제 시에는 1년에 20만원 이상이라고 한다..)

 

[인텔리제이 IDEA Community 버전과 Ultimate 버전의 주요 차이]

기능/특징 Community 버전 Ultimate 버전
가격 무료 유료
지원 언어 Java, Kotlin, Groovy, Scala 모든 Community 언어 + JavaScript, TypeScript, PHP, Ruby 등
웹 개발 지원 제한적 완전한 지원 (Spring, Java EE, GWT 등)
데이터베이스 도구 기본적인 SQL 지원 모든 DB 지원, SQL 도구 완비
테스트 지원 기본적 단위 테스트 도구 모든 테스트 프레임워크에 대한 지원 (JUnit, TestNG 등)
프레임워크 지원 기본적인 Java 및 Groovy 프레임워크 지원 다양한 프레임워크 지원 (Spring, Jakarta EE, Grails 등)
버전 관리 기본적인 Git 및 SVN 지원 모든 VCS 지원 (Git, Mercurial, Subversion 등)
코드 분석 도구 기본적인 분석 도구 고급 코드 분석 및 리팩토링 도구
스프링 프레임워크 지원 제한적 Spring MVC, Spring Boot와 같은 고급 기능 지원
엔터프라이즈 지원 없음 Microservices, Docker, Kubernetes 지원
고객 및 기술 지원 커뮤니티 지원 전문적인 고객 지원

 

어쨌든, 스프링 부트는 자바 웹 개발 프레임워크인 스프링을 간소화, 자동화 시킨 프레임워크라고 하는데, 그래도 여전히 해줘야할 게 엄청나게 많다. (파이썬 기반인 FastAPI에 비해)

 

만약에 스프링 부트가 아닌 스프링을 배웠다면 더 멘붕이 왔을 거 같다.

아무튼, 언제나 그래왔듯이 포기하지말고 계속 매달리면 이해가 되는 순간이 올 것이라 믿는다.


25년 4월 18일
빅분기 필기 가체점 합격

 

재수(?)한 빅분기 필기 가체점 결과가 나왔다.

다행스럽게도 안정적인 점수로 합격을 할 거 같다.

 

우리 반에 같이 보신 두 분 중 한 분은 합격했고, 한 분은 떨어졌다.

그래도 뭐 처음이었고, 절대적인 공부 시간도 부족했으니... 다음에는 꼭 합격할 수 있기를!

이제 실기 준비도 시작해야 겠다.

 

할 일이 참 많은 올해다.


다음 일기

 

728x90
반응형