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!news1.cyf-kr.edu.pl!news.nas
    k.pl!news.nask.org.pl!news.internetia.pl!newsfeed.neostrada.pl!unt-exc-02.news.
    neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-ma
    il
    Date: Wed, 23 Jan 2013 16:38:18 +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>
    In-Reply-To: <s...@j...net>
    Content-Type: text/plain; charset=ISO-8859-2; format=flowed
    Content-Transfer-Encoding: 8bit
    Lines: 176
    Message-ID: <510003dd$0$26682$65785112@news.neostrada.pl>
    Organization: Telekomunikacja Polska
    NNTP-Posting-Host: 79.187.5.190
    X-Trace: 1358955485 unt-rea-a-01.news.neostrada.pl 26682 79.187.5.190:60735
    X-Complaints-To: a...@n...neostrada.pl
    Xref: news-archive.icm.edu.pl pl.comp.programming:201787
    [ ukryj 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: