본문 바로가기

전체 글56

Elasticsearch에 대해 가볍게 알아보자. 1. Elasticsearch란? 아파치 루씬(Apache Lucene) 기반의 분산형 검색 엔진입니다. RDBMS처럼 열 데이터(Column)로 저장하는 것이 아닌, JSON 문서로 직렬화된 데이터를 저장합니다. 위에서 소개한 대로 분산형 검색 엔진으로 하나의 클러스터 내에 여러 노드가 있을 경우, 전체에 분산되어 저장되며 어떤 노드에서든 쉽고 빠르게 접근할 수 있습니다. 또한, 문서가 저장되고 실시간(약 1초 이내)으로 색인되어 검색이 가능합니다. 이를 위해 Elasticsearch는 역 색인(inverted index)이라는 데이터 구조를 사용합니다. 이 역 색인은 문서 내의 모든 단어를 나열하고, 그 단어에 문서를 Key-Value 형식으로 추가합니다. 즉, 아래와 같은 구조가 됩니다. 즉, My.. 2023. 8. 20.
Flutter 앱 아이콘을 내 이미지로 변경해보자. 안녕하세요. 최근 플러터로 애플리케이션을 개발하고, 1차적으로 완성된 앱을 8월 중 배포하려고 합니다. 이에 제일 중요(?)한 앱의 아이콘을 변경하는 방법을 알아보았습니다. 1. 앱 아이콘 사진 선정 1024x1024 크기의 이미지 파일을 선택합니다. 예시로, 아래와 같은 이미지를 선정했습니다. 여러분이 알고계시는 그 iOS의 단축어 아이콘입니다. 2. 이미지를 앱 아이콘으로 변환하기 이미지를 앱 아이콘으로 변환해주는 사이트입니다. 사실 이 게시글의 전부입니다. 아래의 사이트에 접근하시어, 이미지를 업로드하여 변환된 파일을 [Generate] 버튼을 클릭해 다운로드합니다. https://www.appicon.co/ App Icon Generator www.appicon.co 3. 변환된 이미지를 적용합니.. 2023. 8. 12.
MySQL Replication 복제가 안되는 현상에 대해 알아보자 (error 1594) 최근 운영중인 백업 서버(replication slave)에서 Disk full 이슈로 인해 Replication이 중단된 사례가 있었습니다. DB는 항상 우리를 간쫄리게 합니다... DBA 분들은 항상 존경스러워요. 🤣 mysql> SHOW SLAVE STATUS\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 10.0.0.0 Master_User: repluser Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000057 Read_Master_Log_Pos:.. 2023. 8. 11.
여러분의 getter는 안녕하신가요? 저는 공공 클라우드 환경에서의 웹서비스를 개발 및 운영하고 있습니다. 그러다 보니 보안인증(CSAP) 유지를 위해 KISA에게 매년 인프라와 소스코드를 검사받습니다. (어릴 적 숙제 검사 느낌) 그중 소스 취약점에 대한 이야기인데요, 보안인증 중 처음 맡아본 소스 취약점 항목에서 생각지도 못했던 getter에서 문제가 발생했습니다. 바로 우리가 잘 알고 있는 객체지향 프로그래밍(OOP)의 특징 중 하나인 캡슐화에 대한 내용입니다. 취약점의 이름은 [Public 메서드부터 반환된 Private 배열]. 즉, Private으로 선언된 변수에 대해 Public으로 선언된 getter를 통해 배열에 대한 참조를 변경할 수 있다는 취약점입니다. 왜 우리는 캡슐화를 잘 지켰다고 생각했을까? private으로 선언된.. 2023. 7. 2.
플러터로 개발한 앱을 apk로 추출해보자 실제 기기에서 테스트해 보기 위해 .apk 파일로 추출을 해보려 합니다. 물론 개발자 옵션을 통해 설치 후 사용이 가능하지만, 저는 앱등이라 안드로이드가 없어서 다른 분 핸드폰에 설치하기 때문입니다. apk 추출 명령어 혹시 command not found : flutter와 같은 형식으로 flutter 명령어를 인식하지 못할 경우, 시스템 환경변수에 flutter를 등록합니다. cd ~/{project-root} flutter build apk --release --target-platform=android-arm64 빌드 타겟 위치 플러터 프로젝트 위치에서 build/app/outputs/apk 디렉토리 밑에 app-release.apk 파일로 떨어집니다. 이 apk를 안드로이드 핸드폰에 옮긴 후, .. 2023. 6. 20.
Mac / Windows SSH 클라이언트 추천 - Tabby 최근 회사에서 업무용 노트북을 Windows에서 맥북으로 변경하게 되었습니다. 개인적으로는 Windows가 레퍼런스도 많고, 관리 및 사용이 간편해서 더 선호하지만 iOS 앱 개발/빌드/테스트를 위해 MacOS가 필요했습니다. 또한, Windows에서는 빌드 속도가 느린 애플리케이션도 있어서 어쩔 수 없는 선택이었죠. 집에서도 Windows + Macbook을 함께 사용하고, 원래도 앱등이이기도 해서 별 문제가 없는 듯했지만 SSH 클라이언트가 가장 문제였습니다. 회사에서의 SSH 사용 패턴은 여러 개의 세션에 설정된 로그온 액션 등을 설정해 편리하게 사용했는데 맥에서는 마땅한 SSH 클라이언트가 없거나, 비용이 많이 드는 유료 앱이거나 하는 문제였죠. 반 포기 상태로 이전에 사용하던 Windows 노트.. 2023. 6. 20.