Wednesday 24 March 2021

"nie uwłaczając"

Osoba pełniąca rzekomo obowiązki Prezydenta RP od sierpnia 2015 podobno ukończyła prawo na wyższej uczelni. Podobno z doktoratem, co w czasach dr. Tadeusza nic nie musi znaczyć, choć ten ostatni doktoratu z prawa jeszcze nie obronił, ale przeszkód chyba nie ma? O ile wiadomo, z przestrzeganiem praw i meta-praw osobnik podobno pełniący obowiązki Prezydenta radzi sobie w sposób ultra-wybitny (vide sprawa ułaskawienia człowieka bez prawomocnego wyroku i współuczestnictwo w paraliżu sądownictwa konstytucyjnego).  I bynajmniej nie wykazuje upadlającej urząd zależności od nieformalnych (ale faktycznych) ośrodków władzy w RP.

Z doznań estetyczno-obyczajowych: przemawia w sposób bynajmniej nie pretensjonalny, z intonacją zdradzającą wcale pokaźną ilość głębokiego namysłu, i gestykulacją oraz mimiką wcale nie kojarzącymi się z zachowaniem B. Mussoliniego. Znany jest ten człek na tt, korespondujący z "leśnymi ruchadłami" czy "seba co sra do chleba". Czy elektorat ichni pracowicie odsuwa dysonans poznawczy w jakiś sobie znany sposób, czy nie widzi w tym nic złego - nie wiem; a może korzysta z retoryki "a u was Murzynów biją".

I gadają, że ciąga się po sądach ludzi podsumowujących człeczynę jako "debila"? Obraza i znieważenie? To diagnoza i sygnał ostrzegawczy. ("Nie za obrazę urzędu, ale za zdradę tajemnicy państwowej"). Ale w polityce - zwłaszcza dziś w kręgach zbliżonych do władzy - chyba nie ma miejsca na taką refleksję, skoro tyle konfitury dookoła.

Na poważnie: uważam dr. Andrzeja Dudę za najgorszego prezydenta RP, kompromitującego swój urząd i polskie państwo daleko bardziej niż L. Kaczyński i L. Wałęsa razem wzięci. Przy czym, o ile w przypadku Wałęsy można było podobnych spraw nie pochwalać, to - przy dużej ilości dobrej woli - istniała tzw. okoliczność łagodząca. Że przecież człowiek z ludu, że po technikum, że robotnik, że styropianowy etos. A tu? Doktor praw? 

"Z siebie się śmiejecie"...

Natorf

Tuesday 23 March 2021

The closures trap.

Or Another Case of Shooting Myself in the Foot.


I was writing some function that uses e*cel spreadsheet import library, with the aim that its input (about 50 cells) could be either wrapped (human-readable version, 6 rows × 11 columns) or flat (human-hardly-readable version, perhaps more convenient when the spreadsheet is made by some other program.

In order not to copy too much stuff, I decided to make some cell shifting functions. For some reason my first thought was to create a list of void functions that could change pairs of numbers (rows and columns) and store them in a list. Being aware that 

Action<int, int> shift = (row, column) => 
    row += rowShift; 
    column += columnShift;
};

does nothing, I gave Action<ref int, ref int> a short try, which gave me some red underline. A no-go. Tough. A quick thought suggested using some wrapping class like

public class Coordinates
{
    public int row { get; set; }
    public int column { get; set; }
}

and 

Action<Coordinates> shift = (c) => 
{
    c.row += rowShift;
    c.column += columnShift;
};

That's it, and assuming I'd have such shifting delegates in a list, the final step would be to create some wrapping function like

private void ShiftCells(int whichShift, ref int row, ref int column)
{
    Coordinates c = new Coordinates() 
    
        row = row, 
        column = column
    };
    
    shifts[whichShift](c);
    row = c.row;
    column = c.column;
}

and use it in functions that read values from spreadsheet cells, instead of direct operations on row and column variables. Yes, I know, this is—in a way—ugly, but the whole environment is much uglier than this and part of my job is to fix this or that and stay more or less sane and keep my code cleaner than other peoples' pieces. Which is not difficult in this case, and I'm being very polite here.

In order to keep everything clear, I decided to put those row- and columnShifts in some array, like

private readonly int[,] wrappedShifts = { {1,3}, {2,-1}, {3, 0}, ... };

and of course

private readonly int[,] flatShifts = { {0,1}, {0,1}, {0,1}, ... };

Then, depending on what kind of spreadsheet is chosen by the user and appears as my input, I planned to use the apropriate set of shifts. Of course, the second set is rather obvious—just column++; - but I prefer that to not-self-documented jumps between cells, all inside if/else things...

The nightmare started right away after creating Action delegates in a loop:

for(int i = 0; i < wrappedShifts.GetLength(0); i++)
{
    shifts.Add(
              (c) => 
                    {
                        c.row += wrappedShifts[i,0];
                        c.column +=  wrappedShifts[i,1];
                    }
              );
}

I was getting some nonsense shifts, and later some errors occured suggesting that the above loop had iterated one more time than it should have had. Every time an "index out of range" exception popped up, I thought there is something wrong with the spreadsheet. Or the shifts. Or the way I was reading data from similar rows etc.

The solution to this bad riddle turned out to be: every delegate in the shifts list remembers a reference to i, not its copy. The last value of i is 4, when the loop exits. So, each of the four delegates in my list was the same, and i == 4 of course is out of bound of the wrappedShifts[,] first index. The keywords, according to Wise People, are: closures and capturing.

A workaround would be to say: int idx = i; and store e.g. wrappedShifts[idx,0] instead of wrappedShifts[i,0]. Or... use a foreach loop.

What puzzles me the most is, that the loop variable i is still alive after the loop finishes, just because it's been captured by the delegate. I accept easily that lambdas "see" variables that are in the same scope; it seems intuitive, but don't make use of this feature. I know the difference between

int i; for(i = 0; i < 10; i++) { ... }

and 

for(int i = 0; i < 10; i++) { ... }

and I'm too used to the idea that in the second case the index variable dies immediately after the loop exits.

Second—capturing and closures seem rather bad for code readability as I understand it, being a beginner. ("It could be that the purpose of your life is to serve as a warning to others"...)

Sunday 14 March 2021

wk*rw na NIE

W ostatnim numerze poczytnego u nasz w resorcie periodyku red. A. L. dokonał groteskowego wyczynu — połączył tuszowy kamingałt z chwytem propagandowo-marketingowym. Żeby nie było — nie zamierzamy red. L. mieszać z błockiem z racji tuszy, bo samiśmy grubi. Choć bywało gorzej, rekord to ok. 115 kg, 20 lat temu.

Jeśli artykuł ("Ile waży tona Polaka", pomińmy* litościwie brak pytajnika), nie jest jakąś dętą prowokacją, to pozwalamy sobie niniejszym skreślić kilka drobnych uwag. Otóż przy całym zrozumieniu problemu nad-tuszy itp. spraw, i współczuciu dla redaktora, wynikającym z własnego doświadczenia (bo wrednie jest być ciężkim — słabość, niezgrabność, zaniżone poczucie wartości, kobiety nie są zachwycone, zasapać się można czasem itp.), odnosimy brzydkie wrażenie, że wyszła niestety demagogia godna PiS, Kościoła i całej "prawicy" hurtem, od czerwca 1992 począwszy. W formie rzecz jasna, nie w treści. Wydawałoby się, że po NIE można by oczekiwać czegoś innego; jak chce się poczytać odloty, kupuje się raz na pół roku odRzeczy albo włącza bajki Gadowskiego czy Sumlińskiego. (Brauna już w resorcie nie palimy, za mocno poniewiera.)

Zarzuty, jakie nam się na łeb rzuciły po lekturze:

Po primo: tania, zdrowa żywność, wbrew redaktora minięciu się z prawdą (jeśli przyczyną jest niewiedza, gratulujemy odklejenia od naszej rzeczywistości**), istnieje i jest dostępna w każdym sklepie z żarciem, drogim czy tanim — mniejsza. Pozostaje kwestia, czy ma redaktor czas, umiejętności, motywację itp. tworzyć sobie paszę z: jajek, otrąb, płatków, jabłek, pomarańczy, chudego twarogu, ryżu. W rozsądnych ilościach. Nie wiemy i nie nasza to sprawa. Te produkty są — w przeliczeniu na wartość odżywczą — niemożliwie tanie w porównaniu z tym, co śmiał redaktor nazwać "zdrową żywnością" — paczkowane produkty "bio", z jakimiś pół-magicznymi własnościami. Albo — dla korpoludków — "dieta pudełkowa". Nt. mięsa i ryb nie wypowiadamy się — nie jadamy od prawie 20 lat. Faktem jest, że bez mięsa i ryb też spokojnie da się [siebie] upaść.

Pewnie odpowiedź na postawione wyżej pytanie brzmi jak tytuł pisma, zatrudniającego młodego redaktora. Bo i łatwiej, i szybciej przywołując klasyka — o p i e r d o l i ć  słodzone mleko czy jogurt, czipsy, piwko, itp. To przytyk z mojej kuchni, choć piwko opierdalamy wyłącznie 0%, bo nie chlejemy. Co też potrafi kłaść człowieka, nie tylko obecność brzucha.

("Przejść do pierwszej osoby". "Sprawdzić, czy nie ksiądz").
Po secundo: w imię czego i kogo, do bidy-nędzy, dokładać jeszcze jeden podatek bijący w tym momencie np. we mnie: pół-amatora sportowca (kiedyś trochę wspinania, do dziś trochę biegania, dużo roweru). W okolicznościach przyrody i wysiłku kolkę czy batonika czy banana wciągnąć lubię i poniekąd muszę. Albo czipsy z mozzarellą i jakimś ostrym sosem. Albo płatki ze słodzonym jogurtem. Może obok podatku jakąś kartę wprowadzić? Że ten i ten obywatel ma obiektywne potrzeby, potwierdzone wykazem, a nie tylko obeżreć się przylazł. Wtedy kupowałbym po normalnej cenie i się nie wściekał, jako teraz czynię. Osobna sprawa, że wykazu obiektywnego i sprawdzonego nie mam — jeżdżę sam, osprzętu elektronicznego i biegających tam aplikacji dla sportowców nie używam. Ale gdyby za podatek od grubasów rząd zafundowałby mi cokolwiek do śledzenia po/d/stępów i miałbym za to tani koks, czemu nie.

Po tertio: skandaliczny podatek "od cukru" nie dość, że walnął w napoje "zero" (nie uznaję, wskazuję jedynie niekonsekwencję), to w dodatku najwyraźniej nie walnął w takie coś, jak syropy owocowe. W osiedlowym spożywczaku zerkłem na etykietkę i cenę — 5.5 peelena za półlitrówkę, 77% cukru. Upraszam ustawodawcę (i przytaczających) zaprzestać tego żałosnego  p i e r d o l e n i a, że to w trosce o zdrowie. Swego czasu obalałem taki syropek w dwie-trzy godziny, bez popitki. Kiedyś to kurła było. Może dzięki temu, że zaprzestałem tych niecnych praktyk, żyję jako tako. Ścinało do snu dość szybko.

Po quadro — to chyba najbardziej cienki punkt wynurzeń redaktora L.: porównywanie "pokusy" w postaci li tylko obecności w sklepach dosładzanej, kolorowo opakowanej żywności, (w tym owych podsmażanych w tłuszczu i zaprawionych syropem płatków śniadaniowych, mniam) do widoku fajek czy wódy dla palaczy i tronkowych odpowiednio, jest chybione o tyle, że jedzenie jako takie jest fizjologiczną czynnością, podczas gdy wędzenie sobie płuc czy marskacenie wątroby — bynajmniej. Redaktora L. argumentacja jest niestety z tej samej parafii, co pozew o obrazę uczuć z par. 196, np. sprawa przeciwko pracodawcy redaktora L. — ktoś przeszedł koło kiosku i na religijność zaszkodził mu obrazek ze zdziwionym Dżizusem Ch.; a biednego redaktora — kto wie, może jak mnie — czekolada czy masło orzechowe skusiło, nabył, zeżarł wszystko za jednym posiedzeniem i żywi do siebie wyrzuty, a światu i sklepowi pretensje. Nie ze mną te numery, Brunner.

Czytając artykuł A. L., chwilami wspominałem A. H., którego reżim miał zdaje się pomysły w szczególności na tych "słabych", z pomocą reedukacji, ćwiczeń, zajmowania się młodzieżą. W wymiarze fizycznym — widzę, że należy tylko pochwalać. W polityczno-intelektualnym — skutki znamy. Kontynuatorami tej wizji był m.in. wiadomy tow. LaVey i jego poputczicy, np. córka Zeena, wcale ładna i wyszczekana. A może podejście pana od WF (Mr Buzzcut) z wiadomej kreskówki nam się udziela. Wydźwięk tego jest, owszem, przykry, ale bywa skuteczny.

Nie mieści mi się w przysłowiowej pale, że można żądać dodatkowego opodatkowania rzeczy niezdrowych, tylko dlatego, że się jest grubasem i lubi się jeść dla najedzenia (a.k.a. obeżreć się po kokardę), ma się świadomość szkodliwości nadmiarowego dawkowania niektórych składników (np. owego wyklinanego cukru, o czym można rozprawiać długo i namiętnie) i jeszcze ma się czelność oczekiwać dodatkowej kasy na — oczekujące w perspektywie — leczenie siebie. Tj. swojego zaniedbanego ciała.

Tak się składa, że żarcie oparte na prostych cukrach nie jest tylko dla łasuchów. Miewam tak w wakacje, że  o p i e r d o l e n i e  głupiego snikiersa w 35C upale przed podjazdem jest torturą, więc  o p i e r d a l a  się onego batona przez tzw. rozsądek. Bo cukry, bo trochę tłuszczu, bo trochę białka. (Nie, nie jest to baton na pusty piec, w piecu i tak jest podkład, a to płatki, a to chipsy; i upraszam nie pierdolić, że chipsy są niezdrowe w tym trybie żywota, jaki prowadzę szlajając się po górskich kawałkach Europy).

Nie lepiej uskutecznić podatek od reklam w mediach albo od przysłowiowych już gołych bab na internetach? A może od plecenia bzdetów ludowi w niedzielę z ambony, czy codziennie w państwowej tiwi?

 

Niech was wszyscy diabli!

wuj

(*) fajne jest to takie niby-pomijanie. "Pomijając, że (...)" i właśnie nie pomijamy, tylko przytaczamy. Podobnie: "o (...) nie wspominając", czy "abstrahując od (...)", co niesamowicie mondrze brzmi, zwłaszcza w ustach czy piórze kogoś, kto najprawdopodobniej nie zna znaczenia terminu "abstrakcja", redukując go wyłącznie do pomijania. Że nie wspomnę o częstym braku znajomości elementarnej logiki dwuwartościowej. Nie uwłaczając.

(**) taki skecz był, J. Weiss opowiadał. "Nasza rzeczywistość".

Friday 12 March 2021

gramy w Zośkę

Bardzo fajny jest ten Zbigniew Romaszewski, którego focie obiegły ostatnio maglowe media. Zbigniew, podając się za  ż o n ę   Z o f i ę, usiłował wedrzeć się na smętarz, gdzie chowano tow. Lityńskiego, z KOR-u, co psa ratować w rzece chciał, ale zeszedł był nieszczęśliwie; my w resorcie bardzo za zwierzętami domowymi jesteśmy. Istnieją ludzie, którzy nie wyobrażają sobie braku ulubionego czworonoga i wykazujemy zrozumienie.

Ile i czego na temat Zośki się ukazało ze strony komentariatu, przechodzi wszelkie oczekiwania. Ale nam tu w resorcie gnijąco-próchnianego poststyropianu nie szkoda, skoro się u boku wiadomego bezkręgosłupowca realizuje.

SPROSTOWANIE AGENCJI TASS: na zdjęciach była pani Zofia, pan Zbigniew od dawna nie żyje!

Wednesday 3 March 2021

wysokie obcasy piszo!

"Ponad sto lat od empacypacji Polek K***a zazdrości Francuzkom, które do 1965 r. nie mogły bez zgody męża podjąć pracy ani otworzyć rachunku w banku." 

- cenię dobre dziennikarstwo ;) Aż jedna komentatorka zauważyła, na 111 wyrzygów, w tym większości - naszym zdaniem słusznie - psioczących na pisowski kobietoid Beat, model tornister.

Musi mieszanina empatii i emancypacji, ale cieszy pysznie.