최근 Log4J 버전에 해킹 이슈들이 터지면서 KISA에서는 기업들에게 경고 메세지를 주고 있고, 우리 회사의 경우 ISMS를 인증하였기 때문에 Log4J 대응으로 업무가 터져버릴 지경이다. 전자정부 프레임워크에서의 취약점 긴급 사항 □ 주요 내용 o Apache Log4j 2에서 발생하는 원격코드 실행 취약점(CVE-2021-44228)[2] o Apache Log4j 2에서 발생하는 서비스 거부 취약점(CVE-2021-45046)[6] o Apache Log4j 2에서 발생하는 서비스 거부 취약점(CVE-2021-45105)[8] o Apache Log4j 1.2에서 발생하는 원격코드 실행 취약점(CVE-2021-4104)[7] ※ Log4j : 프로그램 작성 중 로그를 남기기 위해 사용되는 자바 기..
이제 막 개발을 시작한 개발자라면 인터페이스의 필요성에 대해서 공감이 안되겠지만, 개발 경력이 어느정도 되었으며 협력을 하였고, 개발을 하기 전에 설계를 하는 개발자라면 인터페이스의 필요성에 대해서 더이상 말을 할 필요가 없을 것이다. 우리가 자동차를 만든다고 해보자 재료는 모두 갖추어져 있고 만들 기술과 장비가 있다고 한다면 현재 가장 필요한 것이 무엇일까? 바로 "설계도"일 것이다. 개발이든 건축을 하든 아니면 자동차를 만들든 제일 먼저 해야 될 것은 설계를 해야 하고 검증을 통해서 이상이 없다면 개발을 시작할 수 있다. 인터페이스는 바로 이 설계도와 유사하다. 개발자들은 비즈니스 로직이 되는 서비스단을 구현하기 위해서 필요한 메소드(method)를 미리 인터페이스화 시킨 후 이를 구현 하여 최종적으..
폼(Form) 생성 폼이란 데이터를 담아놓은 집합 같은 걸로 폼을 전송하게 되면 태그 안에 있는 데이터를 전송할 수 있게 된다. 물론 다른 폼에 있는 데이터를 가져올 수도 있지만 submit을 할 때 폼 자체를 전송하거나 폼 내부의 값들을 serialize하여 전송하는 경우가 대부분이다. 로그인폼(login.jsp) 아이디 패스워드 폼 파라미터 전송을 실습하기에는 로그인 만큼 좋은 것이 없을 것이다. 심플하게 테이블 코딩을 하였고, 값은 아이디와 패스워드가 존재하며, 실행은 login/action 경로로 값을 전달하게 된다. 파라미터 처리 및 매핑 LoginController.java 파라미터를 처리하고 페이지를 매핑하는 용도로 loginController를 생성한다. package com.tistory..
바로 이전에 Json 형태로 데이터를 출력하는 것을 만들었는데 이번에는 JSP를 연동하는 기능을 만들어보고자 한다. 스프링부트는 기존 스프링과 달리 JSP를 default로 제공하지 않기 때문에 이렇게 별도로 세팅을 해야 하는 번거러움이 있긴 하다. 의존성(Dependency) 추가 모든 view 페이지는 jsp로 진행하며, jsp는 스프링에서 별도의 디펜던시(dependency)를 추가해야 한다. 만약 maven으로 하였다면, pom.xml에 다음과 같은 dependency를 추가한다 jstl jstl 1.2 org.apache.tomcat.embed tomcat-embed-jasper provided 디펜던시를 추가 하였으면 Gradle Project를 Refresh한다. 그레이들을 리프레쉬하면, 디..
파이썬에서는 매우 간편하게 random 라이브러리를 사용하여 리스트를 섞을 수 있다. Random.shuffle 예시 import random my_list = ['삼성전자','LG전자','BTS','블랙핑크','YG'] random.shuffle(my_list) print('1 round->', my_list) # 1 round-> ['YG', 'BTS', '블랙핑크', '삼성전자', 'LG전자'] random.shuffle(my_list) print('2 round->', my_list) # 2 round-> ['LG전자', '블랙핑크', '삼성전자', 'YG', 'BTS'] 이와같이 shuffle을 반복할때마다 값을 계속 섞는다. 이 원리를 이용해서 로또 숫자를 뽑는 것도 매우 쉽게 만들 수 있다...
리스트 컴프리헨션(List Comprehension) 개념 Java와 C와 같은 언어들을 사용하다가 파이썬의 소스를 보다보면 가장 처음 당황하는 방식이 아마 리스트 캄프리헨션(List Comprehension)이라 생각한다. 파이썬은 수학적인 언어이다보니 기능들도 매우 수학적인데 이 기능은 리스트를 이용하여 새로운 리스트를 만드는 것이다. 그래서 이 기능을 잘 활용하는 사람은 파이썬을 매우 잘 사용하는(파이썬스럽게...) 사람이라 말을 할 수도 있을 것이다. List Comprehension example 짝수값 리스트 even_numbers = [x for x in range(10) if x % 2 == 0] print(even_numbers) # [0, 2, 4, 6, 8] range로 0 ~ 9까지..
정규 표현식을 사용할 때에는 메타 문자(meta characters)라는 것을 사용한다. []\.^$*+{}|() 이와같이 메타문자를 사용하여 다양한 정규표현식을 만들 수 있다. 개발을 하면서 모든 정규표현식을 익힌다는 것은 비효율적이며 그때그때 프로젝트에 따라 정규표현식을 사용하는 것이 유용하기 때문에 일단 하나씩 실습을 하면서 어떤 것이 가능한지만 익히는게 중요하다. 메타 문자 문자 설명 예시 [] A set of characters "[a-m]" \ Signals a special sequence (can also be used to escape special characters) "\d" . Any character (except newline character) "he..o" ^ Starts w..
스프링부트(Spring Boot)로 매우 간단히 JSON 구조로 데이터를 출력할 수 있는데 본 포스팅은 프로젝트를 만들고 JSON 구조로 api까지 출력해보는 것을 만들어보고자 한다. 우선 web 형태로 프로젝트를 생성한다. 아래 참고 [Spring] 스프링 부트(Spring boot)로 웹 프로젝트 만들기 스프링부트(Springboot)로 프로젝트를 시작하기 위해서는 우선 프로젝트가 어떤 성격을 띄었는지를 알고, 해당 성격에 맞는 설정을 한 후 Generate를 하는 방법이 있다. 예를 들어 프로젝트가 웹개발 needneo.tistory.com 웹 starter로 프로젝트를 생성하였다면, 다음과 같이 VO(Value Object를 생성한다. Entity 클래스 package com.tistory.nee..
개발을 한지 얼마 되지도 않았고 뭐가 뭔지 잘 모르겠는 스프링 뉴비(newbie)분들은 프로젝트를 하기 전에 우선 프로젝트의 구조를 익히는 것이 좋을 것입니다. 이 포스팅은 너무 자세히는 설명하지 않고 간단히 프로젝트의 구조에 대해서 설명해보겠습니다. 스프링부트 프로젝트 구조 STS를 열고 내가 이미 만들어 놓은 프로젝트를 자세히 보면 아래와 같은 구조로 되어 있을 것입니다. 하나하나 위치별로 다시 설명을 드리자면 자바코드 최상단에 위치한 src/main/java에 있는 곳은 자바 코드가 위치해야 하며, com.tistory.needneo같은 것은 패키지 명입니다. 일반적으로 패키지명을 먼저 설계해서 만들어 놓은 후 자바코드들을 넣습니다. 가장 많이 작업할 공간이며, 패키지명을 잘 설계하는 것과 코드를 ..
스프링부트(Springboot)로 프로젝트를 시작하기 위해서는 우선 프로젝트가 어떤 성격을 띄었는지를 알고, 해당 성격에 맞는 설정을 한 후 Generate를 하는 방법이 있다. 예를 들어 프로젝트가 웹개발을 해야 하고 Rest 형태로 통신을 하는 것이 존재하며 MongoDB를 호출한다라는 설정을 넣게 되면 그에 맞게 세팅을 이미 한 프로젝트를 내려받아서 사용하는 것이다. 스프링 사이트 부트 설정화면 보통 spring의 웹사이트에서 이런 작업을 진행하지만 이클립스에서 스프링 툴을 설치했거나 STS(Spring Tool Suite)를 사용해서 웹프로젝트를 만들게 되면, 이 작업을 이클립스 내부에서 할 수 있다. STS(이클립스) 부트 설정 STS나 스프링이 애드온된 이클립스를 실행하면 File -> New..
Eclipse Addon vs Spring Tool 스프링부트(Spring boot)를 개발하기 위해서는 이클립스에 spring 에드온을 설치하는 방법과 스프링쪽에서 이클립스를 스프링에 맞게 만들어서 배포한 버전 둘 중에 하나를 사용하면 된다. 일반적으로 후자가 세팅을 하기가 수월하기 때문에 이 포스팅에서는 Eclipse Market 방식이 아닌 STS 다운로드를 직접 받아서 실행보는 것까지 해본다. Spring Tool 설치 Spring Tools 4 is the next generation of Spring tooling Largely rebuilt from scratch, Spring Tools 4 provides world-class support for developing Spring-based..
스프링부트도 스프링(spring)이다 스프링부트(Spring Boot)를 모르고 스프링을 잘만 쓰고 있는 사람한테 갑자기 요즘 트렌드가 스프링부트(Spring Boot)래.. 라고 말한다면 받아들이는 사람들이 어떨까? 스프링부트가 왜 나왔는지 모르고 스프링부트가 트렌드라고 하면서 생각없이 사용하는 사람들이 많은데 사실 둘간의 큰 차이는 없다. 스프링부트는 스프링이 어려워서 나온 쉽게 생각하면 윈도우에서 프로그램을 쉽게 설치해주는 Installer라고 이해하면 된다. 10년 넘게 스프링 하나만 판 사람은 눈감고도 스프링을 세팅하고 온갖 라이브러리에 통달하여 무슨 버전은 어떤 문제가 있는지 그리고 어떤 라이브러리끼리 호환이 좋은지 이미 머릿속에 통계가 자리 잡혀 있다. 그러나 스프링을 배운적이 없는 사람들이..