[바미] 제목을 주의해서 넣자.
·
이것저것/일상
안녕하세요. 제가 썼던 포스팅 글 들을 시간이 날 때마다 다시 읽는 편인데요. 오늘 이런 글을 발견했습니다. 글 제목 틀도 망가지고, 글, 제목 전체가 어떤 링크 형태로 바뀌었는데요. 그 이유는 글 제목이 태그에 Node 데이터 넣기 였는데 때문이였습니다. 제목 수정하니 정상적으로 출력되네요.
[바미] Java ConcurrentModificationException 에러
·
프로그래밍(Web)/업무관련
제가 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
·
프로그래밍(Basic)/Javascript(TS,Node)
안녕하세요. 회사에서 저에게 자바스크립트에서 async, await사용시 블락되는 구간에 대해 질문을 받게 되었습니다. 먼저 제 블로그에 그러한 글이 있는지 찾아보았지만 Promise와 async에 관련된 글이 포스팅 된 줄 알았으나 단 한 개도 없더라구요. 그래서 겸사겸사 Javascript에서 비동기 처리에 빠질 수 없는 Promise와 async/await에 대한 내용과 저에게 질문 받은 내용을 포스팅하게 되었습니다. 만으로 2년간 Node.js를 사용하고 있었지만 아직까지 모르는 게 많다는 걸 알게 되네요. 해당 글의 내용이 정확하지 않을 수 있기 때문에 혹시나 틀린 부분이 있으시다면 언제든 지적 부탁드립니다! 물론 Javascript에서 비동기 처리를 다룰 수 있는 방법에는 여러가지가 있지만 많..
[바미] 3 - Way Handshake 와 4 - Way Handshake를 알아봅시다.
·
Networking
안녕하세요. 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 타임존 이슈
·
프로그래밍(Web)/업무관련
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)에 대해
·
프로그래밍(Basic)/이론
선형성(Linearity) 선형성이란 가산성과 동차성 성질을 동시에 만족하는 것을 말합니다. 가산성 (Additivity) 각각의 입력에 대한 결과를 합한 것과 입력을 합쳐서 넣은 결과가 동일하다. 이것이 가산성이고 superposition(중첩)이 가능하다고 한다. 다시 말해 복잡한 입력 x1 + x2에 대한 결과를 알기 어려울 때 이미 잘 알고 있거나 계산하기 쉬운 단순한 입력 x1과 x2를 이용해 각각의 결과를 얻고 단순히 합하기만 하면 되는 것을 말합니다. 동차성 (Homogeneity) 입력을 몇 배 늘리거나 줄였을 때 그 결과도 입력이 조정된 비율만큼 조정되는 성질을 말합니다. 선형성이 중요한 이유 예를 들어 어떤 선형적으로 거동하는 물체를 1N의 힘으로 눌렀을 때 1mm만큼 변형하고 2N의 ..
[바미] RTMP(Real Time Messge Protocol)란?
·
Networking
RTMP?RTMP(Real Time Message Protocol)이란 어도비 회사에서 독점 프로토콜로 비디오나 오디오등을 인터넷 상에서 실시간으로 스트리밍 데이터를 전송해서 불특정 다수들이 받아 볼 수 있도록 하는 기술의 규격을 말합니다.RTMP는 기본 1935포트를 사용하지만 통신에 실패하면 RTMPS(434)나 RTMPT(80)포트를 사용하여 통신하도록 시도합니다. RTMP 패킷 구조RTMP의 패킷 구조는 아래와 같습니다.위 이미지를 통해 RTMP 규격을 거쳐 다른 기기에 전송 되는 구조 라는 것을 알 수 있습니다.대부분 실시간 방송 서비스는 RTMP를 이용해서 스트리밍하게 됩니다. RTMP를 사용하는 서비스대부분이 알고 계시는 방송 플랫폼이 RTMP를 사용하고 있습니다.피드백프로토콜프로그램최대 프..
[바미] WebRTC, STUN서버, TURN서버에 대해
·
Networking
오늘은 WebRTC, STUN서버, TURN서버에 대해서 포스팅하겠습니다.WebRTCWebRTC란 웹 브라우저간에 플러그인의 도움 없이 서로 통신할 수 있도록 설계된 API를 말합니다. 대표적으로 사용하는 회사는 Discord가 있죠.일반적인 통신은 이런 식으로 서버를 거쳐서 클라이언트에 전송하는 방식을 사용합니다.하지만 WebRTC의 기본적인 통신과정은 다음과 같습니다.  대략 이런 식으로 작동한다. 본래 첫 태생 자체는 P2P를 위한 통신방식 입니다. 그러나 아무래도 WebSocket을 이용하기 때문에 직접적으로 IP를 연결하는 방식을 차용하여 방화벽이 존재하거나 허브를(또는 라우터를) 사용하는 NAT환경에서는 연결이 불가능합니다. NAT환경이란 간단하게 말하자면 Wifi 환경과 같이 퍼블릭 IP가 ..
[바미] Command 패턴
·
프로그래밍(Basic)/디자인 패턴(JS)
Command 패턴 명령을 처리하는 객체를 통해 메서드와 실행되는 동작의 결합도를 낮출 수 있다 📜 원문: patterns.dev - command pattern 📜 번역: https://patterns-dev-kr.github.io/design-patterns/command-pattern/ 커맨드 패턴을 사용하면 특정 작업을 실행하는 개체와 메서드를 호출하는 개체를 분리할 수 있습니다. 예를 들어 온라인 음식 배달 플랫폼을 개발한다고 가정해 보죠. 사용자는 주문하거나, 주문한 음식이 어디쯤 왔는지 확인하거나, 주문을 취소할 수 있습니다. class OrderManager() { constructor() { this.orders = [] } placeOrder(order, id) { this.orders..
Bami
기록하며 성장하기