Programcılıktan Networkcülüğe Geçiş

Blogumu takip eden herkesin bildiği üzere ben C#, WPF, MSSQL, ASP.NET ve DevExpress konusunda bildiklerimi, öğrekdikçe de öğrendiklerimi paylaşan bir garip programcıyım. Blog yazma fikri ilk kez aklıma düştüğünde şu anda olduğumdan 1500 kat daha hevesli ve idealisttim. Öğrendikçe, keşfettikçe ve aklımda yer ettikçe bir yere yazmam gerektiğini düşünüyordum ve bu yüzden KoDDefterim projesini hayata geçirmiş, daha sonra grup olarak hareket edemeyince MehmetKaplan.com blogumdan paylaşımlara başlamıştım. Bu süreçte Yazgelistir.com, CSharpNedir.com gibi sitelerde de makaleler yayınlamıştım. Hatta WPF konusunda Türkiye’nin MVP’si olmayı hedefliyordum 🙂 Gel zaman git zaman programlamaya karşı hevesim ve duruşum değişti 🙂 İş hayatımda yaşadığım değişiklikler ve programalamanın hayatımdan çaldığı zaman beni ağ alanına (network) itti. Yaklaşık iki yıldır hem çalıştığım şirkette, hem kendi dünyamda networkle ilgili bol bol okuyup öğrenmeye çalışıyor ve özellikle hacking\penetrasyon testleri gibi alanlarda kendimi geliştirmeye çalışıyorum. Belki tüm bu arayışlarda kendimi bulma sürecimin getirisidir henüz bilmiyorum ama şu sıralar fırsat buldukça bunlara meylettiğimi söyleyebilirim ^^

Peki tüm bunları neden yazıyorum? Halen özellikle DevExpress konusunda geri dönüşler, soru ve sorunlar alıyorum. Bir süredir programlama alanında faaliyet göstermediğimden, ciddi yenilikler olmadıkça takip de etmiyorum. Bu nedenle bu türde soru ve sorunlara özellikle cevap ver(e)miyorum. Blog yazmaya başladığım günlerde hiç kimsenin girip bir şeyler bulacağını ummuyor ve hedeflemiyordum ama şu anki tabloya göre günde en az 200 kişi girip yazdıklarımda yararlı bir şeyler buluyor. Bu tablo beni gururlandırmakla birlikte biraz da sorumluluk yüklediği için kendimi açıklama gereği duyuyorum. Sıkılmadıysanız, devam etmek istiyorum =]

Bundan sonrası için ne olacak? Yine fırsat buldukça -ki pek fırsat olacağını sanmıyorum- programlamayla ilgili içerik paylaşmaya devam eceğim. Şu an .NET ile ilgili olmayacağını öngörmekle birlikte muhtemelen Ptyhon’la devam edeceğim ama henüz emin değilim. Öngördüğüm paylaşımlar öncelikle ağ üzerinde basitten orta düzeye, orta düzeyden gelişmişe kadar ciddi bir kaynak yaratmak olacak. Daha sonra bildiklerimi, öğrendiklerimi ipucu olarak aktarmaya başlayacağım.

Tüm bu vesileyle beni destekleyen, yanımda olan, olmayan ve özellikle eleştirenlere çoook teşekkür ederim. Umarım bundan sonra da yararlı bir şeyler yapabilirim 🙂

Haydi bakalım! Eğlenceli ve bilgili zamanlara!

İnternet Çok mu Yavaş Yaa?! (2014)

Kaç kişinin kullanımını ne derecede etkiledi, ne zamandan beri farkındayız bilmiyorum ama konuya bodoslama girip serzenmeden, “noluyor be” demeden önce bilinmesi gereken gaydırıbuppaklar var. ISP denilen, ‘İnternet Servis Sağlayıcı’lar, yani Türkiye’deki Türk Telekom, Süperonline ve onların çakması olan D-Smart vb. şirketler artık devlet eliyle bir takım filtrelemeler yapıyorlar. Mesela? Devlet eskiden bir siteyi yasaklamak istediğinde, o sitenin ismine karşılık gelen ve ip adresi denilen numaraları değiştiriyordu. Bunu biraz açarak boyutunu daha iyi ifade edelim: mehmetkaplan.com isimli bir adresim var. Bu adres aslında ‘212.175.87.148’ numaralarının karşılığı. Biz bu rakam dizeleriyle uğraşmayalım diye bir isim&ip teknolojisi (DNS) kullanılıyor. Devlet de “sen misin yan bakan” diyerek kapatmak istediği web sitesine karşılık gelen rakam dizesini, ‘mahkeme kararıyla erişimi engellendi’ gibi birkaç cümle yazan başka bir sitenin rakam dizesiyle değiştiriyor. Sonra noldu? yasak! Hayır, aslında yasakladığı hiçbir şey yok, yalnızca başka sayfaya yönlendiriyor. Yasaklayamamış olduğunu da hepimiz DNS bilgilerimizi değiştirerek kendimiz görüyoruz?

Peki artık ne değişti? Devlet internetten o kadar çok korkar hale geldi ki! Devlet eliyle TİB (Türkiye İletişim Başkanlığı) üzerinden servis sağlayıcıya bazı sorumluluklar yüklüyor. Buna göre artık o rakam dizelerinin kolayca aşılabilir olduğunu bildiğinden, interneti kaynağından, yaani interneti satan heriflerin ana makinelerinden engelliyorlar. Bunu yapmak için herkesin bir şekilde duyduğu ‘güvenlik duvarı’, ‘firewall’, ‘dpi’ gibi sözde yetenekli donanım ve yazılımlar kullanıyorlar. Böylece siz bir siteye girdiğinizde DNS’i sabaha kadar da değiştirseniz engelleme interneti veren herifler tarafından geçiş noktasında yapııldığı için hiiçbir işe yaramıyor. Çünkü servis sağlayıcılar, erişmek istediğiniz web sitesinin adına değil, erişmek istediğiniz bilginin içeriğine bakıyorlar. Örneğin “recep tayyip erdoğan ın bilal erdoğan ile ses kaydı 2” gibi bir cümle var ve internette yayınlandı mı? Servis sağlayıcı bu ve türevi içeriğin geçtiği tüm siteleri (teknik olarak erişilmek istenilen paket) engelleyebiliyor. Çünkü siz oraya girdikçe ve bu güvenlik yazılımları gördükçe basıyor engeli. Artık kullanılan güvenlik yazılımları, web sitesini engellemeden, yalnızca bir sayfasını ya da sayfanın içerisindeki tek bir bölümü engelleyebiliyor. Bu yüzden bas bas “sadece kişilik haklarına tecavüz eden sayfanın ilgiili bölümü engellenecek” diyorlar.

Eee, neden bu kadar çok bilgi verdim? Siz bir web sitesine girdiğinizde, o web sitesi tertemiz bile olsa, anasından helal süt emmiş bir web masterı, polyanna gibi bir editörü olsa dahi tüm bu filtreleme süreçlerinden geçiyor. Zaten normalde zar zor girdiğimiz ve hızından şikayet edip durduğumuz internet bağlantısı, bu filtreleme süreçlerinden ötürü yine birkaç saniye sekteye uğruyor. Bunu özellikle Youtube gibi medya sitelerinde, HTTPS, yani sertifikalı Google gibi sitelerde gezinirken bol bol deneyimleyeceksiniz. Hatta bu zaman aşımı süreler her geçen gün artarak devam edecek çünkü engellemeler için her geçen gün biraz daha derinlere inerek engelleme seviyesini arttıracaklar.

“Yaa iyi de napıcazz?” sorusuna herkesin duyma şerefine nail olduğu proxy cevabı verilebilir. amaa, gelin görün ki proxy servisleri de kendince ciddi riskler (eğer bir yazılım yüklüyorsanız, bilgisayarınıza arka kapıdan giriş izni vermek, yazılım yüklemiyorsanız girip çıktığınız sitelerin proxy hizmeti verenlerce izlenebilmesi&kayıt altına alınmasına olanak tanıma) içerdiğinden önermiyorum. Bir gün gelir gerçekten bu riskler göze almaya değer boyutlara ulaşırsa, işte biz o gün küllerimiz doğar, proxyi teyzeye anlatır gibi anlatırız! ^^

Haydi bakalım, videonuz bol olsun ^^

Teknik notlar:

*Engellemeleri aslında TİB yapıyor, Türk Telekom’a suç atmayın. Aslında DPI, SPI falan gibi deli gibi para harcatan ürünler servis sağlayıcının işine gelmez.

**Proxy dışında, VPN gibi bilinen ama benzer riskler taşıyan çözümler de var.

***’DPI neymiş oğlum’cular için: İngilizce ve Türkçe

WordPress 2013 Yılı Özeti

WordPress.com istatistik yardımcı maymunları bu blog için bir 2013 yıllık raporu hazırladılar.

İşte bir alıntı:

Sydney Opera House’daki konser salonu 2,700 kişiyi barındırır. Bu blog, 2013 içinde yaklaşık 57.000 kez görüntülendi. Eğer bu Sydney Opera House’da bir konser olsaydı, bu kadar insanın onu görmesi kapalı gişe yaklaşık 21 gösteri alacaktı.

Raporun tamamını görmek için buraya tıklayın.

İpinUcu ~ 100 – WPF’te Height-Width vs ActualHeight-ActualWidth

Öncelikle WPF ile ilgili 100. ipucumuz Türkçemize hayırlı olsun ^^

WPF’te bildiğiniz üzere width yada height özelliklerine değer girmek zorunda değiliz. Örneğin bir WrapPanel’in içine iki tane TextBlock koysak ve birkaç satır yazı yazsak pencerenin boyutuyla birlikte bu textler de büyüyecek (aslında doğrudan WrapPanel textleri de büyütemiyor. ViewBox kullanılmalı :)) Dönelim konuya:

<StackPanel>

<Button Content="Mehmet KAPLAN" HorizontalAlignment="Stretch"  />

</StackPanel>

Biz bu XAML kodlarıyla uygulamamızı çalıştırdığımızda Window’un height ve width bilgileriyle birlikte button şekil alacak. Peki bu width ve height’e kod tarafında ihtiyacımız olursa? Eğer buttonun kod tarafında witdh ve heighte bakmak isterseniz NaN olarak göreceksiniz. WPF’te bu bilgiler Witdh ve Height verilmemişse ActualHeight ve ActualWidth adı altında tutuluyor ve değerler Layout yüklendikten sonra değişiyor. Elbette bu özellikler de double türünde.

Umarım bir işinize yarar ^^

İpinUcu ~ 99 – WPF’te Kayan Yazı Animasyonu (marquee – scroll text)

Nedendir bilmem halen güzeller güzeli WPF’in animasyon olanaklarına alışamadık, ısınamadık ve bununla ilgili var denecek kadar bile kaynak oluşturamadık. Neyse ki dünyanın bir yerlerinde insanlar halen yaptıkça paylaşıyorlar 🙂

Doğrudan kayan yazı için XAML’a bakıyoruz:

<StackPanel Orientation=”Horizontal” Margin=”0,0,0,0″>

    <StackPanel.RenderTransform>
        <TranslateTransform x:Name="transferText" X="-40"/>
    </StackPanel.RenderTransform>
    <StackPanel.Triggers>
        <EventTrigger RoutedEvent="StackPanel.Loaded">
            <BeginStoryboard>
                <Storyboard>
                    <DoubleAnimation From="0" To="-900" Duration="00:00:10"
                      Storyboard.TargetProperty="X"
                      Storyboard.TargetName="transferText"
                      RepeatBehavior="Forever"/>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </StackPanel.Triggers>
    <TextBlock FontSize="25"  x:Name="txtKron" Margin="10,0,7,0"/>
</StackPanel>

Böylece StackPanel içinde yer alan TextBlock ve daha niceleri kayıp gidecektir 🙂

Bu animasyon bir kenarda dursun. Şimdi bu kaydırma işlemi sırasında diyelim ki yazının bir kısmı kayboldu ve kaybolan kısım arkasından çıkıp gelsin istiyoruz. Yani Nokia’nın meşhur kara yılanı gibi 🙂

Buyrun:

XAML

<Window x:Class="WpfApplication9.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WpfApplication9"
        Title="MainWindow" Height="83" Width="222" Name="UI" Tag="Tol Level">
    <StackPanel Orientation="Horizontal" x:Name="stack">
        <StackPanel.Resources>
            <local:NegatingConverter x:Key="NegatingConverter" />
            <Storyboard x:Key="slide">
                <DoubleAnimation From="0" To="{Binding Width, ElementName=canvas, Converter={StaticResource NegatingConverter}}" Duration="00:00:10"
                      Storyboard.TargetProperty="X"
                      Storyboard.TargetName="transferCurreny"
                      RepeatBehavior="Forever"/>
            </Storyboard>
        </StackPanel.Resources>
        <StackPanel.RenderTransform>
            <TranslateTransform x:Name="transferCurreny" X="0"/>
        </StackPanel.RenderTransform>
        <StackPanel.Triggers>
            <EventTrigger RoutedEvent="StackPanel.Loaded">
                <BeginStoryboard Storyboard="{StaticResource slide}" />
            </EventTrigger>
            <EventTrigger RoutedEvent="StackPanel.SizeChanged">
                <BeginStoryboard Storyboard="{StaticResource slide}" />
            </EventTrigger>
        </StackPanel.Triggers>
        <Canvas x:Name="canvas" Width="{Binding ActualWidth, ElementName=stack}">
            <TextBlock Text="StackOverflow" FontSize="25"  x:Name="txtKron" Canvas.Left="0"/>
            <TextBlock Text="{Binding Text, ElementName=txtKron}" FontSize="25" Canvas.Left="{Binding Width, ElementName=canvas}"/>
        </Canvas>
    </StackPanel>
</Window>

C#

public class NegatingConverter : IValueConverter
    {

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value is double)
            {
                return -((double)value);
            }
            return value;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value is double)
            {
                return +(double)value;
            }
            return value;
        }
    }

Lütfen c# kodlarını namespace’in altında tutunuz. Sınıfın altında oluşturursanız olmayacaktır.

Yılan örneği için teşekkürler; http://stackoverflow.com/questions/15323163/wpf-marquee-text-animation

Kolaylıklar diliyorum.

İpinUcu ~ 98 – WPF Window’da Simge Durumuna Küçültme, Ekranı Kaplama ve Kapatma Butonlarını Gizlemek

Merhabalar!

Uzuun bir aradan sonra WPF ile haşır neşir olmam gerekti ve bu süreçte WPF’in hali hazırda bize sunmadığı ama sınırları zorlayarak yapabileceğimiz birkaç özelliği gerekti. Bunlardan bir tanesi close, maximazed ve minimized buttonlarını gizlemek!

Bunun için söz konusu formun C# tarafında şu eklemeyi yapıyoruz:

private const int GWL_STYLE = -16;
private const int WS_SYSMENU = 0x80000;
[DllImport(“user32.dll”, SetLastError = true)]
private static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport(“user32.dll”)]
private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);

Window_Loaded olayına da şunları ekliyoruz:

var hwnd = new WindowInteropHelper(this).Handle;
SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_SYSMENU);

Bu yazdığım kodlar şu kütüphanelere ihtiyaç duyacağından otomatik olarak sunmazsa diye paylaşıyorum:

using System.Windows.Interop;

using System.Runtime.InteropServices;

Yazdığımız kodlar yalnızca sağ üst köşedeki butonları kaldırdığından doğal olarak kenarlıkların da (border) kalkmasını isteyebiliriz. Bunun için XAML tarafında Window’un WindowsStyle özelliğini None yapıyoruz.

XAML

 WindowStyle=”None”

Böylece güle güle kullanabiliriz. ^^

Kaynaklar: http://stackoverflow.com/questions/743906/how-to-hide-close-button-in-wpf-window

http://winsharp93.wordpress.com/2009/07/21/wpf-hide-the-window-buttons-minimize-restore-and-close-and-the-icon-of-a-window/

WordPress 2012 İncelemesi

WordPress.com istatistik yardımcı maymunları bu blog için bir 2012 yıllık raporu hazırladılar.

İşte bir alıntı:

Jay-Z izlemek için yeni Barclays Center içine 19.000 kişi sığdı. Bu blog, 2012 içinde yaklaşık 89.000 kez görüntülendi. Eğer bu Barclays Center’da bir konser olsaydı, birçok insan için bunu görmek, biletleri tükenmiş yaklaşık 5 gösteri kadar olacaktı.

Raporun tamamını görmek için buraya tıklayın.

%d blogcu bunu beğendi: