본문 바로가기

반응형

GF

(104)
Pop Up API Open UI의 목표는 개발자가 더 쉽게 훌륭한 사용자 경험을 만들도록 하는 것이다. 이를 위해, 구글은 개발자들이 직면하는 문제가 되는 패턴을 해결하려고 노력하고 있다. 개요 팝업은 그 목적과 효과가 뚜렷하여 많이 사용된다. 그러나 이를 개발하는 것은 마냥 쉬운 일이 아니며, 다음 사항들 때문에 간혹 골치 아픈 일이 생기기도 한다. 팝업 위치: 팝업은 다른 모든 요소보다 위에 노출될 것으로 기대된다. 하지만, CSS를 제대로 지정하지 않은 몇몇 웹사이트에서는 팝업이 사이드바 아래로 위치하곤 한다. 접근성: 키보드 등으로 팝업 요소에 접근하기 쉬워야 하지만, 종종 이를 놓치곤 한다. 숨김/표시 로직: 팝업을 표시하거나 숨기는 로직, 여러 개의 팝업을 표시하는 로직 등 고려해야 할 것이 많다. Pop Up..
ECMAScript Proper Tail Calls (PTC) 적절한 꼬리 호출이라고 번역하는 것이 옳을까? 일반적으로 재귀호출은 콜스택을 쌓아올리지만, 여러 프로그래밍 언어는 꼬리 재귀 호출(영문/국문 위키피디아 참고)의 최적화를 지원한다. ECMAScript(자바스크립트는 이것의 명세를 따름) 6은 이와 비슷하지만 다른 'PTC(Proper Tail Calls)'를 지원한다. 현재 사파리(웹킷) 또는 harmony 플래그가 있는 Node.js(7, 8)에서만 PTC를 지원한다. 하지만 Node.js 18(PTC 미지원) 환경에서 직접 테스트한 결과, 꼬리 재귀 호출 최적화가 가능한 코드가 그렇지 않은 것에 비해 성능이 약간 더 우수한 것으로 나타나 다른 유형의 꼬리 재귀 최적화가 존재하지 않을까 생각한다. PTC는 (재귀)호출되는 함수가 호출하는 함수의 콜스택 ..
재귀 호출 없는 하노이타워 일반적으로 하노이 타워 코드는 재귀호출을 설명하기 위한 예시로 많이 사용된다. 하지만 재귀와 반복은 상호 대체 가능하므로, 하노이 타워를 재귀 호출 없이 반복문을 이용해 작성해보자. 비교를 위해 재귀 호출을 이용한 코드도 함께 작성했다. #include #include #include using namespace std; struct CallStackElement { int n; char from; char to; char aux; bool print; }; void print_move(int n, char from, char to) { cout
기술 면접 질문 최근 후배들을 대상으로 하는 면접 스터디에서 기술면접(CS면접) 보조를 하면서 질문을 몇 가지 준비해보았다. 프로세스/스레드 구분 34 + 5 = 41 설명해보기 /2, >>1 비교하기 call by value, call by reference 설명 이중배열 탐색시 아래 두 코드는 성능 차이가 있을까? for (int row = 0; row < n_rows; row++) { for (int col = 0; col < n_cols; col++) { // access arr[row][col] ... } } for (int col = 0; col < n_cols; col++) { for (int row = 0; row < n_rows; row++) { // access arr[row][col] ... } } ..
닷홈 무료 웹호스팅 닷홈에서는 무료 웹호스팅 서비스를 제공한다. 트래픽이나 저장공간의 제약이 크지만, 기간은 사실상 무제한(3개월마다 연장)이다. 지난 10년 동안 여러 용도로 요긴하게 써왔고, 내가 웹개발자가 되는데 정말 많은 도움이 되었다. 솔직히 개발을 처음 시작하면서 웹개발에 입문하는 분들에게 무료 웹호스팅은 아주 괜찮은 선택지라고 생각한다. 나도 아무것도 모르던 학생 때부터 쉽게 썼으니 말이다. :) 하지만 아쉽게도 이제는 더 이상 쓸 일이 없이 연장만 하고 있는 것 같아 결국 삭제하기로 했다. ㅠㅠ 그동안 잘 썼어요, 닷홈~ 다음에는 유료 서비스로 만나요 :)
[Node.js] AWS SES 또는 Gmail API로 메일 보내기 Node.js기반 서버에서 메일을 보낼 때, 기존에는 Nodemailer를 사용하고 있었고 계정은 Gmail의 것이었다. 원래 Gmail로 메일을 보내려면 Gmail API를 사용해야 하지만, Nodemailer는 사용자를 대신해 직접 로그인하여 메일을 전송한다. 그렇기 때문에 구글 아이디, 비밀번호를 제공하고, 구글 계정 설정에서 보안 수준이 낮은 앱의 액세스를 허용해야 한다. 보안 수준을 낮추는 것이 마음에 들지 않았지만 메일을 보낼 수 있게 되었다. 그런데 한 가지 문제가 더 있는데, 하루에 500개의 메일만 보낼 수 있다는 것이다. UOSTime을 서비스하면서 이 한도에 걸릴 수가 있었고, 이를 해결하기 위해 Google Workspace를 사용한다면 월 6달러의 지출이 예상되었다. Gmail A..
JS 값 복사하기 (Deep Copy) 자바스크립트에서 객체를 복사하는 방법은 여러가지가 있다. 얕은 복사 얕은 복사는 동일 객체를 참조하도록 한다. 객체는 메모리에 하나만 존재하고, 이를 가리키는 포인터가 추가되는 것이다. const obj1 = { a: 1, b: { c: 2, d: 3, }, }; const obj2 = obj1; obj2.a = 4; obj2.b.c = 5; console.log(obj1.a); // 4 console.log(obj1.b.c); // 5 따라서 원본, 복사본 구분 없이 어느 것을 수정하더라도 당연히 모든 것이 수정되는 셈이다. 깊은 복사 메모리 상에 객체를 하나 더 생성하는 것이다. 따라서 원본과 복사본이 구별되며, 하나를 수정해도 다른 하나는 당연히 그대로 보존된다. 깊은 복사는 흔히 JSON.pars..
AMD Radeon 그래픽 카드 디스코드 블러 이슈 해결 나는 RX570 그래픽 카드를 사용하고 있다. 디스코드에서 화면 공유를 하면 일정 시간 뒤 화면이 블러되는 문제가 있었고, 해상도나 프레임률을 수정함으로써(이때 영상 전송이 처음부터 다시 시작되므로) 일시적으로 문제를 해결하곤 했다. 꽤 많은 사람들이 같은 증상을 겪고 있던데, 누군가 다음과 같은 방법으로 일단 해결을 봤다고 한다. [디스코드 설정] - [음성 및 비디오]에서 비디오 코덱 OpenH264 비활성화 H.264 하드웨어 가속 비활성화 QOS 활성화 https://support.discord.com/hc/tr/community/posts/360050908514-Screenshare-gets-blurry-afer-a-while-