AWS Web Site Mimarisi



AWS Web Site Mimarisi

AWS Ürünleri

Route 53: DNS yönlendirmesi yapan kısımdır.
Cloud Front: Cloud sisteminin kalbi diyebiliriz. Bu yapı sayesinde resim, video gibi dosyalarınız, istekte bulunan kişiye en yakın sunucuya bir kopyası atılıyor. Daha sonra giren kullanıcı artık bu lokasyondan dosyaları çekiyor.
Load Balancer: İstek sayılarını instancelara eşit olarak ayıran sistemdir.
EC2: Compile ettiğiniz dosyaların bulunduğu yerdir.
RDS: Veritabanınızın bulunduğu sunuculardır.
S3: Dosyalarımınızn(video, resim gibi) tutulduğu yerdir.

İşleyiş

İstekte bulunan kullanıcı ilk olarak route 53 yardımı ile sitemizin compile edilecek dosyalarını bulur. Bu kod sayafaları, istekte bulunulan sayfayı oluşturmaya başlar. Veritabanından çekmesi gereken verileri çeker. Gerekli resim ve videoları s3 üzerinden (Cloud Front) ile yerlerini işaretler ve kullanıcıya istekte bulunduğu sayfayı geri döner.

Gerektiği durumlarda, Compile edilen dosyalarımızın bulunduğu sunucular yoğunluğa göre artabilir, azalabilir. Veritabanımız da istek durumuna göre kendini genişletebilir veya daraltabilir.

Umarım faydalı olur. 
31 Ekim 2014 Cuma
Posted by Kadir ARLI

Laravel Çoklu Dil Uygulaması


Laravel Çoklu Dil Uygulaması


Laravel "You are arrived" yazısı ile karşılaştı iseniz, kurulumunuz bitmiş demektir. Çoklu dil özelliği olan bir website yapmak istiyorsanız yapmanız gerekenler şeyler laravel ile çok basit.

app/lan içerisindeki en dosyasını eklemek istediğiniz kadar çoğaltın. 

en dosyası içerisindeki validation.php dosyasına girelim.
tr dosyası içerisindeki validation.php dosyasına girelim.
Son olarak app/views/hello.php dosyasını açalım ve aşağıdaki gibi düzenleme yapalım.
Son  olarak web sitemizi açalım.


Posted by Kadir ARLI

Kütahyalı biri olarak porselene bakışım


Biz ve OnlinePorselen

Porselen hakkında başlangıç bilgisine sahip olmak için şu site bizlere yeter sanırım. Ben Kütahyalı biri olmama rağmen hayatımın hiçbir evresinde şimdi olduğu kadar porselen ile içli dışlı olmamıştım. Bunun sebebi şu günlerde porselen satışı yapan bir site hazırlığı içinde olmam. Neredeyse porselenlerin içinde doğmuş biri olarak bu iş bana hem gurur veriyor hemde çok heyecanlandırıyor. 

İlk aşamada sadece güvenli bir şekilde kullanıcıların isteklerine cevap vermeye çalışan Online Porselen isimli sitemiz ilerisi için daha değişik fikirler ile büyüyor. İnsanların porselen gibi eşyaları alırken dikkat ettiği kuralları çok iyi çalıştık. Sitemizi bu şekilde geliştirmeye çalışıyoruz. 

Bu duruma bir örnek vermek gerekir ise; insanlar porselen gibi eşyaları alırken onları en çok cezbeden şey elbetteki gözlerine hoş gelmesi ve ürünlere dokunmaları. İlk aşamada yapmaya çalıştığım şey ürünlerin görsellerini daha farklı nasıl sunabiliriz olacak. Gerçekten dükkandaki ürünlere bakar gibi hissettirmeye çalışacağız. Bu aşamayı rahat geçeceğimize inanıyorum. Bundan sonraki en büyük aşama ürünlere dokunmak geliyor ki, bu konuda belkide dünyada ilklere adım atacak fikirlerimiz var. Biz bu projeleri hayata geçirmek ve yepyeni bir ticaret ortamı oluşturmak istiyoruz. Amacımızı ilk aşamada sitemiz gözükse de biz insanların dükkanlardan ürün alır iken yaşadıkları hazları internet ortamına taşımak istiyoruz.

Bu konuda her türlü fikire açığız ve desteklerinizi bekliyoruz.

Hosting Firması ve Sunucu Tercihi


Hosting Firması ve Sunucu Tercihi


Yeri ve zamanı geldiğinde her firma veya şahıs sunucular ile tanışmak zorunda kalıyor ve bu süreçte "En iyi hosting firması, benim şu şekilde bir projem var bunu uygun hosting nedir, bandwidth" falan derken iş çığrından çıkıyor. Ben bu makalede sizlere size en uygun sunucuyu seçemeniz için yol göstermeye çalışacağım.

Sunucu almadan önce bilmeniz gereken ilk şey sunucu tipleri nelerdir?


  1. Paylaşımlı Sunucu(shared): Bir bilgisayar üzerinde, size tahsis edilmiş bir alanı kullanmaya yetkiniz oluyor sadece. O bilgisayarı, sizin gibi kullanan birçok insan var. Ufak projeler için ucuz ve kullanılabilir. Bu bilgisayarı yönetemezsiniz.
  2. VPS(Sanal Özel Sunucu): Bir bilgisayar üzerine, vmware gibi sanal işletim sistemi yüklenebilen ve o bilgisayarın donanımını belli kısıtlar ile kullanan bir yapı. Tek bilgisayar ama sanal olması hasebi ile sadece size ait ayarlar. Bu bilgisayarı yönetebilirsiniz. Pek tutulan bir yöntem değil diye biliyorum. Paylaşımlı Sunucunun biraz gelişmiş hali diyebiliriz.
  3. Dedicated Server: Türkçe karşılığını bilmiyorum ama hosting firmasının sunucu odasında artık size ait bir bilgisayarınız olabilir bu sunucu tipi ile. Bilgisayarı sizden başkası kullanamıyor ve bu sebep ile yönetebiliyorsunuz. İşleriniz büyüdükçe almak zorunda kalacağınız veya ben sunucuma istediğimi yaparım arkadaş derseniz tercihiniz dedicated server olmalı.
  4. Bulut Sunucu: Nam-ı diyar cloud. Çalışma alt yapısı şu şekilde. Hosting şirketiniz,n ne kadar bilgisayarı varsa hepsi sizin için çalışabiliyor. Yani bütün bilgisayarları birbirine bağlayan bir alt  yapı oluşturuyorlar. Sizin dosyalarınız bu ağ içerisinde oluyor. 300 gHz, 500 tb 300 gb ram gibi bir alt yapı sunuyorlar size.

Şimdi gelelim, size uygun sunucu seçimine.


Eğer ufak çaplı bir siteniz olacak ise; bu kurumsal bir site olabilir veya bir tanıtım sitesi olabilir. Bu tarz siteler için shared hosting önerilebilir. Maliyeti oldukça düşüktür. 

Artık işler büyüdü ve yönetilebilir bir sunucu istiyorsanız burada ilk yine sitenizin durumuna göre en düşük seviye de Sanal Sunucular geliyor. Dedicated Sunuculara göre daha uygundur.

Kendi sunucum olsun. Kimse ile sunucu kaynaklarımı paylaşmak istemiyorum diyorsanız burada dedicated sunucular başlıyor. Tamamen size ait bir bilgisayarı hosting firması sizin adınıza, sizin istediğiniz özelliklerde hazırlıyor ve size sunuyor. İşler büyüdükçe bu bilgisayarın ramini, harddiskini artırabilirsiniz.

Son olarak yeni çıkan bir teknoloji olan bulut sunuculara bakalım. Bir sosyal paylaşım sitesi yapmak istiyorsunuz. Kullanıcı sayısı oldukça fazla olacağını düşünüyorsunuz ama ne kadar yoğun olur kestiremiyorsanız, bulut sunucu tam size göre. Bulutu sunucuda yoğunluğa göre artan donanım siteklerinize anında yanıt verebiliyor. Diyelim 1 saat önce sitenize 5 kişi girdi ise hosting firması sizden bu 5 kişinin kullandığı ram ve harddisk parasını alır. Şimdi ise 1 milyon kişi girdi sitenize, hosting firması yine kullandığınızı ram ve harddisk kadar sizden para alır. Bu aşamada siz minimum seviyeyi belirtmelisiz. 3.0 gHz işlemci, 8 gb ram, 80 gb harddisk gibi. Başlangıç olarak.

Yukarıda anlatılanlara ek olarak hosting firması seçilir iken bakılması gerek kriterler şunlardır:


  1. Hosting firmasının şu anki sitesi
  2. Hosting firmasının büyüme hızı
  3. Kullanıcılara sundukları sunucu çeşitleri
  4. Kullanıcılara verdikleri destekleri, sorunuza cevap süreleri
  5. Hosting firmasına yapılan yorumlar
  6. Ne kadarlık disk alanı veriyor?
  7. Bandwidth genişlikleri
  8. Bağlantı hızları
  9. Uptime( Vaad edilen sunucuları stabil durumları)
  10. Sağladığı sunucuların size uygunlukları
  11. Güvenlik politikaları
  12. Kullandıkları işletim sistemleri
  13. Sunucu lokasyonları
  14. Ücretleri
Yukarıda sayılan kritelere de dikkat edilmesi gerekmektedir.

En iyi hosting firmaları nelerdir peki?


Araştırmalarıma göre bugün itibari ile
  • goDaddy
  • HostGator
  • bluehost
en çok tercih edilen hosting firmaları.

Bulut sunucu hizmeti sağlayan en iyi hosting firması ise;
  • Amazon Web Service(AWS)

Neden AWS?


EC2 adında 2002 yılında çıkarmış oldukları sistem bugünkü adı ile bulut sistemiydi. Yani hosting firmalarının yeni tanıştığı bu sunucu sistemini AWS 2002 yılında kullanıyor durumdaydı. Hal bu olunca şu anki yeni başlamış sunucular bu sistemlerde daha bebek sayılır. AWS ise bu işte ayakları yere basan bir firma olmuştur.

Sonuç


Yukarıda anlatılanların hepsi araştırmalarım sonucunda çıkmıştır. Atladığım yerler elbet olabilir. Hosting firmaları seçiminde, birçok sitede yapılan sıralamalar sonucunda bu kanılara vardım. Şu anda AWS kullanıyorum ve gayet memnunum ama yarın ne olur bilinmez. 

Yeni teknolojiler çıkana kadar hoşçakalın.

Zend Studio'dan bir ilk

Fazla söze gerek yok, kaynaklar konuşsun...

http://venturebeat.com/2012/10/23/php-developers-you-must-see-this-creating-a-cloud-enabled-native-mobile-app-in-10-minutes-or-less-in-zend-studio/

http://files.zend.com/help/Zend-Studio/zend-studio.htm#developing_mobile_applications_with_zend_studio.htm


9 Ekim 2014 Perşembe
Posted by Kadir ARLI

Mobil Uygulama Geliştirme: HTML5 ile Kendi Dillerinde Yazılmış( Native ) Karşılaştırma

Giriş

HTML5 hem web hem de mobil uygulamalarda çalışma imkanı sağlıyor. Mobil uygulama geliştirmeye "tek kod yaz, birden fazla platformda çalıştır" sloganıyla çıktı. Peki. Mobil uygulamalar için gerçekten uygulanabilir mi? Bu makale HTML5 ile Native arasındaki avantaj ve dezavantajları konu edinmiştir.                                                                                    

Mobil Cihaz Özelliklerine Erişim ve Kullanım

Native: Daha fazla özelliğe erişim var ve yeni eklenen özelliklere en kısa sürede siz erişiyorsunuz.
HTML5: Özelliklerin çoğuna erişiyor fakat yeni özellikler için biraz beklemesi gerekiyor.

Performans

Native: Tabiki daha hızlı.
HTML5: Cordoba gibi ara katmanlar kullanıldığı gibi yavaş fakat uygulamanız ufak ve az içerikli ise hızı ayırt edemezsiniz.

Geliştirici Deneyimi

Native: Yeni dil öğrenmek zorunda kalmak zaman alıyor fakat kod geliştirme esnasında editörlerinde desteği ile bu süre kısalıyor. 
HTML5: Birden fazla platformu aynı anda geliştirme imkanı yönünden avantajlı olarak görülüyor. Hata tespiti daha zor

Görünüm

Native: Kendi componentlerini kullandığı için bildiğimiz ve tanıdığımız mobile uygulaması görünüömü herzaman mevcutç
HTML5:Burada biraz tasarım parçalamanız gerekiyor. Componentleri mobil komponentler şeklinde tasarlanamanız, artık bazı yerlerde tıklama ile değil kaydırma ile işlemlerinizi yapmanız gerekiyor.

Keşfedilebilirlik

Native: Google ve Apple şirketlerinin oluşturdukları uygulama marketleri sayesinde yeni uygulamalar keşfetmek çok kolay.
HTML5: Hiç şüphe yok ki,web ortamı şimdiye kadarki en çok keşfedilen yazılım ortamıdır. 

Para Kazanma

Native: 1 dolardan milyon dolar kazanan uygulamalar oldu, duyduk bunları. Para kazanmak açısından avantajlı bir yer.
HTML5: Web ortamında çıkışından bu güne kadar çok çeşitli şekillerde insanlar paralar kazandılar ve hala kazanmaya devam ediyorlar.

Sonuç

Burada galip olanı açıklamak çok iyi olurdu fakat kazanan yok malesef. Eğer yapacağız uygulama ufak ve geliştirmeye kapalı ise HTML5 destekli cross platformları kullanabilirsiniz ama uygulamanız kapsamlı ve performanslı olmasını istiyorsanız native olarak kodlama yapmanız daha iyi olacak.


Olay güdümlü programlama nedir?

Programlamaya yeni başlayanlar özellikle bu ifadeyi en başlarda çok sık duyarlar ve tam olarak bu ifadeyi iyice anlamak bu noktada çok önemlidir. Nedir olay güdümlü programlama, evrensel olarak da tanımladığımız event driven programming yani, şimdi bu yazımız da bunu tanımlayalım.
Bilindiği üzere Windows tabanlı bir uygulamada program kullanıcının gerçekleştirdiği davranışlara göre yürütülmektedir. Peki nedir bu davranışlar? Örnek olarak kullanıcının Mouse ile ekranda bir noktaya tıklaması veya çift tıklaması, ya da bu noktanın üzerine gelmesi veya klavye hareketi ile bir takım işlemler yapması, onaylaması veri girmesi gibi durumlar kullanıcı davranışı yani olaylar olarak adlandırılır. İşte bu olaylar gerçekleştikten sonra bizim yapmış olduğumuz uygulama ne yapacak? Yeni bir form mu açacak, başka bir uygulama mı çalıştıracak tam olarak ne yapacak? Bizler bu tam olarak ne yapacak kısmını bu olaylar tetiklendikten sonra çalıştırılacak olan metotlarımızda, fonksiyonlarımızda belirtiyoruz. İşte olay güdümlü programlama budur, yani bir olayın ardından ilgili metotların tetiklenmesidir. Bir bileşen üzerinde meydana gelen olayları karşılayan birim ise event handler yani olay yöneticisi olarak adlandırılır.
Windows tabanlı uygulamalar hazırlarken mutlaka uygulamamızda bir adet Windows formu vardır, bunlara kısaca WinForm adı verilir. Bu WinForm’lar üzerinde biz uygulamamızın gerektirdiği şekiller altında çeşitli kontroller kullanabiliriz, bunlar buton, textbox, combobox , listbox gibi hepsinin adını buraya yazamayacağım kadar çok olan ve .NET ortamının bize sunmuş olduğu kontrollerdir ve bu kontrollerin hepsi System.Windows.Forms isim uzayı altında bulunmaktadır.
Kullanıcının bu formlar üzerinde oluşturduğumuz kontrollere tıklaması, sağ veya sol tıklaması, üzerine gelmesi, üzerinden ayrılması, klavye hareketlerimiz gibi bir çok işlem aslında birer olaydır. Bu olayların sonucunda ilgili olay yakalanır ve bir temsilci yani bir delegate vasıtası ile buna bağlı olan metot çalıştırılır. Böylelikle kullanıcı ile yaptığımız uygulama arasında bir etkileşim sağlanmış olur.
Kaynak: http://www.ismailgursoy.com.tr/olay-gudumlu-programlama-nedir/
Posted by Kadir ARLI

Centos Mysql Connect

How Do I Enable Remote Access To MySQL Database Server?

by  on MARCH 31, 2006 · 158 COMMENTS· LAST UPDATED JULY 20, 2013
in 
By default remote access to the MySQL database server is disabled for security reasons. However, some time you need to provide remote access to database server from home or a web server. This post will explain how to setup a user account and access mysql server remotely.

Task: MySQL Server Remote Access

You need type the following commands which will allow remote connections.

Step # 1: Login Using SSH (if server is outside your data center)

First, login over ssh to remote MySQL database server. You may need to login to your MySQL server as the root user:
ssh user@server1.cyberciti.biz
### login as the root using su or sudo ##
su
#sudo -s
 
OR directly login as root user:
ssh root@server1.cyberciti.biz

Step # 2: Edit the my.cnf file

Once connected you need to edit the MySQL server configuration file my.cnf using a text editor such as vi:
  • If you are using Debian Linux file is located at /etc/mysql/my.cnf location.
  • If you are using Red Hat Linux/Fedora/Centos Linux file is located at /etc/my.cnflocation.
  • If you are using FreeBSD you need to create a file /var/db/mysql/my.cnf location.
Edit the /etc/my.cnf, run:
# vi /etc/my.cnf

Step # 3: Once file opened, locate line that read as follows

[mysqld] 
Make sure line skip-networking is commented (or remove line) and add following line
bind-address=YOUR-SERVER-IP
For example, if your MySQL server IP is 65.55.55.2 then entire block should be look like as follows:
[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
language        = /usr/share/mysql/English
bind-address    = 65.55.55.2
# skip-networking
....
..
....
Where,
  • bind-address: IP address to bind to.
  • skip-networking : Don’t listen for TCP/IP connections at all. All interaction with mysqld must be made via Unix sockets. This option is highly recommended for systems where only local requests are allowed. Since you need to allow remote connection this line should be removed from my.cnf or put it in comment state.

Step# 4 Save and Close the file

If you are using Debian / Ubuntu Linux, type the following command to restart the mysql server:
# /etc/init.d/mysql restart
If you are using RHEL / CentOS / Fedora / Scientific Linux, type the following command to restart the mysql server:
# /etc/init.d/mysqld restart
If you are using FreeBSD, type the following command to restart the mysql server:
# /usr/local/etc/rc.d/mysql-server stop
# /usr/local/etc/rc.d/mysql-server start

OR
# /usr/local/etc/rc.d/mysql-server restart

Step # 5 Grant access to remote IP address

Connect to mysql server:
$ mysql -u root -p mysql

Grant access to a new database

If you want to add a new database called foo for user bar and remote IP 202.54.10.20 then you need to type the following commands at mysql> prompt:mysql> CREATE DATABASE foo;
mysql> GRANT ALL ON foo.* TO bar@'202.54.10.20' IDENTIFIED BY 'PASSWORD';

How Do I Grant Access To An Existing Database?

Let us assume that you are always making connection from remote IP called 202.54.10.20 for database called webdb for user webadmin, To grant access to this IP address type the following command At mysql> prompt for existing database, enter:
mysql> update db set Host='202.54.10.20' where Db='webdb';
mysql> update user set Host='202.54.10.20' where user='webadmin';

Step # 6: Logout of MySQL

Type exit command to logout mysql:mysql> exit

Step # 7: Open port 3306

You need to open TCP port 3306 using iptables or BSD pf firewall.

A sample iptables rule to open Linux iptables firewall

/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT
OR only allow remote connection from your web server located at 10.5.1.3:
/sbin/iptables -A INPUT -i eth0 -s 10.5.1.3 -p tcp --destination-port 3306 -j ACCEPT
OR only allow remote connection from your lan subnet 192.168.1.0/24:
/sbin/iptables -A INPUT -i eth0 -s 192.168.1.0/24 -p tcp --destination-port 3306 -j ACCEPT
Finally save all rules (RHEL / CentOS specific command):
# service iptables save

A sample FreeBSD / OpenBSD pf rule ( /etc/pf.conf)

pass in on $ext_if proto tcp from any to any port 3306
OR allow only access from your web server located at 10.5.1.3:
pass in on $ext_if proto tcp from 10.5.1.3 to any port 3306  flags S/SA synproxy state

Step # 8: Test it

From your remote system or your desktop type the following command:
$ mysql -u webadmin –h 65.55.55.2 –p
Where,
  • -u webadmin: webadmin is MySQL username
  • -h IP or hostname: 65.55.55.2 is MySQL server IP address or hostname (FQDN)
  • -p : Prompt for password
You can also use the telnet or nc command to connect to port 3306 for testing purpose:
$ echo X | telnet -e X 65.55.55.2 3306
OR
$ nc -z -w1 65.55.55.2 3306
Sample outputs:
Connection to 65.55.55.2 3306 port [tcp/mysql] succeeded!
kaynak: http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html
Posted by Kadir ARLI

PHP iP adresi ile çalışmak

Çalışan bir PHP sistem içerisinde bir değişiklik yapmanız gerekir ise, aşağıdaki kodu kullanabilirsiniz.

İlk olarak ip adresimizi öğrenelim:

<?php
$ipadres=$_SERVER['REMOTE_ADDR'];
echo "Ip Adresiniz: $ipadres";
?>

Sonrasında yapacağımız işlemi ağaşağıdaki if bloğunun içine koyabiliriz;

<?php
$ipadres=$_SERVER['REMOTE_ADDR'];
if ($ipadres = "192.168.2.1") {
//yapacağız işlem
}
?>
Posted by Kadir ARLI

Telefon üzerinde açılır kapanır menü - jquery

Telefondaki parmak mouse olduğuna göre, o parmağın yönünü bulursak, facebook ve twitter gibi programların açılır kapanır menüsünü yapabilir. Başlangıç için bu kodu paylaşıyorum. Sakın uzun gelmesin, hemen kopyalayıp deneyin.

<script>
var ilkX;
var sonX;
var ilkY;
var sonY;
var control = 0;
    var sag = 0;
    var sol = 0;
$( "body" ).mousemove(function( event ) {
if(control == 0){
ilkX = event.pageX;
ilkY = event.pageY;
control = 1;
}
else{
sonX = event.pageX;
sonY = event.pageY;
        $("#x").val(sonX);
        $("#y").val(sonY);
/*1. bölge*/
        if((sonX > ilkX)&&(Math.abs(sonX - ilkX) > Math.abs(sonY - ilkY))){
            $("#direction").val("sağ");
            sag++;
            sol = 0
            if(sag == 5){
                alert("Bildirimler Kapanır.");
            }
        }
   else if((sonX < ilkX)&&(Math.abs(sonX - ilkX) > Math.abs(sonY - ilkY))){
            $("#direction").val("sol");
            sol++;
            sag = 0;
            if(sol == 5){
                alert("Bildirimler Açılır.");
            }
        }
   else if((sonY > ilkY)&&(Math.abs(sonX - ilkX) < Math.abs(sonY - ilkY))){
            $("#direction").val("aşağı");
        }
   else if((sonY < ilkY)&&(Math.abs(sonX - ilkX) < Math.abs(sonY - ilkY))){
            $("#direction").val("yukarı");
        }
        control = 0;
}
});
</script>
23 Eylül 2013 Pazartesi
Posted by Kadir ARLI

Popular Post

Bir Aylık Ziyaretçi Sayısı

Kadir ARLI. Blogger tarafından desteklenmektedir.

İzleyiciler

- Copyright © Kadir ARLI - Metrominimalist - Powered by Kadir ARLI - Designed by Johanes Djogan -