puzzle-puzzle의 등록된 링크

 puzzle-puzzle로 등록된 티스토리 포스트 수는 162건입니다.

[구글 클라우드 플랫폼] GCP : Containers and Kubernetes [내부링크]

Containers and Kubernetes 목차 1. Introduction to Containers 2. Introduction to Kubernetes 3. Introduction to Google Kubernetes Engine 4. Computing options 1. Introduction to Containers 예전에는 애플리케이션을 배포하는 기본 방법은 자체 물리적 컴퓨터에 있었습니다. 서버 하나를 설정하려면 물리적 공간, 전력, 냉각, 네트워크 연결을 찾은 다음 운영 체제, 소프트웨어 종속성, 마지막으로 애플리케이션을 설치해야 했습니다. 더 많은 처리 능력, 중복성, 보안 또는 확장성이 필요한 경우 컴퓨터를 더 추가하기도 하였습니다. 또한 각 컴퓨터가 하나의 목적 (예 : 데이터베이스..

[import] 아임포트 결제 모듈 만들기(코드 포함) [내부링크]

아임포트 결제 모듈 만들기 안녕하세요 이번에 결제 모듈을 만들면서 공부한 내용들을 정리하고자 포스팅합니다. 본인의 서버 환경과 서비스의 특징에 맞게 변경하여 사용하시면 됩니다. 아임포트의 공식 doc을 참고하여 설명합니다. 그림으로 설명되어있는 결제 연동 절차를 알고 가시면, 결제 흐름을 쉽게 파악할 수 있습니다. 아임포트를 사용함으로써 가맹점 서버의 결제 데이터를 동기화하는 방식에 차이가 있습니다. 결제가 발생했을 때, 먼저 아임포트측 데이터베이스에 고객의 결제 데이터가 저장되고, 그 후에 webhook을 통해서 가맹점의 데이터베이스에 결제 정보를 저장합니다. webhook은 네트워크 및 고객 기기의 불안정성에 대처할 수 있는 방법입니다. 결제 고객의 브라우저가 아임포트 서버의 응답을 수신했으나, 결제..

[구글 클라우드 플랫폼] GCP : Load Balancing and Autoscailing [내부링크]

Load Balancing and Autoscailing 목차: 0. Load Balancer 1. Managed Instance groups 2. HTTP(s) Load Balancing 3. SSL Proxy/TCP Proxy Load Balancing 4. Network Load Balancing 5. Internal Load Balancing 6. Choosing a Load Balancer 0. Load Balancer - GCP는 Global 및 Regional의 두 가지 카테고리로 나눌 수 있는 다양한 유형의 Load Balancing을 제공합니다. - Global Load Balancers는 HTTP (S), SSL 프록시, TCP 프록시 부하 분산기입니다. 이러한 Load Balancin..

[JavaScript] 자바스크립트 Date() 객체 사용법 [내부링크]

안녕하세요~ 이번에 javascript를 사용하여 Date 객체에 대해 자세히 다룰 일이 있었어요. 그래서 경험했던 것을 기록하고 나누고자 이번 포스팅 시작하였습니다. Date() 객체와 관련 함수들은 앞으로도 정말 많이 사용할 거 같아요. 목차: 1. Date() 객체 생성하기 2. Date.now() 3. getTime() 4. setTime() 5. toLocaleString() Date 객체 생성하기 Date()를 사용하는 방법을 다음과 같습니다. 생성자 안에 넣은 인자의 성질과 개수에 따라 반환하는 것이 다릅니다. Date() Date(milliseconds) Date(datastring) Date(year, month, date, hours, minutes, seconds, ms) 1. Dat..

[Strapi] strapi api와 mongoDB Atlas 연결하기 [내부링크]

Strapi와 MongoDB Atlas 연결하기 Strapi는 프로젝트에 가장 적합한 데이터베이스를 선택할 수있는 옵션을 제공합니다. PostgreSQL, MongoDB, SQLite, MySQL 및 MariaDB를 지원할 수 있습니다. 이러한 데이터베이스를 로컬 및 다양한 호스팅 또는 클라우드 서버에 설치할 수 있어 사용하기에 편리합니다. 이번 포스팅에서는 strapi api가 사용하는 db를 mongoDB Atlas로 전환하여 사용하겠습니다. strapi의 기본 db설정은 SQLite로, 프로덕션에서는 다른 DB로 바꾸는걸 추천드립니다. SQLite는 로컬 개발에서 추천드리는 방법으로 프로덕션에는 추천드리지 않습니다. 목차: 1. MongoDB Atlas 연결 설정 2. Strapi 프로젝트 연결 설..

[Strapi] GCP에 mongoDB Atlas설치하기 [내부링크]

GCP에 mongoDB Atlas 설치하기 안녕하세요! 저번에 생성한 strapi api의 db를 local SQLite가 아닌 gcp에 mongoDB를 호스팅 하여 사용하려고 합니다. 그전에 먼저 mongoDB Atlas를 생성하고 호스팅 하는 작업을 진행하겠습니다. MongoDB Atlas의 자가 회복 클러스터가 지리적으로 분산된 데이터베이스 인스턴스로 구성되어 단일 장애 지점이 없도록 구성합니다. Region 간 복제 기능을 활성화하여 Multi-Region의 장점을 활용할 수 있습니다. 또한 MongoDB Atlas에는 지속적인 백업 및 특정 시점 복구와 같은 미션 크리티컬 프로덕션 데이터베이스의 안정성을 향상하는 기능이 포함되어 있습니다. 목차: 1. Google Cloud Platform에 m..

[Strapi] strapi로 api 쉽게 만들기 [내부링크]

안녕하세요~ 이번엔 strapi로 api를 만드는 포스팅을 시작하겠습니다. 목차: 0. Strapi? 1. strapi 프로젝트 생성하기 2. 프로젝트 시작하기 3. REST API 만들기 4. 만든 REST API 확인하기 Strapi? strapi는 node.js 기반으로 GUI를 사용하여 보다 쉽게 REST API를 제작할 수 있습니다. 백엔드 서버 제작 시 다른 부가적인 설정들을 하지 않고 바로 사용할 수 있게 해 주는 게 큰 장점입니다. 요약 : Strapi는 오픈 소스 Node.js 기반 headless CMS입니다. 100 % 자바 스크립트로 이루어져 있고, 설계자의 의도에 따라 맞춤 설정할 수 있으며 개발자가 사용하기에 편리합니다. strapi 공식 홈페이지에 들어가시면 아래의 기업들이 s..

작년 여름 [내부링크]

요즘 하늘을 보는 시간이 많이 줄었다. 시야에 벽들이 많아 답답하다. 보이지 않아서 못 보는 걸까 안 보는 걸까 작년 여름에 있었던 구름들이 생각난다. 그 구름들은 나에게 상상력을 가져다주었다. 저건 뭘 닮고, 색깔은 이렇고 나중엔 구름 이상의 차원으로 상상을 펼쳐 나간다. 이젠 시선이 내려와 사람들과 땅만 본다 그러다 땅에 있는 물 웅덩이에서 비치는 하늘을 볼 때면 작년 여름으로 돌아간다 그때가 생각나고 어제 일인 듯 그해의 여름이 생생하다. 추억으로만 남겨둘 수밖에 없어서 힘들다.

[네트워크 용어] SSL 이란? [내부링크]

안녕하세요~ 이번에는 http와 https를 공부하다 보니 SSL에 대해서도 궁금해지더라고요. 그래서 포스팅하면서 공부한 것을 정리해보고자 합니다. 목차: 1. SSL에 대해서 2. HTTPS와 SSL의 차이점 3. SSL 인증서란? 4. 공개키와 대칭키 5. SSL을 이용한 통신 방법 SSL에 대해서 넷스케이프에서 처음 만들어진 SSL(secure socket Layer) 프로토콜은 사실 현재 TLS(Transfer Layer Security)라고 불립니다. SSL은 과거에 사용했던 명칭이라고 하네요. 또한 컴퓨터 네트워크에 통신보안을 적용하기 위해 설계된 암호 프로토콜입니다. 이 프로토콜은 TCP/IP 네트워크를 사용하는 통신에 적용되며, 웹 서버와 브라우저 사이의 종단 간 보안과 데이터 무결성을 보..

[Google Service] 영어 번역기 [내부링크]

구글 번역기 바로가기 구글 번역기 바로가기를 다들 언제 사용하시나요? 많은 분들이 영어를 한국어로 번역할 때 많이 사용하실 거 같아요. 하지만 100개 이상의 언어도 번역을 제공한다고 해요. 번역 가능한 언어를 확인했을 때 제가 모르는 언어들도 있었습니다. 그만큼 구글 번역기가 다양한 언어를 제공하고 있어요. 구글 번역기가 처음 나왔을 때는 번역 정확도도 높지 않았고 오역을 하는 경우가 많았어요. 하지만 지금은 전보다 월등한 성능을 보여주고 있습니다. 구글 번역기를 통해 많은 분들이 번역기를 사용하고 계신데요. 데스크톱 및 모바일 등 다양한 기기로도 해당 서비스를 사용하실 수 있습니다. 아래의 링크를 통해 사용법 등 더 많은 정보를 얻으실 수가 있어요. 여러분들도 한 번만 이용하시면 구글 번역기에 대해서..

[Google Services] 구글 번역기 사용법 [내부링크]

구글 번역기 사용법 이번에는 많은 분들이 사용하시는 구글 번역기에 대해서 설명드리겠습니다. 구글 번역기는 간단한 문장부터 파일 번역 및 웹 문서 번역 기능을 제공합니다. 그래서 이번 포스팅에는 텍스트 번역과 문서 파일 번역 및 웹 번역 사용 방법에 대해서 알려드리고자 합니다. 텍스트 번역보다 문서 파일을 번역하고 싶으신 분들은 목차 2번, 웹 페이지를 번역하고 싶으시면 목차 3번으로 이동하시면 됩니다. 목차: 1. 텍스트 번역하기 2. 문서 파일 번역하기 3. 웹 페이지 번역하기 다들 구글 번역기를 언제 사용하시나요? 저는 한글 번역자료를 구할 수 없을 때, 영어 문장의 뜻을 정확히 알고 싶을 때 사용하는 편이에요. 처음에는 파파고 번역기를 사용하다가 뭔가 해석이 부족하고, 의미 연결이 매끄럽지 않아 구..

[스타트업] 1. NSM : 지속적인 성장을 위한 핵심 [내부링크]

우리 기업의 NSM은 무엇인가? NSM이란 North Star Metrix의 약자로, 제품이 고객에게 제공하는 핵심 가치를 잘 포착하는 '단일 측정 항목'입니다. 즉, 정말 중요한 단 하나의 지표가 NSM인 것입니다.(하나 이상일 때도 있다고 합니다. 하지만 예시를 찾지는 못하였습니다.) NSM = 고객이 프로덕트를 사용하면서 얻게 되는 핵심 가치를 정확히 측정하는 지표 North Star(북극성)이라는 단어에서도 느낄 수 있듯이, 해당 지표를 통해 기업의 핵심 가치를 명확히 파악할 수 있는 지표여야 합니다. 그리고 단기적인 성장을 넘어서 장기적이고 지속적인 성장에도 도움이 되는 지표여야 합니다. 다들 생각하시기엔 매출이 기업의 가장 큰 핵심 지표라고 생각하실 수 있습니다. 하지만 매출은 후행지표 및 핵..

[스타트업] 0.실패에서 오는 경험들 [내부링크]

실패 처음에 앱 스타트업을 시작할 때를 생각해보면, 아이디어 하나만 가지고 뛰어들었습니다. 우리의 아이디어가 실현된다면, 모두가 좋아할 만한 아이디어였다고 생각했어요. 그러나 아이디어만 좋으면 성공할 것 같은 꿈들은 서서히 금이가고 철저하게 가루로 남았네요. 검증조차 시도하지 않았던 많은 세부 구현들, 사용자를 생각하지 않은 프로세스 등 여러 칼날들이 우리의 희망을 찢고 철저한 현실을 보여줬어요. 있으면 좋겠다 하는 아이디어였지만 비즈니스적으로 매력 있는 모델은 아니었던 것이었다고 생각합니다. 포기라는 걸 생각해볼 여유도 없는 상황에서 또 아이디어를 찾기 시작했어요. 이번에도 실패할 수 있다. 하지만 전에 했던 실수를 반복하지는 말았으면 한다고 다짐하고서, 그러기 위해 더 공부하고 경험하고 있습니다. 하..

[네트워크 용어] HTTP, HTTPS 에 대해서 [내부링크]

안녕하세요~ 이번에 포스팅할 내용은 HTTP입니다. 현재 네트워크에 대해 다시 공부하면서 정리하고자 합니다. 또한 프론트엔드, 백엔드 개발자들 모두 잘 알고 있어야 할 분야라고 생각합니다. HTTP(Hyper Text Transfer Protocol) HTTP는 텍스트 기반의 통신 규약인 Hyper Text Transfer Protocol의 줄임말로 인터넷에서 정보를 서로 주고 받을 수 있게 하는 프로토콜입니다. 또한 신뢰성 있는 데이터 전송 프로토콜로써 데이터가 전송 중 파괴되거나 중복되거나 왜곡되는 것을 방지할 수 있습니다. 웹에서만 사용하는 프로토콜이며 TCP/IP 기반으로 서버와 클라이언트 요청과 응답을 전송합니다. HTTPS(Hyper Text Transfer Protocol over Sercu..

[네트워크 용어] 프록시에 대해서 [내부링크]

목차: 1. 프록시? 2. 프록시의 종류 3. 프록시의 목적 4. 사용 시 유의하실 점 5. 우리 주변에서 볼 수 있는 예시 프록시? 네트워크 용어 시리즈로 포스팅하면서 다시 한번 개념을 정리하고 있습니다. 현재 클라우드 서비스에 대해서 공부하고 있어서 다시 요약 및 정리할 필요성을 느껴 작성하고 있습니다. 프록시는 클라이언트와 서버 사이에서 데이터를 전달해주는 컴퓨터 시스템 및 응용프로그램입니다. 즉, 중계기 역할을 합니다. 주로 보안 강화, 트래픽 병목 방지, 캐시 기능을 위해 사용할 때가 많습니다. 특히 웹 프록시 서버로 많이 쓰입니다. 이렇게 캐시로 저장해둘 경우, 동일한 정보를 요청 시 캐시에 저장되어있는 정보를 가져오게 됩니다. 이로써 전송시간을 절약할 수 있고 불필요한 외부 연결을 줄여 네트..

[네트워크 용어] 게이트웨이(Gateway), 게이트웨이와 라우터 차이점 [내부링크]

저는 게이트웨이와 라우터에 어떠한 차이점이 있는지 헷갈리는 경우가 많았습니다. 그래서 이번에 정리하면서 확실히 하고자 합니다. 이번 포스팅에서는 게이트웨이를 설명하고 마지막으로 라우터와 게이트웨이의 차이점에 대해서 설명하도록 하겠습니다. 먼저 라우터에 대해 다시 한번 보고 싶으신 분들은 아래의 링크를 참고해주세요. [네트워크 용어] 라우터란?(Router) 라우터(Router) 라우터는 패킷의 위치를 추출하여, 그 위치에 대한 최적의 경로를 지정하며, 이 경로를 따라 데이터 패킷을 다음 장치로 전향시키는 장치입니다. 이때 최적의 경로는 일반적으로 puzzle-puzzle.tistory.com 게이트웨이란? 게이트웨이는 이종 프로토콜 및 네트워크 간에 통신을 가능하게 하며 다른 네트워크로 들어가는 문 역할..

[네트워크 용어] CIDR(사이더)란? IPv4 [내부링크]

CIDR(Classless Inter-Domain Routing) 클래스 없는 라우팅 기법이며 IP를 좀 더 유연하게 사용할 수 있습니다. 기존의 네트워크 클래스 방법을 대체하고 1993년에 도입되기 시작하였습니다. 또한 빠르게 고갈되고 있는 IPv4를 보다 효율적으로 사용할 수 있습니다. IPv4에 대해서 먼저 IPv4에 대해서 까먹으신 분들을 위해 다시 한번 짚고 넘어가겠습니다. IPv4는 패킷 교환 네트워크 상에서 데이터를 교환하기 위한 프로토콜입니다. IPv4의 주소체계는 총 12자리로 구성되어 있으며 점을 기준으로 네 부분으로 나뉩니다. 또한 각 부분은 0~255까지 3자리의 수로 표현됩니다. 또한 IPv4 주소가 고갈되는 상황에서 4배의 비트 수를 가지고 있는 132비트의 IPv6가 등장하였습..

[구글 클라우드 플랫폼] GCP : Cloud VPN [내부링크]

Cloud VPN 목차: 1. Cloud VPN 2. Cloud interconnecting and Peering 3. Sharng VPC Networks 1. Cloud VPN - Cloud VPN은 IPsec VPN 터널을 통해 온프레미스 네트워크를 GCP VPC 네트워크에 안전하게 연결합니다. 두 네트워크 사이를 이동하는 트래픽은 하나의 VPN 게이트웨이로 암호화된 다음 다른 VPN 게이트웨이에서 해독됩니다. 이렇게 하면 공용 인터넷을 통해 이동하는 데이터가 보호되므로 Cloud VPN은 소량의 데이터 연결에 유용합니다. - 관리형 서비스인 Cloud VPN은 99.9 % 서비스 가용성의 SLA를 제공하고 사이트 간 VPN, 정적 및 동적 경로, IKEv1 및 IKEv2 암호를 지원합니다. Clou..

[Google Services]안드로이드 구글 이미지 검색 방법 [내부링크]

안드로이드에서 구글 이미지 검색 방법 이번엔 안드로이드 기기에서 구글 이미지 검색하는 방법에 대해서 알아보겠습니다. 이미지 검색은 가끔 필요하지만 필수적으로 사용될 때가 있습니다. 그래서 자주 사용하지 않는 기능에 아이폰 안드로이드 기기에서 사용법은 비슷합니다. 그래도 헷갈리시는 분들을 위해 포스팅하도록 하겠습니다. 사용하면서 구글 이미지 검색은 어떻게 내부적으로 진행될지 궁금한 적이 많습니다. 또한 정말 빠른 시간 안에 해당 자료들을 보여준다는 게 많이 신기했습니다. 다음 포스팅 때는 어떻게 구글 이미지 검색이 내부적으로 이루어지는지 알아보고 알려드리겠습니다. PC 및 아이폰에서 구글 이미지 검색 방법 혹시 PC 및 아이폰에서 구글 이미지 검색을 하신다면 다음의 포스팅을 참고해주세요. PC: [Goog..

[구글 클라우드 플랫폼] GCP : Kubernetes and Container [내부링크]

Kubernetes and Container 목차: 0. Introduction 1. Containers 2. Kubernetes and Kubernetes Engine 0.Introduction - 쿠버네티스는 개념적으로 IaaS를 제공하는 compute engine과 PaaS를 제공하는 app engine 사이에 위치하며 둘의 이점을 이용하고 있습니다. - 쿠버네티스에 대해서 간단하게 정리한 포스팅입니다. 참고하세요. 쿠버네티스란? 쿠버네티스란? 쿠버네티스는 컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼입니다. 컨테이너 오케스트레이션이 하는 일은 여러 개의 서버에 컨테이너를 배포하 puzzle-puzzle.tistory.com 1. Containers - (첫 번째 그림) ..

[구글 클라우드 플랫폼] GCP : Regions and Zones [내부링크]

Region and Zones 목차: 1. Regions and Zones 1.2. Zonal resources 1.3. Regional resources 1.4. Multi-regional resources 1. Regions and Zones - Regions은 zones으로 구성된 독립적인 지리적 영역입니다. 지역 내의 위치는 95 번째 백분위 수에서 5 밀리 초 미만의 왕복 네트워크 지연 시간을 갖는 경향이 있습니다. - zones는 Regions 내 Google Cloud Platform 리소스의 배포 영역입니다. zone을 Region 내의 단일 failure 도메인으로 생각하시면 됩니다. 고 가용성으로 falut-tolerant 애플리케이션을 배포하기 및 예기치 않은 오류로부터 보호하려면 한..

[Flutter] 플러터 앱 런처 아이콘 수정하기 [내부링크]

플러터 앱 런처 아이콘 수정하기 안녕하세요~ 이번에는 저희의 앱을 다른 앱과 다르게 만들어줄 아이콘을 수정해보겠습니다. 저는 아이콘 수정하는 방법 찾는데 검색을 잘못했는지 찾는데 시간이 오래 걸렸어요. 그래서 다른 분들이 쉽고 정확하게 참고하실 수 있게 포스팅을 게시하게 되었습니다. 도움이 되었으면 좋겠어요. 앱 런처 아이콘을 iOS와 android 모두 수정하는 것은 정말 귀찮은 일이며, 조금이라도 이미지가 수정되어 아이콘이 바뀔 때마다 해야 하는 수작업은 상당한 시간이 소비됩니다. 그래서 플러터에서 시간과 리소스를 절약하기 위해 flutter_launcher_icons 패키지를 사용하여 정말 간단하게 수정할 수 있게 만들었어요. 1. 먼저 아이콘을 담을 폴더를 아래와 같이 만드시면 됩니다. 저는 프로..

[구글 클라우드 플랫폼] GCP : Resource Management [내부링크]

Resource Managememt 목차: 1. Resource Management 2. Quotas 3. Labels and names 4. Billing 1. Resource Management - Resource management를 사용하면 project, folder 및 Organization별로 리소스를 계층적으로 관리할 수 있습니다. - policy에는 일련의 roles과 member가 포함되고 policy는 resource에 설정됩니다. 이러한 resource는 왼쪽에서 볼 수 있듯이 부모로부터 policy를 상속합니다. 따라서 resource policy는 parent와 resource의 결합입니다. 또한 상위 정책이 덜 제한적이면 더 제한적인 리소스 정책보다 우선한다는 점에 유의하셔야 ..

[공간리뷰]IF2020 GANGNAM(스타트업 컨퍼런스)을 다녀오다 [내부링크]

IF2020 GANGNAM 10월 30일 IF2020 GANGNAM에 다녀왔습니다. 해당 컨퍼런스는 스타트업들을 소개하는 자리로 다양한 아이디어를 가진 스타트업이 참여하였습니다. 스타트업 거리축제로 알고 있었는데 이번엔 코엑스 안에서 행사를 진행하고 있어요. 행사장은 코엑스 동문 쪽에 위치하였는데요. 앞에서 벤츠 행사도 하고 있어서 먼저 경험해보았어요. 있는 줄도 몰랐는데 하지만 뭐 때문에 온지도 까먹고 정신없이 구경했어요. 보시는 것처럼 1층과 2층에 VR 체험장을 운영하고 있어서 직접 이용할 수 있었어요. 해당 VR은 미래 세계의 자동차를 승차하는 느낌을 주고 싶었던 거 같습니다. 컨트롤러도 있어서 차량 문을 열고 닫는 상호작용도 가능했어요. VR기기를 착용하고 이리저리 고개를 돌렸는데 재밌었어요. ..

[구글 클라우드 플랫폼] GCP : Cloud Memorystore [내부링크]

Cloud Memorystore - Redis용 Cloud Memorystore는 Google에서 관리하는 확장 가능하고 안전하며 가용성이 높은 인프라를 기반으로 구축된 완전 관리형 in-memory 데이터 저장소 서비스를 제공합니다. GCP에서 실행되는 애플리케이션은 복잡한 Redis 배포를 관리하는 부담 없이 확장 성과 가용성이 뛰어나고 안전한 Redis 서비스를 활용하여 최고의 성능을 달성할 수 있습니다. 이를 통해 코드를 작성하는 데 더 많은 시간을 할애할 수 있으므로 훌륭한 앱을 만드는 데 집중할 수 있습니다. - Cloud Memorystore는 고 가용성, 장애 조치, 패치 적용, 모니터링과 같은 복잡한 작업도 자동화합니다. 고 가용성 인스턴스는 두 영역에 복제되며 99.9 % 가용성 SLA..

[구글 클라우드 플랫폼] GCP : Bigtable [내부링크]

Cloud Bigtable 목차: 1. What is Cloud Bigtable? 2. Cloud Bigtable stoage model 3. Processing 4. Choosing Cloud Bigtable 1. What is Cloud Bigtable? - Cloud Bigtable은 페타 바이트 규모의 매우 짧은 지연 시간을 제공하는 완전 관리형 NoSQL 데이터베이스입니다. 처리량에 맞게 원활하게 확장되고 특정 액세스 패턴에 맞게 조정하는 방법을 배웁니다. Cloud Bigtable은 실제로 검색, 분석, 지도, Gmail을 비롯한 여러 Google 핵심 서비스를 지원하는 동일한 데이터베이스입니다. - Cloud Bigtable은 짧은 지연 시간으로 높은 읽기 및 쓰기 처리량을 지원하므로 IoT..

[구글 클라우드 플랫폼] GCP : Cloud Firebase [내부링크]

Cloud Firebase 목차: 1. What is Cloud Firestore? 2. Choosing Cloud Firestore 1. What is Cloud Firestore? - Cloud Firestore는 빠르고 완벽하게 관리되며 serverless cloud native NoSQL 문서 데이터베이스로, 모바일, 웹, IoT 앱의 데이터를 전 세계적으로 저장, 동기화, 쿼리하는 작업을 간소화합니다. 클라이언트 라이브러리는 실시간 동기화 및 오프라인 지원을 제공하며 보안 기능과 Firebase 및 GCP와의 통합으로 진정한 서버리스 앱 빌드를 가속화합니다. - Cloud Firestore는 ACID 트랜잭션도 지원하므로 트랜잭션의 작업이 실패하고 재시도할 수 없는 경우 전체 트랜잭션이 실패합니..

[구글 클라우드 플랫폼] GCP : Cloud Spanner [내부링크]

Cloud Spanner 목차: 1. What is Cloud Spanner? 2. Characteristics 3. Cloud Spanner Architecture 4. Choosing Cloud Spanner 1. What is Cloud Spanner? - Cloud Spanner는 관계형 데이터베이스 구조의 이점을 비 관계형 수평 확장과 결합하기 위해 특별히 클라우드 용으로 구축된 서비스입니다. - 이 서비스는 페타 바이트 규모의 용량을 제공할 수 있으며 global scale, 스키마, SQL 및 고 가용성을 위한 자동 동기 복제에서 트랜잭션 일관성을 제공합니다. 사용 사례에는 전통적으로 관계형 데이터베이스 기술에서 제공하는 재무 애플리케이션 및 인벤토리 애플리케이션이 포함됩니다. - Multi..

[구글 클라우드 플랫폼] GCP : Cloud SQL [내부링크]

Cloud SQL 목차 : 1. What is Cloud SQL? 2. Cloud SQL instance 3. Cloud SQL services 4. Connecting to a Cloud SQL instance 5. Choosing Cloud SQL 1. What is Cloud SQL? - 패치와 업데이트가 자동으로 적용되지만 이러한 데이터베이스와 함께 제공되는 기본 인증 도구를 사용하여 MySQL 사용자를 관리해야 합니다. - Cloud SQL은 Cloud Shell, App Engine, G Suite 스크립트와 같은 많은 클라이언트를 지원합니다. 또한 표준 MySQL 드라이버를 사용하는 SQL Workbench, Toad 및 기타 외부 애플리케이션과 도구도 지원합니다. 2. Cloud SQL i..

[구글 클라우드 플랫폼] GCP : Virtual Machine(VM) [내부링크]

Virtual Machine VM은 컴퓨터 하드웨어와 유사하지만 동일하지는 않습니다. VM은 가상 CPU, 일정량의 메모리, 디스크 스토리지 및 IP 주소로 구성됩니다. 또한 Compute Engine은 VM을 만드는 GCP의 서비스입니다. 매우 유연하며 물리적 하드웨어에 존재할 수 없는 일부 옵션을 포함하고 많은 옵션을 제공합니다. Virtual Machine 구성요소 1. Compute Engine 2. Compute Options(vCPU and Memory) 3. Images 4. Disk Options 5. Common Compute Engine Actions Compute Engine: - Infrastructure as a Service(IaaS) - predefined 된 머신 타입과 cu..

[네트워크 용어] 라우터란?(Router) [내부링크]

라우터(Router) 라우터는 패킷의 위치를 추출하여, 그 위치에 대한 최적의 경로를 지정하며, 이 경로를 따라 데이터 패킷을 다음 장치로 전향시키는 장치입니다. 이때 최적의 경로는 일반적으로는 가장 빠르게 통신이 가능한 경로이므로, 이것이 최단 거리 일수도 있지만, 돌아가는 경로라도 고속의 전송로를 통하여 전달이 되는 경로가 될 수 있습니다. 즉, 라우터(Router)는 이름 그대로 네트워크와 네트워크 간의 경로(Route)를 설정하고 가장 빠른 길로 트래픽을 이끌어주는 네트워크 장비입니다. 또한 라우터의 대표적인 기능은 네트워크와 네트워크를 연결하는 것이지만, NAT(Network Address Translation), 방화벽, VPN(Virtual Private Network), QoS(Qualit..

[네트워크 용어] 방화벽(firewall) [내부링크]

방화벽 규칙 방화벽(firewall)은 미리 정의된 보안 규칙에 기반한, 들어오고 나가는 네트워크 트래픽을 모니터링하고 제어하는 네트워크 보안 시스템입니다. 방화벽은 일반적으로 신뢰할 수 있는 내부 네트워크, 신뢰할 수 없는 외부 네트워크 간의 장벽을 구성합니다. 또한 서로 다른 네트워크를 지나는 데이터를 허용하거나 거부하거나 검열, 수정하는 하드웨어나 소프트웨어 장치입니다. 방화벽의 역사 1세대 방화벽: 패킷 필터 패킷 자체만을 보고 미리 설정된 정책에 따라 허용 또는 거부를 결정하는 초창기 방화벽은 1세대 방화벽이라고 한다. 방화벽 내부에서 상태(세션)를 관리하지 않는 기본 형태의 방화벽이다. - 특정 IP를 허용, 거부 가능 - 특정 포트 허용, 거부 가능 2세대 방화벽: 스테이트 풀 인스펙션 패킷..

[구글 클라우드 플랫폼] GCP : Cloud VPC(Virtual Private Cloud) [내부링크]

Virtual Private Cloud(VPC) Virtual Private Cloud(VPC)는 Compute Engine 가상 머신(VM) 인스턴스, Google Kubernetes Engine(GKE) 클러스터, App Engine 가변형 환경에 네트워킹 기능을 제공합니다. 또한 VPC는 클라우드 기반 리소스 및 서비스에 대해 확장 가능하고 유연한 글로벌 네트워킹을 제공합니다. 목차: VPC 구성 요소 1. Project 2. Network 3. Subnetwork 4. IP addresses 5. Routes and Firewall rules Project: - 프로젝트는 object 및 services를 billing과 연결합니다. - 각 프로젝트의 기본 할당량은 네트워크 5개이지만 GCP co..

[Flutter]#1. Mac에 플러터 설치하기 [내부링크]

맥에 플러터 설치하기 이번 포스팅에는 맥북 또는 맥에 플러터를 설치하는 과정을 보여드릴게요. 혹시 윈도우나 리눅스에서 플러터를 사용하고 싶으시다면 아래의 링크를 참고해주세요! - 윈도우에서 플러터 설치 편 [Flutter]#1. 플러터 설치하기(Install Flutter) for Windows 윈도우에서 플러터 설치하기 저번 포스팅에서는 플러터로 개발하기 첫 단계로 플러터에 대해서 알아보았습니다. 지난 포스팅을 못 보신 분들은 먼저 보고 오시는 걸 추천합니다! 이번에는 실제 puzzle-puzzle.tistory.com - 맥에서 플러터 설치 편 [Flutter]#1. 플러터 설치하기(Install Flutter) for Mac 맥에 플러터 설치하기 이번 포스팅에는 맥북 또는 맥에 플러터를 설치하는 과..

[Google Services]아이폰 구글 이미지 검색 방법 [내부링크]

모바일에서 구글 이미지 검색 방법 이번에는 구글 이미지를 모바일에서 검색하는 방법에 대해 알아보겠습니다. 사파리, 크롬 등 어느 웹 브라우저도 가능합니다. 이미지 검색은 비슷한 이미지나 출처를 찾고자 할 때 유용하게 사용되기도 합니다. 아래의 내용은 아이폰 기준으로 작성되었으며 다른 기기에 대해서는 따로 다시 포스팅하도록 하겠습니다. 이미지 검색은 구글, 네이버, 다음 등에서도 서비스하고 있습니다. 하지만 가장 방대한 데이터를 가지고 있는 곳은 구글이며 더 정확하고 많은 검색 결과를 가져올 수 있습니다. 검색 시에는 이미 내 핸드폰에 있는 사진을 가지고 검색할 수도 있고 URL을 입력하여 검색하는 것도 가능합니다. 저도 아이폰을 사용하면서도 가끔 이미지 검색을 어떻게 하나 까먹기도 했었는데, 포스팅을 정..

[Qwiklabs Basics]Cloud Pub/Sub [내부링크]

이번에는 Cloud Pub/Sub을 실습해보는 시간을 가지도록 하겠습니다. 실습을 진행하기 전에 다음의 포스팅을 보고 오시는 것을 추천합니다. [구글 클라우드 플랫폼] GCP : Cloud Pub/Sub Cloud Pub/Sub Pub/Sub는 이벤트를 처리하는 서비스에서 이벤트를 생성하는 서비스를 분리하는 비동기 메시징 서비스입니다. Pub/Sub를 메시징 기준 미들웨어 또는 스트리밍 분석 파이프 라인의 이벤트 puzzle-puzzle.tistory.com Setting up Pub/Sub Google Cloud Shell 콘솔을 사용하여 Google Cloud Pub / Sub에서 작업을 수행할 수 있습니다. Pub / Sub를 사용하려면 데이터를 보관할 주제를 만들고 주제에 게시 된 데이터에 액세스..

[구글 클라우드 플랫폼] GCP : Cloud Pub/Sub [내부링크]

Cloud Pub/Sub(Cloud PubSub) Cloud Pub/Sub(Cloud PubSub)는 이벤트를 처리하는 서비스에서 이벤트를 생성하는 서비스를 분리하는 비동기 메시징 서비스입니다. 또한 메시징 기준 미들웨어 또는 스트리밍 분석 파이프 라인의 이벤트 수집 및 전송으로 사용할 수 있습니다. Pub/Sub(Cloud PubSub)는 규모에 맞는 고가용성 및 일관된 성능으로 내구성 있는 메시지 스토리지 및 실시간 메시지 전송을 제공합니다. Pub/Sub(Cloud PubSub) 서버는 전 세계 모든 Google Cloud region에서 실행됩니다. 또한 Google Cloud Pub/Sub는 애플리케이션 및 서비스 간에 이벤트 데이터를 교환하는 데 사용되는 메시징 서비스입니다. 데이터 제작자는 ..

[Qwiklabs Basics]Cloud Functions [내부링크]

이번에는 Cloud Functions을 실습해보는 시간을 가지도록 하겠습니다. 실습을 진행하기 전에 다음의 포스팅을 보고 오시는 것을 추천합니다. [구글 클라우드] GCP : Cloud Functions Cloud Functions이란? Goocle Cloud Functions는 클라우드 서비스를 빌드 및 연결하기 위한 서버리스 실행 환경입니다. Cloud Functions를 사용하면 클라우드 인프라와 서비스에서 발생하는 이벤트에 연결되는 puzzle-puzzle.tistory.com 간단히 Cloud Functions에 대해 설명하고 시작하겠습니다. Cloud Functions는 자바 스크립트로 작성되고 GCP의 Node.js 환경에서 실행됩니다. Cloud 함수를 가져와서 표준 Node.js 런타임에..

[구글 클라우드 플랫폼] GCP : Cloud Functions [내부링크]

Cloud Functions이란? Google Cloud Functions는 클라우드 서비스를 빌드 및 연결하기 위한 서버리스 실행 환경입니다. Cloud Functions를 사용하면 클라우드 인프라와 서비스에서 발생하는 이벤트에 연결되는 단일 목적의 간단한 함수를 작성할 수 있습니다. 함수는 감시 중인 이벤트 발생 시에 트리거 됩니다. 코드는 완전 관리형 환경에서 실행되므로, 인프라를 프로비저닝 하거나 서버를 관리할 필요가 없습니다. 또한 표준 Node.js, python3, Go, Java 환경에서 실행할 수 있습니다. 서버리스 Cloud Functions는 서버 관리, 소프트웨어 구성, 프레임워크 업데이트, 운영 체제 패치 적용 등의 작업을 하지 않아도 됩니다. 소프트웨어 인프라가 Google에서 ..

[구글 클라우드 플랫폼] GCP : Cloud Operations(구 StrackDriver) [내부링크]

Cloud Operations Google Cloud 환경에서 모니터링하고 문제를 해결하며 애플리케이션 성능을 개선할 수 있습니다. 기본적으로 아래와 같은 기능을 제공합니다. 또한 Google Cloud 뿐만 아니라 AWS 및 On-premiss 솔루션도 Cloud Operations 적용이 가능합니다. Google Cloud 및 애플리케이션 전반에 걸쳐 측정항목, 로그, trace를 수집합니다. 기본적으로 제공되어 즉시 사용이 가능한 대시보드와 뷰를 사용하여 플랫폼 및 애플리케이션을 모니터링합니다. 신호 쿼리 및 분석을 실시합니다. 적합한 성능, 가용성 표시기를 설정할 수 있습니다. 기존 시스템으로 알림 및 알림 규칙을 설정할 수 있습니다. 주요 기능 Cloud Operations에는 다음의 기능을 가..

[Qwiklabs Advanced]구글 클라우드에 웹사이트 빌드하기-2부-(Using Google Compute Engine) [내부링크]

1부에서 이어서 설명하도록 하겠습니다. 구글 클라우드에 웹사이트 빌드하기 1부를 못 보고오신 분들은 아래의 포스팅을 보고 오시면 됩니다. -1부- [Qwiklabs Advanced]구글 클라우드에 웹사이트 빌드하기-1부 -(Using Google Compute Engine) 이번 포스팅에서는 Compute Engine을 이용하여 웹사이트를 빌드해볼 거예요. 내용이 많아 1,2부로 나누어서 올릴 예정입니다. 아래 목차에서 4번까지 이번에는 진행하겠습니다.Cloud Build보다 좀 복잡 puzzle-puzzle.tistory.com -2부- [Qwiklabs Advanced]구글 클라우드에 웹사이트 빌드하기-2부-(Using Google Compute Engine) 1부에서 이어서 설명하도록 하겠습니다...

[Google Services]구글 이미지 검색 방법 [내부링크]

구글 이미지 검색 구글 서비스 중에서는 이미지를 검색할 수 있는 기능도 있습니다. 내가 알고 있는 이미지의 URL 주소나 해당 파일을 업로드하여 어떤 사이트에서 해당 이미지를 사용하고 있는지 알 수 있습니다. 일상에서 많이 사용하지는 않지만, 꼭 필요할 때 시간을 절약해주는 서비스입니다. 많은 분들이 구글 이미지 검색의 디테일한 기능을 잘 모르시더라고요. 이번 포스팅에서는 구글 이미지 검색 방법에 대해서 자세하게 이야기해보겠습니다. 다들 구글 이미지 검색을 언제 사용하시나요? 평상시에 매번 필요한 기능은 아니지만, 한번 사용할 때 시간을 절약해주는 편리한 서비스입니다. 핸드폰에서 이미지 검색 방법 데스크톱에서 검색하지만 핸드폰에서도 많이 하시더라고요. 아이폰, 안드로이드에서 이미지 검색하는 방법을 자세하..

[Google Services]구글 드라이브란?(구글 드라이브 활용법) [내부링크]

구글 드라이브란? 구글 드라이브는 구글 계정만 있으면 이용이 가능하고 음악, 사진, 동영상, 문서 등의 파일을 보관할 수 있는 웹 저장소입니다. 사용자당 15GB의 무료 저장용량이 제공되므로 문서 저장 및 저용량의 파일을 주로 넣어 사용하시면 됩니다. 또한 로컬 컴퓨터와 자동으로 파일이 동기화되어 편리합니다. 혼자서 새 문서, 스프레드시트 및 프레젠테이션을 만들거나 실시간으로 다른 사용자와 공유하고 공동작업을 합니다. 모든 변경사항은 드라이브에 자동으로 저장되기 대문에 저장 버튼이 없습니다. 어느 휴대기기, 태블릿, 컴퓨터에서든 파일과 폴더를 저장이 가능합니다. 또한 이미 팀에서 사용 중인 도구 및 앱과 통합이 가능합니다. 파일 형식을 변환하지 않고도 MS Office 파일로 공동 작업하고, PDF, C..

[Qwiklabs Basics]Cloud Operations(구 StackDriver) [내부링크]

안녕하세요 이번에는 Cloud Operations 기능에 대해 실습해보겠습니다. Cloud Operations을 통해 클라우드 기반 애플리케이션의 성능, 가동 시간 및 전반적인 상태를 파악할 수 있습니다. 또한 구글 클라우드, AWS, Nginx, Apache Web서버, Elastsearch 등 다양한 공통 애플리케이션 구성 요소에서 metrics와 이벤트 및 메타데이터를 수집합니다. 그리고 수집된 데이터로 차트 및 경고를 통해 인사이트를 제공할 수 있어 유용합니다. Cloud Operations에는 다음의 기능이 있습니다. Cloud Monitoring Cloud Logging Cloud Trace Cloud Debugger Cloud Profiler 목차: 1. Compute Engine 생성하기 ..

[Google Services]구글 클래스룸 [내부링크]

구글 클래스룸 코로나19로 인해 대면 강의가 불가능하여 비대면 수업이 많이 진행되고 있는 현재, 구글 클래스룸은 구글 온라인 클래스로 비대면 교육을 가장 효율적으로 끌어올리고 체계적으로 수업을 가능하게 하는 플랫폼입니다. 학교나 비영리 단체에서 수업 및 과제 진행을 위해 많이 사용 중입니다. 또한 구글 클래스룸은 교사와 학생들이 쉽고 간편하게 수업활동을 진행할 수 있으며 웹/앱으로 접속이 가능합니다. LMS(Learning Management System) 즉, 학습 관리 시스템으로 학교단위의 모든 교수학습 콘텐츠 및 교무학사관리 일체를 전산화하는 웹 기반 관리 시스템입니다. 특히 따로 프로그램을 설치하지 않아도 구글의 막강한 클라우드 시스템을 이용하기 때문에 확장성 및 안정성에서 큰 우위를 보이고 있습..

[구글 클라우드 플랫폼] GCP : Cloud IAM(Identity and Access Management) [내부링크]

GCP : Cloud IAM 목차: 1. Cloud Identity and Access Management(IAM) 2. Organization 3. Roles 4. Members 5. Services Accounts 1. Cloud IAM(Identity and Access Management) 1.1 Identity and Access Management IAM을 사용하면 특정 Google Cloud 리소스에 대한 세부적인 액세스 권한을 부여하고 다른 리소스에 대한 액세스를 방지할 수 있습니다. 또한 IAM은 최소 권한의 보안 원칙을 적용(중요)하여 특정 리소스에 액세스 하는 데 필요한 권한만 부여할 수 있게 해 줍니다. IAM을 사용하면 누구(ID)에게 무슨 리소스에 대한 어떤 액세스 권한(역할)이..

[Qwiklabs Basics]Cloud IAM(Identity and Access Management) [내부링크]

처음 Cloud IAM을 공부할 때는 이해가 되지 않는 부분들이 많았어요. 하지만 실습을 통해서 어떻게 작동하는지 파악할 수 있었고 결국에는 많은 도움이 되었습니다. 이 포스팅도 여러분들이 최대한 이해할 수 있길 바라면서 포스팅을 시작하도록 하겠습니다. 포스팅을 통해서도 이해가 잘 되지 않는 부분은 댓글로 남겨주시면 답변해드리겠습니다! 이번에는 두 개의 아이디로 IAM이 실제로 어떻게 작동하는지 알아보겠습니다. 시작하기 전에 Cloud IAM 포스팅을 보고 오시는 걸 추천합니다. [GCP] Cloud IAM(Identity and Access Management) Cloud IAM IAM을 사용하면 특정 Google Cloud 리소스에 대한 세부적인 액세스 권한을 부여하고 다른 리소스에 대한 액세스를 방..

[Qwiklabs Basics]Cloud Storage(클라우드 스토리지 using Cloud Shell) [내부링크]

퀵랩을 통해 GCP를 실습해볼 수 있다는 점이 정말 좋습니다. 유료이긴 하지만 구글에서 한 달 무료 쿠폰도 제공해서 이용할 수 있어요. GCP가 AWS에 비해서 한국의 점유율이 낮긴 하지만 더 성장 가능성이 있다고 봅니다. 다들 열심히 공부하시고 모르거나 궁금하신 게 있다면 댓글로 남겨주시면 최대한 빠르게 알려드리겠습니다. 이번 주제는 Cloud Shell을 가지고 Cloud Storage의 Bucket을 생성하는 실습입니다. Cloud Consol로 구축이 가능하지만 CLI를 통한 생성도 가능해야 GCP를 완벽히 알아가겠죠? Cloud Storage(클라우드 스토리지)는 sms 이미지, 사운드, 비디오 같은 blob, 즉 오브젝트 파일을 저장하기 위한 RESTful 웹 서비스입니다. 오브젝트 파일은 사..

[Qwiklabs Basics]Cloud Storage(클라우드 스토리지 using Cloud Console) [내부링크]

요즘 GCP를 공부하면서 영어로 된 자료가 대부분이라 한글 문서를 보기가 힘듭니다. 그나마 개념적인 문서들은 많이 있지만 실제 GCP를 사용하는 방법에 대해선 자세한 포스팅을 보기가 힘들었어요. 그래서 제가 공부하면서 정리한 것을 한글로 번역하여 포스팅하고자 합니다. 이러한 과정 중에 부족한 부분도 많겠지만 열심히 하려고 해요. 이 포스팅을 보시는 분들 상당수가 GCP를 어떻게 이용하시는지 궁금한 분들이 많으실 텐데 과정 하나하나 자세하게 놓치는 부분 없이 작성해 보겠습니다. Cloud Storage(클라우드 스토리지)는 이미지, 사운드, 비디오 같은 blob, 즉 오브젝트 파일을 저장하기 위한 RESTful 웹 서비스입니다. 오브젝트 파일은 사용자에게 할당된 고유한 key를 가지는 각각의 버킷 내에서 ..

[구글 클라우드 플랫폼] GCP : Cloud Build [내부링크]

Cloud Build 애플리케이션을 수정하고 다시 빌드하고 배포하는 작업은 시간 소비가 크며, 수작업으로 지속적으로 수행하기 번거로운 작업입니다. 작은 단위의 테스트는 간단히 실행할 수 있지만 더 큰 시스템을 하나하나씩 수행하는 것은 쉽지 않은 일입니다. 이러한 반복 작업들을 자동화하기 위해서 CI/CD(Continuous Integration / Continuous Deployment)라는 도구를 사용해서 파이프 라인을 만들고 자동화 작업을 수행합니다. 이때 Google의 서버리스 CI/CD 플랫폼을 통해 빌드, 테스트, 배포할 수 있습니다. Cloud Build는 GCP의 인프라에서 빌드를 실행하는 서비스입니다. 다양한 저장소 또는 클라우드 스토리지 공간에서 소스 코드를 가져오고, 사양에 맞게 빌드를..

[Qwiklabs Advanced]구글 클라우드에 웹사이트 빌드하기-1부 -(Using Google Compute Engine) [내부링크]

이번 포스팅에서는 Compute Engine을 이용하여 웹사이트를 빌드해볼 거예요. 내용이 많아 1,2부로 나누어서 올릴 예정입니다. 아래 목차에서 4번까지 이번에는 진행하겠습니다.Cloud Build보다 좀 복잡하고 내용이 길지만 열심히 같이 해봤으면 좋겠어요! 궁금한 사항 있으시면 댓글 남겨주세요~ -1부- [Qwiklabs Advanced]구글 클라우드에 웹사이트 빌드하기-1부 -(Using Google Compute Engine) 이번 포스팅에서는 Compute Engine을 이용하여 웹사이트를 빌드해볼 거예요. 내용이 많아 1,2부로 나누어서 올릴 예정입니다. 아래 목차에서 4번까지 이번에는 진행하겠습니다.Cloud Build보다 좀 복잡 puzzle-puzzle.tistory.com -2부-..

[Google Analytics]#1. 구글 애널리틱스 구조 [내부링크]

안녕하세요~ 이번에는 구글 애널리틱스의 구조에 대해 자세히 알아보겠습니다. 구글 애널리틱스에는 크게 네 가지의 틀을 가집니다. Organization Account Property View Organization(조직) Account들의 집합으로, 여러 개의 계정을 사용하는 대기업이나 대행사에 경우 권장됩니다. 하나의 조직으로 여러 개의 계정을 관리할 수 있어 관리하기에 용이합니다. Account(계정) Google Analytics 시작하려면 가정 먼저 생성해야 하는 것이 Account입니다. Account를 생성하면 자동으로 속성과 보기가 각각 하나씩 만들어지고, 하나의 계정에 최대 50개의 속성, 하나의 속성에 최대 25개의 보기가 생성 가능합니다. Property(속성) property는 데이터 ..

[Qwiklabs advanced]구글 클라우드에 웹사이트 빌드하기(Using Google Cloud Build) [내부링크]

Qwiklabs Advanced에서는 Basic보다는 여러 개념들을 조합하여 실습을 진행하겠습니다. 제가 직접 아래의 실습을 진행하다 보니 역시 문서를 읽기보다는 손으로 직접 해보는 게 기억에 많이 남아요. 실습하는데 시간이 좀 들어도 한번 시도해보시는 걸 추천드립니다! 어려운 부분이 있으시거나 궁금한 사항이 있으시면 댓글로 남겨주세요. 이번에는 static website를 Cloud Build를 사용하여 클라우드에 올려보겠습니다~ Cloud Build에 대해 모르시는 분들은 먼저 아래의 포스팅을 읽고 오시는 것을 추천드립니다. [GCP] Cloud Build Cloud Build 애플리케이션을 수정하고 다시 빌드하고 배포하는 작업은 시간 소비가 크며, 수작업으로 지속적으로 수행하기 번거로운 작업입니다...

[Google Analytics] 구글 애널리틱스 [내부링크]

구글 에널리틱스 처럼 구글에서는 스타트업이 쉽게 그리고 비용 부담 없이 쓸 수 있는 도구들이 상당합니다. Google Cloud Platform부터 Analytics까지 사용 가능합니다. 저 역시 스타트업에서 구글 애널리틱스를 사용하고 있으며, 분석에 시간 절약하는데 큰 도움이 됩니다. 확실한 개념을 알고 가시면 제대로 활용할 수 있습니다. 또한 구글 애널리틱스 포스팅 시리즈를 다 읽으신다면 주요 기능 및 보고서를 사용하실 수 있습니다. 구글 애널리틱스(Google Analytics)? 구글 애널리틱스는 디지털 마케팅을 위해 구글이 제공하는 웹로그 분석 도구입니다.(Firebase에서 앱 기반 로그 분석도 가능합니다!) 사이트에 방문한 고객의 행동 데이터를 수집하여 디지털 마케팅에 이용합니다. 어떤 채널..

[Flutter]#1-1. 플러터 설치오류 해결(Unable to locate adb 및..) [내부링크]

이번 포스팅은 플러터 설치 시 발생한 오류를 정리하면서 공유하고자 합니다. 혹시 아래의 오류 말고 다른 오류가 발생하신 분들은 댓글로 남겨주시면 빠르게 답장해드리겠습니다! 혹시 아래의 포스트에서 설치 시 빠진 단계가 없는지 확인하시고 오세요. 간혹 중간 단계를 빼고 진행하여서 생기는 오류들도 상당하더라고요. [Flutter]#1. flutter 설치하기(Install Flutter) 저번 포스팅에서는 플러터로 개발하기 첫단계로 플러터에 대해서 알아보았습니다. 지난 포스팅을 못보신 분들은 먼저 보고 오시는걸 추천합니다! #0. Flutter(플러터)란?(플러터로 앱개발하기 첫 puzzle-puzzle.tistory.com CASE 1. Android license status unknown 오류 And..

[Flutter]#1. 윈도우에 플러터 설치하기 [내부링크]

윈도우에서 플러터 설치하기 저번 포스팅에서는 플러터로 개발하기 첫 단계로 플러터에 대해서 알아보았습니다. 지난 포스팅을 못 보신 분들은 먼저 보고 오시는 걸 추천합니다! 이번에는 실제 플러터를 설치하고 실행하는 것까지 해보겠습니다~ - 윈도우에서 플러터 설치 편 [Flutter]#1. 플러터 설치하기(Install Flutter) for Windows 윈도우에서 플러터 설치하기 저번 포스팅에서는 플러터로 개발하기 첫 단계로 플러터에 대해서 알아보았습니다. 지난 포스팅을 못 보신 분들은 먼저 보고 오시는 걸 추천합니다! 이번에는 실제 puzzle-puzzle.tistory.com - 맥에서 플러터 설치 편 [Flutter]#1. 플러터 설치하기(Install Flutter) for Mac 맥에 플러터 설치..

[Flutter]#0. 플러터란?(플러터로 앱개발하기 첫단계) [내부링크]

이번에 크로스 플랫폼인 Flutter를 사용해 앱 개발을 진행하고 있습니다. 그래서 더 깊게 알기 위해 내용을 정리하며 앞으로 포스팅하고자 합니다~ 처음에 앱 개발이라고 하면 막연하고, 내가 시도조차 안 할 분야라고 생각했었어요. 그동안 제가 할 수 있는 것에 제한을 두고 가둬왔던거 같아요. 플러터로 개발을 시작하면서 배운 것이 정말 많아요. 역시 실제 서비스를 해봐야 머릿속에만 쌓여있는 지식이 되지 않고 체득이 되네요. 각자 플러터를 시작하게 된 이유는 다르시겠지만, 처음 열정 그대로 같이 개발했으면 좋겠습니다. 파이팅이에요~ 혹시 플러터를 설치하여 바로 사용하고 싶으신 분들은 아래 링크로 가시면 됩니다! [Flutter]#1. flutter 설치하기(Install Flutter) 저번 포스팅에서는 플..

[구글 클라우드 플랫폼] GCP : Cloud Storage [내부링크]

이번 포스팅에서는 Cloud Storage에 대해서 알아보겠습니다~ Cloud Storage 목차: 1. Bucket, Object, Access 2. Cloud Storage Cloud Storage를 이해하기 위해 먼저 Bucket, Object, Access의 개념을 소개하겠습니다. 1. Bucket, Object(버킷, 객체) 1.1 Bucket(버킷) 모든 버킷은 프로젝트와 연결됩니다. 모든 버킷이 단일 Cloud Storage 네임스페이스에 상주하므로 전역에서 고유해야 합니다.(중첩될 수 없습니다.) 버킷 생성 시에 필요한 것 전역에 고유한 이름 콘텐츠가 저장되는 위치 기본 스토리지 클래스 버킷이 저장되는 위치는 end user의 대기시간이 최소화되는 위치로 선정해야 합니다. 1.2 Objec..

파일 업로드 및 생성시 자동 refresh configuration [내부링크]

코드 실행에 의한 파일 생성 및 다른 경로를 통한 생성이 즉각적으로 eclipse project exploer에 반영되지 않습니다. 따라서, 다음과 같이 설정하여 자동으로 반영되게 해줍니다. 다음의 Preferences 창에서 Workspace로 들어갑니다 그리고 다음의 화면에서 3개의 박스를 모드 체크하여 줍니다. 적용하고 close하면 설정이 완료됩니다

Lecture 4: Model-Free Prediction [내부링크]

Lecture 4 : Model-Free Prediction -Introduction -Monte-Carlo Learning -Blackjack Example -Incremental Monte-Carlo -Temporal-Difference Learning -Driving Home Example -Random Walk Example -Batch MC and TD -Unified View -TD(λ) -n-Step TD -Forward View of TD(λ) -Backward View of TD(λ) -Relationship Between Forward and Backward TD -Forward and Backward Equivalence Model-Free Reinforcement Learning M..

<STL> multiset [내부링크]

multiset 기존 set과 다른 점은 중복된 key값을 여러개 가질 수 있습니다. 나머지 부분은 set과 동일합니다. multiset은 많은 자료들을 저장하고 특정 자료에 대해 검색을 빠르게 해야할때 많이 사용됩니다. set과 multiset 컨테이너는 받은 elements들을 자동적으로 정렬하여 분류합니다. set과 multiset의 다른 점은 multiset이 중복을 허용한다는 것입니다. 내부적으로 이 둘은 balanced binary trees로 구성되어 있습니다. 그리고 multiset 요소의 키 값은 직접 변경할 수 없습니다. 대신, 이전 값을 삭제하고 새 값의 요소를 삽입해야 합니다.

메일 서버(+실습) [내부링크]

메일 서버 실습 서로 메일을 주고 받는것을 보기 위해 중간에 네임서버를 두고 두개의 메일 서버가 서로 통신 하는 것을 확인하려합니다. mail.ray.com과 mail.ghost.com 두가지 메일 서버를 client가 주고 받게 해보겠습니다. mail.ray.com과 mail.ghost.com에 아래의 작업을 공통적으로 진행합니다. netplan을 이용하여 고정아이피로 만든후 실습합니다. mail server의 호스트이름을 다음과 같이 변경합니다. /etc/hosts 파일에 mail.ray.com을 추가합니다. 다음으로 /etc/mail/local-host-names에도 mail.ray.com을 추가합니다. 변경한 사항들이 반영될 수 있게 reboot합니다. DNS server한곳에 ray.com과 g..

라운드 로빈 네임서버(+실습) [내부링크]

라운드 로빈 네임서버 유명한 사이트들의 웹 서버에는 동시에 수십만 이상의 접속이 있습니다. 따라서 웹 서버를 1대가 아닌 여러대의 웹 서버를 운영하여, 웹 서버의 부하를 줄여줍니다. 이러한 방식을 라운드 로빈 방식이라고 부릅니다. 네이버의 웹 서버의 주소를 요청하면 요청할때마다 다음과 같이 바뀔 수 있습니다. 이거나 요청한 순서에 따라 nave.com의 네임서버는 위와 같이 ip주소를 반환합니다. 웹서버의 부하를 줄이기위해 요청할때마다 다른 ip주소를 반환하는 것을 볼 수 있습니다. 실습 기본적으로 만든 ray 마스터 네임서버를 가지고 진행하겠습니다. 먼저 /etc/bind/db.ray.com 파일을 수정합니다. 다음과 같이 webserver에 해당하는 서버의 주소를 다음과 같이 작성합니다. 그리고 작성..

Lecture 3: Planning by Dynamic Programming [내부링크]

Lecture 3 : Planning by Dynamic Programming -Introduction -Policy Evaluation -Iterative Policy Evaluation -Example: Small Gridworld -Policy Iteration -Example: Jack's Car Rental -Policy Improvement -Extensions to Policy Iteration -Value Iteration -Value Iteration in MDPs -Summary of DP Algorithms -Extensions to Dynamic Programming -Asynchronous Dynamic Programming -Full-width and sample backups ..

웹 검색 엔진 [내부링크]

웹 검색 엔진 웹 사이트를 검색하기위한 프로그램이라고 할 수 있습니다. 검색 엔진의 특성에 따라 FTP 서버나 웹 사이트의 파일 검색 결과를 포함할 수도 있으며, 이미지나 토렌트 파일 또는 특정 부류의 웹사이트에 특화된 웹 검색 엔진도 있습니다. 웹 검색 엔진은 보통 웹 서비스로 이용할 수 있습니다. 서버에서는 '로봇(robot)'이라고 불리는 프로그램을 이용해 웹 사이트들을 돌아다니며 웹 사이트들에 대한 정보를 미리 자동적으로 수집합니다. 이후 검색 엔진 사이트에서 특정 검색어를 입력하면 검색 엔진이 수집한 정보 중 그에 맞는 결과를 볼 수 있습니다. 본래 검색 엔진은 컴퓨터 내의 파일이나 회사, 조직 내부 데이터 베이스 등을 검색하기 위한 방법의 연장선상에 있습니다. 다만 웹은 하이퍼텍스트 기반으로 ..

검색기술 트렌드와 네이버의 연구현황(2018.5) [내부링크]

검색기술 트렌드와 네이버의 연구 현황 본 글은 2018.5월에 정보처리학회에서 발표한 '검색기술 트렌드와 네이버의 연구현황'에 대해 쓴 글입니다. 위 자료를 바탕으로 제가 공부하면서 작성하는 글이라는 것을 참고하시고 보셨으면 합니다. Outline 전세계 구글의 검색서비스 점유율 현황

고정 IP설정하기 [내부링크]

우분투 17 버전 이상으로는 netplan에서 수정하면 됩니다. 다음과 같이 원하는 설정 정보와 함께 변경합니다. 자신의 gateway는 route -n 으로도 확인 가능합니다. 변경된 사항들을 적용합니다. 그리고 확인합니다.

size_t [내부링크]

size_t 서로 다른 signedness를 가진 변수들의 비교로 warring이 뜹니다. 전에는 백터의 인자의 갯수만큼 반복문을 돌릴때 별 생각 없이 int를 썼었다. 하지만 아래의 warning을 보면 그렇게 하면 나중에 다른 오류를 발생할 수 있는다는 것을 말해주는 것같다. 그래서 int i = 0 부분에서 size_t로 자료형을 바꾸어줍니다. for문 안에 auto를 하면 다음과 같은 오류를 피할 수 있기도 합니다.

Lecture 2 : Markov Decision Process(Markov) [내부링크]

Lecture 2 : Markov Decision Process -Markov Processes -Introduction -Markov Property -Markov Chains -MRP -Markov Reward Processes -MRP -Return -Value Function -Bellman Equation -Markov Decision Processes -MDP -Policies -Value Functions -Bellman Expectation Equation -Optimal Value Functions -Bellman Optimality Equation Introduction to MDPs 전에 state에서 배운 내용의 연장선입니다. 거의 모든 강화학습의 문제는 MDP로 만들 수 있습니다...

게이트웨이 [내부링크]

게이트웨이 게이트 웨이는 라우터와 동일한 개념으로 이해할 수 있습니다. 라우터는 네트워크 장비의 일종으로, 패킷을 다른 네트워크로 보내주는 역할을 합니다. 이와 함께 최적의 네트워크 경로를 찾아주는 역할도 함께 수행합니다. 이와같이 라우터도 서도 다른 네트워크를 연결한다는 부분에서 게이트웨이와 동일합니다. 단, 게이트웨이는 라우터보다 좀 더 포괄적인 개념입니다.

802.11 packet [내부링크]

802.11 packet IEEE 802.11은 무선랜, Wi-Fi 등의 Local 지역을 위한 컴퓨터 무선 네트워크에 사용되는 기술입니다. 802.11 결합방식 802.11은 passive, active 두가지 결합 방식이 있습니다. passive way Passive 방식은 이전에 연결한 기록(profile)이 없을 경우 이루어지는 결합 과정입니다. AP는 자신을 알리기 위해 Broadcast 방식으로 비콘 패킷을 전달합니다. 일정한 주기로 전송하며 이 패킷에는 AP의 SSID(SubSystem Identification), 채널, 암호화, 전송률 등이 포함됩니다. station이 AP에 접속하기 위한 인증(aUTHENTICATION)을 실시합니다. 인증과정은 개방 인증과 공유키 인증 방식으로 나눠집..

마스터 네임 서버(+실습 ubuntu 18.04) [내부링크]

마스터 네임 서버 예를 들어 ray.com 같은 도메인에 속해 있는 컴퓨터들의 이름을 관리하고, 외부에서 www.ray.com이나 ftp.ray.com 등의 컴퓨터 ip주소를 알기 원할 때 해당 컴퓨터의 ip 주소를 알려주는 네임 서버를 말합니다. 그러므로 일반적으로 www.ray.com이나 ftp.ray.com 등으로 접속할 수 있어야 합니다. 실습 저의 네트워크 구성은 다음과 같습니다. SERVER_FRONT 는 마스터 네임서버와 웹 서버를 담당합니다. SERVER_BACK은 FTP서버를 담당합니다. 이렇게 구성후에 마스터 네임서버가 작동하는지 실습 해보겠습니다. BIND server는 port 53을 사용합니다. 또한 BIND 데몬을 named라고 부릅니다. 그리고 bind9utils 패키지에 의해..

텍스트기반의 웹 브라우저 [내부링크]

links 다음과 같이 설치합니다. esc 키를 누르면 다음과 같이 나타납니다. File 목록에서 go to url을 선택하여 원하는 사이트를 볼 수 있습니다. 단 영문 사이트만 지원합니다. www.kernel.org 사이트로 이동해보겠습니다. www.kernel.org 로 연결된 화면입니다.

DNS SERVER(+실습) [내부링크]

DNS 도메인 네임 시스템(Domain Name System)은 도메인 이름을 IP로 바꾸거나 IP를 도메인 이름으로 변환 할 수 있도록 역할을 합니다. 분산형 데이터베이스 시스템으로 작동합니다. 도메인 이름 체계 그림과 같은 트리 구조 형태의 도메인 이름 체계가 고안되었습니다. 사용자는 먼저 root DNS 서버에 찾고자하는 도메인을 질의합니다. root DNS 에서 찾고자하는 도메인이 없을 경우 1단계에 해당하는 도메인 서버의 주소를 사용자에게 알려줍니다. 다시 사용자는 1단계 서버에서도 반복하여 해당 도메인를 질의하고 HIT할경우 해당 IP주소를 반환하지만 그렇지 못할경우에는 2단계 도메인 SEVER 주소를 알려줍니다. 위를 반복하여 해당 도메인의 대한 IP주소를 얻을때까지 실행하며, 해당 도메인에..

명령어 정리 [내부링크]

명령어 시스템 재부팅 시스템 종료 로그아웃 ctrl + alt +F1/2 : graphic mode 가상 콘솔 ctrl + alt +F3~6 : text mode 가상콘솔

에라토스테네스의 체 [내부링크]

에라토스테네스의 체 수학자 에라토스테네스가 발견한 소수를 찾는 방법입니다. 2의 배수부터 시작 하여 10의 자리 미만 까지 배수를 체크한 후 나머지 체크가 안된 부분이 소수라고 말할 수 있습니다.(소수는 n의 배수가 아니여야합니다.) 다음과 같이 구현이 가능합니다. 첫번째 for문에서 (i*i

출력 정밀도와 범위 [내부링크]

부동 소수점의 정밀도(precision)는 정보 손실 없이 나타낼 수 있는 유의한 자릿수를 의미합니다. 다음과 같이 a을 소수점 10번까지 작성후 출력해보았습니다. 10번째까지 작성하였지만 기본적으로 소수점 6번째까지만 출력하는 것을 보여줄 수 있습니다. 이번에는 소수점 10번째까지 출력해보도록 하겠습니다. 지정한대로 10개의 소수점이 찍히지만, 7번째까지만 정확하게 출력합니다. 나머지는 임의의 값으로 채워진거 같습니다. float 값의 정밀도는 대략 6~9자리, double은 15~18, long double은 얼마나 많은 바이트를 차지하느냐에 따라 최소 15,18,33 의 정밀도를 가집니다.

Lecture 1. Introduction to Reinforcement Learning [내부링크]

구글 딥마인드의 David Silver 교수님의 수업 자료를 바탕으로 정리한 RL강의입니다. 목차에 하나씩 추가하며 진행할 계획입니다. Lecture 1 : Introduction to Reinforcement Learning -About RL -The RL Problem -Reward -Environment -State -Inside An RL Agent -Problems within RL Machine Learning 기계학습에는 supervised learning, unsupervised learning, reinforcement learning 세가지가 존재합니다. 밑에 그림에서 공집합의 결과가 ML로 되있는 것처럼 보이는데, 사실 전체 큰 원이 ML이라고 보시면 됩니다. 각자 학습 방법에는 공통..

NMAP [내부링크]

포트 스캐닝을 불법이며 사용을 권장하지 않습니다. 개인 네트워크를 구성하여 실험하시기 바랍니다. NMAP 포트 스캐너이며, 원격 컴퓨터들의 자세한 정보를 알 수 있습니다. 그 상세 정보에는 운영체제, 장치종류, 운영시간, 서비스에 쓰이는 소프트웨어 제품과 버전, 방화벽 기술의 존재 등을 포함합니다. 기본적으로 전송 계층 포맷팅이 적용되지 않은 raw 패킷을 사용합니다. 따라서 root권한으로만 사용해야 합니다. 기능 호스트 탐지 - 네트워크 상의 컴퓨터들을 확인합니다. 예를 들어 ping 응답이나 특정 포트가 열린 컴퓨터를을 나열합니다. 포트 스캔 - 하나 혹은 그 이상의 대상 컴퓨터들에 열린 포트들을 나열합니다. 버전 탐지 - 응용 프로그램의 이름과 버전 번호를 확인하기 위해 원격 컴퓨터의 네트워크 서..

SSH [내부링크]

SSH(Secure Shell) 원격지에서 호스트로의 접속을 위해 SSH프로토콜을 사용하여 접속합니다. SSH는 CLI 형태로 접속하며 GUI 환경을 위해서는 XRDP, XDMCP, VNC등의 프로토콜을 사용합니다. SSH프로토콜을 사용했을 때는 암호화된 통신을 가능하게 하여 제 3자가 패킷을 탈취했다고 하더라도 쉽게 해석할 수 없습니다. sshd(ssh-server)를 설치하고 22번 tcp포트를 개방합니다. sshd_config 다음으로 ssh-server는 /etc/sshd/sshd_config의 설정 파일을 참고합니다. sshd_config 설정파일은 sshw접속포드변경, 패스워드, 공개키 사용자 인정, 접속 로그, 배너 메세지 등을 설정할 수 있습니다. 위의 파일을 열고 다음과 같이 설정을 변경..

gdb 설정파일 [내부링크]

gdb 설정파일 gdb를 실행했을때 내가 원하는 환경을 미리 설정하고 싶을때는 다음과 같이 사용자의 홈 디렉토리에 .gdbinit파일에 수정사항을 반영합니다. .gdbinit파일이 없다면 새로 만들면 됩니다. 저는 리버싱보다는 코드 디버깅에 gdb를 사용하므로 layout src만 넣어주고 사용합니다. 나중에 따로 더 추가할 옵션이 있다면 추가할 수 있습니다. 다음과 같이 기본 gdb 화면이 설정에 따라 반영된 것을 확인할 수 있습니다.

2017 Kaggle ML & DS Survey (1) [내부링크]

다음 5개의 파일을 제공합니다. 먼저 schema.csv파일을 살펴봅니다. 설문 스키마가 있는 csv파일입니다. 이 스키마에는 multipleChoiceResponses.csv 및 freeformResponses.csv의 각 열 이름에 해당하는 질문이 포함되어 있습니다. shape 인스턴스 변수로 다음의 csv파일이 총 290행 3열로 이루어진 2차원 배열인 것을 확인하였습니다. 또한, tail(), head() 함수로 다음과 같은 변수가 있다는 것을 볼 수 있습니다. 다음은 multipleChoiceResponse.csv 파일을 살펴봅니다. 16,716개의 행과 228개의 열을 확인할 수 있습니다. columns을 통해 열의 index 값들을 확인합니다. shape로 확인한 총 228개의 값이 있을겁니..

웹 실습환경 구축(VMware) [내부링크]

웹 실습환경 구축(VMware) 서버 구축 먼저 서버 버전으로 구축하지 않고 일반 데스크탑 사용자 버전을 설치하여서 runlevel을 텍스트모드로 바꾸어 줍니다. 현재 아래와 같이 graphical.target이 기본 runlevel로 적용된 것을 확인할 수 있습니다. 다음과 같이 default.target의 링크파일의 위치를 바꾸어 줍니다. 설정을 끝낸 후 reboot 명령을 입력해 시스템을 재부팅하면 적용됩니다. 다음과 같이 text mode로 전환이 되었습니다. 우선, root 계정에 대한 비밀번호를 설정합니다. sudo passwd 명령어를 입력후 진행합니다. 서버 설정 원활한 실습을 위해 많은 사람들이 방화벽 등 많은 보안을 해제하는데, 싫다. 그래서, 웹으로 접근할 수 있게 80 포트만 열어두..

Drive-by download [내부링크]

Drive-by download Drive-by download는 악성코드가 유포되는 방식 중 하나로, 인터넷에서 컴퓨터 소프트웨어의 의도되지 않는 다운로드와 관련해서, 각각 다음과 같은 두가지를 의미합니다. target website가 공격도구라고 생각될 수 있습니다. 예를들면, 크립토락커(CryptoLocker), 매트릭스(Metrix), 헤르메스(Hermes)로 알려진 랜섬웨어는 주로 Drive-by download 방식으로 유포되었다고 알려져 있습니다. 또한 최근엔 갠드크랩(GandCrab)이란 랜섬웨어가 Drive-by download 방식으로 유포되고 있다고 합니다.) 1. 결과에 대한 이해가 없는 개인이 허가한 다운로드들(예를 들면 알려지지 않은 위조 실행 파일이나, 액티브X 컴퓨넌트 또는 ..

침입 패킷분석2 [내부링크]

패킷분석2 statistic을 통해 주로 어떤 패킷을주고 받았는지 확인합니다. http 패킷쪽에서 Media Type의 패킷이 어느정도 분포하고 있습니다. 따라서 웹에서 첨부파일이 있다는 짐작을 할 수 있습니다. packet counter를 보면 2xx번대의 정상적인 패킷들을 제외하고, 4xx대의 오류(없는 페이지 접근)를 주로 발생시키는 것을 확인할 수 있습니다. 4xx대의 오류는 brute force 공격이나 SQL인젝션에서 많이 발생시킵니다. 무차별 대입을 시도하니 당연한 결과입니다. 192.168.206.133에서 8180포트로 접근한 것을 살펴보면 /manager/html/upload와 shell.jsp에 접근한 것을 볼 수 있습니다. 그러므로 피해 서버의 ip는 192.168.206.133이고..

Scipy package [내부링크]

Scipy Scipy는 수치해석 기능을 제공하는 파이썬 패키지입니다. 여러 서브패키지로 구성되어 있으며, stats 서브 패키지는 확률분포 분석을 위한 다양한 기능을 제공합니다.

Pandas package [내부링크]

pandas package 대부분의 데이터는 시계열(series)이나 표(table) 형태로 나타내는데, pandas 패키지에서는 이러한 데이터를 다루기위해 Series 클래스와 DataFrame 클래스를 제공합니다. 웨스 맥키니가 투자 운용회사인 AQR에 재직중이던 2008년 초에 개발하였고 NumPy기반입니다. Series sereis는 munpy에서 제공하는 1차원 배열과 비슷하지만 각 데이터에 index를 붙일 수 있습니다. 데이터는 value라고 합니다. sereis = index + value 라고 할 수 있습니다.( index가 column화 되있지 않습니다.) Series 생성 Series class 생성자에 넣어서 다음과 같이 객체를 만들 수 있습니다. 인덱스의 길이는 data의 길이와 ..

평균과 기댓값 [내부링크]

평균과 기댓값 평균 우리가 주로 평균이라고 부르는 것은 산술 평균(arithmetic mean)이며, 주어진 수의 합을 수의 개수로 나눈 값입니다. 기댓값 각 사건이 벌어졌을 때의 이득과 그 사건이 벌어질 확률을 곱한 것을 전체 사건에 대해 합한 값입니다. 또한, 기댓값은 선형 연산자입니다. 즉, 다음이 성립합니다. 비교 평균은 확률이라는 개념이 들어가있지 않습니다. 하지만 기댓값은 확률적인 사건에 대해서 어떤 사건이 일어날 것에 대해 기대되는 값입니다.

침입 패킷분석1 [내부링크]

패킷분석1 해당 패킷들이 어디서 http, ftp 등 어디서 발생했는지를 확인하기 위해, 먼저 패킷들의 통계를 보면 TCP쪽에 몰려있는 것을 확인할 수 있습니다. 그중에서도 HTTP가 비중이 많이 높게 나타납니다. MIME Multipart Media Encapsulation 패킷은 낮게 나타니기 때문에 용량이 큰 파일들이 왔다갔다 하는 것은 아니라고 볼 수 있지만, 작지만 어느정도 비율을 차지하고 있으므로, 어떤 파일이 이동한다는 것을 확인할 수 있습니다. 또한, Line-based text data가 상당한 비중으로 차지하고 있는걸 볼 수 있는데, 브라우저에서 얻어온 형식들 이라고 생각하면 됩니다. 이러한 MIME Multipart Media Encapsulation과 Line-based text d..

point 명령어 [내부링크]

point 명령어 p 명령어는 변수 값, 함수의 주소값도 볼 수 있습니다. (gdb) info locals a = {_int = 10, _char = 37 '%', _double = -0.51} //struct my_struct a b = (struct my_struct *) 0x251ff4 //struct my_struct *b (gdb) p a //구조체 a $1 = {_int = 10, _char = 37 '%', _double = -0.51} (gdb) p b $2 = (struct my_struct *) 0x251ff4 //포인터로 선언된 *b 구조체 (gdb) p *b $3 = {_int = 1024, _char = 10 '\n', _double = 3.14 } //포인터를 사용하여 값 확인 ..

귀무가설과 대립가설 [내부링크]

귀무가설(null hypothesis, H0) 통계학에서 처음부터 버릴 것을 예상하는 가설입니다. 차이가 없거나 의미있는 차이가 없는 경우의 가설이며, 이것이 맞거나 맞지 않다는 통계학적 증거를 통해 증명하려는 가설입니다. 예를 들어, 범죄 사건에서 용의자가 있을 때 형사는 용의자가 범죄를 저질렀다는 추정인 대립가설을 세우게 됩니다. 이때 귀무가설을 용의자는 무죄라는 가설입니다. 대립가설(alternative hypothesis, H1) 보통 모집단에서 독립변수와 결과변수 사이에 어떤 특정한 관련이 있다는 꼴입니다. 어떤 가능성에 대해 확률적인 가설검정을 할때 귀무가설과 함꼐 사용됩니다. 이 가설은 귀무가설처럼 검정을 직접 수행하기는 불가능하며, 귀무가설을 기각함으로써 받아드려지는 반증의 과정을 거쳐 수..

html tag [내부링크]

html tag 웹페이지의시작과 끝을 뜻합니다. 웹페이지는 로 시작해서 로 끝납니다. 안에 들어갈 태그들 웹 페이지의 정보, 문서에서 사용할 외부 파일들을 링크할때 사용합니다. 본 문서의 키워드 혹은 제목, 요약을 나타내는 태그로서 활용되게 됩니다. 문자 인코딩 및 문서 키워드, 요약정보 문서의 제목을 나타내는 태그로서 활용됩니다. 주로 css파일을 연결할 때 사용하는 태그입니다. 또는 외부 파일과 연결할 때 사용합니다. 문서나 문서 일부에 대한 스타일 정보를 포함합니다. 코드를 삽입합니다. 실행 가능한 코드를 웹 페이지에 포함 시키거나 참조하기 위해서 사용합니다. 보통 javascript 코드를 넣을때 사용합니다. 안에 들어갈 태그들 html 문서의 내용을 나타냅니다. 한 문서에 하나의 요소만 존재할 ..

이항 확률/분포 [내부링크]

이항분포 연속된 n번의 독립적 시행에서 각 시행이 확률 p를 가질 때의 이산 확률 분포입니다. 이러한 시행은 베르누이 시행이라고 불리기도 합니다. 사실 n = 1일때 이항 분포는 베르누이 분포입니다. 예시로는, 일반적인 주사위를 10회 던져서 숫자 6이 나오는 횟수를 셉니다. 이 분포는 n = 10이고 p = 1/6인 이항분포 입니다. 또 다른 예시는, 아주 많은 인구의 5%가 쌍커풀이 있다고 해봅니다. 그리고 100명을 무작위적으로 선택합니다. 당신이 선택한 쌍커풀을 가진 사람의 수는 n = 100이고 p = 0.05인 이항분포를 따릅니다.

베르누이 확률/분포 [내부링크]

베르누이 시행 결과가 두 가지 중 하나로만 나오는 실험이나 시행을 베르누이 시행(Bernoulli trial)이라고합니다. 예를 들어 동전을 한번 던져 앞면이 나오거나 뒷면이 나오게 하는 것도 베르누이 시행입니다. 베르누이 확률변수 베르누이 시행의 결과를 실수 0 또는 1로 바꾼 것을 베르누이 확률변수(Bernoulli random variable)라고 ㅎ바니다. 베르누이 확률변수는 두 값 중 하나만 가질 수 있으므로 이산확률 변수(discrete random variable)입니다. 베르누이 확률변수의 표본값은 보통 정수 1과 0으로 표현하지만 때로는 정수 1과 -1로 표현하는 경우도 있습니다. 베르누이 분포(Bernoulli Distribution) 이항분포의 정의는 연속된 n번의 독립적 시행에서 각..

확률변수/분포 [내부링크]

확률변수 무작위 실험을 했을 때, 특정 확률로 발생하는 각각의 결과를 수치적 값으로 표현한 변수를 말합니다. 또한 확률변수를 함수라고도 합니다. 대표적인 확률변수의 종류에는 이산확률 변수(Discrete random variable)와 연속확률 변수(Continuous random variable)가 있습니다.이산확률 변수는 확률 변수 X가 어느 구간의 모든 실수값을 택하지 않고, 0,1,2와 같은 고정된 값만 택하는 변수를 말합니다. 상태공간이 유한 집합인 또는 셈할 수 있는 무한집합인 확률 변수를 말합니다. 연속확률 변수는 확률 변수가 취하는 값이 연속된 구간으로 나타나는 확률변수를 말합니다. 즉, 확률변수가 어떤 구간의 모든 실수값을 택할 때 이 변수를 연속적으로 이어진 변수로 이루어져있습니다. 확..

베이즈 정리 [내부링크]

베이즈 정리 베이즈 정리는 1740년대 영국의 목사인 토머스 베이즈가 정립하고 수학자 프에르시몽 라플라스가 수식으로 정리한, 조건부 확률에 대한 수학적 정리입니다.

4. Link file [내부링크]

inode UFS와 같은 전통적인 유닉스 계통 파일 시스템에서 사용하는 자료 구조입니다. 파일 시스템 내에서 파일이나 디렉토리는 고유한 INODE를 가지고 있으며 inode 번호를 통해 구분이 가능합니다. 사용자가 파일 또는 파일과 관련된 정보에 엑세스 하려고 하면 파일 이름을 사용하지만, 내부적으로 파일 이름은 먼저 디렉토리 테이블에 저장된 inode 번호로 매핑됩니다. 다음으로는 해당 inode 번호를 통해 해당 inode에 액세스 됩니다. inode에 포함된 정보는 아래와 같습니다. -파일 모드(퍼미션), 링크수, 소유자명, 그룹명, 파일크기, 파일 주소, 마지막 접근 정보, 마지막 수정 정보, 아이노드 수정 정보 inode 포인터 구조를 통해 파일의 실제 데이터가 저장된 블록의 정보를 포함하여 파..

런레벨(run level) [내부링크]

런 레벨 시스템 관리의 용이함을 위하여 서비스의 실행을 단계별로 구분하여 적용하는 것입니다. 저사양의 PC나 사냥이 좋은 PC를 사용하는경우에도 간단하게 runlevel을 변경하는 것만으로도 메모리 사용률이 줄어들며, 쾌적하게 사용할 수 있습니다. 또한, runlevel의 변경은 root사용자의 경우만 가능합니다. 우분투의 LTS 버전이 16.04로 올라가면서 init이 아닌 systemd가 PID 1번을 부여받게 되었습니다. 따라서 아무리 init 설정을 변경해 run-level을 바꿔도 소용이 없습니다. level 0(halt, DO NOT SET initdefault to this) 시스템 종료를 의미합니다. 즉, 런레벨 0으로 변경하라는 명령을 내리면 시스템을 종료하라는 것입니다. level 1(..

데몬과 인터넷 슈퍼데몬 [내부링크]

데몬 데몬(daemon)이란 시스템에 관련된 작업을 하는 후위 프로세스(background process)를 말합니다. 대부분의 데몬들은 시스템이 부팅되면서 시작되고 데몬들에는 우리가 자주 듣고 접하는 telnet, ftp, http, sendmail 등이 있습니다. 대부분의 데몬은 시스템에 관련된 작업을 하게 되는데, 서비스 요청이 없을 때는 후위 프로세스로서 유휴(idle)상태에 들어가 있게 되어 시스템의 CPU를 차지하지 않지만 메모리와 기타 자원을 상당수 차지하게 됩니다. 그렇기에 많은 데몬을 띄울려면 그 만큼 시스템에 자원을 많이 가지고 있어야 합니다. 인터넷 슈퍼 데몬(Internet Super Daemon) xinetd(커널 2.4 이전 버전은 inetd, xinetd는 eXtended In..

확률 [내부링크]

확률 일정한 조건 아래서 어떤 사상이나 사상이 일어날 가능성의 정도. 또는 그 수치입니다. 수학적으로는 1을 넘을 수 없고 음이 될 수도 없습니다. 확률 1은 항상 일어남을 의미하고, 확률 0을 절대로 일어나지 않음을 의미합니다. 종속성과 독립성 사건 A의 발생 여부가 사건 B의 발생 여부에 대한 정보(condition, 조건부 확률)를 제공한다면 두 사건 A와 B는 종속사건으로 볼 수 있습니다. 그렇지 않다면 독립사건입니다. 수학적으로, 사건 E와 F가 동시에 발생할 확률이 각각 사건이 발생할 확률의 곱과 같다면(joint, 결합 확률) 두 사건은 독립사건을 의미한다. P(A,B) = P(A)P(B) -> 독립사건 조건부 확률 조건부 확률(conditional probability)은 어떤 사건 B가 ..

GET 과 POST의 차이 [내부링크]

HTTP HTTP는 웹상에서 클라이언트와 서버 간에 요청/응답으로 데이터를 주고 받을 수 있는 프로토콜입니다. 클라이언트가 HTTP 프로토콜을 통해 서버에게 요청을 보내면 서버는 요청에 맞는 응답을 클라이언트에게 전송합니다. 이 때, HTTP 요청에 포함되는 HTTP 메소드는 서버가 요청을 수행하기 위해 해야할 행동을 표시하는 용도로 사용합니다. 이 HTTP 메소드 중 GET과 POST의 특징과 차이점을 알아보겠습니다. GET HTTP/1.1 스펙인 RFC2616의 Section9.3에 따르면 GET은 서버로부터 정보를 조회하기 위해 설계된 메소드입니다. GET은 요청을 전송할 때 필요한 데이터를 Body에 담지 않고, 쿼리스트링을 통해 전송합니다. URL의 끝에 ?와 함께 이름과 값으로 쌍을 이루는 요..

3. Backdoor [내부링크]

Backdoor 시스템 접근에 대한 사용자 인증 등 정상적인 절차를 거치지 않고 응용프로그램 또는 시스템에 접근할 수 있도록 하는 프로그램입니다. 해킹이 아닌 해킹 성공 후의 후속조치라고도 합니다. local backdoor 시스템에 로그인한 뒤에 관리자로 권한 상승을 시키기 위한 백도어입니다. 공격자는 실행하기 위한 일반 계정이 적어도 하나 필요합니다. 단순히 실행하면 관리자 권한으로 상승합니다. 전에 알아보았던 SUID로 만들 수 있습니다. remote backdoor(Port Bind) 원격에서 관리자로 계정과 패스워드를 입력하고 로그인한 것처럼 바로 시스템의 관리자 계정을 얻을 수 있는 백도어입니다. 네트워크에 자신의 포트를 항상 열어 놓은 경우가 많습니다. 일종의 서비스를 제공하는 데몬처럼 동작..

그래프 - Eulerian Circuit [내부링크]

Eulerian circuit 오일러 회로는 그래프에 존재하는 모든 Edge를 정확히 1번씩만 방문하는 연속된 경로입니다. 이때, 시작점과 도착점이 같아야 합니다. 또한, 한 컴포넌트에 존재하여야 하며 각 Vertex의 Degree가 짝수개여야합니다. 구현 코드 문제를 바탕으로 구현한 것이므로, 다른 문제에 맞게 변형하여서 사용하면 됩니다.

그래프 - Flood Fill [내부링크]

Flood Fill 플러드 필 혹인 시드 필은 다차원 배열의 어떤 칸과 연결된 영역을 찾는 알고리즘입니다. 이 알고리즘은 그림 프로그램에서 연결될 비슷한 색을 가지는 영역에 "채우기" 도구에 사용되며, 바둑이나 지뢰찾기 같은 게임에서 어떤 비어 있는 칸을 표시 할 지 결정할 때에도 사용됩니다. 구현 코드 문제 풀이 방법에서 만든 코드이며, 문제 유형에 맞게 사용하면 됩니다.

표본의 분산에서는 n이 아닌 n-1로 나누는 이유 [내부링크]

표본의 분산에서는 n이 아닌 n-1로 나누는 이유 1. 표본의 분산은 모집단의 분산을 Underestimate(과소평가)하여 (표본의 분산 < 모집단의 분산)와 같은 상태가 되기 때문에 이를 보정해주기 위해서 표본분산의 분모를 작게만들어 전체 표본분산을 크게 만들었습니다. 직관적으로 가장 이해하기 쉬운 설명이지만 왜 n-2이나 n-3 등이 아니라 n-1이라는 정확한 수치에 대한 설명이 안된다. 이에 대한 보충으로 아래 두 개의 설명이 필요하다. 2. 두 번째로는 샘플 분산에서는 Degrees of Freedom(자유도)가 n-1이기 때문이다. 3. 표본의 분산의 기대치를 할 경우, 수학적으로 정확하게 모집단의 분산으로 유도가 되기 때문에 n 대신 n-1로 나누어 준다. 이에 대해 자세하게 정리해놓..

그래프 - SCC [내부링크]

그래프 - SCC SCC란? SCC(Strongly Connected Component)는 방향 그래프에서 임의의 두 정점 U,V가 있을때, U->V로 가는 경로가 존재한다면 그 그룹은 SCC라 부를 수 있습니다. 이때, U->V로 가는 경로는 직, 간접적인 경로를 의미합니다. SCC의 특징 1. 같은 SCC내에서 뽑은 임의의 U,V점에서 U->V 혹은 V->U의 경로(직/간접적)는 항상 존재합니다. 2. SCC는 Maximal한 성질을 가지고 있어 SCC가 형성된다면 형성될 수 있는 가장 큰 집합으로 형성이됩니다. --강한결합요소끼리는 서로 일방향적으로 연결되어 있습니다. 구현 코드 참고 : https://www.crocus.co.kr/950

리눅스 시스템 부팅 순서 [내부링크]

부팅 1단계 : ROM-BIOS 실행 부팅 2단계 : 부트로더(GRUB)의 실행과 역할 부팅 3단계 : 스와퍼(Swapper) 프로세스 수행 부팅 4단계 : init 프로세스의 실행 부팅 5단계 : 부팅 레벨의 결정 단계 부팅 6단계 : /etc/rc.d/rc.sysinit 스크립트 실행 ( 모든 부팅 레벨) 부팅 7단계 : /etc/rc.d/rcN.d/ 디렉토리의 스크립트 실행(부팅레벨에 따른 실행) 부팅 8단계 : 시스템 매직키 설정을 한다. 부팅 9단계 : 시스템 전원 공급 설정을 한다. 부팅 10단계 : 가상터미널 실행과 로그인창 실행 부팅 11단계 : X 윈도우 실행 1단계 : ROM-BIOS실행 ROM-BIOS : Read Only Memory - Basic Input Output System..

2. System function [내부링크]

System function 유닉스 계열 서버에서 실제로 실행될 수 있는 명령어를 연속해서 전달하려면 " ; "을 이용하면 된다는 것입니다. " ; "은 셸에서 명령어를 한 줄에 연속해서 적을 때 이용할 수 있으며, 이는 system()함수에도 동일하게 적용됩니다. 1. system function은 비싸고, 리소스가 많이 들어가는 call입니다. 2. It's not portable. 범용성이 없습니다. system()안에 들어가는 인자는 유닉스 운영체제와 윈도우 운영체제가 혼용되어 사용하지 않기 때문입니다. 임시 권한 상승으로 인해 system() 함수에 직접 인자를 입력하는 경우 주의하여 사용하여야 합니다. echo 명령어를 사용하여 백도어 파일 생성이 충분히 가능하기 때문입니다. 이에 대한 실습은..

파일 내 검색/문자 치환 [내부링크]

파일 내 검색 아래와 같이 /찾고싶은 단어 를 치면 하이라이트가 되면서 단어를 찾아준다. n 을 눌러, 커서를 이동하면서 다음 단어로 이동할 수 있다. 파일 내 문자 치환 :%s/치환전/치환후/ig ig는 무엇을 의미할까? i는 대소문자 구분안함(case Insensitive). 없을 경우 대소문자가 정확히 일치한 것만 변경함. g는 줄내 모두 변경(Global). 없을 경우 라인에서 첫번째 일치 항목만 변경함.

쉘 명령어 실행 기능 [내부링크]

쉘 명령어 실행 기능 아래의 표시된 명령어만 되는 것이 아닌, vim에서 명령어 기능을 사용할 수 있다는 것을 이야기하고자 하는 것이다 :!쓰고싶은명령어 와 같이 사용된다. ls -al 명령어 치면 bash에서와 같은 결과를 볼 수 있다. bash 쉘 진입 아래와 같이 명령 모드에서 !bash 를 입력하여 쉘로 들어갈 수 있다. 위의 명령을 치면 아래와 같은 화면이 나오게 된다. 그래서 vim이 background로 빠졌나 싶어서 fg를 쳐보았다. 하지만 fg 명령어가 작동하지 않았다. 현재 vim은 background로 빠진 것이 아니다. 그럼 뭘까? 다시 원래의 편집기화면으로 돌아가려면 exit 명령어를 입력한다. 위와 같은 명령어가 끄면서 "press ENTER or type command to c..

01.license_1 [내부링크]

먼저 해당 실행파일의 main을 disassemble한다. AT&T 형식에서 Intel 형식으로 전환하여 준다. 이렇게 하여 전체 어셈블러 소스를 볼 수 있다. AT&T 형식과 인텔 형식에서, procedure prelude 부분에서 mov의 인자의 순서가 다르게 나온다. 착각할 여지가 많은 부분이므로 주의해서 보도록해야한다. 또한 다른 부분에서도 그러한 현상이 나타나는지 확인해봐야 할것이다. info registers 명령을 통해서 현재 상태의 레지스터 값을 볼 수 있다.

레지스터 [내부링크]

-목차- 1. 범용 레지스터 2. 명령 포인터 레지스터 3. Segment Register 범용 레지스터 범용적으로 사용되는 레지스터들입니다. IA-32에서 각 범용 레지스터들의 크기는 32비트입니다. EAX(Extended Accumulator Register) 산술 연산 명령에서 상수/변수 값을 저장하거나 함수의 리턴 값이 저장되는 용도로 사용됩니다. EBX(Extended Base Register) EBX는 DS 세그먼트에 대한 포인터를 주로 저장하고 ESI나 EDI와 결합하여 인덱스에 사용됩니다. EBX는 메모리 주소 지정을 확장하기 위해 인덱스로 사용될 수 있는 유일한 범용 레지스터입니다. ECX(Extended Counter Register) 반복 명령어 사용 시 반복 카운터로 사용됩니다. E..

1. SUID, SGID, STID [내부링크]

-목차- 1. SUID/SGID 2. STID 3. 실제사용자(Real User ID)와 유효 사용자(Effective User ID) 4. setreuid SUID/SGID 루트가 아닌 사용자들이 잠깐 루트의 사용권한을 써서 프로그램을 실행해야 할 필요가 있을때 주는 권한입니다. S*ID가 설정된 파일은 특정 명령어를 실행하여 root권한 획득 및 정상 서비스 장애를 발생시킬 수 있으며, 로컬 공격에 많이 이용되므로 보안상 철저한 관리가 필요합니다. SUID의 절대표기값은 4000입니다. 일반사용자가 소유자 권한으로 실행할 수 있도록 하며, 보안상 문제가 생길 확률이 높기 때문에 조심해서 사용하여야 합니다. SGID의 절대표기값은 2000입니다. 일반사용자가 소유 그룹의 권한을 실행할 수 있도록 합니다..

그래프 - 위상정렬 [내부링크]

위상정렬(Topological Sort) 위상정렬(topological sorting)은 유향 그래프의 꼭짓점들(vertex)을 변의 방향을 거스르지 않도록 나열하는 것을 의미합니다. 위상정렬을 가장 잘 설명해 줄수 있는 예로 대학의 선수과목 구조를 들 수 있습니다. 만약 특정 수강과목에 선수 과목이 있다면 그 선수 과목부터 수강해야 하므로, 특정 과목들을 수강해야 할 때 위상 정렬을 통해 올바른 수강 순서를 찾아낼 수 있습니다. 이와 같이 선후 관계가 정의된 그래프 구조 상에서 선후 관계에 따라 정렬하기 위해 위상정렬을 이용할 수 있습니다. 정렬의 순서는 유향 그래프의 구조에 따라 여러개의 종류가 나올 수 있습니다. 위상 정렬이 성립하기 위해서는 반드시 그래프의 순환이 존재하지 않아야합니다. 즉, 그래..

[그래프 탐색] BFS, DFS [내부링크]

DFS와 BFS 이번 포스팅에서는 DFS와 BFS에 대해서 자세히 설명하도록 하겠습니다. DFS(Depth First Search) : 깊이 우선 탐색 DFS는 맹목적 탐색 방법의 하나로 탐색 트리의 최근에 첨가된 노드를 선택하고, 이 노드에 적용 가능한 동작자 중 하나를 적용하여 트리에 다음 수준(level)의 한 개의 자식 노드를 첨가하며, 첨가된 자식 노드가 목표 노드일 때까지 앞의 자식 노드의 첨가 과정을 반복해 나가는 방식입니다. 트리나 그래프에서 한 루트로 탐색하다가 특정 상황에서 최대한 깊숙히 들어가서 확인한 뒤 다시 돌아가 다른 루트로 탐색하는 방식입니다. 대표적으로 백트래킹(부모 노드로 되돌아오는 과정)에 사용합니다. 일반적으로 재귀 호출을 사용하여 구현하지만, 단순한 스택 배열로 구현하..

그래프 - 다익스트라 알고리즘 [내부링크]

서론 다익스트라 알고리즘은 도로 교통망 같은 곳에서 나타날 수 있는 그래프에서 꼭짓점 간의 최단 경로를 찾는 알고리즘입니다. 이 알고리즘은 컴퓨터 과학자 에츠허르 다익스트라가 1956년에 고안했으며 삼년 뒤에 발표했습니다. 최단 경로 알고리즘은 네트워크 라우팅 프로토콜에서 널리 이용되며, 특히 IS-IS(Intermediate System to Intermediate System)와 OSPF(Open Shortest Path First)에서 주로 사용됩니다. 그래프에서 정점까지 최단 경로를 구하는 문제는 여러가지 방법이 있습니다. 하나의 정점에서 다른 하나의 정점까지 최단 경로를 구하는 문제 하나의 정점에서 다른 모든 정점까지의 최단 경로를 구하는 문제 하나의 목적지로 가는 모든 최단 경로를 구하는 문제..

그래프 [내부링크]

목차 그래프란? 그래프와 트리의 차이 무향그래프, 유향(방향)그래프 인접, 가중치 그래프 그래프 표현 인접 행렬 인접 리스트 간선 리스트 그래프 탐색 깊이 우선 탐색(DFS) 너비 우선 탐색(BFS) 그래프 표현 방법과 시간복잡도 그래프란? 그래프란, 객체(사물 또는 추상적 개념)들과 객체들 사이의 연결관계를 표현합니다. 예를 들면 지하철에서 다른 역으로 가는 최단 경로를 찾아주는 서비스도 그래프 알고리즘을 사용합니다(무향 그래프).또한, 정점(Vertex)들의 집합과 정점을 연결하는 간선(Edge)들의 집합으로 구성된 자료구조입니다. 다음과 같이 그래프를 표현할 수 있습니다. G = (V, E), V = 정점들의 집합, E = 간선들의 집합. V개의 정점을 가지는 그래프는 최대 V(V -1)/2 개의 ..

CPU scheduling [내부링크]

CPU scheduling 문맥교환(Context Switching) 새로운 프로세스에게 CPU를 할당하기 위해 현재 CPU가 할당된 프로세스의 상태 정보를 저장하고, 새로운 프로세스의 상태 정보를 설정한 후 CPU를 할당하여 실행되도록 하는 작업. (Overhead가 발생하는 주요 원인) CPU 스케줄링이란? 메모리에 있는 준비(Ready) 상태의 프로세스 중 하나를 선택해 CPU자원을 할당하는 것 CPU 스케줄링이 일어나는 시점 실행상태에서 대기상태로 전환될 때 (예, 입출력 요청) - Non preemptive(비선점) 실행상태에서 준비상태로 전환될 때 (예, 인터럽트 발생) - preemptive(선점) 대기상태에서 준비상태로 전환될 때(예, 입출력이 종료될 때) 종료될 때(Terminated) ..

Parallel Hardware [내부링크]

Parallel Hardware Coordination 각 코어들은 작업을 협력적으로 수행(이를 Coordination이라 한다)해야 하는데, 다음을 주의해야 한다. Communication : 통신, 프로세스 간 데이터를 전달할 수 있어야 한다. Load balancing : 부하 분산, 한 프로세스만 고역에 시달리게 두어선 안 된다. Synchronization : 동기화, 한 프로세스의 작업이 다른 프로세스들 보다 지나치게 앞서 있어선 안된다. SISD 단일명령-단일자료(SISD, Single Instruction, Single Data )은 전산에서 한 프로세서가 한번에 하나의 명령어를 처리할 때 하나의 메모리에 저장되어 있는 한 데이터를 이용하여 처리하는 것을 일컫는 용어입니다. 폰 노이만 구조..

(Translation-Lookaside Buffer)TLB [내부링크]

TLB(변환 색인 버퍼) 변환 색인 버퍼(Translation Lookaside Buffer, TLB)는 가상 메모리 주소를 물리적인 주소로 변환하는 속도를 높이기 위해 사용되는 캐시로, 약칭은 TLB이다. TLB는 최근에 일어난 가상 메모리 주소와 물리 주소의 변환 테이블을 저장하기 때문에 일종의 주소 변환 캐시라고 할 수 있다. TLB는 CPU와 CPU 캐시 사이, CPU 캐시와 메인 메모리 사이 등 여러가지 다른 레벨의 캐시들 사이에서 주소를 변환하는데 사용할 수 있다. 현재 모든 데스크탑 및 서버용 프로세서는 하나 또는 그 이상의 TLB를 메모리 관리 하드웨어에 가지고 있다. 페이지 단위나 세그먼트 단위로 처리하는 가상 메모리를 사용하는 거의 모든 하드웨어는 TLB를 사용한다. CPU는 1차적으로..

Apache MPM [내부링크]

아파치 서버 MPM(Apache Multi-Processing Modules) 아파치 서버가 클라이언트에게서 받아들인 요청을 처리하기 위하여 자식 프로세스들에게 분배하는 모듈입니다. prefork 방식과 worker 방식이 있습니다. Prefork 하나의 자식 프로세스가 하나의 스레드를 갖는 구조로, 자식 프로세스는 최대 1024개까지 가능합니다. 프로세스로 운영되기 때문에 스레드 간 메모리 공유를 하지 않습니다(독립적이라 안정적인 대신에 메모리를 많이 사용합니다.). 실행 중인 프로세스 복제하여 실행합니다(메모리 영역까지 같이 복제). 응답 프로세스를 미리 띄워놓고 클라이언트 요청 시 자식 프로세스가 반응하게 되는 방식이며, 일반적으로 single CPU 또는 Dual CPU에서 성능이 좋습니다. wo..

HTTP통신과 Socket 통신의 차이 [내부링크]

HTTP통신 HTTP통신은 Hyper Text Transfer Protocol의 약자 입니다. Hyper Text(웹 문서를 구성하고 있는 언어인 HTML을 의미합니다)를 전송하기 위한 프로토콜입니다. HTML이란? HTML은 Hyper Text Markup Language의 줄인말로, Hyper Text, 즉 단순하게 text 의미를 넘어서(Hyper) 링크, 이미지 등 다양한 것들을 표현할 수 있다는 의미입니다. HTML은 웹 문서의 뼈대를 구성하는 언어입니다. 모든 웹 문서는 HTML로 이루어져 있고, HTML로 이루어진 문서 만이 브라우저를 통해 웹 문서로서 읽어질 수 있습니다. HTTP의 구성 HTTP통신은 기본적으로 요청(Request)과 응답(Response)으로 이루어져 있습니다. 클라이언..

서버의 성능 측정 [내부링크]

N계층 구조에서의 성능이란 N계층 서버의 성능을 클라이언트를 제외한 서버군(server farm) 전체가 상호작용하며 클라이언트의 요청을 처리하는 능력입니다. 성능을 개선하기 위해서는 각 계층 서버 용량의 총합이 아니라, 가장 낮은 성능을 가진 자원 혹은 가장 큰 병목지점에 의해 좌우되므로 이점을 유의하며 개선해야 합니다. 어떻게 튜닝할 것인가 하드웨어, 소프트웨어(서버 소프트웨어) 및 운영체제의 메커니즘을 이해해야 합니다. 또한 자료구조 및 알고리즘에 따라 성능이 달라집니다. 그리고 튜닝을 수행함에 있어서 늘 가장 좋은 효과(성능)을 얻을 수 있는 방법은 병목지점을 찾아내고, 그것을 해결하느 ㄴ것입니다. 따라서, 서버 전체의 성능을 분석하는 것 뿐만 아니라 계층 간, 계층 별 성능을 측정할 수 있는 기..

서버/ 클라이언트 구조 [내부링크]

Client/Server Architecture 클라이언트(일반적으로 GUI를 사용하는 어플리케이션)를 서버에서 분리하는 네트워크 구조이다. 각각의 클라이언트 소프트웨어 인스턴스는 서버에 요청을 전송할 수 있다. 하나의 서버에 복수의 클라이언트가 접속하게 된다.(일대다 관계) 서버 유형 어플리케이션 서버(게임, 채팅, 메신저, 증권 거래 서버 등), 파일 및 FTP 서버, 터미널 서버, 메일 및 DNS서버가 있습니다. 클라이언트/서버 기능 서버기능 수동적 서비스 제공자(Passive, Slave), 클라이언트 요청을 처리하기 위해 대기, 요정(request)을 처리한 후, 결과를 클라이언트에 회신(reply) 클라이언트 기능 능동적, 의뢰자(Active, Master), 서버가 수행할 수 있는 요청을 전..

MSE(손실함수) [내부링크]

손실함수는 정답에 대한 오류를 숫자로 나타내는 것으로 오답에 가까울스록 큰값이 나온다.

지연시간과 반응시간 [내부링크]

https://12bme.tistory.com/272 [테스트] JMeter와 성능 테스트 1.1 JMeter란 Apache JMeter는 웹 애플리케이션처럼 클라이언트-서버 구조로 된 소프트웨어의 성능 테스트를 위해서 만들어진 100% 순수 자바 프로그램입니다. 스테파노 마조끼가 개발했으며, 이는 현재 톰캣(Tomc.. 12bme.tistory.com load 테스트를 하는 이유 : 시스템의 성능을 벤치 마크하기 위한 테스트를 의미합니다. 이 테스트는 부하(Load)를 순차적으로 증가시키면서 응답시간이 급격히 증가하거나 더는 처리량이 증가하지 않거나 시스템의 CPU와 Memory 등이 기준값 이상으로 증가하는 등 비정상 상태가 발생하는 임계점을 찾아내고 이를 바탕으로 성능 이슈에 대한 튜닝과 테스트를 ..

정규분포 [내부링크]

정규분포 정규분포 란? 정규분포는 수집된 자료의 분포를 근사하는 데 자주 사용되며, 이것은 중심 극한 정리에 의하여 독립적인 확률변수들의 평균은 정규분포에 가까워지는 성질이 있기 때문입니다. 정규분포는 2개의 매개 변수 평균과 표준편차에 대해 모양이 결정되고, 이때의 분표는 아래와 같이 표기합니다. 특히, 평균이 0이고 표준편차가 1인 정규분포 를 표준 정규 분포(standard normal distribution)이라고 합니다. 정규 분포 밀도 함수에서 를 통해 X를 Z로 정규화함으로써 평균이 0, 표준편차 1 인 표준 정규분포를 얻을 수 있는 것입니다. Z-분포라고 부르며 Z-분포로 하는 검정(test)를 Z-검정이라고 합니다. 정규분포의 성질 정규분포는 좌우 대칭의 종 모양(Bell curve)으로..

Virtual Memory [내부링크]

virtual memory 모든 프로세스는 자신만의 가상 주소 공간을 가지고 있습니다. 32비트/64비트 프로세스는 각 비트수에 맞게 최대 4GB/16GB의 주소 공간을 가집니다(4GB : 0x00000000 ~0xFFFFFFFF, 16GB : 0x000000000000000 ~ 0xFFFFFFFFFFFFFFFF) 모든 프로세스들을 자신만의 주소 공간을 가지기 때문에, 특정 프로세스 내에서 쓰레드가 수행될 때 해당 쓰레드는 프로세스가 소유하고 있는 메모리에 대해서만 접근이 가능합니다. 다른 프로세스에 의해 소유된 메모리는 숨겨져 있으며, 접근이 불가능 합니다. 즉, 가상메모리는 프로세스의 logical memory와 physical memory를 분리하기 위해 생겼습니다. 또한, 프로세스가 실제 필요로 ..

Randomized Blocks,Latin Squares, and Related Designs [내부링크]

a factor in blocking that has an effect on the response variable but is of no interest to the research topic. and a nuisance variable is a random variable(if the nuisance factor is unkown). "Nuisance variable" has been used in the context of statistical surveys to refer information that is not of direct interest but which needs to be taken into account in an analysis. blocking 을 사용하였으므로, nuisanc..

우분투 방화벽 [내부링크]

여태 나는 iptables 가지고 방화벽 규칙 설정을 하려고 애를 썻었다. 하지만 이제 우분투에서는 사용하지 않는것 같다. ufw이걸 사용한다. 예를 들면 ufw allow 22 이렇게 자세한건 나중에

TIME_WAIT 소켓이 서비스에 미치는 영향 [내부링크]

TCP 통신과정 TIME_WAIT소켓에 대해 이야기하기 전에 먼저 TCP의 통신 과정을 살펴봅니다. 위의 그림을 보면 통신을 시작하기 전에 최초의 연결을 맺게 되는 과정을 3-way handshake라고 합니다. 1.클라이언트는 서버로 통신을 시작하겠다는 SYN을 보내고, 2.서버는 그에 대한 응답으로 SYN+ACK를 보냅니다. 3.마지막으로 클라이언트는 서버로부터 받은 패킷에 대한 응답으로 ACK를 보냅니다. 이렇게 3-way-handshake를 정상적으로 마친 다음 클라이언트는 서버에 데이터를 요청합니다. 그림을 보면 HTTP통신일 경우 GET /index.html과 같이 요청하고, 통신을 모두 마친 후에는 연결을 종료합니다. 이 과정을 4-way handshake라고 합니다. 연결을 맺을 때는 연결..

환경변수(path) 설정 [내부링크]

환경 변수는 각각의 계정마다 설정되어 있는거 같다. 내 user에서 설정하면 다같이 공통으로 적용 되는줄 알았는데 안되었다. 그래서 루트에서 사용하려면 또 따로 해주어야 한다. 하지만 export를 이용한 변경은 일시적이라고 한다. 위와 같이 추가 시켜주면 된다. 영구적 방법 : .bashrc에 추가하여 사용하면 됩니다. 각 프로필마다 있으므로 알아서 해. 아니야 루트에만 있네 보니까 / 이것만 root인줄 알았는데 /root도 있었네ㅋㅋㅋㅋㅋㅋㅋㅋ신기해 아무튼 bashrc로 들어간다 그래서 파일 맨마지막에 이렇게 추가해준다 그리고 source 명령어를 사용하여 변경된 것을 저장하여 준다. 그런데 색이 바뀌었다. 처음엔 root권한에서 나가진건가 생각했는데 그렇지 않았다. path만 추가했을뿐인데. 아무..

분산분석(ANOVA) [내부링크]

##제가 공부하면서 쓴거라 오류가 있을 수 있습니다 분산분석(변량분석)이란? 변량분석은 둘 이상의 집단 간 평균 점수를 비교하고자 할 때 실시하는 분석방법입니다. 차이검증(T검정)으로는 두 집단 끼리만 비교할 수 있지만 변량 분석을 이용하면 더 많은 집단 끼리도 비교할 수 있습니다. 평균의 차이검증 분산분석은 (영향을 주는 변수 : 범주형자료, 영향을 받는 변수 : 연속형 자료) 일때 적절한 통계적 분석 방법입니다. 범주형 자료의 집단이 두개일 경우 T검정, 범주형 자료의 집단이 세개 이상일 경우 분삭분석을 실시합니다. 일원배치 분산분석을 하기 위해서는 3가지의 조건이 부합되어야합니다. 정규성 각 모집단의 분포가 정규분포여야 합니다. 등(동)분산성 각 모집단 간의 분산이 동일해야 합니다. 독립성 각 모집..

F분포 [내부링크]

F분포 F 분포(F-distribution 또는 Snedecor's F distribution 또는 Fisher–Snedecor distribution)은 통계학에서 사용되는 연속 확률 분포로, F 검정과 분산분석 등에서 주로 사용된다. 또한, 분산의 비교를 통해 얻어진 분포비율이다. 이 비율을 이용하여 각 집단의 모집단분산이 차이가 있는지에 대한 검정과 모집단평균이 차이가 있는지 검정하는 방법으로 사용한다. 즉 F = (군간변동)/(군내변동)이다. 만약 군내변동이 크다면 집단간 평균차이를 확인하는 것이 어렵다. 분산분석에서는 집단간의 분산의 동질성을 가정하고 하기 때문에 만약 분산의 차이가 크다면 그 차이를 유발한 변인을 찾아 제거해야 한다. 그렇지 못하면 분산분석의 신뢰도는 나빠지게 된다. F분포의 ..

표준 편차와 표준 오차 [내부링크]

표준 편차와 표준 오차에 대해서 알아보겠습니다. 제가 이 둘을 헷갈려해서 따로 정리하여보았어요~ 그런데 저 뿐만아니라 많은 분들도 헷갈려 하시더라구요. 표준편차 (SD, Standard Deviation) - 점수집합 내에서 점수들 간의 상이한 정도를 나타내는 산포도 측정 도구 - 표준편차가 클수록 평균값에서 이탈한 것 - 표준편차가 작을수록 평균값에 근접한 것 - 변수값이 평균값에서 어느 정도 떨어져 있는지를 알 수 있음 모표준편차 표본표준편차 왜 분모가 n-1인지는 다른 글에 써놓았습니다. 표준오차 (SE, Standard Error) - 표본추출의 과정에서 발생하는 오차와 연관된 것으로 추정량의 정도를 나타내는 측정 도구 - 표본이 모집단으로부터 얼마나 떨어져 있는지를 나타내는 것(모집단이라는거에 ..

Hyper threading [내부링크]

Hyper threading 하이퍼 스레딩이라는 기술을 사용하게 되면 멀티코어를 사용해야 할 작업에서 20~30% 성능향상이 있습니다. 단, 멀티코어가 필요없는 싱글코어로도 충분한 작업에서는 오히려 10%정도의 성능이 저하됩니다. 위의 그래프에 대해 설명합니다. 첫번째 그래프에서 주황색과 파란색의 막대가 각각 시간적 흐름에 따라 하나의 프로세스에서 필요로 하는 자원의 양을 나타내고 있습니다. 멀티태스킹이 이루어지는 원리는 운영체제 상에서 매우 작은 시간 단위로 각각의 작업을 번갈아가며 실행시키기 대문에 가능한 것입니다. 따라서 두번째 그래프에서 묘사된 대로 하이퍼스레딩이 적용되기 전의 일반적이 상황에서 두개의 작업이 완료될 때까지 각각의 작업을 따로 실행시킨 것과 동일 한 시간이 걸리게 됩니다. *세번째..

CPU cache [내부링크]

CPU cache cpu cache란? cache memory는 속도가 빠른 장치와 느린 장치 사이에서 속도차에 따른 병목 현상을 줄이기 위한 범용 고속 buffer 메모리를 지칭합니다(SRAM이라고도 합니다). CPU에서는 CPU 코어와 메모리 사이에서 속도차에 따른 병목 현상을 완화하는 역할을 합니다. 프로그램에서 직접적으로 읽거나 쓸 수 없고 하드웨어의 메모리 관리 시스템이 내부적으로 제어합니다. 대부분의 프로그램은 한번 사용할 데이터를 다시 사용할 가능성이 높고, 그 주변의 데이터도 곧 사용할 가능성이 높은 데이터 지역성을 가지고 있습니다. 데이터 지역성을 활용하여 메인 메모리에 있는 데이터를 캐시 메모리에 불러와 두고, CPU가 필요한 데이터를 캐시에서 먼저 찾도록 하면 성능을 향상시킬 수 있습..

CPU의 구조 [내부링크]

CPU란? 중앙처리장치(CPU: Cnetral Processing Unit)는 사람의 두뇌와 같이 컴퓨터 시스템에 부착된 모든 장치의 동작을 제어하고 명령을 실행하는 장치입니다. 중앙 처리장치는 제어장치, 연산장치, 레지스터 그리고 이들을 연결하여 데이터를 전달하는 버스로 구성되어 있습니다. CPU의 구성장치 제어장치(control unit) 제어장치(Control Unit)는 컴퓨터에 있는 모든 장치들의 동작을 지시하고 제어하는 장치입니다. 제어장치는 명령 레지스터에서 읽어들인 명령어를 해독하여 해당하는 장치에게 제어 신호를 보내 정확하게 수행하도록 지시합니다. 연산장치(ALU, Arithmetic) 연산장치(ALU, Artihmetic)는 제어장치의 명령에 따라 실제로 연산을 수행하는 장치입니다. 연..

쿠버네티스 개념 [내부링크]

쿠버네티스 기본 개념 쿠버네티스가 어떻게 동작하는지, 설치는 왜 이리 어려운지, 설정 파일은 왜 그렇게 복잡한지 이해하기 위해 쿠버네티스의 디자인과 구성 요소, 각각의 동작 방식을 알아보겠습니다. 쿠버네티스에서 가장 중요한 것은 desired state - 원하는 상태 라는 개념입니다. 원하는 상태라 함은 관리자가 바라는 환경을 의미하고 좀 더 구체적으로는 얼마나 많은 웹서버가 떠 있으면 좋은지, 몇 번 포트로 서비스하기를 원하는지 등을 말합니다. 쿠버네티스는 복잡하고 다양한 작업을 하지만 자세히 들여다보면 현재 상태current state를 모니터링하면서 관리자가 설정한 원하는 상태를 유지하려고 내부적으로 이런저런 작업을 하는 로직을 가지고 있습니다.이러한 개념 때문에 관리자가 서버를 배포할 때 직접적..

쿠버네티스란? [내부링크]

쿠버네티스란? 쿠버네티스는 컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼입니다. 컨테이너 오케스트레이션이 하는 일은 여러 개의 서버에 컨테이너를 배포하고 운영하면서 서비스 디스커버리Service discovery같은 기능을 이용하여 서비스 간 연결을 쉽게 해주는 것입니다. 서버마다 app01, db01, cache01 같은 이름을 지어주고 하나하나 접속하여 관리하는 것이 아니라 server1, 2, 3, 4..를 하나로 묶어 적당한 서버를 자동으로 선택해 애플리케이션을 배포하고 부하가 생기면 컨테이너를 늘리고 일부 서버에 장애가 발생하면 정상 동작 중인 서버에 다시 띄워 장애를 방지합니다. 다양한 배포 방식 컨테이너와 관련된 많은 예제가 웹(프론트엔드+백엔드) 애플리케이션을 다..

Docker 컨테이너 외부 노출 [내부링크]

도커는 기본적으로 컨테이너에 172.17.0.x 의 IP를 순차적 할당(내부 네트워크)을 받습니다. 외부로 컨테이너의 어플리케이션을 노출하기 위해서는 컨테이너IP 와 호스트IP를 바인딩 해야 합니다. 위 그림은 사용 예시입니다. -p [호스트 포트] : [컨테이너 포트] 다음은 호스트 7777 포트를 컨테이너의 80포트와 바인딩의 예입니다. 여러개의 포트노출을 위하여 -p옵션을 여러개 사용합니다. 도커 컨테이너 외부노출 아키텍처

Docker network [내부링크]

Docker network docker0는 container가 통신하기 위한 가상 linux bridge 입니다. bridge는 기본적으로 L2 통신 기반이며, 만약 container가 하나 생성되면 이 bridge에 container의 interface가 하나씩 binding 되는 형태입니다. 따라서 container가 외부로 통신할 때는 무조건 docker0 interface를 지나야합니다. 만약 외부와 연결을 해야할 경우에는 호스트에 veth(=virtual eth)라는 네트워크 인터페이스를 생성하고 컨테이너의 eth와 연결이 됩니다. veth 인터페이스는 사용자가 직접 생성할 필요 없이 도커엔진에 의해 자동으로 생성이 됩니다. veth 인터페이스 뿐만 아니라 docker()라는 브리지도 있는데, ..

x/print 명령어 사용법 [내부링크]

X명령어 x 명령어는 프로그램 실행시 메모리를 검사할 때 사용합니다. (gdb) x/옵션 기준점 여기서 기준점은 메모리 주소이며 ebp, eip, esp 등의 레지스터로 표시해도 됩니다. 아래는 사용예시입니다. x/4wx $ebp (ebp를 기준으로 16진법(x)으로 4바이트 단위(w)로 4개 보여준다. (gdb) x/4wx $ebp 0xbfffedf8 : 0x41414141 0xb5c3b8c3 0xbfc2bfc3 0xbfffee00 x/8wx $ebp (ebp를 기준으로 16진법(x)으로 4바이트 단위로(w) 8개 보여준다.) (gdb) x/8wx $ebp 0xbfffedf8 : 0x41414141 0xb5c3b8c3 0xbfc2bfc3 0xbfffee00 0xbfffee08 : 0xbfffee50 0..

CPU 자원관리 [내부링크]

기본적으로 Docker 컨테이너는 호스트 머신의 CPU 자원을 제한없이 사용할 수 있습니다. 즉, 하나의 컨테이너가 수행될 때 CPU-Intensive 한 작업을 돌리면, 호스트 머신의 CPU 자원을 점유해버리는 상황도 발생할 수 있습니다. 이는 컨테이너간 독립적인 환경을 구축할 수 없음을 의미하기 때문에 CPU 사이클에 대한 쿼터(Quota)를 적용할 필요가 있습니다. Docker는 기본적으로 CFS 스케줄러를 사용하며, 버전 1.13이상에서 실시간 스케줄러를 이용할 수 있습니다. CFS 스케줄러를 이용하기 때문에 설정들이 CFS 스케줄러와 연관되어 있습니다. CPU에 대한 실시간 스케줄링은 다음과 같이 할 수 있습니다. cpu를 할당해서 sysbench 테스트를 진행해보겠습니다. cpu 0과 1, 2..

자동완성 기능 [내부링크]

Ctrl + p : 변수명 이름 자동완성 기능

Docker 실습 [내부링크]

여기서 다뤄볼 것은 아래와 같습니다. Docker 버전확인 pull 명령으로 이미지 받기 images 명령으로 이미지 목록 출력하기 run 명령으로 컨테이너 생성하기 ps명령으로 컨테이너 목록 확인하기 start 명령으로 컨테이너 시작하기 restart 명령으로 컨테이너 재시작하기 attach 명령으로 컨테이너에 접속하기 exec 명령으로 외부에서 컨테이너 안의 명령 실행하기 stop명령으로 컨테이너 정지하기 rm 명령으로 컨테이너 삭제하기 rmi 명령으로 이미지 삭제하기 Docker 버전확인 pull 명령으로 이미지 받기 images 명령으로 이미지 목록 출력하기 run 명령으로 컨테이너 생성하기 docker run 형식입니다. 여기서는 ubuntu이미지를 컨테이너로 생성한 뒤 ubuntu 이미지 안의..

gdb에서 코드 보기 [내부링크]

gdb 실행시 위의 명령어를 입력해주면 위와 같이 코드를 보면서 디버깅을 할 수 있습니다

Docker의 구성 [내부링크]

레이어 저장방식 도커 이미지는 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에 보통 용량이 수백메가에 이릅니다. 처음 이미지를 다운받을 땐 크게 부담이 안되지만 기존 이미지에 파일 하나 추가했다고 수백메가를 다시 다운받는다면 매우 비효율적일 수 밖에 없습니다. 도커는 이런 문제를 해결하기 위해 레이어layer라는 개념을 사용하고 유니온 파일 시스템을 이용하여 여러개의 레이어를 하나의 파일시스템으로 사용할 수 있게 해줍니다. 이미지는 여러개의 읽기 전용read only 레이어로 구성되고 파일이 추가되거나 수정되면 새로운 레이어가 생성됩니다. ubuntu 이미지가 A + B + C의 집합이라면, ubuntu 이미지를 베이스로 만든 nginx 이미지는 A + B + C + nginx가 됩니다. web..

-창고 다각형(2304)- [내부링크]

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 #include #include #include #include using namespace std; int pillar; vector pillar_information; void receive_pillar_data() { int location; int hight; for(int pillar_number = 0; pillar_number > location; cin >> hi..

스케쥴러 기초 [내부링크]

태스크란? 프로세스 리눅스 개발자 입장에서 프로세스는 리눅스 시스템 메모리에 적재되어 실행을 대기하거나 실행하는 실행 흐름을 의미합니다. 더 자세히 말하면 파일 시스템에서 메모리로 로드한 코드, 데이터(프로그램)와 이를 커널에서 관리하기 위한 task_struct 구조체를 말하며 커널이 제공하는 방법을 통하지 않고서는 다른 프로세스와 상호작용하지 않으며(shared_memory) 한 프로세스의 잘못된 동작이 다른 프로세스에 영향을 미치지 않는 각각의 테스크입니다. 리눅스 커널에서는 프로세스와 스레드를 구별하지 않고 전부 태스크로 인식합니다(별다른 설정이 없을 경우). OS 커널이 부트업되어 준비된 경우 유저 레벨에서 디스크로부터 application을 로드하여 자원(메모리, 파일, 페이징, 시그널, 스택..

CFS Bandwidth [내부링크]

CFS Bandwidth 테스크 그룹별로 shares 값을 설정하여 cfs 태스크의 스케줄 할당 비율을 조절할 수 있습니다. 여기서 또 다른 cfs 태스크의 스케줄 할당 비율을 조절할 수 있는 cfs bandwidth 방법을 소개합니다. 테스크 그룹에 매 cfs_period_us 기간 마다 cfs_quota_us 기간 만큼 런타임을 할당하여 사용한다. 소진되어 런타임 잔량이 0이하가 되면 다음 period가 오기 전까지 남는 시간은 스로틀링 한다. 즉 해당 그룹을 대표하는 스케줄 엔티티가 상위 cfs 런큐로부터 dequeue되어 활동을 잠시 정지하게 된다. 이렇게 하여 다른 태스크 그룹에게 시간 할당을 양보한다. cfs_period_us bandwidth 기간 (us) cfs_quota_us bandwi..

LXC의 구현 [내부링크]

LXC의 구현 LXC와 비슷한 기술로 “chroot”라는 것이 있습니다. chroot는 프로세스의 루트 디렉토리를 변경하는 것으로, 이를 통해 프로세스가 액세스 할 수있는 디렉토리를 제한하거나 시스템 라이브러리와 관련 라이브러리를 로드 할 수있습니다. 그러나 chroot에서 제어 할 수있는 파일이나 디렉토리에 대한 액세스만으로, 네트워크 및 프로세스 등을 컨트롤 할 수는 없습니다. 또한 FreeBSD 에는 chroot를 발전시킨 툴로서 “jail”라는 기능이 탑재되어있습니다. jail는 파일 시스템에 대한 액세스뿐만 아니라 프로세스 및 장치 등의 자원에 대해서도 제어가 가능합니다. LXC가 jail과 유사한 개념으로 구현 되었습니다. cgroups은 OS가 관리하는 다양한 리소스를 중앙에서 제어하기 위한..

리눅스 컨테이너(LXC)? [내부링크]

Linux 컨테이너 리눅스 컨테이너에 대해 전반적인 내용을 알아보겠습니다. 리눅스 컨테이너를 살펴보면 OS 내부는 물리적 자원을 관리하는 "커널 공간"과 애플리케이션을 실행하는 "사용자 공간"으로 나누어집니다. 컨테이너형 가상화 기술은 사용자 공간(User space)를 나누어 각각의 사용자 프로세스에서 보이는 리소스를 제한하는 방법입니다. 사용자 영역 인터페이스라고도 합니다. 기존 가상화 기술과 LXC 차이점 널리 사용되고있는 가상화 기술로는 Xen과 KVM이 있으며, 이것을 사용하여 호스트 OS (또는 하이퍼 바이저)에서 가상 머신 환경을 만들고 그 위에 OS를 실행시켜 여러 OS 환경을 구축할 수 있습니다. KVM과 같은 기존의 가상화 기술에서는 가상머신이 실제 물리적인 하드웨어를 Emulate하기..

도커란? [내부링크]

Docker 정의 도커는 리눅스 컨테이너 기반으로 하는 오픈소스 프로젝트이며, 반가상화보다 경량화된 방식입니다(운영체제 수준의 가상화). 또한 하드웨어를 가상화하는 계층이 없습니다. 네임스페이스, 컨트롤 그룹 같은 리눅스 커널 기능을 이용해서 운영체제 위에 컨테이너들을 생성하는 것입니다. 애플리케이션 실행에 필요한 것을 하나로 모아두고 그 이미지를 사용하여 다양한 환경에서 애플리케이션 실행환경을 구축 및 운용하기 위한 오픈소스 플랫폼입니다. 응용 프로그램을 개발, 배포 및 실행하기 위한 개방형 플랫폼입니다. 컨테이너란? host OS 상에 논리적인 구획(컨테이너)를 만들고, 애플리케이션을 작동하기 위해 필요한 라이브러리나 애플리케이션등을 하나로 모아, 별도의 서버인 것 처럼 사용할 수 있게 만드는 것. ..

2017 카카오 코드 예선 - 보행자 천국- [내부링크]

문제 : https://programmers.co.kr/learn/courses/30/lessons/1832# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 #include #include using namespace std; int MOD = 20170805; int cache[500][500]; int move(int m, int n, int y, int x, vector& city_map) { if(x > n-1 || y > m..

-숫자 게임(2303)- [내부링크]

문제 : https://www.acmicpc.net/problem/2303 2303번: 숫자 게임 N명이 모여 숫자 게임을 하고자 한다. 각 사람에게는 1부터 10사이의 수가 적혀진 다섯 장의 카드가 주어진다. 그 중 세 장의 카드를 골라 합을 구한 후 일의 자리 수가 가장 큰 사람이 게임을 이기게 된다. 세 장의 카드가 (7, 8, 10)인 경우에는 합은 7+8+10 = 25가 되고 일의 자리 수는 5가 된다. 어떤 사람이 받은 카드가 (7, 5, 5, 4, 9)인 경우 (7, 4, 9)를 선택하면 합이 20이 되어 일의 자리 수는 0이 되고, (5 www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2..

-극장좌석(3202)- [내부링크]

문제 :https://www.acmicpc.net/problem/2302 2302번: 극장 좌석 주어진 조건을 만족하면서 사람들이 좌석에 앉을 수 있는 방법의 가짓수를 출력한다. 방법의 가짓수는 2,000,000,000을 넘지 않는다. (2,000,000,000 < 231-1) www.acmicpc.net 풀이 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #include using namespace std; int n, m; int sit[41]; void makesit() { sit[0] = 1; sit[1] = 1; sit[2] = 2; for(int i = 3; i > n; ..

어셈블리어 기본 [내부링크]

AT&T 와 intel은 방식이 상이하니 주의해야 합니다. 우리가 흔히 쓰고 수업에서 배운 방식(제 기준)은 AT&T 방식 만약에 AT&T 방식이 아닌 intel 방식으로 바꾸고 싶다면 gdb화면에서 set disassembly-flavor intel 로 써주면 어셈블리어들을 intel 방식으로 해석할 수 있습니다. 아래는 AT&T 방식입니다.

2017 카카오 코드 예선 - 캠핑- [내부링크]

문제 : https://programmers.co.kr/learn/courses/30/lessons/1833 코딩테스트 연습 - 캠핑 | 프로그래머스 캠핑 무지를 돌보느라 지친 콘은 한적한 시골의 한 캠핑장에 놀러 갔다. 캠핑장은 텐트를 칠 수 있는 넓은 평지를 제공하고 있는데, 이 평지에는 이미 캠핑장에서 설치해 놓은 n개의 쐐기가 박혀 있다. 캠핑장 이용 고객은 이 쐐기들 중 한 쌍을 골라 다음과 같은 조건을 만족하도록 텐트를 설치해야 한다. 텐트는 직사각형 형태여야 한다. 텐트의 네 면이 정확하게 동, 서, 남, 북을 향해야 한다. 대각에 위치하는 텐트의 두 꼭짓점이 정확하게 선택한 두 개의 쐐기 programmers.co.kr 주어진쐐기들 중 2가지를 고르는 것이 기본적인 풀이 방법이라 생각되어 ..

좌표 압축 [내부링크]

알고리즘을 풀다 보면 좌표압축이라는 테크닉이 필요합니다.저는 좌표압축을 "순위가 중요한 알고리즘에서, 입력값의 갯수보다 입력값의 범위가 클 때 사용하는 방법", 이라고 생각하고 있습니다. 1차원의 좌표로 예를 들어보겠습니다.n개의 x값 을 입력 받아, 입력 중 두개의 x1,x2를 선택하여 사이에 존재하는 점의 개수를 구하는 작업이 있다고 가정합시다.x의 범위는 int형의 범위인 -2^31 ~ 2^31-1 이고 중복은 없습니다. n은 5000 이하입니다.입력은 n : 7, -2^31, -10000, 0 , -2000, 3, 6, 30000 , x1 = -10000, x2 = 30000 대략적으로 보면 그림과 같이 나타나게 됩니다. x1,x2 사이의 값을 구하게 되면 4개의 값이 나오게 됩니다. 이 경우 위..

세그먼트 트리(segment tree) [내부링크]

출처 : https://www.acmicpc.net/blog/view/9 배열 A가 있고, 여기서 다음과 같은 두 연산을 수행해야하는 문제를 생각해봅시다. 구간 l, r (l ≤ r)이 주어졌을 때, A[l] + A[l+1] + ... + A[r-1] + A[r]을 구해서 출력하기 i번째 수를 v로 바꾸기. A[i] = v 수행해야하는 연산은 최대 M번입니다. 세그먼트 트리나 다른 방법을 사용하지 않고 문제를 푼다면, 1번 연산을 수행하는데 O(N), 2번 연산을 수행하는데 O(1)이 걸리게 됩니다. 총 시간 복잡도는 O(NM) + O(M) = O(NM)이 나오게 됩니다. 2번 연산이 없다고 생각해봅시다. 수를 바꾸는 경우가 없기 때문에, 합도 변하지 않습니다. 따라서, 앞에서부터 차례대로 합을 구해놓는..