기록일지
-
6월, 의욕 없는 이유
"의욕 없는 이유"번아웃인가. 의욕이 없다. 코드가 눈에 안 들어온다. 지금 프로젝트는 마무리해야 한다는 압박에 머리가 지끈거린다. 지금 챗봇을 만들고 있다. 이미 작년에 만든 걸 새롭게 수정하고 있는데 그 과정이 심적으로 힘들다. 개편 예시안이 없어서 그런지 작업 방향성이 명확하지 않다. 코드 작성은 수월한데 봇을 위한 프롬프트 작성할 때는 진짜 정신 나간다. 코드는 온전히 내가 통제할 수 있어도 프롬프트 결과는 통제할 수 없다. 내가 설정한 틀 안에서 동작하기를 기도해야 한다. 결과물에 대한 불안정성 때문에 스트레스가 쌓인다. 어느 정도 통제해도 결국 서비스로 사용할 수 없다는 것을 알게 되었을 때, 그 허무함과 무기력함은 말도 안 된다. 시간을 낭비했다는 것에 내 스스로가 원망스럽다. 인증된 사용..
2025.06.28 23:15 -
5월, 꼬리에 꼬리를 무는 과제
"꼬리에 꼬리를 무는 과제"어디서 꼭지가 터졌는지 서류 합격 소식이 물밀듯 들어온다. 지원한 지 몇 주나 지나서 온 거 보면 그전까지 마음에 드는 사람이 없었나 보다. 그렇게 한 번의 기회를 얻었다. 신나게 다음 전형을 진행했다. 일주일 동안 과제를 구현했다. 3개 중에 가능한 과제를 구현하는 것이었다. 다 하면 내 실력을 뽐낼 수 있지 않을까 생각했다. 일주일 동안 8-8로 살았다. 헬스장도 안 갔다. 아니 못 갔다. 주말에도 편히 못 쉬었다. 삶이 점점 피폐해지는 게 느껴졌다. 회사 업무였다면 정해진 명세서에 따라 작업하면 되지만 과제는 명세서를 자세히 알려주지 않는다. 온전히 본인 판단으로 작업해야 한다. 이게 맞는지, 이렇게 해도 되는지, 기준은 온전히 채용 담당자에게 있고 내가 그걸 설계해야 한..
2025.05.31 15:10 -
4월, 주말이 더 이상 기대되지 않는다
"주말이 더 이상 기대되지 않는다." 평일을 보낼 때가 마음이 더 편하다. 이력서를 수정하고 지원 공고를 찾아볼 때마다 마음이 가볍지 않다. 마감일순, 최신순으로 찾아봐도 대부분 봤던 공고들이다. 지원할 기업은 많지 않고 지원자들은 많다. 이럴 때마다 '이번에는 될 거 같아'라는 열정이 사그라든다. 취업 준비 기간이 평균 6개월이 넘어간다는데 이 기간을 어떻게 버티는 건지. 취업자들은 대단하다.월요일이 되면 새로운 성과을 낼 열정으로 시작하지만, 주말이 되면 다시 사그라든다. 가끔 채용 공고를 보면 '이 기업은 나하고 딱 맞다'라는 생각이 들 때가 있다. 운명이라고 느껴진달까. 한눈에 반한 느낌이다. 그만큼 이 공고를 본 건 우연이 아니라는 거지. 그렇게 열심히 입사동기를 작성하고 또다시 서류 지원을 ..
2025.04.27 20:30
Frontend
-
탈취자 입장에서 바라본 bcrypt 해싱
bcrypt는 동일 입력에도 매번 다른 해시 생성해공격 어렵지만, bcrypt 설정이 적절하지 않으면 취약 bcrypt 알고리즘 내용 기반으로 작성했으며 bcrypt 라이브러리 동작과 차이가 있을 수 있습니다. bcrypt란 무엇일까?bcrypt는 평문 비밀번호를 복호화 불가능한 해시로 변환하는 단방향 암호화 알고리즘이에요.여기서 핵심은 salt라는 값을 함께 써서, 동일한 입력값(비밀번호)이라도 매번 다른 해시를 생성하는 점이에요.해시: 입력을 고정 길이의 문자열로 변환하는 단방향 함수 공격자가 bcrypt 해시를 탈취했다면?공격자가 할 수 있는 건 두 가지 방식이 있어요.- 무차별 대입 공격 (Brute-force): 가능한 모든 비밀번호 조합을 하나씩 대입- 레인보우 테이블 공격: 미리 만들어둔..
2025.07.20 16:30 -
then()과 await, 코드 실행 순서가 다른 이유
매서드 별 비동기 함수 내 코드 흐름 차이then() 메서드는 callback으로 등록되며await는 프로미스 반환 값을 기다림 배경이전 글 노드에서 살펴보는 동기, 비동기 흐름에서 비동기 함수 예제를 구성하다가 await와 then() 메서드가 서로 다르게 동작한다는 점을 발견했어요.이번 글에서는 그 차이점을 예제를 통해 알아볼게요. 이전 예제 : 비동기 처리 방식 차이// then() 비동기 처리console.log('요청 시작');async function asyncFetch() { fetch('https://jsonplaceholder.typicode.com/todos/1') .then((res) => res.json()) .then((data) => { console.lo..
2025.07.05 13:55 -
노드에서 살펴보는 동기, 비동기 흐름
자바스크립트는 동기와 비동기 방식으로 작동비동기는 흐름을 멈추지 않고 다음 작업 진행이벤트 루프 덕분 의문점노드를 공부하면서 문득 궁금한 점이 생겼어요.// 파일 읽기 : 동기 처리import { readFileSync } from 'node:fs'function read() { const file = readFileSync('./package.json', { encoding: 'utf-8' }) console.log(1) console.log(file)}read();// 1// package.json 파일 출력// 파일 읽기 : 비동기 처리import { readFile } from 'node:fs/promise' async function asyncRead() { const file = awa..
2025.06.29 10:55 -
이메일만으로 인증되는 Supabase 비밀번호 재설정의 구조적 문제
Supabase 비밀번호 재설정 요청 시 인증 토큰이 부여되며비밀번호를 변경하지 않아도 인증이 유지된다.챗봇 기능을 도입하기 위해, 관리자와 일반 방문자를 명확히 구분할 필요가 생겼다.이를 위해 기존에 사용하던 Supabase에서 Auth 기능을 기반으로 인증 시스템을 구축했다. 이메일 기반 로그인 구현인증 수단으로 이메일과 비밀번호를 이용한 로그인 방식을 도입했다. Supabase는 이 방식을 기본적으로 지원하고 있어 손쉽게 로그인 기능을 구현할 수 있었다. 비밀번호 재설정 구현 중 발생한 의문점다음 단계로 비밀번호 재설정 기능을 구현하는 과정에서 보안과 관련된 의문이 생겼다.Supabase 공식 문서에 따르면, 사용자가 비밀번호를 재설정하려면 이메일 주소를 입력해야 했고, 입력된 이메일로 비밀번호 재..
2025.06.07 15:55 -
링크? 텍스트? 프롬프트에 가장 효과적인 정보 주입 방식
아직 링크를 통한 정보 주입은 AI로부터 정확한 답변을 얻을 수 없다.챗봇 프롬프트를 작성하는 과정에서 첨부 형식에 따른 답변 정확도를 경험했다.2가지 실험을 통해 답변 정확도를 비교해 봤다. 1. 링크 기반 프롬프트 실험응답 토큰 수를 줄이기 위해 외부 링크를 활용했다. 깃허브 저장소 링크를 첨부해 프로젝트 정보를 참조하도록 유도했다.프로젝트의 제목과 목적에 대해서는 AI가 비교적 정확하게 답변했다. 그러나 사용된 기술 스택이나 최신 커밋 일자 등 세부 정보에 대해서는 정확하지 않았다.답변이 정확하지 않아도, 사전에 설정한 답변 제한 조건은 일관되게 준수했다.그래서 깃허브 사이트가 부분적으로 AI의 자동 탐색을 차단하고 있는 의심 했다.이에 대한 대안으로 간단한 README 문서를 노션에 작성한 후 해..
2025.06.07 11:35
도서정리
-
[도서] 나라 운영에 관한
"경제활동이 순조롭게 진전되기 위해서는 평화 유지가 전제이며, 정치적 혼란은 경제에 심한 타격을 준다."앤드류 크레피네비치 · 베리 와츠, 「제국의 전략가」 - NATO 회원국들이 가장 높은 군사적 효율을 위해 합리적으로 행동할 거라고 가정했다. 즉, 관료적이고 조직적인 힘이 결과에 매우 큰 영향을 미친다는 것이다. 데이비드 E 생어, 「퍼펙트 웨폰」 - '중립'은 결코 비정치적인 것이 아니라는 사실과 어떤 사람들은 증오 발언이라고 생각하는 것을 다른 많은 사람들은 일상적인 정치 주장이라고 여긴다는 사실이었다. 에드 콘웨이, 「물질의 세계」 - 충분한 노력과 자원이 있으면 한 국가의 산업을 활성화하는 일은 얼마든지 가능하다. 그러나 제품 생산에 필요한 원료는 만들어 낼 수 없다.- 흥분과 논쟁에 휩싸인 ..
-
[도서] 플라톤과 낭만주의
" 이상주의가 훌륭한 것이고 현실주의가 나쁜 것이라는 생각이 낭만주의가 낳은 결과물이다. "플라톤, 「크리톤」 "전문 지식을 갖지 못한 다수의 판단을 존중한다면, 그는 몸을 망치게 된다.""정의롭지 못한 법적 명령에 복종하는 것은 결국 정의롭지 못한 짓을 하는 셈이 되니 말이다." 플라톤, 「고르기아스」 "자연과 법, 이것들은 대부분 서로 대립하는 것입니다. 그래서 누구라도 부끄럼을 느껴 자신이 생각하는 것을 말할 엄두를 못 내면 자기모순적인 말을 하도록 강요받게 되지요." 플라톤, 「국가론」 "절제의 미덕을 발휘해 작은 것에도 만족할 줄 안다면 늙음이 그리 괴롭지 않습니다.""안전하게 부정을 행할 수 있는 한 인간은 누구나 악행을 저지릅니다. 만일 그렇지 않은 사람이 있다면 그는 단지 남들의 이목이 두..
-
[도서] 능력주의
"정보는 이미 학생들에게 차고 넘친다. 그보다 더 필요한 것은 정보를 이해하는 능력이고, 중요한 것과 중요하지 않은 것의 차이를 식별하는 능력이다."비카스 샤, 「생각을 바꾸는 생각들」 - 부가 최상위층에 과도하게 집중되는 불평등은 거의 예외 없이 부패를 낳습니다.- 문제를 해결하려면 감추는 것이 아니라 오히려 밖으로 드러내야 한다.- 나이가 젊다고 해서 능력이나 통찰력이 미숙하다는 의미는 아닙니다. 나이를 먹으면 경험이 조금 쌓일 뿐이에요.- 민주주의는 다른 모든 정부체제에 비하면 가장 덜 나쁜 체제다. 유발 하라리, 「21세기를 위한 21세기 제언」 - 국민투표와 선거는 언제나 인간의 느낌에 관한 것이지 이성적 판단에 관한 것이 아니다.- 이슬람교는 무슬림이 만들어내는 것이다.- 21세기에 가장 성공..
-
[도서] 과거부터 현재에 이른 인류 사회
"과거의 검열은 정보의 흐름을 차단하는 방식으로 작동했다. 그런데 21세기 검열은 사람들에게 관계없는 정보들을 쏟아붓는 방식으로 작동한다."(2) 애덤 알터, 「만들어진 생각, 만들어진 행동」 - 어쩌면 우리 주위의 세계에서 가장 광범위한 단서는 우리가 바깥에서 시간을 보낼 때마다 매 순간을 규정하는 날씨일지 모른다.- 편견이 생기는 이유는 사람들이 낯선 것과 다른 것을 선천적으로 싫어하기 때문인데, 이 둘은 모두 매슬로가 말한 안전의 욕구를 위협하는 것이다.- 임의로 갖다 붙인 명칭을 통해서도 평소 똑똑하던 사람이 무기력한 사람으로 바뀔 수도 있다는 사실을 잘 보여준다. 유발 하라리, 「호모 데우스 미래의 역사」 - 그들은 적을 도발해 과잉반응을 유도한다. 테러리즘의 본질은 쇼다.- 우리가 변화를 두려..