개요 우분투 18.04 버전에 코드서버 최신버전을 설치하려 하니 glibc_2.28 not found 오류가 떴었다. 이 오류는 우분투의 시스템기능을 수행하는 패키지의 버전이 너무 낮아서 발생하는 현상인데 이를 해결하기 위해서는 우분투를 최신버전으로 설치하거나 code-server 를 구버전으로 설치해야 한다. 우분투를 업그레이드하기는 귀찮아서 나는 하는 수 없이 code-server 재설치를 진행하였다. 진행 우선 18.04 버전에서 사용이 가능한 code-server 의 버전을 찾아본 결과 대충 3.4.1 버전이면 될 것 같았다. 따라서 나는 code-server 깃허브를 찾아가 releases 목록에서 해당 버전의 다운로드 링크를 확인하였다. (내가찾은 다운로드 링크 : https://github...
전체 글
개요 SMTP를 사용하기 위해서는 발신자의 구글계정에서 SMTP또는 IMAP을 사용으로 설정해야 되고 구글 계정의 2단계 인증을 켜고 2단계 인증에서 앱 비밀번호를 발급받아야 한다. 앱 비밀번호는 보통 wi3e wie2 cciv weio 의 형식이다 진행 nodemailer 패키지를 임포트 한다. npm install nodemailer senderinfo.json 파일을 하나 만든 후 발신자의 계정과 앱 비밀번호를 적는다 { "user": "myauth@mail.com", "pass": "google의 예) wi3e wie2 cciv weio" } mail.js 파일을 하나 만든 후 아래의 내용을 입력한다. const nodemailer = require('nodemailer'); const sende..
1) 개요 플러터를 입문한 지 어느덧 3년 차가 되어간다. 그동안 상태관리툴로써 Provider를 가장 많이 사용해 왔었지만 언젠가는 Deprecated 된다는 Provider의 창시자의 말에 충격을 받게 되었다. 다른 상태관리툴을 익혀야 될 때가 된 것 같아 알아보던 도중 GetX와 BLoC에 눈을 들이게 되었는데 GetX의 경우엔 10개월째 패키지 업데이트가 이뤄지지 않고 있고 BLoC패턴의 경우는 간단한 프로젝에 어울리지 않으며 난이도가 어렵기 때문에 마지막으로 Provider의 계승자인 RiverPod을 알게 되었다. RiverPod 은 Provider의 철자에서 순서만 바뀐 단어이며 Provider에서 컴파일러 중에 발생하는 오류, 여러 문제점들을 최대한 개선하여 RiverPod으로 배포가 되었..
최근에 토이프로젝트로 진행 중인 Flutter Web 사이트의 버전을 바꾸게 될 일이 생겨 업데이트를 하려 하는데 문제가 생겼다. 최신버전을 반영한 이후 Flutter web의 빌드파일을 서버에 적용을 한 후 접속을 해보는데 캐시 된 이전 페이지가 그대로 보이는 것이다. 문제를 확인해 보니 플러터 웹은 main.dart.js를 가져오게 되는데 이 파일은 자바스크립트 파일이다 보니 갱신을 하려면 쿼리를 파라미터를 추가하여 버전을 올려줘야 신규 main.dart.js를 웹브라우저에서 인식을 하고 가져오는 것이다. 그럼 해결방법을 적어보도록 하겠다. 1.Flutter Web을 빌드한다 (flutter build web --web-renderer canvaskit --release) 2. 이후 빌드된 폴더에 이..
Node JS에서 디렉터리나 파일 관련 작업을 진행하기 위해서는 거의 대부분 path 모듈이 필수적으로 사용된다. 노드 기본 조작으로 현재 위치정보에 대해 표시를 할 수 있지만 윈도우OS 와 유닉스기반 OS의 디렉터리 표시 타입부터가 차이가 난다. 윈도우 : C:\Users\MyCom\test.js 유닉스기반 : /home/mycom/test.js 윈도우의 경우는 \ 유닉스기반의 경우는 / 를 사용하기 때문에 매번 개발자가 고생을 해가며 OS별 경로 관련 기능을 구현하는데 애를 먹어야 한다. path 모듈은 이러한 고증을 쉽게 해결해 줄 뿐 아니라 다양하고 편리한 기능들을 제공하고 있다. path.sep : 현재 OS가 경로를 표시하는 데 사용하는 구분자 (윈도우는 \, 유닉스는 / 가 될 것이다.) e..
Node js를 통해 테스트를 진행하던 중 callback을 강제로 써야 되는 경우가 발생했다. async/awiat 또는 promise에 익숙해져 있던 탓에 callback을 계속 쓰다 보면 헷갈리는 경우가 많은데 callback을 promise 처럼 바꿔서 async/await 패턴을 사용하는 방법이 있다. 아래의 예를 먼저 확인해보자. const timeoutTest = async()=>{ console.log('0초'); await new Promise((resolve,reject)=>setTimeout(()=>resolve(),5000)); //5초 대기 console.log('5초'); } timeoutTest(); //결과: //0초 //5초 (5초뒤에 출력) 우선 new Promise라는 ..