Strona główna » Blog » Informatyka

Kategoria: Informatyka

Słowniki odmian słów polskich – załadowanie do bazy MySQL

Aby załadować słowniki SGJP i/lub Polimorf do bazy MySQL należy pobrać bazy słownikowe w postaci plików “*.tab” (wewnętrznie jest to format TSV) i wydać następujące polecenia:

CREATE TABLE `words` (
	`inflected` VARCHAR(38) NOT NULL COLLATE 'utf8_general_mysql500_ci',
	`id` VARCHAR(35) NOT NULL COLLATE 'utf8_general_mysql500_ci',
	`description` TINYTEXT NOT NULL COLLATE 'utf8_general_mysql500_ci',
	`additional` TINYTEXT NULL COLLATE 'utf8_general_mysql500_ci',
	`additional2` TINYTEXT NULL COLLATE 'utf8_general_mysql500_ci',
	INDEX `inflected` (`inflected`),
	INDEX `id` (`id`)
)
COLLATE='utf8_general_mysql500_ci'
ENGINE=InnoDB
;

CREATE TABLE `words_polimorf` (
	`inflected` VARCHAR(45) NOT NULL COLLATE 'utf8_general_mysql500_ci',
	`id` VARCHAR(40) NOT NULL COLLATE 'utf8_general_mysql500_ci',
	`description` TINYTEXT NOT NULL COLLATE 'utf8_general_mysql500_ci',
	`additional` TINYTEXT NULL COLLATE 'utf8_general_mysql500_ci',
	`additional2` TINYTEXT NULL COLLATE 'utf8_general_mysql500_ci',
	INDEX `inflected` (`inflected`),
	INDEX `id` (`id`)
)
COLLATE='utf8_general_mysql500_ci'
ENGINE=InnoDB
;

LOAD DATA LOW_PRIORITY LOCAL INFILE 'F:\\sgjp-20180923.tab' REPLACE INTO TABLE `words` FIELDS TERMINATED BY '	' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\n' IGNORE 29 LINES (`inflected`, `id`, `description`, `additional`, `additional2`);
/* 7 224 173 rows imported in 91,594 seconds. */

LOAD DATA LOW_PRIORITY LOCAL INFILE 'F:\\polimorf-20180923.tab' REPLACE INTO TABLE `words_polimorf` FIELDS TERMINATED BY '	' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\n' IGNORE 32 LINES (`inflected`, `id`, `description`, `additional`, `additional2`);
/* 7 374 866 rows imported in 270,469 seconds. */

Można to też sobie wyklikać w HeidiSQL. Parametry importowania plików TAB są takie:

Dekodowanie zawartości kolumny “description” można znaleźć w tej publikacji, rozdział 5.

Serwer kafelkowy OSM szybko i bezboleśnie dzięki dockerowi

Uruchomienie serwera kafelkowego OSM wedle oficjalnych instrukcji instalacyjnych potrafi być nie lada wyzwaniem. Dużo prędzej i znacznie bardziej bezboleśnie jest użyć odpowiedniego dockerowego kontentera – w tym wypadku overv/openstreetmap-tile-server. Poniższe instrukcje uruchamiają serwer kafelkowy dla obszaru Polski i czynią go dostępnym poprzez 127.0.0.1:10001/tile/. Czytaj więcej…

Uwierzytelnianie dwuskładnikowe w Webminie

Wiele punktów wejścia do systemu można sensownie zabezpieczyć: SSH na klucze zamiast haseł czy MySQL na certyfikaty clienckie, ale w przypadku Webmina albo trzeba się odizolować od sieci zewnętrznej, albo stosować bardzo silne hasła, albo spróbować uwierzytelniania dwukładnikowego. Ostatnio zdecydowałem się użyć takie oparte o Google Authenticator.

Czytaj więcej…

Synchronizacja z głównym repozytorium w GitHub

Informatyczne narzekanie: z nieznanych przyczyn od wielu lat GitHub nie posiada normalnego przycisku “Synchronizuj z głównym repo” i trzeba robić jakieś machinacje z odwrotnym pull requestem, co generuje dodatkowy wpis w historii commitów (czyli po synchronizacji fork i tak jest 1 commit ahead). Co ciekawe, GitHub API pozwala na realizację normalnej synchronizacji i ktoś nawet stworzył proste narzędzie do tego działające z poziomu przeglądarki. Dlaczego więc developerzy GH zwyczajnie nie zrobią normalnego buttona? Zagadkowe i frapujące.

Stack Overflow: punkty nie świadczą o wiedzy ale o wdzięczności

Stack Overflow to serwis typu Q&A (pytania i odpowiedzi), który zdobył fenomenalną popularność wśród informatyków. Uczestnicząc w społeczności SO poprzez np. zadawanie pytań lub udzielanie odpowiedzi otrzymuje się punkty i wraz z przyrostem punktów uzyskuje się dodatkowe przywileje. Warto zdać sobie sprawę jednak czego miarą owe punkty nie są.

Czytaj więcej…