Weblog Tomasza Przechlewskiego [Zdjęcie T. Przechlewskiego]


scrum
random image [Photo gallery]
Zestawienie tagów
1-wire | 18b20 | 1wire | 2140 | 3rz | alsamixer | amazon | anniversary | antypis | apache | api | applebaum | arm | armenia | astronomy | asus | atom.xml | awk | aws | bachotek | bakłażan | balcerowicz | balta | bash | berlin | bibtex | bieszczady | biznes | blogger | blogging | blosxom | borne-sulinowo | breugel | bt747 | budapeszt | canon | cedewu | chello | chiller | chillerpl | chown | chujowetaśmy | ciasto | cmentarz | contour | cron | css | csv | curl | cycling | d54250wykh | dbi | debian | dejavu | dhcp | dht22 | dia | docbook | dom | ds18b20 | dyndns | dynia | ebay | economy | ekonomia | elka | elm | emacs | emacs23 | english | ess | eu | excel | exif | exiftool | f11 | fc | fc11 | fc15 | fc5 | fc8 | fedora | fedora21 | fenix | ffmpeg | finepix | firefox | flickr | fontforge | fontspec | fonty | food | fop | foto | france | francja | fripp | fuczki | fuji | fuse | gammu | garmin | gawk | gazwyb | gdańsk | gdynia | gender | geo | geocoding | georgia | gft | git | github | gmail | gmaps | gnokii | gnus | google | googlecl | googleearth | googlemaps | gotowanie | gphoto | gphoto2 | gps | gpsbabel | gpsphoto | gpx | gpx-viewer | greasemonkey | gruzja | grzyby | haldaemon | handbrake | historia | history | hitler | holocaust | holokaust | hpmini | humour | iblue747 | ical | iiyama | ikea | imap | inkscape | inne | internet | j10i2 | javascript | jhead | k800i | kajak | kamera | kleinertest | kml | kmobiletools | knuth | kociewie kołem | kod | kolibki | komorowski | konwersja | krutynia | kuchnia | kurski | latex | latex2rtf | latex3 | lcd | legend | lenny | lesund | lewactwo | liberation | linksys | linux | lisp | lisrel | litwa | lizbona | logika | ltr | lubowla | lwp | lwów | m2wś | mapquest | mapsource | marvell | math | mathjax | mazury | mbank | mediolan | mencoder | mh17 | michalak | michlmayr | microsoft | monitor | mp4box | mplayer | ms | msc | mssql | msw | mtkbabel | museum | muzyka | mymaps | mysql | nanopi | natbib | navin | nekrolog | neo | neopi | netbook | niemcy | niemieckie zbrodnie | nikon | nmea | nowazelandia | nuc | nxml | oauth | oauth2 | obituary | okular | olympus | ooffice | ooxml | opera | osm | otf | otftotfm | other | overclocking | panoramio | pdf | pdfpages | pdftex | pdftk | perl | photo | photography | picasa | picasaweb | pim | pine | pis | pit | plotly | pls | plugin | po | podróże | politics | polityka | polsat | portugalia | postęp | powerpoint | prelink | problem | propaganda | pstoedit | putin | python | r | radio | random | raspberry pi | refugees | relaxng | ridley | router | rower | rowery | rpi | rsync | rtf | ruby | rugby | russia | rwc | rwc2007 | rwc2011 | rzym | samba | sem | sernik | sheevaplug | sienkiewicz | signature | sks | skype | skytraq | smoleńsk | sqlite | srtm | ssl | staszek wawrykiewicz | statistics | stats | statystyka | stix | stretch | suwałki | svg | svn | swanetia | swornegacie | szwajcaria | słowacja | tbilisi | terrorism | tex | texgyre | texlive | thunderbird | tomato | totalnaopozycja | tourism | tramp | trang | truetype | ttf | turystyka | tusk | tv | tv5monde | twitter | typetools | ubuntu | uchodźcy | udev | ue | ukraina | umap | unix | upc | updmap | ups | utf8 | varia | video | vienna | virb edit | vostro | wammu | wdc | wdfs | webcam | webdav | wh2080 | wiedeń | wikicommons | wilno | windows | windows8 | wine | wioślarstwo | word | wordpress | wrt54gl | ws1080 | wtyczka | ww2 | www | wybory | wybory2015 | włochy | węgry | xemex | xetex | xft | xhtml | xine | xml | xmllint | xsd | xslt | xvidtune | youtube | yum | zakopane | zakupy | zdf | zdrowie | łeba | świdnica | żywność
Archiwum
O stronie
wykorzystywany jest blosxom plus następujące wtyczki: tagging, flatarchives, rss10, lastbuilddatexhtmlmime. Niektóre musiałem dopasować nieco do swoich potrzeb. Więcej o blosxom jest tutaj
Subskrypcja
RSS 1.0
Czy Platforma Obywatelska to kryptonaziści?


Po występach przewodniczącego Juliusa Schetyny można było mieć wątpliwości, że to jednorazowy amok. Ale znaleźli się wszakże podwładni Juliusa, którzy postanowi pokazać, że są równie mądrzy jak szef, a nawet dużo mądrzejsi. Naprawdę trzeba nie mieć mózgu w ogóle, żeby przerobić Goebbelsowski plakat z podpisem Pracuj z Niemcami a będziesz uratowany i takie coś publikować z dumą na Twitterze. No a przecież wcześniej był/jest w tej partii ważna figura pn. Protasiewicz co się na bagażowym wyżywała we Franfurcie wrzeszcząc na niego Heil Hitler czy jakoś tak. No już trzech mamy KN (kryptonazistów) -- jeszcze dwóch i będzie tylu co w słynnym reportarzu w #WaffelTV, co taką gównoburzę wywołał w styczniu br.

Znamienne jest tak nawiasem mówiąc milczenie takich opertkowych figur jak pan Bodnar (na przykład), który miał gębę pełną frazesów a nawet listy dramatyczne do premiera i ministra sprawiedliwości pisał, kiedy ww. WaffelTV ujawniła ww. groźny spisek 5 idiotów w lesie (Konieczne wydaje się opracowanie nowej, kompleksowej strategii mającej na celu zwalczanie rasizmu i ksenofobii w Polsce -- uważa Rzecznik Praw Obywatelskich, Adam Bodnar) Teraz nie ma problemu operetkowy pan Bodnar, i nie widzi żadnej potrzeby a to zapewne z tej prostej przyczyny, że skończonym idiotą okazał się chłop z ferajny, a nie żaden tam anonimowy zresztą nacjonalista.

Jeżeli ktoś nie wie czemu Juliusz/Julius a nie Grzegorz. Ano temu że, Dr. Goebbels nie tyle wymyślił co udowodnił empirycznie, że kłamstwo powtórzone 1000 razy staje się prawdą. Mianowicie w tekstach publikowanych w gazecie Der Angriff przekręcał systematycznie i uporczywie imię szefa Berlińskiej Policji, określając go Izydorem (co ma/miało żydowskie konotacje w Niemczech podobno), aż większość Berlińczyków faktycznie uznała w końcu, że Bernhard Weiss ma na imię Izydor.

url | Mon, 15/10/2018 16:19 | tagi: ,
Koniec pobierania danych wyborczych

Dobrnąłem w końcu do finału pobierając ostatecznie ze strony PKW dane dotyczące siedmiu wyborów, które odbyły się w latach: 2015, 2014 (samorządowe), 2011, 2010 (samorządowe), 2007, 2006 (samorządowe), 2005.

Wyniki wcześniejszych wyborów nie są już dostępne na poziomie komisji obwodowych (a przynajmniej ja nie potrafię takowych odszukać). Protokoły z wyborów z 2006 roku też nie były dostępne, ale udało się je w części odtworzyć ze stron z wynikami kandydatów (zawierającymi liczbę głosów oddanych na kandydata w poszczególnych komisjach obwodowych).

Dla każdych wyborów wykreśliłem histogram poparcia dla mainstreamowych partii: PSL, PO, PiS oraz SLD. Zgodnie z oczekiwaniami rozkłady poparcia są jednomodalne, prawostronnie symetryczne, ale z dwoma wyjątkami: rozkład poparcia dla PO jest bimodalny i ta tendencja wydaje się stała. Rozkład poparcia dla PSL z roku 2014 (cud nad urną) różni się -- na zasadzie znajdź element niepasujący do pozostałych -- od sześciu pozostałych rozkładów poparcia dla tej partii (czemu to już inna historia).

Dane są tutaj

url | Thu, 11/10/2018 08:31 | tagi: , , ,
Pobranie danych z wyborów samorządowych 2010

Co wybory to inaczej oczywiście...

Wyniki wyborów 2010 są na stronie http://wybory2010.pkw.gov.pl/. Punktem wyjścia jest zaś strona z wynikami dla województwa postaci http://wybory2010.pkw.gov.pl/geo/pl/020000/020000-o-020000-RDA-2.html?wyniki=1, w której wiodące 02020000 to kod teryt województwa a 2 przed .html to numer okręgu wyborczego. Zatem pobranie wszystkich stron `okręgowych' sprowadza się do:

#!/usr/bin/perl
#
use LWP::Simple;
#
my $uribase = 'http://wybory2010.pkw.gov.pl/geo/pl';
@Woj = ("02", "04", "06", "08", "10", "12", "14", "16",
  "18", "20", "22", "24", "26", "28", "30", "32");
@Okr = (1,2,3,4,5,6,7,8,9,10); ## nadmiarowo (max jest 8 chyba)

for $w (@Woj) {
  for $o (@Okr) {
    $url = "$uribase/${w}0000/${w}0000-o-${w}0000-RDA-${o}.html?wyniki=1";
    $file = "ws2010_woj_${w}_${o}";
    getstore($url, $file);
    print STDERR "$url stored\n";
  }
}

Teraz się okazuje że każdy taki plik zawiera odnośniki postaci /owk/pl/020000/2c9682212bcdb46c012bcea96efe0131.html. Każdy taki plik opisuje kandydata startującego w wyborach. Ich pobranie jest równie banalne:

#!/usr/bin/perl
#
use LWP::Simple;
use locale;
use utf8;
binmode(STDOUT, ":utf8");
use open IN => ":encoding(utf8)", OUT => ":utf8";

$baseURI="http://wybory2010.pkw.gov.pl";
$file = $ARGV[0];

while (<>) {
  chomp();
  if (/(owk\/[^<>"]*)/) {
     $url= "$baseURI/$1";
     if (/(owk\/[^<>"]*)[^<>]*>([^<>]*)/) {
       $who = "$2"; $who =~ s/ //g;
       $who =~ tr/ĄĆĘŁŃÓŚŻŹ/ACELNOSZZ/;
       $who =~ tr/ąćęłńóśżź/acelnoszz/;
     } else {$who = "XxYyZz"; }

     $outFile = "owk_${file}__${who}";
     getstore($url, $outFile);
     print STDERR "$url stored ($outFile)\n";
  }
}
## pobranie wszystkich owk-URLi to:
## for i in ws2010_woj* ; do perl pobierz-owk.pl $i ; done

W plikach `owk' są linki do protokołów z wynikami z poszczególnych komisji. Są to linki postaci: /obw/pl/3206/bacbedd03197794e2e1e8e438bff87e1.html. Należy je wszystkie pobrać (URLe nie pliki) i posortować usuwając duplikaty. Powinno być takich URLi około 25--27 tysięcy (tyle ile komisji):

#!/usr/bin/perl
#
$baseURI="http://wybory2010.pkw.gov.pl";
$file = $ARGV[0];

while (<>) {  chomp();
  if (/(obw\/[^<>"]*)/) {
     $url= "$baseURI/$1";
     if (/(obw\/[^<>"]*)[^<>]*>([^<>]*)/) {
         $obwNr = "$2"; }
     $outFile = "${file};${obwNr}";
     print "$url;$outFile\n";
} }
## for i in owk_2010* ; do perl pobierz-obw.pl $i ; done > proto0.csv
## awk -F';' '{print $1";"$3}' proto0.csv | sort -u > protokoly.csv
## wc -l protokoly.csv
## 25464 protokoly.csv

Każdy URL jest postaci /obw/pl/0201/051595429cc31a526f8b2455602ab929.html. Te 0201 to pewnie teryt powiatu, ale reszta wydaje się losowa więc nie da się ustalić jakiegoś schematu URLi protokołów, bo go nie ma po prostu. Teraz postaje pobrać te 25464 plików-protokołów z komisji obwodowych. Na wszelki wypadek będę zapisywał te protokoły wg schematu: proto_ws_2010_terytPowiatu_nrkomisji:

#!/usr/bin/perl
##
use LWP::Simple;
open (O, "protokoly.csv") || die "No protokoly.csv!";
while (<O>) { chomp();
  ($url, $nrk) =  split /;/, $_;
  $_ =~ m#http://wybory2010.pkw.gov.pl/obw/pl/([0-9][0-9][0-9][0-9])#;
  $teryt = $1;
  $outFile = "proto_ws_2010_${teryt}_$nrk";
  getstore($url, $outFile);
  print STDERR "*** $url stored ($outFile)\n";
}
close(O);
## time perl get-proto.pl

Mi się ściągało 62 minuty 30 sekund.

url | Wed, 03/10/2018 06:04 | tagi: , , ,
Wybory 2014 i jeszcze więcej rozkładów

Rozkład odsetka głosów nieważnych (definiowanego jako głosy nieważne / (głosy ważne + nieważne)) w wyborach samorządowych w 2014. Pierwszy histogram dotyczy całej Polski (27455 komisji), drugi województwa pomorskiego (1856) a trzeci Mazowieckiego (3574).

#!/usr/bin/Rscript
# Skrypt wykreśla histogramy dla danych z pliku ws2014_komisje.csv
# (więcej: https://github.com/hrpunio/Data/tree/master/ws2014_pobranie_2018)
#
par(ps=6,cex=1,cex.axis=1,cex.lab=1,cex.main=1.2)
komisje <- read.csv("ws2014_komisje.csv", sep = ';',
       header=T, na.string="NA");

komisje$ogn <- komisje$glosyNiewazne  / (komisje$glosy + komisje$glosyNiewazne) * 100;

summary(komisje$glosyNiewazne); fivenum(komisje$glosyNiewazne);
sX <- summary(komisje$ogn);
sF <- fivenum(komisje$ogn);
sV <- sd(komisje$ogn, na.rm=TRUE)
skewness <- 3 * (sX[["Mean"]] - sX[["Median"]])/sV

summary_label <- sprintf ("Śr = %.1f\nMe = %.1f\nq1 = %.1f\nq3 = %.1f\nW = %.2f", 
  sX[["Mean"]], sX[["Median"]], sX[["1st Qu."]], sX[["3rd Qu."]], skewness)

## ##
kpN <- seq(0, 100, by=2);
kpX <- c(0, 10,20,30,40,50,60,70,80,90, 100);
nn <- nrow(komisje)

h <- hist(komisje$ogn, breaks=kpN, freq=TRUE,
   col="orange", main=sprintf ("Rozkład odsetka głosów nieważnych\nPolska ogółem %i komisji", nn), 
   ylab="%", xlab="% nieważne", labels=F, xaxt='n' )
   axis(side=1, at=kpN, cex.axis=2, cex.lab=2)
   posX <- .5 * max(h$counts)
text(80, posX, summary_label, cex=1.4, adj=c(0,1))

## ##
komisje$woj <- substr(komisje$teryt, start=1, stop=2)

komisjeW <- subset (komisje, woj == "22"); ## pomorskie
nn <- nrow(komisjeW)
sX <- summary(komisjeW$ogn); sF <- fivenum(komisjeW$ogn);
sV <- sd(komisjeW$ogn, na.rm=TRUE)
skewness <- 3 * (sX[["Mean"]] - sX[["Median"]])/sV

summary_label <- sprintf ("Śr = %.1f\nMe = %.1f\nq1 = %.1f\nq3 = %.1f\nW = %.2f", 
  sX[["Mean"]], sX[["Median"]], sX[["1st Qu."]], sX[["3rd Qu."]], skewness)

h <- hist(komisjeW$ogn, breaks=kpN, freq=TRUE,
   col="orange", main=sprintf("Rozkład odsetka głosów nieważnych\nPomorskie %i komisji", nn), 
   ylab="%", xlab="% nieważne", labels=T, xaxt='n' )
   axis(side=1, at=kpX, cex.axis=2, cex.lab=2)
   posX <- .5 * max(h$counts)
text(80, posX, summary_label, cex=1.4, adj=c(0,1))

komisjeW <- subset (komisje, woj == "14"); ## mazowieckie
nn <- nrow(komisjeW)
sX <- summary(komisjeW$ogn); sF <- fivenum(komisjeW$ogn);
sV <- sd(komisjeW$ogn, na.rm=TRUE)
skewness <- 3 * (sX[["Mean"]] - sX[["Median"]])/sV

summary_label <- sprintf ("Śr = %.1f\nMe = %.1f\nq1 = %.1f\nq3 = %.1f\nW = %.2f", 
  sX[["Mean"]], sX[["Median"]], sX[["1st Qu."]], sX[["3rd Qu."]], skewness)

h <- hist(komisjeW$ogn, breaks=kpN, freq=TRUE,
   col="orange", main=sprintf("Rozkład odsetka głosów nieważnych\nMazowieckie %i komisji", nn), 
   ylab="%", xlab="% nieważne", labels=T, xaxt='n' )
   axis(side=1, at=kpX, cex.axis=2, cex.lab=2)
   posX <- .5 * max(h$counts)
text(80, posX, summary_label, cex=1.4, adj=c(0,1))

Wyniki są takie oto (indywidualne wykresy tutaj: #01 #02 #03):

Rozkłady odsetka poparcia dla PSL/PiS/PO w wyborach samorządowych w 2014 w całej Polsce, w miastach/poza miastami oraz w poszczególnych województwach. Poniższy skrypt generuje łącznie 60 wykresów słupkowych:

#!/usr/bin/Rscript
# Skrypt wykreślna różnego rodzaju histogramy dla danych z pliku ws2014_komitety_by_komisja_T.csv
# (więcej: https://github.com/hrpunio/Data/tree/master/ws2014_pobranie_2018)
#
showVotes <- function(df, x, co, region, N, minN) {
   ## showVotes = wykreśla histogram dla województwa (region)
   kN <- nrow(df)
   sX <- summary(df[[x]], na.rm=TRUE);
   sV <- sd(df[[x]], na.rm=TRUE)
   ## współczynnik skośności Pearsona
   skewness <- 3 * (sX[["Mean"]] - sX[["Median"]])/sV

   summary_label <- sprintf ("Śr = %.1f\nMe = %.1f\nq1 = %.1f\nq3 = %.1f\nS = %.1f\nW = %.2f", 
     sX[["Mean"]], sX[["Median"]],
     sX[["1st Qu."]], sX[["3rd Qu."]], sV, skewness)

   if (minN < 1) {
   t <- sprintf("Rozkład głosów na %s\n%s ogółem %d komisji", co, region, kN ) } 
   else { t <- sprintf("Rozkład głosów za %s\n%s ogółem %d komisji (N>%d)", co, region, kN, minN ) } 

   h <- hist(df[[x]], breaks=kpN, freq=TRUE, col="orange", main=t, 
     ylab="%", xlab="% poparcia", labels=F, xaxt='n' )
     axis(side=1, at=kpN, cex.axis=2, cex.lab=2)
   ## pozycja tekstu zawierającego statystyki opisowe
   posX <- .5 * max(h$counts)
   text(80, posX, summary_label, cex=1.4, adj=c(0,1))
}

## Wczytanie danych; obliczenie podst. statystyk:
komisje <- read.csv("ws2014_komitety_by_komisja_T.csv", 
   sep = ';', header=T, na.string="NA");

komisje$ogn <- komisje$glosyNiewazne  / (komisje$glosy 
   + komisje$glosyNiewazne) * 100;

summary(komisje$PSL); summary(komisje$PiS); summary(komisje$PO);
fivenum(komisje$PSLp); fivenum(komisje$PiSp); fivenum(komisje$POp);

## ## ###
par(ps=6,cex=1,cex.axis=1,cex.lab=1,cex.main=1.2)
kpN <- seq(0, 100, by=2);
kpX <- c(0, 10,20,30,40,50,60,70,80,90, 100);
kN <- nrow(komisje)
region <- "Polska"
minTurnout <- 0

## cała Polska:
showVotes(komisje, "PSLp", "PSL", region, kN, minTurnout);
showVotes(komisje, "PiSp", "PiS", region, kN, minTurnout);
showVotes(komisje, "POp",  "PO",  region, kN, minTurnout);

## Cała Polska (bez małych komisji):
## ( późniejszych analizach pomijane są małe komisje)
minTurnout <- 49
komisje <- subset (komisje, glosyLK > minTurnout); 
kN <- nrow(komisje)

showVotes(komisje, "PSLp", "PSL", region, kN, minTurnout);
showVotes(komisje, "PiSp", "PiS", region, kN, minTurnout);
showVotes(komisje, "POp",  "PO",  region, kN, minTurnout);

## Typ gminy U/R (U=gmina miejska ; R=inna niż miejska)
komisjeW <- subset (komisje, typ == "U"); 
kN <- nrow(komisjeW)
region <- "Polska/g.miejskie"
showVotes(komisjeW, "PSLp", "PSL", region, kN, minTurnout);
showVotes(komisjeW, "PiSp", "PiS", region, kN, minTurnout);
showVotes(komisjeW, "POp",  "PO",  region, kN, minTurnout);

komisjeW <- subset (komisje, typ == "R"); 
kN <- nrow(komisjeW)
region <- "Polska/g.niemiejskie"
showVotes(komisjeW, "PSLp", "PSL", region, kN, minTurnout);
showVotes(komisjeW, "PiSp", "PiS", region, kN, minTurnout);
showVotes(komisjeW, "POp",  "PO",  region, kN, minTurnout);

## woj = dwucyfrowy kod teryt województwa:
komisje$woj <- substr(komisje$teryt, start=1, stop=2)

cN <- c("dolnośląskie", "dolnośląskie", "kujawsko-pomorskie",
 "lubelskie", "lubuskie", "łódzkie", "małopolskie", "mazowieckie",
 "opolskie", "podkarpackie", "podlaskie", "pomorskie", "śląskie",
 "świętokrzyskie", "warmińsko-mazurskie", "wielkopolskie",
 "zachodniopomorskie");
cW <- c("02", "04", "06", "08", "10", "12", "14", "16", "18",
 "20", "22", "24", "26", "28", "30", "32");

## wszystkie województwa po kolei:
for (w in 1:16) {
  wojS <- cW[w]
  ###region <- cN[w];
  region <- sprintf ("%s (%s)", cN[w], wojS);

  komisjeW <- subset (komisje, woj == wojS); ##

  showVotes(komisjeW, "PSLp", "PSL", region, kN, minTurnout);
  showVotes(komisjeW, "PiSp", "PiS", region, kN, minTurnout);
  showVotes(komisjeW, "POp",  "PO",  region, kN, minTurnout);
}
## ## koniec

Dla całej Polski wyniki są następujące:

Indywidualne wykresy zaś tutaj: #01 #02 #03 #04 #05 #06 #07 #08 #09 #10 #11 #12 #13 #14 #15 #16 #17 #18 #19 #20 #21 #22 #23 #24 #25 #26 #27 #28 #29 #30 #31 #32 #33 #34 #35 #36 #37 #38 #39 #40 #41 #42 #43 #44 #45 #46 #47 #48 #49 #50 #51 #52 #53 #54 #55 #56 #57 #58 #59 #60):

url | Tue, 02/10/2018 17:08 | tagi: , , ,
Wybory samorządowe 2014/2018. Profil wiekowy kandydatów cd

Rozkłady wieku kandydatów (2014/2018) i radnych wybranych do sejmików wojewódzkich 2014.

require(ggplot2)
### ### ###
co <- "Wiek kandydatów do sejmików wojewódzkich (2014 / Polska)"

## deklaracja końców klas (hist)
wB <- c(18,20,25,30,35,40,45,50,55,60,65,70,75,80,95);
wZ <- c(36,38,40,42,44,46,48,50,52,54,56);
wD <- seq(18, 92, by=2);

komitety <- "DB = Demokracja Bezpośrednia | RN = Ruch Narodowy | NPKM = Nowa Prawica JKM";

k <- read.csv("kandydaci_ws_2014.csv", sep = ';',  header=T, na.string="NA", dec=",");

with (k, table(komitet))

aggregate (k$wiek, list(Numer = k$komitet), fivenum)
## analiza dotyczy tylko kandydatów z komitetów ogólnopolskich
kandydaci <- subset (k,
    (komitet == "PSL" | komitet == "DB" | komitet == "PiS" | komitet == "PO" |
     komitet == "RN" | komitet == "NPKM" | komitet == "SLDLR"));
kandydaciPL <- kandydaci
kNum <- nrow(kandydaciPL) 
kNum

with (kandydaci, table(komitet))

aggregate (kandydaci$wiek, list(Numer = kandydaci$komitet), fivenum)

sumS <- summary(kandydaci$wiek)
sumV <- sd(kandydaci$wiek)
summary_label <- sprintf ("Śr = %.1f\nMe = %.1f\nQ1 = %.1f\nQ3 = %.1f\nS = %.1f",
        sumS[["Mean"]], sumS[["Median"]],
        sumS[["1st Qu."]],  sumS[["3rd Qu."]],  sumV)

#par() ## przegląd parametrów
# ps = stopień pisma
par(ps=11,cex=1,cex.axis=1,cex.lab=1,cex.main=1.2)
h <- hist(kandydaci$wiek, 
   breaks=wB, 
   freq=TRUE,
   col="orange", main=co,
   ylab="liczba kandydatów", xlab="wiek", labels=T, xaxt='n')
   axis(side=1, at=wB)
   text(80, 600, summary_label, cex = .8, adj=c(0,1))

par(ps=6,ce=2,cex.axis=2,cex.lab=2,cex.main=2)
h <- hist(kandydaci$wiek, 
   breaks=wD, 
   freq=TRUE,
   col="orange", main=co, ylab="liczba kandydatów", xlab="wiek", labels=T, xaxt='n' )
   axis(side=1, at=wB, cex.axis=2, cex.lab=2)
   text(80, 600, summary_label, cex=0.4, size=3, pos=3, adj=c(0,1))

### ### ###

aggregate (kandydaci$wiek, list(Numer = kandydaci$nr), fivenum)
aggregate (kandydaci$wiek, list(Numer = kandydaci$komitet), fivenum)

### ### ###

ggplot(kandydaci, aes(x=komitet, y=wiek, fill=komitet))  +
   geom_boxplot() +
   ylab("Wiek") +
   xlab("Komitet") +
   annotate(geom="text", x = 1, y = 90, hjust=0, size=3,
   label = komitety ) +
   guides(fill=FALSE) ;

### ### ### Pomorskie TERYT=22 ### ### ###
co <- "Wiek kandydatów do sejmików wojewódzkich (2014 / Pomorskie)"

kandydaci <- subset (kandydaci, (woj == "22" ))
aggregate (kandydaci$wiek, list(Numer = kandydaci$komitet), fivenum)

ggplot(kandydaci, aes(x=komitet, y=wiek, fill=komitet))  +
   geom_boxplot() +
   ylab("Wiek") +
   xlab("Komitet") +
   annotate(geom="text", x = 1, y = 90, hjust=0, size=3,
    label = komitety ) +
   guides(fill=FALSE) ;

sumS <- summary(kandydaci$wiek)

summary_label <- sprintf ("Śr = %.1f\nMe = %.1f\nQ1 = %.1f\nQ3 = %.1f",
    sumS[["Mean"]], sumS[["Median"]], sumS[["1st Qu."]],  sumS[["3rd Qu."]])

## przywrócenie wartości parametrów
par(ps=11,cex=1,cex.axis=1,cex.lab=1,cex.main=1.2)

h <- hist(kandydaci$wiek, 
   breaks=wB, 
   freq=TRUE,
   col="orange", main=co, xlab="wiek", ylab="liczba kandydatów", labels=T, xaxt='n')
   axis(side=1, at=wB)
   text(80, 40, summary_label, cex = .8, adj=c(0,1))

with (kandydaci, table(komitet))

### ## ###
kandydaciPL$okrN <- paste (kandydaciPL$woj, "o", kandydaciPL$okr)
a <- aggregate (kandydaciPL$wiek, list(Numer = kandydaciPL$okrN), fivenum)

h <- hist(a$x[,3], 
   breaks=wZ, 
   freq=TRUE,
   col="orange",
   main="Mediana wieku kandydatów wg okręgów [Polska 2014]",
   xlab="wiek", ylab="liczba okręgów", labels=T, xaxt='n')
   axis(side=1, at=wZ)
   text(80, 40, summary_label, cex = .8, adj=c(0,1))

## ## ### radni (czyli wybrani)
radni <- read.csv("radni_ws_2014.csv", sep = ';',
     header=T, na.string="NA", dec=",");

sumS <- summary(radni$wiek)
sumV <- sd(radni$wiek)

summary_label <- sprintf ("Śr = %.1f\nMe = %.1f\nQ1 = %.1f\nQ3 = %.1f\nS = %.1f",
    sumS[["Mean"]], sumS[["Median"]], sumS[["1st Qu."]],  sumS[["3rd Qu."]],  sumV)

h <- hist(radni$wiek,
   breaks=wB,
   freq=TRUE,
   col="orange", 
   main="Wiek radnych do sejmików wojewódzkich 2014", 
   ylab="liczba radnych", xlab="wiek", labels=T, xaxt='n')
   axis(side=1, at=wB)
   text(80, 80, summary_label, cex = .8, adj=c(0,1))
 




url | Mon, 01/10/2018 18:21 | tagi: , ,
Wybory samorządowe 2018. Profil wiekowy kandydatów



Na stronie https://wybory2018.pkw.gov.pl/pl/geografia#general_committee_stat jest informacja, że w wyborach na radnych sejmików wojewódzkich bierze udział/zostało zarejestrowanych 7076 kandydatów. Zaczynając od tej strony można się doklikać do stron dla każdego województwa oraz okręgu. Są to odpowiednio strony tworzone według schematu:

https://wybory2018.pkw.gov.pl/pl/geografia/220000#geo_committee_stat
https://wybory2018.pkw.gov.pl/pl/geografia/220000/voiv_council/1

Strona okręgu zawiera listę kandydatów a jej HTML jest tak nieskomplikowany, że zamiana na na przykład plik CSV jest banalnie prosta.

Po ściągnięciu 85 ,,stron okręgowych'' i ich zamianie na CSV, faktycznie otrzymałem plik składający się z 7076 wierszy, z których każdy jest postaci:

woj;okr;komitet;nr;kandydat;wiek;skad;oswidczenie;uwagi
02;o1;SLD-LR;1;SIKORA Arkadiusz;45;Oleśnica;;

Dalszą analizę przeprowadziłem wykorzystując R:

k <- read.csv("kandydaci_ws_2018_3.csv", sep = ';',  header=T, na.string="NA", dec=",");
with (k, table(komitet))
Komitet liczba kandydatów liczba okręgów
BS 447 62
K15 675 84
KW INICJATYWA OBYWATELSKA POWIATU TARNOGÓRSKIEGO 31 4
KW STOWARZYSZENIA LEX NATURALIS 12 2
KW STRONNICTWA PRACY 6 1
KW ŚLĄSKIEJ PARTII REGIONALNEJ 85 12
KW ŚLONZOKI RAZEM 40 5
KW WSPÓLNA MAŁOPOLSKA 51 KW WYBORCÓW AKCJA NARODOWA 27 5
KW WYBORCÓW ISKRA 38 6
KW WYBORCÓW JEDNOŚĆ NARODU -- WSPÓLNOTA 118 18
KW WYBORCÓW AGNIESZKI JĘDRZEJEWSKIEJ 5 1
KW WYBORCÓW MNIEJSZOŚĆ NIEMIECKA 31 4
KW WYBORCÓW POLSKIE RODZINY RAZEM 28 4
KW WYBORCÓW PROJEKT ŚWIĘTOKRZYSKIE BOGDANA WENTY 30 4
KW WYBORCÓW SPOZA SITWY 23 4
KW WYBORCÓW Z DUTKIEWICZEM DLA DOLNEGO ŚLĄSKA 45 5
KW ZJEDNOCZENIE CHRZEŚCIJAŃSKICH RODZIN 40 7
KW ZWIĄZKU SŁOWIAŃSKIEGO 173
PiS 722 85
PO-N 722 85
PSL 722 85
RAZEM 549 85
RN 528 79
SLD-LR 713 85
WiS 448 63
WwS 574 77
ZIELONI 349 57

Dalszą analizą objęto 10 komitetów, które zarejestrowały kandydatów w ponad połowie okręgów wyboczych (WsS to Wolność w Samorządzie; WiS to Wolni i Solidarni a BS oznacza Komitet pn Bezpartyjni Samorządowcy):

aggregate (k$wiek, list(Numer = k$komitet), fivenum)

wB <- c(18,20,25,30,35,40,45,50,55,60,65,70,75,80,95);
summary_label <- paste (sep='', "Średnia = ", sprintf("%.1f", sumS[["Mean"]]),
  "\nMediana = ", sumS[["Median"]],
  "\nQ1 = ", sumS[["1st Qu."]],  "\nQ3 = ", sumS[["3rd Qu."]] )

## wykres słupkowy
h <- hist(kandydaci$wiek, 
   breaks=wB, 
   freq=TRUE,
   col="orange", main="Wiek kandydatów do sejmików...",
   ylab="liczba kandydatów", xlab="wiek", labels=T, xaxt='n')
   axis(side=1, at=wB)
   text(80, 600, summary_label, cex = .8, adj=c(0,1))

   ## wykres pudełkowy
ggplot(kandydaci, aes(x=komitet, y=wiek, fill=komitet))  +
   geom_boxplot() +
   ylab("Wiek") +
   xlab("Komitet") +
   annotate(geom="text", x = 1, y = 90, hjust=0, size=3,
    label = "WwS = Wolność w Samorządzie | ...") +
   guides(fill=FALSE) ;
#komitetminq1Meq3max
1BS18.036.044.057.081.0
2K1518.032.042.053.082.0
3PiS18.040.051.059.079.0
4PO-N18.041.051.060.075.0
5PSL20.044.055.062.080.0
6RAZEM18.028.034.042.087.0
7RN18.027.034.048.081.0
8SLD-LR18.044.058.065.083.0
9WiS18.038.050.061.585.0
10WwS18.024.031.043.083.0
11ZIELONI18.034.044.055.080.0

To samo dla woj. pomorskiego:

kandydaci <- subset (kandydaci, (woj == "22" ))
aggregate (kandydaci$wiek, list(Numer = kandydaci$komitet), fivenum)

## itd...
1BS23.036.544.047.572.0
2K1523.037.050.058.073.0
3PiS21.042.549.063.571.0
4PO-N22.039.050.060.575.0
5PSL28.049.062.068.080.0
6RAZEM19.029.033.538.087.0
7RN21.027.031.549.066.0
8SLD-LR18.050.059.062.575.0
9WwS19.027.032.038.567.0
10ZIELONI19.039.048.054.067.0

url | Wed, 26/09/2018 09:51 | tagi: , ,
UE, PL i (rzekome) wartości

Poezja na unijnych salonach. Timmermans poleciał "Itaką"

Autor: Katarzyna Szymańska-Borginon

Ubrał się w szaty Odyseusza i chce wciąż utrzymywać się na fali. Nawet przez kolejnych pięć lat. A do tego potrzebna mu jest Polska.

Wiceprzewodniczący Komisji Europejskiej Frans Timmermans przyznał, że takie ma plany, używając przy tym poetyckiego porównania. Okazuje się, że gdy polityk w przypływie szczerości zaczyna cytować wiersze, to mówi coś bardzo prawdziwego o sobie samym i swoich rzeczywistych intencjach. Podczas konferencji prasowej po wysłuchaniu Polski w Radzie UE dziennikarka zapytała Fransa Timmermansa, czy nie obawia się, że wysłuchania Polski będą się mnożyć, a rezultatu nie będzie.

Wtedy polityk przypomniał wiersz Konstandinosa Kawafisa "Itaka". To jeden z moich ulubionych poetów -- pochwalił się komisarz. Nagrodą dla Odyseusza nie jest powrót do Itaki, ale sama podróż, którą odbył -- interpretował wiersz. W ten sposób opisałbym artykuł siódmy --dodał wiceprzewodniczący KE. Tłumaczył następnie, że najważniejsze w procedurze artykułu siódmego jest nie to, czy będzie głosowanie w Radzie UE (w sprawie sankcji, czy uznania Polski za kraj niepraworządny), ale "działania", "wspólny wysiłek", "dialog", "sam proces". Nadzwyczajna szczerość. Komisarz otwarcie więc powiedział to, co mówi się w  brukselskich kuluarach po cichu. Cel artykułu siódmego, czyli głosowanie w Radzie UE jest mniej istotny (bo i tak na razie nie ma szans realizacji), ważna jest sama "podróż", czyli "grillowanie Polski" i stałe "nękanie" poprzez wysłuchania, czy rezolucje. Ciekawe, czy Timmermans chciał to powiedzieć, czy powiedział za dużo. Bo na pewno nie służy to mobilizowaniu Warszawy.

W pewnym momencie Frans Timmermans nie miał nawet problemu z utożsamieniem siebie z Odyseuszem. Gdy dziennikarz zwrócił uwagę, że Odyseusz nie był ograniczony liczącą pięć lat kadencją, komisarz od razu podjął temat. A kto powiedział, że kończę w przyszłym roku? Nie mam zamiaru odejść. Mam zamiar kontynuować -- tłumaczył. I znowu, wpadając w sidła metafory, Timmermans potwierdził oficjalnie to, o czym szeptano od dawna. Zamierza powtórnie ubiegać się o stanowisko holenderskiego komisarza. Takie wyznanie na konferencji prasowej, gdy głównym tematem jest kwestia praworządności w Polsce - oznacza tylko jedno - połączenie obu spraw. W takiej sytuacji staje się jasne, że ostre stanowisko w sprawie Polski, poprawia Timmermansowi notowania. Być może nawet pomaga w robieniu kariery.

W kontekście zbliżających się wyborów europejskich (także na stanowiska komisarzy) sensowne jest więc pytanie o prawdziwe intencje wiceprzewodniczącego Timmermansa.

Jeżeli najważniejsza jego zdaniem jest "podróż" (grillowanie Polski), to wyjaśnia się dlaczego, nie było widać po stronie Timmermansa woli osiągnięcia kompromisu z Polską, w momencie, kiedy stanowisko objął Mateusz Morawiecki.

Teraz już sprawy zaszły za daleko. Z winy Warszawy, ale także dlatego, że Timmermans chce zrobić karierę kosztem Polski. I nie można udawać, że się tego nie widzi. Na zakończenie. Lepiej, żeby politycy nie cytowali poezji na konferencjach prasowych.

A tak to widzą w FT. Mniej poezji więcej konkretów. Co bardziej kuriozalne tezy wytłuściłem

The intervention of two big EU powers underscores the bloc's internal divisions over the rise of illiberal parties to government in central Europe and elsewhere. = Problemem nie jest są zatem Europejskie Wartości tylko to że nie ci rządzą co trzeba

We hope that Poland acts constructively and does not take actions which cannot be changed afterwards = nie twój zasrany interes Teutonie (zwłaszcza w kontekście poprzedniego zdania)

Tuesday's hearing in Brussels ended inconclusively = kogo zatem to oświadczenie dotyczy? No wygląda że nie PL tylko tych co nie dość entuzjastycznie chcą się dołączyć

Cały (prawie) tekst brzmi jak następuje:

Germany and France urge Poland to halt judicial overhaul

Germany and France have joined forces to press Poland to back down over a contentious judicial overhaul in the latest sign of the widening EU rift over the alleged authoritarian drift of some member states.

Michael Roth, Berlin's Europe minister, said in a joint statement with Paris on Tuesday that the Polish case had become ``more urgent than ever'' in the bloc's fight for fundamental values including the rule of law.

The Franco-German comments came in a hearing by the EU's other 27 member states of a case launched by the European Commission in December over Warsaw's possible breaches of EU values. The intervention of two big EU powers underscores the bloc's internal divisions over the rise of illiberal parties to government in central Europe and elsewhere.

The commission is expected to up the pressure on Poland on Wednesday by launching a separate complaint to the European Court of Justice over the judicial changes, EU diplomats said.

Mr Roth deplored the lack of progress made in five EU ministerial meetings so far on the so-called Article 7 case launched by the commission against Poland. He said the matter had become still more urgent as Warsaw had pressed ahead with rules to force some Supreme Court judges to retire and had begun steps to replace them.

We hope that Poland acts constructively and does not take actions which cannot be changed afterwards,'' he said.

Tuesday's hearing in Brussels ended inconclusively. Member states critical of Poland's action need a four-fifths majority of the EU27 to press the case forward -- a high bar. A move to impose sanctions such as suspending Warsaw's voting rights would require unanimity, which Hungary has said it will block. [...]

Frans Timmermans, EU commissioner, said there was not ``much good news'' from the hearing as Poland's government had failed to address concerns about its supreme court law in particular.

``The situation has not improved'' said Mr Timmermans.

He insisted that the power of the Article 7 process was not about getting member states to agree to sanction Poland but engage Warsaw in a process of dialogue.

``The reward for Ulysses is not arriving home but the voyage to get there. That is how I would like to describe Article 7. We have not reached Ithaca yet''.

url | Wed, 19/09/2018 16:35 | tagi: ,
Wybory 2014 (drugie pobranie danych)

Ściągnąłem protokoły z wyborów do sejmików wojewódzkich jeszcze raz. Punktem wyjścia były indywidualne pliki dla każdej gminy pobrane ze strony samorzad2014.pkw.gov.pl. Te pliki zawierają zsumowane wyniki wyborów dla danej gminy, ale także zawierają adresy URL do plików z wynikami na poziomie poszczególnych komisji (z tej gminy). Mają one adres URL wg schematu:

http://samorzad2014.pkw.gov.pl/357_rady_woj/0/NR_TERYT_GMINY

Mając zestawienie numerów TERYT gmin pobieram indywidualne pliki za pomocą prostego skryptu:

use LWP::Simple;
## Na wejściu lista 6-cyfrowych numerów gmin
while (<>) { $nn++;
   chomp();
   $File{"$_"}++;
   $url = "http://samorzad2014.pkw.gov.pl/357_Sejmiki_wojewodztw/0/$_";

   if ( $File{"$_"} > 1 ) {
   $file = "./html/$_" . "$File{$_}_"  . ".html"; }
   else { $file = "./html/$_" . ".html"; }

   getstore($url, $file);
   print STDERR "$nn = $url => $file... stored\n";
}

Z tych plików wydłubuję numery komisji (które są wartościami atrybutu href do pliku z protokołem i mają postać 321_protokol_komisji_obwodowej/NRKOMISJI) i zapisuję do pliku o strukturze:

020101;321_protokol_komisji_obwodowej/NRKOMISJI

Teraz z plików komisji odczytuję adresy URL protokołów wyborów do sejmików. Ten URL wygląda następująco:

020101;321_protokol_komisji_obwodowej/NRKOMISJI/rdw_COŚTAM

Przy czym COŚTAM to cyfra, np. rdw_5. Problem, że ta cyfra nie zawsze jest taka sama, stąd konieczność przeczytania pliku i odszukania w nim odsyłacza do protokołu wyborów do sejmików. Na szczęście pliki HTML są w miarę proste i do odszukania tego co trzeba wystarczy proste wyrażenie regularne. Poniższy skrypt po odszukaniu odsyłacza pobiera plik protokołu i zapisuje w katalogu ./protokoly_sw/:

#!/usr/bin/perl
use LWP::Simple;
my $log = "protokoly_sw.log";
open (LOG, ">$log") || die ("Nie mogę pisać do $log");

while (<>) {  $nn++;
  chomp();
  ($teryt, $postfix, $nrk) = split /[;\/]/, $_;

  unless ( -f "./protokoly_sw/$nrk" ) {
     $file = "./protokoly_sw/$nrk";

     open (LOGP, "./komisje/$nrk");

     while (<LOGP>) { chomp();
        if (/([^\/]*protokol_komisji.*)">Sejmik/) {## URL do protokołu
           $prot_url = $1;
           print "$1\n";
           last
        }
     }
     close (LOGP);
     $url = "http://samorzad2014.pkw.gov.pl/$prot_url";
     getstore($url, $file);
     print LOG "$nn = $url => $file stored\n";
     print STDERR "*** $nn = $url => $file stored\n";
  } else { print STDERR "*** $url => $file stored already\n"; }
}

Teraz analizuję pobrane protokoły zapisując informacje do trzech plików .csv: ws2014_komisje.csv ws2014_listy.csv oraz ws2014_kandydaci.csv. Pierwszy zawiera informacje zbiorcze takie jak liczba uprawnionych czy liczba głosów ważnych dla każdej komisji, drugi informacje zbiorcze o liczbie głosów oddanych na każdą listę wyborczą w każdej komisji a trzeci o liczbie głosów oddanych na każdego kandydata w każdej komisji. W związu z tym:

wc -l ws2014_*csv
  3062457 ws2014_kandydaci.csv
   301876 ws2014_listy.csv
    27393 ws2014_komisje.csv

Tj. ws2014_komisje.csv ma 27393 wierszy (i tyle jest komisji); ws2014_listy.csv ma 301876, a ws2014_kandydaci.csv ponad 3mln wierszy (wynik kandydata w każdej komisji, w której był zarejestrowany). Skrypt (nieco uproszczony) wydłubujący potrzebne informacje z pliku protokołu wygląda następująco:

#!/usr/bin/perl
open (LOG, ">>ws2014_log.log");

open (L, ">>ws2014_listy.csv");
open (K, ">>ws2014_kandydaci.csv");
open (X, ">>ws2014_komisje.csv");

$fileName = $ARGV[0];
$fileName =~ s/(\/[^\/]+)$/$1/;

while(<>) {
   chomp();
	    
   if (/<h2>/) {  $mode = 'I'; 

       while (<>) {
          chomp();
	  if (/<div>Kod terytorialny/) { $Teryt = next_line(); }
          if (/<div>Numer obwodu/) { $IdO = next_line(); }
           if (/<div>Adres/) { $Addr = next_line();
             $IdDataFull = "$fileName;$Teryt;$IdO;$Addr";
             $IdData = "$fileName;$Teryt;$IdO";
             last;
          }
       }
   }
   if ($mode eq 'I') {
   }

   if (/Wyniki wyborów na Kandydatów/) {  $mode = 'C' }
   if (/ZESTAWIENIE WYNIKÓW/) {  $mode = 'S';
       while (<>) {
          chomp();

	  ## pobieranie informacji nt. komisji
	  ## pominięto kilkanaście wierszy postaci:
	  ## if (/<div>###/) { $xxx = next_line() }
	  ## ...
          if (/<div>Liczba kart ważnych/) { $N_karty_wazne = next_line(); }
          if (/<div>Liczba głosów ważnych oddanych/) {
	    $N_glosy_wazne = next_line() ;
	    print X "$IdDataFull;$N_uprawnieni;$N_karty_otrzymane;$N_karty_niewykorzystane;"
	      . "$N_karty_wydane;$N_pelnomocnicy;$N_pakiety;$N_karty_wyjete;$karty_z_kopert;"
	      . "$N_karty_niewazne;$N_karty_wazne;$N_glosy_wazne;$N_glosy_niewazne\n";
	    last;
          }
       }

   ##########
   if (/Wyniki wyborów na listy/) {
     $mode = 'L' ;
     $colNo=0;
     %List = ();
     $start = 0;
     while (<>) {
          chomp();
          if (/<tbody>/) {$start = 1}
          if ($start == 1 ) {
              if (/<td[^<>]*>/ ) {
	         $colNo++;
                 $List{$colNo} = clean($_);
              }
              if (/<tr>/) {
                  $colNo=0;
                  %List = ();
		}
	      if (/<\/tr>/) {
		$line_ = "$IdData;";
		for $x (sort keys %List ) { $line_ .= "$List{$x};" }
		print L "$line_\n";
              }
              if (/<\/tbody>/ ) {###
                 last;
              } ##//
	    }
	}
   }
   ###########

   if ($mode eq 'C' && /<tr>/) {
       $colNo=0;
       %Candidate = ();
       while (<>) {
	 chomp();
	 
          if (/<table>/) { next } ## skip this line

	 if (/<\/tr>/ ) { 
              $line_ = "$IdData;";
              for $x (sort keys %Candidate ) {  $line_ .= "$Candidate{$x};" }
              print K "$line_\n";
              last; 
          } ## //end 
          if (/<td[^<>]*>/ ) { #############
	       $colNo++;
               $Candidate{$colNo} = clean($_);
	     }
	}
     }

}

### ### ### 

sub clean {
  my $x = shift;

  $x =~ s/<[^<>]+>//g;
  $x =~ s/^[\t ]+|[\t ]+$//g;
  $x =~ s/"//g;
  return ($x)
}


sub next_line {
   while (<>) {
      chomp();
      return (clean ($_));
   }
}

close(L);
close(K);
close(X);

print LOG "$fileName...\n";
close (LOG);

Kilka minut i po bólu. Teraz sprawdzam czy to co się pobrało i to co było do tej pory z grubsza się zgadza.

#!/usr/bin/perl
$pobranie1="komisje-frekwencja-ws2014.csv"; ## z 2015r
$pobranie2="ws2014_komisje.csv";

open(WX, $pobranie1) || die "cannot open $pobranie1\n";

while (<WX>) {
  chomp();
  ($teryt, $nrk, $nro, $adres, $lwug, $lkw, $lkwzu, 
        $lgnw, $lgw, $freq, $pgnw) = split /;/, $_;
  $LWUG1{"$teryt:$nro"} = $lwug; ## liczba wyborców
  $LGW1{"$teryt:$nro"} = $lgw; ## glosy ważne
  $ADDR1{"$teryt:$nro"} = $adres; ##
}
close (WX);

### ### ###

open(WY, $pobranie2) || die "cannot open $pobranie2\n";
while (<WY>) {
  chomp();
  ($id, $teryt, $idk, $adres, $uprawnieni, $kartyOtrzymane, 
    $kartyNiewydane, $kartyWydane, $pelnomocnicy, $pakiety, 
    $kartyWyjete, $koperty, $kartyNiewazne, $kartyWazne,
    $glosy, $glosyNiewazne) = split /;/, $_;
  $LWUG2{"$teryt:$idk"} = $uprawnieni;
  $LGW2{"$teryt:$idk"} = $glosy;
  $ADDR2{"$teryt:$idk"} = $adres;
}
close (WY);

### LWUG1 ma mniej głosów ## ### ### ### ###
for $ik ( sort keys %LWUG1 ) {
    if ( ( $LWUG1{$ik} != $LWUG2{$ik} ) || 
       ($LGW1{$ik} != $LGW2{$ik} )) {
       print "$ik $LWUG1{$ik} = $LWUG2{$ik} $LGW1{$ik} = $LGW2{$ik}\n";
    }
}

Identyfikatorem komisji na stronach PKW jest 6-cyfrowy numer TERYT + numer komisji (w gminie). Porównanie 26477 komisji pobranych 2015r. z 27446 komisjami pobranymi teraz (+969 komisji) daje w rezultacie:

021901:1 2020 = 2020 914 = 913
021901:2 2189 = 2189 742 = 741
026401:112 2039 = 2039 746 = 744
026401:17 2001 = 2001 536 = 534
026401:178 2073 = 2073 765 = 762
026401:18 1600 = 1600 474 = 473
026401:194 1615 = 1615 637 = 628
026401:215 1457 = 1457 528 = 527
026401:245 2058 = 2058 695 = 697
026401:42 1892 = 1892 504 = 503
026401:70 1823 = 1823 597 = 593
026401:78 1918 = 1918 762 = 760
241004:4 994 =  850 350 = 350
241005:13 1736 = 1736 764 = 762
241005:22 1422 = 1422 569 = 567
241005:6 1441 = 1441 732 = 723
241005:7 1668 = 1668 623 = 621

Czyli dane nie były picowane :-) Dobrze wiedzieć

Pobrane dane są tutaj.

url | Wed, 19/09/2018 08:54 | tagi: , ,
Wybory 2014 (revisited)
https://raw.githubusercontent.com/hrpunio/MBlog/master/pic/pgnw_correlations-0.png
pgnw vs PSL
https://raw.githubusercontent.com/hrpunio/MBlog/master/pic/pgnw_correlations-1.png
pgnw vs PiS
https://raw.githubusercontent.com/hrpunio/MBlog/master/pic/pgnw_correlations-2.png
pgnw vs PO

Że się zbliżają wybory samorządowe, to ja znowu pochyliłem się nad wynikami z poprzednich tj. z roku 2014. Piszę znowu, bo dane pobrałem dawno temu ze strony http://wybory2014.pkw.gov.pl/. Przypomnę też, że wybory te zakończyły się nielichym skandalem. Po pierwsze system informatyczny Państwowej Komisji Wyborczej zawiódł spektakularnie. Po drugie, nie tylko tradycyjnie odnotowano niską frekwencję, ale dodatkowo i z niewiadomych do końca powodów, doszła niesłychanie wysoka liczba oddanych głosów nieważnych. Po trzecie dramatyczna różnica pomiędzy wynikiem prognozy exit pool, a wynikiem oficjalnym spowodowała, że ówczesna opozycja oskarżyła ówczesnych rządzących o fałszerstwo wyborcze. Różnica sama w sobie nie jest oczywiście czymś niemożliwym, ale też prognozy exit pool są no raczej na tyle dokładne, że na ich podstawie jedni uznają się za wygranych, a inni za przegranych w tzw. cywilizowanym świecie. A w PL akurat ktoś się rąbnął o 50%.

BTW wyobraźmy sobie reakcję #SektyPancernejKonsytytucji (aka #OpozycjiTotalnej) na coś takiego dziś.

Wracając do bazy protokołów. Jest ona niekompletna, co było stanem na czas po wyborach kiedy była pobierana i co (według mnie) było spowodowane przez system informatyczny PKW (czytaj chaos w PKW). Teraz widzę, że baza na stronie PKW wygląda inaczej i być może jest kompletna, ale nie chce mi się tego (na razie) jeszcze raz pobierać. Moja baza jest oryginalna, a nie picowana (żart :-)), a zawiera ponad 96% tego co powinna zawierać (zakładając, że obwodów jest 27435 ja mam 26495). Ta baza jest dostępna tutaj.

Mówiąc konkretnie i porównując z listą 27435 obwodów braki są następujące: Dolnośląskie = 38; Kujawsko-Pomorskie = 17; Lubelskie = 14; Lubuskie = 12; Łódzkie = 14; Małopolskie = 22; Mazowieckie = 1139; Opolskie = 7; Podkarpackie = 10; Podlaskie = 5; Pomorskie = 20; Śląskie = 28; Świętokrzyskie = 13; Warmińsko-Mazurskie = 12; Wielkopolskie = 14; Zachodniopomorskie = 18. Zatem baza jest w miarę kompletna (za wyjątkiem woj. Mazowieckiego, w przypadku którego protokoły nie były opublikowane nawet kilka miesięcy po wyborach).

Każdy protokół zawiera adres i kod teryt komisji obwodowej, tyle że TERYT jest 6 cyfrowy, a nie pełny. Z tego powodu klasyfikację miasto/wieś dokonałem w taki sposób że gmina jest `miejska' jeżeli wg klasyfikacji teryt ma ona typ `gmina miejska' (U) a w każdym innym przypadku (miejsko-wiejska, wiejska, miasto w gminie miejsko-wiejskiej albo obszar wiejski w gminie miejsko-wiejskiej) gmina jest `wiejska' (R). Jest 9996 gmin typu U, a 16881 gmin jest typu R.

Na początek wykonałem prostą analizę eksploracyjną licząc wartości średnie, korelacje oraz regresje pomiędzy głosami nieważnymi a poparciem dla partii. Stosowny fragment R-skryptu wygląda następująco:

## Korelacje pomiędzy % głosów a % głosów niewaznych
cor(d$pgnw14, d$pslp, use = "complete")

## Wykresy rozrzutu  ## ###
lm <- lm(data=d, pslp ~ pgnw14 ); summary(lm)
lmc <- coef(lm);
title <- sprintf ("psl = %.2f pgnw + %.1f", lmc[2], lmc[1] );

ggplot(d, aes(x = pgnw14, y=pslp )) +
  geom_point(colour = 'blue') +
  ggtitle(title) +
  theme(plot.title = element_text(hjust = 0.5)) +
  xlab(label="pgnw") +
  ylab(label="pslp") +
  geom_smooth(method = "lm", colour = 'black')

lm <- lm(data=d, pisp ~ pgnw14 ); summary(lm)
https://raw.githubusercontent.com/hrpunio/MBlog/master/pic/mapa-pgnw0.png
pgnw
https://raw.githubusercontent.com/hrpunio/MBlog/master/pic/mapa-pgnw1.png
pgnw vs psl
https://raw.githubusercontent.com/hrpunio/MBlog/master/pic/mapa-pgnw2.png
pgnw vs pis
https://raw.githubusercontent.com/hrpunio/MBlog/master/pic/mapa-pgnw3.png
pgnw vs po

Wynik są następujące:

  ## pgnw (procent głosów nieważnych)
  Min. 1st Qu.  Median    Mean 3rd Qu.    Max.  Grupa
  0.00    8.20   11.67   12.82   16.05   56.41  Razem
  0.00   12.55   18.18   18.75   23.98  100.00  Miasto
  0.00   17.05   21.37   22.15   26.38   77.42  Wieś
  ## poparcie
  ## Miasto
  0.00   6.719   10.12   13.82   16.53  100.00  PSL
  0.00   20.83   25.91   27.12   32.35  100.00  PiS
  0.00   25.20   32.56   32.90   39.84   85.00  PO
  ## Wieś
  0.00   20.11   32.61   35.86   49.27  100.00  PSL
  0.00   15.42   22.60   25.55   32.96  100.00  PiS
  0.00   7.748   15.43   18.53   26.44   92.65  PO
  ## wsp. korelacji (pgnw vs poparcie)
  ## PSL             PiS             PO         Grupa
  0.4053339      -0.1972364      -0.3321558     Razem
  0.4333851      -0.2104114      -0.2648886     Miasto
  0.0905243      -0.1931745      -0.0370197     Wieś

Liczba głosów nieważnych była wyższa na obszarach wiejskich (średnia 22,15% vs 18,75%). Poparcie dla czołowych partii był na wsi najwyższe dla PSL, potem PiS a na końcu PO; w mieście dokładnie odwrotnie. Wystąpiła dodatnia korelacja pomiędzy liczbą głosów nieważnych, a poparciem w przypadku PSL. Nieoczekiwanie była większa na obszarach większych miast, a mniejsza poza nimi. W przypadku zarówno PiS jak i PO korelacja była ujemna (większy udział głosów nieważnych oznacza mniejsze poparcie). Zależność pomiędzy liczbą głosów nieważnych a poparciem ilustrują także wykresy.

Jest zatem różnica między `miastem' a `wsią'. A czy jest różnica w decyzjach w aspekcie przestrzennym? Obliczyłem średnią wartość współczynnika korelacji pomiędzy liczbą głosów nieważnych, a poparciem w powiatach:

powiat <- substr(d$teryt, 0, 4)
d[,"powiat"] <- powiat;

p.psl <- d %>% group_by(powiat) %>% summarise(V1=cor(pgnw14,pslp))
p.pis <- d %>% group_by(powiat) %>% summarise(V1=cor(pgnw14,pis))
p.po  <- d %>% group_by(powiat) %>% summarise(V1=cor(pgnw14,po))

print(p.psl, n=Inf)
print(p.pis, n=Inf)
print(p.po, n=Inf)

> fivenum(p.psl$V1)
[1] -0.5984602  0.1066262  0.2906827  0.4491453  0.8536293
> fivenum(p.pis$V1)
[1] -0.7985236 -0.4216242 -0.2965959 -0.1658306  0.1877184
> fivenum(p.po$V1)
[1] -0.8092580 -0.4891280 -0.3725242 -0.2420753  0.4726305

Jak widać są znaczące różnice...

Google Fusion Tables (GFT)

Jedyne narzędzie jakie znam/mam/używam do przestrzennej wizualizacji danych.

Protokoły komisji zawierają adresy. Wykonałem geokodowanie tychże adresów za pomocą geocodera Google. Z różnym skutkiem, mianowicie 27435 komisji zgeokodowało się na 21716 różnych adresów. Zdarza się faktycznie, że dwie (a nawet więcej) komisje mają siedzibę w tym samym budynku. Nie mając ani chęci ani czasu na dokładną inspekcję sprawdziłem jak wygląda rozkład siedzib/adresów względem liczby komisji:

perl chk_duplicated_coords.pl | sort  -n
...
15 49.9062558 21.7658112
16 51.663189 16.5125886
18 51.2070067 16.1553231
20 49.9953359 21.3075494
28 50.5798603 21.6925451
40 52.6483303 19.0677357
50 54.3520252 18.6466384

Pierwsza kolumna to liczba komisji. Można przyjąć że jeżeli liczba komisji jest większa od 4 to doszło do błędnego geokodowania. Takich wątpliwych adresów jest:

perl chk_duplicated_coords.pl | awk '$1 > 4 {print $0}' | wc -l
142  

Zostawiam ten problem na później przy czym z punktu widzenia wizualizacji za pomocą GFT, coś co ma identyczne współrzędne się nałoży na siebie, np. 50 komisji o współrzędnych 54.3520252/18.6466384 będzie pokazane na mapie jako jedna kropka (przy założeniu że zastosujemy kropkę do wizualizacji oczywiście). Żeby wszystkie komisje były widoczne (nawet te które mają prawidłowe ale identyczne współrzędne), to można zastosować losowe drganie (jitter). Tyle na razie.

Plik powiaty_korelacje_pgnw_poparcie.csv zawiera m.in. obliczone w R współczynniki korelacji pomiędzy liczbą głosów nieważnych, a poparciem. Mam też plik zawierający obrysy powiatów i ich środki (teryt_powiaty_BB.csv). Na pierwszej mapie przedstawiono przeciętne wartości pgnw (odsetek głosów nieważnych). Czerwone i niebieskie kropki oznaczają wysokie wartości pgnw. Wyraźnie widać, że powiaty na zachodzie / północnym zachodzie mają wyższe wartości pgnw niż w pozostałej częsci kraju. Takiej przestrzennej zależności nie widać dla trzech pozostałych mapek, ilustrujących przeciętną wielkość współczynnika korelacji pomiędzy poparciem dla partii (PSL, PiS, PO) a odsetkiem głosów nieważnych. Wniosek: sympatycy wszystkich partii mylili się podobnie, a ich błąd był korzystny dla PSL.

Dane, skrypty i reszta wykresów są tutaj. Mapy GFT: poparcie/pgnw/powiaty oraz pgnw/obwody.

url | Thu, 13/09/2018 09:56 | tagi: , ,
Królowa Polski

Kto z kim przestaje takim się staje (ludowe). Wydawało się parę lat temu że Ann Applebaum to mądra babka (kiedyś Pulitzer), która wprawdzie popełniła mezalias, zauroczona tym swoim Radkiem, no ale takie rzeczy się przecież zdarzają a miłość potrafi być ślepa (znowu ludowe). No niestety do czasu:

Polacy nie rozumieją, jak wielką frustrację w Brukseli budzi Polska -- mówi Anne Applebaum w programie 'Świat, którym żyjemy'. Dodaje, że był moment, kiedy wydawało się, że Warszawa będzie jednym z liderów Unii, a teraz jest poczucie, że to była gra i że może PiS jest autentyczną twarzą Polski. Publicystka Washington Post uważa, że pozycja Polski w strukturach międzynarodowych będzie w dużej mierze zależała od wyniku następnych wyborów. 'Nie wiem, jak długo Polska będzie w Unii Europejskiej i w NATO; jeżeli Polacy w kolejnych wyborach znów zagłosują na PiS, to Zachód zapyta, czy w Europie jest nadal miejsce dla Polski' -- przewiduje laureatka nagrody Pulitzera.

Problemem "Polaków" wszakże nie jest PiS, ale co zamiast PiSu. Tzn. żeby nie wygrał PiS musi być alternatywa, a partia pana Schetyny jest taka sprawna/wiarygodna/ jak jest sprawny/wiarygodny inaczej jej przewodniczący. A to jest zdecydowanie największa partia opozycyjna i jedyny teoretyczny kandydat na odebranie władzy w demokratycznych wyborach PiSowi.

Zatem jeżeli p. Applebaum chce ocalić Polskę, to musi postąpić jak Bolec-Legenda-Wałęsa: nie chcem ale muszę.

Co muszę to jest w tytule...

url | Mon, 05/03/2018 09:53 | tagi: , , , ,
Wybory parlamentarne z 2015 w woj pomorskim

Po latach wykonałem analizę (z rozpędu, zmotywowany analizowaniem wyników Danuty Hojarskiej). W województwie pomorskim są dwa okręgi wyborcze: 25 (Gdańsk) oraz 26 Gdynia. Zbiorcze wyniki z protokołów, które w swoim czasie pobrałem ze strony PKW są następujące:

  Komisje obwodowe wg ROZKŁADU głosów ważnych
  ** Okręg 26 126707 ważne głosy **
Kandydat    Komitet    Głosy Komisje Max      %  Średnia   Me 
-------------------------------------------------------------
Gromadzki   Stonoga     1521  795     12   1.20    1,9    1.0
Furgo       Petru      14239  795    224  11.23   17,9  10.00
Zwiercan    Kukiz      11801  795     65   9.31   14.8   13.0
Miller      Zlew       11524  795     72   9.09   14.5   10.0
Lewna       Psl         4644  795    213   3.66    5.8    2.0
Wysocki     Korwin      9491  795     54   7.49   11.9   10.0
Biernacki   Po         42535  795    312  33.56   53.5   38.0
Szczypińska PiS        30952  795    150  24.42   38.9   35.0

** Okręg 25 130348 ważne głosy **
Kandydat    Komitet    Głosy Komisje Max      %  Średnia   Me
-------------------------------------------------------------
Hojarska    Stonoga     1668  656    152   1.27    2.5    1.0
Lieder      Petru      23155  656    256  35.76   35.3   22.0
Błeńska     Kukiz       9410  656     45   7.21   14.3   14.0
Senyszyn    Zlew       13143  656     75  10.08   20.3   17.0
Sarnowski   Psl         3457  656    134   2.65    5.3    2.0
Rabenda     Korwin      8903  656     65   6.83   13.6   11.0
Krotowska   Razem       6995  656     45   5.36   10.7    9.0
Korol       PiS        28657  656    252  21.98   43.7   30.0
Sellin      PiS        34960  656    213  26.82   53.3   40.0

Te wyniki mogą (ale nie muszą) się ciut-niewiele różnić od oficjalnych--nie porównywałem

Czyli na przykład pani Hojarska dostała 1668 głosów w 656 komisjach co daje średnio 2,5 głosa/komisję (Mediana 1 głos). Rozkłady liczby głosów przedstawione w postaci wykresów słupkowych wyglądają następująco (pierwsze trzy rysunki to okręg 25, następne trzy to okręg 26):

No i wreszcie przedstawienie wyników na mapie z wykorzystanie Google Fusion Tables link do GFT:

Link do danych jest tutaj.

url | Tue, 27/02/2018 10:01 | tagi: , , ,
Protest przeciwko zachowaniu

Kuriozum goni kuriozum. Robiący wiatr od 2 lat debile (KOD, i inni) protestowali 17.01.2018 przeciw (zachowaniu się :-) opozycji. Czemu debile?

Bo działają jak debile. Większość parlamentarna nie uchwali ustawy zgłoszonej przez mniejszość, to jest oczywiste. Że nie przyjmie ustawy sprzecznej ze swoim programem -- podwójnie oczywiste. Po cóż więc tracić czas na projekt mający dokładnie 0 (zero) szans powodzenia na realizację, i z tego powodu wszczynać kryzys?

Jeżeli z powodów czysto wizerunkowo-propagandowych, to kto-kogo bardziej oszukał? Biernacki przecinający PR-owy balon od razu, czy ci co chcieli gonić zajączka dalej? No i wreszcie z punktu widzenia elementarnych zasad demokracji parlamentarnej: oszukali was?, to głosujcie na innych. To takie proste. Ale tych innych-ni-ma, i tu jest problem. Stąd pewnie ,,protest przeciwko zachowaniu'' (domagamy się zmiany ,,zachowania''). Arbitrzy elegancji się kurna znaleźli...

It is better to keep your mouth closed and let people think you are a fool than to open it and remove all doubt.

url | Tue, 23/01/2018 03:52 | tagi: , , ,
Finis pseudoelit?

Wpis pro memoria, bo to co się dzieje teraz w pale się nie mieści. Zatem kalendarium pokrótce:

9 stycznia 2018. Tzw. wielka rekonstrukcja rządu, w tym pozbycie się A. Macierewicza. Część tzw. twardego elektoratu PiS demonstruje jawnie wielkie rozczarowanie. Pachnie problemami dla partii rządzącej, potencjalnym podziałem. AntyPiS ma nadzieję--wydaje się uzasadnioną. Przew. Schetyna wieszczy wojnę domową. Wygląda na poważny kryzys... (szczegóły tutaj)

Dzień po, czyli 10 stycznia w Sejmie procedują (pierwsze czytanie) tzw. obywatelskiego projektu ustawy pn O prawach kobiet i świadomym rodzicielstwie. Ustawa jest światopoglądowa, a dobrą tradycją jest nie zarządzania dyscypliny w takich sprawach, zwłaszcza w partiach światopoglądowo zróżnicowanych. Ww. Schetyna uważa inaczej--Platforma Obywatelska jest jedynym klubem (chyba), w którym taką dyscyplinę zarządzono. Nb. ustawa nie ma szans na uchwalenie (co jest oczywiste--przecież partia rządząca nie uchwali ustawy zgłoszonej przez opozycję i to taką z pianą na pysku chociażby dlatego, że dziwne byłoby branie na siebie odpowiedzialności za realizowanie nie swojego programu wyborczego -- przecież PiS nie obiecywało w tym temacie złagodzenia ustaw w/s aborcji czy obowiązkowej edukacji/indoktrynacji seksualnej dzieci) i jest wysoce beznadziejna merytorycznie.

Projekt zostaje odrzucony i nie przechodzi do prac w komisjach. Staje się tak z powodu dziwnej obstrukcji ze strony części posłów opozycji (dziwnej bo w sumie nie wiadomo czym motywowanej). Otóż 40% Nowoczesnej i 25% posłów PO nie popiera wniosku o dalsze procedowanie projektu, który to wniosek popierają źli ludzie z PiS typu prezes, b. minister Macierewicz czy Krystyna Pawłowicz. Wywołuje to szok, oburzenie i niedowierzanie:-) Trzech posłów PO zostaje usuniętych z partii...

W mediach, także antPiSowych, następuje wysyp opinii/komentarzy/analiz, iż opozycja jest beznadziejna i potrzebna jest inna, nowa. 2 lata wysiłków antyPiSa poszło się bujać albo inaczej: po 2 latach intensywnych wysiłków antyPiS jest dużo głębiej w ciemnej dupie niż był w 2015 roku jak przerżnął wybory i wydawało mu się, że już gorzej być nie może. Taka teza jest powszechna, nie ma innej narracji. Oczywiście nie wywołuje to refleksji: czy naprawdę jesteśmy tak (intelektualnie) wspaniali jak to sobie wmówiliśmy. Tradycyjnie winni są ONI (tym razem politycy typu Schetyna--tak jakby intelektualnie wspaniali nie mogli sobie wybrać lepszych i byli skazani na nieudaczników).

Jednocześnie pojawiają się głosy przed sesją Sejmu, że PiS samo wywoła kryzys--nie uchwalenie budżetu skutkuje -- zgodnie z konstytucją -- przyśpieszonymi wyborami. W sytuacji kompletnego uwiądu opozycji wynik tych wyborów byłby raczej łatwy do przewidzenia. Nic takiego nie następuje -- na tej samej sesji Sejmu bez zbędnych ceregieli uchwalono budżet na 2018 rok. Żaden z liderów opozycji nie zabrał głosu w sprawie. Jaskrawo to kontrastuje z tzw. puczem organizowanym rok wcześniej.

Ekspert TVN czyli R. Giertych twierdzi Nowacka jest agentem Kaczyńskiego (twitter: podejrzewam, że projekt @barbaraanowacka został zrobiony na zlecenie @pisorgpl).

W kolejnych dniach opozycja demonstruje nadzwyczajną skłonność do autodestrukcji (powód: umysłowa niesprawność?). Przykładowo była premier Kopacz/Nowa przewodnicząca Lubnauer opowiadają w detalach w mediach jak to było (zamiast milczeć i/lub zmienić temat). Lubnauer jest powszechnie wyśmiewana za naiwne tłumaczenia w rodzaju: jesteśmy nową partią i nie mamy jeszcze doświadczenia. Poseł Mężydło (PO): nie ma co myśleć o wygraniu wyborów w 2019. Powszechne są opinie, że partia pn. Nowoczesna jest już trupem.

W tle tych wydarzeń i na dokładkę osobnik, który wydawał się elitom wybitny, kompetentny i świetny pod każdym względem czyli R. Petru obwieszcza z poważną miną inicjatywę ponadpartyjną (cokolwiek to znaczy) pn. planPetru. PlanPetru póki co to jednostronicowa ulotka umieszczona na zarządzanej przez WordPressa stronie pn. planpetru.pl

Przed Sejmem demonstracja rozczarowanych. Nad tłumkiem powiewają czerwone flagi. IMO w PL maszerowanie z czerwoną flagą wydaje się samobójstwem, ale kto bogatemu zabroni? No i wreszcie "elita" nie używa fałszywych tylko przychodzi ze swoimi (flagami).

url | Mon, 15/01/2018 07:17 | tagi: , , ,
Duńskie crime story z równością płci w tle

https://raw.githubusercontent.com/hrpunio/MBlog/master/pic/paradox_wg_politruki.png

W Danii doszło do morderstwa. Ponieważ ofiarą jest kobieta i dziennikarka, do tego znana w pewnych kręgach sprawa jest komentowana (w tychże kręgach). Niejaka i bliżej mi nieznana pani Sruthi Gottipati z Guardiana w rubryce Gender zresztą czyli bynajmniej nie kryminalnej stwierdza: After traveling and reporting in Africa, Asia and the Caribbean, it was in her native Scandinavia, a supposed bastion of gender parity, in which Kim has disappeared. Zatem wg. pani Gottipati nastąpił paradoks: zamordowana uszła z życiem w krajach znanych z męskiej opresji wzg. kobiet, a nie dała rady w państwie, który jest bastionem równości płci.

Po pierwsze w swoim ptasim móżdżku pani Gottipati nie potrafi zauważyć, że jak równość to równość. Co to za równość jak ofiarą morderstwa może paść wyłącznie facet, a jak kobieta to paradoks i skandal. W bastionie równości rozkład ofiar (i sprawców) powinien być fifty-fifty, a jest zaledwie 30--70 (na niekorzyść kobiet, w sensie że tylko 30% ofiar to kobiety). Dania ma tutaj jeszcze sporo do nadrobienia zanim będzie można ją nazwać bastionem równości.

Po drugie i to mnie zastanawia: pani Gottipati używa terminu gender parity, który jest dużo mniej popularny niż gender equality. Wg eige.europa.eu/ Gender parity is a numerical concept related to gender equality, czyli jest to miara równości płci. Zatem Dania jest bastionem pod względem poprawności wskaźników mierzących równość płci. Nie wiem czy pani Gottipati chciała to faktycznie powiedzieć (być może nie rozróżnia po prostu obu pojęć), ale wygląda że coś takiego chlapnęła--idiotyzm do kwadatu.

No i po trzecie paradoks Gottipati ma się jak pięść do nosa w konfrontacji nie tylko z zwykłą logiką ale z danymi. Bo jeżeli jednak przyjmiemy za pozytywną sytuację, w której współczynnik zabójstw nie jest jednakowy wg. płci, tylko dla kobiet jest mniejszy, to w wybranych krajach kształtuje się on (ten współczynnik) następująco:

https://en.wikipedia.org/wiki/Homicide_statistics_by_gender
Kraj   Liczba zabójstw  WspZ       %M      %K    Rok
Czech Republic	   105	 1.0	54.3%	45.7%	2011
Denmark	            47	 0.8	66.0%	34.0%	2010
Finland	            89	 1.6	53.9%	46.1%   2010
Norway	           111	 2.2	53.2%	46.8%   2010
Poland	           449	 1.2	73.2%	26.8%	2010
Colombia	14,670	30.8	91.6%	 8.4%   2012
Brazil	        50,108	25.2	89.8%	10.2%	2010
Argentina	 2,237	 5.5	83.6%	16.4%   2011
Pakistan	13,846	 7.7	76.7%	23.3%   2010
Indonesia	 1,456	 0.6	80.3%	19.7%   2010
Dominican Rep.   2,268	22.1	91.1%	 8.9%	2010
Honduras	 7,172	90.4	93.2%	 6.8%	2010
gdzie: %M/%K -- odsetek ofiar mężczyźni/kobiety;
WspZ -- współczynnik zabójstw
czyli liczba zabójstw / 100 tys mieszkańców

Kilka interesujących stron przy okazji United Nations Office on Drugs and Crime oraz ourworldindata.org

PS: lokalna tuba lewactwa na PL czyli politruka.pl in-extenso relacjonowała całą ,,aferę'' łącznie ze bezrefleksyjnym skopiowaniem stosownego fragmentu z Guardiana (dowód w załączeniu)

url | Mon, 18/09/2017 12:26 | tagi: , , ,
Jak się robi propagandę na przykładzie problemu tzw. uchodźców

Przewodniczący Schetyna zmieniając zdanie o 180 stopni w/s przyjmowania do Polski emigrantów zaskoczył. Obserwuje się ozok-oburzenie-niedowierzania po stronie oświeconego-liberalizmu a sam przewodniczący zaś tłumaczy się pokrętnie i kluczy.

Trzy stanowiska można wyróżnić w sprawie: oświecony-liberalizm oczywiście jest za i w każdej liczbie; "antyterroryści" straszą, że przyjadą zwolennicy ISIS i absolutnie są przeciw; zdroworozsądkowcy uważają, że nie należy pomogać w ten sposób, bo to jest sposób wysoce nieefektywny. Pierwsze dwa stanowiska to demagogia -- jeszcze nie widziałem sensownych argumentów za (wszystko opiera się na wierze, "wartościach" i uczuciach). Nie dziwi w związku z tym, że oświeceni chętnie polemizują z antyterrorystami, ale już z zwolennikami zdrowego rozsądku nigdy.

Wywiad z "politolożką" w politruka.pl (niezbędnika każdego yntyligęta), jest przykładem takiej typowej topornej propagandy. Tekst za zrzucie z ekranu moje komentarz poniżej:

0. Tekst ma stwarzać wrażenie, że jest wysoce naukowy (słowo NAUKA pojawia się tam co chwila jako synonim słowa prawda--znany chwyt mający ustawić na baczność czytelników: my naukowcy vs ciemniaki bez tytułów naukowych z kruchty)

1. Teza na początek "należy ich brać" i w tym celu otworzyć granice (nie czy w ogóle albo czy są lepsze sposoby pomocy -- nie myśleć brać)

2. Jest ich mało a pensje wszystkich rosną (naukowo udowodnione-twierdzi pani politolożka :-). Jednym słowem nie ma się czego bać bo zawsze tak było a korzyści są ogromne...

3. Nie ma sensu rozróżniać uchodźców i emigrantów, brać wszystkich, którzy tu lezą (no to niestety słabo naukowo udowodnione; wręcz można powiedzieć, że to jest nieprawda)

4. Na pytanie o politykę integracyjną pani zauważa że obcy są ciągle second-class-citizens, a żeby to zmienić "potrzebne są instytucje" -- niezwykle głęboka analiza jednym słowem... Pytanie ile te instytucje by kosztowały podatnika nie pada...

5. "Inwestując w Afryce stymulujemy migrację"--bo migrują lepiej wykształceni/bogatsi. Wg pani "naukowczyni" pomoc na miejscu stymuluje migracje a brak pomocy nie stymuluje. A może jednak też stymuluje i to bardziej? Kto dajmy na to chciałby żyć w kraju gdzie nie ma opieki medycznej na przykład (ponieważ wszyscy lekarze są w Europie). Idiotka o "lewicowej wrażliwości", ale neokolonialnym ptasim mózgu no nie pomyślała...

Cały ten tekst jest w istocie jednym wielkim manifestem neokolonialnej mentalności: ch#j tę babę obchodzi Afryka, mogą tam umierać z głodu, ważny jest tylko Europejski rynek pracy, na którym płace rosną, a ludziom żyje się lepiej... Pytanie o to jakie perspektywy ma kraj, z którego wyjeżdżają najlepsi, a im bardziej im się ten wyjazd ułatwi tym ich więcej wyjedzie -- oczywiście nie pada...

6. "Nie mogę nikomu mówić co ma robić", ale jestem pewna, że należy otworzyć granice -- He, he do tej pory było--jak to u oświeconych liberałów, super-naukowo a tu klops, teza z tytułu kompletnie z czapki vel z dupy (ludzie znajdą sposoby itp... co ciekawe akurat ci z dżungli pod Calais jakoś nie mogli znaleźć -- i wegetowali tam całymi latami -- PECH, jakieś wyjątkowe przymułysię trafiły w rodzinnym kraju pani naukowczyni)

url | Tue, 16/05/2017 04:44 | tagi: , , ,
Lingua Tertii Republicae (LTR)

Czy język trzeciej erPe. Ewidentnie nawiązuję do słynnej LTI (Lingua Tertii Imperii aka Język Trzeciej Rzeszy) Victora Klemperera (mówiąc dokładniej: LTI. Notatnik filologa. Przełożył Juliusz Zychowicz. Kraków--Wrocław 1983. Wyd. Literackie)

Z wybitną próbką takiego języka można się zapoznać czytając tekst de-facto redaktora naczelnego Gazety Wyborczej (dalej GazWyb albo GieWu), Kurskiego. W zasadzie każdy akapit to nowomowa, lepsza od najlepszych tekstów Trybuny Ludu:

A więc:

#1 marsz był Wolności, ale zgromadził tłumy, bo był z ducha i temperamentu antyPisowski (inaczej pies z kulawą nogą?...)

#2 PSL przystąpił do Obozu Demokratycznego, cokolwiek to znaczy (nie ma czegoś takiego jak OD póki co w realu jest tylko abstrakcja w tekstach chciwców z GieWu)

#3 KOD szuka nowego lidera, bo po 1,5 roku wspaniałej/dynamicznej/owocnej działalności (sądząc z opisów w GieWu) nie jest w stanie wybrać żadnego

#4 Aplauzem przyjęto zapowiedź politycznego rozliczenia? Wydaje się że przegrane wybory są właśnie politycznym rozliczeniem a reszta jest mało istotna. Cóż bowiem oznacza ten eufemizm? Odnoszę wrażenie że aplauz wynikał z tego, że tłum odebrał powyższe jako zapowiedź karania przestępców z wykorzystaniem kodeksu karnego, a nie tam żadną polityczną. Wydaje się w miarę oczywiste, że tak być powinno od zawsze (przestępcy powinni być karani) i taka zapowiedź de-facto kompromituje zapowiadającego, bo albo zgromadzeni/zapowiadający (Schetyna?) chcą karać wyłącznie PiSowców, albo też biją brawo, że po latach tolerancji dla przestępców wreszcie ma być normalnie (że pierwsi pójdą PiSowcy do pierdla to już nieistotny szczegół)

#5 Schetyna i Borowski (obaj z jednej partii czyli Plaformy) zapowiedzieli to samo tylko ubrali to w inne słowa. Ma to zapewne stwarzać wrażenie iż i jakoby zgromadzeni byli jednomyślni w sprawie tymczasem wydaje się mało prawdopodobne, że coś z tego wyjdzie, tym bardziej że pozostali uczestnicy (z innych partii co to mają się zjednoczyć) tego nie zapowiedzieli, a przynajmniej Kurski o tym nie pisze (więc pewnie nie zapowiedzieli)...

url | Sun, 07/05/2017 08:16 | tagi: , , , , ,
FUDy AntyPisa

Co to jest FUD?: FUD (ang. Fear, Uncertainty, Doubt -- strach, niepewność, wątpliwość) -- strategia ograniczenia zdolności zajmowania rynku przez konkurenta, polegająca na podawaniu w mediach lub bezpośrednio klientom nieprawdziwych lub niejasnych informacji o konkurencie i jego produktach. Zakłada, że nawet jeśli ktoś wie, że informacje te są nieprawdziwe, to jego przekonania zostaną zachwiane, co automatycznie działa na korzyść stosującego tę strategię (Wikipedia.)

Zatem pro memoria, bo lud ma pamięć krótką (Adolf Hitler).

W porządku chronologicznym:

#1 Populiści nie zrealizują tego co obiecali nie ma pieniędzy

#2 Już 2 tygodnie po wyborach, a oni nic (oszukali, teraz kombinują jak się wykręcić od niemożliwych do zrealizowania obietnic)

#3 Czemu 500+ nie przysługuje na jedno dziecko (Kaczyński znowu dzieli Polaków)

#4 Szydło do odstrzału nie przetrwa do kwietnia 2016 (wtedy premierem Kaczyński i koniec demokracji)

Zaraz PiS ogłosi przyśpieszone wybory do samorządu (w domyśle je wygra i Kaczyński będzie miał pełną władzę). Pojawiają się wrzuty o zmianie liczby województw z sugestią, że takowa zmiana skutkuje przyśpieszonymi wyborami we wszystkich jednostkach samorządu (jest to nieprawda). Jakiś neo-Goebbels wymyśla słowo DEMOKRATURA, odtąd nachalnie promowane przez antyPiS (np. politruka.pl--też mi wolno przekręcać, jakby ktoś się pytał że hejt.)

#5 Obrona Terytorialna to prywatna armia Macierewicz; w tym kontekście Republika Weimarska, SA, itp. skojarzenia

#6 Nielegalny budżet? To było słabe i się z tego szybko wycofano, ale nadzieje na rozkręcenie tego FUDa były (miał je m.in. Tusk--król Europy)

#7 Nie dla chaosu w szkole. Znowu jakiś neo-Goebbels w akcji: DEFORMA (Edukacji).

#8 POLEXIT (jako dowody: wybór Tuska potem "afera" Eurokorpusu; marzec 2017 Rząd PiS odsuwa Polskę od zachodu; działa na rzecz Putina.

#9 Zmiany w sądach to zamordyzm/dyktatura. I ty możesz zostać Józefem K. Osiem powodów, by obawiać się zmian ministra Ziobry (tytuł paszkwilu z GieWu)

#10. Prywatna zemsta na Tusku (Kaczyńskiego lub PiS) bo go wezwali na przesłuchanie.

#11 Szyszko -- niekończąca się opowieść (hejt w segmencie ekologów).

Żeby było śmieszniej, a może nie tyle śmieszniej co jest to sytuacja wysoce znamienna i świadcząca o kompletnej niemocy antyPiSa to fakt, że antyPiS nie potrafi udupić PiSa nawet tam gdzie ten PiS daje mu okazję ku temu. Na przykład afera pana Misiewicza aż się prosi o sprawdzenie o co chodzi... Bo przecież nie chodzi o to, że włazidupy mu salutują, albo że problemem jest jego dwudniowa praca za 50 tys/mc.

AntyPiS stać na FUDy na wizerunkowe wykorzystanie słabości PiSa typu Misiewicz i tyle. Słabość mediów antyrządowych widać gołym okiem (rządowych zresztą też)--mówienie o mediach jako czwartej władzy jest w PL możliwe tylko w trybie przeszłym dokonanym...

url | Thu, 04/05/2017 20:31 | tagi: ,
Moja lista rekomendowanych książek na temat Holokaustu

Żeby nie było że mam fiksację i żem Germanofob (ci co przeczytali poprzedni wpis mogli nabrać takich podejrzeń), lista książek na pasjonujący mnie temat 2WŚ/Holokaustu:

Raul Hilberg: Sprawcy, Ofiary, Świadkowie. Zagłada Żydów 1933--1945 (tłumaczenie J. Giebułtowski) Centrum Badań nad Zagładą Żydów IFiS PAN/Cyklady, Warszawa 2006;

Raul Hilberg: Pamięć i polityka. Droga historyka Zagłady (tłumaczenie J. Giebułtowski) Centrum Badań nad Zagładą Żydów IFiS PAN/wydawnictwo Cyklady, Warszawa 2006;

Christopher R. Browning: The origins of the Final Solution. The evolution of the Nazi Jewish Policy, September 1939--March 1942, University of Nebrasca Press; Polskie tłumaczenie: Geneza ostatecznego rozwiązania. Ewolucja nazistowskiej polityki wobec Żydów. Wrzesień 1939--marzec 1942 Wydawnictwo Uniwersytetu Jagiellońskiego 2013;

Christopher R. Browning: Zwykli ludzie. 101. Policyjny Batalion Rezerwy i ostateczne rozwiązanie w Polsce Bellona 200 (nie do dostania nawet na Allegro!);

Christopher R. Browning: Pamięć przetrwania. Nazistowski obóz pracy oczami więźniów Czarne 2012;

Isabel Heinemann: Rasa, ziemia, niemiecka krew. Główny Urząd Rasy i Osadnictwa SS i nowy porządek rasowy Europy Muzeum II Wojny Światowej w Gdańsku, Gdańsk 2014;

Nikolaus Wachsmann: Historia nazistowskich obozów koncentracyjnych Świat Książki 2016;

Ulrich Herbert: Werner Best. Studium biograficzne (tł. Magdalena Kurkowska) Wiedza Powszechna, Warszawa 2007

Wszystkie powyższe są świetne. Dwaj pierwsi autorzy to Amerykanie (well, Hilberg to Austriacki Żyd, a do USA trafił po tym jak po Anslussie Austrii rodzina wyjechała do Ameryki); Heinemann i Wachsmann są młodymi (oboje urodzeni w 1971 r) a Herbert nieco starszym (ur. 1951 r) historykami Niemieckimi piszącymi uczciwe książki na temat swojej trudnej historii (i dlatego nie jestem Germanofobem a wręcz przeciwnie).

Na liście nie ma żadnych Grosów, Libionek czy innych Danieli Goldhagenów (czytaliście coś ww.? No to zmarnowaliście czas). Arendt z jej bestsellerem o Eichmannie też nie ma (wg. Hilberga zżynała od niego i faktycznie jak się przeczyta SOŚ -- która została napisana wcześniej -- to książka Arendt niewiele wnosi, jeżeli coś w ogóle). Nb teza Arendt iż każdy może być masowym mordercą (banalność zła) jest moim zdaniem (i nie tylko moim) fałszywa: pierdoły i lenie nie mogą, a takich jest większość. Eichmann wcale nie był zwykły--był utalentowanym zarządcą, do tego niezwykle pracowitym. Można co innego zauważyć, że osobnik jest wybitnym fachowcem (w pewnej dziedzinie) a tak w ogóle jest debilem-- coś jak mentor Arendt, wybitny filozof, ale zadeklarowany nazista Martin Heidegger.

url | Fri, 27/01/2017 05:22 | tagi: , , , , ,
Polskie obozy zagłady

Niemcy od lat bezczelnie promują w mediach zwrot polskie obozy śmierci/zagłady. Jak im się powie, że to bzdura to oni na to że to skrót myślowy. Wiadomo że nie, bo co to za "polski obóz" Auschwitz, w którym zginęło 150 tys Polaków a literalnie żaden organizator/nadzorca z Polską nie miał nic wspólnego, a z Trzecią Rzeszą (czyli współcześnie z RFN oraz Austrią; w świetle prawa międzynarodowego oczywiście)-- wszystko.

Były więzień niemieckiego obozu Auschwitz Karol Tendera wystąpił z pozwem przeciwko ZDF w związku z jej internetowymi publikacjami zawierającymi określenie polskie obozy zagłady Majdanek i Auschwitz. a 22 grudnia 2016 r. krakowski Sąd Apelacyjny wydał prawomocny wyrok, na mocy którego ZDF powinna przeprosić Tenderę za użycie tych sformułowań i opublikować na swojej głównej stronie internetowej przeprosiny. Te ukazały się zaraz po ogłoszeniu wyroku, tyle, że według p. Tendery nie spełniały wymogów (z tego co mi się wydaje nie były na przykład zamieszczone na głównej stronie). W rezultacie tzw. polscy internauci zainicjowali zmasowaną akcję polegającą na publikowaniu w różnych mediach społecznościowych wpisów informujących o prawdziwym przebiegu wydarzeń.

No to ja się też dołączam do akcji na mój skromny, uczciwy sposób jak mawiał elektryk Hagen w powieści Das Boot (Lothar-Gunther Buchheim, s.148, tł. Adam Kaska, Bellona 2009).

Jak już jestem przy głosie to wyjaśniam, że specyfiką 3Rz był labirynt urzędów, z których każdy miał własne obozy. Obozy koncentracyjne, których pierwotną funkcją nie było masowe mordowanie, ale zastraszanie/izolowanie (KL) podpadały pod (WVHA). Obozy zagłady powstały w  wyłączntm celu sprawnego zamordowania niechcianej społeczności żydowskiej, a organizował je właściwy dla terytorium gdzie powstały (wyższy) dowódca SS i Policji (SSPF/HSSPF) czyli SSPF Globocnik (Lublin), któremu podlegały Treblinka/Sobibór/Bełżec oraz SSPF Koppe (Poznań) ze swoim Kulmhofem. BTW Koppe, którego Kulmhof było pionierską instalacją spokojnie dożył do 1975 r. w eNeRFju, a nie w żadnej tam Argentynie (cf. Wilhelm Koppe) co jest wśród niemieckich zbrodniarzy regułą, a nie wyjątkiem. Globocnik (Austriak nie Niemiec) niepotrzebnie popełnił samobójstwo--też by się pewnie wymigał... Ciekawostką jest, że nie było formalnej współpracy czy koordynacji pomiędzy WVHA a SSPF (co by świadczyło że nie było mitycznego master planu w temacie zagłady Żydów; była ogólna idea że mają zniknąć z 3Rz i improwizowana realizacja: każdy zainteresowany urząd działał jak umiał), a ofiary dostarczał jeszcze inny urząd -- RSHA/Eichmann -- (ah ta wspaniała Niemiecka koordynacja).

IPN opublikował mapkę niemieckich obozów zagłady/KL, na której na czerwono są KL a na czarno obozy zagłady (oryginał tutaj). Auschwitz/Birkenau/Majdanek formalnie były KL i podpadały pod WVHA, to że są na czarno wynika z faktu że były "wielofunkcyjne"... Podobnie wielofunkcyjne były Stutthof i Mathausen (formalnie KL) -- miały komory gazowe, w których mordowano ludzi -- ale nie są na czarno na mapie zapewne dlatego, że robiono to na mniejszą skalę niż w tych bardziej znanych z tego procederu...

Tak przy okazji: Niemiecka Gazeta dla Polaków Tomasza Lisa uważała w związku z "aferą ZDF" -- zupełnie przypadkowo zapewne -- za celowe przypomnieć o obozach na Śląsku zakładanych przez NKWD i polskich komunistycznych kolaborantów bezpośrednio po wojnie (kiedy Polskę można z całą pewnością uważać za kraj okupowany przez wrogie mocarstwo a zarządzany przez zainstalowany przez to mocarstwo rząd złożony z renegatów) typu kapitan Morel (mimo, że to tylko jeden awans -- nie mylić z majorem Szechterem, bo się autorytet zdenerwuje), określając je -- a jakże -- mianem "polskie".

Abstract for non-Polish readers

German public television station ZDF called the German concentration camps at Auschwitz and Majdanek/Lublin as "Polish death camps". For this action ZDF was sued by former Auschwitz prisoner Mr. Karol Tender and lost that case in court. The court ordered ZDF to publish an apology on their main page and to leave it visible for 30 days.

ZDF published required apology very discreetly, at the very bottom of their website with the title Karol Tenders Apology. It is visible only upon clicking the title. For this reason Polish Internet community declared (propaganda) war on ZDF on this issue (look for #GermanDeathCamps hashtag).

url | Wed, 25/01/2017 17:23 | tagi: , , , , ,
Minął rok obrony demokracji w PL

Rok zleciał na obronie demokracji, wypada podsumować.

Przyglądam się temu całemu KODowi z pewną ciekawością, ale bez specjalnego zdumienia. Z punktu widzenia motywacji uczestników można ich podzielić na następujące kategorie (IMHO oczywiście):

1) #Zafixowani: hejterzy (zwykle nie potrafią się do tego przyznać) zafiksowani na Kościele Katolickim/PiS/Kaczyńskim (PISofobia), dla nich KOD to sposób na przyjemne spędzania wolnego czasu w gronie im podobnych (stąd manifestacja KOD mało przypominają protesty -- wszyscy wiecznie uśmiechnięci);

2) #ŁowcyJeleni: politycy byłej władzy lub aspirujący do niej, media/celebryci przez kasę związani z poprzednią władzą np. GW/Polityka/Newsweek. Także różnej maści kombinatorzy starający się zarobić oferując różne usługi dużej grupie naiwnych/z problemami psychicznymi (co nie oznacza choroby--PISofobia nie jest chorobą, podobnie jak inne fobie) ludzi.

3) #Durnie: autentycznie przekonani, że Polska po wyborach 2015 obrała kurs na dyktaturę/faszyzm/demokraturę itp...; Zaczynają rozmowę Nie wolno pozwolić na demontaż państwa lub podobnym tekstem.

4) #Inni: wszyscy pozostali (w tym ludzie, którzy wydają się niezrównoważeni psychicznie i/lub funkcjonariusze stosownych służb).

Liczebność poszczególnych grup oceniam jak w powyższej wyliczance, przy czym czy #zafiksowani są liczniejsi niż #łowcyjeleni czy odwrotnie, to już nie jestem pewien. Do tego kategorie #1 oraz #3 niekoniecznie są rozłączne. Działania grup 1 oraz 2 oceniam jako racjonalne, grupy 3 jako nieracjonalne (stąd pejoratywne #durnie), zaś z grupą 4 jest pod tym względem różnie (niezrównoważeni są z definicji nieracjonalni; no a ci z służb cóż--chodzą do roboty po prostu).

Nawiasem ze znanych mi 2 osób (osobiście, nie z TV), zaangażowanych w tzw. obronę demokracji, jeden pasuje mi do kategorii #1 a drugi niestety do #3.

PS: ten tekst powstał jakieś dwa tygodnie temu. W tzw. międzyczasie lider ww. Komitetu dokonał tzw. samozaorania, ale to nie zmienia mojej klasyfikacji: Mateusz Kijowski (kategoria #2, aspirujący do koryta/łowca jeleni, ale niegramotny-amator więc game-over)

url | Fri, 06/01/2017 06:27 | tagi: , , ,
Paradoks postępaka


Widzę w Internetach dużo kuriozalnych wpisów, w tym a zwłaszcza popełnionych przez ludzi deklarujących tzw. postępowe poglądy (przykłady z niejakiego pana Wimmera -- dumnie przyznającego się do bycia (de)funkcyjnym członkiem tzw. Komitetu Obrony Demokracji -- w załączeniu).

Zrekapitulujmy zatem fakty:

#1: 25 grudnia 2016 wojskowy samolot transportowy lecący z podmoskiewskiego lotniska wojskowego Czkałowski do bazy lotniczej Hmejmim/Latakia (Syria) na noworoczne występy dla rosyjskich żołnierzy rozbija się niedaleko Soczi/Krym ok. 5.30 (czasu lokalnego/ 3.30 polskiego). Nikt nie ocalał. Giną m.in. żołnierze propagandowego oddziału Armii Czerwonej znanego pod nazwą Chór Aleksandrowa. Odział leciał zapewne wesprzeć morale (nadwątlone z całą pewnością mordowaniem kobiet i dzieci--można by sądzić po tym co piszą/nadają postępowe media na całym świecie, i nie tylko postępowe w tym wypadku BTW) rosyjskich lotników, więc chyba dobrze że nie doleciał? Niskie morale--więcej kobiet, dzieci i szpitali dziecięcych ocaleje...

#2: po serii porażek (Brexit, Trump itp.) postępacy znaleźli sobie nowego czarnego luda i nowe tłumaczenie (aka teoria spiskowa) czemu od pewnego czasu biorą spektakularnie/regularnie w djupę: niezwykle skuteczną ruską propagandę (#RuskiTroll, dawniej #CzarnaWołga). Powtórzę: skoro niezwykle niebezpieczni, bo skuteczni funkcjonariusze tej propagandy polegli, no to chyba dobrze. Oczywiście jak ginie człowiek itp, no ale na wojnie żołnierze giną--taka jest logika wojny: my albo oni, więc lepiej, że oni a nie my...

#konkluzja: nie zaraz, wielka strata dla kultury, ojej jaka tragedia. Nie-po-we-to-wana.

PS: i jeszcze kuriozalna ale i charakterystyczna dla tej grupy ludzi dyskusja po oświadczeniu p. Chabika, w tym tzw. miażdżący argument gimbazy: czy po Einsteinie też nie należało płakać, bo pracując przy bombie A był złym człowiekiem (sic!). Ach ci IYI (Intelectual Yet Idiot), może i był, ale pracował dla nas, a nie dla 3-ciej Rzeszy idioto.

url | Tue, 27/12/2016 06:24 | tagi: , , , ,