Posts Tagged “c#”

qt sınavı yazısını yazınca aklıma geldi geçen hafta güzel bir örnek uygulama yazmıştım. linuxde qt ile direk v4l(video for linux) den data alıp gösteren bir uygulama. bunun benzeri bir örnek bulabilmiştim oda opencv kullanıyordu. opencv tam nedir ne iş yapar kurcalayasım yokdu. dedim bunu direk v4l ye bağlasam omasmı. ve sonuç :)

threadden direk GUI elemanına gösterim yaptığı için arada bir çatlayabiliyor. bide her kişinin kodu mıncıklaması lazım en boy verisi benim makinede çalışıyor başkalarında hata verdiği oldu :)

Comments Yorum Yok »

açtım vs.net 2008 i tıngır mıngır yazıyorum. basit bir monitoring servisi yazmaya uraşıom. bi exeyi izlicek işte kapanırsa geri açıcak mail atıcak falan. gel görki timer objemin tick i atmıyor. loga yazdırıom bişeler yok enable ediom yok aran aran buldum sonunda meğersem bu epey bilindik bir bug imiş

http://support.microsoft.com/kb/842793

diyorlarki eğer service yazıyorsanız System.Threading.Timer kullanın System.Timers.Timer. olaya bakki IDE de sürükle bırak yapınca türetilen timer kullanılmaması gerekenden :) ideyide kalaylattınız sabah sabah =)

Comments Yorum Yok »

serialize deserialize da anlatmadığım bişey var oda çıkan kodun arızası :) her otomatik sistemdeki olası ihtimali yüksek buglar gibi xsd dede bir bug var eğer alt nodelardan biri uzayabilir cinsdense xsd iki boyutlu array oluşturuyor ve bunu derserialize edemiyor çünkü gelen veri aslında bir boyutlu :)

aldığım hata

Unable to generate a temporary class (result=1).
error CS0030:

kodla anlatayim daha sağlıklı olucak.

private themeItemThemeSwatchesSwatch[][] themeSwatchesField;

diye bir field oluşturup buna bi properties le set get yapıodu ordada özel bi nane yok.

public static string SerializeToXmlString(object targetInstance)
{
string retVal = string.Empty;
TextWriter writer = new StringWriter();
XmlSerializer serializer = new XmlSerializer(targetInstance.GetType());
serializer.Serialize(writer, targetInstance);
retVal = writer.ToString();
return retVal;
}
public static object DeserializeFromXmlString(string objectXml, Type targetType)
{
object retVal = null;
XmlSerializer serializer = new XmlSerializer(targetType);
StringReader stringReader = new StringReader(objectXml);
XmlTextReader xmlReader = new XmlTextReader(stringReader);
retVal = serializer.Deserialize(xmlReader);
return retVal;
}

bu fonksiyonlardan geçiriyorum ve dalga çatlıo alt array e ulaşamıom meğer şöle olması gerekmiş:

private themeItemThemeSwatchesSwatch[] themeSwatchesField;

tek boyutlu array olunca mis gibi çalışdı. şimdi devamını yazmak lazım üşeniom…..

Comments Yorum Yok »

bu konular(serialize/deserialize) high level ortamların kullanmasını en çok sevdiğim şeyleridir. var olan bir objenizi pat die xml etmeye serialize. xml den geri obje yapmayada deserialize denir. dün bir rss okumam ondan bişeler yapasım var. normalde rss xml tabanlı bi data yapısı olduğundan xsl den geçirir cart diye html alırız. buraya kadar problem yok ama ya rss in içindeki item’larda

<namespace:name>gakguk</namespace:name>

gibi daha evvelden rss de olmayan veriler görürsek naparız. o zamanda xsl kullanılabilir ama aklımdaki işde gelen veriyle uğraşmak oraya bişe buraya bişeyler eklemek. bu durumda benim güzel bir parse ediciye ve object generator a  ihtiyacım var. bu iş için çook evvelden kullandığım xmlbeans var java ortamında. ki kraldır xml den xsd üretir ordanda gereken jarlara kadar hazırlar size projeye ekleyip fonksiyonları çağırmak kalır.

ortamımız .net  bunda da hazır bişey olmalıydı vardı neydi neydi neydi diye araken buldum (C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin) sonunda xsd die bir komut. bu komut aslında biz webservis eklediğimizde kod oluşturan tool. kendisi aynen xmlbeans deki inst2xsd gibi xml okuo xsd çıkarıo. xsd çıkıncada ordan c# veya vb.net generate edebilio işde argümanları /c:C# falan.

xsd xmlfile.xml

diyince xsd çıkıo hatta bu benim garip namespacelerle extend edilmiş rss de 3 tane xsd çıkarıo ortaya. ama devam ettiremiom. xsd den code çıkartırken aynı pathdeki diğer xsd leri bulamadığından şikayet edip patlıo. 2 3 saat uğraştım yok. elle xsd leri düzenledim yok. en sonunda xmlbeans den bakam dedim belki java dan c# a çevirrim. basit iş sonuçda string parse etmiyem die uğraşıom. xmlbeans de aynı hatayı vermezmi breh dedim.

bakınırken şöle bir komut denedim.

inst2xsdxmlfile.xsd xmlfile_app1.xsd xmlfile_app2.xsd

aha pat diye java kodu oldu. ya dedim lanet e topluca verince oluomuş. aynısını microsoft xsd içinde denedim ve oldu. ah ulen :) neyse demek oluyorki herşey otomatik olmuo otomatik şey içinde çok kurcalamak gerekebilio.

Comments 1 Yorum »

PBE password based encryption demek. bu ne demek şifreli şifreleme metodu. yani “abc” diye bi stringimiz var biz bunu şifrelemek istiyoruz ve kendimiza ait bi şifreyle bunu yapmak istiyoruz. mesele “123″ e göre şifrelencek. neyse daha önceki yazımda jasypt ve javasından bahsetmiştim. decrytpinide yaptım koyim bi yerde dursun dedim hoşuma gitti şukadarcık kod cirlop gibide çalışıo.

using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;

namespace StandardPBEStringEncryptor
{
public static class CryptoLib
{
public static string EncryptId(string ID)
{
string result = "";
ID = "abc" + ID + "xyz";
byte[] salt = new byte[8];

RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
rng.GetBytes(salt);

System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
PKCSKeyGenerator kp = new PKCSKeyGenerator();
ICryptoTransform crypt = kp.Generate(
"kunteper",
salt,
1000,
1);

byte[] sonuc = crypt.TransformFinalBlock(encoding.GetBytes(ID), 0, encoding.GetBytes(ID).Length);

foreach (byte item in salt)
{
result += item.ToString("X2");
}
foreach (byte item in sonuc)
{
result += item.ToString("X2");
}
return result;
}
public static byte[] fromHexadecimal(String message)
{
if (message == null)
{
return null;
}
if ((message.Length % 2) != 0)
{
throw new Exception("bu iş olmaz mesaj bozuk");
}
try
{
byte[] result = new byte[message.Length / 2];
for (int i = 0; i < message.Length; i = i + 2)
{
int first = Convert.ToInt32("" + message[i], 16);
int second = Convert.ToInt32("" + message[i + 1], 16);
result[i / 2] = (byte)(0×0 + ((first & 0xff) << 4) + (second & 0xff));
}
return result;
}
catch (Exception e)
{
throw e;
}
}
public static string DecryptId(string ID)
{
byte[] pnlContent = fromHexadecimal(ID);
byte[] salt = new byte[8];
byte[] encryptedMessageKernel = new byte[24];
Array.Copy(pnlContent, salt, 8);
Array.Copy(pnlContent, 8, encryptedMessageKernel, 0, 24);

PKCSKeyGenerator kp = new PKCSKeyGenerator();
ICryptoTransform crypt = kp.Generate(
"kunteper"
, salt
, 1000
, 1);

byte[] sonuc = kp.Decryptor.TransformFinalBlock(encryptedMessageKernel, 0, encryptedMessageKernel.Length);
return Encoding.ASCII.GetString(sonuc).Replace("abc","").Replace("xyz","");
}
}

public class PKCSKeyGenerator
{
byte[] key = new byte[8], iv = new byte[8];
DESCryptoServiceProvider des = new DESCryptoServiceProvider();

public byte[] Key { get { return key; } }
public byte[] IV { get { return iv; } }
public ICryptoTransform Encryptor { get { return des.CreateEncryptor(key, iv); } }
public ICryptoTransform Decryptor { get { return des.CreateDecryptor(key, iv); } }

public PKCSKeyGenerator() { }
public PKCSKeyGenerator(String keystring, byte[] salt, int md5iterations, int segments)
{
Generate(keystring, salt, md5iterations, segments);
}

public ICryptoTransform Generate(String keystring, byte[] salt, int md5iterations, int segments)
{
int HASHLENGTH = 16;
byte[] keymaterial = new byte[HASHLENGTH * segments];
byte[] psbytes;
psbytes = Encoding.UTF8.GetBytes(keystring);

byte[] data00 = new byte[psbytes.Length + salt.Length];
Array.Copy(psbytes, data00, psbytes.Length);
Array.Copy(salt, 0, data00, psbytes.Length, salt.Length);

MD5 md5 = new MD5CryptoServiceProvider();
byte[] result = null;
byte[] hashtarget = new byte[HASHLENGTH + data00.Length];
for (int j = 0; j < segments; j++)
{
if (j == 0) result = data00;
else
{
Array.Copy(result, hashtarget, result.Length);
Array.Copy(data00, 0, hashtarget, result.Length, data00.Length);
result = hashtarget;
}

for (int i = 0; i < md5iterations; i++)
result = md5.ComputeHash(result);

Array.Copy(result, 0, keymaterial, j * HASHLENGTH, result.Length);
}

Array.Copy(keymaterial, 0, key, 0, 8);
Array.Copy(keymaterial, 8, iv, 0, 8);

return Encryptor;
}
}
}

biliyorum kırılır belkide kıranınız vardır bana fark etmez :) ben sevdim bu olayı.

sanırım bende çok okumadım olay bu pkcs#5

Comments Yorum Yok »