분류 전체보기 103

웹기초 6기 TA 회고

노마드 코더에서 Teaching Assistant로 활동했던 웹기초 6기가 끝났다. 이는 그에 대한 회고이다. 이는 복습을 위한 글도 아니고, 취업시장의 판관에게 제출하기위한 서류도 아니다. 그저 지난 10주 스터디의 기억이 다 스러지기 전에, 그 편린을 모아 간직하고 싶은 소망의 실현이다. # 1. 제안, 승낙 “영진님께 웹기초 TA를 맡아주실 의향이 있으신지 여쭤보려고요.” 보라님의 말씀이었다. 놀라웠다. 나는 커뮤니티 내부에서, 부끄러운 모습을 많이 보였었고 내가 만든 상황을수습하는 주체는 보라님을 비롯한 Crew분들이었다. 그런 내 치부를 모두 관찰한 보라님이 Teaching Assistant 합류에 대한 제안을 하고 계셨다. 더욱이 당황스러운것은, 발화의 태도였다. 그녀는 특별히 선심을 써서 내..

나는 정면승부를 피하고있다.

지금까지 근 1년이상 프로그래밍을 공부하면서, 정말 좋은 사람들도 많이 만나고, 재미있는 스터디에도 많이 참여했다. 노마드코더의 스터디원으로 시작해서, 노마드 코더의 TA역할도 수행했고, 마음이 맞는 동료들과 팀을 이뤄서 외주프로젝트도 했다. 하지만, 결과적으로 제대로 완성해낸 내 개인 프로젝트는 하나도 없다. 그리고 이력서도 작성하지않았다. 대학입시와 유학 실패 때문일까, 거절당하는게 무서워서일까. 일주일동안 곰곰히 생각해봤는데, 딱히 그렇지 않다. 이제 정면 승부를 할 시간인 것 같다.

PostgreSQL를 공부하기로 했습니다. with 기본 세팅

SQL을 공부하고자, 실용 SQL이라는 서적을 구입했습니다. PostgreSQL의 실습을 다루는 책입니다. PostgreSQL을 선택한 이유 처음에는 MySQL을 공부하려고 했으나, 많은 곳에서 기본 SQL로 PostgreSQL을 사용하고 있다는 것을 알게 되었습니다. Superbase가 제공하는 DBMS도 PostgreSQL기반이고, Prisma와 같은 여러 ORM도 PostgreSQL을 기본 설정으로 제공하는 경우가 많아서 사용할 수 있는 기술이라는 믿음이 생겼습니다. 결정적으로 MySQL과 같은 ANSI SQL이라는 같은 표준을 따르고 있어, 나중에 MySQL을 요구하더라도 쉽게 배울수있을거같아 부담 없게 선택하였습니다. 학습 소스 영진닷컴의 실용SQL 서적 https://shop.youngjin...

기타 2023.11.26

클린코드 7주차: 점진적인 개선

230918클린코드7주차: 14장 점진적인개선 이번 주차에는 14장 "점진적인 개선"을 읽었습니다. 처음에 저자는 명령행 인수 분석을 위한 깔끔한 클래스인 "args"를 보여주고, 깔끔한 클래스가 어떤 지저분한 모양새로 시작헀으며, 깔끔해질 때까지 거친 과정을 볼 수 있었습니다. 14장 점진적인 개선 명령행 인수부터 막혔습니다. 명령행 인수가 무엇인지 몰라서 arg 클래스가 어떤 역할을 하는 것인지 이해하기 어려웠습니다. 찾아보니 자바에서는 한 파일의 코드가 "public void main"으로 선언된 클래스로 시작하고, 해당 main 클래스의 초기화 인수를 편집기나 여러 환경 설정도구를 통해 넣을 수 있다고 합니다. 그 인수가 바로 명령행 인수입니다. public static void main(Stri..

클린코드 6주차: SerialDate 리팩터링, 냄새와 휴리스틱

230912 클린코드 6주 차 클린코드 북스터디를 하며 작성한 독후감 겸 요약글입니다. 이번주에는 16장 Serial Date 리팩터링, 그리고 17장 냄새와 휴리스틱을 읽었습니다. 16장에서는 JUnit에 이어 또 다른 라이브러리 코드를 분석 및 개선하고, 17장은 지금까지 책에서 다룬 기법을 총정리합니다. 이제 책의 거의 마지막 부분을 달려가고 있네요. 최근에 리액트 스터디를 시작해서, 책에서 읽은 기법들을 하나하나 검토하고 개선하여 적용해 볼 생각에 힘이 납니다. 16장 Serial Date 리팩터링 JUnit 들여다보기에 이어서 또 다른 클래스를 리팩터링 하는 쳅터입니다. 리팩터링 대상: David Gilbert - SerialDate Class https://www.jfree.org/jcommo..

클린코드 5주차: 동시성, 그리고 JUnit

230904 클린코드 5주차 클린코드 북스터디를 하며 작성한 독후감 겸 요약글입니다. 5주 차 동안 13장인 "동시성"과 15장 "JUnit 들여다보기"에 대해 읽었습니다. 13장 동시성 동시성 개념과, 동시성 코드를 깨끗하게 작성하는 방법을 이야기합니다. 저는 이 책이 일종의 디자인패턴/소프트웨어 공학적 지식을 다루는 것으로만 알았는데 OS개념이라고 할 수 있는 동시성에 대한 설명이 나와 반갑기도 하고 신기하기도 했습니다. 책을 읽고 보니 사실 동시성이야말로 클린코드에서 다루어야 할 부분이더군요. 일반 싱글 스레드 프로그램보다 코드가 복잡하고, 기상천외한 오류가 많이 발생하기 때문입니다. 이 장의 직접적인 코드예제는 많이 적어서 아쉬웠지만 그래도 동시성 개념에 대한 공부 방향과 테스트 코드 작성 방법에..

프로그래머스: 가장 먼 노드 javascript

문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/49189 함수 설명 노드의 개수 n과 각 노드 간 연결을 나타낸 두 개의 숫자로 구성된 배열을 ex) [1, 3] 성분으로 갖는 배열 vertex 를 인자로 입력받습니다. 노드 1로부터 각 노드로 가는 최단거리를 구했을 때, 최단거리 중의 최곳값에 해당하는 노드가 몇 개인지 반환하는 문제입니다. 정답코드 const solution = (n,vertex) => { const nodeAndVertex = new Map(); vertex.forEach(([from,to])=> { switch(nodeAndVertex.has(from)){ case true: nodeAndVertex.set(from..

코딩테스트 2023.08.31

프로그래머스 동적계획법: 정수 삼각형 javascript

문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/43105 함수설명 함수는 완전 이진 트리 자료구조를 나타내는 2차원 배열 triangle을 입력으로 받습니다. 각 성분배열은 트리의 한 레벨을 의미합니다. 루트 노드부터 출발하여 리프 노드로 가는 경로에서, 노드에 있는 값들을 모두 더하여 구할수있는 "경로 합"값중 최댓값을 반환해야 합니다. 정답 코드 const solution = (triangle) => { const depth = triangle.length; const memo = [...Array(depth)].map((x,i) => [...Array(i + 1)].fill(0)); triangle[depth -1].forEach((..

코딩테스트 2023.08.30

프로그래머스 동적계획법: N으로 표현 javascript

문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/42895 함수설명 함수는 두 자연수 N과 number를 입력으로 받습니다. N은 1 이상 9 이하의 수입니다. 숫자 N과 사칙연산만을 사용하여 number를 만드는데 필요한 N의 최소 개수를 반환해야 합니다. 만약 그 수가 8보다 크다면 -1을 반환합니다. 정답코드 const solution = (N, number) => { if (number === N){ return 1 } const memo = [...Array(9)].map(x => new Set()); memo[1].add(N); for (let i = 2; i < 9; i++){ memo[i].add(Number(`${N}`.re..

코딩테스트 2023.08.29

클린코드 4주차: 단위테스트, 시스템, 그리고 창발성

230829 클린코드 4주 차 클린코드 북스터디를 하며 작성한 독후감 겸 요약글입니다. 로버트 C. 마틴- 클린코드 이번주차에는 9장 단위테스트, 11장 시스템 그리고 12장 창발성 쳅터를 읽었습니다. 테스트 코드작성 행위에 대한 개념이 바뀌었습니다. 그동안은 테스트 코드라는 도구의 장점에 대해 점차 알게 되었다면, 이번 주에는 테스트 코드라는 것을 바라보는 다른 시각을 갖게 되었습니다. 현업에서 일하는 스터디원분들과 나눈 대화와 책의 내용을 통해 테스트 코드는 단순히 유용한 도구가 아니라, 개발과정에서 절대 빠질 수 없는 필수요소라고 생각하게 되었습니다. 그렇게 생각하는 이유는 다음과 같습니다. 1. 테스트 코드는 프로그램의 기획서나 설계도의 역할을 합니다. 한번 완성된 테스트 코드는 특별한 사건이 없..