Четверг, 11 Июнь. 2009Таблица Django шаблонамиОдна из часто встречающихся задач, при работе с шаблонами -- разбить список на несколько столбцов. Несмотря на всю кажущуюся простоту, если в шаблоне нельзя написать полноценное выражение, возникает проблема. Правда, у некоторых шаблонизаторов внутри циклов доступны переменные, вроде even и odd, что позволяет немного упростить задачу. Но что делать, если столбцов должно быть три? Продолжить чтение "Таблица Django шаблонами"
Таблица Django шаблонами Добавил Maxim Sloyko
в категории Django, Шаблоны в
11:57
Комментарии (0) Обратные ссылки (0) Среда, 20 Май. 2009Они убили CSSСколько работаю, сменил несколько компаний, за это время поработал с еще большим количеством верстальщиков. И вроде бы год на дворе 2009, и вроде как люди все понимают, красиво все разлинеивают, более менее адекватный HTML пишут. Некоторые даже валидный. И вот абсолютно у всех обязательно встречал в CSS что-нибудь наподобие: .mt5 { margin-top: 5px; } ... которое потом суется в class различных элементов. Что называется, давайте зарубим идею CSS на корню! P.S. Вы знаете, что название профессии «HTML-верстальщик» на английский язык вообще никак не переводится? Среда, 29 Апрель. 2009Python ужосыВот что нужно сделать с человеком, который пишет такой код (комментарии мои): # Самый высокий уровень, все переменные и функции глобальные для пакета inited = False def guess_type(url, strict = False): if not inited: init() return guess_type(url, strict) Полез читать я этот код, когда он у меня вылетел с "Maximum Recursion Depth Reached". Ну, думаю я, что же удивительного? Если кто-то не потрудился обеспечить функции хоть какую-нибудь логику, а только зарекурсил ее. Но! Второй раз код отработал! Так, думаю, не все тут так просто. Полез читать, что же такого желает функция init(), хотя я уже догадывался. def init(): global guess_type inited = True db = MimeTypes() guess_type = db.guess_type Перед глазами встали кровавые сцены отрубания рук, сжигания на костре и прочие ужасы. И еще бы ничего, если бы это было не в Python Standard Library — mimetypes. Можете сами залезть в его исходник и убедиться. То есть, это те же самые люди, которые запрещают мне выставлять default encoding в 'utf-8', мол, красоту и дао нарушаю... Четверг, 16 Апрель. 2009Бесконечные страницыНа некоторых сайтах применяется такая модная UI фенечка: когда прокручиваешь страницу до конца, появляются новые элементы. А-ля гугл ридер. Никогда мне не нравилось это решение в пользовательском интерфейсе, а теперь, когда это реализовали на моем любимом /., я начинаю понимать почему.
Первый эфект чисто психологический: я люблю, когда страницы заканчиваются. Как-то становится понятно, что все, больше ничего нет. Проще отделять то, что уже читал. Ну и вообще появляется какое-то чувство законченности действия. Путь даже и такого бесполезного, как чтение слешдота Второе — это то, что некоторым элеметам просто таки суждено быть в конце страницы: контактная информация, ссылки на другие ресурсы, копирайты и все такое прочее. На слшдоте том же, внизу всегда есть какая-нить прикольная цитатка (fortune). Этот момент разработчики совсем проморгали. Самое главное, что многие из этих элементов наверх то и не вынести: будут только мешаться. Да и вообще, все давно привыкли искать контактную информацию где-нибудь внизу. Это далеко не единственное новшество, которое мне на слешдоте не понравилось, но однозначно, как это сказать, «most annoying» Понедельник, 6 Апрель. 2009Страх и ненависть setdefaultencodingЕсть у меня один пунктик по поводу Python. Можно даже сказать пунктище: UTF-8. Суть проблемы заключается в следующем. В Python есть два типа строк: str и unicode. Соответственно, str — это однобайтовые строки, unicode — юникод. Внутри юникодные строки хранятся в виде 16-и или 32-х битных строк. В случаях, когда требуется склеить две строки, одну из них типа str, другую unicode, из объекта str создается новый объект типа unicode и соединяется с другим unicode объектом. Есть тут одна маленькая проблемка: для создания объекта unicode, нужно знать, в какой изначально кодировке строка str. Если строка unicode создается из строки str неявно, то считается, что изначально она в так наз. «кодировке по умолчанию». И вот тут-то начинается самое главное представление. Кодировкой по умолчанию в Рython выбрана ... (пауза и барабанный бой для большей драматичности) ... ASCII! Да-да, самая «универсальная» и «стандартная» из всех кодировок. В общем-то, дело, казалось бы, плевое: ставим кодировкой по умолчанию UTF-8, надеваем цак и радуемся. Все работает, все в шоколаде: все строчки из файликов прилетают как UTF-8, в базе данных все в UTF-8 (если у кого-то не так, убейте себя или езжайте писать программы в 80е) — все очень мило и все прекрасно работает, но! Ведь не было бы ни пунктика, ни этой записи, не будь тут нюанса. Кодировка по умолчанию выставляется при запуске интерпретатора (ASCII) и затем функция ее выставления — sys.setdefaultencoding — с успехом удаляется из пакета sys. Все! Никаких «легальных» методов изменить кодировку по умолчанию после этого не существует. Дай бог здоровья тому, кто это придумал. Но, к счастью, есть хаки. Продолжить чтение "Страх и ненависть setdefaultencoding"
Страх и ненависть ... Добавил Maxim Sloyko
в категории Python в
17:32
Комментарии (4) Обратная ссылка (1) Пятница, 3 Апрель. 2009Top 10 Первоапрельских IT шутокВ свой Top 10 первоапрельских шуток, я отобрал шесть самых интересных от IT-шников или около того. Ладно, признаю: взял все, которые нашел, кроме самых тупых (лор, я сейчас смотрел в твою сторону!) Перечисляю все в порядке обратном «удачности» Продолжить чтение "Top 10 Первоапрельских IT шуток"Среда, 1 Апрель. 2009Культурные традиции браузеров.Согласно новой статистике от StatCounter, доля рынка Firefox 3.0 в Европе превысила долю IE7! Если считать все версии браузеров, то Firefox все еще проигрывает IE 10% (это тоже в Европе) Интересно, что судя по этой же статистике, пользователи альтернативных браузеров — любых, хоть Оперы, хоть Сафари, хоть Лисы — гораздо быстрее избавляются от старых версий, чем пользователи IE. В общем-то, вполне ожидаемо: пользователи IE — консерваторы. Что меня больше всего удивляет — это разница по странам и регионам. Например, Опера: в США меньше 1%, в Европе около 7%, в России — до 37% (цитирую цифры, приведенные в статье на Arstechnica) Вот как и откуда? Интернет — это же самая интернациональная штука, которую только можно придумать, а браузер — это самое главное его окошко. Откуда тут может возникнуть такая разница? Наиболее заметно, кстати, именно по Опере, остальные более или менее ровно. Можно понять эту разницу для Safari: Mac'ов в США продается значительно больше, чем у нас, соответственно включается преимущество предустановленного браузера, но для Firefox и Opera — совсем не понимаю. Оба распространяются только через интернет, оба находятся в одном клике от пользователя, где бы он ни жил... В общем, загадка
Культурные ... Добавил Maxim Sloyko
в категории Браузеры в
13:12
Комментарии (0) Обратные ссылки (0) Понедельник, 30 Март. 2009Программируемый Веб?
Интересно, почему у нас разные сайты не создают/документируют свои API? Если посмотреть на американские, или, например, на коллекцию API на сайте ProgrammableWeb, то складывается впечатление, что «у них» практически для всего есть какой-то веб сервис и что каждый сайт предоставляет какое-то API. Вся американская блогосфера построена на этом. Например, сейчас, когда я опубликую этот пост, Serendipity (это движок моего блога) оповестит несколько блог агрегаторов о новой записи, затем проверит все ссылки в моем посте и на каждую попытается отправить Pingback. И все это — через XML-RPC, уже давно ставшими стандартными способами. Есть куча сайтов, которые вообще построены только на том, что используют API предоставляемые другими. Если есть интересная идея, то сделать такой сайт — вообще не проблема. Поставщик данных тоже не остается в накладе: увеличивается и его популярность. У нас почему-то это все то ли не приживается, то ли мы еще слишком сильно отстаем в плане развития интернета. Как-то понадобилось роботом получать расписание фильмов в кинотеатрах Москвы, так я нигде ничего подходящего не нашел. В Нью-Йорке — сколько угодно, в России — фигвам. При том, что сайтов по этой тематике уйма, просто никто из них не озадачился созданием API. Вот нет у нас культуры разработки! Нет и не скоро будет. Вторник, 24 Март. 2009Дикий, Дикий ВебОчень интересно, как можно разбираться в XSLT настолько хорошо, чтобы написать достаточно сложный XSLT-шаблон и одновременно быть настолько тупым, чтобы генерировать новый XML посимвольно??? Сначала хотел привести это как пример того, как не надо использовать XSLT, но потом подумал, что этот пример имеет отношение скорее к генетическим болезням... Найдено, естессно, на The Daily WTF Воскресенье, 22 Март. 2009Media URLРабота с URL в любом приложении вещь не очень приятная: либо эту логику приходится размазывать по всему проекту, либо все попадают в зависимость от объекта, заведующего этими урлами. Нашел тут вот довольно простой и удобный способ, как можно упростить работу со ссылками на статические файлы в Django Одно только не могу понять: как я сам раньше до этого не додумался? |
CategoriesПодписаться на RSSМои друзьяАдминистрированиеCreative Commons |

