Adsense “Geçersiz Giriş” hatası alıyorsanız Türkçe karakter yada tam istediği gibi yazmalısınız
İş bankasını Şu şekil yazmalısınız : TURKIYE IS BANKASI A.S.
En Para : Enpara Banka
Adsense “Geçersiz Giriş” hatası alıyorsanız Türkçe karakter yada tam istediği gibi yazmalısınız
İş bankasını Şu şekil yazmalısınız : TURKIYE IS BANKASI A.S.
En Para : Enpara Banka
OVH,AWS, Google cloud gibi yerlerden VPS yada dedicated aldığınızda size ubuntu yada almalinux vb. kullanıcıyla ve .ppk ile giriş yapmanız istenir güvenlik sebebiyle fakat winscp tarzı programlarla sudo -i yapılamadığından dosya transferi gerçekleştiremeyebilirsiniz bunun için yapmanız gereken winscp üzerinden resimdeki gibi yapmanız.
sudo su -c /usr/lib/sftp-server

Bağlantı yaptığınız yerde ip yazdıktan sonra gelişmiş diyip ilgili menüye giriş SFTP sunucusu yerine üste verdiğim kodu yazarsanız sorunuz çözülür.
Ubuntu sisteminizi güncellemek için terminal üzerinden aşağıdaki adımları izleyebilirsiniz. Bu adımlar hem paket listesini güncelleyecek hem de mevcut paketleri yükseltecektir.
Buradaki OVH da bulunan VPS sunucusu, Sunucu Kanada da sunucunun üzerinde AMD EPYC 7763 İşlemci var.
[root@vps-858d9683 img.ismailaydemir.com.tr]# sysbench cpu --threads=$(nproc) run
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)
Running the test with following options:
Number of threads: 4
Initializing random number generator from current time
Prime numbers limit: 10000
Initializing worker threads...
Threads started!
CPU speed:
events per second: 15404.39
General statistics:
total time: 10.0002s
total number of events: 154056
Latency (ms):
min: 0.25
avg: 0.26
max: 3.83
95th percentile: 0.27
sum: 39948.86
Threads fairness:
events (avg/stddev): 38514.0000/113.89
execution time (avg/stddev): 9.9872/0.00
Üsteki İşlemci Testiyde şimdide HDD testi.
Okumaya devam et Kimdufi 9.99 Euro sunucu ile OVH VPS karşılaştırması
WhatsApp kullanımının dünya üzerindeki yeri.

## Açıklama
Bu Python scripti, Rclone kullanarak Uloz.to bulut depolama hesabınızdaki çift kayıtlı MP4 ve MKV video dosyalarını otomatik olarak tespit eder ve siler. Script, aynı isme sahip dosyaları gruplar ve her gruptan en büyük boyutlu dosyayı koruyarak diğerlerini siler.
## Özellikler
– ✅ Rclone entegrasyonu ile güvenli dosya yönetimi
– ✅ MP4 ve MKV dosyalarını otomatik filtreleme
– ✅ Aynı isme sahip dosyaları tespit etme
– ✅ En büyük dosyayı koruma, küçükleri silme
– ✅ Detaylı raporlama ve ilerleme göstergesi
– ✅ Güvenli onay mekanizması (silmeden önce kullanıcı onayı)
– ✅ Streaming modunda çalışma (büyük dosya listeleri için optimize)
## Gereksinimler
– Python 3.6+
– Rclone v1.69.1+ (https://rclone.org/downloads/)
– Uloz.to hesabı ve API token
## Kurulum
1. Rclone’u yükleyin ve PATH’e ekleyin
2. Uloz.to için remote yapılandırın: `rclone config`
3. Script içindeki `RCLONE_REMOTE` değişkenini kendi remote adınızla güncelleyin
4. Gerekli Python kütüphaneleri zaten standart kütüphaneler (subprocess, json, collections)
## Kullanım
python find_and_delete_duplicates_rclone.py## Güvenlik
– Silme işlemi geri alınamaz, bu nedenle script silmeden önce kullanıcıdan onay ister
– Her gruptan en büyük dosya korunur, diğerleri silinir
– Detaylı log ve raporlama ile işlemler takip edilebilir
## Notlar
– Script, Rclone’un `lsjson` komutunu kullanarak dosya listesini alır
– Çok fazla dosya varsa işlem biraz zaman alabilir (ilerleme mesajları gösterilir)
– Token hatası durumunda script detaylı yardım mesajları gösterir
## Tarih
Oluşturulma: 2025
Versiyon: 1.0
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Uloz.to Çift Kayıtlı Dosya Silme Scripti (Rclone ile)
Bu script, rclone kullanarak uloz.to hesabınızdaki çift kayıtlı MP4 ve MKV dosyalarını bulur ve siler.
En büyük dosyayı korur, diğerlerini siler.
"""
import subprocess
import json
import re
from collections import defaultdict
from typing import List, Dict, Tuple
import time
# Rclone remote adı (rclone config ile yapılandırdığınız remote adı)
RCLONE_REMOTE = 'ulozDB' # Bu değeri kendi rclone remote adınızla değiştirin
class RcloneUlozTo:
def __init__(self, remote_name: str):
self.remote = remote_name
def list_files(self) -> List[Dict]:
"""Rclone ile tüm dosyaları listeler (streaming modunda, timeout olmadan)"""
try:
# Rclone lsjson komutu ile dosyaları JSON formatında al
cmd = ['rclone', 'lsjson', f'{self.remote}:', '--recursive']
print(f"Komut çalıştırılıyor: {' '.join(cmd)}")
print("⏳ Dosyalar getiriliyor (bu işlem biraz zaman alabilir, lütfen bekleyin)...")
# Streaming modunda oku - timeout yok
process = subprocess.Popen(
cmd,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
encoding='utf-8',
errors='replace',
bufsize=8192
)
buffer = ""
file_count = 0
last_print = time.time()
# Stdout'u chunk chunk oku
while True:
chunk = process.stdout.read(8192) # 8KB chunks
if not chunk:
break
buffer += chunk
# İlerleme göster (her 10 saniyede bir)
current_time = time.time()
if current_time - last_print > 10:
# Buffer'daki dosya sayısını tahmin et
estimated = buffer.count('"Path"')
if estimated > file_count:
file_count = estimated
print(f" ⏳ {file_count} dosya bulundu (devam ediyor...)")
last_print = current_time
# Process'in bitmesini bekle
process.wait()
stderr_output = process.stderr.read() if process.stderr else ""
if process.returncode != 0:
print(f"❌ Rclone hatası: {stderr_output}")
# Token hatası kontrolü
if "Invalid authorization token" in stderr_output or "401" in stderr_output:
print("\n" + "="*60)
print("API TOKEN HATASI")
print("="*60)
print("\nRclone yapılandırmasında API token'ı yanlış veya geçersiz.")
print("\nToken'ı düzeltmek için:")
print(f" 1. rclone config")
print(f" 2. '{self.remote}' remote'unu seçin (numara ile)")
print(f" 3. 'token' seçeneğini düzenleyin")
print(f" 4. Doğru API token'ınızı girin: 46719ov9d82u")
print(f"\nVeya direkt olarak:")
print(f" rclone config password {self.remote}: token")
print(f" (Token'ı girin: 46719ov9d82u)")
print("\nToken'ınızın doğru olduğundan emin olun.")
print("Uloz.to hesabınızdan yeni bir API token oluşturmanız gerekebilir.")
print("\nLütfen kontrol edin:")
print(f"1. Rclone yüklü mü? (rclone --version)")
print(f"2. Remote '{self.remote}' yapılandırılmış mı? (rclone listremotes)")
print(f"3. Remote adı doğru mu?")
print(f"4. API token doğru mu? (rclone config show {self.remote})")
return []
# JSON çıktısını parse et
if not buffer.strip():
print("❌ Boş çıktı alındı")
return []
try:
files = json.loads(buffer)
print(f"✓ {len(files)} dosya bulundu.")
return files
except json.JSONDecodeError as e:
print(f"❌ JSON parse hatası: {e}")
print(f"Buffer uzunluğu: {len(buffer)} karakter")
print(f"İlk 500 karakter: {buffer[:500]}")
print(f"Son 500 karakter: {buffer[-500:]}")
# Alternatif yöntem dene
print("\n⚠ JSON parse başarısız, alternatif yöntem deneniyor...")
return self._list_files_alternative()
except FileNotFoundError:
print("❌ Rclone bulunamadı. Lütfen rclone'u yükleyin:")
print(" Windows: https://rclone.org/downloads/")
print(" veya: winget install Rclone.Rclone")
return []
except Exception as e:
print(f"❌ Hata: {e}")
import traceback
traceback.print_exc()
return []
def _list_files_alternative(self) -> List[Dict]:
"""Alternatif yöntem: rclone ls --json kullan (her satır bir JSON objesi)"""
try:
print("📋 Alternatif yöntem: rclone ls --json kullanılıyor...")
cmd = ['rclone', 'ls', f'{self.remote}:', '--recursive', '--json']
process = subprocess.Popen(
cmd,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
encoding='utf-8',
errors='replace',
bufsize=1
)
files = []
file_count = 0
last_print = time.time()
# Her satır bir JSON objesi
for line in process.stdout:
if line.strip():
try:
file_info = json.loads(line.strip())
files.append(file_info)
file_count += 1
# İlerleme göster
current_time = time.time()
if current_time - last_print > 10:
print(f" ⏳ {file_count} dosya işlendi (devam ediyor...)")
last_print = current_time
except json.JSONDecodeError:
continue
process.wait()
if process.returncode != 0:
stderr = process.stderr.read() if process.stderr else ""
print(f"❌ Alternatif yöntem de başarısız: {stderr}")
return []
print(f"✓ {len(files)} dosya bulundu (alternatif yöntem).")
return files
except Exception as e:
print(f"❌ Alternatif yöntem hatası: {e}")
return []
def delete_file(self, file_path: str) -> bool:
"""Rclone ile dosyayı siler"""
try:
cmd = ['rclone', 'delete', f'{self.remote}:{file_path}']
result = subprocess.run(
cmd,
capture_output=True,
text=True,
encoding='utf-8',
errors='replace',
timeout=30
)
if result.returncode == 0:
return True
else:
print(f" Silme hatası: {result.stderr}")
return False
except Exception as e:
print(f" Silme hatası: {e}")
return False
def find_duplicates_by_name(files: List[Dict]) -> Dict[str, List[Dict]]:
"""Aynı isme sahip dosyaları bulur"""
file_dict = defaultdict(list)
for file in files:
# Dosya adını al
path = file.get('Path', '')
filename = path.split('/')[-1] if '/' in path else path
# Uzantıyı kontrol et
extension = filename.split('.')[-1].lower() if '.' in filename else ''
# Sadece MP4 ve MKV dosyalarını kontrol et
if extension in ['mp4', 'mkv']:
# Sadece dosya adını kullan (path'i değil)
file_dict[filename].append(file)
# Sadece birden fazla olan dosyaları döndür
duplicates = {name: files for name, files in file_dict.items() if len(files) > 1}
return duplicates
def display_duplicates(duplicates: Dict):
"""Bulunan çift dosyaları gösterir"""
if not duplicates:
print("\n✓ Çift kayıtlı dosya bulunamadı!")
return
print(f"\n{'='*60}")
print(f"Toplam {len(duplicates)} grup çift kayıtlı dosya bulundu:")
print(f"{'='*60}\n")
total_files = 0
for filename, files in duplicates.items():
# Dosyaları boyuta göre sırala (büyükten küçüğe)
files_sorted = sorted(files, key=lambda f: f.get('Size', 0), reverse=True)
largest_size = files_sorted[0].get('Size', 0)
print(f"📁 {filename}")
print(f" Kopya sayısı: {len(files)}")
print(f" En büyük dosya: {largest_size / (1024*1024):.2f} MB (korunacak)")
for i, file in enumerate(files_sorted, 1):
file_path = file.get('Path', 'bilinmiyor')
size = file.get('Size', 0)
mod_time = file.get('ModTime', 'bilinmiyor')
status = "✓ KORUNACAK" if i == 1 else "✗ SİLİNECEK"
print(f" [{i}] Path: {file_path}")
print(f" Boyut: {size / (1024*1024):.2f} MB, Tarih: {mod_time} {status}")
print()
total_files += len(files)
print(f"Toplam dosya: {total_files} ({len(duplicates)} grup)")
print(f"Silinecek dosya: {total_files - len(duplicates)} (her gruptan en büyüğü korunacak)")
def delete_duplicates(rclone: RcloneUlozTo, duplicates: Dict, confirm: bool = True) -> Tuple[int, int]:
"""Çift kayıtları siler (her gruptan en büyüğünü korur)"""
if confirm:
print("\n⚠ UYARI: Bu işlem geri alınamaz!")
response = input("Çift kayıtları silmek istediğinize emin misiniz? (evet/hayir): ")
if response.lower() not in ['evet', 'e', 'yes', 'y']:
print("İşlem iptal edildi.")
return 0, 0
deleted_count = 0
failed_count = 0
print("\nSilme işlemi başlıyor...\n")
for filename, files in duplicates.items():
print(f"İşleniyor: {filename}")
# Dosyaları boyuta göre sırala (büyükten küçüğe)
files_sorted = sorted(files, key=lambda f: f.get('Size', 0), reverse=True)
# En büyük dosyayı koru, diğerlerini sil
for file in files_sorted[1:]:
file_path = file.get('Path', '')
size = file.get('Size', 0)
if file_path:
print(f" Siliniyor: {file_path} ({size / (1024*1024):.2f} MB)...", end=' ')
if rclone.delete_file(file_path):
print("✓")
deleted_count += 1
else:
print("✗")
failed_count += 1
# Rate limiting için kısa bekleme
time.sleep(0.5)
else:
print(f" ✗ Dosya path'i bulunamadı")
failed_count += 1
return deleted_count, failed_count
def check_rclone_setup(remote_name: str) -> bool:
"""Rclone kurulumunu ve remote yapılandırmasını kontrol eder"""
try:
# Rclone yüklü mü?
result = subprocess.run(
['rclone', '--version'],
capture_output=True,
text=True,
encoding='utf-8',
errors='replace',
timeout=10,
)
if result.returncode != 0:
print("❌ Rclone bulunamadı. Lütfen rclone'u yükleyin:")
print(" https://rclone.org/downloads/")
return False
print(f"✓ Rclone yüklü: {result.stdout.split()[1]}")
# Remote var mı?
result = subprocess.run(
['rclone', 'listremotes'],
capture_output=True,
text=True,
encoding='utf-8',
errors='replace',
timeout=10,
)
if result.returncode != 0:
print("❌ Rclone remote listesi alınamadı")
return False
remotes = result.stdout.strip().split('\n')
remotes = [r.replace(':', '') for r in remotes if r.strip()]
if remote_name not in remotes:
print(f"❌ Remote '{remote_name}' bulunamadı!")
print(f"\nMevcut remote'lar: {', '.join(remotes) if remotes else 'Yok'}")
print(f"\nYeni remote eklemek için:")
print(f" rclone config")
print(f"\nUloz.to için remote yapılandırması:")
print(f" 1. 'n' (new remote)")
print(f" 2. Remote adı: {remote_name}")
print(f" 3. Storage type: ulozto")
print(f" 4. API token'ınızı girin: 46719ov9d82u")
return False
print(f"✓ Remote '{remote_name}' bulundu")
# Remote yapılandırmasını göster (token kontrolü için)
print(f"\n📋 Remote yapılandırması kontrol ediliyor...")
result = subprocess.run(
['rclone', 'config', 'show', remote_name],
capture_output=True,
text=True,
encoding='utf-8',
errors='replace',
timeout=10,
)
if result.returncode == 0:
config = result.stdout
if 'token' in config.lower():
print(f"✓ Token yapılandırılmış")
# Token'ın son birkaç karakterini göster (güvenlik için)
token_lines = [line for line in config.split('\n') if 'token' in line.lower()]
if token_lines:
token_line = token_lines[0]
if '=' in token_line:
token_value = token_line.split('=')[1].strip()
if token_value:
masked = token_value[:4] + '*' * (len(token_value) - 8) + token_value[-4:] if len(token_value) > 8 else '***'
print(f" Token: {masked}")
else:
print(f"⚠ Token bulunamadı")
else:
print(f"⚠ Yapılandırma detayları alınamadı")
return True
except FileNotFoundError:
print("❌ Rclone bulunamadı. Lütfen rclone'u yükleyin:")
print(" https://rclone.org/downloads/")
return False
except Exception as e:
print(f"❌ Kontrol hatası: {e}")
return False
def main():
print("="*60)
print("Uloz.to Çift Kayıtlı Dosya Temizleme (Rclone ile)")
print("="*60)
# Rclone kurulumunu kontrol et
print("\n🔍 Rclone kurulumu kontrol ediliyor...")
if not check_rclone_setup(RCLONE_REMOTE):
print("\nLütfen rclone'u yapılandırın ve tekrar deneyin.")
return
# Rclone başlat
rclone = RcloneUlozTo(RCLONE_REMOTE)
# Dosyaları getir
print("\n📥 Dosyalar getiriliyor...")
files = rclone.list_files()
if not files:
print("❌ Dosya listesi alınamadı veya hesabınızda dosya yok.")
return
print(f"✓ Toplam {len(files)} dosya bulundu.")
# MP4 ve MKV dosyalarını say
video_files = [f for f in files if f.get('Path', '').split('.')[-1].lower() in ['mp4', 'mkv']]
print(f"✓ {len(video_files)} adet MP4/MKV dosyası bulundu.")
# Çift kayıtları bul (aynı isme sahip dosyalar)
print("\n🔍 Çift kayıtlar aranıyor...")
duplicates = find_duplicates_by_name(files)
# Sonuçları göster
display_duplicates(duplicates)
# Silme işlemi
if duplicates:
deleted, failed = delete_duplicates(rclone, duplicates, confirm=True)
print("\n" + "="*60)
print("İŞLEM TAMAMLANDI")
print("="*60)
print(f"✓ Silinen dosya: {deleted}")
if failed > 0:
print(f"✗ Silinemeden dosya: {failed}")
print("="*60)
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
print("\n\n⚠ İşlem kullanıcı tarafından iptal edildi.")
except Exception as e:
print(f"\n❌ Beklenmeyen hata: {e}")
import traceback
traceback.print_exc()
requests>=2.31.0
https://github.com/ismailaydemiriu/uloz.to_duplicates
| Terim | Türkçe Açıklama |
|---|---|
| Widget | Flutter’daki her şey bir widget’tır; buton, yazı, resim, vb. görsel veya yapısal öğeler. |
| Scaffold | Uygulama iskeletini oluşturur; AppBar, Drawer, Body gibi bölümleri içerir. |
| AppBar | Uygulamanın üst kısmındaki başlık çubuğu. |
| Body | Sayfanın ana içeriğinin bulunduğu alan. |
| Container | Kutucuk yapısı — boyut, renk, kenar boşluğu gibi ayarlar yapılır. |
| Padding | İç boşluk (iç kenar mesafesi). |
| Margin | Dış boşluk (dış kenar mesafesi). |
| Row | Yatay yerleşim (yan yana dizilim). |
| Column | Dikey yerleşim (alt alta dizilim). |
| Stack | Üst üste widget yerleştirmek için kullanılır. |
| Card | Köşeleri yuvarlatılmış, gölgeli kutu (genellikle içerik kartı). |
| ListView | Kaydırılabilir liste görünümü. |
| GridView | Izgara şeklinde (kare, dikdörtgen) düzenli liste. |
| Drawer | Kenardan açılan menü (yan panel). |
| BottomNavigationBar | Ekranın altındaki sekmeli gezinme çubuğu. |
| TabBar / TabBarView | Üstte sekmeli sayfalar. |
| FloatingActionButton (FAB) | Genellikle sağ altta bulunan, önemli bir işlemi başlatan dairesel buton. |
| Badge | Genellikle ikonun yanında görülen küçük sayı göstergesi (örnek: sepet adedi). |
| Snackbar | Ekranın alt kısmında kısa süreli bilgi mesajı. |
| Dialog / AlertDialog | Uyarı veya onay penceresi. |
| Chip | Etiket veya küçük bilgi kartı (örnek: “Yeni”, “Popüler”). |
| Tooltip | Üzerine gelince çıkan kısa açıklama. |
| IconButton | Sadece ikon içeren buton. |
| TextField | Kullanıcıdan metin girişi almak için alan. |
| DropdownButton | Açılır liste (seçim menüsü). |
| Switch / Checkbox / Radio | Aç/kapa, onay kutusu veya tekli seçim bileşenleri. |
Okumaya devam et Flutter Terimleri Sözlüğü (İngilizce → Türkçe Açıklama)
| Komut | Açıklama |
|---|---|
flutter create proje_adi |
Yeni Flutter projesi oluşturur |
flutter pub get |
pubspec.yaml dosyasındaki bağımlılıkları indirir |
flutter pub add paket_adi |
Yeni bir paket ekler (örneğin: flutter pub add firebase_core) |
flutter run |
Uygulamayı bağlı cihazda/emülatörde çalıştırır |
flutter build apk |
Android için .apk oluşturur |
flutter build appbundle |
Google Play’e yüklemek için .aab dosyası oluşturur |
flutter build ios |
iOS sürümü derler (Xcode gerektirir) |
flutter clean |
Eski derleme önbelleğini temizler |
flutter doctor |
Geliştirme ortamını kontrol eder, eksikleri gösterir |
flutter devices |
Bağlı cihazları listeler |
flutter analyze |
Koddaki hataları ve uyarıları analiz eder |
flutter upgrade |
Flutter SDK’yı en son sürüme yükseltir |
flutter pub outdated |
Paketlerin güncel sürümlerini gösterir |
flutterfire configure |
Firebase projesini Flutter’a bağlar |
flutter test |
Unit test dosyalarını çalıştırır |
flutter format . |
Kodları otomatik biçimlendirir |
| Kod / Widget | Açıklama |
|---|---|
MaterialApp() |
Uygulamanın kök yapısı (tema, yönlendirme vs.) |
Scaffold() |
Sayfa iskeleti (AppBar, Body, FloatingActionButton) |
AppBar() |
Üst başlık çubuğu |
Container() |
Genel amaçlı kutu — padding, renk, border için |
Column() / Row() |
Dikey / yatay yerleşim düzeni |
ListView.builder() |
Dinamik liste oluşturur |
Text() |
Metin gösterir |
Image.asset() / Image.network() |
Görsel gösterir |
ElevatedButton() |
Modern buton |
Navigator.push() / Navigator.pop() |
Sayfa geçişleri |
setState() |
Stateful widget içinde arayüzü günceller |
initState() |
Widget açıldığında bir kere çalışır |
FutureBuilder() / StreamBuilder() |
Asenkron veri akışlarını dinler |
MediaQuery.of(context) |
Ekran boyutlarını öğrenmek için |
GestureDetector() |
Tıklama, sürükleme gibi dokunma olaylarını dinler |
flutter clean && flutter pub get → Temiz baştan derleme
flutter run -d chrome → Web üzerinde çalıştır
flutter run -d windows → Windows masaüstü sürümü
flutter pub run build_runner build → Kod jenerasyonu (ör. JSON serialization)
Eğer bir macOS yoksa ve uygulamanızı iphone yüklemek istiyorsanız
https://codemagic.io/
Bu üsteki site üzerinden .ipa çıktısı alabilirsiniz. .ipa çıktısı aldıktan sonra size bir mail gönderiyor maildeki install basarak kolayca telefonuza yükleyebilirisiniz.
https://www.macincloud.com/
bu site üzerinden macOS kiralayabilirsiinz.
Ethernet MTU = 1500 byte
IP + ICMP header = 28 byte
Yani maksimum payload = 1500 – 28 = 1472
ping -M do -s 1472 1.1.1.1
Bu şekilde paket tam 1500 byte olur ve parçalanmadan geçer.
Eğer MTU’nun 1492 olduğunu test etmek istiyorsan, payload = 1492 – 28 = 1464 kullanmalısın.