C# ile JSON.NET – Dynamic & ExpandoObject

Merhaba,

Newtonsoft tarafında geliştirilen JSON.NET kütüphanesi ile .NET üzerinde JSON verileri işleyebilir, sorgulayabilir, sınıflardan JSON veriye ya da ters yöne doğru serialization/deserialization işlemi yapabilirsiniz. Hatta MongoDB ve daha bir çok global uygulamanın da alt yapısında JSON, BSON gibi JSON teknolojisini kullandığını düşünürsek, JSON bilgisinin daha evrensel bir yetenek olduğunu düşünmenizi sağlayacaktır.

C# ile JSON.NET eğitim serisinin Dynamic & ExpandoObject isimli videosu; https://www.youtube.com/watch?v=WnAgwKRjK58

İyi çalışmalar
Cihan Özhan

Go App #1 : Go ile TCMB Döviz Kur Uygulaması Geliştirmek

Merhaba arkadaşlar,

GO(GOLang) programlama diliyle ilgili mini bir uygulama pratiği yapmak üzere yeni bir eğitim hazırladım. Bu eğitimde ticari piyasada sık kullanılan TCMB Döviz Kur web servisini projemizde işleyip döviz bilgilerini alıyoruz.

IDE : Atom
Programlama Dili : GO
Eğitim Video URI : https://youtu.be/QTD_vzTcj7g

Kaynak Kod:

package main

import (
	"encoding/json"
	"encoding/xml"
	"fmt"
	"log"
	"net/http"
	"os"
	"runtime"
	"strconv"
	"time"
)

type CurrencyDay struct {
	ID         string
	Date       time.Time
	DayNo      string
	Currencies []Currency
}

type Currency struct {
	Code            string
	CrossOrder      int
	Unit            int
	CurrencyNameTR  string
	CurrencyName    string
	ForexBuying     float64
	ForexSelling    float64
	BanknoteBuying  float64
	BanknoteSelling float64
	CrossRateUSD    float64
	CrossRateOther  float64
}

type tarih_Date struct {
	XMLName   xml.Name `xml:"Tarih_Date"`
	Tarih     string   `xml:"Tarih,attr"`
	Date      string   `xml:"Date,attr"`
	Bulten_No string   `xml:"Bulten_No,attr"`
	Currency  []currency
}

type currency struct {
	Kod             string `xml:"Kod,attr"`
	CrossOrder      string `xml:"CrossOrder,attr"`
	CurrencyCode    string `xml:"CurrencyCode,attr"`
	Unit            string `xml:"Unit"`
	Isim            string `xml:"Isim"`
	CurrencyName    string `xml:"CurrencyName"`
	ForexBuying     string `xml:"ForexBuying"`
	ForexSelling    string `xml:"ForexSelling"`
	BanknoteBuying  string `xml:"BanknoteBuying"`
	BanknoteSelling string `xml:"BanknoteSelling"`
	CrossRateUSD    string `xml:"CrossRateUSD"`
	CrossRateOther  string `xml:"CrossRateOther"`
}

func (c *CurrencyDay) GetData(CurrencyDate time.Time) {
	xDate := CurrencyDate
	t := new(tarih_Date)
	currDay := t.getData(CurrencyDate, xDate)
	for {
		if currDay == nil {
			CurrencyDate = CurrencyDate.AddDate(0, 0, -1)
			currDay := t.getData(CurrencyDate, xDate)
			if currDay != nil {
				break
			}
		} else {
			break
		}
	}
}

func (c *tarih_Date) getData(CurrencyDate time.Time, XDate time.Time) *CurrencyDay {
	currDay := new(CurrencyDay)
	var resp *http.Response
	var err error
	var url string

	currDay = new(CurrencyDay)
	url = "http://www.tcmb.gov.tr/kurlar/" + CurrencyDate.Format("200601") + "/" + CurrencyDate.Format("02012006") + ".xml"
	resp, err = http.Get(url)

	//fmt.Println(url)

	if err != nil {
		fmt.Println(err)
	} else {

		defer resp.Body.Close()

		if resp.StatusCode != http.StatusNotFound {
			tarih := new(tarih_Date)
			d := xml.NewDecoder(resp.Body)
			marshalErr := d.Decode(&tarih)

			if marshalErr != nil {
				log.Printf("error: %v", marshalErr)
			}

			c = &tarih_Date{}
			currDay.ID = XDate.Format("20060102")
			currDay.Date = XDate
			currDay.DayNo = tarih.Bulten_No
			currDay.Currencies = make([]Currency, len(tarih.Currency))
			for i, curr := range tarih.Currency {
				currDay.Currencies[i].Code = curr.CurrencyCode
				currDay.Currencies[i].CurrencyName = curr.CurrencyName
				currDay.Currencies[i].CurrencyNameTR = curr.Isim
				currDay.Currencies[i].BanknoteBuying, err = strconv.ParseFloat(curr.BanknoteBuying, 64)
				currDay.Currencies[i].BanknoteSelling, err = strconv.ParseFloat(curr.BanknoteSelling, 64)
				currDay.Currencies[i].ForexBuying, err = strconv.ParseFloat(curr.ForexBuying, 64)
				currDay.Currencies[i].ForexSelling, err = strconv.ParseFloat(curr.ForexSelling, 64)
				currDay.Currencies[i].CrossOrder, err = strconv.Atoi(curr.CrossOrder)
				currDay.Currencies[i].CrossRateOther, err = strconv.ParseFloat(curr.CrossRateOther, 64)
				currDay.Currencies[i].CrossRateUSD, err = strconv.ParseFloat(curr.CrossRateUSD, 64)
				currDay.Currencies[i].Unit, err = strconv.Atoi(curr.Unit)
			}
			//fmt.Print(currDay)     // Elde edilen veriyi konsolda göster
			//SaveJSON("currencies.json", currDay)     // Elde edilen veriyi currencies.json adında JSON formatında kaydet

			fmt.Println(currDay.Currencies[0].CurrencyNameTR + " / " + strconv.FormatFloat(currDay.Currencies[0].BanknoteSelling, 'E', -1, 64))

		} else {
			currDay = nil
		}
	}
	return currDay
}

func SaveJSON(fileName string, key interface{}) {
	outFile, err := os.Create(fileName)
	checkError(err)
	encoder := json.NewEncoder(outFile)
	err = encoder.Encode(key)
	checkError(err)
	outFile.Close()
}

func checkError(err error) {
	if err != nil {
		fmt.Println("Fatal Error : ", err.Error())
		os.Exit(1)
	}
}

func main() {

	runtime.GOMAXPROCS(2)
	startTime := time.Now()
	CurrencyDay := new(CurrencyDay)
	CurrencyDate := time.Now()
	CurrencyDay.GetData(CurrencyDate)

	elepsedTime := time.Since(startTime)
	fmt.Printf("Execution Time : %s", elepsedTime)
}

İyi çalışmalar
Cihan Özhan

ASP.NET Web API için İstemci Uygulama Geliştirmek

Merhabalar,

Web tabanlı uygulama geliştirme gereksinimlerinde karşılaştığımız bir durum var ki, o da “masaüstü versiyonunda nabacaz?” sorusudur. Bunun çözümü SOA mimari oluşturmaktır. Geçmiş videolarımda da bulabileceğimiz XML Web Servisler, WCF servisler vs. bu SOA tekniğinin birer teknoloji temsilcileridir. Bu video eğitimimde de bir başka versiyon olarak Restful tekniğine dayanan ASP.NET Web API teknolojisini kullanarak bir API geliştirmek ve istemci için de küçük bir konsol uygulaması yapmak olacaktır.

Video eğitimde kısa ve temel olarak bir Web API oluşturma, kullanımı, action’lar, XML ve JSON veri üretme gibi konuları inceleyip, örneği yapıp istemci tarafına geçiyoruz.

ASP.NET Web API İçin İstemci Uygulama Geliştirmek; https://youtu.be/46QAsegdGAU

İyi çalışmalar.
Cihan Özhan

Go Programlama Eğitim Seti

Merhaba,

Go programlama dili üzerine temel seviyeden başlayarak orta ve ileri seviye özelliklerine kadar inceleyeceğimiz eğitim setini hazırlamaya başladım.

Bu eğitim setinde tüm detayları anlatmaya çalışmaktan ziyade genel bir bakış yapmaya çalışacağız. Bu eğitim setindeki örnekleri planlı çalışırsanız eğitim sonunda temel ve orta seviye Go uygulaması geliştirebilir olacaksınız.

Eğitim seti indeksi;

Dijibil Kurs : http://www.dijibil.com/course/go-programlama

Youtube PlayList : https://www.youtube.com/playlist?list=PLr48dQTh3FFxj08zcHb9038agrrqaPcop

Not : Eğitim setini zaman içerisinde geliştirip tamamlayacağım. Müfredatı da bu süreçte adım adım yayınlayacağım.

İyi çalışmalar.
Cihan Özhan

ASP.NET ile Web Uygulaması Geliştirme Temelleri

Kısa bir süredir yazılım araştırmaları yapanlar bile, yazılım geliştirmenin farklı bir çok platform ile geliştirilebildiğini biliyor olmalıdır. Sistem, bilgisayar, mobil, gömülü sistem, oyun ve web programlama gibi bir çok kapsayıcı kategori mevcuttur. C# ile uygulama geliştirmenin bir güzel yanı da bunların hepsinde temel-orta ya da ileri seviye geliştirme yapmaya müsait olmasıdır.

C# programlama dilinde uzmansanız, web programlama yapmak için farklı bir web programlama dili öğrenmenize gerek yoktur. Çünkü C# ile ASP.NET teknolojisini kullanarak web uygulamaları geliştirebiliyoruz.

Bu video eğitim serisinde ASP.NET ile uygulama geliştirme temellerini anlatıyor olacağım.

Videolar;

– http://youtu.be/imJSuEpf2Zo
– http://youtu.be/VUtZvbzshgY
– http://youtu.be/Q9EstR9aHKA

İyi çalışmalar
Cihan Özhan

Java ile Değişken Kullanımı

Yazılım teknolojilerinin bilgisayar hafızasında değer tutma, veri üzerinde işlemler gerçekleştirme ve yazılımların çalışması için gerekli en önemli özellikleri değişkenlerdir. Değişkenler yazılım geliştirme alfabesinin A’sıdır.

Bu nedenle, değişken ve operatörlerin kullanımı temel programlamada öğrenilmesi ve aşılması gereken ilk basamak olmaktadır.

Videolar;

1 – http://www.youtube.com/watch?v=sArgPOgW-RY
2 – http://www.youtube.com/watch?v=JeZ7OwzNLOA

İyi çalışmalar
Cihan Özhan

Java ile Operatörlerin Kullanımı

Tüm programlama dillerinde olduğu gibi, Java dilinde de detaylı bir operatör kullanımı mevcuttur. Matematiksel işlemlerden programlamaya entegre edilen bu işlemlerle birlikte toplama, çıkarma, çarpma gibi en basitten en karmaşık işlemlere kadar bir çok görevi yerine getirebilmekteyiz.

Video : http://www.youtube.com/watch?v=6it65YpeyO8

Java ile IF Akış Kontrolü

C# ile Java’nın çok benzediğini sürekli söyleriz. Söz dizimi olarak ikiz kardeşlerdir. C# eğitimlerimin yanında Java eğitimleri de verdiğim için bazen Java ile C#’ı kıyaslayarak anlattığım bu tür eğitimleri kaçırmamanızı öneririm.

Video : http://youtu.be/sHKdTA7_eBc

HTML, CSS ve Javascript Eğitimleri

Web programlamanın temeli olan Hyper Text Markup Language ile ilgili çok fazla söz söylemeye gerek yok sanırım. Web’in temeli! Bu nedenle, hangi web teknolojisiyle uğraşırsanız uğraşın, mutlaka HTML’ye eliniz bulaşacaktır. Şahsi görüşüm odur ki; HTML her ne kadar programlamayla ilintili olsa da, asıl uzmanları web tasarımcıları olmalıdır. Ancak, bir yazılımcı da en az orta seviyede HTML, CSS bilmelidir. Bende bir yazılımcı olarak, yazılımcı gözüyle HTML, CSS anlattım ve bunları sizinle paylaşıyorum.

– HTML – 1
HTML – 2
HTML / CSS
– Javascript

İyi çalışmalar
Cihan Özhan

Silverlight XAML Kontrolleri

Bir çok WPF, XAML ve Silverlight eğitimimde XAML kodu yazarak anlatımlar yaptım. Bu eğitimimde de Silverlight ile web uygulaması geliştirmek için XAML kodu yazıyoruz.

Diğer XAML eğitimleri için XAML ve WPF kategorilerini inceleyiniz.

Silverlight XAML Kontrolleri – 1
Silverlight XAML Kontrolleri – 2
Silverlight XAML Kontrolleri – 2.1