본문 바로가기

Programming98

[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.
[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.
[npm] windows npm 업데이트 하기 가장 마음 편한 방법은 Node.js를 다시 설치하는 것이다. https://nodejs.org/ Node.js — Run JavaScript Everywhere Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org npm 업데이트만 하고 싶다면 아래 방법을 이용하자. Node.js v16 이상 npm install -g npm Node.js v14 이하 Powershell 관리자 모드로 실행 후 Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force npm install -g npm-windows-upgrade npm-windows-upgrade 2024. 4. 11.
[C#] 반복문에서 삼항연산자 vs Func 뭐가 좋을까? 업무를 하다가 문득 이런 생각이 들었다. '다음과 같은 반복문 안에서 _condition은 항상 true 또는 false인데 매번 for문 안에서 체크하는 것이 비효율적인 것 같다.' for (var i = 0; i input * 2 : input => input; for (var i = 0; i < repeat; i++) { va.. 2024. 3. 8.
[MAUI] 다른 페이지로 이동하기 XAML 파일에 아래와 같이 버튼을 추가한다. Code behind에 이벤트 핸들러를 추가한다. (평소처럼 async Task 사용하면 XFC0002 error가 발생한다. 나는 한참을 헤맸다...😢) private async void OnMovePageClicked(object sender, EventArgs e) { var viewModel = new DragAndDropViewModel(3); await Navigation.PushAsync(new DragAndDropPage(viewModel)); } 이전 페이지로 돌아가려면 아래 코드를 이용하면 된다. await Navigation.PopAsync(); 실습 영상 https://youtu.be/Yry9HbwID-U?si=tmOwkQxWjxkvXG.. 2024. 3. 7.