분류 전체보기 50

MariaDB에서 root 계정 삭제 후, mysql.user 테이블을 select 할 수 없는 문제

다른 사용자에게 root 만큼의 권한을 주고 root 사용자를 지웠다. 이 때 분명히 권한있는 사용자로 select * from mysql.user 를 했는데도 The user specified as a definer ('root'@'localhost') does not exist 라는 에러가 나면서 조회가 안된다. mysql database에 있는 다른 테이블은 다 조회가 되는데.. 그래서 찾아봤더니... MariaDB 10.4 부터는 mysql.user 가 테이블이 아니고 view 인데, mysql.user 뷰를 생성한 'root'@'localhost' 사용자가 사라져서 생기는 문제이다. VIEW의 DEFINER 정보를 바꿔주면 되는데, ALTER VIEW 구문에서 DEFINER만 바꾸는 방법이 없고..

SQL 2020.01.14

2019 회고

난 사실 시간의 연속성 상에서 연말이라고 특별하게 생각하고 살아오지 않았지만, 올해에는 어쩐지 많은 사람들이 연말이라고 회고 글을 쓰길래 난생 처음으로 올해 회고를 써본다. 업무적인 걸로는 작년에 이어 올 한 해 거의 대부분 80% 이상을 PHP 5.3을 하면서 보냈는데, 작년에 이어 올해도 PHP 5.3을 벗어나기 위한 몸부림을 많이 쳤다. register_globals와 global keyword는 정말이지 이루 말할 수 없는 해악이다. 마음으로는 PHP 5.3을 리펙토링해서 7.x 대로 올리는 내용의 youtube나 블로그 글 같은 걸 하고 싶긴 하지만, 실력이 미천하여 망설여지기도 하고 결정적으로는 오픈소스로 공개된 PHP 5.3 소스를 찾기가 의외로 어려워서 실행하지 못했다. 나같아도 PHP 5..

개발자 일상 2019.12.31

SQL 키워드는 대문자로.

SQL을 작성할 때, 키워드는 대문자로 사용하는 경우가 많다. 여기에 보면 여러가지 이유들이 있는데, SQL이 예전부터 있던 거라서 알아보기 쉬우려고 그랬고, 요즘은 툴이 워낙 좋으니 필요없다는 사람도 있고, 그래도 여전히 구분하기 편하니 필요하다는 사람도 있고 그렇다. 뭐 어쨌든, 일하다가 보면 대충 소문자로 쿼리를 짰지만 대문자로 바꿔야 하는 상황이 생긴다. 그런데 딱히 이런걸 쉽게 해주는 툴이 없는 것 같았다. 실제로 있는데 내가 못 찾았을 확률이 높지만... 내가 그냥 npm에 패키지 올려보겠다고 하나 만들었다. node.js가 설치되어 있는 상태에서 터미널에 아래와 같이 명령어를 입력해서 설치하고, npm install -g uppercase-sql 터미널에서 이렇게 쓰면 된다. uppercas..

Javascript 2019.05.04

편리한 레드마인

사내 이슈 관리를 레드마인으로 하고 있다. 여타 다른 툴이 모두 그렇듯이 레드마인 역시 좋은 점도 있고 나쁜 점도 있지만, 내가 쓰기에 영 불편한 부분을 몇가지 개선한 Javascript를 Firefox에 유명한 플러그인인 GreaseMonkey에 스크립트를 넣어서 쓰게 되었다. 그런데 옆에서 본 몇몇 사람들이 Chrome 쓰는데 쓰고 싶다고 했고, 그냥 TemperMonkey를 설치하고 내 스크립트를 설치해주었다. 그러던 어느날 쓰는 사람이 5명쯤 되고, 포맷하거나 했던 사람이 다시 설치해달라고 하고 게다가 쓰는 사람 중에 Javascript를 아는 사람, 브라우저 동작 같은 거 아는 사람도 나 혼자이다 보니 너무 귀찮은거다. 그래서 그냥 Chrome Extension을 만들기로 했다. 그리고 그렇게 ..

Javascript 2019.04.03

유니코드 내 한글

유니코드에서 한글은 세 군데에 나뉘어서 위치한다. 조합된 모든 한글(가~힣) U+AC00 ~ U+D7A3 자음+모음 또는 자음+모음+받침으로된 모든 한글 문자가 이 영역에 있다. NFC(Normalization Form Canonical Composition) 방식에서 사용한다. 아래 표를 보고 공식에 각 번호를 대입해서 문자의 위치를 알아낼 수 있다. [(초성 번호) * 588 + (중성 번호) * 28 + (종성 번호)] + 44032 예를 들어 ‘글’자를 찾는 다면 (ㄱ(0) * 588 + ㅡ(18) * 28 + ㄹ(8)) + 44032 = 44544 가 되고 이를 16진수로 바꾸면 0xAE00 이고 U+AE00 이 ‘글’자이다. 번호 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ..

정리 2019.03.17

유니코드 (Unicode)

전 세계의 모든 문자를 컴퓨터에 저장하는 방법에 대한 표준 Character Point U+AC00 이라는 형태로 유니코드를 표현할 때, 특정 글자가 할당 받은 위치인 AC00이라는 16진수를 Character Point 또는 Code Point라고 부른다. 인코딩(부호화) 방식 UTF-8 가장 널리 쓰임 ascii 와 호환됨 UTF-16 Windows에서 시스템 기본 인코딩 방식으로 사용 모든 문자에 16비트가 할당되어 글자 수 계산이 편함 UTF-32 유니코드에 할당된 값(Code Point)을 그대로 표현함 UCS-2 UTF-16과 비슷하다. 옛날 문서에 그냥 유니코드라고 지칭하면 이걸 이야기한다. 표현 방법 기본(예) U+AC00 일반적으로 유니코드 문자를 설명할 때 사용 Escape Sequen..

정리 2019.03.17

Kubernetes란 무엇인가?

얼마전 GitHub가 Kubernetes를 쓰기로 했다는 글을 읽고 나서 Kubernetes가 뭔지 몰라서 간략히 알아보았다. Kubernetes의 GitHub 페이지에 가보면 containerized applications 를 관리하는 시스템이라고 하는데... containerized applications 가 뭔지 모르겠으니 또 찾아보면.. Kubernetes is an open-source platform designed to automate deploying, scaling, and operating application containers. 애플리케이션 배포 시스템이라고 이해하면 될 것 같다. 그런데, 그냥 배포 시스템은 아닌 듯 하다. (그렇다면 이리 거창하진 않겠지...) container는..

개발자 일상 2017.08.19

Windows 10 에서 MP 145 복합기 스캐너 사용

Windows에서 자동으로 설치하는 드라이버는 프린터는 되는데 스캐너가 안된다. 자동으로 설치된 드라이버를 지우고, 캐논에서 제공하는 드라이버로 바꿔서 설치하고, MP Navigator 프로그램을 설치해서 이걸로 스캔을 하면 된다. 드라이버 설치여기에 가서 Windows 8.1 용 드라이버를 다운로드한다.프린터를 끄고, USB 연결된 걸 뽑고, 드라이버를 설치 파일을 실행하면 자동으로 설치된 드라이버는 알아서 지우고 새로 설치한다. 드라이버 설치 마지막에 '완료' 버튼을 누른 후 USB 선을 꼽고 전원을 키면 자동으로 설치가 진행된다. 드라이버 설치 중간에 '다른 프로그램이나 사용자가 프린터를 쓰고 있어서 어쩌구..’ 메세지가 나오면 컴퓨터를 재부팅 한 후에 다시 설치를 진행하면 된다. 그 외... Wi..

개발자 일상 2017.06.22

Python list comprehension을 잘못쓰는 경우

Python 리스트 내에서 조건에 맞는 하나의 값을 찾는 경우에 python에는 list comprehension이 있지~라고 생각하고 아래와 같은 코드를 작성하는 경우가 있다. foundData = [x if x = 3 in dataList][0] 위의 코드는 dataList의 모든 항목을 순환하면서 값이 3인것에 대한 하위목록(sub list)를 만든 뒤, 그 첫번째 항목을 가져오는 코드이다. 얼핏 보기에는 코드양도 적고 간단해보이기까지 한데, 이렇게 하면 프로그램이 불필요하게 많은 반복을 하게 된다. 위의 코드를 다시 풀어서 쓰면 아래와 같다. tempList = [] for x in dataList: if x == 3: tempList.append(x) foundData = tempList[0] ..

Python 2017.05.13

windows 화면 녹화하기

windows 화면을 녹화해보려고 이것저것 알아봤는데, windows 화면을 녹화하는 프로그램으로는 역시 Camtasia가 제일 유명하고 또 제일 비싸다. 오픈소스로는 CamStudio라는게 있는데, 실제로 사용해보니 문제가 너무 많았다. 다른 제품들도 알아봤는데 무료로 쓰는 대신 제품 로고가 나온다거나 하는 것들이 대부분이고 실제로는 약간의 돈을 주고 구입해야 할 듯 싶었다.하지만, 우연히 검색 중에 screen-capture-recorder-to-video-windows-free라는 매우 직접적인 이름의 프로젝트를 찾아내서 공짜로 화면 녹화가 가능하게 되었다.일단 여기에서 이 프로그램을 받아서 대충 다음 다음 눌러서 설치한다.그 다음에는 FFmpeg가 필요하다. 여기들어가면 아래와 같은 화면이 나오는..

개발자 일상 2017.02.18