SW 개발
-
자바스크립트에서 비동기 연산을 다루는 Promise, Promise는 콜백지옥에서 탈출하게 해주는 자바스크립트 API이다. 콜백지옥(Callback Hell) 이란? 자바스크립트의 비동기 프로그래밍시 발생하는 문제로 함수의 매개변수로 넘겨지는 콜백 함수가 반복되어 가독성도 떨어지고 로직을 변경하기 어려워지는 경우가 있다. 요즘에는 promise와 async를 사용하면서 콜백지옥을 탈출하기 쉬워졌다. step1(function (value1) { step2(function (value2) { step3(function (value3) { step4(function (value4) { step5(function (value5) { step6(function (value6) { // Do something w..
[NodeJS] 자바스크립트 비동기 연산을 다루는 Promise자바스크립트에서 비동기 연산을 다루는 Promise, Promise는 콜백지옥에서 탈출하게 해주는 자바스크립트 API이다. 콜백지옥(Callback Hell) 이란? 자바스크립트의 비동기 프로그래밍시 발생하는 문제로 함수의 매개변수로 넘겨지는 콜백 함수가 반복되어 가독성도 떨어지고 로직을 변경하기 어려워지는 경우가 있다. 요즘에는 promise와 async를 사용하면서 콜백지옥을 탈출하기 쉬워졌다. step1(function (value1) { step2(function (value2) { step3(function (value3) { step4(function (value4) { step5(function (value5) { step6(function (value6) { // Do something w..
2020.08.26 -
왜 Docker로 서버를 만들어야 하는가. 실제 서비스 중인 서버를 운용하고 있다면 그 서버를 실수로라도 날리는 위험은 절대로 있어서는 안될 것입니다. 서버를 구축하는데 있어서 '안정성'은 굉장히 중요한 요소입니다. 도커를 이용하면 서버를 날리는 실수는 있을 수 없는 지독한 서버를 구축할 수 있습니다. 또, 도커는 리눅스 컨테이너 방식과 다르게 일련의 기능을 완전히 독립된 소프트웨어 환경에서 동작하게 됩니다. 그래서 OS자원을 그대로 사용하므로 하이퍼 바이저가 가상환경을 위해 가상의 커널을 만드는 오버헤드가 거의 없다는 장점을 가지고 있습니다. 완벽하게 구성한 세팅을 그대로 이미지화 할 수 있고, 해당 이미지는 도커 위에서 완벽히 동일하게 동작하는 걸 보장합니다. 해당 이미지로 컨테이너를 제작하게 되면,..
[Docker] Docker로 서버 구축(feat. node.js, 귀여운 도커템)왜 Docker로 서버를 만들어야 하는가. 실제 서비스 중인 서버를 운용하고 있다면 그 서버를 실수로라도 날리는 위험은 절대로 있어서는 안될 것입니다. 서버를 구축하는데 있어서 '안정성'은 굉장히 중요한 요소입니다. 도커를 이용하면 서버를 날리는 실수는 있을 수 없는 지독한 서버를 구축할 수 있습니다. 또, 도커는 리눅스 컨테이너 방식과 다르게 일련의 기능을 완전히 독립된 소프트웨어 환경에서 동작하게 됩니다. 그래서 OS자원을 그대로 사용하므로 하이퍼 바이저가 가상환경을 위해 가상의 커널을 만드는 오버헤드가 거의 없다는 장점을 가지고 있습니다. 완벽하게 구성한 세팅을 그대로 이미지화 할 수 있고, 해당 이미지는 도커 위에서 완벽히 동일하게 동작하는 걸 보장합니다. 해당 이미지로 컨테이너를 제작하게 되면,..
2020.06.26 -
저번 포스팅까지 도커에 대해 알아보고, 도커 툴박스를 설치하는 방법을 알아 보았습니다. 2020/06/24 - [SW개발/Framework Library] - [Docker] Docker는 무엇인가(Environment Disparity) 2020/06/26 - [SW개발/Framework Library] - [Docker] 윈도우에 도커 설치(Docker Toolbox) Virtual Box에 대한 기본적인 정보를 모른다면, 나중에 도커를 사용할 때 Virtual Box관련 환경설정 때문에 고생할 수 있다고 합니다. 그래서 오늘은 먼저 Virtual Box에 대해 알아보고, 윈도우에서 도커 사용시 왜 VM이 필요한지에 대해 살펴보겠습니다. 먼저, 도커 터미널을 열고, 다음 명령어를 입력합니다. dock..
[Docker] Windows Docker와 Virtual Box저번 포스팅까지 도커에 대해 알아보고, 도커 툴박스를 설치하는 방법을 알아 보았습니다. 2020/06/24 - [SW개발/Framework Library] - [Docker] Docker는 무엇인가(Environment Disparity) 2020/06/26 - [SW개발/Framework Library] - [Docker] 윈도우에 도커 설치(Docker Toolbox) Virtual Box에 대한 기본적인 정보를 모른다면, 나중에 도커를 사용할 때 Virtual Box관련 환경설정 때문에 고생할 수 있다고 합니다. 그래서 오늘은 먼저 Virtual Box에 대해 알아보고, 윈도우에서 도커 사용시 왜 VM이 필요한지에 대해 살펴보겠습니다. 먼저, 도커 터미널을 열고, 다음 명령어를 입력합니다. dock..
2020.06.26 -
모든 개발자들이 Docker에 대해 배울 필요까지는 없지만, 대신 개발자라면 Docker가 무엇인지 이해해야한다고 합니다. 왜냐하면 Docker는 아주 특정한 문제점을 해결해주기 때문이라고.. 그 특정한 문제는 바로 Environment Disparity Docker가 해결할 수 있는 특정한 문제는 바로 "Environment Disparity". 즉, 개발 환경이 맞지 않는 상태를 Docker를 해결 할 수 있습니다. 예를 들어, 윈도우에서 개발하였고 모든 개발을 완료한 상황인데, 서버가 리눅스라서 코드가 동작하지 않을때.. 이와 같은 상황을 environment disparity라고 합니다. Docker를 왜 쓰는가 Docker가 environment disparity를 해결할 수 있는 이유는, Do..
[Docker] Docker Environment Disparity모든 개발자들이 Docker에 대해 배울 필요까지는 없지만, 대신 개발자라면 Docker가 무엇인지 이해해야한다고 합니다. 왜냐하면 Docker는 아주 특정한 문제점을 해결해주기 때문이라고.. 그 특정한 문제는 바로 Environment Disparity Docker가 해결할 수 있는 특정한 문제는 바로 "Environment Disparity". 즉, 개발 환경이 맞지 않는 상태를 Docker를 해결 할 수 있습니다. 예를 들어, 윈도우에서 개발하였고 모든 개발을 완료한 상황인데, 서버가 리눅스라서 코드가 동작하지 않을때.. 이와 같은 상황을 environment disparity라고 합니다. Docker를 왜 쓰는가 Docker가 environment disparity를 해결할 수 있는 이유는, Do..
2020.06.24 -
안드로이드를 무작정 개발하다 보면, 여러 스레드들이 충돌이 일어나 원하지 않는 결과가 나오거나 모듈의 순서가 맞지 않는 경우가 종종 있는데요. 스레드는 프로세스 안에서 돌아가는 코드와 별개로 병렬로 실행되며 여러개의 스레드가 존재할 수도 있습니다. "동기화"란, 여러 스레드가 같은 프로세스 안에서 서로 자원을 공유하기 때문에 영향을 주게 되는 것을 말하는데 만약 어떤 스레드가 처리하고 있던 내용을 중간에 다른 스레드가 처리하게 되면 충돌이 발생하거나 원치 않은 결과를 받을 수 있습니다. 이러한 현상을 스레드 간섭이라고 합니다. 그래서 오늘은 안드로이드 Handler, Thread, Looper, AsyncTask, Join, Syncronized 등 동기화에 관한 개념을 총 정리하도록 하겠습니다. ○ 안..
[Android] 핸들러, 스레드, 병렬처리, 동기화 왜 필요할까안드로이드를 무작정 개발하다 보면, 여러 스레드들이 충돌이 일어나 원하지 않는 결과가 나오거나 모듈의 순서가 맞지 않는 경우가 종종 있는데요. 스레드는 프로세스 안에서 돌아가는 코드와 별개로 병렬로 실행되며 여러개의 스레드가 존재할 수도 있습니다. "동기화"란, 여러 스레드가 같은 프로세스 안에서 서로 자원을 공유하기 때문에 영향을 주게 되는 것을 말하는데 만약 어떤 스레드가 처리하고 있던 내용을 중간에 다른 스레드가 처리하게 되면 충돌이 발생하거나 원치 않은 결과를 받을 수 있습니다. 이러한 현상을 스레드 간섭이라고 합니다. 그래서 오늘은 안드로이드 Handler, Thread, Looper, AsyncTask, Join, Syncronized 등 동기화에 관한 개념을 총 정리하도록 하겠습니다. ○ 안..
2020.06.02 -
● Android Speech Recognizer 안드로이드에서는 구글 SpeechToText, TextToSpeech 기술인 stt, tts를 내장 API로 지원하고 있습니다. 별도의 설치 없이 gradle에 특별한 세팅이 필요하지 않고 manifest에 몇 가지 권한을 주면 바로 불러와서 사용가능 합니다. Android Developers SpeechRecognizer 공식문서 ○ android.speech 클래스를 사용해 STT 기능 구현하기 1. AndroidManifest.xml 2. activity_main.xml 화면은 음성인식 시작 버튼과 음성인식 결과 텍스트뷰만 생성하였습니다. 3. MainActivity.java // android.speech 클래스에서 필요한 객체 임포트 import..
[Android] 구글STT, TTS 사용하기 (android.speech)● Android Speech Recognizer 안드로이드에서는 구글 SpeechToText, TextToSpeech 기술인 stt, tts를 내장 API로 지원하고 있습니다. 별도의 설치 없이 gradle에 특별한 세팅이 필요하지 않고 manifest에 몇 가지 권한을 주면 바로 불러와서 사용가능 합니다. Android Developers SpeechRecognizer 공식문서 ○ android.speech 클래스를 사용해 STT 기능 구현하기 1. AndroidManifest.xml 2. activity_main.xml 화면은 음성인식 시작 버튼과 음성인식 결과 텍스트뷰만 생성하였습니다. 3. MainActivity.java // android.speech 클래스에서 필요한 객체 임포트 import..
2020.05.26 -
● 형태소 분석기 한국어 처리에 있어 형태소 분석기는 매우 중요합니다. 영어의 경우 공백 기준으로 단어를 나누는 tokenize기능을 사용해도 큰 무리가 없지만, 한국어 문장에서 키워드를 추출하려면 각 단어들을 형태소 분석에 의하여 가치가 있는 명사, 동사, 조사 등을 추출해야 합니다. ○ 형태소 분석(Pos Tagging)이란? 원시말뭉치를 형태소 단위로 쪼개고 각 형태소에 품사 정보를 부착하는 작업을 가리킵니다. 많은 개발자, 데이터 분석가들이 한국어에 특화된 형태소 분석기를 만들어주었고 오픈소스로 이용할 수 있게 되었습니다. 특히 파이썬 패키지로 유명한 'KoNLPy'는 꼬꼬마, 꼬모란, 한나눔, 메캅 등의 유명한 형태소 분석기를 묶어 편리하게 사용할 수 있도록 되어있습니다. ○ 어떤 형태소 분석기..
[Android + NLP] Kkma형태소 분석기 안드로이드 스튜디오에서 사용하기● 형태소 분석기 한국어 처리에 있어 형태소 분석기는 매우 중요합니다. 영어의 경우 공백 기준으로 단어를 나누는 tokenize기능을 사용해도 큰 무리가 없지만, 한국어 문장에서 키워드를 추출하려면 각 단어들을 형태소 분석에 의하여 가치가 있는 명사, 동사, 조사 등을 추출해야 합니다. ○ 형태소 분석(Pos Tagging)이란? 원시말뭉치를 형태소 단위로 쪼개고 각 형태소에 품사 정보를 부착하는 작업을 가리킵니다. 많은 개발자, 데이터 분석가들이 한국어에 특화된 형태소 분석기를 만들어주었고 오픈소스로 이용할 수 있게 되었습니다. 특히 파이썬 패키지로 유명한 'KoNLPy'는 꼬꼬마, 꼬모란, 한나눔, 메캅 등의 유명한 형태소 분석기를 묶어 편리하게 사용할 수 있도록 되어있습니다. ○ 어떤 형태소 분석기..
2020.05.12 -
○ 탐색 알고리즘 코딩테스트 단골 문제 BFS, DFS 흔히 BFS, DFS + 재귀 문제만 잘 풀어도 코딩테스트에 통과할 수 있다고 하는데요. 그만큼 단골문제로 등장하는 BFS(너비 우선 탐색), DFS(깊이 우선 탐색)에 대해 알아보고 관련 백준 예제도 풀어도보도록 하겠습니다. 우선 탐색 이란 무엇인가. 프로그래밍을 할 때 데이터베이스 안의 수 많은 자료에서 원하는 자료를 찾으려면 어떻게 해야할까요? 만약 데이터가 정렬이 되어있다면 이진탐색을 통해서 최대 로그N의 연산만으로 찾을 수 있겠지만, 정렬이나 분류가 되어있지 않는 자료라면 이야기가 달라집니다. 원하는 자료를 찾을 때 까지 하나씩 직접 확인하며 찾아야합니다. 이러한 무식한 방법이 바로 깊이 우선 탐색(DFS)와 너비 우선 탐색(BFS) 입니다..
[알고리즘] 탐색 BFS, DFS _ 백준 1260 파이썬○ 탐색 알고리즘 코딩테스트 단골 문제 BFS, DFS 흔히 BFS, DFS + 재귀 문제만 잘 풀어도 코딩테스트에 통과할 수 있다고 하는데요. 그만큼 단골문제로 등장하는 BFS(너비 우선 탐색), DFS(깊이 우선 탐색)에 대해 알아보고 관련 백준 예제도 풀어도보도록 하겠습니다. 우선 탐색 이란 무엇인가. 프로그래밍을 할 때 데이터베이스 안의 수 많은 자료에서 원하는 자료를 찾으려면 어떻게 해야할까요? 만약 데이터가 정렬이 되어있다면 이진탐색을 통해서 최대 로그N의 연산만으로 찾을 수 있겠지만, 정렬이나 분류가 되어있지 않는 자료라면 이야기가 달라집니다. 원하는 자료를 찾을 때 까지 하나씩 직접 확인하며 찾아야합니다. 이러한 무식한 방법이 바로 깊이 우선 탐색(DFS)와 너비 우선 탐색(BFS) 입니다..
2020.05.08