기본(primitive) 타입: Int null이 안됨 객체여서 내부적으로 빌트인 메소드(연산자)를 쓸 수 있다. 레퍼(Wrapper) 타입: Integer 제네릭스에서 사용할 수 있다. null 처리가 가능하지만, 언박싱(Integer -> Int)을 하지 않으면 연산이 불가능하다.
이전의 포스트에서 중복된 Object로 구성된 배열에서 ES6의 filter()를 사용하여 중복을 제거하였었다. Object로 구성된 배열에서 중복 제거하기 User [{"id": 1, "name": "testman", "description": "For Test" ... }, ....]와 같이 구성되어 있는 다수의 리턴 값에서 중복을 제거할 일이 있었다. 원래는 Set을 활용하여 중복 요소를 제거하려 하였지만, 리턴.. eight20.tistory.com User [{"id": 1, "name": "testman", "description": "For Test" ... }, ....]와 같이 구성되어 있는 다수의 리턴 값에서 중복을 제거할 때, 아래와 같이 ES6의 Map( )를 사용하여 중복을 제거하..
createQueryBuilder( )를 사용하여 Get 메소드 API를 구성하였는데 npm run start:dev로 서버를 시작하니 TypeError: Converting circular structure to JSON --> starting at object with constructor 'ClientRequest' 와 같이 에러가 발생되었다. 원인은 마지막에 .getOne( ) 또는 .getMany( )를 추가하지 않아서 발생한 일이었다. 위와 같이 마지막에 .getOne()을 추가하였더니 에러가 발생하지 않았다.
User [{"id": 1, "name": "testman", "description": "For Test" ... }, ....]와 같이 구성되어 있는 다수의 리턴 값에서 중복을 제거할 일이 있었다. 원래는 Set을 활용하여 중복 요소를 제거하려 하였지만, 리턴 값의 자료형이 User[ ]와 같은 Objects[ ]여서 제거가 되지않았다. 아래와 같이 ES6의 filter( )를 사용하여 중복을 제거하였다. const User = [{"id": 1, "name": "testman", "description": "For Test" ... }, ....]; // 기본 중복된 User 리스트 const removeDupUser = User.filter((item, index, array) => index =..
어드민에서 유저 정보와 게시글 정보를 한 개의 CSV 파일로 export하여 다운로드 가능하게 해야했다. react-csv 와 react-query를 활용하여 다운로드 버튼 클릭시 CSV 파일이 지정한 형식대로 생성되어 다운로드하는 방식으로 하였다. react-csv Build CSV files on the fly basing on Array/literal object of data www.npmjs.com DownloadButton.tsx를 아래와 같이 함수형 컴포넌트로 구성하였다. export const DownloadButton = () => { const { data: users } = useQuery('/admin/users', fetcher); // admin api에서 유저 정보를 가져옵니다..
PostgreSQL의 경우, MySQL과는 다르게 대소문자를 구별하는 case-sensitive한 특성을 가진다. 이전 포스트에서 createQueryBuilder와 SQL문의 LIKE를 사용하여 검색 API를 만들었다. 해당 포스트에서 LIKE문을 사용하였는데 데이터베이스를 PostgreSQL을 사용하고 있어 대소문자를 구분해서 검색하려면 ILIKE를 사용해야한다. LIKE문과 ILIKE문의 차이점은 LIKE문의 경우, 대소문자를 구분하지 못하지만, ILIKE문을 활용할 경우, 대소문자를 구분한다.(PostgreSQL 한정)
@Query를 활용하여 ?word={검색 단어}의 형식으로 검색 API를 구성하였다. // story.service.ts async findByWord(word: string) { return await this.repository.find({ where: [{ title: word }], select: ['id'], }); 위의 코드와 같이 구성하면, 해당 검색 단어와 일치하는 결과'만' 검색할 수 있다. 예를 들어 스토리의 제목이 "빨간 의자를 포함된 스토리" 이면 "빨간 의자" 혹은 "스토리"의 단어로는 해당 스토리가 검색되지 않는다. 검색 단어를 포함하고 있는 검색 결과를 얻기 위해서는 SQL문의 LIKE를 사용하면 된다. NestJS와 TypeORM을 사용하고 있기 때문에 TypeORM의 cre..
개발/Java 2021. 10. 15. 08:20
기본(primitive) 타입: Int null이 안됨 객체여서 내부적으로 빌트인 메소드(연산자)를 쓸 수 있다. 레퍼(Wrapper) 타입: Integer 제네릭스에서 사용할 수 있다. null 처리가 가능하지만, 언박싱(Integer -> Int)을 하지 않으면 연산이 불가능하다.
개발/NestJS 2021. 10. 14. 08:20
이전의 포스트에서 중복된 Object로 구성된 배열에서 ES6의 filter()를 사용하여 중복을 제거하였었다. Object로 구성된 배열에서 중복 제거하기 User [{"id": 1, "name": "testman", "description": "For Test" ... }, ....]와 같이 구성되어 있는 다수의 리턴 값에서 중복을 제거할 일이 있었다. 원래는 Set을 활용하여 중복 요소를 제거하려 하였지만, 리턴.. eight20.tistory.com User [{"id": 1, "name": "testman", "description": "For Test" ... }, ....]와 같이 구성되어 있는 다수의 리턴 값에서 중복을 제거할 때, 아래와 같이 ES6의 Map( )를 사용하여 중복을 제거하..
개발/TypeORM 2021. 10. 13. 08:20
createQueryBuilder( )를 사용하여 Get 메소드 API를 구성하였는데 npm run start:dev로 서버를 시작하니 TypeError: Converting circular structure to JSON --> starting at object with constructor 'ClientRequest' 와 같이 에러가 발생되었다. 원인은 마지막에 .getOne( ) 또는 .getMany( )를 추가하지 않아서 발생한 일이었다. 위와 같이 마지막에 .getOne()을 추가하였더니 에러가 발생하지 않았다.
개발/NestJS 2021. 10. 12. 08:20
User [{"id": 1, "name": "testman", "description": "For Test" ... }, ....]와 같이 구성되어 있는 다수의 리턴 값에서 중복을 제거할 일이 있었다. 원래는 Set을 활용하여 중복 요소를 제거하려 하였지만, 리턴 값의 자료형이 User[ ]와 같은 Objects[ ]여서 제거가 되지않았다. 아래와 같이 ES6의 filter( )를 사용하여 중복을 제거하였다. const User = [{"id": 1, "name": "testman", "description": "For Test" ... }, ....]; // 기본 중복된 User 리스트 const removeDupUser = User.filter((item, index, array) => index =..
개발/Flask 2021. 10. 8. 08:20
원인은 Users라는 이름으로 Namespace를 정의하고 같은 이름으로 Users 클래스를 정의해서 중복되었기 때문이다. Users = Namespace를 User = Namespace로 변경하니 아래와 같이 정상적으로 작동하였다.
개발/Java 2021. 10. 7. 08:20
자바 string buffer와 string builder => multi thread 지원 차이 String vs StringBuffer/Builder String은 immutable( 불변 )성을 가짐 String Buffer & Builder는 mutable( 가변 )을 가짐 StringBuffer vs String Builder StringBuffer는 동기화 키워드를 지원하여 멀티쓰레드 환경에서 안전함 StringBuilder는 동기화 미지원으로 단일 쓰레드의 성능은 StringBuffer보다 뛰어남 String : 문자열 연산이 적고, 멀티쓰레드 환경에 적합 StringBuffer : 문자열 연산이 많고, 멀티쓰레드 환경에 적합 StringBuilder : 문자열 연산이 많고, 단일쓰레드 환경..
개발/ReactJS 2021. 10. 6. 08:20
어드민에서 유저 정보와 게시글 정보를 한 개의 CSV 파일로 export하여 다운로드 가능하게 해야했다. react-csv 와 react-query를 활용하여 다운로드 버튼 클릭시 CSV 파일이 지정한 형식대로 생성되어 다운로드하는 방식으로 하였다. react-csv Build CSV files on the fly basing on Array/literal object of data www.npmjs.com DownloadButton.tsx를 아래와 같이 함수형 컴포넌트로 구성하였다. export const DownloadButton = () => { const { data: users } = useQuery('/admin/users', fetcher); // admin api에서 유저 정보를 가져옵니다..
개발/PostgreSQL 2021. 10. 5. 08:20
PostgreSQL의 경우, MySQL과는 다르게 대소문자를 구별하는 case-sensitive한 특성을 가진다. 이전 포스트에서 createQueryBuilder와 SQL문의 LIKE를 사용하여 검색 API를 만들었다. 해당 포스트에서 LIKE문을 사용하였는데 데이터베이스를 PostgreSQL을 사용하고 있어 대소문자를 구분해서 검색하려면 ILIKE를 사용해야한다. LIKE문과 ILIKE문의 차이점은 LIKE문의 경우, 대소문자를 구분하지 못하지만, ILIKE문을 활용할 경우, 대소문자를 구분한다.(PostgreSQL 한정)
개발/TypeORM 2021. 10. 2. 08:20
@Query를 활용하여 ?word={검색 단어}의 형식으로 검색 API를 구성하였다. // story.service.ts async findByWord(word: string) { return await this.repository.find({ where: [{ title: word }], select: ['id'], }); 위의 코드와 같이 구성하면, 해당 검색 단어와 일치하는 결과'만' 검색할 수 있다. 예를 들어 스토리의 제목이 "빨간 의자를 포함된 스토리" 이면 "빨간 의자" 혹은 "스토리"의 단어로는 해당 스토리가 검색되지 않는다. 검색 단어를 포함하고 있는 검색 결과를 얻기 위해서는 SQL문의 LIKE를 사용하면 된다. NestJS와 TypeORM을 사용하고 있기 때문에 TypeORM의 cre..
개발/NestJS 2021. 10. 1. 08:20
알림톡을 추가할 때, 카카오 비즈니스를 통해 직접하는 것보다 Bizm이라는 알림톡 대행 서비스를 사용하는 것이 편리하다. 비즈엠 - 카카오톡 비즈메시지 공식딜러사 알림톡 친구톡 싸고 편하게 전송 www.bizmsg.kr Bizm 가이드를 따라면, 프로필과 userid 값을 받을 수 있다. // bizm.service.ts @Injectable() export class BizmService { async sendMessage(phone: string, templateId: string, message: string) { return axios.post( 'https://alimtalk-api.bizmsg.kr/v2/sender/send', [ { message_type: 'at', phn: '82' + ..