본문 바로가기

개발31

[Linux] systemctl 명령 에러 System has not been booted with systemd as init system (PID 1). WSL을 사용 중 systemd 환경이 아니라는 오류가 발생합니다. $ sudo systemctl status System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: Host is down 원인은 WSL은 루트 시스템 프로세스가 systemd가 아닌 init이기 때문입니다. $ pstree 명령을 통해 확인할 수 있습니다. pstree 명령어는 실행되고 있는 프로세스들간의 연결구조를 트리형식으로 보여줍니다. $ pstree init─┬─init─┬─init───docker-desktop-───14*[{docker-desktop-}] │ └─init───docker───20*.. 2023. 4. 11.
[Elasticsearch] 집계 쿼리 다음 예제들과 인덱스는 ELK stack이 구축되어 있다는 가정하에, 키바나에서 제공하는 샘플데이터를 이용합니다. 키바나 홈 -> Get started by adding integrations 엘라스틱서치에서 집계는 데이터를 그룹핑하고 통계값을 얻는 기능으로 SQL의 GROUP BY와 통계 함수를 포함하는 개념입니다. 이를테면 데이터를 날짜별로 묶거나 특정 카테고리별로 묶어 그룹별 통계를 내는 방식입니다. 집계가 중요한 이유는 키바나의 주 기능인 데이터 시각화와 대시보드는 대부분 집계 기능을 기반으로 동작하며, 집계를 제대로 이해할수록 키바나라는 툴을 더 잘 사용할 수 있습니다. 집계의 요청 / 응답 형태 집계를 위한 특별한 API가 제공되는 것은 아니며, search API의 요청 본문에 aggs 파라.. 2023. 4. 10.
[Elasticsearch] 검색 쿼리 다음 예제들과 인덱스는 ELK stack이 구축되어 있다는 가정하에, 키바나에서 제공하는 샘플데이터를 이용합니다. 키바나 홈 -> Get started by adding integrations 엘라스틱서치에서 쿼리를 사용하는 방법은 쿼리 스트링과 쿼리 DSL 두 가지가 있습니다. 쿼리 스트링은 한 줄 정도의 간단한 쿼리에 사용하고 쿼리 DSL은 한 줄에 넣기 힘든 복잡한 쿼리에 사용합니다. 먼저 쿼리를 작성하기 위해 엘라스틱 서치의 문자열에 대해 알아야 합니다. 5.x 버전부터 문자열 타입이 텍스트와 키워드 라는 두가지 타입으로 분리되었습니다. 텍스트 타입은 일반적으로 분석기에 의해 토큰으로 분리되고 역인덱싱을 합니다. 키워드 타입의 경우 문자열 전체가 하나의 용어로 인덱싱 됩니다. 자세한 내용은 아래 .. 2023. 4. 7.
[Elasticsearch] 벌크 데이터 bulk API 데이터 CRUD 동작을 할 때, REST API를 호출해 하나하나 도큐먼트를 요청하는 것보다 벌크로 한번에 요청하는 것이 효율적입니다. POST _bulk {"index" : {"_index": "mydoc", "_id": "1"}} {"field_test": "test", "field_test2": "test"} {"create" : {"_index": "mydoc", "_id": "2"}} {"field_test": "test", "field_test2": "test"} {"update": {"_id" : "2", "_index": "mydoc"}} {"doc": { "field_test" : "update"}} {"delete": {"_index": "mydoc", "_id": "1"}} 위와 같이.. 2023. 3. 27.
[Elasticsearch] CRUD - 데이터 입력, 조회, 삭제, 수정 1. 입력 (PUT) 도큐먼트를 입력하는 경우, PUT 매소드를 사용합니다. mydoc 이라는 인덱스에 ID가 1인 도큐먼트를 입력하려면 아래와 같이 작성합니다. PUT mydoc/_doc/1 { "title":"안녕하세요", "message":"반갑습니다." } 이전에 ID가 1인 도큐먼트가 없다면 response상에서 result는 created를 반환합니다. 이때 다시 동일한 입력을 한다면 ID가 1에 해당하는 도큐먼트가 mydoc인덱스에 존재하기 때문에 response상에서 result는 updated를 반환하고 덮어쓰기 됩니다. 덮어쓰기를 방지하기위해 _doc 대신 _create를 사용해야 합니다. PUT mydoc/_create/1 { "title":"안녕하세요", "message":"반갑습니.. 2023. 3. 27.
웹 브라우저로 개발하기 (온라인 IDE) 개발 환경 구축 없이 브라우저에서 개발환경 기능을 가진 웹 사이트를 소개합니다. 1) ideone Ideone.com Ideone is something more than a pastebin; it's an online compiler and debugging tool which allows to compile and run code online in more than 40 programming languages. ideone.com C Perl C# PHP C++ Python C++14 Python 3 Haskell Ruby Java SQLite Objective-C Swift Pascal VB.net 등 자주 쓰이는 언어들의 개발환경을 제공합니다. 각 언어를 선택하면 기본 템플릿을 제공하며 자동으로 .. 2022. 12. 28.
C++ 백준 ios_base::sync_with_stdio(false); cin.tie(null); 구문을 추가해주는 이유 C++로 백준이나 알고리즘 문제를 풀 때, 보통 실행속도를 높이기 위해 아래 구문을 사용합니다. #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); // endl (x) -> '\n'사용 return 0; } C++의 cin과 cout은 scanf와 printf보다 속도가 느립니다. 출력은 큰 차이는 아니지만 입력같은 경우는 2배 이상의 속도 차이가 난다고 합니다. 실제로 아래글 예시의 입력의 경우, scanf를 쓰는 경우 평균 0.9206초가 걸리고, cin을 쓰는 경우는 평균 2.1742초가 걸립니다. 출력의 경우, printf를 쓰는 경우 평균 0.8614초가.. 2022. 12. 26.
REMIX vs NEXT.JS 비교하기 최근 클라이언트 사이드 렌더링(CSR)을 기반으로 발전해온 프론트엔드 개발에서 이 CSR의 단점을 보완하기 위해 과거의 웹 동작 방식인 서버 사이드 렌더링(SSR)을 채택하는 경우가 많아졌습니다. (이 글을 읽기 전 , 브라우저 렌더링에 관한 글을 읽고 보시면 좋을 것 같습니다.) 브라우저 렌더링 CSR와 SSR 최근 클라이언트 사이드 렌더링(CSR)을 기반으로 발전해온 프론트엔드 개발에서 이 CSR의 단점을 보완하기 위해 과거의 웹 동작 방식인 서버 사이드 렌더링(SSR)을 채택하는 경우가 많아졌습니다. parkkingcar.tistory.com SSR을 가능하게 하는 React 메타 프레임워크인 Remix 와 Next.js 에 대해 비교하며 설명하겠습니다. Remix 리액트 메타 프레임워크로 2021.. 2022. 12. 23.
브라우저 렌더링 CSR와 SSR 최근 클라이언트 사이드 렌더링(CSR)을 기반으로 발전해온 프론트엔드 개발에서 이 CSR의 단점을 보완하기 위해 과거의 전통적인 웹 동작 방식인 서버 사이드 렌더링(SSR)을 채택하는 경우가 많아졌습니다. 리액트를 사용하여 웹 프론트엔드 개발을 할 때, CSR 방식으로 개발이 가능하고 Next.js, Remix 등의 프레임워크를 사용하거나 환경세팅을 통해 SSR 방식으로 개발이 가능합니다. 1. WEB 먼저 웹의 역사를 살펴봐야 합니다. 1990년 중반까지는 대부분의 웹이 정적 사이트로 정해진 url로 접속하면 서버의 html 문서를 받아와서 보여주는 형식이였습니다. 즉, 페이지 안에서 다른 링크를 클릭하면 다시 서버의 해당 html 문서 받아왔습니다. 1998년, XMLHttpRequst의 등장으로 J.. 2022. 12. 23.