Pin a footer to the bottom of the viewport in desktop browsers with this custom HTML and CSS. A fixed navbar has been added with padding-top: 60px; on the main > .container.
83 |
84 |
85 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/konular/SQLi.md:
--------------------------------------------------------------------------------
1 | # SQLi (SQL Injection Zaafiyeti)
2 |
3 | Saldırganlar, uygulama güvenlik önlemlerini atlatmak için SQL Injection açığından faydalanabilir. SQL Injection (SQLi), en basit anlatımıyla bilgi ifşasına sebep olacak SQL ifadelerinin yürütülmesini mümkün kılan bir saldırı türüdür. Zararlı SQL sorgularını çalıştırdıktan sonra saldırgan, bir web sayfasında ya da web uygulamasında yetkili kullanıcı gibi işlemler yapabilir veya veritabanı içeriğini alabilir. Ayrıca veritabanına kayıt ekleyebilir, değiştirebilir veya silebilir. SQL Injection zafiyeti, MySQL, Oracle, SQL Server veya diğerleri gibi SQL veritabanı kullanan herhangi bir web sitesi veya web uygulamasını etkileyebilir. Saldırgan, hassas verilerinize yetkisiz erişim sağlayabilir. Başarılı SQL Injection saldırısı müşteri bilgileri, kişisel veriler, ticari sırlar, fikri mülkiyet gibi hassas bilgilerin ifşalarına sebep olur. SQL Injection saldırıları en eski, en yaygın ve en tehlikeli web uygulaması güvenlik açıklarından biridir. OWASP Top 10 2017’de Injection saldırıları listede 1 numaradadır. Saldırganın veritabanına erişebilmesini ya da sistemde değişiklik yapabilmesini kolaylaştıran çeşitli açık kaynak araçlar vardır. Geliştiricilerin, uygulamada SQL sorguları yazmak için güvenli kodlama adımlarını izleyerek bu zafiyetten kaçınabilirler.
4 |
5 | **Örnek**
6 | http://sunucuadi.com/index.php?modul=uyelik&islem=kontrol&uyeno=123 parametresi aşağıdaki payload kullanılarak istismar edilebilir olup ilgili veritabanı kullanıcısı ile komut çalıştırılarak ilgili kullanıcının yetkili olduğu tüm veritabanı kayıtlarına erişilebilir:
7 |
8 | `http://sunucuadi.com/index.php?modul=uyelik&islem=kontrol&uyeno=(SELECT 7282 FROM (SELECT(SLEEP(14)))TMP)`
9 |
10 | ## SQL Injection’ın iki ana nedeni vardır.
11 | - Sorgu oluşturmadan önce girişin doğrulanamaması
12 | - Kullanıcının girdisinin dinamik sorgulara dahil edilmesi
13 |
14 | ## SQLi Nasıl Engellenebilir?
15 |
16 | ### 1. Girdi doğrulaması
17 |
18 | İki şekilde mümkündür.
19 |
20 | - White List: Uygulama liste dışındaki karakter girdilerine izin vermemelidir.
21 | - Black List: Başarı oranı düşüktür. Listeye alınmış olan karakterleri kabul etmeyecek.
22 |
23 | ### 2. Parametreli Sorgu (PHO PDO)
24 |
25 | Parametreli sorgular, WHERE, INSERT, UPDATE ifadesindeki değerler de dahil olmak üzere, sorgu içinde herhangi bir noktada güvenilmeyen girdi olarak görülen her yerde kullanılabilir. Tablo, sutün adları veya ORDER BY gibi girdilerde güvenilmeyen girdiyi engellemek için kullanılamazlar. Parametreli sorgularla engelletilemeyen durumlar için white-list veya başka yöntemler kullanılmalıdır. Parametreli sorgular için, sorguda kullanılan dize her zaman sabit olmalı ve hiçbir zaman herhangi bir kaynaktan değişken veri içermemelidir.
26 |
27 | SQLi Açığı İçeren Kod:
28 | ```
29 | $insert = mysql_query("INSERT INTO uyeler SET
30 | uye_adi = 'Kemal',
31 | uye_sifre = '123456',
32 | uye_eposta = 'kemal@gmail.com'");
33 | if ( $insert ){
34 | $last_id = mysql_insert_id();
35 | echo "insert işlemi başarılı!";
36 | }
37 | ```
38 |
39 | SQLi İçermeyen GÜVENLİ Kod:
40 | ```
41 | $query = $db->prepare("INSERT INTO uyeler SET
42 | uye_adi = ?,
43 | uye_sifre = ?,
44 | uye_eposta = ?");
45 | $insert = $query->execute(array(
46 | "Kemal", "123456", "kemal@gmail.com"
47 | ));
48 | if ( $insert ){
49 | $last_id = $db->lastInsertId();
50 | echo "insert işlemi başarılı!";
51 | }
52 | ```
53 |
54 | ### 3. “least privilege” Kuralı
55 |
56 | Uygulama, veritabanı kullanıcısının, yükseltilmiş ayrıcalıklar gerektiren sorgular çalıştırmasını önler. Sonuç olarak SQL Injection saldırısından daha az zarar görülmüş olur. Örneğin kullanıcının sadece okuma yetkisi varsa, bu kullanıcı hesabıyla veritabanında değişiklik yapılamaz.
57 |
58 | ### 4. Ek Güvenlik Seviyeleri
59 | WAF gibi çözümler, SQL Injection saldırısına karşı ek olarak koruma önlemi olabilir. WAF’lar trafiği uygulama düzeyinde inceler ve bunun kötü olup olmadığını belirleyebilir. WAF için güncelleme, bakım gereklidir, aksi takdirde güncellenmemiş sistemler için saldırganlar atlatma yolunu bulabilir.
60 |
61 |
62 | ## Canlı Canlı SQL Injection uygulaması
63 | [PHP GUVENLİK - XSS Açığı , SQL INJECTION Açığı ve SQLMAP Kullanımı](https://www.youtube.com/watch?v=UgRvV5Wd61c&ab_channel=MertBuldur)
64 |
65 | ## Kaynaklar
66 | - http://unixwiz.net/techtips/sql-injection.html
67 | - https://securiteam.com/securityreviews/5DP0N1P76E
68 | - https://www.owasp.org/index.php/SQL_Injection
69 | - http://projects.webappsec.org/w/page/13246963/SQL%20Injection
70 | - https://www.w3schools.com/sql/sql_injection.asp
71 | - https://portswigger.net/web-security/sql-injection
72 |
--------------------------------------------------------------------------------
/konular/_temp.md:
--------------------------------------------------------------------------------
1 | # Aç Adam
2 |
3 | ## Müşteri
4 |
5 | ### Müşteri Kayıt
6 | - Adı Soyadı
7 | - Telefonu
8 | - ePosta
9 | - Parola
10 | - Sözleşme Kabul
11 | - Adres Tarifi
12 | - İl
13 | - İlçe
14 | - Mahalle
15 | - Cadde
16 | - Sokak
17 | - Bina No
18 | - Daire No
19 |
20 | ### Müşteri Giriş
21 | - Telefon No
22 | - Parola
23 |
24 | ### Sipariş Verme
25 |
26 | ### Önceki Siparişler
27 |
28 |
--------------------------------------------------------------------------------
/konular/ajax.md:
--------------------------------------------------------------------------------
1 | ## Ajax Nedir?
2 |
3 | AJAX internet sayfalarında JavaScript ve XMLHttpRequest kullanımı ile etkileşimli uygulamalar yaratan tekniğin adıdır.
4 |
5 | ### Nerelerde kullanılır?
6 |
7 | Formlar, oylama ve sıralama işlemleri, Captcha kontrolleri, Chat uygulamaları vb. alanlarda kullanılır. Ajax ile formlarla post ve get işlemleri yapabiliriz.
8 |
9 | ### Örnek Kullanım:
10 |
11 | Aşağıda ki örnekte **ajax'ın jquery ile kullanımını** anlatacağım.
12 |
13 | Bootstrap ve Jquery kütüphanelerini projemize dahil ettikden sonra basit bir form tasarımı oluşturduk. Form elemanımızın ID'sini ajaxTest olarak ekledik.
14 | Bu ID'yi formumuzu post ederken kullanacağız. Ad ve soyad için input alanlarımızı oluşturduk ve ID'lerini tanımladık.
15 |
16 | Ajaxpost için açıklamalar yorum satırı olarak belirtildi.
17 | ```
18 |
19 |
20 |
21 |
22 |
24 |
25 |
26 |
27 | Ajax Kullanımı
28 |
29 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
32 |
doviz.com Sitesinden Anlık Döviz ve Altın Bilgileri
33 |
34 |
35 |
Gram Altın Fiyatı
36 |
Dolar Fiyatı
37 |
Euro Fiyatı
38 |
39 |
40 |
TL
41 |
TL
42 |
TL
43 |
44 |
45 | ```
46 |
47 |
48 | # Başka Sitelerden XML Türündeki Veriyi Çekme
49 |
50 | simplexml_load_file, Bir XML dosyasının içeriğini bir nesne haline getirir
51 |
52 | ```PHP
53 | Currency[0]->BanknoteBuying;
61 | $usd_satis = $open->Currency[0]->BanknoteSelling;
62 |
63 | // euro
64 | $euro_alis = $open->Currency[11]->BanknoteBuying;
65 | $euro_satis = $open->Currency[11]->BanknoteSelling;
66 | ?>
67 |
68 |
73 |
74 |
Merkez Bankası Döviz Kurları
75 |
76 |
77 |
Dolar Fiyatı
78 |
Euro Fiyatı
79 |
80 |
81 |
TL
82 |
TL
83 |
84 |
85 | ```
86 |
--------------------------------------------------------------------------------
/konular/dosya.izinleri.md:
--------------------------------------------------------------------------------
1 | # Linuxta Dosya İzinleri
2 |
3 | ```ls -al``` komutunu kullanarak terminalde bulunduğumuz dizindeki dosyaların ve klasörlerin erişim izinlerini görebiliyoruz.
4 |
5 | İfade | Açıklama
6 | ---|---
7 | **owner(user)**|Dosyanın/klasörün sahibi konumundadır. User komutları sadece user kullanıcısı için çalışır.
8 | **group(grup)**|Barındırdığı klasör ya da dosyalara etki edebilen user’dan daha az yetkisi olan kısımdır.
9 | **others(diğerleri)**|Diğer kullanıcılar anlamına gelir. Genellikle en az yetkiye sahip olan kısımdır.
10 |
11 |
12 | ```
13 | r - Read
14 | w - Write
15 | x - Execute
16 | ```
17 |
18 | - **read** - Dosya ya da klasörleri okuyabilmeye, görüntüleyebilme izni verir.
19 | - **write** - Dosya ya da klasörleri yazabilme, editleyebilme izni verir.
20 | - **execute** - Dosya ya da klasörleri çalıştırabilme izni verir.
21 | - **+ Operatörü** - Bir dosyaya ya da klasöre herhangi bir izni vermek için kullanılan operatördür.
22 | - **- Operatörü** - Bir dosyaya ya da klasöre herhangi bir izni çıkarmak için kullanılan operatördür.
23 |
24 | ### Kullanıcı detayları
25 | ```
26 | u - Owner
27 | g - Group
28 | o - Others
29 | a - All users
30 | ```
31 |
32 | ### Dosya izinlerini değiştirmek
33 |
34 | Herhangi bir izni user, grup ya da other kullanıcılarına ekleyebilmek için (+) operatörü, aynı şekilde bir izin çıkartmak için de (-) operatörü kullanılır.
35 |
36 | Herhangi bir dosyanın iznini değiştirmek için ```chmod``` komutu kullanılır.
37 |
38 | ```sudo chmod o-rw filename``` - file1 dosyasında others kısmından read( r ) ve write ( w ) izinlerini çıkartır.
39 |
40 | ```sudoc chmod g+rw filename``` - file1 dosyasının ait olduğu gruba read ( r ) ve write( w ) izinlerini ekler.
41 |
--------------------------------------------------------------------------------
/konular/eklentiler.firefox.md:
--------------------------------------------------------------------------------
1 | # Firefox Eklentileri
2 |
3 | ## [adBlock](https://adblockplus.org/)
4 |
5 | Tarayıcınız ile web sitelerini ziyaret ettiğiniz zaman can sıkıcı reklamlar geliyor.Bu reklamları engelliyor.
6 |
7 | ## [adblock youtube](https://addons.mozilla.org/en-US/firefox/addon/adblock-for-youtube/)
8 |
9 | Youtube üzerinden video izlerken gelen reklamları engelliyor.
10 |
11 | ## [Hard Refresh](https://addons.mozilla.org/tr/firefox/addon/hard-refresh-button/)
12 |
13 | Tarayıcının önbelleğini yeniler. Bir html kodu yazdınız ve resim eklediniz.Daha sonra o resmi kaldırdınız ama sitede hala o resim görünüyordur.Bunun sebebi önbellekte durmasıdır.Hard Refresh yaparak önbelleği yeniler.
14 |
15 | ## [Short URL](https://addons.mozilla.org/tr/firefox/addon/copy-shorturl/)
16 |
17 | Uzun linkleri kısa link haline getirir.Örneğin uzun bir link düşünelim.www.facebook.com/asdasdasddsafdffssd/sfsdfsd diye giden bir link.Short url sayesinde bu linki www.goo.gl/zFkEd tarzı bir linke dönüştürebiliriz.
18 |
19 | ## [Ghostery](https://addons.mozilla.org/en-US/firefox/addon/ghostery/?src=search)
20 | Tracker adı verilen, yani internetteki gezintilerimizi kayıt altına alıp, internet alışkanlıklarımıza göre karşımıza reklam çıkartan dalgaları çok güzel bir şekilde engelleyen eklentidir. Böylece, bir e-Ticaret sitesinde tıkladığınız elbiseyi bir daha her yerde görmekten kurtulursunuz.
21 |
22 | ## [Material Design Color Palette](https://addons.mozilla.org/en-US/firefox/addon/material-design-color-palette/)
23 |
24 | Hızlı bir şekilde html renk kodları seçmemizi sağlar.
25 |
26 | ## [Country Flags & IP Whois](https://addons.mozilla.org/en-US/firefox/addon/country-flags-ip-whois/)
27 |
28 | Girdiğimiz sitelerin ip ve ülke adı bilgisi verir.
29 |
30 | ## [Dark Reader](https://addons.mozilla.org/tr/firefox/addon/darkreader/)
31 |
32 | Sitelerin temalarını (dark)karanlık görünüme getirir.Gözü yoran beyaz ışıklardan kurtulursunuz.
33 |
34 | ## [Google™ Translator](https://addons.mozilla.org/tr/firefox/addon/google-translator-webextension/)
35 |
36 | Seçtiğiniz yazının çevirisini yapar.
37 |
38 | ## [Multithreaded Download Manager](https://addons.mozilla.org/en-US/firefox/addon/multithreaded-download-manager/)
39 |
40 | Aynı anda birçok koldan indirme işlemi yapar. İndirme hızlı gerçekleşir.
41 |
42 | ## [Json Lite](https://addons.mozilla.org/tr/firefox/addon/json-lite/)
43 |
44 | Json formatındaki verileri okunabilir hale getirir.
--------------------------------------------------------------------------------
/konular/eklentiler.sublimetext.md:
--------------------------------------------------------------------------------
1 | ## Tavsiye Edilen Sublimetext Eklentileri
2 |
3 | Bu konuda şu sayfada yer alan [eklentiler ve bilgiler](http://labs.sahibinden.com/yazi/sublime-texti-etkin-kullanmak/) tavsiye edilir. Burada tekrar yazmaya gerek yok
4 |
5 | [PackageControl](https://packagecontrol.io/browse/popular) sayfasında popüler eklentileri görebilirsiniz. İlave olarak şunları da sıralayabiliriz:
6 |
7 | - SideBarEnhancements
8 | - jQuery
9 | - HTMLBeautify
10 | - Emmet
11 | - Color Highlighter
12 | - BracketHighlighter
13 |
14 | # Ayar İşlemleri
15 |
16 | Preferences | Settings Menüsü içine şu ayarları kaydedebilirsiniz:
17 | ```
18 | {
19 | "font_size": 15,
20 | "word_wrap": "false"
21 | }
22 | ```
23 |
24 | # Tuş Tanımları Yapılması (Key Binding)
25 |
26 | SublimeText | Preferences | Key Bindings menüsünden girilerek yapılır:
27 | ```
28 | [
29 | { "keys": ["f3"], "command": "find_next" },
30 | { "keys": ["f2"], "command": "next_view" },
31 | { "keys": ["f1"], "command": "prev_view" },
32 | { "keys": ["alt+up"], "command": "swap_line_up" },
33 | { "keys": ["alt+down"], "command": "swap_line_down" },
34 |
35 | { "keys": ["ctrl+x"], "command": "cut" },
36 | { "keys": ["ctrl+c"], "command": "copy" },
37 | { "keys": ["ctrl+v"], "command": "paste" },
38 | { "keys": ["ctrl+z"], "command": "undo" },
39 | { "keys": ["ctrl+shift+z"], "command": "redo" },
40 |
41 | // Beginning/End of the current line.
42 | { "keys": ["home"], "command": "move_to", "args": {"to": "bol"} },
43 | { "keys": ["end"], "command": "move_to", "args": {"to": "eol"} },
44 | { "keys": ["shift+end"], "command": "move_to", "args": {"to": "eol", "extend": true} },
45 | { "keys": ["shift+home"], "command": "move_to", "args": {"to": "bol", "extend": true } },
46 |
47 | // Beginning/End of the document (using CMD).
48 | { "keys": ["super+home"], "command": "move_to", "args": {"to": "bof"} },
49 | { "keys": ["super+end"], "command": "move_to", "args": {"to": "eof"} },
50 | { "keys": ["super+shift+end"], "command": "move_to", "args": {"to": "eof", "extend": true} },
51 | { "keys": ["super+shift+home"], "command": "move_to", "args": {"to": "bof", "extend": true } },
52 |
53 | // Beginning/End of the document (using CTRL, for when I have PC reflexes).
54 | { "keys": ["ctrl+home"], "command": "move_to", "args": {"to": "bof"} },
55 | { "keys": ["ctrl+end"], "command": "move_to", "args": {"to": "eof"} },
56 | { "keys": ["ctrl+shift+end"], "command": "move_to", "args": {"to": "eof", "extend": true} },
57 | { "keys": ["ctrl+shift+home"], "command": "move_to", "args": {"to": "bof", "extend": true } }
58 | ]
59 | ```
60 |
--------------------------------------------------------------------------------
/konular/eskisehir.paylasim.md:
--------------------------------------------------------------------------------
1 | # Faydalı Siteler
2 |
3 | Bu sayfada, 25-28 Ocak 2020 tarihleri arasında Eskişehir'de düzenlenen **Mustafa Akgül Özgür Yazılım Kış Kampı** sınıfı ile paylaşılan çeşitli bağlantılar toplu olarak sunulmaktadır.
4 |
5 | ### Digitalocean için hediye 100$
6 | [Bu linkten Digitalocean](https://m.do.co/c/4385aed96dc4) sitesine üye olursanız 60 gün içinde kullanabileceğiniz 100$ krediniz oluyor.
7 |
8 | ### Ücretsiz Resim Siteleri
9 | - https://www.pexels.com/
10 | - https://www.freepik.com/
11 | - https://dummyimage.com/ BOŞ resim üreticisi (image placeholder)
12 |
13 |
14 | ### Ücretsiz HTML ADMIN Şablonları / HTML ADMIN Templates
15 | - https://github.com/tabler/tabler
16 | - https://github.com/ColorlibHQ/AdminLTE
17 | - https://github.com/ColorlibHQ/gentelella
18 | - https://github.com/DesignRevision/shards-dashboard
19 |
20 |
21 | ### Web Tabanlı Dosya Yöneticileri
22 | - https://github.com/prasathmani/tinyfilemanager
23 | - https://github.com/jcampbell1/simple-file-manager
24 | - https://github.com/alexantr/filemanager
25 | - https://github.com/prasathmani/tinyfilemanager
26 | - https://github.com/misterunknown/ifm
27 | - https://github.com/kalcaddle/KodExplorer
28 |
29 |
30 | # Katılımcılardan Gelenler
31 | - [Goalkicker](https://goalkicker.com/) Yazılım dünyasından bir çok konuda ücretsiz PDF kitap By:Ahmet Tosun
32 | - [Overapi](http://overapi.com/) Tüm Kopya Kağıtları tek bir noktada By:Ahmet Tosun
33 | - [Overapi Developer Tools](http://overapi.com/developer-tools/) Geliştiriciler için faydalı siteler By:Ahmet Tosun
34 |
--------------------------------------------------------------------------------
/konular/faydali.gitshrink.md:
--------------------------------------------------------------------------------
1 | # Boyutu Artmış Git Projesini Küçültme
2 |
3 | Projede kullanılacak .jpg dosyalarına küçültme yapılmadan (örneğin 800x600) eklenmesi sonucunda proje boyutunuz ciddi biçimde artar. Ayrıca yanlışlıkla .mov gibi bir dosyanın da eklenmesi aynı etkiyi yapar.
4 |
5 | Proje geçmişindeki bu dosyalardan kurtulmak için araştırdığımda aşağıdaki çözümleri buldum. Denedim ve çalıştığını test ettim.
6 |
7 | ### Çözüm 1: git-filter-branch Kullanarak
8 | Bu çözümde geçmişe ait commit kayıtları korunur. Burada yapılan şey şudur: Projede yer alan tüm **.mov** uzantılı dosyalar silinir. Doğrudan dosya adı yazılarak bir silme işlemi yapılması daha az riske girmiş olursunuz.
9 |
10 | Bu konudaki çok detaylı açıklamalar için [buraya bakabilirsiniz.](https://stackoverflow.com/a/2158271/134739)
11 |
12 | **DİKKAT:** Eğer, projenin son halinde kullanılan **.mov** uzantılı dosya varsa, bu dosyalar da **silinir!**
13 |
14 | ```BASH
15 | cd ProjeKlasörünüz
16 | git filter-branch --index-filter 'git rm --cached --ignore-unmatch *.mov' -- --all
17 | rm -Rf .git/refs/original
18 | rm -Rf .git/logs/
19 | git gc --aggressive --prune=now
20 | git push -f
21 | ```
22 |
23 | veya
24 |
25 | ```BASH
26 | git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch *.mov' --prune-empty --tag-name-filter cat -- --all
27 | rm -Rf .git/refs/original
28 | rm -Rf .git/logs/
29 | git gc --aggressive --prune=now
30 | git push -f
31 | ```
32 |
33 | ### Çözüm 2: BFG programını kullanarak
34 |
35 | - [BFG Repo Cleaner](https://rtyley.github.io/bfg-repo-cleaner/) çok hızlı, basit kullanımlı ve git-filter-branch komutununa alternatif bir *Depo Temizleyicisidir*. Git deponuzun geçmişine ait istenmeyen dosyaların temizliğinde kullanılır.
36 | - BFG programı bu silme işlemini git-filter-branch komutuna göre 10 ila 720 kat daha hızlı gerçekleştirir.
37 | - BFG programının kurulum bilgileri kendi sitesinde yer almaktadır.
38 | - Aşağıdaki komut, dosya boyutu 100mb'dan fazla olan tüm dosyaları siler. (Son commit'inize ait olan dosyalar hariç)
39 | - Orjinal kod örneği ve kullanım açıklamalarına [BFG sitesinden erişilebilir](https://rtyley.github.io/bfg-repo-cleaner/#usage).
40 | ```BASH
41 | git clone --mirror git://example.com/some-big-repo.git
42 | java -jar bfg.jar --strip-blobs-bigger-than 100M some-big-repo.git
43 | cd some-big-repo.git
44 | git reflog expire --expire=now --all && git gc --prune=now --aggressive
45 | git push
46 | ```
47 |
48 | ### Çözüm 3: Büyük dosyaların tespit edilmesi
49 | Yukarıda anlatılan çözümlerde tüm dosyalar için işlem yapmıştı. Eğer, projedeki en büyük dosyalar bilinirse sadece onların silinmesi ile büyük bir yer kazanma durumumuz olabilir. Aşağıdaki komut, git geçmişindeki en büyük boyuta sahip 20 dosyayı listeler.
50 |
51 | ```BASH
52 | git rev-list --objects --all
53 | | git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)'
54 | | awk '/^blob/ {print substr($0,6)}'
55 | | sort -r --numeric-sort --key=2
56 | | cut --complement --characters=13-40
57 | | numfmt --field=2 --to=iec-i --suffix=B --padding=7 --round=nearest
58 | | head -n 20
59 | ```
60 |
61 | Büyük dosyaların BLOB ID'sini bulmak için:
62 |
63 | ```BASH
64 | git verify-pack -v .git/objects/pack/*.idx \
65 | | sort -k 3 -n \
66 | | tail -10
67 | ```
68 |
--------------------------------------------------------------------------------
/konular/faydali.linkler.md:
--------------------------------------------------------------------------------
1 | # FAYDALI LİNKLER
2 |
3 | ## Siteler
4 | - [Online php komut uygulaması](http://sandbox.onlinephpfunctions.com/)
5 | - [PHP Usulüne Uygun](https://kulekci.net/php-the-right-way/)
6 | - [Web Architecture 101](https://engineering.videoblocks.com/web-architecture-101-a3224e126947)
7 | - [Web Application Architectures Compared](http://g4tp.com/webarch/)
8 | - [Algoritma Soruları](http://algoritma-programlama.blogspot.com/search/label/Algoritma)
9 | - [User Interface: Icons & Symbols](http://uigoodies.com/icons-symbols.html)
10 | - [Özgür Sunumlar](https://topluluk.ozguryazilim.com.tr/sunumlar/)
11 | - [Freepik - Ücretsiz Resim](https://freepik.com/)
12 | - [Pixabay - Ücretsiz Resim](https://pixabay.com/)
13 | - [Unsplash - Ücretsiz Resim](https://unsplash.com/)
14 | - [Pexels - Ücretsiz Resim](https://www.pexels.com)
15 | - [StockSnap - Ücretsiz Resim](https://stocksnap.io/)
16 | - [Online PHP Komutu Çalıştırma](http://sandbox.onlinephpfunctions.com/)
17 | - [Lazy Image Optimizasyonu](https://github.com/aFarkas/lazysizes)
18 | - [Beginners PHP Eğitimi](https://www.homeandlearn.co.uk/php/php.html)
19 | - [Strut Sunum Editörü - Impress, Bespoke, Handouts](http://strut.io/)
20 | - [Git Explorer](https://gitexplorer.com/)
21 | - [Eğitim Sitesi - Tutorials Point](https://www.tutorialspoint.com/)
22 | - [Eğitim Sitesi - W3 Schools](https://www.w3schools.com/)
23 | - [Eğitim Sitesi - Tutorial Republic](https://www.tutorialrepublic.com/)
24 | - [Özgür Lisanslar](http://ozgurlisanslar.org.tr)
25 | - [Draw.io](https://www.draw.io/)
26 | - [Resim Tutucu - Placeholder](https://placeholder.com/)
27 | - [Resim Tutucu - PlaceImg](http://placeimg.com/)
28 | - [Resim Tutucu - LoremPixel](http://lorempixel.com/)
29 | - [Git Geçmişi](https://githistory.xyz/)
30 |
31 | ## Makaleler
32 | - [Roadmap to becoming a web developer in 2019](https://github.com/kamranahmedse/developer-roadmap)
33 | - [Front-End Developer Handbook 2018](https://frontendmasters.com/books/front-end-handbook/2018/)
34 | - [Neden komut satırını öğrenmek lazım?](https://medium.com/@atarikguney/neden-komut-sat%C4%B1r%C4%B1n%C4%B1-%C3%B6%C4%9Frenmek-laz%C4%B1m-f7c708bbaa1b)
35 | - [Linux metin işleme araçları — awk, sed ve diğerleri](https://medium.com/@gokhansengun/linux-metin-i%C5%9Fleme-ara%C3%A7lar%C4%B1-awk-sed-ve-di%C4%9Ferleri-d53b27ab692b)
36 | - [GitHub ile açık kaynak projelere katkıda bulunmak](https://medium.com/@cengizhanc/github-ile-a%C3%A7%C4%B1k-kaynak-projelere-katk%C4%B1da-bulunmak-8a0d79090546)
37 | - [Web Projesi Yapıyorum, Nasıl Çalışıyor Bilmiyorum](https://medium.com/house-of-apps/web-projesi-yap%C4%B1yorum-nas%C4%B1l-%C3%A7al%C4%B1%C5%9F%C4%B1yor-bilmiyorum-592b639c79a1)
38 | - [Kamusal Güvenlikte Açık Kaynak Yazılımların Yeri](https://medium.com/bulutyazilim/kamusal-g%C3%BCvenlikte-a%C3%A7%C4%B1k-kaynak-yaz%C4%B1l%C4%B1mlar%C4%B1n-yeri-50a6b4de9cf2)
39 | - [Scöbölöty, PHP çök kötü ve Gelecek](https://medium.com/bulutyazilim/sc%C3%B6b%C3%B6l%C3%B6ty-php-%C3%A7%C3%B6k-k%C3%B6t%C3%BC-ve-gelecek-51bd019d6932)
40 | - [Git - Basit Rehber](http://rogerdudler.github.io/git-guide/index.tr.html)
41 |
--------------------------------------------------------------------------------
/konular/faydali.resizeimage.md:
--------------------------------------------------------------------------------
1 | # Resim Dosyası Boyutu Değiştirme
2 |
3 | ### Yöntem 1
4 |
5 | Aktif klasördeki dosyaları `yeni` adlı klasöre yeniden boyutlandırma
6 |
7 | ```BASH
8 | mkdir yeni
9 | for i in *.jpg; do convert $i -resize 800x600 yeni/$i;done
10 | ```
11 | ### Yöntem 2
12 | Aktif klasördeki dosyaları yeniden boyutlandırma. **DİKKAT:** Orjinal dosyanın üzerine yazar!
13 |
14 | ```BASH
15 | mogrify -resize 800x *.jpg
16 | ```
17 |
18 | ### Yöntem 3
19 | Aktif klasör ve altındaki TÜM dosyaları yeniden boyutlandırma
20 |
21 | ```BASH
22 | find . -name '*.jpg' -execdir mogrify -resize 800x {} \;
23 | ```
24 |
25 | Resim oranlarının korunması hakkında: https://www.imagemagick.org/Usage/resize/#resize
26 |
27 |
--------------------------------------------------------------------------------
/konular/faydali.videolar.md:
--------------------------------------------------------------------------------
1 | # Faydalı Videolar
2 |
3 | - [Richard Stallman - Özgür Yazılım HQ Türkçe Altyazılı (14 Dakika)](https://www.youtube.com/watch?v=_St4bC9fcfA)
4 | - [Revolution OS - Türkçe Altyazı](https://www.youtube.com/watch?v=cEhnQN1ZmDI)
5 | - [The Code (2011): Story of Linux documentary (MULTiSUB)](https://www.youtube.com/watch?v=XMm0HsmOTFI)
6 | - [İnternet'in Öz Evladı: Aaron Swartz'ın Hikayesi](https://www.youtube.com/watch?v=oZRXwTGuxig)
7 | - [İnternetin Gerçek Hikayesi Tarayıcı Savaşları (Discovery Türkçe Belgesel)](https://www.youtube.com/watch?v=i5RcpoO0bc0)
8 | - [İnternetin Gercek Hikayesi eBay Amazon-Türkçe](https://www.youtube.com/watch?v=zhvZdWL8MSw)
9 | - [Richard Stallman Interview on the History and Ethics of Free Software](https://www.youtube.com/watch?v=gfwKnsHd9WM)
10 | - [Richard Stallman on Free Software: Freedom is Worth the Inconvenience](https://www.youtube.com/watch?v=NB8mCcLRxlg)
11 | - [History of the Internet, İnternetin Tarihçesi, Melih Bilgil](http://www.youtube.com/watch?v=MkW3hILexKE)
12 | - [Arduino - Açık Kaynak Yazılım - Açık Kaynak Donanım](http://www.youtube.com/watch?v=UoBUXOOdLXY)
13 | - [Deep Web](https://www.youtube.com/watch?v=ohz8LZM6yMw)
14 | - [Silk Road Sitesinin Kurucusu Nasıl Yakalandı]()
15 |
--------------------------------------------------------------------------------
/konular/git.projelerinde.media.temizligi.md:
--------------------------------------------------------------------------------
1 | # Git Projelerinde Media Temizliği
2 |
3 | Projelerdeki ses, video ve resim dosyalarının silinmesi ve git arşivinden temizlenmesinin nasıl yapılacağı bu sayfada açıklanacak
4 |
5 |
6 | ## Bu işin nasıl yapılabileceği ile ilgili araştırma sonuçları
7 | ```
8 | #java -jar ~/bfg.jar --strip-blobs-bigger-than 500K PHP-Egitimi
9 |
10 | java -jar ~/bfg.jar --delete-files "*.jpg" PHP-Egitimi
11 |
12 | git reflog expire --expire=now --all && git gc --prune=now --aggressive
13 |
14 | git push
15 | ```
16 |
17 |
18 |
19 | ## GİT Deposunda Temizlik İiçn Detaylı Bilgi
20 | - https://rtyley.github.io/bfg-repo-cleaner/
21 | - https://git-scm.com/docs/git-filter-branch
22 | - http://varunksaini.com/remove-big-file-from-git-repo/
23 | - https://rtyley.github.io/bfg-repo-cleaner/
24 | - https://github.com/IBM/BluePic/wiki/Using-BFG-Repo-Cleaner-tool-to-remove-sensitive-files-from-your-git-repo
25 | - https://www.nicoespeon.com/en/2014/04/clean-git-repo-like-a-boss/
26 |
27 |
--------------------------------------------------------------------------------
/konular/github.projelerine.katkida.bulunmak.md:
--------------------------------------------------------------------------------
1 | # GitHub Projelerine Katkıda Bulunmak
2 |
3 | Bu sayfada olduğunuza göre bilgiye değer veriyorsunuz demektir. Ve bilindiği üzere bilgi paylaştıkça çoğalır ve öğrenmenin en iyi yöntemlerinden biri de öğretmektir.
4 |
5 | Sizler de GitHub da görmüş olduğunuz bu proje başta olmak üzere bir çok projeye katkı sağlayarak kendinizin ve diğer insanların gelişmesini sağlayabilirsiniz.
6 |
7 | Aşağıdaki adımları sırayla takip ederek bir GitHub projesine nasıl katık sağlayabileceğimizi öğreneceğiz. Tabii ki önce bir GitHub hesabımız olması gerekli.
8 |
9 | 1) Önce katkıda bulunmak istediğimiz BAŞKA projenin sayfasına gidilir.
10 | Ör: - https://github.com/nuriakman/PHP-Egitimi
11 | Sağ üst köşeden FORK (Çatalla) yapılır. Yani orijinal kaynağın bir kopyası bizim hesabımıza çatallanmış, kopyalanmış olur.
12 | 
13 |
14 | 2) Sonra projenin KENDİ GitHub sayfanıza FORK' lanmış (Çatallanmış) haline gidip, sağ taraftaki CLONE (KOPYALA) düğmesine tıklanır ve açılan bağlantıdan projenin URL'si (adresi) kopyalanır.
15 |
16 | 3) Sonra yerelde yani kendi makinenizde çalışacağız klasöre gidip, (Ör: HTML vb. içinde) sağ tuş ile bir terminal açılır. Açılan sayfaya şu komut
17 | ile "git clone github.com/projeadi" proje dosyaları bilgisayarınıza kopyalanmış olur.
18 |
19 | 4) Daha sonra inen dosyalarda nereleri değiştirmek istiyorsanız, bir editör aracılığıyla bunu yapabilirsiniz.
20 | Ör: Atom editörü için File -> Open Folder menüsünden indirdiğimiz PHP-EGITIMI klasörünü seçebiliriz.
21 |
22 | 5) Daha sonra Atom editöründe yaptığımız değişiklikleri ekranın sağ alt köşesindeki GitHut / x file ibaresi bulunan düğmeye tıklayarak açılan pencereden değişiklik yaptığımız dosyaları görebiliriz.
23 |
24 | 6) STAGE ALL (Hepsini Sahnele) düğmesi ile at sahneye/platforma alınır. Değişikliklere ait açıklama girilip COMMIT (işlem/taahhüt) düğmesine basılır ve son olarak en alttaki PUSH (Yürüt) düğmesiyle kendi sayfamızdaki projeye gönderilir ve güncellenmiş olur.
25 |
26 | 7) Daha sonra tarayıcıdan GitHub.com sitesi üzerinden sol taraftaki NEW PULL REQUEST (Yeni Çekim Talebi) düğmesine tıklıyoruz.
27 |
28 | 8) Açılan pencerede az önce göndermiş olduğumuz değişiklikleri görürüz, son kontrolleri yapıp, başlık ve açıklama girip sayfanın altındaki CREATE PULL REQUEST (Çekme Talebi Oluştur) düğmesine tıklarız. Projeye ait kendi sayfamızdaki değişiklikler, ana proje sahibine gönderilmiş olur.
29 |
30 | 9) Ana proje sahibi sizin gönderdiğiniz commitleri (işlemleri) kontrol edip, uygun gördüklerini MERGE ile BİRLEŞTİRİR.
31 |
32 | Bu şekilde siz de projede CONTRIBUTOR (Katkı Sağlayıcı) listesine dahil olmuş olursunuz.
33 |
--------------------------------------------------------------------------------
/konular/gorseller/github-katki-01-fork.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuriakman/PHP-Egitimi/ad4a24597ebcc710e4ecf15f446dba8f582a2350/konular/gorseller/github-katki-01-fork.jpg
--------------------------------------------------------------------------------
/konular/kabul.mesaji.kis.md:
--------------------------------------------------------------------------------
1 | # Mesaj 1
2 |
3 | ### PHP ve MySQL ile Web Programlamaya Giriş Kursundan Selamlar!
4 |
5 | Merhaba !
6 |
7 | **Mustafa Akgül Özgür Yazılım Kış Kampı, PHP ve MySQL ile Web Programlamaya Giriş** sınıfımızı tercih ettiğiniz ve kabul edildiğiniz için bu mesajı alıyorsunuz.
8 |
9 | Kurs eğitmeniniz olarak ben **Nuri Akman** ve yardımcı eğitmenimiz **Hasan Çiçek** sizlere, belirli bir program dahilinde PHP ve Web Programlama hakkında bilgi vereceğiz. 15 güne yayılan konuları öğrenebilmeniz için dersleri dikkatli dinlemeniz ve gerekli donanıma sahip olarak gelmeniz gerekmektedir.
10 |
11 | 25-28 Ocak 2020 tarihleri arası yapılacak olan kamp öncesi bazı konuları size hatırlatmak ve bilgilendirmek için bu mesajı gönderiyorum.
12 |
13 | ## Kampa katılamayacaksanız lütfen bunu yapın!
14 |
15 | - **Herhangi bir nedenle eğitime katılamayacaksanız mutlaka [https://kayit.linux.org.tr/](https://kayit.linux.org.tr/) adresindeki tercihleri yaptığınız sayfaya gidin ve tercihlerinizi iptal edin.**
16 | - Böylece umutla kampa kabul edilmeyi bekleyen diğer adayların hakkını gözetmiş olacaksınız.
17 | - Kabul edildiğiniz halde kursa katılım sağlamazsanız, bu bilgi profilinize not olarak düşülecektir.
18 | - Kampa katılamayacağınız için başvurunuzu iptal etmemeniz durumunda, LKD’nin düzenleyeceği herhangi bir kontenjanlı etkinliğe başvurunuzun kabul edilme olasılığınızı ciddi biçimde azaltacaktır.
19 |
20 | ## Kurslar öncesi bazı konuları size hatırlatmak isterim...
21 |
22 | - Kurslar 25 Ocak 2020, Cumartesi günü başlıyor.
23 | - Sabahı kayıt işlemleri olacak, açılış konuşmasından sonra dersler hemen başlayacak!
24 | - KYK'da kalacaksanız Cuma gününden gelmenizi tavsiye ederim. KYK giriş işlemleri için Cumartesi günü çok sıra oluyor
25 | - Bilgisayarınızdaki tüm verilerinizi yedekleyip kampa öyle gelin, risk almayın! Bazı durumlarda işletim sistemini yeniden kurmak gerekebiliyor.
26 | - Eğitim, Ubuntu dağıtımı kurulu bilgisayardan verilecektir. Notlar ve konu anlatımı buna göre yapılacaktır.
27 | - Katılımcıların bilgisayarında YENİ KURULMUŞ Ubuntu dağıtımının (Ubuntu 19.04) olması önemle tavsiye edilir.
28 | - Ben Windows kullanıyorum diyorsanız: Sorun yok!
29 | - Bilgisayarınız eski ve sorunluysa kurstan verim alamayabilirsiniz. Bunu unutmayın.
30 |
31 | ## Gelmeden önce hazırlık yapmam gerekir mi?
32 | - **En önemli konu internet erişimi.** Üniversitenin size İnternet bağlantısı sağlaması için **Eduroam** hesabınızın olması gerekiyor. Eğer, **Eduroam** hesabınız yoksa profil bilgilerinizi doldurduğunuz sayfada gerekli açıklamalar bulunuyor: [https://kayit.linux.org.tr/accounts/profil](https://kayit.linux.org.tr/accounts/profil)
33 | - Bootstrap çok önemli bir konu. Şu videoyu izlemenizi ve sizin de yapmanızı tavsiye ederim: [https://www.youtube.com/watch?v=kLby3L7u-NQ](https://www.youtube.com/watch?v=kLby3L7u-NQ)
34 | - Eğitim sırasında şu kaynağı kullanacağız: [https://github.com/nuriakman/PHP-Egitimi](https://github.com/nuriakman/PHP-Egitimi) Gelmeden önce incelemek isteyebilirsiniz. (Bu kaynağın güncellemesi devam etmektedir.)
35 | - Git ve GitHub konularını bilmiyorsanız bakmanızı tavsiye ederim.
36 |
37 | ## Sorunuz mu var?
38 | - Sorularınızın cevabını önce şu adreste arayınız: [https://kamp.linux.org.tr/2020/kis/sik-sorulan-sorular/](https://kamp.linux.org.tr/2020/kis/sik-sorulan-sorular/)
39 | - Cevabını bulamadığınız bir soru mu var? Şuradan organizasyona soru sorabilirsiniz: [https://kamp.linux.org.tr/2020/kis/iletisim/](https://kamp.linux.org.tr/2020/kis/iletisim/)
40 | - PHP sınıfımız, kursa katılım, tercihlerin iptali gibi konularda bir sorunuz olursa lütfen [nuriakman@gmail.com](mailto:nuriakman@gmail.com) adresimden bana yazınız.
41 |
42 | # Eskişehir'de görüşmek üzere!
43 |
44 | Selamlar,
45 | Nuri Akman
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | # Mesaj 2
55 |
56 | ### PHP ve MySQL ile Web Programlamaya Giriş Kursundan Selamlar!
57 |
58 | Merhaba !
59 |
60 | **Mustafa Akgül Özgür Yazılım Kış Kampı, PHP ve MySQL ile Web Programlamaya Giriş** sınıfımızı tercih ettiğiniz ve kabul edildiğiniz için bu mesajı alıyorsunuz.
61 |
62 | Kurs eğitmeniniz olarak ben **Nuri Akman** ve yardımcı eğitmenimiz **Hasan Çiçek** sizlere, belirli bir program dahilinde PHP ve Web Programlama hakkında bilgi vereceğiz.
63 |
64 | Bazı katılımcılar, kampa seçilmiş olduğunu bildiren email'i alamadıklarını belirttikleri için sizlere bu mesajı gönderiyorum.
65 |
66 | #### LÜTFEN BU MESAJIMA CEVAP VERİNİZ:
67 |
68 | #### 1.) KAMPA GELEMEME GİBİ BİR DURUMUNUZ VAR MI?
69 | #### 2.) ŞAYET BELİRSİZLİK VARSA YÜZDE KAÇ İHTİMALLE GELEBİLECEKSİNİZ?
70 |
71 | Görüşmek üzere!
72 |
73 |
74 | Selamlar,
75 | Nuri Akman
76 |
--------------------------------------------------------------------------------
/konular/kabul.mesaji.yaz.md:
--------------------------------------------------------------------------------
1 | # Mesaj 1
2 |
3 | ### PHP ile Web Programlama Kursundan Selamlar!
4 |
5 | Merhaba !
6 |
7 | **Mustafa Akgül Özgür Yazılım Yaz Kampı, PHP ile Web Programlama 1. Düzey** sınıfımızı tercih ettiğiniz ve kabul edildiğiniz için bu mesajı alıyorsunuz.
8 |
9 | Kurs eğitmeniniz olarak ben **Nuri Akman** ve yardımcı eğitmenimiz **Hasan Çiçek** sizlere, belirli bir program dahilinde PHP ve Web Programlama hakkında bilgi vereceğiz. 15 güne yayılan konuları öğrenebilmeniz için dersleri dikkatli dinlemeniz ve gerekli donanıma sahip olarak gelmeniz gerekmektedir.
10 |
11 | 19 Temmuz - 3 Ağustos tarihleri arası yapılacak olan kamp öncesi bazı konuları size hatırlatmak ve bilgilendirmek için bu mesajı gönderiyorum.
12 |
13 | ## Kampa katılamayacaksanız lütfen bunu yapın!
14 |
15 | - **Herhangi bir nedenle eğitime katılamayacaksanız mutlaka [https://kayit.linux.org.tr/](https://kayit.linux.org.tr/) adresindeki tercihleri yaptığınız sayfaya gidin ve tercihlerinizi iptal edin.**
16 | - Böylece umutla kampa kabul edilmeyi bekleyen diğer adayların hakkını gözetmiş olacaksınız.
17 | - Kabul edildiğiniz halde kursa katılım sağlamazsanız, bu bilgi profilinize not olarak düşülecektir.
18 | - Kampa katılamayacağınız için başvurunuzu iptal etmemeniz durumunda, LKD’nin düzenleyeceği herhangi bir kontenjanlı etkinliğe başvurunuzun kabul edilme olasılığınızı ciddi biçimde azaltacaktır.
19 |
20 | ## Kurslar öncesi bazı konuları size hatırlatmak isterim...
21 |
22 | - Kurslar 19 Temmuz 2019, Cuma günü başlıyor.
23 | - Perşembe günü ve Cuma sabahı kayıt işlemleri olacak, açılış konuşmasından sonra dersler hemen başlayacak!
24 | - KYK'da kalacaksanız Perşembe gününden gelmenizi tavsiye ederim. KYK giriş işlemleri için Cuma günü çok sıra oluyor
25 | - Bilgisayarınızdaki tüm verilerinizi yedekleyip kampa öyle gelin, risk almayın! Bazı durumlarda işletim sistemini yeniden kurmak gerekebiliyor.
26 | - Eğitim, Ubuntu dağıtımı kurulu bilgisayardan verilecektir. Notlar ve konu anlatımı buna göre yapılacaktır.
27 | - Katılımcıların bilgisayarında YENİ KURULMUŞ Ubuntu dağıtımının (Ubuntu 19.04) olması önemle tavsiye edilir.
28 | - Linux bilmiyorsanız, bu kurs size Linux öğrenmek için bir fırsattır! Kaçırmayın!
29 | - Linux için 2GB Ram, i3 işlemci yeterli. Windows kullanıyorsanız 4Gb Ram ve i5 işlemci tavsiye ederim.
30 | - Bilgisayarınız eski ve sorunluysa kurstan verim alamayabilirsiniz. Bunu unutmayın.
31 |
32 | ## Gelmeden önce hazırlık yapmam gerekir mi?
33 | - **En önemli konu internet erişimi.** Üniversitenin size İnternet bağlantısı sağlaması için **Eduroam** hesabınızın olması gerekiyor. Eğer, **Eduroam** hesabınız yoksa profil bilgilerinizi doldurduğunuz sayfada gerekli açıklamalar bulunuyor: [https://kayit.linux.org.tr/accounts/profil](https://kayit.linux.org.tr/accounts/profil)
34 | - Bootstrap çok önemli bir konu. Şu videoyu izlemenizi ve sizin de yapmanızı tavsiye ederim: [https://www.youtube.com/watch?v=kLby3L7u-NQ](https://www.youtube.com/watch?v=kLby3L7u-NQ)
35 | - Eğitim sırasında şu kaynağı kullanacağız: [https://github.com/nuriakman/PHP-Egitimi](https://github.com/nuriakman/PHP-Egitimi) Gelmeden önce incelemek isteyebilirsiniz. (Bu kaynağın güncellemesi devam etmektedir.)
36 | - Git ve GitHub konularını bilmiyorsanız bakmanızı tavsiye ederim.
37 |
38 | ## Sorunuz mu var?
39 | - Sorularınızın cevabını önce şu adreste arayınız: [https://kamp.linux.org.tr/2019/yaz/sik-sorulan-sorular/](https://kamp.linux.org.tr/2019/yaz/sik-sorulan-sorular/)
40 | - Cevabını bulamadığınız bir soru mu var? Şuradan organizasyona soru sorabilirsiniz: [https://kamp.linux.org.tr/2019/yaz/iletisim/](https://kamp.linux.org.tr/2019/yaz/iletisim/)
41 | - PHP sınıfımız, kursa katılım, tercihlerin iptali gibi konularda bir sorunuz olursa lütfen [nuriakman@gmail.com](mailto:nuriakman@gmail.com) adresimden bana yazınız.
42 |
43 | # Bolu'da görüşmek üzere!
44 |
45 | Selamlar,
46 | Nuri Akman
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | # Mesaj 2
56 |
57 | ### PHP ile Web Programlama Kursundan Selamlar!
58 |
59 | Merhaba !
60 |
61 | **Mustafa Akgül Özgür Yazılım Yaz Kampı, PHP ile Web Programlama 1. Düzey** sınıfımızı tercih ettiğiniz ve kabul edildiğiniz için bu mesajı alıyorsunuz.
62 |
63 | Kurs eğitmeniniz olarak ben **Nuri Akman** ve yardımcı eğitmenimiz **Hasan Çiçek** sizlere, belirli bir program dahilinde PHP ve Web Programlama hakkında bilgi vereceğiz.
64 |
65 | Bazı katılımcılar, kampa seçilmiş olduğunu bildiren email'i alamadıklarını belirttikleri için sizlere bu mesajı gönderiyorum.
66 |
67 | #### LÜTFEN BU MESAJIMA CEVAP VERİNİZ:
68 |
69 | #### 1.) KAMPA GELEMEME GİBİ BİR DURUMUNUZ VAR MI?
70 | #### 2.) ŞAYET BELİRSİZLİK VARSA YÜZDE KAÇ İHTİMALLE GELEBİLECEKSİNİZ?
71 |
72 | Görüşmek üzere!
73 |
74 |
75 | Selamlar,
76 | Nuri Akman
77 |
--------------------------------------------------------------------------------
/konular/komutlar.ciktitamponu.md:
--------------------------------------------------------------------------------
1 | # Çıktı Tamponu Komutları
2 |
3 | Çıktı denetim işlevleri, betikten gönderilen çıktıyı denetiminizde tutmaya yardımcı olurlar. Bu özellik, çok çeşitli durumlarda yararlı olabilir, özellikle de betiğiniz veriyi çıktılamaya başladıktan sonra bir başlık göndermek isterseniz. Çıktı denetim işlevleri, header() ve setcookie() işlevlerini kullanarak başlık gönderimini etkilemez, sadece PHP kod blokları arasındaki veriler ve echo gibi işlevler etkilenir.
4 |
5 | ## Komut Listesi
6 | Komut |Anlamı|
7 | ------------|-------------|
8 | [flush](http://php.net/flush)|Çıktı tamponunu boşaltır
9 | [ob_clean](http://php.net/ob_clean)|Çıktı tamponunu temizler (siler)
10 | [ob_end_clean](http://php.net/ob_end_clean)|Çıktı tamponunu temizler (siler) ve tamponu kapatır
11 | [ob_end_flush](http://php.net/ob_end_flush)|Çıktı tamponunu boşaltır (gönderir) ve tamponu kapatır
12 | [ob_flush](http://php.net/ob_flush)|Çıktı tamponunu boşaltır (gönderir)
13 | [ob_get_clean](http://php.net/ob_get_clean)|Geçerli çıktı tamponun içeriğini döndürüp tamponu siler
14 | [ob_get_contents](http://php.net/ob_get_contents)|Çıktı tamponunun içeriği ile döner
15 | [ob_get_flush](http://php.net/ob_get_flush)|Çıktı tamponunu boşaltır, içeriğini bir dizge olarak döndürür ve çıktı tamponlamasını kapatır
16 | [ob_get_length](http://php.net/ob_get_length)|Çıktı tamponunundaki içeriğin uzunluğunu döndürür
17 | [ob_get_level](http://php.net/ob_get_level)|Çıktı tamponlama mekanizmasının iç içelik seviyesini döndürür
18 | [ob_get_status](http://php.net/ob_get_status)|Çıktı tamponlarının durumu ile döner
19 | [ob_gzhandler](http://php.net/ob_gzhandler)|Çıktı tamponunu gziplemek için ob_start geriçağırım işlevi
20 | [ob_implicit_flush ](http://php.net/ob_implicit_flush )|Örtük boşaltmayı açar/kapar
21 | [ob_list_handlers](http://php.net/ob_list_handlers)|Kullanımdaki çıktı eylemcileri listeler
22 | [ob_start](http://php.net/ob_start)|Çıktı tamponlamasını başlatır
23 | [output_add_rewrite_var](http://php.net/output_add_rewrite_var)|URL yeniden yazım değerlerini ekler
24 | [output_reset_rewrite_vars](http://php.net/output_reset_rewrite_vars)|URL yeniden yazma değerlerini sıfırlar
25 |
--------------------------------------------------------------------------------
/konular/komutlar.git.ipuclari.md:
--------------------------------------------------------------------------------
1 | # Git İpuçları
2 |
3 | ## İşletim Sistemi Kurulduğunda Bir Defa Yapılacak İşlemler
4 | ```
5 | sudo apt update
6 | sudo apt upgrade
7 | sudo apt install git -y
8 | git config --global user.email "nuriakman@gmail.com"
9 | git config --global user.name "Nuri Akman"
10 | ```
11 |
12 | ## Her Projede Bir Defa Yapılacak İşlemler
13 | ```
14 | git init
15 | git add .
16 | git commit -m "first commit"
17 | git remote add origin git@github.com:KULLANICIADI/PROJEADI.git
18 | git push -u origin master
19 | ```
20 |
21 | ## Mevcut bir klasöre GitHub bağlantısı Ekleme
22 | ```
23 | git init
24 | git remote add origin git@github.com:KULLANICIADI/PROJEADI.git
25 | git push -u origin master
26 | ```
27 |
28 | ## Her Gün Kullanılan Komutlar
29 | ```
30 | git add .
31 | git commit -m "Commit açıklaması"
32 | git push -u origin master
33 | git pull -u origin master
34 | ```
35 |
36 | ## Projeye yeni dosyalar eklendiğinde
37 | ```
38 | git add .
39 | ```
40 |
--------------------------------------------------------------------------------
/konular/komutlar.matematik.md:
--------------------------------------------------------------------------------
1 | # Matematik Komutları
2 |
3 |
4 | ## Komut Listesi
5 | Komut |Anlamı|
6 | ------------|-------------|
7 | [abs](http://php.net/abs)|Absolute value
8 | [acos](http://php.net/acos)|Arc cosine
9 | [acosh](http://php.net/acosh)|Inverse hyperbolic cosine
10 | [asin](http://php.net/asin)|Arc sine
11 | [asinh](http://php.net/asinh)|Inverse hyperbolic sine
12 | [atan2](http://php.net/atan2)|Arc tangent of two variables
13 | [atan](http://php.net/atan)|Arc tangent
14 | [atanh](http://php.net/atanh)|Inverse hyperbolic tangent
15 | [base_convert](http://php.net/base-convert)|Convert a number between arbitrary bases
16 | [bindec](http://php.net/bindec)|Binary to decimal
17 | [ceil](http://php.net/ceil)|Round fractions up
18 | [cos](http://php.net/cos)|Cosine
19 | [cosh](http://php.net/cosh)|Hyperbolic cosine
20 | [decbin](http://php.net/decbin)|Decimal to binary
21 | [dechex](http://php.net/dechex)|Decimal to hexadecimal
22 | [decoct](http://php.net/decoct)|Decimal to octal
23 | [deg2rad](http://php.net/deg2rad)|Converts the number in degrees to the radian equivalent
24 | [exp](http://php.net/exp)|Calculates the exponent of e
25 | [expm1](http://php.net/expm1)|Returns exp(number) - 1, computed in a way that is accurate even when the value of number is close to zero
26 | [floor](http://php.net/floor)|Round fractions down
27 | [fmod](http://php.net/fmod)|Returns the floating point remainder (modulo) of the division of the arguments
28 | [getrandmax](http://php.net/getrandmax)|Show largest possible random value
29 | [hexdec](http://php.net/hexdec)|Hexadecimal to decimal
30 | [hypot](http://php.net/hypot)|Calculate the length of the hypotenuse of a right-angle triangle
31 | [intdiv](http://php.net/intdiv)|Integer division
32 | [is_finite](http://php.net/is-finite)|Finds whether a value is a legal finite number
33 | [is_infinite](http://php.net/is-infinite)|Finds whether a value is infinite
34 | [is_nan](http://php.net/is-nan)|Finds whether a value is not a number
35 | [lcg_value](http://php.net/lcg-value)|Combined linear congruential generator
36 | [log10](http://php.net/log10)|Base-10 logarithm
37 | [log1p](http://php.net/log1p)|Returns log(1 + number), computed in a way that is accurate even when the value of number is close to zero
38 | [log](http://php.net/log)|Natural logarithm
39 | [max](http://php.net/max)|Find highest value
40 | [min](http://php.net/min)|Find lowest value
41 | [mt_getrandmax](http://php.net/mt-getrandmax)|Show largest possible random value
42 | [mt_rand](http://php.net/mt-rand)|Generate a random value via the Mersenne Twister Random Number Generator
43 | [mt_srand](http://php.net/mt-srand)|Seeds the Mersenne Twister Random Number Generator
44 | [octdec](http://php.net/octdec)|Octal to decimal
45 | [pi](http://php.net/pi)|Get value of pi
46 | [pow](http://php.net/pow)|Exponential expression
47 | [rad2deg](http://php.net/rad2deg)|Converts the radian number to the equivalent number in degrees
48 | [rand](http://php.net/rand)|Generate a random integer
49 | [round](http://php.net/round)|Rounds a float
50 | [sin](http://php.net/sin)|Sine
51 | [sinh](http://php.net/sinh)|Hyperbolic sine
52 | [sqrt](http://php.net/sqrt)|Square root
53 | [srand](http://php.net/srand)|Seed the random number generator
54 | [tan](http://php.net/tan)|Tangent
55 | [tanh](http://php.net/tanh)|Hyperbolic tangent
56 | [number_format](http://php.net/number-format)| Sayıyı binlik bölümlere ayırır
57 |
--------------------------------------------------------------------------------
/konular/kullanim.atom.git.md:
--------------------------------------------------------------------------------
1 | # Atom Editörü İçinde Git Kullanımı
2 |
3 | - Ekranın solundaki panele sağ tık yapıp yeni bir dosya oluşturuyoruz.
4 | - Dosya adını index.php olarak belirliyoruz.
5 | - İçerisine "Merhaba Dünya" yazdırdık.
6 | - Sağ alt bölümde bulunan "Git" sekmesine tıkladık.
7 | - Karşımıza gelen Create Repository butonuna tıkladık.
8 | - Git kullanacağımız klasörü seçtik. htdocs içerisinde olduğumuz için orası otomatik olarak geldi.
9 | - Değiştirdiğimiz/Sildiğimiz/eklediğimiz dosyalar sağdaki Unstaged penceresinde olduğu gibi karşımıza çıkar.
10 | - Stage All butonuna tıkladığımızda dosyamızı, commit yapmaya hazır hale getirir.
11 | - Yapacağımız commit için bir açıklama ekleriz.
12 | - Yaptığımız commitler açıklamalarıyla görüldüğü gibi listelemektedir.
13 | - Merhaba dünya yazdırırken ";" koymayı unutmuşuz.Hemen düzenleme yaptık.Görüldüğü gibi dosyamız sarı renkte pencereye geldi.
14 | - Stage All yaparak dosyamızı commit için hazır hale getirdik.
15 | - See All Staged Changes butonu ile dosyamızdaki değişlikliği görebildik.
16 | - Yaptığımız değişliği açıkladık ve tekrar Commit yaptık.
17 | - Yeni bir dosya oluşturmak istiyoruz.
18 | - Markdown uzantılı bir Readme dosyası oluşturduk.
19 | - Açıklama ekledik ve penceremizde yeni bir şey olduğu için yeşil renkte olduğunu gördük.
20 | - Stage All butonu ile commit etmeye hazır hale getirdik.
21 | - Açıklamamızı yaptık ve dosyamızı commit ettik.
22 | - Dosyamızı github'a atmak için Github penceresine tıkladık.
23 | - Bu dosyanın bir Github deposuna sahip olmadığını uyarısını aldık.
24 | - Github'a gittik ve bir depo oluşturduk.
25 | - Depomuza isim verdik.
26 | - Github bu depo için kullancağımız bir komut verdi.Bu kodu kopyaladık.
27 | - Terminale geldik, c:/xampp/htdocs/ dizinine geçtik ve Github'dan aldığımız kodu yapıştırdık.
28 | - Atom'a döndük ve github penceresinde login butonuna tıkladık.
29 | - Tıkladıktan sonra bize bir link verdi.
30 | - Link'e tıklayıp Atom'daki projemizin GitHub sitesine erişimi için izin verdik.
31 | - Bize bir anahtar (token) oluşturdu.
32 | - Token'ı kopyaladık ve atom editörüne dönüp kutucuğa yapıştırdık.
33 | - Gitbub bağlantımız başarıyla gerçekleşti.
34 | - Sağ altta bulunan Publish butonuna tıkladık ve dosyamızı Github'da ki depomuza yükledik.
35 | - Publish butonuna tıkladığımız zaman Github kullanıcı adı ve parolarımı girmemizi istedi.
36 | - Dosyalarımızı Github'a yükledik.
37 | - Depomuza geri döndük ve sayfayı yeniledik.
38 | - Dosyalarımızın depomuza yüklendiği gördük.
39 |
40 |
41 |
42 | # 1 Defa Yapılacaklar:
43 | - git-scm.com sitesinden git indirilip kurulur.
44 | - git config --global user.name "nuri"
45 | - git config --global user.email "nuri@gmail.com"
46 | - https://github.atom.io/login sayfasına gidilir
47 | - "Your GitHub token" denilen ekrandaki kod (token) alınır.
48 | -
49 | - github'a git,
50 | - Repo oluştur
51 | - Adresini kopyala
52 | -
53 | - ATOM'a geç
54 | - Shift-Ctrl-p
55 | - github:clone
56 | - YAPIŞTIR
57 |
58 | git plus eklentisi???
59 |
--------------------------------------------------------------------------------
/konular/kullanim.composer.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | # composer Paket Yöneticisi
4 |
5 | Web projesinin bağımlılıklarını (dependencies) yönetmek önemli bir sorundur. Composer, PHP için zarif ve basit bir bağımlılık yöneticisidir. https://packagist.org/ adresindeki PHP kütüphanelerinin kolayca projeye dahil edilebilmesini ve yönetilmesini sağlar.
6 |
7 |
8 | # composer Kurulumu
9 |
10 | Detaylı bilgi: [getcomposer](https://getcomposer.org/download/)
11 | ```BASH
12 | php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
13 | php -r "if (hash_file('sha384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75bf9a129d5daa8ba6a13e2cc8a1da0806388a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
14 | php composer-setup.php
15 | php -r "unlink('composer-setup.php');"
16 | ```
17 |
18 |
19 | ## Örnek 1: Çalışma süresini ölçecek program
20 |
21 | PHP'de yazdığınız bir kodun ne kadar sürede işlendiğini öğrenme ihtiyacımız olduğunu düşünelim.
22 |
23 | Bunun için php-timer kütüphanesini kullanabiliriz.
24 |
25 | php-timer kütüphanesini projemize eklemek için composer'dan faydalanalım:
26 |
27 | ```composer require phpunit/php-timer```
28 |
29 | Hepsi bu kadar! Bu komutla birlikte ```composer.json``` ve ```composer.lock``` dosyaları oluşur. Ayrıca ```vendor```adlı bir de dizin eklenir.
30 |
31 | Bu kütüphaneyi programımıza dahil etmek için programın başına ```require 'vendor/autoload.php';``` satırının eklenmesi yeterlidir.
32 |
33 | ### Örnek Program Kodu
34 |
35 | ```PHP
36 | debug('Dizi içindeki değerler ', $arrUrunler);
74 | $logger->info("Bu LOG kaydı 'info' için bir örnektir.");
75 | $logger->error("Bu LOG kaydı 'error' için bir örnektir.");
76 | $logger->notice("Bu LOG kaydı 'notice' için bir örnektir.");
77 | $logger->emergency("Bu LOG kaydı 'emergency' için bir örnektir.");
78 | $logger->notice("Bu LOG kaydı 'notice' için bir örnektir.");
79 | $logger->warning("Bu LOG kaydı 'warning' için bir örnektir.");
80 | $logger->alert("Bu LOG kaydı 'alert' için bir örnektir.");
81 | $logger->critical("Bu LOG kaydı 'critical' için bir örnektir.");
82 | $logger->alert("Bu LOG kaydı 'alert' için bir örnektir.");
83 | ```
84 |
--------------------------------------------------------------------------------
/konular/kurulum.asgari.sh:
--------------------------------------------------------------------------------
1 | ################# SİSTEM GÜNCELLEMESİ KURULUMU
2 | sudo apt update -y
3 | sudo apt upgrade -y
4 | ################# MARIADB KURULUMU
5 | sudo apt install mariadb-server mariadb-client -y
6 | sudo sudo systemctl enable mariadb -y
7 | sudo systemctl enable mariadb
8 | sudo service mariadb restart
9 | ################# MYSQL ROOT PAROLASI BELİRLENMESİ
10 | ##sudo mysql_secure_installation ## bash içinden çalıştırılamaz. Manuel çalıştırılmalıdır...
11 | ################# APACHE KURULUMU
12 | sudo apt install apache2 apache2-utils -y
13 | rm -f /var/www/html/index.html
14 | sudo systemctl enable apache2
15 | sudo service apache2 restart
16 | ################# APACHE DİZİNİ AYARLARI
17 | sudo adduser $USER www-data
18 | sudo chown -R $USER:www-data /var/www/html/
19 | ################# ADMINER KURULUMU
20 | mkdir /var/www/html/adminer
21 | cd /var/www/html/adminer
22 | wget -O index.php https://www.adminer.org/latest.php
23 | ################# PHP KURULUMU
24 | sudo apt install php php-pear php-fpm php-dev php-zip php-curl php-xmlrpc php-sqlite3 php-gd php-mysql php-mbstring php-xml libapache2-mod-php -y
25 | sudo service apache2 restart
26 | ################# GİT KURULUMU
27 | sudo apt install git -y
28 | git config --global user.email "nuriakman@gmail.com"
29 | git config --global user.name "Nuri Akman"
30 | ################# EKSTRALARIN KURULUMU
31 | sudo apt install vim axel gnome-tweak-tool net-tools -y
32 | ################# SNAP'LARIN KURULUMU
33 | sudo apt install snapd -y
34 | sudo snap install snap-store
35 | sudo snap install atom --classic
36 | ################# ATOM EKLENTİLERİNİN KURULMASI
37 | apm install autoclose-html
38 | apm install duplicate-line-or-selection emmet file-icons highlight-selected minimap minimap-highlight-selected
39 | ################# MASAÜSTÜ İÇİN AYARLAR
40 | gsettings set org.gnome.shell.extensions.dash-to-dock click-action 'minimize'
41 | gsettings set org.gnome.shell.extensions.dash-to-dock scroll-action 'cycle-windows'
42 | ################# WWW/HTML KLASÖRÜ İÇİN MASAÜSTÜNE LİNK EKLEYELİM
43 | cd ~/Masaüstü || cd ~/Desktop
44 | ln -s /var/www/html/
45 | ################# KURULU PROGRAMLARIN VERSION BİLGİLERİNİ ÖĞRENELİM
46 | php -v
47 | apache2 -v
48 | mysql --version
49 |
--------------------------------------------------------------------------------
/konular/kurulum.index.md:
--------------------------------------------------------------------------------
1 | ## Windows İçin Gerekli Ortamların Kurulumu İçin İlgili Siteler
2 |
3 | - Atom editörü: https://atom.io/
4 |
5 | - Xampp: https://www.apachefriends.org/tr/
6 |
7 | - Wamp: http://www.wampserver.com/en/
8 |
9 | - Mamp: https://www.mamp.info/en/downloads/
10 |
11 | - Git: https://git-scm.com/download/win
12 |
13 | - Adminer: https://www.adminer.org/
14 |
--------------------------------------------------------------------------------
/konular/kurulum.mamp.md:
--------------------------------------------------------------------------------
1 | # MAMP Kurulumu
2 |
--------------------------------------------------------------------------------
/konular/kurulum.menu.linux.md:
--------------------------------------------------------------------------------
1 | # Linux'da Çalışma Ortamı Kurulumu
2 |
3 | ## Kurulacak Programlar
4 | - [Ubuntu 19.04 Kurulumu Sonrasında Çalışma Ortamının Hazırlanması](../konular/ayarlar.ubuntu.md)
5 | - [MariaDB/MySQL İçin Parola Belirleme / Sıfırlama](../konular/ayarlar.mariadb.md)
6 | - [GitHub İçin SSH Key Üretme](../konular/ayarlar.sshkey.md)
7 | - [Virtualbox](https://download.virtualbox.org/virtualbox/6.0.10/virtualbox-6.0_6.0.10-132072~Ubuntu~bionic_amd64.deb) / .deb file / Ver 6.0.10
8 |
--------------------------------------------------------------------------------
/konular/kurulum.menu.macos.md:
--------------------------------------------------------------------------------
1 | # MACOS İçin Kurulum
2 |
3 | MacOS altında PHP ve MySQL çalışabilmek için sadece [Atom](https://atom.io/) ve [MAMP](https://www.mamp.info/en/) kurulması yeterlidir. Sanal makine için [Virtualbox](https://download.virtualbox.org/virtualbox/6.0.10/VirtualBox-6.0.10-132072-OSX.dmg) Ver 6.0.10
4 |
5 | ## Faydalı Ayarlamalar
6 |
7 | **~/.profile** adlı dosyaya şu satır eklenir:
8 |
9 | ```export PATH=$PATH:/Applications/MAMP/Library/bin/```
10 |
11 | Bundan sonra çalışabilir bir dosya aranırken buraya da otomatik olarak bakılır.
12 |
13 | Böylece, ```/Applications/MAMP/Library/bin/mysql -v``` yerine şu yazılabilir: ```mysql -v```
14 |
15 | **MAMP php.ini dosyası yeri:** /Applications/MAMP/bin/php/php7.2.1/conf
16 |
17 |
18 | php.ini'nin sonuna ekle:
19 | ```
20 | display_errors = On
21 | display_startup_errors = On
22 | error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED & ~E_WARNING
23 | ```
24 |
25 | Apache'yi yeniden başlatmayı unutma!
26 |
27 | service httpd restart
28 | service apache2 restart
29 |
--------------------------------------------------------------------------------
/konular/kurulum.menu.windows.md:
--------------------------------------------------------------------------------
1 | # Windows'da Çalışma Ortamı Kurulumu
2 |
3 | ## Windows İçin İndirme Bağlantıları
4 | - [Atom Editörü](https://github.com/atom/atom/releases/download/v1.34.0/atom-windows.zip) Ver 1.34
5 | - [Git (32 Bit)](https://github.com/git-for-windows/git/releases/download/v2.20.1.windows.1/Git-2.20.1-32-bit.exe) Ver 2.20.1 (32 Bit) **veya** [Git (64 Bit)](https://github.com/git-for-windows/git/releases/download/v2.20.1.windows.1/Git-2.20.1-64-bit.exe) Ver 2.20.1 (64 Bit)
6 | - [Git Bash Kurulumu (Alternatif olarak)](./kurulum.windows.gitbash.md)
7 | - [XAMPP / PHP 7.3](https://www.apachefriends.org/xampp-files/7.3.1/xampp-win32-7.3.1-0-VC15-installer.exe) Ver 7.3.1
8 | - [XAMPP Sıkça Sorulan Sorular - Windows](https://www.apachefriends.org/faq_windows.html)
9 | - [XAMPP Sıkça Sorulan Sorular - Linux](https://www.apachefriends.org/faq_linux.html)
10 | - [XAMPP Sıkça Sorulan Sorular - MacOS](https://www.apachefriends.org/faq_osx.html)
11 | - [Virtualbox](https://download.virtualbox.org/virtualbox/6.0.10/VirtualBox-6.0.10-132072-Win.exe) Ver 6.0.10
12 |
13 |
14 | **NOT:** [XAMPP / PHP 5.6](https://www.apachefriends.org/xampp-files/5.6.40/xampp-win32-5.6.40-0-VC11-installer.exe) Ver 5.6.40 sürümünü kurularak eski PHP projelerinizi çalıştırabileceğiniz ortama kavuşabilirsiniz.
15 |
16 | ## Kurulum Notları
17 | - Git kurulumu sırasında **unix programları kurulsun** seçeneği işaretli olarak kurulum tamamlanmalıdır.
18 | - Git kurulumu bitince ssh-keygen çalıştırılmalıdır.
19 | - id_rsa.pub dosyası kullanıcı klasörü içinde **.ssh** dizini altındadır.
20 | - ```type c:\users\user\.ssh\id_rsa.pub``` ile dosya içeriği alınır.
21 | - ```git clone``` komutu kullanılmadan önce htdoc dizinine şu şekilde geçilmesi gerekir: ```cd c:\xampp\htdocs\```
22 |
--------------------------------------------------------------------------------
/konular/kurulum.sh:
--------------------------------------------------------------------------------
1 | ################# SİSTEM GÜNCELLEMESİ KURULUMU
2 | sudo apt update -y
3 | sudo apt upgrade -y
4 | ################# MARIADB KURULUMU
5 | sudo apt install mariadb-server mariadb-client -y
6 | sudo systemctl enable mariadb
7 | sudo service mariadb restart
8 | ################# MYSQL ROOT PAROLASI BELİRLENMESİ
9 | ##sudo mysql_secure_installation ## bash içinden çalıştırılamaz. Manuel çalıştırılmalıdır...
10 | ################# APACHE KURULUMU
11 | sudo apt install apache2 apache2-utils -y
12 | sudo rm -f /var/www/html/index.html
13 | sudo systemctl enable apache2
14 | sudo service apache2 restart
15 | ################# APACHE DİZİNİ AYARLARI
16 | sudo adduser $USER www-data
17 | sudo chown -R $USER:www-data /var/www/html/
18 | ################# ADMINER KURULUMU
19 | mkdir /var/www/html/adminer
20 | cd /var/www/html/adminer
21 | wget -O index.php https://www.adminer.org/latest.php
22 | ################# PHP KURULUMU
23 | sudo apt install php php-pear php-fpm php-dev php-zip php-curl php-xmlrpc php-sqlite3 php-gd php-mysql php-mbstring php-xml libapache2-mod-php -y
24 | sudo service apache2 restart
25 | ################# GİT KURULUMU
26 | sudo apt install git -y
27 | git config --global user.email "nuriakman@gmail.com"
28 | git config --global user.name "Nuri Akman"
29 |
30 |
31 | ################# EKSTRALARIN KURULUMU
32 | sudo apt install vim axel gnome-tweak-tool net-tools hardinfo -y
33 | ################# SNAP'LARIN KURULUMU
34 | sudo apt install snapd -y
35 | sudo snap install snap-store
36 | sudo snap install postman
37 | sudo snap install atom --classic
38 | sudo snap install vscode --classic
39 | sudo snap install sublime-text --classic
40 | axel https://download.sublimetext.com/sublime-merge_build-1116_amd64.deb
41 | sudo dpkg -i sublime-merge_build-1116_amd64.deb
42 | ################# ATOM EKLENTİLERİNİN KURULMASI
43 | apm install atom-beautify autoclose-html color-picker drag-relative-path
44 | apm install duplicate-line-or-selection emmet file-icons highlight-line
45 | apm install highlight-selected markdown-preview-plus minimap-highlight-selected
46 | apm install minimap sublime-style-column-selection teletype todo-show project-viewer
47 | ################# MASAÜSTÜ İÇİN AYARLAR
48 | gsettings set org.gnome.shell.extensions.dash-to-dock click-action 'minimize'
49 | gsettings set org.gnome.shell.extensions.dash-to-dock scroll-action 'cycle-windows'
50 | ################# WWW/HTML KLASÖRÜ İÇİN MASAÜSTÜNE LİNK EKLEYELİM
51 | cd ~/Masaüstü || cd ~/Desktop
52 | ln -s /var/www/html/
53 |
54 | php -v
55 | apache2 -v
56 | mysql --version
57 |
58 |
59 |
--------------------------------------------------------------------------------
/konular/kurulum.windows.gitbash.md:
--------------------------------------------------------------------------------
1 | # Windows'ta Gitbash Kurulumu
2 | Öncelikle [buradan](https://git-scm.com/downloads) "Git For Windows"u indiriyoruz.
3 |
4 | 1. Kurulumu yaparken "Select Components" başlığı altında bulunan "Windows Explorer Integration (Git bash ve Git GUI)"ın işaretli olmasına dikkat ediyoruz.
5 | 2. "Choosing the default editor used by Git" başlığı altında kullandığınız herhangi bir editörü seçip devam edebilirsiniz. (Notepad++, VS Code, Atom ve Sublime gibi editörler arasında seçim yapabiliyorsunuz.)
6 | 3. Geri kalan seçenekleri basitçe hepsini "Next" diyerek geçebilirsiniz.
7 |
8 | - Artık herhangi bir dosya dizinindeyken veya masaüstündeyken boş bir yere sağ tıkladığınızda "Git GUI here" ve "Git Bash here" seçeneklerini göreceksiniz.
9 | - Bulunduğunuz dizini Git Bash ile açacak olursanız bir konsol ekranı karşınıza çıkacak. [Burada](./komutlar.git.md) bulunan Git ile ilgili tüm komutları Git Bash'de çalıştırabilirsiniz.
10 | - Git GUI'de de Git Bash üzerinde yaptığımız her şeyi bir grafiksel arayüzle beraber yapabilirsiniz ama ben geri kalan her şeyi Git Bash üzerinden anlatacağım.
11 |
12 | ## Yerel Repo Konfigürasyonu
13 | 1. Dilerseniz masaüstünüze dilerseniz de "Belgeler" klasörüne yeni bir klasör oluşturun.
14 | 2. Bu yeni klasörü açın, içinde sağ tıklayın ve "Git Bash Here" seçeneğine basın.
15 | 3. Öncelikle SSH key üretmemiz ve bunu GitHub'da tanımlamamız gerekiyor. Bunun nasıl yapılacağına [buradan bakabilirsiniz](./ayarlar.sshkey.md).
16 | 4. Devamında komut penceresine aşağıdaki komutları yazın:
17 | ```
18 | git config --global user.name "kullaniciadi"
19 | git config --global user.email eposta@adresi.com
20 | git init
21 | ```
22 | **Not: Bu kodların hepsi ve daha fazlası açıklamalarıyla birlikte [burada](./komutlar.git.md) mevcut.**
23 | 5. Şimdi ise projemizi klonlamamız gerek. Bunun için projemize geliyor, "Clone or Download"a basıyor ve oradan SSH key'ini kopyalıyoruz.
24 | 6. Devamında ```git clone kopyaladigimiz-ssh-keyi```'ni yazıp enter'a basıyoruz.
25 | 7. Ve artık hazırsınız!
26 | ## Yaptığımız Değişiklikleri Commit'leyip Push'lamak
27 | Yaptığınız değişiklikleri Push'lamak için iki seçeneğiniz var:
28 |
29 | 1. **Git GUI**: Yerel reponuzun bulunduğu dizine sağ tıklayıp "Git GUI here" derseniz eğer, karşınıza çıkan pencerede "Unstaged Changes" bölümünü göreceksiniz. Öncelikle aşağıdaki "Initial Commit Message" yazan büyük boşluğa mesajınızı yazın. Sonra "Stage Changed" butonuna basın. Sırasıyla Commit ve Push butonlarına da bastığınızda yaptığınız değişikliklerin GitHub'a kolaylıkla yüklendiğini göreceksiniz.
30 | 2. **Git Bash**: Yerel reponuzun bulunduğu dizine sağ tıklayıp "Git Bash Here"ı seçin ve geri kalan işlemler Linux'ta yapılan işlemler ile aynı. Bunun için daha önce de verdiğim [bu link](./komutlar.git.md)ten **Sık Kullanılan Git Komutları** başlığına bakabilirsiniz.
31 |
--------------------------------------------------------------------------------
/konular/linux.video.1.md:
--------------------------------------------------------------------------------
1 | # Linux Komut Satırı Yardımı İle Veri Toplama
2 | Bu sunum sırasında bir siteden döviz kurlarını çekme örneği, bir sitedeki bazı fotoğrafların indirilmesi örneği, bir eticaret sitesinden bazı ürün fiyatlarının çekilmesi örnekleri yapıldı.
3 |
4 | Video: [Linux Komut Satırı Yardımı İle Veri Toplama](https://www.youtube.com/watch?v=Y6YPNln3E70)
5 |
6 | ## Öğrendiğimiz Komutlar
7 |
8 | Komut | Açıklama
9 | ---|---
10 | `mkdir` | Klasör oluşturur
11 | `cd` | Klasör değiştirir
12 | `ls` | Klasördeki dosyaları listeler
13 | `mv` | Dosyaları başka bir hedefe taşır. Dosya adı değiştirmek için de kullanılır
14 | `wget` | Bir internet sayfasının kaynak kodunu indirir. Dosya ise, dosyayı indirir
15 | `cat` | Dosya içeriğini ekrana gösterir
16 | `grep` | Dosya içinden istediğimiz satırları süzer
17 | `sed` | Dosya içinden istediğimiz ifadeyi bir diğer ifade ile değiştirir
18 | `wc` | Dosyanın satır, kelime ve harf sayısını verir
19 | `tr` | Karakter silme veya değiştirme işini yapar
20 | `head` | Dosyanın sadece ilk N satırının alınmasını sağlar
21 | `cut` | Dosya içeriğini belirli ayıraçlara göre böler ve istenilen sutunları alır
22 | `rm` | Dosya siler
23 | `paste` | Birden fazla dosyayı YAN YANA birleştirip tek dosya yapar
24 | `crontab` | Sistemin belirli zamanlarda belirli komutları çalıştırmasını sağlar
25 | `seq` | İstenilen aralıkta sayı üretir
26 | `xargs` | Bir önceki komutun her bir çıktısını almak ve kullanmak işlevini görür
27 |
28 |
29 | ## ÖRNEK 1; Döviz Kurlarını çekme
30 | ```bash
31 | wget -O kur.txt https://kur.doviz.com/serbest-piyasa
32 | cat kur.txt | tr -d '\r' | tr -d '\n' | sed "s||\n\n|g" | sed "s/
]*>/\t/g' | tr -s ' ' | cut -f 6,9,11,19 | tr '\t' ';' > kurlar.txt
33 | ```
34 |
35 | ## ÖRNEK 2; eTicaret Sitesinden ürün adı ve fiyatlarını çekme
36 | ```bash
37 | wget -O 1.txt https://www.migros.com.tr/ariel-b-35f/camasir-yikama-c-86
38 | cat 1.txt | grep "data-product-name" | sed $'s/data-product-name/\\\nXXX/g' | grep "XXX" | cut -d \" -f 2 > AD.txt
39 | cat 1.txt | grep "data-monitor-name" | sed $'s/data-monitor-price/\\\nXXX/g' | grep "XXX" | cut -d \" -f 2 > FIYAT.txt
40 | paste FIYAT.txt AD.txt
41 | ```
42 |
43 | ## ÖRNEK 3; Duvarkağıdı sitesinden resim indirme
44 | ```bash
45 | wget -O 1.txt https://www.hdwallpapers.in/flowers-desktop-wallpapers/page/1
46 | cat 1.txt | grep "t1.jpg" | cut -d \" -f 2 | sed "s|/thumbs|https://www.hdwallpapers.in/thumbs|g" | sed "s/t1.jpg/t2.jpg/g" > resimler.txt
47 | wget -i resimler.txt
48 | ```
49 |
50 | ## ÖRNEK 4; Duvarkağıdı sitesinden resim indirme (Paralel Görev)
51 | 33 Sayfadaki resimlerin 15 koldan paralel zamanlı çalışma ile indirilmesi örneği
52 | ```bash
53 | seq 1 33 | xargs -P 15 -I{} wget -q -O {}.html https://www.hdwallpapers.in/flowers-desktop-wallpapers/page/{}
54 | cat *.html > TOPLU.txt
55 | cat TOPLU.txt | grep "t1.jpg" | cut -d \" -f 2 | sed "s|/thumbs|https://www.hdwallpapers.in/thumbs|g" | sed "s/t1.jpg/t2.jpg/g" > resimler.txt
56 | cat resimler.txt | xargs -P 15 -I{} wget -q {}
57 | ```
58 |
--------------------------------------------------------------------------------
/konular/markdown.kodlama.md:
--------------------------------------------------------------------------------
1 | # MarkDown Kodlama
2 |
3 | ## MarkDown kodları
4 |
5 | - [MarkDown kodları](https://guides.github.com/features/mastering-markdown/)
6 | - [Daha Fazla MarkDown kodu](https://paperhive.org/help/markdown)
7 |
8 | ## MarkDown içinde emoji kullanımı :heart:
9 | - [Kopyala-yapıştır ile Emoji Kullanın](https://getemoji.com/)
10 | - [Git içinde kullanılabilecek emoji listesi](https://gist.github.com/rxaviers/7360908)
11 |
12 | ## MarkDown içine YouTube videosu yerleştirme
13 | ```
14 | [](http://www.youtube.com/watch?v=VIDEONUNKODUBURAYA)
15 | ```
16 | [](http://www.youtube.com/watch?v=2ecLnNmiS2k)
17 |
18 | ## Checkbox içeren liste yapımı
19 | KAYNAK: https://github.com/atolye15/checklist/blob/master/checklists/configure-php-cs-fix.md
20 | ```
21 |
22 | - [ ] Make sure PHP CS Fixer installed for the development environment only
23 | We needn't have CS Fixer on any other environment.
24 |
25 | - [ ] Make sure to exclude auto-generated files
26 | Strongly recommended to exclude auto-generated files like `Migrations` for example. That kind of file may be risky to overwrite.
27 |
28 | - [ ] Set correct CS rules based on project needs
29 | You can find all CS rules on [this](https://mlocati.github.io/php-cs-fixer-configurator) repository.
30 |
31 | ```
32 |
33 | ## .md dosyasının en üstüne tek satırlık tablo oluşturma
34 | KAYNAK: https://github.com/atolye15/checklist/blob/master/checklists/configure-php-cs-fix.md
35 | ```
36 | ---
37 | title: Configure PHP CS Fixer
38 | category: Back-End
39 | date: "2020-03-23"
40 | tags: ['php', 'symfony', 'configure']
41 | description: Sometimes, we mess up the basic rules of code style. So we need a friend to cover our back! With PHP we are using PHP CS Fixer by to configure it we follow the steps below.
42 | ---
43 |
44 | ```
45 |
--------------------------------------------------------------------------------
/konular/mysql.engines.md:
--------------------------------------------------------------------------------
1 |
2 | # MySQL Engines: InnoDB vs. MyISAM
3 |
4 | ## A Comparison of Pros and Cons
5 |
6 | The 2 major types of table storage engines for MySQL databases are InnoDB and MyISAM. To summarize the differences of features and performance,
7 |
8 | - InnoDB is newer while MyISAM is older.
9 | - InnoDB is more complex while MyISAM is simpler.
10 | - InnoDB is more strict in data integrity while MyISAM is loose.
11 | - InnoDB implements row-level lock for inserting and updating while MyISAM implements table-level lock.
12 | - InnoDB has transactions while MyISAM does not.
13 | - InnoDB has foreign keys and relationship contraints while MyISAM does not.
14 | - InnoDB has better crash recovery while MyISAM is poor at recovering data integrity at system crashes.
15 | - MyISAM has full-text search index while InnoDB has not.
16 |
17 | In light of these differences, InnoDB and MyISAM have their unique advantages and disadvantages against each other. They each are more suitable in some scenarios than the other.
18 |
19 | ### Advantages of InnoDB
20 |
21 | - InnoDB should be used where data integrity comes a priority because it inherently takes care of them by the help of relationship constraints and transactions.
22 | - Faster in write-intensive (inserts, updates) tables because it utilizes row-level locking and only hold up changes to the same row that’s being inserted or updated.
23 |
24 | ### Disadvantages of InnoDB
25 |
26 | - Because InnoDB has to take care of the different relationships between tables, database administrator and scheme creators have to take more time in designing the data models which are more complex than those of MyISAM.
27 | - Consumes more system resources such as RAM. As a matter of fact, it is recommended by many that InnoDB engine be turned off if there’s no substantial need for it after installation of MySQL.
28 | - No full-text indexing.
29 |
30 | ### Advantages of MyISAM
31 |
32 | - Simpler to design and create, thus better for beginners. No worries about the foreign relationships between tables.
33 | - Faster than InnoDB on the whole as a result of the simpler structure thus much less costs of server resources.
34 | - Full-text indexing.
35 | - Especially good for read-intensive (select) tables.
36 |
37 | ### Disadvantages of MyISAM
38 |
39 | - No data integrity (e.g. relationship constraints) check, which then comes a responsibility and overhead of the database administrators and application developers.
40 | - Doesn’t support transactions which is essential in critical data applications such as that of banking.
41 | - Slower than InnoDB for tables that are frequently being inserted to or updated, because the entire table is locked for any insert or update.
42 |
43 | The comparison is pretty straightforward. InnoDB is more suitable for data critical situations that require frequent inserts and updates. MyISAM, on the other hand, performs better with applications that don’t quite depend on the data integrity and mostly just select and display the data.
44 |
45 |
--------------------------------------------------------------------------------
/konular/mysql.replication.md:
--------------------------------------------------------------------------------
1 | # MySQL Replication
2 |
3 | ## MASTER Sunucu MY.INI içinde yapılacaklar
4 | ```
5 | log-bin = mysql-bin
6 | server-id = 1
7 | #binlog-do-db=test ---> Sadece bu database'i replike eder
8 | #binlog-ignore-db=otokoc ---> Bu database hariç tüm database'leri replike eder.
9 | ```
10 |
11 | ## MASTER Sunucuda Yukarıdaki Ayarlar Sonrası Yapılacaklar
12 | ```
13 | Sunucuyu restart et ve aşağıdaki SQL'leri çalıştır:
14 | GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'PAROLANIZ';
15 | FLUSH PRIVILEGES;
16 | USE testdb;
17 | FLUSH TABLES WITH READ LOCK;
18 | SHOW MASTER STATUS;
19 |
20 | Show master status dediğiniz zaman replike edeceğiniz db’nin durumunu gösteren, aşağıdakine benzer bir çıktı almanız gerekir;
21 | +------------------+----------+---------------+------------------+
22 | | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
23 | +------------------+----------+---------------+------------------+
24 | | mysql-bin.000002 | 351 | testdb,testdb | |
25 | +------------------+----------+---------------+------------------+
26 | 1 row in set (0.00 sec)
27 | ```
28 |
29 | ## SLAVE Sunucu MY.INI içinde yapılacaklar
30 | server-id=2
31 |
32 |
33 | ## SLAVE Sunucuda Yukarıdaki Ayarlar Sonrası Yapılacaklar
34 | Sunucuyu restart et
35 | ```
36 | STOP SLAVE;
37 |
38 | CHANGE MASTER TO
39 | MASTER_HOST='master_mysqlin_ipsi',
40 | MASTER_USER='slave_user',
41 | MASTER_PASSWORD='PAROLANIZ',
42 | MASTER_LOG_FILE='mysql-bin.000002',
43 | MASTER_LOG_POS=351;
44 |
45 | START SLAVE;
46 | ```
47 |
--------------------------------------------------------------------------------
/konular/oneriler.md:
--------------------------------------------------------------------------------
1 | # Proje İçin Öneriler
2 |
3 | Proje kapsama alanına konu ekleme, örnek ekleme vb her türlü önerinizi bu sayfaya yazarak projenin gelişmesine katkıda bulunabilirsiniz.
4 |
5 | Önerlerinizi aşağıdaki örneğe göre LİSTENİN SONUNA ekleyerek yapınız.
6 |
7 | ### Önerinizin Başlığı/Konusu
8 | Öneriniz ile ilgiliaçıklamak istediğiniz şeyler, faydalanılabilecek sayfa linkleri vb. şeyler buraya yazılır.
9 |
10 |
11 | # ÖNERİLERİNİZ
12 |
13 | ### Kodlama Öğreten Siteler
14 | Programlamanın kolayca öğrenilebilmesi amacıyla hazırlanmış olan **Kodlama Öğreten Siteler** sayfası açılarak (*Blok Programlama* gibi siteler) bu sitelerin bir liste ile kısa açıklamaları eklenebilir.
15 | - https://www.tynker.com
16 | - https://code.org/
17 | - https://scratch.mit.edu/
18 | - https://developers.google.com/blockly/
19 | - https://hourofcode.com/us/tr/learn
20 | - http://www.mblock.cc/
21 | - Programlamaya Giriş Örneği: https://studio.code.org/hoc/1
22 |
--------------------------------------------------------------------------------
/konular/ornek.css.md:
--------------------------------------------------------------------------------
1 | # CSS Nedir?
2 |
3 | CSS, “Cascading Style Sheets" kelimelerinin kısaltılmasından oluştur ve türkçe anlamı Basamaklı Stil Şablonları ya da Basamaklı Biçim Sayfaları şeklindedir.
4 |
5 | CSS en temel haliyle HTML etiketlerimizin görsel açından biçimlendirilmesini (Renk, yazı şekli, arka plan rengi, genişlik, yükseklik, pozisyon durumu vs) sağlar.
6 |
7 | CSS’in sahip olduğu seçiciler vardır. Bunlar id ve class olarak ikiye ayrılır. HTML etiketlerinde tanımladığımız seçici isimleriyle birlikte CSS kullanarak etiketleri biçimlendiririz.
8 |
9 |
10 | ## CSS'in Yapısı
11 | 
12 |
13 | ## CSS Seçici Terminolojisi
14 | 
15 |
16 |
17 | ## HTML + CSS + JS = Web Page
18 | 
19 |
20 |
21 | ## Satıriçi (Inline) CSS
22 | ```HTML
23 |
32 | Renk tercihi yapabilirsiniz :
33 | Siyah
34 | Kırmızı
35 | Yeşil
36 | Mavi
37 |
38 |
39 |
Ana sayfa
40 |
41 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Unde aperiam dicta excepturi explicabo officia recusandae consectetur reiciendis quisquam a nostrum repellendus asperiores quaerat eligendi quasi quos facere ullam iste, facilis.
42 |
71 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Unde aperiam dicta excepturi explicabo officia recusandae consectetur reiciendis quisquam a nostrum repellendus asperiores quaerat eligendi quasi quos facere ullam iste, facilis.
72 |
73 |
74 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Unde aperiam dicta excepturi explicabo officia recusandae consectetur reiciendis quisquam a nostrum repellendus asperiores quaerat eligendi quasi quos facere ullam iste, facilis.
75 |
76 |
77 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Unde aperiam dicta excepturi explicabo officia recusandae consectetur reiciendis quisquam a nostrum repellendus asperiores quaerat eligendi quasi quos facere ullam iste, facilis.
78 |
";
89 | }
90 | } catch (PDOException $e) {
91 | die($e->getMessage());
92 | }
93 | }
94 | ?>
95 | ```
96 |
97 |
--------------------------------------------------------------------------------
/konular/php.ornekleri.md:
--------------------------------------------------------------------------------
1 | # PHP Örnekleri
2 |
3 | - [Php Örneği 1 : MultiByte komutlar için farkındalık örneği](./php.ornek01.md)
4 | - [Php Örneği 2 : Kurallı İfade Çalışması](./php.ornek02.md)
5 | - [Php Örneği 3 : Çoktan Seçmeli Soru Örneği](./php.ornek03.md)
6 | - [Php Örneği 4 : Kurallı İfade - İsim Sözlüğü Örneği](./php.ornek04.md)
7 | - [Php Örneği 5 : JSON Formatında Veri Üreten omdbapi.com Sitesinden Veri Çekme](./php.ornek05.md)
8 | - [Php Örneği 6 : Dizi içeriğinin JSON formatına dönüştürülmesi](./php.ornek06.md)
9 | - [Php Örneği 7 : Dizi içeriğinin XML formatına dönüştürülmesi](./php.ornek07.md)
10 | - [Php Örneği 8 : Kurallı İfade - Veri Çıkarma Örneği](./php.ornek08.md)
11 | - [Php Örneği 9 : Kurallı İfade - Veri Ayıklama Örneği](./php.ornek09.md)
12 | - [Php Örneği 10 : Kelimenin harflerini karıştırma](./php.ornek10.md)
13 | - [Php Örneği 11 : Dizindeki Resimleri Listeleme](./php.ornek11.md)
14 | - [Php Örneği 12 : Cookie Kullanım Örneği](./php.ornek12.md)
15 | - [Php Örneği 13 : PHP ile Dosya Yükleme - File Upload](./php.ornek13.md)
16 | - [Php Örneği 14 : PHP ile Resim Boyutlandırma - Image Resize](./php.ornek14.md)
17 | - [Php Örneği 15 : PHP ile Resim Üzerine Yazı Yazma](./php.ornek15.md)
18 | - [Php Örneği 16 : PHP ile Text Dosya İçeriği Düzenleme](./php.ornek16.md)
19 | - [Php Örneği 17 : PHP ile Text Dosya İçeriği Düzenleme (Geliştirilmiş Örnek)](./php.ornek17.md)
20 | - [Php Örneği 18 : PHP ile Text Dosyaya Metin Ekleme](./php.ornek18.md)
21 | - [Php Örneği 19 : PHP'de Oturum Yönetimi Örneği](./php.ornek19.md)
22 | - [Php Örneği 20 : Kelime Frekans Analizi](./php.ornek20.md)
23 | - [Php Örneği 21 : Arduino IDE Web Client ve ESP8266 İle PHP Kullanımı](./php.ornek21.md)
24 | - [Php Örneği 22 : RSS İle Veri](./php.ornek22.md)
25 | - [Php Örneği 23 : Parent - Child ilişkili tabloda veri çekme](./php.ornek23.md)
26 | - [Php Örneği 24 : HTML Tablo içinde veri süzme örneği](./php.ornek24.md)
27 | - [Php Örneği 25 : Redis Kullanım Örneği](./php.ornek25.md)
28 | - [Php Örneği 26 : Örnek HTML Form](./php.ornek26.md)
29 | - [Php Örneği 27 : PHP ile ePosta Gönderme (yandex ve gmail) ](./php.ornek27.md)
30 | - [Php Örneği 28 : DOMPDF ile PDF üretme örneği](./php.ornek28.md)
31 | - [Php Örneği 29 : `curl` ile dış kaynaktan JSON veri alma](./php.ornek29.md)
32 | - [Php Örneği 30 : PHP ile 2D Barkod Üretme](./php.ornek30.md)
33 | - [Php Örneği 31 : PHP ile 3D Barkod Üretme 1](./php.ornek31.md)
34 | - [Php Örneği 32 : PHP ile 3D Barkod Üretme 2](./php.ornek32.md)
35 | - [Php Örneği 33 : PHP ile Excell'e Veri Aktarma (Basit Liste)](./php.ornek33.md)
36 | - [Php Örneği 34 : PHP ile Excell'e Veri Aktarma (İleri Seviye)](./php.ornek34.md)
37 | - [Php Örneği 35 : SOAP ile Veri Çekme](./php.ornek35.md)
38 | - [Php Örneği 36 : PHP ve Ajax ile Sohbet Odası](./php.ornek36.md)
39 | - [Php Örneği 37 : PHP ile MarkDown Parser Kullanımı](./php.ornek37.md)
40 | - [Php Örneği 38 : SVG ile Basit Grafik Çizimi](./php.ornek38.md)
41 | - [Php Örneği 39 : DataTables Kullanımı](./php.ornek39.md)
42 | - [Php Örneği 40 : Php, Mysql , Ajax ve Jquery ile canlı arama](./php.ornek40.md)
43 |
44 |
45 | # CSS Örnekleri
46 | - [CSS Örneği 1 : Çok Sutunlu Metin / column-count](./css.ornek01.md)
47 |
--------------------------------------------------------------------------------
/konular/php.projeleri.md:
--------------------------------------------------------------------------------
1 |
2 | # PHP Projeleri
3 | ## [BasitBlog:](https://github.com/nuriakman/BasitBlog)
4 | - Sadece PHP ve MySQL ile yapılmış en temel blog örneği.
5 |
6 | ## [SairlerTextDB:](https://github.com/nuriakman/SairlerTextDB)
7 | - Şairler ve hayatlarının sunulmaya çalışıldığı proje tamamen metin dosyaları (txt dosyalar) kulanılarak hazırlandı. Kullanıcı adı ve parola ile giriş yapabildiğimiz bir de Yönetim Paneli var. Ekleme, düzeltme ve silme işlemlerini yapabiliyoruz.
8 |
9 | ## [SairlerMYSQL:](https://github.com/nuriakman/SairlerMySQL)
10 | - Şairler ve hayatlarının sunulmaya çalışıldığı projemizi MySQL ile hazırladık. Kullanıcı adı ve parola ile giriş yapabildiğimiz bir de Yönetim Paneli var. Ekleme, düzeltme ve silme işlemlerini yapabiliyoruz.
11 |
12 | ## [TextAnaliz:](https://github.com/nuriakman/TextAnaliz)
13 | - Örneğimizde bir konuşmadan aldığımız metni, kendi belirlediğimiz kurallarla anlamsız karakterleri silip, konuşmanın bir özetini çıkarttık. Konuşmanın konusunu bulduk.
14 |
15 | ## [TextDosyadanSozluk:](https://github.com/nuriakman/TextDosyadanSozluk)
16 | - Örneğimizde isimler ve anlamları olan bir dosya oluşturup verileri çektik. Kendi belirlediğimiz kurallarla isimleri, anlamlarını ve cinsiyetlerini ayırdık. Harfe göre isimleri listeledik. İsim arama bölümü yaptık.
17 |
18 | ## [SessionOrnegi:](https://github.com/nuriakman/SessionOrnegi)
19 | - Örneğimizde oturum yönetimine örnek verdik. Session başlatıp, session sonlandırdık.Kullanıcının giriş yapmasını, yaptıktan sonra kontrol etmesini, sessionları silerek oturumu sonlandırmasını sağladık.
20 |
21 | ## [LYK2018phpsozluk:](https://github.com/nuriakman/lyk2018phpsozluk)
22 | - Buradaki örneklerde Glob fonksiyonundan bahsettik. Dosyadaki verileri bölmekten bahsettik. İsimlerin anlamlarını ve cinsiyetlerini böldük. Kutuphane dosyası oluşturup fonksiyonları çağırdık. Seo çalışmasına örnek verdik.
23 |
24 | ## [SozlukMySQL:](https://github.com/nuriakman/SozlukMySQL)
25 | - MySQL ile hazırlanmış isim sözlüğü uygulamasıdır. Yönetim paneli yoktur. Veritabanından alınan isimleri, anlamlarını ve cinsiyetlerini listeler. Harfe göre isimleri listeledik. İsim arama bölümü yaptık.
26 |
27 | ## [LYK2018php:](https://github.com/nuriakman/lyk2018php)
28 | - Örneğimizde github üzerinden ortak bir çalışma yaptık. Konular öğrencilere dağıtıldı ve ortak bir şekilde çalışma yapıldı.
29 |
30 | ## [Include Örneği:](https://github.com/nuriakman/include_ornegi)
31 | - Örneğimizde bootstrap bir temayı parçaladık.
32 |
33 | ## [LYK2018_Ornekler:](https://github.com/nuriakman/LYK2018_Ornekler)
34 | - Bu depoda resim boyutlandırma, resime yazı yazma, text dosya düzenleme, text dosyaya veri ekleme, dosya yükleme çalışmaları yapıldı.
35 |
36 | ## [Teklif Formu:](https://github.com/nuriakman/teklif)
37 | - Bu proje ile https://armut.com/ sitesindekine benzer bir form oluşturma çalışmasına başladık. Proje yarım bırakılmıştır.
38 |
39 | ## [mysqli ile CRUD Telefon Rehberi:](https://github.com/nuriakman/CRUD)
40 | - PHP ve MySQL için basit CRUD örneği. Ordu'da düzenlenen eğitim sırasında yapılan PHP MySQL ile CRUD örneğidir. Örnek, en sade kod ile yazılmıştır.
41 |
42 | ## [PDO ile CRUD Telefon Rehberi:](https://github.com/nuriakman/crud-pdo)
43 | - Eskişehir'de düzenlenen eğitim sırasında yapılan PHP MySQL PDO ile CRUD örneğidir. Örnek, en sade kod ile yazılmıştır.
44 |
--------------------------------------------------------------------------------
/konular/php.regex.md:
--------------------------------------------------------------------------------
1 | # Regular expression (regex)
2 | Türkçesiyle düzenli ifadeler metinlerde bir biçimsel dil kullanarak tarif edilen kısımları seçip ayırmamıza yarayan bir programdır.
3 |
4 | Regex'i kullanabilmemiz için php de bilmemiz gereken bazı fonksiyonlar vardır.
5 | ## preg_match
6 | Bir düzenli ifadeyi eşleştirmeye çalışır.
7 |
8 | ## preg_match_all
9 | Kapsamlı bir düzenli ifade eşleştirmesi yapar.
10 |
11 | ```php
12 | $IsimSoyisim = "Kemal.Mutlu";
13 | $pattern = '/([a-zA-Z]+).([a-zA-Z]+)/';
14 | preg_match_all($desen, $IsimSoyisim, $dizi);
15 | print_r($dizi);
16 | ```
17 | Yukarıdaki örnekte Kemal.Mutlu yazısını parçaladık.a-zA-Z büyük küçük farketmeden bütün harfleri almamızı sağlar.Parantez içine aldığımızda ise bunları gruplar.```([a-zA-Z]+).``` bu bölüm bize "." ya kadar olan bölümü bir grup yaptı.Diğer grubada aynı işlemi uyguladığımızda Kemal'i ve Mutlu'yu ayırmış oluyoruz.
18 |
19 | Php de desen yazarken bir sınırlayıcı belirtmemiz şarttır.Örnek verecek olursak:
20 | - /desen/
21 | - #desen#
22 | - @desen@
23 | - _desen_
24 | Yani bir deseni yazmak için bir sınırlayıcı belirtiyoruz ve deseni o sınırlayıcı ile sonlandırıyoruz.
25 |
26 |
27 |
28 | Aşağıdaki örneği ele alalım.Bir dosyamız var ve ieçrisindeki şehirleri ve isimleri ayırmak istiyoruz.O zaman yapmamız gereken nereden ayıracağımıza karar vermek.
29 |
30 | Dosyamızın içerisinde bu bilgilerin olduğunu düşünelim:
31 |
32 | - ANKARA: Nuri Akman
33 | - ÇANAKKALE: Kemal Mutlu
34 |
35 | Bunun için şöyle bir desen yazabiliriz:
36 | ```php
37 | $dosya = file_get_contents('file.txt'); //Dosyamızı çağırdık.
38 | $desen = '/(.*):(.*)/'; // Desenini belirttik.
39 | preg_match_all($desen,$dosya, $dizi); // Dizi adlı değişkene dizi olarak kaydettik.
40 | ```
41 |
42 | Buradaki desen bize şunu anlatıyor.En baştan başla ":" gelince dur bir grup yap.":" noktadan sonra başla sona kadar git bir grup yap.
43 |
--------------------------------------------------------------------------------
/konular/taslak.komutlar.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nuriakman/PHP-Egitimi/ad4a24597ebcc710e4ecf15f446dba8f582a2350/konular/taslak.komutlar.md
--------------------------------------------------------------------------------
/konular/taslak.ornekler.md:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/konular/temel.sql.komutlari.md:
--------------------------------------------------------------------------------
1 | # MySQL ve PHP Notları
2 |
3 | ## SQL Komutlarının Bazıları
4 | ### Veritabanına yeni bir satır eklemek için `INSERT INTO` komutunu kullanılır.
5 | Örnekte telefon_kodları tablosunda sehir_adı ve telefon_kodu sütununa şehir adı sütununa ankara ve telefon kodu sütununa 312 değerlerini ekler.
6 |
7 | ```SQL
8 | INSERT INTO telefon_kodlari (sehir_adi, telefon_kodu) VALUES ('ankara', '312')
9 | ```
10 | veya
11 | ```SQL
12 | INSERT INTO telefon_kodlari SET sehir_adi='Ankara', telefon_kodu='312'
13 | ```
14 |
15 |
16 | ### Veritabanından silme işlemi yapmak için `DELETE` komutu kullanılır.
17 | Örnekte ID numarası 83 olan satırı telefon_kodlari tablosundan siler.
18 | ```SQL
19 | DELETE FROM telefon_kodlari WHERE id=83
20 | ```
21 |
22 | ### LIKE % kullanımı
23 | İçerisinde "an" ifadesi geçen bütün şehirleri listeler.
24 | ```SQL
25 | SELECT * FROM sehirler WHERE sehir_adi LIKE '%an%'
26 | ```
27 |
28 | ### Hatırlamadığınız harfler için _ karakteri (Joker) kullanılabilir
29 | ```SQL
30 | SELECT * FROM sehirler WHERE sehir_adi LIKE '%an__a%'
31 | ```
32 |
33 | ### DISTINCT dediğimiz için arabalar tablosunda yakit sütunundaki her yakıt türünden birer tane seçerek gösterir.
34 |
35 | ```SQL
36 | SELECT DISTINCT yakit FROM arabalar
37 | ```
38 |
39 | ### GROUP BY diyerek sıraladığımız zaman aynı veritabanında tekrar eden satırları bize göstermez.
40 | ```SQL
41 | SELECT kelime1, kelime2
42 | FROM esanlam
43 | GROUP BY kelime1, kelime2
44 | ```
45 |
46 | ### Veritabanında tekrar eden satırları bulmak için `COUNT(*)>1` kullanılır.
47 | ```SQL
48 | SELECT kelime1, kelime2
49 | FROM esanlam
50 | GROUP BY kelime1, kelime2
51 | HAVING COUNT(*) > 1
52 | ```
53 |
54 | ### Çift olan kayıtların bilgisinin çekilmesi max(id) ya da min(id) bakarak seçilebilir.
55 | ```SQL
56 | SELECT MAX(id) as id
57 | FROM esanlam
58 | GROUP BY kelime1, kelime2
59 | HAVING COUNT(*) > 1
60 | ```
61 |
62 | ### Çift kayıtların silinmesi
63 | ```SQL
64 | DELETE FROM esanlam
65 | WHERE id IN(
66 | SELECT * FROM (
67 | SELECT MAX(id) AS id FROM esanlam
68 | GROUP BY kelime1, kelime2
69 | HAVING COUNT(*) > 1 )
70 | AS SILINECEKLER )
71 | ```
72 |
73 | 
74 |
75 | 
76 |
77 |
78 |
--------------------------------------------------------------------------------
/konular/web.dialogu.md:
--------------------------------------------------------------------------------
1 | # Web Nasıl Çalışır Dialoğu
2 |
3 | ## Hadi gidelim!
4 |
5 | **Tarayıcı:** "Tamam, öyleyse, bu adresi isteyen bir kullanıcım var: www.cnn.com. Herhangi bir eğik çizgi karakteri (slash) veya bir şey olmadığından, bu bir ana sayfanın doğrudan bir talebidir. protokol veya bağlantı noktası tanımlanmadı, bu yüzden bunun HTTP olduğunu ve 80 numaralı bağlantı noktasına gideceğini varsayacağım ... Önce ilk şeyler.... Hey DNS, dostum, uyan! Bu www.cnn.com nerede saklanıyor? "
6 |
7 | **DNS:** "Doğru ... bir saniye bekle, ISS sunucularına soracağım. Tamam, 157.166.226.25 gibi görünüyor."
8 |
9 | **Tarayıcı:** "Tamam. Internet Protocol Suite, sıra sizde! 157.166.226.25 numaralı IP'yi arayın, lütfen. Onlara bu HTTP başlığını gönderin. Ana sayfalarının temel yapısını ve içeriğini soruyor, bu yüzden başka ne getireceğimi biliyorum."
10 |
11 | **TCP / IP:** "Benim sıram derken ne demek istiyorsun? Sadece DNS için az önce çalışmadım mı? Tanrım, burada biraz takdir almak için ne gerekiyor? "
12 |
13 | **Tarayıcı:** ...
14 |
15 | **TCP / IP:** "Evet, evet ... Bağlanıyor ... Sadece ağ geçidinden iletmesini isteyeceğim. Biliyorsun, bu kadar kolay değil, Oraya ulaşabilmek için bu talebi parçalara bölmek zorunda kalacağım, böylece hedefe ulaşırlar ve döndürülecek binlerce paketti toplayıp bir araya getireceğim...."" ah, doğru, umrunda değil.
16 |
17 | Bu arada, CNN merkezinde, bir mesaj Web Sunucusunun kapısına kadar ulaşmıştır.
18 |
19 | **CNN Web Sunucusu:** "Evvet! Yeni bir müşteri! Haber istiyor! Ön Sayfa! Ne yapsak?"
20 |
21 | **CNN Sunucu Tarafı Komut Dosyası Motoru:** "Sağ, yapacak! Ön sayfa, değil mi?"
22 |
23 | **CNN Veritabanı Sunucusu:** "Hey! Benim için çalış! Hangi içeriğe ihtiyacın var?"
24 |
25 | **CNN Sunucu Tarafı Komut Dosyası Motoru:** "... Hımm, üzgünüm DB, istenilen sayfanın bir kopyasını önbelleğimde saklıyorum, herhangi bir şey derlemeye gerek yok. Ama bir dakika! bu kullanıcı kimliğini al ve sakla, Bunu müşteriye de göndereceğim, böylece kiminle konuştuğumuzu bileceğim. "
26 |
27 | **CNN Veritabanı Sunucusu:** "Tamam dostum!"
28 |
29 | ## Kullanıcının bilgisayarına dönersek ...
30 |
31 | **TCP / IP:** "Ooookeeey, işte cevap geliyor. Oh oğlum, bunun büyük bir şey olacağı hissediyorum ..."
32 |
33 | **Tarayıcı:** "Oooo, vaaaay ... burada biraz javascript kodu var ... birçok resim, birkaç form ... Doğru, bu işlem biraz zaman alacak. Hey, IP sistemi, almanız gereken bir sürü şey var ... i.cdn.turner.com adresinden birkaç stil sayfasına ihtiyacım var - HTTP üzerinden ve /cnn/.element/css/2.0 dosyasını istiyorum /common.css. Ve sonra da i.cdn.turner.com'da bu betiklerden bazılarını alın, şimdiye kadar altı tane saydım ... "
34 |
35 | **TCP / IP:** "Resmi aldım. Bana sadece sunucu adreslerini ver, hepsi bu kadar. Ve bu dosyayı HTTP isteği içinde ekle, bununla uğraşmak istemiyorum."
36 |
37 | **DNS:** "i.cdn.turner.com adresini kontrol edin ... hey, önemsiz şeyler, buna cdn.cnn.com.c.footprint.net denir. IP 4.23.41.126"
38 |
39 | **Tarayıcı:** "Elbette, elbette ... bir saniye bekle, bu işlem birkaç nsec alacaktır, tüm bu betiği anlamaya çalışıyorum ..."
40 |
41 | **TCP / IP:** "Hey, işte istediğiniz CSS. Ve ... evet, bu ek komut dosyaları da geri döndü."
42 |
43 | **Tarayıcı:** "bitmedi, dahası var ... bir tür video reklam!"
44 |
45 | **TCP / IP:** "Oooo, kulağa hoş geliyor :) ..."
46 |
47 | **Tarayıcı:** "Her türlü görüntü de var! Ve bu CSS biraz iğrenç görünüyor ... doğru, bu kısım oraya giderse ve bu çizgiyi en üste çıkarsa ... olur, hem de iyi olur ... hayır, bunu yapmak için biraz uzatmak zorunda kalacağım ... Aaaaa, ama diğer CSS dosyaları bu kuralı geçersiz kıldı ... Peki, bu işlemek için kolay bir parça olmayacak, Kesinlikle!"
48 |
49 | **TCP / IP:** "Tamam, tamam, bir saniye beni rahatsız etmeyi bırak, burada yapmam gereken çok şey var."
50 |
51 | **Tarayıcı:** "Kullanıcı, işte size küçük bir ilerleme raporu. Üzgünüm, bu işlem birkaç saniye sürebilir, yüklenecek 140 farklı öğe var ve şimdiye kadar 16 oldu."
52 |
53 | ## Bir veya iki saniye sonra ...
54 |
55 | **TCP / IP:** "Tamam, hepsi bu kadar olmalı. Hey, dinle ... üzgünüm sana bir anda bir sürü şey gönderdim, orayı idare ediyor musun? Bu senin için de kolay görünmüyor."
56 |
57 | **Tarayıcı:** "Evet, bugünlerde tüm bu web siteleri böyle bir sürü içerik barındırıyor. Bu işler kolay değil, ne yapalım... idare edeceğim. Bunun için buradayım."
58 |
59 | **TCP / IP:** Bunun yorucu bir iş olduğunu kabul ediyorum ... Haset etmeyi bırak DNS!"
60 |
61 | **Tarayıcı:** "Hey kullanıcı! Web sitesi hazır - gel haberi al!"
62 |
63 |
64 | # Faydalı Linkler
65 |
66 | - [Detaylı Anlatım: Web nasıl çalışır?](https://github.com/vasanthk/how-web-works)
67 |
68 | - [Tarayıcınıza google.com yazıp enter tuşuna bastığınızda ne olur?](https://github.com/alex/what-happens-when)
69 |
--------------------------------------------------------------------------------
/konular/yapilacak.isler.md:
--------------------------------------------------------------------------------
1 | # Yapılacak İşler
2 |
3 | Bu sayfada, yapılacak işler ve tamamlanan işler listelenir. Yapılacak işlerin planlaması bu sayfada yapılır. Her yeni fikir/iş/öneri bu listenin sonuna eklenmelidir. Bu listedeki işler yapılırken sıra gözetilmez. Açıklama sayfaları MarkDown ile kodlanır. Markdown yardımı için: https://stackedit.io/app
4 |
5 |
6 | # Yapılacak İşler Listesi
7 | - [ ] Adminer'e dosya export ederken oluşan UTF-8 sorununun çözümü anlatılacak.
8 | - [ ] CSS Seçicileri başlığını ekleyip şu sayfadakileri kullanabiliriz: https://medium.com/design-code-repository/css-selectors-cheatsheet-details-9593bc204e3f ve https://frontend30.com/css-selectors-cheatsheet/
9 | - [ ] HTTPS'den bahsedelim. Ayrıca, HTTP - HTTPS anlatımını ayrı sayfaya bölelim. Şuradaki resimleri de kullanalım. https://seopressor.com/blog/http-vs-https/
10 | - [ ] Algoritma başlığı ile Flowchart nedir?nasıl çizilir? içine alan bir sayfa yapalım ve şu resime de link verelim. https://www.dailyinfographic.com/wp-content/uploads/2019/01/How-To-Navigate-Through-Netflix.jpg
11 | - [ ] Adminer'in blank password ile kullanımı VEYA MySQL root password'unun değiştirilmesi anlatılmalı
12 | - [ ] Aktif değişimi olan bir sayfamızın https://githistory.xyz ile görselleştirilmesi konusu GİT başlığında biryerlere eklenmeli
13 | - [ ] Bootstrap başlığı ile birlikte https://mdbootstrap.com/ varlığından da bahsedilmeli.
14 | - [ ] Çıktı Tamponu kullanımı konusunda örnek hazırlanacak
15 | - [ ] Sublime için kısa bir sayfa eklenebilir ve özellikle şu iki eklentisi anlatılabilir: https://github.com/Kronuz/ColorHighlight ve https://packagecontrol.io/packages/Text%20Marker
16 | - [ ] Eğitimi kabul edilenlere gönderilecek eMail mesajları ve ne amaçla gönderileceğini açıklayan sayfa eklenmeli.
17 | - [ ] Markdown konusuna https://stackedit.io/app sitesinden nasıl faydalanılabileceği eklenmeli.
18 |
--------------------------------------------------------------------------------
/konular/yemek.sepeti.md:
--------------------------------------------------------------------------------
1 |
2 | # Yemek Sepeti Uygulaması
3 |
4 | Bu uygulama ile YemekSepeti.com gibi bir web uygulamasının nasıl yapılabileceği uygulanmaya çalışılmıştır
5 |
6 | [KAYNAK: yemeksepeti.com](https://www.yemeksepeti.com/mr-taqi-doner-altindag-aydinlikevler-ankara)
7 |
8 | ## Referans Tabloları
9 | [KAYNAK: daltinkurt.com](https://www.daltinkurt.com/Il-Ilce-Semt-Mahalle-Veritabanlari-ve-Uygulamasi)
10 |
11 |
12 | ### Şehirler
13 | |Saha Adı|Açıklama|
14 | |---|---|
15 | |ŞehirID||
16 | |ŞehirADI||
17 |
18 |
19 | ### İlçeler
20 | |Saha Adı|Açıklama|
21 | |---|---|
22 | |İlçeID||
23 | |İlçeADI||
24 |
25 |
26 | ### Mahalleler
27 | |Saha Adı|Açıklama|
28 | |---|---|
29 | |MahalleID||
30 | |MahalleADI||
31 |
32 |
33 | ### Semtler
34 | |Saha Adı|Açıklama|
35 | |---|---|
36 | |MahalleID||
37 | |MahalleAdı||
38 | |İlID||
39 | |İlçeID||
40 |
41 |
42 | ### Ortak Ürünler Tablosu
43 |
44 | |Saha Adı|Açıklama|
45 | |---|---|
46 | |Grubu||
47 | |Adı||
48 |
49 |
50 | ## Üye İşyerleri
51 |
52 | |Saha Adı|Açıklama|
53 | |---|---|
54 | |İşyeriID||
55 | |Adı||
56 | |İl||
57 | |İlçe||
58 | |Semt||
59 | |Telefonu||
60 | |Açıklama||
61 | |MinSiparişTutarı||
62 | |SatışAdedi||
63 | |İadeAdedi||
64 | |YemekPuanı||
65 |
66 |
67 | ## Üye İşyeri Ürün Menüsü
68 |
69 | |Saha Adı|Açıklama|
70 | |---|---|
71 | |YemekID||
72 | |İşyeriID||
73 | |Yemek Grubu||
74 | |Yemek Adı||
75 | |Yemek Açıklaması||
76 | |Fiyatı||
77 | |StokAdedi||
78 | |NotYazılabilir||
79 |
80 |
81 | ## Müşteriler
82 |
83 | |Saha Adı|Açıklama|
84 | |---|---|
85 | |MüşteriID||
86 | |AdıSoyadı||
87 | |Telefonu||
88 | |Adresi||
89 | |İl||
90 | |İlçe||
91 | |Semt||
92 | |AlışverişAdedi||
93 | |ÜyePuanı||
94 |
95 |
96 | ## Sipariş Sepeti
97 |
98 | |Saha Adı|Açıklama|
99 | |---|---|
100 | |SepetID||
101 | |MüşteriID||
102 | |İşyeriID||
103 | |YemekID||
104 | |SiparişAdedi||
105 | |BirimFiyatı||
106 | |YemekNotu||
107 |
108 |
109 | ## Siparişler
110 |
111 | |Saha Adı|Açıklama|
112 | |---|---|
113 | |İşyeriID||
114 | |MüşteriID||
115 | |SiparişID||
116 |
117 | # Roller ve Sistemin Çalışması
118 |
119 |
120 | ## İşletmeler
121 |
122 |
123 | ## Müşteriler
124 |
125 |
126 | ## Alışveriş Sepeti
127 |
128 |
129 | ## Sipariş Süreci
130 |
131 |
132 |
--------------------------------------------------------------------------------
/yakinda.md:
--------------------------------------------------------------------------------
1 | # Yakın Planda Yapılacak İşler
2 |
3 | ## PDO CRUD Örnekleri
4 | - https://github.com/setyongr/pdo-crud-tutorial
5 | - https://github.com/setyongr/pdo-login-tutorial
6 | - https://github.com/musaamin/php-crud
7 | - https://github.com/medaimane/crud-php-pdo-bootstrap-mysql
8 |
9 |
10 | ## HTML Şablonları
11 | - https://html5up.net/
12 | - https://html5up.net/verti
13 | - https://html5up.net/halcyonic
14 | - https://html5up.net/minimaxing
15 |
16 |
17 | ## HTML ve CSS
18 | - [Video Eğitim](https://www.youtube.com/playlist?list=PLadt0EaV4m3BX9JaZbKS9B8076bruv93Y)
19 | - Form'dan gelen verileri incelemek için `action='https://httpbin.org/post'` yazmak yeterli
20 | - 1em ölçüsü, Mevcut px değerinin 2katı anlamına gelir.
21 |
--------------------------------------------------------------------------------