# segment
데이터인프라 횡전개 후기
1. Intro - 고생길의 시작... 인티그레이션은 보건의료직군 대상으로 커뮤니티 서비스를 제공하고 있습니다. 메디스트림은 한의사(한의대생)을 대상으로한 종합 전문직 커뮤니티 플랫폼 서비스이고 모어덴, 치즈톡은 각각 치과의사(치대생)과 치과위생사(치위생대생)을 대상으로 한 서비스입니다. >인티그레이션의 모든 스쿼드(사업부)는 각각의 사업 지표를 실시간으로 확인 할 수 있는 대시보드 및 이를 디스플레이하는 공용 모니터를 가지고 있습니다. 이를 통해 데이터를 기반으로 논의하는 문화를 사업 초기부터 지금까지 중요한 가치로 여기고 실행하고 있습니다. 또한 각 사업부를 대상으로 정확한 데이터를 적시에 제공하는 일을 미션으로 하는 기능 조직인 데이터 전문팀이 있습니다. 데이터 팀은 DE, DS, DA,

[네트워크] - 계층별 데이터 단위
L1~L2 수준 데이터 단위 : Frame IP 수준 데이터 단위 : Packet TCP 수준 데이터 단위 : Segment > Socekt 수준 데이터 단위 : Stream 시작 -----> 끝에 대한 정의를 application 에서 정의한다. 그래서 크기를 정의할 수 없음. (사용자가 임의로 저장한다.) Socket에 스트림 데이터를 보낼 때 = Socket.write(Stream) Packet은 MTU 최대 1500KB, Segment MSS(Maximum Segment Size)는 최대 1460KB 크기이다. 그래서 Stream을 잘라서 분할한다. Segment로 내려갈때 분할(Se

CS 지식 + JavaScript 기본
세그먼트(segment) 영어 뜻 자체로 '분할, 단편, 구분' 등의 의미가 있습니다. 기하학에서는 서로 다른 두 점을 연결하는 가장 짧은 선인 선분입니다. CS에서는 구성 또는 분할의 개념에서 사용하는 기본 단위를 의미합니다. transport layer에서는 교환되는 데이터의 단위를 지칭합니다. TCP 세그먼트 양 끝단 간 연결된 TCP 세션 내 서로 교환, 전달되는 데이터 단위입니다. OSI 7 Layer 다른 시간과 다른 장소 간에 언제든지 자유롭게 데이터를 주고받고 통신할 수 있는 것은 네트워크로 연결된 수많은 장비들이 끊임없이 데이터를 전달해주고 있기 때문입니다. 하지만 이 과정은 우리 눈에 보이지 않죠. 이런 데이터 통신 과정을 체계적으로 정리하여 표준화시킨 것을 OSI 7 Layer 라고 합니다. 국제표준화기구(International Standard Organization, ISO)에서 1984년에 발표한 네트워크 표준 모델입니다. 네트워크 통신의
Segment: 데이터 수집 모범 사례
Data Collection Best Practices Segment에서 어떤 이벤트를 추적할지를 파악하는 것이 막막하게 느껴질 수 있습니다. 다행히도, Segment는 이 과정을 통해 수천 명의 고객들을 도왔고, 시작하는데 도움이 되는 수많은 자원들을 축적했습니다. 여러분이 이제 막 시작하는 작은 팀이든 수많은 이해관계자들로 얽혀있는 복잡한 기업이든 관계없이, 이 자원들은 도움이 될 겁니다. 비록 이 자료가 도움이 되더라도, 데이터 추적 방법을 정의하는 데 시간을 투자해야 한다는 것을 잊지 마세요. 데이터 품질 개선을 위해 많이 투자할수록 엄청난 보상을 얻을 수 있습니다. 예를 들면, 분석 팀이 더 좋은 인사이트를 만든다든가, 마케팅 팀이 더 나은 캠페인을 실행하는 등의

메모리 관리 전략
해당 게시글은 kocw에서 제공하는 금오공과대학교 최태영 교수님의 무료 강의를 공부하고 정리하기 위해서 만들어졌습니다. Memory Management 운영체제는 메모리의 남은 영역(인터럽트 벡터, 인터럽트 핸들러, 쉘을 제외한 나머지)을 관리하고 할당해주어야 한다. 메모리 프로텍션과 효율적인 메모리 할당 방법을 제공해 주어야 한다. 메모리 상단에는 운영체제가 존재하고 이후 아래 영역에는 각각의 프로세스가 올라와서 실행된다. 이러한 프로세스들은 각각의 영역을 침범하지 않게 해주어야 하는데, 그렇게 처리하기 위해 울타리를 둔다. 뿐만 아니라 이것을 처리하기 위해 하드웨어(레지스터)가 필요하며, 프로세스의 시작 위치와 프로세스의 길이를 기록한다. base register: 시작 위치 limit register: 프로세스 길이 cpu

Linux Memory Layout - Segment
Intro. > 컴퓨터 = CPU + Memory CPU 실행할 명령어와 명령어 처리에 필요한 데이터를 메모리에서 읽기 Instruction Set Architecture(ISA)에 따라 처리 연산 결과 메모리에 적재 CPU의 동작과 메모리 사이에 밀접한 연관이 있음을 알 수 있다. >즉, 공격자가 메모리를 악의적으로 조작할 수 있다면, 조작된 메모리 값에 의해 CPU도 잘못된 동작을 할 수 있다. 위의 경우를 메모리가 오염됐다고 표현하며, 이를 유발하는 취약점을 메모리 오염 취약점이라고 함. 시스템 해킹에서 많은 공격기법이 메모리 오염을 기반으로 함. 그리고, 이를 이해하기 위한 배경으로 리눅스 메모리 구조에 대해 오늘 배운다. >목표 프로세스 가상메모리의 각 구역이 어떤 정보를 담고 있는지 이해 1을 통해 프로세스 메모리의 전체 구조 알기 Segment > Segment : 적재되는 데이터의 용도별로 메모리의

Memory Virtualization: Paging(2)
Paging Linear Tables 대부분 각 process는 하나의 page table을 갖고 있다. 만약 4-KiB page로 이루어진 32-bit address space가 있고 4-byte page entry를 가지고 있다면 page table의 크기가 너무 크기 때문에 모든 process에 대해서 4MB의 page table을 할당하기에는 너무 많은 memory를 소모하게 된다. Smaller Tables 만약 16-KiB page로 이루어진 32-bit address space가 있고 4-byte page entry를 가지고 있다면 
Memory Virtualization: Segmentation
Inefficiency of the Base and Bound Approach base/bound approach를 사용하면 영역 내부에 free space의 big chunk가 생긴다는 inefficiency가 있다. 이미 한 process에게 할당된 address space는 다른 process가 침범할 수도, 사용할 수도 없기 때문에 사용되지 않은 그대로 남게 된다. 이 free space가 physical memory를 채우면 실제로 사용되는 공간이 많지 않음에도 process를 할당할 수 있는 공간이 부족해서 새로운 process를 실행할 수 없게 된다. 이것을 internal fragmentation 문제라고 한다. 각 process마다 address space가 있는데 어떤 프로세스
[OSTEP] Segmentation, Free Space Management
정의 세그먼트란 특정 길이의 연속적인 주소공간을 의미 MMU에 한쌍의 베이스/바운드 가 존재하는것이 아닌 Segment 갯수 만큼의 베이스와 바운드 레지스터가 존재 기존의 한쌍의 베이스/바운드로는 internal fragmentation문제와 주소공간이 물리 메모리 보다 큰 경우 실행이 매우 어려우며, 이를 해결하기 위해 segmentation방식 사용 운영체제는 각 세그멘트를 물리메모리의 각기 다른곳에 배치할 수 있으며, 이를 통해 사용되지 않는 가상주소공간이 메모리를 차지하는것을 방지 • 세그멘트의 하드웨어 표기지원 세그먼트의 종류, 베이스 레지스터, 크기(바운드 레지스터), 세그먼트가 확장하는 방향(힙과 스택은 세그먼트가 커지는 방향이 반대), 메모리의 읽기/쓰기/실행 가능을 표시하는 p

SourceBuffer
SourceBuffer SourceBuffer는 MediaSource객체에 재생이 가능한 Media Segment를 전달해주는 메소드이다. 와 같이 addSourceBuffer()메소드에 mimeType을 인자로 넣어 생성하며, 해당 mimeType의 정보를 바탕으로 디코딩을 진행한다. 그럼 지금부터 sourceBuffer를 활용하여 Midea Segment를 만드는 방법을 한번 알아보도록 하자. >순전히 나만의 방법이므로 단순 참고만 하는걸 추천한다. 전반적인 흐름은 위와 같은데 media src와 media tag가 연결이 되면 mediaSource는 'sourceopen'이라는 이벤트를 발생시킨다. sourceopen이 발생할 시 실행하는 sourceOpen()함수를 살펴보자면, sourceOpen()함수에서 가장 먼저 실행되어야 할 것은 바로 sourceBuffer객체를 만드는 것이다. 이 후 fetch 요청

Adaptive HTTP Streaming
Adaptive HTTP Streaming 플래시가 대세였던 웹 동영상 기술이 점차 표준 기술인 HTML5 비디오로 전환되었고, 현재 많은 동영상 서비스들은 HTML5를 기반으로 서비스되고 있다. 기술이 발전함에 따라 네트워크 환경에 따른 최적의 스트리밍 서비스를 제공하기 위해 여러한 노력들이 있었고, 그 중 하나가 이번에 소개할 Adaptive HTTP Streaming이다. Adaptive HTTP Streaming이란 ? 제목에서도 알 수 있듯이 Adaptive 즉 적응형 HTTP 스트리밍이란 뜻이다. 사용자의 네트워크 상태에 적응하여 최적의 스트리밍 서비스를 제공하는 것이 Adaptive HTTP Streaming의 방식이다. 기존의 동영상 스트리밍 방식과 무엇이 다른가?</h
[운영체제] 가상기억장치 기타 관리사항
시작에 앞서 정보처리기사 꿀팁강의! 🧇 https://youtu.be/6ZT9xvK5tEI 1. 페이지 크기 페이징 기법을 사용하면 프로그램을 페이지 단위로 나누게 되는데, 페이지 크기에 따라 시스템에 미치는 영향이 다르다...! 페이지 크기가 작을 경우 페이지 단편화 감소, 한개의 페이지를 주기억장치로 이동하는 시간 감소 불필요한 내용이 주기억장치에 적재될 확률이 적으므로 효율적인 워킹 셋 유지 가넝한 Locality에 더 일치할 수 있기에 기억장치 효율 높아짐 디스크 접근 횟수가 많아져 전체적인 입출력 시간은 늘어난다 페이지 크기가 클 경우 페이지 정보를 갖는 페이지 맵 테이블의 크기가 작아지고, 매핑 속도 빨라짐

[운영체제] 가상기억장치 구현기법과 페이지 교체 알고리즘
가상기억장치란? 보조기억장치(하드디스크)의 일부를 주기억장치처럼 사용하는 것. 용량이 작은 주기억장치를 마치 큰 용량을 가진 것 처럼 사용하는거다! 🍕 프로그램을 여러개의 작은 블록 단위로 나눠서 가상기억장치에 보관, 실행 할때마다 요구되는 블록만 주기억장치에서 불연속적으로 할당해서 처리한다. 🍕 주기억장치의 용량보다 큰 프로그램을 실행하기 위해서 사용 🍕 주기억장치의 이용률과 다중 프로그래밍의 효율 높일수 있다 🍕 가상기억장치에 저장된 프로그램을 실행하려면?? 주소를 주기억장치의 주소로 바꿔주는 변환이 필요함 🍕 일반적인 구현방법으로는 블록의 종류에 따라 페이징 기법과 세그먼테이션 2개 1. 페이징

[Network] Segment, 세그먼트
네트워킹 수업을 들을 때에도 관련 공부를 할 때에도 세그먼트니, 헤더니, tcp 헤더니,, 여러 용어들이 혼란스러워 힘들었고 늘 이런 불확실함으로 인해 100% 에 도달하지 못하고 97,98% 만 학습한 듯한 찝찝함이 남았었다,,! 때문에 이러한 세세한 부분도 가능한 정확히 이해하고 기초를 탄탄히 하는게 좋을 것 같아 이번 포스팅을 작성해 본다! 세그먼트 구조 결론부터 말하자면 TCP 세그먼트는 세그먼트 헤더와 실제 데이터로 구성되어 있다! TCP SEGMENT = TCP 헤더 (세그먼트 헤더) + 데이터 TCP 프로토콜은 데이터 스트림으로부터 데이터를 받아들이고 이것을 일정 단위로 분할한 뒤 TCP 헤더를 덧붙여 TCP 세그먼트를 생성하고, 이렇게 만들어진 TCP 세그먼트는 IP 데이터 그램에 캡슐화 되어 상대방에게 보내지게 된다. > 💡 IP 데이터그램이란? IP에서 사용하는 패킷을 말한다, =
Segment Tree - 세그먼트 트리
1. 세그먼트 트리 (Segment Tree) 여러 개의 데이터가 연속적으로 존재 할 때, 특정 범위의 합을 빠르게 구할 수 있음 => A~B까지의 합을 구하는데 용이하게 사용 [ 선형 탐색, 세그먼트 트리 비교 ] 1) i번째 데이터를 b로 바꾸기 2) a~c의 데이터의 합 구하기 이 두 가지 단계를 반복한다고 하자. 단순 배열을 사용? 수를 바꾸는데 O(1) 수를 더하는데 O(N) M번 수행한다고 하면, O(MN)의 시간 복잡도를 가짐 세그먼트 트리를 사용? 수를 바꾸는 과정 O(logN) 수를 더하는 과정 O(logN) M번 실행한다치면, O(MlogN)의 시간 복잡도를 가짐 2. 세그먼트 트리 알고리즘 
zsh 프롬프트에 pulumi stack 출력하기
Pulumi를 도입하며 최근 회사에서 Pulumi를 사용하게 됐다. Pulumi는 IaC(Infrastructure as Code) 툴인데, HCL이라는 고유 언어를 사용하는 Terraform과는 다르게 범용 프로그래밍 언어(TypeScript, Python, Go 등)를 사용한다. 때문에 IaC를 처음 접하는 나 같은 사람에게 러닝 커브가 상대적으로 완만하다는 장점이 있어 도입했다. Pulumi는 리소스의 그룹을 스택(stack)이라는 개념으로 표현한다. Pulumi에서는 여러 리소스를 사용하는 목적과 환경에 따라 여러 스택으로 나누어 관리하는 방법을 권장하는데, 이런 방법을 마이크로 스택(Micrro-Stacks)이라고 한다.

segment 이벤트 기록하기
Page API 유저가 페이지에 접근하였을 때, 추가적인 정보와 함께 기록 시 사용 자바스크립트 혹은 모바일 라이브러리는 identify 호출에서 사용되었던 아이디를 자동으로 추가해주기 때문에 따로 입력할 필요가 없음 page 실행하기 필드 name (optional) Sign Up 처럼 해당 페이지의 이름을 나타냄 properties (optional) dictionary 객체로 page의 추가적인 정보들을 추가할 수 있음 path DOM API의 location.pathname 를 가져와서 자동으로 넣어줌 referrer DOM API의 document.referrer 를 가져와서 자동으로 넣어줌 search

segment 유저 관리
Anonymous ID Segment에서 사용하는 비로그인 고객을 분류하는 유니크한 키 Anonymous ID Unique 기준 브라우저와 App 따라 하나의 Anonymous ID가 생성됨 ex) IE9 + 아이폰, Chrome + 아이폰은 다른 Anonymous ID를 가짐 anonymous ID를 user ID로 매핑하기 사파리에서 들어온 A User, 크롬에서 들어온 A User, 앱에서 들어온 A User는 AnonymousId 기준으로 다른 고객이므로, 하나의 고객임을 명시적으로 선언해주어야 한다. 로그인 혹은 회원가입 시에 identify 를 활용하여, 하나의 고객임을 segment에 알려준다. identify 가 실행되면 해당 기기는 UserID와 매핑되어, 어느 페이지에 접근하던 User ID로 이벤트가 찍히게 되어 유저의 이벤트 흐름을 확인할 수 있게 된다. User ID 유저를 고유하게 식별할 수 있는

segment 알아보기
What is segment? > Segment is a Customer Data Infrastructure (CDI) service provider, which means that we provide a service that simplifies collecting and using data from the users of your digital properties (websites, apps, etc). With Segment, you can collect, transform, send, and archive your first-party customer data. website, apps, third-party(메일침프, 인터컴 ...)으로부터 데이터를 수집하여 한 군데 모으고, 모은 데이터를 각 third-party(amplitude, blaze, warehouse ..)로 데이터를 보내주는 역할을 함. source(website, apps, third-par