TechNote. 354

Python - setattr(), object의 속성(attribute) 값을 설정하는 함수

setattr >>> setattr(object, name, value) object에 존재하는 속성의 값을 바꾸거나, 새로운 속성을 생성하여 값을 부여한다. __builtin__ module에 포함된 function 이다. 예제에 앞서 setattr 예제를 위한 object를 다름과 같이 먼저 생성한다. >>> class sample: ... def __init__(self, x): ... self.x = x ... >>> >>> c = sample(1) >>> c.x 1 예제) 기존 속성의 값을 바꾸는 경우 >>> setattr(c,'x',2) >>> c.x 2 새로운 속성을 생성하여 값을 할당하는 경우>>> setattr(c,'y',5) >>> c.y 5 참고> setattr() - object의 ..

Language/Python 2018.01.02

Python - complex(), 복소수(complex)를 반환하는 클래스

complex >>> complex([real[,imag]]) real, imag 값을 전달하면 해당 복소수를 반환하거나 문자열 혹은 숫자를 복소수로 변환한다. __builtin__ module에 포함된 class 이다. 예제) real, imag 값을 정수(int)/실수(float)로 전달하는 경우 >>> complex(1,1) (1+1j) >>> complex(1.1,2.2) (1.1+2.2j) imag 값이 생략되는 경우>>> complex(1) (1+0j) 두 인자 모두 생략되는 경우 >>> complex() 0j 첫번째 인자를 문자열로 전달하는 경우 (두번째 인자는 없음) >>> complex("1+1j") (1+1j) complex는 일반 function이 아니고 class 이다. 따라서 해당..

Language/Python 2017.12.29

Python - cmp(), 전달받은 두 object를 비교하는 함수

cmp >>> cmp(x,y) 전달받은 두 object를 비교한 결과를 돌려준다. x < y 일 경우 음수(-1)를 돌려주고,x == y 일 경우 0을 돌려주고,x > y 일 경우 양수(1)을 돌려준다. __builtin__ module에 포함된 function 이다. 예) 전달받은 두 object가 정수(integer)일 경우 >> cmp(1,2) -1 >>> cmp(1,1) 0 >>> cmp(2,1) 1 전달받은 두 object가 실수(float)일 경우 >>> cmp(1.1,2.1) -1 >>> cmp(1.1,1.1) 0 >>> cmp(2.1,1.1) 1 전달받은 두 object가 문자(character)일 경우 >>> cmp('a','b') -1 >>> cmp('a','a') 0 >>> cmp('..

Language/Python 2017.12.29

Python - chr(), 전달받은 정수를 ASCII character로 변환하는 함수

chr >>> chr(i) 전달받은 정수(integer, 0 ~ 255)를 ASCII character로 변환한다. __builtin__ module에 포함된 function 이다. 예) 정수(integer, 0 ~ 255)를 넘겨주었을 경우 >>> chr(0) '\x00' >>> chr(10) '\n' >>> chr(97) 'a' 0 ~ 255 범위를 넘는 정수를 넘겨주었을 경우 >>> chr(300) Traceback (most recent call last): File "", line 1, in ValueError: chr() arg not in range(256) 실수(float)를 넘겨주었을 경우 >>> chr(1.7) Traceback (most recent call last): File ""..

Language/Python 2017.12.29

Python - bool(), 조건에 맞는 boolean 값을 반환하는 클래스

bool >>> bool(x) 전달한 조건 혹은 숫자를 기반으로 boolean(True/False) 값을 돌려준다. __builtin__ module에 포함된 class 로 class int의 subclass 이다. 예제) 조건(condition)을 입력하였을 경우 >>> bool(1>> bool(1>2) False 숫자(number)를 입력하였을 경우 >>> bool(1) True >>> bool(0) False bool은 일반 function이 아니고 class 이다. 따라서 해당 class에 포함된 다양한 method 사용이 가능하다. string 변환 method 사용의 예) >>> bool(0).__str__() 'False' >>> help(bool) Help on class bool in m..

Language/Python 2017.12.29

Python - len(), 넘겨진 값의 길이나 item의 수를 반환하는 함수

len >>> len(s) 전달받은 object의 길이나 가지고 있는 item의 수를 돌려준다. __builtin__ module에 포함된 function 이다. 예) 숫자를 넘겨주었을 경우 >>> a = 1 >>> len(a) Traceback (most recent call last): File "", line 1, in TypeError: object of type 'int' has no len() 문자열을 넘겨주었을 경우 >>> a = "abcde" >>> len(a) 5 리스트를 넘겨주었을 경우 >>> a = [1, 2, 3, 4] >>> len(a) 4 튜플을 넘겨주었을 경우 >>> a = (1, 2, 3, 4) >>> len(a) 4 딕셔너리를 넘겨주었을 경우 >>> a = {"a":1, "..

Language/Python 2017.12.28

Python - bin(), 10진수 숫자를 이진수(binary) 문자열로 바꾸는 함수

bin >>> bin(number) 전달받은 integer 혹은 long integer 자료형의 값을 이진수(binary) 문자열로 돌려준다. __builtin__ module에 포함된 function 이다. 예) integer를 이진수(binary) 문자열로 바꿀 경우 >>> bin(10) '0b1010' long integer를 이진수(binary) 문자열로 바꿀 경우 >>> bin(9223372036854775808) '0b1000000000000000000000000000000000000000000000000000000000000000' 참고> [integer 형과 long integer 형의 차이] >>> help(bin) Help on built-in function bin in module ..

Language/Python 2017.12.27

Python - any(), 반복 가능한 자료형 내 element 중 하나라도 True인지 확인하는 함수

any >>> any(iterableValue) 전달받은 자료형의 element 중 하나라도 True일 경우 True를 돌려준다. (만약 empty 값을 argument로 넘겨주었다면 False를 돌려준다.) __builtin__ module에 포함된 function 이다. 내부 구현 (from python official docs) def any(iterable): for element in iterable: if element: return True return False 예) iterable 자료형내 element가 모두 False일 경우 >>> a = [False,False,False] >>> any(a) False iterable 자료형내 element 중 True가 있을 경우 >>> a = [..

Language/Python 2017.12.27

Python - all(), 반복 가능한 자료형 내 element 전체가 True인지 확인하는 함수

all >>> all(iterableValue) 전달받은 자료형의 element가 모두 True일 경우 True를 돌려준다. (만약 empty 값을 argument로 넘겨주었다면 True를 돌려준다.) 하나라도 False가 있다면 False를 돌려준다. __builtin__ module에 포함된 function 이다. 내부 구현 (from python official docs) def all(iterable): for element in iterable: if not element: return False return True 예) iterable 자료형내 element가 모두 True일 경우 >>> a = [True,True,True] >>> all(a) True iterable 자료형내 element..

Language/Python 2017.12.26

Python - abs(), 절대값 구하는 함수

abs >>> abs(number) 전달한 숫자의 절대값을 돌려준다. plain integer, long integer, float point number 등의 숫자를 argument로 넘겨주면 절대값을 돌려준다. 만약 복소수를 argument로 넘겨주면 복소수의 크기(magnitude)를 결과로 돌려준다. __builtin__ module에 포함된 function 이다. 예제) 정수 >>> abs(-1) 1 실수 >>> abs(-1.75) 1.75 복소수 >>> abs(1+1j) 1.4142135623730951 >>> help(abs) Help on built-in function abs in module __builtin__: abs(...) abs(number) -> number Return th..

Language/Python 2017.12.26

OpenWrt, command line 으로 luci 설치하기

간혹 openwrt 혹은 lede binary를 설치하였는데 luci가 포함되지 않은 버전일 경우가 있다. 이런 경우 luci 설치하는 방법을 설명하고자 한다. 이제 막 binary를 설치하였다면 인터넷이 가능한 네트워크에 연결되어 있지 않다. 네트워크에 연결되어 있던지 해야 luci package를 다운로드 받을 수 있기 때문에 네트워크 연결이 가장 우선시 되어야 한다. (단순히 luci 가 하나의 package 파일로 되어 있다면 해당 파일을 그냥 복사해서 설치할수도 있겠지만 다른 package 들과 의존성을 가지고 있어 네트워크 연결이 필요하다.) 1. 인터넷 가능한 네트워크에 연결 luci 가 되지 않는 상황에서 네트워크에 연결할 수 있는 가장 간단한 방법이 무엇일까.? 가장 먼저 생각했던 방법은..

OS/OpenWRT, LEDE 2017.12.20

[02-2] R언어 - 연산 (Arithmetic)

R언어에서의 연산은 여타 다른 언어의 연산과는 조금 다른 측면이 있다. 기본 연산연산자 기본 연산 R언어는 간단하게 변수에 정수값을 할당하여도 vector 형식의 object로 관리한다. > a = 1 > is.vector(a) [1] TRUE 가장 기본적인 object 형태라고 볼 수 있는데, R언어의 연산을 설명하기 위하여 vector 기반으로 설명하고자 한다. 간단한 예를 보면 다음과 같다. > n1 = c(1,2,3,4,5,6,7,8,9) > n2 = c(1,2,3,4,5,6,7,8,9) > n1 + n2 [1] 2 4 6 8 10 12 14 16 18 좀 더 복잡한 예를 보면 다음과 같다. > n1 = c(1,2,3,4,5,6,7,8,9) > n2 = c(1,2,3,4,5,6,7,8,9) > n..

Language/R 2017.12.06

[01-3] R언어 - 학습의 구성

[01-1] 에 언급하였듯이 통계학에 대한 기본 학습이 필요하다. 통계학에 대한 부분은 다루기가 어려워 아래와 같은 순서로 기본 문법과 주요 function 들에 대해서만 다루고자 한다. 01. R언어01-1. R이란 무엇인가?01-2. 설치 하기01-3. 학습의 구성 02. R언어 기본 정의 및 동작02-1. 할당 (Assignment) 02-2. 연산 (Arithmetic)02-3. Regular sequence 생성02-4. Missing value (누락값) 표현 03. R언어 object03-1. Object의 정의 및 종류03-2. type와 mode 차이의 이해03-3. vector03-4. matrix03-5. array03-6. factor03-7. list03-8. data frame0..

Language/R 2017.12.05

[03-5] R언어 - array 의 상세

R언어의 기본이 되는 object의 종류는 다음과 같다.. vectormatrixarrayfactorlistdata framefunction 본 글에서는 array의 사용에 대해 설명한다. array의 기본array에의 접근array의 계산 1. array의 기본 R언어에서 array는 일반적으로 알려져 있는 것과 같이 같은 mode(type)의 데이터가 연속적으로 나열되어 있는 구조를 의미한다.1차원, 2차원, 3차원 및 고차원으로 선언이 가능하다. array는 다음과 같이 선언한다. a a1 a1 [1] 1 2 3 4 5 6 7 8 9 10 11 12 2차원 array의 예) > a2 a2 [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 ..

Language/R 2017.11.24

[02-1] R언어 - Assignment (할당)

R언어에서 임의의 object에 특정 값을 할당하는 방법에는 여러 방법이 있다. '''='assign function 가장 기본적인 data structure 중 하나인 numeric vector를 예를 들어 할당 방법에 대해 알아보자 1. '' > a1 a1 [1] 1 3 5 7 9 > c(1,3,5,7,9) -> a2 > a2 [1] 1 3 5 7 9 많은 R언어 관련 예제들이 해당 방법을 사용해서 할당을 하고 있다. C언어에서 동일한 기호를 다른 목적으로 사용하는 만큼 헷갈리지 않도록 잘 인지가 필요하다. 2. '=' ''의 경우는 2개의 문자를 사용해야 한다. 이를 좀 더 줄이기 위해, 다른 언어에서의 할당과 마찬가지로 '='도 마찬가지로 사용 가능하다. > b1 = c(2,4,6,8,0) > b..

Language/R 2017.11.10

[03-1] R언어 - Object의 정의 및 종류

object의 종류vectormatrixarrayR언어에서 생성하고 다루는 개체를 objects라고 한다. 번역시 오역이 있을 수 있어 manual 상에 적힌 영문을 기술하면 다음과 같다. The entities that R creates and manipulates are known as objects. R언어에 있어 가장 기본이 되는 단위(?)로 해당 object는 변수(variables), 숫자 배열(arrays of numbers), 문자열(character strings), 함수(functions) 등으로 구분될 수 있다. 현재 R console 상 정의되어 있는 objects의 목록을 보려면 ls() 혹은 objects()를 입력하면 되는데 아래와 같이 변수, 숫자배열, 문자열, 함수 등을 선..

Language/R 2017.11.10

[03-8] R언어 - Data frame 의 상세

R언어에서 data를 다루는 방법에는 다음과 같은 방법이 있다. scalars vectors matricesdata frameslists 본 글에서는 data frames의 사용에 대해 설명한다. Data frames 기존 vector와 matrix는 같은 mode 의 element만으로 구성이 가능하다. 즉, numeric이면 numeric, character면 character, logical이면 logical로만 구성이 가능한 것이다. 하지만 데이터를 처리하다 보면 다양한 mode로 구성할 필요가 있는데 이 때 사용되는 것이 data frame이다. 기본적인 사용의 예) > fruit = data.frame(species=c("apple","banana","melon"), + count=c(3,7,..

Language/R 2017.11.09

[03-4] R언어 - matrix 의 상세

R언어의 기본이 되는 object의 종류는 다음과 같다.. vectormatrixarrayfactorlistdata framefunction 본 글에서는 matrix의 사용에 대해 설명한다. matrix의 기본matrix에의 접근자세한 argument 설명datanrowncolbyrow 1. matrix의 기본 Matrices를 한마디로 정의하면 table과 같은 2차원 vector라고 할 수 있다. 완전히 동일하지는 않지만 C언어의 2차원 배열과 유사하다. Matrices는 matrix function을 통해 다양한 방법으로 생성 가능하다. 먼저 matrix function의 definition은 아래와 같다. matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE..

Language/R 2017.11.08

[03-3] R언어 - vector 의 상세

R언어의 기본이 되는 object의 종류는 다음과 같다.. vectormatrixarrayfactorlistdata framefunction 본 글에서는 vector의 사용에 대해 설명한다. vector의 기본vector에의 접근vector에 데이터 입력순차적인 값 입력반복적인 값 입력vector를 이용한 계산vector의 element들에 대한 naming조건에 기반한 vector의 element 추출 1. vector의 기본 vector를 한마디로 정의하면 동일 objects의 집합 (같은 mode인 데이터의 1차원 나열)라고 할 수 있다. 완전히 똑같지는 않지만 C언어의 배열과 유사하고, 다른 matrix나 data frame을 만들 때 필요한 기본형이라고 보면 이해가 쉽다. > sample = c..

Language/R 2017.11.08

[03-2] R언어 - type와 mode 차이의 이해

R언어를 공부하면서 가장 헷갈렸던 부분 중에 하나가 아닐까 한다. object는 뭐고, mode는 또 뭐고, type은 또 무엇이란 말인가? 결론적으로 말하면 object는 R언어에서 다루는 하나의 entity(개체)이고, 이 object가 memory에 올라갈 때의 형식이 type 혹은 mode로 표현된다. 즉, 모든 object는 type과 mode 값을 가지고 있다. 그렇다면 type과 mode의 차이는 무엇인가? 먼저, type은 R언어 자체에서 사용하는 분류이다. R언어는 C언어를 이용해 코딩되었는데, 이 C언어 상에서 실제적으로 서로 구분하는 type을 나타낸다. 반면 mode는 "Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New ..

Language/R 2017.11.07

[R언어] R console 출력 언어 변경.

R 과 RStudio를 설치하고 이것 저것 학습하다 보면 R console에서 출력이 발생한다. 그런데 뭔가 좀 이상하다. 설치할 때도 분명이 english 를 선택했고, 별다르게 한국어를 선택한 적이 없는데 "필요한 패키지를 로딩중입니다" 이런식으로 일부 출력은 한글로 나오고 또 어떤 출력은 영어로 나오고 뒤죽 박죽이다. 이럴 꺼면 전부 영어로 나오는게 나을 것 같다. 그래서 관련 설정을 찾아보았지만 RStudio 에서는 관련 설정을 찾을 수가 없었다. 아무래도 R 언어 자체의 출력이다 보니 설정하는 부분이 없는 것 같다. 이를 해결하기 위해 아래 경로의 파일을 수정해 준다. C:\Program Files\R\R-3.4.2\etc\Rconsole Rconsole 파일을 열어 보면 아래와 같이 langa..

카테고리 없음 2017.11.07

[04-1] R언어 - 관련 학습 문서 및 사이트

https://www.stat.berkeley.edu/~s133/all2011.pdf: UC 버클리에서 진행한 "Concepts in Computing with Data" 수업의 수업교재(강의 홈페이지 : https://www.stat.berkeley.edu/~s133/) https://cran.r-project.org/doc/contrib/Torfs+Brauer-Short-R-Intro.pdf: R언어 공식 홈페이지에서 제공하는 12 페이지짜리 짧은 가이드 문서 https://cran.r-project.org/doc/manuals/R-intro.pdf: R언어 공식 홈페이지에서 제공하는 105 페이지짜리 가이드 문서 R 관련 사이트 http://www.r-tutor.com/http://www.r-blo..

Language/R 2017.11.07

[01-2] R언어 - 설치하기

[R 언어란 무엇인가?] R 언어는 다양한 플랫폼에서 사용 가능하다. 해당 플랫폼으로 Linux, OS X, Windows 가 있다. 다운로드를 위해 [R 언어 홈페이지]를 방문하면 CRAN 이라는 용어를 접할 수 있다. CRAN(Comprehensive R Archive Network) is a network of ftp and web servers around the world that store identical, up-to-date, versions of code and documentation for R. Please use the CRAN mirror nearest to you to minimize network load. 해당 사이트에 정의된 CRAN은 위와 같다. R 언어를 위한 최신의 코..

Language/R 2017.11.07

[01-1] R언어 - R 이란 무엇인가?

요즘들어 R 이라는 언어가 주위에서 자주들려온다. 대체 기존 언어들과 비교해서 어떤 점이 다른 언어인가? 우선 R 언어를 언급하기 전에 S 언어에 대해 알아볼 필요가 있다. S 언어는 통계에 기반한 프로그래밍 언어이다. 이 언어의 목적은 "어떤 아이디어에 대해서 좀 더 빠르고 충실하게 소프트웨어로 구현 가능하게 "이다. S 언어는 2가지 버전이 있다. 무료로 배포되는 GNU S상용 버전인 Insightful의 S-PLUS 앞서 언급된 GNU S가 바로 우리가 알아보고자 하는 R 언어이다. 통계에 기반한 언어라는 것은 대체 무엇일까. 일반적으로 생각해 보면 통계라는 것은 다양한 데이터를 기반으로 이들 데이터에서 의미있는 어떤 것을 구해내는 것이다. 물론 많은 용도가 있겠지만 데이터 분석을 위한 언어가 주 ..

Language/R 2017.11.07

OpenWrt, 새로운 패키지(iptraf package) 추가하기

예전에 openwrt 확인했을 때는 iptraf (traffic 분석툴)이 포함되어 있었던 것 같은데 막상 최근 openwrt 바이너리를 다운로드 받아 보이 해당 명령어가 존재하지 않았다. 인터넷을 검색해 보니 iptraf는 더 이상 포함하지 않는다는 글이 보인다. 좀 더 검색을 해보니 iptraf 와 같이 이전 openwrt의 old package를 사용할 수 있도록 해 놓은 곳이 있다. https://github.com/mhei/openwrt-oldpackages 좀 더 정확히 이야기하면 실행 binary 자체를 올려 놓은 것은 아니고, openwrt build system 내에서 빌드하여 바이너리에 포함될 수 있도록 Makefile을 제공하고 있다. 해당 git 에서 Makefile 바이너리를 다운..

OS/OpenWRT, LEDE 2017.09.26

롬 (ROM, Read Only Memory)

Read-only memory (ROM) 는 비휘발성(non-volatile) memory 이다. (비휘발성이란 전원을 차단해도 내용이 삭제 되지 않음을 의미) 전통적으로 ROM은 제조사에 의해서만 programming 이 가능한 mask-programmed ROM이다. 많은 제약이 있지만 어느정도 수정이 가능한 ROM도 존재한다. ROM 의 종류 - semiconductor(반도체) 기반 PROM (Programmable read-only memory) or OTP (one-time programmable ROM) :PROM programmer 라는 장비를 통해서만 쓰기가 가능하다. 한번만 쓰기가 가능하다. EPROM (Erasable programmable read-only memory) :자외선을 ..

OpenWrt, TP-LINK Archer C7 build 하기 (ATH10k)

TP-LINK Archer C7 용으로 openwrt code를 수정하여 build 할 일이 있었다. 아래 Full binary 생성 순서와 같이 진행하였다. http://technote.kr/167 하지만 막상 만들고 보니 5GHz 가 동작하지 않았다. Target System 도 ar71xx로 설정하고 Target Profile도 TP-LINK Archer C5/C7 으로 제대로 설정하였는데 대체 무엇이 문제일까.. Target Profile 을 모델에 맞게 TP-LINK Archer C5/C7로 설정하면 해당 모델에 맞는 관련 설정들이 자동으로 모두 이루어 질 것 이라고 생각했었는데, 누락된 것이 있어서 그렇다는 것을 알게 되었다. 가장 중요한 것 중 하나인 5GHz관련 wireless interf..

OS/OpenWRT, LEDE 2017.09.26

Interrupt (인터럽트), 그리고 Exception (예외)

CA (Computer architecture) 를 공부하면서 interrupt 부분을 공부하다보니 책마다 다소 상이한 부분이 있었다. interrupt 분류(종류) 부분이었는데 어떤 책에서는 외부 인터럽트의 한 종류로 I/O 인터럽트를 분류해 놓은 반면 어떤 책에서는 외부 인터럽트는 외부 인터럽트대로 있고, I/O 인터럽트는 또 다른 종류로 분류해 놓은 경우도 있었다. 인터럽트와 유사한 개념인 예외(Exception)와 혼용하는 경우도 있었고, 구분하여 분류한 곳도 있었다. 이래저래 찾다 보니 어느 정도 정리된 내용을 찾아 정리하고자 한다. Interrupt (인터럽트) : 제어 흐름에서 예상치 못한, 외부에서 전달되는 사건.Exception (예외) : 프로세서 내부에서 발생하는 예상치 못한 사건. ..

OpenWrt, 특정 revision(commit)의 source code sync(동기화) 하기

TP-LINK Archer C7 을 Openwrt 에서 일부 기능을 구현하여 확인할 일이 생겼다. https://wiki.openwrt.org/toh/tp-link/archer-c7-1750 위 official로 build 된 Archer C7 용 binary를 다운로드 받아 보니 2.4GHz, 5GHz 모두 잘 동작했다. 그래서 해당 모델의 openwrt latest source code를 다운로드 받아 아래 과정에 따라 full binary 로 빌드하였다. OpenWrt, 전체 기본 Image 만들기 하지만 막상 최신으로 빌드해서 확인해 보니 5GHz 가 동작하지 않는다. 분명 official 과 같은 branch 의 source code를 다운받아서 빌드했는데, 왜 동작하지 않았을까 생각해 보았다...

OS/OpenWRT, LEDE 2017.09.25

WI-FI packet sniffing (Wi-Fi packet 분석)

일반 사용자가 Wi-Fi frame을 볼 일은 거의 없다. 아마도 이 글을 Wi-Fi 관련 연구자나 개발자가 보면 도움이 될 것이다. Windows 상에서 Wi-Fi frame을 제대로 잡기 위해서는 상당한 금액의 omnipeek이나 별도의 Wi-Fi USB dongle을 구매해야 하는 wireshark를 사용할 것이다. 이외에도 몇가지 방법은 있지만 잘 안되는 경우가 많은 것 같다. 하지만 Linux 에서는 kernel 에서 monitor mode라고 해서 Wi-Fi sniffing을 지원하고 있다. (해당 기능은 mac80211에서 지원 하는 것으로 너무 오래된 구형 Wi-Fi driver에서는 동작하지 않는다.) Built-in Wi-Fi이건 USB Wi-Fi dongle이건 배포판에 상관없이 Li..

Network/Wi-Fi 2017.09.19