전체 글 223

#5_블록체인 무엇인가::이중 사용(Double Spending)

이전글#1_블록체인 무엇인가::소프트웨어 시스템 아키텍처#2_블록체인 무엇인가::분산 P2P 시스템#3_블록체인 무엇인가::블록체인의 과제#4_블록체인 무엇인가::소유권의 본질 안녕하세요. 문범우입니다.이번 포스팅에서는 분산 P2P 시스템의 무결성 침해와 관련된 가장 중요한 사례 중 하나인 이중사용(Double Spending)문제에 대해서 알아보겠습니다.1. 이중사용(Double Spending) 이중사용은 쉽게 말해서 동일한 재화, 물건에 대해 두번 사용한다는 것 입니다.보다 쉽게 이해하기 위해 부동산을 판매하는 상황으로 가정해보겠습니다. A가 B에게 집을 팔았습니다.이로 인해서 집에 대한 소유권은 A에서 B로 이전 되었음이 P2P 시스템의 어느 원장에 기록되었습니다. 그럼 우리가 이전에 학습한 바와..

블록체인 2019.02.27

파이썬(python) #24_ 멀티프로세싱(Multi-processing) 과 멀티쓰레딩(Multi-threading)

안녕하세요. 문범우입니다.오랜만에 파이썬 관련 내용을 포스팅하게 되었습니다.최근 자바 언어에 대해 다시 공부하면서 멀티 쓰레딩 개념을 학습중인데, 파이썬에서 해당 내용을 다뤄보지 않은 것 같아 간략하게나마 공부하고 이를 정리해보았습니다. 즉, 이번 글에서는 파이썬에서의 멀티 프로세싱, 멀티 쓰레딩에 대해서 알아보도록 하겠습니다. 글에 앞서서, 멀티 프로세싱, 멀티 쓰레딩 등, 동시성 프로그래밍에 대한 개념적인 내용은 아래 글을 참고하시면 되겠습니다.https://doorbw.tistory.com/26 먼저 전체적인 코드입니다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849from functo..

Python으로 일정 시간에 메일 보내주는 웹 크롤러 제작하기

안녕하세요. 문범우입니다.최근 파이썬을 활용할 일이 많이 없었는데, 엊그제 문득 필요한게 생각나서 후다닥 파이썬으로 만들어보았습니다. 뭐라고 이름을 지어야할지 모르겠는데..많은 분들도 만들어서 사용하시기도 하는 것으로 알고 있습니다.제가 자주 보는 커뮤니티에서의 특정 게시판 상위 n개에 대해서 크롤링하여 링크를 포함한 헤드라인만 정해진 시각에 제 메일로 보내는 프로그램입니다. 저는 OKKY라는 커뮤니티에서 스터디, 뉴스, 행사에 관련된 3개 게시판에 대해 상위 5개 또는 3개의 글을 정해진 시각(오전, 점심, 오후)에 메일로 보내도록 하였습니다. 메일 내용을 더 꾸밀 수도 있겠지만..일단은 심플하게 아래와 같이 메일이 전송됩니다 :) 실제로 이렇게 해두고 나니, 정해진 시각에 한번쯤 더 쳐다보게 되고 요..

포트폴리오 2019.02.11

알고리즘_시간복잡도 예제

안녕하세요. 문범우입니다.지난 포스팅에서 시간복잡도, 공간복잡도 등에 대해서 알아보며 Big-O 표기법에 대해서 살펴보았습니다.이번에는 실제로 특정 코드나 알고리즘을 대상으로 그 시간복잡도를 분석해보는 실습을 진행해보도록 하겠습니다. 아래에서 다루게 될 예제들은 ''코딩인터뷰 완전 분석"(게일라크만맥도웰 지음, 이창현 옮김)_인사이트출판 서적에서 일부 참고 및 발췌하였습니다. > N에 대한 정확한 사용 우리는 이전 포스팅에서도 그러했듯이 Big-O 표기법으로 나타낼때에 흔히 O(N), O(log N) 과 같이 나타냅니다. 그런데 이때 N에 대해 정확하게 이해하지 못하였다면 추후 잘못된 분석을 할 수 있습니다.아래와 같은 상황을 생각해보겠습니다. 여러개의 문자열로 구성된 배열이 있습니다. 이때 각각의 문자..

알고리즘_시간복잡도, 공간복잡도, Big-O 표기법

안녕하세요. 문범우입니다.최근 Java로 알고리즘 스터디를 시작하게 되었습니다.단순히 문제풀이 보다는 이론적인 내용들을 살펴보며 관련된 문제를 푸는 방식으로, 기초부터 다시 살펴보려합니다.이번에는 직접적인 알고리즘 내용에 앞서, 알고리즘 분석 즉 시간복잡도와 공간복잡도에 대해 이야기를 먼저 진행해보겠습니다. > 왜 알아야 하는가? Big-O 표기법은 알고리즘의 효율성을 나타내는 지표 혹은 언어이다.이를 통해 자신이 작성한 알고리즘이 이전보다 빨라졌는지 느려졌는지 판단하는데 도움이 될 것이다.물론 이 외에 다른 개발자들과 특정 알고리즘에 대해 이야기하거나 효율성 판단등에 의해서 Big-O 표기법을 통해 보다 원활하게 의사소통을 진행할 수 있다. 실제로 Big-O 표기법 이외에 다른 표기법도 있으나 이에 대..

#4_블록체인 무엇인가::소유권의 본질

이전글#1_블록체인 무엇인가::소프트웨어 시스템 아키텍처#2_블록체인 무엇인가::분산 P2P 시스템#3_블록체인 무엇인가::블록체인의 과제 안녕하세요. 문범우입니다.지난 포스팅에서는 블록체인의 과제에 대해서 알아보았습니다. 이번에는 소유권의 본질에 대해 알아보도록 하겠습니다. 즉, 내가 가진 것을 내 것이라고 어떻게 증명하는지 함께 생각해보도록 합니다. 1. 소유권? 하나의 상황을 함께 생각해보겠습니다. 회사를 가기 전에 오전에 간단히 먹기 위한 쿠키를 하나 가지고 집을 나와 출근을 하기 위해 가는 길에서 목이 말라 편의점에 들려 바나나우유를 하나 구입하려 합니다. 헌데 편의점 직원이 가방 안에 있는 쿠키를 빤히 쳐다보고 있습니다. 하필이면 편의점에 있는 쿠키와 같은 쿠키입니다. 이런 상황이라면 불행히도..

블록체인 2019.01.19

#3_블록체인 무엇인가::블록체인의 과제

이전글#1_블록체인 무엇인가::소프트웨어 시스템 아키텍처#2_블록체인 무엇인가::분산 P2P 시스템 안녕하세요. 문범우입니다.지난번 포스팅을 통해 분산 P2P 시스템에 대해서 알아보고, 실제로 많은 사람들이 사용하는 토렌트 서비스를 통해서 이해해 보았습니다.그럼 이번 포스팅에서는 이러한 분산 P2P 시스템을 왜 아직 많은 곳에서 사용하지 않는지, 그리고 그것을 블록체인이 어떻게 해결해 줄 수 있는지에 대해서 알아보며 블록체인에 대해 정의를 내려보도록 하겠습니다.1. 순수 분산 P2P 시스템의 지속 가능성 사실 우리는 두번째 포스팅에서 순수 분산 P2P 시스템이 산업 전체를 뒤바꿀 수 있을 만큼 강력한 잠재력을 지니고 있다고 알아보았습니다. 그런데 왜 아직 많은 곳에서 사용되지 않는 것 일까요? 즉, 순수..

블록체인 2019.01.13

#2_블록체인 무엇인가::분산 P2P 시스템

이전글#1_블록체인 무엇인가::소프트웨어 시스템 아키텍처 안녕하세요. 문범우입니다.지난 첫번째 글에서 '소프트웨어 시스템 아키텍처'에 대해서 알아보았습니다. 그 중에서도 블록체인이 도구로서 활용될 분산 시스템에 대해서 주로 알아보았습니다.그리고 이번 포스팅에서는 분산 시스템 중에서도 특수한 형태로 나타난 '분산 P2P 시스템'에 대해서 알아보도록 하겠습니다. 1. 분산 P2P 시스템이란 피어 투 피어(peer - to - peer) 시스템은 분산 시스템의 특수한 형태입니다. P2P 시스템에서는 개별 컴퓨터(노드)로 구성되어 있으며 분산 시스템이기 때문에 중앙 노드의 조정 없이 네트워크의 모든 구성원이 서로에게 계산 자원을 제공합니다.무엇보다 중요한 것은 네트워크 상에서 각 노드는 시스템 내에서 동등한 권..

블록체인 2019.01.12

#1_블록체인 무엇인가::소프트웨어 시스템 아키텍처

안녕하세요. 문범우입니다.앞으로 몇회에 걸쳐서 블록체인에 대한 기초적인 내용을 정리해보려 합니다.단순히 자료를 수집해서 정리해보기에는 아직 제 스스로도 개념적으로 부족한 부분들이 많아서, 다니엘 드레셔 지음, 이병욱 옮김의 '블록체인 무엇인가?' 라는 책을 기반으로 하려 합니다. 정리의 순서가 책의 순서와 비슷할 것이며, 책을 보면서 좀 더 궁금한 내용 같은 부분은 온라인을 통해 공부해가며 추가하여 정리하려 합니다. 궁금하거나 건의사항이 있으신 분은 언제든지 댓글 또는 이메일, 카톡을 통해서 연락주시면 감사하겠습니다.블록체인을 위한 기초 이번 글에서는 블록체인을 이해하기 위한 기초로써, 소프트웨어 아키텍처에 대해 알아보면서 블록체인이 달성하고자 하는 것에 대해서 함께 알아보도록 하겠습니다. 1. 소프트웨..

블록체인 2019.01.06

#10_ 비밀지도(2017 카카오톡 블라인드테스트 1차)

안녕하세요. 문범우입니다.이번에 소개해드릴 알고리즘 문제는, 2017년 카카오톡 블라인드테스트 1차 코딩시험에서 나왔던 문제중 난이도가 제일 낮다는 소개된 '비밀지도' 문제입니다. 해당 문제는 프로그래머스를 통해, 아래 주소에서 만나보실 수 있습니다.https://programmers.co.kr/learn/courses/30/lessons/17681?language=python3 난이도가 가장 낮다고 소개된 만큼, 문제자체도 간단하고 풀이도 어렵지 않습니다.따라서 해당 문제는 추가적인 설명대신 코드만 첨부해드리도록 하겠습니다.추가적으로 궁금한 사항이 있으시면 언제든지 댓글 및 카카오톡이나 이메일을 통해서 연락주시면 바로 답변드리도록 하겠습니다. 123456789101112131415161718192021..