huawei routerler üzerinden bir kartın çıkarılmadan önce yazılımsal olarak öncelikle slotun enerjisinin kapatılması önerilmektedir.
slottan kart çıkarma işlemi tamamlandıktan sonra slot üzerinde tanımlı olan ancak aktif olmayan konfigürasyonların silinmesi ihtiyacı bulunmaktadır.. bu konfigürasyon silinezse bu slota takılarak yeni bir kartta aktif olacaktır.
bu yöntemi kart değişimleri sırasında da kullanabilirsiniz. aşagıdaki 3 slot için yapılan örnek bir uygulama görülmektedir.
power off slot 3
yes
system-view
clear inactive-configuration slot 3
yes
quit
nokia sros routerlarda fazla sayıfa isis instance var ve isia all parametresi ile çıktıyı incelemek isterseniz cli da gereksiz satırlardan kurtulmak isterseniz aşagıdaki yöntemle ihtiyaç duymayacağınız satırlardan kurtulabilirsiniz.
show router isis all interface | match expression "---|===|Interfaces :|anycast|State|Type|No Mat" invert-match
show router isis all interface ile alacağımız çıktı aşagıdaki şekildeysen
===============================================================================
Rtr Base ISIS Instance 0 Interfaces
===============================================================================
Interface Level CircID Oper L1/L2 Metric Type
State
-------------------------------------------------------------------------------
system L2 1 Up -/0 p2p
router-B L2 106 Up -/90 p2p
router-C L2 172 Up -/100 p2p
-------------------------------------------------------------------------------
Interfaces : 3
===============================================================================
expression ve invert-match kullanarak elde edeceğimiz çıktı aşagıdaki şekilde olacaktır.
Rtr Base ISIS Instance 0 Interfaces
system L2 1 Up -/0 p2p
router-B L2 106 Up -/90 p2p
router-C L2 172 Up -/100 p2p
ortalama değer bir veri kümesindeki sayıların toplamının eleman sayısına bölümü olarak hesaplanır.
bunu yapacak bir fonksiyon yazalım.
def ortalama_bul(veri_kumesi):
toplam = sum(veri_kumesi)
eleman_sayisi = len(veri_kumesi)
ortalama = toplam / eleman_sayisi
return ortalama
bu yöntem düşük boyutlu veri kümeleri ile çalışırken yeterli olacaktır ancak veri kümesi büyüdükçe dahah hızlı bir yöntem gerekecektir. bu durumu yapacağımız örnekle inceleyelim.
numpy ile belirli boyutta bir veri kümeisi oluşturarak oluşturduğum fonksyionda ve numpy nin mean metodu ile ortalama değeri hesaplamasını yapabilecek bir kod yazalım. hesaplamanın yapıldığını hesaplama adına basit bir time yöntemi eklemeyi unutmalım.
import numpy as np
import time
# Veri kümesinin ortalamasını bulan fonksiyon
def ortalama_bul(veri_kumesi):
toplam = sum(veri_kumesi)
eleman_sayisi = len(veri_kumesi)
ortalama = toplam / eleman_sayisi
return ortalama
# veri kümesi oluştur
veri_kumesi = np.random.rand(10000)
# numpy ile ortalama bulma
np_baslangic_zamani = time.time()
np_ortalama = np.mean(veri_kumesi)
np_bitis_zamani = time.time()
print(f"Numpy ile Ortalama hesaplama süresi: {np_bitis_zamani - np_baslangic_zamani} saniye")
print(f"Numpy ile Veri kümesinin ortalaması: {np_ortalama}")
# ortalama_bul fonksiyonunu kullanarak ortalama bulma
fonk_baslangic_zamani = time.time()
fonk_ortalama = ortalama_bul(veri_kumesi)
fonk_bitis_zamani = time.time()
print(f"Fonksiyon Ortalama hesaplama süresi: {fonk_bitis_zamani - fonk_baslangic_zamani} saniye")
print(f"Fonksiyon ile Veri kümesinin ortalaması: {fonk_ortalama}")
yukarıda kodda 10.000 adet veri için ortalama hesapları yapılmaktadır. kodu çalıştırdığımda elde ettiğim sonuç aşagıdaki gibidir.
Numpy ile Ortalama hesaplama süresi: 0.0 saniye
Numpy ile Veri kümesinin ortalaması: 0.5017341979294518
Fonksiyon Ortalama hesaplama süresi: 0.0 saniye
Fonksiyon ile Veri kümesinin ortalaması: 0.5017341979294502
veri boytunu katlayarak sonuçları kıyaslayalım. 100.000 değer için.
Numpy ile Ortalama hesaplama süresi: 0.0 saniye
Numpy ile Veri kümesinin ortalaması: 0.5008137222243555
Fonksiyon Ortalama hesaplama süresi: 0.0 saniye
Fonksiyon ile Veri kümesinin ortalaması: 0.5008137222243564
1.000.000 değer için
Numpy ile Ortalama hesaplama süresi: 0.0 saniye
Numpy ile Veri kümesinin ortalaması: 0.5000936635960163
Fonksiyon Ortalama hesaplama süresi: 0.046967267990112305 saniye
Fonksiyon ile Veri kümesinin ortalaması: 0.5000936635960234
hesaplamalarda ufak farklar görülmeye başladı. 10.000.000 için
Numpy ile Ortalama hesaplama süresi: 0.014102935791015625 saniye
Numpy ile Veri kümesinin ortalaması: 0.5002303952512933
Fonksiyon Ortalama hesaplama süresi: 0.5047390460968018 saniye
Fonksiyon ile Veri kümesinin ortalaması: 0.5002303952512889
aradaki fark artıyor. verimizi arttırmaya devam. 100.000.000 için
Numpy ile Ortalama hesaplama süresi: 0.09502911567687988 saniye
Numpy ile Veri kümesinin ortalaması: 0.49998983843975686
Fonksiyon Ortalama hesaplama süresi: 5.2369115352630615 saniye
Fonksiyon ile Veri kümesinin ortalaması: 0.4999898384397282
olarak bir çıktı elde ediyoruz. artık hesaplama süresini hissetmeye başladık. durmak yok veriyi büyütmeye devam
Traceback (most recent call last):
File "D:\python\ortalama.py", line 13, in <module>
veri_kumesi = np.random.rand(1000000000)
File "numpy\\random\\mtrand.pyx", line 1218, in numpy.random.mtrand.RandomState.rand
File "numpy\\random\\mtrand.pyx", line 436, in numpy.random.mtrand.RandomState.random_sample
File "_common.pyx", line 307, in numpy.random._common.double_fill
numpy.core._exceptions._ArrayMemoryError: Unable to allocate 7.45 GiB for an array with shape (1000000000,) and data type float64
1 Milyar için hesaplama yapmak istediğimde ise numpy için kırılma noktasına gelmiş olduğumuz görüyoruz. numpy ile devam etmek istiyorsak veri kümesini bölerek işlem yapmalıyız. buna uygun basit bir kod yazalım.
import numpy as np
import time
# Veri kümesinin boyutu ve parça boyutu
veri_boyutu = 1000000000
parca_boyutu = 100000
# Ortalamaları saklamak için bir liste oluştur
ortalama_listesi = []
np_baslangic_zamani = time.time()
# Veri kümesini parçalara böl ve her parçanın ortalamasını hesapla
for _ in range(veri_boyutu // parca_boyutu):
veri_kumesi = np.random.rand(parca_boyutu)
ortalama = np.mean(veri_kumesi)
ortalama_listesi.append(ortalama)
# Tüm parçaların ortalamasını hesapla
genel_ortalama = np.mean(ortalama_listesi)
np_bitis_zamani = time.time()
print(f"Veri kümesinin genel ortalaması: {genel_ortalama}")
print(f"Ortalama hesaplama süresi: {np_bitis_zamani - np_baslangic_zamani} saniye")
bu kod içinde parca_boyutu artııkça toplam hesaplama süresinin uzadığı görülmektedir.
işleri daha karmaşık hale getirmek istemiyorsak dask modulünü kullanmak farklı çözüm olacaktır.
import dask.array as da
import dask
import time
dask_baslangic_zamani = time.time()
# örnek veri kümesi oluştur
veri_kumesi = da.random.random(size=(1000000000,), chunks=1000000)
# Ortalama hesaplama
ortalama = da.mean(veri_kumesi)
# Dask hesaplamasını başlatma
with dask.config.set(scheduler='threads'):
sonuc = ortalama.compute()
dask_bitis_zamani = time.time()
# Hesaplanan ortalama değeri ekrana yazdırma
print(f"Veri kümesinin ortalaması: {sonuc}")
print(f"Dask ile Ortalama hesaplama süresi: {dask_bitis_zamani - dask_baslangic_zamani} saniye")
dask ile çalışırkenden chunks değeri hesaplama sürenizi eklieyecektir. 1 milyar değer için 100 bin değeri bende en optimal sonucu veriyor.
1 milyar veri için dask ve numpy de en optimal parametreler ile elde edilen sonuçlar aşagıdaki gibi çıkmakta…
dask
numpy
1 milyar veri
1 milyar veri
2.631504535675049 saniye
5.981382369995117 saniye
buradaki kodlar en optimal kodlar olmayabilir ve daha hızlı yöntemler oluşturulabilir. ancak bu haliyle kişisel bigisayarımda 1 milyar ve üzeri veriler için dask kullanmak çok daha mantıklı geliyor.
bir zaman serisinde anormal noktaların tespitinde kullanılabilecek yöntemlerden bir tanesi hareketli ortalama ve standart sapma kullanmaktadır. basit bir python uygulaması yapalım…
çıktıdan görüleceği gibi doğruluk oranı tüm uygulamalar için işe yaramayabilir. anomali tespiti giriş seviye uygulamalarda kullanılabilir.
google geliştiriciler için duet ai yi duyurdu. şu an için kullabilmeniz için google cloud bir hesabınız olması gerekiyor. cloud üzerinde bir proje oluşturdukten sonra bu proje üzerinden devam edebiliyorsunuz. google ın cloud hesapları konusunda güncellemeyi kaçırmısım anlaışanki yeni proje oluşumu sırasında proje sayısının 15 ile sınırlı olduğu yönünde bir uyarı mesajı ile karşılaşmak sürpriz oldu.
projeyi oluşturduktan sonra vscode ile hemen denemek istedim ancak kurulum başarılı olsada duet chat bir türlü çalışmadı. pycharm ile devam etme kararı sonrasında sorunsuz duet chat i çalıştırabildim. ilk test tabiki Türlçe testi oldu. şu an için Türkçe desteği yok.
Sorry, I can only respond to English questions right now. If you would like help in another language, please visit our documentation website or contact our Customer Care team.
aynı soruya duet ai nin ve github copilot un verdiğin cevaplar aşagıdaki gibi. her iki kodda çalışmamakta ve ikisinede çalışır şekilde düzelttiremedim. 🙂
testleri yapıp vscode u tekrar açıp uzantılardan kaldırmandan önce son kez denediğimde duet chat çalışmaya karar verdiği anlaşıldı.
github copilot
import multiprocessing
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
def find_primes(start, end):
primes = []
for n in range(start, end):
if is_prime(n):
primes.append(n)
return primes
if __name__ == "__main__":
num_processors = multiprocessing.cpu_count()
pool = multiprocessing.Pool(num_processors)
chunks = [range(i, i + 100000) for i in range(0, end, 100000)]
tasks = []
for chunk in chunks:
tasks.append((chunk[0], chunk[-1]))
results = pool.map(find_primes, tasks)
primes = []
for result in results:
primes += result
print(primes)
github copilot
import math
import multiprocessing
def is_prime(n):
if n <= 1:
return False
if n == 2:
return True
if n % 2 == 0:
return False
sqrt_n = math.isqrt(n)
for i in range(3, sqrt_n + 1, 2):
if n % i == 0:
return False
return True
def find_primes(start, end):
primes = []
for n in range(start, end):
if is_prime(n):
primes.append(n)
return primes
def find_primes_multiprocessing(start, end, num_processes):
pool = multiprocessing.Pool(processes=num_processes)
chunk_size = (end - start) // num_processes
ranges = [(start + i*chunk_size, start + (i+1)*chunk_size) for i in range(num_processes)]
result = pool.starmap(find_primes, ranges)
pool.close()
pool.join()
primes = sum(result, [])
return primes
primes = find_primes_multiprocessing(0, 100000, 4)
print(primes)
Bir kullanıcıya etkileşimli oturum açma yetkisi vermek isteniyorsa, kullanıcının bir kabuk ile ilişkilendirilmiş olması gerektiği unutulmamalıdır. web1 kullanıcı için ilişkilendirme bakalım
çıktıdaki /bin/false bir kabuk ilişkilendirmesi yapılmadığı anlamına gelmektedir.. bunu genellikle güvenlik için tercih ederiz. oturum açabilmek için bir kabul tanımlayalım.
sudo usermod -s /bin/bash web1
şimdi test edelim.. promtta web1 i gördüğümüze işlem başarılı olmuştur.
root@cicekpc:~# su -l web1
web1@cicekpc:~$
eğer sizde olmadıysa /var/log/auth.log veya /var/log/secure log dosyaları incelenmesi gerekecektir.