Wednesday, September 1, 2010

Simulating Anchro in WPF Form


1. xmal has <Border><Canvas> multiple sub canvas
2. Each sub-canvas hold different UI
3. Top canvas has SizeChanged event and where we transform button (btn1/2),
size datagrid (dg) and listbox (lb)

double dx=0,dy=0;
private void Canvas_SizeChanged(object sender, SizeChangedEventArgs e)
{
this.dg.Width=e.NewSize.Width;
this.lb.Width = e.NewSize.Width;
if (e.PreviousSize.Width != 0)
{
dx += e.NewSize.Width - e.PreviousSize.Width;
dy += e.NewSize.Height - e.PreviousSize.Height;
this.btn1.RenderTransform = new TranslateTransform(dx, dy);
this.btn2.RenderTransform = new TranslateTransform(dx, dy);
this.dg.Height += e.NewSize.Height - e.PreviousSize.Height;
}
}



Friday, July 30, 2010

Generating Large and more decimal Number in SQL


DECLARE @RandomNumber decimal(32,12)
DECLARE @RandomInteger bigint
DECLARE @MaxValue bigint
DECLARE @MinValue bigint

SET @MaxValue = 4000000000
SET @MinValue = 2

SELECT @RandomNumber = RAND()

SELECT @RandomInteger = ((@MaxValue + 1) - @MinValue) * @RandomNumber + @MinValue

--SELECT @RandomNumber as RandomNumber, @RandomInteger as RandomInteger

--select cast(@RandomInteger as varchar(200))+cast(@RandomNumber as varchar(200))

select [dbo].[FormatDecimalCharWithCommaRound](cast(@RandomInteger as varchar(200))+cast(@RandomNumber as varchar(200))
,4),cast(@RandomInteger as varchar(200))+cast(@RandomNumber as varchar(200))

select [dbo].[FormatDecimalCharWithCommaRound](.12345678,2)

Sunday, July 25, 2010

Hosting Http Server in WPF Form


public partial class MainWindow : Window
{
protected HttpListener Listener;
protected bool IsStarted = false;
public event delReceiveWebRequest ReceiveWebRequest;


public void Start(string UrlBase)
{
if (this.IsStarted) return;
if (this.Listener == null)
{
this.Listener = new HttpListener();
}
this.Listener.Prefixes.Add(UrlBase);
this.IsStarted = true;
this.Listener.Start();
IAsyncResult result = this.Listener.BeginGetContext(new AsyncCallback(WebRequestCallback), this.Listener);
}

public void Stop()
{
if (Listener != null)
{
this.Listener.Close();
this.Listener = null;
this.IsStarted = false;
}
}

protected void WebRequestCallback(IAsyncResult result)
{
if (this.Listener == null) return;
HttpListenerContext context = this.Listener.EndGetContext(result);
this.Listener.BeginGetContext(new AsyncCallback(WebRequestCallback), this.Listener);
if (this.ReceiveWebRequest != null)
this.ReceiveWebRequest(context);
this.ProcessRequest(context);
}
string txt="";
protected virtual void ProcessRequest(HttpListenerContext Context)
{
NameValueCollection data = Context.Request.QueryString;
StringBuilder sb = new StringBuilder();
foreach (string s in data.Keys)
sb.Append(s + "=" + data[s]);
txt += sb.ToString() + "\r\n"; ;
HttpListenerResponse response = Context.Response;
string responseString = "<HTML><BODY>ACK</BODY></HTML>";
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
response.ContentLength64 = buffer.Length;
System.IO.Stream output = response.OutputStream;
output.Write(buffer, 0, buffer.Length);
output.Close();
}

public MainWindow()
{
InitializeComponent();
// Server = new HttpServer();
}

private void Grid_Loaded(object sender, RoutedEventArgs e)
{


}
// public HttpServer Server = null;

List d = new List();
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.Start("http://127.0.0.1:7777/");
//wkr = new BackgroundWorker();
//wkr.DoWork += new DoWorkEventHandler(StartHttpListener);
//server = new HttpListener();
//server.Prefixes.Add("http://127.0.0.1:7777/");
//server.Start();
//StartHttpListener(null, null);
// wkr.RunWorkerAsync();

listBox1.ItemsSource = d;



}


private void Window_Unloaded(object sender, RoutedEventArgs e)
{
this.Stop();
}

private void button1_Click(object sender, RoutedEventArgs e)
{
textBox1.Text = txt;

}
}
public class TestData
{
public string name { get; set; }
public string value { get; set;}
}
}

Client Code to call
string url="123",userCd="test";
string dataComponentType="dc";
long[] ids= new long[]{1,2,3};
System.Net.WebClient c= new WebClient();
NameValueCollection nc= new NameValueCollection();
nc.Add("url",url);
nc.Add("userCd",userCd);
nc.Add("dataComponentType",dataComponentType);
foreach( long l in ids)
nc.Add("id"+l.ToString(),l.ToString());
c.QueryString=nc;
c.DownloadData("http://127.0.0.1:7777");

Monday, July 5, 2010

MSMQ in Java


One way to access Microsoft MSMQ from java is using http://msmqjava.codeplex.com/
JNI Library

Queue queue= new Queue("DIRECT=OS:ding-j-bos\\jqd3");
String qLabel="Created by jimmy.java";
String body= "Hello, World!";
byte[] correlationId = { 0,2,4,6,8,9 };
Message msg=new Message(body, qLabel, correlationId);
queue.send(msg);

Wednesday, June 9, 2010

Attached Date and Time stamp to DOS file

%date:~10,4%%date:~4,2%%date:~7,2%%time:~1,1%%time:~3,2%%time:~6,2%

Monday, May 31, 2010

F# Parallelism using Agent


// Learn more about F# at http://fsharp.net


namespace JQD

type Downloader() =

let ParallelWorker n f =
MailboxProcessor.Start( fun inbox->
let workers =
Array.init n ( fun i ->MailboxProcessor.Start(f))
let rec loop i = async {
let! msg=inbox.Receive()
workers.[i].Post(msg)
return! loop( (i+1)%n)
} loop 0
)



let agent =
ParallelWorker 8,
(fun input ->
let rec loop() = async {

do! Async.Sleep(5000)
return! loop()
}
loop()
)


member this.DowloadAll()=
ParallelWorker 8, (fun data ->
let rec loop() = async {

do! Async.Sleep(5000)
return! loop()
}
loop()
)

F# barebone Agent


Agent = using message passing to avoid mutating state
type Downloader() =

let agent =
MailboxProcessor.Start(fun inbox ->
let rec loop() = async {
let msg=inbox.Receive()
do! Async.Sleep(5000)
return! loop()
}
loop()
)

member this.DowloadAll()=
while(true) do
agent.Post("test")