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);

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.