목록기타 (14)
psj2867
1. 개요 주로 벡엔드를 하면서 react는 과하고 주로 vue를 사용하고 있었습니다. 그러나 기본적으로 각 페이지마다 vue를 실행하기에 아무리 대부분 간단한 개발이지만 썩 마음에 들지는 않았습니다. 이후 svelte도 나왔지만 svelte도 따로 프로젝트 만들고 컴파일 하는 등의 일이 간단한 서버에 비해 너무 과했습니다. 이후 alpine을 발견하고 드디어 마음에 드는 라이브러리를 발견하고 공부 중이었습니다. alpine 자체가 jquery를 대신한다는 말도 있어서 고전적인 것을 좋아하는 사람으로 특히 마음에 들었습니다.(jquery 느리지만 간단하게 편했는데..) 심지어 realdom으로 화려한 페이지는 당연히 생각에 없는 상황에서 성능과 가벼운 무게도 장점이었습니다. 하나 아쉬운 점으로는 vue..
계기 웹을 공부하면 실시간 통신에 관해서 욕망이 안 생길수가 없다. websocket 으로 충족하고 싶지만 서버에 생기는 부담이 과하게 느껴진다. 찾다가 webrtc 가 있었지만 아직 안정화가 덜 되고 복잡해보여 넘겼다. 여유가 생기고 대규모 데이터 구현을 하고싶다 -> 대규모 데이터는 보통 미디어다 media server -> webrtc 같은 신기한 생각으로 구현을 시작했다. 보통 웹켐등의 데이터를 사용하는데 구현 편의를 위해 데이터로는 canvas를 사용했다. webrtc 설명 아마 다른 글을 이미 보고 왔겠지만 webrtc 스트림 데이터를 서버없이 또는 단순 에코 서버를 통하여 n:n udp 통신이 목적이다. 실제로는 다양한 옵션이 있지만 간단한 설명을 위해 넘긴다. n:n 통신이 목적이지만 실제..
환경은 linux, glibc(2.37) 기반으로 작성되었습니다. 목차 1. 작성동기 2. 전체적인 내용 3. 매우 간단한 설명 4. 간단한 설명 5. 조금 자세한 설명 6. 자세한 설명 6.1. 코드 관점(컴파일러, 컴퓨터 구조) 6.2. 운영체제 관점(운영체제) 6.3. 프로세트 관점(컴퓨터구조) 7. 정리 8. 나중에 추가할 내용 9. 후기 1. 작성동기 대부분의 컴퓨터 언어를 배울 때 가장 먼저 해보는 것은 printf("Hello, world!") 또는 print("Hello, world!") 입니다. 많은 언어 및 프로그램에서 test 라는 문구 대신 사용하는 유명한 문장이죠. 당연히 저도 c언어를 배우고 printf를 사용했습니다. 그리고 의문이 생겼습니다. 이게 왜, 어떻게 출력되지? 사실..
1. python 구현 코드 2. 코드 디버깅 추적 및 주석 1. python 구현 코드 예외 처리 코드는 이해를 위해 제외했습니다. 실제 사용하실 때는 python 기본 인코딩을 이용하시면 됩니다. "a다b가다c".encode('idna').decode() INITIAL_N = 0x80 INITIAL_BIAS = 72 BASE = 36 TMIN = 1 TMAX = 26 SKEW = 38 DAMP = 700 MAX_INT = 0x7FFFFFFF def adapt(delta, num_points, first_time): delta //= 2 if not first_time else DAMP delta += delta // num_points k = 0 while delta > ((BASE - TMIN) *..
1. puny 코드 2. 작성동기 3.관련 사전 정보 4. puny 코드 알고리즘 번역 및 주석 5. 단순화한 조금 더 직관적인 설명 6. punycode 7. 감상 1. puny 코드 퓨니코드(Punycode)는 유니코드 문자열을 호스트 이름에서 허용된 문자만으로 인코딩하는 방법으로, RFC 3492에 기술되어 있다. 퓨니코드는 유니코드가 지원하는 모든 언어로 국제화 도메인을 쓸 수 있게 한 IDNA의 일부로, 변환은 전적으로 웹 브라우저와 같은 클라이언트에서 이루어진다. 이 과정은 ASCII 문자 집합으로 표시할 수 없는 도메인 이름의 부분마다 따로 일어나고, 변환된 퓨니코드 문자열에는 예약된 접두어 xn--이 덧붙는다. 출처-https://ko.wikipedia.org/wiki/%ED%93%A8%E..
iptable 은 테이블, 체인, 규칙 등으로 이루어진다. 테이블 - 현재 느낌상 단순히 체인 구분/관리를 위한 폴더 개념으로 보인다. filter : iptables의 기본 테이블로 패킷 필터링 담당 -INPUT, FORWARD, OUTPUT nat : Network Address Translation, IP 주소 변환 -PREROUTING, POSTROUTING , OUTPUT, INPUT mangle : 패킷 데이터를 변경하는 특수 규칙을 적용하는 테이블, 성능향상을 위한 TOS(Type of Service) 설정 -PREROUTING, OUTPUT, POSTROUTING, FORWARD, POSTROUTING raw : 넷필터의 연결추적 하위시스템과 독립적으로 동작해야 하는 규칙을 설정하는 테이블..
이상한 일이기는 하지만 취미나 흥미로 printf등 외부 함수를 따라가다 printf 가 아닌 plt 를 마주하게 되었다. gcc 를 기본값으로 컴파일을 하면 gcc 는 기본적으로 동적 링킹을 우선적으로 채택하여 컴파일한다. 이때 사용되는 것이 plt 이다. 그래서 plt가 뭐지 검색을 하면 다음과 같은 정의가 나온다. 동적 링크 및 got, plt 에 관한 제대로 된 설명은 아래 참고 https://bpsecblog.wordpress.com/2016/03/07/about_got_plt_1/ PLT(Procedure Linkage Table): 외부 라이브러리 함수를 사용할 수 있도록 주소를 연결해 주는 테이블. GOT(Global Offset Table): PLT에서 호출하는 resolve() 함수를 ..
클래스 관점 mapper continer에서 InputFormat ->RecordReader ->Mapper ->RecordWriter(Partitioner) ->MapOutputBuffer ->spillAndSort - 기준으로 ->SortComparator ->Combiner reducer container 에서 Shuffle ->ShuffleScheduler(taskId) ->Fetcher merge(SortComparator) ->GroupCompartor ->Reducer ->OutputFormat --- 데이터 관점 InputFormat -> [(k,v),(k,v)...], [(k,v)...] Mapper -> {(k,v),(k,v)...}, {(k,v)...} - 순서없는 키 RecordWr..