2 Ağustos 2018 Perşembe

begins python ile programlama'ya giris

Python veya herhangi bir dil ile komut satırı tabanlı basit uygulamalar geliştirken bile yazılımcıları uğraştıran bir takım işlemler var. Python için __name__ bazlı boilterplate kodlar, komut satırı argümanlarına args[...] ile ulaşma, ortam değişkenlerine erişme  bunlardan bazıları. Bunların hepsini harici bir kütüphane kullanmadan çözmek elbet de mümkün fakat begins ile bu işlemleri çok daha kolay yapabiliyoruz.



begins paketini pip ile kurmak tahmin edeceğiniz gibi çok basit:

pip install begins

Ardından kendi kendini açıklayan aşağıdaki örnek koda bakabiliriz:

import begin

@begin.start
def run(ad="Murat", soyad="Yildirim", renk="mavi"):
    print ad, soyad, renk

begin.start decorator'u ile ana fonksiyonumuzu işaretliyoruz. bu fonksiyona geçirdiğimiz parametlere ise artık komut erişebiliriz. örneğin:

python beginsdeneme.py --ad burak --soyad celik --renk kirmizi

ile ektra koda ihtiyaç duymadan bu parametreleri değiştirebiliriz.

benzer şekilde:
import begin

@begin.start(env_prefix="begins_")
def run(ad="Murat", soyad="Yildirim", renk="mavi"):
    print ad, soyad, renk

şeklinde env_prefix'i kullanırsak artık bu değişkenleri işletim sisteminin ortam değişkenlerinden de okutabiliriz. Özellikle upstart ve systemd gibi servis yöneticileri üzerinden bu scriptleri yapılandırmamız gerektiğinde ektra kod kalabalığına gerek duymadan bunu başarabilmek büyük avantaj.

örnek systemd konfigurasyonu şu şekilde olabilir

nano /etc/systemd/system/begins.deneme.service
[Unit]
Description=beginsdeneme
Requires=local-fs.target network-online.target
After=local-fs.target network-online.target


[Service]
Environment=ad=burak
Environment=soyad=yildirim
Environment=renk=turuncu
Type=simple
ExecStart=/usr/bin/python /root/beginsdeneme.py
WorkingDirectory=/root
Restart=always
RestartSec=10
LimitNOFILE=500000
LimitNPROC=500000
 
 

[Install]
WantedBy=multi-user.target

Ubuntu 14 için örnek upstart yapılandırması ise şöyle

nano /etc/init/beginsdeneme.config
description "beginsdeneme"

env ad=berk
env soyad=kacar
env renk=siyah

start on runlevel [2345]
stop on runlevel [!2345]

respawn
post-stop exec sleep 5
limit nofile 65000 65000


setuid root

chdir /root
exec /usr/bin/python beginsdeneme.js

begins in logging dahil bir çok ek özelliği de var. Boyutu oldukça ufak bir kütüphane olan begins'in python ile program geliştirmeye katkısı olduça büyük.

30 Haziran 2018 Cumartesi

Minecraft sunucu kurma, kiralama nasıl yapılır


Çok oyunculu olarak minecraft oynamak istiyorsanız aslında artık harici bir sunucuya ihtiyacınız yok. Minecraft Windows 10 Edition ile beraber arkadaşlarınızı Xbox üzerinden ekleyerek normal açıtğınız minecraft sunucusuna doğrudan bağlanmalarını sağlayabilirsiniz. Tabi bu şekilde açılan sunuculara bağlanabilmeniz için oyunu kuran kişinin sunucuyu açık tutması gerekiyor. Eğer sürekli açık bir minecraft sunucusuna ihtiyacınız varsa ya yüksek ücretli resmi çözüm olan minecraft realm sisteminden faydalanmanız ya da kendi işinizi kendiniz görüp bir linux sunucuya kendiniz minecraft sunucusu gerekiyor.

Öncelikle şunu belirtmek gerekir ki harici sunucularda survival mode oynamayı düşünüyorsanız hayal kırıklığına uğrayacaksınız. Survival mode'da kullanılan harita sunucu tarafında oluşturulduğu için orjinal minecraft haritası kadar detaylı değil ve modsuz olarak sade sunucu kurduğunuzda hayvan, zombie gibi survival mode'un olmazsa olmazları malesef varsayılan olarak yok. Eğer bunlarla uğraşmak istemiyorsanız resmi yollardan minecraft sunucusu satın almayı düşünebilirsiniz. 

Tüm bunlarla uğraşmak istemiyorsanız minecraft sunucu adresleri listeleri içeren bir çok kaynak mevcut. Bunlardan yararlanarak minecraft sunucu ekleme işlemi ile arkadaşlarınız ile birlikte sunucu kurulumu gibi karışık işlemlerle uğraşmadan beraberce minecraft oynayabilirsiniz. 

Bu rehberde Minecraft 1.40 Bedrock edition olarak da bilinen ve hem windows hem telefonlarda çalışan sürüm için kurulum yapımını inceleyeceğiz. Bu sürümü oynasana, durmaplay gibi sitelerden şu an indirimle beraber 6 lira gibi bir fiyata minecraft satın alma kodu yani gift code olarak temin edebilirsiniz. Bedava apk olarak indirdiğiniz sürümlerde de çalışıyor fakat bunların yasal olmadığını belirtmek gerekir.

Devam etmek ve kendiniz kurulum yapmak istiyorsanız minecraft sunucu açma işlemleri şu şekilde:

Öncelikle son sürüm bir ubuntu vps kiralıyoruz. Şu an için bu sürüm ubuntu 18. Ubuntu 14 ve Ubuntu 16 da bu kurulumu denedim ve doğrudan versionla ilgili sorun yaşadım. Bu nedenle mutlaka son sürüm bir ubuntu sunucu kullanın. 

Türkiyedeki sunucular ping açısından daha faydalı olacaktır. Bunun dışında ucuz sunucu bulmak istyorsanız lowendbox sitesini ziyaret edebilirsiniz. Kaliteli avrupa bazlı sunucuları düşünürseniz digitalocean, linode, vultr gibi firmaları önerebilirim. Ubuntu18 kullandığınız sürece kurulumda bir değişiklik olmayacaktır.

Bazı firmalar örneğin vultr minecraft için hazır sunucu hizmeti veriyor bunları kullanamayın, son sürüm  değil ve sorun çıkarıyor. Normal ubuntu 18 sunucu oluşturun ve putty yazılımı ile sunucuya bağlanın.  Aşağıdaki resimdeki gibi hazır minecraft sunucu kiralama seçenekleri düzgün çalışmıyor. 

Putty yazılımını https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html adresinden edinebilirsiniz


Sunucumuza bağlandıktan sonra öncelikle aşağıdaki komutlarla güncel hale getiriyoruz:

apt-get update
apt-get upgrade -y

Minecraft sunucumuz özel bir php üzerinden çalıştığı için pocketmine'a özel php yi aşağıdaki komutlarla sunucumuza indirip açıyoruz:


Ardından sunucunun kendisini aşağıdaki şekilde indiriyoruz.

Son olarak sunucumuzu başlatmak için gerekli ayarları içeren script dosyasını pocketmine ın github hesabından indirip kurulumu başlatıyoruz:


./start.sh komutuyla beraber kurulum işlemi başlayacak. Burada lisansı kabul edip sunucu ismi vs. verdikten sonra sunucumuza ip adresiminizi minecraft üzerinden ekleyerek bağlanabiliriz. Sunucu eklentilerl için ise aşağıdaki adresi kullanabilirsiniz:
https://poggit.pmmp.io/plugins

eğer minecraftı sunucunuzun başlangıçına koymak isterseniz 


nano /etc/systemd/system/minecraft.service

komutu ile metin editörüyle açtığınız dosyaya aşağıdaki servis tanımını girebilirsiniz.

[Unit]
Description=Minecraft
Requires=local-fs.target network-online.target
After=local-fs.target network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/screen -D -m -S "minecraft" -t "minecraft" /root/start.sh

[Install]
WantedBy=multi-user.target


Böylece indirdiğimiz minecraft sunucusu ubuntu 18 uyumlu bir systemd servisi tanımlamış olduk. Bu servisin sunucumuzun başlangıçına yerleştirmek içinse



systemctl enable minecraft

komutunu çalıştıyoruz. Bununla beraber artık teknik bir sorundan dolayı vps sunucumuz kapatılıp tekrar açılırsa minecraft sunucumuz da otomatik açılacaktır.



Minecraft sunucuları hakkında daha fazla kaynak için https://minecraft.gamepedia.com/Bedrock_Edition_server_software adresine bakabilirsiniz.


17 Ocak 2015 Cumartesi

Sentaks Blog'tan Merhaba

Sentaks Blog'un ilk yazısından herkese merhaba. İlerleyen günlerde burada programlama ve yazılım tasarımı hakkında kısa ipuçları ve çeşitli kaynaklar bulabileceksiniz.
Şimdilik bloğum sadece test yayınında ve alt yapısal bir takım süreçlerle uğraşıyorum. Bu nedenle bir süreliğine beklenti oluşturmamakta fayda var :) .
hmm