일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- express
- 코딩테스트
- 부족한 금액 계산하기
- .env
- Node
- 코드정렬
- EC2
- 커밋 한번에
- AWS
- 프리티어
- interactive_timeout
- 리액트코드정렬
- reacts3
- react
- 자동완성방지
- utf8mb4
- elasticIP
- 프로그래머스
- max_allowed_packet
- 리액트
- 제일 작은 수 제거하기
- useReducer
- axios
- next #middleware
- 자연수 뒤집어 배열로 만들기
- s3확장자
- dotenv
- MySQL
- prettier
- vscode
- Today
- Total
목록프로젝트/개인 프로젝트 [세모이] (20)
Sungtt
charset utf8mb4 collation utf8mb4_bin 게시판에 필요한 테이블 board_table 1. 게시물 번호 board_index 2. 게시물 제목 board_title 3. 게시물 내용 board_content 4. 작성자 board_writer 5. 작성날짜 board_date 6. 조회수 board_views 7. 좋아요 board_like 8. 좋아요한 유저리스트 board_likeList // 220428 추가 9. 댓글수 board_commentCount // 220503 추가 댓글에 필요한 테이블 comment_table 1. 게시물 번호 (게시물 번호로 댓글을 join하여 뿌려주기위함) board_index 2. 댓글 번호 comment_index 3. 댓글 내용 co..
세모이 개발사항 - 회원가입 구현 간단히 아이디와 비밀번호만 받아서 회원가입을 구현하였다. 연습했던 폼에서는 정규표현식 공부를 위해 이메일, 핸드폰번호까지 받았지만 실제로 서버에 구동중인 사이트라 개인정보보안을 위해 따로 본인 인증 단계는 생략했다. - 로그인 구현 로그인 시 쿼리문으로 아이디행을 찾아내어, DB의 패스워드와 솔트값을 꺼내온다. 받아온 패스워드를 DB솔트값으로 재암호화 하여 DB의 패스워드와 동일하면 jwt토큰을 객체에 담아 응답해준다. - 비밀번호 변경 구현 현재 비밀번호를 적어서 서버에서 비교인증 후 변경해주는것과 인증 없이 변경하는것. 두가지의 케이스를 고민하였다. 찾아보니 개인정보에 민감한 사이트일수록 인증단계가 많았다. 세모이는 개인정보를 가지고있지않기때문에 인증 없이 바로 변경..
세모이 개발사항 - 로딩 인디케이터 변경 - server.js 코드가 길어져 각 브랜드별로 라우팅 진행 - 환경 변수 적용 - 예전엔 build파일만 pull하고 서버코드는 따로 작성했지만, 환경변수 적용하고나서부터는 그냥 프로젝트째로 커밋하고 푸쉬한다.(깃을 통한 버전관리 용이해짐) - 따로 분할되어있던 댓글 삭제 api를 각 브랜드 라우터로 통합시키면서 api 주소 변경 //변경 전 `https://sungtt.com/api/comment_password_check_${brandName}`, //변경 후 `https://sungtt.com/api/${brandName}ApiData/comment_password_check_${brandName}`,
개요 이벤트별 댓글을 삭제할 때 통신하는 api를 개선하게되었다. 기존에 쓰던 방법도 내 기준에서는 나름 효율적이라고 생각했는데, 코드를 더욱 줄이고 편해진 새로운 코드를 기록하려고한다. 기존 방법 기존에 사용하던 댓글 삭제 api는 클라이언트에게 URL에 담긴 브랜드명을 요청 받고, switch문을 이용하여 브랜드명에 맞는 쿼리문이 실행되도록하였다. 이때 불편한 점은 댓글테이블과 코드의 양이 비례한다는것과, 스코프때문에 매번 쿼리문을 새로 작성해주어야한다는 것이다. 물론 쿼리문을 const가 아닌 let으로 선언하여 case에 따라 할당되는 값을 변경하는 방법도 있겠지만 코드가 늘어나는것은 매한가지였다. //댓글 삭제 통합 api app.post("/api/comment_del", (req,res) =..
이벤트 출력 크롤링한 이벤트페이지에서 필요한 정보를 객체화시켜 DB에 전송, 페이지 접속 시 마다 기존 DB와 크롤링한 이벤트페이지를 비교하여 새 이벤트와 종료된 이벤트를 추가 및 삭제하여 갱신 댓글 이벤트별로 테이블 생성, 댓글DB를 서버에서 받아오고, 프론트가 요청하여 출력. 댓글등록 각 이벤트 컴포넌트에서 댓글 컴포넌트로 api주소를 props로 전달하여 통신 프론트에서 데이터를 구분하고, 서버에서 구분된 데이터에 따른 처리 댓글삭제 등록과 같은 방법으로 하려했으나, 다른 방식으로 해보는중 URL에 현재 브랜드가 포함되어있는것을 이용하여, 댓글 index와 URL을 api서버로 전송 URL의 파라미터에 고정주소( ex)https://aaa.com )는 replace로 제거하고 요청한다. 서버에서 받..
적당히 만들어놓은 리액트앱을 node.js 서버와 연동시켜보기 위해서 samoi 경로에서 npm run build 로 build 폴더를 생성하였다. 그 후 같은 경로에 server.js 파일을 만들고, express를 통하여 서버를 구축하였다. const http = require('http').createServer(app); http.listen(27017, function () { app.use(express.static(path.join(__dirname, '/build'))); app.get('/', function (요청, 응답) { 응답.sendFile(path.join(__dirname, '/build/index.html')); }); console.log('listening on 2701..

이전에 막혔던 몇가지 문제들은 해결되었다. 1. 뽑아온 a태그의 text들을 배열에 담아내는 방법이 뭘까? getHTML() .then((html) => { let titleList = []; const $ = cheerio.load(html.data); const bodyList = $("div.event_tab_cont ul.event_thumb_list li p.evt_tit"); bodyList.each( function ( i, elem) { titleList[i] = { title: $(this).text(), }; }); cheerio를 통해 추출해낸 요소들을 each문을 통해 순회하면서 배열에 담아두었다. 2. 담아낸 배열을 json파일로 만들어 DB에 보내야하지않을까? .then((res..

사이트의 이벤트페이지를 크롤링하기위해 우선 크롤링 코드를 작성해보고있다. node.js의 axios와 cheerio를 통하여 네이버 월요웹툰의 타이틀을 뽑아오려는중이다. const axios = require('axios'); const cheerio = require('cheerio'); const getHtml = async() => { try{ return await axios.get("https://comic.naver.com/webtoon/weekdayList?week=mon"); } catch(error){ console.error(error); } }; getHtml().then( html => { const $ = cheerio.load(html.data); const $body = $("..
기획 웹크롤링을 통해 각종 사이트에서 진행하는 이벤트를 수집하여 한 페이지에서 확인할 수 있는 사이트 제작을 목적으로 한다.
개인 프로젝트를 진행하는 이유 현재까지 쌓아온 지식을 토대로 스스로 생각한 구현 방식과, 실제로 구현할 때 필요한 방식의 차이점을 연구한다. 그리고 차이를 채우기 위해 필요한 기술과 정보들을 습득하기 위함이다. 내 머릿속의 프로그래밍은 아직 깊이가 깊지않아서, 1차원적인 구조로 마음껏 상상의 나래를 펼치고 있다. ex) 값을 받아오고...저장하고....출력하고... 우선 애플리케이션을 제작하기 위해 무엇을 만들고싶은지, 이유는 무엇인지, 의도는 무엇인지, 가벼운 감정이더라도 앞으로 개인프로젝트란에 기술하도록 하자.