• [C#] 컴파일러와 인터프리터

    [C#] 컴파일러와 인터프리터

    기술 면접 단골 질문 중에 하나죠. 프로그래밍 언어 뭐 써봤나요? 어떤 종류인지 혹시 아시나요? 여러개 종류별로 비교해서 설명해주세요. 프로그래밍 언어는 실행 방식에 따라서 크게 두가지로 분류합니다. 하나는 컴파일러 언어, 다른 하나는 인터프리터 언어 라고 합니다. 컴파일러 언어로 코드를 작성하면 소스 파일을 컴파일해서 바로 컴퓨터가 이해할 수 있는 기계어로 코드를 작성해서 실행 파일로 만듭니다. CPU가 이 실행 파일을 바로 작동시키기 때문에 속도가 빠른 장점이 있는 반면 운영체제가 다르면 호환되지 않을 확률이 높습니다. 우리가 알고 있는 예시로 C++, Visual C++, Object C, Java, C 등이 있습니다. 인터프리터 언어는 컴파일러 언어와 달리 소스 파일을 실행하면 해석 엔진 프로그램..

  • [LeetCode] 153. Find Minimum in Rotated Sorted Array

    [LeetCode] 153. Find Minimum in Rotated Sorted Array

    *알고리즘 스터디에 참여하면서 Blind 75 LeetCode Questions 목록에 있는 문제를 풀이합니다. https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/ Find Minimum in Rotated Sorted Array - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 해설 오름차순으로 정렬된 길이가 n인 배열이 1번에서 n번 회전한다고 가정합니다. 예를 들어 배열 nums =..

  • [LeetCode] 152. Maximum Product Array

    [LeetCode] 152. Maximum Product Array

    *알고리즘 스터디에 참여하면서 Blind 75 LeetCode Questions 목록에 있는 문제를 풀이합니다. https://leetcode.com/problems/maximum-product-subarray/ Maximum Product Subarray - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 해설 숫자 배열이 주어지고, 연속되고 빈 배열이 아닌 부분 배열 중 곱의 값이 가장 큰 것을 찾아 return 한다. 앞서 해설했던 53. Maximum..

  • [번역] 14가지 패턴으로 코딩 인터뷰 완전 정복하기

    [번역] 14가지 패턴으로 코딩 인터뷰 완전 정복하기

    *이번 포스팅은 "14 Patterns to Ace Any Coding Interview Question" 을 번역한 내용입니다. 코딩 인터뷰를 준비하는 과정은 많은 개발자들이 불안에 떨게 만듭니다. 엄청난 양의 내용을 커버해야하고, 개발자가 실제 업무하는 일과는 무관하게 느껴지기 때문에 스트레스를 가중합니다. 이런 이유 때문에 개발자들 사이에서는 수백가지의 인터뷰 문제들을 LeetCode같은 사이트를 이용해서 공부하는게 일상이 되었습니다. 불안한 개발자들이 인터뷰 전에 가장 많이하는 질문은 보통 내가 연습 문제 충분히 많이 풀었나? 더 해야하나? 입니다. 이런 이유 때문에 이번 글을 통해서 각 질문들의 기저에 깔려있는 패턴들을 다뤄보려고 합니다. ⎯ LeetCode에서 수백개의 문제를 풀면서 고통받지..

  • [Python] GIL, Global Interpreter Lock이란?

    [Python] GIL, Global Interpreter Lock이란?

    안녕하세요, 개발자 하댑입니다. 오늘은 파이썬 멀티스레드를 사용하려고 한다면 알아야하는 GIL에 대해 알아보겠습니다. 파이썬의 경우 단순히 멀티스레딩을 코드로 구현해서 테스팅을 해보면 멀티스레딩의 연산 속도가 성능이 나쁜 것을 확인할 수 있습니다. 이런 결과가 나오는 이유는 바로 CPython Global Interpreter Lock, 즉 GIL이 적용되기 때문입니다. Global Interpreter Lock, GIL이 뭔데? Python Wiki에서는 다음과 같이 설명합니다. CPython에서 GIL은 파이썬 코드(bytecode)를 실행할 때에 여러 스레드를 사용할 경우, 단 하나의 스레드만 파이썬 객체에 접근할 수 있도록 제한하는 mutex 이다. 그리고 이 lock이 필요한 이유는 CPytho..

  • BFF(Backend for Frontend) 란?

    BFF(Backend for Frontend) 란?

    frontend SPA 서비스와 backend springboot 애플리케이션을 연결할 BFF(backend for frontend)를 만들기 앞서 BFF 개념을 알아봅니다. 원문을 제가 나름대로 이해한 대로 적어 내용은 약간 다를 수 있습니다. BFF 란? BFF(Backend for Frontend) 는 마이크로서비스 아키텍처의 여러 패턴 중의 하나로, 하나의 인터페이스로 구성되어있던 모노리스 서비스에서 마이크로서비스로 전환되면서 여러 UI기반 시스템이 여러 서비스의 api를 호출하고 통신하는 형태로 발전했습니다. 천천히 아키텍처가 발전하는 흐름에 맞춰서 형태가 변경되어온 셈입니다. Monolith 분해 먼저 하나의 거대한 시스템이 응용 프로그램 자체였던 시절부터 시작합니다. 이전 문서에서는 마이크로..

  • [Linux] Ubuntu vim 설치 및 설정

    Ubuntu 18.04 LTS vim 설치하기 전 apt-get 업데이트 sudo apt-get update업데이트 마치고 vim 설치 sudo apt-get install vim기능 추가를 위해 설정 파일 열기 vi ~/.vimrc편집기 입력을 위해 i 를 눌러주고 필요한 내용 추가 set number " line 표시 set ai " auto indent set si " smart indent set cindent " c style indent set shiftwidth=4 " 자동 공백 채움 시 4칸 set tabstop=4 " tab을 4칸 공백으로 set ignorecase " 검색 시 대소문자 무시 set hlsearch " 검색 시 하이라이트 set nocompatible " 방향키로 이동 ..

  • NOSQL이랑 친해지기 - MongoDB Compass 실습 (5/5)

    NOSQL이랑 친해지기 - MongoDB Compass 실습 (5/5)

    NoSQL(5) mongoDB 관리 GUI툴 mongodb compass를 사용해서 간단한 실습을 진행해보자. db, collections 만들기 데이터 베이스를 생성하고, collection를 생성합니다. 저는 test 데이터에 users 라는 컬렉션을 생성했습니다. Capped : 최초 제한된 크기로 생성된 공간에서만 데이터를 저장하는 설정입니다. 저장 공간이 차면 기존 공간을 재사용할 수 있습니다. 일정 시간에만 저장하는 로그에 적합합니다. Capped Collection을 true로 체크하고 최대 크기를 10000으로 지정해보겠습니다. 방금 GUI로 설정한 것들을 직접 shell에서 입력해서 설정한다고 가정한다면, # MongoDB 접속 mongo # 전체 데이터베이스 열람 show dbs # 데..