Mert Sarac

Developer, Entrepreneur, Geek

MATLAB üzerinden ASP.NET Web Servisleri Çağırma

Merhaba,

Son zamanlarda signal processing konusundaki avantajları nedeniyle sık sık MATLAB ile çalışmam gerekiyor. Üniversitedeki basit işlemler dışında bu konuda tecrübesiz birisi olarak bu yolda pek çok şey öğreniyorum. Öğrendiklerimi vakit buldukça buradan da paylaşmak istedim. Bu yazımda MATLAB üzerinden ASP.NET Web Servislerinin nasıl çağırılacağını anlatacağım.

Aslında bu işin çok zor olacağını, SOAP bağlantılarını yapamayacağımı, WebRequest gibi şeylerle uğraşacağımı düşünürken MATLAB beni yanılttı ve kolayca bu işi halletmemi sağladı :)

Visual Studio’da ASP.NET Web Servislerinizi hazırlayıp sunucunuza publish ettikten sonra yapmanız gereken aşağıdaki komutu çalıştırmak ve MATLAB’in web servisiniz için classları oluşturmasını beklemek.


service_url = 'http://www.mertsarac.com/PublicHelpersService.asmx?WSDL';
PublicHelpersService = createClassFromWsdl(service_url);

Oluşturduğunuz servisi çağırmak için de aşağıdaki kodu kullanabilirsiniz.


service PublicHelpersService;
clearText = ClearHTMLTags(service, "<b>test</b>");

CloudFlare nedir? Ne işe yarar? Nasıl kullanılır?

CloudFlare nedir?

CloudFlare, Free planı ile ücretsiz kullanılabilen, sitenizin DNS Server görevini üstlenip hız, güvenlik ve performansında olumlu sonuçlar almanızı sağlayan bir hizmettir. Kurulumu son derece basit olan CloudFlare kayıt aşamasında DNS kayıtlarınızı otomatik tanır, sizden alan adınızın nameserver bilgilerini değiştirmenizi ister.

Ne işe yarar?

Bunun için öncelikle CloudFlare’in nasıl çalıştığını anlatmakta fayda var. Bildiğiniz gibi DNS sunucular istemcilerden gelen istekleri ilgili sunuculara yönlendirir. CloudFlare sitenizin DNS sunucusu görevini üstlendikten sonra sitenize gelen ziyaretçileri analiz ederek olası saldırıların önüne geçmeyi, sunucunuzdaki trafiği azaltmayı, hatta sitenize bot koruması eklemeyi dahi sağlar.

Nasıl çalışır?

  1. CDN: Sağladığı ücretsiz CDN altyapısı sayesinde 30 farklı konumda dosyalarınızı saklayarak hem sunucunuzdaki trafiği azaltır hem de sayfa yüklenme sürelerinizi azaltır.
  2. Statik İçerik Cachelemesi: Sunucunuz tarafından dinamik şekilde üretilmeyen sayfaları otomatik tanır, bu sayfaları kendi sunucularında cacheleyerek hem sunucunuzdaki trafiğinizi azaltır hem de sayfa yükleme sürelerinizi azaltır. Bunu tabii ki kendi sunucularınızda da yapmanız oldukça kolay. Ancak CloudFlare oluşturulan bu cache’i panelde bir tıklama ya da API üzerinden bir çağrı ile anında silmeyi sağlıyor ve bu konuda oldukça başarılı.
  3. Always Online™: Paketinize göre web siteniz belirli aralıklarla CloudFlare tarafında crawl edilerek Google Önbellek’te olduğu gibi sayfalarınızın bir kopyası CloudFlare’da saklanır. Herhangi bir sebepten ötürü sunucunuz kapanır, web siteniz down konuma düşerse CloudFlare otomatik olarak bu önbellekteki kopyayı kullanarak sitenizi erişime açık tutmaya devam eder.
  4. DDoS Koruması: Sitenize gelen her ziyaretçiyi, siteniz üzerinden sunucunuza gelen her paketi inceleyen CloudFlare, olası bir DDoS Attack’ta koruma sağlar. Bu konuda gayet başarılı olduğunu söyleyebiliriz. Buradan detaylarını inceleyebileceğiniz 400Gbps’lik devasa bir saldırının dahi altından başarıyla kalkmış durumda.
  5. Spam Yorum Koruması: WordPress kullananlar bilir, Akismet sürümü biraz geri kalsın, siteye her gün yüzlerce spam yorum gelmeye başlar. CloudFlare bunları algılayıp önüne geçebiliyor ve kendi izlenimlerime göre Akismet ile kıyaslayınca daha başarılı olduğunu söyleyebilirim.
  6. İçerik Koruması: Özgün içerik üreten bir web sitesi sahibiyseniz bu içeriğin kopyalanmasının önüne geçmek neredeyse imkansız. CloudFlare herhangi bir bot tarafından siteniz kopyalanmaya başaldığında bunu algılayabiliyor ve otomatik banleyebiliyor. Aynı zamanda ülkeye g��re ya da IP aralıklarına göre kendiniz de kullanıcı banleyebilirsiniz.
  7. Trafik Analizi: Muhtemelen sitenizde Google Analytics, Yandex.Metrica ya da Bing Webmaster Tools benzeri araçlarla bunu yapıyorsunuz ancak Javascript ve pixel tracking yöntemleriyle elde edilemeyen kullanıcıları CloudFlare üzerinden görmeniz mümkün.

Nasıl kullanılır?

CloudFlare’a ücretsiz kayıt olup web sitenizi yazdıktan sonra CloudFlare tarafından otomatik tanınan DNS kayıtları karşınıza gelir. Eğer bir eksiklik görmüyorsanız (var olan sunucunuzdan karşılaştırma yapmanızı tavsiye ederim) devam diyerek CloudFlare tarafından verilen yeni nameserver kayıtlarını alan adınıza tanımlayın. Ortalama 30 dakika içinde CloudFlare değişikliği tanıyıp Websites bölümünde sitenizi listelemeye başlayacaktır.

Uygulamalar

CloudFlare kullanmaya başladığınızda bazı uygulamalar otomatik olarak aktif gelir. Alan adınızın yanındaki “Apps” linkine tıklayarak yenilerini ekleyebilir ya da var olanları kapatabilirsiniz. Şu an listelenen, kendi kullandığım bazı güzel uygulamalar şu şekilde:

  1. A Better Browser: Seçtiğiniz Internet Explorer sürümünden daha eski bir sürüm kullanan kullanıcıları uyararak tarayıcılarını güncellemelerini söyler.
  2. ExceptionHub: Web sitenizdeki tüm JavaScript hatalarını kayıt altına alıp size iletir.
  3. GamaSec: Web sitenize Cross Site Scripting, SQL Injection, Code Inclusion gibi korumalar ekler.
  4. Google Analytics: Aslında bu kodu elle de ekleyebilirsiniz fakat bu durumda bazı sayfalar ister istemez aradan kaçacaktır. Buradan eklediğiniz taktirde alan adınız altındaki tüm sayfalara eklendiğinden emin olabilirsiniz.
  5. Pingdom: 1 domain için ücretsiz olan Pingdom, belirli aralıklarla web sitenizin 80.portuna gelerek sitenizin düzgün çalıştığından emin olur. Eğer bir kesinti fark ederse mail yoluyla sizi uyarır. SMS ücretini öderseniz SMS ile de bilgilendirme yapabilir.
  6. SmartErrors: Sitenizdeki 404, 500 gibi HTTP hatalarını kayıt altına alır ve kullanıcılara anlamlı hata mesajları göstermenizi sağlar.

CloudFlare Analytics panelinin ekran görüntüsünü aşağıda bulabilirsiniz.


C# ile YouTube API üzerinden kanaldaki videoları çekmek

Merhaba,

Diyelim ki bir web siteniz var. Burada videolarınızı da yayınlıyorsunuz ancak hem trafik yükünü devretmek hem de sağlam bir playerda çalışması adına bunları YouTube’da barındırmaya karar verdiniz. Bu aşamada kanalınızdaki videoları sitenizde listelemek için YouTube API’dan yararlanabilirsiniz.

Aslında paylaşacağım kodun kullanımı son derece kolay. Herhangi bir yere kayıt olup API key dahi almanız gerekmiyor. Sadece aşağıdaki kodun username parametresini değiştirin ve foreach içinde kendi HTML kodunuzu üretin. Aynı zamanda Index parametresi sayesinde sayfalama da yapabilirsiniz.


string YouTubeUsername = "KULLANICI_ADINIZ_BURAYA_GELECEK";
int Index = 1;

var feed = XElement.Load(String.Format("https://gdata.youtube.com/feeds/api/users/{1}/uploads?start-index={0}&max-results=8&orderby=published", Index, YouTubeUsername));

                    XNamespace ns = "http://www.w3.org/2005/Atom";
                    XNamespace media = "http://search.yahoo.com/mrss/";
                    if (feed != null)
                    {
                        var entries = from entry in feed.Descendants(ns + "entry")
                                      select new
                                      {
                                          Title = entry.Element(ns + "title").Value,
                                          Id = entry.Element(ns + "id").Value,
                                          PostedDate = DateTime.Parse(entry.Element(ns + "published").Value),
                                          Description = entry.Element(ns + "content").Value,
                                          MovieUrl = (from el in entry.Elements(media + "group").Elements(media + "content")
                                                      where el.Attribute("type").Value == "application/x-shockwave-flash"
                                                      select el.Attribute("url").Value).First(),
                                          ThumbnailUrl = (from el in entry.Elements(media + "group").Elements(media + "thumbnail")
                                                          select el.Attribute("url").Value).First()
                                      };
                        foreach (var node in entries)
                        {
                            string VideoId = node.Id.Split('/')[node.Id.Split('/').Length - 1];

                            // HTML Kodunuzu burada üretebilirsiniz.
                        }
                    }