ASP.NET MVC – Asenkron İçerik Yükleme

ASP.NET MVC – Loading Content Asynchronously yazısının Türkçe versiyonudur.
This post is written in Turkish. English version: ASP.NET MVC – Loading Content Asynchronously

Merhaba arkadaşlar. Bu yazıda sayfa yüklenmesini geciktiren içerikleri asenkron olarak nasıl yükleyebileceğimizi anlatmaya çalışacağım.

Büyük resimler veya yüksek miktardaki metinler sayfa yüklenmesinde bazı gecikmelere sebep açabilir. Asenkron yükleme tekniğiyle bu içeriklerin sayfanın yüklenmesini bloklamadan yüklenmesini sağlayabiliriz.

Neden?

Bu yazıyı yazmamdaki sebep kullanıcılarınıza nasıl daha iyi bir kullanıcı deneyimi sunabileceğiniz göstermektir. Kullanıcı deneyiminin yanı sıra, büyük miktardaki verileri asenkron olarak yüklemek sayfa hızınızı da önemli ölçüde etkileyecektir. Senkron yüklemelerde büyük miktardaki veriler sayfa yüklenmesinde bazı gecikmelere yol açabilir ve UX açısından sakıncalıdır.

Senaryo
Bu yazıda kullanılacak senaryoda birkaç resim yükleyen basit bir HTML sayfasını inceleyeceğiz.

Kullanılanlar:
-ASP.NET MVC
-Twitter Bootstrap (zorunlu değil)
-jQuery

Öncelikle birkaç görseli sayfada senkron olarak yükleyeceğiz ve daha sonra farkı görmek adına bunları asenkron olarak yükleyeceğiz. Asenkron yükleme işlemini Ajax çağrıları yaparak gerçekleştireceğiz. Görsellerin kaynaklarını (src) sayfa yüklendikten sonra atayarak sayfadaki gecikmelerin önüne geçmiş olacağız.

Senaryo sonda böyle gözükecek.

 

Senkron Yükleme

Önce daha kötü olan senaryoyu inceleyelim. Görselleri senkron yükleyeceğimiz ‘SyncPage’ sayfası için HomeController altında bir Action oluşturalım.

Bu metodda, Boğaziçi Köprüsü’ne ait 4 fotoğrafın linklerini ekleyip model olarak döndüreceğiz.

View kısmında ise bir paneli her bir fotoğraf için kolonlara bölüyoruz.

Bu görselleri yüklemenin olağan yolu. Henüz özel birşey yok. Lakin büyük boyuttaki görseller yüklerken senkron yükleme sayfada gecikmelere yol açacaktır. HTTP Request, resimler tam olarak kaynaktan alınana kadar sonuçlanmayacaktır.

Asenkron Yükleme

Bu bölüm güzel işler yapacağımız  kısım. HomeController’a yeni bir Aksiyon ekleyerek başlayacağız. Bu aksiyon, asenkron yükleme için kullanacağımız method olacaktır. AsyncPage ismindeki Action’umuzu oluşturalım.

 

 

AsyncPage ismindeki aksiyonu oluşturmadan önce bir şeye değinmek isterim. Daha önce görselleri Ajax istekleri ile yükleyeceğimizden bahsetmiştim.

O halde verilerimizi JSON formatta sunmalıyız. Bunun için sayfanın Action’undan farklı olarak, öncelikle JSON formatta görsellerin kaynaklarını döndüren bir method yazalım. Bu metodun ismi ise GetImageData() olsun.

GetImageData() metodu:

Bu metodda, görsel verilerini JSON formatta döndürdük.

Şimdi AsyncPage sayfamız için Action oluşturalım.

Lütfen dikkat edin, bir model döndürmedik.

Bir model döndürmedik çünkü bu senaryoda bir modele ihtiyacımız yok. Yukarıda bahsettiğim gibi, görselleri ‘/Home/GetImageData’ yoluna Ajax istekleri yaparak yükleyeceğiz.

Şimdi AsyncPage sayfamızın View’ını oluşturalım.

Bu sayfada da, bir satırı 4 kolona böldük. Farklı olarak, her bir görseli ‘Id’ etiketiyle etiketledik. Bu etiketlere JSON formatındaki veriyi manipüle edebilmek için ihtiyacımız olacak.

Bu sayfanın JS kısmında ise görselleri JSON formatta yükleyip, görsellerin kaynak özelliklerine (src) atama yapıyoruz.

‘/Home/GetImageData’ yoluna bir Ajax isteği yaptık ve her bir resmin kaynaklarını güncelledik. Dikkat edeceğiniz üzere her bir resmin ‘Id’ etiketini burada kullandık.

Böylece asenkron yüklemeyi tamamlamış olduk, böylece sayfadaki görsellerden kaynaklanan gecikmeyi engellemiş olacağız.

İki senaryo arasındaki farkı aşağıda görebilirsiniz.

Senkron yükleme:

 

Asenkron yükleme:

Senkron yüklemede, HTTP Request’i görseller kaynaktan yüklenene kadar sonuçlanmıyor. Bu da sayfanın yüklenmesinde gecikmeye yol açıyor.

Asenkron yüklemede ise, görselleri arkaplanda asenkron olarak yüklediğimiz için sayfadaki gecikmeleri engellemiş oluyoruz.

Kaynak koda Github‘dan erişebilirsiniz.

 

Fazlasını Oku

c# veri tipleri

C# Veri Tipleri ve Değişken Tanımlama

Bu yazıda veri tipinin ne demek olduğunu, değişkenin ne demek olduğunu ve C# programlama dilinde kullanılan veri tiplerini inceleyeceğiz.

Bu bahsettiğimiz kavramlara girmeden önce verinin ne olduğunu ve bir bilgisayar programının temel işlevlerini gözden geçirmemizde fayda var.

Veri ve Bilgi

Veri dendiğinde işlenmemiş, saf bir dijital “kütle” yi düşünmeliyiz. Bilgiyi veriden ayıran ise, bilginin anlamlı bir bütün oluşturmasıdır. Bilgiyi işlenmiş veri olarak tanımlamak mümkün.

Bir cep telefonu numarası tek başına bir veridir. Fakat bunun bir telefon numarası olduğunu bilmediğimizi varsayarsak, bu aynı zamanda bir parola veya farklı birşeyi temsil eden metin de olabilir.

Bunun bir cep telefonu numarası olduğunu öğrendiğimizde bu veri bir bilgiye dönüşür. Artık bu verinin neyi temsil ettiğini biliyoruz. Bu ifadenin aranacak bir telefon numarası olduğu gerçeğini farkettiğimiz an bu artık bir bilgidir diyoruz.

Programlamada veriler nasıl kullanılır?

Bir bilgisayar programının temelde yaptığı iş; bir takım verileri belli işlemlere tabii tutarak bu verilerin kullanıcılara sunulmasıdır. Günümüzde en popüler uygulamalara dahi baktığımızda tümünün elde edilen verileri işleyerek kullanıcılara göze hoş görünen bir şekilde sunma normu üzerine bina edildiğini göreceğiz.

Kuvvetle muhtemel daha önce duyduğunuz bir bilgiyi paylaşacağım: Bilgisayar işlemcilerinin tanıdığı tek veri tipi binary

Peki bu ne demek?

Bilgisayar işlemcileri tüm hesaplamalarını LOW ve HIGH sinyali üzerinden yaparlar. Örneğin: En basit bir toplama işleminde dahi, toplama işleminde kullanılan sayılar tam toplayıcı devreler sayesinde işlemcilerde hesaplanır. Full adder devrelerin toplama işlemini yapabilmesi için sayılara binary formatında ihtiyacı var.

Neyse ki biz bu kadar ayrıntıyı düşünmek zorunda değiliz.

Bilgisayar programlarının geliştirilme sürecini kolaylaştırmak için gelişen teknolojiyle birlikte modern programlama dilleri gelliştirilmiştir. Gelişen teknoloji sayesinde bilgisayar programı geliştirme süreçleri giderek kolaylaşmıştır. Modern programlama dillerinde yüksek bitli sayısal değerler, metinler için veri tipleri, ve hatta gerçek hayatta temsil edilen tipler için veri tipleri oluşturmak mümkün.

Bu yazıda C# dilinde en sık kullanılan veri tiplerini ve değişken tanımlamayı inceleyeceğiz.

C# Veri Tipleri

C# dilinde programlama yaparken kullanılan veri tipi çok fazla olmasına rağmen bu yazıda en çok kullanılan veri tiplerini sınıflandırarak inceleyeceğiz.

c# veri tipleri

Veri tiplerini incelerken yapılması gereken en temel sınıflandırma Değer ve Referans tipleridir.

C# Değer Tipleri

Doğrudan değer atayabildiğimiz veri tiplerine değer tipleri diyoruz. Bunlara örnek olarak int, char, double, float verilebilir. Bunlar doğrudan sayısal değer veya karakter taşırlar. Bir değer tipli değişken tanımladığınızda sistem otomatik olarak bu değişken için gerekli olan alanı bellekte ayıracaktır. (Allocate).

Aşağıda C# değer tiplerinin listesini görüyoruz.

Tip Değer tipi Aralık Başlangıç Değeri
bool True veya false. True veya False False
byte 8 bit (unsigned) 0 – 255 0
char 16 bit ‘\0’
decimal 128 bit ondalıklı (-7.9 x 1028 – 7.9 x 1028) / 100 – 28 0.0M
double 64-bit akan sayı (+/-)5.0 x 10-324 – (+/-)1.7 x 10308 0.0D
float 32-bit akan sayı -3.4 x 1038 – + 3.4 x 1038 0.0F
int 32-bit işaretli tamsayı -2,147,483,648 – 2,147,483,647 0
long 64-bit işaretli tamsayı -9,223,372,036,854,775,808 – 9,223,372,036,854,775,807 0L
sbyte 8-bit işaretli tamsayı -128 – 127 0
short 16-bit işaretli tamsayı -32,768 – 32,767 0
uint 32-bit işaretsiz tamsayı (+) 0 – 4,294,967,295 0
ulong 64-bit işaretsiz tamsayı (+) 0 – 18,446,744,073,709,551,615 0
ushort 16-bit işaretsiz tamsayı (+) 0 – 65,535 0

C# Değer Tiplerinin nasıl tanımlandığı ile örnekler aşağıda verilmiştir.

using System;

public void Sample() 
{
   int a = 544;
   double b = 44.5;
   bool isAssigned = true;
   byte c = 200;
}

 

C# Referans Tipleri

Referans tipleri doğrudan değeri taşımak yerine bu verilerin referanslarını barındırırlar. Bir diğer deyişle, bu verilerin bellek üzerindeki konumlarını taşırlar. Eğer referans tipinin bellekte gösterdiği yerdeki veri değişirse, bu değişim herhangi bir işlem gerektirmeden değişkene etki eder.

Birkaç referans tip örneği: dynamic, object, string.

Object: C#’ta tüm veri tiplerinin türediği sınıftır. object anahtar kelimesi, System.Object sınıfının bir takma adıdır.

using System;

public void SampleMethod() 
{
    Object o1 = new Object();
    o1 = 100;

    object o2;
    o2 = 100;

    object o3;
    o3 = "merhaba";
}

Görüldüğü üzere object tipindeki bir değişken herhangi bir değeri alabilir.

String: String tipindeki veriye herhangi bir metni atayabiliriz. String veri tipi herhangi bir karakter sınırı yoktur. Devasa boyutlardaki metinleri dahi taşıyabilir. C# dilinde herhangi bir metin ifadesi için kullanılabilecek yegane veri tipi string.

using System;

public void Ornek() 
{
   string str1 = "Merhaba";
   string str2 = "Dünya";
}

String tipindeki değişken tanımlarken kullanılan string anahtar kelimesi System.String sınıfının bir takma adıdır.

Son Notlar

Değişken tanımlama işlemi sizin için basit bir iş gibi gözükebilir. Fakat büyüyen projelerde kullanılacak değişken tiplerinin yanı sıra, değişkenlerde kullandığınız isimler bile önem kazanacaktır.

Değişkenin hizmet edeceği amaca uygun aralıkta tipte olması bir yana, şahsi olarak ingilizce isimli değişkenler tanımlamanızı öneriyorum. İngilizce isimli değişkenler tanımlamak ortak çalışılan projelerde takım arkadaşlarınızla birlikte daha uyumlu bir şekilde çalışmanızı kolaylaştıracak bir alışkanlıktır.

Fazlasını Oku

project types

C# İlk Proje : Visual Studio Kurulumu

C# ile ilk projenizi yapmadan önce Microsoft’un tümleşik geliştirme ortamı (IDE) Visual Studio’yu bilgisayarınıza kurmalısınız.

visualstudio.com adresinden ücretsiz olarak Visual Studio Community sürümünü yükleyebilirsiniz.

Visual Studio kurulumunu yaptıktan sonra ilk C# projemizi oluşturmaya hazırız.

Visual Studio Proje Tipleri

Visual Studio ile geliştirebileceğiniz uygulamaların aslında pek bir sınırı yoktur. Yine de özet bir bilgi olarak Visual Studio ile geliştirebileceğiniz temel uygulamalara örnekler verelim.

project types

Her ne kadar Visual Studio’da geliştirilebilecek proje tipleri çok daha fazla olsa da; bunları bu yazı için 3 ana grupta inceleyelim.

Masaüstü Uygulamaları

Console Application: Konsol uygulamalarıdır. Herhangi bir UI etkileşimi gerektirmeyen programlar oluşturmak istendiğinde kullanılmalıdır. Konsol uygulamalarında tek kullanıcı etkileşimi değer girme işlemidir.

Windows Forms: Windows Forms uygulamaları Windows ortamında geliştirilen temel pencere uygulamalarıdır. WPF ve sonrasında Windows Universal ile birlikte güncelliğini yitirmiş olsa da, bugün Türkiye’de birçok şirket Windows Forms uygulamaları geliştirir.

WPF: Açılımı Windows Presentiation Foundation olan WPF uygulamaları, Windows Forms uygulamalarına biraz modernlik ve özelleştirilebilirlik kazandırmak için geliştirilmiştir.

Windows Universal: Windows 10 ile birlikte duyurulmuştur. Windows Universal uygulamaları ile yazacağınız program tek bir binary ile tüm Windows cihazlarında çalışır. (PC, Tablet, Telefon, XBox, Hololens ve dahası.)

Windows Universal uygulamarında cihaz spesifik küçük ayarlamalar dışında tek bir ortak kodla programınız milyarlarca cihaz üzerinde çalışabilir.

Web Uygulamaları

ASP.NET Web Forms: ASP.NET teknolojisi ile web uygulamaları geliştirmek için kullanılan proje tipidir.

ASP.NET MVC: ASP.NET teknolojisi ile web uygulamaları geliştirmek için kullanılan bir diğer proje tipidir. Model – View – Controller yaklaşımını kullanır. Bugün en popüler web teknolojilerinden biri ASP.NET MVC’dir.

ASP.NET Web API: REST istekleriyle kullanılabilen bir web uygulaması geliştirmek istendiğinde ASP.NET Web API kullanışlı bir tercihtir.

Yardımcı Uygulamalar

Class Library: Birden çok .NET projesinde kullanacağınız kütüphaneleri kodlayıp bunları tek bir pakette farklı projelerinizde kullanmak istediğinizde bir Class Library oluşturursunuz.

Unit Test: Projeleri girdi ve çıktı değerlerine göre doğru değer üretip üretmediğine dayanarak test etmenize olanak sağlayan proje tipleridir.

 

İlk C# Projesi

İlk C# projesi için Console Uygulamasını tercih edeceğiz. Çünkü konsol uygulamaları, bizi arayüz tasarlama gibi gereksiz ayrıntılardan soyutlayarak içeriğe odaklanmamızı sağlayacak.

Visual Studio kurulumunu yaptıktan sonra ilk olarak bir proje oluşturmamız gerekiyor.

new project

File -> New -> Project adımlarını takip ederek proje oluşturma ekranına erişebilirsiniz.

Bu adımları izledikten sonra oluşturacağınız projenin ayrıntılarını seçeceğiniz bir pencere açılacak.

 

 

 

Açılan pencereden Console Application’u seçerek devam edelim. Bu adımı da tamamladığınızda ilk C# projemizi oluşturmuş olacağız.

new project

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace IlkProje
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Merhaba dünya.");
            Console.WriteLine("Bu benim ilk C# projem.");
            Console.Read();
        }
    }
}

İlk projemizi oluşturup çalıştırdığımızda ekrana Merhaba Dünya ve Bu benim ilk C# projem yazdığını göreceksiniz.

first c# project

 

Fazlasını Oku

.net framework

.NET Framework & C# Tanımı

.NET Framework Nedir

.net framework

.NET Framework, Microsoft’un 2002 yılında geliştirmiş olduğu uygulama geliştirme altyapısıdır. .NET Framework bir programlama dili değildir. .NET Framework çatısı altında uygulamalarda kullanılmak üzere bulunan kütüphane toplulukları bulunur.

.NET Framework başta Windows platformlarında çalışması için geliştirildi. .NET Core ile birlikte .NET uygulamaları her platformda çalışabilir hale geldi.

C# Nedir

csharp

C#, .NET Framework için geliştirilmiştir high level bir programlama dilidir. Bu, C# sadece .NET Framework çatısı altında çalışabilir demek değildir. C# başka platformlarda farklı amaçlar için de kullanılabilir, fakat C# dili .NET Framework ile birlikte kullanılmak üzere Microsoft tarafından geliştirilmiştir.

C#, high level bir programlama dilidir. Programlama dilleri, makine diline yakınlığı bağlamında low level ve high level olarak sınıflandırılır. Bir programlama dili insan tarafından ne kadar kolay okunabiliyorsa o programlama dili o kadar high level bir dildir.

High level programlama dillerinin makine diline dönüştürülme süreci low level dillere oranla daha uzundur. Tabii bu uzunluklar her ne kadar mikrosaniyeler mertebesinde olsa da, yüksek performans gerektiren işlemlerde bu süreç önem kazanmaktadır.

C# Dilinin Kullanım Alanları

High level programlama dilleri web ve desktop uygulamaları, mobil uygulamalar ve bulut uygulamaları geliştirmek için uygundur. Yani, yüksek grafik performansı gerektiren bilgisayar oyunları dışındaki tüm amaçlara hizmet ederler.

C# dili de diğer high level programlama dilleri gibi akla gelebilecek tüm projelerde kullanılabilir ve kullanım oranı oldukça geniştir.

 

 

Fazlasını Oku

Lazy loading with Waypoints

Hello,

In this post I’m going to explain how to load page content as client need it. In other words, how to load content when scroll to it vertically. We call it Lazy loading.

First thing you have to do is including Waypoints files in your project.

You can load required Waypoint.min.js from the Cloudflare CDN as well.

<script src="https://cdnjs.cloudflare.com/ajax/libs/waypoints/4.0.1/jquery.waypoints.min.js" type="text/javascript">

Next step is defining a Waypoint object.

 var waypoint = new Waypoint({
        element: document.getElementById('images'),
        handler: function () {
            //perform your loading action here.
        }
    });

You can also use offset property to manipulate scroll offsets.

 var waypoint = new Waypoint({
        element: document.getElementById('sectActual'),
        handler: function () {
           //perform your loading action here.
        },
        offset: 450
    });

You can also have a look into ASP.NET MVC – Loading Content Asynchronously post. I have demonstrated how to load images asynchronously in an ASP.NET MVC application.

Fazlasını Oku

Yeni Proje : İndirim Kuponu

Yer aldığım yeni proje nu bitirdik. Kasım 2016’da altyapısına başladığımız proje Ağustos 2017 itibari ile bitti.

indirimkuponu.com.tr adresinde yayına aldığımız projede, alışveriş sitelerinde geçerli İndirim Kuponu kodlarına tek yerden erişim imkanı sağlayarak tasarrufa imkan sağlıyoruz.

Nasıl Yapıyoruz?

Alışveriş siteleri, satışlarını optimize etmek için çeşitli indirim ve hediye kampanyaları düzenliyor. Biz de aracı şirketler aracılığıyla alışveriş sitelerinin indirim kuponlarına ve kampanyalarına web sitemizde yer veriyoruz.

Neden Yapıyoruz?

İndirim Kuponu’nu açmaya karar verdik çünkü üssel olarak büyüyen bir pazarda kullanıcıların ihtiyaçlarına düzgün bir şekilde cevap verecek bir altyapı sunmak istedik.

Alışveriş sitelerindeki bu kampanyalar sayesinde ciddi miktarlarda tasarruf sağlamak mümkün.

Neler var?

Hepsiburada, Boyner, Teknosa, Defacto… Türkiye’de hizmet veren aklınıza gelebilecek tüm alışveriş sitelerine ait indirim kuponu ve kampanyalara İndirim Kuponu’nda yer verdik. Giyimden elektroniğe, kozmetikten aksesuara kadar birçok kategoride binlerce indirim kuponundan web sitemiz aracılığıyla faydalanarak ayda yüzlerce lira tasarruf etmeniz mümkün.

Teknik altyapı

Projede ASP.NET MVC altyapısı ve Microsoft SQL veritabanı kullandık. Göz bebeğimiz olan Entity Framework Code First kullanarak zamandan ve emekten kazandık diyebiliriz. Tüm sayfalar HTML5 ile hazırlanmış ve mobil dostudur.

İndirim Kuponu’nu kodlarken nesne tabanlı programlama ilkelerine sadık kaldık. Bunun yanı sıra, Singleton, Abstract Factory, Repository Pattern gibi desenleri de kullanarak güzel bir altyapı sağladık.

https://indirimkuponu.com.tr adresinden İndirim Kuponu projesini inceleyebilirsiniz.

Fazlasını Oku

ASP.NET MVC – Loading Content Asynchronously

Türkçe versiyon için: ASP.NET MVC : Asenkron İçerik Yükleme

In this post, I’m going to demonstrate how to load render-blocking data asynchronously in an ASP.NET MVC application.

The render-blocking content such as images or huge string data may cause some delays when the page is rendering. The asynchronous loading technique is a proper ray to load those content without blocking the rendering process.

Why?

The reason that I’m writing this post is showing you a way to provide your users a better UX. Apart from presenting your data fancy, asynchronous loading is very important topic at being successful at SEO stuff. Loading large content synchronously causes delay at page loading process and this is not going to be nice for your page’s UX, apart from your SEO score.

 

CASE
The case in this post I am going to use is a simple page loads a few images.

The staff used:
-ASP.NET MVC
-Twitter Bootstrap (not necessary)
-jQuery

We’re just going to display a few images by loading them synchronously first, and asynchronously just after it. We are going to manage asynchronous loading by using Ajax requests, and setting image’s source properties by using jQuery.

This is how our test case will look like at the end:

SYNCHRONOUS LOADING

I’m going to examine the worse case first. Let’s create an action called ‘SyncPage’ in the Home controller.

In this method, we’re just going to add 4 URL’s of Istanbul’s beautiful place Bosphorus Bridge‘s photos and return the array as the model.

Now, it’s time to add a View. In the view, I’m going to add a panel and split it into columns for each image.

This is ordinary way to load images. But when loading large images, this will cause a delay at rendering process. The HTTP request is can not be concluded until images are loaded. LOADING LARGE IMAGES SYNCHRONOUSLY IS A BAD IDEA.

ASYNCHRONOUS LOADING

Well, this is the section of the post we are going to perform good job. We are going to begin by adding another method to Home controller just like we did in the previous section. Let’s write a method called AsyncPage and create the view for the action. Keep scrolling down.

 

 

Wait, I have mentioned that we are going to load images by performing Ajax request. Then, let’s write a method for provide our image data in JSON. We will call it GetImageData. It’s a must when we perform Ajax requests, we have to provide data in JSON format in order to make them recognized by our Javascript code.

GetImageData() method:

In GetImageData() method, we return our image array in JSON format instead of returning a View.

Now it’s time to create AsyncPage method.

Here it is, nothing special. Surprised?

It’s nothing in this method because we don’t need a model for this case. Like I mentioned above, we are going to load images by performing Ajax requests to /Home/GetImageData path.

Let’s create the View for AsyncPage action.

In the section you see above, we split the row into 4 columns just we did before. But notice that I have given id values for each image in order to manipulate JSON data.  It’s another must in order to manipulate JSON data correctly.

Let’s have a look script section of this view.

Simple, we perform an Ajax request to path ‘/Home/GetImageData/’ and set our images’ source property. Notice that we used the id properties for each image. Therefore we get a correct place to get our images displayed correctly.

That’s all, our images will be loaded asynchronously and we will be able to avoid delays at the page loading process.

You can see the difference between two cases below. Keep your eyes on progress rings and notice the difference.

Synchronously loading case:

 

Asynchronously loading case:

In the synchronous loading case the HTTP request waits for images to get ready to display. It’s the reason of delay. But in asynchronous case, we avoid the delay in page rendering by loading images in the background by making Ajax calls and setting each image’s source property.

The entire source code is accessible at Github.

Fazlasını Oku

Graduation project: Pay & Go.

The days when I go out with my friends, I spotted a problem: We can’t pay the check! Students go dutch generally when they go out. Without enough amount of coin, this process may be harder than you expected.

I came up with the idea ‘splitting the check’. The project Pay & Go offers you going dutch with no trouble.

pay-and-go-main

 

The key point of the app QR codes. At each restaurant, there is QR codes on the tables associated with the specific restaurant and specific table. Customers are able to access the restaurant’s menu by scanning the QR codes on the tables.

Pay  & Go also offers splitting the check. For each person on the table, different sessions starts.

With the aid of different sessions, it is possible to pay the check separately. Pay & Go is the best way to go dutch.

 

People will also be able to place their order on their mobile phones instead of calling the waiter to place an order.

The project Pay & Go is a project that makes people’s live easier. People can give their orders by the mobile application of the project when they go out. Moreover, they can pay their check with a credit card through the application.

In the development process 8.527 lines of  C# code is written. (HTML and XAML excluded.) The fundamental approaches of Object Oriented Programming are followed. Modules are loosely coupled and reusable.

Model – View – ViewModel pattern is followed as well. The key idea of MVVM pattern is Separation of Concerns. It represents the independence between the modules. In the projects MVVM pattern followed it is possible to write reusable and human-readable code, build scalable modules.

The entire source code of the project is accessible at https://github.com/fatihdumanli/paymentapp/ .

Fazlasını Oku

Meeting with Microsoft CEO Satya Nadella

Micosoft CEO Satya Nadella came to Middle East Technical University (Ankara, Turkey) in order to attend ‘Big Data and IoT Developers Day‘ on 6th January in 2016.

A few startup projects in Turkey has been selected to be presented to Satya. Project owners have had a change of discussing projects with him. One of those project was Internet of Coffee which has been built by me and my mate Bertuğ Berkay Yemen. Hereby, me and my mate Bertug had a change of discussing about our project Internet of Coffee with Satya. Internet of Coffee has awarded many local and global awards.

  • Bahcesehir University Robotics Hackathon 1st Prize (Istanbul, Turkey)
  • Intel IoT Roadshow 3rd Prize (Berlin, Germany)
  • AngelHack Moscow Microsoft BizSpark Membership Prize (Moscow, Russia)
  • TadHack Istanbul 1st Prize (Istanbul, Turkey)

 

Satya is giving a speech about projects.

 

The other thing I couldn’t believe that he presented our project Internet of Coffee on the stage. He started with “I love this Internet of Coffee!” and kept on going with its features!

 

Satya is talking about Internet of Coffee.

It was an extraordinary privilege for both of us and we are certainly very honored. The event “Microsoft Big Data and IoT Developers Day” has also influenced Turkish media.

http://www.hurriyet.com.tr/microsoftun-patronu-satya-nadella-turkiyeye-geldi-40036970

Fazlasını Oku

Our Junction 2015 Journey in Helsinki!

Between 6th-8th of November, I participated Junction Hackathon in Helsinki with Bertug. We have built two projects during the hackathon which named Runny and Health Care.

We have been awarded with amazing Pebble Steel‘s each. That is really a tremendous satisfaction!

And we have met two Finnish, and one Latvian MSPs during the hackaton. This occurence caused a small MSP Meetup in Helsinki! We’ve talked about newest Microsoft Technologies and Microsoft Student Partners program.

In last three days, I have experinced plenty of great stuffs.

Btw, Helsinki is the one of the most beautiful cities I’ve ever seen.

Cheers!

12226470_10153703972399795_17907330_n

 

Fazlasını Oku