public static class Serializer
{
public static string Serialize(object obj, Type type)
{
DataContractSerializer serializer = new DataContractSerializer(type);
string result = string.Empty;
using (MemoryStream stream = new MemoryStream())
{
serializer.WriteObject(stream, obj);
stream.Seek(0, SeekOrigin.Begin);
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, buffer.Length);
result = Encoding.Default.GetString(buffer);
}
return result;
}
public static object Deserialize(string xml, Type type)
{
DataContractSerializer serializer = new DataContractSerializer(type);
object result = new object();
using (MemoryStream stream = new MemoryStream())
{
byte[] buffer = Encoding.Default.GetBytes(xml);
stream.Write(buffer, 0, buffer.Length);
stream.Seek(0, SeekOrigin.Begin);
result = serializer.ReadObject(stream);
}
return result;
}
public static string GetType(string xml)
{
try
{
string name = System.Xml.Linq.XDocument.Parse(xml).Root.Name.ToString();
return name.Substring(name.IndexOf("}") + 1, name.Length - name.IndexOf("}") - 1);
}
catch { return string.Empty; }
}
}
Tagged: .net, C#, contract, data, serialize, serializer, xml 2 октября 2009
public static string GetClientIP()
{
MessageProperties properties = OperationContext.Current.IncomingMessageProperties;
RemoteEndpointMessageProperty endpoint = properties[RemoteEndpointMessageProperty.Name]
as RemoteEndpointMessageProperty;
return endpoint.Address;
}
30 сентября 2009
Зеркальное отражение контрола (в данном примере TextBox)
<Window x:Class="testVolvo.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="371" Width="498">
<Grid>
<TextBox Height="24" Margin="64,130,28,0" Name="textBox1"
VerticalAlignment="Top" Foreground="AliceBlue" Text="Show must go on!">
<TextBox.Background >
<RadialGradientBrush>
<GradientStop Color="Yellow" Offset="-0.1"/>
<GradientStop Color="WhiteSmoke" Offset="0.1"/>
<GradientStop Color="Green" Offset="1"/>
</RadialGradientBrush>
</TextBox.Background>
</TextBox>
<Rectangle Height="23" Margin="64,0,28,135" Name="rectangle1"
Stroke="Transparent" Opacity="0.4" VerticalAlignment="Bottom">
<Rectangle.Fill>
<VisualBrush Visual="{Binding ElementName=textBox1}"></VisualBrush>
</Rectangle.Fill>
<Rectangle.OpacityMask>
<LinearGradientBrush>
<GradientStop Color="Transparent" Offset="0"/>
<GradientStop Color="Yellow" Offset="0.1"/>
<GradientStop Color="Transparent" Offset="1"/>
</LinearGradientBrush>
</Rectangle.OpacityMask>
<Rectangle.RenderTransform>
<ScaleTransform ScaleY="-1"></ScaleTransform>
</Rectangle.RenderTransform>
</Rectangle>
</Grid>
</Window>
Результат:

Tagged: mirror, wpf, зеркальное, отражение, эффект 12 сентября 2009
Как оказалось весьма реально
Спасибо что есть библиотека по имени OscarLib, в которой организованы не просто обобщенные методы обращения к серверу аськи но и даже какое-то подобие ООП
В любом случае в виду количества проделанной за нас работы грех жаловаться. Простейший пример работы приведу ниже:
Шаг 1: Создание экземпляра
Session sess = new Session("463705186", "password"); //пишем ваш UIN и пароль к нему
sess.SetDefaultIdentification();
/* Далее просто подписываемся на входящие события */
sess.LoginCompleted += new LoginCompletedHandler(sess_LoginCompleted);
sess.Messages.MessageReceived += new MessageReceivedHandler(Messages_MessageReceived);
sess.LoginFailed += new LoginFailedHandler(sess_LoginFailed);
sess.WarningMessage += new WarningMessageHandler(sess_WarningMessage);
sess.ErrorMessage += new ErrorMessageHandler(sess_ErrorMessage);
sess.Messages.TypingNotification += new TypingNotificationEventHandler(Messages_TypingNotification);
sess.Statuses.UserStatusReceived += new UserStatusReceivedHandler(Statuses_UserStatusReceived);
sess.Searches.FindByEmailResults += new FindByEmailResultsHandler(Searches_FindByEmailResults);
Шаг 2: Подключение
private void button1_Click(object sender, System.EventArgs e)
{
Capabilities caps = Capabilities.SIMKopete | Capabilities.UTF8;
sess.ClientCapabilities = caps;
sess.Logon("login.icq.com", 5190);
sess.ActivateBuddyList();
}
Вот и все - мы подлюченны
Шаг 3: Посылаем сообщение
sess.Messages.SendMessage("4953456", "Приветик! :)");
Просто? Просто
Примерчик прилагается.. Поковыряем jabber теперь-ка)
Tagged: .net, buddy, C#, client, icq, jabber, oscarlib, sess, session, аська, бот, клиент, оскар 10 сентября 2009
Данный статический класс предназначен для удобного симметрического шифрования строки или массива байт:
///
/// Provides base functions for encrypting and decrypting data through the symmetric algorithm
///
public static class Cryptography
{
///
/// Encrypts data
///
/// Data for the encryption
/// Encryption key
/// Encrypted data
public static byte[] Encrypt(byte[] data, string password)
{
SymmetricAlgorithm sa = Rijndael.Create();
ICryptoTransform ct = sa.CreateEncryptor(
(new PasswordDeriveBytes(password, null)).GetBytes(16),
new byte[16]);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(data, 0, data.Length);
cs.FlushFinalBlock();
return ms.ToArray();
}
///
/// Encrypts data
///
/// Data for the encryption
/// Encryption key
/// Encrypted data
public static string Encrypt(string data, string password)
{
return Convert.ToBase64String(Encrypt(Encoding.UTF8.GetBytes(data), password));
}
///
/// Decrypts data
///
/// Data for the decryption
/// Decryption key
/// Decrypted data
static public byte[] Decrypt(byte[] data, string password)
{
BinaryReader br = new BinaryReader(InternalDecrypt(data, password));
return br.ReadBytes((int)br.BaseStream.Length);
}
///
/// Decrypts data
///
/// Data for the decryption
/// Decryption key
/// Decrypted data
static public string Decrypt(string data, string password)
{
CryptoStream cs = InternalDecrypt(Convert.FromBase64String(data), password);
StreamReader sr = new StreamReader(cs);
return sr.ReadToEnd();
}
static CryptoStream InternalDecrypt(byte[] data, string password)
{
SymmetricAlgorithm sa = Rijndael.Create();
ICryptoTransform ct = sa.CreateDecryptor(
(new PasswordDeriveBytes(password, null)).GetBytes(16),
new byte[16]);
MemoryStream ms = new MemoryStream(data);
return new CryptoStream(ms, ct, CryptoStreamMode.Read);
}
}
Tagged: cryptography, rijndael, symmetric, данных, симметричное, Шифрование 10 сентября 2009