eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingProgramowanie a system operacyjnyRe: Programowanie a system operacyjny
  • Data: 2013-01-23 16:38:18
    Temat: Re: Programowanie a system operacyjny
    Od: darekm <d...@e...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu 2013-01-22 22:33, Stachu 'Dozzie' K. pisze:
    > On 2013-01-22, darekm <d...@e...com> wrote:
    >>>>> Proszę bardzo, jedziesz. Ja w Perlu robię tak:
    >>>>> #v+
    >>>>> $logger->warn(msg "coś się zepsuło",
    >>>>> file => $filename, errorcode => $?, warning => $msg);
    >>>>> #v-
    >>>>>
    >>>>> Masz obiekt loggera z metodą do wysyłania ostrzeżeń. Potrzebujesz podać:
    >>>>> 1) własny komunikat
    >>>>> 2) nazwę pliku, którego np. otwarcie sprawiło problem
    >>>>> 3) kod błędu (errno lub analogiczny)
    >>>>> 4) treść komunikatu od systemu
    >>>>> Uwagi:
    >>>>> * 4) może zawierać cokolwiek i nie masz nad tym kontroli
    >>>>> * wpis w logu ma być czytelny dla człowieka i maszyny
    >>>>> * masz w kodzie móc dodać kolejne pola ad-hoc, bez edycji w innych
    >>>>> plikach czy miejscach bieżącego pliku
    > [...]
    >>> Oczywiście. Drzewa zasłaniają ci las.
    >>>
    >>> Nie interesuje mnie czas życia tego stringa. Nie interesuje mnie
    >>> przeciążanie funkcji warn, zwłaszcza że ona powinna być biblioteczna.
    >>> To, co mnie interesuje, to definiowanie pól w komunikacie ad-hoc,
    >>> w miejscu, w którym tworzę komunikat. *Bez przygotowań*, w tym bez
    >>> deklarowania dodatkowych zmiennych tylko na potrzeby logowania.
    >
    >> Prawdopodobnie wcale nie interesuje Cie jakiekolwiek rozwiązanie tego
    >> problemu.
    >
    > Oczywiście że interesuje mnie. Interesuje mnie rozwiązanie problemu,
    > który postawiłem. Mam utworzyć wpis i ten wpis posłać do miejsca
    > składowania logów. Po co mi do tego zadania znać jest czas życia obiektu
    > reprezentującego wpis?

    Każdy byt ma swój czas życia, wpis również, tyle że czas niektórych
    jest regulowany automatycznie, a innych ręcznie (przez programistę).

    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
    2. Sposób tworzenia wpisu jest nieistotny, istotna jest notacja poleceń
    3. Możesz zdefiniować: "ma być czytelny dla człowieka i maszyny"



    >
    >> 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.

    >
    >> 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.

    >
    >> 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.


    >
    >> 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?
    Nie ma problemu (ja nie mam) przekazania dowolnej struktury. XML, JSON
    tak działa.

    Nawet się nie upieram żeby ta
    > struktura była zagnieżdżona. Nie będę nagle wprowadzać nowego warunku,
    > skoro poprzednio o nim zapomniałem.

    Nie ma problemu z zagnieżdżeniami, kwestia konwencji


    >
    > Powiedz mi, z jakiego powodu nie odtworzyłeś warunków zadania? Ze
    > złośliwości?

    Których warunków? Może czegoś nie wiesz i wydaje Ci się że czegoś nie
    uzyskam. Albo udowodnij a nie wypisuj inwektyw.
    Daj konkretny przykład czego nie da się przekazać. Tzn strukturę w
    programie oraz oczekiwany wynik w logu.

    Przez przeoczenie? Czy byłeś za głupi żeby zadanie
    > zrozumieć? Wolałbym nie zakładać ostatniej możliwości, bo ta gałąź wątku
    > byłaby bezsensowna od samego początku.
    >
    >> funkcja może być biblioteczna, z takiej czy innej biblioteki :
    >> rozmawiamy o możliwościach języka
    >
    > O możliwościach języka, ale na podstawie konkretnego scenariusza użycia.

    OK to podaj założenia i oczekiwany wynik.

    >
    >> A mogę dołożyć własne wymagania:
    >> nazwie pliku musi zawsze towarzyszyć jego zawartość (albo analogicznie
    >> inna korelacja danych sprawdzana w momencie kompilacji: chodzi o to aby
    >> zminimalizować błędy niepełnego wysłania informacji do loggera)
    >
    > Da się zrobić. Tak, bez uruchomienia kodu (zakładając, że nie liczymy
    > funkcji eval) i bez ręcznego parsowania Perla.

    Może przytoczyć sposób rozwiązania?


    Tylko że Perl nie jest
    > statycznie typowany, you know. Nie był przewidziany do takich rzeczy.
    >

    No i co z tego że nie był przewidziany. Delphi też nie było a
    dyskutujemy czy coś się da zrobić czy nie.



    > 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ą.







    --
    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: