본문 바로가기
728x90

분류 전체보기98

[SSAFY]9기 SSAFY 생활을 끝내며 - 비전공 파이썬반 1년 간의 SSAFY 과정이 끝났다. 수료한 게 아니라 취업으로 인한 중도퇴소였지만, 그래도 마지막 프로젝트 끝나고 잡페어 기간 이전에 퇴소한 거니깐 거의 수료에 가깝지 않을까 싶다. 개인적으로 힘들게 지낸 SSAFY 과정을 기록하고 싶기도 하고, 입과할 다른 사람들도 참고할 만한 내용이 될 것 같아서 기록을 남긴다. 입과 SSAFY에 합격한 지 며칠 되지 않아 바로 입과하게 되었다. 나는 부울경캠퍼스여서 급하게 집을 정리하고 부산으로 내려왔는데, 캠퍼스가 생각보다 본가에서 멀리 떨어져 있어 자취를 결정하게 됐다. 부울경 교육생들의 주요 거처는 명지, 신호, 송정 정도로 나뉘는데 나는 인프라와 거리의 합의점인 신호동에 방을 잡았다. 부울경캠퍼스는 삼성전기 사업장 내에 위치하기 때문에 보안 측면에서 삼엄했.. 2023. 12. 21.
[키움증권]최종 탈락 후기 - IT 직무 금융권에 큰 로망을 가지고 있었던 바 생각보다 최탈이 아프게 다가왔던 ㅋㅋ 직무가 내가 원하던 것과 다르다는 걸 위안삼으면서 어찌어찌 넘겼다. 여기도 다대다 최종면접에서 면접자들이 괴물같은 사람이 엄청 많다고 느꼈다. 구글 연계 대외활동이나, 실제 금융권 개발 인턴 경험자 등등... SSAFY에서 해봤던 개발 실무 경험들을 내놓기가 조금 민망해졌다 ㅋㅋ 타임라인 9/24 서류 마감 10/18 서류 결과 발표 10/30 1차면접 11/14 1차면접 결과 발표 11/21 2차면접 11/29 2차면접 결과 발표 잡다(ㅋㅋ)한 테스트 없이 심플하게 서류와 면접이 끝이다. 실무 코딩은 아마 다우기술에서 많이 할테니 코테도 보지 않는 듯 했다. 1차면접 키움증권 본사에서 진행했다. 첨에 엘리베이터 내렸는데 길을 못.. 2023. 12. 21.
[kt cloud]최종 탈락 후기 2차면접 당시에 같은 조였던 분들이 클라우드/인프라 관련 경험이 너무 많으셔서 나는 힘들 것 같다고 생각하긴 했다. 아무래도 직무도 아키텍처/클라우드에 초점을 맞추고 코딩테스트조차 없으니 그쪽 관련 경험이 중요하기도 하고... 아무튼 나도 인프라에 관심이 있는 정도였어서 크게 아쉽지는 않았다. 타임라인 10/9 서류 마감 10/25 서류 결과 발표 10/30 AI역검 마감 11/12 1차면접 11/15 1차면접 결과 발표 11/22 2차면접 11/30 2차면접 결과 발표 서류와 역검은 여느 기업과 똑같이 진행됐다. 일반 개발 직무와는 다르게 알고리즘을 직접 짜는 직무가 아니다보니 코테는 따로 보지 않는 듯 했다. 1차면접 강남구청역 코앞에 있는 kt cloud 본사에서 진행했다. 역에서 연결된 입구가 있.. 2023. 12. 20.
[EC2]certbot으로 SSL 인증서 받기(도메인 없을 때 해결 방법) 다음 명령어를 통해 certbot을 다운받는다. apt-get install python3-certbot-nginx 그리고 다음 명령어를 통해 해당 주소에 대한 SSL 인증서를 받을 수 있다. certbot certonly --nginx -d {도메인 주소} 나는 SSH로 접속하면서 IP 주소밖에 갖고 있지 않았기 때문에, 도메인 주소가 없어서 SSL 인증서를 받을 수 없는 상황에 놓였다. 아무리 찾아봐도 도메인 주소 없이는 인증서 발급이 안됐고, 결국 도메인을 만들었다. https://www.duckdns.org/ Duck DNS Duck DNS free dynamic DNS hosted on AWS news: login with Reddit is no more - legal request suppor.. 2023. 7. 31.
[AWS]SSH로 EC2 인스턴스 jupyter notebook 접속하기 인스턴스가 이미 있고, 인증키 pem 파일이 있다면 SSH를 통해 인스턴스에 접속할 수 있다. 아무 터미널에서나 가능하지만 이용 편의성을 위해 MobaXterm을 사용하면 좋다. https://mobaxterm.mobatek.net/download-home-edition.html MobaXterm free Xserver and tabbed SSH client for Windows The ultimate toolbox for remote computing - includes X server, enhanced SSH client and much more! mobaxterm.mobatek.net 나는 오른쪽에 있는 installer edition으로 설치했다. exe파일로 설치 후 실행하면 mobaXterm이.. 2023. 7. 26.
[Docker]Travis CI, EB를 이용한 배포 Travis CI Travis CI는 연동된 repository에 push가 발생하면 자동으로 해당 어플리케이션을 빌드, 테스트, 배포해준다. 그러기 위해서는 travis CI에서 어플리케이션이 있는 repository를 연동해줘야 한다. 처음 travis CI에 가입 시 깃헙 계정과 연동해서 로그인해줘야 하고, 아무 플랜도 없을 때는 빌드가 불가능하므로 기본 크레딧이 제공되는 Free plan을 선택해서 카드를 등록해줘야 한다. travis CI로 자동 배포를 하기 위해서는 .travis.yml 파일이 어플리케이션 루트 디렉터리에 있어야 한다. sudo: required language: generic services: - docker before_install: - echo "test start" -.. 2023. 7. 25.
[Docker]개발 환경 vs. 운영 환경 개발 환경 vs. 운영 환경 앱을 dockerizing할 때 실제 앱에 담길 Dockerfile과 개발환경에서 쓰이는 Dockerfile.dev 를 별개로 작성한다. 이는 volume을 이용해서 개발 환경에서 불필요한 종속성 설치를 최소화하기 위함이다. # Dockerfile.dev FROM node:alpine WORKDIR /usr/src/app COPY package.json ./ RUN npm install COPY ./ ./ CMD ["npm", "run", "start"] COPY package.json을 RUN 이전에 배치함으로써 불필요한 종속성 설치를 생략했다. 이 때, 일반적인 docker build ./ 명령을 실행하면 Dockerfile을 자동으로 인식하지 못해 오류가 발생하므로 do.. 2023. 7. 24.
[Docker]COPY, Volume, Compose FROM node:10 COPY ./ ./ RUN npm install CMD ["node", "server.js"] node.js 어플리케이션을 담은 컨테이너를 실행하기 위해 docker 이미지 파일을 생성한다. COPY ./ ./ 는 현재 디렉토리 내에 있는 모든 파일들을 스냅샷으로 해당 컨테이너에 추가한다. 이런 식으로 스냅샷을 추가해주지 않으면 컨테이너 run에 필요한 파일들이 없어 오류가 뜬다. 빌드 후 컨테이너를 실행했을 때 server.js에 명시된 포트번호(8080)로 접속해보면 접속이 되지 않는다. 이는 로컬 환경에서의 포트번호와 컨테이너의 포트번호가 다른 개념이기 때문이다. 따라서 로컬 환경에서의 포트를 컨테이너의 포트에 연결해서 run 명령어를 실행해줘야 한다. docker run -.. 2023. 7. 23.
[Docker]이미지 Docker 이미지 구조 이미지는 시작시 실행될 명령어+파일 스냅샷이 존재한다 시작시 실행될 명령어 외에 다른 명령어를 이용할 수 있음 docker run alpine ls 시작시 실행될 명령어를 무시하고 ls라는 명령어를 사용 가능 But, 명령어를 실행 가능하게 하는 파일이 이미지의 스냅샷 내에 없다면 에러가 발생 실행 중인 컨테이너 보기(ps) docker ps ps 명령어를 통해 실행 중인 컨테이너들을 확인할 수 있다 CONTAINER ID, IMAGE, COMMAND, CREATED, STATUS, PORTS, NAMES docker ps --format 'table{{.Names}}\ttable{{.Image}}' Names와 Image만을 조회하는 옵션을 --format을 통해 설정해줌 do.. 2023. 7. 23.
[Docker]기본 개념 도커를 쓰는 이유? 프로그램 실행에 필요한 환경을 통일하기 위해 컨테이너란? 코드, 종속성 등을 패키지화해서 프로그램이 어디서나 안정적으로 빠르게 실행될 수 있도록 하는 소프트웨어 단위. 컨테이너화된 소프트웨어는 인프라에 관계없이 항상 동일하게 실행되고 어떤 개발과 스테이징의 차이에서도 균일한 작동이 보장된다. 도커 이미지(컨테이너 이미지)란? 코드, 런타임, 라이브러리 등 프로그램을 실행하는 데 필요한 모든 것을 포함하는 소프트웨어 패키지. 컨테이너는 이미지의 인스턴스라고 볼 수 있다. 도커 vs VM VM은 서버를 논리적으로 분할해서 독립적으로 이용 가능한 가상 환경의 서버 하이퍼바이저는 호스트 시스템에서 여러 게스트OS를 이용할 수 있도록 하드웨어 가상화, VM 모니터링 등을 담당하는 중간 관리 소.. 2023. 7. 21.
[아시아나IDT]최종 탈락 후기 화요일에 아시아나IDT 최종 탈락 통보를 받았다. 면접날 보여드린 모습에 감동을 받았다고는 하지만... 나조차도 면접이 망했단걸 인지하고 있었기 때문에 머쓱타드 ^^; 사실 대면 면접은 완전 처음이었고 서울까지 면접보러 갔다오는 길 예행 연습으로 생각하고 있었어서 큰 기대는 없었다. 떨어졌지만 좋은 경험이었다고 생각한다! 타임라인 6/26 서류 마감 6/28 서류 결과 발표 7/1 코테 7/5 코테 결과 발표 7/11 면접 7/12 예비 결과 발표 7/18 최종 결과 발표 서류 마감 ~ 예비 결과 발표까지 약 2주가 걸린 초초초빠른 전형이었다. 대기업 계열사 치고는 너무 빠른 속도라서 시원시원하고 좋았다. 서류는 그냥 자유 형식 자기소개였고, AI 역량검사를 같이 제출해야 한다. 자기소개는 그냥 무난무난.. 2023. 7. 20.
[SQLD/빅데이터분석기사]합격 후기 2023년 들어서 목표로 했던 자격증 3개(정처기, SQLD, 빅분기) 따기 중 2개를 성공했다. 모레 정처기 실기 시험이 있지만 시간이 없어 공부를 아예 못한 관계로... 정처기 취득은 무기한 연기... 타임라인 - 3.19 SQLD 시험 - 4.7 SQLD 사전 결과발표 - 4.8 빅데이터분석기사 필기 시험 - 4.21 빅데이터분석기사 필기 사전 결과발표(7일 뒤 최종합격) - 6.24 빅데이터분석기사 실기 시험 - 7.7 빅데이터분석기사 실기 사전 결과발표(7일 뒤 최종합격) SQLD는 실기 없이 필기 시험으로만 합격이 결정되는데, 기본적인 DB, 데이터 모델링 지식과 쿼리문 작성법만 알아도 반은 먹고 들어간다. 조인, 윈도우 함수, 서브쿼리 등에서 헷갈릴 만한 부분이 있는데 벼락치기로 외워가면 충.. 2023. 7. 20.
[Java]기본형 변수 크기 및 범위 https://www.acmicpc.net/problem/10986 10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net 10986. 나머지 합 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.StringT.. 2023. 6. 17.
[알고리즘개념]구간합 11659. 구간 합 구하기 4 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWr.. 2023. 6. 15.
[Java]BufferedReader, BufferedWriter 사용법 BufferedReader와 BufferedWriter은 Java에서 입출력에 사용되는 클래스로 입출력 스트림에 대해 버퍼링 기능을 제공한다. 이는 입출력을 빠르고 효율적으로 하기 위함인데, 왜 버퍼링이 추가되면 더 효율적이게 될까? 일반적으로 하드웨어나 입출력기기와의 통신은 시간이 오래 걸리는데, 데이터가 입출력될 때마다 통신이 이루어지면 비효율적이기 때문에 버퍼에 입출력을 쌓아서 한번에 해결하는 것이다. 여러 개의 짐을 먼 곳으로 옮길 때 하나씩 들어 옮기는 것 보다 모아서 옮기는 게 효율적인 것과 비슷한 개념이다. 예제 코드를 통해서 좀 더 자세히 알아본다. https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10.. 2023. 6. 14.
[LG CNS]최종 탈락 후기 6월 12일 오후 3시경 최종 탈락 통보를 받았다. 속상할 법도 한데 내 자신이 너무 부족하다고 생각하고 있기도 했고, LG의 멘트가 너무 젠틀해서 기분이 나쁘지는 않았다. 큰 기대는 안하고 있다고 생각했지만 입에 쓴맛이 도는 걸 보면 내심 기대가 없었던건 아닌가 싶기도 하다. 타임라인 4/6: 서류 결과 발표 4/15: 코테 4/21: 코테 결과 발표 5/11: 1차면접 5/18: 1차면접 결과 발표 6/2: 2차면접 6/12: 2차면접 결과 발표 후기 서류의 경우는 500자 2문항으로, 자격증이랑 학력만 추가하면 되는 아주 간단한 형태여서 부담없이 지원할 수 있었다. IT Jump Up Path라는 이름으로 비전공자를 주 타겟으로 모집하는 것 같았고, ERP 직무라 생소했지만 일단 코테라도 쳐보자는 .. 2023. 6. 14.
[Spring]Application Layer 퀴즈를 CRUD하고 문제를 풀 수 있는 어플리케이션 레이어를 구현한다. //QuizForm package com.example.quiz.form; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import javax.validation.constraints.NotBlank; @Data @NoArgsConstructor @AllArgsConstructor public class QuizForm { private Integer id; @NotBlank private String question; private Boolean answer; @NotBlank private String author; pr.. 2023. 5. 16.
[Spring]Service 비즈니스 로직을 처리하는 서비스 컴포넌트 구현 // QuizService package com.example.quiz.service; import com.example.quiz.entity.Quiz; import java.util.Optional; public interface QuizService { Iterable selectAll(); Optional selectOneRandomQuiz(); Boolean checkQuiz(Integer id, Boolean myAnswer); void insertQuiz(Quiz quiz); void updateQuiz(Quiz quiz); void deleteQuizById(Integer id); } package com.example.quiz.service; .. 2023. 5. 15.
[Spring]Application-CRUD 퀴즈 애플리케이션을 만들 때 레이어를 3개로 나누어 개발. 애플리케이션 레이어: 클라의 요청을 제어하고 도메인 레이어를 사용해 애플리케이션 제어 Controller: 요청을 처리에 매핑, 결과를 뷰에 넘김. 주요 처리는 도메인 레이어의 서비스를 호출 Form: 화면의 폼을 표현, 화면의 입력값을 컨트롤러에 넘기고 컨트롤러에서 화면을 출력할 때도 사용. View: 화면 표시 도메인 레이어: 도메인 객체에 대해 애플리케이션 서비스 처리 실행 Domain Object: 서비스 처리에 필요한 자원(Entity 등) Service: 애플리케이션의 서비스 처리 Repository: 인터페이스. 데이터베이스의 데이터 조작 내용 정의 인프라스트럭쳐 레이어: 도메인 객체에 대해 CRUD 조작을 통해 데이터의 영속화 담당.. 2023. 5. 12.
[Spring]Request Parameter/Validation Request Parameter request parameter로 속성을 담아서 /confirm url로 전송. 입력 부분을 Form으로 대체 가능 package com.example.demo.controller; import com.example.demo.form.Form; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind... 2023. 5. 11.
[Spring]Thymeleaf 문법, Layout Thymeleaf 문법 package com.example.demo.controller; import com.example.demo.entity.Member; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Controller public class ThymeleafController { @GetMapping("show.. 2023. 5. 10.
[Vue]Vue 기초/CLI/Component Vue.js Web App: 웹 브라우저에 실행되는 어플리케이션 소프트웨어 SPA(Single Page Application): 서버에서 최초 1장의 HTML만 전달받아 모든 요청에 대응하는 방식, CSR 방식으로 요청을 처리 CSR(Client Side Rendering): 각 요청에 대한 댕응을 JS를 사용해 필요한 부분만 다시 렌더링. 필요한 페이지를 서버에 AJAX로 요청하고 서버는 화면을 그리기 위해 필요한 데이터를 JSON 방식으로 전달. 이후 JSON 데이터를 JS로 처리해서 DOM 트리에 반영 MVVM Pattern: 소프트웨어 아키텍처 패턴의 일종. GUI(View)의 개발을 BE(Model)로부터 분리시켜 Vie가 특정한 모델 플랫폼에 종속되지 않도록 함 Vue instance el: .. 2023. 5. 9.
[Spring]JDBC/MVC Model JDBC ORM: Object/RDB Maper, 애플리케이션의 객체와 RDB의 데이터 매핑 스프링 데이터의 메서드를 상속해 사용 가능 application.properties에서 스프링 부트 프로젝트 환경 설정 // application.properties spring.datasource.driver-class0name=org.postgresql.Driver spring.datasource.url=jdbc:postgresql://localhost:5432/postgres spring.datasource.username=qwer spring.datasource.password=qwer 엔터티 생성 // ㅡ package entity; import lombok.AllArgsConstructor; impor.. 2023. 5. 9.
[Spring]DI/AOP 인터페이스 클래스에 포함하는 메서드의 구체적인 내용을 작성하지 않고 상수와 메서드 타입만 정의한 것. 다른 클래스에서 구현하는 것을 전제로 만들어짐 의존성 주입(DI) 의존하는 부분을 외부에서 주입하는 것(Dependency Injection) '사용하는 객체' 클래스에서 '사용되는 객체' 클래스에 의존하거나 인터페이스에 의존할 수 있음. 스프링에서는 DI 컨테이너가 임의의 클래스를 인스턴스로 생성해 클래스에 주입 인터페이스를 이용해 의존성을 만듦 - 인스턴스를 명시적으로 생성(new)하지 않음 - 어노테이션을 클래스에 부여 - 스프링이 인스턴스 생성(시작 시 모든 패키지를 스캔하는 컴포넌트 스캔을 통해) - 인스턴스를 이용하는 곳에 어노테이션 부여(@Autowired) 인스턴스 생성 어노테이션: @Co.. 2023. 5. 4.
[JavaScript]DOM, Event, 비동기 처리 JavaScript Browser APIs 웹 브라우저에 내장된 API, Javascript를 이용해 Browser API 사용 가능 DOM 문서 객체 모델(Document Object Model) 문서의 구조화된 표현을 제공, html 문서를 구조화해서 각 요소를 객체로 취급 window: DOM을 표현하는 창, 각 탭 document: 브라우저가 불러온 웹페이지 //요소 선택 document.querySelector(요소) document.querySelectorAll(요소) //태그 생성 document.createElement(tagName) //Node객체와 컨텐츠 표현 htmlElement.innerText //Node를 다른 Node의 자식으로 삽입 및 삭제 parentNode.appendC.. 2023. 4. 25.
[JavaScript] 기본 개념 JavaScript 웹 페이지에서 이벤트 발생 시 동작을 제어하는 데에 사용 웹 브라우저: URL을 통해 web을 탐색, html/css/javascript를 이해한 뒤 해석해서 사용자에게 하나의 화면으로 보여줌 Javascript engine: javascript를 해석, 각 브라우저마다 자체 엔진 보유 변수, 식별자 camelCase: 변수, 객체, 함수 PascalCase: 클래스, 생성자 SNAKE_CASE: 상수 //camelCase let variableName const userInfo function getName //PascalCase class UserInfo function User //SNAKE_CASE const API_KEY const NUMBERS 변수 선언 키워드 let: 블.. 2023. 4. 25.
[백준]230410-230416 문제풀이(Python) 1774. 우주신과의 교감 import sys input = sys.stdin.readline def find(x): if parents[x] != x: parents[x] = find(parents[x]) return parents[x] def union(x, y): x = find(x) y = find(y) if x < y: parents[y] = x else: parents[x] = y N, M = map(int, input().split()) gods = [] for _ in range(N): r, c = map(int, input().split()) gods.append((r, c)) dist = [[0] * (N + 1) for _ in range(N + 1)] for i in range(N).. 2023. 4. 20.
[백준]230403-09 문제풀이(Java) 10809. 알파벳 찾기 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int[] arr = new int[26]; for(int i = 0; i < arr.length; i++) { arr[i] = -1; } String S = in.nextLine(); for(int i = 0; i < S.length(); i++) { char ch = S.charAt(i); if(arr[ch - 'a'] == -1) { arr[ch - 'a'] = i; } } for(int val : arr) { System.out.print(val + " .. 2023. 4. 9.
[백준]230403-09 문제풀이(Python) 9328. 열쇠 from collections import deque import sys input = sys.stdin.readline dy = [-1, 1, 0, 0] dx = [0, 0, -1, 1] def bfs(y, x): global ans q = deque() q.append((y, x)) visited = [[False] * (w + 2) for _ in range(h + 2)] visited[y][x] = True while q: cnt = 0 now = q.popleft() for d in range(4): ny, nx = now[0] + dy[d], now[1] + dx[d] if ny h + 1 or nx w + 1: continue if .. 2023. 4. 9.
[갤럭시북3Pro]갤럭시북3 Pro i7 16인치 모델 한달 사용 후기 갤럭시북3 프로 한달 사용 후기입니다. 앞선 언박싱 후기에서도 말씀드렸지만 플래그십 모델인만큼 사무용 노트북으로는 최상급의 프로세서 성능을 가지고 있어서 컴퓨터를 이용한 작업에서 단 한번도 불편함을 느껴본 적이 없습니다. 중저가형 노트북의 경우는 성능이 동일하다고 해도 하드웨어나 최적화 부분에서 조금씩 삐그덕거리는 부분이 종종 있는데, 역시 삼성에서 자신있게 내놓은 제품인 만큼 완성도 측면에서 나무랄 부분이 없습니다. 단순히 프로세서 성능 뿐만이 아니라 사용할 때 불편함이나 답답함을 느끼지 않도록 해주는건 하이엔드 노트북의 필요충분조건인데요, 이건 긴말 필요 없이 갤럭시북이 인텔의 evo 인증을 받은 것에서 드러납니다. 빠른 절전모드 해제 응답성, Wi-fi6 의 연결성, 충분한 내장 그래픽 및 뛰어난 .. 2023. 4. 9.
728x90