• Archive,  Uncategorized

    Make your own keyboard for free

    I’ve been using the new Arc Keyboard for a few weeks now and I’m very pleased with it, I like it especially for typing. But (there is always a “but” ?)… Unfortunately I have to say this keyboard is not very practical when working with Windbg or Visual Studio (at least with the Italian layout) where you have to type special characters such as tilde (~) or braches ( { } ). Well, it is possible to get braches with the key combination ATL GR+SHIFT+è for the open one and ALT GR+SHIFT++ or ALT+123 and ALT+125 on the numpad if available and despite the weird key combination I got used to press it with only one hand and my typing flow was acceptable, even on a laptop where the numpad cannot be used. Anyway I’ve not been able to find how to get the tilde sign on an Italian keyboard without using the numpad combination (ALT+126), this means I cannot use neither my laptop nor the Arc Keyboard for coding… Should I use two different keyboards, then? No way ? Bing came to the rescue and pointed me to the Keyboard Layout Creator that, among other things, allows to modify…

  • Archive,  Uncategorized

    IDEVDataCollector adds IIS6 support

    It took me some time (mostly because of other demanding tasks and commitments I have for my daily job) but finally I have just updated IDEVDataCollector to support IIS 6, it’s available at the tool main page: https://www.cloudnotes.io/idevdatacollector/. Give it a try and let me know what you think ? P.s. Yes, I’m planning to release the source code too, stay tuned! Carlo Quote of the day: Clothes make the man. Naked people have little or no influence on society. – Mark Twain

  • Archive,  Uncategorized

    Which files to collect? Here’s a tool for you

    Over the last couple of months among other things I’ve been working on a tool to automatically the logs and information in my team we usually ask at the beginning of a new Support Call: all standard things such as IIS logs, event logs, .config files etc… Not all of those files are necessary for every case (as usual it depends on the problem at hand), but experience tells me the more information we have about the environment, the more chances we have to spot small inconsistencies, configuration problems etc… that sometimes can lay unnoticed and interfere with our work. So, enter our guest: IDevDataCollector I tried to keep the UI as simple and organized as possible, utilization is very easy, just run it and click the “Collect” button, sit there a couple of minutes (how much exactly will depend on the logs collected) and you’re done ?. Please note that I’m still working on it, this is just a preview release but I’d love to have your feedback/bug reports/feature requests etc…, keeping in mind that the scope of this tool is to facilitate troubleshooting and data collection for IIS/ASP.NET related problems, I am not interested (and probably do not…

  • Archive,  Uncategorized

    IDEVDataCollector

    Over the last couple of months among other things I’ve been working on a tool to automatically the logs and information in my team we usually ask at the beginning of a new Support Call: all standard things such as IIS logs, event logs, .config files etc… Not all of those files are necessary for every case (as usual it depends on the problem at hand), but experience tells me the more information we have about the environment, the more chances we have to spot small inconsistencies, configuration problems etc… that sometimes can lay unnoticed and interfere with our work. I tried to keep the UI as simple and organized as possible, utilization is very easy, just run it and click the “Collect” button, sit there a couple of minutes (how much exactly will depend on the logs collected) and you’re done. Please note that I’m still working on it, this is just a preview release but I’d love to have your feedback/bug reports/feature requests etc…, keeping in mind that the scope of this tool is to facilitate troubleshooting and data collection for IIS/ASP.NET related problems, I am not interested (and probably do not have the time) to build an…

  • Uncategorized

    Invalid length for a Base-64 char array

    There are various causes for this error, this is one we had some time ago when paginating through a DataGrid (for this case we’re talking about ASP.NET 1.1); the error appeared systematically under a specific user pattern: Invalid length for a Base-64 char array. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.FormatException: Invalid length for a Base-64 char array. Source Error: An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. Stack Trace: [FormatException: Invalid length for a Base-64 char array.] System.Convert.FromBase64String(String s) +0 System.Web.UI.LosFormatter.Deserialize(String input) +25 System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +101 [HttpException (0x80004005): Invalid_Viewstate Client IP: 213.199.128.155 Port: 24949 User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 1.1.4322; InfoPath.2; MS-RTC LM 8) ViewState: dDw2Mjg2Njc3OTM7dDw7bDxpPDA+Oz47bDx0PDtsPGk8MT47aTwzPjs+O2w8dDxwPHA8bDxUZXh0Oz47bDxcZTs+Pjs+Ozs+O3Q8QDA8cDxwP Gw8V2ViR3JpZF9Tb3J0RXhwcmVzc2lvbjtTaG93Rm9vdGVyO1Zpc2libGU7XyFTQjtQYWdlQ291bnQ7UGFnZVNpemU7V2ViR3JpZF9MYWJlbHM7 V2ViR3JpZF9Dc3NDbGFzc0J1dHRvbnM7Q3NzQ2xhc3M7XyFJdGVtQ291bnQ7XyFEYXRhU291cmNlSXRlbUNvdW50O1dlYkdyaWRfU29ydFR5cGU7 V2ViR3JpZF9Dc3NDbGFzcztEYXRhS2V5czs+O2w8TnVtZXJvO288Zj47bzx0PjtpPDI+O2k8MT47aTwxMD47YjxBQUVBQUFELy8vLy9BUUFBQUFBQ UFBQU1BZ0FBQUU1SmJuWmhMbGRsWWtOdmJuUnliMnh6TENCV1pYSnphVzl1UFRFdU1DNHlORGMzTGpFMk16UTVMQ0JEZFd4MGRYSmxQVzV sZFhSeVlXd3NJRkIxWW14cFkwdGxlVlJ2YTJWdVBXNTFiR3dGQVFBQUFCNUpiblpoTGxkbFlrTnZiblJ5YjJ4ekxsZGxZa2R5YVdSTVlXSmxiSE1UQUF BQUIxSnZkMFZrYVhRSlVtOTNTVzV6WlhKMENWSnZkMVZ3WkdGMFpRbFNiM2RFWld4bGRHVUpVbTkzUTJGdVkyVnNFVkp2ZDBSbGJHVjBaVkY xWlhOMGFXOXVDMUp2ZDFSbGVIUkdiM0p0Q1ZKdmQxUmxlSFJVYnc1U2IzZFVaWGgwVUdWeVVHRm5aUTlRWVdkbFZHVjRkRU4xY25KbGJuUU tVR0ZuWlZSbGVIUlBaZzVTYjNkVFpXeGxZM1JsWkZScGNBNVNiM2RVYjFObGJHVmpkRlJwY0F4UVlXZGxSbWx5YzNSVWFYQUxVR0ZuWlZCeVpY WlVhWEFMVUdGblpVNWxlSFJVYVhBTFVHRm5aVXhoYzNSVWFYQUlVR0ZuWlVkdlZHOExVR0ZuWlVkdlZHOVVhWEFCQVFFQkFRRUJBUUVCQVFF QkFRRUJBUUVCQWdBQUFBWURBQUFBQ0UxdlpHbG1hV05oQmdRQUFBQUZUblZ2ZG04R0JRQUFBQVZUWVd4MllRWUdBQUFBQjBWc2FXMXBi bUVHQndBQUFBZEJibTUxYkd4aEJnZ0FBQUF4UTI5dVptVnliV2tnYkdFZ1kyRnVZMlZzYkdGNmFXOXVaU0JrWld4c1lTQnlhV2RoSUhObGJHVjZhV zl1WVhSaFB3WUpBQUFBQmxKcFoyaGxPZ1lLQUFBQUFtUnBCZ3NBQUFBUVVtbG5hR1VnY0dWeUlIQmhaMmx1WVFZTUFBQUFCMUJoWjJsdVlU b0pDZ0FBQUFZT0FBQUFFRkpwWjJFZ2MyVnNaWHBwYjI1aGRHRUdEd0FBQUJWVFpXeGxlbWx2Ym1FZ2NYVmxjM1JoSUhKcFoyRUdFQUFBQUF 4UWNtbHRZU0J3WVdkcGJtRUdFUUFBQUJGUVlXZHBibUVnY0hKbFkyVmtaVzUwWlFZU0FBQUFFVkJoWjJsdVlTQnpkV05qWlhOemFYWmhCaE 1BQUFBTlZXeDBhVzFoSUhCaFoybHVZUVlVQUFBQUExWmhhUVlWQUFBQUQxWmhhU0JoYkd4aElIQmhaMmx1WVFzPT47V2ViR3JpZEdyaWRC dXR0b247V2ViR3JpZDtpPDEwPjtpPDEwPjtJbnZhLldlYkNvbnRyb2xzLldlYkdyaWQrZVNvcnRUeXBlLCBJbnZhLldlYkNvbnRyb2xzLCBWZXJzaW9 uPTEuMC4yNDc3LjE2MzQ5LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGw8QXNjZW5kaW5nPjtXZWJHcmlkO2w8aTwxPjtpP DI+O2k8Mz47aTw0PjtpPDU+O2k8Nj47aTw3PjtpPDg+O2k8OT47aTwxMD47Pjs+Pjs+O0AwPEAwPHA8bDxIZWFkZXJUZXh0O1Zpc2libGU7PjtsPFx lO288Zj47Pj47cDxsPENzc0NsYXNzO18hU0I7PjtsPFdlYkdyaWRIZWFkZXI7aTwyPjs+Pjs7Oz47QDA8cDxsPEhlYWRlclRleHQ7PjtsPFxlOz4+Ozs7Oz47 QDA8cDxsPEhlYWRlclRleHQ7PjtsPE51bS4gwqsgOz4+Ozs7Oz47QDA8cDxsPEhlYWRlclRleHQ7PjtsPERhdGE7Pj47Ozs7PjtAMDxwPGw8SGVhZGV yVGV4dDs+O2w8T2dnZXR0bzs+Pjs7Ozs+O0AwPHA8bDxIZWFkZXJUZXh0Oz47bDxBdHRvOz4+Ozs7Oz47QDA8cDxsPEhlYWRlclRleHQ7PjtsPENv bnRlbnV0bzs+Pjs7Ozs+Oz47cDxsPENzc0NsYXNzO18hU0I7PjtsPFdlYkdyaWRQYWdlcjtpPDI+Oz4+O3A8bDxDc3NDbGFzcztfIVNCOz47bDxXZWJH cmlkSGVhZGVyO2k8Mj47Pj47cDxsPENzc0NsYXNzO18hU0I7PjtsPFdlYkdyaWRGb290ZXI7aTwyPjs+PjtwPGw8Q3NzQ2xhc3M7XyFTQjs+O2w8V2 ViR3JpZEl0ZW07aTwyPjs+PjtwPGw8Q3NzQ2xhc3M7XyFTQjs+O2w8V2ViR3JpZEFsdGVybmF0ZUl0ZW07aTwyPjs+PjtwPGw8Q3NzQ2xhc3M7Xy FTQjs+O2w8V2ViR3JpZFNlbGVjdGVkSXRlbTtpPDI+Oz4+Ozs7PjtsPGk8MD47PjtsPHQ8O2w8aTwwPjtpPDI+O2k8Mz47aTw0PjtpPDU+O2k8Nj47a Tw3PjtpPDg+O2k8OT47aTwxMD47aTwxMT47aTwxMz47PjtsPHQ8O2w8aTwwPjs+O2w8dDw7bDxpPDA+Oz47bDx0PDtsPGk8MD47PjtsPHQ8O2 w8aTwwPjs+O2w8dDw7bDxpPDY+Oz47bDx0PHQ8OztsPGk8MD47Pj47Oz47Pj47Pj47Pj47Pj47Pj47dDw7bDxpPDE+O2k8Mj47aTwzPjtpPDQ+O2k 8NT47aTw2Pjs+O2w8dDxwPHA8bDxUZXh0Oz47bDwxOz4+Oz47Oz47dDxwPHA8bDxUZXh0Oz47bDwxOz4+Oz47Oz47dDxwPHA8bDxUZXh0Oz4 7bDwwOC8wMS8yMDA3Oz4+Oz47Oz47dDxwPHA8bDxUZXh0Oz47bDxcPGEgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogbm9uZVw7IGZvbnQtd2Vp Z2h0OiBib2xkXDsiIGhyZWY9IjUzMDAxIlw+QVJFQSBOLiA3IC0gVVJCQU5JU1RJQ0EgLSBFU1BST1BSSSAtIExBVk9SSSBESSBDT1NUUlVaSU9ORSB ERUxMQSBTRURFIERFTCBESVNUQUNDQU1FTlRPIERFSSBWSUdJTEkgREVMIEZVT0NPIFZPTE9OVEFSSSBESSBTQUlOVCBNQVJUSU4gSU4gTE9D QUxJVMOAIFBMRU9ELiBJTVBFR05PIERFTExFIFNPTU1FIE5FQ0VTU0FSSUUgUEVSIExBIFBST0NFRFVSQSBESSBFU1BST1BSSU8uIExJUVVJREFaS…

  • Uncategorized

    How to automate Process Monitor

    The other day I needed to capture a Process Monitor trace on a machine to troubleshoot a problem where the entire OS GUI was “broken” after the resume from screensaver; with “GUI broken” I mean that clicking on any icon on the desktop has no effect, the right click menu does not work etc…, but we are still able to access the Task Manager and run tasks (command line etc…) from the File > New Task (Run…) menu. This suggests the user’s registry is for some reason unloaded during when the screensaver is running, but the point is: if I run Procmon before the screensaver starts and wait for the problem to reproduce (to have a complete trace) then I’m unable to save the trace because I cannot access any running task which a GUI unless I start a new one or reboot the machine. Either way the trace is lost. Coincidentally also my colleague Stefano had a similar problem and we (he, actually) found a couple of command line switches that can be used to control Procmon for such situations, in particular “/BackingFile” and “/Terminate”: /backingfile tells Procmon where to automatically save the trace, while /terminate actually starts a…