Crypto 1919 Harika Bir Şifreleme Programı

Crypto 1919’u, metin ve görsel kriptolama programını, birkaç günlük yoğun çalışmanın ardından bitirdim. Bu sıradışı kriptolama mantığı ile “şifre” kavramını sayısal/metinsel algoritma anlayışından alıp; şifrelenebilir görsellikle ilişkilendirdim.

Programı ayrıntılı olarak incelemek ve indirmek için: http://crypto1919.beybut.com

Crypto 1919

Crypto 1919 ile Neler Yapabilirsiniz?

Yazılı ve görsel içeriklerinizi, şifrenizi bilenin açabileceği biçimde kriptolayın. Özeliniz size özel kalsın.

Örnek Kullanım Alanları:

Özel fotoğraflarınızı şifreli olarak gönderin.

Örneğin özel bir fotoğrafınızı, sevgilinize e-mail ile, Crypto 1919 kullanmadan gönderdiğinizde; bu fotoğraf ISP’nizin (Internet servis sağlayıcısının), e-mail dağıtıcınızın (gmail, hotmail, yandex vb.) üzerinden ve bunlarda iz bırakarak alıcının e-mail kutusuna ulaşır. Her ne kadar bu servislerde SSL kullanılsa da SSL’in sınırlı koruması, e-mailiniz hedefe ulaşana kadardır. Gönderdiğiniz e-maili sevgilinizin iş arkadaşının görmeyeceğini yahut onun e-mail hesabının çalınıp fotoğrafınıza tanık olunmayacağını garanti edemezsiniz. Eğer gönderdiğiniz e-mail yanlış kişilerin eline geçerse çok fazla sorununuz var demektir. Aynı durum sosyal medyadaki özel yazışmalarınızda da geçerlidir.

E-mail, blog, forum, panel, oyun… giriş bilgilerinizi hatta şifrelerinizi şifreli olarak saklayın.

Askeri operasyon koordinatlarını üstlerinize metinsel değil görsel kriptolu olarak gönderin.

Şirketiniz, kurumunuz için özel ve gizli yazışmalarda Crypto 1919’un gücüne güvenin.

Crypto 1919’un benzersiz görsel şifrelemesi istihbarat alanında dahi kullanıma uygundur. Çünkü Crypto 1919’un kripto çıktısı metin tabanlı (örn. md5, sha) bir algoritmaya dayanmaz. Program kırılsa bile şifre bilinmedikçe kriptolu JPG geri getirilemez.

Tamamen yerli, tamamen ücretsiz, tamamen güvenlidir.

Adblock’u Engellemenin En Kolay Yolu

Adblock, web sitelerindeki reklamları engelleyerek ziyaretçilerin reklamsız bir deneyim yaşamalarına yardımcı olan bir yazılım ve eklentidir. Firefox, Chrome gibi birçok popüler tarayıcıyı destekleyen bu eklenti kurulup aktifleştirildiğinde web sitenizi ziyaret eden kişi Google Adsense reklamları dahil hemen hiçbir reklamı görmez. Durum böyle olunca sitenizden elde ettiğiniz gelir düşer.

Adblock, bir sayfada reklamları engellerken bazı izler bırakır. Bu izlerden biri Adsense gibi iframe içinde reklam gösteren reklam ağlarındaki frameleri ziyaretçi gösteriminden kaldırmasıdır. O halde birkaç satırlık JS koduyla sayfadaki iframeleri kontrol edip; eğer frameler gösterilmiyorsa sayfada bir mesaj verdirerek ziyaretçiyi ana sayfamıza yönlendirelim.

JavaScript İle Adblock Tespiti ve Yönlendirme

Bu kodu reklam gösterdiğiniz sayfada </body> tagından hemen önce ekleyiniz. Eğer WordPress kullanıyorsanız temanızın footer.php dosyasına bu javascript kodunu ekleyebilirsiniz.

Adblock kullanan kişi sayfayı ziyaret ettiğinde önce bir mesaj kutusuyla karşılaşacak ardından ana sayfaya yönlendirilecek.

Tüm Domain Uzantıları, Domain Whois Servers ve Yanıtlar

Domain uzantıları, domain whois serverları ve bu sunucuların boş domainler sorgulandığında verdikleri yanıtlar özellikle domain whois scripti ve programı yazanların işine yarayacaktır. Icaan’in yeni top level alan adı uzantılarını onaylamasıyla yüzlerce alan adı uzantısı tescile ve ön kayda açıldı. 2016 Ağustos için tüm domain uzantıları, genel tescile açık olan, açık olmayan; ön tescil kabul eden ve yürürlükteki hemen her alan adı uzantısı aşağıdaki listede bulunuyor. Kolaylık olması amacıyla uzantı|whois server|yanıt biçiminde hazırladım.

PHP Ajax Domain Sorgulama Scripti için de bu liste işinize yarayacaktır.

Listede, ~976 adet uzantı, sunucu, yanıt yer alıyor.

 

Beybut KWS Beta

Beybut KWS, temel olarak, kaynak sözcüklerden yola çıkarak, popüler arama deyimlerini bulan ücretsiz bir SEO programıdır. Henüz Beta sürümüyle dağıtılan Beybut KWS ile  7 dilde ve ülke bazında o gün en çok aranan sözcükleri tek tıklamayla, liste halinde elde edebilir; bunlardan veya kendi belirleyeceğiniz arama deyimlerinden popüler anahtar sözcükler, nicheler bulabilirsiniz. Bu sözcükleri, etiket belirlemede, konu başlıklarınızda ve daha birçok alanda kullanabilirsiniz.

Beybut KWS Temel Bilgiler

  • Proje Adı: Beybut KWS
  • Sürüm: Beta 1.0
  • Platform Hedefi: Masaüstü Yazılımı, Windows (TM)
  • Yazılımcı: Barış YEŞİLÇİMEN
  • Yayınlanma Tarihi: 14.03.2016
  • Test Edilen Sistemler: Windows 7 64 Bit, Windows Vista
  • Minimum Donanım Gereksinimleri: 256 MB+ Ram, 0.3 Ghz~ İşlemci, 20 MB Disk Alanı, Internet Bağlantısı
  • Çekirdek Çalışma Türü: MultiThread
  • Dosya: Windows Executable (EXE) 32 Bit
  • Kurulum gerektirmeyen Türkçe yazılım.

Beybut KWS yazılımında bilgisayarınıza zarar verebilecek kodlar (ajanlar, virüsler vb.) bulunmaz. Yine de beklenmedik sonuçlardan doğabilecek yükümlülük kullanıcıya aittir. Aşağıdaki dosyayı indirerek bu yükümlülüğü kabul etmiş sayılırsınız. Bazı antivirüs yazılımları “Drep” virus uyarısı veriyormuş. Bu yanlış bir alarm. Gönül rahatlığıyla indirip kullanabilirsiniz.

Beybut KWS Beta’yı İNDİR

Beybut KWS Beta

Tarama Hızı Ayarları

Sorgu temelinde çalışan Beybut KWS’de 3 tarama hızı seçeneği bulunur. Bu seçeneklerin bulunma nedeni ip adresinizin veri kaynaklarınca yasaklanmasını önlemektir. Eğer çok sayıda kaynak sözcükle ve sabit ip ile çalışıyorsanız tarama hızını “Yavaş” olarak belirleyiniz. Ip adresinizi kolayca değiştirebiliyor ve sabırsızsanız “Çok Hızlı” modu size uygun olabilir. “Hızlı” modu, normal koşullarda yasaklamaya neden olmuyor.

Dil ve Ülke Ayarları

Günlük popüler aramalar ve arama deyimleri için desteklenen diller şunlardır: Türkçe – Türkiye, İngilizce – ABD, Almanca – Almanya, Fransızca – Fransa, İngilizce – İngiltere, İspanyolca – İspanya, İtalyanca – İtalya.

Kaynak Sözcük Listesi

Bu alan popüler arama deyimleri araştırmanıza kaynaklık edecek sözcüklere ev sahipliği yapan alandır. Kaynak sözcükler satır satır listelenmelidir.

Bugün En Çok Arananlar

Günlük/saatlik olarak en çok aranan deyimleri, seçtiğiniz dil ve ülkeye göre listeler.

Filtre Editörü

Kaynak sözcüklerden, araştırma sonuçlarından elde ettiğiniz arama deyimlerini üç işlevle düzenlemenize olanak verir. Satır bazlı çalışır.

Şunu İçerenleri Sil

Listenizdeki her satırı tarayarak; belirlediğiniz girdiyi taşıyan satırları silmenizi sağlar.

Yalnızca Şunu İçerenler Kalsın

Belirlediğiniz girdiyi taşımayan satırları listeden siler.

Değiştir

Birinci girdinizi ikinci girdiyle değiştirir.

Sonuçlara Aktar

Düzenlediğiniz listeyi giriş ekranındaki Sonuç listesine aktarır.

Kaynak Sözcüklere Aktar

Düzenlediğiniz listeyi giriş ekranındaki Kaynak Sözcükler Listesi’ne aktarır.

Sıfırla

Sonuçlar listesini editör listesine aktarır.

Üstün Özellikleri

Beybut KWS, Beta sürümü olmasına rağmen benzer yazılımlara kıyasla bazı üstünlüklere sahiptir. Bunlardan en temel ikisi, “Bugün En Çok Arananlar” ve Filtre Editörü’dür. Yazılımın multi thread çalışması da bir artıdır.

Beybut KWS, listeleme ve listeleri düzenleme işlevlerinde özgürlüğü temel alır. Böylece arama deyimlerinde tabiri caizse “tavşanın suyunun suyunu” çıkarabilirsiniz.

Zaafları

Beybut KWS’yi aslında bir gün içinde yazıp yayına hazır hale getirmiştim. Ancak, hemen her yerde yüksek ücrete tabi bir özelliği daha eklemek amacıyla KWS’yi geliştirmeye devam ettim.  Bu, bulunan arama deyimlerini analiz eden; arama hacmi (search volume), PPC (tıklama başına ücret) gibi sonuçları gösteren bir özellikti. Ancak bununla ilgili temel programlama aşamasını geçtiğim, verileri elde ettiğim halde yavaş çalışma sorununu çözme, bazı gereklilikler için bir miktar yatırım yapma gibi konularda zamana ihtiyaç duyduğumu fark ettim. Bu nedenle yazılımı BETA olarak duyurdum. Gördüğünüz,

Beybut KWS Beta Uyarı

uyarısı tamamlanmamış bir işlevi ve gelecek için heyecan verici bir özelliği müjdeliyor.

Beta sürümünde proxy desteği olmaması ve tarama hızında “Çok Hızlı” seçilip yoğun arama yapılırsa ip adresinizin sorguçlarca yasaklanması riski Beybut KWS’nin zaaflarından.

Geliştirme Desteği

Projenin gelişimi için bağışta bulunabilirsiniz. Bağışın ardından bu konu altına, bağışta kullandığınız e-mail adresiyle yorum yazarsanız, bağışçılar listemde yer alırsınız.

 

 

Kullanımınız ve dönütleriniz için teşekkür ederim.

Özgün Görseller Oluşturmak

Özgün resim oluşturmak, bulmak özellikle resim sitesi sahipleri için sıkıntılı bir süreç. Seo açısından özgünlüğün önemi ortadayken görselleri özgünlüğün dışında tutmak mantıklı değil. Bu noktadaki en beklendik soru özgün görselin nereden bulunacağıdır. Ancak bu soruyu soruyorsanız muhtemelen aklınıza farklı resim sitelerinden bir görseli indirip ters çevirmek; resmin çözünürlüğüyle oynamak, üzerine watermark/logo basmak veya fotoğraf makinenizle akşam yiyeceğiniz yumurtalı ıspanağın fotoğrafını çekmek geliyordur. Bu projede bunların hiçbirini yapmayacağım. Php, Youtube-dl, FFmpeg kullanarak devinimsel görselleri (video) durağan görsellere (resim) çevireceğim. Böylece, hiçbir arama motorunun benzetemediği ve/veya birebir eşleştiremediği özgün görseller elde edeceğim. Çılgınca…

Başlarken

Kodlamaya başlamadan önce sunucunuzda Youtube-dl ve Ffmpeg’in kurulu olması; Php exec işlevinin kullanılabilir olması gerekiyor. Yapacağım işlem, HD veya Ultra-HD, 4K çözünürlüklü bir Youtube videosundan rastgele olarak 20 adet frame kopyalamak olacak. Videoları HD+ seçmemin nedeni görsellerin yüksek çözünürlüklü ve video hareketlerinden (izli hareketlerden) arındırılmış olmasını istemem.

Özgün Fikir, Özgün Görseller: Videodan Resme

Her şey tamamsa başlayalım. Dubai’yi tanıtan Ultra-HD bir video ( https://www.youtube.com/watch?v=n8d79M0LtfY ), görsellerimizin kaynağı olacak. Youtube-dl ile videoyu indirip; FFmpeg ile temel süre bilgilerini aldıktan sonra 20 adet görseli videonun ilk 10 dakikalık bölümünden -videonun 10 dakikadan kısa olması sorun teşkil etmez-  sökeceğim.

Kodlamada, klasörlerin yol bilgilerini tam olarak girmeye özen gösterin. Bakalım fikrimiz ve kodlarımız işe yaramış mı?

Hasat Zamanı

ozgun-gorseller-icin-video-09032016111213-1 ozgun-gorseller-icin-video-09032016110702-6 ozgun-gorseller-icin-video-09032016110503-5 ozgun-gorseller-icin-video-09032016110503-1 ozgun-gorseller-icin-video-09032016110148-17 ozgun-gorseller-icin-video-09032016110148-12 ozgun-gorseller-icin-video-09032016110148-8 ozgun-gorseller-icin-video-09032016110148-7

Artık uygun çözünürlükteki -genelde HD ve üzeri- her video bizim için birkaç özgün görsel anlamına gelebilir.

Projenin Zaafiyetleri ve Öneriler

  1. Videonun indirilmesi ve işlenmesi elde etmek istediğiniz görsel sayısına göre uzayıp kısalabiliyor. Örneğin 30 görsel için 5 dakikadan daha uzun bir süre işlem yapılması gerekebilir. Bu, sunucu bağlantınız, sunucunuzdaki ram ve işlemci gücü, disk özellikleriniz gibi donanımsal ortamla ilişkili. Ayrıca işlem uzun sürebileceği için php.ini’de bekleme süresine (max_execution_time) 300-1800 gibi bir değer vermeniz gerekir.
  2. Eğer scriptte hata alırsanız youtube-dl ve Ffmpeg’in kurulu ve güncel; Php içerisinde exec’in çalıştırılabilir olduğuna emin olun. Tabi ki kod içerisindeki yolların (örn. /home/beybut/public_html/youtube-bot/…) doğru biçimde yazılmasına da dikkat edin. Yine de çözemediğiniz noktalar için yorum bölümü daima emrinize amadedir.
  3. Videoları sadece Youtube’dan değil Youtube-dl’nin desteklediği diğer sitelerden de indirebilirsiniz. Youtube-dl’nin video indirmeyi desteklediği sitelerin listesine bu bağlantıdan ulaşabilirsiniz.

Node İle Robot Yazılımı: Robot Hazır!

Node.js ve Php ile yapay zekaya sahip Beybut Robot’u geliştirmeye devam ediyorum. Bundan önceki yazılarımda Node.js kurulumu, hoş geldin iletisi gibi bilindik işlemleri anlatmıştım. Bu yazımda yapay zekaya adımımı atacak; Beybut Robot’u konuşabilir hale getireceğim. Başka bir deyişle, işin asıl bölümüne tanıklık edeceksiniz.

Beybut Robot’u geliştirme aşamasındaki yapay zeka işlemlerinde PHP ağırlıklı çalışmaya karar verdim.  Node.js’yi yalnızca iletişim amacıyla kullanacağım. Yorumlayıcı ve güvenlik dosyamız “suzgec.php” bu açıdan bizim İngiliz anahtarımız olacak. Özetle, Ön yüzden suzgec.php’ye ileti gönderen kullanıcının iletisini bu Php dosyası yorumlayacak; sonuç elde edip sonucu Node’ye gönderecek. Node.js sunucumuz gönderilen iletiyi tekrar ön yüze -kullanıcıya- aktaracak. Yalnızca Ajax ve Php ile bu işi halledebilecek olmamıza rağmen sonraki projelerde de deneyim olması için Node.js’ye hafifçe dürtüyoruz.

Yapay zekanın temelini levenshtein fonksiyonu (hani şu Google’daki “Bunu mu demek istediniz?” benzerlik algoritmasının benzeri) oluşturacak. Mysql veritabanında ön tanımlı sözcüklerin metaphone olarak saklanan biçimini iletiyle karşılaştırıp uygun yanıtları rastgele (random) olarak yansıtacak. Böylece insan zekasına birazcık yaklaşabileceğiz. Ancak robotun yalnızca yapay zekasının temellerini attığımızı; tekrardan kaçınma, ayrıntılı çözümleme gibi işlevlerinin henüz eklenmediğini unutmayalım.

İlk Sohbet, İlk Heyecan

Açıklamalarıyla ekleyeceğim kodları işletip Beybut Robot ile biraz sohbet ettim. Veritabanındaki 20-30 sözcükle gayet insani bir sohbetimiz oldu.

Beybut Robot İlk Sohbet

Bu konuşmayı, veritabanında yalnızca 19 kayıt varken yapabiliyoruz.

Beybut Robot İlk Sohbet 2

Bu kadar eğlence yeter! Tekniğe dönelim…

Firewall işlevi gören, mesajları sunucuya ileten suzgec.php ile devam ediyoruz. suzgec.php’deki kodları sırayla açıklayacağım.

En tepede yer alan bu kodlar hata mesajlarının gösterilmemesini, içsel ve işlevsel kodlamanın UTF-8 ile yapılacağını belirtiyor.

Bu kod bloğu, Session yardımıyla, 1 saniyeden hızlı mesaj gönderen kullanıcıları 1 saniyeliğine durduruyor.

Ajax formdan gelen (post edilen) mesajı Mysql ile içli dışlı olmadan önce uygunlaştırıyor. Sql Injection’dan bir nebze korunuyoruz.

Mysql Yapısı ve Levenshtein Yordamı

… Gelelim asıl meseleye. Bizim açımızdan, yapay zeka dediğimiz şey, elimizdeki verileri en olası ve rastgele biçimde yansıtabilecek robotik bir yaklaşım. Bunu yaparken en az veriyle en çok olasılığı en rastgele halde aktarabilmemiz, bizi amacımıza bir adım daha yaklaştırır. Buradaki temel işlevimiz Mysql için levenshtein yordamı. Bu yordamı kullanmak için önce aşağıdaki tabloyu oluşturun (Sql sorgusu olarak Phpmyadmin’den çalıştırabilirsiniz).

Mysql için levenshtein yordamı oluşturalım. Phpmyadmin’de tablonuzu seçip Sql sorgusu olarak aşağıdaki kod bloğunu çalıştırın. Delimiter hatası verirse görmezden gelebilirsiniz.

Tekrar suzgec.php’ye dönelim. Artık veritabanı işlerini halletmenin ve yordamı kullanmanın zamanı geldi.

Yapay Zekanın Php Yüzü: Mysql Levenshtein, Metaphone, Like

Mysql bağlantısını yaptıktan sonra gelen iletiyi metaphone olarak kodluyoruz. Böylece veritabanında kayıtlı metafon alanımızda like ve levenshtein kullanarak eşleştirme yapabileceğiz.

Sorgusu aynı ve metaphone harf sayısının %50’sini alıp; benzeyen kayıtlardan rastgele birini getirmesini söylüyor. Bu oranı artırırsanız daha fazla kayıt; azaltırsanız daha az kayıt elde edersiniz. Ortalama olması için %50 belirledim.

Geliştireceğimiz yapay zeka bölümü bu kadar. Temel olması açısından, yukarıdaki sohbetleri edebilen Beybut Robot’a şimdilik bu kadar akıl yeter.

Php’den Node.js’ye: Elephant.io

Elephant.io Php içerisinden Node.js sunucusuna mesaj göndermek için hazırlanmış bir kütüphane. Github’da Elephant.io’ya erişebilirsiniz. Src klasörünü projenizin olduğu dizine gönderip aşağıdaki kodları kullanarak Php’den Node.js’ye kolayca mesaj gönderebilirsiniz.

 

Node.js sunucumuza pek bir iş bırakmadık. Mesajı alıp iletsin yeterli. Mysql’u Php içerisinde kullandığımız için Node.js sunucusuna iki satırlık kod kaldı.

Bu son kodlamayla birlikte yapay zeka projemizin temellerini atmış olduk. Artık Mysql’daki sözcük sayısını artırarak; levenshtein’ı geliştirerek… insan zekasına çok yakın bir robot üretmemiz içten bile değil. Temelini attığım bu projeyi dallandırıp budaklandırarak hayal gücümüzün sınırılarını zorlayabiliriz.

Sorularınızı yorum bölümünden iletebilirsiniz. Bu makale şimdilik yeterince uzun oldu. Bana eşlik ettiğiniz için teşekkür ederim. Görüşmek üzere…

Node İle Robot Yazılımı: İstemci ve Firewall – 1

Node.js, Socket.io, Mysql, Php ve birazcık da Ajax kullanan Beybut Robot projemi geliştirmeye devam ediyorum. Bir önceki adımda Node.js, Npm, Socket.io, Mysql kurulumlarını yapmış ve temel ayarları tamamlamıştım. Sırada, sunucuya (beybutrobot.js’ye) Php firewall aracılığı ile mesaj gönderecek istemcimizin (client’in) kodlanması var. Node.js sunucusuna istemci ve ön yüz ile direkt istekte bulunmak yerine bir geçit ve süzgeç kullanarak bu ilişkiyi kurmak istiyorum. Böylece, doğabilecek güvenlik zaafiyetlerini bir nebze aşmak; sunucunun yükünü azaltmak amacındayım. Geçitimizi Php ile kodlayacağım. Ama önce istemci Web yüzümüzün temellerini atalım.

Bir Php sayfası oluşturarak </head> kapanış etiketinden önce aşağıdaki kodları ekleyelim.

Gereksinim duyduğumuz Jquery kütüphanesini ve Socket.io’yu sayfamıza yüklemiş olduk.

İstemci sayfamıza, sunucudan gelen mesajları yansıtmak için <body>’den sonra “ekran” adlı bir div oluşturalım.

“ekran” div’i için css ve js kullanacağımızdan, şimdiden class, id ve name bilgilerini belirledim.

Tekrar </head> öncesine dönüp; sunucudan gelen iletileri bu div içerisine yansıtacak Javascript kodlarımızı buraya ekleyelim.

İleti gönderimi ve gösterimini sağlayacak form elementlerimizi oluşturalım.

“iletiniz” div’i içerisinde “iletici” input’u ve gönder butonuyla suzgec.php’ye (firewall) Ajax yardımıyla post göndereceğim. </head>’dan önce;

Js kodlarıyla verilerimizi, eğer enter tuşuna basılmışsa, suzgec.php’ye sayfayı yenilemeden gönderebiliyoruz. Ardından “iletici” inputumuzun içeriğini silip bu kutuya focuslanıyoruz.

Butonumuza basıldığında aynı işlemi yapması için, ileti gönderimi sağlayan form elementlerinden sonra aşağıdaki JS’yi ekliyoruz.

Böylece kullanıcı dilerse butona basarak da iletisini yollayabilecek. Şimdilik, ön yüzümüz tamamlandı. suzgec.php dosyamızı oluşturalım.

Artık kullanıcının yazdığı her şey #ekran div’i içerisinde gösterilecek.

Unutmadan… beybutrobot.js sunucumuzun son hali şu şekilde:

 

Beybut İlk Mesaj

Sonraki adımda Php içerisinden (suzgec.php’den), Elephant.io kullanarak sunucuya ileti göndermeyi; flood koruması eklemeyi, sansürleme işlemi yapmayı amaçlıyorum.

Node İle Robot Yazılımı: Kurulum ve Temel Ayarlar

Node.js ve Php kullanarak yapay zekaya sahip bir robot yazalım. Robotumuz gönderilen mesajları, değerlendirerek kullanıcıyla sohbet etsin. Bunun yanında belirli komutları giren ziyaretçiye veya ziyaretçinin Internet’e açık bilgilerini (public) kullanarak (Ip adresi vb.) ona yararlı dönütler verebilsin. IOS’un Siri’sine yakın, milyon dolarlık yatırım yapmadan biraz bilgi ve hayal gücüyle neler yapabileceğimize bakalım. Ancak bu projenin 0 TL. maliyetle gerçekleşmesini istediğimden sesli yanıt sistemini es geçeceğim. Tabi Google Translate projeyi görüp sponsor olursa sesli yanıt bölümünü de kolayca halledebilirim.

Başlarken

Robot projemi Ubuntu kurulu bir sunucuda geliştireceğim. Siz dilerseniz Windows’ta Node.js ve Wamp, Lamp vb. bir programla bu işlemleri gerçekleştirebilirsiniz. Projemin her adımını, kurulumundan yayınına kadar, kaynak kodlarıyla birlikte yazılım geliştiricilere armağan ediyorum. GNU lisanslı yazılımların ticari amaçlarla kullanılamayacağını (Kosgeb’den hibe almak amaçlı da olsa) lütfen unutmayalım.

  • Proje Adı: Beybut Robot
  • Proje Başlangıç Tarihi: 05.03.2015
  • Temel Gereçler: Ubuntu, Node.js, Php, Mysql, azıcık akıl, bol çay ve hayal gücü…
  • Sürüm: 1.0.0
  • Öngörülen Maliyet: 0 TL. (Sunucu, Bw masrafı gibi temel harcamalar hariç tutulmuştur.)
  • Geliştirici: Barış YEŞİLÇİMEN

NodeJs ve NPM Kurulumu (Ubuntu)

Ssh’mize girip root olarak kütüphaneleri güncelleyip Node.js’yi kuralım.

Kurulumun tamamlandığından emin olmak için aşağıdaki komutu verelim. Gelen yanıt sayısal bir sürüm çıktısıysa her şey yolunda demektir.

Nodejs sürümünü görmek için;

Npm’nin (Node Package Manager) sürekli (forever) çalışmasını sağlayalım.

Temel kurulum işlemleri bitti. Şimdi bir test scriptiyle her şeyin yolunda olup olmadığına bakma zamanı. Bir JS dosyası oluşturalım. Sunucu başladığında, ekrana aşağıdaki çıktıları basacak kodu girelim.

Bu dosyayı beybutrobot.js olarak kaydedip sunucumuza FTP’den gönderelim (sunucu üzerinde “pico” gibi bir komutla da bu dosyayı oluşturup düzenleyebilirsiniz.).

Ssh’de “cd” yardımıyla beybutrobot.js dosyasını gönderdiğimiz yere gelerek aşağıdaki komutu çalıştıralım.

Yanlış hatırlamıyorsam Windows kullanıcıları ms-dos cmd üzerinden nodejs yerine node olarak çalıştırıyorlardı.

Aşağıdaki çıktı başlangıç için her şeyin harika gittiğini gösteriyor.

Beybut Robot Başladı

Socket.io ve Nodejs için Mysql Kurulumu

Yazılımımızda veri alışverişi için socket.io’ya, Mysql işlemleri içinse Mysql tanımlamasına ihtiyaç duyuyoruz. O halde hemen kuralım.

Socket.io için;

ile kurulumu tamamlıyoruz. Ardından;

komutu Node için Mysql kullanımını aktif hale getiriyor.

Artık beybutrobot.js dosyamıza bu iki işlevi kullanacağımıza dair kodları ekleyelim.

Burada, Socket.io’nun “io” olarak tanımlandığını ve 1919 numaralı portu dinlemesi gerektiğini belirttik. Hemen altında “mysql” kullanacağız dedik. “nodejs beybutrobot.js”  komutunu işlettiğinizde karşınıza console.log içerisindeki mesaj gelmeli. Eğer bu adımda bir hata alıyorsanız socket.io ve mysql kurulumunuzu doğru yapmamış olabilirsiniz.

beybutrobot.js dosyası sunucumuz; arka planda çalışan pek zeki (şimdilik değil) robotumuzdur. Kullanıcılarımızın, sonraki adımlarda oluşturacağım, istemciye (client’e) girdiklerini beybutrobot.js yorumlayacak; onlara yanıt gönderecek.

Node İçin Mysql Bağlantısını Yapalım

Bir Mysql ve bu Mysql için kullanıcı oluşturuyorum. Kullanıcımı yetkilendirip; beybutrobot.js dosyama ilgili bilgileri giriyorum. Sunucumuzun son hali Mysql bağlantısıyla birlikte şöyle:

Böylece Mysql bağlantısını tamamladık. Js içinde Mysql sorgularını, ilerleyen adımlarda kullanacağım.

Eğer “//” ile başlayan açıklamalar girerseniz kod karmaşasından kurtulmuş olursunuz.

Başlangıç işlemlerimizi bitirdik. Sonraki adımda ön yüzü kodlamaya başlayacak; sunucu ve client yazılımı işlerini aynı anda yürüteceğiz.

İpucu: Sunucunuzda 1919 numaralı portu açmak için;

Ffmpeg’de İşlevsel Komutlar

Ffmpeg, komut ortamında video ve resim düzenleyebileceğiniz açık kaynak kodlu bir yazılımdır. Bu yazılımla, özellikle videolar üzerinde birçok işlemi gerçekleştirebilirsiniz. FFmpeg’in bu kadar ilgi görmesinin en büyük nedeni Php, Python, C# gibi dillerle komut yardımıyla video işleme yapılabilmesidir.

Günümüzde özellikle Youtube işiyle uğraşan yükleyicilerin, bot yazılımcılarının sıkça kullandığı Ffmpeg ile birkaç ay önce ben de içli dışlı oldum. Ne yazık ki Türkçe kaynakların yetersizliği, var olan Türkçe kaynakların ise kurulum ve basit kullanım örneklerinden ibaret oluşu bizleri yabancı kaynaklara yönlendiriyor. Bu amaçla gerçekten işinize yarıyacak denediğim/geliştirdiğim bazı komutları paylaşmak istiyorum.

Komutlara geçmeden önce Php aracılığıyla Ffmpeg’in nasıl kullanılacağına bir örnek verelim. Php’de Ffmpeg komutlarını kullanmak için Exec veya Shell_exec ifadeleri kullanılıyor. Ancak paylaşımlı bir hosting kullanıyorsanız çoğu sunucunun güvenlik riski nedeniyle bu fonksiyonları kapatmış olabileceğini belirtmekte yarar var.

Biçimiyle Php üzerinden Ffmpeg emirleri verebilirsiniz.

FFMpeg ile Videoları Birleştirmek

Bu komut videolar.txt içindeki videoları birleştirerek toplu.mp4 adında tek video dosyası haline getirir. Burada videolar.txt içindeki video yollarına, videolar.txt’in ve çıktı videosunun doğru yolun tanımlanmasına dikkat etmelisiniz.

FFMpeg ile Youtube Eşleşen İçerik Denetimini Atlatmak

Youtube ile uğraşanların çoğu kopyalayarak kanallarına yükledikleri videoların “eşleşen” vermesinden şikayet ederler. Bu denetimi geçmenin birden fazla yolu olmasına rağmen en kolayı basit bir frame işlemidir. Bu yolla kopya videolar “eşleşen üçüncü taraf içeriği” uyarısı vermemekte.

FFMpeg’de Video Sesini Silmek

Youtbe’un en çok sorun çıkardığı, telif haklarıyla ilgili uyarılara neden olan konusu video sesleridir. Aşağıdaki komut satırıyla videonuzdaki tüm sesi silebilirsiniz.

Charlie Chaplin olmadığınıza göre videonuzun sessizliği can sıkıcı olacaktır. O halde şimdi videoya bir ses ekleyelim.

FFMpeg’de Videoya Ses Eklemek

Bu komut, videonuza ilgili sesi montajlar. Mp3 süresinin videodan uzunluğunu gözardı eder. Başka bir ifadeyle aslolan videodur.

FFMpeg ile Videoya Logo (Watermark) Basmak

Son olarak videomuzun üzerine logomuzu basalım. Bunun için transparan bir PNG tercih edebilirsiniz. Örnekte X ekseninin tepe noktasına 10 pixel, Y ekseninin tepe noktasına da 10 pixel uzaklıkta bir logo basıyoruz. Bu da yaklaşık sağ üst köşe oluyor.

 

Tüm Ffmpeg komutları için dikkat etmeniz gereken en önemli nokta, dosya yollarıdır. Komutların tümünün çalışabilirliği tarafımca denendi.