분류 전체보기

Tech/Web Scrapping

Web Scrapping 이란?

정의 웹 스크래핑은 웹 페이지에서 우리가 원하는 부분의 데이터를 수집해오는 것을 뜻한다. 한국에서는 crawling 이라는 용어로 혼용해서 사용하는 경우가 많다. crawling은 원래 자동화하여 주기적으로 웹 상에서 페이지들을 돌아다니며 분류/ 색인하고 업데이트된 부분을 찾는 등의 일을 하는 것을 뜻한다. 따라서 web scrapping이라고 검색해야 페이지 추출에 대한 결과가 나올 것이다. https://dzone.com/articles/web-scraping-vs-web-crawling-whats-the-difference Web Scraping vs Web Crawling: What’s the Difference? - DZone In this article, read an explanation o..

Language/Javascript

jQuery 사용하기

HTML 요소들을 조작하는 편리한 Javascript 라이브러리로 사용전에 import 해주어야 한다. jQuery를 사용하기 위해서는 미리 작성된 자바스크립트 코드를 import 해와야 하는데, bootstrap css 파일을 가져올 때와 마찬가지로 내 컴퓨터에 해당 파일을 저장해서 사용할 수도 있지만 온라인 상의 파일을 참조할 수도 있다. 이를 head 태그 안에 넣어주면 된다. 또한 CSS와 마찬가지로 특정 요소를 가리켜야 조작할 수 있는데, CSS에서는 주로 class를 사용했다면 jQuery에서는 고유한 하나의 요소를 가리키는 id를 주로 사용한다. input 박스의 값 가져오기, 값 변경하기 let url = $('#article-url').val() url 'https://kimjingyu...

Language/Dart

Dart 문법 정리

변수 자료형 var String String? final String 변수명 명명 규칙 카멜케이스 사용 영문 / _ / $ / 숫자만 사용 가능하고, 숫자로 시작 불가능 자료형 자료형 String int, double bool List Map dynamic 모든 자료형을 담을 수 있음 dynamic 치환법 dymaicValue as int 연산자 산술 연산자 중에 특이한 ~/ 연산자가 있다. %: 나머지 ~/: 몫 //: 몫과 나머지 함수 파라미터 void say(String from, String message) { print("$from : $message"); // 영희 : 철수야 안녕? } Named Parameter 이름지정 매개변수는 함수 호출시 값을 전달하지 않아도 되므로 7번째 줄에 입력 ..

Tech/Web Scrapping

Selenium 활용법

네이버 접속 후 로그인 버튼 클릭 + 검색 창에 검색 단어 입력 후 키보드 엔터 누르기 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys browser = webdriver.Chrome() browser.get("https://www.naver.com") elem = browser.find_element(By.CLASS_NAME, "MyView-module__link_login___HpHMW") elem.click() broswer.back() browser.forward() elem = browser.find_element(By.ID,..

Tech/CI CD

Jenkins 파일 작성법

pipeline { // 스테이지 별로 다른 거 // 어떤 노예를 쓸 것인가 agent any triggers { pollSCM('*/3 * * * *') } environment { AWS_ACCESS_KEY_ID = credentials('awsAccessKeyId') AWS_SECRET_ACCESS_KEY = credentials('awsSecretAccessKey') AWS_DEFAULT_REGION = 'ap-northeast-2' HOME = '.' // Avoid npm root owned } stages { // 레포지토리를 다운로드 받음 stage('Prepare') { agent any steps { echo 'Pulling Repository' git url: 'https://gith..

컴퓨터 사이언스/Algorithm

다이나믹 프로그래밍

문제를 쪼개서 작은 문제의 답을 구하고, 그걸로 더 큰 문제의 답을 구하는 것을 반복하는 알고리즘 분할정복과 비슷한 느낌이다. DP 구현 2가지 방법 Top-down 구현 방법: 재귀 저장 방식: Memoization Bottom-up 구현 방법: 반복문 저장 방식: Tabulation Memoization 한 번 구한 답들은 저장해두자는 저장 방식이다. 즉, 부분 문제들의 답을 한 번 구했으면, 또 구하지 않도록 (중복연산 방지) cache에 저장해두고, 다음부터 가져다 쓰는 방식 필요한 부분 문제들만 구한다. (Lazy-Evaluation) Tabulation 부분 문제들의 답을 미리 다 구해두면 편하다. 테이블을 채워간다는 의미이다. 필요 없는 부분 문제들까지 전부 구한다. (Eager-Evalua..

컴퓨터 사이언스/Algorithm

이진 탐색

탐색 전에 반드시 정렬되어 있어야하고, 범위를 절반씩 줄여가면서 답을 찾아야한다. 시간복잡도 따라서 정렬 O(NlogN) + 이진탐색 O(logN) -> 결과적으로 O(NlogN). 즉, 경우에 따라서 선형탐색 O(N) 이 더 좋은 선택이 될 수도 있다. 하지만 여러번 탐색을 해야하는 경우라면, 그 탐색의 횟수가 N번이라면, 선형 탐색의 경우에는 N * O(N) = O(N^2) 이 된다. 그러나 이진 탐색을 하면, 정렬 O(NlogN) + N * O(logN) = O(NlogN)이 된다. 결론 결과적으로 탐색을 한번만 하는 경우에는 굳이 정렬을 해가면서 이진탐색을 사용할 이유가 없다. 하지만 탐색을 여러번 해야하는 경우에는 정렬 한번 해두고, 이진탐색을 해주는게 더 빠를 수 있다. C++ lower/up..

컴퓨터 사이언스/Algorithm

백트래킹

기본적으로 모든 경우를 탐색하며, DFS/BFS와 방식은 유사하다. 하지만 백트래킹은 가지치기를 통해 탐색 경우의 수를 줄인다는 차이가 있다. 정리하면, 백트래킹은 최악의 경우에는 모든 경우를 다 살펴보게 될 수도 있지만, 가지치기를 통해서 가능한 덜 보겠다는 전략이다. 가지치기의 원리는 가망성이 없으면 가지 않겠다는 원리를 바탕으로 한다. 어려운 문제일수록 극한의 가지치기를 요구할 수 있음

컴퓨터 사이언스/Algorithm

DFS와 BFS에서 인접행렬 vs 인접리스트

시간복잡도 인접행렬: O(V^2) 인접리스트: O(V + E) == O(max(V,E)) 정점의 개수와 간선의 개수 중 더 큰 값을 기준으로 인접리스트는 간선의 개수가 적을수록 메모리 공간을 덜 잡아먹는 장점이 있었음 만약 간선의 개수가 V에 비해 월등히 적으면 O(V)로 표현이 될 수 있음 즉, 간선 개수가 적으면 인접리스트가 훨씬 유리해진다.

컴퓨터 사이언스/자료구조

트리

순환성이 없는 무방향 그래프이다. 특징 특정하지 않는한 어떤 노드든지 root가 될 수 있다. 가장 바깥쪽 노드는 leaf node이다. node A에서 node B로 가는 경로는 반드시 존재하며 유일하다. (단 1개) 노드개수 = 간선개수 + 1 자료구조에서의 트리 부모 -> 자식 관계가 있는 방향 그래프이며, root는 하나다.

kimjingyu
'분류 전체보기' 카테고리의 글 목록 (15 Page)