노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.


요구 사항 정리


보통 시스템 수요 주체는 표준 비지니스 절차로 Request For Information을 통해 많은 공급자들의 가용한 능력들에 관한 정보를 문서 형태로 수집한다. 그 이후에 Request For Proposal/Request For Quotation등을 요구하게 된다.

하지만 작은 규모의 새로운 시스템을 구현 하려고 하나 요구가 명확하지 않은 상황에서 정리가 필요하다.  개인 또는 소규모 집단과 같은 주체가 이런 과정이 익숙하지 않은 경우가 많다.

초기 기획 이전 단계에 활용하면, 기획에 도움이 될 수도 있으려나(?), 개발하려는 프로그램/시스템을 명확하게 정의를 내려서, 목표를 명확하게 할 수 있다.


요구 사항 분류들

- 기능 요구 사항

- 품질 요구 사항

- 제약 사항 ( 비지니스적, 기술적 )


UML에서 Use Case와 기능 요구사항과 구분하지만...

정해진 문법에 따라 그림으로 시각화 하여, 한눈에 들어 오게하는 용도로 글을 작성해서 길고 혼잡한 것을 해소 시켜 준다. ( byron1st.pe.kr )


Use Case Diagram ( from UML )

행동 도표(behavior diagram)라고도 하며, 행위의 집합들을 표현하며, 이는 어떤 시스템(subject)은 하나 또는 그이상의 외부 유저(actor)와 협력해서 동작하거나 할 수 있는 부분들이다.


- Business Use Case Diagrams ( from www.uml-diagrams.org )


- System Use Case Diagrams ( from www.uml-diagrams.org )





Use Case Diagram Editor 의 구글 Trend

- gliffy

- draw.io

- luchid chard

- creately





인기 높은 gliffy에는 Use Case가 없으며, 유사한 Activity Diagram를 제공한다.

- gliffy 실행 화면



- 오래된 MS Visio

1) "include" streotype이 없으니, 추가 하기

도구바의 UML 항목에서 "스테레오타입을 선택하고, 다얼로그창에서 "신규"를 선택

각 항목을 수정(스테레오타입:include, 기본클래스:일반화)한다 - "extend"와 동일하게


2)  use case(사용 사례) 모양(shape)내의 글자가 글넘김이 안되는 현상 수정하기

File(파일)->Option(옵션)->Advanced(고급) : 일반 항목에서 "개발자 모드로 실행" 선택

shape(사용 사례, use case)를 선택하고, 우측메뉴에서 "ShapeSheet표시"를 선택

Protection항목읠 LockTextEdit의 값을 1에서 0으로 변경 

shape(사용 사례, use case)를 선택하고, F2를 누르면 글자수정가능함(줄넘기, Shift-Enter)



블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.



Eclipse, Python Editor 설치, 그리고 Hello World



 

Marketplace에서 python을 검색, PyDev를 선택 설치







Interpreter설정


- path는 Python 설치 위치에 따라 다름





 

프로젝트 신규 생성 - PyDev Project 생성




신규 Module 추가



Package명과 Name을 입력 ( print_hello_world.py가 test package밑에 생성)


Module: Main을 선택



생성된 파일에서 수정하기

pass를 print('Hello World')로 변경하고


Ctrl + F11을 실행



'Web Tech. > Python' 카테고리의 다른 글

Python 예제  (0) 2017.07.04
Python, Web 보안 (기초)  (0) 2017.07.04
vagrant up, Authentication failure. Retrying 발생시  (0) 2017.05.16
빅데이타와 Python  (0) 2017.02.07
Python/파이썬 설치  (0) 2016.11.16
블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.


Python/파이썬 설치



Windows


- http://www.python.org에서 Download메뉴를 선택

- 3.x 버젼을 선택 다운로드후 실행




- 설치확인은 powershell에서 python이라고 입력후에 오류가 나지 않으면 성공




(Window Key + R후에 powershell을 입력하면, powershell이 실행됨 )




[Python3] 파이썬 2.x 버전과 3 버전 차이 정리

                                                                                                                                                                                             

 

'Web Tech. > Python' 카테고리의 다른 글

Python 예제  (0) 2017.07.04
Python, Web 보안 (기초)  (0) 2017.07.04
vagrant up, Authentication failure. Retrying 발생시  (0) 2017.05.16
빅데이타와 Python  (0) 2017.02.07
Eclipse(이클립스), Python Editor 설치  (0) 2016.11.16
블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.


Ramda 표현식


-- Java 8부터 지원



사용 예제

package ramda;

public class RamdaExam {

	public static void main(String[] args) {

		// Method를 하나만 갖는 interface를 함수형 Interface라고 하고,
		// Runnable interface, run method만 존재
/*
				
		// Method는 객체 를 통해서만 전달 가능한데,
		 
		new Thread( new Runnable() {

			@Override
			public void run() {
				
				for(int i=0; i< 10;  i++ ) {
					System.out.println("hello " + i);
				}
			}
		}).start();
*/
		
		// Method만 전달 할 수 있다면...
		// 그래서,
		// ramda 표현식 , 일명 익명 Method
		new Thread( () -> {

			for(int i=0; i< 10;  i++ ) {
				System.out.println("hello " + i);
			}

		}).start();

		// ramda 표현식
		// (매개변수 목록) -> { 실행문 }
	}
}



출처 :

http://tryhelloworld.co.kr/courses/자바-중급/lessons/람다식-기본문법

블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.




Java IO Package



- Byte 단위 입출력

- Char 단위 입출력


- 4가지 abstract(추상) Class : InputStream , OutputStream, Reader, Writer


장식대상 클래스

- 입력 대상 Class : File~ or ByteArray~



장식하는 클래스

- DataInputStream/DataOutputStream : 다양한 형을 입력받고 출력 

- BufferedReader : readLine() 메소드 보유

- PrintWriter : println() 메소드 보유



Java IO는 Decorator Pattern을 사용한다.

    : 생성자에서 감싸서 새로운 기능을 추가




출처 :


http://tryhelloworld.co.kr/courses/자바-중급/lessons/자바io

블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.


java.util Collection Framework



java.util패키지에는 자료를 다룰 수 있는 자료구조 클래스가 다수 존재하고, 자료구조 클래스들을 Collection Framework이라고 한다.



java 2에서 등장




Collection interface, 가장 기본이 되는 Interface

- 중복 허용

- 저장된 순서를 모름

- 저장된 자료를 하나씩 꺼낼 수 있는 iterator라는 인터페이스 반환


Set 자료 구조

- 중복을 허용하지 않는 자료 구조, add시 있으면 false 리턴


List 자료 구조

- 중복을 허용하면서 순서를 기억하는 자료 구조

- 순서를 기억하기 떄문에, get(int)에서 몇번째 인지를 int값에 전달



Map 자료 구조

- 저장할떄, put()메소드를 이용하여 key와 value를 함께 저장

- key가 중복 될 수는 없음

- 동일 key로 추가할떄는 새로운값으로 저장됨

- 원하는 값을 꺼낼때는 key를 매개변수로 받아들이는 get()메소드를 이용하여 값을 꺼낸다.

- key 전체 리스트는 keySet()을 통해 얻은 Set의 iterator()를 사용한다.




출처 : try helloworld 동영상 강좌 ( 꼭~ 보세요 )


http://tryhelloworld.co.kr/courses/자바-중급/lessons/컬렉션-프레임워크,자바중급(파트8)


파트 1.) Object 클래스        2강


- Object 클래스는 모든 클래스의 최상위 클래스

- 아무것도 상속받지 않아도 자동 상속, 모든 클래스에서 Object 메소드를 사용 가능

- equals, toString, hashCode


파트 2. java.lang 패키지    8강


- JAVA는 기본적으로 다양한 package를 지원, 그 중에서 가장 중요한 패키지

- java.lang패키지의 클래스는 import하지 않고도 사용할 수 있다.

- 기본형 타입을 객체로 변환시킬때 사용하는 Wrapper클래스

- 모든 클래스의 최상위 클래스인 Object 클래스

- 문자열과 관련된 String, StringBuffer, StringBuilder

- 화면에 값을 출력할때 사용하는 System 클래스

- 수학과 관련된 Math 클래스

- Thread에 관련된 중요 클래스ㅡ


파트 3. java.util 패키지    9강


- 유용한 클래스들을 많이 가지고 있는 패키지

- 날짜와 관련된 Date, Calendar클래스

- Date클래스가 지역화를 지원하지 않는 문제를 해결하기 위한 Calendar클래스

- 지역화와 관련된 Locale로 시작되는 이름을 가진 클래스

- List, Set, Collection, Map의 자료구조, 컬렉션 프레임워크와 관련된 Interface


파트 4. 날짜와 시간 (java.util package)       5강


- 날짜와 시간을 구하는 Date클래스, Calendar, java.time 패키지

파트 5. (자바)IO             11강


- 입출력을 위한 인터페이스와 클래스

- 자바 IO는 크게 byte단위 입출력과 문자 단위 입출력 클래스를 구분

-- byte단위 입출력 클래스는 InputStream과 OutputStream이라는 추상클래스를 상속

-- 문자(char)단위 입출력 클래스는 모두 Reader와 Writer라는 추상 클래스를 상속

- 파일 입력/출력

: FileInputStream, FileOutputStream, FileReader, FileWriter

- 배열로 부터 입력/출력

: ByteArrayInputStream, ByteArrayOutputStream, CharReader, CharWriter

- DataInputStream, DataOuputStream은 다양한 데이터형을 입/출력

- PrintWriter는 다양하게 한줄 출력하는 println()메소드 제공

- BufferedReader는 한줄 입력하는 readLine() 메소드 제공


파트 6. 어노테이션        2강


- 어노테이션은 Java5에 추가된 기능

- 어노테이션은 클래스나 메소드위에 붙고, @기호로 이름이 시작

- 어노테이션은 소스코드에 메타코드를 붙인후, 클래스가 컴파일 되거나 실행될때 어노테이션에 설정된 값을 통하여 클래스가 좀 더 다르게 실행되게 할 수 있다. 이런 이유로 어노테이션을 일종의 설정파일처럼 설명하는 경우가 있다

- 어노테이션은 사용자가 직접 만들 수도 있다 - Custom 어노테이션


파트 7. 쓰레드              11강


- 쓰레드란 동시에 여러가지 작업을 동시에 수행할 수 있게 하는것

- JAVA 프로그램은 운영체제에서 하나의 프로세스(실행되는 프로그램)로 실행하는 JVM위에서 동작

- 자바에서 Thread를 만드는 방법 : Thread클래스를 상속 or Runnable인터페이스를 구현


파트 8.  람다                 3강


- 람다식은 다른말로 익명 메소드라고 한다.
- 인터페이스 중에서 메소드를 하나만 가지고 있는 인터페이스를 함수형 인터페이스라고 한다.  : Runnable인터페이스는 run()메소드 하나만 제공


'Web Tech. > Spring Framework' 카테고리의 다른 글

Ramda 표현식  (0) 2016.11.15
Java IO Package  (0) 2016.11.15
에러 : java.lang.IllegalArgumentException: Document base  (2) 2016.11.11
AES 암호화(encryption)  (0) 2016.10.27
메모리 누수, Memory Leak  (0) 2016.09.27
블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.




ERD 그리기 & 리버스(Reverse)


- 도구 : SQL Power Architect v1.0.8



<도구 특징>


오픈소스, 무료 커뮤니티 버젼


Data Relation 자동 생성(Reverse Engineering) 및 편집 기능


작성된 ERD는 PlayPen Database로 구분


작성 ERD 내용은 프로젝트 형태로 저장 및 로딩 가능


DB연결은 JDBC 드라이버 사용


지원 DB : PostgreSQL, MS SQL Server, MySQL , HSQLDB




실행 화면 ( ERD 완료된 상태 )


: DB 연결 정보를 등록하면, 해당 DB의 Table정보를 가져오며, Drag & Drop으로 Table를 배치하고, 각 Table의 Relation을 맺어주면, 빠르게 ERD를 추출 가능하다.







Install후 실행


1. DB 연결 하기




2.  자동으로 로딩된 Schema/Table에서


1) Schema 전체를 선택하여 Drag & Drop으로 


-- 연결관계 있으면 자동 생성

-- 관계는 클릭시 속성 편집 가능





2) 필요한 Table만을 하나씩 Drag & Drop시에는


-- 각 테이블 선택후에 툴바에서  "새 비식별관계", "새 식별관계"를 선택

-- 원하는 필드를 A 테이블과 B 테이블을 누르면, 연결 속성이 생성됨





* 관련 Links  


- 소개  : SQL Power Architect : Data Modeling & Data Profiling Tool


- OS별 다운로드 : Open Source & free to download

블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.


에러 메시지 :


java.lang.IllegalArgumentException: Document base



does not exist or is not a readable directory
    at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:142)
    at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4324)





일반적인 조치 방법 :


- eclipse(이클립스)에서 등록된 프로젝트를 reload를 하면, 대체로 해결이 된다.





여전히 에러가 나는 경우에 추가로 확인할 부분들은... :


- eclipse(이클립스)에서 빌드 에러가 있는지를 살펴 봐라.




- 혹시 eclipse(이클립스) 프로젝트의 속성에서 Web Deployment Assembly가 보이는지 확인을 해 본다.





- 위의 항목이 보이지 않는다면, eclipse(이클립스)에서 빌드를 하지 못하니, 

.project 파일에 아래 항목을 추가하라.


<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>

'Web Tech. > Spring Framework' 카테고리의 다른 글

Java IO Package  (0) 2016.11.15
java.util Collection Framework  (0) 2016.11.14
AES 암호화(encryption)  (0) 2016.10.27
메모리 누수, Memory Leak  (0) 2016.09.27
Spring Boot 소개 (3) - JPA , MySQL  (1) 2016.09.22
블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.



PubNub Design Patterns


-부제 : Real Time Platform에서 디자인 패턴




Inbound Channel Pattern



PubNub는 채널마다 모든 메시지를 저장하고 저장 공간과 재생 기능을 갖는다.

히스토리 정보의 요청을 하는 것은 연결 단절로 놓친 부분의 메시지를 조회하기 위함이다.


이런 공통 패턴을 사용하면, 수백의 채널을 갖고 있다면 어떻게 되는가?


모든 각 채널의 히스토리를 호출하는 것은 덜 효율적이다. 채널 사용 하는 방법이

히스토리 호출의 회수를 줄여주도록 어떻게 변경을 해야 하나?



1) 1-1 Chat


(1) Channel Per Chat


내(a)가  4명의 사람과 개인대화를 한다면, 4개의 채널을 갖고, publish/subscribe를 한다.


- 몇시간정도 연결이 끊긴후에 재시작하면, 4개의 히스토리를 요청한다.

- 몇개월이 지난다면, 축적이 되어서 40명 정도의 친구가 있다면, 40개의 히스토리를 요청해야 한다.

- 이렇게 누적이 되기 시작하면 비효율적으로 변경 된다.

아주 많은 히스토리 api호출을 하는 것은 필요하지 않으며, 어떻게 하면 이것을 바꿀까?

이것을 재검토 - 가능한 만큼 적게 히스토리 호출을 감소시키는 것으로 원한다.


히스토리 호출을 하는것으로 내게 보내진 어떤 메시지던지 그 시점에 갖고 오도록 시도하는것이 무엇인가? 이는 내가 보낸 메시지를 항상 갖고 있기 떄문이다.


일대일 chat을 다른 누군 인지를 함께 구분하는 것이 무엇일까?

자료 자체만으로는 여기까지, 다른 이들과 한개의 chat채널은 구조상에 다른 차이점은  없다.



(2) Chat Inbound Channels


채팅 메시지가 전달 되는 것을 재설계 하면,


각 유저는 inbound channel를 갖고, 어떤 유저나 채팅의 메시지를 보내기 위해 사용한다.


- User B나 User C는 User A의 inbound channel로 메시지를 보낸다.

- 반대로, User A가 답장을 할때, 각 User에게 대응되는 inbound channel로 답신한다.




이 뜻은 User A의 놓친 모든 메시지를 갖고 오기 위해서는, 오직 inbound 채널에 히스토리 요청만이 필요하다. 이것은 email주소와 inbox를 갖는 것과 매우 유사하다.


-내가 많은 대화를 갖고 있지만, 모두 한 장소로 들어 온다.

-내 UI는 그것들을 논리적으로 분리하고, 그것은 체계화 하기 위해 metadata(to/from/subject)를 이용하여 그것을 이해하고 대화를 분리하는 방법이다.




보이는 것과 같이, User들(B,C,D,E)은 보내는 모든 메시지는 분리되는 일대일chat으로 User A의 inbound 채널로 보내진다.


- 마치 4명이 나에게 이메일 주소로 이메일을 보내는것과 같다.

- 시각적으로 그것들은 UI에서 분리가 될것이지만, data는 옮겨지고, 체계화되어지고,

단일 채널(User A의 inbound 채널)을 통해 들어오는 모든것들이다.



2) Group Chat


그룹chat의 경우에는, User A가 그룹으로 메시지를 전송하면, User는 다중으로 전송이 가능하고, 그룹내의 각각의 User의 inbound채널로 전송한다.


만약 그룹이 아주 큰(사용자가 많은)경우, 예를 들어 10명이 넘게 그룹chat이라면, 원래 시나리오와 같이 채널을 분리해서 특정한 chat으로 분리하기를 원한다.


이런 경우에 나는 history call이 상당하게 줄였다.


JSON Structure


원래 시나리오에서, 각 쳇은 분리된 채널이지만, 메시지는 아래처럼 생긴것을 받는다.


- From User A t o User B , sent to channel_1111

{

  message_id:10001,

  author: "user_a",

  content: "What are you doing this weekend?", 

  timestamp:1425244035

}


수신 채널 시나리오에서, 구조는 약간 다르게 좀 더 metadata가 UI를 위해 추가된다.


- From User A to User B, send to channel_user_b

{

  message_id:10001,

  chat_id:"user_a_user_b",

  author: "user_a",

  content: "What are you doing this weekend?", 

  timestamp:1425244035

}


물론, 좀 더 정보를 추가할 수 있으며, UI정보는 시각적,정렬,검색,tag등을 체계적으로
사용할 수 있다. 보낼수 있는 어떤것도 제한은 없다. chat_id key는 쳇에 포함되어 UI식별을 돕는다.


마지막으로, 그룹쳇을 위한 수신 방법으로 어떻게 보이지는지, 간단한 예제를 정리한다.


- From User A to Group Chat, sent to channel_user_b and channel_user_c

{

  message_id:10001,

  chat_id:"group_chat_1234",

  author: "user_a",

  content: "What are you doing this weekend?", 

  timestamp:1425244035

}


3) Hybrid Pattern


하나 작은 팁은 위의 패턴에 추가를 할 수 있고, 이로인새 PubNub의 흥미로운 사용을 가능하게 한다. 2가지 패턴을 조합할 수 있다. 이로 인해 좀 더 특정한 방법이고 쉽게 과거 기록을 볼 수 있다.


먼저, 수신채널을 사용할 수 있고, 또한 유저들 각각의 관계 사이에 복합적인 단독 채널을 사용할 수 있다.


메시지를 보내려고 할때, 2중 퍼블리싱 된다 : 각 사용자는 수신 채널로 퍼블리싱하고, 또한 둘 사이의 복합 채널로 퍼블리싱한다.

복합채널을 구독할 필요는 없다, 물론 히스토리를 메시지를 받기 위해 복합 채널을 통해 호출하지 않아도 된다. 


단지, 히스토리를 복합(채널)에서 호출할떄는 둘 사이의 메시지를 보기 원하거나

특정 시점으로 돌아가고자 할때 히스토리를 호출하면 된다.




이 (방식은) 좀 더 쉽게 둘사이의 메시지 히스토리를 얻는것을 가능하게 하고, 왜냐면 수신 채널은 모든 주고받는 쳇 메시지가 섞여 있기 떄문이다. 그것은 특정 시점으로 돌아가는 것이 어렵다.


http://scalabl3.github.io/pubnub-design-patterns/2015/03/05/Inbound-Channel-Pattern.html






Advanced Channel Groups


- Friend Lists, Status Feed and Presence










http://scalabl3.github.io/pubnub-design-patterns/2015/08/11/Advanced-Channel-Groups-Friend-Lists-Status-Feed-And-Presence.html

블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.


Real-Time Web Technologies



아래 링크이 페이지는 계속 작업 중이며, 새로운 기술이 추가되는 계획이다.




분류


1. Hosted Real Time Services, 호스팅 실시간 서비스


1) Ably


2) PubNub


3) Pusher


4) Realtime.co


5) Streamdata.io



2. Self Hosted Real Time Solutions, 자체 호스팅 실시간 솔루션



1) apche-websocket


2) Beacon Push


3) PHP WebSocket


4) SignalR


5) socket.io




3. Web Socket Client Libraries, 웹소켓 클라이언트 라이브러리



1) JavaScript  - Flash Socket FallBack


2) ActionScript


3) .Net


4) Silverlight


5) Java




https://www.leggetter.co.uk/real-time-web-technologies-guide/

블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.


AES , 암호화(encryption) / 복호화(decryption)




말레이시아 Payment Gateway업체 연동중에 구현...



-- Wiki ( 나무위키, Wikipedia )


Advance Encryption Standard, 벨기에의 2명의 암호학자가 만든 알고리즘이며,

NIST(National Institute for Standard and Testing)가 제정하고, 미국 정부가 채택한 후 확산.



대칭 암호화 표준규격으로, HW와 SW 양쪽에 효율적이도록 디자인 되었다

지원하는 Block 길이는 128 bits, 192bits, 256 bits이다




PHP, Java 예제 소스



아래 암호화 결과는 문자의 코드화로 생기는 문제로 인해서 base64로 부호화된다.



http://aesencryption.net/ (128 bits )



http://boxfoxs.tistory.com/270 (128 bits)





Java에서 Base64 codec으로 commons.apache.org의 Components->Codec받기


위치 : http://commons.apache.org/proper/commons-codec/


최신 버젼 : http://commons.apache.org/proper/commons-codec/download_codec.cgi





JavaScript 예제 소스



http://ironnip.tistory.com/80 (128 bits)




256 bits


import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Base64;

/**
 *  
 * 
 * 
 * HashValue.java
 * 
* @author admin * @date 2016. 10. 26. * @Version : 0.1 */ public class HashValue { private SecretKeySpec secretKey = null; private String encryptString = ""; public void setKey(String myKey) throws UnsupportedEncodingException, NoSuchAlgorithmException { byte[] key1 = null; byte[] keyDigest; MessageDigest sha = null; // Set Key key1 = myKey.getBytes("UTF-8"); System.out.println("setKey.key1.length = " + key1.length ); // SHA-256 sha = MessageDigest.getInstance("SHA-256"); keyDigest = sha.digest(key1); setSecretKey ( new SecretKeySpec(keyDigest,"AES") ); } public String encryption( String unhashedValue ) { Cipher cipher = null; try { cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); if ( secretKey == null ) { System.out.println("encryption.SecretKey is not ready."); return ""; } cipher.init(Cipher.ENCRYPT_MODE, getSecretKey()); setEncryptString ( Base64.encodeBase64String ( cipher.doFinal( unhashedValue.getBytes("UTF-8") )) ); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (NoSuchPaddingException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } return encryptString; } public String getEncryptString() { return encryptString; } private void setEncryptString(String encryptString) { this.encryptString = encryptString; } private SecretKeySpec getSecretKey() { return secretKey; } private void setSecretKey(SecretKeySpec secretKey) { this.secretKey = secretKey; } }

* AES에서는 기본값으로 128 bits 키를 지원하며, 만약에 192 bits 또는 256 bits의 key를 사용하게 되면, java 컴파일러는 illegal key size, invalid key exception을 일으킨다.


java.security.InvalidKeyException: Illegal key size or default parameters
 at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1026)
 at javax.crypto.Cipher.implInit(Cipher.java:801)
 at javax.crypto.Cipher.chooseProvider(Cipher.java:864)
 at javax.crypto.Cipher.init(Cipher.java:1249)
 at javax.crypto.Cipher.init(Cipher.java:1186)


해결 방법은 JCE( Java Cryptography Extension)을 JRE version(Java 6,7,8)에 맞게 다운로드 해야 하고,

1) local_policy.jar와 2) US_export_policy.jar를

/jre/lib/security위치의 파일과 교체해야 한다.


-- 관련 이슈 논의글

http://stackoverflow.com/questions/6481627/java-security-illegal-key-size-or-default-parameters



--  jce-7-download


--  jce-8-download

블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.



ListView에서 자동 스크롤 시키기



추가등의 변경시에 




xml layout에서, 아래 파라미터를 listview에 설정을 하세요.


android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"




출처 :


http://stackoverflow.com/questions/3606530/listview-scroll-to-the-end-of-the-list-after-updating-the-list


블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.



안드로이드 스튜디오에서 SHA-1 생성




  1. Open 안드로이드 스튜디오
  2. Open [해당 프로젝트]
  3. Click on Gradle (From Right Side Panel, you will see Gradle Bar)

  1. Click on Refresh (Click on Refresh from Gradle Bar, you will see List Gradle scripts of your Project)
  2. Click on [해당 프로젝트] (Your Project Name form List (root))
  3. Click on Tasks
  4. Click on Android
  5. Double Click on signingReport (You will get SHA1 and MD5 in Run Bar)

  1. Then click this button(Run화면): enter image description here
















참조 :

http://stackoverflow.com/questions/39697905/generate-sha1-fingerprint-in-android-studio-2-2

블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.


소스코드 10줄로 실시간 채팅 웹 앱 만들기




-- 부제 : PubNub 활용 ( body tag 내부 추가 )


<실행 화면>



<소스 코드 >

Enter Chat and Press Enter

Chat Output


블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.



pgAdmin III, 연결 정보 리스트 추출(복사, 백업)




1. regedit

2. HKEY_CURRENT_USER\SOFTWARE\pgAdmin III




3. save.reg 파일을 복원시에 실행

블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,