Common Software Development Trend (with Java)

황제낙엽 2024.01.19 23:56 조회 수 : 592

sitelink1  
sitelink2  
sitelink3  
sitelink4  
sitelink5  
extra_vars6  

 

 

LDAP(Lightweight Directory Access Protocol)

LDAP은 네트워크 프로토콜로서, 사용자 및 시스템 정보를 중앙 집중식으로 관리하고 접근하기 위해 사용

 

SBOM (Software Bill of Materials)

소프트웨어의 구성 요소 목록, 즉 소프트웨어를 구축하는 데 사용된 모든 소프트웨어 부품과 그 관계를 상세하게 기록한 명세서

 

PIP(Package Installer for Python)

파이썬 패키지를 설치하고 관리하는 데 사용되는 도구

 

ECMAScript Module(ESM)

JavaScript의 모듈 시스템으로, JavaScript 코드를 더 구조적이고 재사용 가능하게 만들기 위해 도입된 표준입니다.

기본적으로 코드를 분리된 파일(모듈)로 나누고, 필요한 곳에서 다른 파일을 import 하여 사용할 수 있게 합니다.

* 주요 특징 :

 1. 정적 선언 : `import`와 `export`를 사용하여 모듈을 명확히 선언합니다. 이는 실행 전에 코드를 분석하는 데 도움이 됩니다.

 2. 엄격 모드 : 모든 모듈은 자동으로 엄격 모드에서 실행됩니다.

 3. 트리 셰이킹 지원 : 사용하지 않는 코드를 제거하여 번들 파일을 더 작게 만드는 데 유용합니다.

 4. 브라우저 및 Node.js 지원 : 브라우저 환경과 Node.js에서도 사용할 수 있습니다.

 

Sanitizing

  • 목적 : 데이터에서 잠재적으로 위험한 요소를 제거하거나 수정하여 안전하게 만듭니다.
  • 방법 : 데이터 검증, 필터링, Escape-HTML을 포함한 다양한 기술을 사용합니다.
  • 사용 사례 : 데이터베이스에 저장하거나 다른 시스템으로 전송하기 전에 입력 데이터를 처리하여 보안을 강화합니다.

 

Escape-HTML

  • 목적 : HTML 태그나 특수 문자가 코드로 해석되지 않도록 방지합니다.
  • 방법 : 특수 문자를 HTML 엔티티로 변환합니다. 예를 들어, `<`는 `&lt;`, `>`는 `&gt;`로 변환됩니다.
  • 사용 사례 : 사용자 입력을 HTML 페이지에 표시할 때, XSS(크로스 사이트 스크립팅) 공격을 방지하기 위해 사용됩니다.
 

Elasticsearch

  • 다양한 형태의 데이터를 실시간으로 수집, 검색, 분석 및 시각화할 수 있도록 지원하는 오픈 소스 제품
  • Apache Lucene 기반의 분산형 검색 및 분석 엔진으로, JSON 문서 기반의 데이터를 거의 실시간으로 저장, 검색 및 분석

 

# ~ 2023

 

Colab

Google Colaboratory(Colab)는 Google에서 제공하는 클라우드 기반의 Jupyter Notebook 환경입니다. 

사용자는 별도의 설정 없이 브라우저에서 Python 코드를 작성하고 실행할 수 있으며, 데이터 과학, 머신러닝(ML), 딥러닝 개발 등에 자주 사용됩니다.

 

Gradio

Gradio는 머신러닝(ML) 모델 또는 Python 함수에 대해 간단하고 직관적인 웹 기반 인터페이스를 생성할 수 있도록 도와주는 오픈 소스 Python 라이브러리입니다.

사용자는 몇 줄의 코드로 사용자 정의된 대화형 웹 애플리케이션을 생성하여 ML 모델의 입력과 출력을 쉽게 시각화하거나 테스트할 수 있습니다.

 

RAG

RAG(Retrieval-Augmented Generation)은 검색과 생성 기능을 결합한 시스템입니다.

기존의 대규모 언어 모델(LLM)을 확장하여, 주어진 컨텍스트나 질문에 대해 더욱 정확하고 풍부한 정보를 제공하는 방법입니다. 

모델이 학습 데이터에 포함되지 않은 외부 데이터를 실시간으로 검색(retrieval)하고, 이를 바탕으로 답변을 생성(generation)하는 과정을 포함합니다. 

특히 환각(생성된 내용이 사실이 아닌 것으로 오인되는 현상)을 방지하고, 모델이 최신 정보를 반영하거나 더 넓은 지식을 활용할 수 있게 합니다.

 

Streamlit

Streamlit은 Python을 사용해 데이터 애플리케이션을 간단하고 빠르게 개발할 수 있는 오픈 소스 웹 애플리케이션 프레임워크입니다.

데이터 과학자, 분석가, 개발자가 복잡한 웹 개발 기술 없이 데이터 시각화와 대화형 애플리케이션을 제작할 수 있도록 돕습니다.

 

LangChain

LangChain은 언어 모델(특히 GPT와 같은 대규모 언어 모델)을 활용하여 복잡한 애플리케이션을 구축하기 위한 Python 및 JavaScript 기반의 프레임워크입니다.

LangChain은 언어 모델의 기본적인 질의응답 기능을 넘어 여러 기능과 데이터를 통합하여 보다 강력한 애플리케이션을 개발할 수 있도록 지원합니다.

 

Joda-Time

Joda-Time은 Java 8 이전에 널리 사용되던 날짜 및 시간 처리 라이브러리입니다.

Java의 기존 java.util.Date와 java.util.Calendar 클래스가 사용하기 어려운 구조를 가지고 있어서, 더 간단하고 직관적인 API를 제공하기 위해 만들어졌습니다.

Joda-Time은 표준화된 시간대 처리, 날짜 및 시간 조작, 서식 지정, 유효성 검사와 같은 강력한 기능을 포함하고 있습니다.

Java 8 이후 java.time 패키지가 표준 라이브러리로 추가되면서 Joda-Time의 주요 기능이 반영되었습니다.

따라서 최신 Java 프로젝트에서는 java.time 패키지 사용이 권장됩니다.

java.time은 Joda-Time을 모델로 만들어졌기 때문에 Joda-Time을 알고 있다면 java.time의 사용법도 비교적 쉽게 익힐 수 있습니다.

 

Mockito

Mockito는 Java 애플리케이션에서 단위 테스트를 쉽게 작성할 수 있도록 돕는 목(Mock) 객체 생성 라이브러리입니다.

 

Gretty

Gretty는 Gradle 플러그인으로, Gradle 프로젝트 내에서 Jetty 및 Tomcat 웹 서버를 쉽게 시작하고 관리할 수 있도록 설계되었습니다.

 

Jetty

Jetty는 Java 기반의 오픈 소스 웹 서버이자 서블릿 컨테이너로, 웹 애플리케이션을 위한 서버와 애플리케이션 컨테이너 역할을 합니다.

 

 

# ~ 2022

 

Nginx는 웹 서버, 리버스 프록시, 메일 프록시 기능을 가진 소프트웨어입니다. (Apache와 같음)

이는 가벼움과 높은 성능을 목표로 하며, 웹 서버, 리버스 프록시 및 메일 프록시 기능을 제공합니다. 

Nginx는 요청에 응답하기 위해 비동기 이벤트 기반 구조를 가지고 있습니다.

이 구조는 서버에 많은 부하가 생길 경우의 성능을 예측하기 쉽게 해줍니다. 

 

Hamcrest는 Java 프로그래밍 언어에서 소프트웨어 테스트를 작성하는 데 도움이 되는 프레임워크입니다.

Java, Python 등 다양한 프로그래밍 언어에서 주로 사용되는 테스트 매처(matchers) 라이브러리로, 

코드 테스트에서 조건을 명확하게 표현하고 가독성을 높이는 데 도움을 줍니다.

이 프레임워크는 사용자 정의 assertion matcher를 생성하는 것을 지원하며, 이를 통해 match 규칙을 선언적으로 정의할 수 있습니다.

'Hamcrest'는 'matchers'의 아나그램입니다.

Hamcrest는 JUnit과 jMock과 같은 단위 테스트 프레임워크에서 사용됩니다.

또한, Hamcrest는 객체, 빈, 컬렉션 등에 대한 matcher의 예제를 제공하며, predicate 기반 구문을 사용하여 assertion 과정을 단순화하고,

더 깔끔하고 직관적인 테스트를 작성할 수 있는 유창한 API를 제공합니다.

 

Keycloak은 오픈 소스 아이덴티티 및 액세스 관리(IAM) 플랫폼입니다. 

애플리케이션과 서비스에 초점을 맞추고 있으며, 통합 인증을 통해 사용자 인증 및 권한 부여를 단순화합니다.

  - https://www.keycloak.org

 

RAML은 RESTful API를 설명하기 위한 YAML 기반 언어입니다.

Richardson 성숙도 모델의 레벨 2에서 API를 설명하는 데 필요한 모든 정보를 제공합니다.

 

APIgee Edge는 Google Cloud에서 제공하는 API 관리 플랫폼입니다.

RESTful API를 개발, 배포, 관리, 모니터링하는 데 유용한 도구입니다.

클라우드 기반으로 제공되며, 다양한 기능과 확장성을 제공합니다.

 

Swagger는 REST API를 개발, 문서화, 소비하는데 사용되는 오픈 소스 도구 세트입니다.

개발자가 REST API를 공동 작업하고 효율적으로 설계, 공유, 테스트할 수 있도록 도와줍니다.

 

Boomerang은 Chrome의 확장 프로그램으로, 웹사이트의 요청을 저장하고 재전송할 수 있는 도구입니다. (Postman과 같은 rest api 분석 도구)

Boomerang은 Chrome 웹 스토어에서 무료로 다운로드할 수 있습니다.

  - https://blog.naver.com/wiznut782/223138989131

 

SAML (Security Assertion Markup Language)은 인증 및 권한 부여 데이터를 교환하는 데 사용되는 오픈 표준입니다.

 

Kerberos는 컴퓨터 네트워크 인증 암호화 프로토콜입니다.

    비보안 네트워크에서 통신하는 노드가 보안 방식으로 다른 노드에 대해 식별할 수 있게 허용합니다.

    티켓을 기반으로 동작하며, 클라이언트-서버 모델을 지향합니다.

    대칭키 암호화를 기반으로 하며, 신뢰할 수 있는 제3자를 필요로 합니다.

    중간자 공격과 재전송 공격으로부터 보호됩니다.

    UDP 포트 88을 사용합니다.

 

WildFly는 Java 기반의 애플리케이션 서버입니다. 

    Jakarta EE 및 Eclipse MicroProfile의 최신 엔터프라이즈 Java 표준을 구현합니다.

 

minikube는 다양한 플랫폼에서 로컬 Kubernetes 클러스터를 빠르게 설정할 수 있는 도구입니다. 

최신 Kubernetes 릴리스, 다중 컨테이너 런타임, 고급 기능 및 일반적인 CI 환경을 지원합니다.

minikube를 사용하면 Docker 또는 VM에서 Kubernetes를 실행하고, kubectl을 사용하여 클러스터와 상호 작용하며, 응용 프로그램을 배포하고 클러스터를 관리할 수 있습니다.

 

헬름 차트(Helm Chart)는 Kubernetes 애플리케이션을 패키징하고 배포하기 위한 패키지 포맷입니다. 

차트는 쿠버네티스 리소스와 관련된 파일의 모음으로, 단순한 형태의 memcached 파드부터 HTTP 서버, 데이터베이스, 캐시 등으로 구성된 복잡한 웹앱 스택까지 다양한 형태로 사용될 수 있습니다.

 

쿠버네티스(Kubernetes)는 원래 Google의 엔지니어 팀에서 Borg 프로젝트로 개발하고 설계한 후, 2015년에 CNCF (Cloud Native Computing Foundation)에 기부되었습니다. 

 

Harbor는 CNCF (Cloud Native Computing Foundation)의 오픈소스 프로젝트로, Docker Hub처럼 이미지를 저장할 수 있는 저장소입니다.

Docker는 이미 docker registry라는 이름으로 개인 이미지 저장소를 컨테이너화 하였으며, Harbor는 사실 내부적으로 docker registry를 사용하고 있습니다.

 

Puppeteer는 웹 테스트 자동화 도구

 

 

# ~ 2020

Vue.JS

사용자 인터페이스 UI 개발을 위한 자바스크립트 라이브러리

 

Angular.JS

사용자 인터페이스 UI 개발을 위한 자바스크립트 라이브러리

 

React.JS

사용자 인터페이스 UI 개발을 위한 자바스크립트 라이브러리

 

React Native

React를 이용하여 "크로스앱" 을 작성시 사용하게 되는 하이브리드(네이티브) 라이브러리

 

Redux

Redux는 JavaScript 어플리케이션에서 data-state 와 UI-state 를 관리해주는 도구 (React, jQuery, Angular 등에서 데이터 계층-persistant layer에 속함)

 

Typescript

마이크로소프트(Microsoft)에서 개발하였다.

자바스크립트(JavaScript)의 상위 언어로, 앵귤러제이에스(AngularJS), 리액트제이에스(ReactJS), 노드닷제이에스(Node.js) 등의 자바스크립트 기반 프로그램은 타입스크립트 프로그램으로도 동작한다.

 

GraphQL

그래프 자료구조 형태를 이용하는 쿼리 언어

 

Spring Boot

- Spring Framework 에서 설정했던 많은 내용들 (web.xml, dependency, datasource 관련 xml, 기타 xml)을 자동으로 구성해 주면서

  사용자로 하여금 꼭 필요한 부분만 간단하게 개발할 수 있는 환경을 제공한다.

- Tomcat 과 같은 Servlet Engine을 탑재하고 있어서 굳이 war 로 묶어 Tomcat 과 같은 WAS 에 배포하지 않고 .jar 형태로 배포가 가능하기 때문에 편리하다.

 

Spring Secure

 

Spring REST

 

Restful API

 

JPA

ORM (Object-relational Mapping) tool로써 예전에 공부했던 hibernate의 아키텍처(설계컨셉) 용어

자바의 표준 명세로 인터페이스 정의서

db종류에 따라 각각의 db query를 직접 다뤄야하는 부담을 없애기 위해서 만들어진

상위 레이어의 개발툴로써 RDB 보다는 OOP 개념에 더 친숙하게 만들어주는 툴이다 

 

Spring Data JPA

 

mongodb

 

git

 

gradle

 

groovy

 

aws

 

intellij

 

jenkins

 

jira

 

confluence 

 

node.js : 서버사이드 스크립트 언어

 

aws

 

Docker

 

notion

 

Fluid Framework

 

 

 

 

 

 

 

 

 

 

번호 제목 글쓴이 날짜 조회 수
» Software Development Trend (with Java) 황제낙엽 2024.01.19 592
113 Google 의 설문지에서 응답 다운로드로 저장한 결과물(CSV)이 엑셀에서 한글깨짐 황제낙엽 2019.04.19 406
112 자연어 처리 Natural Language Processing 황제낙엽 2019.03.06 170
111 NUI(Natural User Interface) / NUX(Natural User eXperience) 황제낙엽 2019.03.03 257
110 지수(과학적 표기법, "E") 서식 지정자 (1) 황제낙엽 2018.11.03 193
109 AI의 연도별 역사 황제낙엽 2018.11.03 355
108 마이크로소프트 MSDN의 이해 file 황제낙엽 2018.09.18 157
107 효율적인 양식 디자인: 구조, 입력, 레이블 및 액션 file 황제낙엽 2018.05.08 147
106 마이크로소프트 제품의 라이선스 - 패키지(FPP)와 볼륨라이선스(Volume License) 황제낙엽 2018.04.12 173
105 효과적인 모바일 애니메이션 응용예 file 황제낙엽 2018.03.30 2086
104 notepad2 에서 문서내의 일부 문자열의 byte 크기 알아내기 file 황제낙엽 2018.03.29 1910
103 부동소수점 연산에 관한 정리 황제낙엽 2018.03.26 1169
102 버튼 디자인의 고찰 (12가지 팁) file 황제낙엽 2018.02.07 156
101 스크래치는 왜 이름이 스크래치 인가? file 황제낙엽 2018.02.01 182
100 윈도우10 FPP,OEM,DSP,ESD 라이선스 file 황제낙엽 2017.10.24 360
99 Atom(에디터) file 황제낙엽 2017.08.31 393
98 엑셀(excel)에서 16진수 -> 10진수 변환 file 황제낙엽 2017.08.29 4423
97 어린이, 청소년용 프로그램 입문 황제낙엽 2017.05.03 166
96 마이크로소프트로부터 기술지원을 받기 위한 Access ID 발급 방법 황제낙엽 2016.12.05 120
95 컴퓨터는 음수를 2의 보수법으로 표현한다 file 황제낙엽 2016.10.24 843
94 변수를 unsigned int형 선언 0xffffffff 할당 결과가 -1이 되는 이유는? 황제낙엽 2016.10.24 486