전체 글

세상을 선하게 바꾸는 노력을 합니다
· DEV
Typescript의 Interface와 Type의 차이는 뭘까 TypeScript에서 interface와 type은 유사한 기능을 제공하지만, 몇 가지 중요한 차이점이 있습니다. 1. Interface (인터페이스) 정의 및 사용: 객체의 구조를 정의하는 데 사용됩니다. 선택적 속성(optional properties) 및 읽기 전용 속성(readonly properties)을 포함할 수 있습니다. 확장성: 인터페이스는 다른 인터페이스를 확장할 수 있으며, 동일한 이름으로 선언되면 자동으로 합쳐지거나 확장됩니다. 융통성: 인터페이스는 객체의 형태를 정의하는 데 초점을 맞추고 있으며, 객체 간의 계약(contract)을 설정하는 데 유용합니다. 2. Type (타입) 정의 및 사용: 새로운 타입을 정의하..
· DEV/Frontend
Electron Browser Window 숨기는 방법 방법 : mainWindow?.hide();, mainWindow?.show(); 목적 Electron 앱이 캡처 과정에 직접 개입하지 않도록 하여, 보다 정확한 화면 캡처를 가능하게 합니다. 😄 캡처 지연: 화면 캡처를 시작하기 전에 약간의 지연 시간(예: 1-2초)을 두어 Electron 앱 창을 최소화하거나 숨길 시간을 제공합니다. 이렇게 하면 desktopCapturer가 Electron 창을 제외한 나머지 화면을 캡처할 수 있습니다. ipcMain.on("capture-screen", async (event) => { // 창을 숨기거나 최소화 mainWindow?.hide(); // 약간의 지연 후 캡처 setTimeout(() => { ..
· DEV/Frontend
Electron 개발환경에서 캡처가 되지 않았던 이유 Electron에서 desktopCapturer API를 사용하여 화면을 캡처할 때, 다른 애플리케이션이 보이지 않고 오직 빈 배경화면만 나타나는 문제가 있었습니다. 여러 다른 라이브러리를 사용해 보았지만, 동일한 문제가 지속되었고, 이는 권한 문제로 의심되었습니다. 이에 대한 문제 해결 과정을 아래에 기록합니다. MacOS의 보안 정책 MacOS Catalina(10.15) 이상 버전에서는 새로운 보안 및 개인 정보 보호 기능들이 도입되었습니다. 특히 ‘화면 녹화’ 권한이 중요한 부분 중 하나입니다. Electron 앱이 화면을 캡처하려면 사용자로부터 명시적인 허가가 필요합니다. 이 권한 없이는 Electron 앱이 빈 화면이나 배경화면만을 캡처할 ..
· DEV
🚀 Yarn을 사용한 TypeScript 프로젝트의 자동 빌드 및 재시작 설정 방법 TypeScript 프로젝트에서 파일 변경 시 자동으로 빌드하고 Electron 애플리케이션을 재시작하려면, Nodemon과 TypeScript 컴파일러(tsc)를 활용할 수 있습니다. 1. nodemon.json 설정 Nodemon 설정 파일(nodemon.json)을 생성하고, TypeScript 파일의 변경을 감시하도록 설정합니다. { "watch": ["src/**/*.ts"], "ext": "ts", "exec": "yarn build && electron ." } watch: 감시할 파일의 경로 및 패턴을 지정합니다. ext: 감시할 파일의 확장자를 지정합니다. exec: 파일 변경 시 실행할 명령어입니다. 여..
· DEV
Electron 애플리케이션 개발: Yarn을 활용한 기본 설정과 파일 구성 Yarn을 통한 Electron 설치 및 초기 설정 Yarn을 사용하여 Electron을 손쉽게 설치하고 프로젝트를 초기화합니다. yarn init -y yarn add electron --dev index.html의 기본 구조 설정 기본 HTML 구조를 설정하여 Electron 애플리케이션의 UI를 구성합니다. Welcome to My Electron App! main.js로 Electron 애플리케이션의 메인 프로세스 설정 Electron의 메인 프로세스를 정의하는 main.js 파일을 구성합니다. Electron 모듈 임포트: app과 BrowserWindow를 임포트합니다. BrowserWindow 인스턴스 생성: 애플리..
· DEV/Backend
도커 캐싱으로 인한 이전 버전 JAR 파일 지속 사용 문제 해결하기 오늘은 Docker Compose를 이용해 네트워크를 구성하고 이미지 간 통신을 설정하는 과정에서 발생한 흥미로운 문제에 대해 이야기하고자 합니다. 프로젝트 설정에서 prod로 지정했음에도 불구하고, Spring 프로젝트의 변경 사항이 제대로 반영되지 않는 상황이 발생했습니다. 문제의 핵심은 Flask 서버 컨테이너로 요청을 보내는 과정에서, 서버가 계속 localhost로 인식되는 것이었습니다. 이는 도커 이미지를 생성하는 과정에서 발생한 문제라 추측 되었습니다 사전 지식 도커 캐싱 메커니즘 Docker는 이미지를 '레이어’라는 여러 개의 층으로 구성합니다. 각 레이어는 Dockerfile의 한 명령어에 해당하며, 이들이 순차적으로 쌓..
· ETC/Thinking
내적 질문을 던져 보자 데미안의 알을 마주했다면 부셔보자 이큐 독문학 기말 고사 시험 문제였는데, 노봉남 교수님이 말씀하신 데미안의 알을 깨라는 말이 생각났다 데미안의 핵심 메시지는 스스로를 구원하라이다 스스로를 구원하라, 이는 신앙적 관점보다는 좀 더 나은 사람이 되고, 쉽게 지나쳤던 진짜 내가 원하는 것에 집중하라는 뜻 아닐까 요즘은 내적 성찰을 하기 어려운 시대이다 빈틈 없이 내가 아닌 다른 것들로 채워지며, 심지어는 자신을 비워버리게 되기도 한다 부족한 성찰, 자신에 대한 사유를 채우지 않으면 무엇으로 살겠는가 기존의 제약과 한계를 깨려면, 또한 자기 확신, 성찰이 쌓여야 한다 Thinking 2023-12-20 10:57 데미안을 지금 다시 읽으면 정말 재미있을거 같다 2023-12-20 10:..
카카오 테크 캠퍼스 3단계 회고 🐥 카카오 테크 캠퍼스 수료를 한지 좀 되었는데 2023 년이 끝나기 전에 회고를 작성해야겠다 싶어 돌아왔습니다 약 3달 동안 진행 된 프로젝트였고, 팀 내 회고까지 했는데 개인 회고를 하지 못한게 아쉽기도 했구요 카카오 테크 캠퍼스의 꽃, 3단계 회고 시작하겠습니다 회고 방식은 KPT, 즉 Keep(유지 할 점), Problem(문제점),Try(시도 할 점)을 참고했습니다 빠른 의사소통 팀 회고 때 팀원 분들에게 연락이 잘되어 피드백이 빨랐다는 칭찬을 받았습니다 :) 우리 팀은 회의를 대부분 온라인으로 진행하였습니다 타지에 있는 팀원도 있기도하고 7명의 팀원이 오프라인으로 만나는 시간을 조율하기 어려웠기 때문입니다 온라인으로 진행하는 만큼 편한 부분도 있었지만, 어려움..
Baekjoon_14002 문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000) 출력 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다. 둘째 줄에는 가장 긴 증가하는 부분 수열을 출력한다. 그러한 수열이 여러가지인 경우 아무거나 출력한다. a = int(input()) arr = list(map(int,in..
initializationError Failed 오류 해결 문제 인식 어느 날, 갑자기 initializationError Failed 오류가 특정 테스트에서만 발생했다. 이상하게도 다른 테스트에서는 잘 동작했다. 오류는 테스트 실행 전에 나타났고, 이는 프로젝트 실행 중에 뭔가 문제가 있다는 신호였다. 로그를 자세히 보니, BeanCreationException과 ScriptStatementFailedException 오류가 발견되었다. 일단 JPATest가 문제인 것 같아 @SpringBootTest로 변경하니 일시적으로는 해결되었다. 하지만, SpringBootTest는 맥락을 로딩해야 해서 처리 속도가 느려질 것이라 예상했다 또한, 문제는 해결했지만, 뭉뚝 그려진 해결 방법을 사용한거 같아 더 깊..
berom
봄수의 연구실