Mongodb Collection
1) 컬렉션 생성
> use dbName;
> db.createCollection(“test1”);
{ “ok” : 1 }
> db.collectionName.renameCollection(“newCollectionName”);
{ “ok” : 1 }
Mongodb Collection
1) 컬렉션 생성
> use dbName;
> db.createCollection(“test1”);
{ “ok” : 1 }
> db.collectionName.renameCollection(“newCollectionName”);
{ “ok” : 1 }
OS X용 패키지 관리자인 Homebrew 설치하기
영문 사이트: http://brew.sh/
한글 사이트: http://brew.sh/index_ko.html
설치는 간단하다. 터미널에서 다음을 실행한다.
Homebrew는 Apple에서 제공하지 않는 유용한 패키지 관리자를 설치합니다.
$ brew install wget
Homebrew는 전용 디렉토리에 패키지를 설치하고/usr/local 위치로 심볼릭 링크를 연결합니다.
$ cd /usr/local $ find Cellar Cellar/wget/1.15 Cellar/wget/1.15/bin/wget Cellar/wget/1.15/share/man/man1/wget.1
$ ls -l bin bin/wget -> ../Cellar/wget/1.15/bin/wget
Homebrew는 전용 디렉토리 외부에 설치하는 일은 없지만 원하는 위치에 설치할 수도 있습니다.
간단하게 Homebrew 패키지를 만들어 보세요.
$ brew create http://foo.com/bar-1.0.tgz Created /usr/local/Library/Formula/bar.rb
모두 git과 ruby 기반으로 되어 있으며, 쉽게 수정을 되돌리거나 원본 코드의 수정사항을 병합하면서 해킹하세요.
$ brew edit wget # opens in $EDITOR!
Homebrew formula는 간단한 Ruby 스크립트입니다:
class Wget < Formula homepage "https://www.gnu.org/software/wget/" url "https://ftp.gnu.org/gnu/wget/wget-1.15.tar.gz" sha1 "f3c925f19dfe5ed386daae4f339175c108c50574" def install system "./configure", "--prefix=#{prefix}" system "make", "install" end end
Homebrew는 OS X 개발 환경을 개선합니다. gem 명령으로 gem을, brew 명령으로 gem의 의존성 모듈을 설치하세요.
Homebrew 설치하기
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 터미널에 붙여넣기 하세요.
해당 스크립트는 무엇을 할지 설명하고 실행하기 전에 잠시 멈춥니다. 더 자세한 설치 관련사항을 보려면 여기를 참고하세요 (10.5 버전 필요).
추가 문서
https://github.com/Homebrew/homebrew/tree/master/share/doc/homebrew#readme
application-context.xml 추가
xml 스키마 추가
xmlns:util="http://www.springframework.org/schema/util" http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd <util:properties id="global" location="/WEB-INF/properties/global.properties" />
* 해당 경로 파일 추가
/WEB-INF/properties/global.propertie 해당 경로 파일 추가
global.propertie 내용 삽입
init.index=hewllo world
*controller propertie 내용 호출하기
@Value 어노테이션 추가해주기
@Value("#{init_properties['init.index']}") String init_text;
properties 내용 가져오기 .. 끝
유닉스 UNIX 나, 리눅스 Linux 에서, 파일이나 디렉토리(폴더)를 찾는 검색 명령어는 “find” 입니다. find 명령으로 파일이 아닌, 디렉토리를 검색하려면 명령어 맨 끝에 “-type d” (따옴표 제외) 라는 옵션을 붙여 주어야 합니다.
가령 하드 전체에서 즉 루트 디렉토리 아래에서, et 로 시작하는 모든 디렉토리를 찾으려면
find / -name ‘et*’ -type d
이렇게 합니다. 위의 명령어에서 “/” 는 루트 디렉토리 즉 최상위 디렉토리를 의미합니다.
find 라는 명령으로, 디스크에 저장된 각종 파일/디렉토리를 검색할 수 있습니다.
파일 찾기 (파일명 검색)
현재 디렉토리에서, pl 확장자를 가진 모든 파일 찾기
find -name ‘*.pl’
(현재 디렉토리 밑의 하위 디렉토리까지 다 찾습니다.)
루트에서부터, 즉 전체 하드에서, pl 확장자를 가진 모든 파일 찾기
find / -name ‘*.pl’
전체 하드 디스크에서, 파일명이 ab 로 시작하는 모든 파일 찾기
find / -name ‘ab*’
전체 하드 디스크에서, 파일명이 .bash 로 시작하는 모든 파일 찾기
find / -name ‘.bash*’
전체 하드 디스크에서, 파일명이 .bash 로 시작하는 모든 파일 찾기
+ ls 명령 형식으로 출력
find / -name ‘.bash*’ -ls
뒤에 -ls 라는 옵션을 붙이면 됩니다.
디렉토리명 찾기
전체 하드 디스크에서, 디렉토리 이름이 et 로 시작하는 모든 디렉토리 찾기
find / -name ‘et*’ -type d
주의! 옵션 순서를 바꾸면 에러가 납니다.
1. 덤프뜨기
$> mysqldump -u[사용자아이디] -p 데이터베이스명 [테이블명] > 저장될 파일명
예) mysqldump -ukamkami -p mydatabase > dump.sql
이렇게 하면 디비(mydatabase)를 몽땅 덤프를 뜨게된다.
테이블만 덤프를 뜨고 싶다면
예) mysqldump -ukamkami -p mydatabase member_table > dump.member_table.sql
이렇게 하면 테이블만 덤프를 뜰 수 있다.
2. 복구하기
덤프 파일을 가지고 복구를 하는 방법도 간단하다.
$> mysql -u[사용자아이디] -p [디비명] < 덤프파일명
예) mysql -ukamkami -p < dump.sql
예) mysql -ukamkami -p mydatabase < dump.member_table.sql
1.특정 db의 특정 table에서 원하는 값만 덤프받기
>> edu라는 디비에 a,b,c라는 테이블이 있다. 여기서 a라는 테이블에서 no가 7번이상이고 10번
이하인 값만 덤프를 받고자 한다. 어떻게 하겠는가?
여기서 사용되는 옵션은 -w 이다.그럼 위 질문의 sql문은 아래와 같다
mysqldump -u mysql_admin -p edu a -w’no=>7 and no=<10' > edu_a_cond.sql
위와같이 하면 no가 7~10번까지가 덤프될것이다.
위에서 조건문은 -w 다음에 싱글쿼테이션으로 묶어준다. sql에서 사용하는 조건문이 다 될듯싶
다. 모두 테스트를 해보진 않았다.
2.디비 스키마(Schema)만 백업받기
>>초기에 작성해 놓은 테이블 스키마가 없을때 어떻게 하겠는가?
만약 하나의 테이블이라면 desc 해서 일일이 다 삽질을 하면 되것지만 만약 테이블이 100개라
면 ..크억…이럴때 사용하는 mysqldump옵션이 있습니다.
-d 입니다.
!.edu라는 디비의 모든 테이블 스키마를 백업받으려면
mysqldump -u mysql_admin -p -d edu > edu_db.sql
!.edu라는 디비의 a라는 테이블 스키마를 백업받으려면
mysqldump -u mysql_admin -p -d edu a> edu_a_table.sql
java -cp lib/catalina.jar org.apache.catalina.util.ServerInfo
콘솔에 위와 같이 치면
Server version: Apache Tomcat/7.0.35
Server built: Jan 10 2013 10:52:49
Server number: 7.0.35.0
OS Name: Linux
OS Version: 2.6.32-279.19.1.el6.x86_64
Architecture: amd64
JVM Version: 1.6.0_39-b04
JVM Vendor: Sun Microsystems Inc.
요딴 정보뜸.
EX)
톰캣 설치경로가
/usr/local/tomcat 이라면
java -cp /usr/local/tomcat/lib/catalina.jar org.apache.catalina.util.ServerInfo
치면됨. 끝~!
참쉽죵
AES알고리즘
http://marcof.tistory.com/95
위키
http://ko.wikipedia.org/wiki/고급_암호화_표준
/** * AES 방식의 암호화 * * @param message * @return * @throws Exception */ public static String encrypt(String message) throws Exception { // use key coss2 SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(), “AES”); // Instantiate the cipher Cipher cipher = Cipher.getInstance(“AES”); cipher.init(Cipher.ENCRYPT_MODE, skeySpec); byte[] encrypted = cipher.doFinal(message.getBytes()); return byteArrayToHex(encrypted); }
/** * AES 방식의 복호화 * * @param message * @return * @throws Exception */ public static String decrypt(String encrypted) throws Exception { // use key coss2 SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(), “AES”); Cipher cipher = Cipher.getInstance(“AES”); cipher.init(Cipher.DECRYPT_MODE, skeySpec); byte[] original = cipher.doFinal(hexToByteArray(encrypted)); String originalString = new String(original); return originalString; } public static void main(String[] args) { try { String encrypt = encrypt(“test1234″); System.out.println(“origin str = “+”test1234″); System.out.println(“encrypt str = “+encrypt); String decrypt = decrypt(encrypt); System.out.println(“decrypt str = “+decrypt); } catch (Exception e) { e.printStackTrace(); } } }
세션 관리 타임아웃 감지하기 스프링 시큐리티에서 유효하지 않은 세션 ID를 감지하고 적절한 URL로 리다이렉트 시키도록 설정할 수 있다. 이것은 session-management 엘리먼트를 사용한다. <http> ... <session-management invalid-session-url="/sessionTimeout.htm" /> </http> 동시 세션 제어 사용자가 동시에 한번만 로그인할 수 있도록 제한하고 싶으면, 스프링 시큐리티는 다음과 같이 간단하게 추가할 수 있도록 지원한다. 세션 생명주기와 관련된 이벤트를 스프링 시큐리티가 받을 수 있도록 하기 위해, 우선 다음의 리스너를 web.xml 파일에 추가할 필요가 있다. <listener> <listener-class> org.springframework.security.web.session.HttpSessionEventPublisher </listener-class> </listener> 그리고 애플리케이션 컨텍스트에 다음의 코드를 추가한다. <http> ... <session-management> <concurrency-control max-sessions="1" /> </session-management> </http> 이것은 한 사용자가 동시에 두번 로그인 하는것을 방지한다. (두번째 로그인으로 인해 첫번째 로그인은 무효화된다) 종종 두번째 로그인을 방지할 필요가 있는데, 그런 경우에는 다음과 같이 할 수 있다. <http> ... <session-management> <concurrency-control max-sessions="1" error-if-maximum-exceeded="true" /> </session-management> </http> 그러면 두번째 로그인은 거부될 것이다. "거부"될 경우는, 폼-기반 로그인이 사용되는 환경에서는 authentication-failure-url 로 보내진다. 만약 두번째 로그인이 "remember-me"와 같은 비-상호적 메커니즘에 의해 수행되었다면, "unauthorized(불허가)"(402) 에러가 발생할 것이다. 대신에 에러페이지를 사용하려면 session-management 엘리먼트의 session-authentication-error-url 속성을 추가할 수 있다. 만약 폼-기반 로그인에 직접 작성한 인증 필터를 사용한다면, 동시 세션 제어 기능을 명시적으로 설장할 수 있다. 더 자세한 사항은 세션관리 장에서 찾을 수 있다. Session Fixation Attack 방지 악의적인 사용자가 사이트에 접근하기 위한 세션을 만들고, 그 세션을 통해 다른 사용자로 로그인 하려고 하는 경우(예를 들어, 세션에 ID를 파라미터로 포함하여 전송하는 경우) Session fixation attack의 잠재적인 위험이 존재하게 된다. 스프링 시큐리티는 이러한 공격을 자동으로 막기 위하여 사용자 로그인 때마다 새로운 세션을 생성한다. 이러한 방지 기능이 필요하지 않거나, 다른 기능들과 충돌이 발생할 경우에는, <session-management>의 session-fixation-protection 속성값으로 동작을 제어할 수 있다. 속성은 다음과 같은 세가지 옵션값들을 가진다. migrateSession - 새로운 세션을 생성하고 기존의 세션 값들을 새 세션에 복사해준다. 기본값으로 설정되어 있다. none - 아무것도 수행하지 않는다. 원래의 세션이 유지된다. newSession - "깨끗한" 새로운 세션을 생성한다. 기존의 세션데이터는 복사하지 않는다.