CRM 2011 Improvement

CRM 2011 has 500 bug fixes from the latest CRM 4.0.

if you see that it took Microsoft 3 years to really released this 2011 version, than you know that there are major improvements

  • Interface
  • Connections
  • Custom Activities
  • Recurring Events
  • Goals and Goal Management
  • Processes
  • Auditing
  • Team Record Ownership
  • Field-Level Security
  • Improved Outlook Integration
  • Dynamic Marketing Lists
  • Data Management
  • Solution Management
  • Mobility
  • Web Resources and Azure Integration
  • SharePoint Integration
  • Dynamics Marketplace
  • Azure Extension
  • New Plugin Architecture

I’m going to drill down each of this in subsequent posts

Share this post: | | | |
Posted by cipto with no comments

Oracle ODP.NET

Oracle has shifted it’s Newest oracle 11g to a new DLL, and it’s using the efficiency from and other stuff.

Despite like that it has lack support in Enterprise Library, and you might want to define new database by your self or just use direct oracle client.

The previous one will work for Oracle 9-10g. and for 11 , you have to use this ODP.NET. One main problem that I encounter is the lack of deployment support.

if you want to deploy your application , you have to install oracle client on client computer. that is about 233 MB or more. and that is huge.

Oracle has this XCOPY which meant to be , you just copy your dll to someplace and it should run, but it’s not.

there are lot’s of setting and error on this oracle environment thing

so although you already did what they told us to , Detail 

still no luck, Try this and that a lot (copy folder,env variable,c++ runtime).
I get Oracle Exception "The provider is not compatible with the version of Oracle client".
It's because also have not so good Error message, everything that goes wrong will pop up this message.
have look on the related forum also.
So what I did for last try is to install the ODTwithODAC112021 32 Bit version.
I select the Client one.set it to c:\app .
Download Here
it works

Again what a hassle it is.

Share this post: | | | |
Posted by cipto with no comments

Prevent Caching on Jquery Mobile Page

when you inject page dynamically using

$page = $('#dynamicpage');
$header = $page.children(":jqmData(role=header)");
$content = $page.children(":jqmData(role=content)");
$footer = $page.children(":jqmData(role=footer)");

And jQuery mobile will use that linking page. when you go to that page first time, everything is good.

but when you click go back, and go to that page again. all the formatting,themes,css is gone

what happened is jquery will cache your page based on your hashed url,on the page container.

Simply removing it solve this. this come from this solution . we add the attribute data-cache=never . which will trigger remove it on pagehide

and to create new page is simply like this


so in combination we would Save the original template before it’s processed.

the correct event is pagebeforecreate of the home page. and when removed, we Append it again to the pageContainer.

var originaltemplate='';
$(document).bind("pagehide", function (event, ui) {
//Remove the Element here, to Trick down Themes Not loaded/no css
var currentPage = $(;
//Wohoooo patch
if (currentPage.attr('data-cache') == 'never') {
var id = currentPage.attr('id');
//append to page container
switch (id) {
case 'dynamicpage':

$(document).bind("pagebeforecreate", function (event) {
var currentPageid = $('id');
//save it on homepage init, because other is dynamic already although raw html
if (currentPageid == "homepage") {
originaltemplate = htmlInclusive($('#dynamicpage'));

There you have it all works Smile

Share this post: | | | |
Posted by cipto with no comments

Javascript Namespace and Module Pattern

I’ve just got a chance to review this Book “Java script Pattern”, the author is the SA of Yahoo, as you might guess YUI.

For ages we know how to make Namespace in JS, but making as a function , that rocks.

I’ve only quick look on Chapter 5.

//Declare the root and namespace function

var Myapplication = Myapplication || {};
Myapplication.namespace = function (ns_string) {    
var parts = ns_string.split('.'),        
parent = MYAPP,        i;   
 // strip redundant leading global  
 if (parts[0] === "MYAPP") {     
   parts = parts.slice(1);   
 for (i = 0; i < parts.length; i += 1) {        // create a property if it doesn't exist   
     if (typeof parent[partsIdea] === "undefined") {         
   parent[partsIdea] = {};      
  }        parent = parent[partsIdea]; 
   }    return parent;};
//to get the module example
var IneedModule2=Myapplication.namespace('Myapplication.Order.module2');
//Declaring dependency on top of function declaration,So that when minified it doesn’t break
var myFunction = function () {
    // dependencies
    var event = YAHOO.util.Event,
        dom = YAHOO.util.Dom;
    // use event and dom variables
    // for the rest of the function...


Way of creating object , could use regular function constructor, or wrap it in immediate function

//using function for creating object
function Gadget() {
    // private member
    var specs = {
        screen_width: 320,
        screen_height: 480,
        color: "white"
    // public function
    this.getSpecs = function () {
        return specs;
//Creating Object not using regular function
//can we still have private memberS?
//everything inside closure by making immidiate function is private
var toy;
(function () {
 // private member
    var specs = {
        screen_width: 320,
        screen_height: 480,
        color: "white"
    // public function
    toy= {
    getSpecs :function () {
        return specs;
Passing in globalobject and application to consume locally
var GLOBALUTILIY={d:1,e:2};   
var MYAPP = MYAPP || {};
MYAPP.utilities.module = (function (app, global) {
    // references to the global object
    // and to the global app namespace object
    // are now localized

}(MYAPP, this)); // DIRECTLY CALL IT passing GLOBAL as THIS(global scope)
                   // Passing MYAPP as app;


You can all read a long , how to declare other thing on that chapter by your self

Share this post: | | | |
Posted by cipto with no comments

CRM 2011, Could not load file or assembly Microsoft.Crm.Sdk, Version=

If you had a previous application from CRM 4 SDK., running on a Server which has CRM 2011 installed, this message appear.

although you have the CRM 4.0 SDK.dll In your bin, it will still look for 5 th version.

the reason is the publisher policy file, told it automatically use the latest one when encountered this dll.

if you still want your existing app to run on that box,the solution is to turn it off

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity name="Microsoft.Crm.Sdk" publicKeyToken="31bf3856ad364e35"
<publisherPolicy apply="

Share this post: | | | |
Posted by cipto with no comments

Using CRMSvcUtil

To generate the Early Type Bound we need to generate the entity class.

How to use this tool?

go to setting –> Customizations –> Developer Resources

Here is where you get your services URL, since Service can be separated on different Machine

this is super Important

the Organization UniqueName, Service Endpoints.

like the Discovery, Organization Service, Organization Data Service.

what you need on CRMSVCUtil is the Organization Service.

like wise other SvcUtil, is the authentication parameters : /d /u /p /d.

/out : outputfilename



we can output this command during build on vs,but CRM has options for late bound type.

this autogeneration is separated to different tools, it was previously integrated I think. because

this generating slow down the performance


You could also add an extension to what is being generated.

you could include the customization dll, like on example /codeCustomization:"Microsoft.Xrm.Client.CodeGeneration.CodeCustomization, Microsoft.Xrm.Client.CodeGeneration"

Share this post: | | | |
Posted by cipto with no comments

Working with XMLReader on Sencha Touch

We all should start by including senchatouchdebug.js, or w/comment.js. so that we can read the code and put breakpoint on it to trace better.

On SencaTouch or Ext js, we all work with Data , and it’s all related to these components:

Model, Store, Proxy, Ui Controls(List/NestedList/HTML/Carousel/Form).


Model can have Mapping , custom Convert function.

Model can have association, hasMany or belongTo


consider this xml Structure

Don’t use the TotalProperty or SuccessProperty for your custom mapping


Store is a way to Save your Result, it can store to html5 storage, or on memory on your js objects and it cache it for you or not

Store.ClearOnLoadPage : clear the result when movement/navigation happened

Store could have Proxy in it, and proxy can have reader in it.


Proxy have several type : Memory, Ajax, ScriptTag,Server,SessionStorage,WebStorage

Reader attached to Proxy : is the way how to read your result is it XML or JSON


Powerful templating. Could use custom Js Function , passed in the Values


var tpl2 = new Ext.XTemplate('<div class="shoutoutdate">{[this.formatDate(values.dateadded)]}</div>',
compiled: true,
formatDate: function (datetime) {
                try {

                    var date = parseXmlDate(datetime);
                    var datestring = '';
                    var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
                    "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
                    var name = monthNames[parseInt(date.getMonth())];
                    datestring = date.getHours() + ':' + date.getMinutes() + ' ' + name + ' ' + date.getDate();
                    return datestring;
                } catch (e) {
                    return datetime;


, basic IF


Manual ajax is using Ext.Ajax.Request


JSON using Ext.decode ex: Ext.decode(response.responseText);

Select XML Nodes using :Ext.DomQuery.selectNode(‘Xpath’', XMLRawData); ex: Ext.DomQuery.selectNode(‘Xpath’', store.proxy.reader.xmlData);


You have Nested XML , with Many Childs. use Association on Model

use the Has Many, already working.

Ext.regModel('Order', {
        fields: [{ name: 'example'}],
        , hasMany: { model: 'product', name: 'products' }

This will Create Nested Store , there is store inside store, Bind it during the Store load callback or datachanged or what ever that is related.


Mapping is Xpath, so you could use ex:‘Root>Products>Product

for XML the Server Output Content Type Response must be : “text/xml” or “application/xml”

Mapping on XML is case sensitive

Read the API ,Property events related


To control the Proxy Parameters is using extraParams property. and set it before load of store

During Mapping to XML Attribute which is defined by ‘mapping:@AttributeName’ on Model, I found error ‘DOM Exception 12’ and this is solved by using  Patch

To override control UI , use the baseCLS

AddCLS will add the main class root, override with !Important

To theming use the recommended sencha way, Saas

To override a control to looks like another control use the baseCls

everything in Extjs is related and oop  , Hierarchal & Nested structure. think what you want for Layout Root inside of it Items inside Items can be other nested Layout,

whether root is panel,carouse,tab, inside of it could be HTML,Vbox,HBox.

Check out Sencha MVC with phonegap

Point of View:

“Looking at Phonegap and Future windows 8, Using Javasript You can create Native App, that is crazy, Javascript Could be the next Cross Platform language”


Share this post: | | | |
Posted by cipto with no comments

Printing using Window.Print and CSS

Ok perhaps this is a bit old. but worthed to be noted.

at first thought would like to print using the telerik reporting print preview.

but You could print using the regular HTML and defined own CSS applied only when printed.

to print simply call window.print();

the next question is , how can we defined and add css which is only when printed .

simple case i don't want my print image button being printed.

the answer is by using your own css. just specify the media="print" not "screen"

this will told browser the css for printing is that one.

there you can set your #printbutton{ display:none }

you could set the Font of each element etc, do more, example is like the blueprint css framework, the Print.css

Share this post: | | | |
Posted by cipto with no comments

Web-Kit Transform3D , Translate, and Duration

I’ve got a sample case:

there is an existing jcarousel and overtime we’d like to support the touch and drag on IOS and android.called it swipe.

now how do you possibly do this without any framework like sencha touch or jqtouch?.


WebKit is unique amongst browser rendering engines in that it allows animation to be specified in pure CSS. Although this may never actually make it in to the CSS 3 specification, it degrades nicely.

everything relies on webkit capability of course you can do what ever rotate,etc

for this sample case ,the answer is on transform3D(x,y,z).

               -webkit-transition-property: -webkit-transform;
               -webkit-transition-duration: 0.5s;
               -webkit-transition-timing-function: ease-out;
               /*apply a transfor to kick in the hardware acceleration.  Without this, the first time we add the transform you get odd rendering of the divs (half missing) */
               -webkit-transform: translate3d(0px,0px,0px); 

Set the jcarouse differently, no animation when going next. no extra left and right. they are going to swipe it anyway

if (isIOS() || isAndroid()) {
               scroll: 1,
               visible: 1,
               initCallback: mycarousel_initCallback,
                itemLoadCallback: mycarousel_itemLoadCallback,
               // This tells jCarousel NOT to autobuild prev/next buttons
               buttonNextHTML: null,
               buttonPrevHTML: null,
               //turn off for ios so no extra sliding
var swipeOptions =
              triggerOnTouchEnd: true,
              swipeStatus: swipeStatus,
              threshold: 100
          $(function () {
              $("#mycarousel .jcarousel-clip-horizontal").css('border', '1px solid black');
              $("#mycarousel .jcarousel-clip-horizontal").css('-webkit-border-radius', '10px');
              $("#mycarousel").css('overflow', 'hidden');
              $("#mycarousel").css('position', 'relative');
              imgs = $("#mycarousel .jcarousel-clip-horizontal");

Reduce threshold, to make how far Drag is consider as a Swipe

//Swipe handlers
    function swipeStatus(event, phase, direction, distance) {
        //If we are moving before swipe, and we are going Lor R in X mode, or U or D in Y mode then drag.
        if (phase == "move" && (direction == "left" || direction == "right")) {
            var duration = 0;
            if (direction == "left")
                scrollImages((IMG_WIDTH * currentImg) + distance, duration);
            else if (direction == "right")
                scrollImages((IMG_WIDTH * currentImg) - distance, duration);
        else if (phase == "cancel") {
            //scrollImages(IMG_WIDTH * currentImg, speed);
        else if (phase == "end") {
            if (direction == "right")
            else if (direction == "left")
    function previousImage() {
        if (prevBtn == 1) {
           // alert('load prev');
        return false;
    function reset() {
        //imgs.css("left",  "0px");
        imgs.css("-webkit-transform", "");
    function nextImage() {
        if (nextBtn == 1) {

There you have it a carousel that swipe on IOS Open-mouthed smile, cheers

Plugin Used

Of course you can find that it can do more fancy than this, just google and you’ll find fancy animation far beyond this.

this is just sample case

Updated 2011-06-28

For more natural effect, i don’t use carousel for Ios and android. i use the same as the example on the plugin example.

load all pages using settimeout and load all append to the right, create a viewport of carousel with overflow hidden.

and than just use the swipe as usual.

Share this post: | | | |
Posted by cipto with no comments

Domain Driven Design Part 3

Just got back to this. I’m thinking about my project and now I’d like to split it into several BC(Bounded Context)s.

on my case:

“the way of ordering is different when there is a bundle package(a marketing bundle for products with discount)

or Ordinary package. this change the way application work.” so order has become different meaning for BundleContext and OrderContext. and all other product descandent.

also I’ve got other users type which the interest is not on ordering, and it’s like admin side. this also need to be seperated, as this will treat product user in different meaning

.another suggestion would be to separate the users Identity and Role into another context. that way the other context would only Know that UserRole/Type Class .

now for communication : each context has it’s own Service exposed to other has API to Translate it to the local domain (ACL).

our API has it’s own contract and language (could be XML or directly byte on the messaging). the service host could be HTTP or TCP.

you need also to define wether it is upstream or downstream.

it can be hosted on WCF Services (http or tcp), or if it has caching inside of that context use NBUS event Driven. so you could message “Someting is New” and told other context “Reload that Cache”

in my case i don’t really work in separate application, except the admin site that could tell the current web cache, “Hey i’ve add new product ,please get the latest one”

so somehow I’ll add that service to ordercontext. and the admin application will call that service.

i do like the Notification that can go back and forth

as for Shared Kernel, since it’s like a Model shared among context or Team of development. I’d say just a class library which is reference by both context.

Still a bit confuse and I’m sure I’m almost there.

Related Article:

Aggregate Root is the key for publishing event. you should read more about Domain Event


Ah found a great book. for this i skip to chapter 3.

Professional Design Pattern

Share this post: | | | |
Posted by cipto with no comments

Streaming for Apple iPhone/Ipad

Finally got this working.You’ve got that right ,Lack of Documentation

“Apple iPhone uses HTTP byte-ranges for requesting audio and video files. First, the Safari Web Browser requests the content, and if it's an audio or video file it opens it's media player. The media player then requests the first 2 bytes of the content, to ensure that the Webserver supports byte-range requests. Then, if it supports them, the iPhone's media player requests the rest of the content by byte-ranges and plays it.” Detail

So at first time IOS device will request byte 0-1 to see if it can accept the partial/chunk streaming.

if successful it will request for the whole content, or partial content. everything is on HTTP_Range server value during the HttpRequest,Patter: Start-End ex (0-1,0-41299).

with proper encoding of the video it will run, note: this code only support single range, not multiple.

it’s all on PHP and I’ve convert it to enjoy

   1: using System;
   2: using System.Web;
   3: using System.IO;
   4: using System.Collections.Generic;
   5: /// <summary>
   6: /// Support Single Range Request Only
   7: /// </summary>
   8: public class VideoStreamer : IHttpHandler {
  10:     private void RangeDownload(string fullpath,HttpContext context)
  11:     {
  12:         long size,start,end,length,fp=0;
  13:         using (StreamReader reader = new StreamReader(fullpath))
  14:         {
  16:             size = reader.BaseStream.Length;       
  17:             start = 0;
  18:             end = size - 1;
  19:             length = size;
  20:             // Now that we've gotten so far without errors we send the accept range header
  21:             /* At the moment we only support single ranges.
  22:              * Multiple ranges requires some more work to ensure it works correctly
  23:              * and comply with the spesifications:
  24:              *
  25:              * Multirange support annouces itself with:
  26:              * header('Accept-Ranges: bytes');
  27:              *
  28:              * Multirange content must be sent with multipart/byteranges mediatype,
  29:              * (mediatype = mimetype)
  30:              * as well as a boundry header to indicate the various chunks of data.
  31:              */
  32:             context.Response.AddHeader("Accept-Ranges", "0-" + size);
  33:             // header('Accept-Ranges: bytes');
  34:             // multipart/byteranges
  35:             //
  37:             if (!String.IsNullOrEmpty(context.Request.ServerVariables["HTTP_RANGE"]))
  38:             {
  39:                 long anotherStart = start;
  40:                 long anotherEnd = end;
  41:                 string[] arr_split = context.Request.ServerVariables["HTTP_RANGE"].Split(new char[] { Convert.ToChar("=") });
  42:                 string range = arr_split[1];
  44:                 // Make sure the client hasn't sent us a multibyte range
  45:                 if (range.IndexOf(",") > -1)
  46:                 {
  47:                     // (?) Shoud this be issued here, or should the first
  48:                     // range be used? Or should the header be ignored and
  49:                     // we output the whole content?
  50:                     context.Response.AddHeader("Content-Range", "bytes " + start + "-" + end + "/" + size);
  51:                     throw new HttpException(416, "Requested Range Not Satisfiable");
  53:                 }
  55:                 // If the range starts with an '-' we start from the beginning
  56:                 // If not, we forward the file pointer
  57:                 // And make sure to get the end byte if spesified
  58:                 if (range.StartsWith("-"))
  59:                 {
  60:                     // The n-number of the last bytes is requested
  61:                     anotherStart = size - Convert.ToInt64(range.Substring(1));
  62:                 }
  63:                 else
  64:                 {
  65:                     arr_split = range.Split(new char[] { Convert.ToChar("-") });
  66:                     anotherStart = Convert.ToInt64(arr_split[0]);
  67:                     long temp = 0;
  68:                     anotherEnd = (arr_split.Length > 1 && Int64.TryParse(arr_split[1].ToString(), out temp)) ? Convert.ToInt64(arr_split[1]) : size;
  69:                 }
  70:                 /* Check the range and make sure it's treated according to the specs.
  71:                  *
  72:                  */
  73:                 // End bytes can not be larger than $end.
  74:                 anotherEnd = (anotherEnd > end) ? end : anotherEnd;
  75:                 // Validate the requested range and return an error if it's not correct.
  76:                 if (anotherStart > anotherEnd || anotherStart > size - 1 || anotherEnd >= size)
  77:                 {
  79:                     context.Response.AddHeader("Content-Range", "bytes " + start + "-" + end + "/" + size);
  80:                     throw new HttpException(416, "Requested Range Not Satisfiable");
  81:                 }
  82:                 start = anotherStart;
  83:                 end = anotherEnd;
  85:                 length = end - start + 1; // Calculate new content length
  86:                 fp = reader.BaseStream.Seek(start, SeekOrigin.Begin);
  87:                 context.Response.StatusCode = 206;
  88:             }
  89:         }
  90:             // Notify the client the byte range we'll be outputting
  91:         context.Response.AddHeader("Content-Range", "bytes " + start + "-" + end + "/" + size);
  92:         context.Response.AddHeader("Content-Length", length.ToString());
  93:             // Start buffered download
  94:             context.Response.WriteFile(fullpath, fp, length);
  95:             context.Response.End();
  97:     }
  99:     public void ProcessRequest(HttpContext context)
 100:     {
 101:         //context.Response.Headers.Clear();
 102:         string filename = context.Request["fn"];
 103:         string mimetype = "video/mp4";
 104:         string fullpath=context.Server.MapPath("video/output/"+filename);        
 105:         if (System.IO.File.Exists(fullpath))
 106:         {
 108:             context.Response.ContentType = mimetype;
 109:             if (!String.IsNullOrEmpty(context.Request.ServerVariables["HTTP_RANGE"]))
 110:             {
 111:                 //request for chunk
 112:                 RangeDownload(fullpath,context);
 113:             }
 114:             else
 115:             { 
 116:                 //ask for all 
 117:                     long fileLength = File.OpenRead(fullpath).Length;
 118:                     context.Response.AddHeader("Content-Length", fileLength.ToString());
 119:                     context.Response.WriteFile(fullpath);             
 122:             }
 123:         }
 124:         else
 125:         {
 126:             throw new HttpException(404, "Video Not Found Path:"+fullpath);
 127:         }
 128:     }
 130:     public bool IsReusable {
 131:         get {
 132:             return false;
 133:         }
 134:     }
 136: }


You can than use it on your html 5 video tag.

   1: <video width="340" height="285" id="htmlvidplayer" controls="" poster="/video/output/53_big.jpg" tabindex="0">
   2: <source id="mp4" src="services/VideoStreamer.ashx?fn=/video/output/53.mp4" type="video/mp4">
   3: </source>
   4: </video>

or directly Redirect to that url, because the devices have those built in quicktime player.

   1: <a href="services/VideoStreamer.ashx?fn=/video/output/53.mp4>
   2: <img src="video/output/53_big.jpg"/>
   3: </a>

Related to how to build Cross browser video. well in my case it's only IOS use HTML5 or Desktop Browser use flash.
this is the Javascript Example:

   1: function LoadMediaPlayer(fileName, thumbnailPic) {
   2:     var videocontainerid='mediaplayer';
   3:     var x = document.getElementById('htmlvidplayer');
   4:     if(x)
   5:     document.getElementById(videocontainerid).removeChild(x);
   6:     if (!isIOS() && !isAndroid()) {
   7:     var so = new SWFObject("../mplayer/TFMP13.swf", "mediaplayer", "480", "345", "8", "#000000");
   8:     so.addParam("allowFullScreen", "false");
   9:     so.addVariable("MediaLink", fileName);
  10:     so.addVariable("image", thumbnailPic); // preview image
  11:     so.addVariable("imageScaleType", "1");
  12:     so.addVariable("logo", "../images/tf_logo_small.png"); // logo image file
  13:     so.addVariable("logoLink", ""); // when logo is clicke
  14:     so.addVariable("logoTarget", "_blank"); // target frame when logo is clicked
  15:     so.addVariable("playOnStart", "false");
  16:     so.addVariable("startVolume", "50"); // 0-100
  17:     so.write(videocontainerid);
  18:     }
  20: else {
  21:     //use video tag
  22:     fileName = fileName.substring(fileName.lastIndexOf('/') + 1);
  23:     var v = document.createElement("video");
  24: = 'htmlvidplayer';
  25:     v.width = '480';
  26:     v.height = '345';
  27:     v.controls = true;
  28:     v.poster = thumbnailPic;
  29:     var mp4 = document.createElement('source');
  30: = 'mp4'; mp4.src = '/services/VideoStreamer.ashx?fn=' + fileName; mp4.type = 'video/mp4';
  31:     v.appendChild(mp4);
  33:     var g = document.getElementById(videocontainerid);
  34:     g.appendChild(v);
  35:     }
  36:  }

It’s Hosted on Codeplex

Share this post: | | | |
Posted by cipto with no comments

Smooth Streaming MP4 for IOS Devices (Iphone,Ipad)

After a lot digging on this. a bit confuse at first. but finally almost comes to conclusion.

so in order to have it play able,you have to have the correct encoding and proper streaming it.

if you just want it to be playable the file must act like downloaded not streamed, but apple has restriction on the file size though.

the proper way is to stream it. there are http module from code-shop for free which in combination with mp4 utility, and ffmpeg.

and we have alternative product built in for , SmoothStream which use the Microsoft Encoder for encoding the proper one, Detail.

we must create the necessary files

Server manifest files (.ism)

Client Manifest files

and properly direct/handle the request for ism,ismc,ismv,m3u8 (play list)

Share this post: | | | |
Posted by cipto with no comments

Glimpse a server side Firebug

Have just got back to my mvc 3 project. after research on how to build unobtrusive Javascript with MVC, on the way i found about this.

1 word , awesome.

when you are debugging your project and you would like to output your server side to browser

some operation like Trace.Write , Ajax Call, Debug Routing, just use this . all in 1.

so when you press F5, and than go to this URL : http://localhost/Glimpse/Config click Turn Glimpse On.


browse through your page,you gonna have that button with an eye , click on it. There you have all the output



Share this post: | | | |
Posted by cipto with no comments

Full website Images using Jpeg Compression

Ever wonder nowadays why website use a full background image , but so light in size?

If you notice on the type of picture, it’s jpeg.

the reason is only this type that supports, scale down Pixel per inch. an article suggest 72 to have it lower down to be viewable on monitor only, not for printing.

and jpeg support compression that is by default 8x8 pixels and selectively reduce the detail within each block. the higher compression ratio block pattern becomes more visible.

The pattern in the image also effect how the compression would be come. more color and gradient will result in more “pixelate”.

Anyway i found this software Jpeg compression really do the job.

Share this post: | | | |
Posted by cipto with no comments

Migrating WebSite to Azure

First of all you’ve got to convert your website to web application site.

Steps to do this

  • Make new Web application Project on your Azure Cloud
  • Copy paste all your aspx files to the New WebApplicationProject
  • Right click project, click Convert to web Application, this will generate the designer.cs file and convert all behind code file to compile
  • For your app_code change all the .cs Files , BuildAction-> Compile
  • If you have WebReference, you only need the WSDL to generate the Proxy class. because the Strucutre is different on web application project, you might want to generate it again. Right Click Add service reference->Advance->AddWebReference->Point to your WSDL name it the Same as your previous one,Change SoapClient to only the object Name
  • If you have Problems on using Profile, since there is no Strong type generated by web application. use this generator , How to use it. You don’t have profilecommon, just use the Profile class generated. you can access value on webapplication on httpcontext.current.Profile.GetPropertyValue.
  • After successful build, than add it to azure, Righclick Role->add web role in solution

It’s time to deploy..

Share this post: | | | |
Posted by cipto with no comments
More Posts Next page »