바쁘다 바빠

* Alias

자주 사용하는 명령어에 대해 저장하는 기능

예) alias gd = 'cd /home/share';


특정 폴더에 대해 자주 왔다 갔다 하는 경우에 좋다.


* id, who;

id : 현재 내가 누구인지 알려줌

who : 누가 접속햇는지 알려줌


* 관리자, 일반사용자


관리자 : super user, root

일반사용자 : user

콘솔창에서 마지막아 ~$가 뜬다면 일반 사용자



~# 가 뜬다면 루트 사용자이다.

참고) root 비밀번호가 설정 안되어있으면 su - 로 넘어갈 수가 없다 (Authni.. 블라블라 에러가 뜸)

사용자 추가 : sudo useradd -m [유저명]

비밀번호 추가 sudo passwd [유저명]


* 권한

ls -al 를 실행하면 아래처럼 자세하게 뜬다. 


제일 앞에 d 혹은 - 는 해당 파일의 타입을 뜻한다. d는 디렉토리, -는 일반 파일이다.


그 뒤로는 3개씩 잘라서 이해하면 된다. 

r,w,x 이렇게 표시가 되며 r은 read, w는 write, x는 excute, 즉 해당 파일의 읽기, 쓰기, 실행에 대한 명시이다.

3개씩 잘라서 이해해야는 이유는 각 단위별로 owner, group, other의 권한을 명시하기 때문이다.

즉 제일 아래 .profile의 경우 파일형태이고 owner는 읽고 쓸수 있다. group 멤버는 읽을수만 있고 other역시 읽을 수만 있다.


그 뒤에 root root의 경우 owner, group에 대한 명시이다.


* 권한부여 chmod

chmod o-r 파일명 : 해당 파일에 대해 other에 권한 중 r(읽기)를 뺀다(-)

chmod o+r 파일명 : 해당 파일에 대해 other에 권한 중 r(읽기)를 추가한다.


* x, 실행권한


hi-m.sh에 대해 실행권한(x)가 없기때문에 실행명령을 내려도 실행이 되지 않는다.

권한을 추가하니(chmod u+x hi-m.sh) 실행이 가능하다.





'Study)Hoguz > 8월)리눅스_생활코딩' 카테고리의 다른 글

리눅스, 생활코딩, 4회차  (0) 2018.08.06



import math;

def solution(n, a, b):
    min_ = min(a, b);
    max_ = max(a, b);
    root_temp = n // 2;
    temp = root_temp;
    while True:
        if min_ >  temp : # 두개 모두  temp 보다 큼
            root_temp //= 2;
            temp += root_temp;
            continue;
        elif max_ < temp:
            root_temp //= 2;
            temp -= root_temp;
            continue;
        elif min_ == temp:
            print("min")
            return int(math.log(root_temp, 2)) +1
        elif max_ == temp:
            return int(math.log(root_temp, 2))
        else:
            return int(math.log(root_temp, 2)) + 1;

위는 91점 코드인데 안되는 3가지 경우가 무엇인지 아직 생각아 안난다.
import math
def solution(n,a,b):
    a, b = min(a,b), max(a,b)
    for k in range(1, int(math.log2(n)+1)):
        if a%2 != 0 and a+1 == b:
            return k
        else:
            n, a, b = n/2, math.ceil(a/2), math.ceil(b/2) ###

이게 다른 방법, temp에 기인하지 않고 대진을 리셋하면서 올라간다 결과적으로 이 문제는 문제는 장황하지만 이진 탐색을 하는 문제이다
Nebo - Test - Page 5
  1. 개방폐쇄 원칙 (open closed)

0 확장에는 열려 있어야 하고
변경에는 닫혀 있어야 한다.
= 기능을 변경, 확장 가능하지만 기능을 사용하는 코드는 수정하지 x ) Memory byte 읽는 기능추가 = 기능은 추가되고 코드 변경 x
(코드는
interface 추가됨)
0 확장되는 부분이 추상화됐므로 가능

2.1 원칙이 깨질때 주요증상

  1. 다운캐스팅을 한다.
    instance of 사용
  2. 비슷한 if_else 블록이 존재

2.2 개방 폐쇄 원칙은 유연함 기능확장을 위해 기존코드 수정 = 확장에 닫히고 변경에 열림

  1. 리스코프 치환 원칙

0 상위타입이 아닌 하위 타입을 사용해도 기능이 정상적으로 수행

3.1 위반시 문제점
o 직사각형 정사각형 문제
o 서로 다른 리턴범위

3.2 원칙은 계약과 확장에 대한 0 명세된 계약대로
o instance of 사용은 원칙의 위반을 보여준 .

  1. 인터페이스 분리원칙
  2. 인터페이스는 인터페이스를 사용하는

클라이언트를 기준으로 분리해야 한다.

  • 용도에 맞게 인터페이스를 분리

4.3 인터페이스 분리 원칙은 클라이언트에 대한 .

  • 의존의 양면성
  1. 의존역전원칙
  2. 고수준모듈은 저수준모듈의 구현에

의존해서는 안된다. 저수준모듈이 고수준 모듈에서 정의상 추상타입에 의존해야 한다

  • 고수준 모듈: 바이트 데이터를 읽고 암호화하고
    결과 바이트 데이트를 쓴다

. 저수준모듈: 1. 바이트를 읽는다.

  1. 암호화 한다
  2. 데이터를 쓴다

  1. I 문제점
  2. 가격 계산 모듈이 쿠폰에 의존하게

되면 새로운 쿠폰추가시 가격 계산 모듈이 변경되는 상황 초래

  • 저수준이 변경되도 고수준에 영향을

끼치는게 원칙의 목적.

5.2 의존 역전원칙을 통한 변경의 유연함 확보

  • 저수준 모듈이 고수준에 의지.
  • 추상화

  • file Data Reader Bk Source 의존
  • Byte Source flow Control 입장에서

만들어
= 의존이 역전됨.

  • 소스코드 상에서 역전됨

5.4 의존 역전과 패키지

  • flow control Byte source

하나의 패케이로 묶을 있음

  1. 정리.
  2. 변화에 유연하게 대처하는
  3. 단일책임원칙, 인터페이스 분리원칙 = 객체의 크기 조절 (기능, 책임)
  4. 리스코프, 의존 역전원칙
    = 추상화, 다형성, 기능확장



def solution(lst):
    max_num = max(lst);
    print("max_num", max_num)
    empty_lst = [];
    for i in range(2, max_num+1):
        for j in range(len(lst)):
            if lst[j] % i == 0:
                if i not in empty_lst:
                    empty_lst.append(i)
                lst[j] = lst[j] // i;
    num = 1;
    for k in (empty_lst + lst):
        num *= k
    return num

의도는 위에 그림과 같았으나 실제론 몇개의 문제는 틀렸다. 왜냐하면 나누는 수가 소수여야하기 때문

이 문제를 푸는 방법중 하나는 모든 리스트 중 2개씩 뽑아서 그들의 약수를 구한 후 그 수와 다음수를 다시 반복 하는 식으로 하면 된다고 한다.

UWSGI

- Web Server Gateway Interface의 약자

(Gateway : 통신을 위해 프로토콜을 맞게 바꿔주는 변환기)

- Nginx에서 받은 요청을 UWSGI가 담당 및 실행함

- 어플리케이션 컨테이너라고도 한다

- WSGI는 python 표준으로 http를 응답함.

- 이를 확장한 미들웨어가 flask


자세한 정보


https://spoqa.github.io/2012/01/16/wsgi-and-flask.html

* 파일 찾기,locate와 find

locate : 파일들에 대한 정보가 담겨있는 db에서 찾는 명령어, 디렉토리에서 찾지 않는다.


find : 특정 디렉토리에서 찾는다

find [디렉토리] [찾는방법:이름인지, 확장자인지 등]

find . -type f -name tecmint.php : file 타입의, tecmint.php 인 것을 찾아서, 현재 위치에서


find . -type f -name "tech.php" -exec rm -f {} \ : file 타입에 tech.php 이름의 파일을 찾은후 실행(exec) 해라, 삭제(rm) 를, 그 파일({ }) 을


* whereis 와 PATH

whereis ls를 하면 해당 위치를 바로 찾을 수 있다.

어떻게?

$PATH에 등록되어있기 때문


echo $PATH를 선택하면 콤마(:) 로 구분되어진 각종 위치를 확인할 수 있다.


* process 기본

하드웨어 구조 : Storage(HDD/SDD) / Memory(Ram) / processor(CPU) 로 구분한다

Storage : 프로그램이 파일 형태로 저장된다

Memory : 프로그램 실행 시 적재된다(=process)

Processor : 램에 적재된 프로세스를 읽는다.


* process 모니터링

ps aux : 현재 실행중인 상황 보여줌

ps aux | grep apache : apache 프로세스 상황을 보여줌


top : 전체상황? cpu 램 등을 보여줌


둘의 차이점

top : 그때 그때의 cpu 사용률.
ps : 프로세스 전체 사용시간 동안의 cpu 사용률


https://kldp.org/node/153790

* 백그라운드의 이해와 실행
- 백그라운드 : 현재 내가 보고 있지 않은 프로그램들, 윈도우의 알트탭을 생각하면 될듯.
멀티태스킹을 위함
- 현재 내가 보고 있는것 : foreground / 뒤에 있는 것 : background
- ctrl + z를 통해 백그라운드로 넘길 수 있다.
- jobs 명령어를 통해 확인 가능
- ls -al > result.txt > error.log & :

* 데몬의 개념
- 데몬이란: 항상 실행되고 있는 것
- 냉장고, 모듈 : 데몬
- /etc/init.d/rc3.d 또는 /rc5.d 아래 있는 애들은 리눅스 실행시 같이 시작되는 데몬 프로그램들

* 정기적 실행 cron
- crontab -e 를 통해 정기적 실행할 명령을 생성할 수 있다
- m h dom mon dow command
- m : 초, 0-59
- h : 시간, 0-23
- dom : 날짜, 1-31
- dow : 요일, 0-6


NGINX 

아파치와 같은 역할(정적서버), 하지만 더 적은 자우너으로 더 빠르게 서비스 한다

비동기 이벤트 기반구조이다

event-driven 구조


Docker(추가)

도커를 사용하는 이유는 인프라 구축을 쉽고 간편하게 하기 위함.

빠르게 개발을 하기 위한 하나의 수단.


'초보 프로그래머' 카테고리의 다른 글

SQL, 내가 원하는 값을 다른 테이블에 집어넣기  (0) 2018.08.26
5일차, 용어정리  (0) 2018.08.12
2일차 용어정리  (0) 2018.08.08
1일차 용어 정리  (0) 2018.08.06
8월의 목표  (0) 2018.08.05

Docker

- 컨테이너 기반의 오픈소스 가상화 플래폼

- 컨테이너? : 컨테이너 안에는 다양한 상품(바나나, 옷, 신발 등 )이 존재

- 서버도 다양한 프로그램, 환경등으로 구성(구글은 20억개 컨테이너로..)

- 서버를 컨테이너처럼!!

- 컨테이너란 격리된 공간에서 프로세스가 동작하도록 하는 것

- 기존의 가상OS보다 더 가볍고 빠르다.

- 이를 위해 이미지를 생성해야함(컨테이너 실행에 필요한 파일, 설정값 등을 포함하고 있는 것)

'초보 프로그래머' 카테고리의 다른 글

5일차, 용어정리  (0) 2018.08.12
3일차 용어정리  (0) 2018.08.08
1일차 용어 정리  (0) 2018.08.06
8월의 목표  (0) 2018.08.05
오픈소스에 대한 고찰  (0) 2018.06.05

1. WSGI : 

파이썬이 웹서버와 통신하기 위한 명세서, WAS + OGI


2. RPC란? : 

마치 로컬에 있는 것처럼 원격 프로시저 / 프로그램을 호출하여 결과만을 돌려받는것.

네트워크 동작을 의식할 필요가 없다.

- 기존의 서버 클라이언트의 소켓을 통한 네트워킹은 변수가(장애가) 너무 많아서 나온 개념


3. LoRa 

wifi : 대용량 데이터, 고속 전송이나 거리제한

셀룰러 : 빠르고 장거리지만 전력소비가 심함

위 두개를 보완할 수 있는 , IOT에 적합한 프로토콜

저전력, 광역 통신망(15키로 이상, 백만 노드 수용)



4. 코딩스타일


PascalCase : 씨

camelCase : 자바

snake_case : 파이썬

UPPER_CASE: 상수



'초보 프로그래머' 카테고리의 다른 글

3일차 용어정리  (0) 2018.08.08
2일차 용어정리  (0) 2018.08.08
8월의 목표  (0) 2018.08.05
오픈소스에 대한 고찰  (0) 2018.06.05
DB 서버가 날라갔다(도망갔다...)  (0) 2018.05.25
123456···14

+ Recent posts