Bilgisayarda biz farkında olmadan arka planda sessiz sedasız çalışmalarını yürüten, hizmetlerden bahsedeceğiz. BilgisayarımYönetHizmetler gelerek bahsettiğim hizmetleri görebilirsiniz. Projemde bana lazım olan 2 saatte bir kontrol yapan, bir Windows servis yazacağız.
Yazacağımız Windows servis, bir Timer aracılığı ile Mssql veritabanımızı kontrol edip, istediğimiz koşul gerçekleştiğinde, mail gönderecektir. Sanırım burada açıklamaktansa kodları yazmak daha anlaşılır olacaktır.
Bu arada mail gönderme kısımlarını değiştirdim, oraları kendi server bilginize göre düzenlersiniz. Aşağıdaki kodları Setup olarak kurup, istediğiniz server‘da çalıştırabilirsiniz.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Timers;
using System.Data.SqlClient;
using System.Net.Mail;
using System.Net; Devamını Oku
Bugün şirket için yazılan DLL‘e eklenmek üzere, bir fonksiyon yazdım. Bu fonksiyonu kendi projelerimde de DAL içersinde fonksiyon olarak kullanıyorum. Tamamen kodun dinamikleşmesine dönük, fonksiyona gönderilen 2 tane string dizi ve bir tane normal string olmak üzere 3 parametre almaktadır. Bu parametlerden ilk string dizi, istenilen sayıda alan adının alınmasını sağlarken, diğer dizi istenilen sayıda tablodan çekilmesini sağlamaktadır. Son kısımda girilen şart string‘i ise “where” olarak girebileceğiniz, koşulu belirtmektedir. Son şart stringine boş değer göndererek sadece select ifadesinin çalışmasını sağlayabilirsiniz. Bu fonksiyonda bir kaç ufak değişiklik yaparak, INSERT, UPDATE işlemlerini de daha dinamik bir hale getirip, burada paylaşacağım.
public static SqlConnection conn = new SqlConnection(@”data source=GIFTEDSQLEXPRESS;integrated security=sspi;initial catalog=Ticket”);
public static DataTable Baglan(string[] alanAdlari, string[] tabloAdlari, string Sart)
{
string alanToplam = “”;
string tabloToplam = “”;
int say = 0;
//Gelen alan adlarının içeriğini bu kısımda birleştiriyoruz
foreach (var item in alanAdlari)
{
alanToplam = alanToplam + “[" + alanAdlari[say] + “]” + “,”;
say++;
}
alanToplam = alanToplam.Remove(alanToplam.Length-1,1);
say=0;
//Gelen tablo adlarının içeriğini bu kısımda birleştiriyoruz
foreach (var item in tabloAdlari)
{
tabloToplam = tabloToplam + tabloAdlari[say] + “,”;
say++;
}
tabloToplam = tabloToplam.Remove(tabloToplam.Length – 1, 1);
say = 0;
SqlCommand comm = new SqlCommand(“SELECT ” + alanToplam + ” FROM ” + tabloToplam + ” WHERE ” + Sart +”", conn);
Bugün bir saatimi sırf, gridview üzerindeki verinin anında kaybolmasına harcadım diyebilirim. İnternet’i araştırdığınızda genel olarak, yeniden yükleme ve gridview.bind() çözümü ile karşılaşırsınız. Ancak iki yönteminde istediğini karşılayamaz. Aşağıya ekleyeceğim kod satılarında, sorunu nasıl aştığım açıkça belli oluyor. Fakat kısaca anlatmak gerekirse, genel olarak herkes gridview satırlarından aldığı veriyi rahatça veritabanından silebiliyordu, fakat gerekli olan gridview güncellemesi yapılamıyordu, databind() yaptığımızda zaten ekran gidiyordu. Sorunu aşmak için öncellikle veritabanından sildim, ardından ilgili satırı visible özelliğiyle yok ederek sorunu aştım. Sizinde aynı çözümle sorunu aşacağınıza inanıyorum. Herkese kolay gelsin…
protected void grdRapor_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
//Atilla for you ![]()
string id = grdRapor.Rows[e.RowIndex].Cells[1].Text.ToString();
string plaka = grdRapor.Rows[e.RowIndex].Cells[3].Text.ToString();
string baslangicTarih = grdRapor.Rows[e.RowIndex].Cells[7].Text.ToString();
string conString = “Data Source=GIFTED\SQLEXPRESS;Initial Catalog=Arac_Takip;Integrated Security=True”;
SqlConnection connection = new SqlConnection(conString);
connection.Open();
Aşağıdaki kodları bir butona yerleştirdiğimizde, oradaki “Gridviewiniz” kısmını kendi Gridview ayarlayarak, verilerinizi olduğu gibi Excel‘e aktarabilirsiniz. Rapor.xls olarak masaüstüne kaydedecektir.
HtmlForm form1 = new HtmlForm();
form1.Controls.Add(Gridviewiniz);
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
Response.ContentEncoding = System.Text.Encoding.GetEncoding(“windows-1254″);
Response.Charset = “windows-1254″; //ISO-8859-13 ISO-8859-9 windows-1254
System.Web.HttpContext.Current.Response.AddHeader(“content-disposition”, “attachment;filename=Rapor.xls”);
Response.ContentType = “application/vnd.ms-excel”;
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
Gridviewiniz.RenderControl(htmlWrite); Devamını Oku
Bilgisayara format atmamla beraber, tüm programlarımı tekrar kurdum. Msn Plus kurduktan sonra TicTacTi‘yi fark ettim. Çeşitli flash oyunların kategorilere ayrıldığı bir menu ve her oyundan sonra gelen reklamlar, normalde çok oyun oynamayan bir insan olarak pek umursamadım. Fakat eskiden gelen, Strateji oyun severliğim bir göz gezdirmeme sebep oldu, oyunlardan bir tanesi “Castle Defence” oyunu ilgimi çekti. Flash oyununda nasıl strateji olabilir ki diyerek açtım, çok basit kuralları olan, bir oyun karşıma çıktı. 3 tip top satın alabildiğiniz, belli sayı, hız ve özellikte kalenizi yıkmaya çalışan düşmanların geldiği eğlenceli bir oyun, ilk oynayışımda, biraz hezimet yaşasamda, değişik taktiler deneyerek oynuyordum. Bugün oyunu bitirince üzüldüm
10 Level‘dan oluşan oyunda, koruma kulelerinizi nereye yerleştirdiğinize göre şekilenen oyunun son hali aşağıda eklediğim gibidir. Diğer pahalı kuleler yerine, en ucuz kuleden fakat sık kullanarak oyunu kazanmayı bildim. Sizinde bir denemenizi tavsiye ederim.

Türkiye Cumhuriyeti vatandaşı olan herkesin bir adet “Tc Kimlik No” bulunmaktadır. Tüm işlemlerimizde kullandığımız “Tc Kimlik No” nasıl hesaplandığını biliyor musunuz? Bir projede sizden “Tc Kimlik No” onaylanmanız istendi, ne yapacaksınız? Hemen başlayalım; Öncellikle “Tc Kimlik” çok basit bir algoritması var. Tc Kimlik No, 11 haneden oluşmaktadır. Son iki hanemiz, ilk 9 haneden türetilmektedir.
* İlk hane 0 olamaz.
* 1. 3. 5. 7. ve 9. hanelerin toplamının 7 katından, 2. 4. 6. ve 8. hanelerin toplamı çıkartıldığında, elde edilen sonucun 10′a bölümünden kalan, yani Mod10 bize 10. haneyi verir.
* 1. 2. 3. 4. 5. 6. 7. 8. 9. ve 10. hanelerin toplamından elde edilen sonucun 10′a bölümünden kalan, yani Mod10 bize 11. haneyi verir. Devamını Oku
Finallerin başlamasıyla, ilgilenemediğim bloguma tekrar ilgi göstermeye başlıcam
Hiç bu kadar ara verdiğim olmamıştı fakat; bu sıra üst üste gelen aksilikler nedeniyle, böyle oldu. Artık yararlı yazılar yazarak, telafi etmeye çalışacağım.
Bu arada bölümümüzde ders içerikleri güncellendi. Benimde fikir belirttiğim güncellemenin tüm öğrenci arkadaşlarıma yararlı olacağını düşünüyorum. Yeni güncellemeler ile birlikte artık daha fazla bilgisayar ağırlıklı dersler olabileceği gibi, tüm derslerin kredileri de düşürüldü. Böylece artık tüm üniversitelerde yaz okulunu alabileceksiniz. Trakya Üniversitesi Bilgisayar Mühendisliği özellikle yeni gelecek arkadaşlar için biraz zor bir bölüm olacak, fakat okuldan mezun olduktan sonra bu çabalarının karşılığını fazlasıyla alacaklarına inanıyorum. Yeni içerikler umarım hepimizin yararına olur…
C++‘da bazı operatöleri ezerek, istediğimiz amaca hizmet etmesini sağlayabiliriz. Örnek vermemiz gerekirse; a+b işleminde “+” işaretini “-” yapmasını söyleyebiliriz. Böylece programda her hangi bir yerde toplama yapılması gerekirse, program otomatik olarak çıkarma işlemi gerçekleştirecektir. Aşağıda +, – , ++, – operatörlerini değiştirdik. Yeni bir görev eklemek yerine varolan görevlerini biz yazdık. Kodu incelediğinizde anlayacaksınızdır.
#include “stdafx.h” //VisualStudio için gerekli
#include //cout ve cin için gerekli
#include //getch() fonksiyonu için gerekli
using namespace std;
class aYukle
{
private:
int x,y,z;
public:
aYukle() //Öncellikle bir sorun çıkmaması için ilk değerleri atıyoruz.
{
x=0;
y=0;
z=0;
}
Gerek örgün eğitim, gerek açıköğretim sınavları nedeniyle bir süre bloga yazı ekleyemeyeceğim. Bu sürecin sonrasında staj işini halledip, bir arkadaşımla güzel bir web projesine başlamayı planlıyorum. Bakalım umarım her şey düşündüğüm gibi olur. Herkese yaklaşan finallerde başarılar…
06.05.2010 Perşembe günü, Sarayiçi Yerleşkesinde Topluluk Tanıtımı ve Dgs üzerine bir seminer verdim. Seminere yaklaşık 70-80 civarında bir öğrenci topluluğu katıldı. Verimli geçtiğini düşündüğüm seminerde, umarım onları yönlendirebilecek bilgiler vermişimdir.
Seminere öncellikle Bilişim ve Teknoloji Topluluğumuzu tanıtarak başladım. Topluluk olarak neler yaptığımızı? Neler yapmak istediğimizi? Neden topluluğa üye olmaları gerekir? gibi sorulara cevap vermeye çalıştım. Yaklaşık 10 dk süren topluluk tanıtımından sonra, DGS seminerine geçtim.
DGS seminerinde öğrencilerin, girecekleri sınavla ilgili bilmesi gerekenleri tamamiyle anlattım. Özellikle neden bu sınava girmeleri gerekir? sorusuna çeşitli örnekler verdim. Puan hesaplamadan, aöbp hesabına kadar bir çok bilginin anlatıldığı seminer, topluluk temsilcilerinin seçilmesiyle son buldu.
Umarım bu seminerden geçen seneki gibi etkinlenen min 5 kişi olur. Böylece en azından 5 kişi de şansını denemiş olurlar. Herkese bol şans…