spring
-
[Spring Batch] Batch 활용 목적과 Performance 개선 방법
아래 글은 카카오 테크의 강의를 학습한 후 개인적으로 정리한 내용임을 밝힙니다. (자료 출처) 1. Batch 활용하기 1-1. 일괄 처리 Batch Application? 원하는 시간에 스케줄을 걸어 대량의 데이터를 일괄적으로 처리할 때 사용한다. Realtime 서비스에 비해 개발 부담이 적은 경우가 많다. 1-2. Batch 활용 케이스 ① 일괄 생성 READ → CREATE → WRITE 기존의 정보를 조합하여 새로운 정보를 만드는 경우 ② 일괄 수정 READ → UPDATE → WRITE 이미 저장된 데이터를 일괄적으로 수정하는 경우 ③ 통계 SUM READ → CREATE → WRITE 이미 저장된 데이터를 통계적 형식으로 집계하는 경우 2. Batch Performance 개선 2-1. 대량..
2024.01.24
-
[Spring - OAuth2.0] 확장성 갖춘 소셜 로그인 구현
Google, Kakao, Naver 등 다양한 환경에 확장성을 갖춘 형태로 소셜 로그인을 구현해보자. 일단 Kako, Naver 두 환경을 대상으로 하며, 각 Developers 홈페이지에서 Application을 생성한 상태임을 가정하고 진행할 것이다. 참고 사항 카카오 로그인의 경우 '개인정보 동의항목 심사 신청'이 완료되기 전까지는 닉네임, 카카오계정(이메일) 등의 데이터만 불러올 수 있다. 본 글에서는 일단 닉네임과 이메일을 불러오는 것으로 진행하겠다. 네이버 로그인의 경우 서비스 상태가 '개발중'인 경우, 테스터 ID 등록 후 해당 계정에 한해서만 소셜 로그인을 적용해볼 수 있다. Naver Developers/내 애플리케이션/멤버관리에서 테스터 ID를 등록하고 진행하자. build.gradl..
2024.01.18
-
[Spring Batch] Spring Batch, Quartz 이해하기
요구 사항개발중인 서비스에서는 특정 시간에 프로그램 참여자 전체를 대상으로 대량의 정산 로직이 필요했다.이를 보다 효율적으로 처리하기 위하여 Spring Batch를 이용하기로 결정하였다. Overview_Spring Batch ?The ability of batch processing to efficiently process large amounts of data makes it ideal for many use cases. Spring Batch’s implementation of industry-standard processing patterns lets you build robust batch jobs on the JVM. | 공식 문서 Spring Batch란, 한마디로 일괄 처리 (bat..
2024.01.07
-
[Spring Boot - Zoom] 회의실 자동 생성 #2. REST API
이번 글에서는 발급한 access token을 바탕으로 Zoom Meeting API를 이용해 회의실을 생성해볼 것이다. access token 발급 과정은 지난 게시글을 참고하면 된다. 목차 1. Zoom App 생성 2. OAuth 2.0 설정 3. Zoom Meeting API 3-1. 전체 Flow 이해하기 우선 공식 문서를 따라 Create Meeting API 플로우를 이해해보자. 3-1-1. Endpoint Endpoint에 필요한 path parameter 'userId는 me value라는 명칭으로 소개되고 있는데, 이는 user ID나 이메일 주소 값을 사용한다고 한다. 우리는 이메일 주소를 이용할 것이다. 3-1-2. Request Body Zoom Meeting API는 다양한 요소..
2024.01.03
-
[Spring Boot - Zoom] 회의실 자동 생성 #1. OAuth2.0
Spring Boot 서버에서 Zoom 회의실을 자동 생성해보자.이번 글은 Zoom REST API를 사용하기 위한 App 생성, OAuth2.0 설정 파트를 소개할 것이다. 목차 1. Zoom App 생성2. OAuth 2.0 설정3. Zoom Meeting API (다음 글에서 계속) EnvironmentJava 17Spring Boot 3.1.4 1. Zoom App 생성1-1. Zoom App Marketplace 접속 및 로그인https://marketplace.zoom.us/ App Marketplace marketplace.zoom.us 1-2. Develop / Build AppServer-to-Server OAuth app을 생성해준다.https://developers.zoom.us..
2024.01.03
-
[Spring Batch] Spring Batch의 구성 요소
Overview_Spring Batch ? The ability of batch processing to efficiently process large amounts of data makes it ideal for many use cases. Spring Batch’s implementation of industry-standard processing patterns lets you build robust batch jobs on the JVM. | 공식 문서 Spring Batch란, 한마디로 일괄 처리 (batch processing)를 지원하는 프레임워크이다. * 일괄 처리 : 최종 사용자의 개입 없이 또는 (자원이 허가한다면) 실행을 스케줄링할 수 있는 작업(job)의 실행 대용량 데이터를 알..
2024.01.02
security
-
[클라우드 기반 시스템 운영 & 구축 실무] Terraform
1. Terraform이란?1.1. IaC (Infrastructure as Code)수작업으로 수행하던 인프라 구축을 코드(정의 파일, 명령어 등)를 사용하여 수행하는 방법IaC를 이용하면 작업 공수의 절감, 작업 품질의 향상 효과를 가져올 수 있다. 1.2. TerraformIaC 도구의 한 종류로, 아래의 구조로 동작한다. 2. Terraform 실습2.1. Terraform 설치 (Windows 기준)Install | Terraform | HashiCorp Developer Install | Terraform | HashiCorp DeveloperExplore Terraform product documentation, tutorials, and examples.developer.hashicorp..
2025.04.11
-
[클라우드 기반 시스템 운영 & 구축 실무] 로그 수집 및 분석
1. CloudWatchEC2와 같은 리소스로부터 생성된 로그를 Watch로 수집리소스(CPU, Memory, HDD 등)의 사용량 정보를 수집 1.1. CloudTrail vs. CloudWatch사용자 행위 정보 로그 (로그인, 로그아웃, 정책생성 등) : CloudTrail시스템 행위 정보 로그 (EC2, RDS 등) : CloudWatch 1.2. CloudWatch 실습(1) IAM > Role > Create Role EC2CloudWatchAgentServerPolicy (2) IAM > User > Security Credential > Access Key 생성 (3) EC2 환경 설정 3-1) EC2 생성3-2) IAM Role 연결 3-3) 다운로드 yum install httpd -..
2025.04.11
-
[어플리케이션 보안] SQL Injection과 SQLMAP
1. SQL InjectionSQL 주석을 통해 쿼리를 우회하는 방식을 사용 1.1. 주석 유형MySQL : #Oracle, MS-SQL, SQLITE3 : -- 1.2. 취약점 점검간편하게 SQL Injection 적용 가능 여부를 확인하려면 ' 하나를 찍어보면 된다.ex) password에 ' 넣어보기 1.2.1. Login Form 이용(1) 일반 쿼리문select id, pw from user where id = 'admin' and pw = 'password'; (2) 공격문- 'or 1=1# 또는 'or 1=1-- 을 사용함- pw 부분은 주석 처리가 되어버림 where id = ' 'or1=1# ' and pw = 'password'; 1.2.2. 게시판 검색 이용(1) 일반 쿼리문se..
2025.04.11
-
[인프라 활용을 위한 파이썬] 함수
1. 개요1.1. 프로그램 작성 유형절차적 프로그래밍고전적, C언어 스타일흐름 제어를 잘 사용하여 구성직관적코드가 복잡유지 보수 어려움함수 지향적 프로그래밍절차적 프로그래밍의 문제점을 대부분 해결복잡한/반복되는 단위는 함수 단위로 묶어서 간단하게 구성간결한 코드재활용성이 높아짐유지보수가 향상됨ex) WEB객체 지향적 프로그래밍ex) GUI트렌드 | 절차적 → 함수 지향적 → 객체 지향적 → 함수 지향적 1.2. 기본적 본질함수의 워크 플로우데이터 입력 → 입력한 데이터를 처리 → 처리된 결과 출력함수의 내부에서 처리기존 개념프로그래머가 요구 사항에 맞춰서 로직, 알고리즘을 동원하여 특정 목적을 달성하는 행위사람이 직접 구현# 더하기 함수 - 입력 : 1, 3 - 처리 : 1 + 3 AI, 머신러닝에서의 ..
2025.01.09
-
[Dreamhack Lv.1] XSS-1
https://dreamhack.io/wargame/challenges/28 xss-1여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. XSS 취약점을 이용해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. 플래그 형식은 DH{...} 입니다. 문제 수정 내역dreamhack.io 문제 설명여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다.XSS 취약점을 이용해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다.플래그 형식은 DH{...} 입니다. 문제 풀이 vuln, memo, notice flag, flag 페이지로 구성되어 있다. 1. vuln pageparam으로 넘긴 명령어가 그대로 실행됨을 확인할 수 있다.@..
2024.12.20
-
[Dreamhack Lv.1] csrf-2
https://dreamhack.io/wargame/challenges/269 csrf-2여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. CSRF 취약점을 이용해 플래그를 획득하세요. 문제 수정 내역 2023.07.18 css, html 제공 및 read_url() 코드 일부가 변경되었습니다. Referendreamhack.io 문제 설명여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다.CSRF 취약점을 이용해 플래그를 획득하세요. 문제 풀이vuln, flag, login 페이지로 구성되어 있다. 들어가자마자 로그인하라는 문구가 눈에 띈다. 1. vuln page'script' 문자열이 취약성을 갖고 있으므로 '*'로 자동 치환되는 것을 확인할 수 있다.script 말고 ..
2024.12.20
study
-
[Network] 네트워크 계층
해당 게시글은 '면접을 위한 CS 전공지식 노트' 도서를 학습한 후 개인적으로 정리한 내용으로 구성함을 밝힙니다. 1. 계층 구조 OSI 7계층 vs. TCP/IP 계층 2. TCP/IP 4계층2.1. 응용 계층 (Application Layer)응용 프로그램이 사용되는 프로토콜 계층웹 서비스, 이메일 등의 서비스를 사용자에게 제공 FTP 장치와 장치 간의 파일 전송 프로토콜 SSH 보안이 없는 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜HTTP World Wide Web을 위한 데이터 통신 기초SMTP 전자 메일 전송을 위한 인터넷 표준 통신 프로토콜DNS 도메인 이름과 IP 주소를 매핑해주는 서버 2.2. 전송 계층 (Transport Layer..
2025.04.16
-
[Network] 네트워크 기초
해당 게시글은 '면접을 위한 CS 전공지식 노트' 도서를 학습한 후 개인적으로 정리한 내용으로 구성함을 밝힙니다. 네트워크컴퓨터 등의 장치들이 통신 기술을 이용하여 구축하는 연결망노드(node)와 링크(link)가 서로 연결되어 있으며, 리소스를 공유하는 집합노드 : 서버, 라우터, 스위치 등의 네트워크 장치링크 : 유선 또는 무선 1. Throughput과 Latency좋은 네트워크의 조건많은 처리량을 처리 가능지연 시간이 짧음장애 빈도가 적음보안성이 좋음 처리량 (Throughput)정의링크 내에서 성공적으로 전달된 데이터의 양처리량 vs. 트래픽트래픽 : 특정 시점에 링크 내에 흐르는 데이터의 양트래픽이 많아졌다 = 흐르는 데이터가 많아졌다처리량이 많아졌다 = 처리되는 트래픽이 많아졌다단위bps (..
2025.04.16
-
[Ruby] Ruby 20분 가이드
* 해당 게시글은 Ruby 공식 문서를 바탕으로 학습한 후 개인적으로 정리한 내용을 담고 있습니다.https://www.ruby-lang.org/ko/documentation/quickstart/ Ruby 20분 가이드소개 이 문서는 20분 정도면 따라 해볼 수 있는 간단한 Ruby 튜토리얼입니다. 이 튜토리얼을 따라 하기 위해서는 컴퓨터에 Ruby가 설치되어 있어야 합니다. (아직 Ruby가 설치되어 있지 않다면, 시작www.ruby-lang.org 1. 출력Ruby는 데이터를 화면에 출력할 때 puts라는 메서드를 이용한다. irb(main):002:0> puts "Hello World"Hello World=> nil 2. 계산간단한 Ruby의 수 계산 연산자는 아래와 같다.특히 제곱근을 구할 때 ..
2025.02.01
-
[Ruby] Ruby에 대해서
* 해당 게시글은 Ruby 공식 문서를 바탕으로 학습한 후 개인적으로 정리한 내용을 담고 있습니다.https://www.ruby-lang.org/ko/about/#fn2 Ruby에 대해서Ruby가 왜 인기 있을까요? Ruby의 팬들은 아름답고 기교가 뛰어난 언어이기 때문이라고 말합니다. 하지만 이 말로는 부족하지요. 어떤 점이 Ruby를 이처럼 매력적인 언어로 만드는 것일까요? Ruby를www.ruby-lang.org Ruby에 대해서공식 문서에 따르면 Ruby의 팬들은 아름답고 기교가 뛰어난 언어이기 때문에 Ruby가 인기있다고 말한다고 한다. 자고로 프로그래밍 언어의 공식 문서들은 매우 딱딱하고 노잼인 것이 국룰인데, 자칭 프로그래머의 단짝 친구 Ruby의 공식 문서는 아주 사심이 가득해보인다ㅋㅋ ..
2025.02.01
-
[이취코] Chapter 04. 구현
* 해당 게시글은 [이것이 취업을 위한 코딩테스트다, 나동빈] 교재를 학습하고 정리한 글입니다. 1. 구현 유형 완전 탐색시뮬레이션 모든 경우의 수를 전부 다 계산하는 방식 문제에서 제시한 알고리즘을 한 단계씩 차례대로 수행하는 방식 2. 구현 시 고려해야 할 제약 사항2.1. 자료형의 범위정수형자료형 크기자료형 범위int4byte-2,147,483,648 ~ 2,147,483,647long long8byte-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 2.2. 채점 시스템대부분의 코딩 테스트 환경에서는 아래의 채점 시스템 환경이 주어진다.시간 제한 : 1초메모리 제한 : 128MB 3. 예제#include using namespace std;..
2025.01.06
-
[이취코] Chapter 03. 그리디
* 해당 게시글은 [이것이 취업을 위한 코딩테스트다, 나동빈] 교재를 학습하고 정리한 글입니다. 1. 그리디 알고리즘현재 상황에서 지금 가장 좋은 것을 골라나가는 방법현재의 선택이 나중에 미칠 영향은 고려하지 않음예) 다익스트라 알고리즘, 크루스칼 알고리즘 2. 언제 사용할까?문제를 보고 현재 상황에서 가장 좋아보이는 것을 선택할 때 문제가 풀릴 지를 파악할 수 있어야 함그리디로 판단할 때는 정당한지(= 다른 방법이 불가능한 지) 검토할 수 있어야 함 '가장 큰 순서대로', '가장 작은 순서대로' 와 같은 기준을 알게 모르게 제시해주는 편정렬 알고리즘과 함께 결함된 문제가 많음 3. 예제#include using namespace std;int coins[4] = {500, 100, 50, 10};int..
2024.10.31
coding_test
-
[BoJ] #1182 부분 수열의 합 / c++
https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 부분수열의 합 2 초 256 MB 문제 N개의 정수로 이루어진 수열이 있을 때, 크기가 양수인 부분수열 중에서 그 수열의 원소를 다 더한 값이 S가 되는 경우의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 ..
2023.07.27
-
[C++ 줍줍] next_permutation과 순열/조합
1. header #include 2. 순열 next_permutation(v.begin(), v.end()) ex. v = {1, 2, 3, 4} (1) 입력 벡터가 다음 순열로 바뀌면서 true를 리턴 : v={1, 2, 4, 3}, true 리턴 (2) 마지막 순열까지 모두 바뀌었다면 false를 리턴 : v={4, 3, 2, 1}, false 리턴 따라서, (1)때문에 while문이 아닌 do-while문을 사용해야 하고 (처음 자신 포함하려고) (2)때문에 while문 조건문이 next_permutation이 된다. void permutation() { int arr[] = { 1, 2, 3, 4 }; do { for (int i = 0; i < 4; i++) { cout
2022.09.20
-
[C++ 줍줍] 올림, 내림, 반올림
▷ 문제 상황 1 숫자를 올림, 내림한 결과를 알고 싶다 ! ▶ 해결 방법 1 ceil( ), floor( ) 메소드를 이용 * 헤더 : #include int c1 = ceil(2.2); // c1 = 3 int f1 = floor(4.7); // f1 = 4 ▷ 문제 상황 2 숫자를 반올림한 결과를 알고 싶다 ! ▶ 해결 방법 2-1 floor( ) 메소드와 0.5 이용 * 헤더 : #include int f1 = floor(4.7 + 0.5); // f1 = floor(5.2) = 5 int f2 = floor(4.2 + 0.5); // f2 = floor(4.7) = 4 ▶ 해결 방법 2-2 round( ) 메소드이용 * C++ 11 부터 사용 가능 * 헤더 : #include int c1 = r..
2022.09.05
-
[C++ 줍줍] 문자열 자르기 : substr( )
▷ 문제 상황 문자열에서 원하는 만큼만 잘라내서 사용하고 싶다 ! ▶ 해결 방법 substr( ) 메소드를 이용 # substr( ) 사용법 1. 시작 인덱스, 길이 string s1 = "Happy"; string s2 = s1.substr(1, 3); // s2 = "app"; 2. 시작 인덱스만 이용 : 그 위치부터 끝까지 string s1 = "Happy"; string s2 = s1.substr(1); // s2 = "appy";
2022.09.05
-
[알튜비튜 줍줍] sort 함수 정리
std::sort 1. parameter 배열의 시작 위치, 끝 위치 2. 정렬 기준 [default] 오름차순 [custom] sort 함수의 3rd 인자로 다양한 비교함수 cmp를 넣어주면, 그 함수 기준으로 정렬 가능 ※ 내림차순 : sort ( , , greater()) ※ cmp (int a, int b) ① a가 b의 앞에 와야 할 경우 true를 리턴하게끔 설계 bool cmp(int a, int b) { if(a > b) return true; // a >= b 하면 안됨 return false; } ② a와 b의 우선순위가 같으면 false 반환해야 함 ( false를 리턴하는 경우, swap 한다는 사실을 숙지하고 있자! ) ③ cmp의 인자로 STL이나 클래스 객체가 전달되는 경우, ..
2022.09.03
-
[프로그래머스 Lv.2] 게임 맵 최단거리 / c++
[출처] https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ▷▷ 문제 ROR 게임은 두 팀으로 나누어서 진행하며, 상대 팀 진영을 먼저 파괴하면 이기는 게임입니다. 따라서, 각 팀은 상대 팀 진영에 최대한 빨리 도착하는 것이 유리합니다. 지금부터 당신은 한 팀의 팀원이 되어 게임을 진행하려고 합니다. 다음은 5 x 5 크기의 맵에, 당신의 캐릭터가 (행: 1, 열: 1) 위치에 있고, 상대 팀 진영은 (행: 5, 열: 5) 위치에 있는 경우의 예시..
2022.08.29
experience
-
[렛츠인턴] 네트워킹 파티
렛츠인턴에서 네트워킹 파티가 있었다. 유사한 진로 방향을 가진 분들부터 전혀 다른 방향을 가진 분들까지 다양한 인연들과 실컷 이야기할 수 있었다. 진로 방향과 상관없이 비슷한 고민들을 가지고 있기도 했고, 내가 몰랐던 새로운 분야의 이야기도 들을 수 있어서 정말 설레고 즐거웠다. 집순이 인간이지만 앞으로도 이런 기회에 보다 적극적으로 참여해봐야겠다는 생각을 했다. 나 스스로도 누군가에게 도움이 되는 인연이 될 수 있도록 노력하자! 앞으로도 렛츠인턴 화이팅💜
2024.01.02
-
[고민 일지] Backend 설문 옵션에 확장성 더하기
서베이지는 설문자와 설문 참여자를 (a.k.a 패널) 연결해주고 수수료를 받는 중개 서비스이다.이 과정에서 설문이 특정 나이대, 성별을 대상으로 하는 경우, 자격이 되지 않는 패널의 참여를 막기 위하여 어플에서 해당 패널의 자격이 되는 설문만을 필터링하는 기능을 제공한다. 이번에 Spring boot를 이용한 서버를 도입하게 되면서, 몇백명의 패널에 대하여 효과적인 설문 옵션 관리 방법을 고민하게 되었다. 이번 글에서는 그 고민 과정을 기록해놓으려 한다. Enum을 활용하자!서베이지에서는 설문과 패널을 효과적으로 매칭하기 위하여 다양한 필터링 조건을 제공한다. 나이대, 성별 등 여러 필터링 조건에 대하여 기존에는 각 옵션의 값을 0부터 시작하는 인덱스 값으로 저장하였다. 예를 들면 10대면 0을, 20대..
2024.01.01
-
[밥약 | 백엔드] 서비스 출시
드디어 밥약이 출시되었다!! https://www.babyakmate.com/ 밥약 www.babyakmate.com 시험기간에 출시된지라 아직 밥약이 활발히 올라오지는 않았지만, 벌써 누적 가입자수가 130여명이다. (로그인 및 회원가입 API에 문제가 없다..! 휴ㅋㅋㅋㅋ) 출시 전 이대학보에서 인터뷰를 하고 기사를 발행해주셨는데, 후속 기사를 위한 인터뷰 요청도 들어와서 11월 즈음 진행될 것 같다. 신기하다. 실제로 밥약 글이 올라온 것을 보니 서비스 출시가 실감나는 것 같다. 시험 기간 이후 많은 이용자 유입에 잘 대처해서 지속가능한 서비스로 밥약을 잘 운영해보고 싶다.
2023.10.28
-
[서베이지 Backend] 진짜 진짜 서버 도입
드디어 진짜 진짜 서베이지 서버 도입이 결정되었다..!여러번 이야기를 나눴던 주제였는데, 서비스가 확장을 멈추면서 도입이 무산되었었다. 그러나 서베이지가 앞으로 지속 가능한 서비스로 운영되기 위해서는 더이상 파이어베이스에 의지할 수 없다는 결론이 났고, 최최최종적으로 서버 도입이 확정되었다. 부족했던 나의 첫 프로젝트였으며, 가장 깊은 이해와 애정이 있는 서베이지를 완성도있게 개편할 기회가 생겨서 난 엄청나게 신이 났다ㅋㅋ 그동안 우리는 서버 없이 Firebase를 이용해서 서비스를 운영해왔다. Firebase를 선택했던 이유는 다음과 같았다. ▷ 첫째, 백엔드 인력 부족 문제였다. 지금까지 개발팀에는 백엔드쪽 진로를 가진 팀원이 없었다. 나도 백엔드를 잘 모르던 시절에 서베이지에 합류했던터라 서버에 ..
2023.08.25
-
[UNIS SW 창업 해커톤] 참가 후기
활동 기간 2023.07.19 - 2023.07.21 포지션 기획, 백엔드 개발 Tech Stacks Spring Boot 3, MySQL, AWS 이번에 교내 창업 동아리 UNIS에서 해커톤을 진행한다고 하여, 백엔드 개발 포지션으로 참여했다. 그동안 여러 프로젝트에 참여했지만, 해커톤은 처음이라 기대도 긴장도 많이 되었다. 첫 해커톤 후기를 남겨보고자 한다. # Day 1 공덕 서울창업허브에서 오프라인 OT가 진행되었다. 팀원들도 처음 만나고, 주제에 대한 개요를 함께 결정하는 시간을 가졌다. 우리 팀은 기획 1, 프론트 2, 백엔드 2로 인원을 구성했다. 기획자 분께서 '실패 기록 서비스'를 제안하셔서 해당 주제의 방향성을 함께 논의했다. 단기간에 빠르게 기획부터 개발까지 진행해야 하였기에, 나는 ..
2023.07.22
-
[캡스톤디자인프로젝트] 최종 발표와 수상
드디어 1년간의 졸업 프로젝트가 끝이 났다. 오랜 기간 서비스를 기획, 개발하니까 최종 발표때는 우리 서비스의 필요성 및 기술에 대한 충분한 이해와 확신이 있었고, 그 덕에 발표도 긴장없이 잘 마무리했다. 그리고 감사하게도 장려상을 수상할 수 있었다. 최종 발표를 비롯하여 이것저것 프로젝트 회고를 해보고자 한다. 우선 이번 프로젝트를 통해 처음으로 AI 기반 서비스를 개발해볼 수 있었다. 직접 개발한 파이썬 크롤러를 통해 이미지 데이터를 수집하고, 이를 전처리하여 Yolov5 모델을 학습시키는 과정을 함께하며 AI 모델의 구현 과정 전체를 하나하나 경험해봤다. 또한, Flask를 이용하여 AI 모델을 위한 모델 서버를 개발한 후, 이를 Tencent Cloud GPU 서버에 배포해보며 웹서버와 모델 서버..
2023.06.23
career
-
[인턴일지 #7] 인턴 끝!
12/22 퇴사 후 새해가 되어서야 작성하는 인턴 종료 일지! (첫 인턴 일지와 데자뷰..)드디어 4개월간의 인턴 생활이 마무리되었다. 전공을 다루는 직장생활은 처음이라 걱정도 많았지만, 어떤 부분에서든 성장해서 나가자는 목표로 임하니까 매일매일이 배워가는 즐거움으로 금방 지나가버렸다. 내가 진행했던 업무 내용은 아래와 같다. TopicTaskJava Profiling JVM 및 JVMTI에 대한 이해 Java Profiler 3종 (pinpoint, scouter, visualvm) 환경 설정 및 사용 Scouter를 이용한 자사 테스팅 도구(cover, scouter) 프로파일링 JVM 클래스 정보 추출하는 커스텀 Java Agent 개발 Java Remote Debug Oper..
2024.01.01
-
[인턴일지 #6] Java GC, Heap Dump
https://dramatic-lift-c67.notion.site/Java-GC-Memory-Dump-df1b555892774033809377b0a669c77b?pvs=4 Java GC와 Memory Dump | Built with NotionRefdramatic-lift-c67.notion.site
2023.10.28
-
[인턴일지 #5] Java Profiling, Profilers
1. Java Profiler등장 배경프로그램 규모가 커지거나 복잡해지면 모든 JVM Internal Components가 효율적인지 모니터링 어려움특징Memory Usage, Garbage Collection, CPU Utilization 등을 분석JVMTI 이용주로 Agent - Server - UI 구조 2. Java Profiling Tools APM (Application Performance Management) PinpointScouterVisualVm형태Web ClientStandalone ClientStandalone ClientPlugins저장소HBasecompressed files AgentJava Agent• Host Agent (OS Agent)- CPU, Memory, Disk..
2023.10.28
-
[인턴일지 #4] JVM, JVMTI
[참고] Chapter 2. The Structure of the Java Virtual Machine Chapter 2. The Structure of the Java Virtual MachineConditional branch: ifeq, ifne, iflt, ifle, ifgt, ifge, ifnull, ifnonnull, if_icmpeq, if_icmpne, if_icmplt, if_icmple, if_icmpgt if_icmpge, if_acmpeq, if_acmpne.docs.oracle.com 1. Java Compile & Run1-1. Java Compile & Run 과정.java 파일 생성Java Compiler (javac)로 .java 파일 컴파일 .java → .classJ..
2023.10.04
-
[인턴일지 #3] 자사 도구 분석
2023.09.19
-
[인턴일지 #2] 프로젝트 정리
2023.09.19