전체 글203 [클린코드] 4일차 - 의미 있는 이름 짓는 시간은 유의미하다. 클린코드 4일차 - 의미 있는 이름 짓는 시간은 유의미하다. 클린코드 4일차 (p. 24~34(2장) ) 2 의미 있는 이름 1. 그릇된 정보를 피하라 - 여러 계정을 그룹으로 묶을 때, 실제 List가 아니라면 명명에 조심해야한다. (accountList → accountGroup/Accounts) - 프로그래머에게 List는 특수한 의미. - 유사한 개념은 유사한 표기법 사용 - 일관성이 떨어지는 표기법은 그릇된 정보 2. 의미 있게 구분하라 - 연속적인 숫자를 덧붙은 이름 X // 연속적으로 덧붙인 이름은 그릇된 정보를 제공하는 이름도 아니고, 아무런 정보를 제공하지 않음!! public static void copyChar(char a1[], char a2[]){ for (int i = 0; i .. 2023. 10. 27. [클린코드] 3일차 - 의미 있는 이름은 어떻게 지을까? 클린코드 3일차 - 의미 있는 이름은 어떻게 지을까? 클린코드 3일차 (p.13~23(1장) / 21~23(2장) ) 2 의미 있는 이름 의도를 분명히 밝혀라 - 의도가 분명한 이름이 정말로 중요하다. - 더 나은 이름이 떠오르면 개선해라. 다음 질문에 모두 답할 수 있는 이름이어야 한다. 존재 이유는? 수행 기능은? 사용 방법은? // Bad int d; // 경과 시간(단위: 날짜) // Good int elapsedTimeInDays; int daysSinceCreation; int daysSinceModification; int fileAgeInDays; 변수 d는 무슨 의도로 작성됐는지 모를 변수명이다. n일 뒤에 보면 나도 모를 작명 말고 타인이 봐도 알 법한 작명이 필요하다. 측정하려는 값과.. 2023. 10. 25. [클린코드] 2일차 - 장인정신 길들이기 및 클린코드 고생길 시작 클린코드 2일차 - 장인정신 길들이기 및 클린코드 고생길 시작 클린코드 2일차 ( p.1~12(1장) ) 클린코드 3일차 ( p.13~23(1장) / 21~23(2장) ) 0 들어가면서 난관에 부딪힐 때 옳은 문 뒤에 있으려면 어떻게 해야 할까? 답은 장인 정신이다. 장인 정신을 익히는 과정은 두 단계로 나뉜다. 바로 이론과 실전이다. 첫째, 장인에게 필요한 원칙, 패턴, 기법, 경험이라는 지식 습득 둘째, 열심히 일하고 연습해 지식을 몸과 마음으로 체득 단순히 원칙과 패턴을 안다고 깨끗한 코드가 나오지 않는다. 고생을 해야한다. (즉, 고생하며 읽어야하는 책) 그 책의 흐름을 보고자 하면 목차를 봐야한다. 이 책은 총 세 부분으로 나눠진다고 한다. 1) 깨끗한 코드를 작성하는 원칙, 패턴, 실기 - 코.. 2023. 10. 25. PUB/SUB 구조와 Redis, Kafka를 이해하기 위한 과정 PUB/SUB 구조 pubsub을 어렵게 받아들일 필요가 없다는 것을 이해하고 글을 써본다. PUB/SUB의 구조는 유튜브 생태계로 이해해보자. 우리 곁에서 가장 쉽게 Publisher와 Subscriber의 관계를 볼 수 있는 곳은 바로 유튜브이다. 그럼 유튜브의 생태계에 빗대어 보자. Publisher는 유튜버, Channel은 유튜브 채널, Event는 유튜브 영상, Subscriber는 구독자라고 생각하면 이해하기 쉽다. 유튜버(=Publisher)는 자신의 유튜브 채널(=Channel)에 유튜브 영상(=Event)을 생성 및 업로드한다. 여기서 유튜브 영상을 하나의 이벤트(메세지)라고 이해할 수 있다. 특정 Channel을 구독하고 있는 구독자(=Subscriber)는 Channel에 올라온 유.. 2023. 10. 16. [Spring error] Port 24000 was already in use Port (port number) was already in use기록하지 않으면 단기 기억으로 지나간다. - 봄.. - nestat - 네트워크 접속, 라우팅 테이블, 네트워크 인터페이스의 통계 정보를 보여주는 도구 1. netstat -anv : 네트워크 상태 및 연결을 나열하는 명령이다. netstat = network status !a 옵션은 모든 연결 상태를 표시 (all)n 옵션은 IP주소와 포트 번호를 숫자 형식으로 표시 (number)v 옵션은 보다 자세한 정보를 표시따라서 이 명령은 모든 네트워크 연결에 대한 자세한 정보를 제공한다. 2. grep LISTEN : netstat의 결과 중에서 "LISTEN" 상태인 연결만 필터링하는 부분이다. grep = Global Regular E.. 2023. 10. 15. [Git] .gitconfig에 alias 설정하기 .gitconfig에 alias 설정하기 + 만약 나중에 다른 컴퓨터를 사용해야할 경우, Git 관련 설정을 위한 글이다. alias은 무엇인가? - alias이란, git 명령어에 대한 사용자 정의 별칭(alias)을 설정하는 것이다. - 이 별칭은 git 명령어를 더 간결하게 실행하고 원하는 형식으로 로그를 출력하는 데 사용된다. .gitconfig에 alias 설정하는 방법 1. home 디렉토리에서 cat .gitconfig로 .gitconfig 파일 확인하기 2. vi .gitconfig 를 통해 아래 코드 저장하기 [alias] lg = log --graph -15 --abbrev=7 --decorate --date=relative --format=format:'%C(bold red)%h%C(.. 2023. 9. 30. [Typescript] Promise - async, await 범위 설정하기 Promise - async, await 범위 설정하기 아래 글은 async와 await 범위 설정에 따라 결과값이 달랐던 부분을 기록하기 위한 글이다. 두 코드 모두 HTML5 Canvas에서 생성된 이미지를 블롭(blob) 형태로 만들어서 AWS S3에 업로드하는 기능을 수행한다. 수정 전 (uploadMaskingImageFile 함수) // canvas 위의 masking된 이미지를 s3에 업로드하는 함수 const uploadMaskingImageFile = async () => { const image = new Image(); if (canvasRef.current && imageData) { const canvas = canvasRef.current; const context = canva.. 2023. 9. 8. [Git] git stash 사용해서 하던 작업 저장하고 다시 꺼내기 목차 1. git stash로 임시 저장하기 2. git stash list로 저장된 내용 확인하기 3. git stash apply로 저장된 내용 불러오기 💡git stash 사용해서 하던 작업 저장하고 다시 꺼내기 💡 VS code에서 작업하고 있던 브랜치가 아닌 다른 브랜치에서 작업해야하는 경우가 있다. 현재 작업하고 있던 브랜치에서 변경된 내용을 커밋하기엔 애매하고, 다른 곳에 복사해두기엔 변경 내용이 많은 경우 곤란하다. (*커밋하기 애매한 이유: "커밋"이라는 과정은 문제없이 작동하는 코드에 대해서만 진행) 이 경우 로컬 저장소에서 임시로 저장할 수 있는 명령어가 바로 git stash이다. 1. git stash로 임시 저장하기 git stash를 사용하여 저장하면, 스택(Stack) 형식으.. 2023. 7. 25. [React] useRef에 대한 이해와 특정 DOM 조작 (부제: useRef로 특정 DOM 선택) 목차 1. 브라우저에서 Javascript의 존재 이유는 DOM 조작이다. 2. Javascript로 특정 DOM을 선택하는 방법은? 3. React에서는 특정 DOM을 어떻게 조작하는가? 4. React의 가상 DOM과 상호 작용하며 실제 DOM 조작하기 4-1. useRef 예제: useRef와 useState 함께 활용 5. useState와 useRef의 실질적인 차이점은? useRef에 대한 이해와 특정 DOM 조작 (부제: useRef로 특정 DOM 선택하기) (* 이해의 흐름을 바탕으로 작성한 글이기에 지식을 뽑기보다 천천히 정독함을 권장해드립니다. ) 필자는 useRef가 useState와 useEffect처럼 한 번에 이해되지 않았다. 드디어 이해했기에 글을 작성해본다. TODO: "특정.. 2023. 7. 18. gif 파일과 비디오 파일 중 어떤 파일이 용량이 클까요? 동일 품질이라고 가정했을 때, gif 파일과 비디오 파일 중 어떤 파일이 용량이 클까요?내가 들었던 질문 중에 굉장히 신박했던 질문 중 하나였다..어쩌면 누구에겐 당연하지만, 어쩌면 누구에겐 (짧은 시간 동안) 많은 생각을 하게 되는 질문이라고 생각했다.(후자가, 바로 나였다..하지만 느낌으로 말한 나..) gif 파일흔히 우리가 움짤(움질이는 짤방)이라고 알고 있는 친구, 바로 gif 이다. 1. gif 파일은 Graphics Interchange Format의 약자로, 이미지 파일 형식이다. 2. gif는 이미지들을 여러 프레임으로 나누고 각 프레임 사이의 변화를 저장하여 애니메이션 효과를 만든다.3. gif 파일은 무손실 압축 방식을 사용하여 이미지 데이터를 압축한다. *무손실 압축 방식은 각 프.. 2023. 7. 11. [Browser] LocalStorage와 SessionStorage의 차이 [Browser] LocalStorage와 SessionStorage의 차이브라우저의 로컬 스토리지와 세션 스토리지에 대한 정리를 시작해보자.프론트든, 백이든 필히 질문가능한 개념이다. 바로 내가 받았던 질문이었기 때문이다. "혹시 LocalStorage와 SessionStorage의 차이를 아시나요?" 먼저, 차이를 알고자한다면 이들의 공통점이 있다는 얘기이다.LocalStorage(로컬 스토리지)와 SessionStorage(세션 스토리지)의 공통점은 웹 브라우저에 데이터를 저장하는데 사용하는 객체이다.이 둘의 차이점은 LocalStorage(persistent)와 SessionStorage(temporary) 이다. LocalStorage(로컬 스토리지)은 사용자 데이터 유지 가능하고, 탭 공유도 .. 2023. 7. 10. [기술면접] RB Tree(Red-Black Tree)에 대한 질문 모음 1. RB Tree란 무엇인가요?- RB tree는 데이터를 저장하거나 검색하기 위한 자료구조로, 이진 검색 트리입니다. 루트에서 리프까지의 경로에 나타나는 노드의 색깔을 제한함으로써, 트리의 균형을 근사적으로 유지합니다. - BST의 삽입, 삭제 연산과정에서 발생할 수 있는 문제점을 해결하기 위해 만들어진 자료구조입니다. - node 구조체의 parent, color, key 멤버들의 값을 확인하며 규칙을 지킴으로써 양쪽의 균형을 맞추게 됩니다. 회전하는 것도 연산이 들어가기 때문에 완전한 균형 알고리즘은 아닙니다. 2. RB Tree의 작동 원리는 어떻게 되나요?- RB 트리는 다음 다섯 가지 속성을 만족해야합니다. 모든 노드는 빨간색, 검은색 둘 중 하나이다. 루트 노드는 검은색이다. 모든 리프(N.. 2023. 7. 4. 이전 1 2 3 4 5 6 7 ··· 17 다음