본문 바로가기

전체 글15

[Elasticsearch] 성능 향상을 위한 _id 필드 사용 지양하기 Elasticsearch에서는 종종 몇 개의 필드만 검색해야 하는 경우가 많다. 이런 경우, 해당 필드들에 대해 `doc_values` 를 사용하면 쿼리 성능을 크게 향상시킬 수 있다. 이때, 기본적으로 검색되는 하나의 필드가 바로 `_id` 필드이다. 겉으로 보기에 이 필드는 아무 문제가 없어보이지만, 시스템 성능을 저해할 수 있다. 또 다른 전형적인 Elasticsearch 사용 사례는 보조 데이터베이스로서의 역할, 특히 전문 검색에서 관련 문서의 ID를 검색하는 데 Elasticsearch를 사용하는 경우이다. 대부분의 Elasticsearch 를 사용하는 사용자는 외부 ID를 `_id` 필드에 저장하여 일을 간단하게 하고 데이터 중복을 피하는 경우가 많다. 혹은 `_id`를 직접 사용하지 않더라도.. 2024. 2. 14.
ELK를 활용한 간단한 SIEM 구축해보기 (feat. WhiteHat School) # SIEM 이란 무엇인가? Security Information and Event Management, 정보 및 이벤트 관리 SIEM은 IT 네트워크 전반의 데이터를 중앙 집중화하여 보안 문제를 탐지하는 데 사용한다. 이는 로그 관리, 보안 이벤트 탐지, 보고 및 검색 기능을 포함한다. # ELK 란 무엇인가? ELK 스택은 Elasticsearch, Logstash, 그리고 Kibana의 세 가지 주요 오픈 소스 프로젝트를 말한다. Elasticsearch 역할: Elasticsearch는 분산형 검색 및 분석 엔진, 대량의 데이터를 신속하게 저장, 검색 및 분석할 수 있다. 특징: 고가용성, 확장성, 빠른 검색 성능을 제공, JSON 문서를 기반으로 하며, 복잡한 검색 쿼리를 지원한다. Logsta.. 2024. 1. 21.
[Java] Servlet (서블릿) Java Servlet(서블릿)은 서버의 기능을 확장하는 Java 소프트웨어 구성 요소이다. 서블릿은 많은 유형의 요청에 응답할 수 있지만 웹 서버에서 웹 응용 프로그램을 호스팅하기 위해 웹 컨테이너를 가장 일반적으로 구현하므로 서버 측 서블릿 웹 API로 적합하다. 이러한 웹 서블릿은 PHP 및 ASP.NET 과 같은 다른 동적 웹 콘텐츠 기술(dynamic web content technologies)과 동등한 역할을 처리한다고 볼 수 있다. 서블릿을 정의해보면 서블릿(servlet)은 WAS에 동작하는 JAVA 클래스이고, 서블릿은 HttpServlet 클래스를 상속받아야 합니다. 서블릿과 JSP로부터 최상의 결과를 얻으려면, 웹 페이지를 개발할 때 이 두 가지(JSP, 서블릿)를 조화롭게 사용해야.. 2023. 11. 19.
[Docker] '--no-cache' 옵션 도커에서 --no-cache 옵션은 docker build 명령어로 이미지를 생성할 때 캐시를 사용하지 않도록 하는 옵션이다. 기본적으로 도커는 이미지 빌드 시에 이전에 실행된 단계의 결과물을 캐싱하여 동일한 단계를 다시 실행하지 않고 빠르게 이미지를 생성한다. 이 캐싱은 개발 단계에서는 유용하지만 때로는 원치 않는 동작을 일으킬 수 있다. --no-cache 옵션을 사용하면 캐싱을 사용하지 않고, 이미 존재하는 캐시를 무시하고 매번 새로운 이미지를 빌드한다. 이는 다음과 같이 docker build 명령어를 사용할 때 옵션으로 추가된다: docker build --no-cache -t --no-cache 옵션이 유용한 경우 최신 소스나 종속성을 가져와야 할 때: 이전에 캐싱된 빌드 결과를 무시하고 항상.. 2023. 11. 7.
[Security] CIS (Center of Internet Security) Benmarks https://www.cisecurity.org/ CIS CIS is a forward-thinking nonprofit that harnesses the power of a global IT community to safeguard public and private organizations against cyber threats. www.cisecurity.org CIS (Center of Internet Security) Benchmarks는 인터넷 보안의 중심이라는 의미를 가지고 있다. 이것은 전 세계적으로 사용되는 IT 시스템 및 기기에 대한 보안 설정 가이드라인을 제공하는 프레임워크로, 공개적으로 사용할 수 있도록 제공되며, 실질적인 보안 향상을 위한 권장 사항들을 포함하고 있다. CIS Ben.. 2023. 10. 23.
[Security] 적대적 기계학습 (Adversarial Machine Learning) 인공지능(AI)과 딥 러닝(DL) 기법이 빠르게 발전하면서 배포된 알고리즘의 보안과 견고성을 보장하는 것이 중요하다. 최근에는 적대적 샘플에 대한 DL 알고리듬의 보안 취약성이 널리 인식되고 있다. 조작된 샘플은 인간에 의해 양성으로 인식되는 동안 DL 모델의 다양한 잘못된 행동을 초래할 수 있다. 실제로도 다양한 시나리오에서 적대적 공격의 성공적인 구현은 그 실용성이 입증되고 있으며, 적대적 공격과 방어 기술은 머신 러닝과 보안 커뮤니티 모두에서 점점 더 많은 관심을 끌고 있다. 적대적 기계학습은 기만적 입력을 제공하여 모델을 속이려 하는 머신 러닝 기법이다. 가장 일반적인 경우는 기계 학습 모델에 오작동을 일으키는 것이다. 대부분의 기계 학습 기법은 훈련과 시험 데이터가 동일한 통계 분포에서 생성되는.. 2023. 10. 16.
Docker를 활용한 초간단 웹 서버(Flask) 구축하기 (feat. WhiteHat School) Dockerfile 과 Docker Compose 차이 Difference between Docker Compose Vs Dockerfile Docker - Beginners Intermediate Advanced dockerlabs.collabnix.com Dockerfile은 사용자가 이미지를 조립하기 위해 호출할 명령을 담고 있는 간단한 텍스트 파일이다. 반면에 Docker Compose는 여러 컨테이너로 구성된 Docker 애플리케이션을 정의하고 실행하기 위한 도구이다. Docker Compose는 docker-compose.yml 파일에서 앱을 구성하는 서비스를 정의하여 이를 격리된 환경에서 함께 실행할 수 있게 한다. docker-compose up 명령만으로 앱을 실행시킬 수 있다. 만약 프.. 2023. 9. 17.
Vulhub 한글화 공동작업 기여하기 (feat. WhiteHat School) Git은 협업 도구로서의 역할을 넘어서, 다양한 사람들의 지식과 경험을 모아 하나의 프로젝트나 문서를 완성하는 데 사용할 수 있다. 해당 글은 https://github.com/gunh0/kr-vulhub 에 공동작업을 위한 가이드로 작성된 글이다. 깃(Git)은 무엇인가? 이 부분에 대해서는 다양한 기술 블로그들과 좋은 글들이 많기 때문에, 구글링을 권장한다. 참고1) Dev: Git의 개념과 기본 명령어 : https://medium.com/hcleedev/dev-git%EC%9D%98-%EA%B0%9C%EB%85%90%EA%B3%BC-%EA%B8%B0%EB%B3%B8-%EB%AA%85%EB%A0%B9%EC%96%B4-b264ab4301d4 Dev: Git의 개념과 기본 명령어 Git 기본 3부작 첫.. 2023. 9. 17.
[Architecture] 4가지 유형의 Event Driven Architecture Event Driven Architecture Pattern에서 Event Driven은 IT 영역에서 오래 사용된 키워드이며, 현재도 그 영향력이 대단하여 2018년 Gartner에서 선정한 유망한 기술 트렌드 중 하나로 뽑히기도 했다. Event Driven이라는 용어는 programming, architecture와 연결되어 다양한 정의로 표현된다. 주로 Event Driven 시스템은 Message Broker(Kafka, Rabbit MQ, Redis)와 결합하여, Message Driven 시스템으로 구성된다. 하지만, Event Driven Architecture Pattern이 때로는 불필요한 복잡성을 높이는 결과만 초래할 수 있으며, 그렇기에 더욱 신중하게 고려해야 한다. Top 10 S.. 2023. 9. 11.
[Agile] Burn Down과 Burn Up 차트로 업무 효율성 극대화하기 애자일(Agile) 프로젝트 관리 방법론은 빠르게 변화하는 요구사항에 유연하게 대응하면서 고객의 만족도를 높이기 위한 방법론이다. 이 방법론에서 중요한 역할을 하는 것 중 하나가 Burn Down과 Burn Up 차트이다. 이 두 차트를 통해 프로젝트의 진행 상황을 명확하게 파악하고, 팀의 업무 효율성을 극대화하는 방법에 대해 알아본다. 1. Burn Down 차트란? Burn Down 차트는 프로젝트의 시작부터 종료까지 남아있는 작업의 양을 시각화하는 도구이다. 이 차트를 통해 프로젝트의 진행 상황을 한 눈에 파악할 수 있으며, 예상 완료 시간을 추정하는 데 도움을 준다. 작업에 필요한 예상 노력 보고 기한 내에 프로젝트 또는 스프린트를 완료하려면 필요한 노력량을 분명하게 파악해야 한다. 번다운 차트가.. 2023. 8. 22.
[Kotlin] Late-initialized properties and variables 코틀린은 자바와 같이 객체 지향 프로그래밍 언어이며, 다양한 편의 기능을 제공한다. 그 중 하나인 Late-initialized 속성과 변수는 프로그래밍 시 유용한 기능이다. 1. Late-initialized 속성과 변수의 개념 Early-initialized vs. Late-initialized: Early-initialized 속성은 변수를 선언하는 동시에 값을 할당하는 반면, Late-initialized 속성은 선언 시 초기값을 주지 않고, 나중에 값을 할당하는 방식 사용 이점: Late-initialized 속성과 변수는 객체를 초기화할 때 유용 예를 들어, 객체 생성 시 필요한 정보가 늦게 도착하는 경우나, 초기화에 시간이 걸리는 경우에 사용할 수 있음 2. Late-initialized 속.. 2023. 6. 23.
[AI] Prompt Engineering (feat. ChatGPT) - 인공지능과 "잘" 대화하기 Prompt Engineering은 자연어 처리 모델에 입력할 텍스트를 설계하는 것이다. 예를 들어, 자연어 생성 모델에 주어진 프롬프트(prompt)에 따라 생성되는 텍스트의 양상을 조정할 수 있다. 이는 모델의 성능 향상과 응용 활용에 매우 중요하다. 쉽게 말해 하나의 대화 상자(Dialog Box)로부터 자연어로 명령하고 올바른 혹은 최적의 결과값을 받기 위해서는 Prompt Engineering 이 중요하다고 말할 수 있다. Prompt Engineering Use the API to generate completions, distill text into semantically meaningful vectors, and more. Get state-of-the-art natural language.. 2023. 1. 24.
[Web] HTTP (Hypertext Transfer Protocol) HTTP(Hypertext Transfer Protocol)는 인터넷상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜이다. HTTP는 어떤 종류의 데이터든지 전송할 수 있도록 설계되어 있고, HTML문서, 이미지, 동영상, 오디오, 텍스트 문서 등의 리소스를 가져올 수 있다. 하이퍼텍스트 기반으로(Hypertext) 데이터를 전송하겠다(Transfer) = 링크기반으로 데이터에 접속하겠다는 의미인데, 일반적으로 웹 브라우저에 의해 요청이 시작된다. 클라이언트와 서버는 데이터 스트림이 아닌 개별 메시지를 교환하여 통신한다. 클라이언트 (보통 웹 브라우저)가 보낸 메시지를 Request(요청) 이라고 하고 서버가 응답으로 보낸 메시지를 Response(응답) 이라고 한다. 1990년대 .. 2022. 12. 25.
[논문] Benchmarking differentially private synthetic data generation algorithms Tao, Yuchao, et al. "Benchmarking differentially private synthetic data generation algorithms" The Third AAAI Workshop on Privacy-Preserving Artificial Intelligence (PPAI-22) This work presents a systematic benchmark of differentially private synthetic data generation algorithms that can generate tabular data. Utility of the synthetic data is evaluated by measuring whether the synthetic data pre.. 2022. 12. 21.
[논문] APRIL: Finding the Achilles' Heel on Privacy for Vision Transformers Lu, Jiahao, et al. "APRIL: Finding the Achilles' Heel on Privacy for Vision Transformers" The Third AAAI Workshop on Privacy-Preserving Artificial Intelligence (PPAI-22) https://arxiv.org/abs/2112.14087 https://aaai-ppai22.github.io/#accepted_papers Federated learning frameworks typically require collaborators to share their local gradient updates of a common model instead of sharing training da.. 2022. 12. 21.