반응형

분류 전체보기 136

[개발 환경] intelliJ 학생인증으로 Ultimate version 사용하기

Java 언어를 사용한다면 대표적인 두 가지 IDE가 있다. 하나는 무료로 베포 되고 있는 eclipse, 그리고 또 다른 하나는 Jetbrains 사에서 유료로 베포하고 있는 intelliJ이다. 아마 Java를 처음 접한 주니어라면 대부분 eclipse로 java에 입문하였을 것이다. 하지만, 사용해보며 느꼈을 테지만 eclipse는 많이 무겁고 UI가 못생... 아니 불편하다. 조금 핑계 같은 이야기지만 디자인과 출신이었던 필자는 Java를 단순히 eclipse라는 못생긴 IDE 때문에 싫어하기도 했었다. ^^;; intelliJ는 java 개발자들 사이에서 가장 인기있는 통합 개발 Tool이다. 하지만 구독 형식으로 유료로 제공되는 툴이기 때문에 만약 회사에서 IDE를 제공해주지 않는다면 가격적인..

Forum/개발 환경 2019.11.12

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

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

Language/Python 2019.11.11

[Article] Microsoft: Web-based VScode 그리고 시총 1위 탈환

이번 해 초, 개발자 컨퍼런스에서 마이크로소프트 사는 웹 베이스의 Visual Studio IDE를 발표했다. 그 당시 Visual Studio Online은 엄선된 수의 개발자에게 체험 형태로 공개하였다. 그리고 이제 Ignite 컨퍼런스에서 마이크로소프트는 모든 개발자에게 서비스를 제공하기로 하였다. Visual Studio Online을 통해 개발자는 완전히 구성된 repository를 통해 빠르게 개발 환경을 셋팅할 수 있다. 또한 cloud hosting web-based라는 점에서 어느 곳에서나 액세스 할 수 있기 때문에 개발 생산성을 향상할 수 있다. VScode는 개발자들 사이에서 가장 사랑받는 IDE중 하나이다. 필자 역시 python, html, css, javascript, c++ 또..

Forum/Article 2019.11.11

[Node.js] await vs return vs return await: 비동기 이해하기

비동기 함수를 작성할 때 await과 return을 하는 것 그리고 return await을 사용하는 것에는 실행에 차이가 있다. 이것을 올바르게 사용하지 않으면 우리는 예상치 못한 값을 반환받을 수 있다. 이 포스팅은 그러한 버그를 미리 방지하고 비동기에 대한 이해를 확장하고자 작성한다. 아래는 async함수이다. async function waitAndMaybeReject() { // Wait one second await new Promise(r => setTimeout(r, 1000)); // Toss a coin const isHeads = Boolean(Math.round(Math.random())); if (isHeads) return 'yay'; throw Error('Boo!'); } 이..

[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

SOPT 무박 2일 해커톤 후기 (SOPKATHON)

SOPT는 올해로 11년 된 IT 창업 벤처 동아리이다. IT 동아리답게 대부분의 동아리원들이 개발과 관련이 있거나 개발에 관심이 있는 사람들로 구성되어있다. 하지만, 일반 IT 동아리와 다른 점이 있다면 개발 파트뿐만 아니라, 기획, 디자인 파트까지 포함되어 있어, IT라는 주제로 파트 별로 협업할 수 있다는 것이 큰 장점이다. 이번에 참가한 해커톤, 일명 솝커톤은 SOPT의 한 텀 중간에 열리는 짧은 해커톤으로 (매 기수 마지막에 2주에 걸친 장기간의 해커톤이 있다.) 기획, 디자인, Android, ios, server 파트가 협업하여 하나의 결과물을 만들어내는 해커톤이다. 필자의 블로그를 자주 들어온 독자라면 쉽게 눈치챘겠지만, 서버에 관심이 많은 나는 서버 파트의 일원으로써 해커톤에 참여했다. ..

Forum/Retrospect 2019.11.03

[Network] Get방식의 Query string방식과 Path value방식

GET방식은 http method 중에서 url을 통해 정보를 전달하는 방식이다. 그런데 이러한 get을 사용하는 방법에는 두 가지가 있는데 그것에 대해 알아보겠다. 예를 들어 우리가 sns 서비스를 개발하고 있다고 가정해보자. 그렇다면 서비스는 필연적으로 user의 정보를 컨트롤해야 할 것이다. 아래는 그러한 예시들을 query방식과 params방식으로 구분하여 예시를 작성하였다. Query String 만약 우리가 user의 id 값을 get 방식으로 받아와야할 때 이러한 방식으로 사용할 수 있을 것이다. /users?id=123 그럼 우리는 백엔드에서 id값을 받아올 수 있게 된다. Node.js의 경우 해당 값을 아래의 코드와 같이 데이터를 받아올 수 있다. const {id} = req.quer..

[Node.js] CRUD: foreign key를 이용해 blog 구조 만들기 (2)

이번에는 조금 심화로 들어가 보도록 하겠다. 이전 게시물에서는 하나의 CRUD만을 만들었다면 이번에는 실제 blog가 가지고 있는 구조로 CRUD를 확장해 보도록 하겠다. 한번 블로그를 상상해보자. 먼저 게시글들을 포함하는 category가 있을 것이다. 그리고 각각의 게시물들은 제목과 내용이 존재할 것이고, 마지막으로 댓글을 달 수 있는 기능이 있을 것이다. 여기서 중요한 포인트는 댓글은 게시글에, 게시글은 카테고리 안에 포함되어야 한다는 것이다. 눈치 챘을지 모르겠지만 우리는 이미 카테고리는 만들었다. 이전 포스팅에서 만들었던 blogs.js가 바로 그것이다. 이 시점에서 프로젝트를 좀 더 구조적으로 만들기 위해서 디렉토리를 재구성할 필요가 있다. blogs: 카테고리 articles: 게시글 com..

[Node.js] CRUD: RDS를 이용하여 동적으로 구성하기 (1)

CRUD란? CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말이다. 게시물을 올리고, 읽고, 수정하고, 삭제하는 것을 예로 생각하면 이해하기 편리하다. 이러한 CRUD는 http method get(read), post(create), put(update), delete(delete)로 구현할 수 있다. 각각의 http 메서드들은 해당하는 각각의 기능만 수행하는 것은 아니지만 통상적으로 rest api(참고: https://ooeunz.tistory.com/11?category=814267)를 따라 위와 같은 역할로 메서드들을 기능적으로 분리하여 사용한다. 이번 포스팅은 3번에 걸..

반응형