Kafanizi karistirmak istermisiniz?

Mikro Step

Kıdemli Üye
Katılım
25 Eylül 2022
Mesajlar
3,450
Kod yazarken IDE yi acip icinde kodumuzu yaziyoruz.

Ben yazmanizi istedigim programi bu sekilde yazmanizi istemiyorum.

Program yazma sayfanizda yazmanizi istedigim programin kodlarini text dosyaya yazan programi yazacaksiniz

Mesela ekrana merhaba yazan bir fonksiyon dusunun.

programi yazdiginizda text bir dosya uretilecek.
Bunun icerigini yeni bos bir programa yapistirip o programi calistirdiginizda ekranda merhaba yazacak.

Tabiki fonksiyonun basligini falan da text dosyaya yazdirmis olmaniz lazim.

Cok basit bir program ornegiyle baslayip ardindan biraz karmasik program orneklerinin ciktisini almaya calisin.

Benim kafam karisiyor.
 
Text dosyasına zaten programın kendisini yazmayacak mıyız? Text dosyası kullanmanın ne artısı veya zorluğu var onu anlamadım.

Basit düzeyde yapay zeka gibi bir şey varsa tabi ki zor. (Program yazabilen program)
 
Text dosyasina dogrudan yazmayayacagiz. Program yazacak.
Fakat programda text dosyasina yazilacaklari biz tarif edecegiz.

Mesela Text dosyasinda printf('Hello world') olmasini istiyorsak;

programimiza elle mesela textdosya.line.insert('printf('Hello world') ') yazacagiz.
programi calistirdigimizda text dosya icinde printf('Hello world') satiri olusacak.

Simdi adamakilli bir kod parcasi yazmaya kalktiginizda hem kod yazmaya odaklanacaksiniz hem de kodun ciktisinin dgru kod olmasina odaklanacaksiniz.

Bu isin biraz zor tarafi. Daha da zorlastirmakistersek 3'lu kod yazmayi deneyin.

Yani yazdiginiz kodun ciktisinin ciktisi da isleyen bir program olacak.

Su siralar ugrastigim projede yazdigim program aynen sorumdaki gibi cikti olarak program dosyasi olusturuyor.

Bir diger projede ise bu olusan program dosyalarini derleyip kullaniyorum.
 
Son düzenleme:
Text dosyasina dogrudan yazmayayacagiz. Program yazacak.
Fakat programda text dosyasina yazilacaklari biz tarif edecegiz.

Mesela Text dosyasinda printf('Hello world') olmasini istiyorsak;

programimiza elle mesela textdosya.line.insert('printf('Hello world') ') yazacagiz.
programi calistirdigimizda text dosya icinde printf('Hello world') satiri olusacak.

Simdi adamakilli bir kod parcasi yazmaya kalktiginizda hem kod yazmaya odaklanacaksiniz hem de kodun ciktisinin dgru kod olmasina odaklanacaksiniz.

Bu isin biraz zor tarafi. Daha da zorlastirmakistersek 3'lu kod yazmayi deneyin.

Yani yazdiginiz kodun ciktisinin ciktisi da isleyen bir program olacak.

Su siralar ugrastigim projede yazdigim program aynen sorumdaki gibi cikti olarak program dosyasi olusturuyor.

Bir diger projede ise bu olusan program dosyalarini derleyip kullaniyorum.

Bu yöntemi daha çok otomatik test kodları üretmek için kullandık geçmişte. Bir de kendi geliştirdiğimiz IDE içerisinde sürükle bırak ile oluşturulan diyagramlardan kodlar üretiyorduk benzer bir şekilde.

Amaç aynı değil ama birçok nocode (kod yazmadan görsel araçlarla uygulama geliştirme araçları) platform da aslında benzer birşey yapıyor.
 
Bu yöntemi daha çok otomatik test kodları üretmek için kullandık geçmişte. Bir de kendi geliştirdiğimiz IDE içerisinde sürükle bırak ile oluşturulan diyagramlardan kodlar üretiyorduk benzer bir şekilde...

Bahsettigim kafa karisikligina engel olmak icin cozum urettiniz mi?

Yazdigim kod ile kod icinde yazmaya calistigim kod arasinda kafam gidip geliyor.

pdf dokumandan elde ettigim verilerden yararlanarak text dosya hazirladim.
Yazmakta oldugum program bu text dosyayi okuyarak yeni bir program yaziyor.

Haliyle yazdigim kodlar ve bu kodlarin yazacagi program kod satirlari kafa karisikligi olusturuyor.
 
Sanirim bu sorunun kolay yolu cross compiler mantigi.

Once ara kod olustur, sonra bu kodlardan asil kodu olustur.
 
Söylediğim gibi farklı seferlerde farklı ihtiyaçlar için kullandık bu tür yöntemleri. O yüzden ihtiyaca göre değişiyor.

Örneğin performans ve stres testi kodu üretmek için doğrudan kod içindeki kodla dosya oluşturup içine kullanıcının yaptığı hareketlere göre kod yazan kodlar yazmıştık. Bu sayede kullanıcının yaptığı işlemleri kaydedip, derleyip çalıştırdığınızda sistemin o işi yapan yüzlerce binlerce kullanıcıya tepkisini ölçen programlar çıkıyordu ortaya. Burada doğrudan kodun içerisinde metin olarak kod satırları oluşturan kodlar vardı.

Başka bir seferde de, kullanıcının hareketlerinden derlenebilir kod üretmek yerine sentaksını kendimizin oluşturduğu bir script üreten kodlar vardı. Daha sonra bu script kodlar yorumlanarak (yine bizim yazdığımız yorumlayıcıyla) sistemin fonksiyon ve senaryo testlerini yapabilmemizi sağlıyordu. Örneğin bu şekilde kaydedilmiş yüzlerce senaryoyu her gece çalıştırıp aynı sonuçları üretmesini bekliyorduk. Farklı sonuçlar üreten senaryo olursa üç ihtimal var demek oluyor:
1- O gün aktarılan kodlar bir hataya sebep olmuştur.
2- O gün aktarılan kodlar var olan bir hatanın düzelmesine sebep olmuştur.
3- Sistemin iş akışı bilinçli bir şekilde değiştirilmiştir.
Farklı sonuçlar incelenerek sebebi analiz ediliyor ve buna göre gerekli aksiyonlar alınıyor.

Bir başka kısımda ise dış sistemlerden veri entegrasyonunun yapılabilmesi için otomatik kodların üretilmesini sağlıyorduk konfigürasyon ekranında seçilen verilerden (örneğin XML mappingler).

Bir başka örnek de şöyle. Biz bir programlama dili ve bunun derleyici ve yorumlayıcısını yazdık. Bu ürettiğimiz dil içerisine de şöyle bir özellik ekledik. Siz kodunuzun içerisinde bir metin değişkende dilediğiniz gibi bir kod oluşturup uygulamanın bu kodu çalışma zamanında derleyip çalıştırmasını sağlayabiliyordunuz. Yani oluşturduğunuz kosu başka bir dosyaya yazıp derkleyip sonradan başlatmaya gerek kalmadan, kodu oluşturup sanki bir sonraki satırda o kod varmış gibi çalıştırabiliyorsunuz. Böylece çok kombinasyonlu olayları kod içinde yönetmek çok kolaylaşıyor ve kısalıyor.
 
Scprit dili işte , senin programın o kodu çalıştırıyor yada ne yapması gerektiğini anlıyor.
 
USB flash disk görünümlü mcu içeren devreler var. Kendini sisteme klavye olarak tanıtıyor. Sonrasında notepad açıp kodları yazıp belli bir lokasyonu kaydediyor. Sonrasında derleyip yada yorumlayıp çalıştırıyor.
Lübnan'da bir banka sahibi bankanın güvenliğini incelemesi için 3 tane hacker tutuyor. 3 hacker yarım saat içinde bankanın her yerini ele geçirdi. National Geograohic belgeseli hali e getirmişler.

Adam Microst'tan geldim. USB portlarını test edicem deyip sadece flash diski(!) takıyordu. Sonrasında kod ortalığın altını üstüne getiriyordu.

(Belgeseli izleyeli birkaç yıl oldu)
 
Son düzenleme:
Lübnan'da bir banka sahibi bankanın güvenliğini incelemesi için 3 tane hacker tutuyor. 3 hacker yarım saat içinde bankanın her yerini ele geçirdi. National Geograohic belgeseli hali e getirmişler.
Seviyorum böyle yapımları. Bulup izleyeyim.
 
USB flash disk görünümlü mcu içeren devreler var. Kendini sisteme klavye olarak tanıtıyor. Sonrasında notepad açıp kodları yazıp belli bir lokasyonu kaydediyor. Sonrasında derleyip yada yorumlayıp çalıştırıyor.
Lübnan'da bir banka sahibi bankanın güvenliğini incelemesi için 3 tane hacker tutuyor. 3 hacker yarım saat içinde bankanın her yerini ele geçirdi. National Geograohic belgeseli hali e getirmişler.

Adam Microst'tan geldim. USB portlarını test edicem deyip sadece flash diski(!) takıyordu. Sonrasında kod ortalığın altını üstüne getiriyordu.
Sanırım böyle birşeyden bahsediyorsun:

 
Arduino Pro Micro ve HID kütüphanesiyle ile kolayca yapabilirsiniz.
 
Sanırım böyle birşeyden bahsediyorsun:


Bunun bir işe yarayacağına hiç inanmıyorum. Piyasadaki bütün işletim sistemi geliştiricileri bunların her çeşidi ile sürüm yayınlama öncesi testler yapıyordur.

Asıl işe yarayan saldırıları, sigara dumanlı loş odalarda çalışan gizemli hackerler yapmıyor. Arkasında ABD hükümetinin ta kendisi olan NSA ve bunun emrindeki kuruluşlar yapıyor. Hack'i de uğraşarak keşfetmiyorlar. Microsoft'tan bütün işe yarayacak güvenlik açıklarını doğrudan isteyerek alıyorlar. Vermemek gibi bir seçenekleri yok.
 
Arduino Pro Micro ve HID kütüphanesiyle ile kolayca yapabilirsiniz.
Tabi burada bahsettiğim klavye/mouse emülasyonu ile bilgisayara komut yollamak. @taydin'a katılıyorum. Komutların içeriği ayrı uzmanlık konusu. Düzgün güvenliğiolan hiçbir yerde çalışmaz genel bir çözüm. Zaten pek çok güvenli kamu ve özel kurumda da USB sürücüler kısıtlıdır.
 
ABD hükümetinin şirketlerden işine yarayacak güvenlik açıklarını istediğini ve aldığını kendileri de gizlemiyorlar zaten. IEEE nin aşağıdaki makalesinde, ABD nin böyle bir USB stick kullanarak İran'ın uranyum zenginleştirme santrifujlarını nasıl darmadağın ettiği anlatılıyor. Tesislerde Siemens PLC'leri ve Microsoft işletim sistemi kullanılıyor. Her iki firmadan da gereken tüm güvenlik açıkları temin ediliyor, ve bunlar kullanarak bir virüs geliştiriliyor. Sonra da Siemens pazarlamacısı gibi görünen bir şahıs, tesise gidip bunu bir bilgisayara dürtüyor.

 
Bu hikayeyi ve benzerlerini Netflix'de yayınlanan Spycraft belgeselinde izleyebilirsiniz.
 
Bu yönetmi faydalı bir amaçla kullanabileceğiniz bir proje söyleyeyim. Daha önce oğlum yapmıştı, havalı oluyor :)

Arduino Pro Micro, RFID okuyucu modülü ve RFID token/kart kullanarak; USB kablosuyla bilgisayarınıza takılan, tokenı okuyucu kutusuna değdirdiğinizde bilgisayarınızın şifresini girerek kilit ekranını açacak bir cihaz yapabilirsiniz.
 
Daha da geliştirelim:
Üzerine de bazı butonlar ekleyip; basınca favori uygulamalarınızı çalıştırabilir, sesi açıp kısabilir, uyku moduna alabilir ... vb işleri yaptırtabilirsiniz.
 

Çevrimiçi personel

Forum istatistikleri

Konular
5,656
Mesajlar
97,305
Üyeler
2,438
Son üye
İbrahimSönmez

Son kaynaklar

Son profil mesajları

cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Kesici/Spindle hızı hesaplamak için SpreadSheet UDF'leri kullanın, hesap makinesi çok eski kalan bir yöntem :)
Dr. Bülent Başaran,
Elektrik ve Elektronik Mühendisi
Yonga Tasarım Özdevinimcisi
Üç güzel "çocuk" babası
Ortahisar/Ürgüp/Konya/Ankara/Pittsburgh/San Francisco/Atlanta/Alaçatı/Taşucu...

Back
Top