Merhaba arkadaşlar; Node.js ile Oyun Yazmak – Vue.Js Serisinde bugün veritabanı hazırlayıp onu entegre edeceğiz.

Ben bu proje için mysql kullanacağım. Siz istediğinizi kullanabilirsiniz.

Nasıl Olacak?

Öncelikle yapmak istediğimiz uygulamada bizlere nelerin gerekeceğini analiz etmemiz gerekecek. Şuan bize kullanıcıların tutulacağı id,kulllanıcı adı ve parola içeren bir tablo; puanların tutulacağı id, kullanıcı id, puan, puanın kaynağı(örneğin oyun kazandı, oyun bitmeden çıktı) içeren bir tablo şimdilik bizim için yeterli olacaktır.

 

 

Tablo Adı: users
Alan Adı Özellikler
ID Primary Key, BIGINT(20) AUTO_INCREMENT
USERNAME VARCHAR(50) NOT NULL
USERPASS VARCHAR(50) NOT NULL
REGISTERTIME BIGINT(20) NOT NULL(bigint olma sebebi, unix timestamp olarak tutacağız.)

 

 

Tablo Adı: votes
Alan Adı Özellikler
ID Primary Key, BIGINT(20) AUTO_INCREMENT
USERID Foreign Key, BIGINT(20) NOT NULL
VOTE INT(11) NOT NULL
VOTEDESCRIPTION VARCHAR(200) NULL DEFAULT NULL

 

Vertabanımızın çıktısıda burda:

Projemize Geri Dönelim

Veritabanımız oluşturduğumuza göre; nasıl entegre edeceğimize bakalım. Veri tabanına bağlanmak için sequelize kütüphanesini kullanacağız. Öncelikle projemize sequelize yi dahil edelim.

Mysql ile birlikte kullanacağımız için mysql kütüphanesinide dahil edelim.

Sequelize’de işlemleri daha hızlı halletmemiz için, model kullanacağız. Sequelize Model hakkında detaylı bilgi için: http://docs.sequelizejs.com/class/lib/model.js~Model.html
Sequelizenin otomatik olarak model oluşturmak için sequelize-auto isimli bir cli yardımcı araç içeriyor. Bunu kuralım.

Sequelize Auto hakkında detaylı bilgi için: https://github.com/sequelize/sequelize-auto

Öncelikle modelleri oluşturacağımız bir klasör oluşturalım. Bu klasör için sırayla; server klasörümüzün içine database isimli klasör oluşturalım, ardından dababase klasörümüzün içine models diye kalsör oluşturalım.

Şimdi modelimizi oluşturalım. Modelimizi oluşturmak için aşağıdaki kodu düzenleyerek terminalde çalıştıralım.

Bu işlem sonucunda models klasörümüzde users.js ve votes.js isimli iki adet model oluştuğunu göreceksiniz.

Son olarak veritabanı bağlantı dosyamızı ve sequelize ayarlarını yapalım. Bunun için database klasörünün içine index.js isimli bir dosya ekleyelim.

index.js içeriği:

Basit bir test yapalım. server/index.js dosyamıza öncelikle

kodumuzu ekliyoruz. Ardından test kodlarımızı yazıyoruz.

Toparlayalım; index.js şu şekilde oldu:

Şimdi server dizinine girip sunucuyu başlatıyoruz.

Ardından localhost:8081 adresini açıyoruz. Terminalimizde aşağıdakine benzer sonuç aldıysak herşey yolunda demektir.

Bu yazı biraz uzun oldu burda bırakalım, bir sonraki yazımda/dersimizde rest api/üye işlemlerini hazırlayacağız.

Merhaba arkadaşlar; Node.js ile Oyun Yazmak – Vue.Js Serisi’ne express kurulumu ve server kısmını ayağa kaldırarak devam ediyoruz.

Express Nedir?

Express node.js’de basit ve hızlıca bir web server oluşturmamızı sağlayacak bir uygulama/eklenti/component’dir. Hızlıca projemize dahil ederek başlayalım.

Projemize dahil etmek için aşağıdaki kodu çalıştıracağız.

Ardından server’da çalışacak kısımları server isimli bir klasörde tutacağız ki ilerleyen zamanlarda projemizde karışıklık olmasın. Başlanğıç için ve basitçe servere ayağa kaldırmak için içine index.js oluşturacağız.

index.js başlangıç için böyle olacak. (http://www.avarekodcu.com/konu/33/oyundaki-kullanicilarin-oturum-yonetimi-noy3)

Yukardaki kodları kaydedip çalışıp çalışmadığını test edelim. Bunun için server klasörü içindeyken aşağıdaki kodu çalıştıracağız.

Konsolda Uygulama 8081 portundan sunuluyor çıktısını görüyorsanız ve http://localhost:8081 adresine gittiğimizde aşağıdaki ekran görüntüsünü görebiliyorsak başarılı şekilde ilk adımı tamamlamışız demektir.

Konsalda CTRL + C diyerek yayını durdurabilirsiniz.

Oturum Yönetimi

Oturum yönetimi express-session ve redis ile yapacağız. Sessionları tutmak için redis kullancağız. Hızlıca express-session’u projemize dahil edelim.(Projenin anadizinine çıkmayı unutmayın.).

Ardından hızlıca redis’i kuralım.

Redis bellekte çalışan bir NoSQL veritabanıdır ve gerçekten hızlıdır. Bizim kullanmamızın amacı oturumları sorunsuz bir şekilde yönetmek. Buradan detaylı bilgi edinebilirsiniz.

Redis’i express üzerinde kullanmak için connect-redis kütüphanesini kullanacağız. Bu kütüphaneyi kullanmadan önce bilgisayarınıza redis’i kurmalısınız tabi:

Redis Server’i kullanbilmemiz için başlatmamız gerekmekte. Şu komutlarla konsolda başlatıyoruz:

Redis’i projemizde express ile entegreli kullanabilmek için redis ve connect-redis modüllerini projemize dahil edelim.

Şimdi bunları basitçe hazırladığımız serverimize entegre edelim. Fazla karışık olmaması adına server klasörüne uses.js adında bir dosya oluşturalım.

uses.js için kodlar şu şekilde:

Redis Serverin varsayılan portu 6379‘dir. Portu /etc/redis/redis.conf dosyasından değiştirebilirsiniz.

Şimdi index.js’ye dönüp bu kodlarımızı dahil edelim.

Şuanlık burda bırakalım. Önümüzdeki dersimizde veritabanını hazırlayıp bağlantı kuracağız. Ardından frontend’de üyelik ve giriş sayfası hazırlayacağız.

 

Merhaba arkadaşlar. Node.js ile Oyun Yazmak derslerimize vue.js ile birlikte başlayacağız.

Abdurrahman Eker(http://www.avarekodcu.com)’in hazırlamış olduğu React ile oyun yazma serisini(Satranç) vue.js ye çevirip anlatacağım. Bu vesile ile Abdurrahman Eker’e faydalı ve öğretici bilgileri için teşekkür ederim.

Orjinal Kaynak: http://www.avarekodcu.com/aramayap/kategori/7-noy

 

Proje için git deposu: https://gitlab.com/myazarc/satranc-vue

Vue.js

Vue.js için ayrı bir başlık açmayacağım; Vue.js hakkında temel bilginiz var olduğunu varsayıyorum. Eğer bilginiz yok ise; Türkiye’de Vue.js denince akla gelen ilk isim olan Fatih Acet’den öğrenebilirsiniz. Youtube’de bir çok ücretli olarak alamayacağınız dersleri bulunmakta. Youtube kanalına buradan, web sitesine buradan ulaşabilirsiniz.

Genel Bilgi

Oyunumuz: “Çevrimiçi Satranç Oyunu”

Evet bir satranç oyunu. En azından oynanmasını bilmeseniz bile duyduğunuzu düşünüyorum. 8×8 bir tahta üzerine yerleştirilen taşları hareket ettirerek oynanıyor. İki kişi ile oynanıyor. Yani sistemimizi iki kişilik bir sisteme göre tasarlayacağız. Oyunun birçok detayı var. Hatta bu konularda standartlar belirleyen kuruluşlar dahi var.

Projemize hızlı bir giriş yapalım şuanki kaynak ve öngürülere göre; backendde; socket.io, sequelize, express, express-session, redis-server, chess.js ve rest-api kullancağız. Frontendde ise vue-cli, vue.js, webpack, socket.io-client kullanacağız.

Satranç Oyunu ve chess.js için teknik ve detaylı bilgiye bu sayfadan ulaşabilirsiniz.

Sizden bir ricam olacak. Eğer Windows kullanıyorsanız bilgisayarınıza aynı zamanda Linux’u da kurmanız çok işe yarayacaktır. Bütün bu yaptıklarımızı orada yapmanızın sorunları azaltacağını düşünüyorum.(http://www.avarekodcu.com/konu/31/nodejs-ile-oyun-yazmak-javascript-serisi-noy1)

Kendim hem ofiste hem evde Ubuntu kullanıyorum. Tüm işlerimi rahatça ve özgürce hızlı bir şekilde minumun hata ile gerçekleştiriyorum. Ubuntu kullanma sebebim İngilizce/Türkçe kaynak olarak yeterince bilgi bulunması ve linux ortamında ki her programın neredeyse desteklenmesi.

Genel olarak bilgi verdiğimize göre projemize başlayabiliriz.

İlk önce vue-cli kurarak başlıyoruz.

Ardından vue-cli yardımıyla webpack templatemizi ve çalışma dizinimizi oluşturuyoruz. Ardından projemizi ayağa kaldırıyoruz.

Bu komutu çalıştırdıktan sonra bir kaç soru karşımıza çıkıyor enter ve aşağı yukarı ok tuşlarıyla seçecenekleri seçip en uygun proje altyapısını oluşturacağız;

Bu şekilde verileri girdikten sonra proje dosyamız oluşuyor ve sadece ayağa kaldırmak kalıyor. Hemen ayağa kaldıralım.

Bu aşamadan sonra şu çıktıyı gördüyseniz herşey yolunda demektir.

Birde http://localhost:8080 adresini ziyaret edelim.

Bu çıktıyı gördüysek sorunsuz devam edebiliriz.

Ben Visual Studio Code kullanıyorum, sizde kullanıyorsanız vetur, eslint, bookmarks, eslint  eklentilerini kurmanızı öneririm.

Bir sonraki dersimizde server ayağına başlayıp express, express-session ile projemiz için rest api yazmaya başlayacağız.

Proje için git deposu: https://gitlab.com/myazarc/satranc-vue

Sonraki derste görüşmek üzere, Hoşcakalın.

 

 

Merhaba arkadaşlar; uzun bir aradan sonra bir projeyi daha sizlerle paylaşmak istiyorum. Arduino Otomatik Sulama Sistemi. Bu projeyi 3 aşamada bitirmeyi düşünüyorum.

1) Amaç ve Malzemeler
2) Devre Şeması
3) Kodlama

1) Amaç ve Malzemeler

Evimde bir kaç çiçek ve kaktüs var. Kaktüsler her ne kadar çok fazla suya ihtiyaç duymasada bazen ne zaman suladığımı unutabiliyorum. Bunu çözmek içinde toprakdaki nem miktarına bakarak otomatik bir sulama sistemi yaparak sulamasını istiyorum. Şuan sadece kaktüslerim için bir sulama sistemi geliştireceğim. 5 kaktüsüm var. Ortalama 2 haftada bir 3 su bardağı su veriyorum. Ve ölçmem gereken bir konu var. nem miktarı sürekli azalıyormu yoksa belirli bir süre sonra sabit mi devam ediyor? Yani 10 gün sonra toprakdaki nem yüzde 5’e düşüp kalan 4 gün hep yüzde 5 olarak mı devam ediyor yoksa düşmeye devammı ediyor. Bunu uzun bir süre takip edeceğim. Böylelikle bu bilgiyi öğrenip devreye timer eklemem gerekiyor mu onu öğreneceğim.

Bu şekilde kafama takılan noktayı hallettikten sonra hesaplamaları ve kodları ona göre hazırlayacağım.

Kullanılması gereken malzemeleri paylaşalım ardından bir kaç bilgi ve nerden temin edebileceğinizin bilgisini vereceğim 🙂

Edit:

Biraz deneme ve araştırmadan sonra kaktüsümü sulamak için timer’a ve bunun içinde bir kaç malzemeye gerek var aşağıda belirtiyorum. Timer’a kullanma sebebim nem 0 olduktan sonra sulamak için 4 gün daha beklemek gerekiyor. Eğer basit nem oranı 0’a düşmeyecek ve bekleme yapmayacak sistem düşünüyorsanız bu proje biraz büyük kapsamlı kalır. Onun için internete bulunan basit sistemleri kullanmanız sizin yararınıza olacaktır.

Malzemeler:

  • Arduino Uno
  • 9V Pil
  • Breadboard
  • Bolca erkek-erkek,dişi-erkek,dişi-dişi Jumper kablo
  • 1 Adet Sıvı Pompalama Motoru (Dalgıç pompa veya harici pompa alabilrisiniz.)(RS-360SH Harici pompa alacağım)
  • Toprak Nem Sensörü
  • Timer(DS 1307 Kit)
  • AT24C02 EEPROM

Tedarikçiler:

Timer(DS 1307 Kit): http://www.roboweb.net/ds1307-real-time-clock-kit-rw-ml-1517.html
Diğer Malzemeler: http://www.robotistan.com

Merhaba arkadaşlar uzun bir aradan sonra mysql’de replikasyon yaptığımızda verilerin (aslında id diye belirttiğimiz benzersiz alanların) çakışmaması için ne yapılması gerektiğini(MySQL Auto-Increment Replikasyonu) ele alacağız.

Oldukça basit bir kullanımı var. Kaç veritabanı sunucusu olduğu ve hangi sırada olduğunu belirteceğiz. Ardıdan işlemi tamamlamış olacağız.

MySQL Auto-Increment Replikasyonu Başlıyoruz:

my.cnf ve my.ini dosyamızı açıyoruz.(Varsayılan Konum: Ubuntu: /etc/my.cnf; Windows: C:/ProgramData/MySQL/MySQL Server x.x/my.ini)

auto_increment_increment
auto_increment_offset

Bu iki satırı ekleyerek işlemi tamamlayacağız. Fakat bunu bütün replikasyondaki sunucularımıza yapmamız gerekiyor.

auto_increment_increment Kaç tane sunucumuz varsa onu yazıyoruz.
auto_increment_offset Her sunucuya benzersiz index numarası diyebiliriz. 3 tane replikasyonda cihazımızın olduğunu düşünürsek; sırayla 1-2-3 vermemiz gerekiyor.

3 serverimiz olduğunu ve bunlara A,B,C diye isimlendirdiğimizi varsayıyorum.

A Server

 

B Server

 

C Server

 

Configrasyon dosyalarını bu şekilde ayarladıktan sonra hepsini restart ediyoruz.

Burda gerçekleşen işlemi bahsetmek gerekirse;

AI=(AI_increment*artan AI)+AI_offset
(AI=autoincrement değeri)

Yani 3 serverda da;

Server A=(3*1)+1 //4
Server B=(3*1)+2 //5
Server C=(3*1)+3 //6

Server A=(3*2)+1 //7
Server B=(3*2)+2 //8
Server C=(3*2)+3 //9

Bu şekilde sürekli artarak gidecektir. Görüldüğü üzere asla farklı serverler asla birbiri ile çakışmayacaktır.

Daha fazla bilgi için: http://dev.mysql.com/doc/refman/5.7/en/replication-options-master.html

Biraz karışık anlattım sanırım; affola 🙂