Paweł Talacha
software developer
RSS
  • Home
  • O mnie
  • Blog

Paź 22 2011

ViCMS 2.0.12 – Wyszukiwarka

Wyszukiwarka pozwalająca na znalezienie interesującej treści w obrębie witryny to funkcja, którą ViCMS posiada prawie od początku swojego istnienia. Była ona wtedy wykonana na szybko, jako prowizoryczna – proteza ostatecznej wersji. Zasada działania była tak prosta, że już prostsza być nie mogła. ;) Przeszukiwała treść pod kątem wystąpienia danej frazy w sposób dosłowny (tak, jak została wprowadzona) – bez żadnej analizy. Jak powszechnie wiadomo, prowizorki są najtrwalsze – toteż działała w prawie niezmienny sposób po dziś dzień stając się najsłabszym elementem systemu.

Wyszukiwarka w takiej postaci nie spełniała swojej funkcji (była mało skuteczna) i nie mogłem już na nią patrzeć. :P Czas więc najwyższy było napisać ją bardziej porządnie. Nowy sposób przeszukiwania treści analizuje aktualności, strony i galerię pod kątem wystąpienia poszczególnych elementów frazy, sortując wyniki w grupach według trafności (procent zawartości frazy) i powtarzalności (taka prawie ilość wystąpień ;)). Ale gdyby ktoś jeszcze marudził – zawsze może zaznaczyć pole obok i zmusić silnik Google do wykonania brudnej roboty.

Pozostałe zmiany w wersji 2.0.12

  • Obrazki w treści stron i aktualności mogą być teraz również umieszczane po lewej lub po prawej stronie tekstu, który będzie je „opływał”. Służą do tego odpowiednio znaczniki img2 iimg3. Należy pamiętać, że sekcja taka musi być zamknięta za pomocą clear i /clear. W przeciwnym razie może zrobić się mały bałagan. Dlatego też funkcję zaznaczam jako „dla użytkowników zaawansowanych”.
  • Skórki mogą posiadać teraz ikonkę w formacie PNG – plik icon.png. Oczywiście Internet Explorer starszy niż 9 ich nie obsługuje, więc załaduje sobie plik favicon.ico, o ile taki będzie znajdował się w folderze. Pozostałe przeglądarki, użyją tego pierwszego pliku. Zalety? Ładniej się prezentuje, kolor 32-bit, przezroczystość, w większej rozdzielczości (ponad 200×200) np. Opera używa jako miniaturki w SpeedDial, itp.
  • Drobne poprawki w skórkach i aktualizatorze.

– Pobierz nową wersję –

Jeżeli nic dziwnego się nie przytrafi i będę miał znowu napad na dłubanie w PHP to kolejna wersja będzie już prawdopodobnie z serii 2.1 z czymś bardzo fajnym. :)

By Paweł Talacha • ViCMS • 0 • Tags: vicms

Wrz 18 2011

ViCMS 2.0.11 – Lepsze formatowanie treści

System zarządzania treścią, jak wskazuje nazwa, powinien przede wszystkim umożliwiać swobodne kształtowanie sposobu prezentacji tekstu. Brak kompletnego formatowania, w skład którego wchodzi kolorowanie tekstu, możliwość powiększania czy zmniejszania czcionki oraz wstawianie wykazów był wadą ViCMS. Był. :)

Co w nowej wersji?

  • Możliwość tworzenia wykazów zawierających elementy uporządkowane (ponumerowane) lub nieuporządkowane (wypunktowane – jak ten mruga) Wygląd można sobie doprecyzować w pliku skórki używając klas – odpowiednio list1 i list2. Numeracja w pierwszym przypadku może zaczynać się od konkretnej wartości, jeśli znacznik rozpoczynający będzie miał postać np. list1=6. Listy mogą być zagnieżdżone.
  • Kolorowanie tekstu. Na dzień dzisiejszy tylko przeglądarka Opera obsługuje input type color, więc w celu umożliwienia wybierania barwy użyty został komponent JSColor autorstwa Jana Odvárko (screen poniżej). Nie było sensu pisania czegoś od podstaw, skoro istnieje dobre i fajne rozwiązanie. Został więc włączony do systemu.
Wybór koloru
Wybór koloru
  • Zmiana rozmiaru czcionki – za pomocą znacznika size=wartość. Nie ma do tego przycisku, bo raczej rzadko przychodzi potrzeba, żeby zmieniać określony w skórce rozmiar, ale opcja jest.
  • Odtwarzacz filmów z YouTube można już przełączać w tryb pełnoekranowy bezpośrednio ze stron. :P
  • Dla wygody na dole aktualności zostały dodane strzałki do nawigacji.

Oprócz tego poprawki błędów, które udało się zauważyć od ostatniej wersji:

  • Nie dało się dołączyć stron do menu (zepsułem chyba w przedostatniej wersji mruga)
  • Przy dodawaniu plików do stron i aktualności powrót z kategorii plików wyświetlał komunikat braku upoważnienia.
  • Jeżeli istniały jakieś strony, a wyłączona została ich obsługa w obrębie całej witryny, zostawały one w menu górnym.
  • Brak odstępu pomiędzy częściami aktualności (widoczną od razu i po kliknięciu na „czytaj dalej”) w podglądzie.
  • Numerki w listingu kodu wyświetlały się brzydko przy większej liczbie linii niż 9.
  • Tytuł i podtytuł witryny nie znajdowały się pomiędzy znacznikami h1 w przypadku, gdy menu było powyżej (na samej górze) – np. dla skórki infrared.

– Pobierz nową wersję –

By Paweł Talacha • ViCMS • 0 • Tags: vicms

Sie 9 2011

Opera vs. Google

Od niepamiętnych czasów niektóre usługi Google nie działają w 100% poprawnie w przeglądarce Opera. Czasami faktycznie bywa to problem Opery, ale błędy są zwykle dość szybko poprawiane i od momentu zgłoszenia znikają wraz z pojawieniem się kolejnej wersji. Nawet jeśli Opera zachowuje się prawidłowo, a błąd jest po stronie serwisu WWW, jej twórcy próbują obejść problem stosując tzw. łatki. Czasem łatki są używane doraźnie, jeśli trzeba trochę poczekać na poprawkę w silniku. Po jej wprowadzeniu łatka jest usuwana.

Ale… Niestety mało kto wie (psiocząc na Operę), że często błędy powoduje umyślnie samo Google. Swego czasu nawet kwestię poruszył Paweł Wimmer wysyłając do Google Polska list otwarty w tej sprawie. Skąd pewność, że umyślnie?

Otóż Opera, chyba mniej więcej w tamtym okresie, wprowadziła ciekawą funkcję pozwalającą jej na udawanie innej przeglądarki. Wystarczy gdzieś na otwartej stronie kliknąć prawym przyciskiem myszy, z menu kontekstowego wybrać opcję „preferencje witryny”, następnie zakładkę „sieć” i tam, na dole ustawić udawanie. Po zatwierdzeniu i odświeżeniu strony zdarza się cud! ;) W znacznej większości przypadków serwisy działają poprawnie. I nagle okazuje się, że z Opera radzi sobie świetnie i nie ma problemów z wyświetlaniem żadnego elementu witryny.

Opera preferencje

Praktyka blokowania Opery przez Google mimo upływu lat w ogóle się nie zmieniła. Metody stają coraz trudniejsze od obejścia. Wystarczy spojrzeć na najnowsze dziecko firmy – serwis społecznościowy Google+. Maskowanie w tym przypadku nie wystarczyło, aby górne menu działało poprawnie (tylko zaczęło się wyświetlać), ale jak się okazuje po dodaniu „AppleWebKit/535.1” do user agent (ciągu znaków identyfikującego przeglądarkę) – serwis nagle zaczyna działać zgodnie z oczekiwaniami. Wystarczą trzy kroki:

  1. W pasku adresu wpisujemy: opera:config#ISP|Id
  2. Wprowadzamy wartość: AppleWebKit/535.1
  3. Zapisujemy zmainy, restartujemy Operę

To dowodzi, że wina leży tylko i wyłącznie po stronie Google, który z sobie znanych tylko powodów blokuje użytkowników Opery. Można zastanawiać się, dlaczego firma posuwa się do stosowania chwytów poniżej pasa? Czyżby bała się uczciwej konkurencji? Może zdaje sobie sprawę, że Opera pod względem funkcjonalnym bije na głowę ich produkt – Google Chrome? ;)

Odpowiedzcie sobie sami. Przy okazji przypomnę, że najnowszą wersję Opery znaleźć można na stronie firmy. :)

Edit: Już użytkownicy napisali skrypty, a nawet wtyczkę, która naprawia serwis Google+.

By Paweł Talacha • Soft • 0 • Tags: google, opera

Lip 26 2011

ViSUD – zapowiedź #1

Mamy wakacje, a więc tempo prac nad ViSUDem także jest iście wakacyjne. Średnio – kilka linijek na dobę – w końcu są ciekawsze rzeczy do roboty. :) Ale prace posuwają się niezmiennie do przodu i powoli z czeluści losowych znaków wyłaniają się bardziej uporządkowane fragmenty, których to zbiory zaczynają ze sobą wzajemnie współgrać tworząc kod. Jest już gotowych mnóstwo rzeczy – jeśli ktoś czytał wpisy na blipie, wie, co zostało zrobione. Nie o wszystkim tam jednak pisałem (na razie są one tajemnicą) i nie prezentowałem dotychczas większych fragmentów interfejsu. Dziś jednak zamierzam pokazać kilka rzeczy z silnika.

Przede wszystkim – questy. To one – obok obsługi przedmiotów i walki – stanowią istotę tekstowych gier przygodowych. Dzięki nim możliwe jest budowanie fabuły i tworzenie ciągu zależnych od siebie zadań, które gracz będzie musiał wykonać, aby odblokować kolejne fragmenty gry. W jaki sposób działać będą w ViSUD? Zapraszam do obejrzenia filmu (najlepiej bezpośrednio w serwisie YouTube, na pełnym ekranie w najwyższej rozdzielczości).

Należy pamiętać, że nadal jest to bardzo wstępna wersja i sporo rzeczy może jeszcze ulec zmianie. Na pewno do poprawki jest wzór liczący limit inwentarza, bo przy niskich poziomach jest zbyt mały i komicznie to wygląda. ;) Oczywiście „gra” zaprezentowana na filmie nie jest żadną grą – są to tylko fragmenty testowe.

By Paweł Talacha • ViSUD • 0 • Tags: visud

Cze 2 2011

Apache OpenOffice

Bardzo ciekawe rzeczy wydarzyły się w kwestii pakietu biurowego OpenOffice.org. Otóż firma Oracle ogłosiła, że przekazuje go Apache Software Foundation. Luke Kowalski, vice prezes, Oracle Corporate Architecture Group, określił akt ten jako manifestację zobowiązań wobec twórców i społeczności open source. Jego zdaniem, zapewni to popularnemu pakietowi dojrzałą opiekę, otwartą i stabilną infrastrukturę oraz dobre warunki dla dalszego rozwoju.

Do społeczności Apache należał będzie więc kod projektu, prawa autorskie oraz znak handlowy. Oracle zachowa dla siebie patenty związane z OpenOffice.org, uzyskane przy okazji przejęcia Sun Microsystems.

Od czasu, kiedy w ręce firmy Oracle trafił OpenOffice.org, nie zrobiono właściwie nic w celu jego rozwoju. Część programistów w obawie przed zamknięciem projektu i innymi dziwnymi decyzjami kierownictwa zbuntowała się, zakładając The Document Foundation, w ramach której rozwijany jest LibreOffice, bazujący na OpenOffice.org.

TDF wyraża nadzieję na współpracę z Apache Software Foundation i połączenie wysiłków obu społeczności, co będzie możliwe dzięki zmianie licencji projektu.

Pozostaje więc czekać na rozwój wydarzeń i trzymać kciuki, żeby się wszyscy dogadali i zaczęli dynamicznie rozwijać soft współpracując, zamiast każdy z osobna bawić się w swojej piaskownicy swoimi zabawkami. Takie rozwiązanie powinno przynieść korzyść nie tylko dla użytkowników, ale również dla podmiotów zewnętrznych zaangażowanych w rozwój projektu. Swoją drogą – ciekawe w jaki sposób zareagują wydawcy różnych dystrybucji systemów linuxowych, jeśli do fuzji nie dojdzie? Czekamy więc.

Tymczasem lada dzień, zgodnie z harmonogramem, The Document Foundation powinno wypuścić LibreOffice 3.4.

By Paweł Talacha • Soft • 0 • Tags: apache, libreoffice, opernoffice

Maj 18 2011

Komunikacja applet – kontroler Java Spring

Przeglądając sieć zauważyłem, że trochę osób ma problem z komunikacją applet – kontroler Java Spring (model MVC). Trudno znaleźć opis zagadnienia. Postanowiłem więc napisać kilka słów.

Założenie jest takie, aby kontroler odebrał dane, przetworzył i przekazał do widoku lub ewentualnie odpowiedział wysyłając komunikat do appletu. Oczywiście najlepiej byłoby przesyłać całe obiekty (serializacja), aby móc np. potem korzystając z JPA (mapowanie obiektowo-relacyjne) zapisać dane wygodnie do bazy. Dlatego też użyjemy strumieni obiektowych (ObjectOutputStream oraz ObjectInputStream).

Zanim jednak przejdę do rzeczy – kilka słów na temat sposobu osadzania appletu.
Po pierwsze – nabywamy ładnych nawyków, więc używamy znacznika object, nie applet.
Po drugie – jeżeli nasz applet był tworzony z wykorzystaniem dodatkowych bibliotek, np. AbsoluteLayout, należy też je dołączyć. Umieszczamy więc w pliku widoku kod:

<object type="application/x-java-applet" width="800" height="600">
     <param name="classid" value="java:pakiet.Klasa.class" />
     <param name="archive" value="naszApplet.jar, AbsoluteLayout.jar" />
</object>

W ten sposób nasz applet będzie wyświetlany na wybranej stronie. A co z komunikacją?

applet → kontroler

Aby wysyłać dane do kontrolera, w metodzie appletu, która ma to robić, umieszczamy kod:

URL url = new URL("http://adresSeriwsu/odebranieDanych.html");
URLConnection uc = url.openConnection();
uc.setDoInput(true);
uc.setDoOutput(true);
uc.setUseCaches(false);
uc.setDefaultUseCaches(false);
uc.setRequestProperty ("Content-Type", "application/octet-stream");
OutputStream out = uc.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(out);
oos.writeObject("chrząszcz brzmi w trzcinie");
oos.flush();
oos.close();

Kolejno – tworzymy połączenie z odpowiednim adresem, przygotowujemy wejście i wyjście oraz upewniamy się, że nie będzie użyta wersja połączenia z pamięci podręcznej. Następnie definiujemy typ zawartości i ustawiamy strumienie. Do celów przykładu przesyłany jest obiekt String czyli ciąg znaków. Metoda kontrolera odbierająca informacje może wyglądać następująco:

@RequestMapping(value = "/odbieranieDanych", method = RequestMethod.POST)
public void savindProcess(HttpServletRequest req, HttpServletResponse res) throws Exception {
     ServletInputStream in = req.getInputStream();
     ObjectInputStream ois = new ObjectInputStream(in);
     String data = (String) ois.readObject();
     System.out.println("oderano: "+data);
}

I w ten oto sposób „chrząszcz brzmi w trzcinie” będzie widoczny z poziomu kontrolera.

kontroler → applet

Załóżmy, że chcemy, aby powyższa metoda zwracała jakieś informacje do appletu. Uzupełniamy ją więc o poniższy kod.

ServletOutputStream out = res.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(out);
oos.writeObject("wysyłamy coś do appletu");
oos.flush();
oos.close();

Tu również przesłany jest ciąg znaków. Applet odbierze dane w następujący sposób:

InputStream in = uc.getInputStream();
ObjectInputStream ois = new ObjectInputStream(in);
String data;
try {
     data = (String) ois.readObject();
     System.out.println("applet dostał: "+data);
} catch (ClassNotFoundException ex) {
}

I tak mamy zapewnioną komunikację pomiędzy appletem, a kontrolerem Java Spring. Łatwo zauważyć, że jest ona dość podobna do komunikacji ze zwyczajnymi servletami. Po wykonaniu takiej operacji można spokojnie przetworzyć dane i przekazać do widoku lub zapisać do bazy.

By Paweł Talacha • Java • 0 • Tags: applet, java, komunikacja, kontroler, spring

Kwi 28 2011

ViSUD – podstawowe informacje

Dawno, dawno temu, w odległej galaktyce… W każdym razie dawno temu strasznie chciałem napisać przygodową grę tekstową. Zaczęło się od fascynacji grami paragrafowymi („Dreszcz” Jacka Ciesielskiego zamieszczony w jednym z numerów Fantastyki był chyba pierwszy), potem gry na komputerze, m.in. świetny polski Single User-Dungeon – Otchłań – nadal rozwijany! Na fali oczarowania postanowiłem zrealizować swoje własne pomysły. I tak zacząłem pisać w Pascalu. Powstał system walki, kilka lokacji, potworków i NPC, z którym można było pogadać albo go zabić. ;) Zabrakło mi wtedy cierpliwości w pisaniu i umiejętności (było to z 10 lat temu – ale ten czas leci!).

Kilka screenów moich ówczesnych wypocin
Kilka screenów moich ówczesnych wypocin

Niestety, jak zauważyłem, tak często bywa w projektach tego typu. Gry próbują tworzyć ludzie, którzy mają świetne pomysły – ale, proces wytwarzania jest długi i żmudny. Dodatkowo złe rozplanowanie i obmyślenie mechanizmów często prowadzi do niepowodzenia i zarzucenia projektu.

Od jakieś czasu chodziło mi po głowie napisanie narzędzia wspomagającego tworzenie tekstowych gier RPG. Projektowałem i obmyślałem, jak całość ma działać. Wyszedł całkiem zaawansowany system. Jednym z jego modułów będzie edytor gier. Kolejnym – środowisko uruchomieniowe dla nich – silnik. Implementacją tych dwóch modułów będę się teraz głównie zajmował w wolnym czasie. Ewentualne informacje o postępach prac będą zamieszczane na blipie.

By Paweł Talacha • ViSUD • 0 • Tags: mud, sud, vicus

Kwi 24 2011

NetBeans 7.0

W połowie tego tygodnia wydana została nowa wersja NetBeans – darmowego, otwartego środowiska programistycznego. Nowości to m.in. obsługa Oracle Database i GlassFish 3.1. Dodano możliwość korzystania z tagów HTML5 i dopieszczono sam edytor poprawiając mechanizm uzupełnienia kodu i podpowiedzi. NetBeans 7 zintegrowany został z JUnit 4.8.2, wspiera także Maven 3. Poprawiono także moduły odpowiedzialne za tworzenie aplikacji, np. nowy sposób projektowania GridBagLayout. :) Ważniejsze zmiany prezentuje poniższy filmik.

Więcej informacji znaleźć można na stronie projektu.

Czytaj więcej…

By Paweł Talacha • Soft • 0 • Tags: eclipse, netbeans

Kwi 17 2011

Oracle umywa ręce od OpenOffice

Od momentu, kiedy pakiet biurowy OpenOffice.org odziedziczony został w spadku po Sun Microsystems przez firmę Oracle, nie słychać było radosnych wieści związanych z jego postępującym rozwojem. Wręcz przeciwnie – zapanował zastój i stagnacja. Ewidentnie Oracle nie miał (i nadal nie ma) pomysłu, ani co do kierunku rozbudowy, ani sposobu zarządzania projektem.

W piątek Larry Ellison, szef Oracle, poinformował o porzuceniu rozwoju pakietu biurowego OpenOffice. OpenOffice.org zaś zostanie zwrócony społeczności, od której będzie zależał dalszy jego los. Nie zostały jednak określone zasady współpracy pomiędzy społecznością, a firmą. Wiele zależy od strategii zarządzania, którą przyjmie Oracle, będący właścicielem nazwy handlowej. Prawdopodobnie ją zachowa, w związku z czym i tak ostatnie słowo będzie należało do firmy.

Pakiet OpenOffice.org to darmowy odpowiednik OpenOffice. Świetnie nadaje się on do domowych zastosowań i w zupełności zaspokajał moje potrzeby. Pisałem w nim pracę licencjacką i wielokrotnie przygotowywałem różne prezentacje. :)

Jeśli Oracle skupi się teraz wyłącznie na jego rozwoju, może być ciekawie. Czas ruszyć dalej.

Z drugiej strony – jesienią powołana została do życia The Document Foundation – wspierana m.in. przez IBM, Red Hat, Canonical, Google, Novell, a także kilka niezależnych organizacji, np. Free Software Fundation. Dołączyła do niej część programistów, pracujących wcześniej z OpenOffice.org. Na podstawie OpenOffice.org 3.3 powstał pakiet LibreOffice. Od tamtego momentu wydane zostały już 2 stabilne wersje wprowadzające poprawki do programu. Rozwój nadal jest kontynuowany i to dość dynamicznie – przyspieszono cykl wydawniczy, a już niedługo powinna pojawić się wersja 3.4, której beta ukazała się 2 dni temu (z całkiem pokaźną liczbą zmian). Porządkowany jest kod (usunięto sporą, niedziałającą część), tłumaczone na angielski niemieckie komentarze (prawdopodobnie pozostałość jeszcze po StarOffice), ruszone zostały błędy wiszące na trackerze latami.

Moment wydania 3.4 będzie chyba dobry na dokonanie migracji, jeśli z OpenOffice.org nic się nie będzie działo. Mam nadzieję, że LO będzie w takim przypadku godnym jego następcą i mnie nie zawiedzie. :)

Zobaczymy. Tymczasem – Polska witryna pakietu LibreOffice :)

By Paweł Talacha • Soft • 0 • Tags: libreoffice, openoffice, oracle

Lut 9 2011

ViCMS 2.0.10 – Osadzanie kodu

Ostatnio pogoń za numerkami jest na topie, więc i ja nie będę sobie żałował. ;) Właściwie jedna zasadnicza zmiana – funkcja osadzania kodu w treści stron i aktualności. Żeby wpis nie był taki krótki to dołączę do niego Hello World w C++. :P

ViCMS kod

Fragmenty kodu umieszczać można pomiędzy znacznikami . Enter = nowa linia.

- Pobierz nową wersję -

Ps. Błędów najlepiej się szuka od niechcenia. ;)

Update: Blok z kodem może źle się wyświetlać w przeglądarce Internet Explorer 8. Powodem jest microsoftowy wynalazek o nazwie tryb zgodności. Wystarczy go wyłączyć.

By Paweł Talacha • ViCMS • 0 • Tags: vicms

1 2 3

Kategorie

  • Java (2)
  • Moje wynalazki (22)
    • ViCMS (18)
    • ViSUD (2)
  • Poradniki (3)
  • Soft (5)

Polecam

  • Foobar
  • IntelliJ IDEA
  • Meld
  • PotPlayer
  • SourceTree
  • Vivaldi

↑

© Paweł Talacha 2009 - 2021
Witryna używa plików cookies. Korzystanie z funkcji, w których są one stosowane oznacza akceptację tego stanu.OK, zamknij Czytaj więcej
Privacy & Cookies Policy

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Always Enabled

Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.

Non-necessary

Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.