일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- REST
- javascript error
- InteliJ
- DART
- Java
- 인텔리제이
- Aspect
- ojdbc6
- node.js
- eqauls-hashcode
- Stream
- 프로그래머스
- 프로젝트 여러 개
- Mac
- 봤어요처리
- class-transformer
- TypeScript
- tecoble
- MySQL
- db
- oracle
- flutter mac 설치
- maven
- SQL
- 코어자바스크립트
- datagrip 한글깨짐
- @RequestBody
- svn
- Spring
- JavaScript
- Today
- Total
목록전체 글 (100)
개발자가 되고 싶은 개발자
TL;DR엑셀>데이터>텍스트/CSV에서 불러오거나데이터그립에서 엑셀파일로 export 하는 것이 가장 간단함문제데이터를 csv 파일로 추출 시 한글 데이터가 깨짐DBeaver / DataGrip 로 추출해도 동일함원인csv파일과 엑셀의 인코딩 방식이 다름해결방안메모장을 이용하는 방법 (windows)엑셀 툴을 이용하는 방법 (windows/mac)datagrip을 이용하는 방법 (windows/mac)메모장을 이용하는 방법csv 파일 우클릭 -> 연결 프로그램 -> 메모장 -> 다른 이름으로 저장 -> 인코딩 UTF-8을 UTF-8(BOM)으로 변경.엑셀을 이용하는 방법데이터 탭 -> 텍스트/CSV에서 -> 인코딩 유니코드(UTF-8) 선택 후 데이터 로드DataGrip 이용하는 방법데이터 내보내기 -..
Preface동일성과 동등성은 객체를 비교할 때 중요한 개념입니다.Java에서는 equals() 메서드와 == 연산자를 통해 구분할 수 있습니다.Spring에서는 lombok의 @EqualsAndHashCode 어노테이션을 이용합니다.equals() 메서드와 == 연산자의 차이객체 비교 대상에서의 차이가 존재합니다.eqauls() 메소드는 객체의 내용을 비교하고, == 연산자는 객체의 참조를 비교합니다.따라서 두 객체의 내용이 같더라도, 서로 다른 객체라면 eqauls()는 true를,== 연산자는 fasle를 반환합니다.동등성평가의 대상인 객체의 내용이 같은지를 비교하는 개념입니다.자바에서는 equals()메서드를 사용하여 객체의 동등성을 비교합니다.class Team { private List ..
Preface이전 포스팅을 작성하게된 본 목적을 이어서 작성합니다.동료분이 노드 관련해서 질문주셔서 문제점을 같이 찾아보다가 class-validator의 옵션이 원인이었고, 몰랐던 옵션에 대해 알게되었습니다.해당 라이브러리에 대한 사용법과 옵션에 대해서 간단하게 정리합니다. class-transformer란 무엇이고 왜 사용할까?Preface동료분이 노드 관련해서 질문주셔서 문제점을 같이 찾아보다가 class-validator의 옵션이 원인이었고, 몰랐던 옵션에 대해 알게되었습니다. 해당 옵션만 정리하려다가 TypeStack의 라이브러리를fullth.tistory.comTypeStackclass-validator도 class-transformer과 동일하게 TypeStack의 프로젝트입니다.스프링처럼 ..
Preface동료분이 노드 관련해서 질문주셔서 문제점을 같이 찾아보다가 class-validator의 옵션이 원인이었고, 몰랐던 옵션에 대해 알게되었습니다. 해당 옵션만 정리하려다가 TypeStack의 라이브러리를 같이 정리하고자 하여 class-transformer 대한 기본적인 내용들을 우선 정리합니다. TypeStack노드와 브라우저를 위한 데코레이터 기반의 프레임워크와 라이브러리를 개발하는 Git Organization입니다.Decorator based frameworks and libraries for Node and browser. TypeStackDecorator based frameworks and libraries for Node and browser. - TypeStackgithub.c..
여러 프로젝트간의 전환을 하나의 웹스톰 윈도우 안에서 탭처럼 이용하는 옵션입니다. TL;DRSettings 에서 Open 검색Open project in에서 New window를 선택 (폴더별로 각각의 윈도우를 오픈하도록 설정하는 옵션)프로젝트를 2개 이상 오픈 (현재까지는 각각 윈도우가 띄워집니다.)상단 Window에서 Merge All Project Windows 선택탭별로 합쳐짐 (세 번째 첨부파일의 Nest.js, Algorithm와 같이 합쳐짐)이후부터 오픈하는 프로젝트들은 하나의 윈도우 안에서 열림System Settings> Project> Open project in 옵션에서 New window 선택위 옵션 선택 후 프로젝트를 두 개 이상 오픈해둡니다. Window>Merge All Pro..
Error() constructor - JavaScript | MDNThe Error() constructor creates Error objects.developer.mozilla.orgTL;DR자바스크립트에 내장된 기본 Error 객체는 name, message 파라미터를 받는다에러를 반환할 때 호출되는 toString 메소드는 name이 존재하지 않을 경우 "Error: "와 message를 붙여서 반환하게 된다.일반적인 에러 관리법보통 에러를 반환할 때는, 기본 에러 타입을 상속받아서 커스텀한 메시지를 반환하는 형태를 이용합니다.interface HttpError { status?: number; message?: string; code?: number; } interf..
Number - JavaScript | MDNNumber values represent floating-point numbers like 37 or -9.25.developer.mozilla.org아래와 같이 일반적인 자료형의 범위를 넘어가는 요청을 방지하고자 하는 작업이 존재하였습니다.처리하는 과정에서 JS의 기초적인 부분에 대해 망각하고 있어 정리합니다.GET /items?page[offset]=0&page[limit]=200000000000000000000 쿼리스트링잠시 쿼리스트링에 대해서 얘기해보겠습니다. 쿼리스트링은 데이터를 전달하는 기본적인 방법 중 하나입니다. URL의 일부이고, 이름에서 알 수 있듯이 문자열입니다. HTTP 요청은 텍스트 기반이므로 쿼리스트링을 포함한 요청은 문자열로 데이..
(이 글은 작성중입니다.) 가벼움 등의 이점으로 노드를 이용하여 많은 기업들이 빠르게 서비스를 만들어 나갔지만 결국 동적언어의 한계로 타입스크립트가 등장했고, 이로 인해 더욱 더 노드가 트렌드가 되며 많은 인기를 끌었습니다. 기존 자바스크립트 라이브러리들도 오픈소스 개발자들로 인해 빠르게 타입지원을 이뤄나가 순식간에 TS를 도입하는 사례가 많았고 빠르게 국내 개발시장에 자리잡은 것 같습니다. 빠르게 나아지고 발전하고 있지만 항상 본인의 업무 환경이 최신 환경일 수는 없습니다. 어느 순간 현재 주어진 불편한 개발환경에 익숙해졌고, 어떤 환경에서도 방법은 존재하기 때문에 합리화했던 부분도 있었습니다. 더 합리적이고 좋은 방법이 있는데 여러 이유와 핑계들로 개선하려하지 않는 자세가 결국 공부의 필요성과 의욕도..
TL;DR아래 순서대로 실행하면 강의가 "봤어요" 처리됩니다.하단의 스크립트를 복사완료처리하고자 하는 인프런 강의 접속개발자도구 실행스크립트 붙여넣기해당 스크립트는 2024-06-28 18:10 기준입니다.인프런의 css 클래스명이 변경되면 동작하지 않을 수 있습니다. 듣기 싫어서 작성한거 아님사내에서 무료로 인프런 강의를 제공해주는 복지를 잘 활용하고 있습니다. 해당 복지는 악용 방지 차원에서 신청 후 3개월간 완강하지 않으면 사비로 강의비를 지불해야 하는 정책이 존재합니다. 최근 어플에 관심이 생겨 강의를 잘 듣고 있었으나, 앱개발 특성 상 빠른 환경의 변화 탓인지 약 500개의 강의 중 거의 절반의 강의가 현재와 달라져 [@Deprecated] 표시를 해주셨습니다. 인프런은 강의 영상에 대해서 1분..
개요 약 2시간이 소요되는 작업이 있었고, Chunk 방식로 Connection pool의 갯수만큼 나눠서 처리하는 작업이다.본문의 제목과 같이 Node.js 환경에서 동작하고 있고, 성능 개선을 시도하려고 한다. PM2와 같은 프로세스 매니저를 이용해서 프로세스 자체를 여러 개 띄워서 해결할 수도 있지만, 문득 원론적으로 Node.js가 싱글/멀티 스레드인지 헷갈려서 해당 개념을 정리하고자 WorkerThreads와 같이 조사한다. node/lib/worker_threads.js at v20.12.1 · nodejs/nodeNode.js JavaScript runtime ✨🐢🚀✨. Contribute to nodejs/node development by creating an account on Gi..
에러 내용Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect. 원인MySQL Workbench의 기본옵션으로 using safe update mode가 켜져 있음.여러 로우를 한꺼번에 업데이트하는 경우를 대비하는 옵션.DataGrip에서는 발생하지 않음. 쿼리로 옵션 끄기SET sql_safe_updates = 0;SELECT @@SQL_SAFE_UPDATES; SELECT 쿼리를 실행할 수 없는 ..
5.7로 업그레이드 했을 때 발생하던 현상이였다. 분명히 같은 IN쿼리지만, 5.6에서는 인덱스를 타던 것이 5.7로 넘어오면서 인덱스를 타지 않게 된 것이다. 정확히 말하자" data-og-host="jobc.tistory.com" data-og-source-url="https://jobc.tistory.com/216" data-og-url="https://jobc.tistory.com/216" data-og-image="https://scrap.kakaocdn.net/dn/dkMLRr/hyVS22A7gf/m6skWeTeDUetMZYstSCFxk/img.png?width=800&height=800&face=0_0_800_800,https://scrap.kakaocdn.net/dn/cc7THx/hyVVy..
🏷️ 설치방법 홈페이지에서 설치하는 방법과 brew로 설치하는 방법이 존재한다. brew로 설치하면 웹 + 앱개발자가 아닌 이상 한 번에 설치가 완료되지 않을 것이다. brew로 설치하는 방법은 간단하니, 문서 아래 부분에 정리한 brew 명령어를 실행해보고 다시 돌아와서 안되어 있는 것을 추가로 설치하는 것을 추천한다. 🏷️ 아래 정리된 명령어 참고 공식사이트와 비교해보면서 보면 수월하게 설치할 수 있다. Flutter Mac 설치 커맨드 | Notion Shell 타입 확인 커맨드 codefactory.notion.site 🏷️ 플러터 사이트 접속 2024년 04월 03일 기준 Flutter - Build apps for any screen Flutter transforms the entire app..
Future Future라는 미래에 받을 값들에 대해서 받을 수 있는 생소한 키워드가 존재한다. 자바에서도 비동기 프로그래밍에서 사용하는 키워드이다. 지금까지 본 결과 TypeScript와 Java의 장점이 합쳐진 언어로 보인다. void main() { Future name = Future.value('Genesis'); Future serial = Future.value(80); Future isMine = Future.value(true); } setTimeout과 같은 역할을 아래 문법으로 사용할 수 있다. Future.delayed(Duration(seconds: 2), () { print('딜레이 종료'); }); 비동기 프로그래밍: futures, async, await DartPad로 비동..
Dart 기본 문법 정리에 이어 Dart에서 Class를 어떻게 사용하는지 정리한다 Dart 기본 문법 빠르게 정리 배열의 인덱스에 접근하는 방법과 같이 프로그래밍 언어의 일반적인 사항은 작성하지 않음. Dart 언어 소개 Dart 프로그램과 주요 개념에 대한 간결한 소개. dart-ko.dev main 최상위 main 함수를 갖음출 fullth.tistory.com 객체 생성 new 연산자는 생략이 가능하다 void main() { Car myCar = Car(); myCar.catalog(); } class Car { String brand = 'Hyundai'; String name = 'Genesis G80'; void catalog() { print('${brand} ${name}'); } } ..
배열의 인덱스에 접근하는 방법과 같이 프로그래밍 언어의 일반적인 사항은 작성하지 않음. Dart 언어 소개 Dart 프로그램과 주요 개념에 대한 간결한 소개. dart-ko.dev main 최상위 main 함수를 갖음출력은 print 함수를 사용 void main() { print('Hello, World!'); } 자료형 문자형, 숫자형, 실수형, 논리형 String, int, double, bool String flutter = 'flutter'; int num = 10; double num2 = 0.5; bool isTrue = true; var var로 타입 지정하지 않고 변수선언 가능 var name = 'fullth'; print(name); var 변수의 타입 var는 선언할 때 타입이 지정..
💻 개요 업무 중 심볼 타입이 객체 프로퍼티의 키로서 사용된 경우 해당 객체의 값을 추출해야 하는 부분이 있었습니다. 간단하게 Object.values로 추출하려 했으나, 의도대로 동작하지 않았고 잘몰랐던 부분이여서 해당 부분과 심볼타입에 대해 정리합니다. Documentation - Symbols Using the JavaScript Symbol primitive in TypeScript www.typescriptlang.org 💻 심볼 타입이란 number, string과 같은 기본 데이터 타입 중 하나 불변하고 유일함 문자열처럼 객체 속성의 키로서 사용될 수 있음 💻 생성하는 방법 Symbol 생성자를 호출하는 것으로 값을 생성 let sym2 = Symbol("key"); let sym3 = Sy..
Preface가독성이 떨어지지만, 사고력 측면에서 생각하지 못한 방식이어서 기록합니다.문제n,m이 number의 공배수이면 1 아니면 0을 return.풀이둘 다 공배수일 경우나머지가 둘 다 0 이기 때문에 ( 0 | | 0 ) 연산은 false가 됩니다.괄호 바깥 부분의 부정연산자(!)로 인해 true가 됩니다.+ 연산자로 인해 논리연산자 true가 숫자형으로 변환되어 1로 반환됩니다.둘 다 공배수가 아닐 경우각 나머지 연산에서 나머지가 존재하면 0이 아니게 되므로 값이 1 이상이 되어 true가 됩니다.괄호 바깥 부분의 부정연산자(!)로 인해 false가 됩니다.+ 연산자로 인해 논리연산자 false가 숫자형으로 변환되어 0으로 반환됩니다. function getCommonMultiple(number..
서론 min 값이 방해했던 이슈는 맞지만, 원인파악의 과정을 정리하기 위함에 가깝습니다. 근본적인 원인은 아님을 참고부탁드립니다. 환경 일정 주기마다 특정 스크립트가 실행되는 스케줄링 서버 쉘 스크립트를 통해 빌드된 코드를 실행하는 구조 비동기로 동작하는 로직이 존재 문제상황 특정 시점부터 모니터링 툴에 SequelizeConnctionAcquireTimeoutError가 발생했다는 알림이 오기 시작했습니다. 서버에서 해당 스크립트의 프로세스가 정상 종료되지 않아 다수의 좀비 프로세스가 남아있어 메모리를 점유하는 문제가 발생했습니다. 실행 로그를 파일로 남기고 있어, 로컬에서 스크립트를 실행했을 때 프로세스의 종료여부를 확인하지 못했습니다. SequelizeConnectionAcquireTimeoutEr..
현재 운영중인 개발 포스팅 공유 오픈채팅방의 링크 모아보기용 노션 페이지 입니다. Article A new tool for teams & individuals that blends everyday work apps into one. fullth.notion.site
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr *본문에서 테이블에 대한 정보는 생략하도록 하겠습니다. *MySQL로 작성하였습니다. 조건 자동차 종류가 '세단' 또는 'SUV' 인 자동차 중 2022년 11월 1일부터 2022년 11월 30일까지 대여 가능하고 30일간의 대여 금액이 50만원 이상 200만원 미만인 자동차에 대해서 자동차 ID, 자동차 종류, 대여 금액(컬럼명: FEE) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 대여 금액을 기준으로 내림차순 정렬하고, 대여 금액이 같은 경우 자동차 종류를 기준으로 오름차순 정렬, 자동차 종류까지 ..
TL;DR 아래 링크의 깃 레포로 들어가서 Repo Clone. npm i 명령어 실행 npm run dev 실행해서 서버 실행 테스트. Git Repository https://github.com/fullth/express-typescript-boilerplate 결과 설치 방법은 Git Repository의 ReadMe.md를 참고하시면 됩니다. 작성한 설치방법에 대한 결과만 해당 게시물에 첨부하도록 하겠습니다. 최종 작성된 프로젝트 구조입니다. (repo에 push 하기 위해 .gitignore 파일만 추가되었습니다.) 정상적으로 서버가 실행되면 http://localhost:3000로 접속 시 위와 같은 문구가 표시됩니다. Ref https://blog.logrocket.com/how-to-set..
TL;DR (Mac) Command + , 단축키로 설정창 접근 Tools -> Terminal -> Shell path를 zsh로 변경 설명 Mac의 Terminal 기본 설정은 /bin/bash로 되어 있습니다. zsh로 설정해주면, Mac에 oh-my-zsh로 커스텀한 터미널로 위와 같이 git branch를 terminal에서 볼 수 있습니다.
문제 상황 일정 주기마다 특정 데이터의 삭제가 필요한 요구사항. Scheduler 서버가 별도로 분리되어 있지 않음. 해당 로직이 관리되고 있는 서버에 문제 발생 시 Scheduler의 기능들도 동작하지 않을 것. 점점 Scheduler 코드들의 중요도와 타 서비스의 의존도가 높아지고 있는 상황. 처리 DB의 Scheduler를 이용하면 성능면에서 우수할 수 있지만, 성능을 고려할만큼의 쿼리가 아니라고 판단. 다른 개발자가 DB를 까지 않으면 해당 로직에 대한 존재 유무를 알 수 없기 때문에 유지보수 측면에서 Server 로직에 작성하는 것이 맞다고 판단하였음. 정리 별도의 Scheduler 서버로 분리하는 것이 먼저라고 생각되었지만, 우선순위에서 계속 밀리다가 결국에는 문제가 발생할 시점이 다가와서야 ..
환경 NestJS + (Docker) MySQL8 + TypeORM 에러 내용 [Nest] 13641 - 2022. 10. 10. 오후 1:15:23 ERROR [TypeOrmModule] Unable to connect to the database. Retrying (2)... Error: Access denied for user 'root'@'172.17.0.1' (using password: YES) 상황 TypeORM과 MySQL 연동 중 접근이 거부됨. 해결방법 -- user 필요할 경우 생성한 후 권한 주면 됨. mysql> CREATE USER 'username'@'172.17.0.1' IDENTIFIED BY 'password'; mysql> GRANT ALL PRIVILEGES ON . ..
Mac에서의 port 종료 아래 명령어를 입력하면 COMMAND, PID, ...와 같은 목록들이 출력됩니다. 조회된 PID를 ${processId}에 입력하시면 됩니다. (현재 접속한 계정의 권한에 따라 sudo 명령어가 필요할 수 있습니다.) lsof -i :${port} ex.) lsof -i :3000 kill ${processId} ex.) kill 48513 Window에서의 port 종료 Mac과 명령어는 다르지만 마찬가지로 port 번호에 대한 PID를 조회한 후, 해당 PID를 종료시키면 됩니다. netstat -ano | findstr ${port} ex.) netstat -ano | findstr 3000 taskkill /f /pid ${processId} ex.) taskkill ..
Ref 이 글은 인프런 퇴근길 밋업 중 김경덕 님의 발표 내용을 정리한 내용입니다. 해당 발표는 인프런에서 발표 자료를 제공하고 있으니, 원문을 참고하시는 것을 추천드립니다. 서론 Node.js는 싱글 스레드인 이벤트 루프로 이벤트들을 처리하며 비동기 API를 사용함. Node.js의 전체 런타임에서 스레드가 하나인 것은 아님. (worker_threads) 만약 Event loop에서 CPU-intensive한 작업을 하면 어떻게 될지와 이를 분석하는 툴을 소개하는 것이 발표 주제. CPU-intensive CPU 연산을 많이 요구해서 오래 CPU를 점유하는 작업. 발표자는 호출 시 20초 간 이벤트 루프를 점유하는 함수를 작성하여 호출하였음. 테스트를 통해 다른 해당 점유로 인하여 다른 request..
싱글턴 패턴은 특정 클래스에 객체 인스턴스가 하나만 만들어지도록 해주는 패턴. 클래스 인스턴스를 하나만 만들고, 그 인스턴스로의 전역 접근을 제공한다. "스스로에게 어떻게 하면 한 클래스의 인스턴스를 두 개 이상 만들지 않게 하지?" 라는 질문을 던져보기. 고전적인 싱글턴 패턴 구현법 export class Singleton { // 하나뿐인 인스턴스를 저장할 변수 private static uniqueInstance: Singleton; // 생성자를 private으로 선언하여 외부에서 생성할 수 없도록 한다. private Singleton() { } public static getInstance(): Singleton { if (!Singleton.uniqueInstance) { Singleton...
https://velog.io/@fullth/%EC%9D%B4%ED%8E%99%ED%8B%B0%EB%B8%8C-%ED%83%80%EC%9E%85%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-6%EC%9E%A5-%ED%83%80%EC%9E%85-%EC%84%A0%EC%96%B8%EA%B3%BC-types 아이템 45 devDependencies에 typescript와 @types 추가하기 npm에선 package.json을 통해 라이브러리들의 버전을 지정한다. npm은 세 가지 종류의 의존성을 구분해서 관리한다. dependencies 현재 프로젝트를 실행하는데 필수적인 라이브러리들이 포함됨. 런타임에 어떤 라이브러리가 사용된다면 해당 항목에 포함되어야 함. 해당 프로젝트를 npm에 공..
any는 프로젝트에 존재하지 않아야 하고 무조건적으로 배척해야 한다고 생각했지만, 챕터에 any다루기가 있는 것으로 보아 피할 수 없는 경우가 반드시 존재하거나, 옳은 방향으로 사용한다면 많은 이점을 가져다 준다거나 등의 이유가 있을 것으로 보임. 어느 방향인지 알아보는 것을 목표로 스터디. 아이템 38 any 타입은 가능한 한 좁은 범위에서만 사용하기 어떤 변수가 A 타입과 동시에 B 타입에 할당 가능하다면, 오류를 제거하는 방법은 두 가지. 변수를 any타입으로 선언 / 함수안의 매개변수를 아이템 39 any를 구체적으로 변형해서 사용하기 아이템 40 함수 안으로 타입 단언문 감추기 아이템 41 any의 진화를 이해하기 아이템 42 모르는 타입의 값에는 any 대신 unknown을 사용하기 아이템 4..