vehbiakdogan

Senior Sofware Developer

Yazar: Vehbi Akdoğan

İki Tarih arasındaki Zaman Farkını Bulma

$datetime1 = new DateTime('2015-07-01');
$datetime2 = new DateTime('2016-08-25');
$interval = $datetime1->diff($datetime2);

foreach ($interval as $i => $j)
	echo "$i : $j <br/>";
	
echo $interval->format('İki Tarih Arasında %d Gün %m Ay %y Yıl Fark Var ');

y:1 
m:1 
d:25 
h:0 
i:0 
s:0 
weekday:0 
weekday_behavior:0 
first_last_day_of:0 
invert:0 
days:421 
special_type:0 
special_amount:0 
have_weekday_relative:0 
have_special_relative:0 
İki Tarih Arasında 25 Gün 1 Ay 1 Yıl Fark Var

Gördüğünüz Gibi İki tarih Arasındaki gün ay yıl farkını detaylı bir şekilde görmüş olduk. DateTime Sınıfı hakkında Detaylı Bilgi İçin Yazdığım Yazıya Bakabilirsiniz.

Diğer

Php DataTime Sınıfı Kullanımı

Merhaba arkadaşlar Php nin DataTime sınıfı Php ile tarih işlemlerini daha kolay yapabilmemiz için hazırlanmış bir sınıftır.

  • $tarih = new DateTime(‘yil-ay-gun’) : DateTime Sınıfını başlatır.
  • format() : İstediğimiz formatta tarih çıktısı verir.
  • modify() : Tarihi modifiye etmemizi Gün-ay-yıl eklememizi sağlar.
  • SetDate(yıl,gün,ay) : Tarihi değiştirmemizi sağlar.
  • diff(Tarih) : İki tarih arasındaki zaman farkını detaylı olarak verir.
  • getTimestamp(9) : Tarihimizin unix değerini bize verir.

DataTime sınıfı ile Bir Tarih Oluşturma

DataTime sınıfı normal bir tarih oluşturmaya izin verdiği gibi bugünün yarının tarihini oluşturmamızada yardımcı oluyor.
Örneğin:


$datetime1 = new DateTime('2015-07-01'); // 2015-07-01

$datetime2 = new DateTime('now'); // şuanki Tarih

$datetime3 = new DateTime('tomorrow');// yarının tarihi

Oluşturduğumuz Tarihi İstediğimiz Formatta Almak İçin DateTime Sınıfının format methodunu kullanıyoruz.

Örn:

$datetime2 = new DateTime('now'); 
echo $datetime2->format('Y-m-d');
// Çıktısı : 31/07/2015

Oluşturduğumuz tarihe gün-ay-yıl eklemek için modify methodunu kullanıyoruz.

$datetime2 = new DateTime('now'); // şuanki Tarih
echo  $datetime2->format('d/m/Y').'<br>'; 
// Çıktısı : 31/07/2015
$datetime2->modify("+1 day"); // 1 Gün Ekledik
echo  $datetime2->format('d/m/Y');  
// Çıktısı 01/08/2015 Yarının Tarihi 

Oluşturduğumuz tarihi tekrar düzenlemek için SetDate(yıl,gün,ay) methodunu kullanıyoruz.
Örn:


$datetime2 = new DateTime('now'); // şuanki Tarih
echo  $datetime2->format('d/m/Y').'<br>'; 
// Çıktısı : 31/07/2015
$datetime2->SetDate(1995,01,01);
echo  $datetime2->format('d/m/Y');  
// Çıktısı 01/01/1995  

Oluşturduğumuz İki Tarih Arasındaki Gün Ay Yıl Farkını diff() methoduyla buluyoruz.

Örn:

$datetime1 = new DateTime('2015-07-01'); // 2015-07-01
$datetime2 = new DateTime('now'); // şuanki Tarih

$fark = $datetime1->diff($datetime2);
print_r($fark); // gün ay yıl saat dakika saniye cinsinden değerler veiryor bize 
/*
Çıktısı 
DateInterval Object
(
    [y] => 0
    [m] => 1
    [d] => 0
    [h] => 9
    [i] => 53
    [s] => 16
    [weekday] => 0
    [weekday_behavior] => 0
    [first_last_day_of] => 0
    [invert] => 0
    [days] => 30
    [special_type] => 0
    [special_amount] => 0
    [have_weekday_relative] => 0
    [have_special_relative] => 0
)
*/


Farklı Bir Örnek Olarak Şöyle Bir İşlemde Yapabiliriz.

$datetime1 = new DateTime('2015-07-01');
$datetime2 = new DateTime('2016-08-25');
$interval = $datetime1->diff($datetime2);
echo $interval->format('İki Tarih Arasında %d Gün %m Ay %y Yıl Fark Var ');
// Çıktısı İki Tarih Arasında 25 Gün 1 Ay 1 Yıl Fark Var

Şeklinde düzenli bir çıktı da alabiliriz.
Oluşturduğumuz Saatin Unix değerini almak için getTimestamp() methodunu kullanıyoruz.

Örn:

$datetime2 = new DateTime('now');
echo $datetime2->getTimestamp()."<br/>";
echo $datetime2->format("U"); // Format İle De Unix Değerini Alabiliriz

//Çıktı: 
//1438329652
//1438329652


Temel Hatlarıyla DateTime Sınıfı bu kadar daha fazlası için Php.Net | Datetime

PHP

jQuery Ctrl+Enter İle Post İşlemi

Twitter Google gibi büyük sitelerde görmüşünüzdür ctrl+enter ile tweet gönderme,mesaj gönderme, gmailde mail gönderme işlemi falan yapılabiliyor. bugün buna benzer bir örnek paylaşacağım size.

Mantık şu normal bir html formumuz var ve biz kullanıcı ctrl ve enter tuşuna aynı anda basmışmı bunu kontrol ettiriyoruz eğer basmışsa form ile ilgili işlemlerimizi yapıyoruz.
Hemen Örneğimizi Paylaşayım:

ctrl+enter post işlemi

<!DOCTYPE HTML>
<html lang="en-US">
<head>
	<meta charset="UTF-8">
	<title></title>
	<meta name="description" content=" " />
	<meta name="keyword" content=" " /> 
	<meta name="author" content="Vehbi Akdogan" />
	<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js'></script>
	<script type="text/javascript">
	$(function(){
		$.formPost = function(){
			// burda ajax ile formunuzu post ettirebilirsiniz ama ben şuan ajax kullanmayacağım 
			var mesaj = $.trim($("#mesaj").val());
			if(mesaj != "") {
				$(".mesajlar").append(' <div class="mesaj">'+ mesaj +'</div>');
				$("#mesaj").val("");
			}
		}
		
		
		$(window).keypress(function(event){
			// bir tuşa tıklandığında bu fonksiyonumuz çalışacak
			if(event.which == 10 && event.ctrlKey) // enter ve ctrl ye aynı anda basılmışmı diye kontrol ediyoruz
				$.formPost(); // basılmışsa post işlemi gerçekleşsin
			
			
		});
	});
		
	</script>
	<style type="text/css">
		.mesaj {
			width:100%;
			padding:5px;
			box-sizing: border-box;
			-webkit-box-sizing: border-box;
			border-bottom:1px dashed #ddd;
			margin-bottom:5px;
		}
		button,textarea {
			display:block;
			margin-top:5px;	
		}
		.mesajlar {margin-top:20px;}
	</style>
</head>
<div style="width:500px;margin:0 auto">
 <form action="#" method="post" id="forms">
 	<label>Mesajınız</label>
 	<textarea name="mesaj" id="mesaj" cols="30" rows="10"></textarea>
 	<button type="post">Gönder</button>
 </form>
 <div class="temizle"></div>
 <div class="mesajlar"></div>
 
 </div>
</body>
</html>


Sayfada birden fazla formunuz olabilir bunun içinde kullanıcının hangi formda olduğunu bulmak için diyelimki 1. formda textarea nın içinde onu target methodu ile alıp parent methodu ile de forma geçiş yapabilirsiniz. geliiştirmek size kalmış ama temel mantık yukarıdaki yaptığım şekilde işliyor.

DEMO

Html-Html5Javascript-jQuery

Twitter Otomatik Takip Etme, Unf,Favori Kodları [01-08-2015]

Merhaba arkadaşlar bu aralar kafamı twitter takipçilerine sarmam nedeniyle bende takipçi kasayım dedim ama genelde uygulamalardan saçma sapan tweetler başkalarını takip etmeler falan oluyor bu yüzden doğal yöntemlerle kasmaya karar verdim ne kadar doğalsa artık 🙂
Genelde takipçi kasmak için milleti taki edersin onlarda seni takip ederler takio etmeyenleride takipten çıkarsın olay budur şimdi herkesi tek tek elle takip etmekten üşendiğim için bende kod yazayım dedim 🙂

Tüm Kodların Genel Kullanımı

Google Chrome Kullanıcıları için;
1- Sağ Tıklayıp öğeyi denetle diyoruz
2- altta açılan pencerede console(konsol) a tıklıyoruz.
3- Kodlarımızı oraya yapıştırıp Enter a basıyoruz.

Twitter Otomatik Takip Etme Kodu

Öncelike TT olan hashtaglara giriyoruz (anasayfadayken sol tarafta görünen taglar tt taglardır.)
Daha Sonra Genel Kullanımdaki maddeleri yapıp aşağıdaki kodu oraya yapıştırıyoruz.

var tweet = $(".tweet");
	setInterval(function(){
		tweet.each(function(){
			$(this).find(".js-user-profile-link").trigger("mouseover");
			$("button.user-actions-follow-button").trigger("click");
			$(this).remove();
		});		
	},500);

Ve Otomatik insanları takip etmeye başlıyoruz.

Twitter Unfollow Yapma kodu

Twitter Sizi Takip Etmeyenleri Unfollow Yapma Kodu
Öncelikle Profilinizdeki Takip EdiliyorSekmesine Tıklıyorsunuz.
Daha sonra Genel Kullanımdaki maddeleri yaparak aşağıdaki kodu yapıştırıyorsunuz.

Twitter Unfollow Yapma Kodu

setInterval(function() {
 $(".FollowStatus").each(function(){
 $(this).parents(".Grid-cell.u-size1of2.u-lg-size1of3.u-mb10").remove();
 });
 $("div:not(.not-following) > .user-actions-follow-button").click();
}, 20000);
setInterval(function() {
 $(".Grid-cell.u-size1of2.u-lg-size1of3.u-mb10").remove();
}, 30000);
setInterval(function() {
 window.scrollTo(0,document.body.scrollBottom);
},5000);
setInterval(function() {
 window.scrollTo(0,document.body.scrollHeight);
},1000);


Twitter Otomatik Favori Ekleme Kodu

Bu kodu istediğiniz sayfada çalıştırabilirsiniz.
Yapmanız Gereken nerede favori yapmak istiyorsanız o sayfaya gidip genel kullanımdaki maddeleri yapmanız.

Twitter Otomatik Favori Ekleme Kodu

setInterval(function(){
$(".favorited").parents(".js-stream-item.stream-item.stream-item.expanding-stream-item").remove();
var yeni_tweet = $(".stream-container").find(".new-tweets-bar.js-new-tweets-bar").attr('data-item-count');
var tweet = $('.stream-items.js-navigable-stream >.js-stream-item.stream-item.stream-item.expanding-stream-item').length;
if(tweet > 0){
$(".ProfileTweet-actionButton.js-actionButton.js-actionFavorite.js-tooltip")[0].click()
setTimeout(function(){
$('.js-stream-item.stream-item.stream-item.expanding-stream-item')[0].remove();
},500);
}
if(tweet < 2 && yeni_tweet > 0){
$(".new-tweets-bar.js-new-tweets-bar").click();
}
},1000);

Günlük Aşırı Yapmamanızı Tavsiye Ederim.

Bol Takipler 🙂 @vehbiakdogan

Javascript-jQuery

Android Genymotion OpenGL Hatası Ve Çözümü

Merhaba Arkadaşlar Androide Başlayacak vakti bulduğum ve bi bismillah diyeyim derken hemen karşıma birinci engel çıktı android için hızlı bir emülatör olan genymotionu kullanmaya başlayacakken emülatör çalışmadı ve yukarıdaki hatayı verdi.

Hataya bakacak olursak ekran kartımızın genymotionu desteklemediğini veya driverlerimizin güncel olmadığını söylüyor.
ama 4gb ekran kartım vardı ve sürücülerimde günceldi ama hala çalışmıyordu nette araştırma yaptım ve windowsun openGL yi bir güncelleme olarak görmediğini ve kullanmadığını biz bunu istersek kendi ekran kartımıza göre yükleyebileceğimizi öğrendim yani sonuç olarak bilgisayarımızda openGL olmadığı veya sürümü 2.0 dan küçük olduğu için biz bu hatayı alıyorduk bunun için ekran kartınızın modeline göre openGL yi sisteminize yükleyerek bu hatayı çözebilirsiniz.

yabancu dilim iyi değil bulduğum çözümü tam çevirememiş olabilirim Bulduğum Çözüm Metni :

First things first, OpenGL is not a library. It’s a drawing API for talking with the graphics drivers to make the GPU do nice things.

As such, OpenGL comes as part of the graphics drivers. Unfortunately Microsoft decided that they don’t like OpenGL and would not ship drivers fully equipped with modern OpenGL profiles through Windows’ built in driver update mechanism. Oh, yes, they added legacy support for OpenGL-1.4 (which was specified in 2002), thank you very much.

So you have to take things into your own hands. First step: Go to the control panel and open the Hardware Manager. In the section “Graphics Cards” you’ll find the name of your GPU. Most likely it will be made by one of Intel, Nvidia, AMD or ATI.

Depending on who made it you can find the drivers on

Select the drivers appropriate for your system, download and install them.

Since OpenGL is not a library the truly limiting factor is the GPU in your system. If your GPU doesn’t OpenGL-2 you’re SOL. However you’d have a really, really old GPU for that and Windows-8 would not even boot on a system with such a GPU that old. Update your GPU drivers and you should be fine.

Kaynak: http://stackoverflow.com/questions/23560545/genymotion-opengl-error#answer-23561229

AndroidSorun Ve Çözümler

Php İle Büyük Boyutlu Dosya Yükleme Sorunu

Php ile 3mb den büyük dosya yüklemeye çalıştığımızda eğer sunucu ayarlarımız default olarak duruyorsa dosya upload edilemez.
Bu bizim işimize gelmediği için dosya upload limitimizi yükseltmemiz gerekiyor.
Bu yükseltmeyi 2 şekilde yapabilmemiz mümkün.

1- Php.ini dosyamızı editleme

Öncelikle phpini dosyamızı açıyoruz ve php.ini dosyası içerisinde upload_max_filesize aratıyoruz.
Karşısında çıkan değeri örn:100 mb ççıkarmak istiyorsak oraya 100M yazıyoruz.

2- .htaccess ile upload limitini artırmak

.htaccess ile de upload limitimizi değiştirmemiz mümkün bunun içinde eğer .htacess dosyamız yoksa oluşturuyoruz varsa da mevcut .htaccess dosyamızı açıyoruz.
Daha sonra açtığımız dosyamız içine aşağıdaki kodları yazıyoruz.

<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine on
  php_value max_execution_time 98888600
  php_value upload_max_filesize 100M
  php_value post_max_size 100M
</ifModule> 

Evet Arkadaşlar artık php ile 100Mb ye kadar dosya yükleyebilirsiniz.

PHP

Css İle Çift-Tek İndisli Elemanları Seçmek

Bazen çift-tek indisli elemanlara farklı stiller vermek istiyoruz. ve hemen jQuery ile odd seçicisini kullanarak stil veriyoruz.

Şimdi css nin bize sunmuş olduğu niteliklerle çift ve tek indisli elementlerimizi seçmeyi görelim.
Şöyle bir html yapımız olsun.

<ul>
	<li> bordo</li>
	<li> mavi</li>
	<li> bordo</li>
	<li> mavi</li>
	<li> bordo</li>
	<li> mavi</li>
	<li> bordo</li>
	<li> mavi</li>
	<li> bordo</li>
	<li> mavi</li>
	<li> bordo</li>
	<li> mavi</li>
</ul>

Css Kodumuz:



ul li {
		width:200px;
		padding:5px;
		list-style: none;
		text-align: center;
		font:16px arial;
		color:#fff;
}
ul li:nth-child(2n + 1) {
	background: #A70529;
}
ul li:nth-child(2n) {
	background: #2CB0E9;
}



Css Kodlarımızı açıklayacak olursak;

nth-child() çocuk elementleri seçmemize yarar. örn: ul li:nth-child(3) gibi.

Bizim yaptığımız işlem çocuk seçicileri biraz daha genelleştirmek oldu yani direk 2-3-5 gibi sayılar vermek yerine genel tanım yaptık.
matematiktende bileceğiniz gibi 2n çift sayıyı temsil eder bizde çift indisli çocukları 2n ile seçtik.
2n çift olduğuna göre 2n+1 kesin tektir bunuda matematik bize söylüyor 🙂 bizede tek indisli çocukları seçmek için 2n+1 yazmak kalıyor 🙂

Demo :

  • bordo
  • mavi
  • bordo
  • mavi
  • bordo
  • mavi
  • bordo
  • mavi
  • bordo
  • mavi
  • bordo
  • mavi

Bol Kodlu Günler 🙂

Css-Css3Html-Html5

C++ Bölme Operatörü Kullanmadan Bölme İşlemi Yapmak

Merhaba arkadaşlar sizlere bölme operatörü(/) kullanmadan nasıl bölme işlemi yapılır onu göstereceğim 🙂

Yöntemimizin adı çıkarma işlemi ile bölme

Bölme operatörü kullanarak herkes bölme yapar algoritma geliştirme amaçlı genelde hocalarda bölme operatörü kullanmadan bölme yapın derler. algoritmasını anlatayım

1. bölünen sayımız bölen sayımızdan küçük oluncaya kadar biz sayıyı böleriz mantık budur.

2. bölünen sayıyı bölen sayıya tam anlamıyla bölmek demek bölünen sayının içinde kaç tane bölen sayı var bunu öğrenmektir aslında 😀
Çok saçmaladım farkındayım ama kod yazınca daha iyi anlaşılacaktır.
Arkadaşlar ben c++ için yazacağım ama tüm programlama dillerinde algoritmayı uygulayabilirsiniz. uygulayamayanlar olursa sorabilirler.

işte cevap :

#include <iostream>
using namespace std;
int main() {
	setlocale(LC_ALL,"turkish"); // türkçe karakter desteği 
	int bolunen, bolen, bolum = 0; // değişkenlerimiz 
	cout << "Bölünecek sayı : "; 
	cin >> bolunen;
	cout << "Bölen sayı: ";
	cin >> bolen;
	// sayılarımızı aldık 
	while (bolunen >= bolen) { // bölen sayı büyük oluncaya kadar döngümüz devam etsin. 
		bolunen -= bolen;
		bolum++;
	}
	cout << "bölüm: "<<bolum<<endl; // bölümü yazdırdık



	return false;
}


C++Diğer

Php $_REQUEST Kullanımı

Öncelikle REQUEST nedir ondan bahsedelim. Request istek anlamına geliyor arkadaşlar. ve biz php de bunu http isteği olarak tanımlıyoruz.

kısacası $_REQUEST bizim sayfamızdaki http isteklerini gösterir.

en çok kullanılan http istekleri $_POST, $_GET, $_COOKIE, $_SESSION dur.

Not: $_REQUEST ön tanımlı olarak $_POST , $_GET ve $_COOKIE değerlerini görüntüler bunu değiştirmek için php.net ten faydalanabilirsiniz.

 

Kullanımı

Basitçe bir kulanım gösterecek olursak arkadaşlar bir adet formumuz olsun ve get ve post değerlerini aynı anda nasıl alırız onu görelim.


<?php
header("content-type:text/html; charset=utf8");


if($_POST) {
	var_dump($_REQUEST);
}
?>

<form action="?act=ok" method="post">
	<input type="text" name="postDegeri" />
	<button type="submit">GÖNDER</button>
</form>


çıktı olarak bize get ile gönderdiğimiz act=ok değerini ve inputa girilen post değerini verecektir.
yani kısacası $_REQUEST methodumuz $_GET ve $_POST ile gelen verileri tek değişken ile alıp işlememize yarar.

dizi olarak yazdırabildiğimiz gibi tek bir değeride alabiliriz.

örneğin:

<?php
header("content-type:text/html; charset=utf8");


if($_POST) {
	echo "Tüm post ve get istekleri <br/>";
	foreach($_REQUEST as $name => $value)
		echo "name:{$name} -- value:{$value} <br/>";
	
	echo 'Post değerimiz:'.$_REQUEST["postDegeri"];
	echo '<br/> get değerimiz:'.$_REQUEST["act"];
}
?>

<form action="?act=ok" method="post">
	<input type="text" name="postDegeri" />
	<button type="submit">GÖNDER</button>
</form>

Şeklinde Kullanabiliriz.

PHP

jQuery offset() kullanımı

jQuery offset methodu seçmiş olduğumuz bir elementin başlangıca uzaklığını verir. yani şöyle ki bir div elemeni seçtik ve bunun üst köşte noktasının kordinantlarını almak istiyoruz bunu offset methodu kullanarak çok rahat alabiliriz.

Parametreler

top: tarayıcının üst kısmına ne kadar uzakta olduğunu gösterir.
left: Tarayıcının yan tarafından ne kadar uzakta olduğunu gösterir.

Kullanımı

Bir Elemente ait top left değerini nasıl alacağımıza bakalım:


        <span id="x"></span>
	<span id="y"></span>
	<div class="yer"></div>

Html yapımız böyle olsun.


<style type="text/css">
	*,body {
		padding:0;
		margin:0;
	}
		.yer {
			width:200px;
			height:200px;
			background:#555;
		}
	</style>

Css Dosyamız divimiz belli olsun diye background verdim.

Jquery kodlarımız:

$(function(){
			var pozisyon = $(".yer").offset(), // fonksiyonumuz 
				x = $("span#x"), // left değerini yazdıracağımız element
				y = $("span#y"); // top değerini yazdıracağımız element
			x.html(pozisyon.left); // left değerini yazdırdık
			y.html(pozisyon.top); // top değerini yazdırdık
});

Şeklinde x ve y değerlerini alabiliyoruz.

Şimdi Değiştirmeye bakalım html ve css aynı şekilde olsun js dosyamıza eklemeler yapalım.

$(function(){
			var pozisyon = $(".yer").offset(), // fonksiyonumuz 
				x = $("span#x"), // left değerini yazdıracağımız element
				y = $("span#y"); // top değerini yazdıracağımız element
							
			$(window).mousemove(function(e){
				$(".yer").offset({
					"top" 	: 	e.pageY,
					"left"	: 	e.pageX
				});
				x.html(e.pageY); // left değerini yazdırdık
				y.html(e.pageX); // top değerini yazdırdık
			});
			
			
		});


Mousenin kordinantlarını dive verdik. ( mouse takip eden reklam uygulamasıda yapmış olduk 🙂 )

Demo : Demoya Bak

Html-Html5Javascript-jQuery