Zalogowany jako: gość

Forum

Wątek: Jak Eltena należy napisać

Wróć do listy wątków

1 z 2

Następna

1 z 30: pajper

Witajcie!
Ostatnio kilka osób się do mnie zgłaszało z takimi czy innymi zastrzeżeniami wobec tego, jak Elten jest pisany od strony programistycznej. Piszę więc, by wskazać, jak ja bym widział poprawnie zmajstrowany portal.
Nie oznacza to, że w najbliższym czasie niestety uda się to wdrożyć. Dlaczego? Oczywiście ze względu na poprawki i propozycje. Gdyby chcieć wdrożyć taki kod na przykład w wersji 2.3, pewnie ukazałaby się dopiero na wakacje, bez żadnych śródaktualizacji.
Nie umiem przewidzieć, kiedy uda się więc to małe marzenie zrealizować, bo kolejne wersje kreślą poprzednie kroki, ale... Koncept istnieje.


Sprawa dotyczy tak klienta, jak serwera.

1. Serwer

W tej chwili serwer napisany jest niemal całkowicie w PHP, co jest trochę, a nawet bardzo głupie, szczególnie, że używane są własne, nierozwijalne protokoły. Wprowadzanie więc nowych funkcji powoduje powstawanie nowych skryptów, co zaburza cały obraz i prowadzi tylko do problemów, błędów i spowalnia implementację nowości.
Serwer chciałbym napisać w Rubym, ale nie język jest tu najważniejszy.
Jest sobie oczywiście baza danych. Nie powinno być jednak tak - ze względów bezpieczeństwa i estetyki, że każdy skrypt na własną rękę pyta bazę danych.
Powinien powstać szereg abstrakcyjnych klas obsługujących bazę danych w ramach forów, wiadomości, w MVC nazwiemy to kontrolerami.
Tutaj pojawią się funkcje pisania i czytania, a każda inna klasa po prostu się odezwie do odpowiednich kontrolerów. Znacznie przyspieszy to wszystkie implementacje i zoptymalizuje serwer.
Dalej powstaną modele, które będą prezentować od strony serwera dane.
Dopiero właściwe skrypty, sceny, pozwolą na manipulowanie danymi.
Co uzyskamy?
Obecnie, aby wylistować wpisy na forum, robię coś takiego:
$q=mquery("select author,post,date from forum_posts where `thread`=".(int)$_GET['threadid']."");
while($r=mysql_fetch_row($q))
array_push($posts,array('author'=>$r[0],'post'=>$r[1],'date'=>$r[2]));
W nowym systemie napiszę mniej-więcej tak:
@posts=MD_Forum_Posts.load(@params['threadid'])
I tyle.

2. Klient

Tutaj troszkę podobnie. Powstałby kontroler do połączeń z serwerem i model do reprezentowania danych.
Tu zyskamy jeszcze więcej, niż w wypadku serwera, bo nie tylko pozbędziemy się powtórzeń w kodzie, ale bardzo ujednolicimy platformy.
W zasadzie cały kod modelu i kontrolera będzie współdzielony między aplikacją na komputery, telefony i stroną Internetową. Dzięki temu ogromna partia kodu będzie absolutnie wspólna.

Taki jest koncept.
#StandWithUkraine Shoot for the Moon. Even if you miss, you'll land among the stars.
20.04.2019 19:43

2 z 30: pajper

I jeszcze schematyczny opis przykładowy dla forum.
Widzę to jako klasę bazową, nazwijmy ją MD_ThreadedSchema. Będzie miała atrybuty określające czy możemy moderować, czy dane są anonimowe, listę szczególnych danych. W oparciu o taką klasę stworzymy wiadomości, fora, ankiety, blogi... Na razie jednak fora.
Tworzymy klasę dziedziczącą MD_Forum, w której definiujemy gałęzie dla grup, forów i tematów w formie jakiegoś drzewka.
Importujemy tu kontroler, nazwijmy go CTR_Forum, który odpowiada za realizację zapytań w bazie danych.
Przykład w Rubym widzę tak, bardzo wstępny przykład pisany z palca:

class MD_Forum < MD_ThreadedData
def initialize
super
@permissions.grant(:READ | :REPLY | :CREATETHREAD)
@permissions.grant(:CREATECATEGORY) if $user.permissions.moderator?
@controller=CTR_Forum.new
end
# dla przykładu funkcja do listowania forów w danej grupie
def list_forums(groupid)
puts JSON.generate(@controller.forums(groupid).to_hash)
end
# i coś dla wyszukiwarki
def search_threads(phrase)
threads=Array.new
@controller.list_threads.each { |thread|
suc=false
for post in thread.list_posts
if post.text.include?(phrase)
suc=true
break
end
end
threads.push(thread.to_hash) if suc
}
puts JSON.generate(threads) if suc==true
end
end
#StandWithUkraine Shoot for the Moon. Even if you miss, you'll land among the stars.
20.04.2019 19:58

3 z 30: lukaszenka

Powiem tak niech to i nawet będzie za pół roku tylko niech my użytkownicy wiemy co się przez ten czas dzieje.

21.04.2019 16:10

4 z 30: jamajka

No widzisz, ja bym się i z tobą zgodziła, ale nie ma opcji, żeby namówić ludzi, żeby czekali pół roku. @lukaszenka
rzeczy niemożliwe od ręki, cuda w przeciągu trzech dni.
21.04.2019 22:04

5 z 30: agakrawcow

Jeśli chodzi o mnie, to wolę rozwiązanie z poczekaniem pół roku czy ile tam będzie trzeba , niż robienie poprawek na prędce, aby tylko wprowadzić cokolwiek.
Radość, moja mała przyjaciółka idzie ze mną przez świat.
22.04.2019 01:57

6 z 30: tomecki

Problem w tym, że ludzie nawet mogą czekać, ale za cholerę nie wiedzą co i czy w ogóle coś się dzieje.

22.04.2019 21:47

7 z 30: lukaszenka

No o tym właśnie mówię, bo jakie kroki zostały poczynione od kiedy elten wrócił do żywych?

22.04.2019 22:15

8 z 30: pajper

Pracujemy nad wprowadzeniem grup i pewnych zmian na forach.
Powinna do majówki ukazać się beta 29, a jakoś po majówce wersja stabilna.
#StandWithUkraine Shoot for the Moon. Even if you miss, you'll land among the stars.
22.04.2019 22:58

9 z 30: lukaszenka

Hm skoro dwa pierwsze posty tego wątku były tak szczegółowe to i tutaj liczyłem na więcej, bo tyle to raczej wszyscy wiemy.

22.04.2019 23:01

10 z 30: pajper

Ale co mam wypisać? Stworzone w bazie danych tabele? Napisane wrappery, by zachować zgodność wsteczną?
Bo, no taka prawda, jak wrzucę kod, to i tak nikt nie przeczyta.
#StandWithUkraine Shoot for the Moon. Even if you miss, you'll land among the stars.
22.04.2019 23:02

11 z 30: lukaszenka

No nie wiem chyba dało by się np: udało się zrobić żeby grupy wyświetlały się tak, a tak, udało się wyeliminować błędy, które powodowały...

22.04.2019 23:06

12 z 30: lukaszenka

a myśle, że znaleźli by się nawet użytkownicy, którzy by przeczytali tak dokładne dane i czasem na blogu coś takiego mogłoby się pojawić.

22.04.2019 23:09

13 z 30: tomecki

Ee, też bez przesady w drugą stronę. Było pisane, że do majówki coś wyjdzie i to jest pewien konkret. Gorzej, gdy np. przez miesiąc albo ich kilka nie ma nic, a już najgorzej, gdy najpierw info sypie się co parę dni jak np. o wersji mobilnej, potem nagle taaaka cisza. Można, wszystko jedno, słusznie czy nie, pomyśleć, że się autor albo znudził albo coś go przerosło albo milion innych rzeczy, niekoniecznie prawdziwych. Co do tego, jak to powinno być napisane to czuję się wywołąny do tablicy, bo wzmiankę dostałęm, ale koderem nie jestem i jedyne, co mogę powiedzieć to yhy, no, pewnie tak. :d

22.04.2019 23:33

14 z 30: pajper

Ehhh, no i tu jest problem. Bo co mam pisać?
Napisałem wzorzec klas do struktur wielowpisowych? No raczej nie, bo nie ma to ani sensu, a tylko traci się na tym czas.
W ogóle nie rozumiem trochę, w czym rzecz. Jakoś żadne firmy nie spowiadają się z tego, co w każdym momencie piszą.
Po prostu, nie ma to sensu.
A jak ktoś bardzo chce śledzić zmiany, to ma kod na Githubie.
#StandWithUkraine Shoot for the Moon. Even if you miss, you'll land among the stars.
23.04.2019 10:22

15 z 30: tomecki

Chodzi mi o sytuację z klientem na IOS, gdzie na swoim blogu najpierw pisałeś niemal o każdej zmianie i nagle cisza. Nic, null i nie wiadomo co się dzieje. Dodawszy do tego brak jakiegokolwiek komentarza do części propozycji na forum można się zastanawiać czy w ogóle coś się tu dzieje.
Myślę, że spora część użytkowników, niezależnie od tego czy słusznie czy nie, pamięta dużą ilość projektów, które na początku pięknie się rozwijały i gdy np.skończyła się kasa, chęci, wena czy co tam jeszcze nagle stawało w miejscu. Elten w miejscu nie stoi, ale myślę, że nie zaszkodziłoby gdyby ktoś z ekipy raz na jakiś czas pisał, co się dzieje. Niekoniecznie wgłębiając się specjalnie w detale ani bez zdradszania niespodzianek czy wewnętrznych kwestii, ale tak ot, żeby było wiadomo, że coś się dzieje. No i niestety brak komentarzy w przypadku niektórych propozycji Eltenowych ze strony ekipy. Rozumiem, że możesz nie mieć specjalnie czasu, ale powinien być ktoś, kto to monitoruje, coś pisze i generalnie czuwa. Było już co najmniej kilka wątków a propos Eltena, w których wypowiadali się wyłącznie użytkownicy na zasadzie "jeśli to będzie wyglądało tak, to..." i caałe dyskusje na temat jakiejś tam hipotezy, która niekoniecznie musi być zgodna z prawdą. Oczywiście to nie musisz być koniecznie Ty. Wystarczy aby był to ktoś, kto wie, co się w projekcie dzieje, jakie są priorytety, o czym można powiedzieć itd no i najlepiej żeby miał jakieś hm... dyplomatyczne zdolności :dd

23.04.2019 11:37

16 z 30: pajper

Nie wiem, prawdę mówiąc. Priorytety się rozpadają pod presją otoczenia, niestety.
Mobilna aplikacja stoi od lutego w miejscu z przyczyn grupowej. To znaczy, wprowadzane są grupy, a tu priorytet ma wersja desktopowa siłą rzeczy.
#StandWithUkraine Shoot for the Moon. Even if you miss, you'll land among the stars.
23.04.2019 11:47

17 z 30: tomecki

Ok, ale z tego co pamiętam, wpisy w temacie były z września i coś chyba z października.

23.04.2019 12:32

18 z 30: lukaszenka

Sam się zgadzam, że trochę może i przesadziłem, ale ja tak czasem prowokuje po prostu co by użytkownicy wiedzieli możliwie jak najwięcej.

23.04.2019 17:22

19 z 30: amel

Nawet coś zrozumiałam!

Słuchajcie, nie będę obiektywna, bo aplikacji nie używam, ale jestem za. Jeśli dobrze rozumiem, coś takiego będzie można bez problemów większych przepisać na Maca chociażby, a to zawsze ten odsetek ludzi więcej. Oczywiście, bezstronna nie jestem.

O! gdzie miłość stawia siatki, / Nie figlujcie, moje dziatki! / Bo z miłością figlów nie ma: / Jak was złapie, to zatrzyma! / Tak babunia nam śpiewała; / Ja uciekam, pókim cała.
24.04.2019 11:30

20 z 30: matius

To może to w ramach wiadomośći od autora. Coś w rodzaju, poprawiono serwer, albo coś innego. Jak dla mnie całkiem fajny pomysł. Takie małę krótkie raporciki. Ze dwa zdania, Albo jedno.
Sygnatura – Uczcij poległych i cierpiących ocalałych ciężką pracą, ponieważ porażka zawsze może się zdarzyć, jednak nigdy nie staraj się udawać, że jesteś doskonały, ponieważ prowadzi to do gorszego końca niż porażka, wiedzie na ścieżkę hańby i nikczemności.
24.04.2019 21:37

Wróć do listy wątków

1 z 2

Następna

Nawigacja


Copyright (©) 2014-2024, Dawid Pieper