Thursday, December 6, 2012

Simple Project : Blog Entry & Listing


Admin
Scaffolding using Dynamic / View
Limit Scaffolding only to Blog table.
Create page for User CRUD (Create, Replace, Update & Delete) using Web Forms.
Logout URL by a class implementing IHttpHandler (ProcessRequest method).
Front Page
MVC (another site) to view Blog Entries.
Optimize / Cache Application.
Deploy.


Tuesday, December 4, 2012

Custom HTTP Handler 2


===================
KompasPageHandler2
===================

using System.Web;
using System.Drawing;
using System.IO;
using System.Drawing.Imaging;
using System;

/// <summary>
/// Summary description for KompasPageHandler
/// </summary>
namespace Kompas
{

    public class KompasPageHandler2 : IHttpHandler
    {
        public KompasPageHandler2()
        {
            //
            // TODO: Add constructor logic here
            //
        }

        public bool IsReusable
        {
            get { return true; }
        }

        public void ProcessRequest(HttpContext context)
        {
            string urlPath = context.Request.RawUrl;

            string[] splitUrl = urlPath.Split('/');
            context.Response.Write(context.Request.RawUrl);
            context.Response.Write("<BR/>");
            context.Response.Write(
                String.Format("Tahun {0} Bulan {1}, Artikel {2}",
                    splitUrl[3], splitUrl[4], splitUrl[5]
                )
                //"Tahun " + splitUrl[1]
            );
           
            for (int i = 0; i < splitUrl.Length; i++)
            {
                context.Response.Write(splitUrl[i] + "<BR/>");
            }
            //context.Response.Write("Halooo...");

        }
    }
}

===================
web.config
===================

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <system.web>
    <httpHandlers>
      <add path="*/kompas" verb="*" type="Kompas.KompasPageHandler" />
      <add path="kompas2/*/*/*" verb="*" type="Kompas.KompasPageHandler2" />
    </httpHandlers>
    <compilation debug="true" targetFramework="4.0"/>
    <urlMappings>
      <add url="~/gambarsaja" mappedUrl="~/Gambar.ashx"/>
    </urlMappings>
  </system.web>
</configuration>

Custom HTTPHandler

==================
web.config
==================
<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <system.web>
    <httpHandlers>
      <add path="*" verb="*" type="Kompas.KompasPageHandler" />
    </httpHandlers>
    <compilation debug="true" targetFramework="4.0"/>
  </system.web>
</configuration>


==================================
HTTPHandler (dimasukkan di App_Code)
=================================

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for KompasPageHandler
/// </summary>
namespace Kompas
{

    public class KompasPageHandler : IHttpHandler
    {
        public KompasPageHandler()
        {
            //
            // TODO: Add constructor logic here
            //
        }

        public bool IsReusable
        {
            get { return true; }
        }

        public void ProcessRequest(HttpContext context)
        {

            //context.Response.Write(context.Request.RawUrl);
            //context.Response.Write("Halooo...");

            string kata = context.Request.QueryString["kata"];

            int width = 600; //int.Parse(context.Request.QueryString["width"]);
            int height = 400; //int.Parse(context.Request.QueryString["height"]);

            Bitmap bitmap = new Bitmap(width, height);
            Font drawFont = new Font("Arial", 16);
            SolidBrush drawBrush = new SolidBrush(Color.Black);
            SolidBrush drawBrushWhite = new SolidBrush(Color.White);
            PointF drawPoint = new PointF(150.0F, 350.0F);
            Pen whitePen = new Pen(Color.White, 1);

            Graphics g = Graphics.FromImage((Image)bitmap);
            g.FillRectangle(Brushes.Red, 0f, 0f, bitmap.Width, bitmap.Height); // fill the entire bitmap with a red rectangle

            for (float i = 0f; i <= 1500f; i += 20f)
            {
                g.DrawLine(whitePen, 0, i/5, i, 500f);
            }
            g.DrawString(kata, drawFont, drawBrush, drawPoint);

            MemoryStream mem = new MemoryStream();
            bitmap.Save(mem, ImageFormat.Png);

            byte[] buffer = mem.ToArray();

            context.Response.ContentType = "image/png";
            context.Response.BinaryWrite(buffer);
            context.Response.Flush();

        }
    }
}


Baca Web


==========================
ReadWeb.cs
==========================
using System.Text;
using System.Net;
using System.IO;

namespace SearchProject
{
    class ReadWeb
    {
        public static string ReadURL(string url)
        {
            // used to build entire input
            StringBuilder sb = new StringBuilder();

            // used on each read operation
            byte[] buf = new byte[8192];

            // prepare the web page we will be asking for
            HttpWebRequest request = (HttpWebRequest)
                WebRequest.Create(url);

            // execute the request
            HttpWebResponse response = (HttpWebResponse)
                request.GetResponse();

            // we will read data via the response stream
            Stream resStream = response.GetResponseStream();

            string tempString = null;
            int count = 0;

            do
            {
                // fill the buffer with data
                count = resStream.Read(buf, 0, buf.Length);

                // make sure we read some data
                if (count != 0)
                {
                    // translate from bytes to ASCII text
                    tempString = Encoding.ASCII.GetString(buf, 0, count);

                    // continue building the string
                    sb.Append(tempString);
                }
            }
            while (count > 0); // any more data to read?

            // print out page source
            return (sb.ToString());
        }
    }
}



==========================
RegexTest.cs
==========================

using System;
using System.IO;
using System.Collections.Generic;

namespace SearchProject
{
    class RegexTest
    {
        static string bacaFile(string namaFile)
        {
            String teksSumber = String.Empty;

            if (File.Exists(namaFile))
                teksSumber =
                    File.ReadAllText(namaFile);
            else
                Console.WriteLine("File tidak ditemukan");
            return teksSumber;
        }

        static string ambilResult()
        {
            String namaFile = Directory.GetCurrentDirectory() +
                     @"\..\..\Cerita Kancil.txt";

            String teksSumber = bacaFile(namaFile);

            //Penggunaan Objek
            HasilSearchRegex objSearch = new HasilSearchRegex();
            objSearch.keyword = @"(?i)([a-z]+)-\1";
            //objSearch.keyword = @"(?i)(kancil|harimau)";
            return objSearch.getConsoleResult(teksSumber);
        }

        static void Main(string[] args)
        {
            //ReadWeb objWeb = new ReadWeb();
            String teksSumber = ReadWeb.ReadURL("http://www.klikbca.com");
            //Console.WriteLine(teksSumber.ToString());
            //Console.Write(hasil);
            //String namaFile = Directory.GetCurrentDirectory() +
            //         @"\..\..\Cerita Kancil.txt";

            //String teksSumber = bacaFile(namaFile);
            ////Penggunaan Objek
            HasilSearchRegex objSearch = new HasilSearchRegex();
            //objSearch.keyword = @"(?i)([a-z]+)-\1";
            objSearch.keyword = @"<td.+kurs.+?>(.+?)</td>";
            //objSearch.getConsoleResult(teksSumber);
            ////

            Console.WriteLine(objSearch.getConsoleResult(teksSumber));
            
            Console.ReadLine();
        }
    }
}











Collections 2

=============================================
Cerita Kancil.txt
=============================================

Cerita Kancil
Alkisah, ada seekor kancil yang sedang berteduh di tepi sungai dengan rindang pohon-pohon teduh disana.
Tiba-tiba si kancil mencium adanya mara bahaya, yaitu seekor harimau yang sedang menuju ke arahnya dari kejauhan.
Melihat keadaan tersebut si kancil mendekat ke kolam yang kotor dengan tanah liat, melumuri badannya dengan bau-bau bangkai
ikan yang terdapat di sekitarnya. Setelah itu tiduran dengan berpura-pura mengeluarkan banyak busa di mulutnya.
Si Harimau akhirnya mendekat dan menyeringai ke Si Kancil...
"Wah, ini hari keberuntungan saya. Seekor kancil yang akan menjadi sarapanku !", kata si Harimau
"Oh Harimau... sahabatku, tolonglah daku yang sedang keracunan ini.... ", lirih Sang Kancil
"Hah ?? Buat apa saya bantu kau... Dan, kamu keracunan apakah sampai sekarat begini ?", si Harimau menjadi ragu
"Oh Harimau, akibat keteledoran saya meminum air buangan manusia disana, perut saya menjadi sangat sakit dan panas...
Banyak ikan mati disana, mungkin keracunan air yang sama. Ajalku segera dekat... Tolonglah aku Harimau... ", lirih Sang
Kancil menjadi-jadi. tiba-tiba.
Sang Harimau akhirnya pergi tanpa mempedulikan Si Kancil karena takut jika menyantap Si Kancil, racunnya juga akan
masuk ke badannya.
Sang Kancil memperhatikan sampai si Harimau pergi jauh, dan kemudian lari ke tempat yang tenang dengan ceria
karena telah terhindar dari bahaya.


=============================================
HasilSearch (Abstract Class)
=============================================

using System.Collections.Generic;

namespace SearchProject
{
    abstract class HasilSearch
    {
        public string keyword { get; set; }
        public int jumlahHasil = 0;

        public List<string> hasil;
        public HasilSearch()
        {
            this.keyword = "";
            hasil = new List<string>();
        }

        protected abstract List<string> getHasil(string source);
    }
}



=============================================
HasilSearchRegex (Inherit)
=============================================
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;

namespace SearchProject
{
    class HasilSearchRegex: HasilSearch
    {
        protected override List<string>
            getHasil(string source)
        {
            hasil = new List<string>();
            MatchCollection m1 =
                Regex.Matches(source, this.keyword);
            foreach (Match m2 in m1)
            {
                hasil.Add(m2.ToString());
            }

            jumlahHasil = m1.Count;

            return hasil;
        }

        public string getHTMLTable(string source)
        {
            string teks = "";

            hasil = getHasil(source);
            teks = "<table><tr><td>Hasil</td></tr>";
            foreach (var item in hasil)
            {
                teks +=
                    "<tr><td>"
                    + item.ToString()
                    + "</td></tr>";
            }
            teks += "</table>";
            return teks;
        }

        public string getConsoleResult(string source)
        {
            string teks = "";

            hasil = getHasil(source);
            teks = "Hasil : " + jumlahHasil + " item\n";
            teks += "================\n";
            foreach (var item in hasil)
            {
                teks += item.ToString() + "\n";
            }
            teks += "================\n";
            return teks;
        }
    }
}

=============================================
RegexTest
=============================================

using System;
using System.IO;
using System.Collections.Generic;

namespace SearchProject
{
    class RegexTest
    {
        static string bacaFile(string namaFile)
        {
            String teksSumber = String.Empty;

            if (File.Exists(namaFile))
                teksSumber =
                    File.ReadAllText(namaFile);
            else
                Console.WriteLine("File tidak ditemukan");
            return teksSumber;
        }

        static void Main(string[] args)
        {
            String namaFile = Directory.GetCurrentDirectory() +
                     @"\..\..\Cerita Kancil.txt";

            String teksSumber = bacaFile(namaFile);

            //Penggunaan Objek
            HasilSearchRegex objSearch = new HasilSearchRegex();
            objSearch.keyword = @"(?i)([a-z]+)-\1";
            //objSearch.keyword = @"(?i)(kancil|harimau)";
            objSearch.getConsoleResult(teksSumber);
            //

            Console.WriteLine(objSearch.getConsoleResult(teksSumber));
            Console.ReadLine();
        }
    }
}



Monday, December 3, 2012

Collections

============================================================
HasilSearch.cs

============================================================


using System.Collections.Generic;

namespace SearchProject
{
    abstract class HasilSearch
    {
        public string keyword { get; set; }
        public List<string> hasil;
        public HasilSearch()
        {
            this.keyword = "";
            hasil = new List<string>();
        }

        public abstract List<string> getHasil();
    }
}

============================================================
HasilSearchRegex

============================================================


using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;

namespace SearchProject
{
    class HasilSearchRegex: HasilSearch
    {
        public override List<string>
            getHasil(string source)
        {
            hasil = new List<string>();
            MatchCollection m1 =
                Regex.Matches(source, this.keyword);
            foreach (Match m2 in m1)
            {
                hasil.Add(m2.ToString());
            }

            return hasil;
        }

        public string getHTMLTable()
        {
            string teks = "";

            teks = "<table><tr><td>Hasil</td></tr>";
            foreach (var item in hasil)
            {
                teks +=
                    "<tr><td>"
                    + item.ToString()
                    + "</td></tr>";
            }
            teks += "</table>";
            return teks;
        }

        public string getConsoleResult()
        {
            string teks = "";

            teks = "Hasil\n";
            teks += "================\n";
            foreach (var item in hasil)
            {
                teks += item.ToString() + "\n";
            }
            teks += "================\n";
            return teks;
        }
    }
}




============================================================
RegexTest.cs
============================================================
using System;

using System.IO;
using System.Collections.Generic;

namespace SearchProject
{
    class RegexTest
    {
        static string bacaFile(string namaFile)
        {
            String teksSumber = String.Empty;

            if (File.Exists(namaFile))
                teksSumber =
                    File.ReadAllText(namaFile);
            else
                Console.WriteLine("File tidak ditemukan");
            return teksSumber;
        }

        static void Main(string[] args)
        {
            String namaFile = Directory.GetCurrentDirectory() +
                     @"\..\..\Cerita Kancil.txt";

            String teksSumber = bacaFile(namaFile);

            //Penggunaan Objek
            HasilSearchRegex objSearch = new HasilSearchRegex();
            objSearch.keyword = @"(?i)([a-z]+)-\1";
            //objSearch.keyword = @"(?i)(kancil|harimau)";
            List<string> hasil =
                objSearch.getHasil(teksSumber);
            //

            Console.WriteLine(objSearch.getConsoleResult());
            Console.ReadLine();
        }
    }
}



============================================================
Contoh Teks untuk Search (buat dalam file Cerita Kancil.txt)
============================================================
Cerita Kancil
Alkisah, ada seekor kancil yang sedang berteduh di tepi sungai dengan rindang pohon-pohon teduh disana.
Tiba-tiba si kancil mencium adanya mara bahaya, yaitu seekor harimau yang sedang menuju ke arahnya dari kejauhan.
Melihat keadaan tersebut si kancil mendekat ke kolam yang kotor dengan tanah liat, melumuri badannya dengan bau-bau bangkai
ikan yang terdapat di sekitarnya. Setelah itu tiduran dengan berpura-pura mengeluarkan banyak busa di mulutnya.
Si Harimau akhirnya mendekat dan menyeringai ke Si Kancil...
"Wah, ini hari keberuntungan saya. Seekor kancil yang akan menjadi sarapanku !", kata si Harimau
"Oh Harimau... sahabatku, tolonglah daku yang sedang keracunan ini.... ", lirih Sang Kancil
"Hah ?? Buat apa saya bantu kau... Dan, kamu keracunan apakah sampai sekarat begini ?", si Harimau menjadi ragu
"Oh Harimau, akibat keteledoran saya meminum air buangan manusia disana, perut saya menjadi sangat sakit dan panas...
Banyak ikan mati disana, mungkin keracunan air yang sama. Ajalku segera dekat... Tolonglah aku Harimau... ", lirih Sang
Kancil menjadi-jadi
Sang Harimau akhirnya pergi tanpa mempedulikan Si Kancil karena takut jika menyantap Si Kancil, racunnya juga akan
masuk ke badannya.
Sang Kancil memperhatikan sampai si Harimau pergi jauh, dan kemudian lari ke tempat yang tenang dengan ceria
karena telah terhindar dari bahaya.