1장 개요

    1.1 운영체제(OS) 개요

    1.2 유닉스(UNIX) 소개

    1.3 자유 소프트웨어 재단(FSF) 설립

    1.4 리눅스(Linux) 소개


2장 리눅스 쉘 명령어

    2.1 리눅스 커널(kernel)과 쉘(shell)

    2.2 리눅스 파일 시스템

    2.3 리눅스 터미널(terminal) 입력 기본

    2.4 pwd / ls 명령

    2.5 cd 명령

    2.6 mkdir / rm / rmdir 명령

    2.7 cp / mv 명령

    2.8 파일의 내용을 보여주는 명령어

    2.9 alias / unalias 명령

    2.10 기타 명령어들

    2.11 입출력 재지정 (redirection)

    2.12 nano 텍스트 에디터

'주제별 글목록' 카테고리의 다른 글

심파이(sympy) 강좌 목록  (0) 2015.06.03
파이썬(python) 기초 강좌 목록  (1) 2015.05.23
아두이노 강좌 목차  (3) 2015.05.17
ATmega8(A) 강좌 목록  (1) 2015.05.16
C++ 강의 글 목록 (목차)  (2) 2015.04.21
Posted by 살레시오
,

 심파이(sympy)의 행렬 객체는  Matrix이다. 이 Matrix 객체를 생성할 때는 리스트를 넘겨주면 된다. 넘겨준 리스트의 각 요소는 행렬의 행이 된다. 기본적인 사용 예는 다음과 같다.


>>> Matrix([[1,0],[0,1]]) #[1,0]이 1행, [0,1]이 2행이 된다.
>>> Matrix([[11, 22, 33]]) # 리스트의 첫 번째 요소인 [11,22,33]이 1행이 된다.
>>> Matrix([11, 22, 33]) # 11이 1행, 22가 2행, 33이 3행이 된다.


다른 방법으로 행의 개수와 열의 개수를 명시적으로 지정해 주는 방법이 있다.


>>> A = Matrix(2, 3, [1,2,3,4,5,6])
⎡1  2  3⎤
⎣4  5  6⎦

>>> B = Matrix(4, 4, range(16))
⎡0   1   2   3 ⎤
⎢4   5   6   7 ⎥
⎢8   9   10  11⎥
⎣12  13  14  15⎦


행 요소와 열 요소의 관계를 파이썬 함수로 작성하여 이것을 사용할 수도 있다.


>>> def f(i,j):
 if i==j : return 1
 else : return 0

>>> Matrix(4,4,f)
⎡1  0  0  0⎤
⎢0  1  0  0⎥
⎢0  0  1  0⎥
⎣0  0  0  1⎦


명시적 함수뿐만 아니라 익명 함수도 사용할 수도 있다.


>>> Matrix(3, 4, lambda i,j:1-(i+j)%2)
⎡1  0  1  0⎤
⎢0  1  0  1⎥
⎣1  0  1  0⎦


특수한 행렬을 생성하는 함수도 있다. eye() 함수는 항등 행렬을 생성하며, zeros() 는 영행렬을 그리고 ones()는 일행렬을 만들어 준다.


>>> eye(4)
>>> zeros(2)
>>> ones(3)
>>> ones(1,3)


대각행렬을 생성하는 diag() 함수도 있다. 스칼라나 행렬을 인수로 주면 그것들로 대각행렬을 생성한다.


>>> diag(1,2,3)
>>> diag(-1, ones(2,2), Matrix([5,7,6]))


스칼라는 1x1 행렬로 간주되며 주어진 행렬들을 대각 위치에 놓는다.


 난수 행렬을 발생시킬 수도 있으며 randMatrix() 함수를 이용한다.


>>> randMatrix(4) # 4x4 행렬 생성
>>> randMatrix(3,4) # 3x4 행렬 생성
>>> randMatrix(5, symmetric = True) # 5x5의 대칭행렬 생성


이 행렬의 요소는 100이하의 양의 정수로 채워진다.


[표 1] 행렬 객체의 생성 용례들

용법

내용

Martix(list)

Matrix([list1, list2,...])

Matrix(r, c, seq)

Matrix(r, c, func)

열벡터 생성

행렬 생성

seq를 이용하여 r x c 행렬 생성

함수를 이용하여 r x c 행렬 생성

eye(n)

n x n 단위행렬

zeros(n)

zeros(r, c)

n x n 영행렬

r x c 영행렬

ones(n)

ones(r, c)

n x n 일행렬

r x c 일행렬

diag(arg1, arg2, ...)

args 요소들의 단위행렬 생성

randMatrix(n)

randMatrix(r, c)

n x n 난수행렬 (대칭행렬은 symmetric=True 옵션을 지정)

r x c 난수행렬


 한 가지 주지할 사항은 Matrix 객체는 mutable 하다는 것이다. 따라서 immutability 가 필요한 곳(예를 들어 딕셔너리의 키)에는 사용할 수 없다. immutable행렬이 필요하다면 ImmutableMatrix 를 이용하면 된다.




Posted by 살레시오
,

  STM32 칩셋을 이용한 Maple이라는 아두이노 호환 보드가 있다. 아래는 메이플과 메이플미니 보드이다. leaflabs 라는 제조사에서 2010년도에 출시하였다.

아두이노 호환 핀배열을 가지면서 AVR기반의 보드들보다 고성능 칩셋을 사용하여 높은 성능을 가진다.


 하지만 아두이노두에(due)나 곧 출시될 제로(zero) 보드 및 타 제조사의 다양한 저가형 고성능 보드에 밀려서 유지가 힘들어 더이상 지원하지 않게 되었다는 공지가 나왔다.


    Maple end-of-life notice


하드웨어는 단종되었지만 여전히 소스는 github에 오픈되어 있으며 소소한 업데이트는 계속된다고 한다. [#00108]

Posted by 살레시오
,

  파이썬의 수학함수를 이용하기 위해서는 math 모듈을 import해야 한다. 기본 (표준) 모듈이므로 설치 과정 없이 다음과 같이 로드할 수 있다.


-------------------------------------------------------------------

             >>> import math

-------------------------------------------------------------------


이 모듈의 수학 함수는 표준 C언어의 그것들을 구현한 것이다. 실수 연산을 수행하며 대부분의 경우 float형을 반환한다.


 복소수 연산을 위해서는 cmath 모듈을 이용해야 한다. 이것도 역시 기본 모듈이므로 별도 설치 없이 다음과 같이 로드할 수 있다.


-------------------------------------------------------------------

             >>> import cmath

-------------------------------------------------------------------

이 모듈에는 복소수 연산을 위한 다양한 함수들이 있는데 여기에 잘 정리되어 있다.

 하지만 math 모듈은 인수가 실수 (스칼라) 에 대해서만 적용이 되고 cmath 는 복소수 (스칼라) 인 경우에만 적용이 된다는 단점이 있다. 만약 행렬 연산이 필요하다면 이 두 모듈은 사용할 수 없으며 numpy 를 사용해야 한다. 이 모듈은 파이썬의 고급 연산 분야의 기본 모듈로서 벡터 혹은 행렬에 대한 요소간 연산을 지원하므로 가장 적용 범위가 넓다. 또한 python(x,y) 나 winPython 같은 패키지를 사용하면 쉽게 인스톨 없이 바로 import 하여 사용할 수 있다.

winPyhon : 과학 계산용 파이썬 패키지

[#00107]


Posted by 살레시오
,

 파이랩(pylab)은 파이썬을 마치 MATLAB처럼 사용할 수 있도록 하는 목표를 가지고 개발되고 있는 모듈로서 내부적으로 numpy, scipy, 그리고 그래픽을 생성하기 위한 matplotlib 라는 모듈을 사용한다. 이 모듈은 matlab 사용자들을 python 쪽으로 옮겨오는데 편의를 주기 위해서 개발되기 시작한 것 같고 한 때 사용의 편의성 때문에 많이 사용되었던 것 같다. 특히 그래픽을 생성하는 기능은 MATLAB과 매우 흡사한데 이는 matplotlib 의 함수들은 MATLAB문법에 맞게 wrapping 해서 제공하기 때문이다.


 하지만 파이썬 커뮤니티 내부에서는 pylab은 몇 가지 이유로 사용하기를 권장지 않는 듯 하다. 가장 큰 이유는 그 안에서 사용되는 파이썬 모듈 간 구분이 잘 이루어 지지 않아 혼동을 준다는 것이다. 아래 포스트에 자세한 이유가 소개되어 있다.


 please stop using python


현재 pylab에 대한 자료가 별로 많지 않고 2013년 이후로 업데이트도 없다. 단지 하위 호환성을 일정 기간 유지하기 위해서 관련 내용을 완전히 삭제하고 있지는 않은 것 같다. 특히 수치 해석시 많이 사용되는 파이썬쉘인 ipython 을 사용할 때에는 더더욱 권장되지 않는다.




Posted by 살레시오
,

  winPython의 python 콘솔을 실행하면 pylab 이 기본적으로 import 되어서 함수들을 엄격하게 구분해서 사용하는 것이 무척 불편하다. pylab 을 사용하는 것은 파이썬 커뮤니티 안에서 권하지 않는다.


 파이썬 콘솔에서 백그라운드로 임포트되는 모듈들은 다음과 같이 'scientific'이라는 명령을 입력하면 상세한 내용을 확인할 수 있다.

-----------------------------------------------------------------------

>>> scientific


This is a standard Python interpreter with preloaded tools for scientific

computing and visualization. It tries to import the following modules:


>>> import numpy as np  # NumPy (multidimensional arrays, linear algebra, ...)

>>> import scipy as sp  # SciPy (signal and image processing library)

>>> import matplotlib as mpl         # Matplotlib (2D/3D plotting library)

>>> import matplotlib.pyplot as plt  # Matplotlib's pyplot: MATLAB-like syntax

>>> from pylab import *              # Matplotlib's pylab interface

>>> ion()                            # Turned on Matplotlib's interactive mode

>>> import guidata  # GUI generation for easy dataset editing and display


>>> import guiqwt                 # Efficient 2D data-plotting features

>>> import guiqwt.pyplot as plt_  # guiqwt's pyplot: MATLAB-like syntax

>>> plt_.ion()                    # Turned on guiqwt's interactive mode


Within Spyder, this interpreter also provides:

   * special commands (e.g. %ls, %pwd, %clear)

   * system commands, i.e. all commands starting with '!' are subprocessed

     (e.g. !dir on Windows or !ls on Linux, and so on)

-----------------------------------------------------------------------

 파이썬 콘솔 기동시에 pylab을 import 하지 않으려면 다음과 같은 과정을 거쳐야 한다. 먼저 Tools > Preferences 의 Console 탭에서 Advanced settings 항목으로 들어간다.

여기서 Default PYTHONSTARTUP scrip 를 선택하면 파이썬의 기본적인 세팅으로 기동하는 것이다. 아예 아무런 모듈도 import하지 않고 시작하려면 이것을 체크하면 된다.


 과학계산 모듈을 초기에 import 하는 일은 scientific_startup.py 에 기록되어 있는데 아래 그림과 같이 pylab을 로딩하는 부분을 주석 처리하면 pylab 이 import 되는 것을 막을 수 있다.


추가적으로


              %ls (파일리스트)

              %pwd (현재 디렉토리)

              %clear


등의 명령이 사용가능함을 알 수 있다.

Posted by 살레시오
,

  킥스타터에서 펀딩 중인 3D프린터 중에 Tiko 라는 델타형 3D 프린터가 있다. 가장 큰 장점은 179불(약 20만원 정도)에 책정된 가격이다. 다른 프린터들이 아무리 저가형이라도 보통 50만원 이상의 가격대인데 성공적으로 출시된다면 획기적으로 낮은 가격이다.



  델타형이란 세 축이 직각으로 맞물린 직교형 플린터와 달리 (아래 그림 참조) 세 축이 삼각형 모양으로 체결된 방식이다. 직교형과 달리 프린터의 부피를 작게 만들 수 있고 제조하기 용이하면서도 정밀도를 유지할 수 있다는 장점이 있다.


  


  프린터의 부피가 작음에도 불구하고 인쇄물의 크기는 꽤 크다. 제조사의 스펙에 의하면 최대  125x125x125mm 크기로 인쇄할 수 있다고 한다.


  (초)저가형 고품질의 3D 프린터가 속속 등장하고 있다. 이러한 프린터들이 3D 프린터를 대중화 시켜서 생활 전반에 변화를 줄 것으로 기대된다.

Posted by 살레시오
,

  컴퓨터로 프로그래밍을 하다 보면 눈이 쉽게 피로해지는데 컬러 테마를 어두운색 계열로 바꾸어 놓으면 도움이 된다. 윈파이썬의 경우 spyder를 기본 IDE로 사용하는데 spyder의 Tools > Preferences 메뉴에서 Editor, Console 텝의 옵션을 조정하면 dark theme 를 사용할 수 있다.

먼저 Editor 텝에서 다음 그림과 같이 color scheme 을 변경한다. 이것을 적용하면 프로그램 에디터의 테마가 다크테마를 적용되어 어두운 배경에 밝은 색 폰트로 변경된다.



아래 그림에서는 체크를 해제하여야 console창과 python쉘의 배경이 검은색으로 된다.



만약 ipython쉘을 사용한다면 다음과 같이 ipython탭에서 설정을 해주어야 한다.



이렇게 설정해 놓으면 눈이 훨씬 편하게 작업할 수 있다.

Posted by 살레시오
,

 인터넷을 사용하다 보면 구글이나 네이버 아이디가 여러 개를 만들어서 쓸 수 있고 가끔 여러 개의 아이디에 동시에 접속하여 사용해야 할 때가 있다. 이러한 경우 가장 간단한 해법은 하나의 웹브라우저를 사용하는 것 보다 다른 웹브라우저를 여러 개 사용하는 것이다.


 예를 들어서 인터넷익스플로러(IE)로 A라는 계정으로 로그인하고 구글 크롬으로 B라는 아이디로 로그인, 파이어폭스로 C라는 아이디로 로그인하는 것이다. 그러면 각각의 계정으로 로그인된 상태로 동시에 웹서핑을 할 수 있다.


 가장 많이 사용하는 웹브라우저를 순서대로 나열하면 다음과 같다.


  • 인터넷 익스플로러(IE)

  • 구글 크롬

  • 파이어 폭스

  • 사파리

  • 오페라 (Opera)


사파리의 경우 맥에서만 쓸 수 있다고 오해하기 쉬운데 윈도우용도 나와 있어서 설치하여 사용할 수 있다. 단 그것의 사용성은 맥에 최적화 되어 있다. (그래서 윈도에서는 잘 안쓰게 된다)


[그림 1] 윈도7에서 사파리를 실행한 모습


 이것들 중 저사양에서도 원할하게 구동되는 브라우저는 IE라고 한다. 크롬이나 파폭은 상대적으로 속도나 메모리 사용량이 높은 편에 속한다.



Posted by 살레시오
,

  자바 식별자는 길이에 제한이 없으며 '_' 뿐만 아니라 '$' 문자도 사용할 수 있다는 점이 특이하다.


  자바에서는 반복문 앞에 라벨을 붙여서 그 라벨을 break, continue 문 뒤에 붙여 중첩된 반복문을 한꺼번에 벗어날 수 있다.


loop1: for(...) {

    for (… ) {

        …

        break loop1; //바깥쪽 루프를 벗어남.

        …

        continue loop1: //바깥쪽 루프의 그 다음 반복을 바로 수행.

    }

}


반복문의 이름이 지정되지 않은 break, continue 문은 그것을 포함하는 가장 안쪽의 반복문을 제어하지만 이처럼 라벨링을 이용하면 그 바깥쪽의 반복문을 제어할 수 있다.


  그리고 JAVA5 이상부터는 C#의 foreach 나 파이썬의 for문과 같은 기능을 사용할 수 있다. 문법은 다음과 같다. 


for(자료형 변수명: 집합) {

}


여기서 집합은 배열,콜렉션,enum 등이다. 이렇게 하면 예를 들어 배열의 각 요소가 변수명에 대입되어 차례로 반복문을 수행하게 된다.


enum Week { 월, 화, 수, 목, 금, 토, 일 }

public static void main(String args []) {

    // enum 타입을 foreach 로 출력

    for (Week day : Week.values()) { // Week.values()에는 Week 의 값들이 교대로 들어갑니다.

    System.out.println(day + "요일");

}


// 정수 배열을 foreach 로 출력

int[] num = { 14, 54, 52, 26, 62, 55 };

for (int i : num)

    System.out.println(i);


// 문자열 배열을 foreach 로 출력

String names[] = { "수성", "금성", "지구", "화성" };

for (String s : names)

    System.out.println(s);

}

[#00065]


Posted by 살레시오
,