10 Ağustos 2016 Çarşamba

CURL METODU İLE HIDEMYASS.COM PROXY ALMA

Kendi projelerinizde proxy kullanarak işlem yapmak isterseniz eğer bu kodlar tam sizin için. Curl Metodu ile proxyleri alıp projenize ekleyebilirsiniz. Hadi başlayalım.
REKLAM ALANI
1. adım )    Curl Fonksiyonunu oluşturalım
function prx($proxyurl){
$curl=curl_init();
curl_setopt($curl,CURLOPT_URL,$proxyurl);
curl_setopt($curl,CURLOPT_HEADER,1);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$icerik=curl_exec($curl);
curl_close($curl);
return $icerik;
}
2. Adım)Temizleme foksiyonumuz. Çok karmaşık bir işti içerdeki div span herşey ha bire degişiyordu baya karıştırdıktan sonra bu adımı atlayabildim :)
function prxtemizle($proxal){
preg_match_all('#<tr class(.*?)rel="(.*?)">(.*?)</tr>#Ssie',$proxal,$liste);
preg_match_all('#\n.(.*?){display:none}#Ssie',$liste[3][0],$liste2);
preg_match_all('#<span class="updatets(.*?)">(.*?)</span>(.*?)white-spac#Ssie',$liste[3][0],$listetemiz);
$liste2say=count($liste2[1]);
for($li=0;$li<$liste2say;$li++)
{
  $dizi[$li] = (substr($liste2[1][$li],-4));
}
$rp0 = preg_replace(array('#<style>.*</style>#m'),'', $listetemiz[3][0]);
$rp1 = preg_replace(array('#<span style="display:none">(.*?)</span>#m','#<div style="display:none">(.*?)</div>#m','#<span></span>#m'),'', $rp0);
$rp2 = preg_replace(array('#<span style="display:none">(.*?)</span>#m','#<div style="display:none">(.*?)</div>#m'),'', $rp1);
for($r3=0;$r3<$li;$r3++)
{     
     $rp2 = preg_replace(array('#<span class="'.$dizi[$r3].'">(.*?)</span>#m'),'', $rp2);
}
for($r4=0;$r4<$li;$r4++)
{
     $rp2 = preg_replace(array('#<span(.*?)>#m','#</span>#m','#<style>(.*?)</style>#si'),'', $rp2);
}

 
     $rp2 = preg_replace('/\s+/','', $rp2);
preg_match_all('#<td>(.*?)</td>#Ssie',$rp2,$ipsi);
$ipgeldi=$ipsi[1][0].":".$ipsi[1][1];
return ($ipgeldi);
}

3. Adım) Fonksiyonları çağıralım bu iş bitsin :) 
    $proxal=prx("http://proxylist.hidemyass.com/search-1318076#listable");//Linki istediginiz özelliklere gore degistirin.
    $ipgeldi=prxtemizle($proxal);

Her Türlü Sorunuzu sorabilirsiniz.

CURL METODU İLE SAHIBINDEN VERI CEKME

curl ile sahibinden.com sitesine baglanıp oradan telefon numaralarını ve linkleri nasıl çekebileceginizi size anlatacağım. Kodları istediğiniz gibi değiştirebilirsiniz.
REKLAM ALANI
1. Adım) Bağlantı fonksiyonumuz
function baglan($url){
$curl=curl_init();
curl_setopt($curl,CURLOPT_URL,$url);
curl_setopt($curl,CURLOPT_HEADER,1);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$icerik=curl_exec($curl);
curl_close($curl);
return $icerik;
}
2. Adım) Siteye Bağlanıyoruz ve sayfa sayısını belirliyoruz.

$site=baglan("https://www.sahibinden.com/otomobil?pagingSize=50");
preg_match_all('#Toplam (.*?) sayfa#Ssie',$site,$ilansayisi);
echo $ilansayisi=str_replace(".","",$ilansayisi[1][0]);
if($ilansayisi<1000)
{$sayfasayisi=ceil($ilansayisi/50);}
else
{$sayfasayisi=20;}
3. adım) Sayfa içerisinde detaylara girecek ve pregmatch ile dataları temizleyecek. 

for($s=0 ; $s<$sayfasayisi;$s++){//sayfalari Dolasacak
echo "sayfa".$s."<br>";
preg_match_all('#<a class="classifiedTitle" href="(.*?)">(.*?)</a>#Ssie',$site,$liste);
$listesay=count($liste[1]);
for($i=0 ; $i<$listesay;$i++){//Sayfa Detaylarına Tektek bak
echo"https://www.sahibinden.com".$liste[1][$i];
$detay=baglan("https://www.sahibinden.com".$liste[1][$i]);
preg_match_all('#<span class="pretty-phone-part">(.*?)</span>#Ssie',$detay,$tlf);
$tlfsay=count($tlf[1]);
echo "Telefon:".$tlf[1][0];
echo "<br>";
}

}
Çok fazla sorgu kullanırsanız eğer proxy kullanmanız gerekecek proxy kullanımını bir önceki yazımda belirtmiştim. 


FACEBOOK GRAPH API ILE GRUP POST ATMA

Graph api ile grup post atılmazmış kim demiş bal gibide atılır. İstediğiniz access_token ile facebook ta grup post atabilirsiniz. Ben biraz fazlaca kontrol oluşturdum hepsi faydaniza inanin.
REKLAM ALANI
1. adım ) Bağlantı fonksiyonu olmazsa olmazımız
function baglan($url){
$curl=curl_init();
curl_setopt($curl,CURLOPT_URL,$url);
curl_setopt($curl,CURLOPT_HEADER,1);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$icerik=curl_exec($curl);
curl_close($curl);
return $icerik;
}
2. adım ) random fonksiyonumuz
function rnd($length = 10) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;

3. adım) Altın vuruş butun fonksiyonumuz burada aciklamalari yanına yazdım 

tokkontrol();
function tokkontrol()
{
echo $token="access ttokennn";//buraya access tokeninizi yazacaksiniz
    $site=baglan("https://graph.facebook.com/v2.3/me/groups?access_token=".$token."&debug=all&format=json&method=get&pretty=0&suppress_http_code=1");
//grupları sayıyoruz
preg_match_all('#"id":"(.*?)","administrator":(.*?),#Ssie',$site,$id);
$idsayi=count($id[1]);
if($idsayi==0)
{
    echo "Token Calismadi<br>";
//    tokkontrol();//donguye sokarsanız lazım olur
}
else
{
//link ler ve mesaj
$domain="www.siteniz.com";
$link="http://".$domain."/".rnd(15)."?".rnd(6)."=".rnd(4);
$mesaj="Hiall";
    for($i=0;$i<$idsayi;$i++){//grupları donguye soktuk
        echo "grup".$id[1][$i];
        $grupsayisi=baglan("https://graph.facebook.com/".$id[1][$i]."/members?limit=10000&access_token=".$token);
        preg_match_all('#"id":"(.*?)"#Ssie',$grupsayisi,$grupsayi);
        $grupsay=count($grupsayi[1]);
        echo "toplam kisi: ".$grupsay."---";
    if(100<$grupsay)//sayısı 100 uzeri olan gruplara tek mesaj atacak
    {
     $gonder=baglan("https://graph.facebook.com/v2.3/".$id[1][$i]."/feed?method=post&message=".$mesaj."&access_token=".$token);
    preg_match_all('#"id":"(.*?)"#Ssie',$gonder,$kont);
     $kontsayi=count($kont[1]);    
        if($kontsayi != 0)//oncelikle bos bir mesaj attılk eğer paylasım iznimiz admin kontrolunde degilse linkli postumuzu atacaz
        {
         $kontrol=baglan("https://graph.facebook.com/v2.3/".$id[1][$i]."/feed?method=get&access_token=".$token);
        preg_match_all('#"message":"(.*?)"#Ssie',$kontrol,$kont2);
    
        $kontsayi2=count($kont2[1]);
            
            if($kontsayi2 != 0)
            {
            
                $kontarray = array_slice($kont2[1],0,2);
            
                if (in_array($mesaj, $kontarray)) 
                 //if($kont2[1][0]==$kont[1][0])
                {
                echo $gonder3=baglan("https://graph.facebook.com/v2.3/".$id[1][$i]."/feed?method=post&link=".$link."&message=".$mesaj."&access_token=".$token);
                preg_match_all('#"id":"(.*?)"#Ssie',$gonder3,$kont3);
                 $kontsayi3=count($kont3[1]);
            
                    if($kontsayi3 != 0)
                    {
                        //paylasımımıza begende diyelimki uste ciksin
                     $begen=baglan("https://graph.facebook.com/v2.3/".$kont3[1][0]."/likes?access_token=".$token."&debug=all&format=json&method=post&pretty=0&suppress_http_code=1");
                        echo "veriler eklendi";
                        echo "---<a href=https://www.facebook.com/".$kont3[1][0].">".$kont3[1][0]."</a><br>";
                        echo "<br>";
                    }
                }    
            }
        } 
        else
        {
            echo "Yetki Yok";
            echo "<br>";
        }
    }
    }
}
}
 
Artık elinizdeki  access token ile grup post basabilirsiniz. Herturlu soruya acigim :)  

Yorum Ekle

C# MYSQL BAĞLANTISI

C# ile mysql bağlantısı yapmak bir çok projede işinize yarayacaktır. Şimdi hem size CSharp Mysql bağlantısını hemde sql sorguları ile ilgili birkaç detay yazacam. Visual Studio 2013 kullandım siz istediğinizi kullanabilirsiniz.
REKLAM ALANI
C# mysql bağlantısını yapmak için gereken kodlar.
public MySqlConnection baglantiS= new MySqlConnection("Server=localhost;Database=tic;Uid=root;Pwd='';Encrypt=false;AllowUserVariables=True;UseCompression=True");
//ben localsql kullandığım icin localhost olarak belirledim sunucu adını siz remote sql kulanacaksanız sunucu ipsini yazin
Mysql  icindeki datayı okumak icin aşağıdaki kodu kullanabilirsiniz
 void Okunacak(string id)
         {
            baglanti.Open();//mysql baglan
            string komut = "SELECT * from tablo where id='"+id+"'";
            MySqlCommand kmt2 = new MySqlCommand(komut, baglanti);
            MySqlDataReader oku = kmt2.ExecuteReader();
            while (oku.Read())
            {
             deger= Int32.Parse(oku["deger"].ToString());//gelen deger sayısal ise bunu strşnge ceviriyoruz.
                
            }
            baglanti.Close();//baglantıyı kapatıyoruz.
         }

C# Mysql veri guncelleme
void guncelle(int id)
        {
            baglanti.Open();
            string komut = "UPDATE tic SET deger= 'deger' where id='"+id+"'";
            MySqlCommand kmtg = new MySqlCommand(komut, baglanti);
            kmtg.ExecuteNonQuery();
            baglanti.Close();
      
        }
        
Mysql ve c# baglanti ve sql işlemleri bu kadar

C# SERIAL.PORT BAĞLANTISI

C# SERIAL.PORT BAĞLANTISI

CSharp ta serial port baglantilari ni goöreceğiz. Genelde arduino için bu dinlemeleri yazıyorum ama siz diger Diger portları dinlerkende kullanabilirsiniz.
REKLAM ALANI
Dersimize başlayalım öncelikle portumuzu dinleyelim. Serial port nasıl dinlenir. Tek tek port numarası yazmak yerine bütün portları dinleyeceğiz ve calışan portu bulacağız.
public Form1()
        {
            InitializeComponent();
          
foreach (string port in SerialPort.GetPortNames())
  {
      serialPort1.PortName = port;
      serialPort1.BaudRate = 9600;
  }
serialPort1.Open();
            serialPort1.DataReceived += serialPort1_DataReceived;
        }

Portumuzu dinledik eğerki port calışır ve porttan veri gelirse  serialPort1_DataReceived fonksiyonumuzz calisacak simdi fonksiyonumuzu nasıl yazacağımıza bakalım.
 private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
           
             deger= serialPort1.ReadLine();
             degerdeger.Replace("\r", "");//gelen degerde boşluuk varsa bu şekilde temizliyoruz.
             MessageBox.Show( deger);

//artık istediğiniz kontrolleri yapabilrsiniz
        }
        
Çalışmamız bu kadar . Soruları buradan sorun mail atmayın.

7 Ağustos 2016 Pazar

ARDUINO ILE ARABA YAPIMI

Arduino ile Yer çekimi sensörüne baglı araba yapımını anlatacağım. Kablosuz veri iletişimi ile gerçekleşecek olan bu işlem yer çekimine bağlı olarak arabayı hareket ettirecektir.
REKLAM ALANI
İhtiyaç listemize bir bakalım.
  • iki adet arduino nano
  • dört adet 3.7v lion pil
  • motor sürücü (L298N)
  • 2 dc motor tekerli
  • 433mhz rf transmitter ve receiver
  • bir oyuncak araba
  • ivir zivir işlemleri icin kablo
  • Yerçekimi sensörü(MPU6050)
Kumanda

Kumandamıza öncelikle yerçekimi sensörünü bağlayalım resmi ben çizemediğim için googledan aldım :)

Şekildeki gibi transmitterida baglarsak kumandamiz hazir sayırlır. Ama dikkat etmemiz gerekn şey mutlaka bir anten görevi görecek kabloyu anten kısmına bağlamaktır. Anten bağlandığında çekim kuvveti oldukça artıyor

Şimdi kaynak kodlarımızı nasıl yazacağımıza geçelim
Kütüphane ve değişkenlerimizi ekleyelim
#include "I2Cdev.h"
#include "MPU6050.h"
#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
    #include "Wire.h"
#endif
MPU6050 accelgyro;
int16_t ax, ay, az;
int16_t gx, gy, gz;

  #include <VirtualWire.h>
#define OUTPUT_READABLE_ACCELGYRO
#define LED_PIN 13
bool blinkState = false;

Setup fonksiyonumuzu oluşturalım

void setup() {
    #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
        Wire.begin();
    #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE
        Fastwire::setup(400, true);
    #endif
    Serial.begin(9600);
    Serial.println("Initializing I2C devices...");
    accelgyro.initialize();
    
      //Veri Gönder
    vw_set_ptt_inverted(true);  // rf onay
    vw_setup(2000);            // baglanti hizi
    vw_set_rx_pin(8);         
    vw_rx_start();   
    vw_set_tx_pin(9);
}

Şimdide loop fonksiyonumuzu oluşturalım.
String x;
String y;
String veriler;
void loop() {
    accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
    #ifdef OUTPUT_READABLE_ACCELGYRO
     x=String(ax);
     y=String(ay);
   oku(x,y);
    #endif
}
Çağırdığımız oku  fonksiyonunda ne var bakalım
void oku(String x,String y)
{
veriler="";
  int xx = x.toInt();
  int yy = y.toInt();
 
    if(xx<-5000)
  {
    veriler+="sag";
  }
      if(xx>5000)
  {
    veriler+="sol";
  }
      if(yy<-5000)
  {
    veriler+="ileri";
  }
      if(yy>5000)
  {
    veriler+="geri";
  }
  Serial.println(veriler);
  gonder(veriler);

}

Son olarak dataları transmitter ile gönderiyoru
void gonder(String veri)
{
  int verisay = veri.length() + 1;
  char veri_dizi[verisay];
  veri.toCharArray(veri_dizi, verisay);
  Serial.print(veri_dizi);
   const char *msg = veri_dizi;
   vw_send((uint8_t *)msg, strlen(msg));
   vw_wait_tx();          
   delay(100);
}

Herşeyi sorabilirsiniz tabiki. Bir sonraki dersimde araba ve motor kısmını anlatacağım.