전체 글 311

[SQL] LEFT Outer Join, RIGHT Outer Join, FULL Outer Join

일반적으로는 Inner Join 즉 테이블의 교집합을 Join하지만 join하는 다른 테이블에 데이터가 없더라도 join을 하여 데이터를 얻어 오도록 하는 것이 outer join입니다. Outer Join에는 다음과 같이 세 가지가 있습니다. LEFT, RIGHT, FULL Outer Join LEFT OUTER JOIN SELECT Customers.CustomerName, Orders.OrderID FROM Customers LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID ORDER BY Customers.CustomerName; https://www.w3schools.com/sql/sql_join_left.asp SQL LEFT JOIN..

알고리즘 데이터 구조 시각화

https://www.cs.usfca.edu/~galles/visualization/Algorithms.html Data Structure Visualization www.cs.usfca.edu 알고리즘을 학습하고 난 다음 시각화 시켜서 보면 재미있고 처음 공부 하는 사람이라면 아무래도 시각화 된 것을 보면 좀더 이해가 쉽습니다. 예를 들면 아래와 같이 Binary Search Tree에 값을 입력, 추가, 검색을 해보면서 어떻게 동작하는지를 볼 수 있어요.

OLTP, OLAP, DW

OLTP(On-Line Transaction Processing) 여러 과정의 연산이 하나의 단위 프로세스(트랜잭션)로 실행되도록 하는 프로세스입니다. 즉, 흔히 말하는 "트랜잭션(Transaction) 처리" 를 OLTP 라 부른다. 예를 들어 A 테이블 업데이트 B 테이블 업데이트는 두 개의 연산이지만 하나의 트랜잭션으로 처리되게 합니다. 하나의 단위 프로세스 이므로 A 테이블을 업데이트하고 B 테이블 업데이트에서 오류가 발생하면 A테이블의 업데이트 내용도 되돌아 갑니다. OLAP(On-Line Analytical Processing) 위의 DW에서 데이터를 분석해서 의미있는 형태로 만들기 위한 과정및 도구. 의사결정 지원 시스템의 하나. DW의 통합 데이터베이스를 다양한 관점으로 추출, 분석 하는 ..

SQL의 분류 DML/DDL/DCL/TCL

SQL 명령어를 주로 DML, DDL로 분류하는 경우가 많아서 어떤 것들이 이러한 명령어인지 잘 알고 있어야 합니다. 이 밖게 DCL, TCL로 분류를 하는데 이것 또한 알아 두어야 겠습니다. 분류 명령어 설명 DML : Data Manipulation Language SELECT, INSERT, UPDATE, DELETE 테이블의 데이터를 다루는 명령어 데이터 조회, 입력, 수정, 삭제 DDL : Data Definition Language CREATE, ALTER, DROP, RENAME, TRUNCATE 테이블을 조작하는 명령어 테이블 생성, 변경, 삭제, 이름변경, 초기화 DCL : Data Control Language GRANT, REVOKE 권한 부여/제거 TCL : Transaction C..

구글이 목표를 달성하는 방식 OKR

OKR에 대해서 먼저 설명하고 서평을 시작할게요. O 와 KR을 합쳐서 OKR이라고 부르고 있고요. O은 목표(Objective)이고 KR은 핵심 결과들(Key Results)의 축약이고요. O(목표)는 아침에 사람들이 신이 나서 침대에서 뛰어나올 정도로 가슴이 뛰게해야 해요. KR(핵심 결과들)은 목표가 무엇인지 잘 알려주고 달성 정도를 알 수 있도록 수치로 표현되어야 합니다. 사용량, 수익률, 구매율, 재방문율 등과 같은 수치입니다. KR은 하나의 O를 위해 3~4개 정도 설정하는 것이 좋으며 성공 확률이 50%정도로 생각 될 정도로 도전적이어야 합니다. 우선 책 제목과 책의 목차를 보고 구글이 어떻게 인류 기업이 될 수 있었는지에 대한 내용이 있을 것으로 기대 했습니다. 그런데, 책을 별치고 읽은지..

독서 리뷰 2020.03.23

다시 미분 적분

다시 미분 적분(프로그래머, 수학의 뇌를 깨워라!) 대학생 시절 미적분학 그리고 공업수학 이후 거의 20년 만에 미분 적분 책을 접하게 되네요. 요즘 아들이 중학생이어서 수학을 가르쳐 줄일이 많아 졌고 앞으로도 좀더 아는 척 하려면 미적분 정도는 알아야 되겠다는 생각이 들었지요. 그리고 프로그래머로서 미적분을 잘 모르면 안되겠다는 생각도 들었고요. 이책은 정말이지 차근 차근 단계 단계 설명이 잘되어 있어서 소설책 읽듣이 재미 있게 따라 갈 수 있었어요. 공식 전개에도 생략이 거의 없었고 단순 암기가 아니라 하나 하나 증명하고 그 원리가 어떻게 되는지 설명해 주었어요. 앞 부분에 설명 했던 내용이 뒤에 쓰이기 마련인데 이때면 어김 없이 친절히 몇 페이지에서 설명한 어떤 것인지에 친절히 알려 주면서 설명해 ..

독서 리뷰 2020.03.18

개발자의 글쓰기

개발자가 글쓰는 거의 모든 경우에 대해서 다루고 있는 책입니다. 개발자는 머니 머니해도 가장 많이 쓰는 글이 코딩이겠죠. 그래서 인지 코딩 글쓰기를 초반에 많이 다뤄요. 특히 와 닿았던 내용은 코딩 할때 단어 하나 하나의 의미를 정확히 이해하고 적절한 변수/함수/클래스 등의 이름을 지어주어야 겠죠. 역시 코딩에 있어서 가장 중요한 것은 가독성을 좋게 할 수 있는 훌륭한 작명입니다. Clean Code에서는 훌륭한 작명의 가장 중요한 요소를 기술적 소양 즉 교양을 꼽고 있죠. 이 책에서도 비슷하게 설명하고 있어요. 책에서 소개한 네이밍 특징들 관련 글인데 재미있게 보았습니다. https://brunch.co.kr/@goodvc78/12 오픈소스의 네이밍 특징들 소스코드 (변수, 함수, 클래스)네이밍 데이터..

독서 리뷰 2020.03.12

방문자 패턴(Visitor Pattern)

방문자 패턴은 어떤 객체의 계층 각각마다 서로 다른 작업을 수행해야 할때 사용하면 좋습니다. 기존 코드의 수정 없이 새로운 방문자를 추가하는 것만으로도 기능을 확장 할 수 있습니다. 기능 확장면에서 OCP 충실히 따를 수 있습니다. 다음과 같이 DoubleExpression과 AdditionExpression 수식이 있고 각 수식마다 새로운 동작을 추가해야 할때를 생각해봅시다. struct Expression { }; struct DoubleExpression : Expression { double value; explicit DoubleExpression(const double value) : value{value} {} }; struct AdditionExpression : Expression { E..

템플릿 메서드 패턴(Template method Pattern)

전략 패턴과 템플릿 메서드 패턴은 매우 유사합니다. 전략 패턴이 구성을 이용하지만 템플릿 메서드 패턴은 상속을 이용합니다. 핵심 원리는 알고리즘과 상세 구현을 분리하여 구현하는 것입니다. 게임 시뮬레이션 보드 게임류는 게임 시작, 턴 플레이, 승자 결정이 되고 게임 종료됩니다. class Game { public: explicit Game(int number_of_players) : number_of_players(number_of_players) {} // 게임의 알고리즘 void run() { start(); while (!have_winner()) take_turn(); cout

전략 패턴(Strategy Pattern)

구성(Composition)을 이용하여 알고리즘과 상세 구현을 분리하여 구현하는 것입니다. 런타임에 변경 가능한 동적형태와 템플릿으로 컴파일 타임에 결정되는 정적 형태가 있습니다. 전략 패턴은 알고리즘의 골격만을 정의하고 세부 구현은 구성(Composition)으로서 특정 전략을 선택적으로 채워 넣을 수 있게 하는 것입니다. 앞으로 단순한 텍스트 목록을 두 가지 포맷(HtmlList, MarkdownList)으로 전략적으로 선별하여 렌더링 하는 것을 구현합니다. 동적 전략 구성(Composition)을 이용하며 런타임에 전략을 동적으로 결정합니다. 전략 패턴의 골격을 위한 ListStrategy 클래스를 구현합니다. struct ListStrategy { virtual void add_list_item(..

반응형