Jak používat klasifikační nálepkuTato stránka je součástí projektu:
Příslušnost: skupinová

Projekt: Hesla Jednoty bratrské pro rok 2018 editovat

V tomto článku řešíme průběh přípravy textu (tj. vlastních hesel pro jednotlivé dny roku) pro Hesla Jednoty bratrské 2018; další záležitosti řešíme na dalších podstránkách:

Technologie asi zůstává zhruba stejná jako loni (viz Projekt: Hesla Jednoty bratrské/2017) a jak je uvedena na hlavní stránce Projekt: Hesla Jednoty bratrské#Technologie

Písmeno w na začátku níže uvedených oddílů znamená working directory, tj. název pracovního adresáře, ve kterém se postupně řeší jednotlivé fáze vytváření českých Hesel JB:

w00-Losungen editovat

Vstupní data – Losungen v německém jazyce. Tato vstupní data, která slouží pouze jako podklad pro pořízení překladů do národních jazyků, bohužel nemůžeme zveřejňovat z důvodů autorských práv.

2016-06-17_Rubin_11_53 editovat

2016-12-09_Erdmann editovat

  • Losungen_fuer_2018_2016-12-09.mdb – Aktuální databáze s Hesly z Ochranova ve formátu MS Access:

2017-02-24_Erdmann editovat

  • Losungen für 2018 2017-02-24.rtf – Export z aktuální databáze s Hesly z Ochranova ve formátu RTF:

2017-02-27_Salewski editovat

  • Doplňující soubory: Předmluva, korektury, modlitební stráž

w01-jet-mdb-import editovat

V lednu a únoru jsme řešili náročné zkouškové období a pak také kůrovce v lese, takže ke zpracování Hesel jsem se dostal až v půlce února:

2017-02-13 editovat

Import dat z jedné tabulky databáze MS Access do tabulky import databáze MySQL; proběhl (až ná pár drobností) bez větších problémů, schema databáze naštěstí zůstává stejné jako v minulých letech (Projekt: Hesla Jednoty bratrské/2016/losungen2016.schema).

w02-sql-load editovat

2017-02-13 editovat

Začátek práce – vychytávání chyb

2017-02-19 editovat

Hotovo – hes18w02h-Stephanustag.sql

w03-sql-transl editovat

2017-02-23 editovat

Hotovo – hes18w03a.sql

w04-quote+song editovat

2017-02-23 editovat

  • quotes17void.pl – krátký skriptík vkládá do databáze prázdné záznamy pro citáty měsíců a týdnů, aby je tam Mirek mohl doplnit:
#! /usr/bin/perl -w

use DateTime;
$dt = DateTime->new(
		    year       => 2018,
		    month      => 1,
		    day        => 1
);

use HesSQL qw($dbh $quote_w);
$dbh->do("TRUNCATE `quote`");


for (my $n=1; $n<=365; $n++) {
    $ymd    = $dt->ymd;
    $dow    = $dt->day_of_week;

    printf "%8s  (%1d)", $ymd, $dow;

    if($dt->day == 1){
	print " : Citát měsíce";
        # table quote: sel, date, which, lang, transl, source, text
	$quote_w->execute(1, $ymd, 'MONTH', 'cs', 'MM', '', '');
    }

    if($dow == 7){
	print " : Citát týdne";
	$quote_w->execute(1, $ymd, 'sunday', 'cs', 'MM', '', '');
    }

    print "\n";
    $dt->add( days => 1 );
}
$dbh->disconnect;

2017-03-06 editovat

Podobným způsobem tam vložím i prázdné záznamy pro písně pro každý týden:

  • songs17void.pl
#! /usr/bin/perl -w

use DateTime;
$dt = DateTime->new(
		    year       => 2018,
		    month      => 1,
		    day        => 1
);

use HesSQL qw($dbh $song_w);
$dbh->do("TRUNCATE `song`");


for (my $n=1; $n<=365; $n++) {
    $ymd    = $dt->ymd;
    $dow    = $dt->day_of_week;

    printf "%8s  (%1d)", $ymd, $dow;

    if($dow == 7){
	print " : píseň";
        #table song:  sel, date, seq, which, lang, book, nr, strophe, strophe2, text; which = Ld, WL
	$song_w->execute(1, $ymd, 'sunday', 'cs', 'MM', '', '');
    }

    print "\n";
    $dt->add( days => 1 );
}

$dbh->disconnect;

Od letoška do záznamů v tabulce song s německými písněmi pro jednotlivé týdny WL doplňuji do sloupce text názvy písní z Evangelisches Gesangbuch, dohledané podle čísel dle Liederbuch: Ev. Gesangbuch.

  • liederdatenbank.de.pl – skriptík mi z té stránky vytáhne seznam písní:
#! /usr/bin/perl -w

my $nr;

while (<>) {
    if (m|span class="linkweiteres">(\d+)|) {$nr =$1; next;}
    if (m|<a href="/song/(\d+)">(.+)</a>|) {
	my $link = $1;
	my $song = $2;
	print "$nr <a href=\"http://www.liederdatenbank.de/song/$link\">$song</a>\n";
	$nr = '';
	next;
    }
}

2017-03-08 editovat

Ten seznam pak přidám do skriptu, který mi názvy těch písní uloží do databáze:

Protože v Losungen se často uvádí dvě možnosti Wochenlied, ukládám je do sloupce text oddělené svislítkem. Zároveň před ně do hranatých závorek umístím odkaz na číslo písně v http://www.liederdatenbank.de/song/

Záznamy v tabulce song pak vypadá např. následovně:

INSERT INTO `song` (`sel`, `date`, `seq`, `which`, `lang`, `book`, `nr`, `strophe`, `strophe2`, `text`) VALUES
(0, '2018-01-01', 1, 'Ld', 'de', '', '64|65', 0, 0, '[145]Der du die Zeit in Händen hast|[386]Von guten Mächten wunderbar geborgen'),
(0, '2018-01-06', 2, 'Ld', 'de', '', '70|71', 0, 0, '[1520]Wie schön leuchtet der Morgenstern|[2005]O König aller Ehren'),
(0, '2018-01-07', 3, 'WL', 'de', '', '68|441', 0, 0, '[10524]O lieber Herre Jesu Christ|[11788]Du höchstes Licht, du ewger Schein'),
(0, '2018-01-14', 4, 'WL', 'de', '', '5|398', 0, 0, '[9054]Gottes Sohn ist kommen|[272]In dir ist Freude'),
(0, '2018-01-21', 6, 'WL', 'de', '', '67', 0, 0, '[10523]Herr Christ, der einig Gotts Sohn'),
...
  • hes18w04g.sql – výsledná verze databáze

w05-localhost-php editovat

2017-03-09 editovat

Doplněno zobrazovaní čísel a názvů německých písní (WL – Wochenlied):

w06-dulos-php editovat

2017-03-09 editovat

Z localhost uploadováno na server.

Problémy s FireFTP, používám raději FileZilla.

w07-MB+ editovat

2017-03-09 editovat

První manuální záloha 17:20, automatické zálohování spuštěno od 18:00. Databáze:

  • dulos2827 = 2018mirek
  • dulos2831 = 2018rfc

Hned potom večer jsem jel za Mirkem, ale chybí mu zdroj od modemu, takže se nedostane na Inet.

2017-04-13 editovat

Mirek dokončil poslední editaci mezi 17:00 a 18:00 hodinou:

diff dulos2827.1492095601.sql dulos2827.1492099202.sql
2c2
< # backup date and time: 2017/04/13 17:00:01
---
> # backup date and time: 2017/04/13 18:00:02
3858c3858
< insert into `quote` values ('1', '2018-11-18', 'sunday', 'cs', 'MM', 'Stopy', 'Tělo té duše,\r\n     které je do zpěvu,\r\n          jde dobrou cestou.');
---
> insert into `quote` values ('1', '2018-11-18', 'sunday', 'cs', 'MM', 'Stopy', 'Každé nutí mysli\r\n     mění se ve světlo\r\n          anebo ve stín.');

w08-Mirkovo editovat

2017-06-03 editovat

Konečně zpracovávám, co udělal Mirek.

 diff dulos2827.1492099202.sql dulos2827.1496480401.sql
2c2
< # backup date and time: 2017/04/13 18:00:02
---
> # backup date and time: 2017/06/03 11:00:01

Je vidět, že od doby jeho poslední editace se nic nezměnilo.

w09-localhost-php.v5 editovat

2017-06-07 editovat

Totálně mě zaskočilo, že skripty, které v minulých letech fungovaly, najednou nefungují – prostě nic, prázdná obrazovka, žádné hlášení o chybě – nic. Postupným přidáváním ladících výpisů se nakonec dostávám k tomu, že funkce MySQL_Connect() mi už nefunguje:

function connectDB_old() {
    $spojeni = MySQL_Connect(SERVER, USER, PASSWORD)
    or die ("Nepodařilo se připojit k databázovému serveru: ".MySQL_error());

    if(!MySQL_Select_DB(DB_NAME)) {
        echo "Nepodařilo se připojit k databázi <tt>", DB_NAME, "</tt>\n";
        exit;
    }
    mysql_query("set names 'utf8'");

    return $spojeni;
}

Prostě skript zhebne a nic.

Po gůglování zjišťuju, že prostě tato fce byla ve verzi PHP 7 zrušena :-(

2017-06-10 editovat

Konečně mám chvilku snažit se to nějak řešit:

Nahradím to tedy:

function connectDB() {
    $link = mysqli_connect(SERVER, USER, PASSWORD, DB_NAME);

    if (!$link) {
        echo "Error: Unable to connect to MySQL – nejde se připojit k databázi :-(." . PHP_EOL;
        echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
        echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
        exit;
    }

    echo "Success: A proper connection to MySQL was made! The my_db database is great!!<br/>" . PHP_EOL;
    echo "Host information: " . mysqli_get_host_info($link) . "<br/>" . PHP_EOL;
    mysqli_query($link, "set names 'utf8'");
    return $link;
}

Všechna další

mysql_query("...");

nahradím:

mysqli_query($link, "...");

Skript zřejmě projde, ale databáze se jeví, jako by v ní nic nebylo. Ach jo :-(

w10-localhost-php7 editovat

2017-06-12 editovat

Matěj mi v tom skriptu přepsal ty mysql_query() na mysqli_query() a ještě nějaké drobnosti. Už to chodí.

2017-06-19 editovat

Náhodou zjišťuji, že v tom skriptu nefunguje vložení jiného překladu. Konzultuji s Matějem, že prý pod Windows mu to chodí normálně. Dopisuje mi tam kousek kódu pro ladění:

function sel() {
    global $db;
    list($table, $date, $which, $transl, $value) = explode("_", $_REQUEST['sel']);
    switch ($table) {
        case "losung":
            if ($value == "new") {
                $query = "INSERT INTO `$table`(`sel`, `date`, `which`, `lang`, `transl`, `source`, `intro`, `text`)
                                        VALUES('1',  '$date', '$which', 'cs', '$transl',  '',         '',     '')";
            } else {
                $query = "UPDATE `$table`       SET `sel`='$value' WHERE `date`='{$date}' AND `which`='{$which}' AND `transl`='$transl'";
            }
            break;
        case "song":
            if ($value == "new") {
                $query = "INSERT INTO song(`sel`, `date`, `which`, `lang`) VALUES('1', '$date', '$which', '$transl')";
            } else {
                $query = "UPDATE `$table`       SET `sel`='$value' WHERE `date`='{$date}' AND `which`='{$which}' AND `lang`='$transl'";
            }
            break;
        case "comment":
            if ($value == "new") {
                $query = "INSERT INTO comment(`sel`, `date`, `lang`, `text`) VALUES('1', '$date', '$transl', '')";
                echo $query;
            } else {
                $query = "UPDATE `$table`       SET `sel`='$value' WHERE `date`='{$date}' AND `lang`='$transl'";
            }
            break;

        case "day":
            $query = "UPDATE `$table`   SET `sel`='$value' WHERE `date`='{$date}' AND `which`='{$which}' AND `lang`='{$transl}'";
            break;
    }
    $result = $db->query($query);
    if (DEBUG) {
        if ($result === true) {
            echo 'QUERY: ' . $query;
            echo ' proběhla v pořádku<br>';
            echo 'změněných řádků: ' . $db->affected_rows;
        } else {
            echo 'QUERY: ' . $query;
            echo ' proběhla s chybou<br>';
            echo 'chyba: ' . $db->error . '<br>';
        }
    }
}

Na základě toho zjišťuji, že chyba je v tom, že příkaz INSERT INTO> nevkládá do databáze hodnotu pole `seq`, které nemá v databázi nastavenu defaultní hodnotu. Je divné, že dřívější PHP v. 5.x tam zkrátka vložil do toho pole nulu.

w11-Mirkovo editovat

2017-06-12 editovat

Zapracovávám do databáze Mirkovy opravy. Bohužel je dělal do staré verze databáze na webu (byl rychlejší než já), takže jsem musel nejdříve vyšetřit, v jaké době jeho editace probíhaly, pak vyselektovat jeho editace oproti předcházející verzi databáze, a pak tyto jeho editace zohlednit v aktuální databázi. Tím pádem jsem si přidělal dost práce navíc – cena za to, když člověk pořád něco nestíhá.

  • hes18w11a-dle_Mirka.sql
  • hes18w11b-dash.sql
  • hes18w11c-korekt.sql

2017-06-15 editovat

Šturmuju, hledám další chyby, sázím předběžnou verzi Hesel, tisknu si ji:

  • hes18w11d-TeX.sql

2017-06-16..17 editovat

Jedeme do Marburgu, po cestě dělám korektury na papíře.

Na výstavě #Bildungsereignis Reformation! se snažím pochopit ty souvislosti české reformace (vedoucí až ke stavovskému povstání 1518-20).

2017-06-19 editovat

  • hes18w11e-po_marburgu.sql – zapracovávám korektury z papíru do databáze:
  • hes18w11f-done.sql – další korektury dle xml apod.

Přitom zjišťuji, že ten skript pod PHP 7.x neumí přidávat záznamy do databáze – zpětně řeším s Matějem – viz výše.

Počítám, jaké máme letos použité překlady:

  • 70 % CEP
  • 14 % Kralička
  • 15 % ostatní překlady

w10-localhost-php7 editovat

2017-06-12 editovat

PHP verse 7 se chová naprosto jinak než předchozí 5, nutno vše předělat, pomáhá Matěj.

w11-Mirkovo editovat

2017-06-19 editovat

Stažená databáze od Mirka

w12-comment editovat

2017-06-30 editovat

Dodělání komentářů – výročí

w13-rfc editovat

2017-06-30 editovat

Předání ke korektuře databáze

w14-z_rfc editovat

2017-08-08 editovat

Výstup z korektury databáze

w15-patch editovat

2017-08-09 editovat

w16-patch editovat

2017-08-11 editovat

Sazba v TeXu

w17-plotry editovat

2017-08-15 editovat

Kontrolní plotry z tiskárny

w18-kalendarium editovat

2017-08-16 editovat

Dodělání kalendaria – Sláavek

w19-final_plotr editovat

2017-08-18 editovat

Finální plotr z tiskárny

w20-WWW editovat

2017-08-11 editovat

na http://hesla.dulos.cz/hes18idx.htm