-
Data: 2013-01-23 18:24:17
Temat: Re: Programowanie a system operacyjny
Od: darekm <d...@e...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]>> Szczególnie jest to istotne przy wołaniach asynchronicznych. Gdy chcę
>> aby rzeczywisty wpis do pliku odbywał się poza ścieżką krytyczną, gdy
>> jest więcej czasu.
>>
>> Poza tym piszesz:
>> "Mam utworzyć wpis i ten wpis posłać do miejsca składowania logów"
>>
>> Rozumiem że:
>> 1. Do miejsca składowania logów posyłam tylko teksty
>
> Skąd ten pomysł? Gdzieś to napisałem?
Nie napisałeś więc się dopytuję co pod tym rozumiesz, bo możliwości jest
wiele.
Może doucz się trochę, mój drogi?
miłe
> Ten ruch się nazywa "structured logging".
>
O coś takiego chodzi
http://gregoryszorc.com/blog/category/logging/
czy to:
http://plumberjack.blogspot.com/2012/03/structured-l
ogging.html
i to nie jest tekst?
>> 2. Sposób tworzenia wpisu jest nieistotny, istotna jest notacja poleceń
>
> Generalnie tak. Użycie loggera ma być tak łatwe dla programisty, jak to
> tylko możliwe.
OK
Utworzenie specjalnej klasy dla wpisu, a potem utworzenie
> instancji takiej klasy jest zbyt pracochłonne (m.in. dlatego, że to
> wymaga otwarcia dodatkowego miejsca z definicją klasy przy dodawaniu
> informacji).
nie rozumiem, jakie dodatkowe miejsce, jak utworzenie instancji klasy
może być pracochłonne
>
>> 3. Możesz zdefiniować: "ma być czytelny dla człowieka i maszyny"
>
> Człowiek ma być w stanie skorzystać z takiego wpisu.
> Maszyna ma być w stanie przetwarzać zestawy takich wpisów.
To nie jest definicja tylko życzenie.
Co to dla Ciebie znaczy przetwarzać. Ja mogę przetwarzać dowolnie tekst
i binarkę, wystarczy że jest ustalona struktura.
>
> Ale specjalnie dla ciebie rozjaśnię, co ludzie rozumieją zwykle pod tymi
> pojęciami.
Dziękuję
>
> Binarne formaty serializacji danych nie nadają się, bo człowiek nie jest
> w stanie ich odczytać bez pomocy dodatkowych narzędzi.
> Binarne formaty serializacji zapisane w formie tekstowej się nie nadają,
> bo człowiek nie jest w stanie odczytać *treści* komunikatu, jedynie jego
> *kontener*.
To co się nadaje, możesz wkleić fragment.
> Twój ręcznie poskładany string się nie nadaje, bo jest niejednoznaczny.
> Istnieje wiele wiadomości, które dają wpis o takiej samej formie.
>
Skąd wiesz, podaj przykład.
>>>> Istotna jest jedynie elastyczność rozwiązania, komplikacja zapisu oraz
>>>> uzyskany efekt. Nieistotne jest czy to jest funkcja biblioteczna,
>>>
>>> Nieistotne? Powiedziałbym że całkiem ważne. Ja nie chcę *pisać* loggera,
>>> ja chcę go *użyć*. Znaczy -- powinien pochodzić z gotowej biblioteki.\
>>
>> Dla mnie nieistotne.
>
> Bo?
Bo nie o tym rozmawiamy.
>
>>>> Nie interesuje Cię czas życia, bo nie masz na to wpływu,
>>>> nie interesuje Cię przeciążanie bo nie Perl nie ma takich możliwości
>>>
>>> Perl nie ma możliwości przeciążania? Mówisz o wywoływaniu funkcji
>>> z różnymi typami parametrów czy o zmianie znaczenia operatorów
>>> zdefiniowanych w języku dla własnych typów? Bo oba w Perlu występują
>>> i nie wiem do czego pijesz.
>>
>> Mówię o różnych funkcjach dla różnych parametrów przy tej samej nazwie.
>
> Aha. No to ma.
Pokaż
>
>>>> A mnie nie interesuje aby była biblioteczna, bo mam różne oczekiwania co
>>>> do logowania w zależności od rodzaju aplikacji/platformy.
>>
>>
>>>
>>> A jakie, że nie da się tego zawrzeć w bibliotece? Ja sobie takich nie
>>> wyobrażam, ale ja głównie piszę daemony i programy wierszopoleceniowe,
>>> więc mam dość wąską perspektywę.
>>
>> Pewnie dlatego. Oprócz powyższych mam jeszcze webowe i desktopowe.
>
> I uważasz że biblioteka loggera nie poradzi sobie z tym? Możesz
> uzasadnić swoje stanowisko?
>
To jest dywagowanie, a tu zupełnie zmieniasz kontekst. Dlaczego mam
udowadniać że twój logger zrobi to co ja potrzebuję. Do tego pewnie samo
pojęcie biblioteki jest inne w Delphi i w Perlu.
>>>> Ale mimo to przykładowa notacja (kilka wariantów):
>>>>
>>>> logger.warn( "coś się zepsuło"
>>>> +'file'+FileName+eol
>>>> +logger.param('errorcode,e.errorcode)
>>>> +'obiekt=>'+logger.asAddress(myClass)
>>>> +'warning=> uwaga');
>>>>
>>>> mogę przesłać wszystko, dowolną ilość pól,
>>>> nic nie deklaruję
>>>> mogę przesłać teksty i obiekty
>>>
>>> Ah so. I twoim zdaniem taki ręcznie sklejony string jest *równoważny*
>>> przekazaniu loggerowi wpisu ze strukturą?
>>
>> A nie jest?
>
> OCZYWIŚCIE ŻE NIE JEST. Jest niejednoznaczny, to po pierwsze.
Skąd wiesz. Co na to wskazuje.
W analogiczny sposób składam pliki do podpisu elektronicznego i są
jednoznaczne.
Po drugie,
> żeby logger skorzystał ze struktury wiadomości musiałby specjalnie
> parsować twojego ręcznie sklejonego stringa.
oczywiście, Twoje biblioteki to również robią.
poza tym ustaliliśmy że nieistotne jest co się dzieje w środku loggera -
nieprawdaż?
Po trzecie, twój przykład
> wygląda jak psu z gardła przez ten płotek konkatenacji, chociaż to już
> moje osobiste uprzedzenie do tego typu konstrukcji.
To sobie podaruj uprzedzenia, ja nie mówię o swoich.
>
>> Nie ma problemu (ja nie mam) przekazania dowolnej struktury. XML, JSON
>> tak działa.
>
> Ale to programista musi nakarmić logger takim JSON-em.
nie, wystarczy przyozdobić poszczególne parametry funkcją formatującą,
to nie jest pracochłonne
W perlowym
> rozwiązaniu, które podałem jako referencję, to konfiguracja loggera
> wybiera, w jakiej formie będzie zapisany log.
Oczywiście, u mnie również
A logger jest
> konfigurowany już przez administratora, nie programistę.
Rzecz umowna, każdy program może mieć swoją konfigurację.
>
>>> Zresztą jestem ciekawy, jak chcesz to zrobić w Delphi utrzymując moje
>>> wymagania (głównie możliwość dokładania pól ad-hoc), a tym bardziej przy
>>> twojej propozycji w postaci klejenia stringa, który jest potem
>>> przekazywany loggerowi.
>>>
>>
>> 1. mogę zdefiniować szereg funkcji z jednym parametrem ogólnym oraz
>> dodatkowymi konkretnymi (pierwsza ma zero typowanych)
>>
>> 2.mogę zdefiniować tag o konkretnej strukturze i wprowadzać go
>> zdefiniowaną funkcją.
>
> I które z tych dwóch pozwoli mi uruchomić logger.warn() z parą
> ("foobar", "a, b c\nDEF\txxx\", ;'") bez przeciążania logger.warn() na
> okoliczność obecności "foobar"?
>
dlaczego bez przeciążania - wprowadzasz sztuczne ograniczenia które
nie wynikają z efektywności programowania ani rezultatów
zazwyczaj nie pisze się tekstem, tylko używa zmiennych, przy silnym
typowaniu nie ma problemu rozróżnić funkcji logowania
mogę też zapisać tak
logger.warn(msg
+ logger.asFile("foobar", "a, b c\nDEF\txxx\", ;'"));
--
Darek
Następne wpisy z tego wątku
- 23.01.13 19:21 R.e.m.e.K
- 23.01.13 19:49 Stachu 'Dozzie' K.
- 23.01.13 20:00 Stachu 'Dozzie' K.
- 23.01.13 20:41 R.e.m.e.K
- 23.01.13 21:07 Stachu 'Dozzie' K.
- 24.01.13 12:44 darekm
- 26.01.13 13:57 Roman W
- 26.01.13 14:00 Roman W
- 27.01.13 00:07 Andrzej Jarzabek
- 27.01.13 00:49 Wojciech Muła
- 27.01.13 01:49 Roman W
- 27.01.13 01:50 Andrzej Jarzabek
- 27.01.13 01:51 Roman W
- 27.01.13 01:56 Andrzej Jarzabek
- 27.01.13 13:33 Roman W
Najnowsze wątki z tej grupy
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
- "Wuj dobra rada" z KDAB rozważa: Choosing the Right Programming Language for Your Embedded Linux Device
Najnowsze wątki
- 2025-06-16 Zasilacz impulsowy 12V 10A, coś godnego uwagi jako zamiennik akumulatora wkrętarki
- 2025-06-16 Warszawa => Team Lead Data Engineer (obszar Snowflake) <=
- 2025-06-16 Warszawa => Software Engineer .Net <=
- 2025-06-16 Warszawa => Inżynier oprogramowania .Net <=
- 2025-06-16 Warszawa => IT Data Analyst (Power BI) <=
- 2025-06-16 Warszawa => Spedytor Międzynarodowy <=
- 2025-06-16 Gdynia => MLOps Engineer <=
- 2025-06-16 Środa Wielkopolska => Konsultant wewnętrzny SAP FI/CO <=
- 2025-06-16 Wrocław => Konsultant wdrożeniowy (systemy controlingowe) <=
- 2025-06-16 Warszawa => Dyrektor Sprzedaży (rozwiązania Cloud) <=
- 2025-06-16 Re: Płonie 3000 elektryków u wybrzeży Alaski
- 2025-06-16 Re: Tesla z najnowszym FSD potrafi przejechać dziecko i... pojechać dalej.
- 2025-06-15 Re: Kolejny expierd usiłuje wmówić błąd pilota wadliwego Boeinga
- 2025-06-14 Re: Boeing, który rozbił się w Indiach to był latający złom, bez serwisowania [złom,bo,Air,India,v.,złom,bo,Boening]
- 2025-06-14 Re: Boeing, który rozbił się w Indiach to był latający złom, bez serwisowania [złom,bo,Air,India,v.,złom,bo,Boening]