Scott Hanselman

I Ran All Over The Net Via Google And Google Groups This Evening Trying To Figure Out The Answer To What I Thought

December 11, '02 Comments [0] Posted in Web Services | ASP.NET | XML | Tools
Sponsored By

I ran all over the Net (via Google and Google Groups) this evening trying to figure out the answer to what I thought was a simple question.  Everywhere I turned I found pieces of what I wanted to do...clues...but not even close to the whole solution (isn't that always the way?). So, when I DID figure it out (for better or worse) I wanted to put the solution out in the world, lest I forget it, so if some poor schmoe needs to go looking for it him/herself.

I've got a very constrained environment in this instance, with ASP (not ASP.NET) on the client side, calling a Java WebService that includes a Base64 encoded image.  I wanted to get the image out of the soap envelope WITHOUT touching the disk. The data in the image is very sensitive and it can't be saved.

I know this is easy, and done basically automatically with serialization in ASP.NET...heck, most SOAP stacks handle this kind of stuff for you...I guess I just made it harder than it needed to be in Classic ASP.  I found all sorts of interesting stuff, including an online Base64 decoder, and one guy who actually wrote a BASE64 Decoder entirely in VBScript (which was, not surprisingly more effort than I was willing to handle today)!

The Proof of Concept result is this snippet of ASP/VBScript code...sigh...these things are so obvious AFTER they've been written!

<%
Dim mDoc
Set mDoc = Server.CreateObject("MSXML2.DOMDocument")
mDoc.async = false
mDoc.ValidateOnParse = false
'NOTE: The REAL xml file will come from inside our SOAP Envelope when it comes over from the SOAP/REST call to the Java WS
mDoc.Load Server.MapPath(".") + "\\sample.xml"
   
Dim oNode
Set oNode = m_Doc.selectSingleNode("/Envelope/Body/ImgQryRs/imgBin64")
'NOTE: I had to force the dataType to bin.base64 since there wasn't yet an XSD available to declare it was so.
oNode.dataType = "bin.base64"
Response.ContentType="image/JPEG"
Response.BinaryWrite oNode.nodeTypedValue
%>

Interesting things about this:

  • MSXML is smarter than I thought when using nodeTypedValue (accessing the property when the dataType is a bin.base64 causes an implicit conversion to a byte array)
  • Response.BinaryWrite in ASP is pretty darn useful, even in this typeless varient-y world of Classic ASP
  • When there's no XSD available (duh!) then nodeTypedValue doesn't work well! :)

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

httpwwwtinyurlcom A Simple Even RESTful Solution To A Big Problemnbsp Its

December 11, '02 Comments [0] Posted in Musings
Sponsored By

http://www.tinyurl.com - a simple (even REST-ful) solution to a big problem.  It's helped me many times.  Check it out.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

The Internet As Linguistic Bridge Between Cultures I Had A Fantastic Series Of Conversations Over Ins

December 9, '02 Comments [0] Posted in Musings | Tools
Sponsored By

The Internet as Linguistic Bridge Between Cultures

I had a fantastic series of conversations over Instant Messenger recently with a Chinese national who saw my TinyOS in C# somewhere and added me to his/her Messenger Buddy List.  The whole conversation was in Chinese on his/her side and Chinese/English on my side with BabelFish helping out.  It was amazing.  I have some very-limited familiarity with a large-ish number of language grammers (English, Spanish, French, Amharic, Japanese, Mandarin, Hindi, and Arabic...the later four adding breadth, but not nearly as much depth as I'd like, mostly on the linguistic structure and alphabet/syllabary side) and I found that BabelFish results are much more easily understood in the English-to-Whatever translation phase if the English word order is similiar to the destination language.  Also, if you know a particular colloquialism in the destination language, you can coerce BabelFish with the right English phrasing.  Also, if you avoid ambiguous words that could cause verb-noun confusion and find unusual but clear ways to phrase in English, the resulting translations can be much more effective.  This makes me wonder (possible Masters/PhD thesis here, anyone) if an English-to-Clearer-English preprocessing or pre-compile stage to any automated translation software could dramaticaly improved one's success with these kinds of tools...

I was told by my new friend: 

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Ive Looked At Building A NET NAnt BuildServer To Assist In A Hrefhttpwwwm

December 9, '02 Comments [0] Posted in Web Services | Nant
Sponsored By

I've looked at building a .NET NAnt BuildServer to assist in Continuous Integration...however, I've stumbled upon Draco.NET which may do me one better.

"Draco.NET is a Windows service application designed to facilitate continuous integration. Draco.NET monitors your source code repository, automatically rebuilds your project when changes are detected and then emails you the build result along with a list of changes since the last build."

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

W3C Home Page Tableless Layout HOWTO Via Zeldman The W3

December 9, '02 Comments [0] Posted in Web Services
Sponsored By

W3C Home Page Table-less Layout: HOWTO. [ via Zeldman ]
The W3C explains how they do a three column, tableless layout on their front page. [More Like This WebLog]

This is pretty slick...I've got a few sites that could benefit from a tableless layout...

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.