개발 공부 21

Python Google image web crawling (구글 이미지 웹크롤링)

근 두달만에 글을 올린다. 최근에 딥러닝을 공부를 하느라 개인적인 시간이 부족 했었던 핑계를 대면서... 이번글에서는 구글에서 이미지를 다운받는 법을 알아볼 것이다. 저자는 웹크롤링을 그냥 한번 해보고 싶어서 beautifulsoup4이라는 라이브러리를 써서 해보는 유튜브 강의를 보며 해보려 했으나 이상하게도 이미지 20개만 다운로드가 받아져서 손을 보아야했다. 그러므로, 이 글의 핵심은 2021-02-14 기준으로 구글의 html 태그 형식을 보고 만든 것이므로 추후에는 동작이 안될 수도 있으나, 이해를 하고 넘어가면 독자들도 충분히 만들수 있으리라 본다. 결과 이렇게 특정 검색어를 입력하면 검색어의 결과 이미지를 모두 받는 것이다. (car에 대한 이미지 갯수는 총 826개였다.) 준비물 import..

개발 공부 2021.02.14

Python - List Comprehension

본 글은 Python 공식문서를 참고 하였습니다. List Comprehension 을 이용하면 매우 간결한 코드로 원하는 리스트를 만들수 있습니다. 아래의 코드는 for loop을 사용해 각 수의 제곱을 리스트에 저장합니다. square = [] for i in range(10): square.append(i**2) 결과: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] List Comprehension을 이용하면 다음과 같이 간결한 코드를 쓸수 있습니다. square = [i**2 for i in range(10)] 맨 먼저 저장 하고 싶은 값을 써주고 그에 이어서 for loop을 써줍니다. 이번에는 이중 for loop이 얼마나 간결하게 쓰여지는지 비교 해보겠습니다. 아래의 코드..

개발 공부 2020.12.16

Binary Search Tree - javascript

이번 글에서는 Binary Search Tree (이진 탐색 트리) 구조에 대하여 알아보고자 한다. 이 글에서는 숫자를 담을 것이고 Node라는 객체 안에다가 저장해서 Node 자체를 넣으려고 한다. 일단 기본 원리에 대하여 살펴보자. 아래의 사진은 각 원이 Node이고 각 Node안에 숫자가 담겨 있다. 각 Node 는 key, left, right 이라는 속성을 가지고 있다. "이진" 트리 구조 이여서 각 노드는 최대 다른 두개의 노드를 포인트 할 수 있다. 주의 깊게 보면 이 구조는 정렬에 최적화된 패턴을 가지고 있다. 각 노드가 포인트 하는 다른 노드들을 보면 왼쪽노드가 그 위의 노드보다 항상 작고 반대로 오른쪽 노드는 항상 크다는 것을 알 수 있다. 코드 class Node { construct..

개발 공부 2020.12.06

Express를 이용해 정적파일 불러오기

이번 글에선 저자가 Express를 이용해 Javascript가 포함된 HTML파일을 불러오는데에 있어서 겪은 경험을 바탕으로 쓰여진 글이다. 먼저 저자가 하고자 했던 내용을 간단히 설명하겠다. 문제 Express를 이용하여 main.js에서 index.html를 불러오고 index.html에는 태그를 이용하여 lib/tetris.js 파일을 source로 이용하고자 했다. 이 상태로 node를 실행할 경우 tetris.js를 찾지 못한다는 에러가 뜬다. 해결 Express에서는 정적파일들이 이용될 경우 경로를 미리 제시해주어야 한다. static이라는 함수를 이용해서 경로를 설정해주는 두가지 방법이있다. 1. app.use(express.static('public')) public이라는 경로안에 있는 ..

개발 공부 2020.10.18

프로그래머스 - 다리를 지나는 트럭

이번 글에서는 프로그래머스에 게시된 다리를 지나는 트럭 문제를 풀어 보겠다. programmers.co.kr/learn/courses/30/lessons/42583 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이�� programmers.co.kr 이 문제는 정해진 무게의 트럭들이 순서대로 다리를 통과하는데 걸리는 시간을 구하는 문제이다. 다만 다리가 버틸 수 있는 무게가 정해져 있으며 꼭 정해진 순서대로 다리를 지나가야한다. 이 문제는 간단해 보였지만 실제로 문제를 풀다보니 생각보다 이것저것 신경써야될게 많아서 거의 세시간..

개발 공부 2020.09.29

Java에서 Array 와 ArrayList 의 변환법

이번 글에서는 Array를 ArrayList로 변환 하는 방법과 ArrayList를 Array로 변환 하는 방법에 대해 알아보고자 한다. ArrayList -> Array List 인터페이스를 보면 toArray 라는 메소드가 있는데, 기본 생성자는 object 배열을 반환한다. 하지만 우리가 원하는 것은 정해진 타입의 배열이여서 toArray의 인자로 원하는 타입의 배열을 넣어준다. 마지막 줄에는 deepToString 메소드를 써서 배열을 문자열로 보여준다. 여기서 toString 메소드를 써도 되지만 toString은 1차원 배열만 지원한다는 것을 알자. Array -> ArrayList 위에서 만들어놨던 Array를 그대로 써서 ArrayList로 변환 하는 과정이다. 여기서 중요한 것은 왜 21..

개발 공부 2020.09.29

HashMap을 이용해 문자열에 있는 단어 수 세기

이번 글에서는 주어진 문자열에 있는 각 단어의 수를 세는 방법에 대해서 알아보고자한다. 예를 들어서 "I am a boy. You are a boy. She is a girl" 이라는 문자열이 주어진다. 이때, 특수문자(점)은 무시하고 띄어쓰기마다 단어라고 가정하자. 결과적으로 나오는 단어와 횟수를 세면 아래와 같이 나온다. I = 1 am = 1 a = 3 boy = 2 you = 1 she = 1 girl = 1 is = 1 are = 1 본글에서는 HashMap을 이용하여 이 문제를 접근 하고자 한다. HashMap은 특정 Key 가 Value를 담고 있으므로 이 문제에서는 단어를 Key로 횟수를 Value로 해주면 된다. 문제를 접근 하는 단계를 나눠보자. 1. 주어진 문자열의 특수문자를 없애준다..

개발 공부 2020.09.23

AOP (관점 지향 프로그래밍)의 쉬운예제1

이번 글에서는 AOP(Aspect Oriented Programming)에 대해 알아보고 자바를 통해 이해를 돕기 위한 쉬운예제를 해보려고 한다. OOP (객체지향)은 객체를 만들어 서로 소통하게 하는 프로그래밍 기법이다. AOP는 그보다 더 넓은 시각으로 여러 사용자의 관점에서 필요한 기능들을 모듈화 시켜낸 프로그래밍 기법이다. 예를 들어, 웹사이트를 구축하면 일반 사용자들이 주로 사용하게 되지만, 그 외에도 관리자와 개발자도 사용하게 되며 일반 사용자들이 쓰지 않는 로그, 권한, 트랜스액션처리 등의 특별한 기능이 요구된다. 이번 글에서는 자바를 이용해 특정한 함수가 처리 되는 시간을 구하는 기능을 구현해 볼것이며 나중에는 Annotation을 이용해 똑같은 예제를 만들 예정이다. 예제 본격적으로 예제..

개발 공부 2020.09.20