'2008/01'에 해당되는 글 4건

  1. 2008/01/28 2008년 토정비결..
  2. 2008/01/17 IE7는 왜 이런 말썽을 부리는 걸까?
  3. 2008/01/08 스토리가 있는 UCC - STORYBERRY에서 함께해요 ^^ (2)
  4. 2008/01/02 [JSP] 메시지 다이제스트(Message Digest) - jsp에서 만나는 md5
2008/01/28 17:04

2008년 토정비결..

새해가 되었으니 토정비결를 보시는 분들이 더러 있습니다.
'점'이라는 것은 어떻게 바라보느냐에 따라서 긍정적인 부분도 많아서
온라인 서비스에서 무료 이벤트가 있을때 종종 사용하곤 합니다.

이번에는 MSN의 무료 토정비결을 이용해 봤습니다.

전반적으로 운이 좋다는 이야기가 많아서 기분이 UP했다가...
곰곰히 읽어보니.. 애매해지기 시작합니다.

전반적으로 운세의 흐름이 상승세를 타는 상황에 놓었으니.. (중략) .. 자신이 할 수 있는 일 중에서 가장 큰 일을 진행해 보는 것이 좋을 것이나 사람은 조심해야 합니다. ...(중략) ... 올해는 혁신적인 변화를 시도하기에는 적합지 않은 시기이며 ..(중략).. 새로운 사업을 벌이더라도 기존 수익원을 지켜야만..."

내가 할 수 있는 일 중에서 가장 큰 일.. 하지만 혁신적이지 않은 일.. 이란 도대체 어떤 것들인지 알수가 없습니다.

이리저리 고민해 보다.. 결국은 한가지 결론...
역시..
다. 이. 어. 트
올해는 성공하려나 봅니다. ^^
Trackback 0 Comment 0
2008/01/17 17:59

IE7는 왜 이런 말썽을 부리는 걸까?

IE7은 초반부터 이런 저런 이야기들이 많더니..
그 수많은 버그 패치에도 불구하고..
프로그래머를 괴롭히는 일은 여전합니다.

DB의 내용을 읽어드려서 엑셀파일을 만드는 프로그램을 했습니다.
헤더의 내용을 조금 변경해 주고, 테이블태그안에 내용을 넣으면 되는 일이니
그리 어렵지는 않습니다.
오히려 가장 어려운건.. 이녀석이 브라우저를 탄다는 사실입니다.

사용자 삽입 이미지

다운로드를 하면.. 한세월.. 저런 모양만 보여주고 있습니다.
IE6, 파폭에서 잘 작동하고
비스타 기반 IE7에서도 잘 작동하는데
왜 XP기반 IE7에서만 말썽인지 모르겠습니다. ㅠ.ㅠ;;

결국.. 마지막 경우때문에.. 돌아가는 방법을 찾아야하는 아픔이..
뭐 늘 이렇습니다.. 프로그램은...


PS )

예전에 PHP로 Excel파일을 만들어서 다운로드 시킬 수 있는 소스를 포스팅한적이 있습니다.
2007/07/10 - [Program is .../with Web] - [PHP] php로 엑셀(Excel)파일 만들기

이번에는 덤으로 한가지 팁을 전해드립니다.
내용물이 긴 숫자의 경우.. 가령 주민등록번호같은..
<td>123456798123465</td>등과 같으면
엑셀파일로 저장한 이후에 살펴보면 '3.12011E+12'형식으로 저장되는 경우가 있습니다.
이러한 표시형식을 순수하게 숫자로 나타나도록 하기 위해서는
<td>태그 안에 간단한 스타일을 넣어주면 됩니다.

<td style="mso-number-format:\@" >12345679123456789</td>

이렇게 하신후에 파일을 다운로드 받으면 숫자형태가 그대로 유지되는 것을 확인하실 수 있습니다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
Trackback 0 Comment 0
2008/01/08 10:43

스토리가 있는 UCC - STORYBERRY에서 함께해요 ^^

여기 저기 돌아다니다가.. STORYBERRY를 만났습니다.
플랙스를 이용한 인터페이스가 약간의 불편한 감이 있지만 간단한 몇번의 클릭만으로 텍스트를 포함한 이미지 슬라이드를 만들 수 있다는 것이 장점입니다.
물론 이렇게 만들어진 swf파일을 자신을 블로그로 쉽게 옮길 수 있습니다.

새로운 것을 만났으니 테스트를 해야하는데 마땅한 것이 떠오르지 않아서
많은 직장인들이 열광하는 게임 'WOW (World Of Warcraft)'의 공식 홈페이지에게 실려있는 카툰을 쪼개어서 만들어 봤습니다.

고급에디터을 사용해보지 않아서 얼마나 많은 것들을 조절할 수 있는지 잘 모르겠습니다.
사실상 IT와 관련없는 분들에게 고급에디터는 다른 세상이야기이니 우선 패스입니다.

'스토리 포토'를 이용해서 만들었습니다. 사진을 넣고 하단에 텍스트를 쓰는 방식입니다.
인터페이스는 간단합니다. 다만 몇가지 버그들이 보이기는 했는데.. 뭐 그리 크지 않으니 이 부분도 패스입니다.

가장 맘에 안드는건 '엔터'처리 입니다.
텍스트에서 '엔터'를 치면 엔터이후의 문장은 클릭를 했을때 진행되는 것이 기본적인 규칙으로 되어있습니다.
물론 글을 계속 이어서 쓰면 한꺼번에 나오니 그런 방식으로 처리할 수도 있디만 이왕이면 그냥 '엔터'와 '컨트롤+엔터'를 나누어서 한꺼번에 나올지 클릭이후에 나올지를 결정할 수 있도록 했다면 더욱 좋을것 같다는 생각을 했습니다.

또 하나 아쉬운 것은 글이 표현되는 속도입니다.
물론 이 부분은 고급에디터를 이용하면 제어할 수 있으리라 생각합니다.
하지만 기본적인 기능으로 이 기능을 포함시켰더라면 더 많은 호응을 얻을 수 있지 않을까 생각합니다.

더욱 발전하는 STORYBERRY를 기대해 봅니다.

PS)
공식 블로그의 라꾸 라꾸 침대와 잠코딩에 저도 눈물이 납니다. ㅠ.ㅠ;;

이올린에 북마크하기(0) 이올린에 추천하기(0)
Trackback 0 Comment 2
2008/01/02 17:47

[JSP] 메시지 다이제스트(Message Digest) - jsp에서 만나는 md5

혹시 OPEN API를 사용하면서 key value의 값으로 지정된 문자열을 고민해 보신적이 있으신가요? 무작위적으로 만들어진 것처럼 보이는 녀석들이요
보통 이런 모양이죠 'f5a779f2bb76053313358c7bea8d592t'

아무런 의미없이 만들어진게 아닐까 생각하실 수 있지만, 절대 그렇지 않습니다.
저런 녀석들은 대부분 '메시지 다이제스트(Message Digest)'를 사용했을 가능성이 큽니다.

메시지 다이제스트요?
각 메시지마다 고유하게 산출되도록 만든 간단한 문자열. 임의의 길이의 메시지를 단방향 해시 함수로 반복 적용하여 축약된 일정한 길이의 비트열로 만들어 표현한 것으로, 메시지(또는 문서나 문장)마다 단 하나의 메시지 다이제스트가 산출되고, 서로 다른 문서에서 같은 메시지 다이제스트가 산출될 수 없다. 따라서 원문의 변조 여부를 확인할 수 있는 일종의 체크섬(checksum)이다.

- 정보통신용어사전

겹치지 않은 값을 만들어 낸다는 것이죠. 보통 비밀번호를 저장할떄 이러한 방법을 많이 사용합니다. 그 중 많이 사용하는 것은 'md5'입니다. 이러한 값은 역으로는 계산될 수 없습니다. 따라서 관리자라고 하더라도 비밀번호를 알아낼 수는 없죠. 그래서 그들의 답변은 한결 같습니다.
'비밀번호를 리셋해서 메일로 보내드렸습니다. 확인하시고 비밀번호를 수정해주세요'
완벽한 암호화라고는 말 할수없습니다. 보통 이런 프로그램을 만들때 고유한 값을 만들어주기 위해서 많이 사용합니다. 리턴되는 사이즈가 항상 일정한 것이 장점입니다.

아참 md5는 메시지 다이제스트의 여러 알고리즘중 하나입니다.
MD5
RSA 암호 개발자 리베스트(Ronald Rivest)가 개발한 메시지 다이제스트 함수 알고리즘. RFC 1321에 규정되어 있다. 널리 사용되고 있는 알고리듬으로, 가장 일반적으로 사용되고 있는 간이 이메일 전송 프로토콜(SMTP) 서버 소프트웨어인 센드메일이나 도메인 네임 서버(DNS)의 사실상의 표준인 바인드(BIND) 소프트웨어 등의 인증에 사용된다. 일방향 해시 함수로서 임의 메시지를 압축, 고정 길이 해시값의 되돌림 처리는 32비트 단위로 한다. 주로 데이터의 오류 검출에 이용된다.
- 네이버 용어사전


저도 OPEN API를 만들일이 있어서 JSP로 도전해 봤습니다.
JSP - MD5 만들기...

<%@ page import="java.sql.*" %>
<%
 /* generate key - Start */
 StringBuffer sb = new StringBuffer();
 String apiKey = "고유한 문자열";
/* id나 e-mail정도면 고유한 문자열이 되겠죠 */
 byte[] digest = MessageDigest.getInstance("MD5").digest( apiKey.getBytes() );
 sb.setLength(0);
 for( int i = 0; i < digest.length; i++ ) {
  sb.append( Integer.toString( ( digest[i] & 0xf0) >> 4, 16 ) );
  sb.append( Integer.toString( digest[i] & 0x0f, 16 ) );
 }
 apiKey = sb.toString();
 /* generate key - End */
%>
- OKJSP.PE.KR 에서 눈팅을 많이 했습니다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
Trackback 0 Comment 0