Nov 22 2009

Dwa monitory w Ubuntu 9.10

Category: Linux, UbuntuSebastian Bobrowski @ 5:50 am

Od paru dni testuje ubuntu 9.10. Zainstalowałem z płyty wersję 8.10, która ładnie się zaktualizowała do 9.04. Wbudowany aktualizator pobrał 230 MB danych, zainstalował wszystko w około 30 minut i działa bez problemu. Następnie chciałem zaktualizować do najnowszej wersji czyli 9.10. Droga ta sama, 640 MB do pobrania, około 40 minut instalacji i działa. Według linuxnews jestem w gronie 10% szczęśliwców którym udało się to bez problemu. Całość instalowana na hp nx7300.

Kolejną kwestią z jaką chciałem sobie poradzić było podłączenie drugiego monitora. W windowsie przy zainstalowanych sterownikach do karty graficznej odbywa się to od ręki. Na ubuntu 9.10 podłączyłem i też serwer xów od razu zobaczył  drugi monitor.

W menu System -> Preferencje -> Ekran jest podstawowe menu do zarządzania. Z jego poziomu można ustawić położenie monitorów, ich rozdzielczości i częstotliwość odświeżania. Wszystko działało bez zarzutów do momentu ustawienia na laptopie rozdzielczości nie wyższej niż 1024×768 i monitorze 800×600. Na codzień pracuje 2 razy 1280×1024 zatem działające tutaj rodzielczości są za małe. Po chwili googlania nie znalazłem nic ciekawego i postanowiłem przeglądnąć ustawienia ekranów w gnome . Okazało się że rozwiązaniem jest wyłączenie efektów wizualnych. W systemie mamy 3 poziomy efektów:

  • Brak: Zwykłe środowisko pulpitu, bez efektów wizualnych
  • Normalne: Lepsze funkcje użytkowe i dobra równowaga między atrakcyjnością wyglądu a wymaganiami sprzętowymi
  • Dodatkowe: Zestaw bardziej estetycznych efektów

Domyślnie jest ustawione na Normalne. Wystarczy ustawić na Brak i wszystko działa od ręki.Drugi monitor działa bez problemu w maksymalnej rodzielczości


Sep 22 2009

Prawn i prawnto - dlaczego jestem przeciw?

Category: Ruby On Rails początki, Ruby, Ruby on RailsSebastian Bobrowski @ 1:13 pm

Jednym z elementów programu do faktur, nad którym pracuje jest generowanie wielu rodzajów pdfów, od faktur vat, przez korygujące aż po zestawienia faktur miesięcznie, kwartalne, roczne.Nie ukrywam, że na początku przysparzało to sporo problemów. Głównym z nich były tabelki, które stanowią trzon każdego z powyższych dokumentów.  Przy nowej odsłonie pdfów chciałem wykorzystać bibliotekę Prawn wraz z pluginem PrawnTo za namową reklamy na railscasts. W przykładach wszystko wygląda dobrze, pare lini kodu i działa. Jednak problemy zaczynają się przy:

  • większej ilości tekstu
  • numeracji poszczególnych stron

Autorzy nie przewidzieli dobrej obsługi sytuacji gdy tekst umieszczony w komórce tabeli nie mieści się w jednym wierszu i musi zostać przeniesiony do kolejnych. Pozostawienie automatycznej konfiguracji dawało bardzo kiepskie rezulataty. Oczywiście można też samodzielnie liczyć szerokość każdego z wyrazów i dzielić je w razie potrzeby, gdy nie mieszczą się w jednym wierszu. Jednak obsługa szerokości znaków polskich nie działała poprawnie.Zdedydowanie gorszą sprawą, było numerowanie poszczególnych stron. O ile wersja podstawowa działała bez problemu, bo wystarczało zwiększać licznik wraz z każdą nową stroną to innej wersje są nieosiągalne. Próbowałem najbardziej popularną wersją obecną w dokumentach np: strona 2/7. Jest to konieczne dla wszystkich sprawdzających i czytających aby mieli pewność, że żadana ze stron nie zaginęła. Pytałem o tą sprawę na forum i kanale irc projektu jednak od autora biblioteki otrzymałem odpowiedź: “Nie da się :)”. Podobno mechanizm zamykania stron jest dość dziwny tzn, aby otworzyć nową stronę trzeba zamknąć poprzednią, a raz zamknięta strona nie może być ponownie otworzona. Takie rozwiązanie kompletnie wyklucza moją funkcjonalność. Autor próbował mi pomóc, ale razem doszliśmy do wniosku, że najłatwiejszym i najszybszym (tylko do implementacji) sposobem będzie:

  1. generowanie dokumentu
  2. zliczanie jego stron
  3. generowanie ponownie dokumentu znając już całkowitą liczbę stron z pierwszego punktu

Jednak to rozwiązanie nie bardzo przypadło mi do gustu z uwagi na to, że dokumenty już dość długo się generowały (parę sekund), a w wersji produktcyjnej pewnie zrobi się z tego około 10 z uwagi na dużo większą ilość danych.

Podsumowanie:Prawn polecam do prostych dokumentów takich jak prosta lista czy prawie pusta tabelka. Wtedy używa się tego bardzo przyjemnie. Jednak do bardziej wymagających zadań wciąż niezastąpione jest rfpdf.


Sep 05 2009

Wykrywanie schametów kodowania znaków

Category: RubySebastian Bobrowski @ 2:22 pm

Jednoznaczne określenie schematu kodowania danego łańcucha znaków jest dość trudne. Schematy wielobajtowe wykazują pewne wzorce, które możemy wykrywać i na ich podstawie domniemywać o schemacie kodowania. Pozostają schematy kodowania jednobajtowe które są znacznie trudniejsze. Możemy próbować podejść od strony statystycznej ale przy krótkim łańcuchu nie daje to dobrych efektów.W większość sytuacji pierwszym krokiem przy rozpoznawaniu jest odpowiedź na pytanie: “Czy jest to uft8?”. Jeśli tak to jesteśmy w domu, jeśli nie sprawa staje się bardziej skomplikowana. Najprostszą metodą rozpoznania jest uzycie metody unpack, która rzuca wyjątek w sytuacji kiedy nie otrzymuje prawidłowego łańcucha na wejściu.

class String

def utf8?

unpack(’U*’)  rescue return false

end

end

W prosty sposób można też sprawdzać czy łańcuch składa się tylko ze znaków ASCII

class String

def ascii?

self.split(/./).all? {|ch| ch<128}

end

end


Next Page »