All streams
Search
Write a publication
Pull to refresh
0
0
synthesis @synthesis

User

Send message
> все используют ID вместо NAME

Это не аргумент. Грамотный разработчик использует то, что лучше подходит для решения конкретной задачи по объективным критериям, а не оперирует слепым «как все».

> не знаю ни одного приличного сайта, использующего name

www.w3.org/ неприличный?

Ниже прокомментировал про id vs name — они совсем не отменяют друг друга.
По (действующему) стандарту HTML4 <a name="xxx"> и id="xxx" равноправны и ни один из них не deprecated. Разница в том, что id должен начинаться с буквы и может содержать только [a-z0-9]. Для name такие строгие правила не действуют, например, можно использовать entities. Стандарт даже специально описывает, что если нужны более сложные якоря, то следует использовать <a name>, пруфлинк: www.w3.org/TR/REC-html40/struct/links.html#anchors-with-id (зелененьким внизу)

Действительно, в (будущем) стандарте HTML5 <a name> отменен. Но в нем и правила для id ослаблены (может содержать любые символы, необязательно уникальный).

Но в данный момент единственный способ иметь сложные якоря и соответствовать стандарту — использовать name (то что валидатор w3c пропускает невалидные id — баг).
Т. е. лучше всего оригинальный typographus.py положить туда где его сможет найти питон (в PYTHONPATH...).
В директории templatetags создать новый файл typograhus.py (лучше бы конечно по-другому назвать, что-нибудь типо typo_filters.py).
В него поместить код фильтра, а нужную функцию typo — импортировать.

Все, пошел спать, а-то мысли сонно спотыкаются на ходу.
Регистрировать можно под любым именем.

Но строчкой
from engine.common.typographus import typo (у вас она должна быть from typographus import typo)
я импортирую в модуль функцию typo, чтобы не было конфликта имен надо функцию-фильтр назвать как-то по-другому. В джанге принято в таких случаях приписывать do_* что я и сделал
Исправляем ошибки/Пишем правильный фильтр.

1) Патчим typographus.py, иначе он не примет результат работы force_unicode.

В 128 строке заменяем:
if type(string) is not unicode:
на:
if not isinstance(string, unicode):

2) Грамотно пишем фильтр, помня о безопасности (простите, карма не позволяет <pre></pre> использовать):

typographus.py:

from django import template
from django.template.defaultfilters import stringfilter
from django.utils.html import conditional_escape
from django.utils.safestring import mark_safe

from engine.common.typographus import typo

register = template.Library()

@register.filter('typo')
@stringfilter
def do_typo(value, autoescape=False):
____if autoescape:
________value = conditional_escape(value)
____return mark_safe(typo(value))
do_typo.needs_autoescape = True

3) Используем в шаблонах:

{% load typographus %}
{{ variable|typo }}
Школьники для получения готовых ответов могут свободно использовать кучу подручных средств, начиная от калькулятора и заканчивая специализированными CAD системами. Поэтому не стоит осуждать поисковую систему за то, что они приделали еще немного функциональности.
if type(string) is not unicode — устаревший способ, правильно: if not isinstance(string, unicode)

Впрочем, эта проверка вообще не нужна: декоратор stringfilter() вызовет force_unicode().

autoescape лучше не выключать, а использовать фильтр safe.
позволяет понять разницу между обычным thread и daemonic thread, или как правильно демонизироваться в *nix окружении

Может это я такой, но не вижу в этих сакральных знаниях ничего экспертного. Это описывается в любой приличной книжке по программированию под никсы.

Впрочем, мне было бы интересно почитать про устройство (архитектуру, концепции) CPython изнутри. Т. к. копание в C API Reference и исходном коде не всегда продуктивно.

В любом случае, думаю не стоит судить книгу по оглавлению.
Интересно, веб-интерфейс к электронной почте, который покажет присланный «экстремисткий» спам вызовет закрытие всего почтового сайта?
Ну что вы, многие страны имеют аналоги: http://en.wikipedia.org/wiki/Mass_surveillance
Впрочем, существует мнение, что обычному добропорядочному человеку скрывать нечего.
Забавная утилита, но от обязательного СОРМа у всех провайдеров ничего не спасет.
Знаете, Маркс писал, что нет ничего такого на что капиталист не пойдет ради 300% прибыли. Так что Брин смотрит как Гуглу получить максимальную прибыль и в Японии, и в Росии.
Тоже интересная версия. В любом случае, логотип позволяет слишком много толкований и, на мой взгляд, уж точно не "говорит с человеком на равных".
Вероятно автор хотел показать перемещение туда-сюда и изобразил стрелочки:
->
<-
Но лично я вижу не стрелочки, а кривую и неустойчивую лесенку с отрицательной динамикой.
Вспоминается старая цитата с БОРа: «В Вилларибо и Виллабаджо опять дедлайн. Пока ребята из Вилларибо верстают сайт дивами, ребята из Виллабаджо уже всё сверстали на таблицах и ебошат друг друга в квейк».
"новое заключается именно в правильном сочетании известных подходов" - так это и есть изобретение велосипеда, благо куча других языков поддерживают обе парадигмы и совсем не считают это своей уникальной возможностью.
"Создал новую обалденную модель" - спорно. В руби нет ничего уникального. Смолтолк + перл + немного кусочков других языков.
И в чем проблема? Сайт + Django + CherryPy + небольшой скрипт для запуска прекрасно укладываются py2exe в экзешник, получается специализированный веб-сервер. В посте как раз предлагается запускать свой скрипт на чужом виндоусе при помощи portable python, я предлагаю альтернативный способ.
Если требуется делать программу для конечного опльзователя с windows, то py2exe или cx_freeze много удобнее.
2

Information

Rating
Does not participate
Registered
Activity