목록모든 글 (314)
개발자로 후회없는 삶 살기
서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술한다. 본론- 추상 클래스란?public abstract class Car { public abstract void drive(); public abstract void stop();}추상 메서드를 가지는 클래스로, 추상 메서드를 가지는 것 외에는 일반 클래스와 다른 게 없다. 추상 메서드란 함수 원형만 있고 코드 블럭 내부는 비어 있는 메서드를 의미한다. 이제부터 추상 클래스와 추상 메서드를 왜 사용하고 어떠한 특징을 가지고 있는지 알아보자 -> 추상 클래스가 되는 조건 ✅1. 부모 클래스로서 추상 메서드를 가짐2. 자식 클래스인데 부모인 추상 클래스의 추상 메서드를 구현하지 않고 추상 메서드로 유지함추상 클..
서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술한다. 본론- 상속이란?부모 클래스의 멤버를 자식 클래스에서 사용할 수 있도록 물려 주는 것으로, 단어 뜻과 유사한 방식으로 동작한다. 실제로, 부모 클래스에 작성한 필드와 메서드를 자식 클래스에서 작성한 것처럼 사용할 수 있다. public class Animal { protected String color; private String name; protected void speak() { System.out.println("동물이 어떻게 말한다."); }}public class Lion extends Animal {}자식인 Lion이 Animal을 상속 받는 코드이다. Lion에는 코..
서론※ 과거에 공부한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술한다. 본론- 접근 지정자-> 접근 지정자의 목적public class A { public int a; protected int b; int c; private int d;}자바는 객체 지향 언어로 캡슐화, 추상화, 상속화, 다형화라는 특징을 가진다. 그 중 캡슐화를 만족하기 위해 접근 지정자를 사용한다. 캡슐화란 클래스를 하나의 캡슐처럼 외부와 독립된 공간으로 보고 외부와 적절히 상호작용하는 것을 목표로 한다. 외부와 적절히 상호 작용을 하기 위해선 데이터의 I/O가 있어야 하는데 접근 지정자를 사용하면 클래스 내부 데이터의 접근 권한을 조절하여 데이터의 흐름을 제어할 수 있다. -> 종류publi..
서론 로깅을 사용하는 목적은 다양하며, 로컬, 개발, 운영 레벨에서 로깅 전략에 차이점을 주어 목적에 맞는 데이터를 수집합니다. 저희 서비스에서 로깅을 사용한 목적을 말씀드리고, 사용한 로깅 전략을 기록합니다. 본론 - 로깅 도입 목적 로깅을 사용하는 목적은 다양하지만, 운영 레벨에서는 사용자의 서비스 활용도를 파악하기 위해 사용한다고 합니다. 저희 서비스 또한, 상품 구매 목적으로 활용하는 사용자가 대부분일 것이기에 사용자가 저희 서비스를 통해 원하는 목적을 달성할 수 있도록 유저 데이터를 수집하기로 했습니다. -> 로깅 체크 리스트 유저 로그인 시간 + 로그아웃 시간 세션 timeout 여부 유저 트랜잭션 로깅 가구 및 공간 데이터 접근 시간 및 횟수 카운팅 업로드한 데이터의 추론 결과가 좋았는지 큐..
서론 부스트캠프 멘토님이 관계자로 계신 캐글 코리아에서 발표 연사로 참여한 경험을 기록합니다. 본론 - 캐글 코리아란? https://www.facebook.com/groups/KaggleKoreaOpenGroup 로그인 또는 가입하여 보기 Facebook에서 게시물, 사진 등을 확인하세요. www.facebook.com 우리나라의 캐글러들이 모여 지식을 공유하고 대회와 스터디를 진행하는 대표 Data, ML 분야 커뮤니티입니다. - 발표자로 참여하게된 계기 Naver 부스트캠프 AI Tech 레벨 1에서 강천성 멘토님이 캐글 코리아의 관계자로 계시며, 제가 가진 공유하는 마음가짐과 지적 호기심을 발표를 통해 표현해보는 것이 좋겠다고 조언해주셨습니다. 그 덕분에 이러한 기회를 얻게 되었습니다. - 발표 ..
서론 학과 홈페이지의 서버 다운의 80%는 다소 복잡한 DB 연관관계 설계로 인해 조회 시 DB부하가 발생하기 때문입니다. 이를 JPA 쿼리 튜닝으로 해결하기 위한 고민을 공유합니다. 본론 - 졸업 프로세스 저희 학교는 졸업 프로세스에 따라 졸업 신청을 4번 하게 되며 따라서 졸업자 목록 테이블과 4개의 졸업 신청 테이블의 연관 관계로 설계되어 있었습니다. 신청 접수, 제안서, 중간, 최종 보고서에 따른 신청서를 제출해야 하며 해당 신청 데이터는 관리되어야 하기에 테이블로 유지보수 되어야 합니다. 따라서 졸업자 전체 조회 시 졸업자 수 * 4만큼의 DB select를 하게 되어 DB 부하와 웹의 로딩 지연이 발생했습니다. 이제부터 이것을 JPA로 해결한 방법을 알아보겠습니다. - JPA 쿼리 튜닝 결과 ..
서론 11, 12 주차에는 UXR에 구축한 웹 서버와 앞으로 정식 서비스까지 사용할 추론 서버 간의 통신 규격을 정하고 여러 통신 이슈들을 대비하는 시간을 가졌습니다. 본론 - 추론 서버 배포 방식 현재 추론 서버는 GPU POOL을 사용하여 GPU Utilization을 높이는 방식으로 배포되어 있습니다. https://hsb422.tistory.com/entry/ML-PARTGPU-%ED%92%80-%EA%B5%AC%ED%98%84%EA%B8%B0-2 최적화 PART.GPU 풀 구현기 2 서론 사설망에서 서버 간 통신으로 GPU 풀을 이용하는 과정을 기록합니다. 본론 -> 깃허브 https://github.com/boostcampaitech6/level2-objectdetection-cv-05/pul..
서론 저희 서비스에서 파일 업로드가 레이턴시의 큰 비중을 차지하고 사용자 요청이 전부 파일 업로드로 시작하기 때문에 반드시 해결해야 하는 문제입니다. 이를 해결한 방법을 작성합니다. 본론 - 기본 업로드 방식 private String sendFileToStorage(final RawFileData fileData) { try (final InputStream inputStream = fileData.getContent()) { String fileName = fileData.getStoreFileName(); BlobInfo blobInfo = BlobInfo.newBuilder(bucket, fileName) .setContentType(fileData.getContentType()) .build()..