Poprawianie znaku '<' na '<' pomiędzy znacznikami <code> i </code>, gdzie miałem wklejony kod jakiegoś programu, przy każdej aktualizacji postu stało się już zbyt denerwujące. Postanowiłem się za to jakoś zabrać, jeśli ja to z automatu robię, to i komputer będzie potrafił to zrobić. Musiałem sam napisać odpowiedni kod, bo do takiego banalnego zadania nie zatrudnia się rozbudowanych edytorów WYSIWYG. Bez mojego zmysłu programistycznego pewnie zrobiłbym to w PHP, jednak JavaScript jest lepszym rozwiązaniem (odpowiedź w zakończeniu).
Co może być takiego trudnego we włączeniu kompresji GZIP na stronie? Prawdopodobnie nic, jeśli ma się dostęp do pliku php.ini lub dyrektywy "php_value" w pliku .htaccess działają. Jednak na serwerze wirtualnym (w większości przypadków) takiej wygody nie mamy. A i żeby nie było nie chodzi mi tu o kompresje plików z końcówką .php, bo to się włącza kilkoma linijkami. Rzecz rozbija się o kompresję plików .css, .js, czyli plików nieprzetwarzanych przez interpreter php.
Ostatnio przez problem referencji w foreach i burzę mój blog był nieużywalny przez prawie pół dnia. Kod mojego CMS jest bardzo rozbudowany, więc uchwycenie tego błędu było bardzo trudne, lecz najgorsze chyba było to, że nawet bym tego nie podejrzewał o powodowanie się wysypywania kodu. To jest bardziej nieuchwytne niż niezaincjowawany wskaźnik w C++.
Napiszę tym razem artykuł o bezmyślności twórców stron w jednej kwestii, w wstawainu odnośników do innych stron. Właśnie w tym wpisie zaczyna się moja krucjata przeciwko atrybutowi "target", a szczególnie przeciwko wartości "_blank".
HTML powstał wtedy, gdy przeglądarki działały w jednym oknie, więc z linkami nie trzeba było kombinować. Pojawiły się możliwość otwierania więcej niż jednej strony za pomocą jedengo kliknięcia. Wtedy, gdy pojawiły się ramki html, pojawił się też atrybut target, którego powstanie było uzasadnione, bo poruszanie się w stronach z ramkami z normalnym linkiem nie jest wygodne, teraz pozsotały dwie wartości: "_blank" - otwiera w nowym oknie, "_top" - otwiera w tym samym oknie, przeładowuje całe okno. W czasach ramek, istnienie i używanie target było uzasadnione. Lecz teraz, gdy każdy woli przyjemny interfejs tzn. jedno aplikacja = jedno okno; + możliwość otwierania jednym kliknięciem(kółkiem od myszki) odnośnika w nowej karcie.
Ale teraz, gdy ramki są już przestarzałe, a zamiast nich używa się div-ów albo innym elementów + CSS, mało jest już stron bez JavaScriptu, nie rozumiem potrzeby używania atrybutu target i to jeszcze w bardzo uciążliwy sposób dla użytkownika. Podam przykład:
Pragnę jeden odnośnik do artykułu otworzyć w nowej karcie, a drugi w tej samej karcie(czyli w tym samym oknie); ale nieraz twórcy stron chcą mi to uniemożliwić. Na takiej stronie gdzie każdy link ma target="_blank", muszę otworzyć dwa linki w nowych kartach i zamknąć starą kartę. Ale co jeśli chcę zobaczyć historię, muszę dać ostatnio zamknięte karty(jeśli przeglądarka ma taką funkcję) no i wtedy się cofać. Ale jeśli pięć razy pod rząd trafiłem na stronę z target="_blank", to wtedy nawet tej pierwszej karty raczej nie będzie w ostatnio zamkniętych, kiedy otwiera się po trzy nowe karty i kazdą po przeczytaniu się zamyka. Problemu by nie było, gdyby twórcy stron trochę pomyśleli, wtedy wystarczyłoby się cofnąć o 5 punktów w hisotroii i po problemie.
To jest tylko prosty przykład, większy problem jest, gdy użytkownik nie wiem, że strona z takiej metody. Więc, apeluję do wszystkich twórców stron, proszę zaprzestać używania atrybutu "target", jeśli na stronie nie są używane ramki.
PS. Linki nie są jedynym przykładem bemyślności początkujących webmasterów.
Tagi: programowanie, spolszczenie, Sport, webmastering, wiosna, Wordpress, ZaDiS, zmiany, Kategoria: Reszta Przepraszam was drodzy czytelnicy, że nie pisałem tak długo, ale nie miałem czasu.
Nadeszła wiosna, więc trzeba zacząć biegać, ćwiczyć, grać w i piłkę nożną. Biegać jeszcze nie zacząłem, ale zacząłem już chodzić na treningi do klubu piłkarskiego w mojej miejscowości.
Musiałem też zainstalować Wordpress 2.5, ale nie wiem czego spolszczenie mi nie działa, chociaż zrobiłem to co trzeba, czyli wrzuciłem pliku pl.mo i pl.po do "/wp-content/languages/" , później do "/wp-includes/languages/" i dalej nie działa. Będę musiał pokombinować :/ .
W związku z tym, że dostałem się do drugiego etapu OIG, musiałem trochę poprogramować, a czasu dużo nie mam drugi etap już w sobotę. Jeśli chodzi o programowanie, to mam zamiar stworzyć klasę AWK(taki język programowania, wiecej na wikipedi oraz na blogu zyxist.com) w C++ i D. Jeśli chodzi o programowanie, zrozumiałem, też, że nowe języki, choć są bardzo dobre i nowoczesne, nie zdobędą popularności, bo większość przyzwyczaja się do tych starszych, jedyna nadzieja w nastolatkach, którzy teraz zaczynają programować lub programują.
Wiem, wiem, że kolejne głupie wytłumaczenie, ale musiałem też zająć stronką klanu SoW(do którego ja należę) z CounterStrike, więc musiałem się pomęczyć z logo we Flashu, oraz z innymi zachciankami członków SoW.
Musiałem jeszcze bawić się z hostingiem, ale o tym w innym wpisie.
PS. Jeszcze jednej zachcianki nie spełniłem.
Teraz już nie zrobię takiej dużej przerwy, bo nie mam powodów i głupich wymówek oraz mam bardzo dużo wpisów w planie :D . Więc spodziewajcie się tu dużo ciekawych wpisów.
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")