Записи с тегом «python»

Генераторы статических сайтов и блогов

, python · software · web

В последнее время набирают популярность генераторы статических сайтов и блогов. Тема действительно интересная и правильная: большинству сайтов не нужно генерировать страницы при каждом запросе, делая запросы к базе данных, читая и разбирая шаблоны. Такие сайты можно генерировать на машине разработчика и выкладывать (вылаживать?) на хостинг уже готовые html-файлы. А комментарии живут с помощью IntenseDebate, Disqus, Hypercomments или других (их много).

Некоторые их них я пощупал, на hyde даже сделал простой сайтец. Итак:

На Python

  • оригинальный hyde 0.5.3 - хороший, внутри немного Джанги (шаблоны и settings), не развивается;
  • a brand new hyde - сильно переписанный заново, избавились от Джанги, шаблоны на jinja2, плохо документирован;
  • Blogofile - ничего о нём сказать не могу, но популярный;
  • Pelican - попроще Blogofile, некоторын моменты документированы плохо, вцелом - ок;
  • дедушка Pyblosxom - самый старинный проект (начат в 2004 году), ничего про него сказать не могу;
  • Nikola - продвинутый, хорошо документированный;
  • Acrylamid - простой, хорошо документирован;
  • Logr - похоже самый простой из всех;
  • Cactus - внутри работает на Джанге, плохо документирован.

На Ruby

  • jekyll - вроде он сейчас король королей, ещё и потому, что на нём работают Github Pages;
  • octopress - построен на jekyll, содержит внутри готовый, красивый, валидный шаблон, есть много сторонних тем.

На Node.js

UPD 2012-04-04: добавлен DocPad
(будет обновляться)

Сайт «Люди с неба»

, done · python · web

Сделал сайт для концертного, рекламного, событийного агенства «Люди с неба».
ludi-z-neba.com

Люди с неба

Весь сайт это набор статических html файлов, сгенерированных с помощью питоньего hyde — генератора статических сайтов, аналога jekyll, который на руби. Внутри проект — это набор джанговских шаблонов и страничек с контентом, которые в эти шаблоны заворачиваются. Плюс статика и инструментарий для её оптимизации: yui-compressor, jsmin и остальное на ваш вкус.

В работе оказался очень удобным: в режиме разработки запускается следилка за изменениями, которые вы делаете, генератор файлов и простой веб-сервер. На продакшн разворачивается только сгенерированный сайт. Hyde достаточно хорошо документирован. Начата разработка новой версии, которая, насколько я понял, пока ещё альфа с ninja-шаблонами и багами.

В общем, я доволен. Для простых статических сайтов hyde очень подходит, буду следить за его развитием и использовать.

Markdown синтаксис по-русски

, python · web

Markdown - это легковесный язык разметки текста для веба. Был создан для удобства чтения и написания размеченных текстов. Движок markdown генерирует валидный XHTML. Авторы - John Gruber и Aaron Swartz. Официальная страница проекта и более подробная документация на сайте Daring Fireball.

Ниже привожу короткий конспект, который, кстати, тоже написан на этом замечательном языке.

Блочные Элементы

Параграфы

<пустая строка>
Текст параграфа. Может быть
разбит на несколько строк.
<пустая строка>

Переводы строк

Что бы вставить перевод строки без начала нового параграфа, в конец нужно добавить два или больше пробелов.

Текст параграфа.<пробел><пробел>
Этот текст будет с новой строки.

Заголовки

Заголовок первого уровня H1
===========================


Заголовок второго уровня H2
---------------------------

или так

# Заголовок первого уровня H1
## Заголовок второго уровня H2
###### Заголовок шестого уровня H6

или так

# Заголовок первого уровня H1 #
## Заголовок второго уровня H2 ##
###### Заголовок шестого уровня H6 ######

Цитаты

> Это
> многострочная
> цитата

или так

> Это
многострочная
цитата

Списки

Ненумерованные:

* красный
* зеленый
* синий

или так

- красный
- зеленый
- синий

или даже так

+ красный
+ зеленый
+ синий

Нумерованные:

1. Первый
2. Второй
3. Третий

Код

Отступ в четыре пробела или один таб генерирует блок кода:

<пробел><пробел><пробел><пробел>print 'Hello, World!'

Горизонтальная линия

* * *

или так:

***

или так:

------

Строчные элементы

Ссылки

Инлайн ссылки

Это простая [ссылка](http://rukeba.com/) в тексте.
Это [ссылка](http://rukeba.com/ "Титул") с аттрибутом title.

Ссылки в справочном стиле

Это [ссылка][1] в справочном стиле.
...
...
[1]: http://rukeba.com/ "Необязательный титул"

Что бы урл в тексте стал ссылкой его нужно обрамить в < и >

По урлу <http://rukeba.com/> находится мой сайт.

Выделение

Одинарные звездочки генерируют тег <em>

это \*выделенный\* текст

Двойные звёздочки генерируют тег <strong>

это \*\*очень выделенный\*\* текст

Код в строке

Используйте функцию `printf()` для вывода.

Изображения

![alt-текст](http://example.com/image.jpg "Необязательный титул")

или в справочном стиле:

![alt-текст][2]
...
...
[2]: http://example.com/image.jpg "Необязательный титул"

Дополнительно

Экранирование

Для экранирования служебных символов маркдауна нужно использовать обратный слеш \

PEP8 коротко и по-русски

, python

PEP8 - это стилевые правила для кода на языке Python.

  • используйте 4 пробела для отступа и не используйте табы, не смешивайте их
  • максимальная длина строки 79 символов; для разрыва строки используйте отступы или бэкслеш
  • функции верхнего уровня и определения классов отделяйте двумя пустыми строками
  • определения методов внутри класса отделяйте одной пустой строкой
  • дополнительные пустые строки используйте для логической группировки методов
  • кодировка файлов должна быть Latin-1, а в Питоне 3 и выше - utf-8
  • каждый импортируемый модуль с новой строки
  • порядок импортов: стандартные модули, third-party модули, локальные модули приложения
  • пустая строка между каждой группой импортов
  • избегайте лишних пробелов внутри скобок; перед запятыми, точкой с запятой и двоеточиями
  • избегайте лишних пробелов перед скобками с аргументами функций и скобками с индексами
  • избегайте больше чем одного пробела между операторами (= - + итд)
  • используйте одиночный пробел для выделения операторов
  • избегайте пробелов вокруг ‘=’, который используется для параметров по-умолчанию и keyword аргументов
  • обновляйте комментарии вместе с кодом
  • пишите комментарии по-английски
  • избегайте имён из одиночных l, O, I
  • для модулей и пакетов используйте короткие всестрочные имена
  • для классов используйте СловаНачинаютсяЗаглавными имена
  • для функций используйте слова_с_подчёркиваниями (или смешанныйРегистр если так получилось исторически)
  • для методов используйте слова_с_подчёркиваниями имена
  • для внутренних методов и переменных _подчёркивание_перед_словом
  • для проверки на None используйте is или is not, не используйте операторы сравнения
  • используйте исключения основанные на классах – наследованные от Exception
  • используйте методы класса string вместо строковых функций
  • используйте ‘‘.startswith() и ‘‘.endswith() вместо вырезки из строк для проверки префиксов и суффиксов
  • используйте isinstance() для проверки типа
  • не сравнивайте булевы переменные с True и False

Все записи