본문 바로가기

전체 글230

[Tauri] React에서 Tauri event handling 하기 react 컴포넌트에서 keydown event를 핸들링하는 방법은 아래와 같다.useEffect(() => { const handleKeydown = function (event: KeyboardEvent): void { if ((event.ctrlKey || event.metaKey) && event.key === 's') { event.preventDefault() void saveFile() } } window.addEventListener('keydown', handleKeydown) return () => { window.removeEventListener('keydown', handleKeydown) }}, []) React에서 Tauri 이벤트를 .. 2024. 5. 8.
[React] useEffect에서 async 사용하기(typescript 예시) React useEffect hook에서 비동기 함수를 지원하지 않기 때문에 다음과 같이 구현해야 한다.useEffect((): void => { const fetchData = async (): Promise => { const data = await fetch(`https://jsonplaceholder.typicode.com/posts/${id}`) if (data.ok) { const json = await data.json() as string console.log(json) } } void fetchData()}, [id])그냥 Promise 체이닝을 사용하는 방법도 있다.useEffect(() => { fetch(`https://jsonplacehol.. 2024. 5. 8.
[책 리뷰] 건물주의 기쁨과 슬픔 - 김재호 작가님은 내일은 투자왕 유튜브에서 인터뷰를 보고 처음 알게 되었다.https://youtu.be/V68UjWYIw1o?si=Ak9wUuKC9R0JgDTy이 영상을 보고 정말 대단한 분이라고 생각했고 나도 저런 삶을 살고 싶다는 생각을 하게 됐다.특히 가장 멋있다고 생각한 부분은 자신만의 서비스를 운영하는 점, 그리고 그 서비스로 돈을 번다는 것이었다.그래서 평소에 K리그 프로그래머 블로그에서 인사이트를 얻고 있었는데어느 날 책 증정 이벤트에 운 좋게 당첨되어 책을 받게 되었다.책의 내용은 개발자 출신 건물주가 세입자, 건물 이슈를 디버깅하는 내용이다.매 에피소드를 솔직하고 재밌게 풀어내셔서 처음부터 끝까지 재밌게 술술 읽혔다.특히 나에게 인상 깊었던 부분은 다음과 같다.사람들끼리 모여 함께 일하는 일도 .. 2024. 5. 7.
[홈택스] 해외주식 양도소득세 직접 신고하기 5월이 되니깐 문득 해외주식 양도소득세 신청이 생각났다.일단 나는 이미 과거에 다음과 같은 실수를 해버렸다. 🥲1. 여러 증권사를 합산해 보니 기본공제 금액 250만원이 넘어가버렸다.2. 증권사에서 제공하는 해외주식 양도소득세 대행신청 기간이 넘어가버렸다.이렇게 된 거 직접 신고해 보자.홈택스(https://www.hometax.go.kr/)로 이동한다.세금신고 > 양도소득세 신고 > 확정 신고 메뉴를 클릭한다. 정기신고 버튼을 클릭한다. 양도자산종류에 국외 > 국외 주식을 선택한다.양수인은 없으므로 스킵한다.저장 후 다음 이동 클릭 계산명세서 엑셀 업로드까지 스크롤을 내려서 업로드 양식 다운로드를 클릭한다.다운로드한 엑셀 양식에 맞게 엑셀 양식을 작성한다.각각의 증권사 HTS에서 해외주식 양도소득세 .. 2024. 5. 1.
[Open Source] 옵시디언 번역 참여 최근에 찾아 바꾸기 기능이 없는 노션을 버리고 옵시디언으로 환승했다. 홈페이지에서 '오 한국어 번역도 있네?' 생각하면서 보는데 뭔가 순서가 이상했다. 이슈 리포팅을 하려고 이슈 리스트를 보는데 메뉴명 한국어 번역 이슈가 있었다. 내가 발견한 이슈와 별개로 나중에 천천히 번역해 보면 재밌겠다고 생각했다. (생각만 했다.) 그리고 주말에 이슈 리포팅을 했는데 메인테이너가 이슈를 나한테 assign 했다. 나에게 assign 된 순간 알 수 없는 책임감이 샘솟았고 계속 번역해야 한다는 생각만 들었다. (아무래도 개발자를 매우 잘 다루는 것 같다.) 결국 지난 주말에 번역을 진행해서 PR을 요청했고 merge 됐다. https://github.com/obsidianmd/obsidian-help/pull/719.. 2024. 4. 17.
[Git] 계속 Select an account 창이 나타날 때 어느 날부터 회사에서 업무 중에 아래 팝업이 계속 나타났다. 그런데 아무리 PAT나 내 아이디를 선택해도 잠시 후에 다시 팝업 되면서 나를 괴롭혔다. Stack Overflow를 아무리 찾아보고 여러 방법을 시도해 봐도 며칠 지나 다시 이 현상이 반복됐다. 내가 시도해 본 방법은 다음과 같았다. - Git version upgrade 하기 - credential.helper 설정해 보기 - node_module 지워보기 더 이상 고통받기 싫어서 꼭 해결하겠다 마음먹고 "Why am I being asked to select an account?"에 연결된 문서를 정독하니 결국 원인을 찾게 되었다. 원인은 바로 문구 그대로 하나의 컴퓨터에서 여러 Git 계정을 사용하고 있었기 때문이었다. 나의 경우 아래와.. 2024. 4. 13.
[Flutter] Flutter Windows 빌드 은근히 찾기 힘들었던 flutter windows build 명령어flutter build windows위 경로를 따라가면 exe 파일이 생성된 것을 확인 할 수 있다. init 후 바로 빌드한 용량이 24.7MB 정도 된다. 아래 글의 Tauri의 번들 사이즈와 비교해 보면 차이가 꽤 많이 나는 것을 볼 수 있다. Flutter는 빌드에 Flutter 엔진이 포함되기 때문에 용량이 커진다고 한다. Tauri가 5.2MB 정도임을 생각하면 확실히 차이가 있는 것 같다. 아래에서 확인할 수 있다. https://docs.flutter.dev/platform-integration/windows/building#compiling-with-visual-studio Building Windows apps with.. 2024. 4. 12.
[Tauri] Tauri Windows Installer 빌드 다음 명령어를 통해 간단히 패키징 할 수 있다. pnpm tauri build 아래 경로에 exe 파일이 만들어진다. 여기서 Tauri의 강점인 작은 번들 사이즈를 확인할 수 있다. init 후 바로 빌드한 용량이 5.16MB 정도다. installer를 원한다면 bundle 폴더를 확인하면 된다. - bundle/msi: .msi installer - bundle/nsis: .exe installer 아래에서 확인할 수 있다. https://github.com/HanJaeJoon/blog-examples/tree/main/CrossPlatforms/tauri-example blog-examples/CrossPlatforms/tauri-example at main · HanJaeJoon/blog-exam.. 2024. 4. 12.
[pnpm] windows pnpm 업데이트 pnpm add -g pnpm pnpm을 업데이트하는데 자꾸 아래와 같은 에러가 발생했다. EPERM: operation not permitted, unlink 'C:\Users\UserName\AppData\Local\pnpm\pnpm.EXE' 아래 명령어를 사용했더니 해결됐다. pnpm.cmd add -g pnpm @pnpm/exe https://github.com/pnpm/pnpm/issues/5700#issuecomment-1664294702 Can't upgrade pnpm version: EPERM: operation not permitted, unlink `AppData\Local\pnpm\pnpm.EXE` · Issue #5700 · pnpm/pnpm pnpm version: 7.16.1 .. 2024. 4. 11.