Jquery
13.05.2014
Yazar: Admin
Kullanıcıların input alanlarında girebileceği karakteri sınırlandırmak için, keydown işlemi için bir fonksiyon tanımlayarak gerekli işlemleri yapabilirsiniz.
Aynı işlemi keypress işlemi için yaptığınızda farklı tarayıcılarda sorun yaşayabilirsiniz. Aşağıdaki kodlar ile; numgir sınıfından tanımlanmış olan <input> alanlarında sadece 0-9 arasındaki rakam tuşları ile Backspace, Delete ve sol ve sağ ok tuşları aktif olarak kullanılabilir.
<html>
<head>
<script type="text/javascript">
$(document).ready(function() {
$('.numgir').keydown(function(event) {
var key = window.event ? event.keyCode : event.which;
return ((key > 47 && key < 58) key==8 || key==46 || key==37 || key==39);
});
});
</script>
</head>
<body>
<input id='sayi1' class='numgir' name='sayi1' type='text' value='' size='3' maxlength='3'>
</body>
</html>
Wamp
12.05.2014
Yazar: Admin
Wampserver sunucu yüklü bilgisayarlarda, diğer internet tarayıcılarda sorunsuz olarak işlem yapılırken, Internet Explorer çok geç işlem yapmakta ya da hiç yanıt vermemektedir.
Sorun Apache ayarlarından kaynaklanmaktadır. Sorunun çözümü için, Wampserver sunucunun kurulu olduğu dizinde bulunan httpd.conf (genellikle C:\\wamp\\bin\\apache\\apachex.x.x\\conf\\httpd.conf) dosyasının herhangi bir yerine aşağıdaki satırları yerleştirmeniz ve Wampserver sunucuyu yeniden başlatmanız yeterlidir:
# IE sorunu için AcceptFilter http none AcceptFilter https none
Android
06.08.2012
Yazar: Admin
Eclipse IDE kullanarak bir android programı derlerken aşağıdaki hatayı aldığınızda daha sonraki adımlarda gösterilen değişiklikleri yaparak sorunu çözebilirsiniz:
The method onClick(View) of type new View.OnClickListener(){} must override a superclass method
1. Proje adına sağ tıklayın ve açılan menüden "Properties" seçeneğini seçin.
2. Açılan pencerede sol taraftan "Java Compiler" seçeneğini seçin.
3. Sağ taraftaki bölümde, "Enable project specific settings" seçeneğini seçin.
4. "Compiler compliance level" ifadesinin karşısındaki değeri 1.6 veya 1.7 olarak değiştirin.
5. "Apply" butonuna tıklayın.
Bu işlemler derleme hatalarını sona erdirecektir.
Mysql
05.03.2012
Yazar: Admin
MySQL'de veritabanını üzerinde yedekleme (backup) işlemlerini mysqldump.exe programı ve yedeklenen veriyi yeniden yükleme işlemlerini mysql.exe programı ile komut satırında yapmak istediğinizde aşağıdaki ifadeleri kullanabilirsiniz:
MySQL Sunucunun kurulu olduğu dizinin "C:\\Program Files\\MySQL\\MySQL Server 5.5\\bin" olduğu varsayılarak:
Aşağıdaki komut dbase_adi adlı veritabanının yedeğini C: sürücüsündeki yedek klasörü altına veri.sql dosyası adı ile alır:
C:\\Program Files\\MySQL\\MySQL Server 5.5\\bin>mysqldump.exe --port=3306 -u root -pparola dbase_adi --result-file C:\\yedek\\veri.sql
Aşağıdaki komut C: sürücüsündeki yedek klasörü altında bulunan veri.sql dosyasındaki verileri dbase_adi adlı veritabanına aktarır:
C:\\Program Files\\MySQL\\MySQL Server 5.5\\bin>mysql.exe --database=dbase_adi --port=3306 -u root -pparola < C:\\yedek\\veri.sql
Aynı işlemi, işlem pencerelerini ekranda göstermeden, C programlama dilinde WinAPI komutları gerçekleştirmek için aşağıdaki satırları kullanabilirsiniz:
VeriYedYuk(0); /* Veritabanını yedekleme (backup) */
VeriYedYuk(1); /* Veritabanını geri yükleme */
BOOL VeriYedYuk(int islem)
{
SHELLEXECUTEINFO shellexecuteinfo;
char cpath[4096];
DWORD retval = 0;
DWORD dwExitCode = 0;
char cdizi[1000];
ZeroMemory( &shellexecuteinfo, sizeof(SHELLEXECUTEINFO));
shellexecuteinfo.cbSize = sizeof(SHELLEXECUTEINFO);
shellexecuteinfo.fMask = SEE_MASK_NOCLOSEPROCESS;
shellexecuteinfo.hwnd = hwndPanelFat;
shellexecuteinfo.lpVerb = "open";
if (islem==0) {
shellexecuteinfo.lpFile = "C:\\Program Files\\MySQL\\MySQL Server 5.5\\bin\\mysqldump.exe";
shellexecuteinfo.lpParameters = "--port=3306 -u root -pparola dbase_adi --result-file C:\\yedek\\veri.sql";
}
else {
retval = GetShortPathName("C:\\Program Files\\MySQL\\MySQL Server 5.5\\bin", cpath, 4096);
if (retval == 0) {
return 0;
}
shellexecuteinfo.lpFile = "cmd.exe";
sprintf (cdizi, "/C %s\\mysql.exe --database=dbase_adi --port=3306 -u root -pparola < C:\\yedek\\veri.sql", cpath);
shellexecuteinfo.lpParameters = cdizi;
}
shellexecuteinfo.lpDirectory = NULL;
shellexecuteinfo.nShow = SW_HIDE;
shellexecuteinfo.hInstApp = NULL;
if (ShellExecuteEx(&shellexecuteinfo)) {
if (shellexecuteinfo.hProcess != NULL) {
WaitForSingleObject(shellexecuteinfo.hProcess, INFINITE);
if (GetExitCodeProcess(shellexecuteinfo.hProcess, &dwExitCode)) {
if (dwExitCode) {
return 0;
}
CloseHandle(shellexecuteinfo.hProcess);
}
else {
MessageBox(NULL, "GetExitCodeProcess() fonksiyon hatası", "Fonksiyon hatası", MB_OK | MB_ICONWARNING);
}
CloseHandle(shellexecuteinfo.hProcess);
}
}
else {
MessageBox(NULL, "ShellExecuteEx() fonksiyon hatası", "Fonksiyon hatası", MB_OK | MB_ICONWARNING);
return 0;
}
return 1;
}
Mysql
05.03.2012
Yazar: Admin
Bilindiği üzere, hesaplanan alanlar (calculated fields) bir tabloda yer almazlar, sadece diğer alanlar üzerinde işlem yapılarak elde edilirler. MySQL'de bir tablodaki hesaplanan alanların (calculated fields) toplamını almak için SUM() komutunu aşağıdaki şekilde kullanabilirsiniz:
SELECT SUM(miktar) as toplam, (taksit1 + taksit2 + taksit3) as odenen, SUM(taksit1 + taksit2 + taksit3) FROM fatura
Aynı işlemi C programlama dilinde gerçekleştirmek için, fatura tablosunda yer alan taksit sütun değerlerinin (taksit1, taksit2, taksit3) toplamını almak için aşağıdaki saıtrları kullanabilirsiniz:
MYSQL *conn;
char qdizi[1000];
conn = mysql_init(NULL);
if(conn == NULL) {
MessageBox(NULL, mysql_error(conn), "Veritabanı hatası", MB_OK | MB_ICONWARNING);
return 0;
}
if(mysql_real_connect(conn, "localhost", "root", "password", "veritabani_adi", 3306, NULL, 0) == NULL) {
MessageBox(NULL, mysql_error(conn), "Veritabanı hatası", MB_OK | MB_ICONWARNING);
mysql_close(conn);
return 0;
}
sprintf(qdizi, "SELECT SUM(miktar) as toplam, (taksit1 + taksit2 + taksit3) as odenen, SUM(taksit1 + taksit2 + taksit3) FROM fatura");
if(mysql_query(conn, qdizi)) {
MessageBox(NULL, mysql_error(conn), "Veritabanı hatası", MB_OK | MB_ICONWARNING);
mysql_close(conn);
return 0;
}
result = mysql_store_result(conn);
row = mysql_fetch_row(result);
/* row[0] : fatura tablosu miktar sütun toplamı */
/* row[2] : fatura tablosu ödenen toplam taksit miktarı */
Mysql
03.03.2012
Yazar: Admin
MySQL Connector/C kullanarak oluşturduğunuz programlarla MySQL Sunucu'da yer alan veritabanlarında yapılan sorgulamalarda (query), sprintf() fonksiyonu kullanır ve tablo veri alanlarındaki tarih değerlerini DATE_FORMAT komutu ile yapılandırarak tablodan okutmak isterseniz, DATE_FORMAT komutu içinde yer alan % karakterinin sprintf() fonksiyonu parametresi olarak algılanmaması için önüne ek olarak bir % karakteri daha yazmak gerekir.
Aşağıdaki komut satırı genel kullanım şeklini göstermektedir:
sprintf(dizi, "SELECT DATE_FORMAT(alan_adi, '%%d.%%m.%%Y') as tarih_tr FROM tablo_adi");
Aşağıdaki kodlar fatura adlı tablodan tarih alan değerini gg.aa.yyyy formatında okuyarak qdizi adlı karakter dizisine atar ve bu diziyi kullanarak mysql_query() fonksiyonuyla sorgulamayı gerçekleştirir:
MYSQL *conn;
char qdizi[1000];
conn = mysql_init(NULL);
if(conn == NULL) {
MessageBox(NULL, mysql_error(conn), "Veritabanı hatası", MB_OK | MB_ICONWARNING);
return 0;
}
if(mysql_real_connect(conn, "localhost", "root", "password", "veritabani_adi", 3306, NULL, 0) == NULL) {
MessageBox(NULL, mysql_error(conn), "Veritabanı hatası", MB_OK | MB_ICONWARNING);
mysql_close(conn);
return 0;
}
sprintf(qdizi, "SELECT DATE_FORMAT(tarih, '%%d.%%m.%%Y') as tarih_tr FROM fatura", );
if(mysql_query(conn, qdizi)) {
MessageBox(NULL, mysql_error(conn), "Veritabanı hatası", MB_OK | MB_ICONWARNING);
mysql_close(conn);
return 0;
}
Mysql
02.03.2012
Yazar: Admin
MySQL'de SUM() komutunu kullanırken eğer SUM ifadesi ile () karakterleri arasında boşluk bırakırsanız komut çalışmıyor.
Fonksiyonları bu şekilde kullanma alışkanlığı olanlar için bir sorun oluşturabilir.
Normalde diğer komutlar için boşluk karakterinin varlığı bir farklılık göstermemektedir. Ancak aşağıdaki ilk satırda kullanılan SUM komutu hata vermesine karşın ikinci satırda yer alan komut sorunsuz çalışmaktadır.
SELECT SUM (sütun_adi) FROM tablo_adi /* Hatalı */
SELECT SUM(sütun_adi) FROM tablo_adi /* Sorunsuz */
C
01.03.2012
Yazar: Admin
C Programlama Dili'nde verilen 2 tarih arasındaki farkı gün olarak almak için time.h başlık dosyası içinde tanımlanmış olan tarih ve zaman fonksiyonları ile veri türlerini kullanabiliriz.
Öncelikle kaynak dosyanızın başına time.h başlık dosyasını ekleyin:
#include <time.h>
Fonksiyon içinde kullanılan fonksiyon ve veri türlerinin aşağıda belirtilen amaçlarla kullanılmıştır:
/* Verilen tarihten time_t değeri elde etmek için kullanılır. */
struct tm tmzaman;
mktime() fonksiyonuna parametre oluşturarak time_t nesnesi elde etmek için tm yapısı kullanılır.
struct tm { int tm_sec; /* Saniye: 0-59 */ int tm_min; /* Dakika: 0-59 */ int tm_hour; /* Gece yarısından itibaren geçen zaman: 0-23 */ int tm_mday; /* Ayın gün sayısı: 1-31 */ int tm_mon; /* Ocak'tan itibaren ay sayısı: 0-11 */ int tm_year; /* 1900 yılından bu yana yıl sayısı */ int tm_wday; /* Pazar'dan bu yana gün saysıı (0-6) */ int tm_yday; /* 1 Ocak'tan bu yana gün sayısı: 0-365 */ int tm_isdst; /* +1 Günışığı devrede, Günışığı yok, -1 Bilgi yok */ };
dgun = difftime(timeson, timeon) / (60 * 60 * 24); /* 2 zaman farkını elde etmek için kullanılır. */
/* 2 time_t nesnesi arasındaki farkı saniye olarak geri verir. */
double difftime (time_t, time_t);
Fonksiyon kullanımı:
GunFarki("25.02.2012", "15.09.2011");
Elde edilen çıktı:
163
int GunFarki(char *pson, char *pon)
{
struct tm tmzaman;
time_t timeson, timeon;
char ctemp[5];
int don=0;
double dgun;
/* İlk zaman değeri için tm yapısını doldurma ve time_t değeri oluşturma */
tmzaman.tm_sec = 1;
tmzaman.tm_min = 0;
tmzaman.tm_hour = 0;
tmzaman.tm_isdst = -1;
strncpy (ctemp, &pson[0], 2);
ctemp[2]='\\0';
tmzaman.tm_mday = atoi (ctemp);
strncpy (ctemp, &pson[3], 2);
ctemp[2]='\\0';
tmzaman.tm_mon = atoi (ctemp);
tmzaman.tm_mon--;
strncpy (ctemp, &pson[6], 4);
ctemp[4]='\\0';
tmzaman.tm_year = atoi (ctemp);
tmzaman.tm_year -= 1900;
timeson = mktime(&tmzaman);
/* İkinci zaman değeri için tm yapısını doldurma ve time_t değeri oluşturma */
tmzaman.tm_sec = 1;
tmzaman.tm_min = 0;
tmzaman.tm_hour = 0;
tmzaman.tm_isdst = -1;
strncpy (ctemp, &pon[0], 2);
ctemp[2]='\\0';
tmzaman.tm_mday = atoi (ctemp);
strncpy (ctemp, &pon[3], 2);
ctemp[2]='\\0';
tmzaman.tm_mon = atoi (ctemp);
tmzaman.tm_mon--;
strncpy (ctemp, &pon[6], 4);
ctemp[4]='\\0';
tmzaman.tm_year = atoi (ctemp);
tmzaman.tm_year -= 1900;
timeon = mktime(&tmzaman);
if(timeson < timeon) don = -1;
else {
dgun = difftime(timeson, timeon) / (60 * 60 * 24);
don = dgun;
}
return don;
}