-
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
Następne wpisy z tego wątku
- 23.01.13 17:16 Stachu 'Dozzie' K.
- 23.01.13 18:24 darekm
- 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
Najnowsze wątki z tej grupy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
Najnowsze wątki
- 2025-03-03 China-Kraków => Senior PHP Symfony Developer <=
- 2025-03-03 China-Kraków => Senior PHP Symfony Developer <=
- 2025-03-03 Warszawa => Data Engineer (Tech Lead) <=
- 2025-03-03 Gliwice => Ekspert IT (obszar systemów sieciowych) <=
- 2025-03-03 Gliwice => IT Expert (Network Systems area) <=
- 2025-03-03 Mińsk Mazowiecki => Area Sales Manager OZE <=
- 2025-03-03 Warszawa => Spedytor Międzynarodowy <=
- 2025-03-03 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2025-03-03 Katowice => Key Account Manager (ERP) <=
- 2025-03-02 Tusk idzie na rekord deportacji po 1989 [Będzie popyt na prawników]
- 2025-03-01 Obywatel telefonuje 112 lub 986
- 2025-03-01 detektyw (?) Rutkowski działał jako prasa
- 2025-03-01 "Policjant został ujęty obywatelsko..."
- 2025-03-01 zatrzymanie zbyszka maja
- 2025-03-01 Warszawa => Expert Recruiter 360 <=