Sublime Text İçine Wsl Bash Ekleme

 Sublime Text İçine Wsl Bash Ekleme      Buradaki adımlarla Sublime Text'e Terminus Package ile bash eklenebilir.      Öncelikle Termin...

uv ve pyproject.toml ile Kapsamlı Python Proje Yönetimi Rehberi



Giriş

Bu kılavuzda ilk partın amacı, Python Geliştirme Önerileri (PEP) standartlarının geçmişten günümüze değişiminden bahsederek pyproject.toml dosyası ile Python proje yönetimi için kapsamlı bir rehber sağlamaktır. Tarihsel bağlamın bu şekilde gözden geçirilmesi, mevcut uygulamaları anlamak için önemlidir. İlk partı Reinforced Learning tarafından hazırlanmış olan faydalı bulduğum dökümanı Türkçeye çevirip bazı ekleme, çıkarma ve özetlemeler yaparak oluşturdum. Sayfasına çok teşekkür ederim.
İkinci part ise en sık kullandığım uv komutlarını içeren bir kullanım kılavuzu / cheat sheet içerir.

2.bölüme bölüme atlamak için tıklayın.


Bu yazıda PEP'ler tarafından sağlanan değişikliklerin sorunları nasıl çözdüğünü uv'yi kullanarak açıklayacağız.

Python proje yönetimi ve paketleme genellikle araçlara dayandığından (bağımlılıklarınızı yüklemek, projenizi derlemek vb.), bahsettiğimiz kavramları göstermek için bir araç kullanmanın harika bir fikir olduğunu düşündüm. Genel olarak araçlar standardın ötesine geçer, örneğin bu yazıda seçilen araç uv, standartta olmayan ancak uv gibi birçok aracın sunduğu bir özellik olan "düzenlenebilir bağımlılıklar" olarak adlandırılan şeye izin verir.

Standartta yer alan, standardın ötesinde olan ve bir araç tarafından sağlanan ve aracın desteklemediği yeni standartlar arasındaki bu ayrımı akılda tutmak önemlidir.

Pip birçok ihtiyaç için tek başına yeterli olabilir fakat düzenli ve kapsamlı bir yönetime gelince her şeyib manuel yapılması gerekiyor. uv "Rust dilinde yazılmış son derece hızlı bir Python paket ve proje yöneticisi". Ele alacağımız komutlar init, add, lock, sync, run ve tool. Bu komutlar, keşfedeceğimiz tüm kavramları göstermeme izin verecek.

Uygulama Projesi Oluşturma

uv init komutu, neredeyse tüm uv komutları gibi kendi kendini açıklayıcıdır, bir projeyi başlatmak için kullanılır.

Boş bir projeden başladığımız için, bu şu dosyaları oluşturacaktır: .gitignore, .python-version, hello.py, pyproject.toml ve README.md.

Resmi belgelere göre .python-version "projenin varsayılan Python sürümünü içerir" ve uv'ye projenin sanal ortamını oluştururken hangi Python sürümünü kullanacağını söyler.

Bu dosyalar arasında en önemlisi dosya pyproject.toml dosyasıdır.

pyproject.toml


pyproject.toml dosyası, proje meta verilerini, bağımlılıkları ve derleme gereksinimlerini bildirimsel bir şekilde belirtmek için kullanılan standartlaştırılmış bir yapılandırma dosyasıdır. Bu dosyayı derleme araçları dışındaki araçları ve bunların nasıl yapılandırıldığını eklemek için de kullanabilirsiniz.

Not: Projeniz için bir pyproject.toml dosyasına sahip olmak gerekli değildir ve derleme sistemlerini ve meta verileri belirtmenin başka yolları da vardır, ancak pyproject.toml, özellikle PEP 518 ve PEP 517'den sonra proje meta verileri söz konusu olduğunda Python projesi için standartlaştırılmış yapılandırma dosyası haline gelmiştir.

pyproject.toml'den önce, Python geliştiricileri paketlerini oluşturmak, kurmak ve dağıtmak için setup.py adlı çalıştırılabilir bir Python dosyası kullanıyordu. Ve bir Python projesi oluşturmanın ana iki yolu, standart kütüphanenin bir parçası olan distutils ve standart kütüphanenin bir parçası olmayan setuptools idi.

setuptools, distutils aracılığıyla standart kütüphane ile sağlananlardan daha fazla özellik sunan bir kütüphane olarak ortaya çıktı, ancak aynı zamanda birçok sorunla birlikte geldi. Distutils standart kütüphanenin bir parçası olduğu için, geliştiriciler projelerini oluşturmak için herhangi bir bağımlılığa (Python'un kendisi hariç) ihtiyaç duymuyorlardı. Ancak distutils oldukça basitti ve minimal ihtiyaçları olan projeler için yeterli olsa da, setuptools'un sağladığı daha fazla işlevsellik gerektiren karmaşık projeleri tatmin etmiyordu. Bu yüzden popülerliği arttı ve geliştiriciler setuptools'u tercih etti ve karşılaştığımız ilk sorunu görüyor musunuz? Şimdi projeyi derlemek veya kurmak için setuptools olan bir derleme bağımlılığımız var.

setup.py'nin distutils ile sınırlı kullanımların ötesine geçememesine neden olan şey, çalıştırılması için kod gerektirmesidir. Ve standart kütüphane tarafından desteklenmeyen ihtiyaçlarınız olduğu sürece, sorunlarla karşılaşacaksınız. Öte yandan, pyproject.toml, programın yazıldığı koddan bağımsız olarak herhangi bir aracın, herhangi bir derleme sisteminin okuyabileceği, ayrıştırabileceği ve yorumlayabileceği statik bir dosyadır. Bir pyproject.toml dosyasının içinde ne olduğunu keşfetmek için hiçbir şeye ihtiyacınız yoktur ve onu bu kadar harika yapan da budur. 

PEP 518 pyproject.toml için neden TOML formatı, isimlendirme, anlamsal bir sürüm anahtarının reddedilmesi gibi bazı kararlara değinmektedir.

Bir pyproject.toml dosyası ne içerir?

Bir pyproject.toml üç tablodan oluşabilir, [project], [build-system], ve [tool]. Bunların olması zorunlu değildir, ancak genellikle bir pyproject.toml en azından [project] tablosunu içerir. Örneğin basit "uv init" komutu bizim için bunu oluşturdu. init komutunun proje paketlemesi için gereken [build-system] tablosunu da otomatik olarak ekleyen seçenekler sunduğunu göreceğiz. tool]tablosuna gelince, diğer komutlar "uv add --dev" gibi veya test/diğer araçlarınız için yapılandırmalar belirlerken bu tablo üzerinde hareket eder.

PEP 518 ayrıca [tool] tablosunun arkasındaki amacı da belirtir. Üçüncü taraf araçların yapılandırılması için ayrılmıştır. Her aracın kendi alt tablosu tool.$İSİM olmalıdır. Örnek: [tool.uv] veya [tool.pydoc].

[project] Tablosu
PEP 621, [project] tablosu aracılığıyla bir projenin temel meta verilerinin nasıl beyan edileceğini belirtir.

Sadece iki zorunlu anahtar vardır, projenin adı olan "name" ve PEP 440'da belirtildiği gibi projenin sürümü olan "version". name statik olarak sağlanmalıdır, version ise dinamik olarak sağlanabilir, her iki durumda da gerekli bir anahtardır.
Bu PEP tarafından belirtilen isteğe bağlı anahtarlar şunlardır: 
  • description (açıklama), 
  • readme (beni oku açıklaması), 
  • requires-python (gerekli sürüm), 
  • license (lisans), 
  • authors/maintainers (geliştiriciler), 
  • keywords (anahtar sözcüler), 
  • entry-points, (uygulamanın çalıştıracağı kod), 
  • dependencies (gerekli bağımlılık paketleri)
  • optional-dependencies (örneğin --dev / geliştiriciler için tercihe bağlı paketler) 
  • dependency-groups (örneğin torch'un cpu veya gpu/cuda sürümü gibi bağımlılık grupları)

[tool] Tablosu
Örneğin pytest gibi bir test aracı kullanıyorsak alakalı yapılandırmaları bu dosyaya ekleyebiliriz. (Dahil edilecek dizin, görmezden gelinecek uyarılar.. gibi)

[build-system] Tablosu
Bir build-system (yapı sistemi), projenin nasıl paketleneceğini ve kurulacağını belirler. Projeler, pyproject.toml dosyasının [build-system] tablosunda bir derleme sistemi bildirip yapılandırabilir. Derleme meta verileri, bir derleme sisteminin derleme işlemi sırasında kullanacağı tüm bilgilerdir. Yapılandırma dosyaları, derleme seçenekleri, hangi dosyaların dahil edilip hangilerinin dahil edilmeyeceğine ilişkin talimatlar vb. olabilir. 
Not: Bu tablo eğer uygulamayı paketleyip pip ile yüklenebilir halde paketlemek istemiyorsak gerekli değildir.

uv init Parametreleri

--package
    Python paketi olarak oluşturulacak projeyi ayarlar. Proje için bir `[build-system]` tanımlar. Dağıtılabilir bir paket için uygundur. Bu, `--lib` kullanıldığında da varsayılan davranıştır.
 
--no-package
    Projeyi bir Python paketi olarak oluşturulacak şekilde ayarlamama. Proje için bir `[build-system]` içermez. Bu, `--app` kullanıldığında da varsayılan davranıştır.
-------
--app
    Bir uygulama için proje oluşturma. Bu, `--lib` istenmezse varsayılan davranıştır. Bu proje türü web sunucuları, komut dosyaları ve komut satırı arayüzleri içindir.

--lib
    Bir kütüphane için proje oluşturun. Kütüphane, bir Python paketi olarak oluşturulup dağıtılması amaçlanan bir projedir.


Örnek bir pyproject.toml dosyası (--app --no-package modu için)
[project]
name = "sg-project-template"
version = "0.1.0"
description = "Bu sglbl.com için hazırlanmış bir toml örneğidir."
readme = "README.md"
requires-python = ">=3.10"

dependencies = [
    "fastapi>=0.115.6",
]

[dependency-groups]
dev = [
    "jupyter>=1.1.1",
    "pytest>=8.3.3",
]

# filter dependencies warnings and future warnings
[tool.pytest.ini_options]
pythonpath = "."
filterwarnings = ["ignore::DeprecationWarning", "ignore::FutureWarning"]

Python Modül/Paket Terminolojisi


Module (Modül): "Python'da kodun yeniden kullanılabilirliğinin temel birimi". Ya bir .py dosyasıdır ve bu durumda saf modül olarak adlandırılır (merhaba dünya yazdıran bir işlev tanımlamak kadar basit bir şey bile olabilir) ya da düşük seviyeli bir dilde yazılmış bir şeydir (genellikle C çünkü CPython Python'un en yaygın uygulamasıdır) ve bu durumda bir uzantı modülü olarak adlandırılır.

Package (Paket): insanlar genellikle paket terimini hem "içe aktarma paketi" hem de "dağıtım paketi" hakkında konuşmak için kullanırlar.
Bir import package "içe aktarma paketi", python kodunuza aktarabileceğiniz bir şeydir. Modülleri veya özyinelemeli olarak diğer içe aktarma paketlerini içerir. Python'un modül isim alanını noktalı modül isimleriyle yapılandırmanın bir yoludur.
Bir distribution package "dağıtım paketi" yükleyebileceğiniz bir şeydir. Python içe aktarma paketlerini, modülleri ve diğer kaynak dosyalarını, sürüm numaraları ve bağımlılıklar gibi meta verilerle birlikte içeren sürümlü bir arşiv dosyasıdır. Genellikle pip install ile yüklediğiniz veya uv add'in yüklediği şeydir.
İnsanların her ikisi için de aynı "paket" terimini kullanmasına neden olan bir ilişki olduğu açıktır. Genellikle "pip install numpy" ile yüklersiniz ve sonra Python modüllerinizde "import numpy as np" kodunuza eklersiniz.

Not: Fakat import package'ler ve distribution package'ler her zaman aynı ada sahip değildir, Pillow dağıtım paketi (pip install pillow) PIL içe aktarma paketini (from PIL import Image) sağlar.

uv.lock Kilit Dosyası
Kilit dosyaları, bir ortamda yüklü olan paketlerin ve bağımlılıklarının tam olarak çözümlenmiş sürümlerini kaydeden dosyalardır. uv, uv.lock adlı platformlar arası (evrensel) kilit dosyası oluştururken Poetry gibi başka proje yönetimi uygulaması, poetry.lock adlı platformdan bağımsız bir kilit dosyası oluşturur ve pip-tools tarafından oluşturulan gibi sabitlenmiş sürümleri ve karmaları içeren bir requirements.txt dosyası da bir kilit dosyası olarak kabul edilebilir.

🚀uv pip-tools, pipx, poetry, pyenv, venv, virtualenv ve daha fazlasının yerini alan (en az 10 kat daha hızlı) tek bir araç olduğu için diğerlerinin detaylarına girmiyorum.

Reinforced Knowledge github sayfasını takip etmek için tıklayınız.


uv Kullanım/Komut Kılavuzu


UV'yi sisteme yükleyin
curl -LsSf https://astral.sh/uv/install.sh | sh
Bir Proje Oluşturma [--app (paketlenmeyecek uygulama) modu için]
# dizin adını proje olarak alır
uv init
# veya projenizi adlandırın ve proje dizinini açın
uv init myproject && cd myproject
# Not: Komutlar .git/ dizinini ve pyproject.toml dosyasını başlatır
.venv adıyla bir virtual environment (sanal proje ortamı) oluşturun
# Varsayılan ad: .venv
uv venv
# İsimlendirme ile: önerilmez
uv venv .venv2
# Ekstradan şunu çalıştırmanız gerekir: export UV_PROJECT_ENVIRONMENT=.venv2

# VEYA BELİRLİ BIR PYTHON SÜRÜMÜYLE DE OLUŞTURABİLİRSİNİZ.

# 1. Başka bir python sürümünü yükleyin:
uv python install 3.12.3
# 2. Sürümü proje kök dizinindeki bir dosyaya da sabitleyebilirsiniz.
uv python pin 3.12.3 # Varsayılan: pyproject.toml'yi karşılayan daha en yüksek sürüm
# 3. Bu sürümle .venv oluşturun
uv venv --python 3.12.3 
Projeye özgü python'ın bulunduğu sanal ortamı (virtual environment) etkinleştirme
source .venv/bin/activate
Dependency (Bağımlılık) paketi yükleyip toml'a ekleme
uv add pandas
# geliştirme bağımlılık grubuna ekleyin.
uv add --dev pytest jupyter  
uv add --group dev pytest jupyter
# toml yerine sadece aktif virtual environment'e ekleme
uv pip install numpy
# son sürüme güncelleme
uv pip install numpy --upgrade
PyPI - Python Paket İndeksi Listesinde olmayan bir paketi ekleme
# Örnek: Torch'un cpu sürümünü yükleme
uv add torch --index https://download.pytorch.org/whl/cpu --index-strategy unsafe-best-match
# pyproject.toml adresinden --no-deps ile yükleyin [Çakışan bağımlılıkları yüklemek için]
uv pip install -r pyproject.toml --index-strategy unsafe-best-match --no-deps

Bağımlılıkları kaldırın
uv remove loguru
uv remove --dev jupyter
Gereksinimleri pyproject.toml'daki tabloya bakıp yükleyin.
uv sync
uv sync --dev
# veya
uv pip install -r pyproject.toml
Yüklü paketleri listeleme
uv pip list
# Bağımlılık ağacı şeklinde görmek için
uv tree
pyproject.toml gereksinimlerini requirements.txt dosyasına kaydetme
uv pip compile pyproject.toml -o requirements.txt
requirements.txt gereksinimlerini pyproject.toml dosyasına kaydetme
uv add -r requirements.txt
# Dosya pypi'dan olmayan ekstra url içeriyorsa
uv add -r requirements.txt --index https://download.pytorch.org/whl/cpu --index-strategy unsafe-best-match
Proje ortamında bir python dosyası çalıştırma (pyproject.toml'a göre)
uv run main.py
Araçları projenizin içine yüklemeden çalıştırma (uvx)
# Örneğin pytest'i çalıştırmak için
uvx pytest
# veya uv tool komutu ile
uv tool run pytest

Paylaş:

Blogger Tema Ayarı

 Blogger tema ayarlarımı kendi bloglarında kullanmak isteyenler için adımlar:


1. Bu sitedeki xml kodunu indirin/kopyalayın ve Tema ayarlarındaki "HTML'i Düzenle" bölümüne yapıştırın.

view-source:https://sglbl.github.io/portfolio/blog/bloggerTheme2024.xml

2. Tema ayarlarındaki "Mobil Ayarları" kısmından "Masaüstü" seçeneğini seçin. 

3. Düzen Kısmına gelin ve widgetları şu şekilde ekleyin:


Gadget Ayarları

4. Logo eklemek için en üstteki Sayfa üstbilgisi widget'ını şu seçeneklerle yapılandırın.

Başlık yazısı yerine logo seçecekseniz görselin soldan padding içerdiğinden ve 322x135 olduğundan emin olun.


5. Popüler yayınlar widget'ını isteğinize göre yapılandırın.

6. Blog kayıtları widget'ını yapılandırın.

7. Blog Arşivi Gadget'ını yapılandırın.
8. Öne Çıkan Yayın Gadget'ını yapılandırın.

9. Ayarlar bölümünden arama Motoru, www yönlendirmesi ve güvenli https yönlendirmesi için ssl seçeneklerini aktifleştirin. 
Eğer GoDaddy vb. domain sitesi üzerinden domain satın almışsanız özel alan adınızı ekleyin.


10. Yayınlar ayarlarından "Resim Lightbox" seçeneğini aktifleştirin.

11. Arama açıklamalarında yardımcı olması için Meta Etiketlerini ekleyin.
İşlemler bu kadar, teşekkürler.





Paylaş:

WSL için Github'a SSH Yetkisi Verme

 WSL2 üzerinde git ile Github'daki gizli repolar üzerinde clone/push/pull işlemleri yapabilmek için nasıl SSH Yetkisi verileceğini göstereceğim. 

1. İlk olarak WSL terminalinizi açın ve aşağıdaki komutu yapıştırın.

cd ~/.ssh && ssh-keygen

2. Dosyayı hangi isimle kaydetmek istediğiniz sorulacak. Boş bırakın, varsayılan olarak id_rsa.pub şeklinde kaydedilecek. Sonrasında ssh bağlantısı için şifre oluşturmanız istenecek. Şifrenizi girin.

3. Bu komutu çalıştırın. SSH anahtarınız panoya kopyalanacaktır.

cat id_rsa.pub | clip.exe

4. Github'da https://github.com/settings/keys sayfasını açın ve SSH key'ini hesabınıza herhangi bir isimle ekleyin.



Paylaş:

Gradio'da Başlığa Logo Ekleme

 Bu yazıda Gradio'da title kısmına nasıl logo ekleyebileceğini göstereceğim. 


1.Yol: Gradio Blocks ile:

import gradio as gr

with gr.Blocks() as demo:
  with gr.Row():
    with gr.Column(scale=1):
        None
    with gr.Column(scale=1, variant="default"):
        gr.HTML("""<div id='output_image' style='display:block; 
                  margin-left: auto; margin-right: auto;
                  align-items: center; justify-content: center;'></div>""")
        result = gr.Image("logo.png",
                        label=None, show_label=False, height=150, elem_id="output_image",
                        show_download_button=False, container=False)
    with gr.Column(scale=1):
        None

2.Yol: Gradio Interface ile:

import base64
import gradio as gr

with open("logo.png", "rb") as f:
    logo_base64 = base64.b64encode(f.read()).decode()
title_with_logo = f"""YOUR TITLE
                    <img src="data:image/jpeg;base64,{logo_base64}" 
                    width="125" style='display:block; 
                    margin-left: auto; margin-right: auto; padding-top: 1ch; 
                    align-items: center; justify-content: center;'>"""  

interface = gr.Interface(
    title=title_with_logo,
    fn=your_result_function,
    inputs=gr.Image(),
    outputs='image',
)

interface.launch()
Paylaş:

Python Farklı Klasörden Dosya / Fonksiyon Çağırmak

Bu yazıda Python'da aynı klasör içinde bulunmayan farklı bir klasördeki script'i nasıl çağırıp kullanabileceğinizi göstereceğim.

Şöyle klasör yapısına sahip olduğunuzu düşünün:

root/
   serve/
       - app.py
   src/
       - utils.py
Amacımız app.py dosyasından utils.py dosyasında bulunan fonksiyonlara erişmek.
Bunun için ilk olarak app.py dosyasında utils'i şu şekilde import edin:

from src.utils import function
veya
from src import utils

Normalde root klasörü üzerinden python serve/app.py şeklinde çalıştırmak yerine Python'daki kütüphane modüllerini script olarak çalıştırmaya yarayan -m parametresini kullanın.

python -m serve.app

Modül olarak çalıştırmak, aynı alt klasör içerinde bulunmayan bir python dosyasını kullanmanızı sağlayacaktır.


Paylaş:

VSCode'da __pycache__ Dosyalarını Gizleme

Bu yazıda otomatik olarak oluşan Pycache dosyalarını Visual Studio Code üzerinden nasıl gizlenebileceğini göstereceğim.


Örneğin B.py dosyası A.py dosyasını import ediyorsa bu A.pyc derlenmiş bytecode dosyasının oluşmasına sebep olacaktır.

1. İlk olarak Ctrl , ile VSCode ayarlar ekranını açın. 

2. Üstte Arama çubuğuna Files: Exclude yazın.

3. Add pattern'e tıklayıp bu yazıyı ekleyin: **/__pycache__ 


4. Bu işlemden sonra  VSCode'un explorer bölümünde pycache dosyaları gizlenmiş olacaktır.



Paylaş:

İspanya 3 Ay Üstü Erasmus Stajı - Vize Rehberi

Bu yazıda 3 ay üstü İspanya Stajı vizesi  ile ilgili gereken belgeler hakkında bilgi vereceğim.


Stajınızı özel kurumda yapıyorsanız 3 ayın üstündeki staj vizesinde 2 aşama var. İlk olarak şirket sizin adınıza online olarak oturum iznine başvuruyor. Oturum izniniz çıkınca siz o belgeyle staj vizesine başvuruyorsunuz.

Oturum İzni Kağıdı (Authorization) için:

Şirketteki yasal temsilcinin, bulunduğu ilin yabancılar ofisine Sede Mercurio sitesi üzerinden online başvuru yapması gerekmektedir. 

Başvuru yapılması gereken izin belgesi Autorización de Residencia Inicial para Prácticas Convenio de prácticas no laborales (DA 18ª Ley 14/2013) ismiyle geçiyor. 

Oturum izni Belgesi ile alakalı Resmi İspanyolca Sayfa: Link

Kabul aldığınız şirketin oturum izni alma konusunda bilgisi yoksa şirkete sayfa linkini verebilirsiniz.

Not: Oturum izni için gereken belgelerin Türkçeden İspanyolcaya çevirilerini Kadıköy'deki Cenk Terüme'de, çevirilen belgelerin noter onaylarını Kadıköy 1 nolu noterde, çevirilen begelerin apostillerini (La Haye olarak da geçiyor) Kadıköy kaymakamlığında yaptırdım. Çeviriler 450 TL, noter onayları ~ 900 TL tuttu.

Belgeler:

Student certificate (translated + notarized + apostilled): Okulun öğrenci işlerinden Türkçe ve T.C. ibareli mühürlü olarak aldım. 

Proof of financing 1 (Grant certificate translated + notarized + apostilled): Hibe yazısını Erasmus ofisinden Türkçe olarak alıp öğrenci işlerinde T.C. ibareli mühürle mühürlettim.

Proof of financing 2 (Bank statement translated + notarized + apostilled): Bankadan son miktarı gösterir belgeyi imza sirküleri ile beraber aldım. Hibem yaklaşık 600 Euro olan İspanya asgari yaşam gelir düzeyi IPREM'in üstünde olduğu için başvuru sırasında bu belgeyi kullanıp kullanmadıklarından emin değilim.

Criminal Record + apostille: Adli sicil kaydını adliyeden ispanyolca olarak alıp orada apostillettim.

ASISA Insurance: 3 ayın üstü vizelerde ispanyol şirket istendiği için mesuliyet + kaza da içeren sağlık sigortasını Universitas Mundi web sitesinden Universitas Salud - ASISA'da yaptırdım. 5 ay için 156 Euro tuttu. Ödemeyi yaptıktan sonra sitede altta Sağlık Kartı, Sigorta Faturası, İngilizce ve  İspanyolca Sigorta indirme bağlantıları çıktı. Oradan pdfleri indirdim. Ayrıca mail olarak da ilettiler.

Passport (All pages scanned): Pasaportun tüm sayfalarını taratıp pdf haline getirdim.

Acceptance Letter: Şirketten gelen ispanyolca kabul belgesi 

Learning Agreement: İngilizce öğrenim anlaşması. Resmi sayfada tüm belgelerin İspanyolcaya çevrilmesi gerektiği yazıyordu fakat ben bu belgeyi çevirmedim ve kabul edildi.

Ex-04 Formulario form: 1. kısmı benim doldurduğum, geriye kalanında gerekli bilgileri şirketin temsilcisinin doldurduğu Staj amaçlı oturma izni başvurusu bilgi formu. Pdf için tıklayın.

- Benim oturma iznim yaklaşık 3 haftada çıktı. Şirket oturum izni belgesini pdf olarak bana iletti. Ayrıca  oturum izni belgesinde bana NIE (Yabancı Kimlik Numarası) da verildi.

- Başvuru takibini https://sede.administracionespublicas.gob.es/infoext2/index.html sitesi üzerinden Entrada Con Formulario bölümü - ID de Expediente ile yaptım.

İstanbul Konsolosluğu Vize (PCA) İçin:

Staj anlaşması ile 180 güne kadar olan vize türü PCA, staj kontratı ile 180 günden fazla olan vize türü ise PCP olarak geçmektedir.

Konsolosluk Staj Vizesi İspanyolca Web Sayfası: https://exteriores.gob.es/Consulados/estambul/tr

1.D Tipi Ulusal Vize Başvuru Formu: 26 numaralı bölüm yerine 25'in doldurulması gerekiyor. Çıkarıp elle doldurdum. Pdf için tıklayın.

2.Oturum İzni Kağıdı (authorization): Şirketin attığı pdf'i çıkarıp götürdüm.

3.Pasaport ve pasaport fotokopisi: Sadece dolu sayfaların fotokopisini çektim.

4.TC Kimlik fotokopisi: A4 kağıdında

5.İkametgah Belgesi: E-Devlet üzerinden çıkardım.

6.Nüfus Kayıt Örneği: Tam Vukuatlı olarak E-Devlet üzerinden çıkardım.

7.Kabul Mektubu: Şirketten alınan kabul yazısı.

8.Öğrenim Anlaşması

9.Öğrenci BelgesiE-Devlet üzerinden çıkardım.

10.Sağlık Sigortası: 1.sayfa ve faturanın çıktısını aldım.

11.Apostilli adli sicil kaydı: Önerim oturum izni için hazırladığınız belgenin fotokopisini de almanız.

12.Biyometrik Fotoğraf: 3x4 arka planı beyaz olan fotoğraf

13.Hibe Yazısı: Oturum izni için çıkardığım Türkçe ve ispanyolca noter onaylı apostilli çevirili belgeyi götürdüm. Normalde ingilizce alıyoruz dediler ama yine de kabul ettiler. Hibe yazısı dışında sirkülerli banka hesap dökümünü de götürdüm. Zaten her ay 750 Euro alacağımı açıklayan hibe yazısı olduğu için almadılar.

Not 1: Ayrıca uçak bileti, rezervasyonu, sponsor veya konaklama belgesi istenmedi. Konaklamayı Spotahome Accommadation sitesi üzerinden hallettim.

Not 2: Vize randevusunu Bls üzerinden aldım. Hibeli staj olduğu için 85 dolar vize ücretini istemediler.

Not 3: Benim vizem 5 aylıktı. 6 ayın üstündeki PCP tipi vizelerde bildiğim kadarıyla ayrıca tam teşeküllü sağlık raporu da istenmektedir.

Not 4: Güncelleme: Benim vizemi aldığım Mayıs 2023'ten sonra staj vize başvuru işlemleri konsolosluktan farklı belgeler gerektiren BLS'ye taşınmış. Güncel detaylar için BLS veya Konsolosluğu aramanızı öneririm.

Vizem yaklaşık 45 günde çıktı. Telefonla arayıp hafta içi saat 13.30-14.30 arasında konsolosluğa gelip alabileceğimi söylediler.

Paylaş:

En iyi Video İndirme Eklentileri

Youtube'da web tarayıcısında video linkinin başına ss harflerini ekleyip videoları indirebilirsiniz. (örneğin https://www.ssyoutube.com/watch?v=orneklink 'te olduğu gibi) 

Peki dizi/film siteleri için ne gibi eklentiler kullanmalıyız?

Chrome ve Opera gibi Chromium tabanlı tarayıcılarda kullanabileceğiniz 2 eklentiyi göstereceğim.

1. Video Downloader Prime

Bu eklenti web sitesinde mp4 formatında saklanan videoları indirmeyi sağlıyor. Videoyu başlattıktan sonra yapboz/küp ikonuna, sonrasında eklenti ikonuna tıklayın. İndirmek istediğiniz videoya uygun boyuta sahip videoyu indirin. 


Fakat günümüzde çoğu video mp4 olarak değil, HLS (HTTP Live Stream) isimli protokolüyle saklanmaktadır. 

2. HLS STREAM RECORDER

Hls olarak saklanan videoları bulup mp4 olarak indirmenize olanak sağlayan bu eklentide 2 mod var: Normal ve Capture. 

Capture modu, en kötü durumda normal modda bulunamayan videoları, video devam ederken kaydetmeye olanak sağlamaktadır.

Normal mod içinse ndirme yapmak istediğiniz sitedeki videoyu başlatın ve öncelikle yapboz/küp ikonuna, sonrasında eklenti ikonuna tıklayın.


Açılan pencerede video bulunursa, video çözünürlüğü ve videoda indirilen parça sayısı/boyutu çıkacak. Tamamlandıktan sonra Save butonuna basıp bilgisayarınıza kaydedebilirsiniz.


Not: İndirme işlemi sırasında sekme/pencere değiştirebilirsiniz fakat indirme bitene kadar sekmeyi tamamen kapatmayın.


Paylaş:

VSCode Server'ı Kapalı Ağdaki Uzak Bilgisayarda Kurma

VSCode'la uzak ağdaki bilgisayarda kod yazmak için 'Remote - SSH' eklentisini kullanabiliriz. Fakat Remote SSH eklentisi, eğer 2 bilgisayar da private network üzerinde ise bu problem yaratacaktır. 

 

Hatanın nedeni Vscode'un hedef klasör / destination folder'a yüklemeye çalıştığı vscode-server dosyasını  internete bağlı olmaması nedeniyle aktaraması. Bu sorunun çözümü için internete bağlı olan 3.bir cihaza ihtiyaç var.

Vscode'da hata mesajı geldiği zaman alttan "Output/Çıktı" sekmesini açın. O sekmedeki "destFolder" değerini bulun.


destFolder değerinin en sonunda bulunan commit ID'si, vscode-server'ı hedef cihaza yüklemeye çalışırkenki indirmeye çalıştığı vscode-server'a ait. 

Bunu indirmek için internete bağlı olan 3.cihazda aşağıdaki linki girin. {COMMIT_ID} yazan kısmı hata mesajındaki commit ID'si ile değiştirin. 

https://update.code.visualstudio.com/commit:{COMMIT_ID}/server-linux-x64/stable

Örneğin;

"https://update.code.visualstudio.com/commit:b8a2f34jd575ef708fb88b6/server-linux-x64/stable" gibi.

İnternetli bilgisayarda indirilen dosyayı internetsiz uzak bilgisayardaki ~/.vscode-server/bin/ klasörüne taşıyın. 

Bunu yapmak için remote/uzak cihazda boş bir terminal ekranı açıp şu 2 komutu yazabilirsiniz; cd ~/.vscode-server/bin/{COMMIT_IDniz} tar -xvzf ~/vscode-server-linux-x64.tar.gz --strip-components 1

Bu sayede vscode-server hedef cihazda yüklenmiş olduğu için Remote SSH eklentisi istediğimiz gibi çalışacaktır. 

Paylaş:

Ara