본문 바로가기

Web/DB/Dev

Join할 때 데이터가 없을 경우 0으로 표시하는 쿼리 (Outer Join) 두개의 테이블을 Join 할 때 기준이 되는(코드) 테이블을 기준으로 join 하는 테이블(데이터)에 데이터가 없을 경우 inner join을 사용하면 기준이 되는 테이블의 행이 표시되지 않는다. 이 때 데이터가 없을 경우 0으로 표시하고 싶다면 outer join을 사용해야 한다. 예를 들어 특정 문자열이나 에러코드, 감사로그 코드의 일별 통계를 뽑을 때 한건도 없는 경우 일반적인 Inner Join을 하게 되면 건수가 0인 날짜는 출력되지 않는다. 이럴 때 해당 일자에 0건으로 출력되도록 하는 경우에 outer join을 사용할 수 있다. 다음의 두 테이블에서 예를 들어 설명하면... table name : t_student no name 01 홍길동 02 김철수 03 이영희 table name : .. 더보기
MySQL 5.7 에 phpmyadmin 설치 후 mysqli_real_connect(): (HY000/1698): Access denied 에러 MySQL을 관리하기 위해 가장 많이 사용되는 관리도구는 바로 phpMyAdmin 이다. 웹 기반이고 단순한 DB의 생성과 관리 뿐만 아니라 백업과 복구기능도 지원되는 다재다능한 관리도구다. 그런데 MySQL 5.7을 설치하고 예전처럼 최신버전의 phpMyAdmin을 설치하는데 계정을 만드는 과정이 새로 보였다. 그래서 기존 처럼 MySQL의 DBA계정인 root를 버릇처럼 입력했더니 phpMyAdmin 웹 접속 시 다음과 같은 에러가 발생했다. 쉘 상태에서 mysql 커맨드라인에서는 잘 접속이 되는데 phpMyAdmin에서는 root 계정으로 접속이 안되었다. 순간 phpMyAdmin에서 접속 시 root 계정으로의 접속을 차단했나 싶었다. 그래서 계정을 하나 더 만들고 해당 계정에게 DBA와 같은 권.. 더보기
워드프레스 SSL 적용 플러그인 Really Simple SSL 설치 시 에러 (Installation failed: Could not create directory) 시놀로지 NAS는 정말 요물과도 같은 존재다. NAS와 단순 웹서버는 물론 DNS, 프린터 서버, FTP서버, 토렌트 머신을 뚝딱~뚝딱~ 구성할 수 있고 보다 전문적으로 mysql 또는 mariadb를 설치하고 그 위에 워드프레스도 쉽게 설치할 수 있다. 물론 메일서버, 위키 등도 몇번의 클릭만으로 설치할 수 있는 애플리케이션 마켓(?)도 있다. 어제 하루만에 mariadb와 아피치, php, phpmysql을 모두 업그레이드하고 최신 워드프레스를 다운받아 수동으로 설치한 뒤 DSM에서 무료 SSL 인증서도 발급 받아 설치하고 워드프레스에 SSL까지 적용했다.물론 시놀로지 NAS에 워드프레스 설치와 SSL 적용은 처음 해보는 작업이었다. 그럼에도 큰 어려움과 오류 없이 모든 작업이 부드럽게 진행되었고 지.. 더보기
[C언어] C언어와 Windows API로 Hello C 코딩하기 C언어를 공부해본 사람이라면 누구나 알만한 프로그램이자 처음으로 작성해보는 프로그램이 있죠.바로 Hello, World 혹은 Hello, C 라는 문자열을 출력하는 프로그램입니다. 이 프로그램이 얼마나 유명하냐면 프로그래밍 언어별로 이 문자열을 출력하는 소스를 컬렉션한 웹사이트가 있을 정도입니다. (보러가기)그 중에서 오늘 이 포스트에서 작성할 언어는 바로 C언어 입니다. 그리고 C 언어 중에서도 Text 화면(콘솔)에서 동작하는 C언어와 Windows와 같은 GUI 화면에서 동작하는 C언어 소스를 비교해 보려 합니다.먼저 사용자환경이 콘솔 즉 CLI (Command Line Interface) 환경인 C 언어 입니다. CLI를 지원하는 운영체제에서 C언어로 코딩한다면 소스코드는 100% 동일합니다. 위.. 더보기
특정 TCP 포트를 Open하고 Listen 하는 Perl 스크립트 IT 분야의 일을 하다 보면 외부에서 혹은 내부 네트워크간 통신을 위해 방화벽을 열어줘야 하는 경우가 생깁니다. 서버에 SW가 설치되고 방화벽에서 열어준 Port를 사용하는 SW가 설치되어 구동 중이라면 원격지의 PC에서 telnet 명령을 통해 손쉽게 방화벽이 잘 열려 있는지를 확인할 수 있습니다. 하지만 서버에 해당 포트를 이용하는 SW가 설치되어 있지 않다면 방화벽에 Open을 요청한 TCP 포트가 제대로 열려 있는지 확인이 어렵습니다. 서버와 포트가 한두개라면 SW를 설치한 뒤 확인하면 되지만... 방화벽 Open이 관리적인 문제와 조직적인 문제로 최소 3~4일씩 소요되는 경우가 다반사입니다. 심하면 그보다 훨신 더 오래 걸리죠. 그럴 땐 보안 담당자가 방화벽을 Open했다고 회신을 주었을 때 즉.. 더보기
그누보드 5의 이메일 기능 사용하기 게시판을 모아둔 웹사이트를 구축할 때 많이 사용되는 무료게시판 중에 그누보드(GNUBOARD)라는 게시판 솔루션이 있습니다. 저도 애용하는 게시판 소스 중 하나인데요. 이 그누보드는 메일발송 기능까지 포함고 있습니다. 내부적으로는 PHPMailer라는 메일발송 라이브러리를 연동하여 제공하는 기능이죠. 그누보드의 이메일 사용 설정 이 그누보드의 메일발송기능은 다음과 같이 그누보드의 관리자 페이지에서 설정할 수 있습니다. 위 설정화면에서 처럼 회원가입한 사람이 있으면 등급설정을 위해 관리자에게 회원가입 신청이 있음을 알려주는 설정을 비롯해 글쓴이에게 댓글이 작성되었음을 알려주는 등 다양한 용도로 메일 발송기능을 사용할 수 있습니다. 하지만 위 화면에서 메일 발송 기능을 사용하도록 설정한다고 하여 바로 메일이.. 더보기
CentOS 6.6 Final에 PostgreSQL 9.3 설치하기 CentOS와 RedHat은 기본적으로 MySQL과 PostgreSQL 같은 RDBMS의 온라인 설치를 지원한다. CentOS와 RedHat이 설치된 서버가 인터넷에 연결되어 있다면 바로 yum 명령을 이용하여 MySQL이나 PostgreSQL을 설치할 수 있다. 그런데 CentOS 6.6 Final DVD를 이용해 CentOS를 설치하고 yum을 이용해 postgreSQL을 설치하게 되면 기본적으로 8.x 버전의 postgreSQL이 설치된다. 하지만 최신은 아니더라도 비교적 최근의 버전을 설치할 일이 생겨버렸다. 그래서 구글링을 해본 결과 다음과 같은 방법으로 상위버전의 postgreSQL의 설치가 가능했다. CentOS 6.6 Final에 PostgreSQL 9.3 설치하기 먼저 리눅스의 버전확인... 더보기
워드프레스 회원가입 이메일 인증 설정하기 워드프레스(Wordpress)는 대표적인 설치형 블로그 솔루션이다. 하지만 워드프레스는 블로그는 물론 게시판이나 홈페이지로 까지 변형이 가능할 만큼 유연한 구조를 갖고 있으며 실제로 다양한 플러그인과 테마를 통해 매우 다양한 형태의 홈페이지를 만들 수 있도록 해준다. 게다가 워드프레스는 회원가입을 받을 수 있도록 해주는 플러그인도 지원된다. 그리고 오늘 설명할 회원가입에 대한 이메일 인증 설정은 블로그를 운영하면서 친한 이웃이나 정보를 공유하기 위한 소수의 멤버들을 모아 회원제로 운영할 때 이메일 주소를 확인할 수 있는 이메일 플러그인도 지원한다. 워드프레스 회원 가입 양식 워드프레스는 설치형 블로그 툴이면서도 기본적으로 아래와 같이 회원가입을 할 수 있는 기능을 지원한다. [사용자명]에 사용할 ID를 .. 더보기
postgreSQL의 Tablespace 에 대한 이해 시스템엔지니어 일을 하면서 종종 DB를 접하게 된다. IT바닥에 뛰어 든 초기에 개발과 DB를 접하고 특히나 Ingres라는 RDBMS를 제법 깊게 공부했던지라 DB와 SQL에 대해서는 일반적인 엔지니어들 보다 이해도가 높다. 덕분에 이런 저런 시스템SW와 보안솔루션들이 DB를 사용할 때 빠르게 구조를 이해하고 감사로그나 수집된 데이터에 대해 직접 DB에 접속하여 SQL을 통해 분석하고 레포팅할 수 있다. DB와 DBMS 프로세스와 프로세서를 정확하게 개념적으로 구별하지 못하는 엔지니어가 많듯... db와 dbms를 구별하지 못하는 엔지니어도 많은게 현실이다. DB는 DBMS에 의해 저장된 데이터 객체 중 가장 큰 객체를 의미한다. DBMS는 사용자 프로세스와 DB 사이에서 인터페이스 역할을 수행하는 프.. 더보기
PostgreSQL 설치와 DB 만들기 (CentOS 6.6) 직장생활을 처음 시작하고 처음으로 한 일은 개발이었다. PC에서 Access와 비주얼베이직, 델파이 등을 이용해 혼자 공부하던 SQL을 직장에서 본격적으로 공부하기 시작했다. 그리고 개발에서 엔지니어로 방향을 튼 뒤 처음 접한 것이 바로 Ingres 라는 RDBMS다. 그리고 이 Ingres의 증손자(?)뻘 되는 PostgreSQL을 오늘 설치하고 테스트 해야할 일이 생겼다. PostgreSQL은 Post Ingres라는 의미도 갖고 있다고 하니 감회가 새롭다. (PostgreSQL은 포스트그레스-큐엘 이라고 읽는다.) 각설하고... 설치 과정과 DB 생성까지를 남긴다. 1. yum을 이용한 PostgreSQL 설치 postgress는 postgresql의 공식 사이트인 http://www.postgre.. 더보기
저용량 메모리 환경에서 mysql 튜닝기 (My Book Live 3TB - MySQL 환경) 디지털 IT 기기들이 생활 속 깊이 파고들면서 옛날 같으면 종이 문서와 사진으로 남겨질 수 많은 일상의 흔적들이 디지털 정보로 노트북이나 컴퓨터 혹은 외장하드에 쌓여가고 있다. 하지만 이렇게 남겨진 디지털 정보들은 언제든지 순간의 실수 혹은 저장 기기들의 고장으로 사라져버리기 쉬운 것도 사실이다. My Book Live 3TB (이하 MBL)그래서 구입한 것이 3 Tera Byte 저장 공간을 갖고 있는 NAS 장비인 My Book Live다. MBL을 구입한 뒤 제일 먼저 한 것은 MySQL DB를 설치한 일이다. 그리고 그누보드를 설치해 게시판까지 쓸 수 있도록 했다. 그런데 문제가 발생했다. 워낙 CPU가 저-사양이니 속도가 느린 것은 이해하겠지만 수시로 메모리 부족으로 웹서버가 Hang 되는 현상.. 더보기
그누보드5에 포함된 네이버 스마트에디터 사용법 및 에디터 높이 변경 방법 게시판과 같은 글쓰기 기능이 포함된 웹페이지를 만들 때 가장 간단한 방법은 HTML 태그 중에서 을 사용하는 것이다. 하지만 이 태그는 너무도 단순해서 HTML 코드나 이미지 첨부 또는 폰트 크기나 색상의 변경 등을 처리할 수 없는 단점이 있다. 그래서 사실상 거의 사용되지 않는다고 보는 것이 좋다.그누보드5(GNUBOARD5) 베타에 포함되어 있는 CKEditor그 대안으로 사용되는 것이 CKEditor와 같은 javascript로 만들어진 에디터다. 아래 화면은 내가 개발해 사용 중인 프로젝트 및 일정관리 시스템의 일정 등록 화면이다. 수행업무 내역을 입력하는 노란색 상자 내부가 CKEditor다. 게시판으로 함께 사용중인 그누보드5(beta)에 CKEditor가 포함되어 있어서 그 CKEditor를.. 더보기