반응형

Language 24

[Python] 가상 환경에 대한 이해: pyenv, virtualenv, anaconda

파이썬은 다양한 편리한 패키지들을 지원한다. 특히 Data Science와 관련된 수많은 모듈들을 지원하는데, 이것들은 파이썬이 지금 세계에서 가장 인기 있는 언어 중 하나로 자리매김을 하는데에 큰 역할을 하였다. 하지만 대부분의 개발환경이 그렇듯, 파이썬에서도 사소한 모듈들의 버전 차이로 인해 에러가 발생하는 경우가 있다. 때문에 각 패키지들 간의 버전 간의 호환성을 유지하는 것은 매우 중요한 일이다. 하지만 매번 프로젝트를 진행할 때마다 root에 설치되어있는 다양한 파이썬 패키지들 버전을 새로 설치하고 변경한다면 매우 비효율적인 일이 될 것이다. 그래서 사용하게 되는 것이 바로 가상 환경이다. 가상 환경은 말 그대로 가상의 파이썬 공간이다. 즉, 분리되어진 가상의 공간에 프로젝트마다 필요한 파이썬 ..

Language/Python 2019.11.11

[Java] JVM 가상머신과 Java Language의 이식성, 호환성 관계

흔히 우리나라는 java 공화국이라고 불릴 정도로 java가 널리 사용되고 있다. 최근에 와서는 kotlin과 javascript와 같은 언어에 어느 정도 점유율을 빼앗겼지만, 여전히 java는 가장 널리 사용되고 있는 언어라는 것에 있어서는 이견이 없다. 이에 관한 이유에는 여러가지가 있지만, 그중 가장 대표적인 이유는 Java의 호환성 때문이다. Java의 호환성을 이해하기 위해서는 먼저, 조금의 운영체제에 관한 지식이 요구된다. 이 포스팅에서는 이러한 부분을 간략히 예를 들어서 설명하도록 하겠다. Hardware OS Application 예를들어, A + B라고 하는 명령을 Intel cpu에서 machine code로 0101, 모토롤라 cpu에서는 0000이라고 하겠다. Assembly lan..

Language/Java 2019.11.10

[Java] Garbage Collector란?

GC란? Machine Code에서 Assembly Language로 넘어오는 시점부터 프로그래머들은 기호를 이용한 프로그래밍을 하기 시작했다. 그리고 그러한 기호식 프로그래밍은 점차 language가 발전함에 따라 지금에 와서는 변수에 데이터 값을 초기화하고 그 값을 활용해 프로그램을 만들어낸다. 이러한 변수에 저장된 값들은 메모리 상의 Heap이라고 불리는 특정 영역에 저장된다. 컴퓨터의 메모리가 무한하다면, 잔여량을 걱정하지 않고 마음껏 메모리를 사용해도 되겠지만 안타깝게도 우리의 메모리는 유한하기 때문에, 메모리에 사용하지 않는 값들을 지워주지 않는다면 Memory Leak(메모리 누수)가 발생하게 된다. 그리고 이렇게 세어나간 메모리들이 쌓여서 우리의 메모리를 가득채우게 되면 컴퓨터는 작동을 멈..

Language/Java 2019.11.10

[Python] Dequeue 사용하기

큐는 어떤 자료구조인가? 큐는 자료의 선입선출, FIFO(First-In-First-Out)을 보장하는 자료구조이다. 흔히 줄을 서 있는 사람들을 생각하면 쉽게 이해할 수 있다. 먼저 줄을 선 사람이 먼저 줄에서 벗어나는 것과 같다. Reference https://www.youtube.com/watch?v=W3jNbNGyjMs deque 객체 deque는 스택과 큐를 합친 자료구조이다. 가장자리에 원소를 넣거나 뺄 수 있다. 메서드 설명 deque(iterable, [, maxlen]) 초기화 함수이다. iterable(리스트 등)을 인자로 건내면 이를 deque화 시켜준다. append(x) x를 덱의 오른쪽에 삽입한다. popleft() 덱의 가장 왼쪽에 있는 원소를 덱에서 제거하고, 그 값을 리턴..

Language/Python 2019.10.24

[Java] JSP와 Servlet이란?

JSP jsp의 개념 JSP(Java Server Page)는 Java를 이용하여 동적인 웹 페이지를 만들기 위해 Sun Microsystems사가 개발한 기술이다. 사용자의 요청에 맞는 결과를 동적으로 표시해주는 웹 페이지를 웹 서버 측에서 사용자에게 전송해 주기 위해서는 요청의 처리결과에 따라서 자동으로 응답을 생성할 수 있는 역할을 한다. html 코드 안에 java코드가 삽입된 형태이다. 〈%...%>,, 와 같은 형태의 코드가 자바 코드이다. JSP가 html과 java코드를 동시에 사용할 수 있는 이유 JSP 파일이면 웹 컨테이너는 먼저 JSP 파일을 파싱(Pairsmg)하여 자바 코드로 변환한다. 파싱이란 코드를 해석해서 그에 맞는 변환 코드로 바꾸는 작업이다. 각각의 패그를 자동으로 감지하..

Language/Java 2019.10.13

[Python] 메서드 지역변수로 할당으로 time complexity 줄이기

반복문 안에서 메서드를 호출할 때 그냥 호출하는 것보다, 반복문에 들어가기 전에 메서드를 미리 지역변수로 할당해놓고 반목 문에서 지역변수로 저장된 메서드를 호출하면 빠르게 동작한다. 위의 예제에선 list.pop을 했을 때보다 list_pop 변수에 list.pop 메서드를 저장 후 list_pop을 호출했더니 시간이 약 3/5까지 줄어들었습니다. 알고리즘이나 코드 플로우를 바꾸지 않고 시간을 줄일 필요가 있을 때 사용하면 좋을 것 같다. 저 위의 예시를 예로 들면, 첫번째 test_list.pop 하기 전에 print(locals())를 하면 pop 메서드가 지역변수에 없는 것을 알 수 있다. 그 말은 pop 메서드를 가져오려면 List 클래스의 pop 메서드가 담겨있는 메모리의 위치까지 접근해서 가져..

Language/Python 2019.10.11

[Javascript] Ajax 통신

Ajax란? 웹 브라우저를 근대적인 웹과 그 이전으로 나누는 중요한 기술이 바로 Ajax이다. 웹 브라우저에 내용이 바뀔때 마다 새로고침을 해서 변경하지 않아도 Ajax는 브라우저와 서버가 내부적으로 데이터 통신을 하게해 주어서 변경된 결과를 웹 페이지에 프로그래밍적으로 반영하게 해준다. 이러한 기술은 매번 보지 않아도 되는 기술을 매번 웹 페이지에 나타내지 않아도 되므로 서버에게는 부담이 줄고 클라이언트에겐 데이터를 적게 사용하게 되므로 양쪽다 이득을 보게된다. Ajax는 Asynchronous JavaScript and XML의 약자다. 직역하자면 비동기적 자바스크립트와 xml이 된다. 즉 비동기적으로 자바스크립트를 통해서 서버와 통신하는 방법을 의미한다. 이대 사용하는 API가 XMLHttpRequ..

[Javascript] 이벤트(Event)에 관하여

이벤트란? 이벤트(event)는 어떤 사건을 의미한다. 브라우저에서의 사건이란 사용자가 클릭을 했을 '때', 스크롤을 했을 '때', 필드의 내용을 바꾸었을 '때'와 같은 것을 의미한다. 먼저 이러한 이벤트들에 관한 용어들을 정리하고 가도록 하겠다. event target target은 이벤트가 일어날 객체를 의미한다. 예를 들어 버튼을 누르면 새로운 창이 열리는 객체가 있다고 하자. 그렇다면 여기서 버튼은 event target이 된다. event type 이벤트의 종류를 의미한다. 위의 예에서는 click이 이벤트의 타입이 된다. 그 외에도 스크롤이나 마우스가 움직였을 때 발생하는 것들도 이벤트 타입이다. event handler 이벤트가 발생했을 때 동작하는 코드를 의미한다. 이벤트 등록방법 inli..

[Javascript] DOM(document object model)

Document Object Model로 웹페이지를 자바스크립트로 제어하기 위한 객체 모델을 의미한다. window 객체의 document 프로퍼티를 통해서 사용할 수 있다. Window 객체가 창을 의미한다면 Document 객체는 윈도우에 로드된 문서를 의미한다고 할 수 있다. 제어 대상 찾기 getElement document.getElementsByTagName : 문서 전체에 해당 tag를 찾는다. document.getElementsByClassName : 문서 전체에서 해당 class를 찾는다. document.getElementById : 문서 전체에서 해당 id를 찾는다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 HTML CSS JavaScript var li..

[Javascript] BOM(browser object model)

Window 객체 Window 객체는 모든 객체가 소속된 객체이고, 전역 객체이면서, 창이나 프레임을 의미한다. 그러므로 위의 그림에 나와있듯이 document객체나 BOM에 location객체 등 모든 것이 window객체 안에 있다. 위의 이미지와 같이 window객체는 window라는 식별자를 통해서 얻을 수 있다. 또한 생략이 가능하다. (window.document를 그냥 ducument로 입력해도 결과는 같았을 것이다.) 위의 그림에 나와있는 객체뿐만 아니라, 우리 만드는 변수나 함수 역시 모두 window객체에 안에 포함된다. 즉, 객체를 만든다는 것은 결국 window 객체의 프로퍼티를 만드는 것과 같다. 사용자와 커뮤니케이션 하기 alert 경고창이라고 부른다. 사용자에게 정보를 제공하거..

반응형