eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingProgramowanie a system operacyjny › Re: Programowanie a system operacyjny
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!wsisiz.edu.pl!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-s
    po-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
    Date: Wed, 23 Jan 2013 18:24:17 +0100
    From: darekm <d...@e...com>
    User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20120907 Thunderbird/15.0.1
    MIME-Version: 1.0
    Newsgroups: pl.comp.programming
    Subject: Re: Programowanie a system operacyjny
    References: <kcgt7u$4un$1@speranza.aioe.org> <o...@s...asus>
    <s...@j...net> <kci839$i6n$1@opal.futuro.pl>
    <s...@j...net> <kck2ve$2ka$1@news.task.gda.pl>
    <s...@j...net> <kck82i$etd$1@news.task.gda.pl>
    <s...@j...net> <kckmog$dtn$1@mx1.internetia.pl>
    <s...@j...net> <kcmbj6$pv4$1@mx1.internetia.pl>
    <s...@j...net>
    <50f177d7$0$26694$65785112@news.neostrada.pl>
    <s...@j...net>
    <50fec8f3$0$1294$65785112@news.neostrada.pl>
    <s...@j...net>
    <510003dd$0$26682$65785112@news.neostrada.pl>
    <s...@j...net>
    In-Reply-To: <s...@j...net>
    Content-Type: text/plain; charset=ISO-8859-2; format=flowed
    Content-Transfer-Encoding: 8bit
    Lines: 228
    Message-ID: <51001cb4$0$1216$65785112@news.neostrada.pl>
    Organization: Telekomunikacja Polska
    NNTP-Posting-Host: 79.187.5.190
    X-Trace: 1358961844 unt-rea-b-01.news.neostrada.pl 1216 79.187.5.190:59905
    X-Complaints-To: a...@n...neostrada.pl
    Xref: news-archive.icm.edu.pl pl.comp.programming:201794
    [ ukryj 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



Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: