자바스크립트는 이견이 없는 태생부터 싱글스레드지만, node.js를 싱글스레드로 보느냐 멀티스레드로 보느냐에 대해서는 관점 차이가 조금 있다. 어떻게 보느냐에 따라서 사람마다 싱글스레드라고 하는 사람도 있고, 멀티스레드라고 하는 사람도 있다. 다음의 레퍼런스에 따르면, 사람들의 답변은 "뭐 그럴 수도 있고 아닐 수도 있다."로 일축된다. Is Node js single threaded or multi threaded : https://www.quora.com/Is-Node-js-single-threaded-or-multi-threaded Is Node.js single threaded or multi-threaded?Answer (1 of 4): A2A. Javascript in itself is si..
다양한 프레임워크를 통해서 서버를 개발하다 보면 자바는 멀티스레드라는 사실을 어디선가 듣게 될 것이다. 나 또한 인프런에서 김영한 선생님의 스프링 강의를 들으며, 스프링은 50개의 스레드풀을 관리하고 있고, 200개까지 늘릴 수도 있다는 이야기를 들었다. 그 당시에는 스프링으로 API를 구현하는게 급급했기 때문에, 그냥 그렇구나 하고 넘어갔지만 지금 생각해 보면 자바스크립트와 비교했을 때, 싱글 스레드 언어인 자바스크립트와 대체 어떤 부분이 다르기 때문에 스프링은 스레드풀을 지원하는 걸까? 자바는 대체 뭐길래 스프링이 이렇게 멀티 스레드를 사용할 수 있게 도와주는 걸까? 이번 포스팅에서는 스프링부트가 어떻게 멀티스레딩을 지원하는 지에 대해서 조사한 내용을 포스팅해보려고 한다. CS에 대한 내용이 꽤나 ..
spring을 공부해 본 적이 있다면 위와 같은 페이지를 본 적이 있을 것이다. start.spring.io 사이트에 들어가면 위와 같이 다양한 spring의 config 들을 볼 수 있다. 그 외에도 의존성 같은 설정을 손쉽게 추가할 수 있는 것을 알 것이다. 자바를 공부하는 단계라면 단순히 위와 같은 간단한 설정을 통해서 프로젝트를 세팅하고, 스프링 Data JPA나 스프링 시큐리티 등 다양한 의존성을 추가해서 스프링 프로젝트를 .zip 형태로 받아볼 수 있다. 스프링부트를 통해서 다양한 API 서버를 개발하거나, 다른 사람들이 만든 스프링부트 서버를 배포하는 역할을 하게 되면서, dockerfile을 작성하는 과정이나 github actions에서 빌드 툴로써 gradle을 쓰는 데, 특정 레퍼런스..
최근 대학교 동문 개발자들끼리 네트워킹을 한 적이 있었다. 다양한 포지션의 개발자분들이 모여서 이런저런 이야기를 나누었는 데, 가장 흥미로웠던 주제는 아이폰에서의 safari 및 chrome이 프론트엔드 개발자의 골칫덩어리라는 것이다. 결론부터 말하면 아이폰에서는 우리가 흔하게 아는 chromium이라는 웹 브라우저 엔진이 아니라 WebKit이라는 엔진을 통해서 웹사이트를 렌더링 하기 때문에 자질구레한 에러들이 많이 발생하게 된다. 웹 서핑을 하는 도중 문득 위 이야기가 생각이 났다. 대체 웹 브라우저에 어떠한 역사가 있었기에 그러한 일이 일어나는 것일까? 간단하게 나마 한 번 살펴보자고 하였는데, 생각보다 방대한 양에 조금 놀랐다. 관련해서 흥미로운 것들을 많이 확인할 수 있었는데, 내가 정리했던 내용..
Write once, run anywhere - 한 번 쓰면, 어디서든 실행된다. 위 문구는 자바를 대표하는 문구이다. 백엔드 개발자라면 누구나 한 번쯤은 접하게 되는 자바. 나 또한 피해 갈 수 없었는데, 시대생팀에서 서버를 개발하는 일을 맡게 되었을 때 나를 제외한 다른 팀원들이 스프링을 사용하기를 원했기 때문에 어쩔 수 없이 스프링으로 개발하게 된 적이 있었다. 뿐만 아니라, GDSC UOS 팀에서는 node를 사용하는 나를 제외한 모든 개발자들이 스프링을 사용하기 때문에 데일리 스크럼에서 자바와 관련된 이야기들이 오고 갔다. ex) 스프링 3.x 버전대에서 스웨거가 잘 안 되는 것 같다 -> 그 버전에서는 스웨거 오류가 있어서 swagger-ui 라이브러리를 써보실래요? 등.. 예전부터 자바를..
가끔씩 다양한 언어의 빌드를 지원하는 사이트를 보면 자바스크립트라는 언어로 코드를 작성하고 싶은데, 자바스크립트는 안 보이고 node.js라고 쓸 때가 있다. 예를 들어서 repl.it이 그렇다. 처음에는 어째서 자바스크립트가 아닐까 생각했는데, node.js 생태계에 익숙해지면서 node.js라고 적는 이유를 알 것 같게 되었다. 그 외에도 다양한 언어를 통해서 서버를 만들면서 자바스크립트의 작동 원리는 굉장히 신기했다. 자바스크립트 싱글 스레드 기반이며 논 블로킹 패러다임의 비동기적인 동시성 언어입니다. 라는 한 줄에 담긴 심오한 작동 원리가 있다. 그 외에도 웹 브라우저를 위해 태어난 언어인 자바스크립트를 높은 퍼포먼스로 작동시키기 위해 C++로 짜인 node.js의 모듈이 돕는다거나, 이벤트 루프..
백엔드 개발을 하면서 몇 년간 JSON으로 데이터를 옮기는 작업을 하거나 서버를 띄우는 작업만 했었는데, 만들어보고 싶었던 것도 있었고 간단한 프런트엔드 개발에 대해서 공부하고 싶어서 이번에 개인 프로젝트를 레일즈를 써서 만들게 되었다. MVC 패턴 프레임워크를 선택하는 과정에서 쟝고를 쓸지 레일즈를 쓸지 고민했었는데, 파이썬 프레임워크로는 이미 플라스크를 써본 적이 있었고, 루비 생태계가 궁금했기 때문에 루비 온 레일즈를 써서 프로젝트를 진행했다. ruby를 세팅하는 과정이 초반에 생각보다 많이 난잡했는데, 루비를 설정하는 기본적인 설정하는 방법과 rails를 사용하는 방법을 포스팅하여 남기도록 한다. 본론ruby 설치먼저 루비를 먼저 설치해야한다. 맥을 사용하는 경우에는 이미 루비가 설치되어 있는 경..
C 언어를 처음 공부할 때, 그냥 손에 잡히는 비주얼 스튜디오(Visual Studio)를 쓰긴 했었는데, 지금 돌이켜 생각해 보면 닭을 잡는 데 소 잡는 칼을 쓰는 느낌의 과분한 IDE였다. 비주얼 스튜디오는 상당히 무거운 사이즈를 차지하고 있기 때문에, 그냥 C 언어를 실행시키는 용도라면 크게 적합하지 않다! 또한 scanf 대신 scanf_s를 사용하게 한다거나, C 언어로 쓰인 코드를 실행시키는데, 빈 프로젝트를 만들고.. 번거로운 과정이 꽤나 있다. C 언어를 실행하는 다양한 방법이 있지만, 그중 개인적으로 선호하는 방법은 vscode에서 C를 실행시킬 수 있는 환경을 갖추는 것이다. 사람마다 환경이 다르겠지만, 필자는 Jetbrains의 IDE로 자바 및 자바스크립트 환경 개발하며, 전공 ..