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

댓글을 달아 주세요

  1. 지나가다가 2017.11.30 09:32  댓글주소  수정/삭제  댓글쓰기

    와 감사합니다. 검색해서 발견해서 도움을 얻고 갑니다.

  2. Lee 2018.08.07 07:13  댓글주소  수정/삭제  댓글쓰기

    감사합니다 ^^ 덕분에 쉽게 해결하고 가네요!

  3. 와진짜 2019.01.03 19:45  댓글주소  수정/삭제  댓글쓰기

    감사합니다. 정말 감사합니다 ㅠㅠ

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

뉴스를 검색할 일이 있어서 구글 검색 결과를 클리핑 하려던 중 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
TAG CentOS5, error, yum

댓글을 달아 주세요

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

댓글을 달아 주세요

VirtualBox에 Centos 7을 깔았습니다.

Linux에서 가장 잘 쓰는 기능 중 하나는 작업공간(Workspace)간 이동인데, 기존 Centos 5 또는 6 처럼 'ctrl + alt + 왼쪽/오른쪽 화살표' 눌러도 이동이 되지 않았습니다. 해외 포럼을 찾아보니, Virtualbox의 자동으로 키보드 잡기 체크박스를 비활성화 하면 된다는데 그것도 안되고 Host키를 변경해도 안되더라구요.

확인해보니 Workspace가 기존에는 가로로 4개가 있었다면, 7에서는 세로로 4개가 있습니다. 즉 'ctrl + alt + 위/아래 화살표'로 이동해야 단축키로 workspace 간 이동이 가능합니다.

감사합니다.

I have installed the centos 7 on the virtualbox but shortcut (ctrl+alt+left/right key) for shifting workspace did not work properly even if I changed the configuration of the virtualbox. The workspace was vertical rather than horizontally and you can change your active workspace with ctrl+alt+up/down key.

Posted by kkckc

댓글을 달아 주세요

윈도우 10 업그레이드 이후 아래와 같이 Virtualbox 호스트 전용 어댑터 설정시 동작하지 않는 경우가 발생하였습니다.


오류 메시지는 Failed to open/create the internal Network로 다음과 같습니다.

그런 경우 네트워크 연결 속성에서 Virtualbox Host-Only Network속성을 확인합니다.


아래 그림과 같이 Virtualbox NDIS6 Bridged Network Driver가 체크안되어 있는 경우 체크합니다.


감사합니다.



Posted by kkckc

댓글을 달아 주세요

Getter/Setter Macro입니다.
코드에 하나씩 (1) 선언 (2) Get (2) Set Method를 작성할 필요가 없게 되며, 필요시 구분하여 사용하여 시간을 절약할 수 있습니다.

감사합니다.

The follow codes are the example macro of getter/setter. This code can auto-generate (1) defintion (2) getter method (2) setter method once at all and you can save you time :)

Thank you very much.

1) Make a Header File as follows


2) Sample Code

2.1) Sample Header

2.2) Sample Code


Posted by kkckc

댓글을 달아 주세요

안녕하세요.

서버 프로그래밍 시 레드햇 엔터프라이즈를 많이들 구매하시는데요.
라이센스 관련 정보에 대해 인터넷에 찾아보아도 정확한 정보가 없습니다.

한국레드햇에서 답변 받은 라이센스 정책은 다음과 같습니다.
===============================================================
구매하셔서 사용하시고 계신 레드햇 엔터프라이즈 리눅스 서브스크립션과 관련하여,

레드햇 리눅스 서브스크립션은 기술지원이 필요한 제품에만 서브스크립션 계약을 맺는 것이 아닌, 귀사에서 사용 중이신 모든 레드햇 제품과 관련하여 맺으셔야 하는 계약입니다. (OEM 제품 포함)

이는 레드햇 엔터프라이즈 계약 1.2 조항 소프트웨어 사용과 서브스크립션 서비스 조항에 명시되어있습니다.

===============================================================

문의한 사항을 요약하면, 다음과 같습니다.

1. 레드햇 엔터프라이즈의 경우 구독(서브 스크립션) 년 단위의 계약이다.

 => 윈도우와 같이 구입하면 영구적으로 쓸 수 있는 것이 아님

 

2. 계약 단위는 사용 개수이다.

 => 회사에서 3대를 깔고 쓰면 3대만큼의 계약을 맺어야 함.

 

3. 년 단위 구독 계약을 하지 않는 경우 공개버전(예: Centos)만 사용 가능하며, 기존 Redhat Enterprise는 삭제해야 한다.

 => 서브스크립션만 서비스를 종료하면 되는 것이 아님

 => 년 단위 구독을 하지 않고 레드햇 엔터프라이즈 계속 사용 불가

 => 추가적으로, 인터넷에 접속되지 않아 서브스크립션을 사용하고 있지 않더라도. 미 계약후 Redhat 계속 사용 불가

 

계약 조항 전문은 다음에 있습니다:

http://www.redhat.com/licenses/apac_enterprise_agreement_appendices_one_and_two_webversion_korea_20150513v2.pdf

 

감사합니다.

Posted by kkckc

댓글을 달아 주세요

1. 윈도우 계열의 IP 충돌 CASE

(1) 컴퓨터 이름 얻기 (예: 172.23.37.186의 경우)  : nbtstat 사용  (윈도우 계열)
==========================

nbtstat -a 172.23.37.186
  
로컬 영역 연결:
Node IpAddress: [172.23.37.184] Scope Id: []

           NetBIOS 원격 컴퓨터 이름 테이블

       이름               유형         상태
    ---------------------------------------------
    KANGAA <00>  UNIQUE      등록됨
    WORKGROUP      <00>  GROUP       등록됨
    KANGAA <20>  UNIQUE      등록됨

    MAC 주소 = 08-11-96-81-A4-41

 

===>> 컴퓨터에 이름을 지정해 놓았다면, 위의 KANGAA 등을 통해 강씨 누구가 사용중이구나 알 수 있습니다.


(2) 같은 네트워크의 경우 (윈도우 네트워크 로그온)
==> 윈도우 -> 실행 -> \\172.23.37.186  
와 같이 입력할 경우사용자 명이 간단히 뜨고 로그인 화면이 뜹니다.
이때 해당 윈도우의 유저명이 함께 뜨므로 추적이 가능합니다.

2. 기타 계열  충돌 CASE (linux, 전화기, 공유기)
(1) port scan을 합니다. (리눅스 명령)
예)
linux shell) nmap -sT 172.23.37.186
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2009-05-06 10:06 KST
Interesting ports on 172.23.37.186:
Not shown: 1679 closed ports
PORT     STATE SERVICE
8000/tcp open  http-alt

(2) 위와 같은 경우 8000번이 열려 있습니다. 접속해보면 대강의 정보를 알 수 있습니다.
     공유기 또는 전화기의 경우 web interface를 지원하므로 해당 정보를 유추 가능합니다.

 

======================================

감사합니다.

Posted by kkckc

댓글을 달아 주세요