-- Genel

Bulutfon Projeleri (Yazılım Entegrasyon) ve Cloud IP Santral Çözümleri

Profesyonel Sanal Santral Çözümleri Bilgi ve Destek
Bulutfon Projeleri ve Cloud IP Santral hakkında bilgi almak ya da kurumsal yazılım, proje geliştirme hizmetleri için 

0850 302 66 42 veya web@tuva.me adresinden ulaşabilirsiniz.

Hemen 850’li Numara Al

Ofisiniz Cebinizde
Bulutfon cep uygulaması ile cep telefonunuza yüklediğiniz dahili numaranız ile her zaman ofisinizdeymiş gibi görüşebilirsiniz. Hem de ofis numaranızdan

Dahililer arası ücretsiz görüşme
Bulutfon cep uygulaması ile tüm çalışanlarınız birbirleri arasında ücretsiz görüşebilirler.

Yetkilendirilmiş Dahili
İsterseniz tüm çalışanlarınızın sadece kendi arasında görüşmesini, Dışarı arama yapmamalarını sağlayabilirsiniz.

%70 Ucuza Konuşabilirsiniz.
VOIP Teknolojisi internet üzerinden görüştürdüğü için ve numaralarınıza sabit ücret ödemediğiniz için mevcut analog santralinizden %70 e varan ucuzlukta konuşabilirsiniz.

Santralinizi hemen kullanmaya başlayın.

Bulutfon Ön bilgi ve Destek
Bulutfon Projeleri ve Cloud IP Santral hakkında bilgi almak ya da kurumsal satış ve destek hizmetleri için 0850 302 66 42 veya web@tuva.me adresinden ulaşabilirsiniz.

Download videos from any site with youtube-dl

Continuing on last week theme of downloading videos, youtube-dl is a nifty little utility that allows you to download videos to watch later, or for safekeeping.

Install with Homebrew:

You can now download videos from YouTube, BlipTV, Brightcove, Dailymotion, TED and many other supported sites:

That’s it for today.

Enjoy!

Setting up a wildcard DNS domain on Mac OS X

Setting up a wildcard DNS domain on Mac OS X

There are many ways to develop on a Mac, and many stack to choose from. One common and recurring need however is to access your local websites through a named domain, ie using example.dev. Thankfully, there is a really simple way to do this using Dnsmasq as a local resolver.

Install Dnsmasq

This is straightforward with Homebrew:

Configure Mac OS X

All we need to do is tell the resolver to use Dnsmasq for .dev domains:

 

You can now use any .dev domain and it will always resolve to 127.0.0.1:

 

Conclusion

This is very useful in particular for applications that use subdomains as account identifier: you can easily create new accounts on the fly, and never have to worry about your /etc/hosts file again.

Finally, you may also want to look at Pow (and powder). Pow will automatically start your Rails/Rack applications, and provides a port proxying feature for apps written in other languages. Definitely a great alternative.

That’s it for today.

Cheers!

fcrackzip example usage and Install fcrackzip on Mac OSX

About the App

Install the App

  1. Press Command+Space and type Terminal and press enter/return key.
  2. Run in Terminal app:
    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null
    and press enter/return key. Wait for the command to finish.
  3. Run:
    brew install fcrackzip

Done! You can now use fcrackzip.

Example

tuva  ~:  fcrackzip -l3 -u example.zip

PASSWORD FOUND!!!!: pw == a3ff

or

tuva  ~: fcrackzip -D -p password-list.txt -u example.zip

How To Create Facade On Laravel 5.2

Here is step by step to create facade on laravel 5.2

Create PHP Class File.

Bind that class to Service Provider

Register that ServiceProvider to Config\app.php as providers

Create Class which is this class extends to Illuminate\Support\Facades\Facade

Register point 4 to Config\app.php as aliases
Step 1 – Create PHP Class File, for example in App\Classes\Someclass.php

Step 2 – Bind that class to Service Provider

In case i create a new serviceprovider by execute

then add

Like so

Step 3 – Register that ServiceProvider to Config\app.php as providers

Step 4 – Create Class which is this class extends to Illuminate\Support\Facades\Facade

For Example I create this class in App\Facades\Someclass.php

Step 5 – Register point 4 to Config\app.php as aliases

Testing
On App\Http\routes.php create single route

Then check on your browser

Git Notları

# —————————————————————————–
# GIT NOTLARI
# —————————————————————————–

# Paketlerin yüklenmesi
aptitude install git

# kullanıcı bilgileri
git config –global user.name “Tuva Ergun”
git config –global user.email “web@tuva.me”
git config –list
cat ~/.gitconfig

# ~/.gitconfig
[user]
name = Tuva Ergun
email = web@tuva.me
[push]
default = simple
[color]
branch = auto
diff = auto
status = auto

# Ana depo oluşturmak
mkdir repositories
cd repositories
mkdir repo1.git
cd repo1.git
git init –bare

# Yerel depoyu, ana depodan klonlayarak oluşturmak
– Aynı makinedelerse
mkdir repositories
cd repositories
git clone –no-hardlinks ~/repositories/repo1.git

– SSH ile bağlanılacaksa
mkdir repositories
cd repositories
git clone ssh://kullanici@sunucu.adresi:22/~/repositories/repo1.git

# Yerel depo oluşturmak (ana depo kullanılmayacak)
mkdir repositories
cd repositories
mkdir repo1.git
cd repo1.git
git init

# Yerel depoda yapılabilecek ilk işlemler (depo henüz boş)
cd repositories/repo1.git
vim .gitignore
(sürüm kontrolü yapılmayacak dosyalar/klasörler yazılır)

(Dosyalar ve klasörler oluşturulur)
git add -A
git commit -m “depo ilk hal”

# Ana depo varsa, ana depo güncellenir
git push origin master

# git add (calisma alanindaki degisiklikleri indekse ekleme)
git add file(s) # belirtilen dosyalari eklemek
git add . # degisen ve yeni eklenen dosyalari eklemek
git add -u # degisen ve silinen dosyalari eklemek
git add -A # degisen, yeni eklenen ve silinen dosyalari eklemek

# git commit (indeks durumunu, yerel depoya kaydetmek)
git commit -m “aciklama notu”

# git push (yerel depodaki değişiklikleri, ana depoya aktarmak)
git push

# git pull (ana deponun son halini, çalışma alanına almak)
git pull

# git diff (farkları görmek)
– calisma alani ve indeks arasindaki farklar
git diff
– calisma alani ve yerel depo arasindaki farklar
git diff HEAD
– merge’den etkilenen dosyaların listesi
git diff –name-status

# git status (calisma alaninin indeks ve yerel depoya gore durumu)
git status

# git log (commit loglarini gosterme)
git log

# Çalışma alanında yapılan değişikliği geri almak
– henüz add yapılmamışsa…
git checkout file(s) # indeksteki kopyaya donme
git checkout . # indeksteki kopyaya donme

– add yapılmışsa, dolayısı ile indeksteki kopya da değişmiş…
git checkout HEAD file(s) # yerel depodaki kopyaya donme
git checkout HEAD . # yerel depodaki kopyaya donme

# git reset (yapılan commit’i iptal etmek)
git reset –hard HEAD~1 # 1 commit geri dönülür.
# indeks eski haline gelir.
# calisma alani eski haline gelir.

git reset HEAD~1 # 1 commit geri dönülür.
# indeks eski haline gelir.
# calisma alanindaki degisiklikler korunur.

git reset –soft HEAD~1 # 1 commit geri dönülür.
# indeksteki degisiklikler korunur.
# calisma alanindaki degisiklikler korunur.

# git revert (yapılan commit’i iptal eden patch ekleme)
git revert

# eski surumlere ulaşmak
git log file1
git show 0323e5918144ec29a069c7ab23cac40ed921d31d:file1
git show HEAD:file1
git show HEAD~2:file1

git tag v0.1 0323e5918144ec29a069c7ab23cac40ed921d31d
git show v0.1:file1
git show v0.1:file2

vim file1
git reset file1
rm file1
git checkout -f file1

# Güncelleme çakışmalarını çözmek.
– push aşamasında aynı anda güncellenmiş dosyaların listesi yer alır.
– Dosya içinde eklenen ve çıkan satırlar işaretlidir. Bu kısımlar
düzeltilir.
– Düzeltilmiş değişklikler commit edilir.
git add .
git commit -m “merged”
git push

# branch ile çalışma
– branch oluşturma
git branch test

– branch listesi
git branch

– branch değiştirme
git checkout test
git checkout master

– branch merge
git checkout test
git commit -a
git checkout master
git commit -a
git merge test

– branch silme
git branch -d test

# depoyu klonlamak (klasör henuz yok, emc2-dev adıyla oluşacak)
git clone git://git.linuxcnc.org/git/emc2.git emc2-dev

# henüz yayınlanmaya hazır değişikliklerimiz varken depodan güncelleme
git stash save
git pull
git stash apply

# Birden fazla remote depo ile çalışmak
– remote listesi
git remote -v

– remote ekleme
git remote add github git@github.com:tuvaergun/www_tuva_m.me.git

– remote silme
git remote rm github

– remote push
git push origin master
git push github master

# —————————————————————————–
# GITOLITE SUNUCU
# —————————————————————————–

# Paketlerin kurulumu
aptitude install gitolite
dpkg-reconfigure gitolite

# Gitolite home klasörünü değiştirme
normalde /var/lib/gitolite kullanılıyor. Gerekmiyorsa değiştirme.

mkdir /home/gitolite
chown gitolite: /home/gitolite
vim /etc/passwd
gitolite home klasörü -> /home/gitolite

# Gitolite kullanıcısı için ssh erişim izni.
vim /etc/ssh/sshd_config
AllowUsers tuva gitolite

# Gitolite admin kullanıcısının public anahtarı
cp tuva.pub /tmp/
chmod a+r /tmp/tuva.pub
su -l gitolite
gl-setup /tmp/tuva.pub

# —————————————————————————–
# GITOLIE CLIENT (ADMIN)
# —————————————————————————–
Bu işlemler, admin kullanıcısının makinesinde yapılır.

# Anahtarı yükleme
ssh-add .ssh/tuva

# Gitolite admin deposunu klonlama (SSH 22. port ile)
git clone ssh://gitolite@10.10.10.10:22/gitolite-admin
cd gitolite-admin
git pull

# Kullanıcı ve depo ekleme
Kullanıcının public anahtari alınır ve kullanıcının adı ile kaydedilir.
depo1 adlı depoda kullanici1’in yazma/okuma, kullanici2’nin sadece okuma hakkı
olacaksa:

cp kullanici1.pub gitolite-admin/keydir/
cp kullanici2.pub gitolite-admin/keydir/
vim gitolite-admin/conf/gitolite.conf
repo depo1
RW+ = kullanici1
R = kullanici2

git status
git add -A
git commit -m ‘depo1, kullanici1 ve kullanici2 eklendi’
git push

# —————————————————————————–
# GITOLIE CLIENT (USER)
# —————————————————————————–
Bu işlemler, Gitolite depolarını kullanacak kullanıcıların makinelerinde
yapılır.

# Anahtarı yükleme
ssh-add .ssh/kullanici1

# Depo boşken ilk kullanıldığında
git clone ssh://gitolite@10.10.10.10:22/depo1
cd depo1
touch OKUBENI
git add -A
git commit -m “depo1 olusturuldu”
git push origin master

# Depoyu klonlama
git clone ssh://gitolite@10.10.10.10:22/depo1
cd depo1
git pull

# Depodan son değişiklikleri alma
git pull

# Yapılan değişikliklerin depoya yüklenmesi
git status # degisen dosyalar
git diff # farkliliklari gormek icin
git add -A # commit listesine ekleme
git commit -m ‘aciklama’ # yerel depoyu guncelleme
git push # ana depoyu guncelleme

# Yapılan değişiklikleri yerel depomuzda saklayıp ana depodaki son hale dönme
git stash save
git stash list
git stash drop stash@{0} # Sakladığımız değişikliği silme
git stash clear # Sakladığımız bütün değişiklikleri silme
git stash apply stash@{0} # Sakladığımız değişikliği tekrardan uygulama
git stash pop # Sakladığımız son değişikliği uygulama

# —————————————————————————–
# GITWEB
# —————————————————————————–
Sadece parolayı bilen kullanıcılar gitweb arayüzünü kullanabilecek.

# Paketlerin kurulumu
aptitude install gitweb

# Ayarlar
– /etc/gitweb.conf
#$projectroot = “/var/cache/git”;
$projectroot = “/home/gitolite/repositories”;

– www-data kullanıcısı gitolite grubuna
adduser www-data gitolite

– Group için gitolite depolarını okuma hakkı
/home/gitolite/.gitolite.rc
$REPO_UMASK = 0027;

– Gitweb için .htaccess düzenleme izni
/etc/apache2/conf.d/gitweb
AllowOverride AuthConfig Options

– .htaccess dosyasının oluşturulması
/usr/share/gitweb/.htaccess
AuthUserFile /home/gitolite/htaccess/htpasswd
AuthType Basic
AuthName “…”
Require valid-user

– htpasswd dosyasının oluşturulması
su -l gitolite
mkdir /home/gitolite/htaccess
cd /home/gitolite/htaccess
htpasswd -sc htpasswd kullanici1 # ilk kullanici icin
htpasswd -s htpasswd kullanici2
chmod 750 /home/gitolite/htaccess
chmod 640 /home/gitolite/htaccess/htpasswd

# —————————————————————————–
# KAYNAKLAR
# —————————————————————————–
http://www.kernel.org/pub/software/scm/git/docs/user-manual.html
https://we.riseup.net/debian/git-development-howto
http://sitaramc.github.com/gitolite/doc/1-INSTALL.html (gitolite kurulum)
http://sitaramc.github.com/gitolite/doc/2-admin.html (gitolite yönetim)
http://marklodato.github.com/visual-git-guide/index-en.html
http://gitready.com/

PHP strtotime() behavior using days of the week as frames of reference (Windows & Linux)

Say you want to get a set of timestamps so that you can query a database for all records that fall between the start of this week, and the end of this week.

One would logically try something like:


 

That will, in theory, give you a date range of Monday at 00:00:00, and Sunday at 23:59:59. Unforunately, that is not always the case.It turns out trying to find relative time references with strtotime is wonky. Depending on which day it currently is, and what day you’re trying to use as a frame of reference, you will get different results when using ‘this monday’ or ‘tuesday next week’ etc… The results are unintuitive, but more importantly, inconsistent in most cases.

Since strtotime() lets us do lazy math to get timestamps (e.g. ‘this monday – 1 week’), all we need to do is find some date string that works consistently 7 days of the week, and then we can reliably find other timestamps relative to that string. Any date string that does not have the same results for all 7 days, cannot be used as a frame of reference, as its value will change depending on what day it is!

From the tables below, we can see that the following three strings can be safely used as frames of reference in strtotime():


 

My suspicion is that certain strings consider Sunday to be the start of the week, while others consider Monday to be the start of the week, and probably round the time up or down in different ways.

Note that I have arbitrarily chosen Monday – March 4th, 2013 through Sunday – March 10th, 2013 as the week to test. Though given how wonky strtotime()’s behavior is, there’s a possibility that the behavior shown below varies from one week to the next! However, I did test various times throughout each day (e.g. 00:00:00 and 23:59:59) and thankfully the results were consistent.

So going back to our problem of getting timestamps for the start and end of this week, the cleanest and most reliable solution is this:

 

 

Using Monday as a frame of reference
If today = Mon, March 4th Tue, March 5th Wed, March 6th Thu, March 7th Fri, March 8th Sat, March 9th Sun, March 10th
strtotime(“this monday”) = March 4th March 11th March 11th March 11th March 11th March 11th March 11th
strtotime(“monday this week”) = March 4th March 4th March 4th March 4th March 4th March 4th March 11th
strtotime(“next monday”) = March 11th March 11th March 11th March 11th March 11th March 11th March 11th
strtotime(“monday next week”) = March 11th March 11th March 11th March 11th March 11th March 11th March 18th
strtotime(“last monday”) = February 25th March 4th March 4th March 4th March 4th March 4th March 4th
strtotime(“monday last week”) = February 25th February 25th February 25th February 25th February 25th February 25th March 4th
Using Tuesday as a frame of reference
If today = Mon, March 4th Tue, March 5th Wed, March 6th Thu, March 7th Fri, March 8th Sat, March 9th Sun, March 10th
strtotime(“this tuesday”) = March 5th March 5th March 12th March 12th March 12th March 12th March 12th
strtotime(“tuesday this week”) = March 5th March 5th March 5th March 5th March 5th March 5th March 12th
strtotime(“next tuesday”) = March 5th March 12th March 12th March 12th March 12th March 12th March 12th
strtotime(“tuesday next week”) = March 12th March 12th March 12th March 12th March 12th March 12th March 19th
strtotime(“last tuesday”) = February 26th February 26th March 5th March 5th March 5th March 5th March 5th
strtotime(“tuesday last week”) = February 26th February 26th February 26th February 26th February 26th February 26th March 5th
Using Wednesday as a frame of reference
If today = Mon, March 4th Tue, March 5th Wed, March 6th Thu, March 7th Fri, March 8th Sat, March 9th Sun, March 10th
strtotime(“this wednesday”) = March 6th March 6th March 6th March 13th March 13th March 13th March 13th
strtotime(“wednesday this week”) = March 6th March 6th March 6th March 6th March 6th March 6th March 13th
strtotime(“next wednesday”) = March 6th March 6th March 13th March 13th March 13th March 13th March 13th
strtotime(“wednesday next week”) = March 13th March 13th March 13th March 13th March 13th March 13th March 20th
strtotime(“last wednesday”) = February 27th February 27th February 27th March 6th March 6th March 6th March 6th
strtotime(“wednesday last week”) = February 27th February 27th February 27th February 27th February 27th February 27th March 6th
Using Thursday as a frame of reference
If today = Mon, March 4th Tue, March 5th Wed, March 6th Thu, March 7th Fri, March 8th Sat, March 9th Sun, March 10th
strtotime(“this thursday”) = March 7th March 7th March 7th March 7th March 14th March 14th March 14th
strtotime(“thursday this week”) = March 7th March 7th March 7th March 7th March 7th March 7th March 14th
strtotime(“next thursday”) = March 7th March 7th March 7th March 14th March 14th March 14th March 14th
strtotime(“thursday next week”) = March 14th March 14th March 14th March 14th March 14th March 14th March 21st
strtotime(“last thursday”) = February 28th February 28th February 28th February 28th March 7th March 7th March 7th
strtotime(“thursday last week”) = February 28th February 28th February 28th February 28th February 28th February 28th March 7th
Using Friday as a frame of reference
If today = Mon, March 4th Tue, March 5th Wed, March 6th Thu, March 7th Fri, March 8th Sat, March 9th Sun, March 10th
strtotime(“this friday”) = March 8th March 8th March 8th March 8th March 8th March 15th March 15th
strtotime(“friday this week”) = March 8th March 8th March 8th March 8th March 8th March 8th March 15th
strtotime(“next friday”) = March 8th March 8th March 8th March 8th March 15th March 15th March 15th
strtotime(“friday next week”) = March 15th March 15th March 15th March 15th March 15th March 15th March 22nd
strtotime(“last friday”) = March 1st March 1st March 1st March 1st March 1st March 8th March 8th
strtotime(“friday last week”) = March 1st March 1st March 1st March 1st March 1st March 1st March 8th
Using Saturday as a frame of reference
If today = Mon, March 4th Tue, March 5th Wed, March 6th Thu, March 7th Fri, March 8th Sat, March 9th Sun, March 10th
strtotime(“this saturday”) = March 9th March 9th March 9th March 9th March 9th March 9th March 16th
strtotime(“saturday this week”) = March 9th March 9th March 9th March 9th March 9th March 9th March 16th
strtotime(“next saturday”) = March 9th March 9th March 9th March 9th March 9th March 16th March 16th
strtotime(“saturday next week”) = March 16th March 16th March 16th March 16th March 16th March 16th March 23rd
strtotime(“last saturday”) = March 2nd March 2nd March 2nd March 2nd March 2nd March 2nd March 9th
strtotime(“saturday last week”) = March 2nd March 2nd March 2nd March 2nd March 2nd March 2nd March 9th
Using Sunday as a frame of reference
If today = Mon, March 4th Tue, March 5th Wed, March 6th Thu, March 7th Fri, March 8th Sat, March 9th Sun, March 10th
strtotime(“this sunday”) = March 10th March 10th March 10th March 10th March 10th March 10th March 10th
strtotime(“sunday this week”) = March 10th March 10th March 10th March 10th March 10th March 10th March 17th
strtotime(“next sunday”) = March 10th March 10th March 10th March 10th March 10th March 10th March 17th
strtotime(“sunday next week”) = March 17th March 17th March 17th March 17th March 17th March 17th March 24th
strtotime(“last sunday”) = March 3rd March 3rd March 3rd March 3rd March 3rd March 3rd March 3rd
strtotime(“sunday last week”) = March 3rd March 3rd March 3rd March 3rd March 3rd March 3rd March 10th

PHP Trait Kullanımı

PHP 5.4 ile gelen trait PHP’ye multi-inheritance özelliği getirdi. PHP’de 5.4 ten önce sınıflar sadece single-inheritance alabiliyordu. PHP trait bu duruma çok iyi bir çözüm oldu. Daha esnek bir yapı getirdi.

PHP’de trait nasıl kullanılır?
trait bir kendi başına bir sınıf gibidir. Ama bu trait lerden nesneler kuramıyoruz. Sadece yeni sınıflarda genişletebiliyor yeni metodlar ve alanlar ekleyebiliyoruz. Bir sınıfta istediğimiz kadar trait, bir trait ‘ide istediğimiz kadar sınıfın içinde kullanabiliyoruz. Bir sınıf içinde trait kullanmak için use anahtar kelimesini kullanıyoruz. Namespace ile karıştırılmamalıdır.
diyagram_1
Örnek bir trait kullanımı

Çıktı:

Yukarıdaki multi-inheritance için basit bir örnekti. Bir çok sınıf bir çok trait için bir örnek yapalım.

diyagram_2

Çıktı:

PHP – Soyut Sınıflar

webpage_coding_web_programming_html_script_php_code_website_application_java_css_development_editor_flat_design_icon-512

Soyut sınıflar içerisinde en az bir soyut metot bulunduran sınıflardır. Genel amaçları bir çok işi ortak yapan ortak sınıfları bir araya toplamaktır. Aşağıda buna uygun bir örnek verilmiştir.

Soyut sınıf denilmesinin sebebi soyut metotların sınıf içerisinde bir görev yapmaması miras yolu(kalıtım) ile kendinden türeyen sınıflara devretmesidir. Soyut sınıflar kendi içlerinde soyut metotlar dışında somut metotlarda bulundurabilir. Bu metotlar ezilmezler(override).

Metotlar ve veri alanları soyut sınıfta protected ve public olarak tanımlanmalıdır ki türeyen sınıfta kullanılabilsin. Sadece soyut sınıfta kullanılan bir veri alanı ise private olarak ta kullanılabilir.

Soyut sınıfta tanımlanmış bir durumda türeyen sınıfta ezilirken(override) erişim türünde kısıtlama yapılamaz. Örneğin; soyut sınıfta public olarak tanımlanan bir alan türetilmiş sınıfta public olmak zorundadır. Soyut sınıfta protected olarak tanımlanan bir alan protected veya public olmak zorundadır. Genişletilebilir ama daraltma yapılamaz.

Bir sınıfın soyut olarak tanımlanması için class deyiminin önüne abstract deyimi getirilir. Soyut sınıfta metotların soyut olarak belirlenmesi için erişim tipinin önüne veya function deyiminin önüne abstract deyimim getirilmeli ve gövdesiz bir metot olmalıdır. Soyut sınıfın hiç soyut metodu yoksa o sınıf soyut metot olarak işlem görmez.

Soyut metotlarda sınıf dışında bir değişkene atama yapılamaz. Yani new ile bir sınıf kurulumu yapılamaz.

Bir örnek verelim.

Yukarıda Soyut adında bir soyut sınıf tanımladık. Soyut sınıfımızı extends ile genişletelim. Ortak iş yapan 2 sınıf oluşturalım.

Yukarıdaki örnekte Soyut sınıfından Telefon ve Dogalgaz isminde 2 tane somut sınıf türettik. Soyut sınıfından kurucuyu(__construct) ve Ödeme fonksiyonlarını eziyor, Ödenen metodunu ise kalıtım ile miras alıyoruz.

Ödenen metodu 2 sınıfta da aynı işi yapmaktadır. Kurucu metot ve Ödeme metodu kendi sınıflarının belirledikleri görevi yerine getirmektedir.

Sınıflarımızı kurup sonuçları görelim.

sonuçlar:

Aynı parametreleri girmemize rağmen soyut sınıflar sayesinde sonuçlar farklı çıktı.

Google haritalar kullanımı – Gmaps.js

Şirketiniz veya kendiniz için google mapsi kullanarak konumunuzu adresinizi göstermek isteyebilirsiniz ama malesef ki google maps ile bunu yapmak artık zorlaştı bunun için açık kaynak lı bir eklenti yardımıyla istedigimiz işlemleri kolayca yapabiliyoruz..

Peki bunu nasıl kullanıcam?

http://hpneo.github.io/gmaps/
Eklentiye ulaşmak için yukarıdaki linke tıklayarak örneklere ve kaynak dosyasına ulaşabilirsiniz.

http://hpneo.github.io/gmaps/examples/markers.html

Yukarıdaki örnek en çok kullanılan örneklerden biri.

Github kullanmayan arkadaşlar için indirme linki aşagıda yer almakta.

Google maps indir