heidisql에서 postgresql 접속 시 라이브러리 파일을 찾을 수 없다는 메시지가 종종 발생합니다.

이 때 Visual Studio 2013용 Visual C++ 재배포 가능 패키지를 설치하시면 되는데요
링크는 다음과 같습니다.

https://www.microsoft.com/ko-kr/download/details.aspx?id=40784

본인의 개발환경에 맞춰 다운로드 받으신 후 heidisql을 재실행 시키시면 정상적으로 라이브러리 파일을 인식하여 접속이 가능합니다.

블로그 이미지

ligilo

행복한 하루 되세요~

,

node js에서 가장 손쉽게 mongodb에 연결하는 방법으로 MongoClient.connect를 사용할 것이다.

var db;
function connectDB() {
    var databaseUrl = 'mongodb://id:password@192.168.0.1:27017/local';
    MongoClient.connect(databaseUrl, function(err, db) {
        if (err) throw err;
        console.log('데이터베이스에 연결되었습니다. : ' + databaseUrl);
        database = db;
    });
}

 

그 때 일반적으로 사용하는(책에 나와있는) 문법은 위와 같았다.

근데 잘 안되더라...

찾아보니 mongodb 3.0부터인가는 url에는 포트까지만 적고 database로 리턴할때 database명이 포함되어야 하더라...

다음처럼...

var db;
function connectDB() {
    var databaseUrl = 'mongodb://id:password@192.168.0.1:27017';
    MongoClient.connect(databaseUrl, function(err, db) {
        if (err) throw err;
        console.log('데이터베이스에 연결되었습니다. : ' + databaseUrl);
        database = db.db('local');
    });
}

 

다행히도 이건 어렵지 않게 구글링해서 해결했다.

문제는 mongoose 모듈 연동....

왜 책에서는 authentication이 disable 상태로 예제를 만들었는지 모르겠지만
(세상에 DB에 authentication을 안거는 인간이 있을까...)

어쨌든 authentication을 안거는 상태에서는 전혀 문제가 되지 않더라...

근데 authentication을 거는 순간 왜인지는 모르겠지만 authentication 에러가 뜨고...

그것도 DB 서버 연결(포트까지만 적었을때)는 정상적으로 되는데 그 뒤에 DB name을 적으면 에러가 뜨더라...

var database;
function connectDB() {
    var databaseUrl = 'mongodb://id:password@192.168.0.1:27017/local;
    mongoose.connect(databaseUrl);
    mongoose.Promise = global.Promise;
    database = mongoose.connection;
}

 

이랬더니 미친듯이 에러가 올라오더라....

MongoNetworkError: failed to connect to server [192.168.0.1:27017] on first connect [MongoError: Authentication failed.]

 

또한번의 구글링을 했다.

몽구스에서 특정 데이터베이스에 연결할때 계정을 인증받을 데이터베이스를 별도로 적어줘야 하더군...

그래서 databaseUrl에 파라미터를 추가해줬더니 연결 잘 된다.

var database;
function connectDB() {
    var databaseUrl = 'mongodb://id:password@192.168.0.1:27017/local?authSource=admin&authMechanism=SCRAM-SHA-1;
    mongoose.connect(databaseUrl);
    mongoose.Promise = global.Promise;
    database = mongoose.connection;
}

 

위에 예시에서 계정을 인증받을 데이터베이스는 admin이고 몽고DB에 대해서는 지금 연동 연습해보면서 하는게 첨이라 원래 계정은 다 admin 데이터베이스에 만들어져야 하는건지 다른 데이터베이스에 만들수 있는건지는 모르겠다.

robo3T에서 local 데이터베이스에 계정 만들려고 하다가 실패하기는 했다.

어쨌든 위 형태로 구성하면 인증절차를 거쳐서 mongoose에서 DB 연결이 가능하다는거...

블로그 이미지

ligilo

행복한 하루 되세요~

,

이런저런 업무를 하다보니 매크로를 사용할 일이 많아지게 됩니다.
특히 점검 업무가 많아지다보니 매크로가 상당히 유용합니다.

마침 한빛출판사의 나는 리뷰어다 프로그램에 매크로&VBA 책이 있어 신청했는데요
처음 책을 받고서 든 생각은 '이걸 2주만에 어떻게 다 읽고 후기를 남기지'일 정도로 두께에 놀랐습니다;
무려 1,044페이지...
하지만 정리가 깔끔하게 되어 있어서 필요에 따라 찾아서 사용한다면 두께에 겁먹을 필요는 없을 것 같습니다.

책은 총 4개의 파트로 나눠져 있습니다.
01. 매크로 기초
02. VBA 배우기
03. 엑셀 프로그램 주요 개체
04. 기타 유용한 개발 방법

VB를 알고 계신다면 파트 1과 2의 일부까지는 넘어가도 상관 없을 것 같습니다만
VB와 VBA의 차이점 그리고 엑셀에서 사용하는 구문의 특수성이 있기 때문에 리마인드 한다는 생각으로 첨부터 읽어보시는것을 권장합니다.

모든 챕터의 구성은 해당 챕터에서 설명하고자 하는 기능의 설명과 이론적인 설명이 있는 경우 이론적 설명, 실습내용, 실습내용에 대한 설명으로 이루어져 있고 하나씩 따라 하다보면 그리 어렵지 않게 익힐 수 있습니다.

특히 VB를 모르는 분들도 쉽게 따라할 수 있도록 구문 설명도 잘 되어 있으니까
개발을 모른다고 해서 걱정하실 필요는 전혀 없습니다.
한빛미디어 홈페이지에는 예제 파일도 있으니 참고하셔도 좋구요...

VBA에 대해 한번쯤 익혀놓으신 후에는 항상 책상에 두고 필요할때마다 필요한 챕터를 찾아서 사용한다면
업무에 매우 유용한 책이 되지 않을까 싶습니다.

 

블로그 이미지

ligilo

행복한 하루 되세요~

,

요즘 유난히 여기저기서 파이썬 공부해야 한다는 얘기가 들리기도 하고 업무상 취약점 도구나 여러가지 도구가 파이썬으로 제작되어 커스터마이징을 해서 사용할 필요도 있고 해서 공부를 해야하지 않을까 하는 찰나에 한빛미디어의 리뷰어 프로그램에 파이썬이 있어 신청할 수 있었고 짧은 시간동안 충분히 만족할만한 효과를 거둘 수 있었습니다.

책은 총 여덟개의 챕터로 구성되어 있습니다.
01. 파이썬 시작하기
02. 자료형
03. 조건문
04. 반복문
05. 함수
06. 예외처리
07. 모듈
08. 클래스

애초에 이 책을 신청하면서 원했던건 고급 기술이 아닌 기본 문법이었고 이 책을 통해 얻고자 했던 내용 역시 기본 문법과 모듈을 어떤식으로 갖다 쓸지 정도였기 때문에 공부하는데 별다른 어려움은 없었습니다.

챕터 구성은 사실 특이하다 싶은 항목은 없습니다. 개발 입문서의 정석이라 할만큼 차례대로 따라하면 될만한 순서로 되어 있었고 요즘 파이썬은 개발을 전혀 모르고 배우지 않은 다른 분야에서 일하시는 분들도 많이 배우는만큼 IDE 설치 등 환경 구성부터 손쉽게 따라하면 될만큼 쉽게 나와있었습니다.

'혼자 공부하는 파이썬'이라는 이름에 걸맞게 혼자 파이썬이라는 언어를 공부할 수 있는 방법을 처음에 제시해주고 있고 모든 절이 이론 개념과 코딩을 따라할 수 있을 만큼의 적당량의 소스코드, 핵심포인트, 마지막으로 확인문제로 구성되어 이 책만 충실히 본다면 파이썬이라는 언어에 대해 쉽게 받아들일 수 있을 것으로 보입니다.

개발자가 새로운 언어를 습득하기 위해 보기에는 너무 쉽다 싶은 생각이 안드는 것은 아닙니다. 페이지 수가 적은것은 아닙니다만 새로운 언어를 익히기 위해 굳이 모든 페이지에 있는 소스코드를 따라해보면서 시간 낭비를 할 필요는 없으니까요.. 그럼에도 불구하고 한 언어의 기본을 익혀 실무에 적용하기에는 부족함이 없다는 생각이 듭니다.

개발자임에도 불구하고 주변인 대부분이 IT와는 너무나도 거리가 먼 삶을 살아가고 있는 저로서는 널리 추천해주고 싶은 책입니다.

블로그 이미지

ligilo

행복한 하루 되세요~

,

현재 사용하는 Sequlize CLI 버전은 3.2.0이다.

sequelize init을 했을 때 만들어진 config 파일은 분명

config-json 파일이었다.

그래서, config-json에 IP, Port, 계정정보 다 때려박았는데

그리고 .sequlizerc 파일도 정상적으로 만들었는데

다음과 같은 에러가 뜸;;;

ERROR: Error reading "config\config-json". Error: SyntaxError: Unexpected token :

 

열심히 구글링을 해봤다.

config.json으로 해야한단 소리도 있고 sequlize.json으로 해야한단 소리도 있고

이런저런 얘기가 많다.

config.json으로 파일을 바꾸고 .sequelizerc 파일에 있는 경로도 config.json으로 바꿔줬다.

다시 sequlize db:migrate

다음과 같은 에러가 뜬다.

 ERROR: Please install mysql2 package manually


세상에 이런 에러만 나면 세상 행복할 것 같다.

당연히 mysql2를 설치했다.

잘 된다.


결론적으로 init 해서 생성된 config-json 파일을 config.json으로 바꾸고

config-json을 호출하는 .sequelizerc 파일의 경로도 config.json으로 바꾸면 된다.

블로그 이미지

ligilo

행복한 하루 되세요~

,

DB를 VBA를 이용하여 연결할 때


연결방법은 간단합니다.


DB마다 사용법이 약간씩은 다르지만요...


커넥션 스트링 연결해주신다고 보시면 되구요


다음을 참조하시면 될 것 같습니다.


Public Function ConnectDB(ByRef AdoCn AS ADODB.Connection) As Boolean

AdoCn.CursorLocation = adUseClient


'MySQL

AdoCn.ConnectionString = "DRIVER=MySQL ODBC 5.1 Driver; Server=127.0.0.1; Port=1111; UID=admin; PWD=password; DATABASE=testdb;"


'Postgresql

AdoCn.ConnectionString = "DRIVER={PostgreSQL Unicode(x64)}; Server=127.0.0.1; Port=1111; uid=admin; pwd=password; DATABASE=testdb;"


'MSSQL

AdoCn.ConnectionString = "DRIVER={SQL Native Client}; Server=127.0.0.1; Port=1111; uid=admin; pwd=password; DATABASE=testdb;"


AdoCn.Open

End Function


이렇게 처리하시면 되는데요 

연결 여부를 확인하려면

AdoCn.Open 뒤에

Adocn.State = adStateOpen으로 확인하시면 됩니다.


If AdoCn.State = adStateOpen Then

msgbox("열렸음")

else

msgbox("열리지 않았음")

End if


혹시 MSSQL을 로컬계정을 이용하여 접근하실 분들은

ConnectionString을 다음과 같이 변경해주시면 됩니다.


AdoCn.ConnectionString = "DRIVER={SQL Native Client}; Server=127.0.0.1; Port=1111; DATABASE=testdb; Trusted_Connection=yes"


ID, PW 대신 Trusted_Connection을 넣으면 엑셀에서도 로컬 계정을 이용하여 접근할 수 있습니다.

블로그 이미지

ligilo

행복한 하루 되세요~

,

DB를 Select 하다보면 생각보다 문자열을 나눌 일이 상당히 있죠..


물론 애초에 DB를 구성할 때 모든것을 고려한다고 하면


발생하지 않을 수도 있는 일이지만


세상 일이라는게 다 그렇듯 생각대로만 되지 않는게 세상이고


생각지도 않은 요구를 하는게 고객이니까요...


어쨌든, 그래서 Postgresql에서 문자열을 나누는 방법입니다.


MSSQL에서 그동안 substring을 즐겨 써왔는데요


MSSQL이든 Postgresql이든 여러가지 방법이 있겠지만


특정 문자를 기준으로 문자열을 리턴 받을 때


split_part라는 function을 사용하면 상당히 편하네요...


사용법은 split_part('원래 문자열', '자를 문자', 위치)입니다.


예를 들어


문자열이 111_222_333일 때


split_part('111_222_333', '_', 1)을 리턴 받으면 '111'이 나오게 되는거죠...


위치 1은 111

위치 2는 222

위치 3은 333

이 됩니다.


그럼 이곳에 들르시는 모든 개발자님들 화이팅입니다~~

블로그 이미지

ligilo

행복한 하루 되세요~

,

select to_char(now(), 'YYYY-MM-DD HH24:MI:SS')


당연히 now()자리에는 datetime 형식의 데이터는 어느거든 들어올 수 있고...


MSSQL에서는 Convert 하려는 형태가 몇번인지 알아야 하지만

PostgreSQL에서는 형태를 지정해 줄 수 있다

익숙함의 차이겠지만 흔치 않은 형태로 뿌려줘야 하는 경우는 이게 더 편한듯...


HH24는 시간을 24시간 단위로 뿌려주고

HH만 기재한다면 12시간 단위로 뿌려준다


이것저것 날짜, 시간 변환에 대한 파라미터라든지 알아야 할 내용이 많겠지만

내가 필요했던 부분은 여기까지인지라 일단 오늘은 여기까지...

블로그 이미지

ligilo

행복한 하루 되세요~

,

작업을 하다보면 종종 컬럼명은 알고 있는데

그 컬럼이 있는 테이블을 다 검색할 일이 생깁니다.

그런일이 생길 줄 몰랐는데 생기더군요;;;

이왕 찾은거 나중에 쓸 일이 또 있을까 싶어서 이렇게 기록해 둡니다.

아래 '컬럼명' 자리에 찾으실 컬럼명이 들어가면 됩니다.


SELECT
    SO.Name AS '테이블명',
    AC.Name AS '컬럼명',
    TYPE_NAME(USER_TYPE_ID) AS '데이터타입'
FROM SYS.ALL_COLUMNS AC
    INNER JOIN SYSOBJECTS SO ON AC.Object_ID = SO.ID and SO.XTYPE = 'U'
WHERE AC.Name = '컬럼명'

블로그 이미지

ligilo

행복한 하루 되세요~

,

javascript에서 종종 현재 걸려있는 이벤트를 중단시켜야 하는 경우가 있다.

일반적으로는 return false를 가장 편하게 쓰지만

이벤트 초기화 시키거나 상, 하위로 전파되는 이벤트 리스너만 막아야 하는 경우

다음 네가지 방법중 하나를 사용할 수 있을 것 같다.


1. event.preventDefault()

  - 현재 이벤트의 기본 동작을 중단시킨다.


2. event.stopPropagation()

  - 이벤트가 상위로 전파되는 것을 막는다.


3. event.stopImmediatePropagation()

   - 현재 이벤트를 상위 뿐 아니라 현재의 레벨까지 동작하지 않도록 중단시킨다.


4. return false

  - 기본적으로는 event.preventDefault()와 같다.

    하지만 jquery 를 사용하는 경우 1, 2번을 모두 사용한 것과 같다고 한다.


예전에 수업 듣다가 정리해야지 했던걸 반년이 넘어서 다른거 보다가 생각나서 이제 정리함;;;

블로그 이미지

ligilo

행복한 하루 되세요~

,