안녕하세요~ 바람처럼 입니다...
프렙이 버전업 되면서 기존에 있던 버그들이 잡히고 몇몇 새로운 기능들이 추가 되었습니다.
오늘은 추가된 기능을 중심으로 프렙 3.8 의 새로운 기능을 살펴보도록 하겠습니다.
1. 해결된 버그들
이번에 해결된 버그중 가장 중요한 것은 고질적이었던 임포트시 시퀀스/인덱스 깨짐현상 입니다.
기존에 이런 문제때문에 훌륭한 임포트/익스포트 기능을 두고 DB를 따로 복사했었죠.
제가 사용해본 바로는 이제는 임포트시 깨짐현상이 없어진듯 보입니다.
개발진의 말에 따르면 확실하게 해결했다니 한번 믿어 보도록 하지요~^^
또한가지 중요한건, (String).length 변경자가 이제는 올바른 값을 리턴해 줍니다.
예전에는 \ " 등의 문자까지 모두 포함해 길이를 리턴하던 문제가 있었죠.
이것또한 제가 테스트 해본 바로는 훌륭하게 작동하는 것 같습니다.
이밖에도 소소한 문제들이 많이 해결되었습니다.?
제가 개발자에게 리포팅 했던 버그들도 모두 잡혔고, 제가 미처 몰랐던 버그들도 잡혔다는군요.
확실히 예전보다 소소한 문제가 없어져 코딩하기에도 많이 편해진 듯 합니다~^^
2. 새로 추가된 기능들 - 형변환
이 기능은 정확히 3.7patched2 버전부터 추가된 기능입니다.
예전 제가 ?작성한 응용편에서 언급했듯이 문자/숫자를 서로 변환하는 일이 대단히 많고 중요하기 때문에
따로 프로시져를 작성해서 사용했던걸 기억하시는 분들이 있을겁니다.
저를 비롯한 많은 사람들의 요구와 협박(?)을 못이긴 탓인지, 아니면 개발자도 중요성을 실감했기 때문인지 모르겠지만
아뭏든 이 기능이 추가 되었습니다. 정말 반길일이죠~^^
추가된 새로운 형변환자는 .asstr / .asnum / .asrect 입니다.
순서대로 숫자->문자, 문자->숫자, 문자->영역형으로 변환하는 기능을 갖고 있습니다.
사용법은 아주 간단합니다. 문자/숫자/영역형 변수에 변경자를 추가하면 바로 변환이 이루어 집니다.
예들들어, 숫자 123을 문자 "123"으로 변환하고자 한다면 다음과 같이 하면 됩니다.
n=num:123
s=str:n.asstr
반대의 경우도 마찬가지로 아주 간단합니다.
s=str:"123"
n=num:s.asnum
어때요? 아주 쉽죠? 영역형 또한 마찬가지 방법으로 변환하면 됩니다.
2. 새로 추가된 기능들 - 시간계산
드디어 프렙에 시간계산과 관련된 함수 및 연산자들이 추가 되었습니다.
이 기능이 추가됨으로써 예전에 루프와 웨이트를 이용해 어렴풋이 계산하던 시간을
실시간으로 정확한 계산이 가능하게 되었습니다. 여러모로 많은 곳에 유용할듯 보입니다.
관련된 함수로는 @start / @now 가 있고, 연산자는 .asdate / .astime 이 있습니다.
@start 는 프렙이 시작된 시각을 밀리초(ms) 단위로 리턴해 줍니다.
@now 는 현재 시각을 역시 밀리초(ms) 단위로 리턴해 줍니다.
이때의 시간 기준은 1970년 1월 1일 0시를 기점으로 그후 얼마나 시간이 흘렀는지 입니다.
날짜범위는 1970년 1월 1일에서 약 285,616년 입니다.. 뭐 이정도면 아직까진 충분하겠죠? ^^;;
이 두가지 함수를 이용하면, 프렙이 시작한 이후 얼마의 시간이 흘렀는지
혹은, 특정 시각을 기준으로 얼마의 시간이 흘렀는지 정확히 계산할 수 있습니다.
반대로 이야기 하자면, 특정 시간 이후에 이루어질 어떤 동작을 판단하는 기준이 될 수도 있습니다.
예를들어, 30분마다 수행해야 하는 동작이 있다고 할 때, 다음과 같은 방식으로 처리할 수 있습니다.
start=num:@now
.....(이런저런 동작들).....
delta=num:@now-start
if delta >=?1800000 ?(30*60*1000 = 30분)
.....(필요한 동작수행).....
이 방식의 장점은, 루프를 통해 시간조절을 하는 경우 반드시 해당 루프와 판단문이 같은 레코드/프로시져 내부에
함께 위치해야 한다는 한계가 없다는 점입니다. 즉, 판단부분은 어느곳에 위치해도 상관없다는 이야기죠...
이와 더불어, 시간정보를 우리가 알아보기 쉽게 날짜와 시간으로 표현해 주는 연산자도 추가되었습니다.
.asdate 는 "yyyy/MM/dd hh:mm:ss" 형태로 변환해 줍니다. 즉, "2015/07/10 18:15:34" 처럼 되겠죠.
.astime 은 "hour:min:sec.ms" 형태로 변환해 줍니다. 즉, "321343:15:34.547" 과 같은 형태입니다.
이를 이용하여, 특정날짜 특정시간에만 수행하는 기능을 작성하는 것이 가능하게 되었습니다.
게임을 예로 들자면, 푸시가 오는 시간에 재접속을 한다거나 하는것을 할 수 있겠죠...
또는, 일정시간 간격으로 수행해야 하는 이벤트 같은 것들을 예로 들 수 있겠습니다.
프렙이 나날이 발전하고 있습니다. 덕분에 조금 더 무거워지긴 했지만 그래도 감사한 일이죠.
아무쪼록, 프렙을 이용해 매크로를 작성하는 모든 분들께 제 강좌가 조금이나마 도움이 되었으면 합니다.
감사합니다~^^