8 Ekim 2016 Cumartesi

SSH NEDIR ?

SSH yani Secure Socket Shell sistem yoneticilerinin uzaktaki bilgisayara guvenli bir sekilde baglanmasini saglayan protokoldur. Guvenliksiz ag uzerinden bile iki bilgisayarin sifrelenerek baglantisini saglar. SSH, ag yoneticileri tarafindan uzaktaki bilgisayara dosya aktarimi, uygulamalari yonetek, komutlari calistirmak gibi sebeplerle kullanilabilir.


SSH, icin bilgisayarimizda Putty yazilimna ihtiyac duyariz. Ve Putty ile baglanacagimiz bilgisayrin IP adresini ve portunu yazdiktan sonra sifremiz ile uzaktaki bilgisayara baglanip komutlari calistirabiliriz.

20 Eylül 2016 Salı

DEEPMIND TEKNOLOJISI - GOOGLE


      Google DeepMind Eylül 2010'da DeepMind Technologies adıyla kurulmuş bir yapay zeka şirketidir. Google tarafından 2014 yılında satın alındığında ismi değiştirilmiştir. Şirket insanların oyunları nasıl oynadığından esinlenerek, öğrenen bir yapay sinir ağı oluşturmuştur. Şirketin geliştirdiği AlphaGo adlı program 2016 yılında Go oyununda uzman olan bir insanı yenmeyi başardı. Google DeepMind bölümü araştırmacıları geliştirdikleri bir programın ilk kez karmaşık olarak nitelenen görevleri aynı anda yapmayı kendi kendine öğrendiğini açıkladı.

      Şirketin hedefi "zekayı anlamak". Bu hedefe machine learning ve systems neuroscience alanındaki en iyi teknikleri kullanarak kapsamlı öğrenme algoritmaları kurarak ulaşmaya çalışıyor.

    1997 yılında IBM’in Deep Blue adını verdiği satranç oyunu programının dünya şampiyonu Garry Kasparov’u yendiğini hatırlatan Dr. Demis Hassibis, “Deep Blue, satrançta ustalaşması için gerekli tüm yönergelere sahipti. Bizim programımıza ise sadece oyunla ilgili en temel bilgi yükleniyor. Sisteme verdiğimiz tek bilgi, ekrandaki ham pikseller ve oyunda yüksek puan alması gerektiği. Geriye kalan her şeyi kendisinin bulması gerekiyor” açıklamasında bulundu.

Avrupa'nın Go şampiyonu Fan Hui'yi beş kez yenen DeepMind, dünya şampiyonu Lee Se-Dol'u beş oyundan oluşan müsabakanın ilkinde yenerek başarılarını bir adım öteye taşıdı.

 IBM'in Deep Blue yazılımı ya da Watson gibi önceden belirlenmiş bir amaç için geliştirilmiş programların aksine DeepMind programı iddia edildiğine göre önceden programlanmamış: tecrübelerinden öğrenmektedir. Sistem eski bilgisayar oyunlarında deneniyor. Programın kodlarında hiçbir değişiklik yapmadan, DeepMind'ın yapay zekası oyunu nasıl oynayacağını anlıyor, ve birkaç kere oynadıktan sonra birçok insandan daha iyi oynayacak seviyeye geliyor.


18 Eylül 2016 Pazar

MySql.Data.Types.MySqlConversionException: Unable to convert MySQL date/time value to System.DateTime

ASP.NET MVC ile yaptigim projemde databaseden veri dondurmeye calisirken su sekilde bir hata karsilastim. MySql.Data.Types.MySqlConversionException: Unable to convert MySQL date/time value to System.DateTime


Verimin tipi Date idi. Cozum olarak ise su sekilde yapmamiz gerekiyor.WebConfig dosyamizdan connectionstring taglerinin sonuna Convert Zero Datetime=True; seklinde bir kod eklememiz gerekiyor. Ve hatamiz yok oluyor.

17 Eylül 2016 Cumartesi

MYSQL WORKBENCH - FOREIGN KEY OLUSTURMA

Rezerv tablosundaki urunId ve userId indexleri foreign key yapmak istiyorum cunku urunId, urun tablosunun primary keyi ve userId user tablosunun primary keyi.
Once alt tablolardan foreign key tabini acip primary keye ad veriyoruz.




 Daha sonra foreign keyimizin hangi tabloyu refer edecegini yanindaki referenced table dan belirtiyoruz. Daha sonra sag kisimda rezerv tablomuzun indexleri goruluyor. urunId indexini secip user Tablosundan hangi index e refer edecegini de yanindan seciyoruz ve apply diyoruz.

12 Eylül 2016 Pazartesi

ENTITY FRAMEWORK HATASI VISUAL STUDIO 2015

EGER Entity Framework baglantisi sirasinda "Your project references the latest version of Entity Framework; however, an Entity Framework database provider compatible with this version could not be found for your data connection. Exit this wizard, install a compatible provider, and rebuid your project before performing this action". seklinde bir hata aliyorsak  Nuget Package Manager dan sunlari install etmemiz gerekir.


EntityFramework

Mysql.Data

Mysql.Data.Entities

Mysql.Web


Bu sekilde sorunumuz duzelmis olacaktir.

7 Eylül 2016 Çarşamba

VNP NEDIR ? VPN KURULUMU


Vpn den bahsetmeden once LAN dan bahsetmek istiyorum. Bu sekilde VPN i anlamanin daha kolay olacagini dusunuyorum.
LAN (LOCAL AREA NETWORK)
Yani turkcesiyle  “yerel alan agi” . Burada kisitli, belli bir alan soz konusu. Soyle ki ornegin evimizde birden fazla cihazimiz ayni modeme bagli. O zaman bu cihazlar arasinda LAN kurmak mumkundur. Peki neden kurmaliyiz ? Bu cihazlar arasi daha kolay dosya paylasimi, yazici tarayici gibi cihazlardan ortak yararlanma, oyun oynama, ortak yazilimlari calistirma gibi faydalari vardir. Bu sekilde biz de bir internet olusturmus oluruz. Ayni zamanda tum cihazlar ayni modem e bagli oldugu icin bu cihazlar, ortak bir IP ye sahip olur : modemin IPsi.
SERVER
Bir veriyi bagli oldugu ag uzerinden cihazlara ulastiran ozel yazilim ve donanimlara sahip cihazdir. Kisaca guclu bir bilgisayardir. Verilerin kaybolmamasi icin yedekleme ozelligi, elektrik kesintilerinde guc kaynaklari ile verinin stabilligini saglar.
Simdi gelelim VPN’e.

VPN (VIRTUAL PRIVATE NETWORK)
Yani sanal ozel ag . Nasil LAN da tek bir modem e birden fazla bilgisayar baglayip iletisimlerini kolaylastiriyoduk ve ayni modeme bagli oldugumuz icin dis dunyaya ayni IP ile baglaniyorduk. VPN de ise uzakta olan bir server a birden fazla cihaz baglaniyor ve ayni IP ye sahip oluyorlar. Artik o ag uzerinden internete baglaniyorlar. VPN kullanma sebepleri bagli oldugumuz agdaki engellemeler olabilir. VPN sayesinde engel yasamadan interneti kullanabiliriz. Asil cikis amaci ve diger kullanim sebebi ise bir cok subesi olan sirketlerin ayni ag uzerinden birbirleriyle iletisimini kolaylastirmaktir. Peki Private ? Private ise su anlam icin kullaniliyor : Server ile bilgisayarimiz arasinda bir sifreleme uygulaniyor. Bu sekilde baglantimiz gizli oluyor.
PEKI gelelim nasil kuracagiz ? aslinda bilgisayarimiza bir kurulum yapmiyoruz. Ben su sekilde baglanti sagladim:
Oncelikle http://www.vpnbook.com/ bu siteye giriyorum. Ve OpenVPN sekmesinden username ve sifreyi aliyorum. Sonra bilgisayarimdan Ag kismina sag tiklayarak Ozellikleri aciyorum ve Yeni baglanti ve Ag kurun kismina tiklayip Calisma Alanina Baglan diyorum ve vpn i seciyorum. Artik Vpn ag baglantisina eklenmis oluyor. Ve baglantilar kismindan VPN i secip http://www.vpnbook.com/ sitesinden aldigim kullanici adi ve sifreyle baglaniyorum. Eger IPmizi kontrol edersek artik degismis oldugunu gorecegiz.


2 Eylül 2016 Cuma

WAMP SERVER

Bilgisayarimizda ip adresi uzerinden yayin yapmak icin bir sunucu kurmak gerekiyor.
Wamp server ile ayni zamanda Php projelerimizi de yayinlayabiliyoruz.

WAMP = Windows Apache Mysql ve Php kurulumlarina sahip server. xamp ve apache server gibi localhost ile projelerimizi calistirabiliyoruz.

Projemizi calistirmak icin www klasoru altina dosyalarimizi eklemeliyiz. example adli klasorumuzde gerekli dosyalarimiz bulunsun ve example klasorunu www dizinine eklemis olalim. calistirmak icin once ekranin alt kosesinden wamp serveri aktif hale getirdikten sonra browserdan

http://localhost/example/index.php yazarak projemizi calistirabiliriz. Burada index.php default olarak calismasini istedigimiz dosyanin adidir.

Projemizi baskalariyla da paylasmak istiyorsak yayina acmaliyiz.

Portu degistirmek icin (80 hata veriyorsa veya baska bir uygulama tarafindan kullaniliyorsa) ekranin alt kosesinden wamp server ikonuna tiklayip daha sonra Apache secenegine tiklayip httpd.conf dosyasindan Listen 80 satirindaki 80 i degistirmeliyiz. Istedigimizi yazip kaydettikten sonra calistirmak icin artik http://localhost:88 yazmaliyiz 



7 Temmuz 2016 Perşembe

ASP.NET VERITABANI BAGLANTISI - ASP.NET DATABASE CONNECTION - INSERT DATA TO DATABASE

Visual Studio -> New -> Web Site -> ASP.NET Empty Web Site seciyoruz. Projemiz acildiktan sonra File -> New -> File diyerek acilan ekrandan C# altindan Web Form u seciyoruz. Ve Add e tikliyoruz.
Herseyden once database connection in yapildigindan emin olmaliyiz.Bunun icin ekranda yer alan "Server Explorer " penceresine gidiyoruz.Eger boyle bir ekran yoksa View -> Server Explorer i secerek ekranda gorunmesini saglayabiliriz.Daha sonra o ekranda bulunan "Data Connections " a sag tiklayip "Add Connection " diyoruz ve acilan ekranda "Server Name " i kendi bilgisayarimizi kullanacaksak kendi PC mizi secili hale getiriyoruz.Daha sonra alt kisimdan kullanacagimiz database ismini seciyoruz.Ve "OK" u secip islemi tamamliyoruz.

Ben olusturdugum database de student tablosuna veri ekleyecegim.(Mssql i kullaniyorum . Kullanacagim database ismi deneme , kullanacagim tablo ise Student tablosu). Student tablosunda 3 tane sutun bulunmakta.Bunlar name , surname ve age. O yuzden bu bilgileri kullanicidan alarak student tablosuna eklemem lazim.Bilgileri almak amaciyla bir web form olusturuyorum.Burada 3 tane textbox olacak bu bilgileri almak icin .















Formumu bu sekilde hazirladim. Simdi ise Submit e cift tiklayarak click event i yazmak icin kod kismina geciyoruz. Kod kismi ise su sekilde :



using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;

public partial class anasayfa : System.Web.UI.Page
{

    SqlConnection conn;

    SqlCommand xp;

  
    protected void Page_Load(object sender, EventArgs e)
    {
        conn = new SqlConnection("data source=.;initial catalog=deneme;integrated security=true");
 
/* data source un . olmasi kendi bilgisayarimizda calistigimiz anlamina gelir.  */

        xp= new SqlCommand("INSERT INTO Student (Name,Surname,Age) VALUES (@Name,@Surname,@Age)", conn);


   
    }

    public int AddStudent(string name, string surname, int age)

    {

        try

        {


            conn.Open();

            xp.Parameters.AddWithValue("@Name", SqlDbType.NVarChar).Value = name;

            xp.Parameters.AddWithValue("@Surname", SqlDbType.NVarChar).Value = surname;

            xp.Parameters.AddWithValue("@Age", SqlDbType.Int).Value = age;

          
            return xp.ExecuteNonQuery(); //ExecuteNonQuery int tipinde bir deger dondurur.Bu yuzden AddStudent methodumuz int tipinde tanimlanmistir.



        }

        finally { conn.Close(); }

    }


    protected void Button1_Click(object sender, EventArgs e)
    {


        
        int result = AddStudent(TextBox1.Text, TextBox2.Text, int.Parse(TextBox3.Text.ToString()));

        if (result == 0) {

            Label4.Text = "Data could not inserted to database !";
         }
        else {

            Label4.Text = "Data inserted to database !";
         }
    }


}






Kodumuzu yazip calistirdigimizda karsimiza soyle bir ekran gelmektedir.





Bu sekilde Submit e bastigimizda karsimiza eklenip eklenmedigine dair bir bildirim gelicektir.


MSSQL i de kontrol ederek datamizin eklendigini gorebiliriz...

















13 Haziran 2016 Pazartesi

ANDROİD SİLİNMEYEN FOTOĞRAFLAR - GALERİ - GOOGLE+ - FACEBOOK - PİCASA

Herkese merhaba,
Bu yazimda silinemeyen, senkronizasyon ile galerimize gelen resimleri nasil silicegimizden bahsedecegim.Samsung Galaxy S3 markali telefonuma yeni format atmis olmama ragmen galeriyi actigimda senkronizasyon nedeniyle tum resimlerimin (hangouts tan, google+ dan ) orda oldugunu gordum.Bundan nasil kurtulacagimi arastirdim ancak ne yaparsam yapayim resimlerim siliniyor sonra tekrar orda oluyorlardi. Biraz da kendim ugrasmayi denedim ve soyle bir secenek buldum ve cozumun o oldugunu anladim.
    Ilk Adimda Ayarlar -> Hesaplar -> Google diyoruz.Ve acilan Google hesabimiza tikliyoruz.Karsimiza senkronizasyon ayarlari sayfasi geliyor.Burdaki uygulamalardan resimlerimin gelmis olabilecegini dusundugum uygulamalarin karsisindaki tiki kaldirdim.Bu uygulamalar :
Google+, Google+ Fotograflar, Google+ Yuklemeleri, Picasa Web Albumleri idi. Sizler de resimlerinizin hangi uygulamalardan gelmis olabilecegini dusunuyorsaniz o uygulamalardaki tik isaretini kaldirabilirsiniz.

    Ikinci Adimda ise Ayarlar - > Uygulamalar -> Galeri diyerek Veriyi Sil secenegini seciyoruz.Ve bu sekilde Galerimizde bulunan sekronizasyon ile gelmis tum resimler siliniyor.Diger resimlerimize bir sey olmuyor.
    Dedigim gibi bu yontemi Samsung Galaxy S3 telefonumda denedim ve basarili oldum. Umarim herkese yardimci olmusumdur.Ayrica daha fazlasi icin ekran resimleri de ekliyorum.

Iyi gunler dilerim...







10 Haziran 2016 Cuma

Hava Durumu - Weather Cast - LINUX

Terminali acip

curl http://wttr.in/izmir

yaziyoruz.Ve hava durumu terminalimizde aciliyor.

Komutlari Kisaltma - LINUX

Terminal komutlarini kendimizce kisa olarak tanimlayip o sekilde kullanmak istiyorsak yapmamiz gerekneler sunlardir:
Mesela Masaustune gecme komutunu Masaustu diyerek kullanmak isteyelim.

nano .bashrc


bashrc icinde alias lar bulunuyor.Oraya bizim de alias eklememiz lazim.Herhangi bir yere ekleyebiliriz.

alias Masaustu='cd ~/Desktop'


Ctrl+X ile kaydedip ciktiktan sonra yeni bir terminal acarak oraya Masaustu yazdigimiz da current directory Desktop olmaktadir.



.DEB

ubuntu ya deb uzantili dosya kurmak icin

sudo dpkg -i packet_adi yazariz.
debpackage anlamina gelir.


eger hata verirse tamamlanmasi icin
sudo apt-get install -f
yazariz.

sublime text ile bi dosya acmak icin
subl dosya_adi

klasor acmak icinse
subl klasor_adi
yazariz.

Prolog - SWI da tek sonuc


?- member(X, [1,2,3]).
X = 1 ;
X = 2 ;
X = 3 ;

no
seklinde sonuc almak isteyip sadece x=1 seklinde sonuc aliyorsak enter a basmak yerine ; basilmalidir.


CALL BY NAME VS CALL BY VALUE

from Coursera, principle in scala programming. Lecture 1.2. 

def test (x:Int, y: Int)= x*x

seklinde bir fonksiyonumuz olsun.Ve bu fonksiyonu call by value ve call by name ile calistirdigimizda gerceklesen adimlara bakalim.


test(2,3)

Call by value => 2 * 2 = 4
Call by name => 2 * 2 = 4

Yani ikisinde de ayni islemler gerceklesti.

test(2+6,12)

Call by value => 8 * 8 = 64
Call by name => (2 + 6) * (2 + 6) = 8 * (2 + 6) = 8 * 8 = 64

seklinde gerceklesir. Burada call value daha hizlidir.

test(5,6*7)

Call by value => test(5,42) => 5 * 5 = 25
Call by name => 5*5 =25

burda ise call by name daha hizlidir.

test(2+6,6*7)

Call by value => test(8,6*7) => test(8,42) => 8 * 8 = 64
Call by name => (2+6) * (2+6) => 8*(2+6) => 8 * 8 = 64



27 Mayıs 2016 Cuma

STRATEJI VE TAKTIK ARASINDAKI FARK NEDIR?

Strateji uzun sureli bir plandir.Geneldir.
Taktik ise kisa surelidir.Kisa vadeli veya anlik planlardir.Ozel bir durum icin gecerlidir.

Taktik yapacak bir sey varken ne yapilmasi gerektigini bilmek, strateji ise yapacak bir sey yokken ne yapmak gerektigini bilmektir.(Savielly Tartakower)


25 Mayıs 2016 Çarşamba

SCHEME / PROLOG DEBUGGING / TRACE

Debugging in DrRacket with Scheme is like this.
For example here is our code:


(define survives?
(lambda (position n)
(if (< n 3)
#t
(if (= position 3)
#f
(survives? (modulo (+ position (- n 3)) n) (- n 1) )))))

(require racket/trace) ; we added this end of the code
(trace survives?)


> (survives? 4 5)
>(survives? 4 5)
>(survives? 1 4)
>(survives? 2 3)
>(survives? 2 2)
<#t
#t

Debugging in Prolog is like this in SWIProlog :

?- trace, ekle2([1,2],[3,4],K).
   Call: (8) ekle2([1, 2], [3, 4], _G6833) ? creep
   Call: (9) ekle2([2], [3, 4], _G6958) ? creep
   Call: (10) ekle2([], [3, 4], _G6961) ? creep
   Exit: (10) ekle2([], [3, 4], [3, 4]) ? creep
   Exit: (9) ekle2([2], [3, 4], [2, 3, 4]) ? creep
   Exit: (8) ekle2([1, 2], [3, 4], [1, 2, 3, 4]) ? creep
K = [1, 2, 3, 4].



9 Mayıs 2016 Pazartesi

Adobe Reader Kaldigin Yerden Devam Etme

Adobe Reader da kaldigimiz yerden goruntulemeye devam istiyorsak bu ozelligi aktif hale getirelim.Adobe Reader ile bir pdf dosyasi acip Ust menuden Duzenle kismindan Tercihleri seciyoruz.Acilan pencereden Belgeler kismindan Belgeleri Acarken kaldigi yerden goruntule kismina tik koyuyoruz.Ve hepsi bu kadar ....



PROLOG CALISMALARIM #2


LISTS



Swi prolog Windows ta calistirmak icin ['/Users/user_name/Location/ex1.pl']. Ubuntu da calistirmak icin ['/home/user_name/Location/ex1.pl'].
1) There are given some facts for some German numbers and their English translation.

tran(eins,one).tran(zwei,two).tran(drei,three).tran(vier,four).tran(funf,five).tran(sechs,six).
We should write a predicate listtrans(G,E) where G german number, E english number of that number. For example listtran([eins,neun,zwei],X). should give X = [one,nine,two].

listtrans([],[]). 'The empty list should give empty number'
listtrans([X|T1],[Y|T2]):- tran(X,Y), listtrans(T1,T2).


2) We should duplicate the elements of a given list and return that new list.

For example double([1,a,5]) should return [1,1,a,a,5,5]

double([],[]).
double([A|T1],[A,A|T2]):- double(T1,T2).


3) We should combine elements of two given lists and return that new list.

For example combin([a,b,c],[1,2,3,4],X) should return X=[a,1,b,2,c,3,4]

combin(H1,[],H1).
combin([],H2,H2).
combin([H1|T1],[H2|T2],[H1,H2|T3]) :- combin(T1,T2,T3).

4) Finding the length of a list.

leng([],0).
leng([H|T],X) :- leng(T,Y), X is Y+1.

5) Another way of finding length of a list using Accumulator.

leng1([],Acc,Acc).
leng1([_|T],Acc,L) :- Acc1 is Acc+1, leng1(T,Acc1,L).




Representation Of Some Arithmetic Operations In Prolog



?- 5=:=5.
yes

?- 5=\=5.
false

etc...

6) Maximum element of a list.


maxElement([H|T],A,Max) :- H>A, maxElement(T,H,Max).
maxElement([H|T],A,Max) :- H =< A, maxElement(T,A,Max).
maxElement([],A,A).

7) Add 1 to each element of a list.

add_one([H1|T1],[H2|T2]) :- H2 is H1+1, add_one(T1,T2).
add_one([],[]).

?-add_one([1,2,4,6],X).
X = [2,3,5,7].

8) Scalar Multiplication
For example scalar_mult(3,[2,4,7],Result) should give
Result = [6,12,21]

scalar_mul(A,[],[]).
scalar_mul(A,[H1|T1],[H2|T2]) :- H2 is A*H1, scalar_mul(A,T1,T2).

9) Dot Product
For example dot([2,5,6],[3,4,1],Result) should give
2*3 + 5*4 + 6*1 = 32 Result = 32

dot([],[],0).
dot([H1|T1],[H2|T2],R) :- dot(T1,T2,Result), R is H1*H2+Result.

10) Controlling Palindrome

pal(L) :- reverse(L,L).

?-pal([e,v,e]).
true

11) Write a predicate to control whether given value is second element of list.

second(X,L) :- [_,X|_] = L

12) Write a predicate to control whether given value is last element of list.

last(X,[X]).
last(X,[Y|T]) :- last(X,T).


13) Write a predicate toptail(InList,Outlist) which says ‘no’ if inlist is a list containing fewer than 2 elements, and which deletes the first and the last elements of Inlist and returns the result as Outlist, when Inlist is a list containing at least 2 elements. For example: toptail([a],T). no toptail([a,b],T). T=[] toptail([a,b,c],T). T=[b]

top_tail([_|T],L) :- append(L,[_],T).

?- trace, toptail([a,b,c,d],T).
   Call: (8) top_tail([a, b, c, d], _G1559) ? creep 
   Call: (9) lists:append(_G1559, [_G1892], [b, c, d]) ? creep
   Exit: (9) lists:append([b, c], [d], [b, c, d]) ? creep
   Exit: (8) top_tail([a, b, c, d], [b, c]) ? creep
T = [b, c] .



14) Write a predicate swapfl(List1,List2) which checks whether List1 is identical to List2, except that the first and last elements are exchanged.
For example [a,b,c,d,e] should return [e,b,c,d,a]

iden_ti_cal([H|T],L2) :- append(A,[Y],T), append([Y],A,K), append(K,[H],L2).

15) Write a predicate swap12(List1,List2) which checks whether List1 is identical to List2, except that the first two elements are exchanged.

similar([H|T],L2) :- append([Y],A,T), append([Y],[H],B), append(B,A,L2).

16) There is a street with three neighboring houses that all have a different color. They are red, blue, and green. People of different nationalities live in the different houses and they all have a different pet. Here are some more facts about them: • The Englishman lives in the red house. • The jaguar is the pet of the Spanish family. • The Japanese lives to the right of the snail keeper. • The snail keeper lives to the left of the blue house. • Who keeps the zebra? Define a predicate zebra/1 that tells you the nationality of the owner of the zebra. Hint: Think of a representation for the houses and the street. Code the four constraints in Prolog. member and sublist might be useful predicates.


komsu(A,B,[A,B|_]).
komsu(A,B,[_|T]) :- komsu(A,B,T).

zebra(X) :- Sokak = [E1,E2,E3],
        member(ev(red,english,_),Sokak),
        member(ev(_,spanish,jaguar),Sokak),
        komsu(ev(_,_,snail),ev(_,japanese,_),Sokak),
        komsu(ev(_,_,snail),ev(blue,_,_),Sokak),
        member(ev(_,X,zebra),Sokak).

?-zebra(X).
japanese

16) There is a round table of 5 seats. Women and men seat at the table. Please find whether there are three women sitting next to each other around the table using Prolog.

woman(mary).
woman(alice).
woman(lily).
man(eric).
man(john).
man(ted).

neighbour(X,Y,[X,Y,_,_,_]).
neighbour(X,Y,[_,X,Y,_,_]).
neighbour(X,Y,[_,_,X,Y,_]).
neighbour(X,Y,[_,_,_,X,Y]).
neighbour(X,Y,[Y,_,_,_,X]).

rounded_woman(X) :- Table = [mary,alice,lily,eric,ted],
                    woman(X),
                    woman(Y),
                    neighbour(X,Y,Table),
                    woman(Z),
                    neighbour(Z,X,Table).

?-rounded_woman(W).
W=alice

17) Calculating fibonacci numbers.

1 1 2 3 5 8 13 21 ...

f(1) = 1
f(2) = 1
f(n) = f(n-1) + f(n-2)

fibo(1,1).
fibo(2,1).
fibo(X,Y) :- Z is X-1,
             fibo(Z,T),
             G is X-2,
             fibo(G,V),
             Y is T+V.
?-fibo(7,A).
A = 13

18) Occurrence of an element in list.

occur(_,[],0).
occur(A,[A|T],N) :- occur(A,T,N1), N is N1+1.
occur(A,[H|T],N) :- occur(A,T,N). 

?- occur(2,[2,1,4,2,7,2,3,9,2,2,4,2],P).
P = 6 .

19) Finding the order of an element in list.

order(A,[A|T],1).
order(A,[H|T],B) :- order(A,T,B1), B is B1+1.
?-order(a,[b,c,d,a,e],P).
P = 4


20) Finding the power of a number.

po(G,G,0,1).
po(A,A,C,S) :- po(A,A,C1,S1), C is C1+1, S is S1*A.

pow(A,B,C):- po(A,A,B,C).

?-pow(3,2,L).
L=9.

Towers of Hanoi Puzzle


Here is solition for puzzle.And Here is code for that puzzle.


   move(1,X,Y,_) :-  
    write('Move top disk from '), 
    write(X), 
    write(' to '), 
    write(Y), 
    nl. 
move(N,X,Y,Z) :- 
    N>1, 
    M is N-1, 
    move(M,X,Z,Y), 
    move(1,X,Y,_), 
    move(M,Z,Y,X).
?- ?- move(3,left,right,center).
Move top disk from left to right
Move top disk from left to center
Move top disk from right to center
Move top disk from left to right
Move top disk from center to left
Move top disk from center to right
Move top disk from left to right
true .





8 Mayıs 2016 Pazar

Scheme Calismalarim #2


Half of List



First Half of List


(define first_half 
    (lambda (lst)
            (take lst (quotient (length lst) 2))))


Last Half of List


(define first_half 
    (lambda (lst)
            (drop lst (quotient (length lst) 2))))



Mid Element of List


(define mid_element 
    (lambda (lst)
            (let loop ((aliste lst)
                       (bliste (cdr lst)))
             (cond [(null? bliste) (list (car aliste))]
                   [(null? (cdr bliste)) (list (car aliste) (cadr aliste))]
                   [else (loop (cdr aliste) (cddr bliste))]))))




Controlling Whether Given Value is Element of List


(define is_element
      (lambda (value lst)
        (cond [(null? lst) #f]
          [(equal? (car lst) (car value)) #t]
              
              [else (is_element value (cdr lst))])))

Cons structure is like this : cons

Bloga Kod / Code Ekleme

<pre style="background-color: whitesmoke; border-radius: 4px; border: 1px solid rgba(0, 0, 0, 0.15); line-height: 22px; margin-bottom: 11px; overflow-wrap: break-word; padding: 10.5px; word-break: break-all;"><code style="background-color: transparent; border-radius: 3px; border: 0px; padding: 0px;"><span style="color: #333333; font-family: &quot;monaco&quot; , &quot;menlo&quot; , &quot;consolas&quot; , &quot;courier new&quot; , monospace;"><span style="font-size: 11px; white-space: pre-wrap;">
Deneme</span></span></code></pre><br/>


<textarea class="bginput" cols="42" name="htmlkod" rows="5" style="background-color: whitesmoke; height: 461px; margin: 0px; width: 660px;">Buraya Kod gelcek


</textarea><br/>


<pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%">
<code>buraya kodlar gelecek...</code>
</pre>

1 Mayıs 2016 Pazar

zsh ve oh-my-zsh

Install


sudo apt-get update

sudo apt-get install zsh

sudo apt-get install git-core
After this we can install oh-my-zsh

sudo curl -L http://install.ohmyz.sh | sh
Errors If we get an error which says 'Password: chsh: PAM: Authentication failure ' we should do these:
rm -fr .oh-my-zsh/

curl -L http://install.ohmyz.sh > install.sh

sh install.sh
Selecting Theme Default theme is robbyrussel.We should change this to agnoster by like this:

~/.zshrc

ZSH_THEME="robbyrussell" #(change this default one)
ZSH_THEME="agnoster" # (to this. this is one of the fancy one)
Open a new terminal window and it should look like


8 Nisan 2016 Cuma

Download Playlist

Youtube da bulunan playlistleri tek hamlede ubuntu kurulu olan bilgisayarimiza indirmek istiyorsak

  • terminali acip once 
sudo apt-get install youtube-dl 
yazmamiz lazim
  • sonra playlist i indirmek istedigimiz lokasyona gidip
youtube-dl playlistLinki             
yazmamiz yeterli.

devami icin
https://www.youtube.com/watch?v=URcb5LJqtMQ


5 Mart 2016 Cumartesi

JSP-1



Scriptlet :
Html kodu içerisine Java kodu eklemek için scriptlet‘ler kullanılır. bu kullanım sırasında Java kodları <%  ve  %> işaretleri arasına yazılır.
<Html>

<Body>
<%
// kullanılmak istenen java kodu
%>
</Body>
</Html>

  • Bir class’ın Servlet olabilmesi için HttpServlet class’ından extends olması gerekli ve yeterlidir.
  • PrintWriter out = response.getWriter(); 
PrintWriter class’ından out adında bir obje oluşturduk ve bu objeye kullanıcaya verilecek olan yanıt ( response ) a yazma ozelliğini atadık. bu sayede “out.println( )” metodunu kullanarak response‘mizi tasarlıyoruz. aynı HTML sayfası yazar gibi satır satır kullanıcıya gösterilecek olan sayfayı (response ) tasarlıyoruz.
  • int birincisayi = Integer.parseInt(request.getParameter(“birincisayi”));  kodunda gördüğünüz request.getParameter( ) metodu servlet’de yazılan input ların değerlerini almamıza yaramaktadır. inputların  içerisine yazdığımız name=”” değerlerini bu metoda parametre olarak göndererek bu işlemi gerçekleştiririz.
  •  Daha sonra output içerisinde biraz farklı bir kullanımla bunu değişkenleri ekrana yazdırdık. <%= ve %> tagları arasına değişkenimizi yazarak. ben burada Expression kullandım. aslında burada yazdığımız <%=username%> kodu <% out.print ( username ) ; %> kodunun aynısıdır. ama daha kolay bir kullanım olduğu için expression kullanmayı tercih ettim. siz iki şekilde de kullanabilirsiniz. görüldüğü gibi zor bir yanı yok.
  • Servis metodunda çıktı üretmeyen kod parçaları yazılmak istendiği zaman ( bu bir metod yada değişken olabilir.) declaration‘lardan istifade edilir. kullanım şekli <%! ve %> tagları arasına java kodlarının yazılması şeklindedir.
  • JAR:Java da yazılmış bir uygulamanın çalışabilmesi için gerekli kütüphanelerin bulunduğu sıkıştırılmış bir dosyadır. 
  • Once you connect to the database and, in the process, create a Connection object, the next step is to create a Statement object. The createStatement method of the JDBC Connection object returns an object of the JDBC Statement type.

    Example: Creating a Statement Object
    Statement stmt = conn.createStatement(); 
      
    
    
    The Statement object is used to run static SQL queries that can be coded into the application.
     
    ORNEK: JSP içine html kodu yazarak kullanıcıdan veri alma


     


    Calıstırdıgımızda ekrana bu butonlar gelir.
     
     Programın outputunu ise html sayfasında degil eclipse console da goruruz.
     
    Ornek: Simdi ise aynı sekilde html formu ile kullanıcıdan inputlar alalım ama bu sefer
     responselar html sayfasında donsun.
     
    Index.jsp miz aynı kalır.Sadece servletimizde degişiklik yaparız.

     
     
     
     
    outputumuz ise su sekilde olur. 
     
     
     
     
    SCRIPLETS: <% %> tagleri arasına java kodları yazarız.Eger <%= %> kullanılmıssa burda sadece
    bir parametre olusturup kullanmamız gereklidir.
     
    <%= request.getParameter("name")%>
     
    RequestDispatcher defines an object that receives requests from the client and sends them
     to any resource(such as servlet, HTML file or JSP file) on the server.
     
    POSTGRESQL TABLOSUNUN İSTEDİGİMİZ BİR SATIRINA VERİ EKLEME:
    
    
    INSERT INTO tablo_adı(..,..,..,...) VALUES(..,..,..,..);
    
    
    Mesele user adında bir tablomuz olsun. bu tablonun user_id, user_name ve password gibi satırları 
    olsun.Bu tablonun 7 satırına bir veri eklemek istedigimizi dusunelim.
     
    INSERT INTO user(user_id,user_name,password) VALUES(7,'gamze','jfsjkel');
     
     
     
    
    
    
    


JSP-2



  • Mesela tablonun user_name i gamze olan satırını dondurmek isteyelim.
SELECT * FROM user where user_name='gamze';

bu sekilde yazınca aldıgımız sonuc :
7 gamze seklinde olur.

  • Tablonun herhangi bir satırındaki veriyi degistirme:
7 satırda bulunan user_name i gamze degil de gamze sen yapmak isteyelim.
UPDATE user SET user_name='gamze_sen' where user_id=7;
SELECT * FROM user;


Bu iki satırı yazıp teker teker calsıtırdgımızda 7 satırda artık gamze degil de gamze sne yazdıgını goruruz.
  • Tabloda bulunan satırları silmek istedigimizi varsayalım:
Mesela id si 5 ten buyuk olan satırları silelim.
DELETE FROM user where user_id>5;
SELECT * FROM user;

Bu sekilde sadece id si 5 ve 5 ten kucuk olan satırları goruruz.
  • Database talks in SQL but Java does not know how to talk in SQL.It needs a translator called JDBC(Java DataBase Connector).
ACID = Atomicity Consistency Isolation Durability 
  • Atomicity:  Based on all or nothing. Herhangi bir error, power failure veya crash durumunda statementlardan biri calısmazsa digerleri de calısmaz. Calısma durumunda da hepsi calısır.
<-- This is HTML Comment -->
<%-- This is JSP Comment--%>


JSP Expression Tag:

<%= statement %>

Sonuna ; koymaya gerek yoktur.
    
index.jsp

     <html>   
      <body>
       Current Time: <%= java.util.Calendar.getInstance().getTime() %>
      </body>
      </html> 
 
  
Kullanıcıdan user name alan bir ornek:



index.jsp
     <html>
       <body>
       <form action="welcome.jsp"> 
       <input type="text" name="uname"><br/>       
       <input type="submit" value="go"> 
       </form>   
       </body>
       </html>
  welcome.jsp
       <html>  
       <body> 
       <%= "Welcome "+request.getParameter("uname") %>
       </body>
       </html> 

SELENIUM

Selenium u kurmak icin
  • http://www.seleniumhq.org/download/ adresine git.
  • 2.9.0 a tıkla.
  • Selenium u ekle.
  • Highlight Elements baslıgı altındakı Downloads kısmına tıkla.Onu da ekle.
    Sonra Implıcıt Wait baslıgı altındakı downloads kısmını tıkla.Onu da ekle.
    Bu Kadar .......


    (FirePath ve Fire Bug u da ekle.)


JAVA-Bir zar atıldıgında her bir yuzeyin kac defa geldiginin tablosunu yazdıran kod

package javaCalisma01;
import java.util.Random;
public class main2 {
    public static void main(String[] args){
        Random dice = new Random();
        int frequency[] = new int[7];// bizim 1 ile 6 arasındaki sayıların kac kere
        //geldigini ogrenmemiz lazım.bunun icin 1 ile 6 arası sayılar lazım.Bunu
        //saglamak icin icin ancak 7 degerini verebiliriz.1 ile 6 arasını kullanıp
        //0 ı kullanmayız.eger 6 yapsaydık 0dan 5e kadar olacaktı.Bizim 0a ihtiyacımız
        //olmucaktı ama 6 ya ihtiyacımız var.
        for(int i=1;i<6;i++){
            ++frequency[dice.nextInt(6)+1];
        }
        System.out.println("Numbers\tValues");
        for(int i=1;i<frequency.length;i++){
            System.out.println(i+"\t"+frequency[i]);
        }
    }
}



Output su sekildedir:
Number    Frequencies
1                   1
2                   1
3                   0
4                   4
5                   0
6                   4

Örnek 2:Kactane oldugunu bilmedigimiz sayıların ortalamasını hesaplama:

public class main1 {
    public static void main(String[] args){Scanner scan = new Scanner(System.in);
        System.out.println(average(10,30,40,20,50));
       
       
    }
    public static int average(int...numbers){
        int total=0;
        for(int x:numbers)
            total+=x;
        return total/numbers.length;
    }
}