IT/Java 2020. 7. 30.
[디자인 패턴] Java를 이용한 소스로 보는 디자인 패턴 종류 정리 1편
이번 포스팅에서는 디자인 패턴 정리 Java를 이용한 디자인 패턴 종류 정리를 하려고 합니다. 바로 시작하겠습니다. 인터페이스 - 기능에 대한 선언과 구현 분리 - 기능으로 사용 통로 기능과 분리 public class AinterfacesImplrement implements Ainterfaces{ public void funcA(){ System.out.println("기능 과 분리"); } } interfcese public interface Ainterfaces { // 기능에 대한 선언 public void funcA(); } ⇒ 2개를한후 클래스 사용 (위에서 선언 구현) 델리게이트 ( 떠넘기다 ) - 두 객체관의 관계 개발을 할시 다른 객체에 개발을 위임하여 사용 public class Ao..
IT/Python 2020. 7. 29.
디자인 패턴 정리 (싱글톤 디자인, 상태 디자인 패턴)
The Singleton Design Pattern 싱글톤 디자인 패턴 개요 실글톤 디자인 패턴은 글로벌하게 접근 간으한 단 한 개의 객체만을 하여하는 패턴 DB, 프린트 스풀러, app 등 동일한 리소스에 대한 요청의 충돌을 막기 위해 한개의 인스턴스만 사용 싱글톤 디자인 패턴의 목적 클래스에 대한 단일 객체 생성 전역 객체 제공 공유된 리소스에 대한 동시 접근 제어 코드 - singleton.py 설명 __new__ 함수를 오버라이드해 객체를 생성한다. __new__ 함수는 객체가 이미 존재하는지 확인하고 hasattr 함수는 cls 객체가 instance속석을 가지고 있는지 확인한다. hasattr 함수 : 해당 객체가 명시한 속성을 가지고 있는지 확인하는 파이썬 함수 게으른 초기화(Lazy ins..
IT/Javascript 2020. 7. 25.
[JavaScript/자바스크립트] 입력란 SQL Injection 방어하기 코드
입력란 SQL Injection 방어하기 코드 웹페이지 상에서 입력란에 소스코드와 SQL문을 입력하여 공격하는 방법을 SQL 인젝션 공격이라고 합니다. 코드 인젝션의 한 기법으로 클라이언트의 입력값을 조작하여 서버의 데이터베이스를 공격할 수 있는 공격방식을 말합니다. 주로 사용자가 입력한 데이터를 제대로 필터링, 이스케이핑하지 못했을 경우에 발생합니다. 공격의 쉬운 난이도에 비해 파괴력이 어마어마하기 때문에 시큐어 코딩을 하는 개발자라면 가장 먼저 배우게 되는 내용입니다. 이러한 injection 계열의 취약점들은 테스트를 통해 발견하기는 힘들지만 스캐닝툴이나 코드 검증절차를 거치면 보통 쉽게 발견되기 때문에 탐지하기는 쉬운 편으로 OWASP에서도 수년 동안 인젝션 기법이 보안 위협 1순위로 분류되는 만..
IT/Linux 2020. 7. 22.
리눅스에서 파일 인코딩 확인하기 ( file, iconv )
리눅스에서 파일 인코딩 확인하기 개발을 하다보면 리눅스 환경 ( 예를 들어 Centos(센트os) 나 ubuntu(우분투)) 에서 인코딩이 맞지 않아서 글자가 깨지는 현상이 발생합니다. 특히 한국어는 더욱 그러합니다. 그래서 때로는 리눅스에서 수동으로 변환해주어야 할 때가 있습니다. 요즘 페이지는 utf-8 을 많이 사용하고 있지만, 기존의 페이지들로 부터 업그레이드 하는 경우 변환이 필요할 때가 있습니다. 파일 인코딩 확인방법 리눅스에서 파일 인코딩을 확인하는 방법으로는 file 명령어가 있습니다. file -bi abc.txt file -bi abc.txt 결과 text/html; charset=utf-8 파일 인코딩 변환방법 리눅스에서 파일 인코딩을 변환할때는 방법으로는 iconv 명령어가 있습니다..
IT/Spring Boot 2020. 6. 6.
스프링 부트 (Spring boot) 외부 설정방법 알아보기
스프링 부트 (Spring boot) 외부 설정방법 오늘은 스프링 부트 외부 설정방법에 대해서 알아보도록 하겠습니다. 우선 프로젝트를 생성해야합니다. 2018/08/09 - [IT/Spring Boot] - 스프링 부트 ( Spring boot ) 프로젝트 생성하기 부터 실행하기 스프링 부트 ( Spring boot ) 프로젝트 생성하기 부터 실행하기 첫 Spring boot 프로젝트 생성하기 부터 실행하기 Spring boot 카테고리가 생성되었습니다!!! 그런 의미에서 몇 단계로 나누워 스프링 부트를 사용하면서 알게된 정보들과 사용법들을 남기고자 카테�� kingname.tistory.com 프로젝트를 구성한다음 위와같은 클래스를 만들어 줍니다. 이후에 코드를 아래와 같이 작성합니다. main.jav..
IT/Linux 2020. 4. 23.
ssh_exchange_identification 에러 해결방법
ssh_exchange_identification: Connection closed by remote host or ssh_exchange_identification: connection reset by peer 결론을 말하자면 host.allow host.deny를 수정하면 된다. /etc/hosts.allow # # hosts.allow This file describes the names of the hosts which are # allowed to use the local INET services, as decided # by the '/usr/sbin/tcpd' server. # sshd: 192.168.124.12 sshd: 132.79.44. sshd: 133.11. hosts.allow ..
IT/Java 2020. 4. 17.
자바 리플렉션 (java reflection) 개념 및 사용법 알아보기
안녕하세요오늘은 자바의 리플렉션이라는 계념에 대해서 알아보겠습니다. 리플렉션 (Reflection)이란? 리플렉션은 구체적인 클래스 타입을 알지 못해서 그 클래스의 메소드와 타입 그리고 변수들을 접근할 수 있도록 해주는 자바 API 입니다. 위 설명에 의하면 구체적인 클래스 타입을 모를때 사용하는 방법을 리플렉션이라고 합니다.여기서 의문점이 듭니다. 내가 짠 코든데 내가 만든 클래스의 이름도 모르는게 말이 되나? 라는 의문이 생깁니다.하지만 가끔 어떤 타입의 클래스나 변수 혹은 메소드를 사용할지 모르는 경우가 생깁니다. 예를 들어 변수의 값을 조건에 따라서 다르게 사용해야하는 경우라던가.어플리케이션이 실행되고 나서 생성되는 클래스라던가. 이럴경우에 리플렉션을 사용할 수 있습니다. 사용방법사용방법은 간단합..
IT/BigData 2020. 4. 13.
[mac] Apache Spark Study -1 ( Spark설치(HomeBrew) )
[mac] Apache Spark Study -1 ( Spark설치 및 확인 ) 개발 환경 - MacOS X Mojave 10.14.6 - openjdk version "1.8.0_242" - Python 3.7.3 1. Apache Spark 설치 case 1) Homebrew 를 사용한 설치 Mac사용자라면 익숙한 패키지 관리자인 homebrew를 사용하여 설치가 가능 - brew search 를 통한 spark 패키지 검색 # brew search spark ➜ ~ brew search spark ==> Formulae apache-spark spark sparkey ==> Casks spark sparkle sparkleshare - brew insatll 명령어를 사용하여 spark 설치 ( s..
IT/Linux 2020. 4. 9.
[Centos7] Linux 사용자/그룹 관리 (user/group)
리눅스 사용자관리는 'root사용자' 혹은 'sudo 권한이 있는 사용자'에서 가능합니다. 1. 사용자 관리 1-1 사용자 추가 (useradd) sudo useradd {USER_NAME} 더보기 Usage: useradd [options] LOGIN useradd -D useradd -D [options] Options: -b, --base-dir BASE_DIR base directory for the home directory of the new account -c, --comment COMMENT GECOS field of the new account -d, --home-dir HOME_DIR home directory of the new account -D, --defaults print or..
IT/Spring Boot 2020. 4. 6.
스프링 부트 ( Spring boot ) CORS(Cross-Origin Resource Sharing) 문제 해결 및 설정 방법 알아보기
스프링 부트 ( Spring boot ) CORS(Cross-Origin Resource Sharing) 문제 해결 및 설정 방법 알아보기 안녕하세요 오늘은 CORS에 대해서 알아보고 스프링 부트에서는 어떤 방법으로 설정, 해결하는지 알아보도록 하겠습니다. 그러기 위해서 우선은 CORS란 무엇인지 알아보아야합니다. CORS란 추가적인 HTTP header를 사용해서 애플리케이션이 다른 origin의 리소스에 접근할 수 있도록 하는 방법 혹은 방식을 말합니다. 다르게 말하자면 다른 origin에서 내 리소스(데이터)에 함부로 접근하지 못하게 하기 위해 사용됩니다. CORS는 왜 사용하는가? 만약 내가 서비스(운영)하고 있지 않은 사이트에서 세션(Session)을 요청(request)해서 세션을 획득할 수 ..
IT/Spring Boot 2020. 4. 1.
스프링 부트 ( Spring boot ) JPA를 이용하여 DB에 접근하여 데이터를 활용해보자
스프링 부트 ( Spring boot ) JPA를 이용하여 DB에 접근하여 데이터를 활용해보자 오늘은 JPA를 이용하여 DB에 접근하여 데이터를 가져오는 방법에 대해서 알아보도록 하겠습니다. 스프링 부트에서는 JPA 를 이용하여 DB에 접근하는 방법을 권유하고 있습니다. JPA를 이용하기 위해서는 maven (메이븐) 을 이용하거나 gradle(그레들) 을 이용하여 패키지를 관리합니다 여기서는 maven을 이용하여 패키지를 관리하도록 하갰습니다. 아래에 보이는 spring-boot-starter-jdbc, spring-boot-starter-data-jpa 를 추가합니다. https://postgresql.kr/docs/ 또한 이번에는 PostgreSQL 포스트그레스큐엘을 사용해 보도록 하겠습니다. 프로..
IT/DataBase 2020. 4. 1.
각 데이터베이스(DB) 별 드라이버명과 URL 주소 모음
각 데이터베이스(DB) 별 드라이버명과 URL 주소 모음 오늘은 많이 사용하는 데이터베이스(DB) 별 드라이버명과 URL 주소를 알아보도록 하겠습니다. 유명한 오라클에서 제공하는 데이터베이스 Oracle 드라이버명 oracle.jdbc.driver.OracleDriver URL jdbc:oracle:thin:@[host]:[port=1521]:[instance] https://www.oracle.com/kr/index.html Oracle 대한민국 | 통합된 클라우드 애플리케이션과 플랫폼 서비스 소개 Oracle 무한한 가능성의 발굴 Oracle은 지금껏 혁신의 문화에서 성장해 왔습니다. 오라클을 이끌어 온 탁월한 사람들 덕분에 오늘날 자율운영, 클라우드 및 애플리케이션 기술시장을 선도하고 있습니다. w..
IT/Html 2020. 3. 30.
[SCSS/CSS] CSS를 마스터해보자! Flexbox의 첫번째 규칙
오늘부터 CSS를 알아보는 시간을 가지도록 하겠습니다. 공부한 내용을 가지고 포스팅을 진행합니다. 우선 간단한 html 파일과 css 파일을 만들었습니다. index.html 1 2 3 styles.css .box { background: blue; width: 300px; height: 300px; display: inline-block; color: white; } 은 아래와 같습니다. 현재는 전혀 flex에 대한 설정이 되어 있지 않은 상태입니다. 여기서 css를 변경해보도록 하겠습니다. body { display: flex; } .box { background: blue; width: 300px; height: 300px; color: white; } 현재 html 에서는 body태그가 div태그..
IT/Javascript 2020. 3. 16.
[javascript] 자바스크립트(EmailJS)로 메일보내기 !
자바스크립트(EmailJS)로 메일보내기를 사용하려고 합니다. https://www.emailjs.com/ 해당 JS를 이용하여 이메일을 보내봅시다. 이 외에도 mailgun, sendGrid 등... 여러가지 메일을 보내는 서비스가 있습니다. 회원가입을 간단하게 마치시고 제공하는 서비스 목록입니다. 주로 Gmail을 사용할것으로 예상됩니다. 해당 Serivce 아이디를 잘 정해서 저장해봅시다. 설치 nodeJs 를 이용할 경우 $ npm install emailjs-com --save 그냥 스크립트를 사용할 경우 위와 같은 스크립트를 추가하셔야합니다. 유저 아이디는 로그인하셔서 Account 탭에서 확인 할 수 있습니다. 보내기 첫번째는 객체를 이용하여 보내기 입니다. var templateParams..
IT/Algorithm 2020. 2. 25.
[알고리즘] 올바른 괄호 확인 문제
문제 설명 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 ()() 또는 (())() 는 올바른 괄호입니다. )()( 또는 (()( 는 올바르지 않은 괄호입니다. '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요. 제한사항 문자열 s의 길이 : 100,000 이하의 자연수 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다. function solution(s){ let answer =..
IT/DataBase 2019. 5. 8.
[DB/mysql/mariadb] 사용자, DB, TABLE 생성 및 계정 권한
SHOW DATABASES; -- 데이터 베이스 생성 CREATE DATABASE 데이터베이스명; -- 데이터 베이스 확인 SHOW DATABASES; -- mysql database 를 사용 USE mysql; -- 사용자 확인 SELECT HOST, USER, PASSWORD FROM USER; -- 사용자 계정 생성 'id'@'localhost' 이면 로컬 CREATE USER '아이디'@'%' IDENTIFIED BY '비밀번호'; -- 사용자 권한 주기 GRANT ALL PRIVILEGES ON 데이터베이스.* TO '아이디'@'%'; -- 새로고침 FLUSH PRIVILEGES; -- 사용자 계정 삭제 '사용자'@'접속위치' DROP USER [사용자]@[서버]; -- 테이블 생성 CREATE..
IT/Javascript 2019. 4. 2.
[Typescript] tsconfig.json 설정 저장
[Typescript] tsconfig.json 설정 저장 { "compilerOptions": { "baseUrl": ".", "module": "commonjs", "target": "es5", "lib": ["es6", "dom", "esnext.asynciterable"], "sourceMap": true, "allowJs": true, "moduleResolution": "node", "rootDir": "/src", "forceConsistentCasingInFileNames": true, "noImplicitReturns": true, "noImplicitThis": true, "noImplicitAny": false, "strictNullChecks": true, "suppressImpli..
IT/Environment 2019. 2. 14.
[GraphCMS/서버] GraphCMS에 대해서 알아보자 ( 그래프큐엘, 노드JS )
[GraphCMS/서버] GraphCMS에 대해서 알아보자 ( 그래프큐엘, 노드JS ) CMS란 ? Contents Management System 즉 콘텐츠 관리 시스템이라는 뜻입니다.말그대로 통신을 통해서 각종 정보나 내용을 관리해주는 관리시스템입니다. CMS가 등장함으로 이것을 이용하여 코딩작업이 급격하게 줄어 홈페이지를 뚝딱뚝딱 만들 수 있게 되었습니다.물론 CMS를 통해서 모든 홈페이지를 만들수는 없습니다.하지만 양방향 통신이 아닌 간단한 회사 홈페이지나 개인 홈페이지, 블로그 등은 CMS를 통해서 간단히 구축할 수 있게 되었습니다. 그 CMS 중 GraphCMS를 소개합니다. 돈 받은거 없습니다. 사용하면서 편한것 같아 쓰게 되었습니다. 홈페이지 https://graphcms.com/ 매인 화..
IT/Spring Boot 2019. 2. 8.
스프링 부트 ( Spring boot ) 카테고리 목록 API 만들어 보기
스프링 부트 ( Spring boot ) 카테고리 목록 API 만들어 보기 이번 글에서는 이전 작업내용을 활용하여 간단한 카테고리 목록을 정보를 뿌려주는 API 만들어 보려고 합니다. 이번에는 postgresql 데이터베이스를 사용하였습니다. 전체 범위의 카테고리안에 세부 카테고리가 있는 형식으로 구성하려고 합니다. 아래는 생성한 테이블 목록입니다. 카테고리 테이블과 카테고리아이템 테이블 입니다. 카테고리아이템 테이블의 categoryid는 카테고리 테이블의 id를 참조합니다. 프로젝트를 시작하기 전에 하나의 플러그인(Plugin)을 설치하려고 합니다. 바로 Lombok 플러그인 입니다. 맥북이라면 command 키와 , 키를 동시에 눌러줍니다. 윈도우라면 설정란에 있습니다. 이후 플러그인을 설치하고 재..
IT/Environment 2019. 1. 24.
[ngrok/서버] localhost를 외부에서 접근하게 해주는 ngrok
localhost를 외부에서 접근하게 해주는 ngrok 오늘은 ngrok 사용법에 대해서 알아보도록 하겠습니다. 개발을 진행하면서 내 로컬호스트에서 만든 결과물을 웹으로 보여줄 때 서버가 없으면 타인에게 보여주기가 어렵습니다. 하지만 이 ngrok을 사용하면 충분히 가능합니다. ngrok (엔그록)은 방화벽 넘어서 외부에서 로컬호스트에 접속을 가능하게 해주는 터널링 프로그램이라고 할 수 있습니다. 실행방법은 ngrok을 다운로드하여 실행하고 연결하고자 하는 네트워크 서비스의 포트를 적어주시면 됩니다. 그럼 공용 주소에서 트패픽을 허용하는 ngrok 클라우드 서비스에 연결하여 해당 트래픽을 컴퓨터에서 실행중인 ngrok 프로세스로 전달 한 다음 지정한 로컬 주소로 전달해줍니다. 아래의 사진처럼요! 출처 :..