Ku pamięci: Firefox¹ ignoruje line-height. Firefox¹ dodaje własny element z dwupikselowym paddingiem i pikselowym borderem: button::-moz-focus-inner { border: 0 none; padding: 0; } Wszystkie przeglądarki domyślnie wliczają ramki i padding do rozmiarów elementu: button { box-sizing: content-box; –moz-box-sizing: content-box; –ms-box-sizing: content-box; –webkit-box-sizing: content-box; } IE7 i starsze nie radzą sobie z automatyczną szerokością przycisków: button […]
Archive for the ‘web’ Category
Tymczasem w biurze…
Uruchomiliśmy nową wersję serwisu Centrum Faktur! Listę nowości opisałem już w podlinkowanym tekście, więc właśnie tam zapraszam zarówno spragnionych wiedzy, jak i miłośników mojej twórczości literackiej. Kobiety i dary można podsyłać do mnie. Problemy, błędy, uwagi — tradycyjnie, na Burzę Mózgów.
Flattr
Flattr rozprzestrzenia się wirusowo. Ja swoje zaproszenie dostałem od Deejay’a. Jeszcze dwa można zdobyć u niego, trzy kolejne tutaj. Jeśli zatem lubicie dzielić się pieniędzmi (i wierzycie, że Flattr nie zniknie razem z nimi), przyłączcie się do tej jedynej w swoim rodzaju sieci wymiany napiwków. Po trzy zaproszenia zgłoście się w komentarzach — wyślę je […]
Faktury przez API
Odkąd rozpocząłem współpracę z Mirumee, w listach od moich czytelniczek wciąż powtarzało się jedno pytanie — kiedy? W końcu zrobiłem jednak te badania, a blog to nie miejsce na dyskusje o moim życiu łóżkowym, dlatego dziś pomówimy o CentrumFaktur. Co wybrałbyś zatem, gdyby zaoferowano ci body shot z ciała dowolnie wskazanej przez siebie kobiety¹ lub […]
PIT 37
Przychodzi taki moment, kiedy nie da się już odwlekać rozliczenia podatków. Ja swoją deklarację postanowiłem złożyć dopiero dzisiaj. Nie obyło się bez przygód. Linux x86-64 e-Deklaracje wymagają Adobe AIR. Adobe AIR nie obsługuje 64-bitowego Linuksa. Tyle. Dane z poprzedniego roku (niezbędne do rozliczenia elektronicznego) udało się wydobyć ręcznie: $ sqlite3 ~/.appdata/e-Deklaracje.*/Local Store/settings.dat ‘SELECT xmlDocument FROM […]
Django: TestCase i testowanie szablonów
Bardzo brzydki hack, oparty o załącznik do ticketu 7611. Czyści wewnętrzny cache Django, ale pozwala testować działanie kodu opierającego się o renderowanie szablonów bez ryzyka, że aplikacja owe szablony nadpisze: import os import sys from django.conf import settings from django.template import loader from django.test import TestCase class TemplateTestCase(TestCase): def _pre_setup(self): self._template_setup() super(TemplateTestCase, self)._pre_setup() def _post_teardown(self): […]
Django: pluralize
Najważniejszą rzeczą, jaką powinniście wiedzieć na temat filtra pluralize jest ta, żeby go nigdy nie używać. Nigdy. Jego istnienie wynika z lenistwa ludzi, którzy nigdy w życiu nie przygotowywali aplikacji do tłumaczenia. Jeśli nie wyraziłem się dość jasno, używanie filtra pluralize wywoła u ciebie raka, stereoporoże i zatwardzenie rozsiane. Jakkolwiek sprytnie by nie wyglądał, ten […]
Django: direct_to_template
Nie wiem, czemu niektórzy tak uparcie korzystają z funkcji render_to_response, by za każdym razem przekazać do niej ręcznie stworzony obiekt kontekstu. Zresztą, sami oceńcie, która wersja jest ładniejsza: from django.shortcuts import render_to_response from django.template import RequestContext def foo(request): # … return render_to_response(‘foo.html’, {‘bar’: baz}, context_instance=RequestContext(request)) Czy może: from django.views.generic.simple import direct_to_template def foo(request): # … […]
O fontach raz jeszcze, czyli wielkość się liczy
Z powodu występującego dzisiaj u mnie przesilenia kataru, zostałem zmuszony (dosłownie ze łzami w oczach) do zmiany wielkości fontów z 10 na 12 punktów. Później wspomniałem o tym kilku osobom, dodając, że nie rozróżniam liter poniżej 16 pikseli, co w dwóch przypadkach wywołało konsternację. Punkty i piksele to nie to samo. Punkt jest jednostką typograficzną pochodzącą […]
Django: szybszy SQLite do testów
Domyślna konfiguracja SQLite każe mu synchronizować plik bazy po każdej operacji. W środowiskach testowych nie musimy się martwić o spójność danych w wypadku awarii, poniżej zamieszczam więc backend pozbawiony zbędnego narzutu: from django.db.backends.sqlite3.base import ( DatabaseWrapper as Sqlite3Wrapper, DatabaseError, IntegrityError, DatabaseFeatures, DatabaseOperations, ) class DatabaseWrapper(Sqlite3Wrapper): def _cursor(self): new_conn = self.connection is None cursor = super(DatabaseWrapper, […]

