1. 시스템 개발시에 시간 저장은 상당히 골치 아픈 부분이다. 특정 국가 내에서만 사용되는 시스템이라면 어떤 것을 사용하더라도 상관없다. 2. 국제적인 서비스의 경우 시차가 존재하기 때문에 이것이 문제가 된다. 3. 국제적인 서비스를 위한 가장 쉬운 솔루션은 Timestamp이다. 이것은 어디에서나 동일하기 때문에 값을 필요에 따라 원하는 타입으로 변경 만하면 현지의 시간을 구할 수 있다. 3-1 문제는 UNIX 타임이라 대략 1970년 부터 저장되고 4바이트라 2038년 까지 만 저장된다. 4. 더 나은 방법은 8바이트를 사용하는 datetime 이다. 4-1 문제는 타임존 정보가 없기 때문에 시스템을 사용하는 지역 세팅에 따라서 그 지역의 시간이 저장된다. 4-2 하나 방법으로는 datetime을 U..
이 글을 쓰고 얼마지나지 않은 시점에 관련 문제가 해결되었다. 현재는 우분투에서 잘 쓰고 있다. ----------- 우분투에서 Docker Desktop이 지원된 것이 최근이다. 새로운 기능에 한번 써보기로 마음을 먹어 설치를 하였다. 현재 kubuntu 22.04 LTS를 사용하고 있다. kde 기반의 plama 5기반이다. Docker Desktop는 도커에서 공식으로 제공하는 보기 좋은 UI에 Kube 기능을 탑재하여 로컬 개발에서는 아주 사용이 편리하다. 이걸 사용하면 minikube에서 처럼 deploy 시 별도의 설정이 필요없다. 로컬 개발환경을 위한 제품이기 때문에 단순하다. 일반적으로 하듯 skaffold를 설정하고 ingress를 설정한 후에 개발을 시작하였다. 시작하자 마자 문제가 생..
1. 연간 민원이 약 60만 건 정도 쌓이고 이런 민원 데이터는 10년이면 600만 건 정도가 쌓이는데 이런 데이터를 조회하는 데 상당한 시간이 소요된다. 2. 기본적으로 데이터베이스의 성능개선은 2-1 데이터베이스의 기본은 쿼리의 개선이다. 1차적으로 쿼리의 개선을 수행하고 데이터베이스 실행 계획이 근접하게 되면 병렬처리를 도입한다. 2-2 쿼리 개선으로 한계가 있을 때 사용하는 것이 병렬처리이다. 병렬처리를 사용하면 멀티 테스킹으로 작업속도가 많이 향상 된다. 2-3 마지막으로 생각해야 할 것이 고유의 데이터베이스 프레임워크의 단점을 개선하거나 Parameter 바인딩을 제거하여 프로그램의 수행의 장애물을 개선한다. 2-4 이런 후에 생각할 것이 물리뷰인데 물리뷰는 원격에서 데이터 관리 및 동기화를 ..
레드마인은 Jira를 대체할 수 있는 오픈 소스 이슈트레커로 Ruby On Rails로 만들어 졌다. 정부기관의 서버는 인터넷이 되지 않기 때문에 사무실에 있는 유휴 PC를 사용하여 설치하였는데, 현재 파일서버로도 사용 중인 장비라 Windows 기반이라 설치하기 쉽지 않았다. Bitnami로 설치하면 쉽긴 하지만 Native 설치가 되지 않는다. 윈도우로 레드마인 설치에 도움이 될만한 글을 찾아 볼 수 없어 혹시 다른 사람들에게 도움이 될까 남겨 놓는다. 주요문제는 루비 환경 설정인데 리눅스는 쉽게 해결되겠지만, msys2환경이면 컴파일 오류가 많이 발생한다. 대부분 라이브러가 없어서 그렇다. 그래서 필요한 라이브러리를 챙겨야 하고 mysql 경우는 환경에 따라 mysql.h 헤더 파일로 컴파일해 줄 ..
1. 최근 수도 동파관련 데이터조회 하는 로직을 작성하였는데, 로직이 상당히 까다롭다. 5개의 쿼리의 길이가 600라인 정도가 된다. 1-0 동파 기간은 11월에서 3월이다. 이번 동파시즌은 시작한 지 알마되지도 않았지만 1-1 이번 시즌 새로운 기준으로 작성한 쿼리 5개의 쿼리를 MyBatis를 적용한 실행 시간은 10초 정도가 걸렸다. 1-2 작년 풀시즌을 조회하면 MyBatis로 조회를 하니 20초 정도가 소모되었다. 1-3 수정한 방식에서는 올 시즌은 1.2초 작년 풀시즌은 2.5초 정도가 소요되도록 개선되었다. 1-4 아래에 비교 성능비교한 동영상이다. 첫 번째 부분은 20일 정도 쌓인 데이터이고 바로 앞자료는 1년 치 자료를 조회하는 부분이다. 차이가 명확하다. https://www.youtu..
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. 내가 젤 하기 싫어하고 잘 하지도 못하는 부분이 SQL이다. 사실 하기 싫은 것 보다는 웬만하면 어플리케이션 쪽에서 로직을 처리하도록 프로그램을 작성하는 편이다. 내가 경험해 온 국내의 대부분의 대용량 시스템은 데이터베이스에 너무 종속되어 거의 모든 컴퓨팅 자원이 데이터베이스에 몰려 있다. 일반적으로 DB 98%, AP 2% 정도 되는 것 같다. 2. 우리나라 개발자들은 알고리즘을 상당히 두려워한다. 그래서 복잡한 데이터베이스 쿼리로 처리하려고 하는 것 같은데 나에게는 너무 놀라운 현상이다. 복잡한 쿼리를 잘 작성하고 이해할 정도면 프로그램은 사실 식은 죽먹기 수준이기 때문이다. 3. 아무튼 현업에서는 대용량 데이터베이스를 주로 다루기 때문에 오라클이 항상 주력인데 한번씩 헷갈리는 부분이라 메모한다..
- 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
- 설정
- crud
- spring boot
- Security
- 설정하기
- Angular
- form
- MYSQL
- jsp
- 스프링
- mapping
- one-to-one
- one-to-many
- 스프링부트
- hibernate
- 하이버네이트
- Rest
- login
- 상속
- 로그인
- RestTemplate
- Spring
- 외부파일
- Many-To-Many
- 자바
- XML
- 매핑
- Validation
- WebMvc
- Spring Security