중복파일이 많아서 제거 프로그램을 확인해보았습니다.
무료 사용 가능한 툴은 크게 아래 두 가지가 추천됩니다.

1. doubleKiller
https://www.bigbangenterprises.de/en/doublekiller/

2. dupeGuru
https://dupeguru.voltaicideas.net/

장단점이 있겠지만 파일이 많을 경우 doublekiller는 프로그램이 멈추는 등의 현상이 있었습니다.
dupeGuru는 잘 동작하는 것 같네요

감사합니다.

Posted by kkckc
,

# 설치 
sudo apt-get install -y postgresql libpq-dev

# CREATE DATABASE
sudo -u postgres psql -c "CREATE DATABASE [DBNAME]"

# CREATE USER
sudo -u postgres psql -c "CREATE USER [USERNAME] WITH PASSWORD '[PASSWORD]';"

# CREATE ROLE
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE [DBNAME] TO [USERNAME];"

# 외부에서 접속 가능하도록 수정
sudo vim /etc/postgresql/12/main/postgresql.conf
# 아래를 수정
listen_addresses = '*'

감사합니다.

Posted by kkckc
,

Python, Flask 로 소규모 프로젝트를 진행하면서, 어려운 점은 생각보다 괜찮은 샘플이나 내용이 많지 않다는 점입니다.
Stackoverflow에는 썩 괜찮은 답이 없을때도 많고, Official 한 자료 (https://docs.python.org/)가 가장 괜찮네요.

그 외에 아래 블로그를 발견했는데 내용이 꽤 좋습니다.
어떤 분인지 봤더니 O'Reilly 의 'Flasks 웹 개발' 저자네요. (바로 검증 끝이네요)

https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world

감사합니다.

Posted by kkckc
,

다음은 브라우저별 점유율을 보여주는 사이트입니다.

https://gs.statcounter.com/

 

Statcounter Global Stats - Browser, OS, Search Engine including Mobile Usage Share

Tracks the Usage Share of Search Engines, Browsers and Operating Systems including Mobile from over 10 billion monthly page views.

gs.statcounter.com

몇년 전만 해도 국내 웹 환경에서 IE(익스플로어)는 절대적이었는데, 모바일 환경으로의 전환 때문인지 삼성인터넷이 2.85%인게 인상적이네요. (아마 Safari는 아이폰도 포함된게 아닐까요?)

 

브라우저별 점유율은 안정적으로 이어지고 있네요

감사합니다.

Posted by kkckc
,

예전에 Bootstrap 3를 이용해 작성한 디자인 일부를 가져오려고 하니, 디자인이 뭔가 잘 적용이 안됩니다.
Bootstrap4는현재 가장 안정된 버전이지만, 3를 완전히 다시 작성한 버전이고, 하위호환성이 지원되지 않습니다.
Bootstrap5는 Jquery 의존성을 빼고 다시 작성했다고 하네요.  

https://stackoverflow.com/questions/49091275/upgrading-bootstrap-from-3-3-4-to-4-0/49091398#49091398

 

Upgrading Bootstrap from 3.3.4 to 4.0

I used to have my website with Boostrap 3.3.4, and since I moved to Bootstrap 4 everything is broken. Essentially the structure of my website was very simple, a container that contained some jumbo...

stackoverflow.com

npm install bootstrap@3

감사합니다.

Posted by kkckc
,

Python 3.6에서 한글파일명이 포함된 CSV 읽을 경우 에러가 날 떄가 있습니다.


1. 샘플 코드

import pandas as pd
pd.read_csv("안녕하세요.txt")

2. 에러 내용

  File "pandas\parser.pyx", line 373, in pandas.parser.TextReader.__cinit__ (pandas\parser.c:4184)
 
  File "pandas\parser.pyx", line 669, in pandas.parser.TextReader._setup_parser_source (pandas\parser.c:8471)
 
OSError: Initializing from file failed

3. 간단한 해결 방법

import pandas as pd
pd.read_csv("안녕하세요.txt", engine='python')

추정 원인은 pandas에서 사용하는 CParserWrapper의 자체 버그이며, 해결방법은 아래 링크(일본어)에서 발견하였습니다

http://own-search-and-study.xyz/2017/04/08/python3-6%E3%81%AEpandas%E3%81%A7%E3%80%8Cinitializing-from-file-failed%E3%80%8D%E3%81%8C%E8%B5%B7%E3%81%8D%E3%81%9F%E5%A0%B4%E5%90%88%E3%81%AE%E5%AF%BE%E7%AD%96/


감사합니다.

Posted by kkckc
,

빅데이터 아카데미라는 교육 프로그램을 듣고, 과제 중입니다.

뉴스를 검색할 일이 있어서 구글 검색 결과를 클리핑 하려던 중 python의

pygoogle 이라는 라이브러리를 찾았습니다.

아나콘다 환경에서는 단순히 pip install pygoogle 로 설치가 가능합니다.


1. pygoogle 현재는 pygoogle-simple로 변경되었습니다.

 라이브러리에는 pygoogle과 pygoogle-simple이 두 가지 다 있지만, pygoogle은 동작하지 않습니다. 같은 버전인데 두 가지가 올라와 있네요.

2. 그런데, pygoogle도 아래와 같은 에러가 나며 현재 동작하지 않습니다.

pygoogle ERROR __search__| responseDetails : The Google Web Search API is no longer available. Please migrate to the Google Custom Search API (https://developers.google.com/custom-search/) 

3. 개발하신 분이 수정하신다고 했지만, 아직 안된것 같아요.

https://github.com/rnikhil275/pygoogle/issues/9

It seems like the Ajax api used in the module is deprecated. I am little busy now and I can migrate it to the new api in sometime. PR's are gladly welcome in the meanwhile. :) 


요약: pygoogle module은 2017.05.31일 현재 정상동작하지 않습니다.


감사합니다.

Posted by kkckc
,

얼마전 테스트용으로 사용하던 Centos 5 의 yum이 안되서 확인해보니,  공식적으로 지원이 종료 된 것 같습니다.


http://mirror.centos.org/centos-5/5/readme

This directory (and version of CentOS) is depreciated.  

CentOS-5 is now past EOL

You can get the last released version of centos 5.11 here:

http://vault.centos.org/5.11/

Please NOTE:  this is not being maintained for security since moving to Vault.
It will have security issues, you should upgrade to a new version instead.

MirrorList 도 사라졌으므로, /etc/yum.repos.d 의 CentOS-Base.repo를 아래와 같이 변경합니다.

CentOS-Base.repo

# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
# http://vault.centos.org/?release=5&arch=i386&repo=os
[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://vault.centos.org/5.11/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#released updates
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
baseurl=http://vault.centos.org/5.11/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
baseurl=http://vault.centos.org/5.11/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
baseurl=http://vault.centos.org/5.11/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
baseurl=http://vault.centos.org/5.11/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 

CentOS-Base.repo

CentOS-Base.repo


Posted by kkckc
,

D3의 Bar Chart를 Table 형식으로 표시하는 방법입니다. (2 Column)

링크 및 테스트 위치는 아래와 같습니다.

The following link is an example to express 2-column table bar with D3

http://jsfiddle.net/kkckc24/xbuwoftd/


감사합니다.



출처: http://kkckc.tistory.com/ [kkckc의 일상]

D3의 Bar Chart를 Table 형식으로 표시하는 방법입니다. (2 Column)

링크 및 테스트 위치는 아래와 같습니다.

The following link is an example to express 2-column table bar with D3

http://jsfiddle.net/kkckc24/xbuwoftd/


감사합니다.



출처: http://kkckc.tistory.com/ [kkckc의 일상]
D3의 Bar Chart를 Table 형식으로 표시하는 방법입니다. (2 Column)

출처: http://kkckc.tistory.com/ [kkckc의 일상]

D3의 CalendarView를 요일 및 년도 추가해서 그리는 방법입니다.


링크 및 테스트 위치는 아래와 같습니다.

The following link is an example of D3-Calendarview with Year/WEek.

http://jsfiddle.net/kkckc24/zatx1t5q/
감사합니다.

Posted by kkckc
,

D3의 Bar Chart를 Table 형식으로 표시하는 방법입니다. (2 Column)

링크 및 테스트 위치는 아래와 같습니다.

The following link is an example of 2-column table bar with D3

http://jsfiddle.net/kkckc24/xbuwoftd/


감사합니다.


Posted by kkckc
,

D3Plus의 TreeMap Charts 중 한 그래프에 2개의 Column을 표시하는 방법입니다.

그래프에 크기는 건수(Value), 농도는 위험도(Risk)를 보여줍니다.  (2depth)


링크 및 테스트 위치는 아래와 같습니다.

The following link is an example of 2-depth treemap chart with D3Plus

(Rect. Size : Value, Color: Risk Column)


http://jsfiddle.net/kkckc24/2tezcLr8/


감사합니다.

Posted by kkckc
,

4. MySQL 설정

아래는 MySQL 설정 파일입니다.

shell) vim /etc/my.cnf.d/server.cnf  

아래를 참고하여 수정합니다. 단 아이디는 위에 생성한 아이디와 일치시키고, NODE01/02는 각 노드의 IP를 적습니다.

[A] NODE01 서버

[mysqld]

wait_timeout=2147483

skip-name-resolve

max_allowed_packet=128M

[galera]

wsrep_on=ON

wsrep_provider=/usr/lib/galera/libgalera_smm.so

wsrep_node_address=NODE01

wsrep_node_name=NODE01

wsrep_sst_method=rsync

wsrep_sst_auth=[mariauserd:mariauserd]

wsrep_sst_receive_address=NODE01

innodb_flush_log_at_trx_commit=2

binlog_format=ROW

bind-address=0.0.0.0

binlog_format=ROW

default-storage-engine=innodb

innodb_autoinc_lock_mode=2

innodb_locks_unsafe_for_binlog=1

wsrep_cluster_address='gcomm://NODE02'

server_id=1

[B] NODE02 서버

[mysqld]

wait_timeout=2147483

skip-name-resolve

max_allowed_packet=128M

[galera]

wsrep_on=ON

wsrep_provider=/usr/lib/galera/libgalera_smm.so

wsrep_node_address=NODE02

wsrep_node_name=NODE02

wsrep_sst_method=rsync

wsrep_sst_auth=[mariauserd:mariauserd]

wsrep_sst_receive_address=NODE02

innodb_flush_log_at_trx_commit=2

binlog_format=ROW

bind-address=0.0.0.0

binlog_format=ROW

default-storage-engine=innodb

innodb_autoinc_lock_mode=2

innodb_locks_unsafe_for_binlog=1

wsrep_cluster_address='gcomm://NODE01'

server_id=1

5. NODE01/02 자동시작 삭제 및 시작테스트

[A] NODE01 서버

shell) chkconfig --del mysql  
shell) service mysql start --wsrep-new-cluster --wsrep-cluster-address="gcomm://"

[B] NODE02 서버

shell) chkconfig --del mysql
shell) service mysql start

6. 기본 DB Schema/Data가 있다면 넣어주기

shell) mysql –umariauser –pmariauser < ./SampleDB.sql

7. 자동실행 파일 작성 및 설정

아래와 같이 자동실행 파일을 생성합니다. 첨부파일 내용은 상황에 맞게 수정합니다. 아래 'galera 실행화일'을 /etc/init.d/galera에 생성합니다. 주의사항은 NODE01 또는 NODE02가 살아나는 시차가 있어야 합니다. (왜냐하면 처음 살아나는 노드가 MASTER가 되도록 설정하였기 때문입니다 아래 적색 부분과 같이 한개 노드에만 시차를 주어도 좋습니다.) 또 아래 NODE02라고 써진 부분은 상대편 노드 IP를 적습니다.

* galera 실행화일 (/etc/init.d/galera)

#!/bin/bash

### BEGIN INIT INFO
# Provides:        galera-mysql
# Short-Description: Start/Stop galera server
# chkconfig: 345 99 10
# description: galera service scri
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin

start() {
  sleep 20
  r=$(bash -c 'exec 3<> /dev/tcp/NODE02/3306;echo $?' 2>/dev/null)
  if [ "$r" = "0" ]; then
      echo The database on the other node is running.
      /etc/rc.d/init.d/mysql start
  else
      echo The database on the other node is not running
      /etc/rc.d/init.d/mysql start --wsrep-cluster-address='gcomm://'
  fi
}

stop() {
 sh /etc/rc.d/init.d/mysql stop

}

status() {
 sh /etc/rc.d/init.d/mysql status
}

case $1 in
  start|stop|status) $1;;
  restart) stop; start;;
  *) echo "Run as $0 "; exit 1;;
esac 

[A] NODE01 서버

shell) cp galera.node01 /etc/init.d/galera
shell) chmod 775 /etc/init.d/galera
shell) chkconfig --add galera

[B] NODE02 서버

shell) cp galera.node02  /etc/init.d/galera
shell) chmod 775 /etc/init.d/galera
shell) chkconfig --add galera

8. 상태체크 및 기타사항

8.1 서버 강제종료/다운 후 시작이 안되는 경우

shell) vim /var/lib/mysql/grastate.dat
safe_to_bootstrap: 1      // 0으로 변경

8.2 장애복구 시 참고 사이트

https://www.percona.com/blog/2014/09/01/galera-replication-how-to-recover-a-pxc-cluster/


감사합니다.

Posted by kkckc
,

0. 시작하면서

 이 문서는 galera를 이용하여 MariaDB는 이중화를 지원하는 방법을 기술합니다. 내용은 Centos 5에서 테스트되었습니다. 기본적으로 Galera는 Active-Active 구조로 이중화를 지원하지 않고, 홀수개의 DB를 설치할 경우 다수결의 원칙에 의해 신뢰할 수 있는 노드를 선택합니다. 이에, 이중화(2개 노드 사용) 사용시는 어플리케이션 단에서 충분한 테스트 및 관리가 필요합니다.


1. 기존 MariaDB 제거하기 (1번 2번 노드 공통)

- MariaDB Server가 이미 설치되어 있는지 확인하기

$ rpm -qa | grep Maria
조회가 되면 서버에 한해서만 설치 제거(dependency로 인해 삭제가 안되는 경우에는 –nodeps 옵션을 사용합니다.)
$ rpm -e  MariaDB-server-10.0.15-1

- 기존 MySQL이 설치된 경우 제거하며, MariaDB Client는 제거하지 않습니다.


2. RPM 설치하기 (1번 2번 노드 공통)

아래와 같이 RPM을 구해서 설치하거나, yum을 사용하여 설치합니다.

(https://mariadb.com/kb/en/mariadb/yum/#installing-mariadb-galera-cluster-with-yum)

Shell) rpm -Uvh MariaDB-* galera-25.3.18-1.rhel5.el5.i386.rpm perl-DBI-1.52-2.el5.x86_64.rpm

# RPM 목록은 다음과 같습니다.
MariaDB-Galera-10.0.28-centos5-i686-server
MariaDB-Galera-10.0.28-centos5-i686-test
MariaDB-10.0.28-centos5-i686-common
MariaDB-10.0.28-centos5-i686-client
galera-25.3.18-1.rhel5.el5.i386
perl-DBI-1.52-2.el5.x86_64


3. 기본 유저 생성하기 (1번 2번 노드 공통)

첨부파일을 참고하여 아래와 같이 유저를 생성합니다. 첨부파일 내용은 상황에 맞게 수정합니다.

아래 Sample 파일은 mariauser/mariauser라는 사용자 아이디/패스워드와 동기화를 위한 mariauserd/mariauserd 계정 및 권한을 생성합니다.

shell) service mysql start
shell) mysql –uroot –p < ./DEF_USER.sql
shell) service mysql stop

DEF_USER.sql

* 다음편에는 Mysql 설정파일 변경 및 자동실행 등에 대해서 다루겠습니다.


Posted by kkckc
,

안녕하세요. 무료 캐드 프로그램 2종류를 소개합니다.

1. NanoCAD 5.0

모든 목적에 무료입니다.!
nanoCAD is free to use and share for individual and commercial purposes.

http://nanocad.com/page/DownloadNanoCAD


2. 드레프트사이트 프리 (DraftSight)

https://www.3ds.com/ko/products-services/draftsight-cad-software/free-download/

원래는 아래와 같이 무료버전 다운로드를 제공했는데, 현재 링크는 교육, 시설, 교육 및 / 또는 학업 목적으로만 제한되는 것으로 보입니다.

아래는 완전무료버전(2015년) 시점의 버전 링크이지만, 30일 이후 Activation이 필요한 것으로 알고 있습니다. 현재는 라이선스 정책이 조금은 모호한 것 같습니다.

http://download.cnet.com/DraftSight-64-bit/3000-18496_4-75855080.html

감사합니다.

Posted by kkckc
,

Centos 에서 R을 설치하려고 하면 패키지를 찾을 수 없다고 나옵니다.

그럴 경우 아래와 같이 EPEL(Extra Package for Enterprise Linux)을 설치 후 설치하면 쉽게 설치 가능합니다.

shell) yum install epel-release

shell) yum install R

감사합니다.


Posted by kkckc
,