Skip to content

hareketli ortalama ve standart sapma ile anomali tespiti örneği

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 dan beklenen yapay zeka destekli geliştirme aracı : duet ai

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)

linuxte oturum açmak için ilişkilendirilmiş kabuk tanımı

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

#grep web1 /etc/passwd

web1:x:5004:5005::/var/www/web1:/bin/false

çı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.

bir video nun başlangıcından belirli bir süreyi kesmek

video düzenleyici yazılımlar ile bir video üzerinde istenilen alanlar kesilebilir ancak en hızlı yöntem

ffmpeg.org

adresinden işletim sisteminize uygun ffmpeg indirip kurmak ve aşagıdaki komut yapısını kullanmak olacaktır.

ffmpeg.exe -i 1.mp4 -ss 15 -c copy 1_kesilmis.mp4

bu komut 1.mp4 isimli videonun ilk 15 saniyesini keserek 1_kesilmis.mp4 olarak kaydetmesini sağlamaktadır..

güncel bir php sürümü yükledikten sonra unutulması gerekenler

linux tabanlı bir sistemden php + apache ikilisinde yeni bir php sürümü yüklenince güncel php sürümünü kullanmak için eski sürümü pasif ederek yeni sürümü aktif etmek ihtiyacı bulunmaktadır.

sudo a2dismod php* 
sudo a2enmod php8.2 
sudo systemctl restart apache2 

AÖF online sınava yaparsa

AÖF 2023 de sınavları online yapma kararı almış. bende bir öğrenciyim ve bir tandığımın attığı linkte tıkladım ve sonuç beklediğim gibi… Ülkenin genel durumu burada belli oluyor. Herkes çalışmadan üretmeden en kısa yoldan köşeyi dönme derdinde. üye sayısı sürekli artıyor. şu an 10000 üzerinde kişi sürekli bir birine sınava giren varmı soru varmı diye soru soruyor… işin garip tarafı elle tutulur veride yok. 🙂

python kodlarını çalıştırılabilir (.exe) dosya yapmak

pythonda çalışmanın dezavantajlarından bir tanesi yazdığınız kodları işletim sisteminde çalıştırabilir dosya haline getirme konusudur. çok fazla tercih etmesemde bazen gerekebiliyor.. bu noktada birden fazla seçenek mevcut ancak genel olarak en popüler olanları kullanmak daha fazla kütüphane v.b. konuda soun yaşamamanızı sağlıyor.

pyinstaller seçeneklerin en popüleri diye biliriz. tabiki ilk önce kurmamız gerekiyor.

pip install pyinstaller

kurulumu tamamladıktan sonra kullanımı oldukça kolay. komut yorumluyacısında ihtiyacımız olan parametreleri girerek exe dosyasını oluşturuyoruz.

pyinstaller --onefile dosyaadi.py

komut tamamlandığından python dosyasının bulunduğu klasör içine dist ve build isimli iki yeni klasör oluştuğunu göreceksiniz. dist klasöründen exe dosyanız build klasöründen ise exe oluşturma sürecinde kullanılan dosyalar yer almaktadır.

yukarıdaki komut yapısını kullandığınızda yazdığınız kod ihtiyaç duyulan tüm sistem dosyalarını tek bir dosya içine dahil etmektedir. bu nedenden dolayı dist klasöründeki exe dosyasına incelediğinizde yazdığımız üç beş satır koda karşı oldukça büyük boyutlu olduğunuz göreceksiniz.

eğer gui şeklinde bir uygulama yaptızsanız programı çalıştırdığınız ilave bir console pencesi açılmaması adına noconsole parametresinin eklenmesi gerekmektedir.

pyinstaller --onefile --noconsole dosyaadi.py

oluşturlan dosyanın iconunu değiştirme gibi bir çok seçenek için https://pyinstaller.org/ adresi incelemenizi öneririm.

pythonda dosya içeriği karşılaştırma

iki text dosya içeriği arasındaki farkları bulmak için temel olarak dosyaları satır satır olarak okuyup satıları karşılaştırmak gerekmektedir. bu işlemi kod olarak basitleştirme adına python kullanabilieceğiniz bir çok kütüphane bulunmaktadır. bunlardan en kullanışlarıdan bir tanesi difflib dir.

aşagıdaki örnekte importlardan sonra dosyaların içeriğindeki satırları bir diziye atadıktan sonra difflib de dizi girişlerini ve istediğimiz çıktıyı tanımlarıyoruz..

import difflib
from pathlib import Path

first_file_lines = Path('fileA.txt').read_text().splitlines()
second_file_lines = Path('fileB.txt').read_text().splitlines()

html_out = difflib.HtmlDiff().make_file(first_file_lines, second_file_lines)
Path('diff_output.html').write_text(html_out)
fileA.txtfileB.txt
first_file_lines = Path(‘fileA.txt’)
second_file_lines = Path(‘fileB.txt’)
first_file_lines = Path(‘fileA.txt’)
second_file_lines = Path(‘file2.txt’).read_text()

diff_output.html aşagıdaki şekilde görülecektir.

Back To Top