Zod Update (2008. 2. 14)

Zod Update (2008. 2. 14)

1. 게임 기능에서 아이템에 심연지와,파심연와,섭령취혼,파섭령혼,혈폭참,천마군림보가 업데이트 되었습니다.

2. @상점 명령어 사용이 변경되었습니다.
– @상점 구매 계정명 아이템명 -> @상점 구매 아이템명 계정명

3. 아이템 기능중 “대박상자”에 있던 버그가 수정되었습니다.
– 사용을 하여도 수량이 줄지 않는 문제가 해결되었습니다.
– 아이템이 나왔지만 인벤토리에 수량이 틀리게 지급되는 문제가 해결되었습니다.

4. @혈투 에서 얻을수있는 전투력이 반으로 줄었습니다.

5. @환전소 명령 사용시 일정 이상의 재산을 가지고 있다면 낮은 확률로 강도가 출현합니다.

6. 아이템 사용기능은 베타버전입니다.
– 벨런싱 조정을 맞춘후 일정기간 예고후 DB를 리셋하며 리셋 당시 1위는 명예의 전당에 등록됩니다.

더 좋은 아이디어가 있으시면 HanIRC 서버 #Zod 채널에 접속하셔서 의견을 주십시요.

– Xeriars

컴퓨터를 새로 사게 되었다..

사실.. 컴을 산건 지난주지만…
필자가 매우 귀찮은 관계로 이제야 블로그에 글을 올리게 되었다.



CPU : Q6600 (core2 quad 2.4Ghz)
RAM : 2G (DDR2)
하드 : 500GB (파티션 분할로 사용중..)

왠지 게임머신이 되버린 느낌이다..
뭐 그건 둘째치고 확실히 전에 쓰던 컴퓨터와 모든면에서 차이가 난다.
일단 외형상 CRT에서 LCD로 바뀌었다는점.; (외형은 나중에 인증샷을…)

PSP를 사용하다보면 영화를 보기위해서 mp4 파일로 변환하여 줄 필요가 있는데
7년간 쓰던 전 컴퓨터는 3시간이 걸렸다.. (팬3 844, 512램으로 돌렸으니…)
이번에 새로 산 컴퓨터는 14분이 걸린다.

무려 3*60/14 = 12.857142857142857142857142857143 배 빠르다.

뭐 아직 완벽한 개념의 쿼드코어는 아니지만 확실히 멀티 테스킹에 대해서 무리가 없으며
(바람의나라를 하면서 스팀으로 카스를 켜놓고 놀아도 멀쩡하다. 여기다 서든도 켜볼까?)
직업특성상 3D Modeling을 하는 경우가 많은데, 이 경우에도 놀라운 성능을 보여준다.

결론 : 이번 컴퓨터로 장가갈때까지 버텨야지…-_-;;;

PSP로 무선인터넷을 사용해보자. ~_~

요즘 psp를 여러가지로 활용하는 맛이 들렸다.마침 우리학교에서는 무선인터넷이 사용가능해서 혹시나 모를 우리학교내의

psp를 가지고 있는 사람들 중 무선인터넷을 사용하고 싶은사람들을 위하여 간단한 설정법을 소개하고자 한다.



당연히 인터넷을 사용하려면 ID가 있어야한다. 우리학교내의 홈페이지중 “E-SNUT -> 모바일캠퍼스” 로 들어가서 학번과 종합정보시스템에 썼던 비밀번호를 입력하면 위 스샷처럼 아이디를 신청하는 페이지로 갈 수 있다.



대충 사용할 기관이라던가 학과, 비밀번호 등을 입력한 후 (참고로 우리학교의 무선인터넷 ID 사용기간은 최대 7일이다.) “신청”을 누른다.



다음과 같이 신청된 모습을 볼 수 있다. 일반 노트북 사용자는 여기서 끝마치고 cm을 사용하여도 되지만
psp에는 psp용 cm으로 로그인할수 있는 세션이 존재하지 않으므로 MAC Address를 이용한 인증을 하여야 한다.



MAC ID 신청을 눌러서 인증 타입을 꼭 MACID로 바꾼 후 MACID를 아래 스샷과 같이 찾아서 넣어준다.



먼저 PSP를 켠후에 시스템 설정을 들어간 후



버전 확인하는 곳을 살펴보면 MAC Address를 확인 할 수 있다. 여기서 :를 뺀 나머지 숫자,영어 조합을
위에 있던 MAC ID칸에 넣어주면 된다.

여기까지 했다면 일단 무선인터넷을 사용하기 위한 ID등록은 마친것이다.
다음으로는 당연히 AP가 설치된 건물로 들어가야한다.

우리학교의 경우는 아래 링크에 잘 나와있으니 참고하시라.
http://www.snut.ac.kr/snut_2005/nespot/bbs/ap_search.htm

AP가 설치되지 않은 건물은 당연히 인터넷을 사용할 수 없다.
시험삼아 어학원에서 수업을 들을때 켜보았지만 AP를 찾을 수 없었다.

아무튼 이제 PSP내에서 네트워크 접속을 만들어보면 된다.
그 전에 반드시 WLAN 버튼을 오른쪽으로 이동시켜 WLAN ON 상태가 되어야 한다.



위 스샷은 필자의 블로그의 RSS페이지이다. 인터넷 관련 서비스를 PSP에서 이용하려고 하면
결국은 아래와 같은 화면을 보게될것이다.



당연히 당장 “네트워크 접속”이 없으면 접속을 할수 없으니 ○ 키를 눌러서 새로 만든다.



○키를 누르면 PSP가 알아서 AP 신호를 잡기 시작한다.



강의실 안에서 찍은 스샷인데 신호 세기가 100%가 나온다. 아무튼 ○를 눌러서 결정을 하자.



뭐 별다른게 없으니 방향버튼(십자키) 중 →를 눌러서 넘어간다.



아까 신호 잡혔을때 봤다시피 보안설정은 “없음”으로 하여야한다.
오히려 유식한척 한다고 엉뚱한걸 선택하면 결과도 엉뚱하게 나오므로 주의.



뭐 마찬가지로 그냥 지나간다. 십자키중 →를 누르면 된다.



설정의 막바지에 이르렀다. ○ 키를 눌러서 저장을 하자.



이제 NESPOT 이라고 이름이 지어진 네트워크 접속을 통해서 인터넷에 접속할 수 있다.



접속하면 위와 같은 스샷이 나오고 인증은 아까 등록한 MAC ID를 통해서 가능하게 된다.



인터넷 브라우저를 통해서 필자의 블로그에 접속해보도록 하겠다.



뜨는데 좀 걸리니 인내심을 가지고 기다릴것…



표시하려는 페이지에 플래시 무비(flash movie)가 들어있던가 하면 저런 메시지가 뜰 수 있다.



아날로그 스틱을 통해서 마우스 포인터를 움직이면서 서핑을 하면 된다.

강의는 여기까지.
아무쪼록, 이 포스팅을 통해서 많은 이들이 편리하게 학교내에서 무료로 무선인터넷을 즐기길 바란다.

psp로 무선인터넷을 접속해보았다.

몇달전에 학교에 네스팟이 설치되어 무선인터넷을 무료로 사용할수 있게 되었다.학교내에서는 일주일간 사용가능한 아이디를 만들수 있는데 psp로 접속을 하려면

일반 로그인 세션으론 불가능하고 mac address를 macid로 등록해서 macid 인증방식으로 등록해야한다.

그래서 학교 내에서 몇가지 사이트를 접속하여 보았다.



구글에서 언어를 판단하지 못하는것인지, 이상한 글자로 나온다.



네이버 접속. 접속은 되지만 상당히 느린편이다.



내 블로그를 접속해보았다. 그럭저럭 할만하다.



블로그 매뉴중 링크페이지



며칠전에 올린 포스팅이다.



마찬가지로 며칠전에 올린 포스팅이다.
psp로 가능한 기능중에 “무선인터넷” 이란 글자가 보인다.

홈브류 기능중에 psp용 irc client로 접속한것이다.
당연히 연결은 무선인터넷으로 한것이고 외국사람이 만든탓에 아직 “한쿡어”는 지원되지 않는다.

irc client for psp에서 글자를 입력하려면 start버튼을 눌러서 위 스샷(아래쪽)처럼 나온 키보드를 가지고
analog stick을 이용하여 상하좌우 대각방향을 선택후 ○X□△ 버튼을 이용하여 해당 키를 입력할수 있다.
분당 50타도 안나오는 놀라운 타이핑 속도 (……..;;;)

결론 : 느리다..ㅡㅡ

psp를 질러버렸다.

지지난주쯤인가,

용산에 들를 일이 있어서 가는김에 겸사겸사 psp를 질러버렸다.

색깔은 블랙에 (남자라면 블랙!) 신형 정발이다.

그날 하루동안 신형 정발 찾는다고 얼마나 발품을 팔았는지 모르겠다.

역시 용팔이 던전이라는 말이 허언이 아니듯 온갖 사기가 난무한다.

제일 황당했던 사기는

“신형 정발이 있긴 한데, 손님께서 찾으시는 화이트나 블랙은 물량이 귀해서 22만원에 판매합니다.”

핑크나 퍼플은 20만원에 판다고 하는데 어이가 없어가지곤..-_-;;

찾다 찾다 결국 아래 가격으로 간신히 샀다는..

본체만 17.5에 UMD 3.5, 샌디스크 4GB(디직스) 6.5, 케이스 1,필터 0.5, 커스텀 펌웨어1 해서

총 30장에 낙찰.

커스텀 펌웨어는 집에서 하려고 했다가 생각해보니

판도라셋도 있어야겠고 해서 기냥 돈만원 주고 해버렸다.

먼저 겉모습이다. 사고나서 2주간 쓴 탓에 손때가 반지르르(?) 하다. (바코드 부분은 삭제).



PSP 2005, 즉 피돌이 신형 한국판이란 뜻이다. (역시 바코드 부분은 삭제)



영화넣고 음악넣고 어쩌고 하다보니 4gb 라는 용량이 얼마 남지 않았다.



사실 커펌을 한것은 이런 홈브류가 목적이지 ISO를 돌리기 위한 목적은 아니다.
내 나이또래라면 절대로 잊을수 없는 만화.
피구왕 통키의 메가드라이브판 게임을 DGEN이란 홈브류로 돌린것이다.
정작 최근에 와서는 “피부암 통키”로 더 유명하지만, 저 만화가 방영될 당시만 해도
집집마다 피구공(을 둔갑한 노란색 배구공)이 하나씩 있었다.

스샷은 통키(일본판에는 “탄페이”이라고 한다.)가 불꽃슛을 타이거에게 날린후 되받아 치는 모습.



MSX 에뮬레이터로 돌린 MSX2+ 판 악마성 드라큘라. 내가 난생 처음으로 접한 게임이다.
어머니께서 그당시 13만 5천원이란 거금을 투자하셔서 사주신 “재믹스 슈퍼 V”에 번들로 따라온 게임.
난이도가 무지막지 했지만, 결국 어머니께서는 드라큘라를 무릎꿇리셨다.
(어머니 파워… 아니 아줌마 파워인가!!)



그때의 향수를 잊지못해 아직도 악마성시리즈를 좋아하는 나는 피돌이를 지르면서
캐슬베니아 클로니클즈도 질러버렸다. (정작 에뮬돌리느라 바빠서 소외되고 있음.;;)



PC엔진판으로 출시됬던 악마성 드라큘라 – 피의 윤회 편이 풀 3D로 리메이크 된 작품이다.
언뜻보기엔 2D 같으나 직접 게임을 해보면 배경도 같이 움직이는 3D임을 알 수 있다.



클로니클에서 특전 조건을 만족하면 즐길 수 있는 악마성 드라큘라 – 월하의 야상곡.
북미판으로 주어지고 있으며 마리아를 플레이 할수 있는것 빼고는 PS1판과 거의 흡사하다.
클로니클을 안하는 이유중에 하나인 월하 플레이..
클로니클보다 더 재밌다.. -_-;;; 월하를 리메이크하고 클로니클이 보너스였어도 난 샀을것이다.



럭키모드로 럭 수치만 99이다. 게다가 클로니클판 데스넘기기 버그가 있어서 장비도 안뺏기고
손쉬운 플레이를 하는중..



이것은 “한뷰”라는 E-Book 기능이 담긴 홈브류다.
이북 기능인데, 한글,일본어,한문등이 깨지지 않고 나오기에 매우 자연스럽고 쓸만한 프로그램이다.



GBA에뮬레이터로 돌린 역전재판 한글판. 이의 있소???



이게임. 문방구 앞에도 아직 많이 있는 고전 명작이다.
초딩때 친구놈이 천원을 들고와서 결국 아작을 내버린 게임.
내 나이 또래라면 꽤 많이 해봤을법 한데..



네오지오 에뮬레이터의 로망이라면 역시 킹오파 시리즈다.
해킹롬을 사용하여 오로치를 고를수 있도록 만든 버전으로 플레이중..

흠흠, psp 정말 멋진 기계이지 않는가? 개인적으론 ndsl(일명 느드슬)보단 psp가 좋다고 생각한다.
그래서 psp를 지른거니까. 뭐 기계마다 장단점이 있는거지만…

마지막으로 PSP로 가능한 기능을 열거해보도록 하겠다.

게임 (기본기능)
E-Book
E-Dic
동영상 재생 (원칙적으론 mp4만 지원하지만, 홈브류를 통해서 pmp,avi 확장자도 지원한다.)
MP3 재생
WMA 재생 (인증 필요)
그림[만화)파일 보기
각종 콘솔 게임 에뮬레이션
OS 에뮬레이션 (Linux,Win95,Dos 등등)
무선 인터넷
카메라 (별도로 구매 필요)
DMB (별도로 튜너를 구매해야하며 일본에서만 가능)

뭐 대충 이정도일까..

고전적인 C언어 프로그램… 구구단!

예전에 C언어 수업을 들을때 작성한 프로그램이다.

수업시간에 예제 실습하라길래 귀찮은 내용이고 해서

다음시간까지 제출해야할 구구단을 출력하는 프로그램(리포트)을 작성하고 있다가

괜시리 교수한테 걸려서 세로열로 그냥 쭉 구구단을 출력하는 프로그램이 아닌

구구단을 가로로 출력하도록 만들도록 특별히 주문(?) 받았다..-_-;;

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main() {

int i,j,times;
system(“cls”);
for(i=1;i<=9;i++) {
for(j=2;j<=5;j++) { // 2~5단까지 구한다.
times = j * i;
if (j == 5) printf(“%d * %d = %dn”, j,i,times);
/* 첫번째 턴에서의 마지막단은 5단이므로
n으로 줄바꿈을 해주어야 단수가 밀리지 않고 출력된다. */
else printf(“%d * %d = %dt”, j,i,times);
}
}
printf(“n”);
for(i=1;i<=9;i++) {
for(j=6;j<=9;j++) { // 6~9단까지 구한다.
times = j * i;
if (j == 9) printf(“%d * %d = %dn”, j,i,times);
else printf(“%d * %d = %dt”, j,i,times);
}
}
getch(); // windows 체제에서 도스창이 한번 껌뻑이고 끝내는것을 막기 위함.
return 0;
}

음음.. 고전이야 고전…
간단하게 이중루프를 이용해서 나타내었다.

디데이(D-Day) 스크립트

Inkbot에 있던 d-day 기능을 보고 MSL로 비스꾸무레 하게 converting 해본 스크립트..
윤년까지 계산하여 처리하도록 설계하였다.
단, 윤년인 경우 2월 29일의 입력은 불가능하다.
; ————————————————————
; | Made by Xeriars                                                               |
; | (변경해서 쓰는건 니맘대로지만 이 부분은 지우지 말아주세요.)  |
; ————————————————————

on *:text:*:#: {
if ($1 == @디데이 || $1 == -디데이) {
if (!$2) { msg $chan “@디데이 YYYY년MM월DD일”와 같은 형식으로 입력하셔야 합니다. (ex : $rand($asctime(yyyy),9999) $+ 년 $+ $rand(1,12) $+ 월 $+ $rand(1,30) $+ 일) | halt }
var %pyear = $asctime(yyyy), %pmonth = $asctime(mm), %pday = $asctime(dd), %iyear = $mid($2,1,4), %imonth = $mid($2,7,2), %iday = $mid($2,11,2)
var %falsey 0
if ($3 == 과거) {
if (%iyear > $asctime(yyyy)) {
msg $chan 디데이가 현재년도보다 크면 안됩니다. (ex : $rand(1000,$asctime(yyyy)) $+ 년 $+ $rand(1,12) $+ 월 $+ $rand(1,30) $+ 일) | halt }
else {
var %prevmode 1 | goto prev
}
}
if (%pyear > %iyear) { msg $chan 디데이가 현재년도보다 작으면 안됩니다. (ex : $rand($asctime(yyyy),9999) $+ 년 $+ $rand(1,12) $+ 월 $+ $rand(1,30) $+ 일) | halt }
var %prevmode 2
goto prev
:prev
if (%pyear == %iyear) {
if (%pmonth == %imonth) {
if (%pday == %iday) {
msg $chan 입력하신날짜( $+ %iyear $+ 년 %imonth $+ 월 %iday $+ 일 $+ )는 오늘입니다.
halt
}
}
}
if ($len($2) != 14) {
var %pyear = $asctime(yyyy), %pmonth = $asctime(mm), %pday = $asctime(dd), %iyear = $rand($asctime(yyyy),9999), %imonth = $rand(1,12), %iday = $rand(1,30)
var %falsey 1
}
if ((%imonth == 1) || (%imonth == 3) || (%imonth == 5) || (%imonth == 7) || (%imonth == 8) || (%imonth == 10) || (%imonth == 12)) {
if (%iday > 31) {
msg $chan 31일 이상 초과하시면 안됩니다. | halt }
else { var %resign 31 }
}
if ((%imonth == 4) || (%imonth == 6) || (%imonth == 9) || (%imonth == 11)) {
if (%iday > 30) { msg $chan 30일 이상 초과하시면 안됩니다. | halt }
else { var %resign 30 }
}
if (%imonth == 2) {
if (%iday > 28) { msg $chan 28일 이상 초과하시면 안됩니다. | halt }
else { var %resign 28 }
}
if (%prevmode == 1) {
var %result1 $calc((%pyear – %iyear) * 365), %result2 $calc((%pmonth – %imonth) * %resign), %result3 $calc(%pday – %iday), %result $calc(%result1 + %result2 + %result3)
if ($calc(%pyear – %iyear) > 4) { var %result $calc(%result + $int($calc((%pyear – %iyear)/4))) }
if (%falsey == 0) {
msg $chan %iyear $+ 년 %imonth $+ 월 %iday $+ 일 $+ 부터 현재까지는 D- $+ %result $+ 일의 차이가 있습니다.
halt
}
if (%falsey == 1) {
msg $chan 입력하신 값이 올바르지 않습니다.
}
}
if (%prevmode == 2) {
var %result1 $calc((%iyear – %pyear) * 365), %result2 $calc((%imonth – %pmonth) * %resign), %result3 $calc(%iday – %pday), %result $calc(%result1 + %result2 + %result3)
if ($calc(%iyear – %pyear) > 4) { var %result $calc(%result + $int($calc((%iyear – %pyear)/4))) }
if (%falsey == 0) {
msg $chan %iyear $+ 년 %imonth $+ 월 %iday $+ 일 $+ 까지는 앞으로 D- $+ %result $+ 일 남았습니다.
halt
}
if (%falsey == 1) {
msg $chan 입력하신 값이 올바르지 않아 임의의 값을 선정하였습니다. ( $+ %iyear $+ 년 %imonth $+ 월 %iday $+ 일 $+ )
msg $chan $2 $+ 까지는 앞으로 D- $+ %result $+ 일 남았습니다.
halt
}
}
}
}앞으로 얼마간 더 스크립트를 제작할지 모르겠다는.
차후부터는 C Programming으로 배을 옮겨 탈까 생각 중…

왜냐면 MSL은 너무 제약이 많으니까.

작동 예제
[11:50:05] <@Xeriars> @디데이
[11:50:05] <@Zod> “@디데이 YYYY년MM월DD일”와 같은 형식으로 입력하셔야 합니다. (ex : 8652년8월28일)
[11:50:36] <@Xeriars> @디데이 2007년09월22일
[11:50:36] <@Zod> 2007년 09월 22일까지는 앞으로 D-85일 남았습니다.
[11:50:54] <@Xeriars> @디데이 1985년09월22일 과거
[11:50:54] <@Zod> 1985년 09월 22일부터 현재까지는 D-7950일의 차이가 있습니다.

1985년 09월 22일은 내 생년월일…

7-segment display 이용 가감산기 (4bit)

학교에서 디지털 공학이란 과목을 듣는다고 만든 삽질작품.8bit으로 하려다가 사다놓은 GAL이 하나 모잘라서 그냥 4bit으로…

wincupl 로 GAL을 굽기위해 7-segment로 진리표(Truth Table)을 만들어봤는데

그중에 A자리에 불이 들어가게 하는 진리표는 다음과 같다.

수       값

0000       1
0001       0
0010       1
0011       1
0100       0
0101       1
0110       1
0111       1
1000       1
1001       1
1010       1
1011       0
1100       1
1101       0
1110       1
1111       1

음… 이것을 Boolean Function으로 만드는데 축약식으로 만들때

1에 관한 식으로 만들어도 좋지만 0에 관한 식으로 만들어서 반전시키면 식이 적게 나온다.

아무튼 위 식을 카노맵으로 만들어서 축약시키면 된다.

손으로 무식하게 하는편도 좋지만 Karnaugh Minimizer를 쓰면 편하다.

축약 시킨 식과 원래 식과 같은지 비교하기 위해서 만든 프로그램.

// Equivalent Discriminator for Boolean Function by Xeriars

#include <stdio.h>
#include <stdlib.h>

int main () {

int a_,b_,i,fcount=0;
system(“cls”);
printf(”   Truth Tablenn”);
for(i=0;i<16;i++) {
int A=!!(i&8), B=!!(i&4), C=!!(i&2), D=!!(i&1);
a_ = (!A & !B & !C & !D) + (!A & !B & !C & D) + (!A & B & C & D) + (A & B & !C & !D);
b_ = (!A & !B & !C) + (B & (!A & C & D) + (A & !C & !D));
if (a_ != b_) { printf(“%X : t1 = %d, t2 = %d ——– Xn”, i,a_,b_); ++fcount; }
else { printf(“%X : t1 = %d, t2 = %dn”, i,a_,b_); }
}
if (fcount > 0) { printf(“nFalse Count : %d”, fcount); }
getch();
return 0;
}

a_랑 b_ 부분을 수정해서 컴파일해보면 알 수 있다.

아무튼 이런 과정을 거쳐서 wincupl에 맞는 언어(?)로 7-segment를 구현한것이다.

Name     7segment;
PartNo   g22v10;
Date     2007-05-18 ;
Revision 01;
Designer Xeriars;
Company  The X.D.C.;
Assembly 000;
Location In_the_Hell;
Device   g22v10;

/* *************** INPUT PINS *********************/
PIN 02 = A;
PIN 03 = B;
PIN 04 = C;
PIN 05 = D;

/* *************** OUTPUT PINS *********************/
PIN 17 = OUTA;
PIN 18 = OUTB;
PIN 19 = OUTC;
PIN 20 = OUTD;
PIN 21 = OUTE;
PIN 22 = OUTF;
PIN 23 = OUTG;

/* *************** EQUATIONS *********************/

!OUTA = (B & C) # (!A & C) # (A & !D) # (!B & !D) # (!A & B & D) # (A & !B & !C);
!OUTB = (!B & !D) # (!B & !C) # (!A & C & D) # (A & !C & D) # (!A & !C & !D);
!OUTC = (!C & D) # (!A & D) # (A & !B) # (!A & B) # (!B & !C);
!OUTD = (!A & C & !D) # (!B & C & D) # (B & !C & D) # (A & B & !D) # (!B & !C & !D);
!OUTE = (C & !D) # (A & C) # (A & B) # (!B & !D);
!OUTF = (A & C) # (A & !B) # (B & !D) # (!C & !D) # (!A & B & !C);
!OUTG = (A & C) # (!B & C) # (A & !B) # (B & !C & D) # (!A & B & !D);

이것을 복사해서 붙인후 .pld 파일로 저장하면 된다.

이제 회로를 꾸민다.

준비물은 7-segment (에노드 타입) 3개, GAL(22V10) 3개, Bread Board, 전선, Wire Striper(option), TTL 7483(전가산기), 330k 저항소자 21개정도,Deep Switch, Toggle Switch, 5V 전원 공급기 (없으면 만들어도 좋다.), Jumper (Option)

아래는 완성한 스샷. (토글이 없어서 수동으로..-_-;;)



덧셈. 7 + 7 = E(Decimal : 14)

뺄셈. F(Decimal : 15) – B(Decimal : 11) = 4

Flash를 안터트렸더니 화질이 구리게 나왔다.

흠.. 목요일날 시험보는데 그때까지 Counter 제작해오라네..-_-;;

언제 다 만든담…

mIRC용 DLL Support

DLL Support

The /dll and $dll() features allow you to make calls to DLLs designed to work with mIRC. The main reason you’d want to do this is that processing information in a DLL can be far faster than doing so in a script, so for intensive data processing a DLL would be more efficient.

Note that mIRC also supports calling COM objects, for calling non-standard DLLs.

Warning: do not use DLLs from sources you do not trust. See the Accepting Files section for information on the dangers of accepting and using files from the internet.

/dll <filename> <procname> [data] $dll(filename, procname, data)

$dllcall(filename, alias, procname, data)

The above open a DLL, call the procname routine, and send it the specified data. The only difference is that $dll() can return a value, like all other identifiers.

$dllcall() is multi-threaded so it will not halt the script and will call the specified alias once the call returns.

Technical notes
This section contains technical information for programmers who want to create DLLs for use with mIRC.

The routine in the DLL being called must be of the form:

int __stdcall procname(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause)

mWnd is the handle to the main mIRC window.

aWnd is the handle of the window in which the command is being issued, this might not be the currently active window if the command is being called by a remote script.

data is the information that you wish to send to the DLL. On return, the DLL can fill this variable with the command it wants mIRC to perform if any.

parms is filled by the DLL on return with parameters that it wants mIRC to use when performing the command that it returns in the data variable.

Note: The data and parms variables can each hold 900 chars maximum.

show is FALSE if the . prefix was specified to make the command quiet, or TRUE otherwise.

nopause is TRUE if mIRC is in a critical routine and the DLL must not do anything that pauses processing in mIRC, eg. the DLL should not pop up a dialog.

The DLL can return an integer to indicate what it wants mIRC to do:

0 means that mIRC should /halt processing

1 means that mIRC should continue processing

2 means that it has filled the data variable with a command which it wants mIRC to perform, and has filled parms with the parameters to use, if any, when performing the command.

3 means that the DLL has filled the data variable with the result that $dll() as an identifier should return.

Note: You may need to create a .def file with the procedure names exported when compiling your DLL.

Keeping a DLL Loaded after a call
By default a DLL is unloaded immediately after you make the /dll or $dll() call. You can keep a DLL loaded by including a LoadDll() routine in your DLL, which mIRC calls the first time you load the DLL:

void __stdcall (*LoadDll)(LOADINFO*);

typedef struct {
DWORD  mVersion;
HWND   mHwnd;
BOOL   mKeep;
} LOADINFO;

mVersion contains the mIRC version number in the low and high words.

mHwnd contains the window handle to the main mIRC window.

mKeep is set to TRUE by default, indicating that mIRC will keep the DLL loaded after the call. You can set mKeep to FALSE to make mIRC unload the DLL after the call (which is how previous mIRCs worked).

Unloading a DLL
You can unload a loaded DLL by using the -u switch:

/dll -u <filename>

You can browse the list of loaded DLLs by using:

$dll(N/filename)   returns the Nth loaded DLL

mIRC will automatically unload a DLL if it is not used for ten minutes, or when mIRC exits.

You can also define an UnloadDll() routine in your DLL which mIRC will call when unloading a DLL to allow it to clean up.

int __stdcall (*UnloadDll)(int mTimeout);

The mTimeout value can be:

0   UnloadDll() is being called due to a DLL being unloaded when mIRC exits, or unloaded with /dll -u.

1   UnloadDll() is being called due to a DLL not being used for ten minutes. The UnloadDll() routine can return 0 to keep the DLL loaded, or 1 to allow it to be unloaded.

Ti89 titanium을 질러버렸다..

4 x 4짜리 역행렬을 전에쓰던 fx-570ms로 구할려니 초짜증에,

손으로 풀자니 A4용지 한장 넘게 나온 덕분에..

“시험볼때 허용된” 공학용 계산기의 최고봉이라고 일컬어 지는

Texas Instrument社의 계산기 Ti89 Titanium을 질러버리고 말았다.

보라.. 저 Ti89의 알흠다운(?)자태를…
패키지는 한글메뉴얼과 영문매뉴얼, Ti89-t본체, 계산기 간 케이블, USB 케이블로 구성되어있다.



계산기를 켰을때 나온 화면이다… 마치 PDA를 연상(?)시키는게 맞나.. 아무튼 좋다!
여기서 여러가지 APP를 선택할수 있다.
물론 Home에서 추가적으로 App를 다운로드해서 쓸수있다는것이 가장 큰 장점..



간단하게 행렬을 구해보았다.
또하나의 장점은 문자를 써도 그대로 나온다는 부분… 너무 좋다.

그래서 심심한 나머지 randdet(n,m) 함수를 이용하여 99 x 99 랜덤값 행렬식(determinant)를 구해보기로 결정 하고 누질렀더니..

한참을 BUSY를 연발하면서 혹사당하다가 3분후 결과값은 (…)으로 표기..-_-;;;

뭐 아무튼 이걸 산 덕분에 역행렬 공식은 [1,2,3;4,5,6;7,8,9]^-1과 같이 간단한 방법으로

3 x 3의 역행렬을 1초만에 구해버리고 말았다.

또하나의 장점은 단위환산이 가능하다는것.

몇개는 약간 다르거나 빠진내용이 있으나, 대체적으로 훌륭하게 단위 환산이 된다.
(ex : 1m/s = 2.28mph인데 2.23으로 표기되는점, dyme/㎤이 없다는점, 점성(㎡/s)의 단위가 없는점)

끌끌.. 가끔 보면 단위환산 시험문제 내는 교수들 있는데..

이걸로 컨닝하면 무조건 만점… 끌끌끌..