목록전체 글 (60)
코학다식
독립적인 프로세스들은 다른 프로세스의 실행에 영향을 주거나 받을 수 없다. 하지만 협력하는 프로세스들은 다른 프로세스의 실행에 영향을 주거나 받을 수 있다. 여러 개의 프로세스/스레드(thread)가 동시에 작업을 진행하는 것이다. 이는 정보 공유 계산 속도 증가 모듈성 편리함 등의 이점을 준다. Inter-Process Communication(IPC) IPC는 프로세스들이 통신하고 그들의 행위를 동기화하기 위한 매커니즘이다. 두 가지 방법이 존재한다. 공유된 변수(또는 메모리) 사용 메시지 전달 사용 POSIX Shared Memory(Producer) #include #include #include #include #include #include int main() { /* the size (in ..
프로그래머스: 섬 연결하기 문제 링크 처음에는 아주 단순하게 생각해서 비용을 오름차순으로 정렬한 후에 선택된 다리의 수가 n-1개 이상이 되면 모든 섬을 방문하는지 확인하도록 했다. 결과는 당연히 틀렸다. 아마 사이클을 고려하지 않았기 때문인 것 같다. 질문하기를 보니 크루스칼 알고리즘(Kruskal Algorithm)을 사용했다는 말이 보였고, 바로 사용해 보았더니 쉽게 통과했다. 알고리즘 수업 이후로 잊고 살았던 이 친구를 다시금 리마인드하는 계기가 되었다. Kruskal Algorithm 가장 적은 비용으로 모든 노드를 연결하는 알고리즘이다. 즉, 최소 비용 신장 트리를 만드는 알고리즘이라고 할 수 있다. 모든 노드를 가장 적은 비용으로 연결시키기 위해 모든 간선(비용) 정보를 오름차순으로 정렬 후..
이곳의 내용을 참조하여 작성되었습니다. CSS를 HTML에 적용시키는 방법 Inline Style Sheet 사용 해당 태그가 선택자가 되고, CSS 코드에는 속성(property)과 값(value)만 들어간다. 꾸미는 데에 한계가 있고 재사용이 불가능하다. wow wow wow. Internal Style Sheet 사용 HTML 문서 안에 스타일 코드를 넣는다. 보통 사이에 Linking Style Sheet 별도의 CSS 파일을 만들고 HTML 문서와 연결한다. 경로에 유의한다. 여러 HTML 문서에 사용할 수 있다. h1 { color: red; } CSS 기초 문법 h1 { color: red} h1, color, red 각각을 선택자, 속성, 값이라고 한다. 선택자(selector): 무엇을 ..
다음 두 가지를 이용해서 네이버 웹툰 메인 페이지의 모든 웹툰의 제목과 링크를 가져오는 파이썬 코드를 작성한다. requests 모듈 BeautifulSoup 크롤링을 위한 개발 환경을 설정해 주자. 프로젝트 폴더를 생성하고 가상 환경을 만들도록 한다. pyenv와 pyenv-virtualenv를 사용한 파이썬 개발 환경 구성하기 참조 개별 환경 구성이 끝나면 requests와 BeautifulSoup를 사용할 수 있도록 설치해 준다. 프로젝트 폴더에서 가상환경이 적용된 것을 확인한 후 다음 명령을 입력한다. pip install requests pip install pip intall beautifulsoup4 pycharm에서도 파이썬 파일을 만들어서 크롤링을 할 수 있지만 그때그때 진행 상황을 확인..
SQL Basics 위의 사이트에서 SQL문 예제를 실행해 볼 수 있다. SQL? Structured Query Language를 의미한다. 데이터베이스에 접근하고 데이터베이스를 다루는 데에 쓰인다. 데이터베이스에서 쿼리를 실행하고, 데이터베이스로부터 데이터를 가져오고, 데이터베이스에 정보를 삽입하고/업데이트하고/삭제하고/생성할 수 있다. 또한 새 데이터베이스를 만들거나 데이터베이스에 새 테이블을 만들 수 있다. 데이터베이스에 저장된 프로시저를 생성하거나 데이터베이스에서 뷰를 생성하고 테이블, 프로시저, 뷰에 접근 허용을 설정할 수도 있다. 다양한 버전이 존재하고 버전마다 특성이 존재하지만 가장 중요한 명령(SELECT, UPDATE, DELETE, INSERT, WHEHE)은 유사하다. RDBMS란 R..
OS(macOS, Ubuntu)별 설정법 참조 왜 필요한가? 여러 프로젝트를 동시에 진행하면 다양한 버전을 사용하게 되기 때문에 파이썬 버전을 분리해서 사용해야 한다. 이때 pyenv라는 파이썬 버전 관리 시스템을 사용한다. pyenv-virtualenv는 pyenv와 밀접하게 사용할 수 있는 패키지이다. 가상환경은 프로젝트 각각에 설치된 패키지들 사이의 충돌을 막아 주기 위해 필요하다. 명령어를 입력하고 명령 수행이 완료된 것처럼 보여도 실제로는 적용되지 않는 경우가 있다. 꼭 확인해 보도록 하자. 설정 순서 pyenv, pyenv-virtaulenv 설치 설치 후 pyenv 설정을 shell 설정 파일에 추가 정상적으로 pyenv, pyenv-virtualenv가 동작할 수 있기 위해 필요한 과정이다..
Java 시작하기(6) Object Oriented Programming(3): abstraction using interfaces 객체 지향 프로그래밍의 네 가지 원칙 객체 지향 프로그래밍에는 앞서 살펴보았던 캡슐화를 포함한 네 가지 원칙이 존재한다. 그 원칙들은 다음과 같다. 캡슐화(Encapsulation) public 메서드로 접근을 제한함으로써 내부적 구현을 숨긴다. 인스턴스 변수와 몇 메서드들은 private을 유지한다. 추상화(Abstraction) 구현 없이 명세된 "Interface"의 사용 추상적인 클래스들 상속(Inheritance) 두 객체 사이의 "is-a" 또는 "has-a" 관계 super 클래스(부모 클래스) vs sub 클래스(자식 클래스) super 클래스들에 존재하는 코..
Operating System chapter 3, Processes (2) 프로세스 생성 부모 프로세스는 자식 프로세스를 생성하는데, 이는 프로세스들의 트리를 구성하게 된다. 프로세스는 프로세스 식별자(pid)를 통해 식별되고 관리된다. Resource sharing option 부모와 자식은 모든 자원을 공유한다. 자식은 부모의 자원의 부분집합을 공유한다. 부모와 자식은 자원을 공유하지 않는다. Execution option 부모와 자식은 동시에 실행된다. 부모는 자식이 종료될 때까지 기다린다. Address space option 자식은 부모의 복사체다. 자식은 그것의 안에 로드된 프로그램을 가진다. 리눅스 시스템에서의 프로세스 트리(tree) UNIX에서의 프로세스 생성 먼저 그림을 보자. > a...