9 Ekim 2014 Perşembe

Java ile temel Sql Komutları

Merhabalar Arkadaşlar ;
Bugün NetBeans IDE geliştirme ortamında  Java SE ile MySql veritabanına bağlanarak SELECT , UPDATE , INSERT ve DELETE işlemlerini gerçekleştireceğiz.Bu işlemleri yaparken kullanacağım Database Management System ise PhPMyadmin olacaktır. Öncelikle veritabanımızı elimizle olulturabileceğimiz hatta değişiklikler yapabileceğimiz DB Yönetim Sistemimiz olan PhPMyadmin ‘e bir giriş yapalım ve birkaç resimde PhPMyadmin ‘i anlamaya çalışalım.
PhPMyadmin AppServer ,  WampServer , EasyPhp gibi server sistemleri ile ek olarak gelen kullanışlı bir Database Management System’dir.
Ben konuyu anlatırken AppServer üzerindeki PhPMyadmin ile anlatmaya çalışacağım .
AppServer girişimiz :
Burdan sonra veritabanımıza ait kullanıcı adı ve şifremizi girerek PhpMyadmin sayfamıza bağlanıyoruz …
PhpMyadmin ‘e hoşgeldiniz…
Şimdi Şirket adında bir Veritabanı , Müşteriler adında bir tablo ve id , Adı , Soyadı , Telefon Numarası gibi sütunlu bir tablo oluşturalım…
Veritabanımızı , tablomuzu ve sütunlarımızı oluşruduğumuza göre artık işlemleri gerçekleştirmeye başlayabiliriz.
Öncelikle veritabanımıza Connection işlemimizi gerçekleştirelim ve bağlandığımızı bir kontrol edelim…
public class DataBaseUygulama {
public static void main(String[] args) {
Connection conn = null;
try {
Class.forName(“com.mysql.jdbc.Driver”).newInstance();
conn = (Connection) DriverManager.getConnection(“jdbc:mysql://localhost/sirket” , “root” , “root”);
System.out.println(“db’ye bağlanıldı”);
} catch (Exception e) {e.printStackTrace();
}
}
}
DataBase ‘ imize bağlandığımıza göre artık işlemlerimizi gerçekleştirmeye başlayabiliriz.
INSERT İŞLEMİ
Genellikle SQL yazılarına Select işlemi üzerinden başlarlar.Fakat DB’ye elle hiçbir ekleme yapmadan başlayarak direk insert işlemini gerçekleştirip sonuçlarını paylaşmak istiyorum.
INSERT işlemi için gerekli komutları yazıp çalıştırmamız ardından meydana gelen çıktı ve sonuçları aşağıdaki gibidir…
Kodlarımız sonucunda veritabanına eklenen bilgi aşağıda verildiği gibidir…
SELECT  İŞLEMİ
Ekleme işlemimizi yaptığımıza göre veritabanımızdan eklediğimiz bir veriyi görüntüleyelim…
ResultSet rs = st.executeQuery(“SELECT * FROM musteriler WHERE id = 1″);
while(rs.next()){
System.out.println(rs.getString(“Ad”) +” ” + rs.getString(“Soyad”) + rs.getInt(“id”));
}
kodumuzu eklememizin ardından aldığımız sistem çıktısı …:
Çıktı bölümünde görüldüğü üzere Sirket Veritabanımızdaki müsteriler tablosunun 1.id sinde ki kişinin ad + soyad + id bilgilerini şekilde görmekteyiz.
Şimdi gelelim tablomuzdaki herhangi bir satırı  güncelleme işlemimize …
UPDATE İŞLEMİ 
Arkadaşlar az önce id : 1 de bulunan kişiye ait ad soyad ve id bilgilerini görüntülemiştik. Şimdi bu id de bulunan ad ve soyad bilgilerini güncelleyelim.
st.execute(“UPDATE musteriler SET Ad = ‘Gökhan’ , Soyad = ‘YILMAZ’ WHERE id=1 “);
System.out.println(“GÜNCELLEME YAPILDI”);             // kodumuzu eklememizin ardından derleyici ortamında ve yönetim sistemi ekranında gördüğümüz sonuçlar :
NETBEANS IDE ORTAMINDA :
phpMyAdmin ORTAMINDA GÖRÜNEN :
Şekilde id = 1 de gördüğünüz üzere ad ve soyad da AHMET MUNGEN varken güncelleme oluşan yeni ad ve soyad Gökhan YILMAZ olmuştur.
DELETE İŞLEMİ
Evet arkadaşlar son olarak Delete işlemini de tanımlayarak  ” Java ile Temel SQL Uygulamaları “isimli yazıma son vermek istiyorum.
st.execute(“DELETE FROM musteriler Where Soyad = ‘Yücel'”);
System.out.println(“silndi”); // kod bloğumuzu ekledikten sonra tekrar IDE Ve PhpMyAdmin ortamında meydana gelen değişikliklere göz atalım…
NETBEANS IDE ORTAMINDA :
DB ‘ de Soyadı Yücel olan tüm kişileri silelim mesela …
PhpMyAdmin Ortamında :
PhpMyAdmin ortamında da görüldüğü gibi soyadı Yücel olan tüm veriler tablodan silinmiş oldu.
JDBC Kavramını öğrenmek ve JSP-MySql bağlantısı hakkında bilgi sahibi olmanız için Ahmet Müngen ile yazdığımız yazıyı (http://amungen.wordpress.com/2012/01/30/sql-yazi-dizisi-1-2-3-nedir-basit-kullanimlar/) inceleyebilirsiniz.Böyle bir yazıyı yazmamıza vesile olduğu için arkadaşıma birkez daha teşekkür ediyorum.
Java ile Temel SQL uygulamaları adlı yazımın yararlı olmasını dilerim. Başka yazılarda görüşmek üzere…
Alıntıdır//gokhanyilmaz.wordpress.com

UML hakkında

Yazılım teknolojisi geliştikçe yazılan programların karmaşıklığı ve zorluğu giderek artmaktadır. Donanım ve yazlımın iç içe girdiği, büyük ağ sistemlerinin giderek arttığı bir dönemde doğaldır ki biz programcıların yazacağı programlarda büyüyecektir.Yazacağımız programlar çok karmaşık olacağı için kod organizasyonu yapmamız zor olacaktır. Hele birçok programcının çalışacağı projelerde bu nerdeyse imkansız hale gelmiştir. Bu yüzden standart bir modelleme ve analiz diline ihtiyaç duyarız. Programımızın analiz ve dizayn aşamasında modellemeyi güzel yaparsak ileride doğabilecek birçok problemin çıkmasına engel olmuş oluruz. UML daha çok nesneye dayalı programlama dilleri için uygundur. Problemlerimizi parçalara ayırabiliyorsak, ve parçalar arasında belirli ilişkiler sağlayabiliyorsak UML bizim için biçilmiş kaftan gibidir. Mesela bir ATM siteminde müşteriyi, banka memurunu ve ATM makinasını ayrı parçalar halinde düşünebiliriz. Müşteri ATM makinasından para çeker, banka memuru ATM makinasına para yükler.Amabanka memuru ile müşteri arasında doğrudan bir ilişki yoktur.Bu tür ilişkiler UML ‘de çeşitli diyagramlarla gösterilir. Bu diyagramlar hakkında geniş ve detaylı bilgiyi daha sonraki yazılarımızda ele alacağız.
Bu kısa girişten sonra UML ‘in tarihine bakalım.UML ‘in doğuşu son yıllarda yazılım endüstrisindeki en büyük gelişmelerden biri olarak kabul edilebilir. UML 1997 yılında yazılımın, diyagram şeklinde ifade edilmesi için bir standartlar komitesi tarafından oluşturuldu. Daha önce hemen hemen her daldaki mühendislerin standart bir diyagram çizme aracı vardı. Ve şimdi de programcıların UML ‘si var.
UML ile hazırlanmış bir yazılım hem daha az maliyetli hem daha etkili ve daha uzun ömürlü olur. UML ile dokümantasyonu yapılmış bir programın sonradan düzenlenmesi daha kolay olur. Bütün bunlar UML kullanmamız için yeterli sebeplerdir diye düşünüyorum.Kısaca ,UML ‘nin faydalarını maddeler halinde sıralarsak;
1-) Öncelikle programımız kodlanmaya başlamadan önce geniş bir analizi ve tasarımı yapılmış olacğından kodlama işlemi daha kolay olur. Çünkü programdan ne beklediğimizi ve programlama ile neler yapacağımızı profesyonel bir şekilde belirleriz UML ile.
2-) Programımızda beklenmedik bir takım mantıksal hataları (bug) minimuma indirgemiş oluruz.
3-) Tasarım aşaması düzgün yapıldıysa tekrar kullanılabilen kodların sayısı artacaktır. Buda program geliştirme maliyetini büyük ölçüde düşürecektir.
4-) UML diagramları programımızın tamamını kapsayacağı için bellek kullanımını daha etkili hale getirebiliriz.
5-) Programımızın kararlılığı artacaktır. UML ile dokümanlandırılmış kodları düzenlemek daha az zaman alacaktır.
6-) Ortak çalışılan projelerde programcıların iletişimi daha kolay hale gelir.Çünkü UML ile programımızı parçalara ayırdık ve parçalar arasında bir ilişki kurduk.
Bir sistemin geliştirilmesi kabaca aşağıdaki aşamalardan geçmektedir. İlk iki aşamada UML büyük ölçüde rol oynar.
Unutmayın: UML bir programlama dili değildir. Bir diyagram çizme ve ilişkisel modelleme dilidir. Çeşitli diyagram çizme yöntemlerini http://www.csharpnedir.com sitesinden öğrenebilirsiniz. Bu makalemizde UML ‘de kullanılan başlıca UML diagramlarını ve kısa tanımlarını işleyeceğiz. Diyagram şekilleri ve kod oluşturma işlemlerini bundan sonraki makalelerimizde bulabilirsiniz.
Şimdi kısa ve öz bir şekilde UML komponentlerinden(diagramlar) bahsedelim: Nesneler arasında ilişki kurmak için UML bir takım grafiksel elemanlara sahiptir.Bu elemanları kullanarak diyagramlar oluşturacağız. Bu makalede sadece bu diagramların ne işe yaradığını göreceğiz. UML temel olarak 9 diyagram türünden oluşur.
CLASS DIAGRAM
Gerçek dünyada eşyaları nasıl araba, masa, bilgisayar şeklinde sınıflandırıyorsak yazılımda da birtakım benzer özelliklere ve fiillere sahip gruplar oluştururuz. Bunlara “Class”(sınıf) denir. Geliştirici açısından önemli olan “Class Diagramları” hakkında daha sonra detaylı bir makalemiz olacak.
OBJECT DIAGRAM
Bir nesne(object) sınıfın (class) bir örneğidir. Bu tür diyagramlarda sınıfın yerine gerçek nesneler kullanılır.
STATE DIAGRAM
Gerçek nesnelerin herhangi bir zaman içindeki durumunu gösteren diyagramlardır.Mesela, Ali nesnesi insan sınıfının gerçek bir örneği olsun. Ali ‘nin doğması, büyümesi, gençliği ve ölmesi State Diagram ‘larıyla gösterilir.
SEQUENCE DIAGRAM
Class ve Object diyagramları statik bilgiyi modeller.Halbuki gerçek zamanlı sistemlerde zaman içinde değişen interaktiviteler bu diyagramlarla gösterilemez. Bu tür zamanla değişen durumları belirtmek için sequence diyagramları kullanılır.
ACTIVITY DIAGRAM
Bir nesnesinin durumu zamanla kullanıcı tarafından ya da nesnenin kendi içsel işlevleri tarafından değişebilir.Bu değişim sırasını activity diyagramlarıyla gösteririz.
USE CASE DIAGRAM
Programımızın davranışının bir kullanıcı gözüyle incelenmesi Use Case diyagramlarıyla yapılır. Gerçek dünyada insanların kullanacağı bir sistemde bu diyagramlar büyük önem taşırlar.
COLLABORATION DIAGRAM
Bir sistemin amacının yerine gelmesi için sistemin bütün parçaları işlerini yerine getirmesi gerekir. Bu işler genellikle birkaç parçanın beraber çalışmasıyla mümkün olabilir. Bu tür ilişkileri göstermek için Collaboration Diyagramları gösterilir.
COMPONENT DIAGRAM
Özellikle birden çok geliştiricinin yürüttüğü projelerde sistemi component dediğimiz parçalara ayırmak, geliştirmeyi kolaylaştırır.Sistemi öyle modellememiz gerekir ki her geliştirici ötekinden bağımsız olarak çalışabilsin.Bu tür modellemeler Component Diyagramlarıyla yapılır.
DEPLOYMENT DIAGRAM
Bu tür diyagramlarla sistemin fiziksel incelenmesi yapılır. Mesela bilgisayarlar arasındaki baglantılar, programın kurulacağı makinalar ve sistemimizdeki bütün aletler Deployment Diyagramında gösterilir.

Alıntıdır//gokhanyilmaz.wordpress.com

Java İnternetten Download

Image image = null;
    URL url = new URL("http://www.yahoo.com/image_to_read.jpg");
    image = ImageIO.read(url);
Alıntıdır//amungen.wordpress.com

Visual Studio Yorum satırı

Ctrl+E+C

Panoromik Fotoğraf Oluşturma | Fotoğraf’da MultiKarakter | Prezi’ye Aktarımı

Panaromik fotoğraf oluşturup, panaromik fotoğrafa mutli karakter ekleyip, bu fotoğrafı Prezi Sunum Teknolojisi ile kullandığım bir çalışmamı anlatacağım.

prezi_logoPrezi Sunum Teknolojisi ile yeni yaratıcı sunumlar oluşturmak gayet kolaylaştı. Oluşturulan sunumlar diğer sunumlara göre ciddi anlamda göz alıcı ve güzel de olmakta. Prezi en son 3D teknolojisi ile sunumlarınızı güzelleştirmeye başladı. 3D teknolojisi dediği aslında 3 boyutlu image üzerine yapılan sunumlar ve efekt desteği olarak özetlenebilir. Bende bu fikirden yola çıkarak acaba kendi 3D fotoğrafım ile sunum hazırlıyabilir miyim diye düşündüm. Grafik programlama kabiliyetim ve bilgimin buna uzaktan yakından yanaşmadığını anlamam zor olmadı. Ama daha öncesinden birkaç panaromik fotoğraf yapmıştım ve panaromik fotoğraf üzerinden bu işlemi yapmaya karar verdim.
Panaromik Fotoğraf Yapma
Normal bir fotoğraf kameranızın özelliğine göre yaklaşık 150 derece civarında bir açı ile çekilir. Panaromik fotoğraf bu açının birkaç fotoğraf birleştirilmesi ile arttırılması ile olur. yani birbiri ile irtibatlı tripod’u hafif çevirerek çektiğiniz fotoğrafları birleştirip onları düz bir çözünürlüğe getirdiğinizde panaromik olmuş olur. En azından benim tanımım böyle, internette eminim daha ayrıntılı bilgi vardır.
Panaromik fotoğrafı sınıfta çekmeye karar verdim ve yaklaşık 270 derecelik bir açı ile olmasını istedim. Maalesef elimde olan makina Piranha Business Tab2’nin kamerası olduğu için netliği iyi olmadı. Çektiğim yaklaşık 100’e yakın resmi AutopanoPro V1.4.2 Programı ile Panaromik fotoğraf haline dönüştürdüm. İlgili Programın kullanımı gerçekten kolay ama işlemler biraz uzun sürmekte. Eğer ayarlarını doğru yapamazsanız 5gb’lik fotoğraflar vb çıkması muhtemeldir, ayarları düzgün yapıldığın 10mb’lik panaromik fotoğraflar ortaya çıkmaktadır.
Multikarakter image işleme programları(photoshop vb) ile büyük ihtimalle yapılabilmektedir. Ama üste ifade ettiğim gibi bu tür programlara benim bir aşinalığım yok. Panaromik fotoğraf denemelerimden bildiğim kadarı ile; aynı yerin çekildiği 2 fotoğraftan birinde bir cisim yok diğerinde var ise cismi varmış gibi düşünüp resmi hazırlıyor. Bizim sınıfımız 5 sıra dizisine ayrılmış yani 5*4 sıra var. Bizde sınıfta fotoğraf çekerken her sıra dizisini başka sıra dizisini almayacak şekilde çektik ve ben her sıra dizisinde oturmuş oldum böylece benden 5 tane çıkması gerek. Program fotoğrafları birleştirsin diye sıra dizilerini birlikte de birkaç kere daha çektik.
Çektiğimiz işlemleri programa verince bize panaromik fotoğrafımızı vermiş oldu; Süpriz sonuç ise; resimlerin bir bölümünde benim ilgili sırada olduğum halde bir bölümünde sırada olmamamdan dolayı hayalet gibi çıkmış olmam :)
sonson - Kopya
(Resmin Görüntü Kalitesi Düşürülmüş ve Sadeleştirilmiş hali yandadır)
Prezi’de Ekranı iyice uzaklaştırdıktan sonra ekrandaki herşeyi silip üste hazırladığım resmi yükledim. Resmin üzerine frame’ler atıp yazılar ve image’ler koymaya başladım; resme dikkat edilirse frame koyacak şekilde tasarlamıştım. Günün sonunda alttaki prezi sunumum ortaya çıktı.
Sunum hakkında yakın arkadaşlarım fikirleri genelde olumlu idi; sizinde fikirlerinizi bekliyorum.
Prezi ile yenilikçi sunumlarınızı benimle de paylaşın lütfen
Alıntırıd.amungen.wordpress.com

Facebook’dan Bilgi alma Api’si

Mühendislik her zaman olanı kullanmak ve değiştirmek değil; bazen özel ihtiyaçlara özel çözümler sunabilmektedir. Bu makalede Facebook’a gelen bir mesajın nasıl sms olarak cep telefonuna iletilebileceğini katmanları ile anlatmaya çalışacağım.
Bir özel ihtiyaçtan ortaya çıkmış bir projemi anlatacağım. Facebook gençlerde kullanım oranı yüksek olan bir sosyal paylaşım platformu. Bu platform aracılığı ile mesaj gelince bundan mümkün oldukça hızlı haberdar olmak istiyorum. Ama Cep Telefonun Nokia 1100 olduğundan değil facebook uygulaması internet vb girmesi bile hayal.
O zaman ilk planımı yaptım; Facebook’dan bilgiyi alıp, bir gsm firmasının api’sini kullanarak sms atmak olacak.
Aşama1 ) Facebook’dan bilgi alma (Projenin 1.Katmanı)
Facebook developer, facebook api vb hiç bir şekilde size kullanıcının mesajlarına ulaşma izni vermiyor. Sonuçta merak ettiğim kişinin tüm mesajların toplandığı bir sayfa var;https://www.facebook.com/messages/?action=read&tid=ojYNadNdHT4tBXaADADAKA benim kullandığım bu sayfa gibiydi. sayfanın içinde kaynak kodlarını incelediğinizde her mesaj için belli bir sıra olduğunu görmüş olmalısınız.div+ mesajid+/div +div + mesaj +/div şeklinde gidiyor.  o zaman regular expression kullanarak mesaj id ve mesajları çekebilebilirsiniz. Tabi ben regular expression yerine basit bir substring indexof birleşimi kullandım. sonuçta sadece son mesaj beni ilgilendirdiği için.
İlgili sayfanın kaynak kodunu nasıl alabiliriz? Bu kullandığınz dil ile ilgili birşey, java herzaman önde olsada javanın ilgili kütüphanesini öğrenmek ile uğraşacağıma hazır kaynağı daha bol olan php’yi kullanmayı uygun gördüm. Php’de Curl diye bir kütüphane var. Bu kütüphane insan gibi davranıp tarayıcıyı kullanabiliyor. Örneğin login yapabiliyor ki tam benim istediğim şey…
Facebook’un login sistemi
$a = cURL(“https://login.facebook.com/login.php?login_attempt=1″,true,null,”email=$EMAIL&pass=$PASSWORD”);
şeklinde çalışıyor olsa bile; siz bunu denedinizde çalışmadığını göreceksiniz. Çünkü bü tur bot’lara karşı facebook her girişde cookie desteği istemekte ve birçok ayar yapmanız gerekmektedir. DaniWeb’den* bulduğum php curl ile facebooK’a bağlanma kodu epey işime yaradı. Tamamı şudur;
/* EDIT EMAIL AND PASSWORD */
$EMAIL = “faceemail”;
$PASSWORD = “şifre”;
function cURL($url, $header=NULL, $cookie=NULL, $p=NULL)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, $header);
curl_setopt($ch, CURLOPT_NOBODY, $header);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_ENCODING, ‘ISO-8859-9′);
if ($p) {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, “POST”);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $p);
}
$result = curl_exec($ch);
if ($result) {
return $result;
} else {
return curl_error($ch);
}
curl_close($ch);
}
$a = cURL(“https://login.facebook.com/login.php?login_attempt=1″,true,null,”email=$EMAIL&pass=$PASSWORD”);
preg_match(‘%Set-Cookie: ([^;]+);%’,$a,$b);
$c = cURL(“https://login.facebook.com/login.php?login_attempt=1″,true,$b[1],”email=$EMAIL&pass=$PASSWORD”);
preg_match_all(‘%Set-Cookie: ([^;]+);%’,$c,$d);
for($i=0;$i<count($d[0]);$i++)
$cookie.=$d[1][$i].”;”;
/*
NOW TO JUST OPEN ANOTHER URL EDIT THE FIRST ARGUMENT OF THE FOLLOWING FUNCTION.
TO SEND SOME DATA EDIT THE LAST ARGUMENT.
*/
$bizimhttp= cURL(“https://www.facebook.com/messages/?action=read&tid=ojadadadDAiiwxKA&#8221;,null,$cookie,null);
$bizimhttp dediğim mesajların bulunduğu sayfanın kendisi. şimdi ise bana son mesaj lazımdı. Her kullanıcının unique bir id’si var ve ben bunu kullanarak aşağıdaki kod ile kullanıcını son attığı mesajı ve id’sini buldum.
$pos = strripos($bizimhttp, “100001x64287_id”);
$pos2 = substr($bizimhttp,$pos);
$pos3 = substr($pos2,0,30); //mesaj id’si
$pos4 = substr($pos2,232,270); //mesajın kendisi
Aşama 2 ) Mesaj Yeni mi?
Görüldüğü gibi Facebook’dan son mesajı ve id’sini alma işlemi bitmiştir. Proje periyodik olarak(her 10dk’da bir) facebook sayfasına bakacak ve son mesajın id’sini alacak. burada bir database oluşturup aldığı mesajı db’de kontrol ediyor; daha önce gördüğü bir mesaj ise sms atacak mekanizmaya girmiyor. yok yeni bir mesaj ise sms atıyor.
$con = mysql_connect(“localhost”,”dbname”,”şifre”);
if(!$con)
{
die(‘Veritabani Baglanti Hatasi’);
}else{
mysql_select_db(“dbname”,$con);
$kontrol = true;
$getrecodr =”Select record from register where record=’$pos3′”;
$result = mysql_query($getrecodr);
while($row = mysql_fetch_array($result))
{
$kontrol=false;
}
if($kontrol==true){
//yeni mesaj gelmiş
$insertregister =”INSERT INTO register (record) VALUES(‘$pos3′)”;
mysql_query($insertregister);
echo “yeni mesaj var”;
Aşama 3 ) SMS Gönderme (Projenin 2. Katmanı)
Web’den sms atma meselesini IBM projem için araştırıp netgsm şirketine abone olmuştum. Şirket size api desteği veriyor; yani webservis, http post veya xml post ederek sms gönderebiliyorsunuz. webservis oluşturmak böyle bir proje için mantıklı değildi bende xml ile gönderemeyi düşündüm.  Şirketin verdiği Api Dökümanının yardımı ile şöyle oldu;
function XMLPOST($PostAddress,$xmlData)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$PostAddress);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPHEADER, Array(“Content-Type: text/xml”));
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlData);
$result = curl_exec($ch);
return $result;
}
$xml='<?xml version=”1.0″ encoding=”iso-8859-9″?>
<mainbody>
<header>
<company>NETGSM</company>
<usercode>telefonno</usercode>
<password>şifre</password>
<startdate></startdate>
<stopdate></stopdate>
<type>1:n</type>
<msgheader>AHMETMUNGEN</msgheader>
</header>
<body>
<msg><![CDATA[Mesaj VAR! Mesaja bak! ]]></msg>
<no>gidecekno</no>
</body>
</mainbody>';
$gelen=XMLPOST(‘http://api.netgsm.com.tr/xmlbulkhttppost.asp&#8217;,$xml);
Aşama 4 ) Sistemi Tetikleme (Projenin 3.katmanı)
 
Üsteki 3 aşamanın yapılması birkaç günümü almıştı. Asıl sorun olan kısma geldik; bilgisayarımız her daim açık değil; Açık olsa böyle bir sisteme ihtiyaç duymazdık. Bu sistemi düzenli tetikleyecek bir sisteme ihtiyacımız var. Eğer Reel dünyada çalışan bir Sunucu veya Sanal Sunucu gibi bir çözümünüz varsa bir uygulama yazarak bu sorunu çözebilirsiniz. Masaüstü uygulamasını aktif hale getirir bir timer ile yaptığını php sayfasını çalıştırırsınız. Ama benim gibi sunucunuz yoksa? Bu konuda “web cron”** siteleri işinizi görecektir. Sistemleri şöyle çalışır. Belli periyodlarda ilgili url’ye bağlanacaktır. Bu tetikleme ihtiyacınız olan son noktadır. En azından ben öyle düşünüyordum.
Bu noktada sonra proje  yaklaşık 1 ay kadar uzadı; Bunun bir nedeni ilgilenemem diğer nedeni ise çıkan sorundu.
Şöyleki yazdığımız cookie api’si webcrown’un sisteminde aktif hale gelmiyor; çünkü webcrown program ile post atıyor. Tarayıcı tanınamadı diye facebook cookie vermiyor ve sisteme giriş yapılamıyordu.
Aşama 5 ) Sistemi Tetikleme’de yardımcı etken (Projenin 4.katmanı)
Bu noktada aklıma gelen ilk şey browsershots  gibi gerçekten browser kullanan bir sistemin benim ilgili sayfamı çalıştırması ile tetiklenmesi idi. yani crow browsershoot’u oda benim php sayfamı tetiklyecek ve böylece hepsi sorunsuz çalışacaktı. bunun için en popüler olan http://browsershots.org/’dur ama browsershots dışardan post veya get ile herhangi bir tetikleme almamakta. Almadığı içinde işimizi görmemektedir. Bir başka browser gösterim sitesi netrenderer’dir *** sadece ie sürümleri için destek veren bu site ise dışardna post alabilmekteidi. webcrown’a komut olarak şunu verdim
böylece netrendered benim webistemdeki index-h2.php isimli dosyayı çalıştırıyordu ve tetikleme gerçekleştirilmiş oluyor.
Projenin testi ise bu yazı yazıldığı gün yapıldı ve çalışmaktadır.  Projeye ise IBM staj günlerimde başlamıştım.
Projede Halen Geliştirilecek Noktalar
  • Facebook’dan seri olarak onun ve benim mesajlaştığım zamanda sms atacak mı? (şuan itibari ile 15 dk içinde max tek sms attığı için çok etkilemesede sorun
  • Mesajın içeriği ile ilgili bilgi verilebilir mi?
Teşekkürler
Proje’de sona ulaşmak önemlidir. ve Allah nasip etti ve bende ulaştım. Bu proje bundan sonra kullanılsın veya kullanılmasın proje sürecinde öğrendiklerim benle kalacaktır.
Kaynakça
**Benim kullandığım http://www.mywebcron.com/
***http://netrenderer.com (browse shoots sitesi) (hayatımı kurtardın!)
***Alıntıdır.amungen.wordpress.com

Java ile Websitesine Post Atma, Bilgi Alma

Mühendislikte herşey ihtiyaçlardan ve gerekiliklerden doğar; bu yazı Java ile Curl gibi post atıp içindeki bilgileri nasıl kullanılacağını çok basit bir örnek ile anlatacağım.
Fırat Üniversitesi Üniversite evi’nde her gün ne yemek çıkacağı Fırat Üniversitesi sayfasında yazmakta; ama cep telefonlarından ilgili sayfanın açılması süreci hem zahmetli hem ücretli hem zaman kaybı. Bunu engellemek için; ilgili sayfadaki bilgiyi alan bir uygulama geliştirmeye karar verdik. Ben java tarafını yazdım. Hüseyin Varol’da Android.
Sistem şöyle çalışıyordu; Java ile URL’ye post atılıyor; gelen sonuç içerisinden regular expression ile yemek isimleri ayrıştırılıp ekrana yansıtılıyor. (Post ismini vermiş olsak ta GET ile attık)
Bu Android uygulamasını şuradan indirebilirsiniz (Hazırlanıyor)
Aynı uygulamanın Windows Phone platformu için hali yoldadır :)

GET ATMA

1) İmportlarımız
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLEncoder;
2) İnput Açma ve Buffered Reader ile okuma
URL url = new URL(“http://web.firat.edu.tr/universiteevi/index.htm&#8221;);
InputStream response = url.openStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(response));
for (String line; (line = reader.readLine()) != null;) {
}
reader.close();

POST ATMA

1) İmportlarımız 
import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
3) Parametrelerimizi Ayarlama 
String data = URLEncoder.encode(“ddlKurumTuru”, “UTF-8″) + “=” + URLEncoder.encode(“1″, “UTF-8″);
data += “&” + URLEncoder.encode(“ddlil”, “UTF-8″) + “=” + URLEncoder.encode(“1″, “UTF-8″);
3) İnput Açma ve Buffered Reader ile okuma 
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());
//write parameters
writer.write(data);
writer.flush();
// Get the response
StringBuffer answer = new StringBuffer();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
answer.append(line +”\n”);
}
writer.close();
reader.close();
result = answer.toString();

NOTLAR

Not1: Try-Catch’a Almayı unutmayın
Not2: URL yazarken http gibi url’nin protokolünü belirtmeyi unutmayın örneğin:”http://web.firat.edu.tr/universiteevi/index.htm&#8221;
Not3: String tum = tum + line gibi birşeyle tüm sayfanın kaynak kodunu bir string’e atabilirsiniz
Not4: Sayfanın tam adresini bulmanız gerekmektedir; sanal adresleme veya başka bir yöntem ile çalışmaz yani tam olarak index.html gibi bir değer bulmanız gerekmektedir. Bazı server’lar bu değerleri sizin tarayıcınızda göstermez, ben almak için http viewer programlarından birini kullandım.
Alıntıdır.  amungen.wordpress.com