전체 글 354

Linux - iconv - 파일(File) 인코딩(Encoding) 변경

HTML 을 파싱하다보면 HTML이 euc-kr로 되어 있는 경우도 있고, utf-8로 되어 있는 경우도 있다. 개인적으로 보통 linux terminal에서 작업을 하는데 linux terminal 이 보통 utf-8로 되어 있다. 이에 따라 eucKR로 encoing된 html 파일을 받아 내용을 확인해보게 되면 한글이 잔뜩 깨져 있는 것을 볼 수 있다. [euc-kr로 인코딩된 파일을 utf-8 환경에서 열었을 경우] 이에 따라 원활한 작업을 위해서는 euc-kr 파일을 utf-8 인코딩으로 변경해주어야 할 필요가 있다. linux 에서는 iconv 명령어를 이용해 쉽게 변경할 수 있다. iconv 사용법$ iconv -f "현재인코딩포맷" -t "바꿀인코딩포맷" "원본파일이름" > "저장할파일이름..

OS/Linux 2017.01.07

[01-1] Python - 코드(Code)의 실행

python을 배울 때 가장 먼저 화인해야 할 것 중 하나로 작성한 python code를 어떻게 실행시킬 것인가가 있다. 언어를 배울때 가장 중요한 것이 직접 실행해보고 그 결과를 눈으로 직접 보는 것이기 때문이다. python으로 작성한 code를 실행하는 방법은 몇가지가 있다. 1. python interpreter에서 직접 실행하기 2. .py 파일로 생성해서 python 인자로 넣어 실행하기 3. .py 파일을 바로 실행하기 하나씩 알아보기로 하자. 1. python interpreter에서 직접 실행하기 가장 기본적인 코드 실행 방법이다. python@Test:~$ python Python 2.7.6 (default, Jun 22 2015, 17:58:13) [GCC 4.8.2] on linu..

Language/Python 2017.01.06

[03-3] Python - while (반복문, Loops)

while은 for과 마찬가지로 조건이 맞을 경우 특정 문장을 반복해서 실행하는 문법이다. while 의 기본 문법>>> while 조건문: ... 실행문(Statements) ... while 의 다양한 사용 방법 1) while의 기본적인 사용 방법 >>> x = 10 >>> while x > 0: ... print "In while loop : %d" %x ... x -= 1 ... In while loop : 10 In while loop : 9 In while loop : 8 In while loop : 7 In while loop : 6 In while loop : 5 In while loop : 4 In while loop : 3 In while loop : 2 In while loop : ..

Language/Python 2017.01.05

[04-4] Python - pip(python package manager)의 설치 및 사용법

Python을 사용하다보면 pip를 통한 python 관련 package 설치를 볼 때가 종종 있다. Pip Installs Packages 혹은 Pip Installs Python 의 줄임말로 알려진 이 python package manager는 특히 python관련 library 를 설치할 때 유용하게 사용된다. Python 2.7.9 포함한 이후 버전, Python 3.4 포함한 이후 버전에서는 기본적으로 포함되어 있어 별도로 설치해 줄 필요가 없지만 이전 버전이라면 별도의 설치가 필요하다. - pip의 설치 For Ubuntu user1. python-pip package를 설치한다. # apt-get install python-pip For other system user 1. 설치 파일(get..

Language/Python 2017.01.02

[04-3] Python - Timezone 변경하기

개인적으로 사용하고 있는 서버의 System time은 UTC(세계표준시간)로 설정되어 있다. KST로 설정하면 별다른 코드없이 바로 해당 시간 사용이 가능하겠지만 KST보다는 UTC로 운영하고 있다. 하지만 종종 코드상에서 KST 시간이 필요할 경우가 있는데 Python에서 이때는 어떻게 코드를 작성해야 할까? 기본 datetime 모듈에는 해당 기능이 들어 있지 않다. 따라서 별도의 python library를 설치해주어야만 한다. timezone 변경을 위해서는 pytz 이라는 이름의 python library가 필요한데 별도로 설치가 필요하다. 일반적으로 pip 라는 python package manager를 통해 python library를 설치하는데 pytz 또한 pip를 통해 설치가 필요하다..

Language/Python 2017.01.02

[02-7] Python - 집합 (세트, Sets)

수학에 집합에 있듯이, python에도 집합이 있다. 수학 집합의 특징과 마찬가지로 python의 집합도 중복을 허용하지 않는다는 특징이 있다. 집합의 정의 방법 - 1 먼저 list에 사과 2개, 바나나 1개, 오렌지 1개, 수박 1개를 담고, 이 list를 set()로 변환하면 중복은 제거되고 사과, 바나나, 오렌지, 수박이 하나씩 담긴 집합이 생성되게 된다. 결과에서 보면 알겠지만 순서로 정렬되어 있지는 않다. 방법 - 2 list 를 set()을 통해 집합으로 변환하는 방법도 있지만 중괄호 { } 를 이용해서 바로 set을 만드는 방법도 있다. 하나 유의해야 할 점은 중괄호 { } 가 dictionary에서도 사용된다는 점이다. key:value를 포함하지 않고, 하나의 값들의 연속으로 표현된다면..

Language/Python 2016.12.31

[02-6] Python - 딕셔너리 (Dictionary)

딕셔너리(Dictionary)는 한마디로 정의하자면 key와 value로 정의되는 구조체이다. 예를 들어 아래와 같은 문장을 딕셔너리 형태의 자료형으로 표현해 이해해 보도록 하자. 과일이 사과가 한개, 바나나는 두개, 수박은 3개가 있다.fruit = {'apple' : 1, 'banana' : 2, 'watermelon' : 3} 사과가 몇개있는지 알아보려면print fruit['apple'] 바나나가 몇개있는지 알아보려면print fruit['banana'] 수박이 몇개있는지 알아보려면print fruit['watermelon'] 을 해보면 된다. 기존 일반적인 배열을 사용할 때 보다 좀 더 직관적으로 코딩이 가능하다. {}empty dictionary 는 위와 같이 중괄호를 감싸서 표현한다. {'a..

Language/Python 2016.12.31

[04-2] Python - 논리연산자/비트연산자 (boolean/bitwise operation)

언듯 보기에 논리연산자와 비트연산자가 유사해서 그 차이점이 헷갈렸다. 논리연산자의 "and"와 비트연산자의 "&"는 결국 같은 "그리고"가 아닌가?논리연산자의 "or"와 비트연산자의 "|"는 결국 같은 "혹은"이 아닌가?논리연산자의 "not"과 비트연산자의 "~"는 결국 같은 "아닌"이 아닌가? 몇가지 실험을 통해 그 차이점을 확인해 보았다. 결론적으로 논리연산자는 영어로 하였을 때 boolean 연산자로 TRUE, FALSE를 위한 연산자이다. 따라서 숫자를 이용한 비트 연산에 사용할 경우 잘못된 값을 도출할 수 있다. 비트 연산을 할 때는 꼭 비트 연산자를 사용해야 한다. TRUE와 FALSE가 아닌 숫자에 논리연산자를 사용하더라도 에러가 발생하지 않고, 의도치 않은 결과가 계산되기에 더욱 사용에 유..

Language/Python 2016.12.30

Ubuntu, wpa_supplicant 빌드/컴파일 하기

IEEE802.11, 즉 Wi-Fi를 linux 에서 공부하다보면 wpa_supplicant code를 보아야 하는 일이 자주 있다. wpa_supplicant를 공부하기 위해서는 wpa_supplicant code에 로그를 넣어 보기도 하고 코드를 내용을 바꿔 보기도 하고 많은 시도를 해보아야 한다. 이를 위해서 기본 코드를 빌드하였을 때 정상적으로 동작하는 상태를 확보해야만 한다. 이에따라 Ubuntu에서 wpa_supplicant를 기본 code상태로 빌드하여 동작을 확인하고자 한다. Ubuntu 14.04.5 LTS wpa_supplicant v2.1 겪었던 시행 착오를 모두 기술하였기에 다소 양이 방대할 수 있다. 핵심적으로 필요한 부분만 확인하고자 한다면 이 글의 제일 마지막 Summary 부..

OS/Linux 2016.12.29

[Database/mysql] on delete cascade 에 대한 이해

Database를 공부하는 도중 on delete cascade 라는 문법을 만나게 되었다. 찾아보니 설명상으로는 어떤 tuple이 삭제될 때 foreign key로 연결된 tuple 또한 같이 삭제된다는 내용이었다. 의미를 보면 그런가보다 하고 넘어갈 수 있는 내용이었지만 명확히 이해가 가지 않는 부분이 있었다. 위와 같을 경우 relation A의 tuple을 지우면 relation B의 tuple도 연달아 지워진다는 것인가? 아니면 relation B의 tuple을 지우면 relation A의 tuple들이 지워진다는 것인가?애매한 부분이 있어서 직접 mysql 상에서 확인해 보았다. 확인하면서 겪은 시행착오까지 모두 기술하였다. 1. 확인을 위한 TEST database 생성. mysql> cre..

Database 2016.12.23