본문 바로가기

전체 글81

위코드 Pre Course - 웹 크롤링 드디어 유명한 웹 크롤링을 경험했다. 웹 크롤링을 할 때에 사용하는 BeautifulSoup, Selenium 라이브러리에 대해서 간단하게 알아보고 실습을 중심으로 진행해봤다. Assignment 1. 빌보드 차트 순위 100 사이트에서 순위, 곡, 아티스트 정보, 앨범 커버를 BeautifulSoup/Selenium을 사용해서 크롤링해보자. # Assignment 1 from bs4 import BeautifulSoup from selenium import webdriver # 브라우저를 열수 있는 드라이브모듈 from selenium.webdriver.common.keys import Keys # 키이벤트를 돕는 키 모듈 import requests import re import csv import .. 2020. 7. 28.
위코드 Pre Course - 파이썬의 Process 파이썬에서 병렬 처리를 위해서 사용하는 개념인 프로세스에 대해서 정리한다. 전까지 내가 알기로는 프로세스와 스레드는 작업 단위로서 사용하는 말로 알고 있는편이었다. 보통 스레드보다 프로세스 단위가 더 크고 상위의 개념이라고 알고 있었는데, 파이썬에서는 병렬 처리를 위해 사용할 수 있는 독립된 개념인 것 같다. Process란? 프로세스는 프로세스 별도의 메모리 영역을 가진다. IPC(Inter-Process Communication)을 지원해서 프로세스간 통신이 가능하다. 스레드보다는 프로세스를 사용해서 다중 코어 프로그래밍을 하는 것을 권장한다고 함 프로세스 예제 from multiprocessing import Process, Queue import time def worker(id, number, .. 2020. 7. 27.
Java - Java의 기본 클래스 (1) 20번째 강의는 자바의 기본 클래스에 대한 강의였는데, 길이가 길고 내용이 다양해서 두번으로 나눠서 정리해야겠다. 래퍼 클래스(Wrapper Class) 이름 그대로 무언가를 감싸는 역할을 하는 클래스이다. 래퍼 클래스는 기본 자료형 값을 인스턴스로 감싸서 인스턴스를 필요로하는 작업에 값을 사용 가능하도록 한다. 기본 자료형의 종류대로 각각의 래퍼 클래스가 존재한다. ex> Integer int1 = new Integer(1) 래퍼 클래스를 통해서 만들어지는 인스턴스는 "Immutabe"하다. immutable하다의 의미는 내부의 값을 변경할 수 없다라는 뜻 그렇다면 값의 수정 소요가 생긴다면? 값을 꺼내서 연산 또는 수정한 값을 이용해 새로운 인스턴스를 만들어야 한다! 래퍼 클래스의 박싱(Boxing).. 2020. 7. 25.
위코드 Pre Course - 파이썬의 Thread 파이썬에서 하나의 실행 단위라고 할 수 있는 Thread를 정리한다. Thread란? 스레드라고 읽는다. 병렬처리와 관련된 기본적인 개념과 동일한 의미를 가진다. 장점 적절하게 구현된 스레드 구조는 시스템의 자원을 더 효율적으로 사용해서 빠르고 효과적으로 로직을 처리 할 수 있다. 폴링 방식으로 작동하는 로직이 있을 경우에 스레드를 사용해서 비동기적으로 작업을 진행할 수 있다. 단점 무분별하게 구현된 스레드는 시스템의 자원적인 측면에 무리를 줄 수 있다. 스레드 간 자원공유에 대한 명확한 정책을 세워놓지 않으면 설계와 다른 방향으로 동작할 수 있다. Assignment 2개의 스레드에서 1억까지 1씩 더해가는 프로그램의 작동 결과 확인과 문제점 파악 # Assignment 1 def thread_1(nu.. 2020. 7. 25.
위코드 Pre Course - 파이썬의 Lambda 파이썬에서 인라인 함수를 정의할 때 사용하는 Lambda에 대해서 정리한다. Lambda란? 람다라고 읽음 인라인 함수를 정의할 때 사용하며, 익명 함수(Anonymous Functions) 또는 람다 표현식(Lambda Expression) + + + 람다와 일반 함수의 차이점은? 함수는 이름이 있고, 내부에 여러 라인으로 로직을 구성할 수 있으며, return을 통해서 반환 값을 지정해 줄 수 있다. 람다는 이름이 없고, 한줄로 로직을 구성해야 하며, return을 사용하지 않아도 결과를 반환한다. 람다의 로직에 다시 람다를 넣을 수 있다. == "nested될 수 있다." 장점 많은 함수를 사용하게 될 때 생기는 함수명 충돌과 같은 문제의 발생 가능성을 낮출 수 있다. 적절하게 표현된 .. 2020. 7. 25.
위코드 Pre Course - 파이썬의 Generator #send() 사용 예제 def generator_send(): received_value = 0 while True: received_value = yield print("received_value = ",end=""), print(received_value) yield received_value * 2 gen = generator_send() next(gen) print(gen.send(2)) next(gen) print(gen.send(3)) ################################################################3 # 실행 결과 received_value = 2 4 received_value = 3 6 파이썬에서 사용하는 함수 중 특수한 경우라고 볼 수 .. 2020. 7. 24.
위코드 Pre Course - 파이썬의 Iterator Iterator 개념은 파이썬 고유의 개념이 아닌 객체 지향 프로그래밍 언어에는 대부분 포함되는 개념으로 보인다. Iterator 반복자 라고 부르며, 객체 지향 언어에서 배열과 비슷한 자료 구조의 내부 요소를 순회하는 객체를 말함 파이썬에서 해당 객체를 사용할 수 있는 자료형은 String, Tuple, Set, List, Dictionary에서 사용 가능 dir(객체) 결과로 나오는 리스트에 __iter__이 포함된다면 반복자 객체를 사용할 수 있다 반복문을 사용한 방법과 반복자를 사용한 방법의 비교 # 각 방식을 비교 L = [1, 2, 3] for x in L: print(x ** 2, end=' ')#리스트 L의 값을 제곱해서 출력 I = iter(L) while True: try: X = ne.. 2020. 7. 24.
위코드 Pre Course - 파이썬의 Comprehension 이전에 봤었던 한줄로 여러 조건을 사용해서 객체를 만드는 것의 정체였다. Comprehension 컴프리헨션이라고 표현한다. + + + + + + + # Comprehension 예제 example_list = [ i for i in range(1,15)] print(example_list) ################################################ # 실행 결과 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] 세트, 리스트, 딕셔너리를 생성할 때 조건으로 사용할 수 있다. 어떤 자료를 사용하여 새로운 기준을 가진 데이터 모음을 만들 때 특히 유용하다. 절대로 만능이 아니다! 장단점을 확실하게 알고 사용하자. 장점 간단하게 표현된 컴프리헨.. 2020. 7. 24.
Java - JVM의 메모리 모델과 Object 클래스 19강까지 진행했다. 위코드 기간동안은 파이썬을 위주로 진행할 수 밖에 없어서 남은 강의들을 듣는데에 시간이 얼마나 걸릴지 모르겠다. 틈틈이 진행해야겠다. JVM(자바)의 메모리 모델 JVM의 메모리는 3가지의 영역으로 나누어 관리된다.공간을 나누는 목적은 메모리 제어의 효율성 확보가 목적 메소드 영역 메소드들의 바이트코드 Static 변수 메소드 영역에는 프로그램 실행에 필수적인 바이트 코드가 위치하는 영역이기 때문에 프로그램 실행 도중에 삭제될 일이 없기 때문에 static 변수도 이 곳에 위치한다. 이 영역은 프로그램이 완전히 종료될 때 없어진다고 볼 수 있다. 스택 영역 지역변수 매개변수 스택 영역에는 일반적인 변수들과 매개변수들이 위치하는 영역이다. 동시에 stack 자료구조의 특징인 LIFO구.. 2020. 7. 23.