레몬팬.. 다시 삽질...테스트..

열이아빠님의 댓글을 보고


다시 삽질을 시작해 봅니다..

댓글은 몇개나 달릴지..

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by hardboil




대단하신 분인..듯...

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by hardboil


Springbook 설치...기반다지기..

시스템 요구 사항:
  - Java 1.5 +
  - JRuby 1.0.2 +
  - Rails 2.0 +
      패치 http://dev.rubyonrails.org/ticket/10218
  - Ruby gems
      jruby-openssl
      hpricot
      mechanize(web proxy사용을 원할경우)

필요한 화일들 받기
http://springbook.playmaru.net/pages/475272

Mercurial 설치 (Python이 설치되있지 않으면 같이 설치 됨)
#apt-get install mercurial
설치후
#hg clone http://labs.openmaru.com/hg/springbook
를 실행하면 소스 코드를 받는다

또는 압축된 springbook소스를 받는다


#jruby gem install rails 1.2가 설치됨(x)
  이경우 1.2가 설치되므로 다음과 같이 실행을
#jruby gem install rails --source http://gems.rubyonrails.org 2.0 설치

#jruby gem install jruby-openssl

#jruby gem install hpricot
Select which gem to install for your platform (java)
 1. hpricot 0.6 (jruby)
 2. hpricot 0.6 (ruby)
 3. hpricot 0.6 (mswin32)
 4. hpricot 0.5 (mswin32)
 5. hpricot 0.5 (ruby)
 6. hpricot 0.4 (mswin32)
 7. hpricot 0.4 (ruby)
 8. Skip this gem
 9. Cancel installation


크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by hardboil


JateOn......오픈소스로...

JateOn..!  오픈소스로 전환하는군요..

네이트에서 네이트온을 맥,리눅스 버전을 선보이기 전에

유용히 이용하고 있었는데

윈도이외 버전이 나오고 나서는 그리로... 자연스레.. 손이 갔었던...

앞으로도 계속적으로.. 발전하길..바랍니다..

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by hardboil


[메모] MD5 모듈


----
class core.CryptographyMd5 {
   
   function Md5() {
   }
   
   public function Create(sMessage:String):String {
      var k, AA, BB, CC, DD, a, b, c, d;
      var S11 = 7, S12 = 12, S13 = 17, S14 = 22;
      var S21 = 5, S22 = 9, S23 = 14, S24 = 20;
      var S31 = 4, S32 = 11, S33 = 16, S34 = 23;
      var S41 = 6, S42 = 10, S43 = 15, S44 = 21;
      var x = Array();
      x = ConvertToWordArray(sMessage);
      a = 0x67452301;
      b = 0xEFCDAB89;
      c = 0x98BADCFE;
      d = 0x10325476;
      for (k=0; k<x.length; k += 16) {
         AA = a;
         BB = b;
         CC = c;
         DD = d;
         a = FF(a, b, c, d, x[k+0], S11, 0xD76AA478);
         d = FF(d, a, b, c, x[k+1], S12, 0xE8C7B756);
         c = FF(c, d, a, b, x[k+2], S13, 0x242070DB);
         b = FF(b, c, d, a, x[k+3], S14, 0xC1BDCEEE);
         a = FF(a, b, c, d, x[k+4], S11, 0xF57C0FAF);
         d = FF(d, a, b, c, x[k+5], S12, 0x4787C62A);
         c = FF(c, d, a, b, x[k+6], S13, 0xA8304613);
         b = FF(b, c, d, a, x[k+7], S14, 0xFD469501);
         a = FF(a, b, c, d, x[k+8], S11, 0x698098D8);
         d = FF(d, a, b, c, x[k+9], S12, 0x8B44F7AF);
         c = FF(c, d, a, b, x[k+10], S13, 0xFFFF5BB1);
         b = FF(b, c, d, a, x[k+11], S14, 0x895CD7BE);
         a = FF(a, b, c, d, x[k+12], S11, 0x6B901122);
         d = FF(d, a, b, c, x[k+13], S12, 0xFD987193);
         c = FF(c, d, a, b, x[k+14], S13, 0xA679438E);
         b = FF(b, c, d, a, x[k+15], S14, 0x49B40821);
         a = GG(a, b, c, d, x[k+1], S21, 0xF61E2562);
         d = GG(d, a, b, c, x[k+6], S22, 0xC040B340);
         c = GG(c, d, a, b, x[k+11], S23, 0x265E5A51);
         b = GG(b, c, d, a, x[k+0], S24, 0xE9B6C7AA);
         a = GG(a, b, c, d, x[k+5], S21, 0xD62F105D);
         d = GG(d, a, b, c, x[k+10], S22, 0x2441453);
         c = GG(c, d, a, b, x[k+15], S23, 0xD8A1E681);
         b = GG(b, c, d, a, x[k+4], S24, 0xE7D3FBC8);
         a = GG(a, b, c, d, x[k+9], S21, 0x21E1CDE6);
         d = GG(d, a, b, c, x[k+14], S22, 0xC33707D6);
         c = GG(c, d, a, b, x[k+3], S23, 0xF4D50D87);
         b = GG(b, c, d, a, x[k+8], S24, 0x455A14ED);
         a = GG(a, b, c, d, x[k+13], S21, 0xA9E3E905);
         d = GG(d, a, b, c, x[k+2], S22, 0xFCEFA3F8);
         c = GG(c, d, a, b, x[k+7], S23, 0x676F02D9);
         b = GG(b, c, d, a, x[k+12], S24, 0x8D2A4C8A);
         a = HH(a, b, c, d, x[k+5], S31, 0xFFFA3942);
         d = HH(d, a, b, c, x[k+8], S32, 0x8771F681);
         c = HH(c, d, a, b, x[k+11], S33, 0x6D9D6122);
         b = HH(b, c, d, a, x[k+14], S34, 0xFDE5380C);
         a = HH(a, b, c, d, x[k+1], S31, 0xA4BEEA44);
         d = HH(d, a, b, c, x[k+4], S32, 0x4BDECFA9);
         c = HH(c, d, a, b, x[k+7], S33, 0xF6BB4B60);
         b = HH(b, c, d, a, x[k+10], S34, 0xBEBFBC70);
         a = HH(a, b, c, d, x[k+13], S31, 0x289B7EC6);
         d = HH(d, a, b, c, x[k+0], S32, 0xEAA127FA);
         c = HH(c, d, a, b, x[k+3], S33, 0xD4EF3085);
         b = HH(b, c, d, a, x[k+6], S34, 0x4881D05);
         a = HH(a, b, c, d, x[k+9], S31, 0xD9D4D039);
         d = HH(d, a, b, c, x[k+12], S32, 0xE6DB99E5);
         c = HH(c, d, a, b, x[k+15], S33, 0x1FA27CF8);
         b = HH(b, c, d, a, x[k+2], S34, 0xC4AC5665);
         a = II(a, b, c, d, x[k+0], S41, 0xF4292244);
         d = II(d, a, b, c, x[k+7], S42, 0x432AFF97);
         c = II(c, d, a, b, x[k+14], S43, 0xAB9423A7);
         b = II(b, c, d, a, x[k+5], S44, 0xFC93A039);
         a = II(a, b, c, d, x[k+12], S41, 0x655B59C3);
         d = II(d, a, b, c, x[k+3], S42, 0x8F0CCC92);
         c = II(c, d, a, b, x[k+10], S43, 0xFFEFF47D);
         b = II(b, c, d, a, x[k+1], S44, 0x85845DD1);
         a = II(a, b, c, d, x[k+8], S41, 0x6FA87E4F);
         d = II(d, a, b, c, x[k+15], S42, 0xFE2CE6E0);
         c = II(c, d, a, b, x[k+6], S43, 0xA3014314);
         b = II(b, c, d, a, x[k+13], S44, 0x4E0811A1);
         a = II(a, b, c, d, x[k+4], S41, 0xF7537E82);
         d = II(d, a, b, c, x[k+11], S42, 0xBD3AF235);
         c = II(c, d, a, b, x[k+2], S43, 0x2AD7D2BB);
         b = II(b, c, d, a, x[k+9], S44, 0xEB86D391);
         a = AddUnsigned(a, AA);
         b = AddUnsigned(b, BB);
         c = AddUnsigned(c, CC);
         d = AddUnsigned(d, DD);
      }
      // Step 5.  Output the 128 bit digest
      var temp = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);
      return temp.toLowerCase();
   }
   function RotateLeft(lValue, iShiftBits) {
      return (lValue << iShiftBits) | (lValue >>> (32-iShiftBits));
   }
   function AddUnsigned(lX, lY) {
      var lX4, lY4, lX8, lY8, lResult;
      lX8 = (lX & 0x80000000);
      lY8 = (lY & 0x80000000);
      lX4 = (lX & 0x40000000);
      lY4 = (lY & 0x40000000);
      lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);
      if (lX4 & lY4) {
         return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
      }
      if (lX4 | lY4) {
         if (lResult & 0x40000000) {
            return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
         } else {
            return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
         }
      } else {
         return (lResult ^ lX8 ^ lY8);
      }
   }
   function F(x, y, z) {
      return (x & y) | ((~x) & z);
   }
   function G(x, y, z) {
      return (x & z) | (y & (~z));
   }
   function H(x, y, z) {
      return (x ^ y ^ z);
   }
   function I(x, y, z) {
      return (y ^ (x | (~z)));
   }
   function FF(a, b, c, d, x, s, ac) {
      a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
      return AddUnsigned(RotateLeft(a, s), b);
   }
   function GG(a, b, c, d, x, s, ac) {
      a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
      return AddUnsigned(RotateLeft(a, s), b);
   }
   function HH(a, b, c, d, x, s, ac) {
      a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
      return AddUnsigned(RotateLeft(a, s), b);
   }
   function II(a, b, c, d, x, s, ac) {
      a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
      return AddUnsigned(RotateLeft(a, s), b);
   }
   function ConvertToWordArray(sMessage) {
      var lWordCount;
      var lMessageLength = sMessage.length;
      var lNumberOfWords_temp1 = lMessageLength+8;
      var lNumberOfWords_temp2 = (lNumberOfWords_temp1-(lNumberOfWords_temp1%64))/64;
      var lNumberOfWords = (lNumberOfWords_temp2+1)*16;
      var lWordArray = Array(lNumberOfWords-1);
      var lBytePosition = 0;
      var lByteCount = 0;
      while (lByteCount<lMessageLength) {
         lWordCount = (lByteCount-(lByteCount%4))/4;
         lBytePosition = (lByteCount%4)*8;
         lWordArray[lWordCount] = (lWordArray[lWordCount] | (sMessage.charCodeAt(lByteCount) << lBytePosition));
         lByteCount++;
      }
      lWordCount = (lByteCount-(lByteCount%4))/4;
      lBytePosition = (lByteCount%4)*8;
      lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
      lWordArray[lNumberOfWords-2] = lMessageLength << 3;
      lWordArray[lNumberOfWords-1] = lMessageLength >>> 29;
      return lWordArray;
   }
   function WordToHex(lValue) {
      var WordToHexValue = "", WordToHexValue_temp = "", lByte, lCount;
      for (lCount=0; lCount<=3; lCount++) {
         lByte = (lValue >>> (lCount*8)) & 255;
         WordToHexValue_temp = "0"+lByte.toString(16);
         WordToHexValue = WordToHexValue+WordToHexValue_temp.substr(WordToHexValue_temp.length-2, 2);
      }
      return WordToHexValue;
   }
}
---

출처 : http://www.flash8coders.com/phpbb2/view ··· e2da2f77
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by hardboil