목록Developer/Record (13)
새벽을 밝히는 붉은 달
파이썬 라이브러리를 활용한 데이터 분석 - 웨스 맥키니 pandas는 NumPy 기반에서 개발되어 NumPy를 사용하는 애플리케이션에서 쉽게 사용할 수 있다 Pandas에서는 Series 와 DataFramde이라는 두 가지 자료구조에 익숙해질 필요가 있다. 일련의 객체를 담을 수 있는 1차원 배열 같은 자료 구조 index라고 하는 배열의 데이터에 연관된 이름을 가지고 있다. Series 객체의 문자열 표현은 왼쪽에 색인을 보여주고 오른쪽에 해당 색인의 값을 보여준다. Boolean 배열을 사용해서 값을 걸러내거나, 산술 곱셈을 수행하거나, 수학 함수를 적용하는 등 NumPy 배열 연산을 수행해도 색인-값 연결은 유지된다 파이썬의 딕셔너리에 데이터를 저장해야 한다면, 파이썬 사전 객체로부터 Series..
파이썬 알고리즘 인터뷰 - 박상길 파이썬의 리스트는 c++의 vector나, 자바의 ArrayList처럼 동적 배열을 구현한 자료형이다. 파이썬 리스트를 사용하면 스택을 사용할지, 큐를 사용할지 고민하지 않아도 되며, 스택과 큐에서 사용 가능한 모든 연산을 함께 제공한다. 리스트에 주로 큐의 연산을 사용할 때는 시간 복잡도가 증가할 수 있음으로, 주의해야 한다. len(a) O(1) 전체 요소의 개수를 리턴 a[i] O(1) 인덱스 i의 요소를 가져온다 a[i:j] O(k) i부터 j까지 슬라이스의 길이만큼인 k개의 요소를 가져옴. 이 경우 객체 k개에 대한 조회가 필요하기 때문에 O(k)가 된다 elem in a O(n) elem 요소가 존재하는지 확인한다. 처음부터 순차 탐색하므로 n만큼 시간이 소요..
np.meshgrid 함수: 2개의 1차원 배열을 받아 가능한 한 모든 (x, y) 짝을 만들 수 있는 2차원 배열 2개를 반환한다. np.where 함수: x if 조건 else y 같은 삼항식의 벡터화된 버전 np.array 함수는 두 번째 와 세 번째 인자는 배열이 아니어도 괜찮다. 둘 중 하나 혹은 둘 다 스칼라값이라도 동작한다. np.array함수는 데이터 분석에서 다른 배열에 기반한 새로운 배열을 생성하는 식으로 자주 사용한다. sum 배열 전체 혹은 특정축에 대한 모든 원소의 합을 계산한다. 크기가 0인 배열에 대한 sum 결과는 0이다. mean 산술평균을 구한다. 크기가 0인 배열에 대한 mean 결과는 NaN이다. std, var 각각 표준편차(std)와 분산(var)을 구한다. 선택적..
ndarray는 같은 종류의 데이터를 담을 수 있는 포괄적인 다차원 배열이다 ndarray의 모든 원소는 같은 자료형이어야만 한다 모든 배열은 각 차원의 크기를 알려주는 shape라는 튜플을 가지고 있다. 모든 배열은 배열에 저장된 자료형을 알려주는 dtype이라는 객체를 가지고 있다. array 함수를 이용하면 순차적인 객체를 받아 넘겨받은 데이터가 들어있는 새로운 NumPy 배열을 생성한다 명시적으로 지정하지 않는 한 np.array는 생성될 때 적절한 자료형을 추정한 후, 이를 dtype 객체에 저장한다. zeros와 ones는 주어진 길이나 모양에 각각 0과 1이 들어있는 배열을 생성한다. empty 함수는 초기화되지 않은 배열을 생성한다. arange 함수는 range 함수의 배열 버전이다. 배..
이것이 우분투 리눅스다 SMTP(Simple Mail Transfer Protocol): 클라이언트가 메일을 보내거나 메일 서버끼리 메일을 주고 받을 때 사용하는 프로토콜 POP3(Post Office Protocol)/IMAP(Internet Mail Access Protocol): 메일 서버에 도착한 메일을 클라이언트로 가져올 때 사용하는 프로토콜 Sendmail 서버의 작동 원리 1. 메일 클라이언트 1은 SMTP 프로토콜을 이용해서 메일 서버의 sendmail 서비스(=데몬)에 메일을 보내달라고 요청한다 2. Sendmail 서비스는 메일을 '메일 큐'에 넣어둔다 3. Sendmail 서비스는 시간이 되면 MDA에 메일을 보내달라고 요청한다 4. MDA는 SMTP 프로토콜을 이용해서 메일 서버 2..
텔넷 서버 구축 과정 요약 1. 텔넷 서버 설치 2. 설정 파일 편집 3. 텔넷 전용 사용자 생성 4. 텔넷 서비스 가동 5. 방화벽 설정 (포트 열기) 6. 클라이언트에서 접속 Ubuntu 20.04의 버그로 /etc/security 파일이 누락되어 텔넷으로 root 사용자 접속이 가능함 root 사용자의 텔넷 접속을 허용하는 것은 좋은 생각이 아님 -> root의 권한이 필요하다면 일반 사용자로 접속 후 sudo 명령 사용 텔넷은 서버와 클라이언트 사이에서 데이터를 전송할 때 암호화하지 않아 해킹 위험에 노출됨 (예: Windows에서 리눅스로 접속할 때 사용하는 아이디와 비밀번호가 그대로 노출) 이를 보완하기 위해 OpenSSH 서버를 사용함 OpenSSH 서버 구축 과정 요약 1. ssh 서버 설..
for ~ in 문 for 변수 in 값1 값2 값3 .... do 반복할 문장 done while 문 while 조건 do 반복할 문장 done until 문: 조건식이 참일 때까지 계속 반복 사용자 정의 함수 함수이름 () { // 함수 정의 내용 입력... } 함수이름 // 함수 호출 함수의 파라미터 사용 함수이름 () { // 함수 정의 $1, $2 ..... 등 사용 } 함수이름 parameter1 parameter2 // 함수 호출 eval : 문자열을 명령문으로 인식하고, 실행함 export: 외부 변수로 선언 -> 선언한 변수를 다른 프로그램에서도 사용할 수 있게 함 set $(명령) : 리눅스 명령을 결과로 사용 shift: parameter를 왼쪽으로 시프트함 참고: 이것이 우분투 리눅..
if 문 if [ 조건 ] then 참인 경우 실행 else 거짓인 경우 실행 fi 문자열 비교 연산자 "문자열1" = "문자열2" // 두 문자열이 같으면 참 "문자열1" != "문자열2" // 두 문자열이 같지 않으면 참 -n "문자열" // 문자열이 NULL이 아니면 참 -z "문자열" // 문자열이 NULL이면 참 산술 비교 연산자 수식1 -eq 수식2 // 두 수식(또는 변수)이 같으면 참 수식1 -ne 수식2 // 두 수식(또는 변수)이 같지 않으면 참 수식1 -gt 수식2 // 수식1이 크면 참 수식1 -ge 수식2 // 수식1이 크거나 같으면 참 수식1 -lt 수식2 // 수식1이 작으면 참 수식1 -le 수식2 // 수식1이 작거나 같으면 참 !수식 // 수식이 거짓이면 참 파일조건 -d..