CS
24.9.10. 개발일지 // 인증미들웨어, 트랙잭션, 암호화
* 인증 미들웨어목표 : 로그인전에 req에 id, pw가 있는지 확인하고싶다.login 전 미들웨어로 checkBody를 적어주면 된다.this.router .route('/') .get(this.loginHome) //홈화면(로그인하기, 회원가입하기) .post(this.checkBody,this.login); //로그인전에 req에 id, pw 있는지 확인!checkBody= async(req, res, next) => { if(!req.body.loginId || !req.body.password){ return res.status(400).json({ status : 'fail', message : 'Missing id o..
24.9.9. 개발일지// rest api
오늘은 뭔가 감이 안잡혀서 학습 위주로 진행함.* restapi 학습어떻게 이게 가능?일단, restapi가 되기위해서는 스스로설명가능해야하고 , 다음상태로 전이가능 해야함. * express 학습미들웨어res.json을하면, 주기가 종료됨 -> 뒤의 미들웨어는 실행안됨.라우터도 "특정 요청에만 반응하는" 미들웨어임기본값은 모든 요청에 반응함. 렌더링 전에 상태값을 set 할 수 있다. if(loginMember === null ) { res.status(401).render('login/loginForm', { error: '아이디 또는 비밀번호가 맞지 않습니다.' }); return;} * 레퍼런스https://www.youtube.com/watch?v=RP_f5dMoHF..
24.9.5. 개발일지 // virtual box에 배포하기 , nat, bridge, ufw방화벽, nginx
* virtual box에 배포하기먼저 nat와 bridge의 차이를 알야아한다.nat방식을 쓰면, 외부 클라이언트는 반드시 host pc(내 pc) 를 통해서만 가상 우분투에 접속 가능하다.따라서, 포트 포워딩이 필요하다.반면, 브릿지는 내pc와 동등한위치에서 직접 외부와 연결이 가능하다.간단한 브릿지 방식을 사용하고자 한다. * 내 환경확인우분투에서 ifconfig 결과 => 1.200.x.x로 나오는걸로봐서, 나는 공유기방식이 아니고 직접 isp와 연결된것으로 추측.즉, 3000번포트만 열어준후, 1.200.x.x:3000으로 접속하면 외부클라에서 내 우분투로 접속이 가능하다!+ listen 수정도 필요한듯 하다.//Node.js 애플리케이션이 모든 인터페이스에서 요청을 받을 수 있도록 설정합니다:..
[Linux] pw 없이 접속하기, ssh-keygen, 배포하기
* ip 별칭 생성하기ssh 접속할때마다 ip를 기억해야하는것은 너무 귀찮다.아래 파일을 수정하자sudo vi /etc/hosts이후 :wq => 변경사항 저장, 종료 * pw 없이 접속하기우선 내 컴퓨터에서 ssh-keygen을 생성한다.공개키를 복사해서 우분투에 보내야한다.id_ed.pub가 자물쇠 //공개키cyberduck을 사용해도 된다. for file전송이걸 cat/ssh/authorized_keys에 복붙 ( 윈도우 키를 "추가" 해야함) 덮어쓰기 하면 망함!대문을 하나 추가한 효과!!우리는 윈도우에 자물쇠(public key)에 맞는 열쇠(private key)를 가지고 있으므로 문이 열린다! * 우분투에 node js 최신버전 설치 * 프로젝트 git clone 하기, 실행하기* issu..
[Linux] 배포관련 아키텍쳐 best practice?
네, 좋은 접근 방식입니다. Nginx가 정적 파일을 처리하고 동적 요청만 WAS(Web Application Server)가 처리하는 구조는 매우 효율적이고 일반적으로 사용되는 아키텍처입니다. 이 구조를 개선하고 확장하여 더 강력한 아키텍처를 만들 수 있습니다. 다음은 개선된 구조와 그에 대한 설명입니다: [CDN] | v[Client] [Load Balancer] [Nginx] [Static Files] | | ..
24. 9.4. 개발일지 // 커스텀 세션, 쿠키생성방법
* 커스텀 세션 개발로그인시 쿠키 설정하기, 쿠키생성방법//@PostMapping('/login')login = async (req, res) => { const { loginId, password } = req.body; const loginMember = await this.loginService.login(loginId, password); if(loginMember === null ) { res.render('login/loginForm', { error: '아이디 또는 비밀번호가 맞지 않습니다.' }); return; } sessionManager.createSession(loginMember,res); console.log(req.coo..
24. 9. 3. 개발일지// 쿠키
* const db로 여러 클래스에서 사용시, 싱글톤여부export new Class => 싱글톤* form -data 받아서 db에 넣기const member = { id: null, loginId: loginId, name: name, pw: password};객체 필드명 주의서비스, 컨트롤러, 리포지토리 모두 같은 필드명을 써야함현재 controller에서 req.body를 파싱후, member 객체로 만들고 서비스에 전달이게 best 인지?* query 문제결론 : rows에는 결과객체들이 배열로 담겨있다. * 객체를 response로 찍는방법'ok'라는 문자열을 응답으로 보내는 방법은 매우 간단합니다. Express.js를 사용한다고 가정하고, 여러 가지 방법을 소개해 드..
[DB] db관점 정렬 학습 by.line
https://techblog.lycorp.co.jp/ko/about-atlassian-jira-ranking-algorithm-lexorank Jira의 이슈 정렬 방식이 Integer 방식이 아니라고?!들어가며 안녕하세요. LINE+ Contents Service Engineering 조직에서 백엔드 개발을 하고 있는 김한솔, 문다정, 이현동, 조강훈입니다. 저희 조직에서는 그룹...techblog.lycorp.co.jp들어가며 안녕하세요. LINE+ Contents Service Engineering 조직에서 백엔드 개발을 하고 있는 김한솔, 문다정, 이현동, 조강훈입니다. 저희 조직에서는 그룹 구성원의 기술 성장을 돕고 향상된 능력을 적재적소에 활용할 수 있도록 Tech Group이라는 조직 내 ..