Saturday, August 18, 2012

Sample project with WDK.API.CouchDb


Sample project with WDK.API.CouchDb

Здравейте приятели отново продължаваме с CouchDB само, че сега ще ви представя едно ново 
решение с което много лесно и бързо се правят динамични приложение.
Представям ви една библиотека WDK.API.CouchDb и JsonBridge.js
Ето и кода на JsonBridge.js


var JsonBridge = {
   useAuthorization: false,
   authorizationHandler: function (username, password) {
    return "";
   },

   url: '/jsonbridge/',
   execute: function (classpath, method, params, resultHandler, faultHandler) {
    var url = JsonBridge.url + classpath + '/';
    if (method != null && method != '')
     url += method;

    if (params != null) {
     $.ajax({
      url: url,
      beforeSend: function (xhr) {
       if (JsonBridge.useAuthorization) {
        xhr.setRequestHeader("Authorization", JsonBridge.authorizationHandler);
       }
      },
      contentType: 'application/json',
      data: JSON.stringify(params),
      dataType: 'json',
      type: "POST",
      success: resultHandler,
      error: faultHandler
     });
    }
    else {
     $.ajax({
      url: url,
      beforeSend: function (xhr) {
       if (JsonBridge.useAuthorization) {
        xhr.setRequestHeader("Authorization", JsonBridge.authorizationHandler);
       }
      },
      contentType: 'application/json',
      dataType: 'json',
      processData: false,
      type: "GET",
      success: resultHandler,
      error: faultHandler
     });
    }
   }
  };

за да създадете документ в CouchDB имаме следния код:



JsonBridge.execute('WDK.API.CouchDb', 'createDocument', ['users', 'hello'], function (data) {
  // you code is here
});

сега нека разгледаме параметрите на JsonBridge.execute:

WDK.API.CouchDb ви е библиотеката WDK.API.CouchDb.dll

createDocument ви е метод от тази библиотека 

['users', 'hello'] - параметри за метода createDocument където 
users е базата данни 'hello' е новото поле за вашия документ.

за повече информация 
http://jsonbridge.com/

Поздрави Мехмедов


Monday, August 13, 2012

Web Application с CouchDB база данни

Здравейте, сигурно вече сте запознати с една от последните и нови технологии NoSql база данни или по точно документно ориентирани където нямате таблици, релации и др. подобни както в Sql ако все още не знаете за какво става въпрос прочетете тук.



А сега  какво направих за няколко часа 


Опитах се първо да извикам  view която имаше само една map функция на java script, но
се оказа че с ajax не може да се прави cross domain.

Ето как реших проблема:

създадох си база tasks в https://cloudant.com/
След което създадох нов документ и в него Upload-нах 
Index.html, Serve.js и Style.css


Използвани технологии:
Cloud computing - Html5, JQuery, Css, Ajax, Json

Поздрави Мехмедов




Wednesday, August 8, 2012

CouchDB lists function

Вече два месеца се занимавам с CouchDB и все повече започва да ми харесва.
Преди седмица прочетох за lists функциите поиграх си малко с тях и видях колко полезни са те когато искаме да си направим custom JSON документи.


И така нека да дам един прост пример за list функция:



{
   "_id": "_design/recipes",
   "_rev": "1-7e06eea8045779c50e28a658cfc8b639",
   "lists": {
       "all_documents": "function(head, req){
            var row;
            while(row = getRow()) {
              log(row.key);
             send(toJSON(row.value));
           }
        }"
   }
}

както се вижда от примера list функцията е подобна на view но в нея може да сe обхождат документите и да задавате някакви условия чрез които да си правите custom json документи.

с една дума може да имаме масив в който трупаме документи и да върнем този резултат.

после остава само да се парсне в jquery и да си генерирате динамично съдържание на html

Поздрави
Мехмедов

Tuesday, July 10, 2012

Бързо и лесно чат приложение - html5, jquery,PubNub

Създаването на чат в web се оказа доста лесна задача.Благодарение на една облачна услуга "PubNub" - http://www.pubnub.com/ 

Може бързо и лесно да си направите, чат приложение във вашата web страница.


Ето и разработено чат приложение от мен http://secretcom.apphb.com/Chat.aspx


Изисквания:
Познания с html5, jquery

Не забравяйте, да добавите следния код в body на html файла,
където pub-key и sub-key са задължителни.
След влизане в сайта вашия pub-key и sub-key ще ги намерите на :

My Account  ???

Api Keys ???



 <div pub-key="???" sub-key="???"
        ssl="on" origin="pubsub.pubnub.com" id="pubnub">
 </div>
 <script src="http://cdn.pubnub.com/pubnub-3.1.min.js" type="text/javascript"></script>

пример:
https://pubnub-prod.appspot.com/account-javascript-api-include
JavaScript Push API Reference:
https://pubnub-prod.appspot.com/tutorial/javascript-push-api

С  помощта  на Telerik - http://academy.telerik.com/


Tuesday, June 26, 2012

Практически проект - задание Secret Communicator (cloud development)

Здравейте, дойде времето в което трябва да разработим практически проект
Secret Communicator (cloud development)


Тук ще се опитам да обяснявам начина по който ще създавам проекта за да може ви бъде интересно и забавно ето и заданието.


Overview

Design and develop a cloud-based communication system for encrypted exchange of resources such
as messages, links and files. The communication is performed in channels. Each channel has name and
password. Users can enter existing channels and register new channels. When a channel is loaded, users
can see / download the content posted inside (messages, links and files) and post new content.


Architecture

Use the following classical multi-tier cloud architecture:
Front-End: HTML5-based client
Middle-tier: REST-based services
Back-End: NoSQL database + cloud storage



Създаване на проект - asp.net web application


И така първото което трябва да направим е да си създадем проект в Visual Studio
като изберем File - New - Asp.net web application


След това ще създам една папка LIB в която ще имам всички библиотеки които ще ползвам  за качване на файлове в DroobBox https://www.dropbox.com/


Добавете към вашия проект - References - Add References - Browse - Lib
Маркирайте всички и изберете ОК


Тези библиотеки са:

Common.Logging
Divan.dll
Newtonsoft.Json.dll
nunit.framework.dll
Spring.Rest.dll
Spring.Social.Core.dll
Spring.Social.Dropbox.dll







Оказа се че целия процес ще отнеме доста време и ще стане доста скучно да описвам всичко стъпка по стъпа затова пусам линк към приложението където може да следите как се гради малко по малко  - http://secretcom.apphb.com






Saturday, June 23, 2012

Изграждане на цялостно cloud приложение - Photo Sharer

Изграждане на цялостно cloud приложение - демонстрация (архитектура, изграждане на back-end частта, изграждане на бизнес логика в cloud среда, REST услуги, постраяване на HTML5 клиент)


В курса Cloud developmnt имах задача да се разработи cloud приложение.


Идеята беше за Frond-End да се ползва Html5, JQuery, Ajax
За база данни  - Back-End  NoqSq и DrobBox(https://www.dropbox.com/)
Бизнес логика на WCF Rest Service



ето сега и кода:


Upload на снимка локално




Резултат:
http://halachevphotosharer.apphb.com/

Sunday, June 17, 2012


Разработване на Custom Server Control - XGridView 1.0


Ето, че е време да представя  и един от най новите ми проекти XGridView 1.0

Разработването на custom server control в dot.net е наистина едно интересно и вълнуващо предизвикателство.

Един ден докато си разработвах един сайт ми се наложи да визуализирам данните от базата в html таблица, но забелязах, че винаги ми се налага след това да манипулирам данните
Например: редакция, изтриване, сортиране, странициране, търсене и др.

И всичко това ме хвърли в размисъл, че ще е хубаво това нещо да се изнесе като контрола за да може и в други проекти лесно да се ползва.

Ето и и сайта където може да видите и демо: http://xgridview.apphb.com/




Как да използваме XGridView

XGridView e лесен за използване единственото, което трябва да направите е да свалите
Xsoft.Web.UI.dll файла и да го добавите във вашия проект.

<%@ Register Assembly="Xsoft.Web.UI" Namespace="Xsoft.Web.UI" TagPrefix="xsoft" %>
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>

<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label runat="server" ID="lblResult"></asp:Label>
<xsoft:XGridView ID="XGridView1" runat="server" AllowSorting="true" AutoGenerateColumns="false"
ShowAdditionalPanel="true" DataKeyNames="ID" OnRowClicked="OnRowClicked_RowClicked">
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name"></asp:BoundField>

<asp:BoundField DataField="Age" HeaderText="Age" SortExpression="Age"></asp:BoundField>

<asp:BoundField DataField="Sex" HeaderText="Sex" SortExpression="Sex"></asp:BoundField>

<asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email"></asp:BoundField>

<asp:BoundField DataField="Phone" HeaderText="Phone" SortExpression="Phone"></asp:BoundField>
                    </Columns>
                    </xsoft:XGridView>
</ContentTemplate>
</asp:UpdatePanel>
</form>


code behind


       
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Web;
        using System.Web.UI;
        using System.Web.UI.WebControls;
        using System.Data;

        namespace TestControl
        {
            public partial class ExampleGridView : System.Web.UI.Page
            {
                private IList Getcontacts()
                {
                    var path = HttpContext.Current.
Server.MapPath(@"contacts.xml");
                    var data = new DataSet();
                    data.ReadXml(path);
                    var contacts = new List();
                    foreach (DataRow row in data.Tables[0].Rows)
                    {
                        contacts.Add(new Contact
                        {
                            ID = Convert.ToInt32(row["ID"]),
                            Name = Convert.ToString(row["Name"]),
                            Age = Convert.ToInt32(row["Age"]),
                            Sex = Convert.ToString(row["Sex"]),
                            Email = Convert.ToString(row["Email"]),
                            Phone = Convert.ToString(row["Phone"]),                   
                        });
                    }
                    return contacts;

                }

                protected override void OnPreRender(EventArgs e)
                {
                    var contacts = Getcontacts();
                    XGridView1.DataSource = contacts;

                    foreach (var item in contacts)
                    {
                        if (item.ID == XGridView1.SelectedDocumentID)
                        {
                            txtbox.Text = item.Name;
                            break;
                        }
                    }

                }

                public class Contact
                {
                    public int ID { get; set; }
                    public string Name { get; set; }
                    public int Age { get; set; }
                    public string Sex { get; set; }
                    public string Email { get; set; }
                    public string Phone { get; set; }           
                }
            }
        }