Berkant KARDUMAN

Teknoloji günlüğü

SSL TCP Client

SSL Stream


Güvenli bir iletişim için SSL şart. Peki SSL sunucuları ile konuşabilecen bir .NET uygulaması nasıl yapılıyor?

Önce client nesnemizi oluşturmalıyız


 var client = new TcpClient(ServerIP, ServerPort);
Bu kod bağlanıtı yapıyor. Ancak iletişim yapabilmek için Authenticate olmamız gerekiyor. işte authenticate için yazılacak kod.
 var sslStream = new SslStream(
                client.GetStream(),
                false,
                new RemoteCertificateValidationCallback(ValidateServerCertificate),
                null
                );

try
            {
                var name = Dns.GetHostName();
                sslStream.AuthenticateAsClient(name);
            }
            catch (AuthenticationException e)
            {
                Console.WriteLine("Exception: {0}", e.Message);
                if (e.InnerException != null)
                {
                    Console.WriteLine("Inner exception: {0}", e.InnerException.Message);
                }
                Console.WriteLine("Authentication failed - closing the connection.");
                client.Close();
                throw;
            }
Burda ValidateServerCertificate isimli methot client tarafında sertifikanın doğrulanması için gerekli fonksiyon. Sizin için önemsiz ise return true; yazarak geçebilirsiniz. Ben öyle yaptım :) Artık mesaj gönderip cevab almayı deneyebiliriz.
        byte[] msg = enc.GetBytes("Hello");
        sslStream.Write(msg);
        sslStream.Flush();

            byte[] buffer = new byte[2048];
            sslStream.ReadTimeout = 6000;
            int bytesReceived = sslStream.Read(buffer,0,buffer.Length);

Audit Trail

Oracle audit loglarını ayarlamak için audit_trail parameteresini ayarlamak gerekiyor.


audit_trail parametresi OS veya DB değerleri alabiliyor.


Audit_trail=DB olarak ayarladığınızda logları okumak için dba_audit_trail isimli view kullanılıyor.


Örneğin iki tarih arasında hatalı şifre denemesi yapan istemcileri tespit etmek için aşağıdaki sorguyu kullanabiliyoruz.



select username,timestamp,userhost  from dba_audit_trail t
where
returncode=1017 and
T.TIMESTAMP between '30.12.2014' and '31.12.2014'  
Burada return code kullanıcının aldığını hata kodunun numarası oluyor. Bu view hakkında daha fazla bilgi için oracle dökümanlarına bakabilirsiniz.

Fast Report Web Designer

Sonunda geliyor. FastReport 2015.1 sürümünde web designer eklemiş.


Henüz beta görünüyor. Ama şimdiden umut verici.


Detaylar için http://www.fast-report.com/tr/news/338/

Uniqe index oluştururken Null Değerleri Görmezden Gelmek

Unique index de terkrarlayan null değerler

Normalde null=null ve null != null karşılaştırmalarının false değer dönmesi gerekir. Böylece uniqe index oluştururken null değerler görmezden gelinir. Ancak durum MsSQL de öyle olmuyor.
MsSQL ANSI standartlarının dışında null değerleri uniqe indexlerde duplicate olarak gösteriyor. Bu durumda null değerler içerebilen bir kolonda unique index oluşturumayı denediğinizde

create unique index unq_test on test(UN);

Msg 1505, Level 16, State 1, Line 1
The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name blabla ... 
The duplicate key value is (<NULL>)
hatası alıyorsuuz.

bu durumu aşmak için bir kaç yöntem var. Bence en doğrusu filtered index kullanmak.

create unique index unq_test on test(UN)  where UN is not null

;

SVN Loglarını Okumak

SVN Logları Arasından Kaybolmak


Code Review yapark zamandan tasarruf etmek ve kaliteyi artırmak mümkün. Peki onlarca yazılım uzmanının çalışıp onlarca farklı SVN repositori sine gönderdiği kodları tek tek bulup onlar üstünde review yapmak için harcanan zamanı nasıl azaltacağız?

Source control olarak svn kullanıyorsanız tüm log kayıtlarını bir veri tabanına aktarmak için SharpSVN kütüphanesini kullanabilirsiniz.

SharpSVN nuget den indirilebiliyor farklı mimariler içn farklı paketler var burdan bakabilirsiniz.

Ben SharpSvn 1.9 X86 kurdum. 


SvnClient oluşturmak için
var client = new SvnClient();
client.Authentication.Clear();
client.Authentication.DefaultCredentials = new NetworkCredential("username", "password");
daha sonra logları okumak için
SvnRevision start =  new SvnRevision(DateTime.Now.AddDays(-10));
SvnRevision end = new SvnRevision(DateTime.Now.AddDays(1));
SvnLogArgs args = new SvnLogArgs
  {
      Start = start,
      End = end,
      ThrowOnWarning = false,
      ThrowOnCancel = false,
   };
 client.GetLog(uri, args, out logs);


istediğimiz bütün veriler logs isimli değişkende olacaktır.

Tekrar Merhaba

NumPad.Net'e Hoş Geldiniz.



Buslat.com'a yazmaya uzun zaman önce ara vermiştim.


Şimdi tekrar yazılarıma başlamayı düşünüyorum. 


Yeni adresimde burası