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”

Petya Saldırıları Hakkında

Kısa bir süre önce yaşanan WannaCrypt saldırısının ardından şimdi de fidye yazılım biçiminde gelen Petya isimli zararlı yazılım nedeniyle kötü amaçlı bir saldırı daha yaşıyoruz. Microsoft olarak, hızla harekete geçerek saldırının niteliğini araştırıp analiz ettik. Kötü Amaçlı Yazılımdan Koruma ekibimiz, bu kötü amaçlı yazılımı algılayan ve kullanıcılarımızı buna karşı koruyan imzalar yayınladı. Okumaya devam et “Petya Saldırıları Hakkında”

Basit Kimlik Doğrulaması ile RESTful API Servisi [PHP]

Merhaba!

Başlamadan önce, API servisini barındırmak için bir web sitesi kurmanız gerekecektir. Güvenliği için, tüm isteklerde SSL kullanmayı tercih etmelisiniz. Bu isteklerde SSL yoksa yanıt olumsuz olmalıdır. Bu, web siteniz için bir SSL sertifikası ihtiyacınızın olduğunu gösterir. Bu sayede tüm istekler şifrelenerek korunacaktır.

Ben, Restful API servisini PHP ile kurmak için Slim Framework kullanmayı tercih ettim. Performanslı yapısıyla ihtiyaçlarımızı en iyi şekilde karşılayacağını düşünüyorum.


server {
        listen 80;
        server_name domainadiniz.com;
        rewrite        ^ https://$server_name$request_uri? permanent;
        }
}

Slim Framework hakkında bilgi sahini olmak için gerekli dökümantasyonları buradan okuyabilirsiniz.

Slim Framework indirmek için;

$ php composer.phar create-project slim/slim-skeleton [my-app-name]

Slim Framework Dökümantasyon (İngilizce)

Ben bildiğinizi varsayarak devam edeceğim. İlk olarak route yapımızı oluşturuyoruz.


require 'vendor/autoload.php';
require_once 'lib/mysql.php';
 
// initialize the app
$app = new \Slim\Slim();
 
// Queries
$app->get('/', 'home');
$app->get('/veri', 'getveriler');
$app->post('/veri', 'postveriler');


$app->hook('slim.before.dispatch', function () use ($app){

        $headers = request_headers();
        $response = array();
        $app = \Slim\Slim::getInstance();

        $api_key = $headers['X-API-KEY'];

        if($api_key == '612e648bf9594adb50844cad6895f2cf') {
                $auth = true;
        } else if ($api_key == NULL) {
                $response["error"] = true;
                $response["message"] = '{"error":{"text": "api key gönderilmedi" }}';
                $app->response->headers['X-Authenticated'] = 'False';
                $auth = false;
                $app->halt(401, $response['message']);
        } else {
                $response["error"] = true;
                $response["message"] = '{"error":{"text": "api key geçersiz" }}';
                $app->response->headers['X-Authenticated'] = 'False';
                $auth = false;
        }

        if(!$auth){
                $req = $_SERVER['REQUEST_URI'];
                if ($req != "/") {
                $app->halt('403', $response['message']); 
                }
        }

});

$app->run();

Youtube Data API v3 [PHP]

Youtube api kullanarak mini projeler geliştirebilirsiniz. Eğer büyük projelerde kullanmak istiyorsanız Google amcanın request izinlerine bir göz atmalısınız. Bu yazımda sizlere Youtube API kullanımındaki temelleri anlatacağım.

API Kimlik Bilgileri

Önce, Google Konsolunuzdan API kimlik bilgilerini almalısınız. Google’ın sunduğu tüm API’ler için sadece bir tane API kimlik bilgisi vardır, bunun için yapmanız gereken tek şey Google Console sayfasınaki API’yi etkinleştirmektir. API Console sayfasına tıkladığınızda şu şekilde bir sayfa göreceksiniz.

Google API Console
Google API Console

İhtiyacımız olan şey, Youtube Data API v3. Tıklayın ve etkinleştirin. API kimlik bilgileriniz yoksa API’lar ve Kimlik Doğrulaması’nın altındaki ‘Kimlik Bilgileri’ ni tıklayabilir ve Genel API Erişimi bölümünün altındaki ‘Yeni Anahtar oluştur’ seçeneğini tıklayabilirsiniz. Tıkladığınızda Google amca API Anahtarı üretecektir. Bu anahtar Youtube ile karşılıklı istek ve cevap için konuşmanızı sağlayacaktır.

Youtube API v3 Client Dosyaları

Anahtarımızı başarılı bir şekilde aldığınızı varsayarak (Alamadığınızda yorum alanını kullanarak benden destek isteyebilirsiniz) bulunması gereken zorunluluklardan bahsedelim.

Bilgisayarınızda composer yüklü ise şu komutu kullanarak dosyaları indiriyoruz;

composer require madcoda/php-youtube-api

ile vendor klasörünü indirip sunucuya dosyaları gönderiyoruz.

Bilgisayarınızda composer yüklü değilse;

https://github.com/bercanozcan/php-youtube-api

linkinden indirebilir ve gerekli dosyaları sunucuya gönderebilirsiniz.

Artık Youtube Data API v3 erişimi için bir engelimiz kalmadı. Şimdi PHP ile bir sayfa oluşturup. Vendor içerisindeki autoload.php dosyasını sayfaya require edelim ve az önce Google Console’dan almış olduğumuz API KEY tanımlamasını yapalım.

require 'vendor/autoload.php';
$youtube = new Youtube(array('key' => 'API_KEY'));

Youtube API v3 Basit Video Arama

Şimdi izin verilen tüm özellikleri kullanmak tamamen projenizle doğru orantılıdır. Bu sebeple ben size en temel referans olan arama isteklerinden örnek vereceğim. Siz projenize göre istediğiniz gibi geliştirebilirsiniz.

$results = $youtube->search('Aramak istediğiniz anahtar kelime');

Bu şekilde arattığımızda $results değişkeni bize bir dizi döndürecektir.

Youtube API v3 Gelişmiş Video Arama

Puanına göre, eklenme tarihine göre vs şeklinde gelişmiş bir arama kullanmak istiyorsanız bu şekilde sınıfları kullanabilirsiniz.

$results = $youtube->searchAdvanced(array(
    'q' => 'yelkenli',
    'part' => 'snippet',
    'order' => 'rating'
));

Tüm sorularınız için yorum alanını kullanmaktan çekinmeyin. İyi çalışmalar.

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

Google: Penguen 4.0 Güncellemesinde Neler Var?

Uzun bir süredir yaşanan Google dalgalanmalarının nedeni en sonunda belli oldu. Cumartesi günü Google Webmaster Blog üzerinde yayınlanan blog bildirisyle birlikte, Google tüm arama motoru optimizasyonu piyasasının şeklini değiştirecek yeni ve gerçek zamanlı güncellemesi Penguen 4.0’ı yayınladığını duyurdu. Ortalama olarak iki yıl kadar süren uzun bekleyişin sonunda Google Penguen algoritması tekrardan güncelleniyor. Google, yeni güncellemeyle birlikte artık algoritmalarının gerçek zamanlı olarak çalışacağını söylüyor ki, bu webmaster ve içerik üreticileri açısından birçok şeyin artık eskisi gibi olmayacağı anlamına geliyor.
Penguen 4.0 Güncellemesi Neleri Değiştirecek?Bildiğiniz üzere Penguen algoritmasına Webmasterlar olarak çok da uzak değiliz. İlk defa 2012 yılında tanıştığımız Google güncellemesi, spam yapan siteleri cezalandırmak ve arama sonucunda kullanıcı dostu içeriklerin üstlere çıkmasını sağlamak için geliştirilen bir algoritma.
4 farklı güncelleme şeklinde sunulan bu algoritmanın en büyük eksikliği zaman aralıklı olarak çalışması prensibiydi. Öyle ki, Google güncellemesi yapıldıktan sonra siteler kendi içerisindeki eksikleri düzeltip, tekrardan spam bazlı çalışmalar yapıyor ve bir sonraki güncellemeye kadar yani yaklaşık olarak iki yıllık süreç boyunca tekrardan spam çalışmalarıyla ciddi trafik elde ediyordu.
Google’ın Penguen algoritması artık anlık olarak çalışacağı için spam yapan siteler elde ettikleri sıralarına elveda derken, kaliteli siteler daha çok ön plana çıkacak. Google’ın botları indexlenen sayfalar içerisinde sürekli olarak Google Penguen filtrelerini göz önünde tutacak ve böylece spam çalışmaları Google tarafından kolayca fark edilebilecek.
Algoritmanın gerçek zamanlıya dönüşmesiyle birlikte kaliteli içerik üreten Webmasterlar’ın da faydalı çalışmaları çok daha kısa süre içerisinde Google tarafından fark edilebilecek ve etkiler aylar süren bekleyişler yerine daha kısa zaman aralıklarında kendini göstermeye başlayacak.
Penguen 4.0 Güncellemesi Ne Zaman Yayına Alınacak?
Google’ın ucu açık açıklamasından da anlayabileceğimiz üzere Penguen 4.0 güncellemesi tek seferde tüm dil ve ülkeler için yayınlanmayacak. Kısa süre içerisinde aşamalı olarak Penguen 4.0 güncellemesi yayınlamış olacak. Tabii, bu sürecin çok uzun sürmeyeceğini belirtmekte fayda var. Güncellemenin tamamen etkili olmaya başlaması için ortalama olarak birkaç hafta beklememiz gerekecek.
SEO konusunda önemli kaynakların belirttiğine göreyse eğer Google sayfalarınıza çok sık uğruyorsa Penguen 4.0 güncellemesinin etkilerini daha hızlı şekilde hissedebileceksiniz.
Google’ın Penguen 4.0 Güncellemesi Bizden Neler İstiyor?
Penguen 4.0 güncellemesinin aslında bizden diğer güncellemelere ek olarak istediği farklı bir şey yok. Bu güncellemeyle birlikte sadece birkaç ufak değişiklik gerçekleştirildi ve filtreler gerçek zamanlı hale getirildi. Daha önceki Penguen güncellemelerini de göz önüne alarak aşağıdaki maddeleri gözden geçirmenizin faydanıza olabileceğini söyleyebiliriz;
Anahtar kelime oranı: Hatırlatmakta fayda var; Google artık eskisi gibi “bu sitede çok anahtar kelime var, üst sıraya alalım!” mantığıyla hareket etmiyor. Anahtar kelime oranınızı sayfa içerisinde abartmanız filtreye girmenize neden olabilir. İdeal anahtar kelime oranınızın içeriğinizin uzunluğuna oranla %2 civarında olmasını sağlayamaya özen gösterebilirsiniz.
Ölü Backlinkler tarih oluyor: Yeni güncellemeyle birlikte eski ve kaderine terk edilmiş sitelerin backlink değeri fazlasıyla düşecek. Google eski ve artık kullanılmayan birçok web sitesini arama sonuçlarından kaldıracak. Bu tip sitelerden aldığınız backlinkler de doğal olarak sizi olumsuz yönde etkileyecek.
Alakasız linkler: Google artık link geçişleri arasındaki tema farkını büyük ölçüde anlayabiliyor. Dolayısıyla sitenize alakasız web sitelerinden aldığınız linklerin size artık faydadan çok zararının dokunacağı resmileşti diyebiliriz.
SEO için üretilen içerikler: Google’ın her fırsatta dile getirdiği üzere içerikler SEO için değil, kullanıcılar için hazırlanmalı ve sayfada kalma süresi maksimum düzeye ulaştırılmalıdır. Bunun dışına çıkan ve içeriklerini sadece SEO için hazırlayan web sitelerinin yakın zamanda ciddi düşüşler yaşaması işten bile olmayacak. İçeriklerinizi üretirken botlar yerine kullanıcıları düşünmeye başlamanızın ve her zamankinden daha çok kullanıcı odaklı içerikler üretmenizin şimdi tam zamanı.
Google Penguen Güncellemesini Tekrardan Yapacak mı?
Güncellemenin gerçek zamanlı hale getirilmiş olması nedeniyle artık Google’ın Penguen algoritması üzerinde yapılan değişikleri resmen duyurmayacaklarını ön görebiliriz. Çünkü artık Penguen olay olmaktan olgu olmaya doğru bir yolculuğa başlamış oldu. Bu yolculuğun ne kadar süreceğiniyse zaman gösterecek.

İyzico Ödeme Entegrasyonu [PHP]

İyzico ile ödeme sistemini entegre etmek için öncelikle PHP sürümünüz 5.3 yada üzeri olmalıdır. iyzico resmi api desteğini isterseniz composer ile yükleyebilir veya github üzerinden download edebilirsiniz.

composer require iyzico/iyzipay-php

Komutunu kullanarak composer aracılığıyla indirebilirsiniz. Daha sonra yapmanız gereken, dosyaları sisteminize include etmek olmalıdır. Bunu ise composer sonrası sistemin yarattığı autload.php dosyasıdır. Bunu çağırmak için;

require_once('vendor/autoload.php');

kodunu sayfanızın başına ekliyoruz.
Şimdi sıra geldi ödeme terminalini sisteminize uyarlı hale getirmeye;

$options = new \Iyzipay\Options();
$options->setApiKey("api key");
$options->setSecretKey("secret key");
$options->setBaseUrl("https://sandbox-api.iyzipay.com");
$request = new \Iyzipay\Request\CreatePaymentRequest();
$request->setLocale(\Iyzipay\Model\Locale::TR);
$request->setConversationId("123456789");
$request->setPrice("1");
$request->setPaidPrice("1.1");
$request->setCurrency(\Iyzipay\Model\Currency::TL);
$request->setInstallment(1);
$request->setBasketId("B67832");
$request->setPaymentChannel(\Iyzipay\Model\PaymentChannel::WEB);
$request->setPaymentGroup(\Iyzipay\Model\PaymentGroup::PRODUCT);
$paymentCard = new \Iyzipay\Model\PaymentCard();
$paymentCard->setCardHolderName("John Doe");
$paymentCard->setCardNumber("5528790000000008");
$paymentCard->setExpireMonth("12");
$paymentCard->setExpireYear("2030");
$paymentCard->setCvc("123");
$paymentCard->setRegisterCard(0);
$request->setPaymentCard($paymentCard);
$buyer = new \Iyzipay\Model\Buyer();
$buyer->setId("BY789");
$buyer->setName("John");
$buyer->setSurname("Doe");
$buyer->setGsmNumber("+905350000000");
$buyer->setEmail("email@email.com");
$buyer->setIdentityNumber("74300864791");
$buyer->setLastLoginDate("2015-10-05 12:43:35");
$buyer->setRegistrationDate("2013-04-21 15:12:09");
$buyer->setRegistrationAddress("Nidakule Göztepe Merdivenköy Mah. Bora Sok. No:1");
$buyer->setIp("85.34.78.112");
$buyer->setCity("Istanbul");
$buyer->setCountry("Turkey");
$buyer->setZipCode("34732");
$request->setBuyer($buyer);
$shippingAddress = new \Iyzipay\Model\Address();
$shippingAddress->setContactName("Jane Doe");
$shippingAddress->setCity("Istanbul");
$shippingAddress->setCountry("Turkey");
$shippingAddress->setAddress("Nidakule Göztepe Merdivenköy Mah. Bora Sok. No:1");
$shippingAddress->setZipCode("34742");
$request->setShippingAddress($shippingAddress);
$billingAddress = new \Iyzipay\Model\Address();
$billingAddress->setContactName("Jane Doe");
$billingAddress->setCity("Istanbul");
$billingAddress->setCountry("Turkey");
$billingAddress->setAddress("Nidakule Göztepe Merdivenköy Mah. Bora Sok. No:1");
$billingAddress->setZipCode("34742");
$request->setBillingAddress($billingAddress);
$basketItems = array();
$firstBasketItem = new \Iyzipay\Model\BasketItem();
$firstBasketItem->setId("BI101");
$firstBasketItem->setName("Binocular");
$firstBasketItem->setCategory1("Collectibles");
$firstBasketItem->setCategory2("Accessories");
$firstBasketItem->setItemType(\Iyzipay\Model\BasketItemType::PHYSICAL);
$firstBasketItem->setPrice("0.3");
$firstBasketItem->setSubMerchantKey("sub merchant key");
$firstBasketItem->setSubMerchantPrice("0.27");
$basketItems[0] = $firstBasketItem;
$secondBasketItem = new \Iyzipay\Model\BasketItem();
$secondBasketItem->setId("BI102");
$secondBasketItem->setName("Game code");
$secondBasketItem->setCategory1("Game");
$secondBasketItem->setCategory2("Online Game Items");
$secondBasketItem->setItemType(\Iyzipay\Model\BasketItemType::VIRTUAL);
$secondBasketItem->setPrice("0.5");
$secondBasketItem->setSubMerchantKey("sub merchant key");
$secondBasketItem->setSubMerchantPrice("0.42");
$basketItems[1] = $secondBasketItem;
$thirdBasketItem = new \Iyzipay\Model\BasketItem();
$thirdBasketItem->setId("BI103");
$thirdBasketItem->setName("Usb");
$thirdBasketItem->setCategory1("Electronics");
$thirdBasketItem->setCategory2("Usb / Cable");
$thirdBasketItem->setItemType(\Iyzipay\Model\BasketItemType::PHYSICAL);
$thirdBasketItem->setPrice("0.2");
$thirdBasketItem->setSubMerchantKey("sub merchant key");
$thirdBasketItem->setSubMerchantPrice("0.18");
$basketItems[2] = $thirdBasketItem;
$request->setBasketItems($basketItems);
$payment = \Iyzipay\Model\Payment::create($request, $options);

Bu örnekte görüldüğü gibi kodları sisteminize uygun hale getirebilirsiniz.

Github: https://github.com/bercanozcan/iyzipay-php

En İyi Twitter Pazarlama Sistemi : Hopicy

En İyi Twitter Pazarlama Sistemi : Hopicy
En İyi Twitter Pazarlama Sistemi : Hopicy

Takipçilerinizi ilgi alanınıza göre arttırmak için yardımcı olabilirim. Kolay kurulum. Ücretsiz deneme ! Hopicy, günümüzün en etkili pazarlama ağlarından biri olan Twitter üzerine kurulmuştur. Okumaya devam et “En İyi Twitter Pazarlama Sistemi : Hopicy”