STM32F103C8 ile mini web server (full proje)

Başlatan z, 11 Ekim 2016, 17:15:18

Burak B

#15
Alıntı yapılan: z - 12 Ekim 2016, 18:30:30
...

1460 byte ile bu kadar sayfa yapılabiliyor. Tablolar kaldırılırsa bir kaç satır daha fazla sayfa olur.
...


Aslında 1460 byte ile daha çok şey yapılabilir. Tüm iş kullandığınız teknolojiler, biraz text optimizasyonu ve tabiki gzip ile alakalı. :)

Bu arada PendSV_Handler fonksiyonunuzdaki değişken isimleri çok manidar. Aşağı yukarı şöyle bişi.

char *PendSV_Handler_0()
{
  char *result; // r0@1
  char v5; // r1@2
  int v6; // r1@2
  int v7; // t1@2
  int v8; // [sp+0h] [bp-20h]@2

  result = &Fuck_C;
  if ( Fuck_C != 1 )
  {
    __asm { CPSID   F }
    v5 = Task;
    result = (char *)Z_Stack;
    Z_Stack[2 * (unsigned __int8)Task] = (int)&v8;
    v6 = (v5 + 1) & 1;
    Task = v6;
    v7 = Z_Stack[2 * v6];
    __asm { CPSIE   F }
  }
  return result;
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

z

#16
Client'dan servere sayfa içeriğini gönder talebi geliyor. Güzelim asm kodlar sayfayı gönderirken system tick  düüüt devre arası, Asm hadi bırak biraz da C MCU ile oynasın diyor.

Asm de ".dittirme ebeni" şu an kritik bir iş yapıyorum eğer şimdi C MCU yu alırsa web sayfasının ..ına kor, C sonra oynasın diyor.

Yazdığım dile karışıyorsunuz yetmedi sıra değişken isimlerime mi geldi?.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Burak B

Estafirullah ne haddime. Koddaki espri anlayışı hoşuma gittiği için paylaşmak istedim.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

z

#18
Tek sayfaya yüklenmek yerine ana sayfa olsun butonlar olsun. Butona basınca servere istek gelsin ve serverde isteğe özel yeni bir sayfa oluştursun üzerine uğraşmak istiyorum.

Bu durumda ziyaretçiye 1400 byttetan çok daha fazlasını farklı sayfalarda sunabilirim.

Gzip algoritmasını bir şekilde buluruz da bahsettiğim yöntem daha basit olmaz mı?

İyi hatırlattın v6 = (v5 + 1) & 1; burayı v6 = v5 xor 1 yapalım 4 byte daha kazanalım. Kısa günün kârı.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Burak B

#19
Bakın ben @gerbay değilim. Yani direkt hazır bilgi vermek adetim değildir. Ama ipucu veriyorum neden gzip' i sizin yazmanız gereksin ki ? Bırakın browser halletsin canım. :) Sizin kod yazmanıza gerek yok. Yani acaba neler HTTP header da -Accept- oluyor. Ayrıca javascript diye bir dil var. Neler yapabildiğine inanamazsınız ! Acaba 1460 bayta javascript ile neler ne tür algoritmalar ve işlevler sığdırılabilir. Hemde gzip de kullanılırsa bunu katlar bile...
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

z

Server içinde dinamik sayfa oluşturmuyor muyum? Dinamik bir sayfayı kim zipliyecek?

Ben mi yanlış anladım?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Burak B

#21
Herşeyde dinamik değilki. Sabit veriler için bir payload hazırlanıp. Dinamik veriler pekala enjekte edilebilir gibi geliyor bana. ;) Mesela browserda bir adamınız olsa ve sizden sadece belli veriler için GET yapsa. Kabaca buna AJAX deniyor.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

z

#22
Yok ben o kadarından anlamam. (Aslını sorarsanız bu projeye bulaşıncaya kadar bunların hiç birinden anlamıyordum)

Client'daki tıklanan buton, radio button, check box vs konumlarını, text boxdan alınan şifre bilgisi okumayı öğrenirsem proje biraz daha anlam kazanacak en azından uzaktan bir evdeki cihazları açıp kapatabilirim.

Html kodlarla da program geliştiriciyi bunaltmak istemiyorum. Oraya da bir kolaylık getireceğim.

Yalnız sizin mantığınızı anlamıyorum. Forumda biz bayağı yardımcı olmaya çalışıyoruz. İp ucu ile geçiştirmiyoruz.

Bir iki kutsalımız dışında her soruya cevap veriyoruz. Hata mı ediyoruz?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Burak B

#23
Her yiğidin bir yoğurt yiyişi var diyelim. Buna saygı duymak lazım.

Bahsettiğiniz işleri yapabilmeniz için GET ve POST headerları oluşturabilmeniz ve yorumlayabilmeniz gerek. Şunu unutmayın HTTP ve HTML Hypertext üzerine kurulu bir dünya. Yani bolca hafıza ve string işlemi yapmak gerekiyor.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

z

#24
Gene de bu projeye katkılarınız dan dolayı hakkınız ödenmez.

Bahsettiğim soruların cevabını muhtemelen Wireshark ile kendim de deneyerek bulabilirim.

Tahminimce explorer aldığı sayfa bilgilerinden sonra ekranda buton tıklanırsa bana yeni bir paket yollayacak.

Ben de içinde Get arar gibi butonla ilgili bir ipucu arayacağım.

Gene de sağol.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Burak B

#25
Wireshark' ın yeri ayrı. Firefox için Firebug diye çok faydalı bir eklenti var. Mutlaka inceleyin. Kurun. Sayfaya sağ tıklayıp -Inspect with firebug- deyin. Açılan paneli gezin. Özellikle -Net- sekmesine bir gözatın. İşlerim bitti bana müsade. :) Size kolay gelsin.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

yamak

Alıntı yapılan: z - 13 Ekim 2016, 02:44:47
Gene de bu projeye katkılarınız dan dolayı hakkınız ödenmez.

Bahsettiğim soruların cevabını muhtemelen Wireshark ile kendim de deneyerek bulabilirim.

Tahminimce explorer aldığı sayfa bilgilerinden sonra ekranda buton tıklanırsa bana yeni bir paket yollayacak.

Ben de içinde Get arar gibi butonla ilgili bir ipucu arayacağım.

Gene de sağol.
Hocam normalde ajax kullanmazsanız sayfanın herhangi bir yerinde değişiklik yapmanız için tüm sayfayı yenilemeniz gerekir.
Ayrıca charles proxy adında bir program var.Bu hhtp işlerinde baya işinize yarar.http paketlerini yakalıp ve durdurup üzerinde değişiklik yapmanıza dahi izin verir.Http için wiresharktan daha çok işinize yarar bence.

ErsinErce

Bütün dünya artık ssl bağlantıya geçiyor, let's encrypt gibi çözümler çıkmaya başladı maliyetten kurtulmak için.
eğer bir cihaz çalıştıracağım x işini buna yükleyeceğim diyorsanız güvenlik önlemleride almak gerekiyor.
Bu sebepten 1KB lik veri ile bağlantı işi zor hocam.
HTTP ye girmeden raw veri ile işinizi halletseniz neyse ama http ile bu yapı kısa ömürlü

z

Anasayfa altına linkler koyarak sayfa sayısını artırdım.

Dolayısı ile bu çok rahatlattı.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

#29
http://youtu.be/vEpDRtwMf_I

Bazı şeyler daha konforlu olsu.

Github dosyaları henüz yeni yazılım dosyaları ile değiştirilmedi.

Client'dan gelen sayfa isteği eskiden kütüphane tarafından cevaplanıyordu, C tarafı sadece sayfa bilgilerini yeniliyordu.

Projenin yeni halinde istek doğrudan C tarafına bildiriliyor.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com