일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링 폼
- 다대다
- 지연로딩
- querydsl
- 낙관적락
- 비관적락
- 데코레이터
- 연관관계
- 백트래킹
- BOJ
- fetch
- JPQL
- eager
- 다대일
- dfs
- 동적sql
- FetchType
- CHECK OPTION
- shared lock
- 즉시로딩
- 유니크제약조건
- PS
- 일대다
- SQL프로그래밍
- exclusive lock
- 이진탐색
- 힙
- 스토어드 프로시저
- execute
- 연결리스트
- Today
- Total
목록All (557)
흰 스타렉스에서 내가 내리지
대부분의 웹 서버는 해당 서버의 시간을 헤더에 담아서 같이 respond 해준다. 터미널에서 해당 도메인으로 요청을 보내고, 받은 헤더에서 Date를 확인하면 된다. curl -I https://www.gwanakgongdan.or.kr 서버시간을 알려주는 사이트인 타임시커랑 한번 비교를 해보자. 내가 요청한 사이트의 서버시간이 타임시커에 뜨는 것보다 살짝 빠른 것을 22~23초 쯤에 알수 있다. 타임시커기준 정각이 되었을때 바로 요청을 보내면 무난하게 성공할것 같다!
평화롭게 프로젝트 중.... 작성자를 띄우고 싶다..! 하지만 post 에는 UserId만 있을 뿐 username은 들어있지 않았는데, 가장 먼저 생각한 것은 posts에 forEach로 접근하여 각각의 post마다 username 정보를 불러와서 덧붙여주는 것. const posts = await Post.findAll({ where: { BoardId: currentBoard.id }, order: [["createdAt", "DESC"]], raw: true, }); posts.forEach(async (post) => { const author = await User.findOne({ where: { id: post.UserId } }); Object.assign(post, { author: a..
console.log 나, console.error를 사용하면, 메서드들이 언제 호출되었는지 파악하기 힘들 뿐만 아니라 서버가 종료되는 순간 로그들도 사라진다. 에러가 발생하면 에러 메시지를 확인해야 하는데, 서버가 종료되어 에러 메시지들이 날아가버리는 황당한 일이 일어난다. 이와 같은 상황을 방지하려면 로그를 파일이나 다른 데이터베이스에 저장해야 한다. // logger.js const { createLogger, format, transports } = require("winston"); const logger = createLogger({ level: "info", format: format.json(), transports: [ new transports.File({ filename: "combi..
pm2는 원활한 서버 운영을 위한 패키지이다. '개발할 때 nodemon을 쓴다면, 배포할 때는 pm2를 쓴다. 가장 큰 기능은 서버가 에러로 인해 꺼졌을 때 서버를 다시 켜주는 것이다. 또 하나의 중요한 기능은 바로 멀티 프로세싱이다. 멀티 스레딩은 아니지만 멀티 프로세싱을 지원하여 노드 프로세스 개수를 한 개 이상으로 늘릴 수 있다. 기본적으로 CPU 코어를 하나만 사용하는데, pm2를 사용해서 프로세스를 여러 개 만들면 다른 코어들까지 사용할 수 있다. 클라이언트로부터 요청이 올 때 알아서 요청을 여러 노드 프로세스에 고르게 분배한다. 하나의 프로세스가 받는 부하가 적어지므로 서비스를 더 원활하게 운영할 수 있다. 단점도 있다. 멀티 스레딩이 아니므로 서버의 메모리 같은 자원을 공유하지는 못한다. ..
morgan을 배포용으로 // app.js if (process.env.NODE_ENV === "production") { app.use(morgan("combined")); } else { app.use(morgan("dev")); } combined 모드는 dev 모드에 비해 더 많은 사용자 정보를 로그로 남기므로 추후 버그를 해결할 때 더 유용하게 사용할 수 있다. process.env.NODE_ENV는 .env에 넣을 수 없다. 개발, 배포환경에 따라 값이 변해야 하는데, .env 파일은 정적 파일이기 떄문. NODE_ENV를 동적으로 바꾸는 방법은 cross-env를 이용한다. express-session을 배포용으로 // app.js const sessionOption = { resave: f..
npm init package.json이라는 파일 자동 생성 npm i -D nodemon package.json에서 .gitignore 파일 생성 후 node_modules 나 .env 같은 파일들 추가 express 설치 npm i express 각종 모듈 설치 npm i ### bcrypt cookie-parser dotenv express express-session morgan helmet multer mysql2 nunjucks passport passport-kakao passport-local sequelize sequelize-cli cross-env sanitize-html csurf pm2 winston hpp jsonwebtoken uuid axios socket.io sse nod..
import urllib.request import json client_id = "jqMnVOuFgx8MmsSGkkCP" client_secret = "NjSdsP3A" encText = urllib.parse.quote("기생충") url = "https://openapi.naver.com/v1/search/movie.json?query=" + encText # json 결과 # url = "https://openapi.naver.com/v1/search/blog.xml?query=" + encText # xml 결과 request = urllib.request.Request(url) request.add_header("X-Naver-Client-Id",client_id) request.add_hea..
https://django-allauth.readthedocs.io/en/latest/installation.html\ Installation — django-allauth 0.43.0 documentation Post-Installation In your Django root execute the command below to create your database tables: Now start your server, visit your admin pages (e.g. http://localhost:8000/admin/) and follow these steps: Add a Site for your domain, matching settings.SITE_ID django-allauth.readthedo..