1. mysql에서 데이터베이스를 생성하고 유저를 만들어 해당 유저에게 권한을 부여하려고 할 때 아래 에러가 발생한 경우 0 row(s) affected, 1 warning(s): 1285 mysql is started in --skip-name-resolve mode; you must restart it without this switch for this grant to work 2. 대부분의 경우는 docker 환경에서 mysql을 사용할 경우에 발생하는 문제이다. 2-1 일반적으로 'user'@'localhost' 형식으로 유저를 생성하는데 도커 환경은 172.17.0.1 이런 식의 내부 ip를 사용하고 있기 때문에 mysql 서버는 localhost를 172. 로 시작하는 ip를 localhost..
1. 암호화는 Confidentiality를 보장하기 위해서 사용한다. 1-1 암호화 된 값은 원래 원문의 정보를 가지고 있어야 하기 때문에 원문보다 작을 수 없다. 1-2 보통 plain text는 평문이라고 하는데, cipher text는 한국말로 뭐라고 할지 애매하다. 암호문이라고 하겠다. 2. 암호화에 키를 사용하는 이유 2-1 일반적인 암호화 알고리즘은 단순한 함수형식으로 표현되기 때문에 해시처럼 암호문이 같아져 확장성이 떨어진다. 2-1-1 이 말은 보안성이 떨어질 수 밖에 없고, 표준 알고리즘을 사용하면 모두 같은 결과만 나오게 된다. 2-2 각 사용자마다 다른 암호문의 결과를 얻기 위해서 도입한 개념이 키이다. 각 다른 키는 각 다른 암호문을 만들어 낸다. 2-2-1 키는 랜덤하게 만들어지..
1. 해싱은 Checksum, Fingerprint, Hash, CRC 같은 용어로도 불린다. 1-1 해싱은 메시지를 특정한 방식으로 계산하여 만든 메시지 정보를 저장하지 않는 결과 값이다. 1-2 원본의 정보를 저장하지 않기 때문에 해싱값으로는 원본을 복구할 수 없다. 2. 해싱 알고리즘 요구사항 2-1 특정한 해싱 결과를 임의로 계산하여 만들 수 없다. 2-2 해시 값으로 원 메시지를 추출할 수 없다. 단 방향이다. 2-3 작은 변화가 전체 값을 바꿔야 한다. 2-4 정해진 길이의 값을 반환해야 한다. 3. Collision - 필연적인 현상 3-1 두 다른 메시지가 같은 동일한 결과를 가질 때 3-2 길이가 지정되어 있기 때문에 어떻게든 중복이 일어날 수 밖에 없다. 3-3 따라서 길이가 길수록 안..
1. 개인적으로 개발을 위해서 Kubuntu를 사용하고 있다. 여기서는 기본적으로 debian 기반 버전을 설명한다. 2. 리눅스 UI는 리눅스 코어에 해당하지 않고 부수적인 기능으로 취급된다. 하지만 개발을 위해서는 UI는 필수적인 부분이고 이것이 없으면 vscode 같은 ide를 사용할 수 없기 때문에 리눅스 코어는 아니지만 필수로 취급된다. 3. 최근에는 엔비디아나 AMD에서 만든 그래픽 카드에서도 리눅스를 지원하고 있고 현재 윈도우에서의 기능의 50%정도는 지원하고 있어 그래픽을 사용하는데 있어서 큰 무리가 없다. 4. 리눅스를 부팅했는데도 화면에 GUI가 열리지 않을 때가 있다. 그렇게 되면 검은 화면에 리눅스 로그인 프롬프트가 화면에 뜨게 된다. 많은 리눅스 유저가 여기서 패닉이 되는 경우가 ..
예전에 private subnet에 있는 호스트에 접근하기 위한 방법으로 bastion 서버를 사용하도록 설정했는데, 아무리 생각해도 서버접근용으로 서버를 둔다는 부분이 마음이 들지 않았다. 그래서, AWS Systems Manager의 Session Manager를 사용하도록 설정을 변경하였다. 1. 현재 웹서비스를 기동하기 위한 가장 간단한 방법인 Elastic BeansTalk을 사용하고 있다. 2. EC2가 SSM에 접근할 수 있도록 ROLE을 생성해 주고, 2-1 아래의 role은 aws-elasticbeanstalk-ec2-role 기본 role에 AmazonSSMManagedInstanceCore를 추가한 롤이다. 2-2 이런 이유는 EC2가 Beanstalk의 리소스를 사용하는 권한 + S..
1. kvm은 리눅스 커널에 포함된 type1 hypervisor이다. 그래서 qemu를 통하지 않고 바로 설치해서 쓰는 게 성능에 좋다. 1.0 bridged network를 구성하기가 쉽지 않아서 웬만하면 virtualbox를 사용하는 것을 권장한다. 물론 성능 차이는 느껴진다. 1.0.1 브리지 인터페이스를 만들어주고 가상 네트워크 인터페이스를 매핑해야 한다. 1.0.2 문제는 브리지 인터페이스가 호스트와 동일한 네트워크에 물려 있어야 하는데 별도의 설정이 필요하다. vagrant-libvirt and Bridged Networking – Kevin C. Coram Once I had a way to install virtual machines on my Ubuntu home lab server, ..
프로그래밍을 업으로 20년 이상해왔지만 Web Service를 실제로 서비스에 제대로 사용해 본적이 없다. 스프링에서 RMI도 써봤는데 말이다. 그런데 이미 철이 많이지난 지금에서야 드디어 사용해 볼 기회가 생겼다. 그래서 잘 모른다고 하는 게 정확하다. 잘 모르는 주제에 여기에 이걸 적는 이유는 언제나 그랬듯 나의 형편없는 기억력 때문이다. Web Service는 결과적으로 REST가 하는 것과 동일한 것을 한다. 특징 몇가지를 적어보면 1. 서비스와 데이터의 정의를 위해 xml을 사용한다. 메시지의 구조와 서버의 명세 같은 것들이 모두 xml로 되어 있다. 2. HTTP를 통신기반으로 사용한다는 점에서 REST와 차이가 없다. 3. REST와 다른 점은 endpoint가 외부로 노출되어 있지 않고(노..
트랜잭션은 원자성을 가지는 하나의 task의 단위라고 생각할 수 있다. 트랜잭션은 로직 작성에 아주 중요한 요소이기 때문에 많은 고민이 필요하다. 트랜잭션을 엄격하게 적용하면 모든 것이 좋아 보이기는 하지만 모든 일이 그렇듯 tradeoff가 발생하기 마련이다. 1. 트랜잭션이 길어지면 DB Locking이 발생하기 쉽다. 하나의 트랜잭션이 끝날 때 까지 해당 테이블을 놓지 않는다. 2. DB Locking이 길어지면 DB 컨넥션이 full이 되고 심한 경우는 서버가 죽을 수 있다. 일반적으로 트랜잭션을 거는 이유는 하나의 task의 원자성을 보장하기 위한 것으로, 특정한 작업 중에 관련된 정보가 변경되는 경우 예상하지 못하는 결과가 나올 수 있기 때문이다. 부작용이 있기 때문에 최소한의 단위로 사용하는..
- 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