'코딩 아카이브' 시리즈이번주에 본 개발관련 자료들 #1

배진오

@baealex

소비적인 일보단 생산적인 일을 좋아합니다.

BLOG

알고리즘 공부, 어떻게 해야하나요? #

알고리즘을 해결하는 실력을 키우려면 1.구현력 2.문제해결능력 3. 배경지식에 대한 능력을 향상시켜야 한다. 또한 글의 저자는 컴퓨팅적 사고력을 기르기 위한 문제로 BOJ 모든 '별찍기'와 'n과 m' 시리즈를 풀어보길 권하고 있다.

  1. 구현력 : '대충 어떻게 짜라는지 알겠는데 코드로 못 만들겠다' 이런 생각이 든다면 이 능력이 부족한 것이다. 구현력을 키우려면 내가 무엇을 만들고자 하는지 어떤 값을 입력받고 어디에(자료구조) 저장하고 어떤 과정을 거쳐 결과를 도출할 것인지 생각하는 능력을 키워야 한다.
  2. 문제해결능력 : 내가 알고있는 알고리즘, 자료구조, 다양한 테크닉등을 지금 당면한 문제에 맞게 변형하여 적용하는 것. 가장 향상시키기 어려운 부분이라 개인의 피나는 노력이 필요하다. '어떻게 접근해야 할 지 모르겠다'라는 생각이 든다면 이 능력이 부족한 것이다.
  3. 배경지식 : 기초적인 프로그래밍 문법 및 알고리즘, 자료구조 등을 아는 것 선형대수학과 확률 등과 같이 기본적인 수학적 지식을 아는 것과 같은 능력 키우기 가장 쉬운 능력이다. '이게 뭔 소리지'라는 생각이 든다면 이 능력이 부족한 것이다. 이 글의 저자는 언어의 문법, 복잡도, 배열, 트리, 그래프, 힙, BST, 큐, DFS, BFS, 정렬, 백트래킹, DP, 분할정복, 최단거리를 학부 수준의 아주 기본적인 배경지식으로 언급하고 있다.


Introducing Cloudflare Workers #

클라우드 플레어

클라우드 플레어를 돌아다니다 Worker라는 항목이 눈에 들어왔다. 처음 본 것 같았는데 꽤나 오래전부터 존재해온 기능인 것 같다. 클라우드 플레어 워커도 서버리스의 일종인가 싶었으나 클라우드 플레어가 적용된 도메인에 접근하기 전에 요청을 가로채는 것에 큰 의미를 두는 것 같다. 사용자가 직접 캐싱을 시도하여 캐시 히트율을 높일 수 있으며 응답전에 쿠키를 분석해서 아주 손쉽게 나이트 모드 등을 구현할 수 있을 것 같다.


Github Action으로 매일마다 브리핑 받기! #

깃허브 액션이 어디에 활용되는 건지 모르고 있었는데 이 글을 보고 흥미를 가지게 되었다. 블렉스의 테스트 자동화도 이 깃허브 액션을 활용하면 완전 자동으로 수행할 수 있을 것 같다. 테스트 뿐 아니라 가벼운 크롤링을 활용한다면 흥미로운 프로젝트로 만들 수 있을 것 같다. 깃허브 액션을 수월하게 다루기 위해선 도커에 대해서 좀 더 공부해야 할 것으로 보인다.


BOOK

이펙티브 자바스크립트

개발관련 서적으로 명성이 높은 이펙티브 시리즈. 나의 경우엔 단 한 번도 접해본 적이 없었고 이 자바스크립트 책을 처음 접했다. 이 책엔 자바스크립트를 코딩하면서 주의해야 할 점들을 나열되고 있는데 몰랐었던 부분을 정리하면 아래와 같다. 더 많은 내용이 존재하지만 아직 입문자 수준에 가까운 나에겐 이해되지 않는 항목들이 많았다.

  • 프로토타입을 활용하라

자바스크립트의 경우에는 같은 클래스로 생성된 다른 객체라도 클래스 내부에 공통 메서드가 구현되어 있으면 객체의 수 만큼 공통 메서드도 생성되는 셈이다. 프로토타입으로 메서드를 생성하면 다수의 객체의 생성되더라도 하나의 메서드를 공유한다.

  • == 과 ===의 차이

== 연산은 암묵적인 형변환을 진행한다. === 연산은 같은 형태의 변수를 비교하는 거라면 == 연산과 동일하게 작동한다. 형변환이 전혀 필요없는 경우 === 연산으로 비교하면 가독성 향상에 도움되겠다.

  • Array 생성자 대신 배열 리터럴을 사용하라

배열을 생성할 때 Array(1, 2, 3, 4, 5)와 같이 생성해도 되지만 [1, 2, 3, 4, 5]와 같이 선언하라는 의미다. 개인적으로 전자와 같은 문법을 좋아하는데 배열 생성자가 의도하지않은 결과를 반환하지 않을 수 있다고 한다.

  • 무모한 몽키 패칭을 지양하라

몽키패치란 런타임 중에 소스코드를 변경하는 작업이다. 이미 선언된 자바스크립트 프로토타입 오브젝트의 내용을 변경하는데 이러한 몽키패치는 프로그래밍 안티 패턴으로 손꼽힌다. 몽키패치 뿐만 아니라 기본적으로 정의된 내용을 변경하지 않을 것을 권장하고 있다.


OPEN SOURCE

GoDot #

게임 엔진인데 유니티라는 이미 훌륭한 쉬운 엔진이 있음에도 고닷은 스스로가 '획기적인 아키텍처다. 엄청 쉽다.' 이런 표현으로 홍보를 하고있어 상당히 궁금해졌다. 또한 스크립트 문법이 파이썬과 유사하여 일단 사용해보고 싶은 마음이 생긴다. 사용해보고 유니티와의 차이점 등을 탐구해야겠다.


free-for.dev #

이름대로 개발을 위한 무료 도구들을 모아놓은 것이다. 부분 무료인 항목들도 포함되어 있으나 작은 규모거나 학습 용도로 활용한다면 부담없는 정도라고 생각된다. 나도 언젠가 무료 도구만을 이용해서 멋진 프로젝트를 만들고 싶은 욕심이 있다. 앞서 말했다시피 작은 규모거나 학습 용도로 사용하기 적합한 수준이므로 성능이나 구조에 대해 각별히 신경써야한다. 엔지니어링 능력 향상에 도움이 되리라 생각한다.


YOUTUBE

연령대별 해야할 일 #

  • 20 ~ 30대 : 열심히 배우고 남들에게 유용해져 더 배우자
  • 30 ~ 50대 : 내 가성비를 높여서 돈을 쌓자
  • 50대 : 돈으로 돈을 쌓아 비굴하게(?) 살지 말자

난 요즘 회사에서 유용해지려고 노력하고 있었나? 시키는 일이 흥미롭거나 하다보니 재밌으면 열심히 했었는데 흥미가 생기지 않으면 지루해 했던 것 같다. 앞으로 어떤 일이 어떻게 나에게 도움될지 모르니까. 재미없더라도(?) 열심히 하자!


퀄리티 안나오는 사람 특징 #

"일을 왜 이따위로 처리하지?" 라는 생각이 드는 사람들 그 사람들의 특징은 "실수를 만들 여지를 없애지 않는다." 사회가 발전하듯 개인도 발전이 이뤄져야 한다. 실수를 했으면 그로 인해 더 배워야 한다. 실수를 방어하거나 예방하기 위해 노력해야한다. 남한테 피해가지 않도록 해라.


믿음과 학습속도 #

9분부터 본격적인 내용으로 진입한다. 학습을 지도하는 사람을 믿는 만큼 학습속도가 향상된다는 내용이다. 이 영상에 매우 공감갔던 부분은 내가 대학교를 다닐때 정말 신뢰하지 않았던 교수님이 있었다. 난 그 교수의 말을 들으려조차 하지않았다. 그래서 당연히 좋지 않은 성적을 얻었다. 다시 그 교수님을 수업으로 만났을 때 걱정이 심했다. 성적은 잘 받아야하므로 내 신뢰하지 못하는 근거를 일단 배제하여 일단 믿어보려 했다 들어보려 노력했다. 그리고 좋은 결과를 얻게 되었다. 그래서 이 영상을 보고 확신이 섰다. 앞으로 나에게 어떤 도움을 주려는 사람이 있다면 최대한 그 사람을 믿어야 겠다. 그 사람이 거짓말을 하더라도 일단은 믿자. 나중에 거짓말임을 알게 되겠지. 알려주는 사람이 여려명이라면 선택과 집중을 잊지말자.

'코딩 아카이브' 시리즈

개발과 관련된 감각을 유지하기 위해 새로운 자료던 오래된 자료던 찾아보고 본 것에 대한 생각을 기록하기 위해 만든 시리즈. 매주 일요일 밤 10시에 업로드하는 것이 목표.
😥 작성된 댓글이 없습니다!
댓글을 작성하기 위해 로그인이 필요합니다.