Contents

Monologue

is not a blog

DICE

IRC/Web Server for MS Windows®

Japanese Side

Japanese contents

 

Favorites

Beyond3D

The forum runs @ 120fps.

Slashdot

News for nerds, stuff that doesn't matter - powered by Slash

The Code Project

Windows Free Source Code and Tutorials

SceneCritique

Powered by DICE

The Old New Thing

For all Windows programmers

Links

Home

Home (alt.)

Monologue

This web site is where yours truly, RyuK, uploads whatever he wants to publish on the web. Feel free to send a message to him at .

One of my personal projects, DICE, is a multi-protocol web server that can accept 3 kinds of network clients: IRC clients, OpenNap clients, and web browsers. IRC is a protocol for pure text chat experience while OpenNap is a peer-to-peer directory-publishing service.

In addition to the standard web server functions as a public interface to a file system within a computer, the DICE can host realtime text chat channels that are simultaneously accessible from all kinds of clients that it supports, even including web browsers.

As for what I was interested in circa 2003, please refer to the interview of mine hosted at IRC101.

 

Essays

This is a collection of software programming-related documents and tiny software written by me for this web site.

 

[2007-12-22] SSL Server with OpenSSL Memory BIO a.k.a. Prerequisite to Asynchronous OpenSSL

In the last article of mine about SSL, the API to handle SSL for the DICE was the SSPI (Security Support Provider Interface) that is one of the standard API sets in Microsoft Windows. However recently I replaced it with OpenSSL for the latest version of the DICE that has HTTPS implemented. This article lays out the rationale behind the switch and shows a necessary step for how to code an SSL server with asynchronous sockets.

 

[2007-12-22] C++ Asynchronous Delegate for Microsoft Windows

Windows has a very useful system function to make an asynchronous function call, QueueUserWorkItem. With this function and its thread pool that is aware of what Windows is actually doing at a given time, Windows takes care of all asynchronous function call complicatedness for you in the simplest form. But people can never be lazy enough, setting it up with context information each time will soon become a boring task especially when you want to call a member function of a foreign C++ object asynchronously. This article introduces a small toolkit AsyncDelegate.h that lends itself to solving this issue by using C++ templates.

 

[2006-11-15] Perl, Ruby, Multithreading, Embedding

For the first half of this article the main topic is multithreading in the 2 scripting languages, Perl and Ruby. By writing a multithreaded download manager application in Perl and then porting it to Ruby, it'll show you how to write a multithreading application in the both languages and show you how different they are in this area.

The second half is for a bit advanced programming topic and it's about how to write a C++ application with an embedded Perl or Ruby interpreter. For Perl embedding, the sample code is based on the one I actually implemented in the web server of the DICE.

 

[2006-11-09] C++ and C#/.NET Interoperability for RSA Public-key Cryptography and AES Symmetric Cipher

When you have to write a secure network application you can't escape from cryptography. In some cases there are high-level packages such as SSL available, but it's not always like that and you may have to go lower-level in some cases. Besides, even if you don't program a custom security solution by yourself, it's not a bad idea to know how these secure protocols actually work as it helps you to choose a right solution for your problem. This article provides a basic idea of secure communication by illustrating C++ and C# code examples. Also this article will be useful for those who want to write a custom secure protocol between a C++ application and a C# application.

 

[2005-05-06] How to Programmatically Create Self-signed Certificate and Key Pair Association for SSL Communication with Microsoft Windows SSPI

SSL communication requires a certificate and its associated key pair. Without a private key, you can't decrypt a message sent to you. Since it's not much known on how to programmatically create this association of a certificate and a private key in a certificate store on Windows, here's a detaild recipe for you with some debugger tricks.

 

[2002-04-04] Early DICE Design Notes

Planning something often turns out to be more fun than actually making it into a working form. Even after actually implementing an idea into a concrete structure that is a software application, postmortem contemplation gives me good entertainment. But sometimes eerie thought comes to me that a working software product is not important - what I really love is this coneptual model, or imaginary architecture. I just translate it into another model composed of words of computer languages. This document is what I wrote after writing the DICE version 0.1. If you can read a C++ source code and if the DICE is an open-source software (it's not unfortunately), you may be able to decrypt every necessary meaning by examining the whole stack of the CVS repository of the DICE - but here I prefer more traditional, familiar way, presenting my own subjective thinking in a plain text stream.

 

[2000-08-xx] RijnDael Cipher Wrapper (zip archive)

It was in 2000 when it'd not been annonunced yet which crypto algorithm was chosen as the AES (Advanced Encryption Standard) among the 4 finalists, MARS, RC6, RijnDael, and Serpent. At that time I was practicing writing a code in C++ before jumping onto the development of the DICE and learning Standard C++ features, also finding fun in reading about crypto algorithms too. I remember I searched the web to look for what encryption algorithm is new and kicking, and found the contest for the AES. Among the finalists, I betted RijnDael would be promising - it seemed that it was the most 'open' among them. It had multiple C implementations available and I took one of them to convert it into the C++ style, then made a small application for file encryption/decryption to see what it would be like to implement various cipher modes on it. As it's strictly for my own practice, only the binary executable is contained in the zip, no source code available :P Since it was implemented using only things found in Standard C++, if you have spare time make your own platform-dependent implementation and compare its processing speed with this version.

 

[1999-08-xx] Diablo en Laberinto

Do you like Perl? I used to. I used to like Perl to the degree to write this wacky Wizardry (I mean a good ol' style Sirtech game, not this abomination)-like thing, called Diablo en Laberinto. Nothing but waste of time, but haven't you been addicted to something like Tetris? It's basically a CGI script written in Perl 5 and has pseudo-3D maze graphics in ASCII-text + guestbook. Get it? If not, try it!