분류 전체보기
[시스템 프로그래밍] 정수의 산술연산과 실수의 표현
[시스템 프로그래밍] 정수의 산술연산과 실수의 표현
2022.09.29프로그래밍 언어에는 사칙연산 말고도 여러 가지 연산이 있다. 비트 연산 두 가지 이진수를 대상으로 연산을 수행한다. & : and | : or ~ : not ^ : xor 논리 연산 && / || / ! 하던 대로 하면 된다. 시프트 연산 생각해야 할 부분이 좀 있다. x > y x비트벡터 x를 왼쪽 혹은 오른쪽으로 y만큼 밀어내는 연산이다. 왼쪽으로 1만큼 밀어내면 2를 곱한 효과를, 오른쪽으로 1만큼 밀어내면 2를 나눈 효과를 얻는다. (소멸되는 비트를 고려하지 않을 때) 논리 시프트 (Logic) : 공백을 0으로 채운다. 산술 시프트 (Arithmetic) : 공백을 가장 중요한 비트로 채운다. (첫 번째 비트) 산술 시프트는 수 체계와 연관돼있다. 순환 시프트 (circular) : 직렬 출력을..
[JavaScript] 정리 (1)
[JavaScript] 정리 (1)
2022.09.28body태그 마무리 전에 자바스크립트 script태그가 위치해야 한다. HTML이 다 로드되고 난 후 자바스크립트를 로드하는게 합리적이다. write 메서드는 새로 페이지를 만들어서 보여줌 print 메서드는 말그대로 프린트 let은 중복선언 불가능, var은 중복선언 가능 let이 좀 더 엄격함 정의 안하면 undefined 타입 let var 안써도 됨 그런데 let 쓰는게 좋음 콤마로 이어서 작성 가능 var로 재선언해도 원래 값을 잃어버리지는 않음 문자열 + 숫자 시 문자열로 통일하는데.. 순서가 중요. 5 + 5 + '5' = 105 이고, '5' + 5 + 5 = 555임 정수 실수 모두 Number타입으로 통일 자바스크립트 객체는 프로퍼티 형식으로 지원함. 기본 타입도 객체 타입으로 쉽게 변..
[C++] OOP (2) 함수 오버로딩 / 함수 호출
[C++] OOP (2) 함수 오버로딩 / 함수 호출
2022.09.28C++의 메모리 모델은 C와 동일하다. 간단하게 관련 문법을 살펴보자. RHS : Right Hand Side expression LHS : Left Hand Side expression &x : RHS에서 x의 주소를 반환한다. (x값이 저장된 메모리 주소를 반환한다) &x : LHS에서는 Reference Type을 의미한다. *x : RHS에서 x가 가리키는 주소의 값을 반환한다. (x값으로 메모리 주소를 가진다. x값이 가리키는 주소에 할당된 값을 반환한다) *x : LHS에서 RHS의 값을 x가 가리키는 주소에 값으로 할당한다. (x값으로 메모리 주소를 가진다. x값이 가리키는 주소에 RHS 값을 할당한다) Const 기본 개념은 이쪽을 참고하자. (https://13months.tistory...
네이버 지도 크롤링
네이버 지도 크롤링
2022.09.25네이버 지도 웹 사이트는 웹 사이트 내부에서 웹 사이트를 보여주는 iframe 태그를 사용하기 기존 작업에서 한 단계 더 처리해줘야 한다. 뭔가 대단한 작업을 해야 되는 건 아니고, iframe 태그 내부로 접근 해 주는 부분만 처리하면 된다. 어차피 이 작업도 파이썬 모듈이 다 해 준다. 적절히 사용하는 방법만 기억하자. from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.keys import Keys from selenium.webdriver.commo..
크롤링에서 POST 요청이 필요한 경우
크롤링에서 POST 요청이 필요한 경우
2022.09.24GET 요청으로 원하는 정보를 모두 가져올 수 있으면 좋겠지만, form 태그를 통해 정보를 입력하고 POST요청을 수행해야 정보를 받아올 수 있는 경우도 있다. 이런 경우 payload에서 form 정보를 가져오고 가져온 정보로 POST요청을 날려 데이터를 받아온 후 처리하자. 예시로, 토요코인호텔 사이트가 있다. from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by..
네이버 금융 크롤링
네이버 금융 크롤링
2022.09.24네이버 금융 사이트는 주식들과 주식들의 정보를 제공한다. 주식 관련 정보를 가져와 적절히 가공해 투자에 사용해보자. 어떤 옵션을 표시할 지 설정해주자. 옵션을 선택하면 주식 명과 선택한 옵션에 대한 정보를 보여준다. 옵션을 선택하고 적용하기 버튼을 누르면 URL이 변경되지 않고 화면만 바뀐다. 이런 경우 개발자 도구에서 네트워크 옵션을 사용하자. 네트워크 옵션이 켜진 상태에서 적용하기 버튼을 누르면 사이트가 서버와 어떤 정보를 주고받았는지 확인할 수 있다. 여기서 제일 위에 위치한 옵션을 살펴보자. 클라이언트가 서버에 요청한 URL을 얻을 수 있다. 요청한 URL은 우리가 선택한 옵션이 반영된 정보를 보여주니, 이 URL을 사용해 크롤링을 진행하면 된다. (페이징 처리도 이쪽 URL을 사용해서 처리하고,..
[CSS] CSS 정리 (5)
[CSS] CSS 정리 (5)
2022.09.21기본 문법은 위와 같이 사용한다. Selector로는 태그 이름 혹은 CSS 선택자를 사용한다. 모든 요소의 이름은 숫자로 시작하면 안 된다. id : #으로 선택. 문서 안에 하나만 사용한다. class : .으로 선택. 문서 안에 여러 개를 사용해도 된다. 그룹화에 사용됨. 띄어쓰기하면 클래스 2개 지정. p.large는 p요소의 large를 의미 * : 모든 요소를 선택함 opacity/transparency : 투명도 background-repeat : 배경 이미지를 반복해서 배경 채움 background-attachment : fixed 설정 시 스크롤해도 이미지 고정 background-position : 배경 이미지 위치 지정 border-radius : 둥글게 margin : auto 설정..
이미지 크롤링
이미지 크롤링
2022.09.21네이버와 구글에서 검색어를 입력하고 검색해서 나온 이미지들을 컴퓨터에 저장해보자. 1. 네이버 from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By from webdriver_manager.chrome import ChromeDriverManager import time import pyautogui import os import urllib.requ..
쿠팡 상품 크롤링
쿠팡 상품 크롤링
2022.09.20쿠팡에 검색어를 입력하고 쿠팡 랭킹순으로 상품을 엑셀에 저장해보자. import requests from bs4 import BeautifulSoup import pyautogui import openpyxl keyword = pyautogui.prompt("검색어를 입력하세요.") num = int(pyautogui.prompt("몇 페이지까지 가져올까요?")) wb = openpyxl.Workbook('coupang/coupang.result.xlsx') ws = wb.create_sheet(keyword) ws.append(['순위', '브랜드명', '상품명', '가격', '상세페이지 링크']) rank = 1 for page in range(1, num + 1): # 검색어 print(page, ..
네이버 뉴스 크롤링
네이버 뉴스 크롤링
2022.09.18네이버 검색창에 컴퓨터를 검색하고 카테고리를 뉴스로 설정했다. 크롤링 할 때는 첫 번째 기사처럼 네이버뉴스 버튼이 있는 기사를 가져오고 싶다. (웹 페이지의 구조를 동일하게 맞추기 위해) html을 분석해보니 네이버뉴스 버튼이 있는 기사들은 info 태그를 두 개씩 가지고 있다. 이 부분에 집중해 코드를 작성하자. import requests from bs4 import BeautifulSoup import time response = requests.get("https://search.naver.com/search.naver?where=news&sm=tab_jum&query=%EC%BB%B4%ED%93%A8%ED%84%B0") html = response.text soup = BeautifulSoup(..
[Spring Database] 트랜잭션 전파
[Spring Database] 트랜잭션 전파
2022.09.16하나의 메서드 안에서 트랜잭션이 둘 이상 사용되거나, 트랜잭션 내부에서 또 트랜잭션을 거는 경우는 어떻게 처리될까? 하나하나 살펴보자. @Test void double_commit() { log.info("트랜잭션1 시작"); TransactionStatus tx1 = txManager.getTransaction(new DefaultTransactionAttribute()); log.info("트랜잭션1 커밋"); txManager.commit(tx1); log.info("트랜잭션2 시작"); TransactionStatus tx2 = txManager.getTransaction(new DefaultTransactionAttribute()); log.info("트랜잭션2 커밋"); txManager.co..
[시스템 프로그래밍] 컴퓨터 시스템과 정보의 표현
[시스템 프로그래밍] 컴퓨터 시스템과 정보의 표현
2022.09.15컴퓨터 시스템은 소프트웨어와 하드웨어로 구성된다. (시스템 = 소프트웨어 + 하드웨어) 가장 밑바닥에 하드웨어가 위치하고, 운영체제가 하드웨어를 관리해준다. 컴퓨터 시스템이 밑에 있고, 시스템 위에 C, Java 등으로 작성한 응용 프로그램이 올라간다. BUS / I.O / main memory / cache memory / CPU 등이 하드웨어에 속한다. BUS 버스는 하드웨어 요소들을 연결하고 데이터를 전송하는 통로 정도로 생각하면 된다. (워드 단위로 전송한다) CPU 연산장치(ALU), 제어장치 및 레지스터로 구성되어있고 컴퓨터의 두뇌 역할을 한다. CPU는 클락 펄스마다 명령 주기 (Instruction Cycle) 를 반복한다. 1. 인출 (fetch) : Program Counter에 의거해..