- 방문자수
- Best story
전체 방문자
오늘 방문자
어제 방문자
latest Story
-
⌜글또 x Udemy 강의 후기⌟ 【한글자막】 AWS Certified Solutions Architect Associate 시험합격!
Udemy로 부터 두 개의 강의를 제공 받았다. 이게 2번째 강의인데 사실 처음에는 AWS SAA-003 자격증을 따고자 대차게 신청했으나 결국 시험조차 치지 못했다..(한이음 ICT 멘토링 2개랑 같이 하기 너무 빡세요ㅠㅠ) 그래도 이번에 Infra와 DE 역할을 맡게 되면서(물론 Azure를 쓰긴하지만) 전체적으로 클라우드의 기능을 알아볼 수 있는 좋은 기회라 생각해서 속성으로 들었다. 다들 이 아저씨를 아마 알 거다 사실 이 강의는 내가 후기 좋게 쓸 필요가 없는 명실상부 최고의 강의 중 하나다. 정말 쉽게 잘 알려주시고 강의 퀄리티도 굉장히 높다. 특히 기초적인 부분을 단계단계로 정말 잘 알려주셔서 공부를 하면서 머리에 스토리라인을 그리기 좋다. 실습 안하고 그냥 듣기만 해도 머리 속에서 아키텍..
-
⌜글또 x Udemy 강의 후기⌟ 【한글자막】 DevOps 학습: 파이프라인 및 Docker를 이용한 Jenkins 와의 CI/CD
이번에 글또 9기에 참여 하먄서 Udemy로부터 강의 쿠폰을 받았다. 강의를 고를 수 있었는데 나는 당시 학교에서 배웠던 Jenkins 수업을 좀 더 고도화하고 싶어 파이프라인 및 Docker를 이용한 Jenkins 와의 CI/CD강의를 골랐다. 커리큘럼내가 이 강의를 고른 이유가 강의 시간이다. Jenkins의 다양한 사용법을 4시간 40분이면 배울 수 있다. 물론 강의를 보며 실습하는것까지 합치면 더 많겠지만 대부분 강의의 러닝 타임이 짧다는 것은 Udemy 최고의 장점이라고 생각한다. 패스트 캠퍼스에서 근무 경력이 있는 사람으로써 강의가 길면 솔직히 부담감으로 다가오는 경향이 있고 그때그때 필요한 부분을 찾아서 듣는 경우도 있다.(그런 경우 설명이 이어지지 않아 충분한 이해를 하지 못하는 경우도 ..
-
뭐? Mongo DB가 가용성을 보장하지 않는다고?
제목을 보면 이게 무슨 소리인가 싶을 수 있다. 나도 처음 듣고 띠요옹? 했었다. 내가 알고 있는 MongoDB는 BASE(BA: Basically Avaliable) 즉, 가용성과 성능을 중시한 분산 시스템의 특성을 가지고 있고 또한 이 점이 기존에 ACID 특성을 가진 RDBMS와의 차이점이라고 알고 있었다. 더군다나 Mongo DB가 탄생하게 된 배경이 아래와 같은 고민 끝에 탄생한 것을 알았기에 더욱 의아했었다. 대규모 데이터를 처리해야 하는데 RDBMS는 성장 한계가 있구나 일관성과 무결성을 버리고 더 빠른 읽기 성능과 수평확장이 가능한 DB가 필요해! 그럼 어쩌다 제목과 같이 눈이 크게 떠지는 질문을 스스로에서 던졌을까 이번에 대규모 시스템 설계 기초 도서를 공부하면서 CAP이론이라는 것을 처..
-
다양한 Web Crawling 및 Web Scraping 방법
Crawling과 Scraping! 데이터 분야에 발을 담근 사람이라면 안 들어볼 수가 없는 영역이다. 사실 이 두 가지는 '원하는 데이터를 추출한다.'라는 공통 목적을 가진다. 때문에 기술적으로 같이 사용되기도 하고 일반적으로 혼용되지만 엄밀히 말하면 차이가 존재한다. Crawling: 웹상을 돌아다니며 방대한 양의 데이터를 수집한다. 웹 페이지의 링크를 타고 계속해서 탐색하여 html 페이지 및 링크 정보 등을 수집한다. - ex) 파이썬에 대해 알아보고 싶어 -> 파이썬 공식문서 전체 크롤링 Scraping: 정확한 정보를 요구할 때 사용되기에 필요한 데이터만 수집한다. 흩어져있는 데이터를 다양한 패키지를 통해 자동으로 추출하여 전달할 수 있다. - ex) daily 환율가를 수집하고 싶어 -> 증..
-
[airflow] - 오퍼레이터 with Xcom
아래 글은 옵시디언으로 작성되었습니다. Xcom이란? Cross Communication의 약자로 Airflow DAG 안 ==Task 간 데이터 공유를 위해 사용되는 기술==이다.(Task1의 수행 중 내용이나 결과를 Task2에서 사용 또는 입력으로 주고 싶은 경우) ==주로 작은 규모의 데이터 공유를 위해 사용==되며 Xcom의 내용은 메타 DB의 Xcom 테이블에 값이 저장된다. 만약, 1GB 이상의 대용량 데이터 공유를 위해서는 외부 솔루션을 사용해야 한다.(AWS S3, HDEF 등) Python 오퍼레이터에서 Xcom사용하기 크게 두 가지 방법으로 Xcom 사용이 가능하다. 1) **kwargs에 존재하는 ti(task_instance) 객체 활용 Xcom에 데이터 push @task(tas..
-
[Airflow] - Macro 변수
이번에는 macro 변수에 대해서 알아보자 jinja 템플릿 내에서 날짜 연산을 가능하게끔 해주는 기능이다. macro가 있다면 만들지 못하는 날짜가 없다고 한다. 스케쥴러를 잘 다루지 못하면 airflow를 잘 다룬다고 할 수 없는 만큼 날짜 연산은 중요하므로 이번 기회에 잘 포스팅 해보고자 한다. airflow에서 macro란? airflow dags를 구성할때 jinja 템플릿 내에서 날짜 연산을 가능하게끔 해주는 기능이다. macro 변수의 필요성 Dag 스케줄이 매월 말 일에 도는 스케줄인데 Between 값을 전월 마지막일부터 어제 날짜까지 주고 싶을 경우가 있다고 하자 이때 어제 날짜는 스케쥴러가 끝나는 오늘 날부터 하루 전 날짜이므로 아래처럼 식을 구성해야 하는데 그것을 macro가 해준다..
-
기능 개발
https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 흠 이번에는 문제를 조금은 빠르게 풀었다. 리스트 컴프리핸션은 분석 때 많이 쓰던 거라 쉬웠는데 문제를 다 풀고 테스트 케이스 11번이 계속 통과가 안 돼서 보니 D를 만들어 주는 과정에서 math.ceil()을 안쓰고 그냥 나눠준 것이 문제였다... 뭔가 계산 방식이 다른 것 같다. ceil을 안 쓰고 푼 다른 사람 풀이를 보니 너무 복잡해서 도무지 이해가 가지 않았다. 또한 이 문제는 내가 푼..
-
자료구조 #1 Array
원래는 ipynb 파일을 html로 바꾸고 html의 소스를 붙여넣어 포스팅을 하려 했으나 생각보다 눈에 잘 들어오지도 않고 왜인지 모르겠지만 코드 출력 결과가 엄청 깨져서 나욌다. 때문에 git Gist를 활용하여 nbviewer을 만들어 링크를 공유하는 방식으로 포스팅을 하려고 한다. 자료구조는 가장 기본적인 것으로 한번 공부할 때 딱 정리하고 나중에는 블라인드 공부법으로 다시 공부하면서 면접 준비처럼 할 생각이다. https://nbviewer.org/gist/StatisticsFox/45145e49b9f3e403412d33262a67c444 Jupyter Notebook Viewer nbviewer.org
-
자료구조 #2 Queue
큐(Queue) 가장 기본 적인 자료구조 중 하나¶ 1. 큐 구조¶ 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조 음식점에서 재료 관리할 때 선입선출하는 것과 동일 함 FIFO(first-in, first-out) 또는 LILO(Last-in, Last-out) 방식으로 스택과 꺼내는 순서가 반대 2. 알아둘 용어¶ Enqueue: 큐에 데이터를 넣는 기능 Dequeue: 큐에서 데이터를 꺼내는 기능 Visualgo 사이트에서 시연해보며 이해하기: https://visualgo.net/en/list 3. queue라이브러리 활용하여 큐 자료구조 사용하기¶ 프로그램을 작성할 때 프로그램에 따라 적합한 자료구조를 사용한다. Queue(): 가장 일반적인 큐 자료 LifoQueue(): 나중에 입력된..
-
[Airflow] - Airflow의 날짜개념
airflow는 데이터 처리를 목적으로 만들어진 툴이기 때문에 우리도 ETL 처리를 할 때 데이터 관점에서 생각해야 한다. 1. 데이터 추출 예시 위와 같은 예시 테이블이 있다고 생각해보자 이러한 테이블을 조회하기 위한 Daily ETL 조회쿼리는 다음과 같다.(2023/02/25 0시 실행) SELECT NAME, ADDRESS FROM TBL_REG WHERE REG_DATE BETWEEN TIMESTAMP(‘2023-02-24 00:00:00’) AND TIMESTAMP(‘2023-02-24 23:59:59’) 위 쿼리를 보면 실제 쿼리가 시작되는 시점은 2023/02/25 0시이다. 데이터 관점에서 보면 다음과 같다. 데이터 관점의 시작일: 2023-02-24 데이터 관점의 종료일: 2023-02..
-
[Airflow] - JINJA templates
1. jinja 템플릿이란? 문서(파일)에서 특정 양식으로 작성된 값을 런타임 시 실제 값을 치환해 주는 처리 엔진이다. 파이썬 언어에서 사용되는 템플릿 엔진이다. 예시 사용법은 아래와 같다. sql에서도 사용 가능하다. 예를 들어 아래 구문을 template로 만들어두고 날짜마다 바꾸고 싶을 때도 사용가능하다. SELECT * FROM tables WHERE base_dt = {{ }}; 2. Airflow에서 사용법 오퍼레이터 파라미터 입력시 중괄호 {} 2개를 이용하면 Airflow에서 기본적으로 제공하는 변수들을 치환된 값으로 입력할 수 있다. 다만, airflow에서는 모든 파라미터에 Template 변수 적용이 가능하지 않다. Templates 적용이 가능한 파라미터는 오퍼레이터마다 다른데 어..
-
1월 계획
데이터 엔지니어가 되기로 결심했기 때문에 일단 단기적으로 목표를 잡았다. 의무적으로 해야 할 일도 있고 내가 목표로 잡은 것도 있고 할 건 많은데 정리가 안된 느낌이라 글로 어느 정도 계획이나 일정을 정리해보고자 한다. 1월 목표 1. 빅데이터 동아리 BOAZ 데이터 엔지니어링 지원하기 (~12.29) 2. K-Digital Training: 데이터 엔지니어링 데브코스 지원하기(~ 1.31) 코딩테스트 연습하기(프로그래머스 Lv.2) 3. airflow master class 김현진님 강의 완강하기 4. 정보처리기사 필기 지원 및 스터디 5. 유데미 무료 쿠폰 강의 수강 후 후기 업로드 하기 (24.04월까지 완료) 1. BOAZ 국내 최고 빅데이터 동아리라고 한다. 내가 여기에 들어가기로 마음먹은 이유..
Database
-
mysql - 서브쿼리
서브쿼리란 메인 쿼리의 다양한 문법 절 한에 다시 쿼리가 들어가는 것을 말한다. 서브 쿼리 특징 하나의 쿼리에 포함된 또 하나의 쿼리 서브쿼리는 반드시 괄호 안에 있어야 한다. SELECT, FROM, WHERE, HAVING, ORDER BY 절에 사용 가능하다. INSERT, UPDATE, DELETE 문에도 사용 가능하다. 서브쿼리에는 ;(세미콜론)을 붙이지 않아도 된다. 예제 데이터 - pokemon -- 조인 연습용 테이블 생성 -- info Table CREATE TABLE pokemon.SPokemon ( number INT NOT NULL, name VARCHAR(1048) NOT NULL, type VARCHAR(1024) NOT NULL, PRIMARY KEY(number) ); -- ..
-
mysql - JOIN(INNER, LEFT, RIGHT, OUTER, CROSS, SELF)
mysql의 꽃이라고 할 수 있는 JOIN에 대해 알아보자 사실 개념 자체는 어렵지 않고 쉬운편이나 생소에서 익숙해지는데 시간이 좀 걸리는 문법이다. 코테에서는 다양한 조건과 함께 나오고 JOIN이 많아질수록(많으면 좋지 않은 쿼리긴 하지만) 그만큼 햇갈리기 때문에 기본기를 확실히 해둘 필요가 있다. 조인의 종류는 기본적으로 다음과 같다. 예제테이블 -- 조인 연습용 테이블 생성 -- info Table CREATE TABLE pokemon.SPokemon ( number INT NOT NULL, name VARCHAR(1048) NOT NULL, type VARCHAR(1024) NOT NULL, PRIMARY KEY(number) ); -- ability Table DROP TABLE ability;..
-
mysql - CREATE FUNCTION
파이썬에서 사용자 정의 함수를 만드는 def처럼 mysql에도 CREATE FUNCTION을 이용하여 함수를 만들 수 있다. 기본적인 쿼리 문법은 다음과 같다. 1. 퀴리문법 CREATE FUNCTION [함수 이름] ( [입력값 이름] [데이터 타입], ...) RETURNS [결과값 데이터 타입] BEGIN DECLARE [임시값 이름] [데이터 타입]; SET [임시값 이름] = [입력값 이름]; 쿼리; RETURN 결과값 END 이렇게만 보면 사실 잘 이해가 안되기 때문에 예시를 들어 보도록 하자 아래 예시는 포켓몬의 공격력과 방어력의 합을 가져오는 예시다. 포켓몬 DB는 아래 사이트에 잘 정리 해두었다. -> pokemon DB CREATE FUNCTION getAbility(attack INT..
-
mysql - IF와 CASE
예제 데이터 CREATE DATABASE pokemon; SHOW DATABASES; USE pokemon; DROP TABLE mypokemon; CREATE TABLE pokemon.mypokemon ( number INT NOT NULL, name VARCHAR(1048) NOT NULL, height FLOAT NOT NULL, weight FLOAT NOT NULL, friendship FLOAT, type VARCHAR(1024) NOT NULL, attack INT, defense INT, PRIMARY KEY(number) ); -- INSERT statements for your existing data INSERT INTO mypokemon (number, name, height, we..
-
mysql - 쿼리 실행 순서 알아보기
실행순서 표 키워드 작성순서 실행순서 SELECT 1 5 FROM 2 1 WHERE 3 2 GROUP BY 4 3 HAVING 5 4 ORDER BY 6 6 예시 쿼리 SELECT type, COUNT(1), MAX(weight) FROM pokemon.mypokemon WHERE name LIKE ‘%a%’ GROUP BY type HAVING MAX(height) > 1 ORDER BY 3; 예제 테이블은 다음 글에 있다. pokemon db 쿼리 실행순서 SELECT type, COUNT(1), MAX(weight) 5 FROM pokemon.mypokemon 1 WHERE name LIKE ‘%a%’ 2 GROUP BY type 3 HAVING MAX(height) > 1 4 ORDER BY 3; 6
-
mysql - GROUP BY, HAVING 과 다양한 집계함수
GROUP BY 주로 그룹 별 데이터를 집계할때 사용하며, 엑셀의 피벗 시능과 유사하다. GROUP BY가 쓰인 쿼리의 SELECT 절에는 GROUP BY 대상 컬럼과 그룹 함수만 사용 가능하다. 칼럼번호(SELECT 절의 칼럼 이름 순서)로도 그룹화가 가능하다. HAVING GROUP BY 절의 조건식으로 조건식이 참이 되는 그룹만을 가져온다. HAVING 절의 조건식에는 그룹함수를 활용한다. 예제 테이블 CREATE DATABASE pokemon; SHOW DATABASES; USE pokemon; DROP TABLE mypokemon; CREATE TABLE pokemon.mypokemon ( number INT NOT NULL, name VARCHAR(1048) NOT NULL, height FL..
-
mysql - 자주 사용하는 대표 날짜형 데이터 함수
함수 활용 설명 NOW NOW() 현재 날짜와 시간 반환 CURRENT_DATE CURRENT_DATE() 현재 날짜 반환 CURRENT_TIME CURRENT_TIME() 현재 시간 반환 YEAR YEAR(날짜) 날짜의 연도 반환 MONTH MONTH(날짜) 날짜의 월 반환 MONTHNAME MONTHNAME(날짜) 날짜의 월을 영어로 반환 DAYNAME DAYNAME(날짜) 날짜의 요일을 영어로 반환 DAYOFMONTH DAYOFMONTH(날짜) 날짜의 일을 반환 DAYOFWEEK DAYOFWEEK(날짜) 날짜의 요일을 숫자로 반환 WEEK WEEK(날짜) 날짜가 해당 연도에 몇번째 주인지 반환 HOUR HOUR(시간) 시간의 시 반환 MINUTE MINUTE(시간) 시간의 분 반환 SECOND SE..
-
mysql - 자주 사용하는 대표 숫자 관련 함수 정리
함수 요약 테이블 함수 활용 설명 ABS ABS(숫자) 숫자의 절댓값 반환 CEILING CEILING(숫자) 숫자를 정수로 올림해서 반환 FLOOR FLOOR(숫자) 숫자를 정수로 내림해서 반환 ROUND ROUND(숫자, 자릿수) 숫자를 소수점 자릿수까지 반올림해서 반환 TRUNCATE TRUNCATE(숫자, 자릿수) 숫자를 소수점 자릿수까지 버림해서 반환 POWER POWER(숫자A, 숫자B) 숫자A의 숫자B 제곱 반환 MOD MOD(숫자A, 숫자B) 숫자A를 숫자B로 나눈 나머지 반환 실습 테이블 CREATE DATABASE pokemon; SHOW DATABASES; USE pokemon; DROP TABLE mypokemon; CREATE TABLE pokemon.mypokemon ( numb..
-
mysql - 자주 사용하는 문자열 데이터 함수 정리
함수 요약 테이블 함수 활용 예시 설명 LOCATE LOCATE("A", "ABC") “ABC”에서 “A”는 몇 번째에 위치해 있는지 검색해 위치 반환 SUBSTRING SUBSTRING(“ABC”, 2) “ABC”에서 2번째 문자부터 반환 RIGHT RIGHT(“ABC”, 1) “ABC”에서 오른쪽에서 1번째 문자까지 반환 LEFT LEFT(“ABC”, 1) “ABC”에서 왼쪽에서 1번째 문자까지 반환 UPPER UPPER(“abc”) “abc”를 대문자로 바꿔 반환 LOWER LOWER(“ABC”) “ABC”를 소문자로 바꿔 반환 LENGTH LENGTH(“ABC”) “ABC”의 글자 수를 반환 CONCAT CONCAT(“ABC”, “DEF”) “ABC” 문자열과 “CDF” 문자열을 합쳐 반환 REP..
-
mysql - RANK 문법
예제 데이터 쿼리문 DROP DATABASE IF EXISTS pokemon; CREATE DATABASE pokemon; USE pokemon; CREATE TABLE mypokemon ( number INT, name VARCHAR(20), type VARCHAR(10), attack INT, defense INT, capture_date DATE ); INSERT INTO mypokemon (number, name, type, attack, defense, capture_date) VALUES (10, 'caterpie', 'bug', 30, 35, '2019-10-14'), (25, 'pikachu', 'electric', 55, 40, '2018-11-04'), (26, 'raichu', 'el..
Linux
-
vi 명령어(3) - vi로 여러파일 동시에 보기
여러파일 한번에 열고, 파일을 이동하기 vi file1 file2 file3 명령을 사용하면 동시에 여러 소스코드 파일을 열 수 있음 :n 다음 버퍼 파일로 이동 :N 이전 버퍼 파일로 이동 :ls 현재 열려있는 버퍼의 리스트를 보여줌 :b숫자 숫자에 해당하는 버퍼로 이동 :bd 숫자에 해당하는 버퍼를 삭제 :bw 현재 버퍼를 삭제 버퍼란? 어떤 데이터가 들어있는 공간 vi안에서 새로운 파일 열기 :e file 해당 파일을 현재 vi 창에서 새로운 버퍼로 만든다. :cd filename (안보이지만) 해당 디렉토리로 이동한다. :e로 다음파일 찾을때 적용 화면 분할에서 보기 :split 현재 열린 파일과 같은 파일을 수평으로 분할해서 하나 더 연다. :split $file 새로운 파일을 현재 위치에 열고..
-
vi 명령어(2) - vi에서 편집하기
입력 관련 명령어 i 입력모드 전환 l 현재 줄 처음 글자에 삽입 a 현재 커서 다음 위치에 추가 A 현재 줄 마지막 들자에 추가 o 아랫 줄에 추가 O 윗 줄에 추가 s 현재 커서 글자 지우고 입력모드로 전환 r 현재커서 글자 지우고 한 글자 입력받아 바꾼뒤 명령모드로 돌아감 삭제 관련 명령어 x 현재 커서 위치 문자 삭제 X 현재 커서 위치 이전 문자 삭제 dw 현재 커서 위치 단어 삭제, (숫자 dw)형태로 쓰면 숫자만큼의 줄이 삭제됨 db 현재 커서 위치 이전 단어 삭제 dd 현재 커서 위치 줄 삭제, 숫자 dd 로 쓰면 숫자만큼의 줄 삭제 d^ 현재 줄에서 현재 커서 위치 이전 문자열을 마지막 문자까지 삭제 d0 현재 줄에서 현재 커서 위치 이전 문자열을 끝까지(0번째 컬럼까지) 삭제 d$ 현재..
-
vi 명령어(1) - vi에서 이동하기
명령(이동) 모드 커서가 어디에 있던지, ESC를 누르면 명령모드가 됨, 편집할 수 없음. vi를 쓰면 수시로 ESC를 누르는 습관이 필요 라인 숫자 같이 보기 :set number 입력 :set nonumber 로 number 모드 해제 커서 이동 명령키 h 한문자 왼쪽으로 커서 이동 j 한문자 아래쪽으로 커서 이동 k 한문자 위쪽으로 커서 이동 l 한문자 오른쪽으로 커서 이동 w 다음 단어 첫 문자로 커서 이동 b 이전 단어 첫 문자로 커서 이동 행 이동 명령키 gg 첫 행으로 이동 command + g 마지막 행으로 이동 ^ 현재 행의 첫 문자로 이동 $ 현재 행의 마지막 문자로 이동 :5 타이핑한 숫자에 해당하는 숫자로 이동 숫자 타이핑하고 shift + G 타이핑한 숫자에 해당하는 숫자로 이동 ..
-
I/O 관련 명령어
echo 터미널 콘솔에 텍스트를 출력한다. echo $(command)로 다른 명령어의 결과를 확인할 수 있다. 파이프와 함께 여러용도로 사용된다. ex) echo와 redirection 연결해서 사용 clear 터미널의 기존 내용을 지운다. history 지나간 터미널 명령어 기록을 보여준다. 로그아웃 하거나 세션을 종료하면 다시는 볼 수 없다. history에서 확인한 명령어의 숫자를 !number 형태로 다시 쓰면 불러올 수 있다. history | grep sleep redirection 출력결과를 파일로 저장 > 기존의 파일 내용울 지우고 저장 >> 기존의 파일 내용 뒤에 저장 ~/both.log # 표준 에러는 안보고 출력만 보고싶은 경우 find . -name "my*" 1> stdout2...
-
네트워크 활용을 위한 명령어
ss socket status의 약어 네트워트, 소켓의 사용을 쉽게 확인할 수 있다. 주로 열려있는 포트를 확인할 때 사용 내용이 긴 경우 pipe()해서 less 또는 grep 등과 함께 사용 어떤 프로세스가 포트를 사용하고 있는지, 어떤 프로세스가 종료 됐는지 안됐는지도 파악 가능 ss 연결이 맺어진 (STATUS=ESTAB) 소켓 확인 ss -a 열려있는 모든 소켓 ss -l listening 중인 소켓만 표시 ss -t TCP socket 확인, 필요에 따라 -l, -a 등과 함께 사용 ss-u UDP socket 확인 연결을 맺지 않는 UDP 특성상 항산 -a, -l등과 함께 사용 ss -s 현재 소켓 상태의 통계 ss -p process name과 pid를 함께 표시 ss -e extended..
-
시스템 활용을 위한 명령어
uname 이름, 버전, 기타 시스템 정보를 확인할 수 있습니다. ps 현재 실행중인 프로세스를 볼 수 있다. 어떤 프로세스에 문제가 있는지, 내가 실행한 어플리케이션 프로세스의 상태응 보는데 사용할 수 있다. ps -ef: process들의 상태를 확인한다. (가장 많이 사용되는 ps 명령어) 형식: UID PID PPID C STIME TTY TIME CMD UID: 실행한 USER의 아이디 PID: 프로세스 아이디 PPID: 부모 프로세스 아이디(부모 프로세스가 실행되어야 프로세스가 시작 C: 짧은 기간 동안의 CPU 사용률 STIME: 시작 시간 TTY: 프로세스가 실행되어 있는 세션(터미널) *TTY가 ?인 것은 없다는 뜻(디폴트로 실행 되는 것들) TIME: 총 CPU 사용 시간 CMD: 프로..
-
검색에 사용하는 명령어
find - 파일을 검색할 떄 활용 find. -name $filename # .은 현재 디렉토리를 의미 # filename을 잘 모르겠으면 '*'앞 뒤로 붙여서 탐색 가능 find . -name "*[0-9]*" # 현재 디렉토리에서 파일 앞 뒤로는 어떤문자가 오든 상관없고 사이에 숫자가 들어간 파일을 찾아줘 # 정규표현식 사용한 것 which - $PATH에 등록된 경로 중에서, 주어진 이름의 실행 파일의 위치를 찾는다. - 사용하고 있는 명령어가 설치된 위치를 찾는데 유용 - $PATH에 있는 파일들은 실행권한을 자기고 있기 때문에 우리가 명령어만 알아도 사용가능 한 것 grep - 대량의 파일에서 주어진 텍스트 또는 정구 표현식 패턴에 일치하는 텍스트를 찾는 명령어 - 파이프('|')와 함께 다양..
-
파일 관리를 위한 명령어 -(2)
less - 터미널 세션에 프린트하지 않고 파일 내용을 볼 수 있다. - vi처럼 파일 전체를 여는 것이 아니라 보고있는 부분만 열어서 파일이 큰 경우, vi에 비해 빠르게 열어 내용을 확인할 수 있다. - 양방향 탐색이 가능하므로 more보다 편리하다. - less로 파일을 연 후 'nj'로 n줄씩 jump하여 파일 탐색가능 ln - 심볼릭 링크를 만든다 - 심볼릭 링크란 절대경로 또는 상대경로의 형태로 된 다른 파일이나 디렉토리에 대한 참조를 포함하고 있는 특별한 종류의 파일 그냥 바로가기 느낌이라고 생각하면 된다. ln -s $ORIGIN_PATH $TARGET_PATH - 심볼릭 링크는 파일 경로를 기준으로 생성된다. 파일의 고유번호가 달라도 설정한 경로 내 같은 이름을 가진 파일이라면 그 파일로..
-
파일 관리를 위한 명령어 - (1)
touch - 빈파일을 생성 cat - 파일 내용을 출력 - 다른 명령어와 함께 시용하면 유용 head - 파일 또는 파이프된 데이터의 시작점을 볼 수 있다. - {-n}으로 얼마나 볼지 설정 가능 tail - 파일의 마지막 행부터 지정한 행까지 내용을 출력한다. tail -f $filename # 실시간으로 append되는 내용을 확인할 수 있다. 로그를 실시간으로 볼 때 자주 활용한다. tail 응용 # example.log 파일을 만들어 초단위 마다 무한대로 아래 문자열이 찍히게 설정 로그 확인 가능! while sleep 1; do echo "hello world at $(date +%s)" >> example.log; done & tail -f $example.log # 해당 shell로 확인 ..
-
파일 시스템 이용을 위한 명령어
명령어 설명 보는 법 man -> 원하는 명령어의 설명을 볼 수 있음. man find : find 명령어의 설명을 본다. (운영체제의 기본 명령어가 아닌경우 find --help / find -h 등을 통해 확인 가능 ) 리눅스에서 경로 표시법 / -> root. 시스템의 가장 시작 ~ -> 로그인한 유저의 home정보 .. -> 상위 디렉토리 . -> 현재 디렉토리 - 이전 위치 파일시스템을 이용을 위한 명령어 pwd -> 현재 터미널이 위치한 디렉토리 경로를 볼 수 있음 ls -> 디렉토리 내의 모든 파일을 보여준다. ls -al -> 숨김파일과 파일의 모든 정보를 표시(ll(엘엘)이라는 alias로 편하게 사용) ls -ll -> 파일 또는 디렉토리의 incode number(파일 또는 디렉토리 ..
Statistics
Python
-
자료구조 #1 Array
원래는 ipynb 파일을 html로 바꾸고 html의 소스를 붙여넣어 포스팅을 하려 했으나 생각보다 눈에 잘 들어오지도 않고 왜인지 모르겠지만 코드 출력 결과가 엄청 깨져서 나욌다. 때문에 git Gist를 활용하여 nbviewer을 만들어 링크를 공유하는 방식으로 포스팅을 하려고 한다. 자료구조는 가장 기본적인 것으로 한번 공부할 때 딱 정리하고 나중에는 블라인드 공부법으로 다시 공부하면서 면접 준비처럼 할 생각이다. https://nbviewer.org/gist/StatisticsFox/45145e49b9f3e403412d33262a67c444 Jupyter Notebook Viewer nbviewer.org
-
자료구조 #2 Queue
큐(Queue) 가장 기본 적인 자료구조 중 하나¶ 1. 큐 구조¶ 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조 음식점에서 재료 관리할 때 선입선출하는 것과 동일 함 FIFO(first-in, first-out) 또는 LILO(Last-in, Last-out) 방식으로 스택과 꺼내는 순서가 반대 2. 알아둘 용어¶ Enqueue: 큐에 데이터를 넣는 기능 Dequeue: 큐에서 데이터를 꺼내는 기능 Visualgo 사이트에서 시연해보며 이해하기: https://visualgo.net/en/list 3. queue라이브러리 활용하여 큐 자료구조 사용하기¶ 프로그램을 작성할 때 프로그램에 따라 적합한 자료구조를 사용한다. Queue(): 가장 일반적인 큐 자료 LifoQueue(): 나중에 입력된..
-
Numpy 기본
학교 수업시간에 numpy를 배웠다. 사실 이미 공모전이나 프로젝트 등 다양한 곳에서 판다스나 넘파이를 적용해 왔는데 그때그때 필요한 것을 공부해서 적용했었을 뿐 제대로 누군가에게 배우는 것은 처음이다. 따라서 배운 내용을 간단하게나마 요약해 보고자 한다. 1. 넘파이 배열 객체 다루기 넘파이 배열의 특징 배열의 모든 구성요소에 값이 존재해야 함 동적 타이핑 지원 x 하나의 데이터 타입만 사용 각 값의 메모리 크기가 동일 # 패키기 불러오기 import numpy as np import sys test_array = np.array([1, 4, 5,8], dtype = float) test_array array([1., 4., 5., 8.]) 2. 인덱싱과 슬라이싱 x = np.array([[1, 2, ..
-
넘파이 ndarray의 axis축(axis≠행열)
axis에 대해서 조금 더 자세히 알아보자 axis를 행과 열이라고 알고 있는 사람들이 많다. 사실 완전히 틀린말은 아니지만 엄밀히 말하면 다르다. axis는 축이 지 행과 열이 아니다. 2차원 ndarray에서는 행과 열이 축이 되겠지만 다차원에서는 행과 열만이 축이 되지 않기 때문에 일정수준 머신러닝과 딥러닝을 공부했다면 차이를 알고 있어야 한다. 아래 사진을 보자 가장 왼쪽에 있는 3×3 형태의 2차원 ndarray는 두개의 축을 가지고 있다. axis=0
-
numpy 개요(ndarray와 배열의 타입)
numpy에 대해 알아보자 numpy의 기본 단위는 ndarray 객체이다. ndarray란!? ndarray: n차원(Dimension) 배열(Array)객체 라는 뜻으로 numpy의 기본 단위다. 차원은 n차원으로 이루어져있는데 n차원은 n-1차원을 기본 단위로 갖는 특성을 가지고 있다. 다음은 ndarray의 기본적인 특징이다. Ndarray내의 데이터 값은 숫자, 문자, 불 값 등이 모두 가능하다. 숫자형의 경우 int형과 unisigned int형(8, 16, 32bit) 그리고 float형 도 가능하고 이보다 더 큰 숫자 값이나 정밀도를 위해 complex 타입도 제공한다. Ndarray내의 데이터 값은 그 연산의 특성상 같은 데이터 타입만 가능하다. 즉, 한개의 ndarray 객체에 int와..
Coding Test
-
기능 개발
https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 흠 이번에는 문제를 조금은 빠르게 풀었다. 리스트 컴프리핸션은 분석 때 많이 쓰던 거라 쉬웠는데 문제를 다 풀고 테스트 케이스 11번이 계속 통과가 안 돼서 보니 D를 만들어 주는 과정에서 math.ceil()을 안쓰고 그냥 나눠준 것이 문제였다... 뭔가 계산 방식이 다른 것 같다. ceil을 안 쓰고 푼 다른 사람 풀이를 보니 너무 복잡해서 도무지 이해가 가지 않았다. 또한 이 문제는 내가 푼..
-
즐겨찾기가 가장 많은 식당 정보 출력하기
https://school.programmers.co.kr/learn/courses/30/lessons/131123 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 SELECT A.FOOD_TYPE, A.REST_ID, A.REST_NAME, B.FAVORITES FROM REST_INFO AS A INNER JOIN (SELECT FOOD_TYPE, MAX(FAVORITES) AS FAVORITES FROM REST_INFO GROUP BY FOOD_TYPE) as B ON A.FOOD_TYPE = B.FOOD_TYPE AND A.FAVORITES ..
-
헤비 유저가 소유한 장소
https://school.programmers.co.kr/learn/courses/30/lessons/77487 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 SELECT a.ID, a.NAME, a.HOST_ID FROM PLACES AS a INNER JOIN (SELECT HOST_ID FROM PLACES GROUP BY HOST_ID HAVING COUNT(*) >= 2) AS b ON a.HOST_ID = b.HOST_ID ORDER BY 1; 풀이 여타 문제와 다를바 없는 문제 였다. 조인 문에 서브쿼리를 넣어주었고 Having 조건 ..
-
서울에 위치한 식당 목록 출력하기
https://school.programmers.co.kr/learn/courses/30/lessons/131118 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 SELECT RI.REST_ID, REST_NAME, FOOD_TYPE, FAVORITES, ADDRESS, ROUND(RS.SCORE, 2) AS SCORE FROM REST_INFO AS RI RIGHT JOIN ( SELECT REST_ID, AVG(REVIEW_SCORE) AS SCORE FROM REST_REVIEW GROUP BY REST_ID ) AS RS ON RI.REST_..
-
과일로 만든 아이스크림 고르기
https://school.programmers.co.kr/learn/courses/30/lessons/133025 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr정답SELECT FH.FLAVOR FROM FIRST_HALF AS FH INNER JOIN (SELECT FLAVOR FROM ICECREAM_INFO WHERE INGREDIENT_TYPE = 'fruit_based') AS II ON FH.FLAVOR = II.FLAVOR WHERE TOTAL_ORDER >= 3000 ORDER BY 1; 풀이 아이스크림 주문 테이블과 성분 테이블이 나누어져 있..
-
오프라인/온라인 판매 데이터 통합하기
https://school.programmers.co.kr/learn/courses/30/lessons/131537 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 UNION을 활용하는 문제가 나왔다. ONLINE_SALE과 OFFLINE_SALE의 칼럼 개수가 달라서 어쩌지? 했는데 OFFLINE_SALE에는 없는 USER_ID를 그냥 NULL AS USER_ID로 빈 변수를 생성해 주고 UNION 해주니 만사 해결이었다! LEVEL4 치고는 간단한 문제였던 것 같다. 정답 -- 코드를 입력하세요 SELECT DATE_FORMAT(SALES_DATE..
-
조건에 부합하는 중고거래 댓글 조회하기
https://school.programmers.co.kr/learn/courses/30/lessons/164673 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제는 위 링크와 같다. 이번 문제는 보자마자 조인을 떠올려서 쉽게 풀 수 있던 문제였다. 두 테이블이 겹치는 열이 많아 각 변수 별로 어떤 테이블에서 가져와 주어야 하는지 약간 햇갈렸는데 단순히 내가 문제를 잘 읽지 않은 탓이다.. 반성!! 아무튼 내가 푼 정답은 다음과 같다. 정답 -- 코드를 입력하세요 SELECT TITLE, UGR.BOARD_ID, REPLY_ID, UGR.WRITER_..
-
재구매가 일어난 상품과 회원 리스트 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/131536 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr SQL 초보자 입장에서 약간 난이도가 있었던 문제에 대한 회고다 문제는 위 사이트에 나와 있으니 생략 하겠다. 정답 SELECT DISTINCT USER_ID, PRODUCT_ID FROM ONLINE_SALE WHERE (USER_ID, PRODUCT_ID) IN ( SELECT USER_ID, PRODUCT_ID FROM ONLINE_SALE GROUP BY USER_ID, PRODUCT_I..