반응형 0. 이론11 NodeJS Event Loop 동작 원리 (feat. process.nextTick) 먼저, 이 이론을 왜 알아야 하는가에 대한 소스코드를 먼저 설명한다. 아래의 소스코드에서 "test start !", "1s END!", "test end!"의 출력 순서와 시간은 어떻게 될까? ("test start!"의 시간은 0초, for문은 약 3초가 걸린다고 가정한다) console.log("test start! ", new Date().toString()); setTimeout(function() { console.log("1s END! ", new Date().toString()); }, 1000); for(var i = 0; i < 5000000000; i++) { } console.log("test end! ", new Date().toString()); "test start !"(0초).. 0. 이론 2024. 3. 30. UI 디자이너 UX 디자이너 차이점 보통 구인구직에서 UI/UX Designer를 구하는 공고가 많이 보이긴 한데, UI에 대해서는 User Interface의 뜻을 잘 알고 있지만, UX는 모르는 사람이 꽤 있다. UI와 UX가 항상 따라붙어서 비슷한 개념이라고 생각하는 사람이 있지만, 어느 한편에는 비슷하면서도 어느 한편으로는 다르다. UI(User Interface)와 UX(User Experience)의 차이점에 대해서, 아주 짧게 느낌적으로 비교를 해보자. 정의 UI(User Interface) 사용자가 바라보는 인터페이스로 크기, 소리, 빛 등의 제품의 외양적인 디자인을 뜻한다. 즉 사용자에게 "세련되어 보인다", "~풍의 디자인이다", "매력적이다"라는 느낌을 주는 디자인이다. UX(User Experience) 사용자의 경험.. 0. 이론 2024. 3. 18. DNS란?(DNS 구성) DNS 구성에 대해 설명을 할 것인데, 공식문서가 아닌 내가 알고 있는 지식(+ 들은 얘기, 블로그 참조)을 적은 내용으로 틀린 정보가 있을 수도 있다. (피드백 주시면 감사감사...) 1. DNS란? DNS(Domain Name System)란 외우기 쉬운 text형태의 Host Domain Name을 외우기 힘든 숫자형태의 IP주소를 text로 변환해 주는 시스템이다. 좀 더 자세히 설명하자면 네이버를 접속하기 위해 주소창에 "223.130.195.200"을 입력해야한다. (글 쓴 기준 IP) 이 숫자는 의미가 없기 때문에 외우기가 힘드며 다음, 유튜브, 티스토리 등 외워야 할 사이트가 많으면 헷갈리기 일쑤이다. 외우기 쉽게 알파벳, "www.naver.com"이라는 텍스트로 입력하면 "223.130.. 0. 이론 2024. 1. 27. Throttle vs Debounce 진짜 간랸하게 요약해서 설명하자면 Throttel과 Debounce의 공통점은 잦은 요청에 의해 퍼포먼스가 떨어질 때 해결방안이라고 할 수 있다. 처음에는 DMA와 비슷하다 생각했지만 엄연히 다르고... 느낌은? 비슷하다 할 수 있다. 예를 들어보자. 임의의 인터럽트가 0.01초마다 요청된다고 생각해보자(우선순위는 최상위). 그러면 우선순위에 의해 0.01초마다 수행이 될텐데, 그동안 다른 것은 수행하지 못한다. 즉 비효율적이다. 좀 더 자세하게 예를 들어보자. javascript에서 resize 이벤트 요청을 구현했다고 했을 때, 커서를 잡고 브라우저를 resize할 때 무수히 많은 요청이 일어난다. 1에서 100까지 크기를 resize할떄 100번의 이벤트가 일어날 것인데, 과연 유저는 1에서 100.. 0. 이론 2023. 1. 28. Blocking & Non-blocking I/O + Synchronous&Asynchronous I/O 차이점 유튜브 널널한 개발자 TV를 보다가 어떠한 댓글에 Non-blocking과 Asynchronous가 다르다는 댓글에 구글링을 좀 했다. Blocking&Synchronous와 Non-blocking / Asynchonous의 차이점을 크게 보면 이해가 빠른데 자세히 보니 헷갈리더라. 두리뭉실하게 같다고 보는 블로그가 있고 개념이 비슷한데 엄연히 다르다는 블로그도 있고 비동기와 논블록만 다르다는 글도 있고... 일단 내가 맞다고 생각하는 것들로 써본다... 편의상 I/O는 생략한다. Blocking & Synchronous 공통점은 request 후 대기한다는 것 차이점은 제어권이 누구에게 있느냐. Blocking은 request를 하게 되면(예를 들면 File I/O) Kernel에 요청을 하고 제어권을.. 0. 이론 2023. 1. 10. TCP 송/수신 원리 Client에서 요청을 받으면 데이터를 파일 시스템을 통하여 MemoryBuffer로 읽어옴 이때 메모리 버퍼 크기는 개발자가 정할 수 있다. Memory Buffer에 담긴 데이터를 TCP Buffer로 복사한다. (Buffered I/O) Memory Buffer는 보통 64KB이다. (Window Size 개념이 있는데 송신 측도 관련 있는진 모르겠다.) TCP Buffer에 담긴 데이터를 Segment화한다.(더 잘게 쪼갠다) 이때 데이터 순서를 의미하는 id번호를 부여한다. = Packet L2로 내려가게 되면서 Frame화 된다. Frame을 전송하게 되면 같은 프레임으로 온다는 보장은 없다. 택배도 판매점 - 서울 전달하는 택배기사님이 있고, 서울-부산, 부산-구매자 집으로 전달하는 택배기사.. 0. 이론 2023. 1. 8. 모드버스란? (+ 프레임 구성, 예제, 샘플) 1. 모드버스란? Modbus는 원래 Modicon(현재 Schneider Electric )에서 PLC( Programming Logic Controller )와 함께 사용하기 위해 1979년에 발행한 데이터 통신 프로토콜이다. 모든 프로토콜이 만들어진 이유가 그렇듯 모드버스 또한 PLC 통신규약이 모두 달랐기에 편리성을 위해 통일시키고자 생겨났다. 처음에는 시리얼통신(RS-232, RS-485)을 기준으로 만들어졌으며 현재는 TCP, UDP에서도 구현할 수 있도록 확장되었다. 마스터/슬래이브 구조로 여러 주변 장비의 상태 정보를 모니터링할 수 있다. 네트워크 상에 연결된 모든 장비들이 요청을 받으나, 정해진 장비만 답을 하는 구조이다. RTU(Remote Terminal Unit), ASCII, TC.. 0. 이론 2022. 7. 14. 풀업&풀다운 (Pull-up&Pull-down)이란? 먼저 풀업&풀다운을 왜 쓰냐면 플로팅 현상 때문이다. 2022.03.22 - [이론] - 플로팅(Floating)현상이란? 플로팅(Floating)현상이란? 플로팅현상이란 "떠 있다" 라는 뜻으로 아무것도 연결되어있지 않아 전압을 모르는 상태이다. 사실 나는 아무것도 연결이 되어 있지 않은 상태라면 0V라 생각했지만 아니었다. 마치 C언어에서 변 park-duck.tistory.com 간략하게 말하면 5V도 0V도 아닌 알 수 없는 값을 입력받아 오류를 야기하는 것을 방지한다. 1. 풀업 저항 풀업 저항은 저항이 위에 달린 것이다. 스위치가 열려있을 땐 입력 핀에 5V가 들어오게 되고 스위치가 닫혀있을 땐 전기는 저항이 없는 곳을 선호하기 때문에 입력핀에 0V가 들어오게 된다. 2. 풀다운 저항 풀업 저.. 0. 이론 2022. 4. 26. Getter&Setter 사용 이유 8가지 setter와 getter는 왜 쓰는가? 장점은 무엇인가? 프로그래밍을 처음 배울 때는 그냥 그런가 보다 했고 내가 만든 소스코드 내가 주의해서 쓰면 되는데? 또 굳이 함수를 쓰는 게 더 복잡하지 않는가?라는 생각을 했고 나의 생각과 책, 커뮤니티 사이트 등을 뒤지고 뒤져 종합한 결과로 내가 생각하는 getter/setter을 사용하는 8가지 이유이다. 1. 명확한 표현 - data = 5; 와같은 표현보다는 setData(5)처럼 동사+목적어를 활용해 좀 더 명확한 표현이 가능 2. 데이터 정보의 캡슐화, 정보은닉 - public, protected 등으로 정보를 은닉할 수 있다. 3. 유효성검사&무결성 보장& try/catch - data가 0~100까지의 데이터만 유효하다고 가정할 때 setter&.. 0. 이론 2022. 3. 30. 플로팅(Floating)현상이란? 플로팅 현상이란 "떠 있다"라는 뜻으로 아무것도 연결되어있지 않아 전압을 모르는 상태이다. 사실 나는 아무것도 연결이 되어 있지 않은 상태라면 0V라 생각했지만 아니었다. 마치 C언어에서 변수를 선언만 할 때 0이 할당될 것 같았지만 쓰레기값이 존재하는 느낌일까...? 예를 들어본다. 1. 아래의 상황은 입력 핀에 5V를 입력받고 있다. 2. 아래의 상황은 입력 핀에 0V를 입력받고 있다. 3. 그렇다면 아래의 상황은 5V 일까 0V 일까?4. 그렇다면 아래의 상황은 5V 일까 0V 일까? 3번의 경우 입력 핀에 어떠한 전압도 존재하지 않아 전압을 측정할 수 없다. 4번의 경우에는 스위치를 닫힌 상태로 하면 5V 또는 0V의 전압을 가하지만 스위치가 열린 경우는 전압을 받지 않고 있기 때문에 5V인지, .. 0. 이론 2022. 3. 22. DMA란? (Direct Memory Access?) DMA란 Direct Memory Access의 약자로 말 그대로 메모리에 직접적으로 접근하는 방법을 말한다. 데이터를 가져오거나 사용할 때에는 항상 CPU가 필요하다. 근데 CPU는 접근 속도가 느릴뿐더러 이외에도 하는 일이 많다. 만약 메모리에 대량의 데이터를 전송한다면 CPU도 먹통이 되는 것이니 시스템 전체에 영향이 가해질 수밖에 없다. 그렇다면 DMA는 어떤 식으로 접근을 하는가? DMA를 제어하는 DMAC(Direct Memory Access Control)가 있다. CPU가 DMAC한테 주소, 데이터 길이 등을 알려주면 DMAC가 처리를 한 뒤, HW 인터럽트로 처리가 끝났음을 알린다. 그럼 DMAC가 데이터를 처리하는 동안 CPU는 다른 일을 할 수 있는 것이다. 참고로 CPU가 DMAC한.. 0. 이론 2021. 12. 23. 이전 1 다음 반응형