Kategoria: Bez kategorii Strona 6 z 23

WordPress: usuń zbędne kopie wpisów

Jeżeli posiadasz w WordPressie dużo artykułów (niech będzie, że więcej niż 5000) i na dodatek często w trakcie pisania używasz klawisza „Zapisz szkic” żeby powrócić do tworzenia artykułu po pewnym czasie lub też, już po opublikowaniu, dokonujesz w nim wielu zmian, to musisz liczyć się z tym, że baza używana przez wordpressa spuchnie o poprzednie wersje wpisów.

Nowy rodzaj spamu

Nie wiem jak wy, ale ja obserwuję całkiem nowy rodzaj spamu, a właściwie to dwa, choć ten drugi to raczej jest na tyle dowcipnym, że aż go tutaj zacytuję.

Pierwszy trend, dość wredny, to wykorzystywanie już treści istniejących komentarzy do … spamowania.

Drugi, zabawny cytuję:

Mam wielką prośbę, bo właśnie planuję stworzyć blog przybliżony do tego. Napisz, błagam, jak się uchować przed spamerskimi postami, bo kolega mi powiedział, że to najogromniejszy problem… Z góry merci. A tak w ogóle, to świetnie piszesz :). Buziaki dla wszystkich.

Oczywiście „autorem” jest dwuwyrazowa fraza, a celem witryna sklepowa, ale to naprawdę zabawne, żeby powoływać się na ochronę przed spamem w spamerskiej wiadomości.

Czy też może to szczyt bezczelności?

WordPress: Policz wpisy w kategorii

Jak policzyć wpisy w kategorii? Okazuje się że bardzo, ale to bardzo prosto.

Na stronie kategorii jest najłatwiej, ponieważ zmienna $cat zawiera numer aktualnie przeglądanej kategorii.

get_category($cat)->category_count

Oczywiście sami podamy numer to też zadziała:

get_category(11)->category_count

Można też wybrać kategorię za pomocą sluga:

get_category_by_slug('nazwa-kategorii')->category_count

Jeżeli chcemy użyć nazwy to musimy skorzystać z get_term_by:

get_category(get_term_by('name', 'Nazwa Kategorii', 'category')->term_id)->category_count

W ostatnim przypadku należy pamiętać, że nazwa kategorii nie jest unikatowa, więc w serwisie może być więcej niż jedna kategoria o wybranej nazwie.

Co ciekawe obiekt kategorii ma dwa pola zawierające dane na temat liczby wpisów (count, category_count), ale nie widzę między nimi różnicy.

Może Ty znasz różnicę?

Jak zmniejszyłem maksymalny NIP

Prawie 3 lata temu zastanawialiśmy się z klientem biuro obsługi podatkowej jak stworzyć system webowy, który pozwalałby klientom oraz pracownikom biura na przekazywanie danych istotnych z punktu widzenie prowadzenia firmy, a jednocześnie na tyle prostych, żeby nie trzeba było przechodzić kursu księgowości, żeby zrozumieć działanie takiego systemu.

Na początku został stworzony prosty rejestr klientów w którym każdy z nich może sobie sprawdzić podstawowe dane księgowe. System na start został wyposażony w możliwość wysyłania powiadomień, w których to zawarte są informacje na temat nadciągających nieuchronnie terminów płatności różnych rabowanych nam przez państwo składek. Sam je płacę, więc wiem, a latami miałem ustawioną przypominajkę z kalendarza google.

Wracając do meritum sprawy. Po kilkunastu miesiącach pracy pojawiła się w systemie, jedna z wielu, mała modyfikacja, polegająca na tym, że do firm typu „spółka” można było dołączyć dane wspólników, które mogli oni sobie sprawdzać samodzielnie.

A potem pojawił się błąd. Klient zgłasza, że nie można wprowadzić numeru NIP wspólnika. Zaczynam sprawdzać, raz, drugim trzeci. W kodzie nie ma NICZEGO co sugerowałoby jakiekolwiek operacje na nipie, a walidacja nigdy klientowi nie była potrzebna, bo i sam nip raczej służy do dodatkowej weryfikacji, a nie do czegoś istotnego. Co grosza, moje testy nie pokazywały występowania błędu!!! Wpisywałem prawdziwe, zmyślone i całkiem złe numery nip i nigdy nie napotkałem na opisywany problem. Najgorszym objawem było to że w NIP pojawiał się, niezależnie od wpisywanego numer: 4294967295. Zupełnie nie zwróciłem na tą liczbę uwagi, a powinienem, bo jest ona rozwiązaniem kłopotu.

Problem polegał na użytym polu w bazie danych MEDIUMINT który jest typem domyślnym w czasie deklaracji w mysql pola typu INT ma, bez znaku, taką właśnie wartość maksymalną.

Co ciekawe, przy konstrukcji bazy kilkanaście miesięcy wcześniej i definicji pola NIP na potrzeby firm, nie popełniłem tego błądu i wszystko działało prawidłowo.

WordCamp w Łodzi

W drugi weekend grudnia w dniach 11-12 odbędzie się w Łodzi, na terenie Politechniki Łódzkiej, polska edycja WordCamp – czyli konferencja poświęcona wordpressowi. Na razie nie ma jeszcze programu, ale patrząc na prelegentów już wiem, że warto.

Więcej informacji znajdziecie na stronie: WordCamp.

postgres na utf8 i serwis w latin2

Opiekuję się serwisem, który ze względu na długą historię życia jest napisany tak, że korzysta z kodowania ISO-8859-2, czyli tytułowego latin2. Jakiś czas temu była aktualizowana baza danych z pg 8.2 do pg 8.4 z konwersją bazy do utf-8 jako początkiem procesu zmiany strony kodowej całego serwisu w którym coraz częściej pojawia się potrzeba wykorzystania znaków z szerszego zakresu znaków niż oferuje latin2.

Obawa co do współpracy aplikacji z bazą były, ale jedno polecenie powoduje bezkłopotową konwersję znaków na poziomie połączenia z serwerem db.

Zapisuję dla pamięci

ALTER USER user SET client_encoding = 'LATIN2';

dzięki depesz

Biznesowy motyw do wordpress’a

Na podstawie otrzymanych plików graficznych wytworzyłem i wdrożyłem motyw do wordpress’a. W motywie wykorzystano możliwości jakie daje wersja 3. Wykorzystano możliwość budowania menu oraz ze zdefiniowanych wielu stref na widgety. Do wdrożenia użyto wtyczek zapewniające możliwość obsługi następujących funkcjonalności:

  • zarządzania biuletynem
  • generowanie sitemap.xml
  • tworzenie mapa strony
  • prezentacja działów jako lista artykułów grupowane na podkategorie (zawężona mapa strony)
  • formularz kontaktowy
  • prezentacja popularnych wpisów
  • prezentacja relatywnej daty publikacji (10 minut temu)
oprogramowanie
wodrpress
cel
wdrożenie serwisu finansowego z wykorzystaniem wordpress
zakres prac
pocięcie grafiki, wytworzenia szablonu do wordpress
technologie
php, xhtml, jquer, css sprites

Przyciski w przeglądarkach

Przydatne, dziękuję.

Button kontra przeglądarki

Jak policzyć unikatowe linie w pliku

Mamy plik zawierający następujące dane:

Iza
Aga
Aga
Leon
Aga
Iza

Aby policzyć unikatowe linie, posortować i wyświetlić on najczęściej występujących używamy następującej komendy:

sort nazwa.txt | uniq -c | sort -n -k1 -r

Co da jako

3 Aga
2 Iza
1 Leon

Oczywiście można to zastosować do innych danych.

sesje PHP w memcache’u

Pewien dość mocno obciążony serwer www (apache2) strasznie dużo zapisywał w katalogu sesji PHP. Na tyle dużo, że zaczeło to być problemem, jeszcze nie krytycznym, ale już zauważalnym.

Jednym z możliwych rozwiązań jest przeniesienie sesji do bazy danych, ale ze względu na specyfikę danych sesyjnych nie jest to szczególnie dobre rozwiązanie przy tej wielkości serwisu, a dodatkowo serwis korzysta z postgresa, więc wrzucanie w niego sesji jest jeszcze mniej polecane.

Rozwiązaniem zastosowanym, a które szczerze polecam jest memcache.

Instalacja jest banalnie prosta. Najpierw odpowiednie moduły na serwerze: (dla debianowaych):

sudo apt-get install memcached php5-memcache

Sprawdzamy czy serwer memcache wstał

netstat -ntlp | grep mem

oraz czy w używany php jest załadowany moduł memcache.

W konfiguracji php należy zmienić sposób przechowywania sesji oraz ustawić dane dostępowe do memchache’a:

;session.save_handler = files
session.save_handler = memcache
session.save_path="tcp://127.0.0.1:11211?persistent=1&weight=1&timeout=1&retry_interval=15"

Teoretycznie powinno zadziałać.

Niestety u mnie wystąpił następujący błąd:

Fatal error: session_start() [function.session-start]: Failed to initialize storage module: memcache (path: [...]/session) in /var/virtuals/[...].php on line 41

Który związany był z ustawianiem przez plik konfiguracyjny serwisu następującej wartości

ini_set("session.save_path",SESSION);

i dopiero po jej usunięciu wszystko zaczęło śmigać tak jak powinno.

Strona 6 z 23

Oparte na WordPress & Theme by Anders Norén