본문 바로가기

분류 전체보기298

Socket vs WebSocket WebSocket 1. 양방향 통신 2. 단방향 통신의 http통신과 대조적 3. 실시간 네트워킹 웹 소켓 이전에 있던 기술 polling 1. 일정 주기마다 요청하여 연결, 실시간 X 2. 보낼 데이터가 없어도 요청을 보낸다. (리소스 낭비) Long Polling 1. 서버에 요청하고 응답을 받을 때까지 종료 X 2. 응답을 받으면 다시 연결을 보낸다. (항상 연결된 상태가 되도록 처리) 3. 많은 양의 메시지가 쏟아질 경우 부하 증가 Streaming 1. 끊임없이 데이터를 수신받는다. (=양방향 불가) 이러한 방식은 http 헤더 정보가 커서 부담이 크다. 웹 소켓의 경우 한번 연결시 http 프로토콜을 이후부터 wss를 사용한다. socket.io는 웹소켓을 지원하지 않는 경우 polling .. 2023. 11. 14.
[C#] WinForm VS WPF 데스트탑 앱 개발을 해야 하는 상황에서 winform과 wpf 사이에서 하나를 골라야 했다. Flutter나 Electron도 고려하긴 했지만 회사에서 C# 사용을 장려하는 분위기가 있어 제외했다. 윈폼은 컨트롤을 배치하면 컨트롤 생성 코드가 자동으로 생성된다. WPF 는 XML 형태의 XAML 문서에 생성된다. WPF 도 XAML 없이 코드만으로 생성 가능. 윈폼은 응용프로그램으로만 실행되지만 WPF 는 응용프로그램 뿐만 아니라 웹브라우저에서도 실행 가능. 윈폼은 윈도우 api 를 이용하여 draw 하는것이고 WPF 는 윈도우 api 사용을 최소화하고 직접 draw 한다. 윈폼은 애니메이션 구현이 어렵고 기본적으로 동기 방식으로 동작한다. WPF는 DirectX 렌더링 방식이기 때문에 연산량이 많고(백.. 2023. 11. 13.
비동기 프로그래밍과 쓰레드 Java의 쓰레드, Kotlin의 Coroutine, C#의 쓰레드, Task Dart의 async, await, Future, Javascript의 async, await, Promise 다양한 비동기 프로그래밍을 접해본 경험이 있으나 나는 비동기 프로그래밍과 멀티쓰레드의 차이를 잘 모르고 있더라. 그래서 이번에 관련 내용을 학습했다. 동기와 비동기 동기는 프로그램의 흐름이 순차적인 것이고 비동기는 프로그램의 흐름이 순차적이지 않은 것이다. 즉, 순서를 보장하지 않는다. 비동기 프로그래밍은 쓰레드를 사용하여 구현되기도 하고, 싱글 쓰레드 기반으로 처리되기도 한다. 자바스크립트에서는 이러한 문제를 Promise를 이용하여 해결한다. 나는 Promise같은 비동기에 대한 처리가 내부적으로는 Thread를 .. 2023. 11. 13.
디자인 패턴에 대한 생각 디자인 패턴은 사용의 이유가 있어야 한다. 단순히 디자인 패턴에 대한 지식을 알고 모르고는 크게 중요하지 않다. 현업에서 실질적으로 사용하는 디자인 패턴은 대체로 정해져 있다. Singleton, Delegate, Observer, Adapter, MVC, MVVM, DI 정도 선에서 정리되는 느낌이다. 솔직히 그렇게까지 거창한 개념도 아니고 개발하다보면 어느 시점에 써야 하는지 감이 온다. 하나하나씩 정리해볼까. Singleton: 객체의 개수를 1개로 고정하고 싶을 때, 게임 프로그래밍이라면 주로 Manager 클래스를 싱글톤으로 둔다. 어플리케이션 내에 1개의 객체만 생성하길 원하는 경우. 예를 들면 Logger 같은 거 만들 때 적합해보인다. Delegate: 프로그래밍 문법적으로 들어가 있는 경.. 2023. 11. 12.
테스트 서버(윈도우) 설정 방법 1. 하드웨어 셋팅 - 본체 구동하여 모니터/키보드/마우스 연결(설정 목적) 그래픽 카드가 있는 곳에 모니터를 꼽는다. USB가 안 잡히면 위치 바꿔서 다시 시도한다. 2. 인터넷 연결 - iptime 기기 뒤에 랜선을 통해 연결하거나 Wifi로 인터넷을 잡는다. 3. 시스템 설정 - 절전 모드 OFF(중간에 프로그램이 멈추면 안 된다.) 4. 원격 설정 - iptime 포트포워딩 설정 참고: https://youtu.be/WgT0KF2fmJc - 방화벽 설정(기본적으로 열려 있음) - 서버 프로그램이 외부망과 통신해야 하는 경우, 포트 열기 - 윈도우 사용자가 없는 경우, 추가 https://wikidocs.net/207095 - 원격 데스크탑 설정 활성화 - 원격 접속 테스트(내부/외부) 5. 윈도우.. 2023. 11. 12.
Apache 웹서버 정리 Apache 다양한 플랫폼에서 실행되는 것을 목표로 설계되었다. 모듈 기반의 기반으로 되어 있어 컴파일/런타임 시기에 원하는 모듈을 추가할 수 있다. 서버는 요청을 처리하고 네트워크 포트에 바인딩하는 MPM과 같이 제공된다. 오래된 소프트웨어와의 안전성을 생각한다면 prefork 방식을, 확장성을 고려한다면 worker나 event 방식을 선택할 수 있다. mpm_winnt 방식을 통해 윈도우 서버에서 네이티브 네트워킹 기능을 사용할 수 있다. (다른 OS에서도 적용됨) https://httpd.apache.org/docs/2.4/en/mpm.html prefork 방식 각 서버 프로세스는 들어오는 요청을 처리한다. 부모 프로세스는 서버풀의 사이즈를 관리한다. 쓰레드에 안전하지 않은 라이브러리와의 호환성.. 2023. 11. 12.
클라이언트와 DB 직접 연결하면 안 되는 이유 클라이언트와 DB를 연결하는 것은 어렵지 않다. 기술적으로 불가능한 것은 아니지만, 일반적인 어플리케이션을 개발할 때 사용하지 않는 방식이다. 클라이언트와 DB 연결의 종류 1. 클라이언트와 로컬 DB 2. 클라이언트와 DB 연결 3. 클라이언트와 서버 연결 주로 사용되는 형태는 1번과 3번이다. 서버와 통신하지 않는 앱을 만드는데 Database를 사용하고 싶다면 SQLite 같은 로컬 DB를 사용하면 된다. 이는 우리 앱이 단순히 자신의 정보를 저장하기 위한 목적으로 DB를 사용한다는 것을 의미한다. 나만의 Todo앱? 나만 사용하는 메모장? 같은 걸 만드는데 사용하면 된다. 만약 서버와 통신하고 싶다면 2번과 3번의 방식이 존재한다. 그렇다면 왜 3번의 방식을 주로 선택하는 것일까? 1. 보안상의 .. 2023. 11. 11.
[Block Chain] 그라운드X 클레이튼 강의 정리 3 21. 웹 프로그래밍 1 ~ 2 (javascript) 자바스크립트는 웹 페이지를 동적으로 제어하기 위해서 고안된 언어이다. SPA 개념이 적용되어 페이지를 바꾸지 않고 현재 페이지 내에서 수정하는 패러다임 web2.0과 함께 활용도가 많아졌다. 22. 응용 사례 비즈니스, 정산, 교환의 매개체, 자산의 역할 23. 공급망 관리 현대 사회에서는 공급망 관리가 필수적, 재료를 어디서 가져올지, 어디에서 가공할지 등등 월마트 Food Trust chain 이런 정보들을 블록체인으로 기록하고 검증. 24. 해외 송금/정산 중앙화된 시스템을 거쳐 갈 수 밖에 없음. 수수료, 즉시성 떨어짐 은행권에서 블록체인을 적용하여 처리 25. 지역 화폐 기업이 시스템적으로 돈을 아낄 수 있다면? 이걸하면 얼마를 아끼고? 보.. 2023. 11. 4.
[Block Chain] 그라운드X 클레이튼 강의 정리 2 10. 트랜잭션 External Account: 사용자가 사용하는 어카운트 Contract Account: 스마트 컨트랙트를 표현하는 어카운트 실제 상태를 만들고, 실질적으로 처리를 하는 것은 External Account 트랜잭션의 목적은 '블록체인 상태의 변경' 보내는 사람과 받는 사람이 지정되어 있음. 트랜잭션을 검증하고 블록에 넣기까지 연산비용이 필요하다. (GAS) 클레이튼은 가스비를 적어낼 수 없음. 사용자끼리 경쟁X 11. 트랜잭션과 서명 트랜잭션은 서명과 함께 한다. 센더에게 필요한 가스비가 있는지 파악. (balance) 12. 블록체인별 트랜잭션 클레이튼 트랜잭션 논스: 어카운트가 몇 번째 트랜잭션을 보내는지 from: sender to: 받는 사람 value: 몇 개의 토큰을 전송 t.. 2023. 11. 4.
[Block Chain] 그라운드X 클레이튼 강의 정리 1 1. 블록체인의 정의와 구성, 해시 함수 블록체인: 정보를 블록이라고 하는 단위로 저장하여 저장된 블록들을 체인 형태로 묶은 저장 기술 해시함수: 임의의 길이의 데이터를 고정된 데이터로 매핑하는 함수 하나의 데이터는 하나의 해시값만 존재. 길이는 동일 16진수 문자를 32개를 저장하여 해시를 표현 => sha256 2. 블록체인의 구조, 주요 용어 블록은 이전 블록의 해시 포인터를 가진다. 뒤의 블록이 앞 블록의 해시 포인터를 가진다. 헤더는 블록을 설명하는 정보와 이전 블록의 해시를 포함한다. 블록 높이(뎁스), 블록 생성 주기 생성주기에 따라 나의 트랜잭션이 처리될지 안 될지가 결정된다. 적어도 N초가 걸린다. 이런 느낌. 3. 블록체인 네트워크 p2p 네트워크이다. 모든 노드가 같은 데이터를 가지고.. 2023. 11. 4.