본문 바로가기

전체 글

(43)
251112 오늘 배운 것재귀함수는 base case가 없다면 무한히 실행된다.재귀함수는 호출자 함수 위에 피호출자 함수가 쌓이는 LIFO구조다.CORS가 발생하는 곳은 브라우저이다. 서버에서 request하는 것은 CORS Error가 발생하지 않는다.노트 필기와 디지털 기기에 기록하는 것, 둘다 하는 것이 이롭다.노트 필기는, 암기를 위해서가 아니라 내 언어로 알게 된 것을 정리하거나 그림을 그리고, 이를 디지털 기기에 박제하는 것으로 내 실력을 올릴 수 있다.노트나 디지털 기기를 사용해서 배운것을 정리하는 것은 주가 아니다. 한줄이라도 더 개발하는게 나에게 맞다.정리는 필요하지만, 결과물로 보이도록 한다.기술, 개념을 배울 때에는 제 1원리, 이것이 도대체 무슨 일을 하는건지, 어떤 패턴을 갖고 있는건지 아는게..
251111 오늘 배운 것nand2teris의 레지스터의 명세를 이해했다.if load(t) then out(t+1) = in(t) , else out(t+1) = out(t)t시점에 load값이 true라면, t+1시점의 out의 값은 t시점의 in의 값이다. t시점의 load값이 0일 경우, t+1시점의 out의 값은 t시점의 out의 값이다.load(t)가 무슨 뜻인지 해깔렸는데 이해가 됬다.fastapi에서 logger.error, warning, info를 사용해서 '명시적'으로 로그를 출력하지 않는다면 액세스 로그만 나온다는 것을 새삼 깨달았다.(access log는 api endpoint + status code형식이다.)오늘 해결한 문제access token을 갱신할 때 race condition이 발..
251110 오늘 배운 것BigO표기법에서 복잡도는 인풋크기에 따른 시간 혹은 공간의 변화량이라는 것을 알았다.인풋이 변하는 것에 따라 연산량, 메모리소비량이 달라지는 것에 주목하자.O(1)이라는 것은 빠르다는 뜻이 아니라, 인풋 크기에 상관없이 일정한 연산량, 메모리소비량이 걸린다는 것이다.알고리즘은 최선의 경우, 평균의 경우, 최악의 경우 모두 고려할 줄 알아야한다. 그리고 이 셋중에 고른다면 최악의 경우를 골라야한다.google apps script는 종속형 스크립트와 독립형 스크립트가 있다.종속형 스크립트는 spread sheet에 직접 연결되는 것이다.종속형 스크립트는 spread sheet와 M:1관계다.spread sheet별로 google apps script가 존재하기 때문에 유지보수성은 떨어진다.독..
251108 오늘 배운 것BigO가 무엇인지 배웠다.알고리즘의 계산 복잡도를 묘사하기 위한 표기법이다.시간 복잡도(input size에 따라 알고리즘이 필요로 하는 시간량), 공간 복잡도(input size에 따라 알고리즘이 사용하는 메모리량)오늘 해결한 문제내 github에 leetcode, github의 status를 표시하도록 설정했다.내일 개선할 점포기하지 말고 행동을 계속하자.하루하기로 정한 것은 전력을 다해 하도록 한다. 시간이 부족했다면, 되돌아보고 양을 조절하자.생각하고 싶은 거, 이루고 싶은 거를 하기 위해서는 시간이 많이 필요하다.전략적으로 도전해보자. 안되면 내가 정말 필사적으로 노력했다면 그만큼 쌓인게 있을테니 또 다른 길을 갈 수 있을 거다.스스로 생각하기에 올바른 것을 하자.식습관, 자세, ..
251106 오늘 배운 것개발에 정답은 무수히 많다. 자신이 조사한 것을 바탕으로 정답을 고르자.공식 문서라도 검증을 하지 않으면 맞지 않을 수 있다는 것을 알았다.오늘 해결한 문제유저의 화면 조작속도가 너무 빠르면 스크래핑으로 pdf를 취득할 수 없는 경우도 생긴다는 것을 알았다.debounce전략을 사용해서 일정시간동안 화면이 변동하지 않고, pdf를 찾는다면 문제없다는 로직을 짜서 해결했다.내일 개선할 점회사에서 드디어 chrome extension을 배포한다. debounce전략을 사용해서 문제를 해결했는데 pdf가 없는 메일에서 timeout이 발생하는 소소한 문제점이 있어서 오전에 이를 수정하도록 하자.생각chrome extension을 개인개발로 만드는 중인데 message passing부분이 AI가 알..
251105 오늘 배운 것다른 사람이 불가능하다고 하더라도 제대로 다시보면 해결 할 수 있다는 것을 알았다.스크래핑이기 때문에 메일 순서를 특정 못한다고 하는데 화면에는 분명 순서대로 나와있다. 인덱스와 같은 직접적인 순서는 표시되지 않을지언정 코드에는 이는 반영되니까 특정할수 있을거라고 생각했고 실제 해냈다. 포기하지 않는게 중요하다. 침착하게 가정을 내리고 행동한다.오늘 해결한 문제스크래핑으로 gmail에서 파일을 취득하는 것을 거의다 성공했다.내일 개선할 점pdf가 가끔 취득되지 않는 경우가 있었다. DOM이 로딩되기 전에 취득을 해서인 것 같기도 하다. 이 부분을 내일 수정한다.생각개인시간에 직접 코드를 타이핑하는 시간이 늘었다. AI를 사용하면 편리하지만 회사의 코드를 리뷰하거나 자신의 생각을 제대로 표현하..
251104 오늘 배운 것브라우저에서 위임받은 gmail account의 gmail에 있는 pdf를 gmail api로 취득하기 위해서는 domain wide delegation이 필요하다는 것을 알았다.하지만 DWD에서는 특정 gmail account가 아닌, 회사 전체의 인터넷 주소인 도메인에 대하여 권한을 위임하는 것이었다.gmail read only를 특정 주체에 위임한다고 하면, 회사 전체의 gmail을 읽을 수 있다는 뜻이다.그런 커다란 권한을 service account에게 주는 것은 너무 위험하므로 관뒀다.회사의 운용방식을 생각하면, 단순히 scraping으로 대응하는 것이 맞다고 생각했다.chrome extension에서 service worker(background.js 또는 ts)의 존재의의를 이..
251103 오늘 배운 것chrome extension에서 사용하는 chrome.identity 는 위임받은 gmail account에 대해서는 token을 발급하지 않는다.자신의 account와 위임받은 account 2개가 브라우저상에서 사용가능한 상태라고 할지라도 발급되는 토큰은 default로 설정한, 자신의 account이고, 이 account의 토큰은 위임받은 gmail account의 mail에 접근할 수 없다.위임받은 메일을 gmail api에서 데이터를 취득 가능하게 하려면 GCP console에서 애플리케이션용의 service account(client id, client secret)을 만들고, google workspace에서 관리자가 service account에게 위임할 gmail accou..