🧱 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
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
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
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
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
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 -lile mevcut görevleri listeleyebilirsin.
🔁 Yedekleme / Senkronizasyon
rsync -avh /var/www/ /mnt/backup/www/
tar -czf project-$(date +%F).tgz ./project
scp backup.tgz user@server:/backups/🔧 Systemd Servis Oluşturma
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
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)
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
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ı
php artisan make:observer ProductObserver --model=Product
php artisan make:event OrderCreated
php artisan make:listener SendOrderMail --event=OrderCreated
php artisan make:job ProcessOrderJob// 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ı
derivedMetaile otomatik başlık ve açıklama üretimi- Lang ID bazlı SEO payload üretimi
autoCanonicalveuniquifyCanonicaldavranışları
$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)
sudo apt install supervisor -y
sudo nano /etc/supervisor/conf.d/laravel-worker.conf[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.logsudo 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
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ı
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
php artisan test --stop-on-failure
php artisan test --coverage
tail -f storage/logs/laravel.log
php artisan make:exception CustomError// 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ü
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.inidosyaları kullanabilir. Birini değiştirince diğerini de kontrol et.
⚙️ PHP-FPM Yönetimi (Ubuntu 22.04/24.04/25.10)
sudo systemctl status php8.3-fpm
sudo systemctl restart php8.3-fpm
sudo journalctl -u php8.3-fpm -eHavuz (pool) yapılandırması:
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 = 4NGINX örnek konfig (fastcgi):
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:
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=1Durum kontrolü:
php -r "print_r(opcache_get_status());"💡 Geliştirme ortamında
validate_timestamps=1bırak; prod’da0performans sağlar (deploy sonrasıphp-fpmrestart et).
🔍 Profiling & Debugging
Xdebug kurulumu (geliştirme):
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.1Alternatif/Prod izleme: Tideways, Blackfire (sunucu tarafı agent + web arayüzü).
Hızlı testler:
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)
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/binveya~/.config/composer/vendor/binPATH'e ekle.
Güvenli güncelleme:
composer update vendor/package
composer outdated🔐 Security.ini — Öneriler
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_functionsbazı projelerde gerekebilir; ihtiyacına göre daralt.
✉️ Mail Testi (Hızlı)
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 phpinfo();Preload (ileri seviye):/etc/php/8.3/fpm/php.ini içinde:
opcache.preload=/var/www/preload.php
opcache.preload_user=www-data/var/www/preload.php örneği:
<?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
# 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
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
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ü:
git status
nano conflicted-file.php
git add conflicted-file.php
git rebase --continue🧾 Reset, Revert, Cherry-pick
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
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)
# .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-commityapmayı unutma.
🔐 SSH & GPG Anahtarları
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
git clone --filter=blob:none --sparse <repo>
cd <repo>
git sparse-checkout set src/ app/Subtree ile alt repo ekleme:
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
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ı)
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
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)
# .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)
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
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 blameidealdir.
📋 Submodule Yönetimi
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
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:
echo '#!/bin/sh' > .git/hooks/pre-commit
echo 'npm run lint && php artisan test' >> .git/hooks/pre-commit
chmod +x .git/hooks/pre-commitPost-merge otomatik build:
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:
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):
ssh-keygen -t ed25519 -C "you@example.com"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pubGitHub ➜ 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:
git remote set-url origin git@github.com:<user>/<repo>.git3) 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ış:
git checkout -b feature/seo
# değişiklikler
git add . && git commit -m "feat(seo): add meta builder"
git push -u origin feature/seoGitHub UI → Compare & pull request → Açıklama + Reviewer ata → CI çalışır → Review “Request changes/Approve” → Merge.
PR Template (repo/.github/pull_request_template.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:apigibi 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):
---
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):
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-failureDeploy (örnek):
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):
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@v4Custom 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:
git tag -a v1.0.0 -m "Stable release"
git push origin --tags10) 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:
git lfs install
git lfs track "*.psd"- Submodule: bağımlılıkları kaynak olarak dahil et.
- Monorepo: tek repo içinde
apps/api,apps/webvb. klasörler; Actions matrisi kullan.
13) README Kalıbı (Hızlı Başlangıç)
# 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
MIT14) Sık Sorunlar
- Permission denied (publickey) → SSH anahtarını ekledin mi?
ssh -T git@github.comtest et. - Actions fail → secrets yok → Settings → Secrets and variables → Actions kontrol.
- Pages 404 → “Build from Actions” seçili mi?
CNAMEdoğ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):
npm create vite@latest myapp -- --template react
cd myapp && npm i
npm run devNext.js:
npx create-next-app@latest myapp
# öneriler: TypeScript=Yes, ESLint=Yes, App Router=Yes
cd myapp && npm run devPaket Yöneticileri (eşdeğer):
# NPM
npm i # kurulum
npm run dev
# Yarn
yarn # kurulum
yarn dev
# PNPM
pnpm i # kurulum
pnpm dev🚀 Geliştirme / Build / Preview
# 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):
# package.json script örneği
"dev": "vite --port 5174"
"dev": "next dev -p 4000"Port meşgulse:
sudo lsof -i :5173
kill -9 <PID>🧹 Lint / Format / Test
# 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 jestPrettier hızlıları:
npx prettier . --write🔐 Env Değişkenleri
# 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) veyaNEXT_PUBLIC_(Next.js) prefix’i zorunludur.
📦 NPM Scripts (Örnek Şablon)
{
"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:
{
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint",
"format": "prettier . --write",
"test": "jest"
}
}🧰 Faydalı CLI Kısayolları
# 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/imagekullan. - Kod bölme:
React.lazy+Suspense. - Mutlaka
eslint-plugin-react-hookskullan (hook kuralları).
⌨️ VS Code Kısayolları (React/TS)
- Genel:
Ctrl+Pdosya bul,Ctrl+Shift+Pkomut paleti,Ctrl+Byan panel - Çoklu imleç:
Alt+Click,Ctrl+Dsonraki eşleşme,Ctrl+Lsatır seç - Refactor:
F2yeniden adlandır,Ctrl+.hızlı düzelt - Format:
Shift+Alt+F(Linux) - Split:
Ctrl+\böl,Ctrl+1/2/3panele odak - Terminal:
Ctrl+`aç/kapat
🩺 Troubleshooting (Kısa)
# 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ıç
npm i -g @angular/cli
ng versionYeni proje (standalone önerilir):
ng new myapp --standalone --routing --style=scss
cd myapp
ng serve -o # tarayıcıda otomatik açAlternatif (klasik module tabanlı):
ng new myapp --routing --style=scss🚀 Geliştirme / Build / Test
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:
ng serve --port 4300🧱 Generate (Hızlı Üretim)
Standalone projeler için:
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 --flatModule tabanlı için örnek:
ng g module features/products --route products --module app.module
ng g component features/products/list🧭 Router, Lazy Loading & Guards
Standalone lazy route:
// 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):
import { CanActivateFn } from '@angular/router';
export const authGuard: CanActivateFn = () => {
const loggedIn = !!localStorage.getItem('token');
return loggedIn;
};🔐 Environment & Config
# src/environments/
environment.ts # dev
environment.prod.ts # prodKullanımı:
import { environment } from '../environments/environment';
console.log(environment.production);Build-time değişimi:
ng build --configuration production🧰 HTTP & Interceptor
import { HttpClient, provideHttpClient, withInterceptors } from '@angular/common/http';
export const appConfig = {
providers: [
provideHttpClient(withInterceptors([authTokenInterceptor])),
]
};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
ng test --browsers=ChromeHeadless --watch=falseComponent test örneği:
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)
ng add @angular-eslint/schematics
npm i -D prettier eslint-config-prettier
npm run lint
npx prettier . --writepackage.json öneri:
{
"scripts": {
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"format": "prettier . --write"
}
}⬆️ Upgrade / Update
ng update @angular/core @angular/cli
ng update @angular/materialNPM bağımlılıkları:
npm outdated
npm update⚡ Performans İpuçları
- Standalone bileşenler +
provide*API’leri kullan (daha az boilerplate). - Lazy loading rotaları agresif kullan.
OnPushchange detection uygula (gerekli yerlerde).trackByile ngFor performansını artır.- RxJS’de
takeUntil+Subjectile abonelikleri temizle.
⌨️ VS Code Kısayolları (Angular/TS)
- Genel:
Ctrl+Pdosya bul,Ctrl+Shift+Pkomut paleti,Ctrl+Byan panel - Refactor:
F2yeniden adlandır,Ctrl+.hızlı fix - Çoklu imleç:
Alt+Click,Ctrl+Dsonraki eşleşme - Format:
Shift+Alt+F - Split:
Ctrl+\böl,Ctrl+1/2/3panele odak - Terminal:
Ctrl+`
🩺 Troubleshooting
# 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.jsonproxy.conf.json örneği:
{
"/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)
# 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.txtSanal ortamdan çıkış:
deactivate📦 Bağımlılıklar (pip / requirements)
pip install -r requirements.txt
pip install "flask>=3.0" "pydantic>=2.0"
pip uninstall <paket>
pip list --outdatedKaydet (pin):
pip freeze > requirements.txtpip-tools (opsiyonel):
pip install pip-tools
pip-compile pyproject.toml # veya requirements.in
pip-sync # lock'a göre kurulum🧪 Test & Kalite
pytest -q # hızlı test
pytest -k "User and not slow" # pattern
pytest tests/test_api.py::TestAPI::test_okStil / Format:
black .
isort .
ruff . # (opsiyonel) linterpre-commit (opsiyonel):
pip install pre-commit
pre-commit install
# .pre-commit-config.yaml -> black, isort, ruff, trailing-whitespace vb.▶️ Çalıştırma / Script / Modül
python app.py
python -m mypackage.module # modül olarak çalıştır
python -m http.server 8000 # basit HTTP serverArgparse kısa örnek:
# cli.py
import argparse
p = argparse.ArgumentParser()
p.add_argument("--env", default="dev")
print(p.parse_args())🌶️ Flask & FastAPI (mini)
Flask:
pip install flask
export FLASK_APP=app.py && flask run # Win: set FLASK_APP=app.py# app.py
from flask import Flask
app = Flask(__name__)
@app.get("/")
def hello():
return {"ok": True}FastAPI:
pip install fastapi uvicorn
uvicorn main:app --reload --port 8000# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def hello():
return {"ok": True}🧰 Packaging (pyproject, wheel) — opsiyonel
pip install build
python -m build # dist/*.whl üretirpyproject.toml iskelet:
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "mypkg"
version = "0.1.0"
dependencies = ["requests>=2.0"]🧪 VS Code Entegrasyonu
# 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+Pdosya bul,Ctrl+Shift+Pkomut paletiCtrl+`terminal aç/kapatF5Debug,Shift+F5durdurF2yeniden adlandır,Ctrl+.hızlı düzeltShift+Alt+Fbiçimlendir
🩺 Troubleshooting
# 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)
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 versiyonVarsayılan ayarla:
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 / İşlem | NPM | Yarn | PNPM |
|---|---|---|---|
| Proje oluştur | npm init -y | yarn init -y | pnpm init |
| Kurulum | npm i | yarn | pnpm i |
| Paket ekle | npm i react | yarn add react | pnpm add react |
| Dev paketi | npm i -D typescript | yarn add -D typescript | pnpm add -D typescript |
| Paket kaldır | npm uninstall axios | yarn remove axios | pnpm remove axios |
| Script çalıştır | npm run dev | yarn dev | pnpm dev |
⚙️ Script Tanımları (package.json)
{
"scripts": {
"dev": "node index.js",
"build": "tsc",
"start": "node dist/index.js",
"lint": "eslint . --fix",
"format": "prettier . --write"
}
}Çalıştırma:
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
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💡
depcheckkullanılmayan paketleri listeler.
🧰 Faydalı CLI Komutları
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
npm version patch
npm version minor
npm version major
npm publish --access public⚠️
package.jsoniçinde"private": truevarsapublishişlemi engellenir.
🧠 Troubleshooting
# 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+Pdosya bul,Ctrl+Shift+Pkomut paleti,Ctrl+Byan panel - Çoklu imleç:
Alt+Click,Ctrl+Dsonraki eşleşme - Terminal:
Ctrl+`aç/kapat - Debug:
F5başlat,Shift+F5durdur - 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):
npm create vite@latest myapp -- --template react
cd myapp && npm i
npm run devNext.js:
npx create-next-app@latest myapp
# öneriler: TypeScript=Yes, ESLint=Yes, App Router=Yes
cd myapp && npm run devPaket Yöneticileri (eşdeğer):
# NPM
npm i # kurulum
npm run dev
# Yarn
yarn # kurulum
yarn dev
# PNPM
pnpm i # kurulum
pnpm dev🚀 Geliştirme / Build / Preview
# 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):
# package.json script örneği
"dev": "vite --port 5174"
"dev": "next dev -p 4000"Port meşgulse:
sudo lsof -i :5173
kill -9 <PID>🧹 Lint / Format / Test
# 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 jestPrettier hızlıları:
npx prettier . --write🔐 Env Değişkenleri
# 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) veyaNEXT_PUBLIC_(Next.js) prefix’i zorunludur.
📦 NPM Scripts (Örnek Şablon)
{
"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:
{
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint",
"format": "prettier . --write",
"test": "jest"
}
}🧰 Faydalı CLI Kısayolları
# 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/imagekullan. - Kod bölme:
React.lazy+Suspense. - Mutlaka
eslint-plugin-react-hookskullan (hook kuralları).
⌨️ VS Code Kısayolları (React/TS)
- Genel:
Ctrl+Pdosya bul,Ctrl+Shift+Pkomut paleti,Ctrl+Byan panel - Çoklu imleç:
Alt+Click,Ctrl+Dsonraki eşleşme,Ctrl+Lsatır seç - Refactor:
F2yeniden adlandır,Ctrl+.hızlı düzelt - Format:
Shift+Alt+F(Linux) - Split:
Ctrl+\böl,Ctrl+1/2/3panele odak - Terminal:
Ctrl+`aç/kapat
🩺 Troubleshooting (Kısa)
# 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ıç
npm i -g @angular/cli
ng versionYeni proje (standalone önerilir):
ng new myapp --standalone --routing --style=scss
cd myapp
ng serve -o # tarayıcıda otomatik açAlternatif (klasik module tabanlı):
ng new myapp --routing --style=scss🚀 Geliştirme / Build / Test
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:
ng serve --port 4300🧱 Generate (Hızlı Üretim)
Standalone projeler için:
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 --flatModule tabanlı için örnek:
ng g module features/products --route products --module app.module
ng g component features/products/list🧭 Router, Lazy Loading & Guards
Standalone lazy route:
// 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):
import { CanActivateFn } from '@angular/router';
export const authGuard: CanActivateFn = () => {
const loggedIn = !!localStorage.getItem('token');
return loggedIn;
};🔐 Environment & Config
# src/environments/
environment.ts # dev
environment.prod.ts # prodKullanımı:
import { environment } from '../environments/environment';
console.log(environment.production);Build-time değişimi:
ng build --configuration production🧰 HTTP & Interceptor
import { HttpClient, provideHttpClient, withInterceptors } from '@angular/common/http';
export const appConfig = {
providers: [
provideHttpClient(withInterceptors([authTokenInterceptor])),
]
};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
ng test --browsers=ChromeHeadless --watch=falseComponent test örneği:
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)
ng add @angular-eslint/schematics
npm i -D prettier eslint-config-prettier
npm run lint
npx prettier . --writepackage.json öneri:
{
"scripts": {
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"format": "prettier . --write"
}
}⬆️ Upgrade / Update
ng update @angular/core @angular/cli
ng update @angular/materialNPM bağımlılıkları:
npm outdated
npm update⚡ Performans İpuçları
- Standalone bileşenler +
provide*API’leri kullan (daha az boilerplate). - Lazy loading rotaları agresif kullan.
OnPushchange detection uygula (gerekli yerlerde).trackByile ngFor performansını artır.- RxJS’de
takeUntil+Subjectile abonelikleri temizle.
⌨️ VS Code Kısayolları (Angular/TS)
- Genel:
Ctrl+Pdosya bul,Ctrl+Shift+Pkomut paleti,Ctrl+Byan panel - Refactor:
F2yeniden adlandır,Ctrl+.hızlı fix - Çoklu imleç:
Alt+Click,Ctrl+Dsonraki eşleşme - Format:
Shift+Alt+F - Split:
Ctrl+\böl,Ctrl+1/2/3panele odak - Terminal:
Ctrl+`
🩺 Troubleshooting
# 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.jsonproxy.conf.json örneği:
{
"/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)
# 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.txtSanal ortamdan çıkış:
deactivate📦 Bağımlılıklar (pip / requirements)
pip install -r requirements.txt
pip install "flask>=3.0" "pydantic>=2.0"
pip uninstall <paket>
pip list --outdatedKaydet (pin):
pip freeze > requirements.txtpip-tools (opsiyonel):
pip install pip-tools
pip-compile pyproject.toml # veya requirements.in
pip-sync # lock'a göre kurulum🧪 Test & Kalite
pytest -q # hızlı test
pytest -k "User and not slow" # pattern
pytest tests/test_api.py::TestAPI::test_okStil / Format:
black .
isort .
ruff . # (opsiyonel) linterpre-commit (opsiyonel):
pip install pre-commit
pre-commit install
# .pre-commit-config.yaml -> black, isort, ruff, trailing-whitespace vb.▶️ Çalıştırma / Script / Modül
python app.py
python -m mypackage.module # modül olarak çalıştır
python -m http.server 8000 # basit HTTP serverArgparse kısa örnek:
# cli.py
import argparse
p = argparse.ArgumentParser()
p.add_argument("--env", default="dev")
print(p.parse_args())🌶️ Flask & FastAPI (mini)
Flask:
pip install flask
export FLASK_APP=app.py && flask run # Win: set FLASK_APP=app.py# app.py
from flask import Flask
app = Flask(__name__)
@app.get("/")
def hello():
return {"ok": True}FastAPI:
pip install fastapi uvicorn
uvicorn main:app --reload --port 8000# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def hello():
return {"ok": True}🧰 Packaging (pyproject, wheel) — opsiyonel
pip install build
python -m build # dist/*.whl üretirpyproject.toml iskelet:
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "mypkg"
version = "0.1.0"
dependencies = ["requests>=2.0"]🧪 VS Code Entegrasyonu
# 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+Pdosya bul,Ctrl+Shift+Pkomut paletiCtrl+`terminal aç/kapatF5Debug,Shift+F5durdurF2yeniden adlandır,Ctrl+.hızlı düzeltShift+Alt+Fbiçimlendir
🩺 Troubleshooting
# 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)
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 versiyonVarsayılan ayarla:
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 / İşlem | NPM | Yarn | PNPM |
|---|---|---|---|
| Proje oluştur | npm init -y | yarn init -y | pnpm init |
| Kurulum | npm i | yarn | pnpm i |
| Paket ekle | npm i react | yarn add react | pnpm add react |
| Dev paketi | npm i -D typescript | yarn add -D typescript | pnpm add -D typescript |
| Paket kaldır | npm uninstall axios | yarn remove axios | pnpm remove axios |
| Script çalıştır | npm run dev | yarn dev | pnpm dev |
⚙️ Script Tanımları (package.json)
{
"scripts": {
"dev": "node index.js",
"build": "tsc",
"start": "node dist/index.js",
"lint": "eslint . --fix",
"format": "prettier . --write"
}
}Çalıştırma:
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
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💡
depcheckkullanılmayan paketleri listeler.
🧰 Faydalı CLI Komutları
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
npm version patch
npm version minor
npm version major
npm publish --access public⚠️
package.jsoniçinde"private": truevarsapublishişlemi engellenir.
🧠 Troubleshooting
# 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+Pdosya bul,Ctrl+Shift+Pkomut paleti,Ctrl+Byan panel - Çoklu imleç:
Alt+Click,Ctrl+Dsonraki eşleşme - Terminal:
Ctrl+`aç/kapat - Debug:
F5başlat,Shift+F5durdur - 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 —
.httpdosyaları 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
{
"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)
[
{ "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):
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Node",
"program": "${workspaceFolder}/index.js"
}
]
}PHP (Xdebug):
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003
}
]
}Python (pytest):
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
}
]
}🧪 Tasks (npm/artisan/tests)
.vscode/tasks.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+Bile default build task çalıştır;Tasks: Run Taskile listedekileri seç.
🧩 Workspace İpuçları
- Multiroot:
Add Folder to Workspace…ile birden fazla proje tek pencerede. - Dev Container:
.devcontainerile 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/pythonseç. - Xdebug bağlanmıyor:
xdebug.client_port=9003ve 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):
sqlcmd -S localhost,1433 -U sa -P 'YourStrong!Pass' -Q "SELECT @@VERSION;"mssql-cli (tab completion):
pip install mssql-cli
mssql-cli -S localhost -U sa -P 'YourStrong!Pass'Linux’ta MSSQL servisi:
systemctl status mssql-server👤 Login, User & Role Yönetimi
-- 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:
ALTER LOGIN app WITH PASSWORD = 'New!Pass';🗄️ Database & Şema İşlemleri
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:
ALTER TABLE sales.Orders
ADD CONSTRAINT FK_Orders_Customers
FOREIGN KEY (CustomerId) REFERENCES dbo.Customers(Id);💾 Backup & Restore
-- 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:
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/backupsile mount ederek yedekleri dışarı al.
📈 Performans & İnceleme
-- 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:
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:
sudo ufw allow 1433/tcp- Uzak bağlantı için
mssql.confiçindetcpaktif olmalı.
🩺 Troubleshooting
# 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ş
mysql -u root -p
mysql -h 127.0.0.1 -P 3306 -u user -p dbnameMySQL versiyon/kontrol:
mysql --version
systemctl status mysql # Ubuntu/Debian👤 Kullanıcı & Yetki Yönetimi
-- 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:
mysql -u app -p -D mydb -e "SELECT 1;"🗄️ Veritabanı & Tablo Yönetimi
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
DROP DATABASE mydb;
USE mydb;
SHOW TABLES;
DESCRIBE users;Dış anahtar ve index örnekleri:
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
# 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.sqlSıkıştırılmış dump:
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:
[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_sizeRAM’in ~%60-70’i önerilir.
📈 Performans & İnceleme
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:
[mysqld]
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /var/log/mysql/slow.logIndex 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 600ile kısıtla. .enviçinde DB parolalarını gizli tut (production’da secrets).- Yedekleri şifreli/sıkıştırılmış olarak sakla.
🩺 Troubleshooting
# 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ırIlgili Rehberler
DevOps & Tools
- DevOps Genel Bakis
- Git Notlari
- Docker Rehberi
- Kubernetes
- Nginx Rehberi
- Linux CLI
- Deployment & Hosting
- Ubuntu Rehberi
- VS Code Rehberi
- Regex Rehberi