İçeriğe geç

Yazılar

.asmx Servisi Proxy Classa Dönüştürmek

ASP.NET de third party bir uygulamayı veya kurum içinde ki başka bir  web servis çağrımı yapılmak istendiğinde genel olarak “Add Service Reference” kullanılır. Bunun yanında kurumun belirlediği başka bir standartta olabilir. Nitekim geçen gün şirkette başka bir kurumun web servislerini proxy class kullanarak çağırmamız istendi. Oluşan proxy class WebServicesClientProtocol class ın türemektedir.

İlk olarak sizinle paylaşılan linkin sonuna “?wsdl” ekleyerek “http://1.2.3.4/WebService1.asmx?wsdl” olarak açıp pc üzerinde erişebileceğiniz bir dizine WebService1.wsdl olarak kaydedin.

Başlat çubuğundan Microsoft’un, developerlar için paylaştığı Developer Command Prompt uygulamasını açın. Bu tool için daha fazla bilgi Developer Command Prompt  inceleyebilirsiniz.

Command promptu açtıktan sonra wsdl.exe uygulamasını kullanarak ilerleyeceğiz. Wsdl.exe kullanırken benim için lazım olan “/out” parametresini kullanmak. Elimdeki wsdl i, proxy classa dönüştürmek.

“wsdl /out:D:\wsdl\WebService_1.cs  D:\wsdl\WebService1.wsdl”

Belirttiğim dizin de oluşan proxy classın içeriğini kopyalarak, Visual studio programına yeni bir class ekleyip içeriği yapıştırıyorum. Proxy classınızın herhangi bir namespace altında olması sizin istediğinize kalmış bir durumdur.  Projeyi bir sefer build ettikten sonra istediğiniz yerden servislerini çağırabilirsiniz.

Kaynakça : https://msdn.microsoft.com/en-us/library/aa529578.aspx

ToTitleCase Kullanımı

Merhaba arkadaşlar,

.Net de çoğunlukla ya bütün harfleri küçültüp ya da hepsini büyük harflerle yazacak şekilde kullanırız. Bu yazımızda verilen bir kelimenin veya yazının sadece baş harflerinin büyük bir şekilde yazılmasını inceleyeceğiz. İlk olarak

namespace ini eklememiz gerekiyor.

Sonrasında isterseniz her metodun içinde veya tek bir metod içinde yazarak diğer metotlar içinde çağırabilirsiniz. Tek bir metodun içinde yazarken ek olarak CultureInfo üzerinde değişiklikler yaparak tek bir yerden kontrol etme imkanı elde edebilirsiniz.

 

 

#DevnotSummit

Devnot.com’un düzenlediği #devnotSummit 2017 etkinliği sona erdi. Geride çok güzel konular ve paylaşımlar bırakıldı. Yazar olarak katıldığım devnot a sunum yapma fırsatım oldu. Uzun zamandır ilgilendiğim Chatbot’lar ve bununla birlikte, Chatbot’ların yaşam döngüsünün bir parçası olan yapay zeka konusuna da değinerek bir sunum yaptım. Yapay Zeka nın çok yeni bir konu olmadığını fakat bu alanda uzmanlaşmış kişilerinin az olduğuna dair konuştuk.Şu anda Chatbot’lar hakkında çok fazla türkçe kaynak olmadığı için elimden geldiğince en anlaşılabilir düzeyde bir sunum hazırladım. Sunum da ChatBot’ların yeni bir trend olarak karşımıza çıktığından, dünya çapındaki teknoloji firmalarının Chatbot’ları yayınlayacakları ve Chatbot geliştirmelerine olanak sağlayan uygulamalardan bahsedip, bir çok firmanın öncü olma yolunda ilerlediğini konuştuk. Bunun yanında Chatbot yaparken nelere dikkat edileceği, ChatBot isimlendirme, logo, kullanıcıyı karşılama ve Chatbot’ların hızlı bir şekilde geri dönüt vermesi gibi konulara değindik.

Chatbot yaparken rule engine ve machine learning kullanabileceğini, isterseniz ayrı ayrı veya tümleşik bir şekilde kullanma imkanları yaratabilirsiniz. Machine Learning in ana bir başlık olduğunu ve bu ana başlık altında çeşitli algoritma yöntemleri (deep learning, NLP, Image Processing vb.) olduğu konusunda konuştuk.  Bu tarz konularda kendini geliştirmek isteyen arkadaşların mutlak surette matematik konularına hakim olması gerektiğini, AI ile ilgileniyorsa türev konusunu, veri yapıları ve ya algoritma konularında daha deneyimli olmak için küme konularına hakim olması gerektiğini, işin özünde temele inip konuya hakim olarak yeni ürünler geliştirilebileceğini konuştuk.

Ek olarak sunumda yaptığım demo hava durumu örneğini WeatherBot linkinden inceleyebilirsiniz. Yaptığım Chatbot,  yazmış olduğunuz il ve ilçe adına göre anlık hava durumu bilgisini getirmektedir. Yaptığınız Chatbot’u lokal pc nizden yayınlamak isterseniz veya sunucunuzda da çalıştırmak isterseniz “ngrok”  exe sini kullanabilirsiniz. Bu exe size, chatbotunuz ile uygulamanız arasında güvenli bir tünel oluşturup http/https ile linkler oluşturmaktadır. Oluşan bu linkleri yayınlamak istediğiniz uygulama ile entegre edebilirsiniz. Kullanımı gayet kolay olup, en temel düzeyde Chatbot un çalıştığı portu rewrite ederek güvenli bir kanal oluşturabilirsiniz. “ngrok http –headers-host=rewrite 3979” kodunu yazıp enterlediğiniz zaman yeni bir kanal yaratmaktadır.

Son olarakda oluşan bu geliştirilen chatbotların yapay zeka düzeylerine göre toplum üzerinde bırakacağı etkileri, toplumun bu tarz yeni teknolojik ürün veya yazılımları algılama ve kullanma biçimlerini konuştuk.

Elimden geldiğince farkındalık yaratıp, faydalı örneklere yer vermeye çalıştım. Nice etkinliklere… 🙂

Chatbot’lara Genel Bakış ve Bot Framework

Gelecek, geliyor derken robotlar, yapay zeka mahsülü araçlar ve yazılımlar artık hayatımızın tam ortasındalar. Artık futbol oynayan bir robot, eşya taşıyan bir robot veya insanların komutlarını harfiyen anlayıp tepki veren bir yazılım görmek hayatın normal gelişmeleri oluyor. Yapay zeka alanındaki önemli gelişmelerden biri de Chatbot’lar. Bu yazıda Chatbot’ların gelişimi, teknoloji dünyasında edindiği yer ve bu alandaki yatırımlar hakkında bilgiler vereceğim. Son kısımda da Chatbot uygulamaları geliştirebileceğimiz Bot Framework‘ten bahsedeceğim.

Chatbot’lar, kullanıcıdan aldığı bilgiler doğrultusunda mantıklı işlemler yaparak cevaplar üreten yazılımlardır. Adındaki Chat kelimesinden de anlaşılacağı üzere kullanıcılar bu yazılımlarla metin yazışma aracılığıyla veya sesli konuşarak iletişim kurar. Bir soru sorar, chatbot da soruyu çözümleyip yapay zeka algoritmalarını çalıştırarak mantıklı bir cevap üretir.

+ Şu an Ankara’da hava nasıl?
– Ankara’da sıcaklık 14 derece ve hava parçalı bulutlu.
+ Beşiktaş’ın bir sonraki futbol maçına ait bilgileri söyleyebilir misin?
– Beşiktaş’ın sıradaki futbol maçı Olympiakos ile 16 Mart Perşembe günü saat 21’de.

Bu diyalogları şu an bazı chatbot’larla yapmanız mümkün. Soru-cevap diyaloglarının ötesinde, daha gelişmiş yapay zekâ algoritmalarının da işin içine girmesiyle çok ilginç sonuçlar alınabilir. Örneğin aradığınız bir elbise için mağaza mağaza gezmek yerine chatbot’a “Kırmızı renkli ve kareli yaz mevsimine uygun erkek gömlek modelleri önerebilir misin?” dediğinizde yazılım sizin istediğiniz kriterleri anlayıp, internetteki alışveriş sitelerinden bu kriterlere uygun ürün resimlerini bulup size gösterebilir.

Bunlar akla gelen basit örnekler. Sadece gündelik sorular için değil, endüstriyel alanda, eğitimde, sağlık alanında da chatbot’ların birçok işi kolaylaştıracağını söyleyebiliriz.

Görüldüğü gibi bir çok işimizi sadece bir tane chatbot yazılımına yaptırmaya doğru gidiyoruz. Arama, hava durumunu, nöbetçi eczaneyi, maç skorunu, yarınki randevu programımı öğrenme, istediğim ürünleri bulmama yardımcı olması, hatta istediğim ürünü sesli komutla satın alması… Bu da bize gösteriyor ki chatbotların yaygınlaşmasıyla birlikte telefonlarımıza veya tabletlerimize indirdiğimiz uygulama sayısı azalabilir. Chatbot’lar bazı yazılımların geleceği için bir tehdit olabilir.

Telefon ve tabletlere kurulacak chatbot yazılımlarının yanında chatbot’lar karşımıza donanımsal bir ürün olarak da çıkmakta. Teknoloji devi Google, Facebook, Microsoft ve Amazon gibi firmalar chatbotlar için ciddi yatırımlar yapmaktadır. Örneğin Facebook, kendi uygulaması olan Messenger üzerinde özel bot’lar geliştirilmesine olanak sağlıyor. Bunun yanında yine Facebook donanımsal olarak Jarvis adlı yapay zekâ asistanın duyurusunu yapmıştı. Aşağıda Mark Zuckerberg’in Jarvis ile ilgili tanıtım videosu bulunmaktadır.

After a year of coding, here's Jarvis.

Mark Zuckerberg paylaştı: 20 Aralık 2016 Salı

Smart speaker ya da virtual personal assistant olarak adlandırılan bu donanımsal ürünlerden bugün itibariyle en ön plana çıkanının Amazon Echo olduğunu söyleyebiliriz. Uzun süredir satışta olan ve binlerce kişinin kullandığı Amazon Echo ile ilgili tanıtım videosunu altta bulabilirsiniz.

Bunların dışında Google Google Assistant, Microsoft ise Xiaoice isimli ürünlerin üzerinde çalışmalar yürütmektedir.

Teknoloji devlerinin Chatbot pazarına çıkardığı donanımsal ürünlere göz attıktan sonra tekrar Chatbotlar konusuna dönelim. Bu kısımda da bir chatbot uygulaması geliştirmek için nasıl bir yol izlememiz gerektiğine değineceğim kısaca.

Bot Framework ile Chatbot Geliştirme

Microsoft’un geliştirdiği ve yazılım geliştiricilere açtığı Bot Framework ile chatbot uygulamaları geliştirebilirsiniz. https://docs.botframework.com adresinde dokümantasyonu ve örnekleri bulunuyor. Bot Framework’ün Node.js ve .NET Framework desteği bulunuyor, ayrıca REST API’si ile farklı ortamlardan da bu kütüphaneyi kullanmanız mümkün.

Bot Framework ile Visual Studio‘da demo uygulamayı nasıl çalıştırabileceğimize adım adım bakalım:

1. Adım: Visual Studio için bu adresten proje şablonunu indirmeniz gerekiyor. İndirilen dosyayı bilgisayarınızın %USERPROFILE%\Documents\Visual Studio 2015\Templates\ProjectTemplates\Visual C#\ dizinine kopyalayın. Kurulumu tamamladıktan sonra Visual Studio’da yeni bir Bot Application uygulaması oluşturabileceksiniz.

2. Adım: Normal şartlarda yayına almak istediğiniz bir bot uygulaması için Bot Framework’ün sitesindeki “Register a bot” menüsünden kayıt yaptırmanız gerekiyor ama test amaçlı çalışmalar için Bot Framework Emulator’ünü kullanabilirsiniz. Bu emülatörü https://emulator.botframework.com/ adresinden indirebilirsiniz. Emülatörü indirip bilgisayarınıza kurun.

3. Adım: 1. adımda anlatılan proje şablonunu doğru dizine kopyaladıktan sonra Visual Studio’yu açın. Yeni bir proje oluşturun, seçeneklerde Bot Application gelecektir, bu seçeneği seçmeniz gerekiyor. Projeniz oluştuysa ve bir hata almadıysanız projenizi çalıştırın. Web tarayıcısındaki adresin sonuna api/messages ekleyip URL’ye erişip erişmediğinizi kontrol edin. Ardından kurduğunuz emülatörün giriş ekranına projenizin messages API url’sini yazın. Örneğin bende oluşan URL http://localhost:3979/api/messages şeklinde. Altta yer alan Microsoft App ID gibi alanları boş bırakarak CONNECT butonundan bot uygulamanıza bağlanın. İşlem bu kadar, artık uygulamanızla mesajlaşabilirsiniz.

4. Adım: Uygulamanızda neler olduğunu görmek isterseniz projenizin Dialogs klasörü altındaki RootDialog class’ında MessageReceivedAsync metoduna bir breakpoint koyarak emülatörden bir mesaj gönderebilirsiniz. Halihazırde gelen mesajlaşma kısmında basit olarak gönderilen mesajın kaç karakterden oluşturulduğu bilgisi dönülmektedir.

Alttaki resimde MessageReceivedAsync metodundaki kodlar ve gelen mesaj görünüyor:

Alttaki resimde de gönderdiğimiz mesaj ve bot uygulamasından gelen yanıt var. Sağ kısımdaki Log alanında da bağlantı ve mesaj gönderim durumlarıyla ilgili bilgile

r var.

Bot Framework ile yapılmış daha gelişmiş örneklere Github’daki https://github.com/Microsoft/BotBuilder/tree/master/CSharp/Samples adresinden ulaşabilirsiniz.

.Net de Stack ve Heap Kullanımı

.Net ortamında uygulama geliştirip derlediğimiz zaman arka tarafta bir çok işlem olmaktadır. Oluşan bu işlem sırasında kodlarımızın derlenip RAM üzerinde tutulan Type larımızın çalışması ile birlikte uygulamamız ayağa kalkmaktadır. Peki bu RAM üzerinde tutulan Type larımız nasıl tutuluyor, ne kadar süre tutuluyor tarzında sorularınızı duyar gibiyim.
Bildiğiniz gibi RAM, Stack ve Heap dediğimiz iki alandan oluşuyor. Bu her iki teriminde türkçe karşılığı “yığın” olarak çevrilsede kendi içlerinde farklı görevler üstlenmektedirler. .Net’ de metotları çalıştırdığımızda veya var olan metodlar üzerinde değişiklik yaptığımızda, stack dediğimiz alanda meydana gelmektedir. Bu işlemi sırasıyla yaparak, her biten işlemi üste atarak sırasıyla alttaki kutulara doğru çalışmaya devam eder. Stack üzerinde düzinelerce işler olabilir. Stack’te statik bilgiler tutulur. Stack te yapılan işlemler sonlanır. Stack içinde LIFO (Last in First Out) mantğıyla çalışır. Heap te ise stack ten farklı olarak yapılan işlemlerden ziyade bilgi tutmak amaçlı çalışmaktadır. Heap’te yapılan işlemler otomatikmen sonlanmaz. .Net de Heap için yapılacak olan Garbage Colletor ile temizleme işlemi yapılabilir., Heap alanında dinamik veriler tutulur.

Resimde de görüldüğü gibi Stack içinde veriler sıralı olduğu için, Heap’ e göre verilere daha hızlı ulaşılabildiğinden stack için daha performanslıdır diyebiliriz. Çünkü Heap içerisinde Type lar dağınık bir şekilde bulunmaktadır.
.Net ortamında da bu şekilde bir işlem söz konusudur. Yazdığınız bir metod, stack üzerinde çalıştıktan sonra tekrardan kullanılmama gibi bir durum söz konusu ise çalışan metod stack ten çıkar. Eğer bir class tanımlayıp onun içinde bir int,string, double veya decimal tarzında bir type tanımladığınızda bu stack üzerinden tutulur. Fakat tanımlanan class heap üzerinden tutulduğu için ve class ın içinde tanımladığımız value typelarda bu alanda adreslenmektedir. Şimdi Stack ve Heap üzerinde tutulan Value Type ve Reference Type ı inceleyelim.

Reference Type: Class, Interface ve Delegate oluşur. Bunun yanında Dynamic, object, string (String den türetilmiştir.) 2 değişkeni tek bir objeden adresleyebiliriz.

Value Type: Numerik değişkenler, Boolean, Char, Date, Struct(Reference Type içinde olsa bile). Burdaki tüm değişkenler kendilerine ait adreslerde tutulurlar.

Çalışan metodumuz ilk olarak stack üzerinde

Heap Üzerinde

.Net de bir metodun temel düzelyde stack ve heap üzerinde çalışma şekli yukardaki gibidir. Metodumuz çalışıp bittikten sonra herhangi bir işi kalmadığı için stack üzerinden silinecektir. Heap üzerindeki değişkenimiz ise .net tarafından çalıştırılına Garbage Collector sayesinde temizlenmiş olacaktır.

NOT: Main() metodu da bir metot olduğundan Stack üzerinde çalışır.

PL/SQL TABLE TYPE Kullanımı

Daha önce yazımızda TYPE kavramını açıklayarak örnek procedure içinde kullanımına değinmiştik. Yazıya TYPE Collection tıklayarak ulaşabilirsiniz.
Table Type’ a gelecek olursak tek başına bir anlam ifade etmeyen, belirli bir type ile birlikte kullanılması gereken bir collectiondır. Table Type ları List olarak düşünebiliriz. Table typelar tanımlamak için ilk olarak type ı tanımlamamız gerekmektedir.

Type ı tanımladıktan sonra table type ı tanımlayabiliriz.

Bildiğiniz gibi bir type, sadece bir dataseti döner. Fakat eklediğimiz table type sayesinde bir veya birden fazla dataseti dönerek tek bir değişken üzerinden işlem yapabiliriz. Peki şimdi type ı ve table type ı tanımladık. Bu iki özelliği bir procedure veya function içinde kullanmak istersek daha önceki yazımızda da bahsettiğimiz gibi type ı ve table type initialize etmemiz gerekmektedir.

Yazdığımız procedure un dönüş değerlerini ise hazırladığımız bir scriptle kontrol edebiliriz.

Çıktı ise
10
1
————–
20
2

Şeklinde olacaktır.

PL/SQL Tablo Lock Kaldırma

Oracle veritabanı üzerinde bulunan tabloların yoğun bir transaction yağmuruna tutulmasından dolayı tablonun kitlenmesine yani lock almasına sebebiyet veriyor. Oluşan locktan dolayı tablo üzerinde SELECT, INSERT, UPDATE, DELETE işlemlerini yapamıyoruz. Bu sorunun çözümü ise lock alan tablonun o anki processi kill ederek sorunu çözmek.

İlk olarak aşağıdaki selecti çalıştırıyoruz.

Çalışan select sonucunda bir veya birden fazla kayıt görüntülenecektir. Önce sid, sonra serial#  alanlarını yazdıktan sonra aşağıdaki kodu çalıştırarak tablo üzerindeki lockı kaldırabiliriz.

PL/SQL TYPE COLLECTION nedir?

Kod yazarken değişken tanımlamak, bu değişkenler üzerinde işlem yapmak bir yazılımcının vazgeçilmezidir. Bir çok şekilde değişkenler tanımlayıp verilerimizi bu değişkenler üzerinden kontrol edebiliriz. Bazen birden fazla değişkeni tek bir grup halinde yani Collection olarak tutup işlem yaptırabiliriz. Collection yapısı bir çok programlama dilinde bulunduğu gibi PL/SQL’ de de bulunmaktadır. Type konusu PL/SQL de Dynamic Bulk Collect olarakda düşünebiliriz.
Type Collection’lar kullanıcağı package, stored procedure, function içinde çok fazla değişkeni tek bir koleksiyon halinde tutup değişkenleri input veya output olarak kullanabilmemizi sağlar. Temel düzeyde bir type aşağıdaki gibi oluşturabiliriz.

Oluşturduğumuz TYPE’ı herhangi bir procedure, function veya paket içinde kullanabiliriz.

Burda tanımladığımız Type sadece bir dataseti dönecek şekilde çalışabilir.

Eğer tanımladığımız type içerisinde çok fazla değişken var ve procedure içinde initialize ederken çok fazla NULL yazmak istemiyorsak konunun ilk başında tanımladığımız TYPE’ a gelip bir kaç satır kod bloğu ekleyerek her çağrım sırasında otomatik initialize edilerek, her çağrım sırasında procedure veya function üzerinde değişiklik yapmamış oluruz. Bu da zaman ve yönetim açısından fayda sağlayacaktır.
Oluşturacağımız TYPE, aşağıdaki gibi intialize edebiliriz.

Bu şekilde oluşturduktan sonra procedure içinde aynı şekilde çağırıp type initialize ederken NULL yazmayız.

MEAN ile Full Stack Development

Full stack developer, yazılımın hem back-end(arka yüz), hem front-end(ön yüz) hem de veritabanı programlama kısımlarında uzmanlığı olan ve geliştirilen projenin yazılımsal tüm süreçlerinde görev alan yazılımcılar için kullanılan mesleki tanım. Günümüzde bazı şirketlerde bu tarz yazılımcılara ihtiyaç duyuyor ve projeler full stack development usulüyle geliştiriliyor. Eskiden Linux, Apache, MySQL, PHP (LAMP) vb. stack kavramları yaygınken artık gelişen ön yüz teknolojileri ve birçok seçeneğin olmasıyla birlikte stack’lerde oldukça arttı. Bu stack’lerden birisi de MEAN, yani MongoDB, Express, Angular.js, Node.js. Yani bu 4 uygulama ve kütüphanenin web projelerinde oturmuş bir yapıyla kullanılması için bulunmuş ve yavaş yavaş çoğu yazılımcı için standart hale gelen bir stack.

mean-stackMEAN açık kaynak kod projedir. www.mean.io adresinden dağıtımı yapılıyor ve detaylı dokümantasyonu bulunuyor. MEAN’de bulunan bileşenler, yani MongoDB, Express, Angular.js, Node.js bir web uygulamasının uçtan uca geliştirilmesi için bizlere yeterli olan herşeyi veriyor. MongoDB ile veritabanını, Angular.js ile ön yüz geliştirmeleri, Node.js arka yüz tarafı için gerekli altyapıyı ve bileşenleri elde ediyoruz, Express de kolayca web sitesi, web api, single-page uygulamalar yapmamızı sağlayan bir Node.js bileşeni. Ben de bu yazıda full stack yazılımcılar için kullanışlı olan bu MEAN’i sizlere kısaca tanıtacağım.

MEAN stack ile projeler geliştirmek istiyorsanız aşağıdaki konularda bilgi sahibi olmanız gerekiyor:

  • Temel HTML ve CSS bilgisi
  • Temel JavaScript bilgisi
  • Temel programlama bilgisi (değişken, döngü, sınıf yapısı vb.)
  • Temel veritabanı bilgisi (bilhassa NoSQL)

MEAN’deki bu 4 bileşeni inceleyelim:

MongoDB: Cross platformlarda “document oriented database” temelli uygulamalar geliştirmek için kullanılmaktadır.  Document oriented database denmesindeki sebep ise MongoDB’de her kayıt bir döküman olarak veritabanında Binary JSON olarak dinamik şemalarda tutulmaktadır. Bu nedenle içerisinde saklanan veriler geleneksel SQL sorgularıyla değil, NoSQL terimleriyle sorgulanır. Bu sayede uygulamalar daha hızlı çalışmaktadır.  MongoDB şu an dünyadaki birçok kurumsal ve çok kullanıcılı sistemler tarafından kullanılan bir veritabanıdır.

Express: Node.js ile hızlı ve düzenli proje gerçekleştirebilmemizi sağlayan bir kütüphanedir. Node.js dünyasının en popüler bileşenlerinden birisidir. Single-page application, web api servisleri ve web sitesi uygulamaları geliştirmek için hazır yapılar sunar ve bu tarz projelerin kolayca geliştirilmesini sağlar. Node packege manager(npm)’den ulaşılacağı gibi detaylı bilgiler ve kaynaklar için web sitesi http://expressjs.com/ adresi de incelenebilir.

Angular.js: Node.js’in client-side bileşenlerini saymazsak MEAN stack’inin istemci taraflı çalışan kısmıdır, yani MEAN ile geliştirilen projelerde istemci kısmında Angular.js kullanılır. Angular Google tarafından geliştirilen açık kaynaklı bir web application framework’üdür. İstemci tarafında döngü yapıları kurma, veri bağlama, veri dinleme, URL yönetimini yapma gibi birçok işlevi yerine getirir.

Node.js: Javascript ile  server side web uygulaması geliştirmeye olanak sağlamaktadır. Google tarafından geliştirilen V8 üzerinde çalışmaktadır. Yazılan JavaScript kodunu makine diline çevirmektedir.  Web uygulamasında asenkron çalışan eventler sayesinde eş zamanlı işler yapılmasını ve isteklerin daha hızlı yanıtlanmasını sağlar.

Mean.io Kurulumu ve Proje Oluşturma

Mean.io kurmak için bilgisayarımızda daha önceden Node.js’in kurulu olması gerekiyor. Node Package Manager(npm) ile MEAN’i hızlıca kurabilir ve ardından da projeler oluşturabiliriz. MEAN’i kurmak için Linux veya Windows komut satırından

npm install -g mean-cli

komutunu kullanıyoruz. Ben Windows’da basit bir örnek yaparak nasıl bir proje oluşturacağımızı anlatacağımz hızlıca. MEAN ile standart şablonda bir proje oluşturmak için aşağıdaki ekran görüntüsünde görebileceğiniz mean init ProjeAdi komutunu kullanıyoruz. Aşağıdaki ekran görüntüsü size referans olacaktır, çalıştıracağınız komutları sırasıyla aşağıda belirtiyorum:

mean init DevNotProject1

Do you want to set up an admin user? sorusuna N yanıtı verip ilerleyin

cd DevNotProject1 && npm install

cd DevNotProject1 && bower install

cd DevNotProject1

gulp

MeanProject1

Not: Kurulum sonrasında proje oluştururken ben sorun yaşamadım ama Windows 8 ve üzeri işletim sistemlerinde kurulum esnasında hatalar alınabiliyor. Tavsiyem bu hataları almamak için yukarıda anlattığım kurulum adımlarını tamamlayıp, sonrasında da http://learn.mean.io adresindeki “Installation problems on Windows 8 / 8.1″ kısmında belirtildiği üzere Phyton 2.7.x sürümünü kurup, Node Package Manager(npm)’ı da güncellemeniz olacak. Detaylı bilgilere belirttiğim sayfadan bakabilirsiniz.

Sıra örneğimizi çalıştırmada. Angular.js’i içeren basit bir HTML sayfasına aşağıdaki gibi doldurup sayfayı test ediyoruz.

mean-ilk-ornek

Sayfayı tarayıcıda çalıştırdığımızda aşağıdaki gibi bir sonuç alıyoruz. MEAN dünyasına hoşgeldiniz.

mean-ornek-cikti

Raspberry Pi ile RaspiRobot V3f kullanımı

Gün geçtikçe Raspberry Pi’ye olan ilgi artmaktadır. Bunun yanında cihazı daha değişik şekillerde kullanmak için yeni kartlar çıkmaktadır.

                Bu yazımızda Simon Monk tarafından geliştirilen RaspiRobot V3f kartını inceleyeceğiz. Bir önceki versiyonu RaspiRobot V2 iydi. Temel olarak RaspiRobot, Raspberry Pi’ ye bağladığınız robot tarzı cihazları kontrol etmek için tasarlanmış bir karttır.

RaspiRobot’u özelliklerini inceleyecek olursak;

labelled

  • Raspberry Pi models A, A+, B and B+ modelleri ile uyumludur.
  • Açık kaynak donanıma sahiptir
  •  Github üzerinden python da yazılmış açık kaynak kütüphanesini örneklerle görebilirsiniz.
  • Çift yönlü motor kontrolü
  • PWM güç kontrolü özelliği barındırmaktadır. Bu sayede motorların her birini, birbirinden bağımsız bir şekilde yönetilebilir. Bu sayede yönlerini ve hızlarını bağımsız bir şekilde kontrol edebilirsiniz.
  • Raspberry Pi üzerinden  güç sağlayabilir.
  • Kendi kartı üzerinden de  6 x AA bataryası sayesinde güç verebilirsiniz.
  • HC-SR04 ultrasonic mesafe sensörü bulundurmaktadır. Sadece karta takmanız yeterli.  Python kütüphanesiyle kolay bir şekilde yönetebilirisiniz.
  •  5V I2C header, Adafruit displays pin uyumu
  • 2 adet, herbiri 2A open collector çıkışı barındırmaktadır.
  • 2 adet LED
  • 2 adet switch girişi
  • Kendi üzerinde barındırdığı GPIO pinlerinide kullanabilirsiniz.

RaspiRobot üzerinde H Bridge chip barındırır. Bu chip genel olarak robotik uygulamalarda DC motorları kontrol edebilmek için kullanılır. Chip sayesinde motor hızlarını birbirinden bağımsız bir şekilde kontrol edebilirsiniz.

V3’teki en önemli değişim ise motor sürücüsü olan TB6612FNG dir. Gelen özellik ise motor voltajını 1V yükseltmektedir.

RaspiRobot’u, Raspberry Pi ye bağladığınız da eğer gücü Raspberry’ den alıyorsa  mesafe sensörü, led ve I2C cihazlarını çalıştırmaktadır.  Motorların çalışması için ekstra bir güce ihtiyac vardır. Bu gücüde RaspiRobot üzerinden almaktadır.

 

Aşağıdaki şekilde RaspiRobot’un kütüphanesini kurabilirsiniz.

Bu yazımızda örnek amaçlı RaspiRobot ile  basit bir şekilde bir tekerlek nasıl döndürüldüğünü inceleyeceğiz.

 

İlk olarak Raspberry Pi cihazımıza RaspiRobotu, bir tane DC motor ve DC motoru çalıştırmak için pillerimizi bağladık.  Bu cihazları birbirine bağlayıp klavye, mouse ve monitörü de bağlarsanız bilgisayarın açıldığını göreceksinizdir.

 

20160825_204228

Sonrasında bir tane bir dosya açıp aşağıdaki kodları yazabilirsiniz.

Kod bloğunu yazdıktan sonra tekerleğin dönmeye başlayıp 5 saniye geçmesinden sonra dönen tekerleğin durduğunu görüceksiniz. Daha detaylı bilgi için

videosunu seyredebilirsiniz.

 

Kaynakca: https://www.monkmakes.com/rrb3/