전체 글 52

캐논 복합기의 관리자 비밀번호의 초기값

오늘 제가 한참 헤맨 후에 알아낸 최근 캐논 복합기의 관리자 비밀번호 초기값은 기기의 시리얼넘버 였습니다. 와이파이 설정하는데 필요하더라구요... 매뉴얼이나 뭐 이런거 다 갖다 버렸는데 어떻게 하냐고요? 프린터에 i 버튼이 있으면 그걸 클릭해서 프린터 정보를 출력합니다. 프린터 프로그램에서도 찾으면 어딘가 있겠지만, 그런건 다른 글에서 찾아주세요;; 그럼 아래 사진처럼 시리얼넘버를 찾을 수 있습니다.

개발자 일상 2020.03.25

부동소수점 처리 방법

얼마전에 회사에서 어떤 분이 javascript에서 1 - 0.99 을 했는데 0.010000000000000009 이 나온다며 물어보셨다. (실제로는 비슷한 다른 거 였던 거 같은데 어쨌든..) 이는 부동소수점. 그러니까 float나 double 형에서 실수를 저장하는 방식 때문에 발생한다. 이런 내용은 조금만 검색하면 나온다. 하지만, 원인과 동작방식을 설명하는 글은 많지만 정작 실무에서 어떻게 처리하는게 좋을지에 대한 글이 없어서 여기에 남겨본다. 반올림, 올림, 내림 대부분의 부동소수점 문제는 소수점 아래의 값에서 발생한다. 많은 프로젝트에서는 사실 어느정도 오차가 있어도 문제없는 경우가 많다. 이럴 때에는 소수점 아래를 반올림, 올림, 내림해서 값을 정수로 만들어서 쓰면된다. 대부분의 언어에서 ..

정리 2020.02.13

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