전체 글 74

[위코드 X 원티드] 프리온보딩 백엔드 - 다섯 번째 기업과제 후기

절반 이상을 해냈다. 벌써 다섯 번째 기업과제이다. 이번 과제는 '휴먼스케이프'라는 회사의 기업과제이다. 힘들기도 했고, 재밌기도 했던 프로그램을 벌써 절반을 해냈다는 것이 아쉽기도하고, 개운하기도 한 이상한 기분이 든다. 너무 재밌는 프로그램이었고 나에겐, '개발자'라는 직업에 대해 확신을 준 프로그램이라 고마운 프로그램이기도 하다. 어찌됐던, 이번 과제를 해나가며 생겼던 고민들, 느낌들을 적고자 한다. 재밌게 읽어주십셔! 스무스한 시작 우리도 어느덧 네개의 기업과제를 이미 한 경험이 있기에, 순조롭게 어떤식으로 개발할지, 어떤 스택을 사용할지, 컨벤션을 어떻게 할지, 기능 분할을 어떻게 할지에 대해 얘기했다. 저번에는 기능에 대한 역할 분배가 적절치 않았지만 이번에는 일단..

액티비티 2021.11.17

eslint, prettier 그리고 github action

안녕하세유! 자바스크립트나, 타입스크립트를 이용하는 프로젝트를 협업할 때 코드 포멧팅때문에 머지시 충돌이 많이 일어나 골치아프신적 없나요? 전 있어요 ㅠ.ㅠ eslint, prettier 설정을 팀원들과 같게 적용한다음 깃헙 액션을 통해서 풀리퀘시 eslint에러 났는지 확인하고 에러났으면 머지를 막는 방법을 알아볼게요!! eslint, prettier가 뭔지, 깃헙 액션이 대체 뭔지 하나하나 적용해나가며 알아봅시다!(nestJS기준으로 살펴봅세다!) prettier 코드 포멧터입니다! 자스같은 경우는 'abcd'같은 싱글쿼터, "abcd"같은 더블쿼터(쌍따음표)가 구분이 없어서 누군 싱글쿼터를 이용하고 누군 더블쿼터를 이용하면 머지할때 충돌이 일어나고 복잡하겠쥬? 이런 코드 포멧팅을 도와..

개발 2021.11.14

[위코드 X 원티드] 프리온보딩 백엔드 - 네 번째 기업과제 후기

8퍼센트 기업과제 입금, 출금, 거래내역 조회 api를 만드는 기업과제였다. 과제를 보자마자 다른 api만드는 것 보단 더 안정성에 힘써야 했다 생각했다. 이를테면 거래내역과 계좌의 잔액이 다른 데이터 정합성 문제가 일어나면 정말 큰 문제라 생각했다. 즉, '입금을 한다'의 하나의 요청에 대해 계좌의 잔액 변경 입금 거래내역 생성 두개의 각각의 결과가 DB내에 동일하게 존재 하여야한다. 그렇기 위해선 트랜잭션을 생각할 수밖에 없었다. 트랜잭션은 트랜잭션 내 하나의 쿼리가 오류가 나면 모두다 롤백시킨다. 즉, 원자성의 특징을 띈다. 그런데 더 나아가 우린 '동시성'에 대해서도 깊게 고민했다. 찾아보니 트랜잭션에 고립레벨을 줄 수가 있는 걸 알게 되었다. DBMS마다 기본적으로 ..

액티비티 2021.11.14

[위코드 x 원티드] 프리온보딩 백엔드 - 세번 째 기업과제 후기

과제 선정 우리 팀은 자바스크립트에 익숙한 팀이다. 프레임워크도 당연히 express와 nestJS에 익숙하다. 그런데 이번엔 우린 엄청 큰 도전을 해보았다. 파이썬과, flask 프레임워크를 이용해보기로!!!! 검색어 자동완성 기능을 해보고 싶었기 때문이다. 유튜브나 구글을 보면 'ㅁ'하나만 쳐도 마음, 마술, 매직, 마음의 소리 등등 매우 많은 자동완성 기능이 된다. 이러한 기능을 실제로 해볼 좋은 기회라 생각하였기에 도전해보기로 결정하였다.!! 다사 다난한 과정 일단 파이썬 환경에 대해서도 잘모르기에 환경 세팅하는것부터 애를 먹었다. 무슨 '가상 환경'?을 먼저 세팅하고 하는게 너무 익숙치 않았다. 그런데 기본적인 플라스크 프레임워크의 로직은 nestJs라던지, 스프링과..

액티비티 2021.11.10

[위코드 X 원티드] 프리온보딩 두번째 과제 후기

첫 과제 리뷰 첫 과제가 끝나고 나니 리뷰들이 올라와 있었다. 정말 작성을 잘한 팀이 많았다. 삼일동안 밤새 과제를 하면서 완전 고생했는데 더 잘한 팀이 있는 것을 보고 조금 허탈한 마음이 들긴 했다. 다른 팀이 한 과제를 보고 배운점으로는 모두다 깃 커밋메시지가 일관성이 있다는 것 리드미에 요구사항, 과제 구현사항, 그리고 팀 이름을 적었다는 것 API문서화가 포스트맨을 통해 매우 깔끔하게 되어있다는 점 외부 사람이 API를 바로 테스트 해볼 수 있도록 포스트맨을 배포했다는 점 그래서 이번 두번 째 과제에 적용하여야 겠다고 생각했다. 두 번째 과제의 시작 - 마피아 컴퍼니 이번에는 5명이서 하나의 과제를 하면 된다고 한다. 두번째 과제로는 마피아 컴퍼니 프레시 코드 컴퍼니 두 기업의 과제중 하나를 고르..

액티비티 2021.11.07

[위코드 X 원티드] 프리온보딩 첫 과제 후기

[위코드 X 원티드] 프리온보딩 (백엔드) 참여 전 혼자 백엔드 공부만 하고 있던 와중 시영이형이 이러한 교육도 있다며 추천해주었다. 여러 사람과 함께 공부하고, 협업하고 싶던 욕구가 불타던 시기에 당연히 하고 싶었다. 그런데, JS, 파이썬언어를 기반으로 진행하는 프로그램이란다! 자바로 밖에 백엔드 경험을 해보지 않은 나로썬 조금 걱정이 되었지만 그냥 지원하기로 마음먹고 바로 사전과제 제출을 위한 네스트 공부를 하였다. 근데 스프링과 매우 유사해서 어렵지 않게 익혀 과제를 제출했다.(자바스크립트에 타입을 넣은 타입스크립트도 리액트 공부할 때 사용해본 경험이 있어 생각 보다 어렵지 않았다.) 그렇게 제출 완료를 했다. 사전 과제 자체는 간단했지만, 네스트에서의 단위테스트를 하는데 애를 먹었지만 단위 테스..

액티비티 2021.11.06

백준 3980(JAVA)

문제 https://www.acmicpc.net/problem/3980 3980번: 선발 명단 각각의 테스트 케이스에 대해서, 모든 포지션의 선수를 채웠을 때, 능력치의 합의 최댓값을 한 줄에 하나씩 출력한다. 항상 하나 이상의 올바른 라인업을 만들 수 있다. www.acmicpc.net 풀이 11개의 포지션에 11명의 선수를 넣어주면 된다. 모든 경우의수를 돌며 최대 값을 뽑으면된다. 단, 해당 포지션의 성능이 0이면 해당 포지션에 선수를 배치하지 못하는 가지치기 조건을 이용해 경우의 수를 대폭 줄이면 된다. 즉, 백트래킹을 통해 가지치기로 시간적 이득을 봐야만 맞을수 있는 문제이다. 너무간단한데, 테스트 횟수가 있으므로 static 변수를 사용한다면 초기화를 계속 해줘야한다. (이거 놓쳐서 2번 틀림..

algorithm 2021.11.01

백준 2661(JAVA)

문제 https://www.acmicpc.net/problem/2661 2661번: 좋은수열 첫 번째 줄에 1, 2, 3으로만 이루어져 있는 길이가 N인 좋은 수열들 중에서 가장 작은 수를 나타내는 수열만 출력한다. 수열을 이루는 1, 2, 3들 사이에는 빈칸을 두지 않는다. www.acmicpc.net 풀이 1 2 3 밖에 존재하지 못하는 수열중, 가장 작은 좋은 수열을 구하면 된다. 즉, 나쁜수열이면 안된다.. 가장 작은 숫자를 구하라 하였는데, 1 -> 2 -> 3 으로 탐색을 하면 자연스럽게 가장 작은 숫자가 나온다. 백트래킹 문제로 나쁜 수열이면 가지치기를 해서 경우를 많이 줄여 주면 간단하게 풀수있다. 즉, 재귀함수로 돌리다가 조건에 맞지않으면 그뒤의 가지들은 잘라버리고 다음 가지로 넘어간다...

algorithm 2021.10.31

백준 1174(JAVA)

문제 https://www.acmicpc.net/problem/1174 1174번: 줄어드는 숫자 음이 아닌 정수를 십진법으로 표기했을 때, 왼쪽에서부터 자리수가 감소할 때, 그 수를 줄어드는 숫자라고 한다. 예를 들어, 321와 950은 줄어드는 숫자이고, 322와 958은 아니다. N번째로 작은 줄어 www.acmicpc.net 풀이 문제는 너무 단순한데 보자마자 쉽게 어떻게 풀지 떠오르지가 않았습니다. 구래서, 일단 제일 작은수부터 나열해보았습니다. 0 1 2 0 1 2 3 4 5 6 7 8 9 10 20 21 30 31 32 40 41 42 43 50 51 52 53 54 60 61 62 63 64 65 70 71 72 73 74 75 76 80 81 82 83 84 ., 97 98 (세자리) 2..

algorithm 2021.10.17

[OS] 운영체제 I/O System & Disk Management

I/O System이 어떻게 동작하고, OS는 시스템 성능을 높이기 위해서 어떻게 I/O System을 support하는지 알아보자. 또, 디스크는 OS가 어떻게 관리하는 지도 알아보자. I/O System (HW) I/O System은 기본적으로 입력장치라면 데이터를 입력 받아서 메모리에 저장하고 프로세서가 메모리에 저장된 데이터를 사용하여 연산할것이다. 반대로 출력장치라면 프로세서가 연산/명령을 하여 메모리에 저장된 데이터를 출력장치로 내 보낼 것이다. I/O Mechanisms 좀더 세밀하게 어떤 방식으로 I/O를 통해서 데이터가 전송되고 처리하는지를 알아보자. Processor controlled memory access 이름에서 알수 있듯이 I/O로 부터 주고 받는 데이터는 프로세서(CPU)의 ..

computer science 2021.10.12