momente şi schiţe de informatică

sinteză: "Bacalaureat 2015 - de la forma microsoftizată, la R"

Creat: 2016/aug       Comentarii

bacalaureat | Python | R

Ne-am ocupat anterior în cinci părţi (una în iulie, 4 în august 2016) de rezultatele bacalaureatului din 2015 (prezentând diverse elemente de limbaj R, cu judecăţi statistice elementare), plecând de la setul de date (în formă "microsoftizată") preluat de la data.gov.ro. Între timp s-a insinuat cumva ideea de a reuni părţile respective într-o lucrare unică, eventual în format PDF.

Un timp mi s-a părut "cam mult" - nu-i uşor să transformi un document HTML complet, în PDF; dar în timp ce mă ocupam de textul Markdown rezultat de sub pandoc (urmând ca după ce voi fi făcut manual completările şi modificările necesare, să-l transform în PDF - iarăşi cu pandoc şi cu Latex) - am (re)descoperit că în Chrome dispunem de un meniu "Print..." care permite să obţii automat un PDF care imită nemaipomenit de bine, pagina HTML respectivă. Deci nu se mai pune problema de a transforma în "document PDF" - oricine va putea face aceasta, dacă doreşte.

Rămâne o singură problemă de ordin tehnic - să obţin cele 5 articole! Pentru fiecare articol la care lucrez, folosesc local (pe calculatorul de acasă) acelaşi fişier - pe care o să-l numesc aici "work.html" - în care (pentru articolul curent) rescriu o aceeaşi diviziune <div.inqsor> din <body>, pe care în final o înscriu în baza de date (întâi în cea locală, ca să mai fac o verificare şi în cele din urmă în baza de date de pe server); ca urmare, nu deţin textul-sursă şi dacă am nevoie de acesta - trebuie să-l extrag din baza de date.

Următorul program Python (redat aici după anumite "anonimizări", de înţeles) asigură conectarea bazei de date, selectarea articolelor după dată, extragerea acestora şi scrierea lor, unul după altul, într-un anumit fişier (îngrijindu-se de recunoaşterea şi păstrarea codificării "UTF-8"):

#!/usr/bin/python
# -*- coding: utf-8 -*-
import MySQLdb as mdb  # interfaţă Python pentru MySQL
import codecs  # rezolvă problemele de codificare-decodificare a caracterelor
conn = mdb.connect('localhost', 'user', 'password', 'DBname', charset='utf8');
cursor = conn.cursor()
cursor.execute("SELECT body FROM articole" +
               " where YEAR(creat)='2016' and MONTH(creat)>='07'")
out = codecs.open("sinteza.html", "w", 'utf-8')
for articol in cursor.fetchall():
    out.write(articol[0])
out.close()
cursor.close()
conn.close()

Ambalând conţinutul fişierului obţinut în diviziunea <div.inqsor> din "work.html", am putut urmări în browser cele 5 părţi reunite, de la un capăt la altul. Ca unul care caută mereu cuvintele, am "periat" totul din nou şi uneori, am reformulat mai precis sau am îndreptat câte ceva; poate-i relevant acest cel mai modest exemplu: în formularea iniţială ... instituim tabele de contingenţă "încrucişând" câte doi din cei 5 factori ... am schimbat "câte doi din cei" cu "câte doi dintre cei".

Am mai reţinut şi acest exemplu de reformulare (deasemenea "relevant"): iniţial (în §.5, la început) aveam "Şi noi aici, am şterge sau am ignora numele dacă ar fi existat - dar nu din raţiuni de confidenţialitate, ci pentru motivul că numele persoanelor sunt irelevante din punct de vedere statistic.", iar acum am formulat mai precis: "Şi noi aici, am şterge sau am abrevia numele dacă ar fi existat (mai ales fiindcă au fost scrise cu majuscule!) - dar nu din raţiuni de confidenţialitate...".

În sfârşit - am adăugat un "cuprins", folosind experienţa anterioară a unei alte "sinteze" (anume, Modelarea tablei şi jocului de şah - dezvoltare inductiv-corelativă a unei aplicaţii Web).

Rezultatul final este Bacalaureat 2015 - de la forma microsoftizată, la R.

Media Dinamică

Articolul 50

Drumuri

ŞahStartTemp

25
32
17
4
19
34
14
3
26
33
16
5
31
24
15
18
35
20
2
13
27
6
9
23
30
11
8
21
28
12
22
29
10
7

Ambiţiile Cavalerului

Localităţi

Judeţ:

Constituirea unei baze de date colectând cu Python de pe web

Bliţuri

Load another random Bliţ

//slightchess

Decoraţiuni hiperbolice

SALARII 2017

//bacMath
variante BAC matematică

Bacalaureat 2015 -
de la forma microsoftizată, la R

modelare ŞAH, I-XX
construcţia unui PGN-browser()

Linux şi aplicaţii Web
în 24 de ore

Orar şcolar - exemplu
după un orar generat de "aSc Orare"

Orar Adjust
ajustează orarul şcolar