Wprowadziłem zmiany w kodzie o których pisałem w kilku poprzednich wpisach. Wprowadzają one pewien porządek (nowy porządek) w działaniu agenta. Każdy przesyłany do agenta rekord posiada dodatkową informację – status oraz ID z bazy. Jest to informacja sterująca, która po odebraniu jest interpretowana przez agenta. Pisząc rekord miałem na myśli rekord bazy danych reprezentujący w zależności od obszaru: konto systemowe, definicję virtual hosta apacza lub konto htpasswd.
Dołożyłem starań aby tam, gdzie jest to możliwe wprowadzić niemal identyczną strukturę funkcji. Dzięki temu kod jest bardziej hm.. przewidywalny, łatwiejszy w rozwijaniu. Muszę pomyśleć o spisaniu kiedyś developer notes’ów. Wskazówek – jak powinny wyglądać funkcje, które w danym zakresie wykonują jakieś zadania. Już w tej chwili widzę, że w zasadzie takim samym kodem jestem w stanie przetwarzać dane z różnych zakresów działania systemu: kont systemowych, czy konfiguracji apacza.
Udało mi się ostatecznie uzyskać efekt gdzie przesyłane są jedynie te informacje, które posiadają flagi N (new), U (update) oraz D (delete). Dzięki temu rozmiar danych przesyłanych przez sieć nie będzie duży. Przesyłane są wyłącznie zmiany. Wszystkie rekordy posiadające flagę A (active) nie są brane pod uwagę. Udało mi się zrealizować to dzięki wdrożeniu komunikacji dwukierunkowej.
Na koniec. Udało się „odkleić” konfigurację kont htpasswd od konfiguracji vhostów apacza. Dzięki temu można niezależnie od konfiguracji vhostów dodawać konta. Doszedłem do wniosku, że konta zdefiniowane w htpasswd można potraktować jako niezależne byty. Mogą współistnieć obok konfiguracji serwera www. Zyskują odpiero na znaczeniu jak sewer www posiada konfigurację auth basic. Jest to bardziej logiczne niż było do tej pory.
Przy okazji zidentyfikowałem buga związanego z przetwarzaniem stringów zawierających przecinki (np. w pliku .htaccess). Występował on w zasadzie od początku. Przemyślałem tą kwestię i doszedłem do wniosku, że zmodyfikuję nieco string z danymi z bazy przesyłany do klienta. Każda wartość klucza będzie zamknięta w znaki cudzysłowa („). Jest to element formatu json. Pozwoli mi on na zbudowanie nowej logiki w funkcji odczytującej z pakietu wartości konkretnych pól. Rozwiążę też w końcu problem z przecinkami będącymi częścią prawidłowego stringu. Nie zdecydowałem się jednak na wprowadzenie tych zmian w obecnym merge’u ze względu na spory zakres zmian. Rozwiązanie tego zagadnienia będzie przedmiotem kolejnego pull requesta.
Don’t let the process of selling your house become a burden—let Buy-My-House.org handle it for you. Learn more at https://www.buy-my-house.org/virginia/buy-my-house-fast-virginia-beach-va/