카테고리 없음2021. 8. 25. 19:10

한동안 컴퓨터에 별로 손이 안가서 방치해두다 보니

그세 옛날컴퓨터가 됐어요

기존에 쓰던 컴퓨터는 Intel e3-1225v3 프로세서가 들어가있는데요.

인텔이 한동안 많은 보안이슈들로 인해 성능하락이슈를 겪었고

나온지도 오래되서 예전같지 못하네요.

오랜만에 컴퓨터로 뭐라도 좀 만들어볼까? 뭔가 할게 없을까?

하다보니 장비부터 맞추게 되었습니다.

이게 동기부여라도 되면 좋겠네요.

사양은

AMD Ryzen5 5600x

ASUS TUF B550m-PLUS

시금치 16G

SAMSUNG PM9A1 SSD를 달아줬습니다.

그래픽카드는 너무 비싼것 같아서

굴러다니는 760을 달아줬네요.

 

라이젠5 4세대 5600

x는 우수한 단일 코어 성능으로

게임에서 타 제품 가성비를 압도하는 중인데요.

760엔 좀 과한 CPU긴 하지만 그래픽카드가 싸지면 ㅎㅎ

6코어 12스레드 제품으로 다중작업에도 부족함이 없어요~

 

5600x 패키지 사진
CPU-Z
BIOS

이건 나중에 그래픽카드사면 다시 돌려봐야겠네요 ㅎㅎ

Posted by 내년
프로그래밍/WinAPI2015. 3. 4. 16:47

개발중 디렉토리 변경 감시 모듈이 필요했다.

우선적으로 생각한 방법은 단순히 일정 시간(T) 마다 해당디렉토리의 전체 파일목록을 불러와서 변경된 것이 있는지 확인하는 것 이었다. 하지만 이 방법으로 처리를 하게되면 T가 작아지면 자원을 더 많이 사용할 것이고 T가 커지면 변경된 순간으로 부터 인식하는 순간까지의 시간이 커질 것이다. 그래서 좀 더 나은 방법을 찾아보던 중 FindFirstChangeNotification, WaitForMultiObjects, FindNextChangeNotification, FindCloseChangeNotification 이란 WinAPI들을 사용하면 가능하다는 것을 알았다. 그리고는 구글을 통해 여러 소스를 찾아보았지만 내 입맛에 맞는 것이 없어 직접 만들기로 하였다.

1. FindFirstChangeNotification

HANDLE WINAPI FindFirstChangeNotification(
  _In_  LPCTSTR lpPathName,
  _In_  BOOL bWatchSubtree,
  _In_  DWORD dwNotifyFilter
);
lpPathName : 감시할 디렉토리 경로
bWatchSubtree : 서브트리도 감시할 것 인가 여부
dwNotifyFilter : 어떠한 변경에 대하여 감시할 것인가에 대한 필터

변경 감지 공지 오브젝트에 대한 핸들값을 리턴한다.

2. WaitForMultiObjects

DWORD WINAPI WaitForMultipleObjects(
  _In_  DWORD nCount,
  _In_  const HANDLE *lpHandles,
  _In_  BOOL bWaitAll,
  _In_  DWORD dwMilliseconds
);

nCount : 감시 할 오브젝트의 갯수
*lpHandles : 오브젝트들의 핸들
bWaitAll : 모든 오브젝트의 신호를 감시할 것인가 여부
dwMilliseconds : 신호를 감지할때까지 기다릴 시간

오브젝트에 신호가 있을때 까지 기다린 후 몇번째 핸들에서 신호를 수신했는지 리턴한다
기다리는 동안 해당 스레드는 어떠한 작업도 할 수 없다.

3. FindNextChangeNotification
BOOL WINAPI FindNextChangeNotification(
  _In_  HANDLE hChangeHandle
);

hChangeHandle : FindFirstChangeNotification 을 통해 리턴받은 오브젝트의 핸들

오브젝트에서 신호가 수신된 후 다음 신호를 감시하도록 설정한다. 성공여부를 리턴한다.

4. FindCloseChangeNotification 

BOOL WINAPI FindCloseChangeNotification(
  _In_  HANDLE hChangeHandle
);

hChangeHandle : FindFirstChageNotification 을 통해 리턴받은 오브젝트의 핸들

변경을 감시하는 것을 중지 한다.

위 API 들을 이용해서 다음처럼 동작한다.

감시시작(FIndFirstChangeNotification) -> 신호기다림(WaitForMultiObjects) -> 신호발생 
-> 계속 감시(FindNextChangeNotification) or 감시 중단(FIndCloseChangeNotification)

다음은 해당 로직을 파워빌더로 구현한 것이다.

우선 사용할 WinAPI 함수를 지역 함수로 선언해 주었다.

FUNCTION ULONG FindFirstChangeNotification(&
REF STRING lpPathName,&
BOOLEAN bWatchSubtree,&
ULONG dwNotifyFilter &
)LIBRARY "Kernel32.dll" ALIAS FOR "FindFirstChangeNotificationA;Ansi"

FUNCTION ULONG WaitForSingleObject(&
ULONG hHandle,&
ULONG dwMilliseconds &
)LIBRARY "Kernel32.dll"

FUNCTION BOOLEAN FindNextChangeNotification(&
ULONG hChangeHandle &
)LIBRARY "Kernel32.dll"

FUNCTION ULONG WaitForMultipleObjects(&
ULONG nCount, &
ULONG lpHandle[], &
BOOLEAN bWaitALL, &
ULONG dwMilliseconds &
)LIBRARY "Kernel32.dll"

FUNCTION BOOLEAN FindCloseChangeNotification(&
ULONG hChangeHandle &
)LIBRARY "Kernel32.dll"

FUNCTION BOOLEAN ResetEvent(&
ULONG hEvent &
)LIBRARY "Kernel32.dll"

다음으로 감시 모듈을 시작시키는 사용자 함수를 만들었다.

public subroutine of_startmonitor (string directory, unsignedlong hwhd_receiver, unsignedlong hevent_exit, boolean watchsubtree);

/* WinAPI 들의 인자로 사용되는 상수들 */
CONSTANT
 BOOLEAN WATCH_SUBTREE=true
CONSTANT BOOLEAN DONT_WATCH_SUBTREE=false
CONSTANT BOOLEAN FILE_NOTIFY_CHANGE_FILE_NAME=1
CONSTANT ULONG INFINITE = 4294967295

ULONG lula_handle[] //감시할 오브젝트의 핸들을 저장할 변수
ULONG lul_nCount //감시할 오브젝트의 갯수를 저장할 변수
INTEGER li_i //FOR문에 사용할 변수

lula_handle[1] = hevent_exit //감시종료 이벤트 핸들로 함수 인자로 넘겨 받는다.
lula_handle[2] = FindFirstChangeNotification(directory, DONT_WATCH_SUBTREE, FILE_NOTIFY_CHANGE_FILE_NAME)
// 해당디렉토리(서버트리제외)를 감시 설정
IF watchsubtree THEN
    lula_handle[3] = FindFirstChangeNotification(directory, WATCH_SUBTREE, 
FILE_NOTIFY_CHANGE_FILE_NAME)
// 넘겨받은 인자중 watchsubtree가 TRUE 일 경우 서브트리도 감시 하도록 설정
END IF

lul_nCount = UpperBound(lula_handle) //핸들이 저장된 배열의 갯수를 저장해준다

FOR li_i = 2 TO INTEGER(lul_nCount) //FindFirstChangeNotification 이 정상 처리되었는지 확인
IF isNull(lula_handle[li_i]) THEN
MessageBox("ERROR", "Unexpected NULL from FindFirstChangeNotification")
RETURN
ELSEIF lula_handle[li_i] = -1 THEN
MessageBox("ERROR", "FindFirstChangeNotification function failed.")
RETURN
END IF
NEXT

/*
   총 3개의 오브젝트 신호를 기다리도록 설정한다.
    첫번째 핸들은 이 모듈을 중지시킬 유일한 방법은 종료 이벤트
    두번째 핸들은 해당 디렉토리 변경을 감시하는 오브젝트
    세번째 핸들은 해당 디렉토리의 서브트리 변경을 감시하는 오브젝트

    첫번째 핸들에서 신호가 오면 변경감시하는 오브젝트를 닫아주고 본 객체를 종료시킨다.
    두번째 핸들이나 세번째 핸들에서 신호가오면 다음변경을 감시하도록 설정을 하고
    인자로 넘겨받은 변경을 보고 받을 윈도우에 메세지를 보낸다.
    현재 설정되있는 것은 두번째 핸들은 WM_USER를 세번째 핸들은 WM_USER+1을 보낸다.
*/
DO WHILE TRUE

ULONG lu_dwWaitStatus
lu_dwWaitStatus = WaitForMultipleObjects(lul_nCount,lula_handle,FALSE,INFINITE)
IF lu_dwWaitStatus = 0 THEN
IF FindCloseChangeNotification(lula_handle[2]) = FALSE THEN
MessageBox("ERROR", "FindCloseChangeNotification function failed")
END IF
IF watchsubtree THEN
IF FindCloseChangeNotification(lula_handle[3]) = FALSE THEN
MessageBox("ERROR", "FindCloseChangeNotification function failed")
END IF
END IF
IF ResetEvent(lula_handle[1]) = FALSE THEN
MessageBox("ERROR", "ResetEvent function failed")
END IF
HALT CLOSE
ELSEIF lu_dwWaitStatus = 1 THEN
Send(hWhd_receiver,1024,0,0)
IF FindNextChangeNotification(lula_handle[2]) = FALSE THEN
MessageBox("ERROR", "FindNextChangeNotification function failed")
END IF
ELSEIF lu_dwWaitStatus = 2 THEN
Send(hWhd_receiver,1025,0,0)
IF FindNextChangeNotification(lula_handle[3]) = FALSE THEN
MessageBox("ERROR", "FindNextChangeNotification function failed")
END IF
END IF
LOOP

end subroutine

작성된 함수를 보면 인자로 directory(감시할폴더), hwhd_receiver(보고받을윈도우핸들), hevent_exit(종료이벤트핸들), watchsubtree(서버트리 감시여부)를 넘겨받는다.

이 모듈은 감시를 할때 다른 작업을 동시에 할수 없기때문에 멀티스레드 프로세스에 이용할 목적으로 만들었다.
메인스레드에서는 CreateEvent, SetEvent WinAPI를 통해 종료 이벤트를 생성해서 인자에 포함시켜 호출을 한다.

또한 변경이 감시 되었을때 hwhd_receiver로 메세지를 보내도록 되어있는데 Sned(hWhd_receiver,1024,0,0) 이 부분을 수정해서 다른 작업을 하도록 하거나 다른 메시지를 전송하도록 할 수 있다.

개발환경

파워빌더 11.5
윈도우 7 32bit

Posted by 내년
카테고리 없음2014. 12. 24. 11:25


tar cvfz x.tgz *
압축 - 현재 폴더의 모든파일을 x.tgz 으로 압축
tar tvf x.tgz
압축파일 내용 확인

passwd
패스워드변경

mkdir
폴더만들기
rmdir
폴더삭제
rm -rf test
폴더삭제(내용포함 전체삭제)

du [옵션] [파일]
디스크 사용량(disk usage) 조회
-a 모든 파일에 대한 정보 출력
-k KB단위 -m MB단위 -h 단위표시
-s 사용량의 총합계만 출력
-S 하위의 각각 사용량 출력
-l 하드링크의 용량을 모두 계산
ex) du -sh /x
     x 라는 폴더의 사용량 합계를 단위를 붙여서 출력

ps
프로세스 조회

xev
키보드 키 값 등 이벤트를 알아볼 수 있다

dconf editor
한영전환키설정할때 필요했던 프로그램

/usr/share/X11/xkb/symbols/ 폴더의 altwin 파일
ALT_R 을 Hangul 키로 변경할때 수정해야했던 파일
(변경 후 /var/lib/xkb/ 의 하위 파일을 모두 삭제해야함)

Posted by 내년
휴대폰/옵티머스G2013. 7. 19. 19:15

3가지 방법중 선택

1. ##700629# 입력 -> 8252 입력

2. 시스템설정 -> 백업 및 초기화 -> 초기화

3. 볼륨 아래 버튼 + 전원 버튼 꾹~ -> 전원 버튼 -> 전원 버튼
*(벽돌이 됐을시 3번만 가능함)

 

- 공초시 사진, MP3 등 모든 파일 삭제됨

Posted by 내년
바람의나라/AHK2013. 1. 31. 20:03

위 영상은 천무, 천군 버전 영상입니다. (천위, 재천버전 아직 준비중)

천무 천군 버전의 글과 80%이상 동일한 내용입니다. 몇몇 다른내용은 파란색글씨로 처리하였습니다.

0. 권리 및 의무

본 프로그램의 모든 권리는 저에게 있으며 무단으로 크랙킹(디컴파일, 리버스엔지니어링 등 모든 수정행위), 재배포 할 수 없습니다.

본 프로그램을 사용하는데 있어서 생기는 불이익의 책임은 모두 사용자에게 있습니다.
단, 직접배포된(타인의 수정없이 저를 통해) 프로그램에 악의적으로 악성코드(백도어,바이러스 등)를 삽입해서 사용자가 피해를 입을경우 모든 책임은 저에게 있습니다.

1. 시도

본 프로그램은 비공개로 저를 통해 직접 배포되거나 저의 동의하에 배포됩니다.

http://only12u.woobi.co.kr/rb/ 에 가입합니다.
이때 이메일 주소는 반드시 정확해야 합니다. (승인시 이메일 주소로 프로그램을 보내드립니다.)
본 글에 비밀댓글로 다음과 같이 승인요청을 합니다.
예) 아이디 = superman 천위재천낭산 승인요청 합니다.
단, 승인은 특별한경우(지인, 이벤트 등등)이 아니면 거의 이루어지지 않습니다.

※승인이란 - 본 프로그램을 이용할 권리를 부여받는 것으로 위 사이트의 회원등급으로 결정됩니다. 모든 승인은 저를 통해 이루어집니다.

2. 획득

승인을 통해 프로그램을 획득하게 되었다면 압축을 풀고 파일을 실행합니다.(윈7은 반드시 관리자권한으로 실행)
가입했었던 아이디와 패스워드를 넣고 로그인을 시도합니다.
(로그인이 실패했다면 당신은 승인이 해제되었거나 누락되었을 수 있습니다.)
로그인이 성공했고 적합한 등급을 가지고 있다면

다음과 같은 화면을 볼 수 있습니다.

서버인증이 완료됐다면 PC인증 절차를 거치게 됩니다.
PC인증이 안되었다면 다음과 같은 화면이 출력되게 됩니다.

다음 화면이 출력된다면 자동으로 아이디와 인증코드가 클립보드로 복사됩니다.
이것을 이 글에 비밀댓글로 달아주시면 됩니다.
그러면 제가 확인하는대로 등록키 파일을 회원가입시 입력했던 이메일로 발송해 드립니다.
이메일을 받은 후 첨부파일에 KEY.ini 파일을 다운받아서 실행파일과 똑같은 폴더에 저장합니다.

그 후 동일한 과정을 거쳐서 접속을 시도하게 되면 위 화면대신

위와 같은 화면이 뜨게 되며 프로그램이 실행됩니다.

3. 실행 및 셋팅

위 과정을 거치면 드디어 다음과 같이 실행된 프로그램을 볼 수 있습니다.

(프로그램은 수시로 수정됨으로 실행 화면은 실제와 다소 차이가 있을 수 있다.)

바람의나라를 창모드(전체화면미지원)로 실행한 후 다음을 따라합니다.

1클릭 2클릭 3클릭 4스킬번호자신에 맞게 셋팅 5저장누르기 (x로 나오면 안된다 반드시 저장)

게임옵션은 다음과 같이 합니다.

버프창 최대화 및 채팅창 스타일3 (채팅창 없는 것) 은 반드시 해주셔야 합니다.

십억경은 강제적으로 Z위치에 놓으셔야 합니다.

4. 시작

이제 낭산입장포탈이 보이는 곳으로 이동해서 F10 키를 눌러서 시작합니다.

5. 성능 및 제약

안죽고 안정적인 진행을 위해선 1부위 타흡과 적절한 방어 스펙이 필요합니다.
이상적인 스펙셋팅의 예
ex1) 타흡70이상용반+보목포함 -80방어 이상
ex2) 옵션최대치하급구미호포+보목포함-90방어 이상

천위 재천버전은 직접 테스트 해보지 못했습니다.
위 스펙을 준수하는 천위이상이라면 시간당 120억 정도를 할것으로 예상합니다.

6. 개선

제한적인 실행환경에서 테스트 했기 때문에 여러 실행환경에서 개선점을 발견할 수도 있습니다.
오작동을 발견하거나 추가 구현을 바라는점이 있을 경우 댓글로 달아주시면 됩니다.

----수정중----

 

'바람의나라 > AHK' 카테고리의 다른 글

이새리 천무, 천군 낭산 v1.0  (2) 2013.01.31
Posted by 내년
바람의나라/AHK2013. 1. 31. 20:02

영상찰영에 이용된 캐릭 스펙
천무수호령 올노각 올노돋 노보목 -57방 체력40만

0. 권리 및 의무

본 프로그램의 모든 권리는 저에게 있으며 무단으로 크랙킹(디컴파일, 리버스엔지니어링 등 모든 수정행위), 재배포 할 수 없습니다. 

본 프로그램을 사용하는데 있어서 생기는 불이익의 책임은 모두 사용자에게 있습니다.
단, 직접배포된(타인의 수정없이 저를 통해) 프로그램에 악의적으로 악성코드(백도어,바이러스 등)를 삽입해서 사용자가 피해를 입을경우 모든 책임은 저에게 있습니다.

1. 시도

본 프로그램은 비공개로 저를 통해 직접 배포되거나 저의 동의하에 배포됩니다.

http://only12u.woobi.co.kr/rb/ 에 가입합니다.
이때 이메일 주소는 반드시 정확해야 합니다. (승인시 이메일 주소로 프로그램을 보내드립니다.)
본 글에 비밀댓글로 다음과 같이 승인요청을 합니다.
예) 아이디 = superman 천무천군낭산 승인요청 합니다.
단, 승인은 특별한경우(지인, 이벤트 등등)이 아니면 거의 이루어지지 않습니다.

※승인이란 - 본 프로그램을 이용할 권리를 부여받는 것으로 위 사이트의 회원등급으로 결정됩니다. 모든 승인은 저를 통해 이루어집니다.

2. 획득

승인을 통해 프로그램을 획득하게 되었다면 압축을 풀고 파일을 실행합니다.(윈7은 반드시 관리자권한으로 실행)
가입했었던 아이디와 패스워드를 넣고 로그인을 시도합니다.
(로그인이 실패했다면 당신은 승인이 해제되었거나 누락되었을 수 있습니다.)
로그인이 성공했고 적합한 등급을 가지고 있다면

다음과 같은 화면을 볼 수 있습니다.

서버인증이 완료됐다면 PC인증 절차를 거치게 됩니다.
PC인증이 안되었다면 다음과 같은 화면이 출력되게 됩니다.

다음 화면이 출력된다면 자동으로 아이디와 인증코드가 클립보드로 복사됩니다.
이것을 이 글에 비밀댓글로 달아주시면 됩니다.
그러면 제가 확인하는대로 등록키 파일을 회원가입시 입력했던 이메일로 발송해 드립니다.
이메일을 받은 후 첨부파일에 KEY.ini 파일을 다운받아서 실행파일과 똑같은 폴더에 저장합니다.

그 후 동일한 과정을 거쳐서 접속을 시도하게 되면 위 화면대신

 

위와 같은 화면이 뜨게 되며 프로그램이 실행됩니다.

3. 실행 및 셋팅

위 과정을 거치면 드디어 다음과 같이 실행된 프로그램을 볼 수 있습니다.

 

(프로그램은 수시로 수정됨으로 실행 화면은 실제와 다소 차이가 있을 수 있다.)

바람의나라를 창모드(전체화면미지원)로 실행한 후 다음을 따라합니다.

1클릭 2클릭 3클릭 4스킬번호자신에 맞게 셋팅 5저장누르기 (x로 나오면 안된다 반드시 저장)

게임옵션은 다음과 같이 합니다.

버프창 최대화 및 채팅창 스타일3 (채팅창 없는 것) 은 반드시 해주셔야 합니다.

십억경은 강제적으로 Z위치에 놓으셔야 합니다.

4. 시작

이제 낭산입장포탈이 보이는 곳으로 이동해서 F10 키를 눌러서 시작합니다.

5. 성능 및 제약

테스트는 35/8 천무로 진행하였습니다.
안죽고 안정적인 진행을 위해선 1부위 타흡과 적절한 방어 스펙이 필요합니다.
이상적인 스펙셋팅의 예
ex1) 타흡70이상용반+보목포함 -80방어 이상
ex2) 옵션최대치하급구미호포+보목포함-90방어 이상
캐릭터의 체력이 더높아진다면 위의 스펙보다 낮아도 안정적일 수 있습니다.
35/8 타흡 78 보목포함 -82방 스펙으로 낭산을 진행했을시
시간당 90억~100억 정도의 경험치를 획득하였습니다.

6. 개선

제한적인 실행환경에서 테스트 했기 때문에 여러 실행환경에서 개선점을 발견할 수도 있습니다.
오작동을 발견하거나 추가 구현을 바라는점이 있을 경우 댓글로 달아주시면 됩니다.

----수정중----

 

 

 

'바람의나라 > AHK' 카테고리의 다른 글

이새리 천위, 재천 낭산 v1.0  (8) 2013.01.31
Posted by 내년
바람의나라/정보2013. 1. 31. 13:09

상급목각도깨비방망이 (상급목각, 목각, 도깨비방망이, 전우치)

용랑제십봉 의 허상 (용랑십봉)

용주제구도 (용주구도)

중급남자구미호갑옷 (중급구미호갑옷, 구미호갑옷)

'바람의나라 > 정보' 카테고리의 다른 글

바람의나라 방어구관통 비서 정리  (2) 2013.01.31
Posted by 내년
바람의나라/정보2013. 1. 31. 11:29

 

 이름

부위 

성능  중복여부  획득장소 
 xx년방어구관통

 무기, 투구

 35, 28, 7 랜덤 

 X

 이벤트 

 [5]xx년방어구관통

 무기   35   O   이벤트+판독기
 [33]xx년방어구관통  무기  28  O

 이벤트+판독기

 [99]xx년방어구관통

 무기  7  O  이벤트+판독기
         
 xx의방어구관통  무기, 투구 (xx문양)  28, 14, 7 랜덤  X

 귀문마동

 [8]xx의방어구관통

 무기, 투구 (xx문양)

 28  X

 귀문마동+돋보기

 [20]xx의방어구관통  무기, 투구 (xx문양)

 28 (70%문양파괴)

 X  귀문마동+돋보기
 [50]xx의방어구관통

 무기, 투구 (xx문양)

 17

 X  귀문마동+돋보기

 [65]xx의방어구관통

 무기, 투구 (xx문양)

 17 (70%문양파괴)

 X  귀문마동+돋보기

 [99]xx의방어구관통

 무기, 투구 (xx문양)  7  X  귀문마동+돋보기

 [8]진xx의방어구관통

 무기, 투구 (xx문양)  28  O

 귀문마동+판독기

 [20]진xx의방어구관통  무기, 투구 (xx문양)

 28 (70%문양파괴)

 O  귀문마동+판독기
 [50]진xx의방어구관통  무기, 투구 (xx문양)

 17

 O  귀문마동+판독기

 [65]진xx의방어구관통

 무기, 투구 (xx문양)

 17 (70%문양파괴)

 O  귀문마동+판독기
 [99]진xx의방어구관통  무기, 투구 (xx문양)  7  O  귀문마동+판독기
         

 도깨비방어구관통

 무기, 투구

 37, 28, 17, 7 랜덤

 O  
         

틀린점 있으면 댓글로 달아주시면 수정하겠습니다.

Posted by 내년