Skip to content

Commit 77d6335

Browse files
committed
Parsedown for Markdown parsing
1 parent f61c352 commit 77d6335

9 files changed

+1838
-3
lines changed

.doc/Parsedown.php

+1,548
Large diffs are not rendered by default.

.doc/index.php

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
require_once 'Parsedown.php';
4+
5+
$parsedown = new Parsedown();
6+
7+
$files = glob("../*.md");
8+
foreach($files as $file) {
9+
$html = $parsedown->text(file_get_contents($file));
10+
11+
// md links
12+
$html = preg_replace('#<a href="([^:/>."]+).md">#', '<a class="md-link" href="?mod=_main&amp;a=$1">', $html);
13+
// source files links
14+
$html = preg_replace('#<a href="(?!\w*:)#',
15+
'<a target="_blank" href="https://github.com/Eccenux/POLos/blob/master/', $html);
16+
// other (probably external) links
17+
$html = preg_replace('#<a href=#', '<a target="_blank" href=', $html);
18+
19+
// save
20+
$fileName = basename($file, ".md");
21+
file_put_contents("../modules/_main/$fileName.html", $html);
22+
}

modules/_main/INSTALL.html

+153
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
<h1>Instalacja POLos</h1>
2+
<p>Ze względu na przetwarzanie dużej ilości danych program działa w środowisku serwerowym (Apache, PHP, MySQL). Nie jest wymagany konkretny system, ale testy były wykonywane na Windows (konkretnie na Windows 10).</p>
3+
<h2>Wymagania sprzętowe</h2>
4+
<p>Za serwer może posłużyć w miarę dowolny, współczesny komputer. Zalecane parametry:</p>
5+
<ul>
6+
<li>CPU: 3 GHz, quad, 64-bit.</li>
7+
<li>RAM: 8 GB.</li>
8+
<li>Dysk: 20 GB wolnego miejsca. Uwaga! Zalecana jest instalacja na dysku typu SSD!</li>
9+
</ul>
10+
<p>Zamiast dysku SSD można ew. użyć dwóch dysków HDD, ale program będzie działał zauważalnie wolniej (nawet 10 razy wolniej).</p>
11+
<p>Można też spróbować użyć dwóch wolniejszych komputerów. Jeden na serwer SQL, a drugi na serwer Apache+PHP. Ważne! Ze na wydajność oraz <strong>ze względów bezpieczeństwa</strong> zalecane jest korzystanie wyłącznie z sieci lokalnej.</p>
12+
<h2>Instalacja oprogramowania</h2>
13+
<h3>Klient</h3>
14+
<p>Dostęp do programu odbywa się przez przeglądarkę (najlepiej Firefox lub Chrome). W starych IE (starszym niż ten z Windows 7), wygląd niektórych elementów może być dziwny -- zwłaszcza losowania.</p>
15+
<p>Zalecany jest dostęp lokalny, czyli z tego samego komputera, na którym jest Apache. Wówczas niepotrzebne jest szyfrowanie połączenie i konfigurowanie uwierzytelniania (logowania).</p>
16+
<p>Do obsługi plików CSV najlepiej zainstalować <a target="_blank" href="https://www.openoffice.org/pl/download/index.html">Apache Open Office</a> lub ew. Libre Office . MS Excel może wystarczyć do eksportu plików CSV, ale nie poradzi sobie z kodowaniem UTF-8 przy eksporcie plików CSV.</p>
17+
<h3>Serwer</h3>
18+
<p>Na komputerze muszą być zainstalowane i skonfigurowane następujące programy serwerowe: </p>
19+
<ul>
20+
<li>Apache 2.2 lub nowszy.</li>
21+
<li>PHP 5.3 lub nowszy. Wymagane rozszerzenie <code>mysql</code>.</li>
22+
<li>MySQL 5.1 lub nowszy. Uwaga! Musi być skonfigurowany na obsługę UTF-8.</li>
23+
</ul>
24+
<p>Poza tym, że używane jest rozszerzenie <code>mysql</code>, to nie ma konkretnych wymagań do wersji PHP. Można próbować instalować POLos na zintegrowanych pakietach serwerowych typu XAMPP, czy WampServer.</p>
25+
<p>Zalecane wersje to:</p>
26+
<ul>
27+
<li>httpd-2.2.25-win32-x86-openssl-0.9.8y.msi</li>
28+
<li>mysql-5.1.50-win32 (full).msi</li>
29+
<li>php-5.3.5-Win32-VC6-x86.msi</li>
30+
</ul>
31+
<h3>Instalacja serwera</h3>
32+
<p>Na serwerze należy zainstalować Apache, PHP i MySQL.</p>
33+
<p><strong>Ważne! Niektóre rzeczy powinny być skonfigurowane podczas instalacji</strong>! Szczegóły poniżej.</p>
34+
<ol>
35+
<li>Instalacja Apache.</li>
36+
<li>Instalacja PHP. Ważne etapy:
37+
<ol>
38+
<li>Przy instalacji zaznacz moduł <code>mysql</code> jeśli nie jest domyślnie zaznaczony.</li>
39+
<li>Wskaż folder <code>conf</code> z zainstalowanego Apache. Bez tego PHP nie będzie działał poprawnie.</li>
40+
</ol></li>
41+
<li>Instalacja MySQL.
42+
<ol>
43+
<li>Najlepiej wybrać wstępną konfigurację, która będzie w stanie obsłużyć dużą ilość danych (serwerową).</li>
44+
<li>Musisz wybrać obsługę kodowanie UTF-8.</li>
45+
</ol></li>
46+
</ol>
47+
<p><strong>Uwaga!</strong> Instalator PHP 5.3 może mieć problem z ustawieniem ścieżki w konfiguracji Apache. Po instalacji upewnij się, że na końcu <code>httpd.conf</code> znajduje się coś w rodzaju:</p>
48+
<pre><code class="language-ini">#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
49+
PHPIniDir "c:/Program Files (x86)/PHP/"
50+
LoadModule php5_module "c:/Program Files (x86)/PHP/php5apache2_2.dll"
51+
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL</code></pre>
52+
<h3>Konfiguracja serwera</h3>
53+
<h4>Apache</h4>
54+
<p>W pliku <code>httpd.conf</code> znajduje się główna konfiguracja Apache. </p>
55+
<ol>
56+
<li>Należy zmienić konfigurację głównego folderu ze skryptami. W wypadku typowej instalacji Windows to <code>&lt;Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs"&gt;</code>. Należy zmienić w niej <code>AllowOverride None</code> na <code>AllowOverride All</code>.</li>
57+
<li>W dyrektywę <code>DirectoryIndex</code> należy dodać <code>index.php</code>. Czyli zmienić ją na: <code>DirectoryIndex index.php index.html</code>.</li>
58+
</ol>
59+
<p>Dodatkowo w wypadku użycia poza siecią lokalną należy włączyć moduły:</p>
60+
<ol>
61+
<li><code>mod_rewrite</code> -- do przekierowań.</li>
62+
<li><code>mod_ssl</code> -- do szyfrowania (HTTPS).</li>
63+
</ol>
64+
<p>Należy pamiętać, że <strong>po zmianie konfiguracji konieczny jest restart usługi Apache</strong>.</p>
65+
<h4>PHP</h4>
66+
<p>W pliku <code>php.ini</code> znajduje się główna konfiguracja PHP.</p>
67+
<p>Należy ustawić:</p>
68+
<ol>
69+
<li><code>short_open_tag</code> na <code>On</code>.</li>
70+
<li><code>display_errors</code> na <code>Off</code>.</li>
71+
<li><code>upload_max_filesize</code> na <code>30M</code> (lub więcej - ogranicza wielkość przesyłanych plików).</li>
72+
<li><code>memory_limit</code> na <code>512M</code> (lub więcej).</li>
73+
<li><code>post_max_size</code> musi być większe <code>upload_max_filesize</code>, ale mniejsze od <code>memory_limit</code>. Zalecane jest ustawienie przynajmniej o 10M większe od <code>upload_max_filesize</code>.</li>
74+
</ol>
75+
<p>Upewnij się także, że <code>upload_tmp_dir</code>, <code>session.save_path</code> oraz <code>error_log</code> wskazują na istniejący folder.</p>
76+
<p>Należy pamiętać, że <strong>po zmianie konfiguracji konieczny jest restart usługi Apache</strong>.</p>
77+
<h4>MySQL</h4>
78+
<p>O ile pamiętało się, żeby podczas instalacji MySQL skonfigurować przez kreator usługę, to większość domyślnych ustawień powinna wystarczyć.</p>
79+
<p>Należy jedynie <code>my.ini</code> należy powiększyć <code>max_allowed_packet</code> na około 2 razy więcej niż plik CSV. Jeśli w pliku <code>my.ini</code> nie ma wpisu &quot;max_allowed_packet&quot;, to należy go dodać w sekcji <code>[mysqld]</code>. Powinno to wyglądać tak:</p>
80+
<pre><code class="language-ini">max_allowed_packet = 100M </code></pre>
81+
<h4>Baza danych</h4>
82+
<p>Na początek należy utworzyć bazę danych. Można to zrobić w konsoli MySQL lub przez <a target="_blank" href="https://www.phpmyadmin.net/downloads/">phpMyAdmin</a>.</p>
83+
<p>Tworzenie bazy i użytkownika:</p>
84+
<pre><code class="language-sql">CREATE DATABASE polos_db;
85+
GRANT ALL ON polos_db.*
86+
TO polos_user@localhost IDENTIFIED BY '...jakieś hasło do bazy...';</code></pre>
87+
<p>Tworzenie struktury:</p>
88+
<pre><code class="language-bash">mysql -uroot -pHasloRoot --database=polos_db &lt; __TABLES.sql</code></pre>
89+
<p>Można też zaimportować strukturę w phpMyAdmin. Plik <code>__TABLES.sql</code> znajduje się w folderze <code>.sql</code>.</p>
90+
<p><strong>Uwaga! Wykonanie pliku <code>__TABLES.sql</code> kasuje bieżące dane</strong>.</p>
91+
<h4>Skrypty</h4>
92+
<ol>
93+
<li>Najpierw skopiuj pliki na serwer Apache np. do folderu <code>htdocs\polos</code>.</li>
94+
<li>Utwórz plik <code>polos\inc\dbConnect.php</code> i wpisz w nim polecenia połączenia z bazą MySQL. Przykładowa zawartość pliku <code>dbConnect.php</code> znajduje się w <a target="_blank" href="https://github.com/Eccenux/POLos/blob/master/inc/dbConnect.example.php">dbConnect.example.php</a>. Oczywiście należy w nim wpisać właściwe hasło.</li>
95+
<li>Utwórz plik <code>polos\js\random-org\key.js</code> i wpisz w nim klucz API uzyskany z Random.org. Przykładowa zawartość pliku <code>key.js</code> znajduje się w <a target="_blank" href="https://github.com/Eccenux/POLos/blob/master/js/random-org/key.example.js">key.example.js</a>.</li>
96+
</ol>
97+
<h2>Typowe problemy</h2>
98+
<h3>Apache nie uruchamia się</h3>
99+
<ol>
100+
<li>Upewnij się, że ścieżka do pliku <code>php5apache2_2.dll</code> jest prawidłowa.</li>
101+
<li>Upewnij się, że folder podany w dyrektywie <code>DocumentRoot</code> w <code>httpd.conf</code> istnieje.</li>
102+
<li>Upewnij się, że port podany w dyrektywie <code>Listen</code> w <code>httpd.conf</code> jest wolny. Można to zrobić poleceniem <code>netstat -aon | findstr 80</code> (zakładając, że <code>80</code> to numer portu). </li>
103+
</ol>
104+
<h3>PHP nie uruchamia się</h3>
105+
<ol>
106+
<li>Upewnij się, że w <code>conf\mime.types</code> znajdują się wpisy:
107+
<pre><code>application/x-httpd-php php
108+
application/x-httpd-php-source phps</code></pre></li>
109+
<li>Upewnij się także, że w pliku <code>httpd.conf</code> znajdują się polecenia <code>PHPIniDir</code> oraz <code>LoadModule php5_module</code> podane powyżej.</li>
110+
<li>Upewnij się też, że plik <code>php5apache2_2.dll</code> jest w folderze PHP.</li>
111+
</ol>
112+
<h3>Import nie działa</h3>
113+
<p>Spróbuj najpierw z importu mniejszej ilości danych (np. pierwsze 1000 wierszy). POLos powinien wyświetlić komunikat z informacją co jest nie tak z danymi. </p>
114+
<p>Jeśli nie działa import dużych plików:</p>
115+
<ol>
116+
<li>W <code>php.ini</code> powiększ <code>upload_max_filesize</code> tak by był większy niż plik CSV.</li>
117+
<li>W <code>php.ini</code> powiększ <code>post_max_size</code> tak by był przynajmniej o 10M większy od <code>upload_max_filesize</code>.</li>
118+
<li>W <code>php.ini</code> powiększ <code>memory_limit</code> (zwłaszcza jeśli w logu PHP pojawia się komunikat o problemie przydziału pamięci).</li>
119+
<li>W <code>my.ini</code> powiększ <code>max_allowed_packet</code> na około 2 razy więcej niż plik CSV. </li>
120+
</ol>
121+
<h3>Import działa zbyt wolno</h3>
122+
<p>Import danych osobowych dla dużego miasta może trwać bardzo długo na powolnym lub silnie obciążonym komputerze. To znaczy import 100 tysięcy może nawet trwać godzinę, podczas gdy na szybkim, dobrze skonfigurowanym komputerze potrwa minutę. Dlatego zalecane jest przetwarzanie danych na dysku SSD. </p>
123+
<p>Na dysku SSD (lub innym szybkim dysku) powinny być przede wszystkim:</p>
124+
<ul>
125+
<li>Folder tymczasowy PHP (określony przez <code>upload_tmp_dir</code> w pliku <code>php.ini</code>).</li>
126+
<li>Folder danych MySQL (określony przez <code>datadir</code> w pliku <code>my.ini</code>).</li>
127+
</ul>
128+
<p>Można także spróbować dostosować konfigurację MySQL (w pliku <code>my.ini</code>) tak, żeby używała więcej pamięci RAM. Można w tym celu skorzystać z pliku <code>my-huge.ini</code> (z folderu MySQL). Ale można go wykorzystać jedynie jako wzorzec (wskazówki), bo może zawierać inne ścieżki niż używany plik <code>my.ini</code>.</p>
129+
<h3>W nazwach dzielnic nie ma polskich znaków</h3>
130+
<ol>
131+
<li>Sprawdź kodowanie plików CSV. Powinny być zapisanie jako pliku UTF-8. Najlepiej użyć Apache Open Office do tworzenia plików CSV.</li>
132+
<li>Należy pamiętać, że MySQL musi być skonfigurowany tak, żeby obsługiwać kodowanie UTF-8. Najlepiej to wybrać podczas instalacji.</li>
133+
</ol>
134+
<h3>Nie udaje się import niektórych wierszy</h3>
135+
<p>Podczas importu wykonywana jest walidacja danych. Odrzucane są m.in. wiersze z nieprawidłowym zakresem wieku (w wypadku profili), czy z nieprawidłowym PESEL (w wypadku danych osobowych).</p>
136+
<p>Błędne dane można sprawdzić w bazie danych. Do wykonywania zapytań SQL można np. skorzystać z <a target="_blank" href="https://www.phpmyadmin.net/downloads/">phpMyAdmin</a>.</p>
137+
<p>Zapytanie do sprawdzania błędnych rekordów profili:</p>
138+
<pre><code class="language-sql">SELECT *
139+
FROM profile
140+
WHERE row_state &lt;&gt; 0</code></pre>
141+
<p>Sprawdzenie błędnych rekordów osobowych w ten sposób jest obecnie niemożliwe, ponieważ import błędnych wierszy został wyłączony ze względów wydajnościowych. Jeśli przy wstawianiu danych osobowych do bazy pojawi się błąd, to zrzut zapytania SQL powinien pojawić się w <code>polos\temp\last.personal.sql</code>.</p>
142+
<p>Żeby spróbować sprawdzić, które rekordy osobowe nie zostały zaimportowane można spróbować zrobić pełny eksport zaimportowane danych za pomocą poniższego zapytania. Wyniki zapytania można wyeksportować do pliku CSV i porównać z importowanym plikiem.</p>
143+
<pre><code class="language-sql">SELECT `region`, `pesel`, `name`, `surname`, `city`, `street`, `building_no`, `flat_no`, `zip_code`
144+
FROM personal
145+
ORDER BY id ASC</code></pre>
146+
<p>Żeby wykonać eksport wyników zapytania w phpMyAdmin, musisz wykonać zapytanie, a potem <strong>pod tabelką wyników</strong> wybrać operację eksportu.</p>
147+
<h3>Inne problemy?</h3>
148+
<ol>
149+
<li>Na stronie <code>sys-test.php</code> znajdują się wymagania co do niektórych parametrów PHP oraz MySQL. Sprawdź czy wszystko się zgadza. Pamiętaj, że zalecane wartości tam podane są przewidziane na przetwarzanie plików CSV między 20-30 MB. W razie wątpliwości lepiej jest wybrać większe wartości. </li>
150+
<li>Sprawdź zawartość pliku z błędami POLos (w wypadku złapanych błędów w folderze polos utworzy się <code>.err.log</code>).</li>
151+
<li>Sprawdź zawartość pliku z błędami PHP (systemowe błędy PHP powinny pojawić się w pliku wskazanym przez opcję <code>error_log</code>; zazwyczaj nazywa się <code>php-errors.log</code> lub <code>php_errors.log</code>).</li>
152+
<li>Sprawdź zawartość pliku z błędami Apache (błędy uruchamia i funkcjonowania Apache powinny pojawić się w pliku <code>logs\error.log</code>, w folderze Apache).</li>
153+
</ol>

modules/_main/LICENSE.html

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<p>Copyright (c) 2017 Maciej &quot;Nux&quot; Jaros, Gmina Miasta Gdańsk</p>
2+
<p><strong>[EN]</strong> Dual Licensed: CC-BY or MIT.</p>
3+
<p><strong>[PL]</strong> Program udostępniony na dwóch licencjach: CC-BY lub MIT.</p>
4+
<h2>CC-BY</h2>
5+
<h3>EN</h3>
6+
<p><a target="_blank" href="http://creativecommons.org/licenses/by/4.0/">http://creativecommons.org/licenses/by/4.0/</a></p>
7+
<p>Attribution (BY) — You must give appropriate credit, provide a link to the license,
8+
and indicate if changes were made. You may do so in any reasonable manner,
9+
but not in any way that suggests the licensor endorses you or your use.</p>
10+
<h3>PL</h3>
11+
<p><a target="_blank" href="http://creativecommons.org/licenses/by/4.0/deed.pl">http://creativecommons.org/licenses/by/4.0/deed.pl</a></p>
12+
<p>Uznanie autorstwa (BY) — Należy odpowiednio oznaczyć autorstwo utworu, podać odnośnik
13+
do licencji i wskazać zmiany, jeśli takie zostały dokonane. Można tego dokonać
14+
w dowolny rozsądny sposób, o ile nie sugeruje się udzielenia przez licencjodawcę
15+
aprobaty dla siebie lub swojego sposobu wykorzystania licencjonowanego utworu.</p>
16+
<h2>The MIT License (MIT)</h2>
17+
<p>Copyright (c) 2017 Maciej &quot;Nux&quot; Jaros, Gmina Miasta Gdańsk</p>
18+
<p>Permission is hereby granted, free of charge, to any person obtaining a copy of
19+
this software and associated documentation files (the &quot;Software&quot;), to deal in
20+
the Software without restriction, including without limitation the rights to
21+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
22+
the Software, and to permit persons to whom the Software is furnished to do so,
23+
subject to the following conditions:</p>
24+
<p>The above copyright notice and this permission notice shall be included in all
25+
copies or substantial portions of the Software.</p>
26+
<p>THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
27+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
28+
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
29+
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
30+
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
31+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p>

0 commit comments

Comments
 (0)