전체 글

전체 글

    [바미] Java 스케줄러 삽질기.

    안녕하세요. 간만에 또 찾아왔습니다. 한 동안 스케줄러 때문에 삽질 아닌 삽질을 해서 스케줄러와 관련된 부분들을 나누고자 글을 올립니다. 제가 경험한 스케줄러의 형태는 2종류였습니다. 만약 매일 지정된 시간의 10분에 한 번 실행되는 스케줄러라 가정했을 때 서버 시작으로부터 10분에 실행되는 스케줄러. 지정된 시간의 10분에 실행되는 스케줄러. 였습니다. 저의 경우 매일 지정된 시간에 해야 했기 때문에 당연히 후자의 스케줄러를 추가적으로 만들어야 했습니다. 그 후엔 기존 코드에 작성되어 있는 형태대로 하루에 돌도록 만들었습니다. 그런데 매일 하루에 돌도록 설계되어 있는 스케줄러가 매일 지정된 시간에 돌지 않는 것이 였습니다. 몇 칠을 삽질하며 알게 된 것이 현재 설계되어 있는 스케줄러의 형태는 후자쪽이 ..

    [바미] Java - Garbage Collection

    들어가기전에.. 안녕하세요. 하루 최소 600만건의 데이터를 처리해주는 서버를 Java(Maven)으로 개발하여 운영하고 있습니다. 서버 메모리가 점진적으로 0.1%씩 올라가는 것을 목격하게 되었고, 이를 해결하기 위해 Java 안에서 데이터들을 처리할 때 새롭게 생성하는 인스턴스를 null로 초기화를 해주었지만 여전히 메모리가 누수되는 현상이 발생되어 이 문제가 가비지 컬렉션과 관련이 있을 것 같아 찾아보던 것을 포스팅 해봅니다. Garbage Collection? 프로그램을 개발 하다 보면 유효하지 않은 메모리인 가바지(Garbage)가 발생하게 됩니다. C언어의 경우 free()라는 함수를 통해 직접 메모리를 해제해주어야 하지만 Java나 Kotlin을 이용해 개발을 하다 보면 JVM의 가비지 컬렉..

    [바미] 제목을 주의해서 넣자.

    안녕하세요. 제가 썼던 포스팅 글 들을 시간이 날 때마다 다시 읽는 편인데요. 오늘 이런 글을 발견했습니다. 글 제목 틀도 망가지고, 글, 제목 전체가 어떤 링크 형태로 바뀌었는데요. 그 이유는 글 제목이 태그에 Node 데이터 넣기 였는데 때문이였습니다. 제목 수정하니 정상적으로 출력되네요.

    [바미] Java ConcurrentModificationException 에러

    제가 Java에서 JsonArray를 사용하여 한 줄씩 가져오는 데이터를 하나로 묶기위해 dataAll()함수를 사용하다 위의 에러를 경험하게 되었습니다. JsonArray jsonArray = Utilfunc.getJsonString(onlineData, "data"); JsonArray data = new JsonArray(); for (JsonElement je : msg.getAsJsonObject().get("data").getAsJsonArray()) { JsonObject jo = new JsonObject(); jo.addProperty("symbol", je.getAsJsonObject().get("symbol").getAsString()); jo.addProperty("close_pri..

    [바미] Promise와 async/await

    안녕하세요. 회사에서 저에게 자바스크립트에서 async, await사용시 블락되는 구간에 대해 질문을 받게 되었습니다. 먼저 제 블로그에 그러한 글이 있는지 찾아보았지만 Promise와 async에 관련된 글이 포스팅 된 줄 알았으나 단 한 개도 없더라구요. 그래서 겸사겸사 Javascript에서 비동기 처리에 빠질 수 없는 Promise와 async/await에 대한 내용과 저에게 질문 받은 내용을 포스팅하게 되었습니다. 만으로 2년간 Node.js를 사용하고 있었지만 아직까지 모르는 게 많다는 걸 알게 되네요. 해당 글의 내용이 정확하지 않을 수 있기 때문에 혹시나 틀린 부분이 있으시다면 언제든 지적 부탁드립니다! 물론 Javascript에서 비동기 처리를 다룰 수 있는 방법에는 여러가지가 있지만 많..

    [바미] 3 - Way Handshake 와 4 - Way Handshake를 알아봅시다.

    안녕하세요. TCP의 3-Way Handshake 와 4-Way Handshake에 대해 알아보기 전에, 우선 아래의 내용에 대해 알아보도록 하겠습니다. Transport Layer OSI 7 레이어에서 Transport Layer에는 양 끝단(End to end)의 사용자들이 신뢰성있는 데이터를 주고 받을 수 있도록 해 주어, 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해줍니다. 전송 계층은 인터넷의 기반인 TCP/IP 참조 모델과 일반적인 네트워크 모델인 개방형 시스템 간 상호 접속 (Open Systems Interconnection, OSI) 모두 포함하고 있죠. 전송 프로토콜 중 잘 알려진 것이 바로 TCP와 UDP입니다. Transport Layer VS Network L..

    [바미] TypeORM 타임존 이슈

    Typescript로 클라이언트 서버 개발 때 발견한 이슈를 공유하고자 글을 쓰게 되었습니다. 서버와 클라이언트가 Socket.io 통신을 통해 TypeORM을 사용하여 특정값을 조회한 데이터를 주고 받는 작업중에 TypeORM에서 조회한 타임존 값과 실제 테이블 제 컬럼값이 다른 것을 발견하였습니다. 예를들어 DB 내 실제 값은 2022-10-04 00:00:00 인데, 이 값을 TypeORM으로 가져왔을 때는 2022-10-03 15:00:00으로 변경되어 출력되어 있었던 것이죠. 처음에는 개발 서버 내부의 timezone이 상이해서 그런줄 알았는데 알고보니 코드 상에서 DB 연결을 위한 ORM 설정 부분에서 timezone 파라미터를 추가해주면 됐었습니다. const connectionInfo = ..

    [바미] 선형성(Linearity)에 대해

    선형성(Linearity) 선형성이란 가산성과 동차성 성질을 동시에 만족하는 것을 말합니다. 가산성 (Additivity) 각각의 입력에 대한 결과를 합한 것과 입력을 합쳐서 넣은 결과가 동일하다. 이것이 가산성이고 superposition(중첩)이 가능하다고 한다. 다시 말해 복잡한 입력 x1 + x2에 대한 결과를 알기 어려울 때 이미 잘 알고 있거나 계산하기 쉬운 단순한 입력 x1과 x2를 이용해 각각의 결과를 얻고 단순히 합하기만 하면 되는 것을 말합니다. 동차성 (Homogeneity) 입력을 몇 배 늘리거나 줄였을 때 그 결과도 입력이 조정된 비율만큼 조정되는 성질을 말합니다. 선형성이 중요한 이유 예를 들어 어떤 선형적으로 거동하는 물체를 1N의 힘으로 눌렀을 때 1mm만큼 변형하고 2N의 ..

    [바미] RTMP(Real Time Messge Protocol)란?

    RTMP? RTMP(Real Time Message Protocol)이란 어도비 회사에서 독점 프로토콜로 비디오나 오디오등을 인터넷 상에서 실시간으로 스트리밍 데이터를 전송해서 불특정 다수들이 받아 볼 수 있도록 하는 기술의 규격을 말합니다. RTMP는 기본 1935포트를 사용하지만 통신에 실패하면 RTMPS(434)나 RTMPT(80)포트를 사용하여 통신하도록 시도합니다. RTMP 패킷 구조 RTMP의 패킷 구조는 아래와 같습니다. 위 이미지를 통해 RTMP 규격을 거쳐 다른 기기에 전송 되는 구조 라는 것을 알 수 있습니다. 대부분 실시간 방송 서비스는 RTMP를 이용해서 스트리밍하게 됩니다. RTMP를 사용하는 서비스 대부분이 알고 계시는 방송 플랫폼이 RTMP를 사용하고 있습니다. 피드백 프로토콜..