1. Distinct는 Select 절에서 사용되는 중복 제거 구문이다. 2. 우선 SQL 구문의 처리 순서를 알 필요가 있는데 2-1 FROM -> ON -> OUTER -> WHERE -> GROUP BY -> CUBE, ROLLUP, HAVING -> SELECT -> DISTINCT -> 2-2 ORDER BY -> LIMIT, TOP 3. 내부적인 처리 방식은 SELECT로 가져온 모든 대상 결과물을 가지고 DISTINCT 대상이 되는 컬럼(들)로 정렬을 한 후, 앞뒤로 동일한지를 비교해서 동일한 대상 컬럼의 경우 삭제를 한다. 대상 컬럼으로 정열이 되기 때문에 부하가 있는 작업이다. ORDER BY는 DISTINCT 뒤에 수행되기 때문에 DISTINCT로 정리된 결과물을 다시 정렬하게 된다. ..
1. vim 기능에서 많이 사용하는 것들 1-1 여러 개 파일을 같이 열면서 화면 분할을 사용하고 싶을 때는 -O 옵션을 사용한다. vim -O hello.c hello.py 1-2 위와 같이 열린 상태에서 ctrl + w를 누르면 위의 오른쪽 하단의 ^W 가 나타나고 좌우 화살표로 어떤 면을 수정할지를 결정한다. 1-2-1 처음에 실행될 때는 좌우의 넓이가 동일한데 창을 확대할 경우 오른쪽 창만 커진다. 1-2-2 동일하게 다시 맞출 때는 ctrl + w 후에 = 를 누른다. 높이를 변경할 때는 ctrl + w 후에 +, - 를 눌러서 조정한다. 1-3 vim에서 쓸 만한 설정은 /etc/vim/vimrc에서 정의할 수 있다. 기본적으로 : 을 누른 후 설정을 하면 된다. 1-3-1 set number..
1. 코틀린은 자바를 기반하고 있기 때문에 toString(), equals(), hashCode() 메소드를 기본적으로 제공한다. 코틀린의 기본 클래스는 Any로 자바와 차별화를 시도하고 있는데, 사실 코드는 별차이가 없다. 2. 그런데 문제는 코틀린의 equals, hasCode는 생각하고는 다르게 동작한다. 여기에 ==, === 가 더해지면 더 이상 공부하기 싫어진다. 그래서 여기에 메모해 둔다. 3. 상속받은 equals 기본 동작은 객체의 주소 값의 비교이다. 이것은 코틀린의 == 이 수행 되었을 때 동작과 일치한다. 3-1 == 는 기본적으로 객체의 주소값을 비교하여 일치값을 판단한다. 3-2 코틀린에서 객체의 값을 비교하고 싶을 때는 별 수 없이 생성한 클래스의 equals를 override..
1. 내가 젤 하기 싫어하고 잘 하지도 못하는 부분이 SQL이다. 사실 하기 싫은 것 보다는 웬만하면 어플리케이션 쪽에서 로직을 처리하도록 프로그램을 작성하는 편이다. 내가 경험해 온 국내의 대부분의 대용량 시스템은 데이터베이스에 너무 종속되어 거의 모든 컴퓨팅 자원이 데이터베이스에 몰려 있다. 일반적으로 DB 98%, AP 2% 정도 되는 것 같다. 2. 우리나라 개발자들은 알고리즘을 상당히 두려워한다. 그래서 복잡한 데이터베이스 쿼리로 처리하려고 하는 것 같은데 나에게는 너무 놀라운 현상이다. 복잡한 쿼리를 잘 작성하고 이해할 정도면 프로그램은 사실 식은 죽먹기 수준이기 때문이다. 3. 아무튼 현업에서는 대용량 데이터베이스를 주로 다루기 때문에 오라클이 항상 주력인데 한번씩 헷갈리는 부분이라 메모한다..
1. 자바 스크립트로 만든 간단한 BST 트리이다. 2. 필요한 대부분의 기능은 작성되어 있지만 빠진 기능이 있을 수도 있다. 3. 구현하는데 생각보다 시간이 많이 걸린다. 재귀적 사고가 많이 요구된다. const readlineSync = require('readline-sync'); // tail -----> head class Queue { constructor() { this.head = null; this.tail = null; this.size = 0; } // put data from tail enqueue(data) { const node = new Node(data); if (this.isEmpty()) { this.head = node; this.tail = node; } else { ..
1. 별의미는 없지만 잊어버릴 것 같아 적어 놓는다. 2. vector arguments(argv+1, argv+argc) 형식으로 vector의 range constructor를 사용된다. 2-1 begin, end를 넣어주는 것이 포인트이다. 2-2 vector 역시 array기반의 가변 array라서 array와 완벽하게 호환이 된다. #include #include #include #include using namespace std; int count_lines(string filename) { ifstream in(filename); return count(istreambuf_iterator(in), istreambuf_iterator(), '\n'); } vector count_lines_in..
1. 평소처럼 개발 정보를 뒤적거리다가 시간이 너무 늦어 자러가려는데 업데이트가 걸렸있었다. 평소처럼 또 업데이트 구나하고 보통 3~5분 정도 기다리면 종료될 것 같다는 생각에 헤드폰을 귀에 썼다. 2. 그런데 평소와는 달리 업데이트가 10분을 넘어간다. 이상한 생각이 들어 화면 한번씩 봤는데 한 3~4회 화면이 꺼졌다가 켜졌다. 느낌이 윈도우 판올림 같은 느낌이었는데 15분 정도 지나 업데이트 완료되고 보니 첫화면의 폰트가 완전히 달랐졌다는 것을 느꼈다. 3. 화면을 켜니 충격적으로 아름다운 UI가 펼쳐졌다. what the f*** 4. 내 컴퓨터는 윈도우 11버전 설치 조건을 만족하지 못한다. 윈도우에서 11버전을 위한 진단에서 설치 불가능이라고 떴다. 그래서 그냥 10이나 잘 써야지라는 생각하고 ..
0. 스프링을 쓸일이 별로 없는데, 아주 예전 스프링 4.4를 스프링부트로 마이그레이션할 일이 생겼다. 기존의 client 스크립트가 JSP라서 대략 난감이다. 아무튼 인터넷에 찾아보니 제대로 돌아가는 게 없어 이것저것 끌어모아 틀로 사용할 만한 것들 구성하였다. 짜집기 코드라서 내가 만든 것은 아니다. 1. 스프링 부트 initializer에서 Spring Web, Oracle Driver, Lombok 만 선택했다. 패키지는 war로 설정했다. 2. 그런 후 jstl과 tomcat-embed-jasper를 넣었다. 나머지는 initializer에서 알아서 설정해 주었다. 2-1 bootstrap 5.0.1을 webjar로 추가하였다. 4.0.0 org.springframework.boot spring..
- Total
- Today
- Yesterday
- 도커 개발환경 참고
- AWS ARN 구조
- Immuability에 관한 설명
- 자바스크립트 멀티 비동기 함수 호출 참고
- WSDL 참고
- SOAP 컨슈머 참고
- MySql dump 사용법
- AWS Lambda with Addon
- NFC 드라이버 linux 설치
- electron IPC
- mifare classic 강의
- go module 관련 상세한 정보
- C 메모리 찍어보기
- C++ Addon 마이그레이션
- JAX WS Header 관련 stackoverflow
- SOAP Custom Header 설정 참고
- SOAP Custom Header
- SOAP BindingProvider
- dispatcher 사용하여 설정
- vagrant kvm으로 사용하기
- git fork, pull request to the …
- vagrant libvirt bridge network
- python, js의 async, await의 차이
- go JSON struct 생성
- Netflix Kinesis 활용 분석
- docker credential problem
- private subnet에서 outbound IP 확…
- 안드로이드 coroutine
- kotlin with, apply, also 등
- 안드로이드 초기로딩이 안되는 경우
- navigation 데이터 보내기
- 레이스 컨디션 navController
- raylib