Pull to refresh

Google App Engine: шаблоны и статика (css, js, картинки)

Django *
В предыдущем посте было рассказано, как создать простейший проект на GAE + Django. Сейчас давайте попробуем подключить к проекту шаблоны Django и поддержку статических файлов — таблиц стилей, скриптов и картинок.

Наш Django проект будет называтся dvk, и содержать приложение main. В папке приложения создаем каталог для шаблонов templates:
dvk/
main.py
app.yaml
    dvk/
    manage.py
    settings.py
    urls.py
      main/
      __init__.py
      models.py
      views.py
        templates/


Читать дальше →
Total votes 30: ↑26 and ↓4 +22
Views 3.1K
Comments 1

Шаблоны для рисования веб-интерфейсов в MS Visio

Interfaces *
После прочтения хабратопика Хакаем бумажное проектирование интерфейсов вспомнил что на винте где-то должны валятся шаблоны для рисования подобных вещей в визио. В комплекте идет рамка браузера и основные компоненты веб-форм/страниц. Когда на бумаге все уже нарисовано и оговорено с разработчиками, позволяет достаточно просто оформить схематичный веб-интерфейс для документации, либо для согласования с заказчиком.
Читать дальше →
Total votes 20: ↑15 and ↓5 +10
Views 7.6K
Comments 6

темплейты в JavaScript

Lumber room
иногда при использовании ajax нужно заменять крупные блоки html при этом не всегда удобно создавать кучу DOM-элементов для того чтобы форматирование осталось таким же как и было. Некоторые передают ajax-ом сразу html код и вставляют его в нужное место, но разработчики prototype сделали более удачную реализацию, когда можно передавать с сервера только данные в виде JSON, и потом вставлять их в отдельный шаблон средствами JavaScript… собственно именно у них я и позаимствовал идею, немного упростив ее
дальше код и его описание
Total votes 8: ↑7 and ↓1 +6
Views 852
Comments 32

Wix! Американский аналог народ.ру

Lumber room
Сегодня наткнулся на ресурс под название Wix.
Тут можно создавать флэш сайты имея под рукой арсенал из drop shadow, glow, blur… и предлагаемые ресурсом готовые анимации типа fade и прочего. Так же есть подключаемые виджеты: mp3 player, google maps… Можно выбрать готовые шаблоны, одним словом тот же народ.ру только по-американски. Как вы думаете для кого создан такой русурс: для ленивых псевдо-сайто-мейкеров или серьезно настроеных бедных фотографов?
image
Total votes 13: ↑8 and ↓5 +3
Views 1.2K
Comments 15

Прикручиваем django-registration

Django *
Нужно было прикрутить регистрацию на сайт. Вспомнил про django-registration (классический django reusable app). Первое, что удивило — в исходниках не было шаблонов. Пришлось немного покопаться в интернете, поискать ответы на вопросы и поделиться результатом.
Читать дальше →
Total votes 34: ↑30 and ↓4 +26
Views 55K
Comments 53

Javascript Templater ноль.два

JavaScript *
Нашел в закромах свой старый JavaScript шаблонизатор, почитал отзывы в прошлой статье и решил кое-то переделать, изменений не так много, но они вполне существенны, добавил поддержку функций и методов в шаблонах…
кому интересно, идем дальше
Total votes 7: ↑5 and ↓2 +3
Views 1.1K
Comments 10

PHP5. «Безопасные шаблоны»

Lumber room
Исторически сложилось, что я не пользуюсь внешними шаблонизаторами типа Smarty или другими. Я использую основной «активный» шаблон, т.е. просто PHP файл в котором вызываются и вставляются данные для контент зон в виде простого HTML (как он формируется в данном случае не имеет значения). В предыдущей версии CMS, которая была не «коробочной» и в которой фактически не было разделения прав пользователей, данный аспект особо не напрягал — доступ к шаблону был либо «прямой» (фтп и прочее) либо через администраторский интерфейс для администратора. Но соответственно человек имеющий доступ к админке мог напихать вовнутрь этого файла любой php код. В новой версии CMS это неприемлемо, т.к. это фактически обход разграничения прав. Поэтому было решено отказаться от таких «небезопасных» шаблонов.
решение и примеры
Total votes 18: ↑7 and ↓11 -4
Views 230
Comments 5

Документирование шаблонов

Website development *
Документация — это хорошо! Она позволяет экономить время, и гармонично работать людям в команде. Встроенная в код документация — вдвойне хороша, она находится там где она нужна и не надо далеко ходить чтобы ее написать.

Под катом пара наглядных примеров документации к шаблонам.


Читать дальше →
Total votes 48: ↑32 and ↓16 +16
Views 1.8K
Comments 27

Сообщения об ошибках + templates: несколько простых советов

Lumber room

Немножко лирики


Должен сразу предупредить, что эта тема вряд ли пригодится программистам, которые дружат с С++ давно и прочно. Моя цель — немного помочь тем, кто при использовании чужих библиотек с большим количеством template'ов впадает в легкую панику при виде сообщений об ошибках. Как показывает практика, зачастую всё совсем не так страшно, как выглядит и вполне помогает понять, в чём проблема.

Идея написать подобную заметку возникла в процессе написания программы, активно использующей Boost::Spirit2 — сложная грамматика, обилие semantic action, создание AST через attribute value и тому подобные радости. В какой-то момент я обратил внимание на то, что для исправления многих ошибок мне хватает одной-двух минут, в то время как в начале работы над проектом в аналогичных случаях на разбор ситуации могло уходить до часа.

Всё написано исходя из работы с gcc, но, думаю, провести аналогию с испольуземым %compiler_name& будет не сложно.

Самое время делиться!
Читать дальше →
Total votes 2: ↑2 and ↓0 +2
Views 376
Comments 6

Велосипедим, или Django-like Javascript Templates

JavaScript *
Одним из компонентов нашего проекта Shopium.ua является административный интерфейс, который строится как полностью выполняющийся на клиенте rich internet application.

Для отрисовки данных приходящих с сервера в HTML нам часто нужен Javascript-шаблонизатор.

Различных шаблонизаторов для Javascript существует предостаточно. Даже в библиотеке ExtJS которую мы используем для своего проекта их целых два, однако их синтаксис и возможности каждого далеки от идеала.

К хорошему быстро привыкаешь, и мы быстро привыкли к синтаксису шаблонов Jinja2 который мы используем для генерации HTML на стороне сервера. И захотели такой же, но с перламутровыми пуговицамино для Javascript.

И сформировали к нему такие требования:
Читать дальше →
Total votes 27: ↑24 and ↓3 +21
Views 3.9K
Comments 19

Шаблонная магия, паттерн CallWithType

C++ *
Доброго времени суток, уважаемые Xабровчане!

В этой статье я хочу рассказать о том, как в С++ можно делать преобразование данных времени компиляции (типов) в данные времени выполнения (целые значения) и обратно.

Пример:
int nType = ...;
 
if( boost::is_base_of< ISettable, /* ... magically resolve type hidden by nType here ... */ >::value )
{
    // Do something
}
else
{
    // Do something else
}

Весь этот топик направлен на то, чтобы понять, что же надо написать вместо «magically resolve type hidden by nType here».
Читать дальше →
Total votes 37: ↑35 and ↓2 +33
Views 5K
Comments 49

Шаблонная магия, метафункция IsValidExpression

C++ *
Доброго времени суток, уважаемое Хабрасообщество.

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

Пример:
/* Определяем метафункцию HasF, которая позволяет определить наличие функции f() у любого класса. */
DECLARE_IS_VALID_EXPRESSION(
    HasF,
    ( ( U * ) NULL )->f() /* Это выражение компилируемо только если присутствует U::f() */ );
 
struct Foo{ void f(); };    
struct Bar{};
 
BOOST_STATIC_ASSERT( HasF< A >::value );  /* Тут константа HasF< A >::value будет true */
BOOST_STATIC_ASSERT( !HasF< B >::value ); /* Тут константа HasF< A >::value будет false */

Как Вы уже, наверное, догадались мы будем думать как написать макрос DECLARE_IS_VALID_EXPRESSION.
Читать дальше →
Total votes 32: ↑29 and ↓3 +26
Views 2.3K
Comments 14

Универсальный шаблонный движок за 1 минуту из подручных материалов

Perl *
Шаблон

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

Не стоит забывать, что применение шаблонов далеко не ограничено WEB-ом.
Это генерация различного вида отчётов, генерация кода программ на различных языках, генерация исходных данных для обработки и многое другое.
Вообще, шаблоны хочется применить везде, где много текста и мало логики.

В раздумьях, как бы это сделать побыстрее и подешевле, не следует обманывать себя (в основном, на раннем этапе) мыслями типа «да у меня статический текст, только надо приклеить шапку», «тут нужен только счётчик», «мне надо только вывести дату» и т.д.
Сначала — шапка и счётчик, дальше будет условная вставка блоков (if), потом понадобится генерация таблиц (тут уже нужны циклы и массивы), далее потянутся строковые операции и все остальные конструкции нормального языка программирования.
Читать дальше →
Total votes 12: ↑7 and ↓5 +2
Views 1.5K
Comments 13

Вычисления с плавающей точкой на этапе компиляции

C++ *
Как известно, в C++ нельзя производить сложные вычисления с плавающей точкой на стадии компиляции. Я решил попробовать избавиться от этого досадного недостатка. Цель, к которой мы будем идти, на примере вычисления корня:
typedef RATIONAL(2,0) x;
typedef sqrt<x>::type result;

Корень числа вычислится на этапе компиляции. Представление числа хранится как отношение двух целых чисел, поэтому чтобы получить значение, нужно обращаться через метод get();
std::cout << result::get() << std::endl;
1.41421356
Подробности
Total votes 41: ↑39 and ↓2 +37
Views 3.3K
Comments 28

HotMilk — библиотека для удобной организации шаблонов Mustache

JavaScript *
Пост в продолжение недели^W месяца JavaScript на Хабре.

После статьи о разработке одностраничного веб-приложения занёс в закладки либу ICanHaz с целью потерзать и чуть допилить её, как руки дойдут. И, как водится, отложил в долгий ящик.

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

Напомню, что ICanHaz — это простой способ чуть-чуть организовать шаблоны Mustache, используемые javascript'ом в браузере. Рендеринг шаблонов с помощью этой библиотеки сводится к простому вызову функции. Ещё она избавляет от необходимости экранировать половину шаблона, т.к. его текст можно писать прямо в HTML-теге <script>

Под катом расскажу о собственных достижениях в области велосипедостроения
Total votes 18: ↑17 and ↓1 +16
Views 3K
Comments 2

Рисуем графики (диаграммы) в Django

Django *
django-google-charts

Многие веб-разработчики время от времени сталкиваются с необходимостью визуализировать сравнительно большое количество данных при помощи диаграмм (далее я буду называть их графиками, хоть это и не совсем верно). Задача не нова, и в сети есть множество готовых решений: работающие на стороне сервера и на стороне клиента, использующие изображения, Canvas, SVG, Flash, Silverlight…

В этой статье я расскажу про django-google-charts и некоторые особенности использования Google Chart Tools для построения графиков на сайте под управлением Django.

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

var chart_data = [
    {% for row in chart_data %}
    [{{ row.0 }}, {{ row.1 }}],
    {% endfor %}
];

Почему это плохо?
Total votes 66: ↑61 and ↓5 +56
Views 27K
Comments 27

Настройка рабочего стола в Calculate Linux 11.9

Configuring Linux *
В новой версии дистрибутива Calculate Linux 11.9 претерпел изменение метод настройки профиля пользователя. В этой статье я хочу описать процесс на примере Calculate Linux Desktop, выделив основные моменты.

Calculate Linux Desktop KDE Calculate Linux Desktop GNOME Calculate Linux Desktop XFCE
Читать дальше →
Total votes 13: ↑9 and ↓4 +5
Views 7K
Comments 7

Язык D2 и метапрограммирование: всё страньше и страньше

Programming *D *
Не так давно Monnoroch опубликовал несколько прекрасных вступительных статей по языку D2, и это было хорошо. Но, прочитав последнюю статью, посвящённую метапрограммированию, захотелось сделать ещё лучше и раскрыть тему немножко подробнее. Дьявол, как известно, в деталях — и именно внимание к мелочам делает реализацию meta-парадигмы в D2 столь удобной. Если вы не читали статью Monnoroch, рекомендую вначале ознакомиться с ней, т.к. в рамках этой не хотелось бы тратить время на базовые вещи.

Итак, если вам уже знакомы некоторые возможности шаблонов в D2, я хотел бы подробнее рассказать о том, что сопутствует им — инструментах статической интроспекции, нюансах CTFE и даже такой запретной, но притягательной вещице, как mixin.

Цель — больше наглядных примеров кода с комментариями и меньше слов.
Читать дальше →
Total votes 35: ↑35 and ↓0 +35
Views 3.6K
Comments 38

Импровизированный шаблонизатор на JavaScript

Website development *JavaScript *
Translation
Предположим, вам не нужен полноценный шаблонизатор для веб-проекта, но с другой стороны периодически встречаются места в коде, где хорошо бы отделить HTML от JavaScript-а. В таком случае, одним из решением может быть использование варианта самой простой шаблонизации на основе JavaScript.
Исходный код.
Демо
Видео (выбираем HD для наиболее удобного просмотра):


Читать дальше →
Total votes 17: ↑10 and ↓7 +3
Views 2.4K
Comments 17