전체 글
-
MySQL 튜닝의 기록 (22.11~12 HospitAI Talk 프로젝트)MySQL 2022. 12. 19. 13:36
AWS RDS 의 parameter group 설정 설정1 (이후 “ warning get packets out of order …” 와 “too many connection error” 가 사라짐) innodb_dedicated_server : true innodb_thread_concurrency : 2 (일단 cpu 코어 수에 맞춤) innodb_thread_sleep_delay: 1000 마이크로초 (default 10000) max_connections 300 wait_timeout 180 interactive_timeout 180 설정2 : Cache Miss Rate가 엄청나게 높아서, thread cache size를 올려봄. thread_cache_size = 32 설정3: Connect..
-
팀과제) 우리를 구한 지오서비스이제 막 슬픔 없이 십오 초 정도가 지났다 2022. 11. 25. 11:40
지오서비스 안내 GEOSERVICE-WEB – GIS Developer 소 개 GEOSERVICE-WEB은 지오서비스(지리, 지도, 위치 등과 관련된 서비스)를 웹에서 제공합니다. 지오서비스웹의 목표는 웹에서 누구나 쉽게 지도 기반의 비지니스를 효과적으로 해결하기 위한 서 www.gisdeveloper.co.kr 지오서비스 주소 http://www.geoservice.co.kr:777/ 이슈 1: 수만개의 주소정보를 위경도로 어떻게 변환할까? 지금 진행 중인 프로젝트에서 서비스의 질을 높일 수 있는 중요한 이슈였지만, 다른 기능구현들에 급급하여 디깅하지 못했다. 4만개의 주소정보에 대한 위경도를 어떻게 받아올 수 있을까? 카카오 맵 api 등에서 받아올 수도 있었겠지만, 호출량에 대한 제한이 있고 그 제..
-
팀과제: 시간복잡도 Big O 표기법이제 막 슬픔 없이 십오 초 정도가 지났다 2022. 11. 5. 13:32
https://www.youtube.com/watch?v=0xGJx6qsNCY&list=PLsMufJgu5933ZkBCHS7bQTx0bncjwi4PK&index=5 Big-O표기법 가장 안좋은 입력 worst case input 에 대한 기본 연산횟수를 측정. 알고리즘 수행시간 = 최악의 입력에 대한 기본연산횟수. 기본연산횟수에 대한 자세한 계산방법은 위의 강의영상을 보도록 하자. Big O 표기법은 함수값을 결정하는 최고차항만으로 간단하게 표기한다. 최고차항의 계수(상수)는 생략한다. O(1) O(n^0)를 표시한 것. 예컨대 이런 간단한 함수. function (a) => {return a+1} 기본연산이 항상 1번뿐이다. T(n) = 1 T(n) = O(1) O(n) T1(n) = 2n-1 T2(n..
-
팀과제 : refreshToken의 저장장소와 임시방편으로서의 session memory store이제 막 슬픔 없이 십오 초 정도가 지났다 2022. 10. 30. 19:37
조건1. 리프레시 토큰에 아무런 유저 정보도 들어있지 않다. 기존에 해오던 방식은 이러하다. 리프레시토큰을 DB의 유저 테이블에 넣는다. acess token이 만료된 유저가 refresh token을 제시하면 db를 조회하여 새 acess token을 발급한다. 굳이 그렇게 하는 이유는 다음 코드에 있다. const jwt = require('jsonwebtoken'); const env = require('../config.env'); class Jwt { sign = function(payload) { return jwt.sign(payload, env.JWT_KEY, { algorithm: 'HS256', expiresIn: 60*60*2 }); } verify = function(token) {..
-
Sequelize) createdAt의 timezone 설정MySQL 2022. 10. 29. 20:05
맡은 파트에서 상품의 주문시간을 노출시켜야 하는데, 널리 알려져있듯이 한국은 근대적 시간으로부터 변방으로 밀려나있다. GMT 시간에 9시간을 더해야 한다. 문제는 타임존을 (timezone: "+09:00" ) 설정해 sequelize는 9시간을 더해 저장하더라도, 자바스크립트는 그 설정을 따르지 않는다는 것. 그러니까, 타임존 설정만 하면 저장(create)은 9시간을 더하여 되지만 읽어올 때(find)는 도로 GMT 시간이 된다. 이 문제를 정면돌파할 방법을 아직은 알지 못하지만, 우회로는 만들어낼 수 있었다. - dateStrings:true로 시간을 그냥 문자열로 가져온다. - typeCast: true 는 ISO8601 의 날짜를 (그냥 못생기게 나온다고 읽는다.) 깔끔하게 정리해준다. type..
-
팀과제 : MySQL 에 JSON 타입 자료를 넣기. JSON.stringify, JSON.parse이제 막 슬픔 없이 십오 초 정도가 지났다 2022. 10. 29. 18:05
자료를 넣을 모델 'use strict'; const { Model } = require('sequelize'); module.exports = (sequelize, DataTypes) => { class Order extends Model { static associate(models) { this.belongsTo(models.User, { foreignKey: 'userId', // targetKey: 'userId', }); this.belongsTo(models.Store, { foreignKey: 'storeId', // targetKey: 'storeId', }); } } Order.init( { orderId: { allowNull: false, autoIncrement: true, pri..
-
팀과제 : Promise.All이제 막 슬픔 없이 십오 초 정도가 지났다 2022. 10. 29. 17:41
몹시 껄끄러워보이는 코드 프로젝트를 하면서 반복문 안에 비동기 함수를 쓸 경우가 생겼다. findOneOrder = async (orderId) => { const foundOrder = await this.orderRepository.findOneOrder(orderId); console.log(foundOrder.get()); const { records } = foundOrder; console.log("records:", records); const parsedRecords = JSON.parse(records); console.log("parsedRecords:", parsedRecords); const menuList = []; for (let i = 0; i < parsedRecords.le..
-
항해99 9기 4주차 (2022_10_19) 조금 뒤늦은 회고카테고리 없음 2022. 10. 19. 09:44
주의! 개발공부 한 달 차의 대단히 자의적이며 주관적인 공부 기록입니다. 개념틀과 어휘가 강학상의 혹은 현업상의 그것과 비교하여 크게 다를 수 있습니다. (사실 일단 일부러 자의적으로 구성해나가고 있는 점도 다소 있습니다.) 때문에 혹여 이 블로그로부터 정보를 길어가는 일은 몹시 적절하지 못합니다. 방문자에게 이 블로그의 쓸모는 관찰 정도에 있을 것입니다. '한 달 차는 이런 걸 보고 이런 오해를 하는 구나' 정도 말이지요. 하기의 혼잡한 글은 트러블 슈팅에 대한 여러 이해의 시도 ( = 많은 오해)에 대한 기록이다. 결론부터 말하면, 자바스크립트가 코드를 읽고 평가하는 순서, 그리고 중복된 라우터의 문제다. 예컨대, 1. routes 폴더 안 posts.js의 이 부분. ( localhost:3000/..