바쁘다 바빠
'1일 1문제, 프로그래머스' 카테고리의 다른 글
프로그래머스, 레벨3, 입국심사 (4) | 2018.10.06 |
---|---|
2017 팁스타운) 짝지어 제거하기, 60점.. (0) | 2018.08.26 |
2017 팁스타운, 예상대진표 (0) | 2018.08.15 |
레벨2, N개의 최소 공배수 (0) | 2018.08.12 |
프로그래머스, 레벨3, 야근지수(못품) (0) | 2018.08.02 |
바쁘다 바빠
프로그래머스, 레벨3, 입국심사 (4) | 2018.10.06 |
---|---|
2017 팁스타운) 짝지어 제거하기, 60점.. (0) | 2018.08.26 |
2017 팁스타운, 예상대진표 (0) | 2018.08.15 |
레벨2, N개의 최소 공배수 (0) | 2018.08.12 |
프로그래머스, 레벨3, 야근지수(못품) (0) | 2018.08.02 |
* 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) 실행이 가능하다.
리눅스, 생활코딩, 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;
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) ###
2017 팁스타운) 짝지어 제거하기, 60점.. (0) | 2018.08.26 |
---|---|
이제는 1주에 1문제 내지 2문제로... ㅠ_ㅠ (0) | 2018.08.21 |
레벨2, N개의 최소 공배수 (0) | 2018.08.12 |
프로그래머스, 레벨3, 야근지수(못품) (0) | 2018.08.02 |
프로그래머스, 레벨3, 가장 긴 펠린드롬 (0) | 2018.07.31 |
0 확장에는 열려 있어야 하고
변경에는 닫혀 있어야 한다.
= 기능을 변경, 확장 가능하지만 그 기능을 사용하는 코드는 수정하지 x 예) Memory byte 를 읽는 기능추가 = 기능은 추가되고 코드 변경 x
(코드는 interface 에 추가됨)
0 확장되는 부분이 추상화됐므로 가능
2.1 위 원칙이 깨질때 주요증상
2.2 개방 폐쇄 원칙은 유연함 기능확장을 위해 기존코드 수정 = 확장에 닫히고 변경에 열림
0 상위타입이 아닌 하위 타입을 사용해도 기능이 정상적으로 수행
3.1 위반시 문제점
o 직사각형 정사각형 문제
o 서로 다른 리턴범위
3.2 이 원칙은 계약과 확장에 대한 것 0 명세된 계약대로
o instance of 의 사용은 이 원칙의 위반을 보여준 다.
클라이언트를 기준으로 분리해야 한다.
용도에 맞게 인터페이스를 분리
4.3 인터페이스 분리 원칙은 클라이언트에 대한 것.
의존해서는 안된다. 저수준모듈이 고수준 모듈에서 정의상 추상타입에 의존해야 한다
. 저수준모듈: 1. 바이트를 읽는다.
되면 새로운 쿠폰추가시 가격 계산 모듈이 변경되는 상황 초래
안 끼치는게 이 원칙의 목적.
5.2 의존 역전원칙을 통한 변경의 유연함 확보
만들어 짐
= 의존이 역전됨.
5.4 의존 역전과 패키지
하나의 패케이로 묶을 수 있음
최범균, 객체지향과 디자인 패턴(2회) (0) | 2018.08.02 |
---|---|
최범균, 객체지향과 디자인 패턴 (0) | 2018.07.28 |
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
이제는 1주에 1문제 내지 2문제로... ㅠ_ㅠ (0) | 2018.08.21 |
---|---|
2017 팁스타운, 예상대진표 (0) | 2018.08.15 |
프로그래머스, 레벨3, 야근지수(못품) (0) | 2018.08.02 |
프로그래머스, 레벨3, 가장 긴 펠린드롬 (0) | 2018.07.31 |
프로그래머스, 레벨2) 행렬의 곱셈 (0) | 2018.07.26 |
UWSGI
- Web Server Gateway Interface의 약자
(Gateway : 통신을 위해 프로토콜을 맞게 바꿔주는 변환기)
- Nginx에서 받은 요청을 UWSGI가 담당 및 실행함
- 어플리케이션 컨테이너라고도 한다
- WSGI는 python 표준으로 http를 응답함.
- 이를 확장한 미들웨어가 flask
자세한 정보
python, pandas , apply 함수 사용시 주의사항 (0) | 2018.08.27 |
---|---|
SQL, 내가 원하는 값을 다른 테이블에 집어넣기 (0) | 2018.08.26 |
3일차 용어정리 (0) | 2018.08.08 |
2일차 용어정리 (0) | 2018.08.08 |
1일차 용어 정리 (0) | 2018.08.06 |
* 파일 찾기,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 사용률
NGINX
아파치와 같은 역할(정적서버), 하지만 더 적은 자우너으로 더 빠르게 서비스 한다
비동기 이벤트 기반구조이다
event-driven 구조
Docker(추가)
도커를 사용하는 이유는 인프라 구축을 쉽고 간편하게 하기 위함.
빠르게 개발을 하기 위한 하나의 수단.
Docker
- 컨테이너 기반의 오픈소스 가상화 플래폼
- 컨테이너? : 컨테이너 안에는 다양한 상품(바나나, 옷, 신발 등 )이 존재
- 서버도 다양한 프로그램, 환경등으로 구성(구글은 20억개 컨테이너로..)
- 서버를 컨테이너처럼!!
- 컨테이너란 격리된 공간에서 프로세스가 동작하도록 하는 것
- 기존의 가상OS보다 더 가볍고 빠르다.
- 이를 위해 이미지를 생성해야함(컨테이너 실행에 필요한 파일, 설정값 등을 포함하고 있는 것)
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 |