반응형
전체 글

전체 글

    첫 프로젝트 오픈

    이직하고 처음으로 진행했던 프로젝트가 오픈 했다. 나는 백엔드쪽 개발에 참여하였다. 백엔드는 혼자 진행했다.처음으로 node.js, elasticsearch, redis 등을 사용해서 개발했고 aws로 운용되는것을 경험했다. 어려움이 많았지만 재밌었다. java만 하다가 node.js를 하게 되었고, rdb만 하다가 nosql을 처음 하게 되었지만 어느 것이든 매력이 있는 것 같다. 견문을 넓힐 수 있었고 해보고 싶던 경험을 할 수 있어 좋았다. 이제 입사한지 2개월 반정도 되었는데 업무보다는 사람들과 친해지는게 아직 어렵다. 올해 가기전에는 조금 친해지려나.. 서비스 소개https://m.wonder-shopping.com/ticket?isOpenStack=Y&__wspview_type=40위메프의 메..

    Elasticsearch에서 refresh 정리

    Elasticsearch에서 document를 업데이트하고 바로 해당 정보를 조회하려고 했다.하지만 조회가 되지 않았다. 분명이 업데이트가 종료된 것을 확인 했는데 왜 그런지 의문이 들었다. 그래서 찾아봤는데 document가 업데이트가 되고나서 인덱스에서 실제로 조회가 될 수있는 상태가 되기위해서는 일정시간이 필요한 것 같다.자세히는 모르지만 다시 인덱싱을 걸기 때문에 그러는건 아닌가 생각된다. 그래서 이런경우에 업데이트가 종료 되었다고 알리는 시간을 검색이 가능하게 변경된 시간까지 포함해서 알려주도록 하는 옵션이 존재한다. 그렇게 되면 업데이트가 되고 검색이 가능한줄 알고 프로그램을 작성하다가 버그가 발생하는 비율을 줄일 수 있다. 일반적인 bulkInsert나 update, create같은 명령에는..

    Elasticsearch에서 search_after 기능 사용하여 조회하기

    elasticsearch에서 search_after를 이용하여 데이터를 조회하는 방법을 정리해보자.우선 사용할 인덱스를 생성하자. 12345678910111213141516171819202122PUT wedul{ "mappings": { "cjung": { "properties": { "id": { "type": "keyword" }, "name": { "type": "text", "analyzer": "nori", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } } } } }}Colored by Color Scriptercs 생성된 인덱스에 데이터 몇개만 삽입하여보자.123456789101112131415POST wedul/cju..

    애플워치 4 스포츠 스페이스 그레이 gps 모델 가로수길에서 픽업 후기!

    애플워치 4를 여자친구에게 결혼 선물로 받았다. 평소에 시계는 좋아하지만 애플워치는 너무 비싸서 사지 않고 항상 샤오미 미밴드만 사용했었다.샤오미 사용한지 2년정도 되어가는데 여자친구가 결혼 선물로 이번에 출시한 애플워치 4를 사줬다. 애플빠인 나에게는 너무 좋은 선물이었다.이제 애플의 모든 제품을 다가지고 있다. 진정한 애플맨이 되었다. 돈이 많은건 아니다. ㅋㅋ 그만큼 남들처럼 옷이나 여행 취미가 많이 없어서 많이 모였던 것 같다. 우선 처음 애플워치를 구경하고 구매하려고 도움주시는분들에게 말했으나 재고가 없다고 했다.사고 싶어도 살수가 없을 정도로 인기가 많다니 놀랬다. 그래서 인터넷으로 재고가 있으면 바로 출력되니 확인 후 바로 예약해서 오라고 하셔서 어제부터 계속 모니터링 했다.성격이 급해서 사..

    Promise에서 Unhandled Rejection 설명

    Rejection은 프로미스에서 발생하는 에러를 칭한다. Es6에서는 비동기 동작의 상태 표현으로 "pending", "fulfilled", "rejected" 세가지가 정의 되었다. pending은 비동기 작업중인 것을 나타내고 fulfilled는 비동기 동작이 완료된것을 표현한다. 그리고 rejected는 비동기가 실패한 것을 표현해준다. promise에서 작업이 성공할 경우에는 resolve를 실행하고 실패할 경우에는 reject를 수행한다. 그럼 Promise에서 에러가 발생했을 때는 어떻게 처리하는게 좋을 까? 대부분은 에러가 발생했을 때는 promise chaining을 사용해서 .catch(err => { } );로 잡을 수 있다. 그럼 이런 경우에도 정상적으로 잡힐까? 12new Promi..

    node js에서 stream pipe 사용시 에러 처리 방법

    node js에서 데이터를 stream을 사용하여 처리하고 pipe를 사용해서 계속해서 stream을 가지고 작업을 이어나갈 수 있다. 그런데 pipe를 통해서 작업을 진행하다 보니까 중간에 오류가 발생했을 때 try / catch 로는 정상적으로 처리하지 못하는 경우가 발생했다. 나에 경우에는 에러가 발생했을 때 try / catch에서 잡히지 않아서 프로그램이 Unhandled Promise Rejections를 출력 하며 죽어버렸다. 그 예는 다음과 같이 request를 통해서 받은 이미지를 sharp 라이브러리를 통해서 이미지 크기를 변경하려고 할 때 발생했다.1try { await request('https://image.toast.com/aaaaab/ticketlink/TKL_3/ion_mai..

    [공유] mysql/mariadb utf8mb4 언어셋 설명

    mysql 을 사용하다보면 utf8 캐릭터 셋을 자주 사용한다. 그 중에서도 여러 패키지가 존재하는데 잘 알지 못하고 사용하는 것 같다. 주로 사용하는 캐릭터 셋을 정리된 글을 공유해본다. 핵심 부분만 정리했다. 자세한 내용은 아래 출저 페이지에가서 보면 좋은 공부가 될 것 같다. - Mysql에서 주로 보는 Charset과 collection이 있는데 각각 문자집합과 정렬을 뜻한다.- utf8은 1 ~ 4 바이트까지 저장할 수 있도록 설계된 가변 바이트 자료형이다.- Mysql에서는 utf8을 3바이트 가변 자료형으로 저장한다. (chraset: utf8, collation: utf8_general_ci)- emoji와 같은 문자는 4바이트이기 때문에 해당 필드에 저장하면 문제 발생- Mysql 5.5..

    스프링 부트에서 사용하는 JPA 기능 정리

    스프링 프레임워크에서 제공하는 JPA는 별도의 구현 클래스 없이 인터페이스만을 사용할 수 있도록 제공한다. 제공되는 인터페이스 JpaRepository는 실행시점에 자동으로 인터페이스 내용을 연결하는 엔티티에 맞게 자동으로 구현해준다. 만약 스프링 JPA 인터페이스에서 제공하지 않는 기능을 사용하고 싶을 때는 메서드명을 특정한 규칙대로 만들어서 사용하면 인터페이스가 알아서 그 이름에 맞는 JPQL을 만들어서 실행해준다. 스프링 JPA 인터페이스는 Mysql같은 RDBMS 뿐만 아니라 Mongodb, Redis와 같은 NoSQL에도 동일한 인터페이스를 사용해서 기능을 사용할 수 있도록 제공해준다. 공통으로 사용할 수 있기에 아주 편리하다. 우선 스프링 부트에 JPA를 사용하기 위해서 Gradle에 라이브러..

    @MappedSuperclass를 이용한 부모 매핑정보 사용하기

    기존에는 부모의 엔티티에 접근해서 정보를 가져와서 사용했다. 하지만 그러면 너무 비용이 크기 때문에 이를 위해서 부모클래스의 매핑정보만 가지고와서 사용할 수 있는 방법이 있다.@MappedSuperClass 어노테이션을 사용하면 부모 엔티티 접근 없이 부모 클래스의 매핑정보를 사용할 수 있다. 예를들어 선생님과 학생을 담당하는 클래스에서 id와 name은 공통 속성이다. 이런 고유 속성을 부여해주는 부모클래스를 만들고 이를 상속받은 Student와 Teacher 클래스를 만들어보자. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647/** * springboottest * * @author wedul *..

    앱코 K590 청축 키보드 후기

    집에서 사용할 키보드로 청축 저렴한 모델을 찾았다. 그래도 너무 인지도가 없는 브랜드는 구매하기 꺼려졌다. 그래서 어느정도 키보드 쪽에서 네이밍이 있는 앱코에서 구매했다. 구매는 위메프에서 했다. https://front.wemakeprice.com/product/101457229 제품모델명은 앱코 K590이다. 검은색은 하도 많아서 이번에 하얀색으로 구매했다. 소리도 좋고 키보드 느낌도 좋다. 요새는 청축이 워낙 많다보니까 가성비 좋은 브랜드가 많은 것 같다. 그런데 가격이 가격이다보니 사용하다보면 스프링 튕기는 소리가 조금은 난다. 그래도 거슬리는 정도는 아니다. 색은 총 6가지 형태로 조절 할 수 있다. 아무리 조심히 쳐도 청축은 청축인것 같다. ㅋㅋ 소리가 크다. 만족스럽다. 위메프에서 요새 블랙..

반응형