Neler yeni

Foruma hoş geldin, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Türkiye'nin İlk ve tek FiveM forum adresi

Forum adresimize hoş geldin FiveMTürk olarak amacımız siz değerli kullanıcılarımıza en aktif fikir ve paylaşım platformu sunmak bir yana en güvenilir şekilde alışveriş yapabileceğiniz bir platform sunmaktır.
DF DF
DF DF
DF DF

Rehber Yapılandırma dosyası Nasıl Yazılır?

alpertrnnn1

?????????
FT Kullanıcı
Katılım
3 yıl 9 ay 11 gün
Mesajlar
1,202
PYTHON YAPILANDIRMA DOSYASI NASIL YAZILIR?

DİSCORD ADRESİM SLEEP?#4478

Herhangi bir yapılandırma dosyası yazmadan önce, neden harici bir dosyaya ihtiyacımız olduğunu kendimize sormalıyız. Bunları kodda sabit yapamaz mıyız? Aslında ünlü bu soruyu bizim için cevapladı:
Bir uygulamanın tüm yapılandırmasının koddan doğru bir şekilde çıkarılıp çıkarılmadığına dair bir turnusol testi, kod tabanının herhangi bir kimlik bilgisinden ödün vermeden herhangi bir anda açık kaynak yapılıp yapılamayacağıdır. “Yapılandırma” Bu tanım olmadığını Not değil iç uygulama gibi yapılandırma içerir config/routes.rbRails, ya da nasıl içinde . Bu tür bir yapılandırma, dağıtımlar arasında değişiklik göstermez ve bu nedenle en iyi şekilde kodda yapılır.
Veritabanı kimlik bilgileri gibi ortama bağımlı parametrelerin harici dosyada yer almasını önerir. Aksi takdirde, koddaki normal sabitlerdir. Çokça gördüğüm başka bir kullanım durumu, dinamik değişkenleri harici dosyada saklamaktır, örneğin bir kara liste veya beyaz liste. Ancak belirli bir aralıktaki bir sayı (örneğin zaman aşımı) veya bazı ücretsiz metinler de olabilir. Bu değişkenler muhtemelen her ortamda aynı olabilir, ancak yapılandırma dosyası yazılımı çok daha esnek ve düzenlemeyi kolaylaştırır. Ancak, çok fazla büyürse, bunun yerine bir veritabanına taşımayı düşünebiliriz.

Yapılandırma dosyasının hangi formatını kullanmalıyım?
Aslında, kod bunları okuyup ayrıştırabildiği sürece, yapılandırma dosyasının biçiminde herhangi bir kısıtlama yoktur. Ancak bazı iyi uygulamalar var.
En yaygın ve standartlaştırılmış formatlar YAML, JSON, TOML ve INI'dir. İyi bir yapılandırma dosyası en az şu 3 kriteri karşılamalıdır:
  1. Okuması ve düzenlemesi kolay : Metin tabanlı olmalı ve anlaşılması kolay bir şekilde yapılandırılmış olmalıdır. Geliştirici olmayanlar bile okuyabilmelidir.
  2. Yorumlara izin ver: Yapılandırma dosyası, yalnızca geliştiriciler tarafından okunacak bir şey değildir. Geliştirici olmayanların süreci anlamaya ve yazılım davranışını değiştirmeye çalışması üretimde son derece önemlidir. Yorum yazmak, belirli şeyleri hızlı bir şekilde açıklamanın bir yoludur, böylece yapılandırma dosyasını daha anlamlı hale getirir.
  3. Dağıtımı kolay: Yapılandırma dosyası tüm işletim sistemleri ve ortamlar tarafından kabul edilmelidir. Ayrıca bir CDaaS ardışık düzeni aracılığıyla sunucuya kolayca gönderilmelidir.
Belki hala hangisinin daha iyi olduğunu bilmiyorsunuzdur. Ancak bunu Python bağlamında düşünürseniz, cevap YAML veya INI olacaktır. YAML ve INI, çoğu Python programı ve paketi tarafından kabul edilmektedir. INI, hiyerarşinin yalnızca 1 seviyesi ile muhtemelen en basit çözümdür. Bununla birlikte, INI'de veri türü yoktur, her şey bir dizge olarak kodlanmıştır.

YAML'deki aynı konfigürasyon buna benzer. Gördüğünüz gibi, YAML iç içe geçmiş yapıları oldukça iyi destekliyor (JSON gibi). Ayrıca YAML, dize, tamsayı, çift, mantıksal, liste, sözlük vb. Bazı veri türlerini doğal olarak kodlar.

JSON, YAML'ye çok benzer ve son derece popülerdir, ancak JSON'a yorum eklemek mümkün değildir. JSON'u program içinde dahili yapılandırma için çok kullanıyorum, ancak yapılandırmayı başkalarıyla paylaşmak istediğimde kullanmıyorum.

Öte yandan TOML, INI'ye benzer, ancak daha fazla veri türünü destekler ve iç içe yapılar için tanımlanmış sözdizimine sahiptir. Pip veya şiir gibi Python paket yönetimleri tarafından çokça kullanılır. Ancak yapılandırma dosyasında çok fazla iç içe geçmiş yapı varsa, YAML daha iyi bir seçimdir. Aşağıdaki dosya INI'ye benzer, ancak her dize değerinin tırnak işaretleri vardır.

Şimdiye kadar NEDEN ve NEDİR açıkladım. Sonraki bölümlerde size NASIL'ı göstereceğim.

Seçenek1: YAML / JSON - Yalnızca harici bir dosyayı okuyun
Her zamanki gibi, en temel yaklaşımdan başlıyoruz, yani sadece harici bir dosya oluşturmak ve onu okumak. Python, YAML ve JSON dosyalarını ayrıştırmak için yerleşik paketlere sahiptir. Aşağıdaki koddan da görebileceğiniz gibi, aslında aynı dict nesnesini döndürürler, dolayısıyla öznitelik erişimi her iki dosya için de aynı olacaktır.
Okuyun
nedeniyle , yapılandırma dosyasında kod enjeksiyonunu önlemek yaml.safe_load()yerine kullanılması önerilir yaml.load().

Doğrulama
Her iki paket de var olmayan bir dosya için FileNotFoundError oluşturacaktır. YAML, YAML olmayan bir dosya ve geçersiz bir YAML dosyası için farklı istisnalar atarken, JSON JSONDecoderErrorher iki hatayı da atar .


Seçenek2: Cofigureparser - Python yerleşik paketi
Bundan sonra, konfigürasyon yönetimi için tasarlanmış paketleri tanıtacağım. Python yerleşik ile paketin Biz başlatın: .
Configureparser, öncelikle INI dosyalarını okumak ve yazmak için kullanılır, ancak aynı zamanda bir girdi olarak sözlüğü ve yinelenebilir dosya nesnesini de destekler. Her INI dosyası, birden çok anahtar, değer çiftinin bulunduğu birden çok bölümden oluşur. Alanlara erişimin bir örneği aşağıda verilmiştir.
Okuyun

Configureparser, yapılandırma dosyasındaki veri türlerini tahmin etmez, bu nedenle her yapılandırma bir dize olarak saklanır. Ancak dizeyi doğru veri türüne dönüştürmek için birkaç yöntem sağlar. En ilginç olanı Boolean tipidir çünkü Boolean değerlerini den tanıyabilir .
Daha önce de belirtildiği gibi, kullanarak bir sözlükten read_dict()veya kullanan bir dizeden read_string()veya kullanarak yinelenebilir bir dosya nesnesi okuyabilir read_file().

Doğrulama
Configureparser'ın doğrulanması YAML ve JSON kadar kolay değildir. İlk olarak, dosya yoksa bir FileNotFoundError oluşturmaz, bunun yerine, bir anahtara erişmeye çalıştığında bir KeyError oluşturur.
Ayrıca, paket girinti hatasını "yok sayar". Aşağıdaki örnekte olduğu gibi, "DEBUG" dan önce fazladan bir sekmeniz veya boşluk varsa, hem ÇEVRE hem de DEBUG için yanlış bir değer alırsınız.
Yine de, Configureparser birden çok hata için ParserError döndürebilir (son test senaryosuna bakın). Bu, sorunları tek seferde çözmemize yardımcı olur.


Seçenek3: python-dotenv - Yapılandırmaları ortam değişkenleri olarak yapın
Şimdi üçüncü taraf kitaplıklara geçiyoruz. Şimdiye kadar, aslında bir tür yapılandırma dosyasını kaçırdım .env. .envDosya içindeki değişkenler, tarafından ortam değişkenleri olarak yüklenecek ve bunlara erişilebilecektir os.getenv.
Bir .envdosya temelde buna benzer. Varsayılan yol, projenizin kök klasörüdür.
ORTAM = test
DEBUG = doğru
KULLANICIADI = xiaoxu
ŞİFRE = xiaoxu
HOST = 127.0.0.1
PORT = 5432
Okuyun
Kullanımı son derece kolaydır. Parametre ile ortamdaki mevcut değişkeni geçersiz kılmak isteyip istemediğinize karar verebilirsiniz override.

Doğrulama
Ancak, dosyayı python-dotenvdoğrulamaz .env. Bunun .envgibi bir dosyanız varsa ve DEBUG'a erişmek istiyorsanız, dönüş olarak istisnasız olarak Hiçbiri alacaksınız.
# .Env
ÇEVRE = test
DEBUG# load.py
load_dotenv ()
print (os.environ.keys () 'de' DEBUG ')
# False

Seçenek4: Dynaconf - Python için güçlü ayar yapılandırması
, çoklu dosya formatlarını destekleyen Python için çok güçlü bir ayar yapılandırmasıdır: yaml, json, ini, toml ve python. .envDosyayı otomatik olarak yükleyebilir ve özel doğrulama kurallarını destekler. Kısacası, önceki 3 seçenekten hemen hemen tüm işlevleri kapsar ve hatta bunun ötesine geçer. Örneğin, şifrelenmiş bir parola saklayabilir ve parolanın şifresini çözmek için kullanabilirsiniz. Ayrıca Flask, Django ve Pytest ile güzel bir şekilde entegre edilmiştir. Bu makaledeki tüm işlevlerden bahsetmeyeceğim, daha fazla ayrıntı için lütfen bakın .
Okuyun

39164

Dynaconf, .envtüm ayarlar dosyasını bulmak ve settingsnesneyi alanlarla doldurmak için kullanır . 2 ayar dosyası aynı değişkene sahipse, değer en son ayarlar dosyası tarafından geçersiz kılınır.

Doğrulama
Benim için ilginç özelliklerden biri de özel . Daha önce de belirtildiği gibi, Configureparser INI dosyasını yeterince doğrulamaz, ancak bu dynaconf içinde sağlanabilir. Bu örnekte, dosyada belirli anahtarların olup olmadığını ve belirli anahtarların doğru değere sahip olup olmadığını kontrol ediyorum. Çoklu veri tiplerini destekleyen YAML veya TOML dosyasından okursanız, bir sayının belirli bir aralıkta olup olmadığını bile kontrol edebilirsiniz.

Pytest ile entegrasyon
Bir başka ilginç özellik de pytest ile entegrasyon. Ünite testi ayarları normalde diğer ortamlardan farklıdır. Sen kullanabilirsiniz FORCE_ENV_FOR_DYNACONFuygulama ayarlarınız dosyasında farklı bir bölüm okuyalım veya kullanmak üzere monkeypatchayarlar dosyasında bir speific anahtar ve değer çiftini değiştirin.

Çalışma zamanı sırasında yapılandırmayı yenileyin
Dynaconf ayrıca reload()tüm yükleyicileri temizleyen ve çalıştıran destekler . Bu, uygulamanın çalışma süresi sırasında ayarlar dosyasını yeniden yüklemesini istiyorsanız yararlıdır. Örneğin, uygulama, yapılandırma dosyası açıldığında ve değiştirildiğinde ayarları otomatik olarak yeniden yüklemelidir.

Seçenek5: Hydra - Dinamik olarak hiyerarşik bir konfigürasyon oluşturarak geliştirmeyi basitleştirin
Son seçenek, bir dosya yükleyiciden çok daha fazlasıdır. , karmaşık uygulamaları zarif bir şekilde yapılandırmak için Facebook tarafından geliştirilmiş bir çerçevedir.
Hydra, yapılandırma dosyalarını okumanın, yazmanın ve doğrulamanın yanı sıra, çoklu yapılandırma dosyalarının yönetimini basitleştirmek, komut satırı arabirimi aracılığıyla geçersiz kılmak, her çalışmanın anlık görüntüsünü oluşturmak vb. İçin bir strateji geliştirir.
Okuyun
İşte hidranın temel kullanımı. +APP.NAMEyapılandırmaya yeni bir alan eklemek veya APP.NAME=hydra1.1mevcut bir alanı geçersiz kılmak anlamına gelir .

Doğrulama
Hydra, tür denetimi ve salt okunur alanlar gibi temel doğrulamaları gerçekleştirmek için @dataclass ile güzel bir şekilde entegre olur. Ancak, __post_init__ anlatıldığı gibi gelişmiş değer kontrolü yöntemini desteklemiyor .

Yapılandırma grubu
Hydra, adı verilen bir kavram sunar . Fikir, yapılandırmaları aynı türden gruplamak ve yürütme sırasında bunlardan birini seçmektir. Örneğin, Postgres için bir yapılandırmaya ve MySQL için başka bir yapılandırmaya sahip bir grup "veritabanınız" olabilir.
Daha karmaşık hale geldiğinde, programınızda buna benzer bir düzen olabilir (Hydra belgelerinden bir örnek)

ve karşılaştırmaya farklı kombinasyonları ile başvurunuzu istiyorum db, schemave uio zaman çalıştırabilir:
python my_app.py db = postgresql schema = school.yaml
Daha …
Hydra destekleyen ile --multirunfarklı yapılandırma dosyaları ile aynı anda birden fazla işi çalıştırır. Örneğin, önceki örnek için şunu çalıştırabiliriz:
python my_app.py schema = depo, destek, okul db = mysql, postgresql -m
Ardından temelde aynı anda 6 işe başlarsınız
[2019-10-01 14: 44: 16,254] - Yerel olarak 6 iş başlatılıyor
[2019-10-01 14: 44: 16,254] - Süpürme çıktısı dir: multirun / 2019-10-01 / 14-44-16
[2019- 10-01 14: 44: 16,254] - # 0: şema = depo db = mysql
[2019-10-01 14: 44: 16,321] - # 1: şema = depo db = postgresql
[2019-10-01 14:44 : 16,390] - # 2: şema = destek db = mysql
[2019-10-01 14: 44: 16,458] - # 3: şema = destek db = postgresql
[2019-10-01 14: 44: 16,527] - # 4 : şema = okul db = mysql
[2019-10-01 14: 44: 16,602] - # 5: şema = okul db = postgresql

EKSTRA;

Yazılım Geliştirici Neden BLOG TUTMALIDIR

Yazılım geliştiren kimseler oldukça fazla teknik bilgiye sahip, çok karmaşık sistemleri öğrenmiş çoğunluğu mühendis kişilerdir. Blog tutmak biz yazılım geliştiricilere iş başvuruları sırasında önemli bir referanstır. Bir insan hem kendini geliştiriyor hem işini yapıyor hemde bunu insanlarla paylaşıyorsa gerçekten bu durum dikkate değerdir. Diğer bir açıdan; blog tutan yazılım geliştirici diğer insanlara faydalı olur, sonuçta hepimiz teknik blogları takip ederek, kitap okuyarak, açık kaynak projeleri inceleyerek kendimizi ilerletiyoruz ve tüm bu değerleri üreten insanlara vefa borcumuz var.

İş fırsatları, üzerinde önemle durulması gereken bir nokta. Benim birkaç tanıdığım blog tutmaları sayesinde yabancı şirketler tarafından keşfedilip iş teklifleri aldılar. Şuan birisi Sony Avrupa’da önemli bir noktada çalışıyor, bir diğeri Mountain View, California’da Mozilla’da çalışıyor. Örnekleri çok. Tabi ki bu arkaşlar İngilizce blog tutuyorlardı. Neden İngilizce bu kadar önemli, bu bir sonraki yazının konusu ama eğer bütün dünyaya hitap etmek istiyorsanız İngilizce yazmalısınız.

Düşünün, Dubai’li bir şirket. Nasıl Türkiye’de işinde çok iyi bir mühendis olduğunu keşfeder ve ona iş teklifi yaparak transfer etmeye çalışır ? Tabi ki aynı dili konuşurlarsa. İngilizce iş dünyasının ortak dili olarak tam da bu işi yapar, size prestij kazandırır.

Blog tutmak bilgilerinizin taze kalması ve tekrar yapmanız açısından önemlidir. Hatta hiç bilmediğiniz bir dili veya frameworkü öğrenip sonra bununla ilgili blog yazmanın size büyük katkısı olacaktır.

Neden İngilizce blog tutmak daha iyidir ?

Çünkü Türkiye’de belli bir sayıda geliştirici var ama dünyada milyonlarca geliştirici var. Türkiye’deki teknoloji şirketlerinin yüzlerce kat daha büyükleri diğer ülkelerde çalışıyorlar. Örneğin Yook Mook Kim tarafından tutulan İngilizce Java blogu(mkyong.com) 2015’de 1.5 milyon ziyaret almış. Bir gün Ankara Üniversitesi’nde Richard Stallman ile sohbet etme fırsatı buldum, kendisine çok yazarlı Türkçe bir özgür yazılım blogu projem olduğunu ilettim. Bana cevabı aynen şuydu; “Yazılım geliştiriciler zaten İngilizce biliyorlar, bilmek zorundalar, Türkçe olması için bir sebep yok.”. Evet, o gün Türkiye’de gerçekten iyi İngilizce bilen yazılımcı oranını kendisiyle paylaşmaya utanmıştım. Keza bizim halen Türkçe mühendislik eğitimi veren üniversitelerimiz olduğu gerçeğini de.

Eğer imkanınız varsa iki dilli blog tutmak en güzelidir. İyi günler!
 
Son düzenleme:
Başarılı Anlatım, Ellerine Sağlık.
Umarım merak edenlerin işini görür.
 

Ekli dosyalar

  • 1609399458161.png
    1609399458161.png
    1.4 KB · Görüntüleme: 1
Araya eklemeliyim


Yazılım Geliştirici Neden Blog Tutmalıdır ?


Yazılım geliştiren kimseler oldukça fazla teknik bilgiye sahip, çok karmaşık sistemleri öğrenmiş çoğunluğu mühendis kişilerdir. Blog tutmak biz yazılım geliştiricilere iş başvuruları sırasında önemli bir referanstır. Bir insan hem kendini geliştiriyor hem işini yapıyor hemde bunu insanlarla paylaşıyorsa gerçekten bu durum dikkate değerdir. Diğer bir açıdan; blog tutan yazılım geliştirici diğer insanlara faydalı olur, sonuçta hepimiz teknik blogları takip ederek, kitap okuyarak, açık kaynak projeleri inceleyerek kendimizi ilerletiyoruz ve tüm bu değerleri üreten insanlara vefa borcumuz var.

İş fırsatları, üzerinde önemle durulması gereken bir nokta. Benim birkaç tanıdığım blog tutmaları sayesinde yabancı şirketler tarafından keşfedilip iş teklifleri aldılar. Şuan birisi Sony Avrupa’da önemli bir noktada çalışıyor, bir diğeri Mountain View, California’da Mozilla’da çalışıyor. Örnekleri çok. Tabi ki bu arkaşlar İngilizce blog tutuyorlardı. Neden İngilizce bu kadar önemli, bu bir sonraki yazının konusu ama eğer bütün dünyaya hitap etmek istiyorsanız İngilizce yazmalısınız.

Düşünün, Dubai’li bir şirket. Nasıl Türkiye’de işinde çok iyi bir mühendis olduğunu keşfeder ve ona iş teklifi yaparak transfer etmeye çalışır ? Tabi ki aynı dili konuşurlarsa. İngilizce iş dünyasının ortak dili olarak tam da bu işi yapar, size prestij kazandırır.

Blog tutmak bilgilerinizin taze kalması ve tekrar yapmanız açısından önemlidir. Hatta hiç bilmediğiniz bir dili veya frameworkü öğrenip sonra bununla ilgili blog yazmanın size büyük katkısı olacaktır.

Neden İngilizce blog tutmak daha iyidir ?

Çünkü Türkiye’de belli bir sayıda geliştirici var ama dünyada milyonlarca geliştirici var. Türkiye’deki teknoloji şirketlerinin yüzlerce kat daha büyükleri diğer ülkelerde çalışıyorlar. Örneğin Yook Mook Kim tarafından tutulan İngilizce Java blogu(mkyong.com) 2015’de 1.5 milyon ziyaret almış. Bir gün Ankara Üniversitesi’nde Richard Stallman ile sohbet etme fırsatı buldum, kendisine çok yazarlı Türkçe bir özgür yazılım blogu projem olduğunu ilettim. Bana cevabı aynen şuydu; “Yazılım geliştiriciler zaten İngilizce biliyorlar, bilmek zorundalar, Türkçe olması için bir sebep yok.”. Evet, o gün Türkiye’de gerçekten iyi İngilizce bilen yazılımcı oranını kendisiyle paylaşmaya utanmıştım. Keza bizim halen Türkçe mühendislik eğitimi veren üniversitelerimiz olduğu gerçeğini de.

Eğer imkanınız varsa iki dilli blog tutmak en güzelidir. İyi günler!

YARDIMIN İÇİN TEŞEKKÜRLER FURKAN <3
 
Detaylı ve yararlı bir paylaşım olmuş ellerine sağlık teşekkürler.
 
Başarılı Bir Anlatım Olmuş Ellerine Sağlık
 

Forumdan daha fazla yararlanmak için giriş yapın yada üye olun!

Forumdan daha fazla yararlanmak için giriş yapın veya kayıt olun!

Kayıt ol

Forumda bir hesap oluşturmak tamamen ücretsizdir.

Şimdi kayıt ol
Giriş yap

Eğer bir hesabınız var ise lütfen giriş yapın

Giriş yap

Bu konuyu görüntüleyen kullanıcılar

Tema düzenleyici

Tema özelletirmeleri

Granit arka planlar

Lütfen Javascript'i etkinleştirin!Javascript'i etkinleştirin!