Debian Sunucularda Mysql’e Uzaktan Erişim Sağlama

Standard

Merhaba;

Sunucumuzun veritabanını elbette uzaktan kontrol etmek isteriz, bunu sağlamak için de Datagrip gibi programlar vasıtasıyla uzaktaki sunucumuzun veritabanına bağlanmamız gerekir. Sunucularda bu özellik varsayılan olarak kapalıdır ve açılması gerekir. Gelelim nasıl açacağımıza;

Önce mysql ayarlarından bunu sağlamak için dış IP’leri açalım, /etc/mysql/my.cnf dosyasına girip,

1
 <span class="pln">bind-address  </span><span class="pun">=</span> <span class="lit">127.0.0.1</span>

kısmını yorum satırı haline getirin (başına # koyun), böylece dış ip’lerde dinleniyor olacak.

Şimdi de mysql’e “dışarıdan girişlere izin ver” demek için şunları yapalım;

$ mysql -u root -p #Mysql baglantisini root olarak actik
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' identified by 'root_sifrenizi_yazin';FLUSH PRIVILEGES;

Mysql servisini yeniden başlatalım;

sudo service mysql restart

Böylece uzaktan root olarak sunucunuzun database’ine erişebilir oldunuz 🙂banner

Python/Scrapy ile Veri Kazımak (teşekkürler Türkçe!)

Standard

Merhaba;

Son birkaç gündür Scrapy adında mottosu “hızlı, basit geliştirmeye elverişli” olan bir data kazıma framework’ü ile tanıştım. Gugıl ve Ecosia amcada aratmama rağmen hiç Türkçe döküman bulamayınca içime öküz oturuverdi. Ben de birkaç günlük dahi olsa Türkçe olarak bu framework hakkında birşeyler yazmak istedim.

Öncelikle Scrapy bir python framework’u, yaptığı şey sizin gireceğiniz kurallara göre siteyi parçalara ayırıp, sitenin içerisindeki bilgileri size sunmakta. Sitenin içerisinden aldığınız bilgiler ile ne yapacağınız ise size kalmış bir durum. Günümüzde big data kavramınının iyice yaygınlaşması ile beraber Scrapy kesinlikle bu iş için biçilmiş kaftan.

Peki Scrapy ile örnek bir site parse etmek istesek?

Öncelikle Scrapy’ı bilgisayarınıza kurmalısınız, windows’ta nasıl yapılıyor bilmiyorum, eğer windows üzerinde python geliştiriyorsanız STFW 🙂

Apt-get paketli yöneticilerde (debian, ubuntu, mint gibi) ise yapmanız gereken gayet basit, “pip” yani “Python İnstalling Packages” aracı ile şu komutu vermeniz yeterli :

pip install Scrapy

Eğer pip yoksa sorun değil, pipsiz kurulum;

sudo apt-get install python-scrapy

Eğer Arch linux’a kuracaksanız;

yaourt -S scrapy

Daha detaylı kurulum bilgisi için;
http://doc.scrapy.org/en/1.1/intro/install.html

Bu kadar kurulum hikayesinden sonra, gelelim basit bir örümcek oluşturup site crawl etmeye. Aslında kendi sitemi crawl ederek örneklendirmeyi düşündüm başta ancak, yerimde duramayan biri olarak yarın sitenin şemasını değiştirdiğimde anlatıma yazık olacağından direk sitesindeki tutorial’i Türkçeleştirip kendi eklemelerimle anlatacağım;

Öncelikle konsoldan “scrapy” komutu verirseniz Scrapy size neler yapabileceğini söyler;

Scrapy 1.1.2 - no active project

Usage:
  scrapy <command> [options] [args]

Available commands:
  bench         Run quick benchmark test
  commands      
  fetch         Fetch a URL using the Scrapy downloader
  genspider     Generate new spider using pre-defined templates
  runspider     Run a self-contained spider (without creating a project)
  settings      Get settings values
  shell         Interactive scraping console
  startproject  Create new project
  version       Print Scrapy version
  view          Open URL in browser, as seen by Scrapy

  [ more ]      More commands available when run from project directory

Use "scrapy <command> -h" to see more info about a command

İlk satırda eğer aktif bir scrapy projesi içerisinde iseniz size projeyi yazacaktır, çünkü scrapy’daki kimi komutlar proje bağımlıdırlar, yani proje içerisinde değilseniz çalıştırmanız mümkün olmayacaktır. (mesela crawl gibi, değineceğiz…)

İlk önce projemizin temel yapısını oluşturarak başlayalım, konsoldan scrapy projesini açacağınız dizine girdikten sonra;

$ scrapy startproject tutorial

Komutu verdikten sonra şöyle bir çıktı alacaksınız;

New Scrapy project 'tutorial', using template directory '/usr/local/lib/python2.7/dist-packages/scrapy/templates/project', created in:
    /home/sezer/Ornek/tutorial

You can start your first spider with:
    cd tutorial
    scrapy genspider example example.com

Mealen diyor ki, istediğin Scrapy iskeletini falanca dizini örnek alarak /home/sezer/Ornek/tutorial dizini altında oluşturdum, dizine girerek ilk denemeni yapabilirsin, bunun için de gerekli satırlar filanca…

İskeletin içeriğini incelersek;

tutorial/
    scrapy.cfg            # Scrapy'nin konfigürasyon dosyaları

    tutorial/             # Scrapy ana dizini, proejenız burada
        __init__.py

        items.py          # Projede tutacağınız veri iskeleti burada

        pipelines.py      # Pipeline ile çekeceğiniz kurallar burada

        settings.py       # Projenin konfigürasyon dosyaları burada

        spiders/          # Yazdığınız/yazacağınız spiderlar burada
            __init__.py
            ...

Scrapy yapı olarak OOP bir teknolojiye sahip, Türkçe tabirle “nesne tabanlı bir framework” (olduğu kadar türkçe 🙂 )

Yani bol bol kalıtım ve bol bol metod var işin içinde. Öncelikle kazıyacağımız verileri içerisinde tutmak için bir class oluşturacağız, Scrapy veriyi kazıdıkça bunun içerisinde sözlük olarak tutacak. Ne demiştik ? items.py altında veri iskeletini tutacağız…

Giriyoruz items.py’a ve şöyle bir class oluşturuyoruz;

import scrapy

class DmozItem(scrapy.Item): # Scrapy'in Item'ından türettik
    baslik = scrapy.Field() # sitenin basligi tutacagimiz scrapy degiskeni
    link = scrapy.Field() # sitenin linkini tutacagimiz scrapy degiskeni
    icerik = scrapy.Field() # sitenin icerigini tutacagimiz scrapy degiskeni

Farkettiyseniz “Item” class’ından bir class kalıtım alarak türetmiş olduk. temel class’ımıza 3 değişken daha ekledik ve kendimize özgü class’ımızı oluşturmuş olduk.

Şimdi gelelim örümceğimizi yazmaya, şimdi de ”

1
<span class="pre">tutorial/spiders</span>

” dizinine gidiyoruz ve dmoz_spider.py adında bir python dosyası oluşturuyoruz, içerisine de örümceğimizin özelliklerini yazıyoruz;

import scrapy

from tutorial.items import DmozItem

class DmozSpider(scrapy.Spider):
    name = "dmoz"
    allowed_domains = ["dmoz.org"]
    start_urls = [
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
    ]

    def parse(self, response):
        for sel in response.xpath('//ul/li'):
            item = DmozItem()
            item['title'] = sel.xpath('a/text()').extract()
            item['link'] = sel.xpath('a/@href').extract()
            item['desc'] = sel.xpath('text()').extract()
            yield item
 

Kodda her ne kadar aşikar olsa da açıklamak adına bir daha kodu inceleyelim, class’ı Scrapy’ın spider class’ından kalıtım aldık. Bu class’ın özelliği, parse adında bir metodu zorunlu olarak tanımlamamız gerektiği, çünkü site kazındıktan sonra alınan veri buraya koyulmakta. Önce yukarıda oluşturduğumuz DmozItem adındaki class’I py dosyamıza dahil ettik, ardından hangi siteyi kazıyacağımıza Scrapy’a söyledik, sonra da “xpath” ile içerisinden çekeceğimiz kısımları seçtik. Xpath’in ne olduğuna zamanım olduğunda bir başka makalede değineceğim, bir cümle ile açıklamak gerekirse “Bir html sayfanın istenilen kısmını almayı sağlayan yapı” olarak tanımlarsam çok da yanlış konuşmuş olmam. Son kısımda da yield diye bir anahtar kelime ile bu nesneyi pipeline’a gönderdik.

Şimdi kodumuzu çalıştırmaya geldi sıra, bir çıktı olarak kodu elde etmek için şimdilik en basit yöntemi kullanacağız;

scrapy crawl dmoz -o veri.json

Kodu çalıştırıyoruz ve ta taaa, sitenin içeriği bir json dosyası içerisine aktarılmış durumda !

Elbette bu scrapy için ancak basit bir giriş anlatımı, ilerleyen zamanlarda vakit buldukça genişletmeye çalışacağım, ancak kısaca Scrapy böyle bir framework. Tutorial’in orjinali için;

http://doc.scrapy.org/en/1.1/intro/tutorial.html

İyi çalışmalar 🙂

banner

Arama Yaptıkça Ağaç Diken Arama Motoru “Ecosia”

Standard

Merhaba;

Bir süre önce Ecosia diye bir başlık görmüştüm sözlüklerin birinde. Bir grup yeşili seven bilgisayarcı ekibi şöyle bir fikir ortaya koyuyor, “google reklamlarından ve arama istatistiklerinden para kazanılabiliyor, madem öyle bir tarayıcı yapalım, google’ın reklam ve istatistik gelirlerini bu tarayıcı üzerinden sağlayalım, gelirin %80’iyle ağaç dikelim, %20’sini de aramızda kırışalım.” ardından bu fikir uygulamaya geçiyor ve ortaya Ecosia çıkıyor.

 

Arama motoru üzerinde kaç ağacın dikilmesine katkıda bulunduğunuzu gösteren bir sayaç da mevcut. Yaptığınız arama başına uygulama diğer kullanıcılarla ortaklaşa kaç ağaç diktiğinizi söylüyor. Üstelik arama için direk google’ın sonuçlarını da önünüze getirebiliyor, ayarlardan bunu da sağlayabiliyorsunuz. Yani arayüz ecoisa.org’dan, içerik google’dan olmuş oluyor. Bence doğa için bu kadarını yapmaya değer. Buyrun linki;

http://www.ecosia.org

Kendileri hakkında daha detaylı malumat için;

https://info.ecosia.org/about

Ayrıca sözlüklerde daha detaylı açıklamaları olduğu için fazla da yazma gereksinimi duymadım. Direk buyrun linki;

https://eksisozluk.com/ecosia–2403802

Oturduğumuz yerden doğaya katkıda bulunabiliyorsak neden yapmayalım ki? banner

 

 

Linux Yaz Kampı Php Sınıfı Alet Çantası

Standard

Merhaba;

linux kampında sadece hafta sonu olmam nedeniyle, sıkıntı olabilecek yerlere dair bir alet çantası hazırlayayım istedim. Sıkıntı olan yerlerde amacım sorunların olası çözümlerini burada barındırmak.

Sanal makineye ubuntu kuracağım, nasıl kurabilirim?

Sizlere ubuntu mate kurulumu yaptık, dolayısıyla burada yaptığım anlatımın ilk kısmında ISO indirme kısmında, siz buradaki(tıkla) ISO kalıbını kullanın. Seçenekler arasından 64-32 bit seçimini yaptıktan sonra “Via Direct Download” altındaki linkten indirme yapınız, torrent ile indirmeyiniz, torrent portları kapalıdır. Onun dışındaki anlatım aşağıdaki linktedir;

Virtual Box Üzerinde Ubuntu Kurulumu ve Ekran Sorunun Giderilmesi

GNU/Linux’umu nasıl güncelleyebilirim?

Önce depolarımızı güncelleyelim;

sudo apt-get update

Sistemdeki güncel olmayan programlarımızı güncelleyelim;

sudo apt-get upgrade

Güncelleme tamamlanmıştır.

GNU/Linux’uma nasıl xampp kurabilirim?

Konsoldan önce xampp’i indirin;

wget https://www.apachefriends.org/xampp-files/5.6.23/xampp-linux-x64-5.6.23-0-installer.run

Eğer indirme sırasında hata alırsanız, bu şekilde indirmeyi deneyin;

wget https://www.apachefriends.org/xampp-files/5.6.23/xampp-linux-x64-5.6.23-0-installer.run --no-check-certificate

İndirme işlemi tamamlandıktan sonra;

sudo chmox +x xampp-linux-x64-5.6.23-0-installer.run
sudo ./xampp-linux-x64-5.6.23-0-installer.run

Kurulumu tamamlanmıştır.

XAMPP kurdum ama nasıl çalıştıracağım?

Konsola girip;

sudo /opt/lampp/lampp start

Ardından şu yazıyı görmelisiniz;

[email protected]:~$ sudo /opt/lampp/lampp start
Starting XAMPP for Linux 5.6.23-0...
XAMPP: Starting Apache...ok.
XAMPP: Starting MySQL...ok.
XAMPP: Starting ProFTPD...ok.

Bilgisayarımda PHP/HTML sayfamı nasıl çalıştıracağım?

Xampp’in olduğu dizin altında htdocs(geldiğimde daha detaylı anlatacağım) klasörü, sunucunun dışarıya açılan kapısıdır. Bu dosyaya masaüstüne kısayol oluşturacak şekilde anlatımını yapacağım;

Kurulumu ingilizce yapanlar için;

ln -s /opt/lampp/htdocs/ /home/KULLANICI_ADINIZ/Desktop/htdocs
sudo chmod 777 /opt/lampp/htdocs

Kurulumu türkçe yapanlar için;

ln -s /opt/lampp/htdocs/ /home/KULLANICI_ADINIZ/Masaüstü/htdocs
sudo chmod 777 /opt/lampp/htdocs

Bu 2 komutu sırayla çalıştırdıktan sonra, bu dizin altındaki tüm dosyaları siliniz. Uğur hocanızın sizden yapmanızı istediği ödevleri bu klasör altında yaparsanız, web tarayıcınızdan ;

http://localhost/

şeklinde girerseniz o dizin altında bulunan sayfalarınızı görüntüleyebilirsiniz.

Sanalda linux kullanıyorum, ekran kuş kadar gözüküyor, nasıl büyütebilirim?

virtualbox panelinde, aygıtlar > misafir eklenti CD kalıbını yerleştir’e tıklayın, ubuntu’da kendiliğinden çalışma isteğini kabul edin. Sanal makinenizi yeniden başlattığınızda sorun çözülecektir. Eğer çözülmez ise arama kısmından display/ekran yazarak görüntü çözünürlüğünüzü yükseltebilirsiniz. Eğer bu CD’yi yerleştirmezseniz, bilgisayarınızın özgün çözünürlüğüne ulaşamayabilirsiniz.

Uğur hoca Github Sablaym text diye birşey kullanıyor ve efsane gözüküyor, bunu nasıl kurabilirim?

1
2
3
sudo add-apt-repository ppa:webupd8team/sublime-text-3
sudo apt-get update
sudo apt-get install sublime-text-installer

Komutlarını sırayla uygularsanız Sublime text kurulur, Menu kısmından ulaşabilirsiniz.

Bilgisayarım Aşırı ısınmakta, neden böyle oluyor olabilir?
Not:
Sanal’a kurulum yapanlar için böyle bir olasılık söz konusu değildir.

Laptoplarınıza ancak ubuntu-mate kuracak kadar vaktim oldu. Bilgisayarlarınızda 2 ekran kartı varsa, bunların konfigürasyonunun doğru şekilde yapılması gerekiyor, aksi halde ekran kartınız devamlı çalıştığından, makine sıcaklığınız artıyor. Konu hakkında detaylı bilgiyi geldiğimde anlatırım (hatırlatınız 🙂 ) . Yapmanız gereken;

Konsola giriniz;

lspci | grep VGA

yazdığınızda karşınıza bu çıkıyorsa;

1
2
3
4
5
00:02.0 VGA compatible controller [0300]: Intel Corporation Broadwell-U Integrated Graphics [8086:1616] (rev 09)
    Subsystem: ASUSTeK Computer Inc. Device [1043:1a6d]
    Kernel driver in use: i915
--
04:00.0 3D controller [0302]: NVIDIA Corporation GM108M [GeForce 940M] [10de:1347] (rev ff)

2 ekran kartınız var demektir, bu tarz birşey çıktıysa;

00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)

tek ekran kartınız var demektir ve kurulum yapmanıza gerek yoktur.

Kurulum yapacak arkadaşlar, önce sistemlerini güncellesinler (bknz: gnu/linux’umu nasıl güncellerim?) ardından menüden, System > Preferences > Hardware > Additional Device kısmına tıklayınız. Orada Nvidia ekran kartınızın ismini ve altında driver’ını göreceksiniz, parantez içerisinde “tested” yazanı tıklayınız(muhtemelen en üstteki), “Apply Changes” diyip bekleyiniz, yalnız butona birden fazla kere basmayın, internetinizin ve şarjınızın olduğundan emin olun, eğer bu yükleme yarıda kesilirse uğraşmanız gerekir. Yükleme barı dolduktan sonra, işletim sistemini yeniden başlatınız, sağ üstte NVIDIA ya da intel simgesini göreceksiniz, intel simgesi olduğu sürece intel ekran kartınız, NVIDIA olduğu sürece nvidia ekran kartınız devrede olacaktır. NVIDIA aktif kaldığı sürece bilgisayarınızın sıcaklığı yüksek olacaktır. Buraya tıklayıp, ekran kartınızı değiştirdiğiniz de oturumdan çıkıp tekrar giriş yapmanız ya da bilgisayarınızı yeniden başlatmanız gerekmektedir.

Ekstra sorularınız oldukça [email protected] adresine mail atarsanız, soruları bu başlık altına ekleyerek yanıtlayacağım.

banner

 

 

Linux Yaz Kampı 2016

Standard

Merhaba;

Her yıl düzenlenen (artık) geleneksel (diyebileceğimiz) “Linux Yaz Kampı”nın 2016 yılı etkinliğinde PHP sınıfında eğitmen olarak bulunmaktayım. Bu güzel atmosfere dair birşeyler yazıp etkinliği bilmeyen veya katılmamış insanlara bir nefeslik bile olabilse bu etkinliği anlatmak istedim.

Öncelikle Bu sene eğitmen olarak katılmam dolayısıyla işin mutfağına girmiş oldum. Daha önce 2 kere farklı eğitimlerine (PHP ve Linux Sistem Yönetimi 1) öğrenci olarak katılıp, hocalara inatla soru soran, yer yer bıktıran öğrenci profilinden birşeylere yardımcı olmaya çalışmak adına çırpınan eğitmen profiline evrildim 🙂

Şunu gördüm ki öncelikle mutfakta gerçekten hummalı bir çalışma var. Buraya gelen eğitmenler, öğrenciler geldiğinde “acaba eğitimi nasıl verirsek gelen kişiler daha performanslı şekilde öğrenirler?” sorusundan tutun da “canları Iced Chocolate Mocha” çekerse bunu nasıl temin edebiliriz?” sorusuna kadar her ayrıntı için çaba sarfetmekteler. Gelen yüzlerce yeni kişi o heyecanla çevrede gezinirken, ortalıkta bir karmaşa olmadan herkesi doğru yöne yönlendirilip, insanları koordine etmenin nasıl ciddi bir iş olduğunu da bu sayede görmüş oldum.

 

Benim bu kampın sevenlerinden olmanın aslında temel nedeni, gelen insanların -gerçekten- bu eğitimler için hem eğitmenler hem de öğrenciler açısından büyük efor gerektirmesi. Bu sebepten de elbette gelen herkesin gözleri parıl parıl ve herkes tam motive şekilde. Banklarda oturmuş linux üzerine sohbet eden insanlar, bir köşede çayını/kahvesini içerken bu konuda gelişmeleri aktaran bilgili kişiler, bir başka köşede artık bu işde ekol kabul edilmiş hocaların (bknz:Engür Hoca ile Korsan Eğitim Saatleri) inanılmaz lezzetli sohbetleri ile burası tam bir teknoloji çılgınlarının buluşma mekanı olmuş durumda. Yani buraya geldiğiniz zaman “zil çaldı, hadi mola verelim” “zil çaldı hadi derse” modunda bir ortam yok, hiçbir zaman da olmadı da. Daha çok “merhaba ben … şuradan geliyorum, … yerinde çalışıyorum, … eğitimindeyim, siz hangi eğitimdesiniz şu an ?” şeklinde başlayan sohbetler buranın asıl tadını oluşturmakta. Bu sohbetler sayesinde birçok yeni insan birbiriyle tanışıyor, fikir alışverişinde bulunuyor, kamp bittiğinde irtibatını koparmayıp kendini geliştiriyor.

Tüm bunların yanında kesinlikle çılgınlar gibi bir bilgi aktarımı da söz konusu. Sabah 9.30 da başlayıp, 21.30’a kadar öğlen ve akşam araları ile eğitimler sürmekte. Herkes harıl harıl birçok alanda ufuklarını genişletmekte.

 

Kamp ile alakalı izlenimlerimi bu başlık altından sürdürmeyi planlıyorum, imkanım olursa belki birkaç anlatım bile ekleyebilirim, kısacası eğer yılın bu zamanında sıcaktan bunalmışsanız, bilgisayar konusunda hevesliyseniz ve ayırabileceğiniz 15 gününüz var ise, LYK kesinlikle çok faydalı ve eğlenceli bir seçenek olacaktır 🙂

Unutmayın, bilgi paylaştıkça çoğalır…

banner

 

Debian Linux’da SSH üzerinden root olarak Bağlanma

Standard

Merhaba;

Kullanılan sunularda güvenlik nedeniyle varsayılan olarak root olarak direk ssh bağlantısı kapalı durumda oluyor. Ben de her seferinde önce kullanıcı olarak girip ardından root’a yükseliyorum ancak lokal de çalışırken bu koruma gereksiz olacağından bunu deaktif hale getirebiliriz.

Bunun için ssh’ın konfürasyon dosyasını(

1
/etc/ssh/sshd_config

) açıp “PermitRootLogin” kısmını bulunuz, o kısımdan sonrasını silin yes olarak değiştiriniz;

Önceki hali:
PermitRootLogin without-password
düzeltilmiş hali:
PermitRootLogin yes

Ardından ssh servisini yeniden başlatınız;

 # service ssh restart

ya da

/etc/init.d/ssh restart

İşte bu kadar 🙂