Do napisania tego wpisu zainspirował mnie artykuł o tym, że Microsoft się otwiera. Dotąd prowadził on wojnę z Linuksem, otwartym oprogramowanie, straszył pozwaniem do sądu za naruszone(?) patenty. A teraz się obudził i zdał sobie sprawę w przeciwieństwie do Don Kichote, że to była "walka z wiatrakami".
Wydawać by się mogło, że w środowisku wolnego, otwartego oprogramowania FLOSS nie ma ludzi skłóconych, a wszyscy ludzie stoją po jednej stronie, nie bardziej mylnego. Środowisko to jest podzielone na dwa większe fronty, jeden to posługujący się licencją GNU GPL, głosem ich FSF(Free Software Fundation) oraz nieformalny przywódca, Richard Stellman, ich symbolem jest głowa antylopy. Natomiast drugi front, to ludzie bardziej liberalny, ich nieformalnym przywódcą jest Linus Torvalds, a organizacją pomocniczą jest OSI, w przeciwieństwie do pierwszego odłamu nie udało się uzyskać znaku towarowego dla Open Source, który zabraniał by innym używać tego terminu. Plotki mówią, że ci dwaj niby przywódcy się nie za bardzo lubią, ale co się dziwić mają ku temu powody. Rozgadałem się trochę na temat podziału, a zapomniałem, że ruch wolnego oprogramowanie zapoczątkował Richard Stellman w 1983 roku, ogłaszając publicznie projekt systemu GNU. Więcej o historii nie będę się rozpisywał, ponieważ kto będzie chciał sobie ją poczytać to wejdzie na Wikipedie i sprawa z głowy.
Wspomniałem w poprzednim akapicie, że coś dzieli to środowisko, wszystkiego winna jest licencja. Środowisko związane z Linuksem nie chce słyszeć o licencji, która zmusza twórców oprogramowanie, którzy mają w swoim projekcie chociaż jeden plik z licencją GNU GPL, do tego, aby ich oprogramowanie było też na licencji GNU GPL. Mówią, że to jest kolejna zaraźliwa licencja i niepotrzebnie ogranicza twórców oprogramowania, licencja powinna jak najwięcej dawać możliwości twórcom oprogramowania, aby mogła się nazywać wolną. Chcąc być alternatywą oraz odróżnić się od Wolnego Oprogramowania, nazwali swój ruch Otwartym Oprogramowaniem(org. Otwarte Źródła). Ale te dwa ruchy mają coś wspólnego, zgadzają się co do tego, że każdy może wykorzystywać, modyfikować otwarte/wolne oprogramowanie, różnice dotyczą jedynie tego, jaką może mieć licencje po zmienieniu przez użytkownika. Konflikt jest tylko widoczny na górze, wśród przywódców.
Siłą całego ruchu jest jego wielkość i to, że każdy może aktywnie uczestniczyć w tworzeniu oprogramowania, dzięki temu powstało dużo oprogramowania: Mozilla, Netscape(już praktycznie nie istnieje), G++, Linuks, GNOME, Firefox, Firebid, eMule, OpenOffice oraz typy plików: odf, gzip. Większość ludzi z tego środowiska nie chce żeby OOXHML zostało uznane przez ISO za drugi standard zapisu plików, chociaż niektórzy sympatyzują z Microsoftem np. Novell, ale wszyscy sprzeciwiają się patentom na oprogramowanie oraz uważają, że najlepsze programy mogą powstać jedynie przy dużej konkurencji oraz gdy każdy będzie miał w wgląd w ich kod, ponieważ łatwiej wtedy załatać błędy, ulepszyć. Kolejną rzeczą, która łączy dwa odłamy tego ruchu jest znak copyleft(odwrócony copyright), w wolnym tłumaczeniu znaczy tyle wszystkie prawa odwrócone, chociaż ma zastosowanie generalnie w licencjach projektu GNU. Jako kompromis pomiędzy liberalnymi licencjami np. BSD, a restrykcyjnymi typu GNU GPL, powstała licencja GNU LGPL, która najbardziej mi się podoba. Ja uważam, że jeśli wykorzystuje się owoc czyjeś pracy, to pasuje, że modyfikacja zawierające tą część też powinna być wolna, ale to należy do kwestii moralności ludzi, a nie do regulowania przez licencję.
Tagi: Informatyka, kod, spam, walka, webmastering, Wordpress, Kategoria: Informatyka Od września do początku lutego, nie męczył mnie żaden spam, normalne komentarze też rzadko pojawiały się, więc akceptowałem komentarze za pośrednictwem mojego e-mail. Ale sielanka się skończyła, spamerzy znaleźli mój blog, poczta zapełniona kilkunastoma mail z zapytaniem o akceptację. Postanowiłem z nimi walczyć, zarzuciłem Akismet na bloga, no i w tym tygodniu tworzyłem skrypt, który sprawdzał, czy osoba wysyłająca komentarz nie jest botem.
Na początku liczby i działanie były generowane PHP(i tak też jest teraz), ale poprawność komentarz była sprawdzana za pomocą JavaScript, jeśli zły wynik, to funkcja usuwała wartość atrybutu action w polu form(formularz komentarza) i to uniemożliwiało wysłanie komentarze, ale miało jedną wadę, lepsze skrypty(czyt. boty) mogło "odczytać" dzięki temu prawidłowy wynik. Więc postanowiłem, że każdy(nawet jeśli ma zły wynik) ma możliwość wysłania komentarza, a sprawdzanie poprawności wyniku będzie się odbywało za pomocą PHP, w pliku przetwarzającym komentarz. Mam nadzieję, że boty nie poradzą sobie z tym, ale jak już sobie poradzą, to będzie losowo pisana historyjka:
Treść:
Do autobusu wsiadło pięć osób. Na pierwszym przystanku wysiadły dwie osoby, a wsiadły zero. Na drugim przystanku wysiadły trzy osób, a wsiadły dwie. Na trzecim wysiadła jedna.
Pytanie: Ile osób jechało autobusem z zerowego przystanku do pierwszego?
Z takim czymś napewno komputery nie poradziłyby sobie.
A teraz kod skryptu o którym mówiłem przed cytatem:
wp-comments-post.php(plik Wordpress'a - znajduje się w głównym katalogu)
$prawidlowy = 0;
$_1liczba = 0;
$_2liczba = 0;
switch($_POST['liczba_1'])
{
case 'jeden': $_1liczba = 1; break;
case 'dwa': $_1liczba = 2; break;
case 'trzy': $_1liczba = 3; break;
case 'cztery': $_1liczba = 4; break;
case 'piec': $_1liczba = 5; break;
case 'szesc': $_1liczba = 6; break;
case 'siedem': $_1liczba = 7; break;
case 'osiem': $_1liczba = 8; break;
case 'dziewiec': $_1liczba = 9; break;
}
switch($_POST['liczba_2'])
{
case 'jeden': $_2liczba = 1; break;
case 'dwa': $_2liczba = 2; break;
case 'trzy': $_2liczba = 3; break;
case 'cztery': $_2liczba = 4; break;
case 'piec': $_2liczba = 5; break;
case 'szesc': $_2liczba = 6; break;
case 'siedem': $_2liczba = 7; break;
case 'osiem': $_2liczba = 8; break;
case 'dziewiec': $_2liczba = 9; break;
}
switch($_POST['dzialanie'])
{
case 'Suma': $prawidlowy = $_1liczba + $_2liczba; break;
case 'Roznica': $prawidlowy = $_1liczba - $_2liczba; break;
case 'Iloczyn': $prawidlowy = $_1liczba * $_2liczba; break;
}
if ( 'POST' != $_SERVER['REQUEST_METHOD'] ) {
header('Allow: POST');
header('HTTP/1.1 405 Method Not Allowed');
header('Content-Type: text/plain');
exit;
}
require( dirname(__FILE__) . '/wp-config.php' );
nocache_headers();
$comment_post_ID = (int) $_POST['comment_post_ID'];
$status = $wpdb->get_row("SELECT post_status,
comment_status FROM $wpdb->posts WHERE ID = '$comment_post_ID'");
if($_POST['wynik'] != $prawidlowy)
{
echo "Wynik działania jest zły, jeśli nie jesteś botem spróbuj jeszcze raz";
exit;
}
elseif ( empty($status->comment_status) )
{
do_action('comment_id_not_found', $comment_post_ID);
exit;
}
elseif ( 'closed' == $status->comment_status )
{
do_action('comment_closed', $comment_post_ID);
wp_die( __('Sorry, comments are closed for this item.') );
}
elseif ( in_array($status->post_status, array('draft', 'pending') ) )
{
do_action('comment_on_draft', $comment_post_ID);
exit;
}
...
comments.php(znajduje się w katalogu twojego używanego stylu w Worpressie np. "wp-content/thems/black_batman/comments.php")