Loading
C# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
C# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

15 Eylül 2021 Çarşamba

web tasarım dersleri nerden başlamalı

,

Web Tasarım günümüzde popülerliğini her geçen gün artıran bir bilişim alanı. İnternetin tüm dünyaya yayılması ve bugün cep telefonlarından, tablet bilgisayarlardan sokaklarda bile ücretsiz şekilde internete bağlanabilmemiz, bu dünyaya olan ilgiyi artırdı. Bu kadar ziyaretçisi olan bir dünyaya, profesyonel iş uygulamaları hızla kaymaya başladı. Bugün artık birçok şirket tüm yazılımlarını internet üzerindeki platformlara taşımaya başladı. Klasik masaüstü yazılımların güncelleme dertleri ve bakım masrafları gerek şirketleri gerekse yazılımcıları web dünyasına itti.      

Bir yazılım geliştirmek istiyorsunuz diyelim, geliştirilen uygulama Windows, Linux, MAC gibi platformlarda çalışabilmeli. Ne yaparsınız, tabi ki web tabanlı bir çözüm geliştirirsiniz. Kullanıcı ister evinden, ister gittiği ülkeden rahatlıkla bağlanabilir, işlerini coğrafi bölgeden bağımsız olarak devam ettirebilir. Aklınızda soru kalmaması için bu uzun girişi yaptım. Peki web tabanlı bir çözüm üretmek için neleri bilmeliyiz?  
Önce HTML(Hypertext Markup Language), yani Veri İşaretleme Dili, bugünlerde HTML5 sürümü ile yeni özellikler kazandırılan web sayfalarının ana görüntüleme dili. Öğrenimi çok kolay ve basit omakla birlikte, pratik yapmadığınızda akılda kalmaz. Çeşitli yazılım geliştirme araçları ile HTML kodları otomatik olarak üretilir. Bu araçlar otomatik üretse de tavsiyem tamamen HTML'ye hakim olmanızdır. 


CSS,(Cascading Style Sheet) ise iyi bir web tasarımcı olmak için elzem olan bir teknoloji. HTML web sayfalarına 
hükmetse de CSS olmadan profesyonel görünümde ve her cihazda çalışan sayfalar hazırlayamazsınız. CSS ile sayfanıızın nasıl bir şabllona yerleşeceğini planlarsınız. CSS ile farklı şablonlar hazırlayıp, görünümü farklı sayfalar üretebilirsiniz. Google arama motoru da tablolar kullanarak hazırlanmış HTML sayf
alarından çok CSS ile biçimlendirilmiş sayfaları sever.

Jquery ise sayfalarına hareket katmak için geliştirilmiş, daha az kod yazarak daha çok iş yapacağınız bir teknoloji. Eskiden kullandığımız JavaScript'in tahtına oturdu, birçok özelliği JavaScript'den alsa da, sürekli yenilenen kütüphanesi ile wenb tasarımcıların vazgeçilmezi haline geldi.

Dinamik dillerden birini (ASP.net veya PHP gibi) de bilmek zorundasınız, zira Jquery istemci tabanlıdır, son kullanıcı Jquery kodlarını inceleyebilir, görebilir ama Jquery hızlıdır. ASP.net, PHP, Perl gibi diller ise sunucuda çalışan ve HTML kodlarını istediğiniz gibi üretmenizi sağlayan teknolojilerdir. Son kullanıcı, ASP veya PHP'nin ürettiği kodları göremez, sadece sunucu bilgisayarda bulunan web sunucu aracılığı ile üretilen HTML kodlarının sonucunu görür. Bu da güvenlik açısından önemlidir.


Dinamik diller, diğer taraftan veritabanı ile de iletişim kurarak, verilerin sunucularda saklanmasını, sorgulanmasını sağlarlar. Web dünyasının hızlı gelişmesi de dinamik dillerden sonra olmuştur. 90'lı yıllarda hazırlanan sadece HTML kodundan oluşan web sayfaları günümüzde tamamen ASP.net ve PHP ağırlıklı dinamik dillerin kullanıldığı sayfalara bırakmıştır.

Peki PHP mi, ASP.net mi öğrenmelisiniz? Diğer bir makalede iki dilin de farklarını anlatıp seçimi size bırakacağım.

28 Haziran 2012 Perşembe

C# Programlama Sanatı

,

Programcılar modern çağın ressamları, heykeltıraşları yani sanatçılarıdır. Programlama da sanatın ta kendisi. Bir başka açıdan baktığımızda da programlama bir bilim, programcı da bilim adamıdır. Bence her ikisi de doğru. Şöyle ki, programcı da sanatçının esin kaynağına yani ilhama dayanarak program yazar, aklına ilginç bir fikir gelir, bu fikri kendi araçlarını kullanarak başlar program halinde vücuda getirmeye.
Programcının en büyük görevi, insanlar ile bilgi arasındaki iletişimi ve bağlantıyı sağlamaktır. İnsan yaşamını kolaylaştıran bu kutsal görev programcı olmayanlarca pek de önemsenmez. Geleceğin sanal şehirlerini kuranlar programcı dediğimiz gizli kahramanlardır. Yeni yazdığı programın kullanıldığını ve yararlı olduğun görmek ona her şeyi unutturur, programcı olmayanların asla anlayamayacağı bir haz verir.
Bilgisayar kullanıcısı sayısı gün geçtikçe geometrik olarak artıyor ama bu tür bir haz bilgisayar kullanıcılarının büyük bir çoğunluğu tarafından asla yaşanmaz. Çünkü bilgisayar kullanıcılarının büyük bir çoğunluğu programcı değildir ve asla da olmayacaklar. Onlar sadece yazılan programları ve içerisinde yazılım gömülü akıllı cihazları kullanırlar.
 

BİR PROGRAMLAMA DİLİ ÖĞRENMEK


Programlama dili öğrenmeyi yabancı dil öğrenemeye benzetebilirsiniz. Mesela her ikinde de öğrenilmesi gereken, o dile özgü bir grup kelime var. Anahtar kelime diye adlandırdığımız bu kelimelerin c# dilindeki sayısı 77 tanedir. C dilinin geleneğini sürdürdüğü için de bu kelimeler küçük harflerle yazılır.

Yabancı dil öğrenirken bir takım yazım ve dil bilgisi kuralları öğrenmek zorundayız. Programlama dilinin yazım ve dil bilgisi kuralları konuşulan dillerin kurallarına göre daha katıdır.

Programlama dili ile yabancı dil öğrenme arasındaki en büyük benzerlik bence her ikisinin de okuyarak öğrenilememesidir. Pratik yapmak zorundayız. Bir müzik aletini çalmayı öğrenirken olduğu kadar çok pratik yapmalıyız hem de. Bir programcı gibi düşünmeye ve kendi kodumuzu kendimiz yazmaya alışmalıyız.

Programlama bir problem çözme etkinliğidir. Programcının tek en önemli kalite göstergesi problemleri bileşenlerine ayırma ve daha küçük parçalara bölerek çözebilme yeteneğidir. Programcının sorumluluğu bu küçük parçaları bir araya getirip çözümü oluşturmaktır. Bu beceri de bence sadece pratik yaparak gelişir. 

PROGRAMLAMA NEREDEN NEREYE


Charles Petzold, bilgisayar devrimini iki evreye ayırır: Birinci evre bilgisayarların tasarlandığı ve yapıldığı zaman, ikinci evre ise onlarca yıl sonra bilgisayarların programcı olmayan kimseler tarafından da kullanılabilir olmasıdır.

İlk programlanabilir bilgisayar 1930'lu yıllarda yapıldı. Uzun bir süre programlama işlemi delikli kartlar gibi mekanizmalar kullanılarak sağlandı. Bilgisayarın kendisine donanım, üzerinde çalışan kodlara da yazılım adı verildi. Bir kaç dekad boyunca donanım ve yazılım birbirine bitişikti. Her makinanın kendine özgü bir komut seti vardı ve bu komutlar başka makinalarda çalışmazdı. Sayısal tümleşik devreler kullanıldığı dönemlerde de bu durum devam etti.

1950'lerin başında mimariden bağımsız bilgisayar dilleri geliştirilmeye başlandı. Bu diller Makine kodu ile karşılaştırıldığında yüksek seviyeli diller olarak aklandırıldı. COBOL, BASIC, FORTRAN gibi diller hala farklı sürümleri ile hayattadır.
 

Derlemek, Yorumlamak


Bilgisayar sadece Makine kodunu çalıştırabilir. Öyleyse yüksek seviyeli dillerle yazılan program kodları Makine konuda dönüştürülmelidir. Derleyici, bir programı tamamen Makine koduna çevirirken yorumlayıcı bu işlemi eş zamanlı olarak yapar.

Bilinen en eski programlama dillerinden birisi de ALGOL dilidir. 1950'li yıllarda uluslar arası bir komite tarafından geliştirildi ve uzun yıllar değişiklikler yapılarak kullanıldı. Hâlâ Pascal, PL/I ve C gibi dillerin temelini oluşturduğu için yaşamını sürdürmektedir. 

C Dilinin Serüveni


Bell Laboratuarlarının etkisi olmadan çağdaş dünyayı düşünmek imkansızdır. 1947 yılında transistor orada icat edildi. 1970’lerde UNIX işletim sistemi orada geliştirildi.Uzun yıllar, büyük bir kısmı Dennis Ritchie tarafından geliştirilen C dili, UNIX işletim sistemi ile ilişkilendirilir. C dili tek harfle temsil edildiğinden bu adın nereden geldiği merak edilebilir: İlk olarak CPL (Combined Programming Language) dili vardı. BCPL (Basic CPL) dili daha sonra CPL dilinden esinlenerek geliştirildi. Sonraları BCPL dilinin basitleştirilmiş bir hali olan B dili ortaya çıktı. C dili de bu B dilinden türetildi. C ismi oradan gelir.
ALGOL ve onun türevi olan dillerde, program parçaları BEGIN ve END kelimeleri arasına yazılır. C ise bu işi küme parantezlerini kullanak yapar. C’de yazılmış programların en belirgin farkı hızlı olmalarıdır. Çünkü C işaretçiler dediğimiz, bellek bölgelerine doğrudan erişmeye yarayan yapılara izin verir. Bazıları C’ye yüksek seviyeli assembly dili der. Çünkü C; bit, byte ve bellek düzeyinde çok iyi çalışır.
Aslında bu yaklaşımın tehlikeli tarafı da var. Yüksek seviyeli dillerin derleyicileri program kodları derlenirken programın çökmemesi ve veri kayıplarına neden olmaması için fazladan kodlar eklerler. C derleyicisi ise hızlı program ortaya koyma adına, fazladan kod eklemez. Bu yüzden, dikkatli davranılmadığında hata oluşturmaya daha elverişlidir. Hatasız program olmaz ise de, C’de bu durum daha yaygındır. Hataların çoğunluğu işaretçi kullanmanın yol açtığı hatalardır.
C, hala çok yaygındır ama bazı açılardan tarih olmuştur. Geleneksel prosedürel diller grubuna dahil edilmektedir. Program içerisinde belirli bir işi yapan ya da algoritmayı gerçekleştiren program parçasına prosedür denir. Bir C programı da, bir grup prosedür ya da fonksiyondan oluşur. Fonksiyonlar, devamlı veriler ile çalışır. Prosedürel yapıda bu veriler ile program kodu iç içe bulunur.
Nesne yönelimli programlama terimini çok sık duymaya başladık. Nesne yönelimli programlama dillerinin (OOP) ilki Palo Alto Araştırma Merkezinde (PARC) geliştirilen SmallTalk dilidir. PARC, Microsoft Windows ve Apple Machintosh’ta da kullanılan grafiksel kullanıcı arayüzü kavramlarını geliştiren Xerox tarafından kurulan araştırma laboratuarıdır.
Nesne yönelimli dilde, programcılar prosedürler yerine sınıflar oluştururlar, kodların ve verilerin birleşiminden oluşan nesneler de bu sınıflardan türetilir. Programlamadaki bu bakış açısı değişimi, çeşitli programlama işlerinde tekrar tekrar kullanılabilecek kodlar yazmaya olanağı sağladı.
C dilinin de nesne yönelimli sürümünü yazmak isteyenler oldu. 1980lerin başında Bjarne Stroustrup tarafından Bell laboratuarlarında C++ (Si plas plas okunur) geliştirildi. C++ dilinin adında geçen ++, C dilinde bir sayıya 1 eklemek için kullanılır, yani sayının değeri 1 artar.
C++ dili, C’nin tüm özelliklerine sahip ama nesne yönelimli olması için bir takım ek özellikler katılmış hali diye özetlenebilir. Ama bu yapı biraz hantal bir yapı oldu. Çünkü C’de olan her şeyi destekleme kaygısı ile garip bir notasyon ortaya çıktı.

Bu hantal yapının yanında, baş edilmesi gereken bir sorun daha vardı. Bilgisayar donanımı hızla gelişiyor. Gereğinden fazla hızlı işlemciler ve gereğinden fazla bellek var. Bir program yazılırken dikkat edilen temel kriterler değişti. Eskiden performans ve ekonomik kaynak kullanımı iken şimdilerde yerini daha hızlı ve hatadan arınmış kod yazmaya bıraktı. Bu da alçak seviyeli yapıdan hızla uzaklaşma ve işaretçi kullanımının azalması demekti. Artık programcılar işaretçi kullanmaktan kaçınıyorlar.

1990’larda Sun Microsystems, C++ dilinden daha esnek bir notasyona sahip olan, daha güvenli kod yazmayı olanaklı kılan bir yapı ortaya koydu, yani Java dilini geliştirdi. 

C#’ın Doğuşu


Borland firmasından ayrılan Anders Hejlsberg, 20002li yılların başında Microsoft için C# (Si Şarp okunur) dilini geliştirdi. C#’taki diyez işareti (şarp), C++ taki ++ ın 2 tanesinin üst üste koyulmuş halidir.

C# Java gibi, C# da C’nin tehlikeli özelliklerini almadı. Ama işaretçiler C#’tan tamamıyla çıkarılmadı. Java ile C# arasındaki diğer bir benzerlik, derleyicinin rolündedir. Geleneksel olarak, derleyici kaynak kodu (yüksek seviyeli dil metin dosyası) makina koduna çevirir. Makina kodu, bilgisayar tarafından çalıştırılabilir bir formdadır. Bu da Microsoft Windows ile Apple Machintosh üzerinde aynı programın çalıştırılamayacağı anlamına geliyor.

C# derleyicisi, kaynak kodu bir ara dile (IL) çevirir. Program çalıştırılacağında ise IL makina koduna dönüştürülür. Bunu kullanıcı fark etmez. Teorik olarak, bu iki adımlı işlem, aynı IL kodunun farklı makinalarda da çalışabilmesine olanak tanır. Ayrıca IL formundaki bir programda bulunan kötü ve zararlı kod işletim sistemi tarafından kolaylıkla tetkik edilebilir.

24 Haziran 2012 Pazar

C# Ile FTP Üzerinde Dosya Ve Klasör İşlemleri

,

Microsoftun bize hazır sundugu sınıflardan biri olan FtpWebRequest Class'ı  ile işlemlerimizi rahatlıkla yerine getirebiliyoruz. FtpWebRequest class'ımız System.Net  namespace'i altında bulunmaktadır. aşağıda gösterdigimiz kodları uygularken import etmeyi unutmayın. Bu sınıfımızın haricinde System.IO'yada ihtiyacımız olucak.
FTP ile Dosya Gönderme
01FileInfo filei= new FileInfo(“DosyaAdresi”);
02string adres="domain veya server ipsi";
03string path = adres + filei.Name;
04FtpWebRequest FTP;
05FTP = (FtpWebRequest)FtpWebRequest.Create(new path(path));
06FTP.Credentials = new NetworkCredential("kullanıcıadı""Şifre");
07FTP.KeepAlive = false;
08FTP.Method = WebRequestMethods.Ftp.UploadFile;
09FTP.UseBinary = true;
10FTP.ContentLength = filei.Length;
11int buffLength = 1024;
12byte[] buff = new byte[buffLength];
13int contentLen;
14FileStream FS = filei.OpenRead();
15try
16{Stream strm = FTP.GetRequestStream();contentLen = FS.Read(buff, 0, buffLength);while (contentLen != 0)
17{strm.Write(buff, 0, contentLen);contentLen = FS.Read(buff, 0, buffLength);
18}
19strm.Close();
20FS.Close();Console.WriteLine("Başarılı");
21}catch (Exception ex)
22{
23Console.WriteLine(ex.Message);
24}
İşlemimizde öncelikle upload edicegimiz dosya yolunu alıyoruz daha sonra göndermek istedigimiz ftp deki yolunu belirliyoruz.sınıfımızı tanıplayıp ftp mizin kullanıcı adı şifresini,uygulayacağımız işlemin metodunu,veriyi gönderme türünü,dosya boyutunu ve son olarak buffer boyutunu belirtiyoruz.buffer dediğimiz olay anlık olarak gönderilcek  veri boyutudur.en sonda gönderme işlemini gerçekleştirip işlemimizi bitiriyoruz. Dikkat edersinizki try catch içine aldıgımız blok bu işlemi yapıyor. bi sorun olmazsa başarılı, olursada ekrana neden başarısız olduguyla ilgili hata mesajını ekrana yazdırıyor.
FTP ile Dosyaları Listelemek
01string[] Dosyalar;
02StringBuilder result = new StringBuilder();
03FtpWebRequest FTP;
04try
05{FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(serveripsi veya domain));
06FTP.UseBinary = true;
07FTP.Credentials = new NetworkCredential("kullanıcı adı ""şifre");
08FTP.Method = WebRequestMethods.Ftp.ListDirectory;
09WebResponse response = FTP.GetResponse();
10StreamReader reader = new StreamReader(response.GetResponseStream());
11string line = reader.ReadLine();while (line != null)
12{
13result.Append(line);
14result.Append("\n");
15line = reader.ReadLine();
16}
17result.Remove(result.ToString().LastIndexOf('\n'), 1);
18reader.Close();
19response.Close();Dosyalar=result.ToString().Split('\n');for (int sayac = 0; sayac < downloadFiles.Length; x++)
20{
21Console.WriteLine(Dosyalar[sayac].ToString));
22}
23}catch (Exception ex)
24{
25Console.WriteLine(ex.Message);
26}
burdada görüldüğü gibi bir önceki kodlarımızla karşılaştırdığımızda farklılıklar dikkatinizi çekicektir. öncelikle methodumuz değişti.Ftpmize istek gönderiyoruz,cevap alıyoruz,stream reader yardımıyla okutuyoruz ve satır satır yazdırma işlemimizi gerçekleştiriyoruz.
Ftp ile Dosya indirme
01FtpWebRequest
02FTP;
03try
04{
05FileStream SR = new FileStream("C:\\" "Dosyaismi",FileMode.Create);
06FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("serveripsiveya domain/"+ “Dosyaismi”);
07FTP.Credentials =new NetworkCredential("kullanıcıadı""Şifre");
08FTP.Method =WebRequestMethods.Ftp.DownloadFile;
09FTP.UseBinary =true;
10FtpWebResponse response = (FtpWebResponse)FTP.GetResponse();
11Stream ftpStream = response.GetResponseStream();
12long cl = response.ContentLength;
13int bufferSize = 1024;
14int readCount;
15byte[] buffer = new byte[bufferSize];
16readCount = ftpStream.Read(buffer, 0, bufferSize);
17while (readCount > 0)
18{
19SR.Write(buffer, 0, readCount);
20readCount = ftpStream.Read(buffer, 0, bufferSize);
21}
22ftpStream.Close();
23SR.Close();
24response.Close();
25Console.WriteLine("başarılı");}
26catch (Exception ex)
27{Console.WriteLine(ex.message);}
bilgisayarımıza nereye indircegimizin dosya yolunu giriyoruz. ftpden indirmek istediğimiz dosya yolunu yazıyoruz. bağlantı bilgilerimizi veriyoruz. metodumuzu WebRequestMethods.Ftp.DownloadFile  olarak değiştiriyoruz. response'umuzu webresponse türüne dönüştürüyoruz buffer bilglerimizide girip işlemi başlatıyoruz.
FTP ile Dosya Silme
01FtpWebRequest FTP;
02try
03{
04FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("serveripveya domain/+“Dosyaismi”);
05FTP.UseBinary =true;
06FTP.Credentials =new NetworkCredential("kullanıcıadı""Şifre");
07FTP.Method =WebRequestMethods.Ftp.DeleteFile;
08FtpWebResponse response = (FtpWebResponse)FTP.GetResponse();
09Console.WriteLine(response.StatusDescription);
10}
11catch (Exception ex)
12{
13Console.WriteLine(ex.Message);
14}
yukarda digerlerinde olmayan bir komut gördünüz.  "response.StatusDescription"  adındanda anlaşılağı üzere isteğimize karşılık gelen cevapta durumundan haberdar oluyoruz. başarılımı değil mi şeklinde.
FTP ile Klasör Silme
01FtpWebRequest FTP;
02try
03{
04FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("serveripsi veya domain/"+ “Silinecekklasörismi” +"/"));
05FTP.UseBinary =true;FTP.Credentials =new NetworkCredential("kullanıcıadı""Şifre");
06FTP.Method =WebRequestMethods.Ftp.RemoveDirectory;
07FtpWebResponse response = (FtpWebResponse)FTP.GetResponse();
08Console.WriteLine(response.StatusDescription);
09}
10catch (Exception ex)
11{
12Console.WriteLine(ex.Message);
13}
FTP ile Klasör Oluşturma
01FtpWebRequest FTP;
02try
03{
04FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("serveripsi veya domain/"+ “Yeniklasörismi” +“/”));
05FTP.UseBinary =true;
06FTP.Credentials =new NetworkCredential("kullanıcıadı""Şifre");
07FTP.Method =WebRequestMethods.Ftp.MakeDirectory;
08FtpWebResponse response = (FtpWebResponse)FTP.GetResponse();
09Console.WriteLine(response.StatusDescription);
10}
11catch (Exception ex)
12{
13Console.WriteLine(ex.Message);
14}
FTP ile Dosya Adı Değiştirme
01FtpWebRequest FTP;
02try
03{
04FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("serveripsi veya domain/+“Dosyaismi”);
05FTP.UseBinary = true;
06string yeniisim="dosyaismi";
07FTP.RenameTo = yeniisim;
08FTP.Credentials = new NetworkCredential("kullanıcıadı""Şifre");
09FTP.Method = WebRequestMethods.Ftp.Rename;
10FtpWebResponse response = (FtpWebResponse)FTP.GetResponse();
11Console.WriteLine(response.StatusDescription);
12}
13catch (Exception ex)
14{
15Console.WriteLine(ex.Message);
16}
işlemlerimiz bukadar.Gördügünüz gibi çogunda bir değişiklik yok sadece methodu değiştirmemiz işlemimizin gidişatını değiştiriyor. Bunun haricinde FTPlib olarak geçen FTP Client Library  sınıfınında oldukça kullanışlı olduğunu söleyebilirim. Okuduğunuz için
 

Yazilim Kitabi Copyright © 2012