Friday

C#(csharp) how to resize array (shrink) by Array.Copy

 

/// <summary>
/// Emails addresses creating.
/// </summary>
/// <param name="incom">The incoming array</param>
/// <returns></returns>
private EmailAddressType[] EmailAddressCreate(string[] incom) {
if (incom == null) return null;
EmailAddressType[] ret = new EmailAddressType[incom.Length];
EmailAddressType[] rt;
int i = 0;
foreach (string s in incom) {
if (!string.IsNullOrEmpty(s))
{
ret[i] = new EmailAddressType();
ret[i].EmailAddress = s;
i++;
}
}
// change size of array
if (i < incom.Length)
{
rt = new EmailAddressType[incom.Length];
Array.Copy(rt, ret, i);
}else
{
rt=ret;
}

return rt;
}

more...

Sunday

ASP.NET uploading files directly to a SQL database in C#

asp-page-source
 <form id="form1" runat="server">
Please upload file:<br />
<asp:Literal ID="lit_Status" runat="server" /><br />
<b>Name:</b>
<asp:TextBox ID="FileName" runat="server" />
<br />
<b>File:</b>
<asp:FileUpload ID="FileToUpload" runat="server" />
<br />
<asp:Button ID="btn_Upload" runat="server" Text="Upload" onclick="btn_Upload_Click" />
</form>


Code-behind source
 using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Data.SqlClient;
using System.Configuration;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}

protected void btn_Upload_Click(object sender, EventArgs e)
{
if (FileToUpload.PostedFile == null || String.IsNullOrEmpty(FileToUpload.PostedFile.FileName) || FileToUpload.PostedFile.InputStream == null)
{
lit_Status.Text = "
Error - unable to upload file. Please try again.
";
}
else
{
using (SqlConnection Conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
{
try
{
const string SQL = "INSERT INTO [BinaryTable] ([FileName], [DateTimeUploaded], [MIME], [BinaryData]) VALUES (@FileName, @DateTimeUploaded, @MIME, @BinaryData)";
SqlCommand cmd = new SqlCommand(SQL, Conn);
cmd.Parameters.AddWithValue("@FileName", FileName.Text.Trim());
cmd.Parameters.AddWithValue("@MIME", FileToUpload.PostedFile.ContentType);

byte[] imageBytes = new byte[FileToUpload.PostedFile.InputStream.Length + 1];
FileToUpload.PostedFile.InputStream.Read(imageBytes, 0, imageBytes.Length);
cmd.Parameters.AddWithValue("@BinaryData", imageBytes);
cmd.Parameters.AddWithValue("@DateTimeUploaded", DateTime.Now);

Conn.Open();
cmd.ExecuteNonQuery();
lit_Status.Text = "
File successfully uploaded - thank you.
";
Conn.Close();
}
catch
{
Conn.Close();
}
}
}
}
}



more...

howto put file into varbinary (OPENROWSET,BULK,SINGLE_BLOB) on MS SQLServer


CREATE TABLE [cmp].[tblCMPEmailAttachements](
[AttachmentID] [int] IDENTITY(1,1) NOT NULL,
[EmailID] [int] NOT NULL,
[FileName] [nvarchar](50) NULL,
[CreatedDate] [datetime] NULL,
[FileBody] [varbinary](max) NULL
) ON [PRIMARY]



Declare @attID int
Insert into cmp.tblCMPEmailAttachements (EmailID,FileName,CreatedDate) values (1,'1.gif',GETDATE())
SET @attID = SCOPE_IDENTITY();
update cmp.tblCMPEmailAttachements set
[FileBody] = (SELECT * FROM OPENROWSET(BULK 'C:\1.gif', SINGLE_BLOB)AS [FileBody] ) WHERE AttachmentID=@attID

more...

Monday

android links

http://code.google.com/p/andro… - Android Scripting Environment brings scripting languages to Android.
http://developer.motorola.com/… - Motorola Developer Studio
http://eclipse.org/ - Eclipse, open development platform
http://developer.android.com/s… - Google Android SDK
http://androidforums.ru/ - русское сообщество ОС Android. Форум по Android
http://www.quattrowireless.com… и http://www.smaato.com/ - размещение рекламы на мобильных устройствах
http://slideme.org/ - альтернативный распространитель ПО

Вдогонку: http://sites.google.com/site/o… - пишем Hello World.

Thursday

Gvim editor new tips



da< - Delete the HTML tag the cursor is currently inside of the whole tag, regardless of just where the cursor is.
ci" -Change the content of a doublequote-delimited string.

da[ - Delete the [] region around your cursor
vi' - Visual select everything inside '' string
ya( - Yank all text from ( to )

See :help text-objects.

:e! - Reopen the current file, getting rid of any unsaved changes
gg=G - AMAZING If you're coding, gg will bring you to the top of the file, and =G will auto indent (=) everything to the bottom of the file (G)
gq - reset the entire selection to be wrapped correctly.
=% - Indents the block between two braces/#ifdefs
== - Indents current line
d% - delete till parrent - cursor can be not on opening tag
ft - move to the next occurrence of t and
tt - to move to the char before t

Macros are stored in registers, these are the same registers that can be used
for copy paste. So say you record a macro to register q you can paste it into a
document with "qp, edit it, then select it and cut it back into the register
with "qd.




more...

ГК стадии

стадии
0 - реклама. Для вас ничего не поменяется.
I - LC. Для вас ничего не меняется, кроме возможности продления H-1 за пределы 6 лет.
II - I-140 - Аналогично но начинаете указывать им намерения в анкете ну и по прежнему можете продлевать H-1. Если 140 аппрувлена но категория EB-3 (бакалавр) то продлевать можете сразу на 3 года за пределы 6-ти лет
III - I-485 (+ AP + EAD) - получаете нормальный документ для выезда (AP) и нормальный документ для внутренних нужд (EAD). Жена и дети получают возможность работать и иметь SSN.
III + 6 месяцев - можно менять работу.
ГК - не нужно больше суетиться и дети могут получать федеральную помошь на учебу и федеральные кредиты на учебу.

Если категория визы EB-2 или EB-1 то стадии II и III файлятся (все еще?) одновременно. Если EB-3 то между ними будет года 3 ожидания (все у того же работодателя и на визе).


Все правильно кроме, пожалуй, последнего. Время между непредсказуемо в случае Еб-3 - сейчас срок 7 лет исходя из бюллетеня, данные УСЦИС неполные и противоречивые, бэклог они посчитать не могут.


Дело в том, что начиная с 2006 года примерно поток EB-3 резко иссяк. И движение по оным годам будет очень нелинейным. Хотя... полный срок плавал от 2 до 5-ти лет, исходя из этого - срок по EB-3 вряд ли уедет за больше 6 - 7 лет (причем этот срок считается с подачи LC а не с подачи I-140, то есть если сейчас начнут, то и срок начнет отсчитываться), и вряд ли станет меньше 2 - 3 лет (сразу толпы набегут)...


Wednesday

Gvim editor tutorial: moving back trough changes


The changelist remembers the position of every change that can be undone.
You can move back and forwards through the changelist using the commands:
g;
g,


You can view the contents of the changelist by running the command:
:changes

Vim also maintains a jumplist,
remembering each position to which the cursor jumped, rather than scrolled.
You can move backwards and forwards through the jumplist with the commands:

ctrl-O
ctrl-I

You can view the contents of the jumplist by issuing the command:
:jumps

you can follow the keyword under the cursor with the command (ctags required):
ctrl-]

see also:
* :help changelist
* :help :changes
* :help jumplist
* :help :jumps
* :help jump-motions

more...

Friday

Visual Studio Mercurial,GIT,SVN links

Mercurial:
* free hosting : http://mercurial.selenic.com/wiki/MercurialHosting
* VisualHG: a plugin for Visual Studio: http://sharesource.org/project/visualhg/
* Windows Explorer client: http://tortoisehg.bitbucket.org/
GIT:

* Free hosting: http://git.wiki.kernel.org/index.php/GitHosting
* GitExtensions: a Visual Studio plugin http://code.google.com/p/gitextensions
* Windows Explorer client: http://code.google.com/p/tortoisegit/
SVN:

* VisualSVN server FREE installer: http://www.visualsvn.com/server/
* AnkhSVN plugin for Visual Studio: http://ankhsvn.open.collab.net/
* Windows Explorer client: http://tortoisesvn.tigris.org/

more...

Wednesday

How can I make yes/no questions is a batch file?


mplayer.exe -cache 1024 -speed 1.66 %1
SET /P ANSWER=Do you want to delete %1 file (Y/N)?
echo You chose: %ANSWER%
if /i {%ANSWER%}=={y} (goto :yes)
if /i {%ANSWER%}=={yes} (goto :yes)
goto :no
:yes
rm -f %1
exit /b 0
:no
echo file wasn't deleted
exit /b 1

more...

EventHandler event in usercontrol

First, we create a new, simple EventUserControl, with this code in it:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="EventUserControl.ascx.cs" Inherits="EventUserControl" %>

Page title:
<asp:TextBox runat="server" ID="txtPageTitle" />
<asp:Button runat="server" ID="btnUpdatePageTitle" OnClick="btnUpdatePageTitle_Click" Text="Update" />


All just text and server controls that we know. In the CodeBehind, it looks a bit like this:
public partial class EventUserControl : System.Web.UI.UserControl
{
private string pageTitle;
public event EventHandler PageTitleUpdated;

protected void btnUpdatePageTitle_Click(object sender, EventArgs e)
{
this.pageTitle = txtPageTitle.Text;
if(PageTitleUpdated != null)
PageTitleUpdated(
this, EventArgs.Empty);
}

public string PageTitle
{
get { return pageTitle; }
}
}



We have defined a pageTitle container variable and a property for it. Then we have a new thing, an event. As you can see, it's defined much like any other kind of field, but it is a bit different. The theory about is explained in the C# tutorial, so we won't get into that here.
In the Click event of our button, we set the pageTitle field. Then we check if PageTitleUpdated, our event, is null. If it's not, it means that we have subscribed to this event somewhere, and in that case, we send a notification by calling the PageTitleUpdated as a method. As parameters, we send this (a reference to the UserControl it self) as the sender, and an empty EventArgs parameter. This will make sure that all subscribers are notified that the pageTitle has just been updated.

Now, in our page, I've declared our UserControl like this:
<%@ Register TagPrefix="My" TagName="EventUserControl" Src="~/EventUserControl.ascx" %>


And inserted it like this:
<My:EventUserControl runat="server" ID="MyEventUserControl" OnPageTitleUpdated="MyEventUserControl_PageTitleUpdated" />

As you can see, we have defined an event handler for the PageTitleUpdated event like if it was any other server control. In the CodeBehind of our page, we define the simple event handler for the UserControl event like this:
protected void MyEventUserControl_PageTitleUpdated(object sender, EventArgs e)
{
this.Title = MyEventUserControl.PageTitle;
}





more...

Tuesday

use editor to type text into firefox

there is Firefox add-on that allows to exit to type text in your favorite editor and then move to browser:
It's All Text!
more...

Friday

howto create and call json webservice in asp.net example

1.Add to webservice method this tag System.Web.Script.Services.ScriptService(),
so it will be looking like this:

Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.Web.Script.Services
Imports WebControlLibrary
Imports Ubill.Business
Imports System.ComponentModel

<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> <System.Web.Script.Services.ScriptService()> _
Public Class AtlasHub
Inherits System.Web.Services.WebService


<WebMethod(True)> _
Public Function AdvanceCustomerDelete(ByVal CustomerID As String) As String
Return cachefactory.AdvanceCustomerDelete(CustomerID)
End Function

End Class




2.On aspx page add this script manager binding :

<asp:ScriptManager runat="server" ID="scriptManagerId">
<Scripts>
<asp:ScriptReference Path="~/common/AtlasHub.js" />
</Scripts>
<Services>
<asp:ServiceReference Path="~/common/AtlasHub.asmx " />
</Services>
</asp:ScriptManager>



3.AtlasHub.js is javascript file those contains maintenance functions:


// Business functions
// // -------------------------------------------
function AdvanceCustomerDelete( customerID , onSuccessAdvanceCustomerDelete){
YouBillWeb.AtlasHub.AdvanceCustomerDelete(customerID,onSuccessAdvanceCustomerDelete,onTimeOut,onFailed);
}

// Maintenance functions
// -------------------------------------------
// This is the callback function invoked if the Web service
// succeeded.
// It accepts the result object, the user context, and the
// calling method name as parameters.
function OnSucceededWithContext(result, userContext, methodName)
{
var output;

// Page element to display feedback.
var RsltElem = document.getElementById("ResultId");

var readResult;
if (userContext == "XmlDocument")
{

if (document.all)
readResult =
result.documentElement.firstChild.text;
else
// Firefox
readResult =
result.documentElement.firstChild.textContent;

RsltElem.innerHTML = "XmlDocument content: " + readResult;
}

}

// This is the callback function invoked if the Web service
// succeeded.
// It accepts the result object as a parameter.
function onSuccess(result, eventArgs)
{
// Page element to display feedback.
var RsltElem = document.getElementById("ResultId");
RsltElem.innerHTML = result;
}

function OnSucceeded(result, eventArgs)
{
// Page element to display feedback.
var RsltElem = document.getElementById("ResultId");
RsltElem.innerHTML = result;
}


// This is the callback function invoked if the Web service
// failed.
// It accepts the error object as a parameter.
function onFailed(error)
{
// Display the error.
var RsltElem = document.getElementById("ResultId");
RsltElem.innerHTML =
"Service Error: " + error.get_message();
}

function onTimeOut(error)
{
// Display the error.
var RsltElem = document.getElementById("ResultId");
RsltElem.innerHTML =
"Service Error: " + error.get_message();
}

if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();

more...

Tuesday

no-ip script in python

change username/password/host in this script below

import urllib
import time
import sys
import string

f = urllib.urlopen('http://my-user-name:-mypass@dynupdate.no-ip.com/nic/update?hostname=myhost.no-ip.org')
sug = f.read()
f.close()
print sug

here are additional on no-ip API documentation:
request sample

protocol description

response codes

more...

Saturday

ssl certificate sec_error_untrusted_issuer

I had problem with the expired or not valid certificates in almost all application on my computer: Firefox, pidgin, Internet Explorer.
The cause was : date on my computer was set wrong and it thought I was years in the past!
Once I fixed the date and time, all of these problems vanished.

more...

Wednesday

how to show hide div in asp.net

1.add this javascript function:


<script type="text/javascript">
function showHideExcel(){
thisElement=document.getElementById('overlayExcel')
if (!thisElement) return;
if(thisElement.style.visibility == "visible"){
thisElement.style.visibility = "hidden";
}else {
thisElement.style.visibility = "visible";
}
}
</script>



2.add this div to asp.net code


<div id="overlayExcel" name="overlayExcel" style="visibility:hidden;position:absolute; top: 120px; left: 900px;background-color:white;display:block;">
<div style="padding: 3px; background-color: #CCCCCC; border: 1px solid #666666;">
<table border="0" border="0" cellspacing="0" cellpadding="0" >
<tr><td height="30">Start Date:&nbsp;</td> <td><asp:TextBox ID="txtExcelStartDate" runat="server" /></td></tr>
<tr><td height="30">End Date:&nbsp;</td> <td><asp:TextBox ID="txtExcelEndDate" runat="server" /><br></td></tr>
<tr><td height="30" colspan="2"><asp:Button ID="btnExcelMe" runat="server" Text="Open Excel Report" OnClick="OpenExcelReport" />
<input type=button value="Cancel" onclick="showHideExcel();"></td>
</tr>
</table>
</div>
</div>



that's it.
more...

Friday

very nice and free music for running or training on eclipse

I gave up on running for several times , recently discovered very good music for running.
Actually this music is free and keep me running all time.
It sorted by bits per secod,for.ex. 153BPM just right for me.

check this out http://djsteveboy.com/podrunner.html

more...

Tuesday

sql split string


DECLARE @t VARCHAR(50)
SET @t = '3333-4'
SELECT LEFT(@t, CHARINDEX('-', @t) - 1), RIGHT(@t, LEN(@t) - CHARINDEX('-', @t))

more...

how to configure VB6 works with TFS:

Read
download


more...

copy odbc from one computer to another


1.if this i user odbc run regedit.exe and export this folder into .reg file.
HKEY_CURRENT_USER\Software\ODBC
2.copy .reg file on target machine and double click on .reg file to add all keys to registry.

If they are System DSN odbc you have to do the same operations for
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC
registry folder.

more...

Wednesday

Derive Collection class:Override Add,Insert,Remove methods

These methods are not overridable,
will be more correctly to override InsertItem,RemoveItem methods, they will be called from other methods Add,Insert,Remove , etc

using System.Collections.ObjectModel;
using System.Diagnostics;
using System;
namespace CollectionTest
{
class Program
{
static void Main(string[] args)
{
Debug.Write("MAIN");
LimitedCollection<String> col = new LimitedCollection<String>();
col.Add("hello");
col.Insert(0,"hello");

}
}
public class LimitedCollection<T> : Collection<T>
{
protected override void InsertItem(int index, T item)
{
base.InsertItem(index, item);
Debug.Write("InsertItem called");
}
}
}

more...

Tuesday

How to create Setup project for Windows Service

How to create a Setup project for a Windows Service in Visual Basic .NET or in Visual Basic 2005
Create a Setup project for a Windows Service
This section describes how to create a Windows Service project and how to use a compiled Setup project to install the Windows Service.
Create a Windows Service project

1. Click Start, point to Programs, point to Microsoft Visual Studio .NET or Microsoft Visual Studio 2005, and then click Microsoft Visual Studio .NET or Microsoft Visual Studio 2005.
2. On the File menu, point to New, and then click Project.
3. In the New Project dialog box, follow these steps:
1. Under Project Types, click Visual Basic Projects or click Windows under Visual Basic.
2. Under Templates, click Windows Service.
3. In the Name box, type LogWriterService.
4. In the Location box, type C:\, and then click OK.
4. In Solution Explorer, right-click Service1.vb, and then click View Code.
5. In the OnStart event handler, replace the comments with the following code.

EventLog.WriteEntry("My simple service started.")

6. In Solution Explorer, double-click Service1.vb.
7. In the Properties dialog box, click Add Installer.
8. In the Properties dialog box for ServiceInstaller1, change the ServiceName property to LogWriterService.
9. In Design view, click ServiceProcessInstaller1 in the Code Editor.
10. In the Properties dialog box, change the Account property to LocalSystem. The LocalService value and the NetworkService value are only available in Microsoft Windows XP and later operating systems.

Use a compiled Setup project to install the Windows Service
After you complete the steps in the "Create a Windows Service project" section to configure the Windows Service project, you can add a deployment project that packages the service application so that the service application can be installed. To do this, follow these steps:

1. Add a new project to your LogWriterService project.
1. In Solution Explorer, right-click Solution 'LogWriterService', point to Add, and then click New Project.
2. Under Project Types, click Setup and Deployment Projects or Setup and Deployment.
3. Under Templates, click Setup Project.
4. In the Name box, type ServiceSetup.
5. In the Location box, type C:\, and then click OK.
2. Tell the deployment project what the deployment project will package.
1. In Solution Explorer, right-click ServiceSetup, point to Add, and then click Project Output.
2. In the Add Project Output Group dialog box, click LogWriterService in the Project box.
3. Click Primary Output, and then click OK.
3. For correct installation, you have to add only primary output. To add the custom actions, follow these steps:
1. In Solution Explorer, right-click ServiceSetup, point to View, and then click Custom Actions.
2. Right-click Custom Actions, and then click Add Custom Action.
3. Click Application Folder, and then click OK.
4. Click Primary output from LogWriterService (Active), and then click OK. Notice that Primary output appears under Install, Commit, Rollback and Uninstall.
4. By default, Setup projects are not included in the build configuration. To build the solution, follow these steps:
1. Use one of the following methods:
* Right-click LogWriterService, and then click Build. Then, right-click ServiceSetup, and then click Build.
* To build the whole solution at the same time, click Configuration Manager on the Build menu, and then click to select the Build check box for ServiceSetup.
2. Press CTRL+SHIFT+B to build the whole solution. When the solution is built, you have a complete Setup package for the service.
5. To install the service, right-click ServiceSetup, and then click Install.
6. In the ServiceSetup dialog box, click Next three times. Notice that a progress bar appears while the Setup program is installing the service.
7. When the service is installed, click Close.


Thursday

tinyget call samples

Invoking the page for 4000 times.

tinyget -srv:localhost -uri:/BuggyBits/Links.aspx -loop:4000

Invoking the page on 30 threads, 50 times each.

tinyget -srv:localhost -uri:/BuggyBits/FeaturedProducts.aspx -threads:30 -loop:50

Wednesday

To try find out asp.net performance leak/locks or why my .net app is slow on multiple requests :) ?


1.take memory dump and load it in windbg with "sos" as described here.
Then you can load sos commands .cmdtree c:\debuggers\cmdtree.txt
3.Evaluate clr stacks for all threads by ~* e !clrstack
or by selecting Stacs/All managed Stacks from Sos Commands menu window.
as result you will see call stack lists,similar stacks like for memory dump.
4.Look for System.Threading.Monitor.Enter or System.Threading.Monitor.Exit in page load stacks , that might indicate that static object is using
that might cause slow performance for multiple requests.

5.to monitor sysncBlock use !syncblk commad
it will show who owns the lock and how many people waiting for it in "MonitorHeld" column.

"Info" column will - contains thread number [thr] that locking, use this commands:
~[thr]s
!clrstack
to display locking stack and which give you a chance to locate which procedure holding it.

also debugging and preview of dump files will be available in Visual studio 2010.

more...

How to find memory leak in .net application:


1.Create dump file of application process in windows , you can use this tool

DebugDiag (free tool from Microsoft)
Open it, go to "process" tab and select "create dump file"
2. Download and install
windbg
Start windbg and drag dump file there.
3.if it's dot.net you have to load sos extension , in windbg command line , type:
.loadby sos mscorwks
4.then !dumpheap -stat you will get list of all .Net objects in memory/dump
if you want to get specific instances , you can hit:
!dumpheap -mt [addr] - where [addr] is addr from left column in windbg
you will receive list of objects loaded into memory , by dump out do objects:
!do [addr] you will dump specific objects with it's properties.
when you do !do [addr] when [addr] of specific property you will get particular value of that property.
5.if you dumped web-application and see aspx pages this is not good.
you can get static objects by this command (it will show links on cache objects as well):
!gcroot [addr] where [addr] -- address of page in memory

As alternative you can use different analysis from [Analysis] tab in DebugDiag.
Memory Analysis gives a nice report.

Friday

micosoft sql server SHRINKFILE command:

first find file_name by:
select * from sys.database_files
then:
DBCC SHRINKFILE (mydb_log, 1000) WITH NO_INFOMSGS

Thursday

C#:ActiveDirectory : Check User cannot change password

in project add COM reference to "Active DS Type Library" COM library v1.0
usually located in C:\WINDOWS\system32\activeds.tlb.


using ActiveDs;
public void CheckUserCanChangePasswordsProperty()
{
DirectoryEntry de = GetDirectoryObject(UserName);
string PASSWORD_GUID = "{ab721a53-1e2f-11d0-9819-00aa0040529b}";
string[] trustees = { "NT AUTHORITY\\SELF", "EVERYONE" };


ActiveDs.IADsSecurityDescriptor sd =
(ActiveDs.IADsSecurityDescriptor)de.Properties["ntSecurityDescriptor"].Value;
ActiveDs.IADsAccessControlList acl = (ActiveDs.IADsAccessControlList)sd.DiscretionaryAcl;
ActiveDs.AccessControlEntry ace = new ActiveDs.AccessControlEntry();


double denied = (double)ActiveDs.ADS_ACETYPE_ENUM.ADS_ACETYPE_ACCESS_DENIED_OBJECT;
double objectType = (double)ActiveDs.ADS_FLAGTYPE_ENUM.ADS_FLAG_OBJECT_TYPE_PRESENT;
double dsControl = (double)ActiveDs.ADS_RIGHTS_ENUM.ADS_RIGHT_DS_CONTROL_ACCESS;

foreach (string trustee in trustees)
{
ace.Trustee = trustee;
ace.AceFlags = 0;
ace.AceType = Convert.ToInt32(Math.Floor(denied));
ace.Flags = Convert.ToInt32(Math.Floor(objectType));
ace.ObjectType = PASSWORD_GUID;
ace.AccessMask = Convert.ToInt32(Math.Floor(dsControl));

acl.AddAce(ace);
}
sd.DiscretionaryAcl = acl;
de.Properties["ntSecurityDescriptor"].Value = sd;

de.CommitChanges();
}

more...

C#:Active Directory:Uncheck User cannot change password


public void SetUserCanChangePasswordsPropertyUncheck()
{
DirectoryEntry de = GetDirectoryObject(UserName);
string PASSWORD_GUID = "{ab721a53-1e2f-11d0-9819-00aa0040529b}";
ActiveDs.IADsSecurityDescriptor sd =
(ActiveDs.IADsSecurityDescriptor)de.Properties["ntSecurityDescriptor"].Value;
ActiveDs.IADsAccessControlList acl = (ActiveDs.IADsAccessControlList)sd.DiscretionaryAcl;
//ActiveDs.AccessControlEntry ace = new ActiveDs.AccessControlEntry();
ActiveDs.ADS_ACETYPE_ENUM aceType;

//look for existing ace and get rid of
foreach (ActiveDs.AccessControlEntry ace in acl)
{
if (!(ace.ObjectType == null) && ace.ObjectType.ToLower() == PASSWORD_GUID)
{
if (ace.Trustee == "Everyone")
{
acl.RemoveAce(ace);
de.CommitChanges();
}
else if (ace.Trustee == "NT AUTHORITY\\SELF")
{
acl.RemoveAce(ace);
de.CommitChanges();
}
}
}

//now put in the one we want
sd.DiscretionaryAcl = acl;
de.Properties["ntSecurityDescriptor"].Value = sd;
de.CommitChanges();
}

more...

C#:Active Directory:Check/Uncheck Password never expires


public void SetPasswordNeverExpiresProperty(bool PasswordNeverExpires)
{
DirectoryEntry de = GetDirectoryObject(UserName);
if (PasswordNeverExpires)
{
ActiveDirectoryHelper.SetProperty(de, "userAccountControl",
(int)de.Properties["userAccountControl"].Value | 0x10000);
}
else
{
ActiveDirectoryHelper.SetProperty(de, "userAccountControl",
(int)de.Properties["userAccountControl"].Value ^ 0x10000);
}
de.CommitChanges();
}

more...

C#:Active Directory:Check/Uncheck User must change password at next logon



public void SetuserHasToChangePasswordsInTheNextLoginProperty(bool userHasToChangePasswordsInTheNextLogin)
{
DirectoryEntry de = GetDirectoryObject(UserName);
if (userHasToChangePasswordsInTheNextLogin)
{
ActiveDirectoryHelper.SetProperty(de, "pwdLastSet", 0);
}
else
{
ActiveDirectoryHelper.SetProperty(de, "pwdLastSet", -1);
}
de.CommitChanges();
}

more...

treeview .net control style



<table> <tr> <td style="border: solid 1px;">
<div style="overflow:scroll;height:200px">
<asp:TreeView PopulateNodesFromClient = "true" EnableClientScript = "true"
ID="WebTreeView1" runat="server" ShowCheckBoxes="Leaf" Width="100%"
NodeStyle-ForeColor="DarkBlue"
NodeStyle-Font-Names="Verdana"
NodeStyle-Font-Size="8pt"
NodeStyle-HorizontalPadding="5"
NodeStyle-VerticalPadding="0"
NodeStyle-BorderColor="#FFFFFF"
NodeStyle-BorderStyle="solid"
NodeStyle-BorderWidth="0px"
RootNodeStyle-Font-Bold="true"
SelectedNodeStyle-BackColor="#cccccc"
SelectedNodeStyle-BorderColor="#888888"
SelectedNodeStyle-BorderStyle="solid"
SelectedNodeStyle-BorderWidth="0px"
ShowLines="True"
NodeIndent="15"
ExpandDepth="1"
PathSeparator="|"
>
</asp:TreeView>
</div>
</td></tr></table>

more...

asp.net treeview load expanded and keep selection

 

TreeNode newNode = new TreeNode();
string title=string.Format("{0};{1};{2};{3}", row["Field1"], row["Field2"], row["Field3"], row["Field4"]);
newNode.Text=string.Format("<input type='hidden' value='{0}'><span title='{0}' onclick='return false;'>{1}</span>;",title,Bezeichnung);
string val=string.Format("{0}",row["NameGroupID"]);
newNode.Value =val;
newNode.Checked=stored.Contains(val);
newNode.Expand();
ProduktbereichNode.ChildNodes.Add(newNode);

more...

asp.net treeview javascript search

Backward search:
 

function SearchBack(tv_id,str)
{
var tree = document.getElementById(tv_id);
var treeLinks = tree.getElementsByTagName('A');
eval(' var sel_name = '+tv_id+'_Data.selectedNodeID.value;');
var elem;
var sel_passed=0;
for(var element in treeLinks )
{
var sub1=treeLinks[element].firstChild;

if (sel_name && treeLinks[element].id==sel_name) {
sel_passed =1;
if (!sel_name || sel_passed==1) break;
}
if (sub1 && (''+sub1.value).indexOf(str) >=0)
{
//log("found"+treeLinks[element].id);
elem=treeLinks[element];
}
}

if (elem) {
eval('TreeView_SelectNode('+tv_id+'_Data,elem,"'+elem.id+'");');
elem.focus();
}else{
alert('Not found');
}
}


Forward search:
 

function SearchForward(tv_id,str)
{
var tree = document.getElementById(tv_id);
var treeLinks = tree.getElementsByTagName('A');
eval(' var sel_name = '+tv_id+'_Data.selectedNodeID.value;');
var elem;
var sel_passed=0;
for(var element in treeLinks)
{
var sub1=treeLinks[element].firstChild;
if (sub1 && (''+sub1.value).indexOf(str) >=0)
{
//log("found"+treeLinks[element].id);
elem=treeLinks[element];
if (!sel_name || sel_passed==1) break;
}

if (sel_name && treeLinks[element].id==sel_name) {
sel_passed =1;
}
}
if (elem) {
eval('TreeView_SelectNode('+tv_id+'_Data,elem,"'+elem.id+'");');
elem.focus();
} else{
alert('Not found');
}


}

Saturday

Add Winmerge to TortoiseHg as default merge tool

1.Right mouse click on repository, select TortoiseHg >> Global setting
2.in Open Dialog select "User Global Setting" and Click "Edit"
3.Add these two lines at end of file :

[extdiff]
cmd.winmerge = C:\Program Files\WinMerge\WinMerge.exe
opts.winmerge = /e /x /ub /wl

4.Now run the Global Settings tool. On the TortoiseHg tab, you should see winmerge available
in the drop-down list for Visual Diff Command. Select winmerge, apply, then close.


more...

display DDR type memory (RAM) installed free utility

to find out which type of memory installed you can use this free utility:
1.download CPUZ from >here
2.Run and open memory tab :

listen podcast audio book faster (timesaving tip) with mplayer

First download mplayer player from http://www.mplayerhq.hu/design7/dload.html


mplayer.exe -cache 1024 -speed 1.77 %1\*.*


Other Mplayer command line samples

play shuffle-music from directory


mplayer.exe -cache 1024 -shuffle %1\*.*


Play shuffle winamp/text file list


mplayer.exe -cache 1024 -shuffle -playlist %1

more...

Tuesday

DateTime to string with milliseconds


string resTime = DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss:ffff");
Console.WriteLine(resTime);

more...

Wednesday

C# linq transfer data between linq object and business layer object sample

public class myClass
{
public int RecordID { get; set; }
public string Field1 { get; set; }
}

public void GetDataAndCallBusinessMethod()
{
using (DBDataContext db = new DBDataContext)
{
IEnumerable<myClass> Recs =
from tab in db.table
select new myClass
{
RecordID = tab.RecordID,
Field1 = tab.Field1
};
BusinessLayer.Businessmethod(Recs);
}
}

Monday

c# initialize new hashtable

Hashtable ht = new Hashtable() {
{"key1", "value1"},
{"key2", "value2"}
};

Thursday

C# example:how to get version/created time of assembly

1, We need function like this :
  public string GetServerInfo(Assembly _assembly)
{
StringBuilder r = new StringBuilder();
try
{
r.AppendLine("Version:" + _assembly.GetName().Version.ToString());
r.Append("Build: " + System.IO.File.GetLastWriteTime(_assembly.Location).ToString("dd/MM/yyyy HH:mm"));
}
catch (Exception ex)
{
Logger.prn(ex);
}
return r.ToString();
}


Then we can call it like this :

Assembly _assembly = Assembly.GetExecutingAssembly();
string info= GetServerInfo(_assembly);

Sunday

mysql how to select records with unicode characters

following select returning these records:
SELECT * FROM candidate WHERE CHAR_LENGTH(first_name)<>LENGTH(first_name);


mysql and php to fix character encoding

*  call mb_internal_encoding("UTF-8") at the head of my PHP scripts
*  MySQL tables all have DEFAULT CHARSET=utf8  > COLLATE=utf8_unicode_ci
*  call mysql_set_charset('utf8') immediately after I connect to the  DB with mysql_connect().
*  call header('Content-Type: text/html; charset=utf-8') before  outputting anything to the browser.
*  specify <meta http-equiv="Content-Type" content="text/html;  charset=utf-8"/> in the HEAD of my HTML.
*  FORM tags all have accept-charset="UTF-8".



Friday

vim commands

:g/search-string/norm @h  
runs a macro recorded in h for every match of search-string

Vim-style movement:
'h' 'j' 'k' 'l' for movement (Up, Down, Left, Right)
'gg' End
'G' Home
'0' Beginning of line
'$' End of Line
'H' Top of the Screen
'M' Middle of the screen
'L' Bottom of the screen

windows using
:split command or the ^w commands:

^wn - new window

^ws - horizontal split

^wv - vertical split

^wr - rotate windows

^ww/^wW - move to the next/previous window

^w= - make all windows equal size

^wc - close the active window




Tuesday

Load controls in asp.net dynamically

1.Add placeholder to .aspx
<asp:Panel ID="PlaceHolderPanel" runat="server">
</asp:Panel>

2. add control loading code to codebehind :
string AlreadyLoaded=null;
private void loadControl(string ctr){
if (!string.IsNullOrEmpty(ctr) && AlreadyLoaded!=ctr ) {
Control ctrl = LoadControl(ctr);
ctrl.ID="ctr1";
PlaceHolderPanel.Controls.Clear();
PlaceHolderPanel.Controls.Add(ctrl);
ControlName = ctr;
AlreadyLoaded=ctr;
}

}

protected void Page_Load(object sender, EventArgs e){
loadControl("~/Controls/mycontrol.ascx");
}


There are limitations for loaded controls , one of them using onPreRender rather then Page_load:

// 1.call all functions in prerender only
protected override void OnPreRender(EventArgs e){
SetFilterValues();
Bind();
base.OnPreRender(e);
}

Saturday

C# how to use iterator


// create iterator method

public IEnumerable<decimal?> BucketIterator(Accounts_basic a ) {
int cycle = 0;
for (int i=7 ; i > 0 ; i--){

switch (i) {
case 1:yield return a.dd_15;break;

case 2 :yield return a.dd_30; break;

case 3:yield return a.dd_60; break;

case 4:yield return a.dd_90; break;

case 5 :yield return a.dd_120; break;

case 6:yield return a.dd_150; break;

case 7:yield return a.dd_180; break;

default : yield break;

}

}



// use iterator method as follows
foreach (decimal? amount in BucketIterator(accounts_basic)) {
// use amount here
}

Stored User Names and Passwords

to retrieve a list of Stored User Names and Passwords do:
C:>rundll32.exe keymgr.dll, KRShowKeyMgr

Windows can store your logon information for network locations and Web sites. To add an entry, click Add. To edit an existing entry, select it, and then click Properties.


is already mapped in workspace or removing other's working space

The path C:\Projects is already mapped in workspace PC123;DOMAIN\USER

tf workspaces /computer:PC123 /owner:* /format:detailed

And – sure enough, it looks like there’s another workspace for a different user profile – with the same PC name (PC123).
tf workspaces /computer:PC123 /owner:* /format:detailed /server:http://tfs:8080
================================
Workspace: PC123
Owner : *ME*
Computer : PC123
Comment :
Server : tfs.domain
Working folders:
====================================
Workspace: PC123
Owner : *SOMEONE-ELSE*
Computer : PC123
Comment :
Server : tfs.domain

Working folders:
$/AAA: C:\Projects
$/AAA/BBB/CCC: C:\Projects\AAA\BBB\CCC
Not sure how/why this has happened – perhaps a duplicate PC-NAME ?

Anyway – here’s the command to REMOVE the baaad workspace – clear it out all and start again.

tf workspace /delete PC123;other-user /server:http://tfs:8080
A deleted workspace cannot be recovered.
Workspace ‘PC123′ on server ‘http://tfs.8080′ has 0 pending change(s).
Are you sure you want to delete the workspace? (Yes/No) Y



Friday

vim commands

:e . Открыть встроенный файл-менеджер
:Sex Разбить окно и открыть встроенный файл менеджер
:browse e Графический файл-менеджер
:ls Список буферов
:cd .. Перейти в родительскую директорию
:args Список открытых файлов

Tuesday

Web Service set amount of Concurrent Connections

add this to web.config file:

<system.net>
<connectionManagement>
<addaddress="*"maxconnection="40"/>
</connectionManagement>
</system.net>

Friday

locked file, how to release file in use

To find out which application is using a file in Windows and to release/delete/remove/overwrite file do following:
use processexplorer and search the handles (Menu/Find/Find Handle (Crtls+F))for the file you want.
This way you can easily find which process is having a handle to your file.
Then do right click + 'Close Handle' to release locked file.

Wednesday

try catch python: error handling in python

simple error handling in python:

try:
.... your code here ....
except Exception, e:
print "Error",i,e

Sunday

List sorting by SQL ASC/DESC Extender



using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Reflection;
using System.Collections.Generic;
using System.Linq.Expressions;

public static class Extenders
{
public static List<T> Sort<T>(this List<T> source, string sortExpression)
{
string[] sortParts = sortExpression.Split(' ');
var param = Expression.Parameter(typeof(T), string.Empty);
try
{
var property = Expression.Property(param, sortParts[0]);
var sortLambda = Expression.Lambda<Func<T, object>>(Expression.Convert(property, typeof(object)), param);

if (sortParts.Length > 1 && sortParts[1].Equals("desc", StringComparison.OrdinalIgnoreCase))
{
return source.AsQueryable<T>().OrderByDescending<T, object>(sortLambda).ToList<T>();
}
return source.AsQueryable<T>().OrderBy<T, object>(sortLambda).ToList<T>();
}
catch (ArgumentException)
{
return source;
}
}
}

linq select into class list

let's say we have following class:

public class GridCell {
public string page_name{get;set;}
public string link_code { get; set; }
public int page_state { get; set; }
public int landing_pages_id { get; set; }

}

and want to create list of these classes , to bind them to grid for example :
LandingPagesDataContext lpdc = new LandingPagesDataContext();
var query = from p in lpdc.landing_pages
select new { p.page_name, p.link_code, p.page_state, p.landing_pages_id };
bind(query.Select(p=>new GridCell{page_name = p.page_name, link_code = p.link_code, page_state = p.page_state, landing_pages_id = p.landing_pages_id }).ToList<GridCell>());

Wednesday

find lines from one file into another

How to find lines from one file into another ?
here is sample script showing lines from "find.txt" file those are into "findinto.txt"

common.py find.txt findinto.txt


import os
import re
import sys

fileHandle = open (sys.argv[1])
linesToPatch = fileHandle.readlines()
f = open(sys.argv[2])

for aline in f:
for rline in linesToPatch:
p=re.compile(rline.strip())
if p.search(aline.strip()):
print aline

Monday

SQL Next business Day Function


-- get next business day
-- assumption: first day of the week is Sunday
CREATE FUNCTION NextBusinessDay
(@date DATETIME)
RETURNS VARCHAR(12)
AS
BEGIN
DECLARE @date1 DATETIME,
@m INT
SELECT @date1 = @date, @m = 0
WHILE @m < 1
BEGIN
SET @date1 = DATEADD(DD,1,@date1)

/* ** the following line checks for non-business days (1 and 7)
** IF your business days are different, change the following line to
** comply with your schedule
*/
IF DATEPART(DW,@date1) NOT IN (1,7)
BEGIN
SET @m = @m + 1
END
END

RETURN CAST(@date1 AS VARCHAR(12))
END

JQuery Autocomplete plugin , nice and easy to implement


nice and easy to implement JQuery Autocomplete plugin

javascript:unescape/escape: decode/encode URL characters


<script type="text/javascript">
alert (unescape('Hello%20World'));
alert (escape('Hello World'));
</script>

Tuesday

Microsoft.AnalysisServices.AdomdClient.AdomdErrorResponseException

When trying to connect to Analysis Services 2005 I was getting this error:

Microsoft.AnalysisServices.AdomdClient.AdomdErrorResponseException: Either the user, NT
AUTHORITY\NETWORK SERVICE, does not have access to ...

I have solved this problem by :
1.logging with "Microsoft SQL Server Management Studion" to Analysis Server
2.expanded "Roles"
3.created new "admin" role with Administration priveleges
4.added "Network Service" as Member of this role.

Monday

return table from stored procedure

To return table from stored procedure:
declare value as table in sql and fill it from stored procedure by insert..execute like in this code below:

DECLARE @Accounts1 AS TABLE
(
customer NUMERIC(9, 0),
sub TINYINT,
tp1 VARCHAR(100)
)


insert into @Accounts1
execute usp_AccountDifferentialReportSelector @Did,@CycID

to get data from datasource declared in aspx


public bool OrderExists(int order_index) {
DataView dv1 = (DataView)CategoriesDataSource.Select(new DataSourceSelectArguments());
foreach( DataRow d in dv1.Table.Rows){
if ((int)d["order_index"] == order_index) {
gvMerchantCategoriesLabel.Text = "Update Not Successful, Order Index Already exists";
gvMerchantCategoriesLabel.Style.Add("color", "#FF0000");
return true;
}

}
return false;
}

C# find text in .net grid Rows


public bool OrderExists(int order_index)
{
foreach (GridViewRow r in gvMerchantCategories.Rows)
{
int ord1 = 0;
if (int.TryParse(r.Cells[2].Text, out ord1) && ord1 == order_index)
{
gvMerchantCategoriesLabel.Text = "Update Not Successful, Order Index Already exists";
gvMerchantCategoriesLabel.Style.Add("color", "#FF0000");
return true;
}
}

}

make ubuntu business casual

to make ubuntu business casual - make it black remove background: gsettings set org.gnome.desktop.background picture-options ...