Programming/Code helper | Posted by niu 2011/07/05 16:06

SqlMap 다이나믹 쿼리


출처 : http://blog.naver.com/whily312?Redirect=Log&logNo=100102333320

조건이 두개이상인 경우 가독성이 떨어진다.

예) 직책이 사장이고 월급이 비어있으면 사장의 월급은 100이다.

<isEqual property="직책" comaperValue="사장">

<isNull property="월급">

사장 월급 = "100"

</isNotNull>

</isEqual>

바이너리 조건적인 요소
prerpend - statement에 붙을 오버라이딩 가능한 SQL 부분(옵션)
property - 비교되는 프라퍼티(필수)
compareProperty - 비교되는 다른 프라퍼티(필수 또는 compareValue)
compareVale - 비교되는 값(필수 또는 compareProperty)

<isEqual> - 프라퍼티와 값 또는 다른 프라퍼티가 같은지 체크.
<isNotEqual> - 프라퍼티와 값 또는 다른 프라퍼티가 같지 않은지 체크
<isGreaterThan> - 프라퍼티와 값 또는 다른 프라퍼티보다 큰지 체크
<isGreaterEqual> - 프라퍼티와 값 또는 다른 프라퍼티보다 크거나 같은지 체크.
<isLessThan> - 프라퍼티와 값 또는 다른 프라퍼티보다 작은지 체크.
- 예)<isLessEqual prepend = "AND" property="age" compareValue="18"> ADOLESCENT = 'TRUE'</isLessEqual>


단일 조건적인 요소
prepend - statement에 붙을 오버라이딩 가능한 SQL부분(옵션)
property - 체크 되기 위한 프라퍼티(필수)

<isPropertyAvailable> - 프로퍼티가 유효한지 체크(이를테면 파라미터빈의 프라퍼티이다.)
<isNotPropertyAvailable> - 프라퍼티가 유효하지 않은지 체크(이를테면 파라미터의 프라퍼티가 아니다.)
<isNull> - 프라퍼티가 null인지 체크
<isNotNull> - 프라퍼티가 null이 아닌지 체크
<isEmpty> - Collection, 문자열 또는 String.valueOf() 프라퍼티가 null이거나 empty("" or size() < 1)인지 체크
<isNotEmpty> - Collection, 문자열 또는 String.valueOf() 프라퍼티가 null이 아니거나 empty("" or size() < 1)인지 체크
- 예) <isNotEmpty prepend="AND" property="firstNAme">FIRST_NAME=#firstName#</isNotEmpty>


다른 요소들
Parameter Present : 파라미터 객체가 존재하는지 체크
prepend - the statement에 붙은 오버라이딩 가능한 SQL부분(옵션)

<isParameterPresent> - 파라미터 객체가 존재(not null)하는지 보기위해 체크.
<isNotParameterPresent> - 파라미터 객체가 존재하지(null)않는지 보기위해 체크.
- 예) <isNotParameterPresent prepend="AND">EMPLOYEE_TYPE='DEFAULT'</isNotParameterPresent>


Iterate : 이태그는 collection을 반복하거나 리스트내 각각을 위해 몸체부분을 반복한다.
prepend - the statement에 붙을 오버라이딩 가능한 SQL부분(옵션)
property - 반복되기 위한 java.util.List타입의 프라퍼티(필수)
open - 반복의 전체를 열기 위한 문자열, 괄호를 위해 유용하다.(옵션)
close - 본복의 전체를 닫기 위한 문자열, 괄호를 위해 유용하다.(옵션)
conjunction - 각각의 반복 사이에 적용되기 위한 문자열, AND 긜고 OR을 위해 유용하다.(옵션)

<iterate> - java.util.List 타입의 프라퍼티 반복
- 예) <iterate prepend="AND" property="userNAmeList" open="(" close=")" conjunction="OR">
username = #userNameList[]#
</iterate>
- 주의 : iterator요소를 사용할 때 리스트 프라퍼티의 끝에 중괄호 []를 포함하는 것은 중요하다.
중괄호는 문자열처럼 리스트를 간단하게 출력함으로부터 파서를 유지하기 위해 리스트처럼 객체를 구별한다.

저작자 표시 비영리 변경 금지
Creative Commons License
Creative Commons License

TRACKBACK http://blog.niu.kr/trackback/83 관련글 쓰기

댓글을 달아 주세요


 

  1. .project 파일의 natures 항목에 아래 내용을 추가.
    <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
    <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
  2. 프로젝트 새로고침 - 변경내용 적용
  3. project - properties를 열어서 project facets를 수정.
  4. Dynamic Web Module
    Java
    JavaScript

    항목을 추가.(Dynamic Web Module의 경우 2.5를 사용.  Tomcat v6.0)

저작자 표시 비영리 변경 금지
Creative Commons License
Creative Commons License

TRACKBACK http://blog.niu.kr/trackback/82 관련글 쓰기

댓글을 달아 주세요

원본 : http://svrstudy.tistory.com/75

안녕하세요. 엉스데브 입니다.

이번에는 원격 서버에 파워쉘로 연결하는 방법에 대해 알아보았습니다.

Windows 2008 R2, Windows 7 부터는 기본적으로 PowerShell 원격 작업이 가능하도록 되어있습니다.
다만, 원격 연결을 설정하고 실행 하려면 원격 컴퓨터의 관리자(Administrators) 그룹의 권한이 필요하며,
로컬 서버에서 원격 서버에 연결 혹은 명령어를 실행 할 때 항상 이 권한을 가진 자격증명을 제공해 주어야 합니다.

1. 원격 서버 설정하기.
먼저 원격 기능을 사용할 수 있도록 원격 서버 설정을 변경 해 주어야 합니다.
PowerShell 2.0 부터는 이 설정 변경 작업을 간편하게 할 수 있는 cmdlet 을 기본 제공 합니다.

원격 서버에서 아래의 명령어를 실행하면 됩니다.

Enable-PSRemoting


명령을 실행하면 처리하는 작업에 대한 승인여부를 물어보는데,
아무것도 묻지않고 자동으로 처리 하도록 하려면 -Force 파라미터를 추가 해 주면 됩니다.




이 명령어를 실행하면, 자동으로 여러 설정을 변경해서, 원격 연결을 받아들일 수 있는 상태로 설정 해 줍니다.
자세한 내용은 MSDN 도움말(링크)을 확인 해 보시기 바랍니다.

기본적으로 모든 IP 에서 원격 연결을 허용하게끔 설정 되는데, 해당 서버의 Administrators 그룹 권한을 가진 계정정보를 모르면 원격 연결이 불가능 하기 때문에 보안적인 문제는 크게 걱정하지 않아도 됩니다.

만약, 제한 된 IP 에서만 원격 연결이 허용 되도록 하고싶다면, 직접 방화벽 설정을 통해 조절할 수 있습니다.
PowerShell 은 WinRM 프로토콜(TCP/5985, TCP/5986)을 사용해 통신하므로, 해당 포트의 접속 가능 여부를 조작 하시면 됩니다.

2. 로컬 서버의 "신뢰할 수 있는 호스트 목록" 에 원격 서버 추가하기.
원격 서버에 접속 하려면, 로컬 서버의 "신뢰할 수 있는 호스트 목록" 에 원격 서버를 등록 해야 합니다.
로컬 서버의 "신뢰할 수 있는 호스트 목록" 을 설정하려면, 아래의 명령어를 사용하면 됩니다.

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "원격서버IP 혹은 호스트네임"

이 명령어를 사용하면 WinRM 보안구성 변경 확인 여부를 물어보는데,
아무것도 묻지않고 자동으로 처리 하도록 하려면 -Force 파라미터를 추가 해 주면 됩니다.




만약 여러개의 원격 서버를 지정 하고 싶다면 각 항목을 콤마(,) 로 구분하면 됩니다.

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "원격서버1, 원격서버2"




만약 새로 설정하는 것이 아니라, 기존 설정에 추가하고 싶다면 아래와 같이 하면 됩니다.

$TrustedHostsOld = (Get-Item WSMan:\localhost\Client\TrustedHosts).Value
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "$TrustedHostsOld, 원격서버IP 혹은 호스트네임"




3. 원격 서버 접속용 자격증명(Credential) 만들기.
이제 원격 서버에 접속 할 수 있는 환경 구축은 마무리 되었고, 원격 서버에 접속 할 계정에 대한 자격 증명을 만들 차례 입니다.

자격증명은 간단히 아이디/패스워드 정보 라고 이해하시면 쉽습니다.
터미널에 접속 할 때 아이디/패스워드 를 입력 하는것 처럼, PowerShell 원격 접속 시에 사용할 아이디/패스워드 정보를 특정 형식으로 저장 한 것입니다.

PowerShell에서는 이 자격증명을 변수에 넣어두어 -Credential 파라미터에 지정 해 주는 방식으로 사용 할 수 있습니다.

자격증명은 아래와 같이 만들 수 있습니다.

(방법1)
간단하게 만들 수 있는 방법입니다.
하지만, 사용자가 패스워드를 직접 입력 해 주어야 하기 때문에, 스크립트 작성 등 자동 화가 필요한 작업에는 사용하기 어렵습니다.

아래의 명령을 입력하면, 패스워드를 입력받기 위한 팝업창에 표시 됩니다.
팝업되는 창에 패스워드를 입력 해 주면, 자격증명이 만들어져 $MyCredential 변수에 저장 됩니다.

$MyCredential = Get-Credential "아이디"




(방법2)
자동화가 필요할 때 사용할 수 있는 방법입니다.
사용자에게 직접 입력을 요구하지 않고, 미리 입력 해 둔 정보를 활용해서 자격증명을 만들 수 있습니다.

먼저, 아래 명령을 사용해서, 패스워드를 변수에 저장 합니다.
아래 명령어를 실행하고 패스워드를 입력 해 주면, 입력된 패스워드를 암호화 하여
아래 스크린샷과 같이 확인 할 수 없는 상태의 문자열로 변환되어 변수에 저장 됩니다.

$MyPassword = Read-Host "Password" -AsSecureString | ConvertFrom-SecureString




자동화가 필요할 경우, 이 변수에 저장 된 문자열을 별도로 저장해 두고 추후 자격 증명을 만들때 사용하면 됩니다.

이 문자열을 사용해 자격증명을 만들려면, 아래와 같이 실행하면 됩니다.

$MyPassword = $MyPassword | ConvertTo-SecureString
$ObjectTypeName = "System.Management.Automation.PSCredential"
$MyCredential = New-Object -TypeName $ObjectTypeName -ArgumentList "아이디",$MyPassword



4. 원격 작업 하기
이제 모든 준비가 완료 되었습니다. 원격 작업을 해 봅시다.
먼저, 원격 서버에 PowerShell 로 접속 하고 싶다면, 아래의 명령을 사용하면 됩니다.

Enter-PSSession -ComputerName "원격서버IP 혹은 호스트네임" -Credential $MyCredential



만약, 원격 서버에 접속하는 것이 아니라, 원격서버에서 특정 명령어만 실행하고 싶다면, 아래와 같이 하면 됩니다.

Invoke-Command -ComputerName "원격서버IP 혹은 호스트네임" -Credential $MyCredential -Command {"실행 할 명령어"}





원격 설정이 그다지 복잡하지 않네요. 여러대의 서버가 있을 경우, 유용하게 사용 할 수 있을 것 같습니다 ^^
오늘은 여기까지 입니다. 제가 포스팅 한 내용이 도움이 되셨기를 바랍니다.

감사합니다.


저작자 표시 비영리 변경 금지
Creative Commons License
Creative Commons License

TRACKBACK http://blog.niu.kr/trackback/80 관련글 쓰기

댓글을 달아 주세요

펌글입니다.
혹시나 하는 마음에 항목을 복사해온것에 불과합니다.
snoopy님의 삭제나 비공개 요청이 있을경우 변경이 될수 있으니 아래 원문을 참고하시는 것이 좋습니다.

원본 : http://snoopybox.co.kr/946

-------------------------------------------------------------------------------------------------------------

※ 시작하기에 앞서 이렇게 수동으로 작업하시는게 두려우신 분들께는 멀티 부팅을 복구해보자 EasyBCD글에 나온 프로그램을 사용하실 것을 권장드립니다.


※ 멀티부팅을 구성하실 생각이라면 XP를 먼저 첫번째 파티션에 설치하고 상위 버전의 OS는 나중에 설치할 것을 권장합니다. 그렇게 하면 자동으로 멀티부팅이 구성되고 이런 식으로 귀찮은 작업을 하실 필요가 없습니다.


가끔 질문받았던 내용인데 그동안 바빠서 포스팅하지 못했던 것을 오늘에야 이렇게 올립니다. 정확한 가이드 작성을 위해 직접 제 컴퓨터에 2가지 OS를 순서대로 설치하였고, 부팅 복구를 확인했습니다. 우선 제가 사용중인 SSD를 2개의 파티션으로 분할한 다음 첫번째 파티션에 비스타 32비트를 설치했습니다. 그런 다음 두번째 파티션에 XP를 설치해봤더니 다음과 같은 상태가 되었습니다.





XP를 설치하고 나면 XP로만 부팅되기 때문에 현재 XP에서 이 글을 작성합니다. 위 스샷을 보시면 C에 비스타가 설치되어 있고 F에 XP가 설치되어 있습니다. 보통 새로 OS를 설치하고 그 OS로 부팅을 하면 해당 OS가 C로 표시되게 마련인데 XP의 경우는 구형이라 조금 다른가보네요. 저는 XP 부팅파일이 F에 설치될줄 알았는데 의외로 C에 설치되어 있기 때문에 이런 경우는 부팅복구가 오히려 간단합니다. 참고로 현재 XP 파티션이 F인 이유는 D가 500G 하드, E가 CD롬으로 잡혀있기 때문입니다. 이 상태에서 윈도우 7 or 비스타 부팅을 복구하려면 먼저 C에 있는 BCD에게 권한을 넘겨줘야 합니다. 현재는 C가 NTLDR로 부팅되도록 설정되어 있기 때문에 XP로만 부팅되고 있는 상황입니다. 아래 첨부파일을 다운받으신 다음 윈도우 폴더에 복사해두고 CMD 창을 열어서 다음 명령어를 입력해주세요.



bootsect /nt60 sys /mbr




위와 같이 입력하시면 MBR을 BOOTMGR로 부팅되도록 업데이트 합니다. 이 상태로 재부팅 하시면 이제는 XP로 부팅되지 않고 비스타로만 부팅됩니다. 일단 저도 재부팅한 다음 비스타로 들어가서 다시 글을 작성하겠습니다.


자 이제 저는 비스타로 들어왔습니다. 가이드를 계속 이어가겠습니다. 이제는 XP를 비스타의 부팅메뉴인 BCD에 추가해주는 작업을 해야합니다. 명령 프롬프트를 관리자 권한으로 실행하신 다음 다음과 같이 입력해주세요.

bcdedit /create {ntldr} /d "Windows XP Professional SP3"

큰 따옴표 안에 XP 부팅메뉴 이름은 아무렇게나 원하시는 이름을 적어주시면 됩니다. 만약에 다음과 같은 오류가 발생한다면




이미 {ntldr} 이라는 항목이 존재한다는 말인데 그렇다면 그냥 기존에 존재한다는 저 항목에 큰 따옴표 뒷 부분만 수정하도록 다음과 같이 입력하시면 되겠습니다.

bcdedit /set {ntldr} description "Windows XP Professional SP3"




bcdedit /set {ntldr} device partition=C:

가장 중요한 부분
입니다. 여기서 C 드라이브를 지정하는 것은 XP가 설치된 파티션이 아닙니다. BCD가 존재하는 활성파티션 즉 원래의 부팅파티션을 지정해줘야 합니다. 이 글의 가정대로 비스타를 첫번째 파티션에 먼저 설치했고 BCD 역시 C에 있는 상황이라면 XP를 나중에 설치한 경우도 XP의 부팅파일은 C에 생성이 됩니다. 따라서 웬만한 상황이라면 이 부분을 C로 입력하시면 됩니다.

bcdedit /set {ntldr} path \ntldr

NTLDR 파일의 위치를 지정해주는 것인데 현재 NTLDR 파일은 BCD가 있는 드라이브에 존재하기 때문에 그냥 위 내용을 그대로 입력해주시면 됩니다.

bcdedit /displayorder {ntldr} /addlast

XP 부팅항목을 멀티부팅 메뉴 마지막 부분에 추가하는 명령어입니다. 처음에 오류났던 부분까지 해서 한꺼번에 입력한 모습을 보여드리겠습니다.




이제 이 상태로 재부팅을 하면 비스타와 윈도우 XP를 선택할 수 있는 메뉴가 나타나게 됩니다.

참고 문헌
http://support.microsoft.com/kb/919529/ko
저작자 표시 비영리 변경 금지
Creative Commons License
Creative Commons License

TRACKBACK http://blog.niu.kr/trackback/79 관련글 쓰기

댓글을 달아 주세요


프로그램 하단에 트레이 아이콘을 설정하는 법입니다.

기본적인 트레이 등록하는 법은 다음과 같습니다.

간단합니다.

그런데 이 방법으로 했을 경우 한가지 문제가 생기는 경우가 있습니다.

XP나 Win7에서는 동작을 잘하는데 Vista에서는 Explorer가 꺼졌다가 살아난경우 동작을 하지 않는 경우가 생깁니다.

도무지 이해가 되지 않아 찾아봤더니 트레이 프로그램은 관리자 권한으로 실행중인데 explorer는 관리자 권한이 없어서 메시지가 통보가 되지 않는겁니다.

explorer를 관리자 권한으로 할수도 없으니 트레이에서 해결해야겠죠.
방법은 해당 메시지를 받을수 있게 하는겁니다.
아래와 같은 코드를 추가하면 됩니다.
User32.dll을 Delay Load한 이유는 ChangeWindowMessageFilter 함수가 Vista 이상에서 구동이 가능한것이기 때문입니다.
UAC가 추가된것이 Vista부터이니 당연한 얘기겠지요.

그런데 여기에서도 문제가 발생합니다.

일반적인 어플리케이션의 경우에는 상관이 없지만 서비스에서 실행시켜주는 User 프로그램의 경우 부팅시 트레이 아이콘이 등록되지 않는 경우가 생깁니다.

이것은 explorer가 동작중이지 않은 상황에서 User 프로그램이 먼저 실행이 되어서 발생합니다.
일반적으로 프로그램 시작시에 트레이 아이콘을 등록하게끔 하는겁니다.

explorer가 동작중이지 않은 상황에서는 RegisterWindowMessage를 실행해도 이후 explorer가 실행될때 등록한 TaskbarCreated 메시지가 통지가 되지 않습니다.(왜인지는 저도ㅠ_ㅠ)

어쨋든 이 문제를 해결하기 위해서는 Shell_NotifyIcon가 실패한 경우에 Thread를 생성하여 explorer.exe가 실행될때까지 기다리는수밖에 없습니다.(리턴값 체크 잘하세요ㅠㅠ)
저작자 표시 비영리 변경 금지
Creative Commons License
Creative Commons License

TRACKBACK http://blog.niu.kr/trackback/78 관련글 쓰기

댓글을 달아 주세요

<PREV 1 2 3 4 5 ... 11 NEXT>