<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Diller arşivleri - Dinamik Network</title>
	<atom:link href="https://dinamiknetwork.com/k/yazilim/diller/feed/" rel="self" type="application/rss+xml" />
	<link>https://dinamiknetwork.com/k/yazilim/diller/</link>
	<description>Bilişim Dünyasına Profesyonel Yaklaşım</description>
	<lastBuildDate>Fri, 25 Aug 2023 13:29:19 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.8.12</generator>

<image>
	<url>https://dinamiknetwork.com/wp-content/uploads/2020/01/cropped-ikon-1-1-32x32.png</url>
	<title>Diller arşivleri - Dinamik Network</title>
	<link>https://dinamiknetwork.com/k/yazilim/diller/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>.Net Core Minimal API Nedir?</title>
		<link>https://dinamiknetwork.com/net-core-minimal-api-nedir/</link>
					<comments>https://dinamiknetwork.com/net-core-minimal-api-nedir/#respond</comments>
		
		<dc:creator><![CDATA[Cansu Karaman]]></dc:creator>
		<pubDate>Tue, 29 Mar 2022 15:54:48 +0000</pubDate>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[dotnet]]></category>
		<category><![CDATA[minimal api]]></category>
		<guid isPermaLink="false">https://dinamiknetwork.com/?p=3536</guid>

					<description><![CDATA[<p>Minimal API Nedir? Minimal Api .Net 6&#8217;in yeni api dizaynıdır. Geleneksel .Net api özelliklerinden farklı olup yeni bir alternatif sağlar. Kullanmakta olduğumuz WEB API modeli&#46;&#46;&#46;</p>
<p>The post <a rel="nofollow" href="https://dinamiknetwork.com/net-core-minimal-api-nedir/">.Net Core Minimal API Nedir?</a> appeared first on <a rel="nofollow" href="https://dinamiknetwork.com">Dinamik Network</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3>Minimal API Nedir?</h3>
<p>Minimal Api .Net 6&#8217;in yeni api dizaynıdır. Geleneksel .Net api özelliklerinden farklı olup yeni bir alternatif sağlar. Kullanmakta olduğumuz WEB API modeli MVC&#8217;den türetilmiş, controllers ve action metotlarından oluşur, bununla birlikte model binding, datalar için validasyon ve filters gibi birçok özellik sağlar.</p>
<p>.Net ile api oluşturmanın belli kuralları olduğundan günümüz teknoloji dillerine göre daha kompleks kalmasına neden oluyordu. Daha yalın ve minimalist apilerin populeritesi de artmakta olduğu için ve microservis mimarisinin de bu anlamda büyük ölçüde ilerlemesinden dolayı Microsoft kolları sıvıyor ve geniş kapsamlı karmaşık uygulamalar yani monolitik API yerine birçok küçük web servis hizmeti olacak şekilde yeni bir api patternı tasarlamaya başlıyor.</p>
<p>Günümüzde popüler olarak kullanılan Javascript,Node, Python gibi dillerin de projeler yapıları minimal hatta tek bir dosya uygulamaları bulunuyor. Zamanla .Net de bu dünyayı görerek daha yalın projelere ve daha küçük yapıları oluşturmak üzere geliştirmeler yapıyor ve Minimal API&#8217;ler ile daha hafifi ve sade bir api modeli ile karşımıza çıkıyor.</p>
<p>Minimal Apiler gene aynı HTTP web servis mantığı ile farklı http requestleri alıp geriye bir response döndürmesidir. Bunun içinde MapGet, MapPost gibi metotlar kullanılır.</p>
<h5>Minimal Api Kullanımı</h5>
<p><strong>Minimal Api</strong>&#8216;nin kullanımı sytanxı aşağıdaki gibidir.</p>
<p><img wpfc-lazyload-disable="true" loading="lazy" class="alignnone size-full wp-image-3538" src="https://dinamiknetwork.com/wp-content/uploads/2022/03/Minimal_API.png" alt="" width="557" height="45" /></p>
<p>Minimal api&#8217;nin en sade kullanımıdır. Get çağrısı ile birlikte ki bunu bize app.MapGet metotu sağlıyor. Bu metodun ilk parametresi ile bir endpoint belirliyoruz. Daha sonra lamba expresion ile response olarak geriye ne döndürmek istiyoruz onu tanımlıyoruz.</p>
<p><img wpfc-lazyload-disable="true" loading="lazy" class="alignnone size-full wp-image-3540" src="https://dinamiknetwork.com/wp-content/uploads/2022/03/minimal_api_nedir.png" alt="" width="715" height="119" /></p>
<p>Minimal Api ile yaratılan API’ler sınırlı özelliklerinin olması işlevsiz <b><i>olduğu</i></b> <b><i>anlamına</i></b> gelmez. Bu API’ler .Net API’lerin birçok özelliğine sahiptir. Kullanabildiğimiz özelliklerinden bir tanesi de Dependecy Injection.</p>
<p>.Net core ile daha sık kullandığımız DI nesnelerini, .Net 6&#8217;dan önce startup.cs class&#8217;i içerisinde tanımlıyorduk ve bu servisleri kullanacağımız controller classlarda çağrıyorduk.</p>
<p>Minimal Api&#8217;de yapı biraz daha sadeleşmiş durumda, kullanacağımız servisleri program.cs içerisinde tanımladıktan sonra (.Net 6 ile birlikte startup classı kaldırıldı. Tüm configurasyon ve tanımlama işlemleri program.cs içerisinde yapılıyor.) Minimal apinin MapGet, MapPost, MapPut metotlarının delegate parametresinde tanımlamamız yeterli oluyor.</p>
<p>Örnek;</p>
<p><img wpfc-lazyload-disable="true" loading="lazy" class="alignnone size-full wp-image-3541" src="https://dinamiknetwork.com/wp-content/uploads/2022/03/minimal_api_mappost.png" alt="" width="569" height="110" /></p>
<p>IOderService application içerisinde tanımladığımız DI servisimiz, lambda expression içerisinde tanımladığımız bu nesneyi <strong>minimal api</strong> parametre olarak görmez yani sizin post requestiniz bu nesneyi sizden beklemez. Application ayağa kaldığında bunun bir implementasyon olduğunu anlar. Bu şekilde kolaylıkla kullanacağımız servisi metot içerisinde implemente etmiş olduk.</p>
<p>The post <a rel="nofollow" href="https://dinamiknetwork.com/net-core-minimal-api-nedir/">.Net Core Minimal API Nedir?</a> appeared first on <a rel="nofollow" href="https://dinamiknetwork.com">Dinamik Network</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dinamiknetwork.com/net-core-minimal-api-nedir/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>JSX Nedir? React JS Uygulamasına Genel Bakış</title>
		<link>https://dinamiknetwork.com/jsx-nedir-react-js-uygulamasina-genel-bakis/</link>
					<comments>https://dinamiknetwork.com/jsx-nedir-react-js-uygulamasina-genel-bakis/#respond</comments>
		
		<dc:creator><![CDATA[Cansu Karaman]]></dc:creator>
		<pubDate>Wed, 29 Dec 2021 07:37:03 +0000</pubDate>
				<category><![CDATA[Javascript]]></category>
		<guid isPermaLink="false">https://dinamiknetwork.com/?p=3492</guid>

					<description><![CDATA[<p>JSX Nedir? Javascript extensiondır. Javascript içerisinde html sytanx yapısını kullanmamızı sağlayan bir yapıdır. JSX, basit html kodlarında bile kendi DOM’larını değiştirip geliştireceği bir yapı sunar.&#46;&#46;&#46;</p>
<p>The post <a rel="nofollow" href="https://dinamiknetwork.com/jsx-nedir-react-js-uygulamasina-genel-bakis/">JSX Nedir? React JS Uygulamasına Genel Bakış</a> appeared first on <a rel="nofollow" href="https://dinamiknetwork.com">Dinamik Network</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h4>JSX Nedir?</h4>
<p>Javascript extensiondır. Javascript içerisinde html sytanx yapısını kullanmamızı sağlayan bir yapıdır. JSX, basit html kodlarında bile kendi DOM’larını değiştirip geliştireceği bir yapı sunar.</p>
<p>DOM (Document Object Model) web sayfalarının bize göründüğünü ve HTML elemanlarının bir arada bulunmasını sağlayan bir yapıdır. Kullanıcı web sayfası üzerinde herhangi bir komut girdiğinde DOM tekrar güncellenir. Bu durum performans açısından uygulamayı zayıflatır. Burda React’ın kullandığı VirtualDOM devreye girer. React uygulamasında ne zaman bir değişiklik olursa sadece değişiklik yapılan alan güncellenir ve DOM’a aktarılır.</p>
<p>VirtualDOM, DOM’un value/key şeklinde memoryde bulunmuş halidir. DOM’un bir kopyasıdır.</p>
<p>Kullanımı ve Kuralları;</p>
<ul>
<li>Component, Return içerisinde tek bir parent element kullanabilir.Div element’i kullanılıyor ise ikinci bir div kullanımına izin vermemektedir.</li>
<li>Özel keywordler bulunmaktadır. Örneğin div içerisinde class attribute tanımı için className kullanılır.</li>
<li>Jsx formatında Javascript ifadeleri { } süslü parantez kullanarak yapılır. Örneğin bir p elementi içerisinde hesaplama yapmak istediğimizde &lt;p&gt; { 5+ 5 } &lt;/p&gt; kullanarak 5+5 işleminin çıktısını 10 alabiliriz.</li>
<li>Javascriptte tanımladığımız sabit bir değerin gösterimi içinde aynı şekilde { } süslü parantez kullanarak yaparız. Süslü parantez kullanmadan gösterimi sağlarsak, JSX formatı değeri yazı olarak algılar.</li>
</ul>
<h4>React Uygulamasına Genel Bakış</h4>
<p>React uygulamasında birbirine benzer klasörler bulunur. Bunlar src(source) ve public(kaynak) klasörleridir.</p>
<p>React web uygulamasında browser üzerinden bir sayfaya açtığımızda index.html sayfasının içinde ne olduğunu görürüz. Index.html incelediğimizde ise sadece uygulamanın başlığını ve body içerisinde yer alan &lt;div id=&#8221;root&#8221;&gt;&lt;/div&gt; görürüz. Uygulamanın içeriğini dolduran bir element göremeyiz.</p>
<p><img wpfc-lazyload-disable="true" loading="lazy" class="alignnone wp-image-3493" src="https://dinamiknetwork.com/wp-content/uploads/2021/12/react_js_html.png" alt="" width="785" height="291" srcset="https://dinamiknetwork.com/wp-content/uploads/2021/12/react_js_html.png 1160w, https://dinamiknetwork.com/wp-content/uploads/2021/12/react_js_html-768x285.png 768w, https://dinamiknetwork.com/wp-content/uploads/2021/12/react_js_html-850x315.png 850w" sizes="(max-width: 785px) 100vw, 785px" /></p>
<p>Src klasöründeki index.js içerisinde ID’si root olan html çağrılıyor. Burda ReactDOM’un render metodu tarayıcıda bir render etme işlemi yapacaktır. ReactDOM, react-dom modülü tarafından import edilmiştir.</p>
<p>Bu render etme işlemi &lt;App/&gt; componenti kullanarak yapılmaktadır. Bu componentin kaynağı da app.js olarak belirlenmiştir.</p>
<p><img wpfc-lazyload-disable="true" loading="lazy" class="alignnone size-full wp-image-3494" src="https://dinamiknetwork.com/wp-content/uploads/2021/12/react_js_appjs.png" alt="" width="711" height="218" /></p>
<p>App.js klasörüne baktığımızda html sayfasında gördüğümüz tüm elementleri burda görüyoruz. Logo, başlıkları ve paragrafları. Bu durumda component olarak oluşturulan app.js’ın html içerisinde nasıl tetiklendiğini gözlemledik.</p>
<p><img wpfc-lazyload-disable="true" loading="lazy" class="alignnone size-full wp-image-3495" src="https://dinamiknetwork.com/wp-content/uploads/2021/12/react_js_import.png" alt="" width="792" height="101" srcset="https://dinamiknetwork.com/wp-content/uploads/2021/12/react_js_import.png 792w, https://dinamiknetwork.com/wp-content/uploads/2021/12/react_js_import-768x98.png 768w" sizes="(max-width: 792px) 100vw, 792px" /></p>
<p>&nbsp;</p>
<p>The post <a rel="nofollow" href="https://dinamiknetwork.com/jsx-nedir-react-js-uygulamasina-genel-bakis/">JSX Nedir? React JS Uygulamasına Genel Bakış</a> appeared first on <a rel="nofollow" href="https://dinamiknetwork.com">Dinamik Network</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dinamiknetwork.com/jsx-nedir-react-js-uygulamasina-genel-bakis/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>React JS Nedir? React Projesi Oluşturma</title>
		<link>https://dinamiknetwork.com/react-js-nedir-react-projesi-olusturma/</link>
					<comments>https://dinamiknetwork.com/react-js-nedir-react-projesi-olusturma/#respond</comments>
		
		<dc:creator><![CDATA[Cansu Karaman]]></dc:creator>
		<pubDate>Mon, 27 Dec 2021 09:40:15 +0000</pubDate>
				<category><![CDATA[Javascript]]></category>
		<guid isPermaLink="false">https://dinamiknetwork.com/?p=3475</guid>

					<description><![CDATA[<p> React JS Nedir? React JS kullanıcılar için arayüz oluşturmamızı sağlayan Javascript kütüphanelerinden birisidir. Facebook tarafından geliştirilen react.js aynı zamanda açık kaynaklı bir kütüphanedir. Günümüzde popüler&#46;&#46;&#46;</p>
<p>The post <a rel="nofollow" href="https://dinamiknetwork.com/react-js-nedir-react-projesi-olusturma/">React JS Nedir? React Projesi Oluşturma</a> appeared first on <a rel="nofollow" href="https://dinamiknetwork.com">Dinamik Network</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h4> React JS Nedir?</h4>
<p>React JS kullanıcılar için arayüz oluşturmamızı sağlayan Javascript kütüphanelerinden birisidir. Facebook tarafından geliştirilen react.js aynı zamanda açık kaynaklı bir kütüphanedir. Günümüzde popüler olarak kullanılan bir kütüphane olup performanslı ve maliyetsizdir.</p>
<p>Element bazlı oluşturularak Javascript’in karmaşık yapısını düzenler, kod okunabilirliğini ise kolaylaştırır. Gerçek zamanlı güncellenebilen web siteler oluşturmanızı sağlar. Bu yapıya hot reloading denir.</p>
<p><a href="https://tr.reactjs.org/"><img wpfc-lazyload-disable="true" loading="lazy" class="wp-image-3477 size-full" src="https://dinamiknetwork.com/wp-content/uploads/2021/12/React_js_dinamik_network.jpeg" alt="React Js" width="680" height="382" /></a></p>
<p>React dünyasına giriş yaparken yeni birkaç terimle karşılaşacağız. Flux mimarisine benzeyen tek yönlü veri akışını, javascript içerisinde html kodlarını yazdığımız jsx formatını. Detaylı olarak inceleyeceğimiz componentlerden(bileşenler), bu componentlerin arasında iletişimi sağlayan Props yapısını ve React koleksiyonlarının en küçük birimi olan elementleri detaylı inceliyor olacağız.</p>
<h4>React Projesi Oluşturma</h4>
<p>React uygulamasını kurmak paket yönetici NPM’e ihtiyacımız var. Bunun için bilgisayarımıza Node.Js yüklememiz gerekmektedir. <a href="https://nodejs.org/en/">Buradan</a> kolaylıkla node.js kurulumunu yapabilirsiniz.</p>
<p>Kurulum tamamlandıktan sonra react uygulamasını oluşturmak için aşağıdaki komut satırını yazmanız yeterli olacaktır.</p>
<pre>npx create-react-app my-app

&lt;img class="alignnone wp-image-3480" src="https://dinamiknetwork.com/wp-content/uploads/2021/12/react_create_project.png" alt="" width="719" height="216" /&gt;</pre>
<div role="alert" class="geoit-alert geo-alert-style-1 geo-alert-color-info">React modüllerini global olarak yüklemek isterseniz npm install -g create-react-app komutunu kullanmanız gerekmektedir.</div>
<p>Projenin içerisine baktığımız zaman node_modules, public,src klasörlerini görmüş olacağız. Node_modules klasörü içerisinde yüklediğimiz kütüphaneleri bulabiliriz. Public klasörü html, image ve iconların bulunduğu klsörürümüzdür. Src klasöründe ise işlemleri yaptığımız js dosyalarımız bulunmaktadır. Package.json çalıştırdığımız scriptler ve kullandığımız kütüphanelerin tanımlandığı<br />
dosyadır.</p>
<p><img wpfc-lazyload-disable="true" loading="lazy" class="wp-image-3484 alignnone" src="https://dinamiknetwork.com/wp-content/uploads/2021/12/react_proje_olusturma_2.png" alt="" width="663" height="532" /></p>
<p>Kurduğumuz bu react uygulamamızı çalıştırmak için proje dizinine gidip npm start komutunu kullanmamız yeterli olacaktır.</p>
<p>The post <a rel="nofollow" href="https://dinamiknetwork.com/react-js-nedir-react-projesi-olusturma/">React JS Nedir? React Projesi Oluşturma</a> appeared first on <a rel="nofollow" href="https://dinamiknetwork.com">Dinamik Network</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dinamiknetwork.com/react-js-nedir-react-projesi-olusturma/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Veritabanı ve Okunaklı Kodlama İçin Tavsiyeler</title>
		<link>https://dinamiknetwork.com/veritabani-ve-okunakli-kodlama-icin-tavsiyeler/</link>
					<comments>https://dinamiknetwork.com/veritabani-ve-okunakli-kodlama-icin-tavsiyeler/#comments</comments>
		
		<dc:creator><![CDATA[Mustafa Bükülmez]]></dc:creator>
		<pubDate>Thu, 02 Apr 2020 11:44:12 +0000</pubDate>
				<category><![CDATA[T-SQL]]></category>
		<category><![CDATA[Incorrext Syntax Near]]></category>
		<category><![CDATA[Kolonlarda Tablo İşaretçileri]]></category>
		<category><![CDATA[okunaklı kod]]></category>
		<category><![CDATA[Okunaklı Kod ve Sorgu]]></category>
		<category><![CDATA[Otomatik Query Oluşturma]]></category>
		<category><![CDATA[Veritabanı ve Okunaklı Kodlama]]></category>
		<category><![CDATA[Yazılımcılara tavsiyeler]]></category>
		<guid isPermaLink="false">https://dinamiknetwork.com/?p=1393</guid>

					<description><![CDATA[<p>Merhabalar. Selamlar. Bu yazımda Veritabanı ve Okunaklı Kodlama İçin Tavsiyeler konusundan bahsetmek istiyorum. Biliyoruz ki herkes Entity Framework kullanmıyor. Bende o kullanmayanlardan biriyim. Projelerimin hepsinde sql&#46;&#46;&#46;</p>
<p>The post <a rel="nofollow" href="https://dinamiknetwork.com/veritabani-ve-okunakli-kodlama-icin-tavsiyeler/">Veritabanı ve Okunaklı Kodlama İçin Tavsiyeler</a> appeared first on <a rel="nofollow" href="https://dinamiknetwork.com">Dinamik Network</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Merhabalar. Selamlar. Bu yazımda <strong>Veritabanı ve Okunaklı Kodlama İçin Tavsiyeler </strong>konusundan bahsetmek istiyorum. Biliyoruz ki herkes Entity Framework kullanmıyor. Bende o kullanmayanlardan biriyim. Projelerimin hepsinde sql tablolarını manuel modeller ve sorguları manuel yazarım. Benim gibi çalışan arkadaşlar için bir kaç tavsiye vermek amacı ile bu yazıyı yazmak istedim.</p>
<p>Başlıkta SQL yazmasına takılmayın. Bu tavsiyelerim her veritabanı için geçerli olacaktır.</p>
<p>&nbsp;</p>
<h2>Veritabanı ve Okunaklı Kodlama İçin Tavsiyeler</h2>
<p>Projelerimizde veritabanı olmazsa olmaz gibi bir şeydir. Her projemiz bir şeyleri takip etme (stok cari vs. vs.) amacı gütmese de yine de bir takım verileri saklamak için veritabanı kullanmak zorunda kalıyoruz. Bu veri tabanının ne olduğu aslında önemli değil. Biz programcılar için bir noktalama işaretinin bile çalışmayı engelleyecek bir öneme sahip olduğu aşikar. Bu sebeple yazdığımız sorgularda (query) bu noktalama işaretleri yüzünden çok fazla hata yapabiliyoruz.</p>
<p>Bu vereceğim tavsiyeler işte böylesi küçük sorunlara karşı daha hızlı bir çözüm olması ve okunaklı olması amacı güdüyor.</p>
<pre class="prettyprint lang-sql" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">Incorrext Syntax Near ","</pre>
<p>Gibi hayattan soğutan bu hatalarla daha az nasıl karşılabiliriz? Nasıl minimuma indirebiliriz?</p>
<h3></h3>
<h3><strong>Otomatik Query Oluşturma</strong></h3>
<p>Diğer veritabanı programlarını bilmiyorum ama <strong>SQL Management Studio</strong>&#8216;da bu işlem var ve çok sık kullanırım.</p>
<p><strong>SQL Management Studio</strong> &#8216;da bir tablo üzerinde sağ tık yapın ve <em>&#8220;Script Table As&#8221; &gt; &#8220;INSERT To&#8221; &gt; &#8220;New Query Editor Window&#8221;</em> deyin. Açılan Query sayfasında o tabloya bir insert yapmak için gerekli query otomatik oluşmuş oluyor. Query&#8217;i kopyalıyoruz ve kod sayfamıza yapıştırıyoruz.</p>
<p>Her satırın başına ( +&#8221; ) ve sonuna ( &#8221; ) ekliyoruz. Sorgumuzu bir string değişkene atıyoruz ve gerekli yerleri düzeltiyoruz. Yani VALUES kısmından sonraki satırlara verileri alacağımız nesneleri yazıyoruz.</p>
<p>Genelde kullanılan şekli aşağıdaki gibidir değil mi? Ne kadarda okunaksız. Birde burada 60, 70 kolon olduğunu ve böyle uzayıp gittiğini düşünün. Ne kadar zorlanırsınız? Arada bir virgülün eksik olduğunu düşünün&#8230; Ya da fazla olduğunu&#8230;</p>
<pre class="prettyprint lang-sql" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">INSERT INTO [dbo].[Kullanicilar]([ku_kodu],[ku_adi],[ku_sifre],[ku_yetki])
     VALUES ('5','Mustafa BÜKÜLMEZ','123465','Administrator')</pre>
<p>Şimdi yukarıda bahsettiğim şeyi yapalım ve görelim&#8230;</p>
<pre class="prettyprint lang-sql" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">INSERT INTO [dbo].[Kullanicilar]
 	 ([ku_kodu]
	 ,[ku_adi]
	 ,[ku_sifre]
	 ,[ku_yetki])
VALUES (
	 '5'
	 ,'Mustafa BÜKÜLMEZ'
	 ,'123465'
	 ,'Administrator')</pre>
<p>Böyle bir yazım şeklinde eksik veya fazla virgülü neredeyse anında bulabilirsiniz değil mi? Ama burada virgülleri kolon adlarının sol tarafında olmasına dikkat edin. Otomatik olarak solda geliyor ama bazen üzerinde düzenleme yapmamız gerekebiliyor. Sağ tarafında olursa pek bir anlamı kalmıyor.</p>
<h3></h3>
<h3><strong>Okunaklı Kod ve Sorgu</strong></h3>
<p>Benim kullanım şeklim bir adım daha ileri gidersek şöyle oluyor.</p>
<pre class="prettyprint lang-sql" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">INSERT INTO [dbo].[Kullanicilar]
           ([ku_kodu]
           ,[ku_adi]
           ,[ku_sifre]
           ,[ku_yetki])
     VALUES
           ('5' -- &lt;ku_kodu, nvarchar(50),&gt;
           ,'Mustafa BÜKÜLMEZ' --&lt;ku_adi, nvarchar(50),&gt;
           ,'123465' --&lt;ku_sifre, nvarchar(50),&gt;
           ,'Administrator' ) -- &lt;ku_yetki, nvarchar(50),&gt;)</pre>
<p>Bu şekilde yaptığımda hangi satırda hangi kolon bilgisi var ve olması gerekeni görebiliyorum. Üst kısım ile karşılaştırıp eksik kolon var mı görebiliyorum. Burada dikkat edilmesi gereken nokta son satırdaki parantezi unutmamak.. (&#8211;) yaptıktan sonra parantezde yorum olarak kalıyor ve parantez hatası alıyoruz. Bu yöntemi her zaman kullanmıyorum. Çok fazla kolonu olan tablolarda kullanıyorum.</p>
<p>Ayrıca genellikle bu yorum olarak işaretleme işlemini C# tarafında yapıyorum. ilgili texbox&#8217;u yazdıktan sonra kolon adı ve veri tipi kısmından önce // kullanıyorum.</p>
<p>Aynı şekilde Select, Update gibi tüm işlemler için gereken sorguları alabiliyoruz.</p>
<p>Ben C# kullandığım için Visual Studio&#8217;da şöyle görünüyor.</p>
<pre class="prettyprint lang-csharp" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">                comm.CommandText =""
                        + "  INSERT INTO [dbo].[Kullanicilar] "
                        + "       ( ku_kodu " 
                        + "       , ku_adi "
                        + "       , ku_sifre "
                        + "       , ku_yetki) "
                        + "  VALUES "
                        + "       ( '" + txt_kod.Text + "' "
                        + "       , '" + txt_adi.Text + "' "
                        + "       , '" + txt_sifre.Text + "' "
                        + "       , '" + cmb_yetki.Text + "'    )";</pre>
<p><em>Yaşadığım şehir olan Kahramanmaraş&#8217;ta &#8220;İp Gibi&#8221; (Gergin bir ip gibi dümdüz) diye bir deyim vardır.  Tam uyuyor. 😀 Bu konuda ilk zamanlarda çok sıkıntı çektiğim için takıntılı oldum. Her virgül ve + aynı hizanda olmazsa rahat edemiyorum. 🙂 Mesleki deformasyon gibi bir şey. 🙂 </em></p>
<p>NOT: Buradaki yazıda bir <a href="https://dinamiknetwork.com/sql-server-ile-c-entity-class-olusturma/" target="_blank" rel="noopener noreferrer">SQL &#8216;de Entity Class Oluşturma</a> dersini de inceleyebilirsiniz. Tablolarınızı SQL üzerinde bu şekilde modelleyerek ve sorgularınızı yukarıdaki gibi okunaklı olarak yazarak güzel kodlar yazabilirsiniz. 🙂</p>
<p>&nbsp;</p>
<h3><strong>Kolonlarda Tablo İşaretçileri</strong></h3>
<p>Yukarıdaki örneklerde görebiliyorsunuz. Tablomun adı Kullanıcılar. Bu Kullanıcılar tablomdaki her kolon adının başında ( ku_ ) işaretçisi var. Bu işaretçi, bu kolonların Kullanıcılar tablosuna ait olduğunu işaret ediyor. 5, 10 tablolu projelerde önemsemeyebilirsiniz ancak büyük projelerde olması gerektiğini düşünüyorum. Çünkü projeler büyüdükçe, daha karmaşık konulara girmeniz gerekiyor.</p>
<p>Örnek olarak cari, stok, borç, alacak, çek, senet, banka, fatura, tahsilat gibi bir çok modülü olan bir projede bir carinin ekstresi&#8217;ni çıkarmak için kaç tane tabloya dokunmanız gerekiyor. Nasıl bir karmaşıklıkta sorgu yazmanız gerekiyor? Bu tabloların her birinde cari kodunun tutulduğu kolonun adı Cari_Kodu olduğunu varsayalım.</p>
<p>Cari Extresi&#8217;nde birleştirici nokta Cari_Kodu kolonudur. Ancak biz her tabloda aynı adı verdiğimizde, where kısmını veya iç sorguları hazırlarken hangi tablonun Cari_Kodu&#8217;nu, hangi tablonun Cari_Kodu&#8217;na eşitlediğimizi nasıl anlayacağız?</p>
<ul>
<li>Tahsilatlar, tah_Cari_Kodu</li>
<li>Bankalar, ban_Cari_Kodu</li>
<li>Faturalar, fat_Cari_Kodu</li>
<li>Çekler, cek_Cari_Kodu</li>
</ul>
<p>gibi tablo işaretçileri ile kolon adlarını yazdıktan sonra where kısmını hazırlarken en ufak bir şüphe olmadan sorgumuzu yazabilir ve yanlış kolon eşitlemeleri yüzünden saçma sapan sorunlar ile uğraşmak zorunda kalmamış oluruz.</p>
<p>&nbsp;</p>
<h3><strong>Kolon Adları ve Veri Tipleri</strong></h3>
<p>Kolonları hazırlarken, aşırı kısaltma kullanmamaya çalışın. Neden kısaltma kullanmak zorundasın ki? Örnek olarak bir kısaltma kullanalım ve bir kolon adı yazalım. <strong>fat_sat_ack1 </strong>bu kısaltmadan ne anlıyorsunuz? Bu kolonun amacı<em> fatura 1. satır açıklaması</em> idi. Bu kolonu kısaltmalı yazsam ne kaybederim? fat_satir_acikalama1 olarak yazsam ne kaybederim?</p>
<p>Net olarak bilmemekle ve yaptığım deneme ile 60 karakter uzunluğunda bir kolon başlığı yazabildim. Şahsen 60 karakter uzunluğunda da bir kolon başlığı yazmamı gerektirecek etiket düşünemiyorum. Yani aşırı kısaltma yapmadan yazabilecek kadar geniş bir alanımız var.</p>
<p>Aynı şey tablo adları içinde geçerli. Aşırı kısaltmalardan kaçınmamız gerektiğini düşünüyorum. CARI_HESAP_ADRESLERI olarak düşündüğümüz bir tabloyu CARI_HSP_ADR  gibi bir kısaltma ile yazmamızın hiçbir anlamı olmadığını düşünüyorum.</p>
<p>&nbsp;</p>
<hr />
<p><strong>Programlamada SQL Sorgularını Okunaklı Yazmak</strong> yazımda bu kadardı arkadaşlar. Bu sektörde olduğum süre boyunca elde ettiğim tecrübelerden derlenmiş bir kaç nacizane tavsiyemdir. Elimden geldiğinde <strong>okunaklı kod yazma</strong>ya çalışıyorum ve çevremdekilere de <strong>veritabanı ve okunaklı kodlama</strong> konusuna dikkat etmeleri için tavsiyeler vermeye ve almaya çalışıyorum.</p>
<p>Dürüst olacağım, benden başkası anlamasın diye her şeyi aşırı kısaltmış ve şifreleri şeyler yazanlara çok küfür ediyorum.  Bu bir profesyonellik değildir. Tamam, başkasının anlamaması egolarını tatmin edebilir ama başka neye yarar? Böyle insanların arkasından herkes küfür eder. Bu sadece bana özgü bir şey değil.</p>
<p><em><strong>Profesyonellik, başkasının anlayamamasını sağlamak değil, herkesin anlayabilmesini sağlayabilmektir. </strong></em></p>
<p>Herkesin amacı bu olsaydı, internette tek bir kaynak bulamazdık. Bende alacağım tepkilere rağmen bu yazıyı ve bu yoruma zahmetine girmezdim.</p>
<p>Diğer yazılarıma gitmek isterseniz <a href="https://dinamiknetwork.com/author/mustafabukulmez/" target="_blank" rel="noopener noreferrer">buraya</a> tıklayabilirsiniz.</p>
<p>Bol kodlu günler&#8230; ^_^</p>
<p>Sağlıcakla ve takipte kalın.</p>
<p>&nbsp;</p>
<hr />
<p>Bana destek olmak isterseniz <strong><a href="https://www.buymeacoffee.com/mustafabukulmez" target="_blank" rel="noopener">bir kahve ısmarlayabilirsiniz</a></strong> veya <strong><a href="https://linktr.ee/mustafabukulmez" target="_blank" rel="noopener">diğer hesaplarımdan</a></strong> takip edebilirsiniz.</p>
<p>The post <a rel="nofollow" href="https://dinamiknetwork.com/veritabani-ve-okunakli-kodlama-icin-tavsiyeler/">Veritabanı ve Okunaklı Kodlama İçin Tavsiyeler</a> appeared first on <a rel="nofollow" href="https://dinamiknetwork.com">Dinamik Network</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dinamiknetwork.com/veritabani-ve-okunakli-kodlama-icin-tavsiyeler/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>TC Kimlik No Doğrulama Algoritması</title>
		<link>https://dinamiknetwork.com/tc-kimlik-no-dogrulama-algoritmasi/</link>
					<comments>https://dinamiknetwork.com/tc-kimlik-no-dogrulama-algoritmasi/#comments</comments>
		
		<dc:creator><![CDATA[Mustafa Bükülmez]]></dc:creator>
		<pubDate>Wed, 18 Mar 2020 07:00:57 +0000</pubDate>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[TC Kimlik No Algoritması]]></category>
		<category><![CDATA[TC Kimlik No Doğrulama Algoritması]]></category>
		<category><![CDATA[tc kimlik no doğrulama algoritması c#]]></category>
		<category><![CDATA[Tc Kimlik No Doğrulama Algoritması nedir]]></category>
		<category><![CDATA[tc kimlik no sorgulama algoritması]]></category>
		<category><![CDATA[tc no doğrulama]]></category>
		<guid isPermaLink="false">https://dinamiknetwork.com/?p=1340</guid>

					<description><![CDATA[<p>Merhaba arkadaşlar. Yoğunluğumdan dolayı uzun zamandır bir yazı yazamıyordum. Bir süre düşündüm ne yazsam diye aklıma bu yazı geldi. Gelin Tc Kimlik No Doğrulama Algoritması&#46;&#46;&#46;</p>
<p>The post <a rel="nofollow" href="https://dinamiknetwork.com/tc-kimlik-no-dogrulama-algoritmasi/">TC Kimlik No Doğrulama Algoritması</a> appeared first on <a rel="nofollow" href="https://dinamiknetwork.com">Dinamik Network</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Merhaba arkadaşlar. Yoğunluğumdan dolayı uzun zamandır bir yazı yazamıyordum. Bir süre düşündüm ne yazsam diye aklıma bu yazı geldi. Gelin <strong>Tc Kimlik No Doğrulama Algoritması nedir</strong> ona bakalım.</p>
<h2><strong>TC Kimlik No Doğrulama Algoritması</strong></h2>
<p><strong>TC Kimlik numaraları</strong>, her Türk Vatandaşına doğumunda verilen 11 karakterli bir sayıdır ve benzersizdir. Yani aynı <strong>TC Kimlik numarası</strong>ndan bir tane daha yoktur. Ben önceleri hep bir sıraya göre gittiklerini düşünüyordum. Ancak bir gün ailemden iki kişinin TC Kimlik numaraların benzerlik gösterdiğini fark ettim. Bu benzerlik ilk 1,2,3 hane ile 7,8,9 hanelerin aynı olmasıydı. O gün aslında sıradan gitmediğini belirli bir algoritmaya göre verildiğini anlamıştım.</p>
<p>Şimdi gelelim bu <strong>TC No Doğrulama</strong> algoritmasına.</p>
<p>&nbsp;</p>
<h3><strong>TC Kimlik No Doğrulama Algoritması</strong></h3>
<p>Bu algoritma 5 adımlı yani 5 şart var. Bu 5 şartın hepsine de uyulması gerekiyor.</p>
<p>1 &#8211; TC Kimlik Numaraları 11 karakter olmak zorundadır.</p>
<p>2 &#8211; Her hanesi bir rakam olmaldır.</p>
<p>3 &#8211; İlk hanesi 0 (sıfır) olamaz</p>
<p>4 &#8211; 1, 3, 5, 7, 9 basamaklarının toplamının 7 katından, 2, 4, 6, 8 basamaklarının toplamını çıkarttığımızda elde ettiğimiz sonucun 10&#8217;a bölümünden kalan sayı (MOD10)  10. basamaktaki sayıyı vermelidir.</p>
<p>5 &#8211; İlk 10 hanenin toplamından elde edilen sonucun 10&#8217;a bölümünden kalan sayı (MOD10) 11. basamaktaki sayıyı vermelidir.</p>
<p>Gördüğünüz gibi 5 şarttan biri tutmuyor ise ilgili<strong> TC Kimlik No</strong> doğru değildir yani Türkiye&#8217;de hiçbir vatandaşa verilmemiş bir sayıdır.</p>
<h3></h3>
<h3><strong>TC Kimlik No Doğrulama Algoritması </strong><strong>C#</strong></h3>
<p>Ben C# ile yazılım geliştiren biri olduğumdan dolayı bu yazımda C# ile bu algoritmanın nasıl yapıldığını vermek istiyorum. Ben hali hazırda zaten bu algoritmayı projelerimde kullanıyorum.</p>
<pre class="prettyprint lang-csharp" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">public static string Kontrol(string TCno)
        {
            int Algoritma_Adim_Kontrol = 0, TekBasamaklarToplami = 0, CiftBasamaklarToplami = 0;

            if (TCno.Length == 11) Algoritma_Adim_Kontrol = 1;
            foreach (char chr in TCno) { if (Char.IsNumber(chr)) Algoritma_Adim_Kontrol = 2; }
            if (TCno.Substring(0, 1) != "0") Algoritma_Adim_Kontrol = 3;

            int[] arrTC = System.Text.RegularExpressions.Regex.Replace(TCno, "[^0-9]", "").Select(x =&gt; (int)Char.GetNumericValue(x)).ToArray();

            for (int i = 0; i &lt; TCno.Length; i++)
            {
                if (((i + 1) % 2) == 0)
                    if (i + 1 != 10) CiftBasamaklarToplami += Convert.ToInt32(arrTC[i]);
                    else
                    if (i + 1 != 11) TekBasamaklarToplami += Convert.ToInt32(arrTC[i]);
            }

            if (Convert.ToInt32(TCno.Substring(9, 1)) == (((TekBasamaklarToplami * 7) - CiftBasamaklarToplami) % 10)) Algoritma_Adim_Kontrol = 4;
            if (Convert.ToInt32(TCno.Substring(10, 1)) == ((arrTC.Sum() - Convert.ToInt32(TCno.Substring(10, 1))) % 10)) Algoritma_Adim_Kontrol = 5;

            if (Algoritma_Adim_Kontrol == 5)
                return "TC No Doğru";
            else
                return "TC No Yanlış";
        }</pre>
<p>Kodlarda gördüğünüz gibi ilk üç adımın kontrolü çok basit. Toplamda uyulması gereken 5 şart olduğundan dolayı Algoritma_Adim_Kontrol değişkenini, her adımda 1 arttırarak, şartı kontrol eden kodların çalışmasına göre test edilen <strong>TC Kimlik No</strong>&#8216;sunun doğru olup olmadığına karar veriyoruz.</p>
<p>For döngüsünde index sayısına bir ekleyerek, modunu alıyoruz ve hangi basamakta olduğumuzu buluyoruz (1,3,5,7,9 yada 2,4,6,8). Eğer çift sayısı basamaklardaysak değeri, CiftBasamaklarToplami değişkenine, değilse TekBasamaklarToplami değişkenine ekliyoruz.</p>
<p>Bu işlemden sonra da zaten mod alma işlemleri ile 10. ve 11. karakterleri kontrol ettiriyoruz.</p>
<p>Algoritma_Adim_Kontrol değişkeni 5 değerini aldıysa test edilen<strong> TC Kimlik Numarası Doğrulama Algoritması</strong> geçilmiş demektir.</p>
<p>**</p>
<p>Ben burada işlemin tek seferde tamamlanması yoluna giderek işlemi yaptım. Ancak bu yöntemden farklı olarak Her adımı bağımsız olarak kontrol ettirebilir ve ilk hatada kontrolü durdurabiliriz.</p>
<hr />
<p><strong>TC Kimlik No Algoritması</strong> yazımda bu kadar arkadaşlar. Diğer derslerimizde görüşmek üzere.</p>
<p>Diğer yazılarıma gitmek isterseniz <a href="https://dinamiknetwork.com/author/mustafabukulmez/" target="_blank" rel="noopener noreferrer">buraya</a> tıklayabilirsiniz.</p>
<p>Sağlıcakla ve takipte kalın.</p>
<p>&nbsp;</p>
<hr />
<p>Bana destek olmak isterseniz <strong><a href="https://www.buymeacoffee.com/mustafabukulmez" target="_blank" rel="noopener">bir kahve ısmarlayabilirsiniz</a></strong> veya <strong><a href="https://linktr.ee/mustafabukulmez" target="_blank" rel="noopener">diğer hesaplarımdan</a></strong> takip edebilirsiniz.</p>
<p>The post <a rel="nofollow" href="https://dinamiknetwork.com/tc-kimlik-no-dogrulama-algoritmasi/">TC Kimlik No Doğrulama Algoritması</a> appeared first on <a rel="nofollow" href="https://dinamiknetwork.com">Dinamik Network</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dinamiknetwork.com/tc-kimlik-no-dogrulama-algoritmasi/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>.Net Core Blazor Web Apps</title>
		<link>https://dinamiknetwork.com/net-core-blazor-web-apps/</link>
					<comments>https://dinamiknetwork.com/net-core-blazor-web-apps/#comments</comments>
		
		<dc:creator><![CDATA[Cansu Karaman]]></dc:creator>
		<pubDate>Thu, 26 Dec 2019 11:26:49 +0000</pubDate>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[.net core]]></category>
		<category><![CDATA[.net core 3]]></category>
		<category><![CDATA[.net core 3.0 blazor]]></category>
		<category><![CDATA[.Net Core Blazor]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[Blazor]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[Web-Assembly]]></category>
		<guid isPermaLink="false">https://dinamiknetwork.com/?p=998</guid>

					<description><![CDATA[<p>Merhabalar, bu ilk yazım ve ilk yazımda sizlere benim de yeni öğrendiğim bir konudan bahsetmek istedim. Devam yazılarımda daha teknik konulara değineceğim. Umarım sizler için&#46;&#46;&#46;</p>
<p>The post <a rel="nofollow" href="https://dinamiknetwork.com/net-core-blazor-web-apps/">.Net Core Blazor Web Apps</a> appeared first on <a rel="nofollow" href="https://dinamiknetwork.com">Dinamik Network</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Merhabalar, bu ilk yazım ve ilk yazımda sizlere benim de yeni öğrendiğim bir konudan bahsetmek istedim. Devam yazılarımda daha teknik konulara değineceğim. Umarım sizler için de faydalı olur.</p>
<p><strong>.Net core 3.x</strong> yeni incelemeye başladım. Araştırma yaparken<strong> .Net Core Blazor framework</strong>&#8216;u ile karşılaştım. İlk önce kabaca özetlemek gerekirse javascript yerine c# yazıbileceğimiz client side web apps oluşturabildiğimiz bir framework. .Net ile web geliştiriyorsanız sizinde ilginizi çekebilir. Ben backend tarafını ön yüzden daha çok sevdiğim için benim ilgimi bu çekti ve araştırmaya başladım diyebilirim. İlk başlarda karışık geldi ama biraz okudukça ya da yazdıkça yavaşça kafamda bir yer edinmeye başladı.</p>
<h2><strong>Blazor Nedir?</strong></h2>
<p>Öncelikle <strong>Blazor</strong> tarayıcı üzerinde çalışabilen .Net web framework’dur. Web-Assembly ile çalışan javascript yerine c# kodu kullanabileceğimiz bir Framework. Web assembly web için geliştirilmiş bir byte code formatıdır. Web-Assembly için <strong><a href="https://webassembly.org/">buradan</a></strong> daha detaylı bilgiye ulaşabilirsiniz.</p>
<p>Blazor daha iyi anlayabilmek için .net in bize sunduğu hazır template üzerinden inceleme yapalım.</p>
<ul>
<li style="text-align: left;">Visual Studio 2019 &#8211; .Net Core 3.1 versiyonu  ile birlikte Blazor App oluşturuyorum.</li>
</ul>
<figure id="attachment_999" aria-describedby="caption-attachment-999" style="width: 918px" class="wp-caption aligncenter"><img wpfc-lazyload-disable="true" loading="lazy" class="wp-image-999" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/WhatsApp-Image-2019-12-23-at-17.18.50.jpeg" alt="" width="918" height="611" srcset="https://dinamiknetwork.com/wp-content/uploads/2019/12/WhatsApp-Image-2019-12-23-at-17.18.50.jpeg 1281w, https://dinamiknetwork.com/wp-content/uploads/2019/12/WhatsApp-Image-2019-12-23-at-17.18.50-768x512.jpeg 768w, https://dinamiknetwork.com/wp-content/uploads/2019/12/WhatsApp-Image-2019-12-23-at-17.18.50-850x567.jpeg 850w" sizes="(max-width: 918px) 100vw, 918px" /><figcaption id="caption-attachment-999" class="wp-caption-text">.Net Blazor</figcaption></figure>
<ul>
<li>Projeyi create olduğunda karşıma .razor uzantılı sayfalar çıktı. Bu sayfaların shared kütüphaneleri  <strong>NavMenu.razor</strong> ve <strong>MainLayout.razor</strong>  ile birlikte 3 örnek yapılmış. Bir tanesi welcome sayfası, ikincisi sayı arttırma sayfası diğeri ise dataları çekip tablo görünümünde gösterebildiğimiz bir yapısı olan sayfa.</li>
<li> İlk önce counter kısmına baktım. Buttona tıklatıkça mevcut sayının birer birer arttığını görüyoruz. Burada buttona tıkladığımızda tetiklenen javascript değilde C# kodu ile hazırlağımız methodun çağırıldığını görüyoruz.</li>
</ul>
<p><img wpfc-lazyload-disable="true" loading="lazy" class="wp-image-1001 aligncenter" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/asadasd.png" alt="" width="923" height="529" srcset="https://dinamiknetwork.com/wp-content/uploads/2019/12/asadasd.png 1042w, https://dinamiknetwork.com/wp-content/uploads/2019/12/asadasd-768x439.png 768w, https://dinamiknetwork.com/wp-content/uploads/2019/12/asadasd-850x486.png 850w" sizes="(max-width: 923px) 100vw, 923px" /></p>
<p>&nbsp;</p>
<p><code class="prettyprint lang-html" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">@code { }</code>  bloğunu içerisinde oluşturulan method onclick anında çağrılan mettottur. Blazor bu c# bloğunu Web Assembly yardımi ile tarayıcı üzerinde çalışabilecek hale getirmektedir.</p>
<p>&nbsp;</p>
<p><img wpfc-lazyload-disable="true" loading="lazy" class="wp-image-1002 aligncenter" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/2-3.png" alt="" width="845" height="645" /></p>
<p>&nbsp;</p>
<p>Fetch Data kısmındaki örneğe bakalım. Aşağıdaki WeatherForecast objesini GetForecastAsync metotu ile rastgele oluşturulduktan sonra önyüzde bu methodu kullanarak tablo oluşumu sağlanmıştır. Async metotu çağırırken javascript kullanmadan Dependency Injection ile birlikte çağırarak gelen datayı tabloya yazıyoruz.</p>
<p>&nbsp;</p>
<p><img wpfc-lazyload-disable="true" loading="lazy" class="size-full wp-image-1004 aligncenter" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/3-1.png" alt="" width="882" height="545" srcset="https://dinamiknetwork.com/wp-content/uploads/2019/12/3-1.png 882w, https://dinamiknetwork.com/wp-content/uploads/2019/12/3-1-768x475.png 768w, https://dinamiknetwork.com/wp-content/uploads/2019/12/3-1-850x525.png 850w" sizes="(max-width: 882px) 100vw, 882px" /></p>
<pre class="prettyprint lang-csharp" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">  services.AddSingleton&lt;WeatherForecastService&gt;();</pre>
<p>FetchData.razor üzerindeki kullanımı</p>
<pre class="prettyprint lang-html" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">@inject WeatherForecastService ForecastService</pre>
<p>@code bloğu içerisindeki forecasts listesini html içerisinde kullanabiliyoruz.</p>
<pre class="prettyprint lang-csharp" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">protected override async Task OnInitializedAsync()
    {
        forecasts = await ForecastService.GetForecastAsync(DateTime.Now);
    }</pre>
<p><img wpfc-lazyload-disable="true" loading="lazy" class="size-full wp-image-1005 aligncenter" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/4-1.png" alt="" width="843" height="851" srcset="https://dinamiknetwork.com/wp-content/uploads/2019/12/4-1.png 843w, https://dinamiknetwork.com/wp-content/uploads/2019/12/4-1-768x775.png 768w" sizes="(max-width: 843px) 100vw, 843px" /></p>
<p>Kısa bir şekilde sizlere .Net Core Blazor framework u tanıtmaya çalıştım. Öneri de bulanacağınız ya da bu konuda hakkında örnek isterseniz yorumlarınızı bekliyorum olacağım.</p>
<hr />
<p>Diğer C# yazılarımız için <a href="https://dinamiknetwork.com/k/yazilim/diller/c/">buraya</a> tıklayabilirsiniz.</p>
<p>The post <a rel="nofollow" href="https://dinamiknetwork.com/net-core-blazor-web-apps/">.Net Core Blazor Web Apps</a> appeared first on <a rel="nofollow" href="https://dinamiknetwork.com">Dinamik Network</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dinamiknetwork.com/net-core-blazor-web-apps/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>SQL Server ile C# Entity Class Oluşturma</title>
		<link>https://dinamiknetwork.com/sql-server-ile-c-entity-class-olusturma/</link>
					<comments>https://dinamiknetwork.com/sql-server-ile-c-entity-class-olusturma/#comments</comments>
		
		<dc:creator><![CDATA[CAN YILDIRMAZ]]></dc:creator>
		<pubDate>Thu, 26 Dec 2019 08:45:23 +0000</pubDate>
				<category><![CDATA[T-SQL]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[C# Entity Class]]></category>
		<category><![CDATA[C# Model]]></category>
		<category><![CDATA[Class]]></category>
		<category><![CDATA[Code Generator]]></category>
		<category><![CDATA[Entity]]></category>
		<category><![CDATA[ileri SQL]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Server]]></category>
		<guid isPermaLink="false">https://dinamiknetwork.com/?p=942</guid>

					<description><![CDATA[<p>Merhabalar, SQL Server, T-SQL hakkında ilk yazımı yazıyorum. Esasında ilk başta temel yapılardan başlamayı düşünmüştüm ancak bu sefer farklı bir başlangıç yapmak istedim. Bu sebeple&#46;&#46;&#46;</p>
<p>The post <a rel="nofollow" href="https://dinamiknetwork.com/sql-server-ile-c-entity-class-olusturma/">SQL Server ile C# Entity Class Oluşturma</a> appeared first on <a rel="nofollow" href="https://dinamiknetwork.com">Dinamik Network</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Merhabalar,</p>
<p><strong>SQL Server</strong>, <strong>T-SQL</strong> hakkında ilk yazımı yazıyorum. Esasında ilk başta temel yapılardan başlamayı düşünmüştüm ancak bu sefer farklı bir başlangıç yapmak istedim. Bu sebeple bu yazıyı okuyan kişilerin MS-SQL hakkında temel bilgileri bildiklerini varsayıyorum.</p>
<p>Bu yazıda piyasada <strong>Code Generator</strong> olarak bilinen yapıyı kendimiz oluşturacağız. Code Generator ne demek diyecek olursanız bizim <strong>Entity</strong>&#8216;lerimizi kolayca üretmeyi sağlayan bir exedir. Entity nedir diye soracak olursanız da veritabanı üzerindeki tablolarımızın modelleridir diyebiliriz. Code Generator denen exe esasında arka tarafında birazdan yazacağımız bir SQL bloğu çalıştırmakta, sonuçlarını göstermektedir.</p>
<h2>C# Entity Class Oluşturma</h2>
<p>Evet, artık başlayalım. SQL Server&#8217;ı açalım. <strong>SQL Server</strong> verisyonum 2017 Developer Edition. Entity oluşturmak istediğim tablo da LogRecord tablosu. Aşağıdaki resimde de görebileceğiniz gibi çok olmasa da hatırı sayılabilecek alan sayısı olduğunu söylenebilir.</p>
<figure id="attachment_979" aria-describedby="caption-attachment-979" style="width: 1913px" class="wp-caption alignnone"><img wpfc-lazyload-disable="true" loading="lazy" class="size-full wp-image-979" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/MSSQLMainScreen.png" alt="MSSQL Ana Ekran" width="1913" height="1031" srcset="https://dinamiknetwork.com/wp-content/uploads/2019/12/MSSQLMainScreen.png 1913w, https://dinamiknetwork.com/wp-content/uploads/2019/12/MSSQLMainScreen-768x414.png 768w, https://dinamiknetwork.com/wp-content/uploads/2019/12/MSSQLMainScreen-1536x828.png 1536w, https://dinamiknetwork.com/wp-content/uploads/2019/12/MSSQLMainScreen-850x458.png 850w, https://dinamiknetwork.com/wp-content/uploads/2019/12/MSSQLMainScreen-466x250.png 466w" sizes="(max-width: 1913px) 100vw, 1913px" /><figcaption id="caption-attachment-979" class="wp-caption-text">MSSQL</figcaption></figure>
<p>Şimdi bu kısımda SQL Server bize View&#8217;leri sayesinde yardımcı olacak. SQL Server&#8217;ın özel viewleri hakkında detaylı bilgiyi aşağıdaki linkten edinebilirsiniz.</p>
<p><a href="https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/catalog-views-transact-sql?view=sql-server-ver15">https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/catalog-views-transact-sql?view=sql-server-ver15</a></p>
<p>Şimdi önce kolonlarımızı getirtelim. Aşağıdaki sorgu bize bu konuda yardımcı olacaktır.</p>
<pre class="prettyprint lang-sql" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">SELECT * FROM sys.all_columns WHERE object_id = (SELECT OBJECT_ID ('LogRecord'))</pre>
<p>Resimde sonuçlarını da görelim.</p>
<figure id="attachment_982" aria-describedby="caption-attachment-982" style="width: 1913px" class="wp-caption alignnone"><img wpfc-lazyload-disable="true" loading="lazy" class="size-full wp-image-982" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/ListTableColumns.png" alt="MSSQL Table" width="1913" height="1027" srcset="https://dinamiknetwork.com/wp-content/uploads/2019/12/ListTableColumns.png 1913w, https://dinamiknetwork.com/wp-content/uploads/2019/12/ListTableColumns-768x412.png 768w, https://dinamiknetwork.com/wp-content/uploads/2019/12/ListTableColumns-1536x825.png 1536w, https://dinamiknetwork.com/wp-content/uploads/2019/12/ListTableColumns-850x456.png 850w, https://dinamiknetwork.com/wp-content/uploads/2019/12/ListTableColumns-466x250.png 466w" sizes="(max-width: 1913px) 100vw, 1913px" /><figcaption id="caption-attachment-982" class="wp-caption-text">Table Columns</figcaption></figure>
<p>Artık kolonlarla ilgili olarak gerekli bilgiye sahibiz. Kolonların veri yapılarından kaynaklı olarak sahip oldukları özellikler de bu viewden bize gelmektedir. Şimdi bu tablodan bize <strong>system_type_id</strong> ve <strong>user_type_id</strong> isimli alanlar döndü. Yani aslında biz bu kolonların tiplerini de biliyoruz ama id değeri olarak biliyoruz. Bunların ne olduklarını bulabilmemiz için aşağıdaki sorgu bize yardımcı olacaktır.</p>
<p>SELECT * FROM sys.types</p>
<p>Sorgu sonucunu aşağıdaki resimde görebiliriz.</p>
<figure id="attachment_984" aria-describedby="caption-attachment-984" style="width: 1913px" class="wp-caption alignnone"><img wpfc-lazyload-disable="true" loading="lazy" class="size-full wp-image-984" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/ListTypes.png" alt="MSSQL Data Types" width="1913" height="993" srcset="https://dinamiknetwork.com/wp-content/uploads/2019/12/ListTypes.png 1913w, https://dinamiknetwork.com/wp-content/uploads/2019/12/ListTypes-768x399.png 768w, https://dinamiknetwork.com/wp-content/uploads/2019/12/ListTypes-1536x797.png 1536w, https://dinamiknetwork.com/wp-content/uploads/2019/12/ListTypes-850x441.png 850w" sizes="(max-width: 1913px) 100vw, 1913px" /><figcaption id="caption-attachment-984" class="wp-caption-text">MSSQL Data Types</figcaption></figure>
<p>SQL Server üzerindeki tüm tipler ile ilgili bilgiler bu view üzerindedir. Şimdi tek yapmamız gereken sorguyu ayarlamak. Sorgumuzu parça parça yazıp geliştireceğiz. Şimdi bize lazım olan parçalar 2 view üzerinde olduğuna göre JOIN işlemi ile başlayabiliriz.</p>
<figure id="attachment_986" aria-describedby="caption-attachment-986" style="width: 1897px" class="wp-caption alignnone"><img wpfc-lazyload-disable="true" loading="lazy" class="size-full wp-image-986" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/JoinResult.png" alt="MSSQL JOIN" width="1897" height="1028" srcset="https://dinamiknetwork.com/wp-content/uploads/2019/12/JoinResult.png 1897w, https://dinamiknetwork.com/wp-content/uploads/2019/12/JoinResult-768x416.png 768w, https://dinamiknetwork.com/wp-content/uploads/2019/12/JoinResult-1536x832.png 1536w, https://dinamiknetwork.com/wp-content/uploads/2019/12/JoinResult-850x461.png 850w" sizes="(max-width: 1897px) 100vw, 1897px" /><figcaption id="caption-attachment-986" class="wp-caption-text">MSSQL JOIN</figcaption></figure>
<p>Şimdi sıra ihtiyacımız olan alanlar ile bu sorguyu düzenlemekte. Sorguyu aşağıdaki gibi düzenleyelim.</p>
<figure id="attachment_948" aria-describedby="caption-attachment-948" style="width: 1913px" class="wp-caption alignnone"><img wpfc-lazyload-disable="true" loading="lazy" class="size-full wp-image-948" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/reducedJoinResult.png" alt="MSSQL SELECT" width="1913" height="1030" srcset="https://dinamiknetwork.com/wp-content/uploads/2019/12/reducedJoinResult.png 1913w, https://dinamiknetwork.com/wp-content/uploads/2019/12/reducedJoinResult-768x414.png 768w, https://dinamiknetwork.com/wp-content/uploads/2019/12/reducedJoinResult-1536x827.png 1536w, https://dinamiknetwork.com/wp-content/uploads/2019/12/reducedJoinResult-850x458.png 850w, https://dinamiknetwork.com/wp-content/uploads/2019/12/reducedJoinResult-466x250.png 466w" sizes="(max-width: 1913px) 100vw, 1913px" /><figcaption id="caption-attachment-948" class="wp-caption-text">T-SQL SELECT</figcaption></figure>
<h2>SQL Server &#8211; C# Veri Tipleri</h2>
<p>Sorgumuz fena bir yere gelmedi aslında. Elimizde alan isimleri ve veri tipleri var ancak bu tipler SQL tipleri. Bizim oluşturacağımız entity hangi programlama dili içinse onun karşılığı veri tipini bulmalıyız. Esasında programlama dilleri içerisinde veri tipleri benzerlik göstermektedir. Ben C# programlama dilini baz alarak hareket edeceğim. C# veri tipleri ile ilgili detaylı bilgiye aşağıdaki linkten ulşabilirsiniz.</p>
<p><a href="https://social.msdn.microsoft.com/Forums/tr-TR/379a88e0-ebd5-4666-9b73-e16f77698a38/c-deikenler-veri-tipleri?forum=csharptr">https://social.msdn.microsoft.com/Forums/tr-TR/379a88e0-ebd5-4666-9b73-e16f77698a38/c-deikenler-veri-tipleri?forum=csharptr</a></p>
<p>Şimdi sorgumuzun sondan bir önceki düzenlemesini yapalım. Sizin tablonuzda farklı tipler varsa yukarıdaki linkten yararlanarak C# karşılığını bulabilirsiniz. Ben sorgumu aşağıdaki hale getirdim.</p>
<figure id="attachment_950" aria-describedby="caption-attachment-950" style="width: 1910px" class="wp-caption alignnone"><img wpfc-lazyload-disable="true" loading="lazy" class="size-full wp-image-950" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/EntityView1.png" alt="MSSQL ENTITY" width="1910" height="1023" srcset="https://dinamiknetwork.com/wp-content/uploads/2019/12/EntityView1.png 1910w, https://dinamiknetwork.com/wp-content/uploads/2019/12/EntityView1-768x411.png 768w, https://dinamiknetwork.com/wp-content/uploads/2019/12/EntityView1-1536x823.png 1536w, https://dinamiknetwork.com/wp-content/uploads/2019/12/EntityView1-850x455.png 850w, https://dinamiknetwork.com/wp-content/uploads/2019/12/EntityView1-466x250.png 466w" sizes="(max-width: 1910px) 100vw, 1910px" /><figcaption id="caption-attachment-950" class="wp-caption-text">T-SQL Entity</figcaption></figure>
<p>Şimdi elimizde bir şeyler var. İsimler ve veri tipleri elimizde. Entity üzerinde değer setlenirken hiç bir kontrol yapmayacağım için Auto-implemented propertie haline getirmem yeterli olacaktır. Auto-implemeneted propertie kavaramının detaylı açıklamasına aşağıdaki linkten ulaşabilirsiniz.</p>
<p><a href="https://docs.microsoft.com/tr-tr/dotnet/csharp/programming-guide/classes-and-structs/auto-implemented-properties">https://docs.microsoft.com/tr-tr/dotnet/csharp/programming-guide/classes-and-structs/auto-implemented-properties</a></p>
<p>Sorguyu aşağıdaki hale getiriyoruz.</p>
<figure id="attachment_953" aria-describedby="caption-attachment-953" style="width: 1915px" class="wp-caption alignnone"><img wpfc-lazyload-disable="true" loading="lazy" class="size-full wp-image-953" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/EntityView2.png" alt="T-SQL Entity Properties" width="1915" height="1028" srcset="https://dinamiknetwork.com/wp-content/uploads/2019/12/EntityView2.png 1915w, https://dinamiknetwork.com/wp-content/uploads/2019/12/EntityView2-768x412.png 768w, https://dinamiknetwork.com/wp-content/uploads/2019/12/EntityView2-1536x825.png 1536w, https://dinamiknetwork.com/wp-content/uploads/2019/12/EntityView2-850x456.png 850w, https://dinamiknetwork.com/wp-content/uploads/2019/12/EntityView2-466x250.png 466w" sizes="(max-width: 1915px) 100vw, 1915px" /><figcaption id="caption-attachment-953" class="wp-caption-text">T-SQL Entity Properties</figcaption></figure>
<p>Şu an elimizde tablonun kolonları yani propertieleri var. Bu kadar yapmışken sınıfını da ayarlayalım. Sorguyu son kez değiştiriyorum.</p>
<figure id="attachment_959" aria-describedby="caption-attachment-959" style="width: 1915px" class="wp-caption alignnone"><img wpfc-lazyload-disable="true" loading="lazy" class="size-full wp-image-959" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/EntityViewLast.png" alt="T-SQL Entity Class" width="1915" height="1029" srcset="https://dinamiknetwork.com/wp-content/uploads/2019/12/EntityViewLast.png 1915w, https://dinamiknetwork.com/wp-content/uploads/2019/12/EntityViewLast-768x413.png 768w, https://dinamiknetwork.com/wp-content/uploads/2019/12/EntityViewLast-1536x825.png 1536w, https://dinamiknetwork.com/wp-content/uploads/2019/12/EntityViewLast-850x457.png 850w, https://dinamiknetwork.com/wp-content/uploads/2019/12/EntityViewLast-466x250.png 466w" sizes="(max-width: 1915px) 100vw, 1915px" /><figcaption id="caption-attachment-959" class="wp-caption-text">T-SQL Entity Class</figcaption></figure>
<p>Artık entitymiz hazır. Sorgu sonucunu alıp class yaratabiliriz. Bir DB üzerindeki tüm tabloları bu şekilde hızlıca Entity haline getirip modellerimizi hazırlayabilir, proje ya da projelerimize hızlıca entegre edebiliriz.</p>
<p>Bir sonraki yazıda yeniden görüşmek dileğiyle&#8230; Diğer <strong><a href="https://dinamiknetwork.com/k/yazilim/diller/t-sql/">T-SQL</a> </strong>konularına ulaşmak için tıklayın.</p>
<p>The post <a rel="nofollow" href="https://dinamiknetwork.com/sql-server-ile-c-entity-class-olusturma/">SQL Server ile C# Entity Class Oluşturma</a> appeared first on <a rel="nofollow" href="https://dinamiknetwork.com">Dinamik Network</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dinamiknetwork.com/sql-server-ile-c-entity-class-olusturma/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>PowerShell İle Çalışmak &#8211; İlk Dokunuş</title>
		<link>https://dinamiknetwork.com/powershell-ile-calismak-ilk-dokunus/</link>
					<comments>https://dinamiknetwork.com/powershell-ile-calismak-ilk-dokunus/#comments</comments>
		
		<dc:creator><![CDATA[CAN YILDIRMAZ]]></dc:creator>
		<pubDate>Sat, 21 Dec 2019 06:00:20 +0000</pubDate>
				<category><![CDATA[Powershell]]></category>
		<category><![CDATA[cmd]]></category>
		<category><![CDATA[cmd and PowerShell]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[PowerShell cmdlet]]></category>
		<category><![CDATA[PowerShell İle Çalışmak]]></category>
		<category><![CDATA[PowerShell ISE]]></category>
		<guid isPermaLink="false">https://dinamiknetwork.com/?p=706</guid>

					<description><![CDATA[<p>Merhabalar, PowerShell İle Çalışmak &#8211; İlk Dokunuş yazım ile powershell yazılarının 2.sini yazıyorum. Bu yazıda yapıya biraz dokunalım istiyorum. Öncelikle PowerShell ortamını tanımalıyız. Önceki yazımda&#46;&#46;&#46;</p>
<p>The post <a rel="nofollow" href="https://dinamiknetwork.com/powershell-ile-calismak-ilk-dokunus/">PowerShell İle Çalışmak &#8211; İlk Dokunuş</a> appeared first on <a rel="nofollow" href="https://dinamiknetwork.com">Dinamik Network</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Merhabalar, PowerShell İle Çalışmak &#8211; İlk Dokunuş yazım ile powershell yazılarının 2.sini yazıyorum. Bu yazıda yapıya biraz dokunalım istiyorum. Öncelikle <b>PowerShell</b> ortamını tanımalıyız. Önceki yazımda PowerShelle giriş yapmıştık. O yazıma <a href="https://dinamiknetwork.com/powershelle-merhaba-hello-world/" target="_blank" rel="noopener noreferrer">buradan</a> ulaşabilirsiniz.</p>
<p>Önceki yazımda powershell hakkında genel bir bilgi verip, ilk Hello World kodlarımızı yazmıştık.</p>
<h2>PowerShell İle Çalışmak &#8211; İlk Dokunuş</h2>
<p>Dikkat ettiyseniz bizim aslında 2 adet ortamımız var. Birincisi normal <b><u>PowerShell</u></b> ikincisi <b><u>Powershell ISE</u></b></p>
<p><img wpfc-lazyload-disable="true" loading="lazy" class="alignnone wp-image-571 size-full" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/1-1.png" alt="PowerShell İle Çalışmak" width="1038" height="795" srcset="https://dinamiknetwork.com/wp-content/uploads/2019/12/1-1.png 1038w, https://dinamiknetwork.com/wp-content/uploads/2019/12/1-1-768x588.png 768w, https://dinamiknetwork.com/wp-content/uploads/2019/12/1-1-850x651.png 850w" sizes="(max-width: 1038px) 100vw, 1038px" /></p>
<p>Normal <b>powershell</b> üzerinde komut çalıştırabiliriz. <b>Powershell</b>, cmdden çok daha gelişmiş bir yapıdır, ancak yeni başladığımız için şimdilik cmd ile endeksli gideceğim. Aşağıdaki resimler kendilerini ifade edecektir. Siyah olan ekran alışkın olduğumuz CMD ekranıdır. Mavi olan ekran ise Poweshellin ekranıdır.</p>
<p><a href="https://dinamiknetwork.com/powershell-ile-calismak-ilk-dokunus/2-5/" target="_blank" rel="noopener noreferrer"><img wpfc-lazyload-disable="true" loading="lazy" class="alignnone wp-image-709 size-full" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/2-2.png" alt="cmd and PowerShell" width="1915" height="960" srcset="https://dinamiknetwork.com/wp-content/uploads/2019/12/2-2.png 1915w, https://dinamiknetwork.com/wp-content/uploads/2019/12/2-2-768x385.png 768w, https://dinamiknetwork.com/wp-content/uploads/2019/12/2-2-1536x770.png 1536w, https://dinamiknetwork.com/wp-content/uploads/2019/12/2-2-850x426.png 850w" sizes="(max-width: 1915px) 100vw, 1915px" /></a></p>
<p>&nbsp;</p>
<p><a href="https://dinamiknetwork.com/wp-content/uploads/2019/12/3.png" target="_blank" rel="noopener noreferrer"><img wpfc-lazyload-disable="true" loading="lazy" class="alignnone wp-image-710 size-full" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/3.png" alt="cmd and PowerShell" width="1913" height="959" srcset="https://dinamiknetwork.com/wp-content/uploads/2019/12/3.png 1913w, https://dinamiknetwork.com/wp-content/uploads/2019/12/3-768x385.png 768w, https://dinamiknetwork.com/wp-content/uploads/2019/12/3-1536x770.png 1536w, https://dinamiknetwork.com/wp-content/uploads/2019/12/3-850x426.png 850w" sizes="(max-width: 1913px) 100vw, 1913px" /></a></p>
<p>Cmd üzerinde komutlar, <strong>PowerShell cmdlet </strong>ismini alıyor. PowerShell&#8217;in cmdletlerinin daha efektif ve bilgilendirici olduğunu görebilirsiniz. PowerShellin farkı development yeteneğinde kendini ortaya koymaktadır. Aşağıdaki resim soru işaretlerini ortadan kaldıracaktır. Aynı zamanda da <b><u>PowerShell ISE </u></b>&#8216;nin ne olduğu hakkında bir fikir verecektir.</p>
<p><a href="https://dinamiknetwork.com/wp-content/uploads/2019/12/4.png" target="_blank" rel="noopener noreferrer"><img wpfc-lazyload-disable="true" loading="lazy" class="alignnone wp-image-715 size-full" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/4.png" alt="PowerShell ISE" width="1710" height="892" srcset="https://dinamiknetwork.com/wp-content/uploads/2019/12/4.png 1710w, https://dinamiknetwork.com/wp-content/uploads/2019/12/4-768x401.png 768w, https://dinamiknetwork.com/wp-content/uploads/2019/12/4-1536x801.png 1536w, https://dinamiknetwork.com/wp-content/uploads/2019/12/4-850x443.png 850w, https://dinamiknetwork.com/wp-content/uploads/2019/12/4-475x249.png 475w" sizes="(max-width: 1710px) 100vw, 1710px" /></a></p>
<p>Görüldüğü üzere söz konusu dinamik işlemler olduğunda <b>PowerShell</b>, cmdden farkını ortaya koymaktadır. Örnekte bir değişken tanımlayarak çalışan process listemizi değişken içerisine yerleştirdik. Sonrasında da foreach döngüsü ile process listemizin içerisinde gezdik. Processlerimizin istediğimiz <u>propertie</u>lerini alabilir, onlarla istediğimiz işlemleri gerçekleştirebiliriz.</p>
<hr />
<p><strong><a href="https://dinamiknetwork.com/k/yazilim/diller/powershell/">PowerShell</a> </strong>hakkındaki diğer yazılar için tıklayabilirsiniz.</p>
<p>Bir sonraki yazıda görüşmek dileğiyle&#8230;</p>
<p><a href="https://docs.microsoft.com/tr-tr/powershell/scripting/getting-started/getting-started-with-windows-powershell?view=powershell-6" target="_blank" rel="noopener noreferrer">Buraya</a> tıklayarak Microsoft&#8217;un sitesinden PowerShell hakkındaki konulara ulaşabilirsiniz.</p>
<p>The post <a rel="nofollow" href="https://dinamiknetwork.com/powershell-ile-calismak-ilk-dokunus/">PowerShell İle Çalışmak &#8211; İlk Dokunuş</a> appeared first on <a rel="nofollow" href="https://dinamiknetwork.com">Dinamik Network</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dinamiknetwork.com/powershell-ile-calismak-ilk-dokunus/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>ASP.NET Core 3.0 ile JWT Uygulaması</title>
		<link>https://dinamiknetwork.com/asp-net-core-3-0-ile-jwt-uygulamasi/</link>
					<comments>https://dinamiknetwork.com/asp-net-core-3-0-ile-jwt-uygulamasi/#comments</comments>
		
		<dc:creator><![CDATA[Raziye Ataseven]]></dc:creator>
		<pubDate>Fri, 13 Dec 2019 13:36:07 +0000</pubDate>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[ASP.NET Core JWT]]></category>
		<category><![CDATA[ASP.NET Core JWT UsersController]]></category>
		<category><![CDATA[json web token]]></category>
		<category><![CDATA[jwt]]></category>
		<category><![CDATA[jwt asp.net core]]></category>
		<category><![CDATA[jwt authentication]]></category>
		<category><![CDATA[jwt bearer]]></category>
		<category><![CDATA[JWT nedir]]></category>
		<category><![CDATA[jwt token]]></category>
		<category><![CDATA[jwt token kullanımı]]></category>
		<category><![CDATA[restfull api]]></category>
		<guid isPermaLink="false">https://dinamiknetwork.com/?p=756</guid>

					<description><![CDATA[<p>Bu makalede basit bir ASP.NET Core 3.0 API  uygulamasına JWT (Json Web Token) ile authentication yapısını nasıl kuracağımızı anlatacağım. İlk olarak JWT nedir? Bir JWT,&#46;&#46;&#46;</p>
<p>The post <a rel="nofollow" href="https://dinamiknetwork.com/asp-net-core-3-0-ile-jwt-uygulamasi/">ASP.NET Core 3.0 ile JWT Uygulaması</a> appeared first on <a rel="nofollow" href="https://dinamiknetwork.com">Dinamik Network</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Bu makalede basit bir ASP.NET Core 3.0 API  uygulamasına JWT (Json Web Token) ile authentication yapısını nasıl kuracağımızı anlatacağım.</p>
<h2>İlk olarak JWT nedir?</h2>
<p>Bir JWT, teknik olarak bazı JSON verilerinin sahibini doğrulayan bir mekanizmadır. Çerezlerin aksine çok miktarda veri içerebilmektedir. Buna rağmen boyutu çok büyük değildir ve URL üzerinden de gönderilebilme özelliği olan kompakt yapıya sahiptir.</p>
<figure id="attachment_792" aria-describedby="caption-attachment-792" style="width: 770px" class="wp-caption alignnone"><a href="https://dinamiknetwork.com/asp-net-core-3-0-ile-jwt-uygulamasi/dotnet_core_jwt_json_web_token/" rel="attachment wp-att-792"><img wpfc-lazyload-disable="true" loading="lazy" class="size-full wp-image-792" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/dotnet_core_jwt_json_web_token.png" alt="dot net core 3 jwt s" width="770" height="384" srcset="https://dinamiknetwork.com/wp-content/uploads/2019/12/dotnet_core_jwt_json_web_token.png 770w, https://dinamiknetwork.com/wp-content/uploads/2019/12/dotnet_core_jwt_json_web_token-768x383.png 768w" sizes="(max-width: 770px) 100vw, 770px" /></a><figcaption id="caption-attachment-792" class="wp-caption-text">ASP.NET Core 3.0 API  uygulaması JWT(Json Web Token) ile authentication</figcaption></figure>
<p>Bir sunucu bir JWT aldığında, kaynak tarafından imzalandığından içerdiği verilere güvenilebileceğini garanti edebilir. Hiçbir aracı, bir JWT&#8217;yi gönderildikten sonra değiştiremez. Bir JWT&#8217;nin veri sahipliğini garanti ettiğini, ancak şifrelemeyi garanti etmediğini bilmek önemlidir; Bir JWT&#8217;ye kaydettiğiniz JSON verileri, yalnızca seri hale getirildiğinden ve şifrelenmemiş olduğundan tokene müdahale eden herkes tarafından görülebilir. Bu nedenle HTTPS’i JWT’lerle (ve genel olarak HTTPS’i) kullanmanızı tavsiye ederim. Json Web Tokenile ilgili dökümanlara resmi sitesi <a href="https://jwt.io/">https://jwt.io/</a> üzerinden ulaşabilirsiniz.</p>
<p>Şimdi gelelim JWT&#8217;nin ASP.NET Core 3.0 Api uygulamasındaki kullanımına;</p>
<p>&nbsp;</p>
<h3>ASP.NET Core JWT UsersController</h3>
<p>Basit bir read işlemi için GeltAll() methodunu, sisteme giriş yetkisi alabilmek için gerekli olan Json Web Token ve kullanıcı bilgilerini dönen &#8220;authenticate&#8221; methodunu oluşturuyoruz. UsersController&#8217;a eklenen [Authorize] attribute&#8217;ı token gönderilmeden istek yapılmasını engeller. Token alabilmek için ulaşmaya çalışacağımız Authenticate methodu ise [AllowAnonymous] attribute&#8217;ına sahip olmalıdır.</p>
<pre class="prettyprint lang-csharp" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Authorization;
using WebApi.Services;
using WebApi.Models;

namespace WebApi.Controllers
{
    [Authorize]
    [ApiController]
    [Route("[controller]")]
    public class UsersController : ControllerBase
    {
        private IUserService _userService;

        public UsersController(IUserService userService)
        {
            _userService = userService;
        }

        [AllowAnonymous]
        [HttpPost("authenticate")]
        public IActionResult Authenticate([FromBody]AuthenticateModel model)
        {
            var user = _userService.Authenticate(model.Username, model.Password);

            if (user == null)
                return BadRequest(new { message = "You shall not pass! -Gandalf the Grey"
                });

            return Ok(user);
        }

        [HttpGet]
        public IActionResult GetAll()
        {
            var users = _userService.GetAll();
            return Ok(users);
        }
    }
}</pre>
<p>&nbsp;</p>
<h3>ASP.NET Core User Entity</h3>
<p>User entity sınıfı, uygulamadaki bir kullanıcının verilerini gösterir. Uygulamanın farklı bölümleri arasında veri taşıma ve controller action methodlarından http response döndürmek için kullanılabilir.</p>
<pre class="prettyprint lang-csharp" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">namespace WebApi.Entities
{
    public class User
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Username { get; set; }
        public string Password { get; set; }
        public string Token { get; set; }
    }
}</pre>
<p>&nbsp;</p>
<h3>ASP.NET Core JWT AppSettings.json</h3>
<p>JWT token konfigurasyonu yaparken şifreleme işleminde kullanacağımız anahtar kelimeyi -tahmin edilmesi zor bir string ifade,  AppSettings.json dosyasından okuyoruz.</p>
<pre class="prettyprint lang-json" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">  "AppSettings": {
    "Secret": "ASIRI GIZLI JSON WEB TOKEN ANAHTARIM, BURAYA HERHANGI BIR STRING IFADE GELEBILIR"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"
}
</pre>
<p>&nbsp;</p>
<h3>ASP.NET Core JWT AppSettings.cs</h3>
<p>AppSettings class&#8217;ı appsettings.json dosyasında tanımlanan property&#8217;leri içerir. Dependency Injection (DI) sisteminde yerleşik olan ASP.NET Core yapısındaki sınıflara inject edilen nesneler üzerinden, uygulama ayarlarına erişmek için kullanacağız.</p>
<pre class="prettyprint lang-csharp" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">namespace WebApi.Helpers
{
    public class AppSettings
    {
        public string Secret { get; set; }
    }
}

</pre>
<p>&nbsp;</p>
<h3>ASP.NET Core JWT Helpers</h3>
<p>Extension methodlar, C # &#8216;daki mevcut tiplere kolaylık yöntemleri ve ekstra işlevler eklemek için kullanılır. Extension methodlar hakkında detaylı bilgiye ve uygulama detaylarına <a href="https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods">buradan</a> ulaşabilirsiniz.</p>
<pre class="prettyprint lang-csharp" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">using System.Collections.Generic;
using System.Linq;
using WebApi.Entities;

namespace WebApi.Helpers
{
    public static class ExtensionMethods
    {
        public static IEnumerable&lt;User&gt; WithoutPasswords(this IEnumerable&lt;User&gt; users) {
            return users.Select(x =&gt; x.WithoutPassword());
        }

        public static User WithoutPassword(this User user) {
            user.Password = null;
            return user;
        }
    }
}</pre>
<p>&nbsp;</p>
<h3>ASP.NET Core JWT Authenticate Model</h3>
<p>Authenticate model, &#8220;/users/authenticate&#8221; adresindeki method request&#8217;i için gerekli parametreleri içerir. Bu URL&#8217;e bir HTTP POST requesti geldiğinde, request body&#8217;sindeki veriler AuthenticateModel&#8217;in bir instance&#8217;ına bağlanır, doğrulanır ve methoda iletilir.</p>
<p>Otomatize edilmiş bir validasyon kuralı oluşturmak için ASP.NET Core Data Annotations kütüphanesinin [Required] attribute&#8217;ı, bağlı olduğu model property&#8217;si methoda gönderilmediğinde ap cevabı olarak &#8220;validation error message&#8221; cevabı döner.</p>
<pre class="prettyprint lang-csharp" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">using System.ComponentModel.DataAnnotations;

namespace WebApi.Models
{
    public class AuthenticateModel
    {
        [Required]
        public string Username { get; set; }

        [Required]
        public string Password { get; set; }
    }
}</pre>
<p>&nbsp;</p>
<h3>ASP.NET Core JWT User Service</h3>
<p>User servisi, kullanıcı kimlik bilgilerinin doğrulanması ve bir json web token dondüren bir methodla, uygulamadaki kullanıcıları listeleyen bir method içermektedir.</p>
<p>Ayrıca veritabanı bağlantısı ile ve orm aracı implementasyonu ile zaman kaybetmemek ve JWT authentication işlemine odaklanmak amacıyla kullanıcılar için mock data tanımlandı. Kullanıcı bilgilerini veritabanında ve şifreleri hash&#8217;lenmiş şekilde saklamanız önerilir.</p>
<p>Başarılı kimlik doğrulamasında Authenticate methodu, appsettings.json içinde tanımlanmış secret key yardımıyla dijitl olarak imzalanmış bir token üretmek için <em>JwtSecurityTokenHandler </em>sınıfını kullanır.</p>
<p>WebApi.Service namespace&#8217;inde üst bölümde bulunan interface nesnesi, UserService&#8217;in içerdiği merhodları tanımlar,  altındaki user sevice ise bu methodları miras alır.</p>
<pre class="prettyprint lang-csharp" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">using System;
using System.Collections.Generic;
using System.IdentityModel.Tokens.Jwt;
using System.Linq;
using System.Security.Claims;
using System.Text;
using Microsoft.Extensions.Options;
using Microsoft.IdentityModel.Tokens;
using WebApi.Entities;
using WebApi.Helpers;

namespace WebApi.Services
{
    public interface IUserService
    {
        User Authenticate(string username, string password);
        IEnumerable&lt;User&gt; GetAll();
    }

    public class UserService : IUserService
    {
        // users mock data
        private List&lt;User&gt; _users = new List&lt;User&gt;
        { 
            new User { Id = 1, FirstName = "john", LastName = "doe", Username = "jdoe", Password = "123" } 
        };

        private readonly AppSettings _appSettings;

        public UserService(IOptions&lt;AppSettings&gt; appSettings)
        {
            _appSettings = appSettings.Value;
        }

        public User Authenticate(string username, string password)
        {
            var user = _users.SingleOrDefault(x =&gt; x.Username == username &amp;&amp; x.Password == password);

            // user bulunamazsa null dönüyoruz
            if (user == null)
                return null;

            // authentication başarılı, jwt token oluşturuyoruz
            var tokenHandler = new JwtSecurityTokenHandler();
            var key = Encoding.ASCII.GetBytes(_appSettings.Secret);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new Claim[] 
                {
                    new Claim(ClaimTypes.Name, user.Id.ToString())
                }),
                Expires = DateTime.UtcNow.AddDays(7),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };
            var token = tokenHandler.CreateToken(tokenDescriptor);
            user.Token = tokenHandler.WriteToken(token);

            return user.WithoutPassword();
        }

        public IEnumerable&lt;User&gt; GetAll()
        {
            return _users.WithoutPasswords();
        }
    }
}</pre>
<p>&nbsp;</p>
<h3>ASP.NET Core JWT Program</h3>
<p>Program class&#8217;ı, uygulamayı başlatmak için ana giriş noktası olan bir konsol uygulamasıdır, IHostBuilder instance&#8217;ı kullanarak web api host&#8217;unu ve web sunucusunu yapılandırır ve başlatır. ASP.NET Core uygulamaları yürütmek için bir host gerektirir.</p>
<pre class="prettyprint lang-csharp" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;

namespace WebApi
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =&gt;
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =&gt;
                {
                    webBuilder.UseStartup&lt;Startup&gt;()
                        .UseUrls("http://localhost:4000");
                });
    }
}</pre>
<p>&nbsp;</p>
<h3>ASP.NET Core JWT Startup</h3>
<p>ASP.NET Core mimarisinde, Dependency Injection için kullanabileceğimiz hazır bir yapı bulunuyor. Inject etmek isteyeceğiniz nesne bir servis nesnesi veya log nesnesi olabilir. Ihtiyacınız olan şey, inject işlemini yaptıktan sonra Startup.cs sınıfındaki servis konfigurasyonlarını yaptığımız methodda, <strong>IServiceCollection</strong> interface ile servisimizi tanıtmak.</p>
<p>Authentication yöntemini ve temel konfigurasyonlarını uygulamaya tanıtmak için <strong>Microsoft.AspNetCore.Authentication.JwtBearer</strong> kütüphanesini kullanıyoruz.</p>
<pre class="prettyprint lang-csharp" data-start-line="1" data-visibility="visible" data-highlight="54, 33-51" data-caption="">using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using WebApi.Helpers;
using WebApi.Services;
using Microsoft.IdentityModel.Tokens;
using System.Text;
using Microsoft.AspNetCore.Authentication.JwtBearer;

namespace WebApi
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors();
            services.AddControllers();

            // configure strongly typed settings objects
            var appSettingsSection = Configuration.GetSection("AppSettings");
            services.Configure&lt;AppSettings&gt;(appSettingsSection);

            // configure jwt authentication
            var appSettings = appSettingsSection.Get&lt;AppSettings&gt;();
            var key = Encoding.ASCII.GetBytes(appSettings.Secret);
            services.AddAuthentication(x =&gt;
            {
                x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(x =&gt;
            {
                x.RequireHttpsMetadata = false;
                x.SaveToken = true;
                x.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey = new SymmetricSecurityKey(key),
                    ValidateIssuer = false,
                    ValidateAudience = false
                };
            });

            // configure DI for application services
            services.AddScoped&lt;IUserService, UserService&gt;();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            app.UseRouting();

            // global cors policy
            app.UseCors(x =&gt; x
                .AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader());

            app.UseAuthentication();
            app.UseAuthorization();
            
            app.UseEndpoints(endpoints =&gt; {
                endpoints.MapControllers();
            });
        }
    }
}</pre>
<p>&nbsp;</p>
<h3><strong>ASP.NET Core JWT Web Api csproj</strong></h3>
<p>Csproj (C# project) dosyası bir MSBuild tabanlı bir dosyadır ve target framework ve Nuget paketlerinin versiyonları ve bağımlılık bilgilerini içerir.</p>
<pre class="prettyprint lang-xml" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">&lt;Project Sdk="Microsoft.NET.Sdk.Web"&gt;
  &lt;PropertyGroup&gt;
    &lt;TargetFramework&gt;netcoreapp3.0&lt;/TargetFramework&gt;
  &lt;/PropertyGroup&gt;
  &lt;ItemGroup&gt;
    &lt;PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.0.0" /&gt;
    &lt;PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="5.5.0" /&gt;
  &lt;/ItemGroup&gt;
&lt;/Project&gt;</pre>
<p>&nbsp;</p>
<h3></h3>
<h3><strong>ASP.NET Core JWT Authentication API&#8217;nin Postman ile Test Edilmesi</strong></h3>
<ul>
<li><em>http://localhost:40000/users/authenticate</em> adresinini POST yöntemiyle test etmeliyiz. User Controller&#8217;da tanımlı authenticate methodumuzu hatırlayalım. HttpPost attribute&#8217;a sahip, valid bir AuthenticateModel nesnesi istemektedir. Postman query editörümüz aşağıdaki gibi görünecektir.(200 OK response&#8217;u ile birlikte)</li>
</ul>
<p>&nbsp;</p>
<p><img wpfc-lazyload-disable="true" loading="lazy" class="alignnone size-full wp-image-815" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/authentication_request_and_response_query_editor.jpg" alt="authentication_request_and_response_with_postman" width="1555" height="559" srcset="https://dinamiknetwork.com/wp-content/uploads/2019/12/authentication_request_and_response_query_editor.jpg 1555w, https://dinamiknetwork.com/wp-content/uploads/2019/12/authentication_request_and_response_query_editor-768x276.jpg 768w, https://dinamiknetwork.com/wp-content/uploads/2019/12/authentication_request_and_response_query_editor-1536x552.jpg 1536w, https://dinamiknetwork.com/wp-content/uploads/2019/12/authentication_request_and_response_query_editor-850x306.jpg 850w" sizes="(max-width: 1555px) 100vw, 1555px" /></p>
<p>&nbsp;</p>
<h3><strong>ASP.NET Core JWT Authentication API&#8217;nin Authentcated Methodunun Test Edilmesi</strong></h3>
<ul>
<li>Token bilgisini kullanıcı adı ve şifresiyle aldıktan sonra, Authorization sekmesinde, Bearer token sekmesindeki Token için ayrılmış olan alana yapıştırıyoruz. HttpGet attribute&#8217;ı ile işaretlenmiş olan GetAll methodu için Get yöntemini kullanarak istek yapmamız gerekiyor. Böylece request alanları aşağıdaki gibi görünüyor.</li>
</ul>
<p><img wpfc-lazyload-disable="true" loading="lazy" class="alignnone size-full wp-image-817" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/write_token_for_getusers_method.jpg" alt="" width="1545" height="297" srcset="https://dinamiknetwork.com/wp-content/uploads/2019/12/write_token_for_getusers_method.jpg 1545w, https://dinamiknetwork.com/wp-content/uploads/2019/12/write_token_for_getusers_method-768x148.jpg 768w, https://dinamiknetwork.com/wp-content/uploads/2019/12/write_token_for_getusers_method-1536x295.jpg 1536w, https://dinamiknetwork.com/wp-content/uploads/2019/12/write_token_for_getusers_method-850x163.jpg 850w" sizes="(max-width: 1545px) 100vw, 1545px" /></p>
<p>&nbsp;</p>
<p>Token&#8217;ımız kabul ediliyor ve kullanıcı bilgilerine ulaşıyoruz.</p>
<p><img wpfc-lazyload-disable="true" loading="lazy" class="size-full wp-image-816" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/get_users_req_resp.jpg" alt="" width="1554" height="590" srcset="https://dinamiknetwork.com/wp-content/uploads/2019/12/get_users_req_resp.jpg 1554w, https://dinamiknetwork.com/wp-content/uploads/2019/12/get_users_req_resp-768x292.jpg 768w, https://dinamiknetwork.com/wp-content/uploads/2019/12/get_users_req_resp-1536x583.jpg 1536w, https://dinamiknetwork.com/wp-content/uploads/2019/12/get_users_req_resp-850x323.jpg 850w" sizes="(max-width: 1554px) 100vw, 1554px" /></p>
<p>Asp.net kategorisin diğer konulara <a href="https://dinamiknetwork.com/k/yazilim/diller/c/">buradan</a> ulaşabilirsiniz.</p>
<p>The post <a rel="nofollow" href="https://dinamiknetwork.com/asp-net-core-3-0-ile-jwt-uygulamasi/">ASP.NET Core 3.0 ile JWT Uygulaması</a> appeared first on <a rel="nofollow" href="https://dinamiknetwork.com">Dinamik Network</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dinamiknetwork.com/asp-net-core-3-0-ile-jwt-uygulamasi/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>MATLAB Nedir ve Nerelerde Kullanılır?</title>
		<link>https://dinamiknetwork.com/matlab-nedir-ve-nerelerde-kullanilir/</link>
					<comments>https://dinamiknetwork.com/matlab-nedir-ve-nerelerde-kullanilir/#comments</comments>
		
		<dc:creator><![CDATA[BurakC]]></dc:creator>
		<pubDate>Mon, 09 Dec 2019 04:43:40 +0000</pubDate>
				<category><![CDATA[Diller]]></category>
		<category><![CDATA[matlab]]></category>
		<category><![CDATA[matlab nasıl öğrenilir]]></category>
		<category><![CDATA[matlab nedir]]></category>
		<category><![CDATA[matlab nerelerde kullanılır]]></category>
		<category><![CDATA[matlab öğrenme]]></category>
		<guid isPermaLink="false">https://dinamiknetwork.com/?p=719</guid>

					<description><![CDATA[<p>MATLAB, genellikle pozitif bilim ve mühendislik hesaplamaları için kullanılan bir bilgisayar programıdır. ABD merkezli MathWorks firması tarafından geliştirilen MATLAB, aynı zamanda çok paradigmalı ve 4.nesil&#46;&#46;&#46;</p>
<p>The post <a rel="nofollow" href="https://dinamiknetwork.com/matlab-nedir-ve-nerelerde-kullanilir/">MATLAB Nedir ve Nerelerde Kullanılır?</a> appeared first on <a rel="nofollow" href="https://dinamiknetwork.com">Dinamik Network</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><strong>MATLAB</strong>, genellikle pozitif bilim ve mühendislik hesaplamaları için kullanılan bir bilgisayar programıdır. ABD merkezli MathWorks firması tarafından geliştirilen MATLAB, aynı zamanda çok paradigmalı ve 4.nesil bir programlama dilidir.İsmi İngilizce “Matrix Laboratory” kelimelerinin birleştirilmesi ile oluşmuş olan MATLAB, isminden de anlaşılacağı gibi matris tabanlı bir çalışma sistemine sahiptir.</p>
<p>Lineer cebir, istatistik, optimizasyon, nümerik analiz, optimizasyon, fourier analizi gibi pek çok matematiksel hesaplamanın etkili ve hızlı şekilde yapılmasına olanak sağlayan MATLAB programı aynı zamanda 2D ve 3D grafik çizimi için de kullanılır.</p>
<h2><strong>MATLAB İLE NELER YAPILABİLİR? AVANTAJLARI NELERDİR?</strong></h2>
<ul>
<li>Kullanıcıya veri ve fonksiyon çizme, matris işlemleri yapma, algoritma geliştirmenin yanında C,C++,Java gibi diğer diller ile yazılmış programlar ile de çalışma imkanı sunar.</li>
<li>MATLAB ile C programlama dili ya da Fortran’daki fonksiyonlar çağırılabilir ve alt programlar yazılabilirsiniz.</li>
<li>Lineer cebir, istatistik, optimizasyon, nümerik analiz, optimizasyon, fourier analizi gibi pek çok matematiksel hesaplamaları etkili ve hızlı şekilde yapar.</li>
<li>2D  ve 3D grafik çizimi yapılabilir.</li>
<li>MATLAB ile çok karmaşık matematiksel hesaplamaları hızlı ve etkili bir biçimde tamamlayabilirsiniz.</li>
</ul>
<p>&nbsp;</p>
<h2><strong>NASIL KULLANILIR?</strong></h2>
<p>Program çalıştırıldığında çeşitli araç çubukları ile birlikte ekranın büyük çoğunluğunu oluşturan bir komut satırı ekrana gelir ve yapılacak işlemlerin hemen hepsi bu komut satırına girilen komutlar ile olur.</p>
<p>Sayı,değişken ve fonksiyon gibi ifadeler ile komutların hazırlandığı program ile en karmaşık matematiksel işemler bile kolaylıkla yapılır.Öncelikle işlemler yapmaya komut satırına yapılacak olan işlem direkt yazılarak başlanabilir. Mesela komut satırına 2+2 yazarsak program bize çıktı olarak 4 sonucunu yazdıracaktır.</p>
<p>MATLAB ile yapılacak olan basit matematiksel işlemler de ;</p>
<p><strong>Toplama işlemi için</strong> &#8220;+&#8221;, <strong>çıkarma işlemi  işlemi için</strong> &#8220;-&#8220;,<strong> çarpma işlemi için</strong> &#8220;*&#8221; ,<strong>bölme işlemi için ise</strong> &#8220;/&#8221; işaretlerini kullanacağız. Bu programın marifetlerini böyle basit işlemlerle kısıtlamamak lazım tabi, değişken tanımlayarak fonksiyon oluşturmak, ifadeleri görsel formatlarla ekrana yazdırmak, limit,türev ve integral almak gibi birçok karmaşık işlemlere sonraki yazılarımda değineceğim fakat şimdilik basit bir giriş yapalım.</p>
<p><strong>Şimdi anlatmak istediklerimi basit bir örnekle oturtmaya çalışalım.</strong></p>
<p>MATLAB programında basit olarak değişkenler değer atayabiliriz ve bu değişkenler üzerinde matematiksel işleler yapabiliriz.Bunların yanında diğer programlama dillerinde olduğu gibi if,else, gibi mantıksal işlemler de yapabiliriz.</p>
<p>İki boyutlu bir grafik oluşturalım mesela. Bunun için &#8220;plot fonksiyonu&#8221; kullanmamız gerekir. 0 ile 2π  arasında bir sinüs fonksiyonunun grafik çizim aşağıda gösterildiği gibidir.</p>
<p>x = 0:pi/100:2*pi;<br />
y = sin(x);<br />
plot(x,y)</p>
<p>Sinüs fonksiyonunun grafiğinin çizilmesinde kullanılan plot komutu ile varsayılan olarak mavi düz çizgili grafikler elde edilir. Yukarıdaki örnekte plot(x,y) yerine plot(x,y,&#8217;r&#8211;&#8216;) komutu kullanılarak kırmızı kesikli çizgilerden oluşan bir grafik elde edilebilir. Komutta kullanılan “r&#8211;“ ifadesinde bulunan r harfi red (kırmızı) rengini, &#8212; kısmı ise kesikli çizgiyi ifade eder. Başka harfler ve başka karakterlerle de grafiklerin çizilmesi mümkündür.</p>
<p>&nbsp;</p>
<p><img wpfc-lazyload-disable="true" class="img-responsive" title="Matlab Nedir? Nerelerde Kullanılır?" src="https://cadsay.com/images/matlab-nedir-06.png" alt="Matlab Nedir? Nerelerde Kullanılır?" /></p>
<h2></h2>
<p>Bir sonraki yazımda görüşmek üzere..<br />
Matlab hakkında diğer yazılara &#8220;<a href="https://dinamiknetwork.com/k/yazilim/diller/">Diller</a>&#8221; kategorimizden ulaşabilirsiniz.</p>
<p>The post <a rel="nofollow" href="https://dinamiknetwork.com/matlab-nedir-ve-nerelerde-kullanilir/">MATLAB Nedir ve Nerelerde Kullanılır?</a> appeared first on <a rel="nofollow" href="https://dinamiknetwork.com">Dinamik Network</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dinamiknetwork.com/matlab-nedir-ve-nerelerde-kullanilir/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
	</channel>
</rss>
