Skip to content

🧱 1️⃣ Linux (Temel + Ağ + Servis + Disk + Systemd + UFW + Cron + Backup)

(Ubuntu tabanlı sistemler için optimize edilmiştir)
Son Güncelleme: 2025-11-07 01:51


💡 Temel Komutlar

bash
pwd && whoami                    # mevcut dizin ve kullanıcı
ls -lah                          # gizli dosyalar dahil listele
cd /var/www                      # dizin değiştir
cp -r src/ dst/                  # klasör kopyala
mv file1 file2                   # yeniden adlandır
rm -rf old_logs/                 # sil (⚠️ dikkat)
mkdir -p backups/daily           # iç içe klasör oluştur
chmod -R 755 storage             # izin değiştir
chown -R $USER:$USER /var/www    # sahiplik değiştir

⚙️ Sistem Servisleri & Süreç Yönetimi

bash
systemctl status nginx
sudo systemctl restart php8.3-fpm
sudo systemctl enable apache2
ps aux | grep php-fpm
htop                # süreç izleme (sudo apt install htop)
journalctl -xe      # sistem loglarını oku

🧠 Neden?
Servis durumlarını doğrudan kontrol etmek, web stack (Apache/Nginx/PHP/MySQL) problemlerinde en hızlı tanı yöntemidir.


🌐 Ağ & DNS Yönetimi

bash
ip a                               # ağ arayüzleri
ip r                               # yönlendirme tablosu
ss -ltnp                           # dinleyen portlar
curl -I https://example.com        # HTTP başlıklarını kontrol et
ping -c 4 1.1.1.1                  # bağlantı testi
dig A example.com +short           # DNS çözümleme
sudo ufw status                    # güvenlik duvarı durumu
sudo ufw allow 22,80,443/tcp       # SSH + web portlarını aç
sudo ufw enable                    # güvenlik duvarını etkinleştir

💡 İpucu: ufw ile gereksiz portları kapatarak sistemini daha güvenli hale getir.


👤 Kullanıcı Yönetimi

bash
sudo adduser fahri
sudo usermod -aG sudo fahri
whoami && groups
passwd fahri

🔐 Yeni kullanıcı oluşturduğunda sudo yetkisini eklemeyi unutma.


⏱️ Cronjob ve Otomasyon

bash
crontab -e
# Her sabah 03:00'te Laravel scheduler çalışsın:
0 3 * * * /usr/bin/php /var/www/html/artisan schedule:run >> /dev/null 2>&1

💡 crontab -l ile mevcut görevleri listeleyebilirsin.


🔁 Yedekleme / Senkronizasyon

bash
rsync -avh /var/www/ /mnt/backup/www/
tar -czf project-$(date +%F).tgz ./project
scp backup.tgz user@server:/backups/

🔧 Systemd Servis Oluşturma

bash
sudo nano /etc/systemd/system/laravel-worker.service
# İçerik:
[Unit]
Description=Laravel Queue Worker
After=network.target

[Service]
User=www-data
Restart=always
ExecStart=/usr/bin/php /var/www/artisan queue:work --tries=3

[Install]
WantedBy=multi-user.target

sudo systemctl enable --now laravel-worker

🧰 GUI / XAMPP / LAMP

bash
sudo /opt/lampp/lampp start
sudo /opt/lampp/manager-linux-x64.run
gnome-terminal &
code .

💬 Bu bölüm, Ubuntu/Linux üzerinde çalışan bir geliştirici için tam servis kontrol ve bakım rehberidir.

⚙️ 2️⃣ Laravel (Artisan + Service + Event + SEO + Supervisor + Deployment)

(Laravel Framework Geliştirici Rehberi — Ubuntu uyumlu)
Son Güncelleme: 2025-11-07 01:55


🚀 Artisan Komutları (Temel + İleri)

bash
composer create-project laravel/laravel myapp
php artisan serve                          # Geliştirme sunucusu
php artisan tinker                         # REPL ortamı
php artisan make:model Product -mfs        # model + migration + factory + seeder
php artisan make:controller Admin/ProductController --resource --model=Product
php artisan make:observer ProductObserver --model=Product
php artisan make:event OrderCreated
php artisan make:listener SendOrderMail --event=OrderCreated
php artisan make:job ProcessOrderJob
php artisan optimize:clear && php artisan config:cache

💡 İpucu:
php artisan list ile mevcut tüm komutları görebilirsin.
php artisan help migrate komutu ise belirli bir komutun detayını gösterir.


🧩 Service Container & Dependency Injection

php
namespace App\Services;

class ImageService {
    public function resize($img) {
        // Görsel işleme
    }
}

namespace App\Http\Controllers;

use App\Services\ImageService;

class ProductController {
    public function __construct(private ImageService $img) {}

    public function store(Request $request) {
        $this->img->resize($request->file('img'));
    }
}

🧠 Neden?
Service Container, bağımlılıkları merkezi olarak yönetmeni sağlar — test edilebilirlik ve genişletilebilirlik artar.


⚙️ Observer / Event / Listener / Job Yapısı

bash
php artisan make:observer ProductObserver --model=Product
php artisan make:event OrderCreated
php artisan make:listener SendOrderMail --event=OrderCreated
php artisan make:job ProcessOrderJob
php
// app/Observers/ProductObserver.php
public function created(Product $product) {
    event(new ProductCreated($product));
}

💡 Bu yapı, event-driven sistemlerle otomatik iş akışları kurmanı sağlar (örneğin ürün eklendiğinde mail gönderimi).


🌍 Çok Dilli SEO & Meta Yönetimi

  • SeoMetaService::prepareForModel() kullanımı (ERKPA mimarisiyle uyumlu)
  • Canonical URL ve OG görsel fallback sırası
  • derivedMeta ile otomatik başlık ve açıklama üretimi
  • Lang ID bazlı SEO payload üretimi
  • autoCanonical ve uniquifyCanonical davranışları
php
$seo = app(SeoMetaService::class)->prepareForModel($product, $seoInput, files: $files, options: [
    'defaultLangId' => 1,
    'langIds' => [1,2,3],
    'fallbackFromDefault' => true,
    'modelImagePath' => $product->img_path,
]);

⚙️ Bu yöntem, çok dilli projelerde manuel meta girişi ihtiyacını ortadan kaldırır.


🔄 Queue & Supervisor (Background İşler)

bash
sudo apt install supervisor -y
sudo nano /etc/supervisor/conf.d/laravel-worker.conf
ini
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=www-data
numprocs=1
redirect_stderr=true
stdout_logfile=/var/log/laravel-worker.log
bash
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl restart laravel-worker:*

💡 Supervisor, sistem yeniden başlasa bile kuyruk işçilerinin otomatik başlatılmasını sağlar.


🧱 Cache & Optimizasyon

bash
php artisan cache:clear
php artisan config:cache
php artisan route:cache
php artisan view:clear
php artisan optimize:clear

⚙️ Deployment sonrası performansı artırır, bozuk cache dosyalarını sıfırlar.


🧠 Deployment & Production Ortamı

bash
php artisan down                         # Bakım moduna al
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan config:cache && php artisan route:cache
php artisan up                           # Tekrar aktif et

💡 Not: --force flag’i production ortamında migration onayını otomatikleştirir.


🧪 Test, Log ve Hata Yönetimi

bash
php artisan test --stop-on-failure
php artisan test --coverage
tail -f storage/logs/laravel.log
php artisan make:exception CustomError
php
// app/Exceptions/CustomError.php
public function report(Throwable $e) {
    Log::channel('slack')->error($e->getMessage());
}

💬 Testler ve özel exception yönetimi, kod güvenilirliğini artırır ve prod ortamda hataların tespiti kolaylaşır.


📘 Bu Laravel bölümü, Artisan komutlarından SEO otomasyonuna kadar tüm ileri seviye geliştirme ve deploy adımlarını kapsar.
Özellikle çok dilli (lang_id bazlı) yapılar ve Supervisor entegrasyonlarıyla tam profesyonel kullanım için uygundur.

🧩 3️⃣ PHP (CLI, FPM, INI, OPcache, Profiling, Composer, Security)

(Ubuntu/NGINX/Apache ortamlarıyla uyumlu profesyonel rehber)
Son Güncelleme: 2025-11-07 01:56


🧭 Sürüm & Konum Kontrolü

bash
php -v && php -m                # sürüm ve modüller
php --ini                       # etkin ini dosyaları
which php && which php-fpm      # ikili konumları
php -i | grep "Loaded Configuration"

💡 CLI vs FPM farkı: CLI ve FPM farklı php.ini dosyaları kullanabilir. Birini değiştirince diğerini de kontrol et.


⚙️ PHP-FPM Yönetimi (Ubuntu 22.04/24.04/25.10)

bash
sudo systemctl status php8.3-fpm
sudo systemctl restart php8.3-fpm
sudo journalctl -u php8.3-fpm -e

Havuz (pool) yapılandırması:

bash
sudo nano /etc/php/8.3/fpm/pool.d/www.conf
# Önemli satırlar:
listen = /run/php/php8.3-fpm.sock   ; veya 127.0.0.1:9000
user = www-data
group = www-data
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 4

NGINX örnek konfig (fastcgi):

nginx
location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.3-fpm.sock;  # veya 127.0.0.1:9000
}

🧠 Neden socket? Aynı makinede NGINX + FPM ise socket genelde daha düşük latency sağlar.


🧠 OPcache (Performans)

/etc/php/8.3/fpm/php.ini veya ayrı opcache.ini içinde önerilenler:

ini
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.validate_timestamps=0        ; prod'da kapat
opcache.revalidate_freq=0
opcache.fast_shutdown=1

Durum kontrolü:

bash
php -r "print_r(opcache_get_status());"

💡 Geliştirme ortamında validate_timestamps=1 bırak; prod’da 0 performans sağlar (deploy sonrası php-fpm restart et).


🔍 Profiling & Debugging

Xdebug kurulumu (geliştirme):

bash
sudo apt install php8.3-dev php-pear -y
sudo pecl install xdebug
# xdebug.ini (fpm ve/veya cli için ayrı olabilir)
zend_extension=xdebug.so
xdebug.mode=develop,debug
xdebug.client_port=9003
xdebug.client_host=127.0.0.1

Alternatif/Prod izleme: Tideways, Blackfire (sunucu tarafı agent + web arayüzü).

Hızlı testler:

bash
php -r "xdebug_info();"
php -r "echo ini_get('memory_limit');"
php -d memory_limit=-1 -r "echo 'limitsiz çalıştı';"

🧰 Composer (Global Araçlar + Üretim)

bash
composer --version
composer install --no-dev --optimize-autoloader
composer dump-autoload -o
composer global require laravel/installer phpstan/phpstan nunomaduro/larastan laravel/pint friendsofphp/php-cs-fixer

💡 ~/.composer/vendor/bin veya ~/.config/composer/vendor/bin PATH'e ekle.

Güvenli güncelleme:

bash
composer update vendor/package
composer outdated

🔐 Security.ini — Öneriler

ini
expose_php = Off
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log

disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_multi_exec,parse_ini_file,show_source

session.cookie_httponly = On
session.cookie_secure = On         ; HTTPS ortamında
session.use_strict_mode = 1

upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 512M
max_execution_time = 120

⚠️ disable_functions bazı projelerde gerekebilir; ihtiyacına göre daralt.


✉️ Mail Testi (Hızlı)

bash
php -r "mail('you@example.com','Test','Hello from PHP');"

💡 Mail çıkışı için MTA (Postfix/Exim) veya SMTP relay (Mailgun/Sendgrid) kurulu olmalı.


🧪 phpinfo ve Preload

phpinfo:

php
<?php phpinfo();

Preload (ileri seviye):
/etc/php/8.3/fpm/php.ini içinde:

ini
opcache.preload=/var/www/preload.php
opcache.preload_user=www-data

/var/www/preload.php örneği:

php
<?php
require __DIR__ . '/vendor/autoload.php';
# Sık kullanılan sınıfları preload et (framework çekirdeği, helpers vs.)

🧯 Sorun Giderme Hızlı Notlar

bash
# Hangi ini gerçekten yükleniyor?
php --ini

# FPM socket yoksa
sudo systemctl restart php8.3-fpm && sudo systemctl restart nginx

# İzin sorunu
sudo chown -R www-data:www-data storage bootstrap/cache
sudo chmod -R 775 storage bootstrap/cache

# Log'lara bak
journalctl -u php8.3-fpm -e
tail -f /var/log/nginx/error.log

📘 Bu bölüm PHP’yi yalnızca “framework motoru” değil, optimize edilebilir bir servis olarak yönetebilmen için hazırlandı.
CLI/FPM farkları, opcache, güvenlik ve profiling ile prod ortamlarında stabil & hızlı çalışırsın.

🔧 4️⃣ GIT Masterclass (Hooks + Rebase + CI/CD + Alias + Commit Conv + GPG)

(Tüm versiyon kontrol ve otomasyon süreçleri için profesyonel rehber)
Son Güncelleme: 2025-11-07 01:57


🌱 Temel Komutlar

bash
git init && git add . && git commit -m "initial commit"
git remote add origin https://github.com/username/repo.git
git branch -M main
git push -u origin main

💡 İpucu: git config --global init.defaultBranch main ile varsayılan branch adını kalıcı olarak main yapabilirsin.


🌿 Branch, Merge, Rebase

bash
git checkout -b feature/seo
git switch main
git merge feature/seo
git rebase main
git rebase -i HEAD~3
git rebase --continue
git rebase --abort

🧠 Rebase vs Merge: Rebase geçmişi temiz ve lineer tutar, merge ise geçmişi olduğu gibi korur.

Konflikt çözümü:

bash
git status
nano conflicted-file.php
git add conflicted-file.php
git rebase --continue

🧾 Reset, Revert, Cherry-pick

bash
git reset --soft HEAD~1        # commit geri al, değişiklikleri koru
git reset --hard HEAD~1        # tamamen sil ⚠️
git revert <commit>            # geçmişi bozmadan ters commit oluştur
git cherry-pick <commit>       # başka branch'ten tek commit al

🧮 Stash & Patch

bash
git stash push -m "WIP: SEO cleanup"
git stash list
git stash apply 0
git diff > patch.diff
git apply patch.diff

💡 Kullanım: Stash kısa süreli kod değişikliklerini geçici olarak saklamak için idealdir.


⚙️ Hooks (Pre-commit Otomasyonu)

bash
# .git/hooks/pre-commit
#!/bin/sh
npm run lint && php artisan test

💡 Kod commit edilmeden önce test veya lint aşamasını otomatik çalıştırır.
Hooks’lar .git/hooks/ dizininde bulunur. chmod +x pre-commit yapmayı unutma.


🔐 SSH & GPG Anahtarları

bash
ssh-keygen -t ed25519 -C "you@example.com"
cat ~/.ssh/id_ed25519.pub
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
git config --global user.signingkey <KEYID>
git config --global commit.gpgsign true

🔒 GPG anahtarlarını https://github.com/settings/keys sayfasına ekle.


🧠 Sparse Checkout & Subtree

bash
git clone --filter=blob:none --sparse <repo>
cd <repo>
git sparse-checkout set src/ app/

Subtree ile alt repo ekleme:

bash
git subtree add --prefix=client https://github.com/user/frontend.git main --squash
git subtree pull --prefix=client https://github.com/user/frontend.git main --squash

💡 Sparse: büyük repo'dan yalnızca belirli klasörleri indirmeni sağlar.
Subtree: iki projeyi bağımsız geliştirmeye devam ederken senkronize tutar.


🧰 Alias & Config Koleksiyonu

bash
git config --global alias.s "status -sb"
git config --global alias.l "log --oneline --graph --decorate --all"
git config --global alias.undo "reset --soft HEAD~1"
git config --global alias.sync "!git pull --rebase && git push"
git config --global alias.st "stash push -m"
git config --global alias.unstage "reset HEAD --"

🧠 Alias'lar Git kullanım hızını %50 artırır.
git s → kısa status, git l → güzel log, git undo → son commit'i geri al.


🪶 Conventional Commits (Standart Commit Mesajları)

bash
feat: add SEO meta builder service
fix: queue worker crash on schedule
refactor: optimize image processing
chore: update dependencies
docs: add Laravel setup section
style: fix indentation in app.css

💡 Bu standart, changelog ve otomatik versiyonlama (semantic-release) sistemleriyle uyumludur.


🚀 Tag, Release, Versioning

bash
git tag -a v1.0.0 -m "Stable release"
git push origin --tags
npm version patch && git push origin --tags

📦 Tag'ler sürüm yayınlamada temel referanstır.


⚙️ CI/CD Pipeline (GitHub Actions)

yaml
# .github/workflows/deploy.yml
name: Deploy
on:
  push:
    branches: [ main ]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.3'
      - name: Install Dependencies
        run: composer install --no-dev --optimize-autoloader
      - name: Run Migrations
        run: php artisan migrate --force
      - name: Cache Config
        run: php artisan config:cache

💡 Bu yapı her push sonrası Laravel projeni otomatik deploy edebilir.


🧠 Bisect (Hatalı Commit Bulma)

bash
git bisect start
git bisect bad HEAD
git bisect good v1.0.0
# Git arada kalan commit'leri test ettirir
git bisect reset

💡 Özellikle uzun commit geçmişinde hangi commit'in hataya sebep olduğunu bulmak için mükemmeldir.


🧾 Diff ve Blame Analizi

bash
git log -p file.php
git blame file.php
git show <commit>

💡 Hangi satırı kim ne zaman değiştirdiğini bulmak için git blame idealdir.


📋 Submodule Yönetimi

bash
git submodule add https://github.com/vendor/library vendor/library
git submodule update --init --recursive
git submodule foreach git pull origin main

💡 Submodule, harici bağımlılıkları doğrudan kaynak kontrolünde tutmak için kullanılır.


🧮 Reflog & Recovery

bash
git reflog                       # tüm hareket geçmişi
git checkout HEAD@3             # geçmiş HEAD’e dön
git fsck --lost-found             # kayıp objeleri bul

⚠️ Yanlışlıkla sildiğin branch/commit'leri kurtarmak için kullanılır.


🧩 Git Hooks & Automation Örnekleri

Pre-commit test/lint çalıştırma:

bash
echo '#!/bin/sh' > .git/hooks/pre-commit
echo 'npm run lint && php artisan test' >> .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit

Post-merge otomatik build:

bash
echo '#!/bin/sh' > .git/hooks/post-merge
echo 'npm install && npm run build' >> .git/hooks/post-merge
chmod +x .git/hooks/post-merge

💡 Hooks ile CI/CD’ye bağımlı kalmadan lokal otomasyonlar kurabilirsin.


📘 Bu GIT Masterclass, tam sürüm kontrol bilinci kazandırır: branch yönetimi, CI/CD otomasyonu, güvenli imzalama, debugging ve clean history prensipleriyle profesyonel geliştirme ortamları için uygundur.

🐙 GitHub Master Guide (Repo → PR → CI/CD → Pages)

Kapsam: Repo yönetimi, SSH/PAT, branch stratejisi, PR/Code Review, Issues/Projects, Actions (CI/CD), Secrets & Environments, Pages (custom domain), Security & Compliance, Release & Versioning, Org/Teams, Templates, LFS/Submodules/Monorepo.

Son Güncelleme: 2025-11-07 01:59


1) Başlangıç: Repo Oluşturma (UI + CLI)

UI: GitHub ➜ New repository ➜ Name, Public/Private, Add .gitignore, Add license ➜ Create.

CLI:

bash
git init
git add . && git commit -m "init"
git branch -M main
git remote add origin https://github.com/<user>/<repo>.git
git push -u origin main

.gitignore önerisi (Laravel/Node):

/vendor
/node_modules
/.env
/storage/*.key
/public/build

💡 Ek olarak README.md, LICENSE (MIT) ekle.


2) SSH Anahtarı veya PAT (Token) ile Kimlik Doğrulama

SSH (önerilir):

bash
ssh-keygen -t ed25519 -C "you@example.com"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub

GitHub ➜ Settings → SSH and GPG keys → New SSH key ➜ public anahtarı yapıştır.

PAT (Personal Access Token):
Settings → Developer settings → Fine-grained token oluştur (repo erişim izinlerini daralt).

Remote’u SSH yap:

bash
git remote set-url origin git@github.com:<user>/<repo>.git

3) Branch Stratejisi & Koruma Kuralları

Öneri: main (stabil), develop (entegrasyon), feature/*, hotfix/*

Branch protection rules:
Repo → Settings → Branches → Add rule:

  • Require pull request reviews (min 1)
  • Require status checks to pass (CI)
  • Require signed commits (opsiyonel)
  • Include administrators (opsiyonel)

UI kısayolu (PR açmadan direkt koruma için):

  • “Require linear history” (rebase/merge zorunlu)
  • “Restrict who can push to matching branches”

4) Pull Request (PR) & Code Review Akışı

Akış:

bash
git checkout -b feature/seo
# değişiklikler
git add . && git commit -m "feat(seo): add meta builder"
git push -u origin feature/seo

GitHub UI → Compare & pull request → Açıklama + Reviewer ata → CI çalışır → Review “Request changes/Approve” → Merge.

PR Template (repo/.github/pull_request_template.md):

md
## Summary
- ...

## Test Plan
- ...

## Checklist
- [ ] Lint/test ok
- [ ] Docs güncellendi

💡 Tutarlı PR kalitesi sağlar.


5) Issues, Labels, Milestones, Projects

  • Issues: bug/feat/docs gibi şablonlarla aç.
  • Labels: priority:high, type:bug, area:api gibi filtreleyici etiketler.
  • Milestones: sürüm/dönüm noktasına bağla.
  • Projects (Beta): Kanban tarzı planlama; sütunlar: Todo/In Progress/Review/Done.

Issue Template (repo/.github/ISSUE_TEMPLATE/bug_report.md):

md
---
name: Bug report
about: Hata bildirimi
labels: bug, triage
---
**Beklenen:**
**Gerçekleşen:**
**Tekrarlama adımları:**

6) GitHub Actions (CI/CD)

Basit Laravel pipeline (.github/workflows/ci.yml):

yaml
name: CI
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: shivammathur/setup-php@v2
        with:
          php-version: "8.3"
      - name: Install deps
        run: composer install --no-interaction --prefer-dist
      - name: Lint & Test
        run: |
          composer global require laravel/pint
          ~/.composer/vendor/bin/pint --test || true
          php artisan test --stop-on-failure

Deploy (örnek):

yaml
name: Deploy
on:
  push:
    branches: [ main ]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build
        run: |
          composer install --no-dev --optimize-autoloader
          php artisan config:cache
      - name: Deploy via SSH
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_USER }}
          key: ${{ secrets.SSH_KEY }}
          script: |
            cd /var/www/app && git pull && php artisan migrate --force

🔐 Secrets: SSH_HOST, SSH_USER, SSH_KEY → Repo → Settings → Secrets and variables → Actions.

Environments:
Settings → Environments ile “staging”, “production” tanımla; “Required reviewers”, “Wait timer”, env-secrets kullan.


7) GitHub Pages (docs barındırma) + Özel Alan Adı

Pages açma: Settings → Pages → Build from GitHub Actions veya docs/ branch.
Basit build (marked ile md → html):

yaml
name: Pages
on:
  push:
    branches: [ main ]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: |
          npm i -g marked
          mkdir -p public
          for f in docs/*.md; do
            base=$(basename "$f" .md)
            marked "$f" > "public/$base.html"
          done
      - uses: actions/upload-pages-artifact@v3
        with:
          path: public
  deploy:
    needs: build
    permissions:
      pages: write
      id-token: write
    runs-on: ubuntu-latest
    steps:
      - uses: actions/deploy-pages@v4

Custom domain: CNAME dosyasına docs.fahriaydin.dev yaz. DNS’te CNAME kaydı ekle (Cloudflare kullanıyorsan proxy kapalı/“DNS only” önerilir).


8) Security & Compliance

  • Dependabot (Security alerts & version bumps) → Settings → Code security and analysis.
  • Secret scanning ve Code scanning (CodeQL) aktif et.
  • Require signed commits (branch rule) ve/veya GPG/SSH signing.
  • CODEOWNERS ile kod sahipliği:
# repo/.github/CODEOWNERS
/app/**  @team-backend
/resources/**  @fahriaydin
  • Required status checks (CI testleri) zorunlu olsun.

9) Release & Versioning (SemVer)

  • Tag: v1.2.3 (SemVer)
  • Release Notes: otomatik oluştur (Generate release notes).
  • Conventional Commits ile otomatik versiyonlama (semantic-release) mümkün.

CLI:

bash
git tag -a v1.0.0 -m "Stable release"
git push origin --tags

10) Organization / Teams / Permissions

  • Organization aç, ekipleri Teams ile grupla (Owners, Developers, QA)
  • Repo bazında “Write”/“Maintain”/“Admin” izinleri.
  • Branch protection + Required reviews ekip bazında uygula.
  • Audit log ile tüm aktiviteleri izle.

11) Templates, Labels, Project Board Otomasyon

  • ISSUE_TEMPLATE/feature_request.md, pull_request_template.md
  • Labels: anlamlı bir sözlük (priority, area, type).
  • Projects’te Automation: “PR merged → Done” gibi kurallar.

12) LFS, Submodules, Monorepo Notları

  • Git LFS: büyük dosyalar (*.psd, *.zip) için:
bash
git lfs install
git lfs track "*.psd"
  • Submodule: bağımlılıkları kaynak olarak dahil et.
  • Monorepo: tek repo içinde apps/api, apps/web vb. klasörler; Actions matrisi kullan.

13) README Kalıbı (Hızlı Başlangıç)

md
# Proje Adı
Kısa açıklama.

## Kurulum
```bash
git clone git@github.com:<user>/<repo>.git
cd <repo> && cp .env.example .env
composer install && npm i
php artisan key:generate

## Çalıştırma
```bash
php artisan serve
npm run dev

## Test
```bash
php artisan test

## Lisans
MIT

14) Sık Sorunlar

  • Permission denied (publickey) → SSH anahtarını ekledin mi? ssh -T git@github.com test et.
  • Actions fail → secrets yok → Settings → Secrets and variables → Actions kontrol.
  • Pages 404 → “Build from Actions” seçili mi? CNAME doğru mu?

🎯 Bu rehberi reposunun docs/ klasörüne koyup, README’den linklersen GitHub içinde “tek bakışta” kader kitabın olur.

⚛️ React Terminal & Shortcuts Handbook

(Vite + Next.js odaklı; NPM/Yarn/PNPM karşılıkları, ipuçları ve sık kullanılan komutlar)
Son Güncelleme: 2025-11-07 02:06


🧭 Başlangıç (Proje Kurulum)

Vite (önerilen):

bash
npm create vite@latest myapp -- --template react
cd myapp && npm i
npm run dev

Next.js:

bash
npx create-next-app@latest myapp
# öneriler: TypeScript=Yes, ESLint=Yes, App Router=Yes
cd myapp && npm run dev

Paket Yöneticileri (eşdeğer):

bash
# NPM
npm i           # kurulum
npm run dev

# Yarn
yarn            # kurulum
yarn dev

# PNPM
pnpm i          # kurulum
pnpm dev

🚀 Geliştirme / Build / Preview

bash
# Vite
npm run dev            # geliştirme
npm run build          # prod derleme
npm run preview        # build'i yerel gör

# Next.js
npm run dev
npm run build          # .next üretir
npm start              # prod (build sonrası)

Port değiştirme (Vite/Next):

bash
# package.json script örneği
"dev": "vite --port 5174"
"dev": "next dev -p 4000"

Port meşgulse:

bash
sudo lsof -i :5173
kill -9 <PID>

🧹 Lint / Format / Test

bash
# ESLint + Prettier (React)
npm i -D eslint prettier eslint-config-prettier eslint-plugin-react
npx eslint . --fix

# Vite + Vitest
npm i -D vitest @testing-library/react jsdom
npx vitest

# Next.js + Jest (alternatif)
npm i -D jest @testing-library/react @testing-library/jest-dom jest-environment-jsdom
npx jest

Prettier hızlıları:

bash
npx prettier . --write

🔐 Env Değişkenleri

bash
# Vite
# .env
VITE_API_URL=https://api.example.com

# Next.js
# .env.local
NEXT_PUBLIC_API_URL=https://api.example.com

💡 Client tarafı erişimi için VITE_ (Vite) veya NEXT_PUBLIC_ (Next.js) prefix’i zorunludur.


📦 NPM Scripts (Örnek Şablon)

json
{
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview",
    "lint": "eslint . --ext .js,.jsx,.ts,.tsx",
    "format": "prettier . --write",
    "test": "vitest"
  }
}

Next.js örneği:

json
{
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint",
    "format": "prettier . --write",
    "test": "jest"
  }
}

🧰 Faydalı CLI Kısayolları

bash
# Node/NPM sürümü
node -v && npm -v

# NVM ile LTS kullan
nvm install --lts && nvm use --lts

# Cache temizleme
npm cache verify
# paketleri sıfırdan kur
rm -rf node_modules package-lock.json && npm i

# .env örneği kopyala
cp .env.example .env

🧠 React-Özel İpuçları

  • HMR (Hot Module Reload) Vite/Next ile gömülü; farklı portta birden fazla proje rahat çalışır.
  • SVG: Vite'da import Logo from './logo.svg?react' (plugin gerekebilir).
  • Resim optimizasyonu: Next.js next/image kullan.
  • Kod bölme: React.lazy + Suspense.
  • Mutlaka eslint-plugin-react-hooks kullan (hook kuralları).

⌨️ VS Code Kısayolları (React/TS)

  • Genel: Ctrl+P dosya bul, Ctrl+Shift+P komut paleti, Ctrl+B yan panel
  • Çoklu imleç: Alt+Click, Ctrl+D sonraki eşleşme, Ctrl+L satır seç
  • Refactor: F2 yeniden adlandır, Ctrl+. hızlı düzelt
  • Format: Shift+Alt+F (Linux)
  • Split: Ctrl+\ böl, Ctrl+1/2/3 panele odak
  • Terminal: Ctrl+` aç/kapat

🩺 Troubleshooting (Kısa)

bash
# ESM/CJS karmaşası: package.json'da "type": "module" mı?
cat package.json | jq .type

# types eksikliği (TS projelerinde)
npm i -D @types/react @types/react-dom

## 404 asset: base config veya public yolu

📘 Bu belge, React (Vite + Next) projelerinde günlük akış için “aç-bak” kılavuzudur. İhtiyaca göre TypeScript ve test yapılarını genişletebilirsin.

🅰️ Angular CLI — Terminal & Shortcuts Handbook

(Angular 15+ Standalone bileşenleriyle uyumlu; CLI akışı, komutlar, kısayollar, ipuçları)
Son Güncelleme: 2025-11-07 02:08


🧭 Kurulum & Başlangıç

bash
npm i -g @angular/cli
ng version

Yeni proje (standalone önerilir):

bash
ng new myapp --standalone --routing --style=scss
cd myapp
ng serve -o             # tarayıcıda otomatik aç

Alternatif (klasik module tabanlı):

bash
ng new myapp --routing --style=scss

🚀 Geliştirme / Build / Test

bash
ng serve -o                    # dev
ng build                       # prod derleme (dist/)
ng build --configuration production
ng test                        # karma + jasmine
ng lint                        # eslint (yüklüyse)

Port değiştirme:

bash
ng serve --port 4300

🧱 Generate (Hızlı Üretim)

Standalone projeler için:

bash
ng g c features/home --standalone --flat
ng g s core/api
ng g guard core/auth --standalone --flat
ng g interceptor core/auth-token
ng g pipe shared/truncate --standalone --flat

Module tabanlı için örnek:

bash
ng g module features/products --route products --module app.module
ng g component features/products/list

🧭 Router, Lazy Loading & Guards

Standalone lazy route:

ts
// app.routes.ts
import { Routes } from '@angular/router';

export const routes: Routes = [
  {
    path: 'dashboard',
    loadComponent: () => import('./features/dashboard/dashboard.component')
      .then(m => m.DashboardComponent)
  },
  { path: '', redirectTo: 'dashboard', pathMatch: 'full' },
  { path: '**', redirectTo: 'dashboard' }
];

Auth guard (örnek):

ts
import { CanActivateFn } from '@angular/router';
export const authGuard: CanActivateFn = () => {
  const loggedIn = !!localStorage.getItem('token');
  return loggedIn;
};

🔐 Environment & Config

bash
# src/environments/
environment.ts         # dev
environment.prod.ts    # prod

Kullanımı:

ts
import { environment } from '../environments/environment';
console.log(environment.production);

Build-time değişimi:

bash
ng build --configuration production

🧰 HTTP & Interceptor

ts
import { HttpClient, provideHttpClient, withInterceptors } from '@angular/common/http';

export const appConfig = {
  providers: [
    provideHttpClient(withInterceptors([authTokenInterceptor])),
  ]
};
ts
import { HttpInterceptorFn } from '@angular/common/http';
export const authTokenInterceptor: HttpInterceptorFn = (req, next) => {
  const token = localStorage.getItem('token');
  const cloned = req.clone({ setHeaders: { Authorization: token ? `Bearer ${token}` : '' } });
  return next(cloned);
};

🧪 Test (Karma/Jasmine) & Component Test

bash
ng test --browsers=ChromeHeadless --watch=false

Component test örneği:

ts
import { TestBed } from '@angular/core/testing';
import { DashboardComponent } from './dashboard.component';

describe('DashboardComponent', () => {
  beforeEach(async () => {
    await TestBed.configureTestingModule({
      imports: [DashboardComponent],
    }).compileComponents();
  });

  it('should create', () => {
    const fixture = TestBed.createComponent(DashboardComponent);
    const comp = fixture.componentInstance;
    expect(comp).toBeTruthy();
  });
});

🧹 Lint & Format (ESLint + Prettier)

bash
ng add @angular-eslint/schematics
npm i -D prettier eslint-config-prettier
npm run lint
npx prettier . --write

package.json öneri:

json
{
  "scripts": {
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "format": "prettier . --write"
  }
}

⬆️ Upgrade / Update

bash
ng update @angular/core @angular/cli
ng update @angular/material

NPM bağımlılıkları:

bash
npm outdated
npm update

⚡ Performans İpuçları

  • Standalone bileşenler + provide* API’leri kullan (daha az boilerplate).
  • Lazy loading rotaları agresif kullan.
  • OnPush change detection uygula (gerekli yerlerde).
  • trackBy ile ngFor performansını artır.
  • RxJS’de takeUntil + Subject ile abonelikleri temizle.

⌨️ VS Code Kısayolları (Angular/TS)

  • Genel: Ctrl+P dosya bul, Ctrl+Shift+P komut paleti, Ctrl+B yan panel
  • Refactor: F2 yeniden adlandır, Ctrl+. hızlı fix
  • Çoklu imleç: Alt+Click, Ctrl+D sonraki eşleşme
  • Format: Shift+Alt+F
  • Split: Ctrl+\ böl, Ctrl+1/2/3 panele odak
  • Terminal: Ctrl+`

🩺 Troubleshooting

bash
# Port meşgul hatası → başka terminalde kapat:
sudo lsof -i :4200 | awk 'NR>1{print $2}' | xargs -r kill -9

# TS tip hataları → @types eksikleri
npm i -D @types/jasmine @types/node

# CORS → dev proxy
ng serve --proxy-config proxy.conf.json

proxy.conf.json örneği:

json
{
  "/api": {
    "target": "http://localhost:8000",
    "secure": false,
    "changeOrigin": true,
    "logLevel": "debug"
  }
}

📘 Bu belge, Angular projelerinde günlük CLI akışı için hızlı başvuru kılavuzudur. İhtiyaca göre Nx/workspace yapıları ve e2e testleri (Cypress/Playwright) eklenebilir.

🐍 Python — Terminal & Shortcuts Handbook

(venv + pip + pytest + black/isort + Flask/FastAPI + packaging notları)
Son Güncelleme: 2025-11-07 02:10


🧭 Hızlı Başlangıç (Proje Kurulum)

bash
# Proje klasörü ve sanal ortam
mkdir mypy && cd mypy
python3 -m venv .venv
source .venv/bin/activate        # Windows: .venv\Scripts\activate
python -m pip install --upgrade pip

# Temel paketler
pip install requests pytest black isort
pip freeze > requirements.txt

Sanal ortamdan çıkış:

bash
deactivate

📦 Bağımlılıklar (pip / requirements)

bash
pip install -r requirements.txt
pip install "flask>=3.0" "pydantic>=2.0"
pip uninstall <paket>
pip list --outdated

Kaydet (pin):

bash
pip freeze > requirements.txt

pip-tools (opsiyonel):

bash
pip install pip-tools
pip-compile pyproject.toml   # veya requirements.in
pip-sync                      # lock'a göre kurulum

🧪 Test & Kalite

bash
pytest -q                     # hızlı test
pytest -k "User and not slow" # pattern
pytest tests/test_api.py::TestAPI::test_ok

Stil / Format:

bash
black .
isort .
ruff .                        # (opsiyonel) linter

pre-commit (opsiyonel):

bash
pip install pre-commit
pre-commit install
# .pre-commit-config.yaml -> black, isort, ruff, trailing-whitespace vb.

▶️ Çalıştırma / Script / Modül

bash
python app.py
python -m mypackage.module            # modül olarak çalıştır
python -m http.server 8000            # basit HTTP server

Argparse kısa örnek:

python
# cli.py
import argparse
p = argparse.ArgumentParser()
p.add_argument("--env", default="dev")
print(p.parse_args())

🌶️ Flask & FastAPI (mini)

Flask:

bash
pip install flask
export FLASK_APP=app.py && flask run         # Win: set FLASK_APP=app.py
python
# app.py
from flask import Flask
app = Flask(__name__)

@app.get("/")
def hello():
    return {"ok": True}

FastAPI:

bash
pip install fastapi uvicorn
uvicorn main:app --reload --port 8000
python
# main.py
from fastapi import FastAPI
app = FastAPI()

@app.get("/")
def hello():
    return {"ok": True}

🧰 Packaging (pyproject, wheel) — opsiyonel

bash
pip install build
python -m build                      # dist/*.whl üretir

pyproject.toml iskelet:

toml
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "mypkg"
version = "0.1.0"
dependencies = ["requests>=2.0"]

🧪 VS Code Entegrasyonu

bash
# Komut paleti → "Python: Select Interpreter" → .venv'i seç
# settings.json (öneri)
{
  "python.defaultInterpreterPath": ".venv/bin/python",
  "python.testing.pytestEnabled": true,
  "python.testing.pytestArgs": ["-q"],
  "python.formatting.provider": "black"
}

Kısayollar:

  • Ctrl+P dosya bul, Ctrl+Shift+P komut paleti
  • Ctrl+` terminal aç/kapat
  • F5 Debug, Shift+F5 durdur
  • F2 yeniden adlandır, Ctrl+. hızlı düzelt
  • Shift+Alt+F biçimlendir

🩺 Troubleshooting

bash
# Sanal ortam aktif değil → komutlar görünmüyor
which python && which pip

# Header eksikleri (ör. lxml, psycopg2)
sudo apt install build-essential libxml2-dev libpq-dev python3-dev

# SSL / Proxy sorunları
python -m pip install --upgrade pip setuptools

📘 Bu rehber günlük Python geliştirme akışı içindir: venv kurulumu, paket yönetimi, test ve kalite araçları, mikro web servisleri ve paketleme.

🟩 Node / NPM / Yarn / PNPM — Terminal & Shortcuts Guide

(Node.js + Paket yöneticileri için hızlı referans; cache, script, NVM kullanımı)
Son Güncelleme: 2025-11-07 02:11


🧭 Node.js & NVM (Versiyon Yönetimi)

bash
node -v && npm -v          # sürümleri kontrol et
nvm ls                     # yüklü versiyonlar
nvm install --lts          # en güncel LTS sürümü yükle
nvm use --lts              # LTS versiyona geç
nvm install 20             # spesifik versiyon

Varsayılan ayarla:

bash
nvm alias default 20

💡 İpucu: .nvmrc dosyası oluştur → repo açıldığında nvm use otomatik geçer.


📦 Paket Yönetimi — NPM / Yarn / PNPM Karşılaştırması

Komut / İşlemNPMYarnPNPM
Proje oluşturnpm init -yyarn init -ypnpm init
Kurulumnpm iyarnpnpm i
Paket eklenpm i reactyarn add reactpnpm add react
Dev paketinpm i -D typescriptyarn add -D typescriptpnpm add -D typescript
Paket kaldırnpm uninstall axiosyarn remove axiospnpm remove axios
Script çalıştırnpm run devyarn devpnpm dev

⚙️ Script Tanımları (package.json)

json
{
  "scripts": {
    "dev": "node index.js",
    "build": "tsc",
    "start": "node dist/index.js",
    "lint": "eslint . --fix",
    "format": "prettier . --write"
  }
}

Çalıştırma:

bash
npm run dev
yarn dev
pnpm dev

💡 npm start özel bir kısayoldur — start script’i varsa npm start yerine npm run start gerekmez.


🧹 Cache / Lockfile / Node Modules

bash
npm cache verify
npm cache clean --force

# node_modules ve lockfile'ı sil
rm -rf node_modules package-lock.json yarn.lock pnpm-lock.yaml
npm i

# Paket temizleme aracı
npx depcheck

💡 depcheck kullanılmayan paketleri listeler.


🧰 Faydalı CLI Komutları

bash
npx create-react-app myapp
npx create-next-app myapp
npx eslint . --fix
npx prettier . --write

# TypeScript derleme
npx tsc --noEmit

# Güncellemeler
npm outdated
npm update
npm-check -u        # interaktif güncelleme (npm i -g npm-check)

🔄 Versiyonlama & Yayınlama

bash
npm version patch
npm version minor
npm version major

npm publish --access public

⚠️ package.json içinde "private": true varsa publish işlemi engellenir.


🧠 Troubleshooting

bash
# ESM/CJS karmaşası
cat package.json | grep type

# node: command not found
nvm use --lts

# npm ERR! code EACCES → izin sorunu
sudo chown -R $USER:$GROUP ~/.npm

⌨️ VS Code Kısayolları (Node/JS)

  • Genel: Ctrl+P dosya bul, Ctrl+Shift+P komut paleti, Ctrl+B yan panel
  • Çoklu imleç: Alt+Click, Ctrl+D sonraki eşleşme
  • Terminal: Ctrl+` aç/kapat
  • Debug: F5 başlat, Shift+F5 durdur
  • Format: Shift+Alt+F (Prettier/ESLint aktifse)

📘 Bu mini rehber, Node tabanlı projelerde (React, Angular, API) günlük komut akışını kapsar.
NVM ile versiyon kontrolü, cache yönetimi ve paket güncellemeleriyle sistemini temiz ve kararlı tut.

⚡ Frontend & Backend — Terminal + Shortcuts Mega Guide

(React, Angular, Python, Node — günlük komutlar ve kısayollar; Fahri Aydın için hızlı referans)
Son Güncelleme: 2025-11-07 02:11

⚛️ React Terminal & Shortcuts Handbook

(Vite + Next.js odaklı; NPM/Yarn/PNPM karşılıkları, ipuçları ve sık kullanılan komutlar)
Son Güncelleme: 2025-11-07 02:06


🧭 Başlangıç (Proje Kurulum)

Vite (önerilen):

bash
npm create vite@latest myapp -- --template react
cd myapp && npm i
npm run dev

Next.js:

bash
npx create-next-app@latest myapp
# öneriler: TypeScript=Yes, ESLint=Yes, App Router=Yes
cd myapp && npm run dev

Paket Yöneticileri (eşdeğer):

bash
# NPM
npm i           # kurulum
npm run dev

# Yarn
yarn            # kurulum
yarn dev

# PNPM
pnpm i          # kurulum
pnpm dev

🚀 Geliştirme / Build / Preview

bash
# Vite
npm run dev            # geliştirme
npm run build          # prod derleme
npm run preview        # build'i yerel gör

# Next.js
npm run dev
npm run build          # .next üretir
npm start              # prod (build sonrası)

Port değiştirme (Vite/Next):

bash
# package.json script örneği
"dev": "vite --port 5174"
"dev": "next dev -p 4000"

Port meşgulse:

bash
sudo lsof -i :5173
kill -9 <PID>

🧹 Lint / Format / Test

bash
# ESLint + Prettier (React)
npm i -D eslint prettier eslint-config-prettier eslint-plugin-react
npx eslint . --fix

# Vite + Vitest
npm i -D vitest @testing-library/react jsdom
npx vitest

# Next.js + Jest (alternatif)
npm i -D jest @testing-library/react @testing-library/jest-dom jest-environment-jsdom
npx jest

Prettier hızlıları:

bash
npx prettier . --write

🔐 Env Değişkenleri

bash
# Vite
# .env
VITE_API_URL=https://api.example.com

# Next.js
# .env.local
NEXT_PUBLIC_API_URL=https://api.example.com

💡 Client tarafı erişimi için VITE_ (Vite) veya NEXT_PUBLIC_ (Next.js) prefix’i zorunludur.


📦 NPM Scripts (Örnek Şablon)

json
{
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview",
    "lint": "eslint . --ext .js,.jsx,.ts,.tsx",
    "format": "prettier . --write",
    "test": "vitest"
  }
}

Next.js örneği:

json
{
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint",
    "format": "prettier . --write",
    "test": "jest"
  }
}

🧰 Faydalı CLI Kısayolları

bash
# Node/NPM sürümü
node -v && npm -v

# NVM ile LTS kullan
nvm install --lts && nvm use --lts

# Cache temizleme
npm cache verify
# paketleri sıfırdan kur
rm -rf node_modules package-lock.json && npm i

# .env örneği kopyala
cp .env.example .env

🧠 React-Özel İpuçları

  • HMR (Hot Module Reload) Vite/Next ile gömülü; farklı portta birden fazla proje rahat çalışır.
  • SVG: Vite'da import Logo from './logo.svg?react' (plugin gerekebilir).
  • Resim optimizasyonu: Next.js next/image kullan.
  • Kod bölme: React.lazy + Suspense.
  • Mutlaka eslint-plugin-react-hooks kullan (hook kuralları).

⌨️ VS Code Kısayolları (React/TS)

  • Genel: Ctrl+P dosya bul, Ctrl+Shift+P komut paleti, Ctrl+B yan panel
  • Çoklu imleç: Alt+Click, Ctrl+D sonraki eşleşme, Ctrl+L satır seç
  • Refactor: F2 yeniden adlandır, Ctrl+. hızlı düzelt
  • Format: Shift+Alt+F (Linux)
  • Split: Ctrl+\ böl, Ctrl+1/2/3 panele odak
  • Terminal: Ctrl+` aç/kapat

🩺 Troubleshooting (Kısa)

bash
# ESM/CJS karmaşası: package.json'da "type": "module" mı?
cat package.json | jq .type

# types eksikliği (TS projelerinde)
npm i -D @types/react @types/react-dom

## 404 asset: base config veya public yolu

📘 Bu belge, React (Vite + Next) projelerinde günlük akış için “aç-bak” kılavuzudur. İhtiyaca göre TypeScript ve test yapılarını genişletebilirsin.


🅰️ Angular CLI — Terminal & Shortcuts Handbook

(Angular 15+ Standalone bileşenleriyle uyumlu; CLI akışı, komutlar, kısayollar, ipuçları)
Son Güncelleme: 2025-11-07 02:08


🧭 Kurulum & Başlangıç

bash
npm i -g @angular/cli
ng version

Yeni proje (standalone önerilir):

bash
ng new myapp --standalone --routing --style=scss
cd myapp
ng serve -o             # tarayıcıda otomatik aç

Alternatif (klasik module tabanlı):

bash
ng new myapp --routing --style=scss

🚀 Geliştirme / Build / Test

bash
ng serve -o                    # dev
ng build                       # prod derleme (dist/)
ng build --configuration production
ng test                        # karma + jasmine
ng lint                        # eslint (yüklüyse)

Port değiştirme:

bash
ng serve --port 4300

🧱 Generate (Hızlı Üretim)

Standalone projeler için:

bash
ng g c features/home --standalone --flat
ng g s core/api
ng g guard core/auth --standalone --flat
ng g interceptor core/auth-token
ng g pipe shared/truncate --standalone --flat

Module tabanlı için örnek:

bash
ng g module features/products --route products --module app.module
ng g component features/products/list

🧭 Router, Lazy Loading & Guards

Standalone lazy route:

ts
// app.routes.ts
import { Routes } from '@angular/router';

export const routes: Routes = [
  {
    path: 'dashboard',
    loadComponent: () => import('./features/dashboard/dashboard.component')
      .then(m => m.DashboardComponent)
  },
  { path: '', redirectTo: 'dashboard', pathMatch: 'full' },
  { path: '**', redirectTo: 'dashboard' }
];

Auth guard (örnek):

ts
import { CanActivateFn } from '@angular/router';
export const authGuard: CanActivateFn = () => {
  const loggedIn = !!localStorage.getItem('token');
  return loggedIn;
};

🔐 Environment & Config

bash
# src/environments/
environment.ts         # dev
environment.prod.ts    # prod

Kullanımı:

ts
import { environment } from '../environments/environment';
console.log(environment.production);

Build-time değişimi:

bash
ng build --configuration production

🧰 HTTP & Interceptor

ts
import { HttpClient, provideHttpClient, withInterceptors } from '@angular/common/http';

export const appConfig = {
  providers: [
    provideHttpClient(withInterceptors([authTokenInterceptor])),
  ]
};
ts
import { HttpInterceptorFn } from '@angular/common/http';
export const authTokenInterceptor: HttpInterceptorFn = (req, next) => {
  const token = localStorage.getItem('token');
  const cloned = req.clone({ setHeaders: { Authorization: token ? `Bearer ${token}` : '' } });
  return next(cloned);
};

🧪 Test (Karma/Jasmine) & Component Test

bash
ng test --browsers=ChromeHeadless --watch=false

Component test örneği:

ts
import { TestBed } from '@angular/core/testing';
import { DashboardComponent } from './dashboard.component';

describe('DashboardComponent', () => {
  beforeEach(async () => {
    await TestBed.configureTestingModule({
      imports: [DashboardComponent],
    }).compileComponents();
  });

  it('should create', () => {
    const fixture = TestBed.createComponent(DashboardComponent);
    const comp = fixture.componentInstance;
    expect(comp).toBeTruthy();
  });
});

🧹 Lint & Format (ESLint + Prettier)

bash
ng add @angular-eslint/schematics
npm i -D prettier eslint-config-prettier
npm run lint
npx prettier . --write

package.json öneri:

json
{
  "scripts": {
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "format": "prettier . --write"
  }
}

⬆️ Upgrade / Update

bash
ng update @angular/core @angular/cli
ng update @angular/material

NPM bağımlılıkları:

bash
npm outdated
npm update

⚡ Performans İpuçları

  • Standalone bileşenler + provide* API’leri kullan (daha az boilerplate).
  • Lazy loading rotaları agresif kullan.
  • OnPush change detection uygula (gerekli yerlerde).
  • trackBy ile ngFor performansını artır.
  • RxJS’de takeUntil + Subject ile abonelikleri temizle.

⌨️ VS Code Kısayolları (Angular/TS)

  • Genel: Ctrl+P dosya bul, Ctrl+Shift+P komut paleti, Ctrl+B yan panel
  • Refactor: F2 yeniden adlandır, Ctrl+. hızlı fix
  • Çoklu imleç: Alt+Click, Ctrl+D sonraki eşleşme
  • Format: Shift+Alt+F
  • Split: Ctrl+\ böl, Ctrl+1/2/3 panele odak
  • Terminal: Ctrl+`

🩺 Troubleshooting

bash
# Port meşgul hatası → başka terminalde kapat:
sudo lsof -i :4200 | awk 'NR>1{print $2}' | xargs -r kill -9

# TS tip hataları → @types eksikleri
npm i -D @types/jasmine @types/node

# CORS → dev proxy
ng serve --proxy-config proxy.conf.json

proxy.conf.json örneği:

json
{
  "/api": {
    "target": "http://localhost:8000",
    "secure": false,
    "changeOrigin": true,
    "logLevel": "debug"
  }
}

📘 Bu belge, Angular projelerinde günlük CLI akışı için hızlı başvuru kılavuzudur. İhtiyaca göre Nx/workspace yapıları ve e2e testleri (Cypress/Playwright) eklenebilir.


🐍 Python — Terminal & Shortcuts Handbook

(venv + pip + pytest + black/isort + Flask/FastAPI + packaging notları)
Son Güncelleme: 2025-11-07 02:10


🧭 Hızlı Başlangıç (Proje Kurulum)

bash
# Proje klasörü ve sanal ortam
mkdir mypy && cd mypy
python3 -m venv .venv
source .venv/bin/activate        # Windows: .venv\Scripts\activate
python -m pip install --upgrade pip

# Temel paketler
pip install requests pytest black isort
pip freeze > requirements.txt

Sanal ortamdan çıkış:

bash
deactivate

📦 Bağımlılıklar (pip / requirements)

bash
pip install -r requirements.txt
pip install "flask>=3.0" "pydantic>=2.0"
pip uninstall <paket>
pip list --outdated

Kaydet (pin):

bash
pip freeze > requirements.txt

pip-tools (opsiyonel):

bash
pip install pip-tools
pip-compile pyproject.toml   # veya requirements.in
pip-sync                      # lock'a göre kurulum

🧪 Test & Kalite

bash
pytest -q                     # hızlı test
pytest -k "User and not slow" # pattern
pytest tests/test_api.py::TestAPI::test_ok

Stil / Format:

bash
black .
isort .
ruff .                        # (opsiyonel) linter

pre-commit (opsiyonel):

bash
pip install pre-commit
pre-commit install
# .pre-commit-config.yaml -> black, isort, ruff, trailing-whitespace vb.

▶️ Çalıştırma / Script / Modül

bash
python app.py
python -m mypackage.module            # modül olarak çalıştır
python -m http.server 8000            # basit HTTP server

Argparse kısa örnek:

python
# cli.py
import argparse
p = argparse.ArgumentParser()
p.add_argument("--env", default="dev")
print(p.parse_args())

🌶️ Flask & FastAPI (mini)

Flask:

bash
pip install flask
export FLASK_APP=app.py && flask run         # Win: set FLASK_APP=app.py
python
# app.py
from flask import Flask
app = Flask(__name__)

@app.get("/")
def hello():
    return {"ok": True}

FastAPI:

bash
pip install fastapi uvicorn
uvicorn main:app --reload --port 8000
python
# main.py
from fastapi import FastAPI
app = FastAPI()

@app.get("/")
def hello():
    return {"ok": True}

🧰 Packaging (pyproject, wheel) — opsiyonel

bash
pip install build
python -m build                      # dist/*.whl üretir

pyproject.toml iskelet:

toml
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "mypkg"
version = "0.1.0"
dependencies = ["requests>=2.0"]

🧪 VS Code Entegrasyonu

bash
# Komut paleti → "Python: Select Interpreter" → .venv'i seç
# settings.json (öneri)
{
  "python.defaultInterpreterPath": ".venv/bin/python",
  "python.testing.pytestEnabled": true,
  "python.testing.pytestArgs": ["-q"],
  "python.formatting.provider": "black"
}

Kısayollar:

  • Ctrl+P dosya bul, Ctrl+Shift+P komut paleti
  • Ctrl+` terminal aç/kapat
  • F5 Debug, Shift+F5 durdur
  • F2 yeniden adlandır, Ctrl+. hızlı düzelt
  • Shift+Alt+F biçimlendir

🩺 Troubleshooting

bash
# Sanal ortam aktif değil → komutlar görünmüyor
which python && which pip

# Header eksikleri (ör. lxml, psycopg2)
sudo apt install build-essential libxml2-dev libpq-dev python3-dev

# SSL / Proxy sorunları
python -m pip install --upgrade pip setuptools

📘 Bu rehber günlük Python geliştirme akışı içindir: venv kurulumu, paket yönetimi, test ve kalite araçları, mikro web servisleri ve paketleme.


🟩 Node / NPM / Yarn / PNPM — Terminal & Shortcuts Guide

(Node.js + Paket yöneticileri için hızlı referans; cache, script, NVM kullanımı)
Son Güncelleme: 2025-11-07 02:11


🧭 Node.js & NVM (Versiyon Yönetimi)

bash
node -v && npm -v          # sürümleri kontrol et
nvm ls                     # yüklü versiyonlar
nvm install --lts          # en güncel LTS sürümü yükle
nvm use --lts              # LTS versiyona geç
nvm install 20             # spesifik versiyon

Varsayılan ayarla:

bash
nvm alias default 20

💡 İpucu: .nvmrc dosyası oluştur → repo açıldığında nvm use otomatik geçer.


📦 Paket Yönetimi — NPM / Yarn / PNPM Karşılaştırması

Komut / İşlemNPMYarnPNPM
Proje oluşturnpm init -yyarn init -ypnpm init
Kurulumnpm iyarnpnpm i
Paket eklenpm i reactyarn add reactpnpm add react
Dev paketinpm i -D typescriptyarn add -D typescriptpnpm add -D typescript
Paket kaldırnpm uninstall axiosyarn remove axiospnpm remove axios
Script çalıştırnpm run devyarn devpnpm dev

⚙️ Script Tanımları (package.json)

json
{
  "scripts": {
    "dev": "node index.js",
    "build": "tsc",
    "start": "node dist/index.js",
    "lint": "eslint . --fix",
    "format": "prettier . --write"
  }
}

Çalıştırma:

bash
npm run dev
yarn dev
pnpm dev

💡 npm start özel bir kısayoldur — start script’i varsa npm start yerine npm run start gerekmez.


🧹 Cache / Lockfile / Node Modules

bash
npm cache verify
npm cache clean --force

# node_modules ve lockfile'ı sil
rm -rf node_modules package-lock.json yarn.lock pnpm-lock.yaml
npm i

# Paket temizleme aracı
npx depcheck

💡 depcheck kullanılmayan paketleri listeler.


🧰 Faydalı CLI Komutları

bash
npx create-react-app myapp
npx create-next-app myapp
npx eslint . --fix
npx prettier . --write

# TypeScript derleme
npx tsc --noEmit

# Güncellemeler
npm outdated
npm update
npm-check -u        # interaktif güncelleme (npm i -g npm-check)

🔄 Versiyonlama & Yayınlama

bash
npm version patch
npm version minor
npm version major

npm publish --access public

⚠️ package.json içinde "private": true varsa publish işlemi engellenir.


🧠 Troubleshooting

bash
# ESM/CJS karmaşası
cat package.json | grep type

# node: command not found
nvm use --lts

# npm ERR! code EACCES → izin sorunu
sudo chown -R $USER:$GROUP ~/.npm

⌨️ VS Code Kısayolları (Node/JS)

  • Genel: Ctrl+P dosya bul, Ctrl+Shift+P komut paleti, Ctrl+B yan panel
  • Çoklu imleç: Alt+Click, Ctrl+D sonraki eşleşme
  • Terminal: Ctrl+` aç/kapat
  • Debug: F5 başlat, Shift+F5 durdur
  • Format: Shift+Alt+F (Prettier/ESLint aktifse)

📘 Bu mini rehber, Node tabanlı projelerde (React, Angular, API) günlük komut akışını kapsar.
NVM ile versiyon kontrolü, cache yönetimi ve paket güncellemeleriyle sistemini temiz ve kararlı tut.

🧰 VS Code — Shortcuts & Extensions Master Mini Guide

(Linux odaklı kısayollar + önerilen eklentiler + ayar şablonları + debug/tasks)
Son Güncelleme: 2025-11-07 02:13


⌨️ Çekirdek Kısayollar (Linux)

  • Komut Paleti: Ctrl+Shift+P
  • Hızlı Dosya Bul: Ctrl+P
  • Yan Panel Göster/Gizle: Ctrl+B
  • Terminal Aç/Kapat: Ctrl+`
  • Çoklu İmleç: Alt+Click, Ctrl+D (sonraki eşleşme), Ctrl+L (satır)
  • Satır Taşı: Alt+↑ / Alt+↓
  • Satır Kopyala: Shift+Alt+↑ / Shift+Alt+↓
  • Yorum Satırı: Ctrl+/
  • Biçimlendir: Shift+Alt+F
  • Sembol Yeniden Adlandır: F2
  • Hızlı Düzenleme Önerisi: Ctrl+.
  • Split Editor: Ctrl+\
  • Panel Odak: Ctrl+1 / Ctrl+2 / Ctrl+3

🧩 Önerilen Eklentiler (TR/EN projeler için)

  • ESLint (Microsoft) — JS/TS lint
  • Prettier - Code formatter (Prettier)
  • PHP Intelephense (Ben Mewburn) — Laravel/PHP intellisense
  • Laravel Artisan / Laravel Blade Formatter
  • dotenv — .env syntax
  • GitLens — gelişmiş Git geçmişi, blame
  • Error Lens — hataları inline gösterir
  • Path Intellisense, Auto Rename Tag
  • Docker (ms-azuretools) — container yönetimi
  • Thunder Client — API test
  • Rest Client.http dosyaları ile API test
  • Markdown All in One — md düzenleme, TOC
  • Material Icon Theme — dosya ikonları
  • Live Server (statik önizleme için)
  • Highlight Matching Tag, Indent-Rainbow

💡 Proje tipine göre ekleyin: React → ES7+ Snippets, Angular → Angular Language Service, Python → Python, Pylance.


⚙️ settings.json (öneri)

File → Preferences → Settings → Open JSON

json
{
  "editor.tabSize": 2,
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": {
    "source.fixAll": true,
    "source.organizeImports": true
  },
  "files.trimTrailingWhitespace": true,
  "files.insertFinalNewline": true,
  "javascript.updateImportsOnFileMove.enabled": "always",
  "typescript.updateImportsOnFileMove.enabled": "always",
  "prettier.printWidth": 100,
  "prettier.singleQuote": true,
  "prettier.semi": true,
  "terminal.integrated.defaultProfile.linux": "bash",
  "php.validate.executablePath": "/usr/bin/php",
  "python.defaultInterpreterPath": ".venv/bin/python",
  "python.testing.pytestEnabled": true,
  "python.testing.pytestArgs": ["-q"]
}

⌨️ keybindings.json (örnek)

Preferences: Open Keyboard Shortcuts (JSON)

json
[
  { "key": "ctrl+alt+f", "command": "editor.action.formatDocument" },
  { "key": "ctrl+shift+l", "command": "workbench.action.toggleSidebarVisibility" },
  { "key": "ctrl+shift+t", "command": "workbench.action.terminal.toggleTerminal" },
  { "key": "ctrl+shift+r", "command": "editor.action.rename" }
]

💡 Senin cihazında Ctrl+Alt+F çalışmıyorsa: başka uygulama kapmış olabilir. Bu dosyada farklı kombinasyon ver.


🐞 Debug (Node + PHP + Python)

Node (launch.json):

json
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Node",
      "program": "${workspaceFolder}/index.js"
    }
  ]
}

PHP (Xdebug):

json
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Listen for Xdebug",
      "type": "php",
      "request": "launch",
      "port": 9003
    }
  ]
}

Python (pytest):

json
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Python: Current File",
      "type": "python",
      "request": "launch",
      "program": "${file}",
      "console": "integratedTerminal"
    }
  ]
}

🧪 Tasks (npm/artisan/tests)

.vscode/tasks.json:

json
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "npm: dev",
      "type": "shell",
      "command": "npm run dev",
      "problemMatcher": []
    },
    {
      "label": "artisan: test",
      "type": "shell",
      "command": "php artisan test -q",
      "problemMatcher": []
    },
    {
      "label": "pytest",
      "type": "shell",
      "command": "pytest -q",
      "problemMatcher": []
    }
  ]
}

💡 Ctrl+Shift+B ile default build task çalıştır; Tasks: Run Task ile listedekileri seç.


🧩 Workspace İpuçları

  • Multiroot: Add Folder to Workspace… ile birden fazla proje tek pencerede.
  • Dev Container: .devcontainer ile uniform ortam (Docker).
  • Remote SSH: uzak sunucu üstünde VS Code.
  • Terminal Profilleri: bash, zsh, fish arasında profil seç.

🩺 Troubleshooting

  • Format çalışmıyor: Prettier varsayılan formatlayıcı mı? Format Document With… → Prettier seç.
  • ESLint hataları görünmüyor: ESLint eklentisi aktif mi? Projede .eslintrc.* var mı?
  • Python venv görünmüyor: Python: Select Interpreter.venv/bin/python seç.
  • Xdebug bağlanmıyor: xdebug.client_port=9003 ve VS Code portu eşleşmeli.

📘 Bu mini rehber, VS Code’u “günlük verimlilik aracı” haline getirir: kısayollar, eklentiler, ayarlar, debug ve görevler tek sayfada.

🧱 Microsoft SQL Server (MSSQL) — Terminal & Shortcuts Handbook

(sqlcmd / mssql-cli / backup-restore / kullanıcı-yetki / bakım / Linux-Container notları)
Son Güncelleme: 2025-11-07 02:16


🧭 Bağlantı & Araçlar

sqlcmd (Microsoft):

bash
sqlcmd -S localhost,1433 -U sa -P 'YourStrong!Pass' -Q "SELECT @@VERSION;"

mssql-cli (tab completion):

bash
pip install mssql-cli
mssql-cli -S localhost -U sa -P 'YourStrong!Pass'

Linux’ta MSSQL servisi:

bash
systemctl status mssql-server

👤 Login, User & Role Yönetimi

sql
-- login oluştur (server-level)
CREATE LOGIN app WITH PASSWORD = 'Strong!Pass';

-- database user bağla
USE MyDb;
CREATE USER app FOR LOGIN app;

-- rol atama
EXEC sp_addrolemember 'db_datareader', 'app';
EXEC sp_addrolemember 'db_datawriter', 'app';

-- tüm yetkiler (dikkat!)
EXEC sp_addrolemember 'db_owner', 'app';

Parola değişimi:

sql
ALTER LOGIN app WITH PASSWORD = 'New!Pass';

🗄️ Database & Şema İşlemleri

sql
CREATE DATABASE MyDb;
DROP DATABASE MyDb;

USE MyDb;
CREATE SCHEMA sales;
CREATE TABLE sales.Orders (
  Id INT IDENTITY PRIMARY KEY,
  CustomerId INT NOT NULL,
  Total DECIMAL(10,2) NOT NULL
);
CREATE INDEX IX_Orders_CustomerId ON sales.Orders(CustomerId);

Foreign key örneği:

sql
ALTER TABLE sales.Orders
ADD CONSTRAINT FK_Orders_Customers
FOREIGN KEY (CustomerId) REFERENCES dbo.Customers(Id);

💾 Backup & Restore

sql
-- Tam yedek (FULL)
BACKUP DATABASE MyDb TO DISK = N'/var/opt/mssql/backups/MyDb_full.bak' WITH INIT, COMPRESSION;

-- Diferansiyel yedek
BACKUP DATABASE MyDb TO DISK = N'/var/opt/mssql/backups/MyDb_diff.bak' WITH DIFFERENTIAL, COMPRESSION;

-- Log yedeği (FULL/ BULK_LOGGED recovery modelde)
BACKUP LOG MyDb TO DISK = N'/var/opt/mssql/backups/MyDb_log.trn' WITH COMPRESSION;

Geri yükleme:

sql
RESTORE DATABASE MyDb FROM DISK = N'/var/opt/mssql/backups/MyDb_full.bak' WITH REPLACE, MOVE 'MyDb' TO '/var/opt/mssql/data/MyDb.mdf', MOVE 'MyDb_log' TO '/var/opt/mssql/data/MyDb_log.ldf';

💡 Linux container’da host dizinine -v $(pwd)/backups:/var/opt/mssql/backups ile mount ederek yedekleri dışarı al.


📈 Performans & İnceleme

sql
-- istatistik güncelle
UPDATE STATISTICS sales.Orders;

-- eksik indeks önerileri (yaklaşık)
SELECT * FROM sys.dm_db_missing_index_details;

-- plan inceleme
SET SHOWPLAN_ALL ON;
GO
SELECT * FROM sales.Orders WHERE CustomerId = 10;
GO
SET SHOWPLAN_ALL OFF;

Index ipuçları:

  • Sorgu predikatlarındaki sütunları kapsayan indeksler kullan.
  • INCLUDE (ColA, ColB) ile kaplama (covering) indeks oluştur.
  • İstatistikleri güncel tut (AUTO_UPDATE_STATISTICS).

🔧 İş Bakımı (Agent Jobs / Linux)

  • Windows’ta SQL Server Agent ile job tanımla.
  • Linux’ta cron + sqlcmd kombinasyonuyla bakım scriptleri çalıştır:
bash
0 2 * * * /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'pass' -Q "EXEC dbo.usp_RebuildIndexes;"

🔐 Güvenlik & Network

  • 1433 portu açık mı? ss -ltnp | grep 1433
  • Firewall:
bash
sudo ufw allow 1433/tcp
  • Uzak bağlantı için mssql.conf içinde tcp aktif olmalı.

🩺 Troubleshooting

bash
# servis logları
/var/opt/mssql/log/errorlog

# bağlanamıyorum → hostname, port, firewall, login kontrol et
sqlcmd -S 127.0.0.1,1433 -U sa -P 'pass' -Q "SELECT 1"

# permission denied → rol ve user eşleşmesi
SELECT dp1.name AS DatabaseRoleName, dp2.name AS UserName
FROM sys.database_role_members AS drm
JOIN sys.database_principals AS dp1 ON drm.role_principal_id = dp1.principal_id
JOIN sys.database_principals AS dp2 ON drm.member_principal_id = dp2.principal_id;

📘 Bu iki rehber (MySQL & MSSQL) günlük admin ve geliştirici akışını kapsar: kullanıcı/yetki, şema, yedek/geri yükleme, performans ve güvenlik.

🐬 MySQL — Terminal & Shortcuts Handbook

(mysql / mysqldump / admin komutları; kullanıcı, yetki, yedek, performans, troubleshooting)
Son Güncelleme: 2025-11-07 02:16


🧭 Bağlantı & Giriş

bash
mysql -u root -p
mysql -h 127.0.0.1 -P 3306 -u user -p dbname

MySQL versiyon/kontrol:

bash
mysql --version
systemctl status mysql    # Ubuntu/Debian

👤 Kullanıcı & Yetki Yönetimi

sql
-- kullanıcı oluştur
CREATE USER 'app'@'localhost' IDENTIFIED BY 'StrongPass!';
-- yetki ver (tam yetki örneği)
GRANT ALL PRIVILEGES ON mydb.* TO 'app'@'localhost';
FLUSH PRIVILEGES;

-- parola değiştir
ALTER USER 'app'@'localhost' IDENTIFIED BY 'NewPass!';

-- salt okunur örnek
GRANT SELECT ON mydb.* TO 'report'@'%';

Bağlantı test:

bash
mysql -u app -p -D mydb -e "SELECT 1;"

🗄️ Veritabanı & Tablo Yönetimi

sql
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
DROP DATABASE mydb;

USE mydb;
SHOW TABLES;
DESCRIBE users;

Dış anahtar ve index örnekleri:

sql
ALTER TABLE orders
  ADD CONSTRAINT fk_orders_user
  FOREIGN KEY (user_id) REFERENCES users(id);

CREATE INDEX idx_users_email ON users(email);

💾 Yedekleme & Geri Yükleme

bash
# tek db dump
mysqldump -u root -p mydb > mydb_$(date +%F).sql

# tüm db'ler
mysqldump -u root -p --all-databases > all_$(date +%F).sql

# sadece şema
mysqldump -u root -p -d mydb > schema.sql

# belirli tablolar
mysqldump -u root -p mydb users orders > partial.sql

# geri yükleme
mysql -u root -p mydb < mydb_2025-11-07.sql

Sıkıştırılmış dump:

bash
mysqldump -u root -p mydb | gzip > mydb.sql.gz
gunzip -c mydb.sql.gz | mysql -u root -p mydb

⚙️ Yapılandırma (my.cnf) — Özet

/etc/mysql/mysql.conf.d/mysqld.cnf veya /etc/my.cnf:

ini
[mysqld]
bind-address = 127.0.0.1
max_connections = 200
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
sql_mode = STRICT_ALL_TABLES
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

💡 Prod’da innodb_buffer_pool_size RAM’in ~%60-70’i önerilir.


📈 Performans & İnceleme

sql
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW STATUS LIKE 'Threads_connected';
EXPLAIN ANALYZE SELECT * FROM users WHERE email = 'a@b.com';

Yavaş sorgu logu:

ini
[mysqld]
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /var/log/mysql/slow.log

Index ipuçları:

  • WHERE/JOIN sütunlarına uygun index kur.
  • Kardinalitesi düşük alanlarda (ör. boolean) index verimsizdir.
  • Bileşik index’lerde sıralama önemlidir (leading column).

🔐 Yedek Güvenliği

  • Dump dosyalarını chmod 600 ile kısıtla.
  • .env içinde DB parolalarını gizli tut (production’da secrets).
  • Yedekleri şifreli/sıkıştırılmış olarak sakla.

🩺 Troubleshooting

bash
# servis ayağa kalkmıyor
journalctl -u mysql -e

# uzaktan bağlantı engeli
sudo ufw allow 3306/tcp
# my.cnf'de bind-address 0.0.0.0 yapılmalı (güvenle!)

# "Too many connections"
mysql -e "SHOW STATUS LIKE 'Threads_connected';"
# my.cnf → max_connections artır

Ilgili Rehberler

DevOps & Tools

Diger Kategoriler

Developer Guides & Technical References