Pull to refresh

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

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

Javascript Templater ноль.два

Reading time10 min
Views1.1K
Нашел в закромах свой старый JavaScript шаблонизатор, почитал отзывы в прошлой статье и решил кое-то переделать, изменений не так много, но они вполне существенны, добавил поддержку функций и методов в шаблонах…
кому интересно, идем дальше
Total votes 7: ↑5 and ↓2+3
Comments10

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

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

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

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

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


Читать дальше →
Total votes 48: ↑32 and ↓16+16
Comments27

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

Reading time7 min
Views3.3K
Пост в продолжение недели^W месяца JavaScript на Хабре.

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

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

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

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

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

Reading time5 min
Views33K
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
Comments27

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

Reading time6 min
Views7.5K
В новой версии дистрибутива 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
Comments7

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

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

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

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

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

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


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

JsRender: Новое поколение jQuery Templates

Reading time3 min
Views37K
Буквально пару месяцев назад, мы начали переписывать весьма крупный сайт, с момента прошлого крупного релиза прошёл не один год, конечно, сайт дорабатывался, правились баги и в итоге в настоящее время создаётся новая версия. В ней будет активно использоваться AJAX, поэтому весьма остро стоял вопрос с генерацией контента на клиенте, полученного в формате JSON. Прошлые шаблоны были собственной разработки, так как на то время вариантов было не так много, которые по разным причинам не подходили, базировались наши шаблоны на jquery, с помощью атрибутов происходило заполнение.

Прежде всего было решено провести тест, при генерации списка из 1500 элементов было получено превосходство в 20 раз, похожие результаты показывает сравнение с jQuery Template (страница с тестами).
Читать дальше →
Total votes 30: ↑27 and ↓3+24
Comments47

Вычисление производных с помощью шаблонов на С++

Reading time3 min
Views49K
Навеяно постом. Попутно получилось что-то похожее на собственную реализацию лямбда-выражений :) С возможностью вычисления производной еще на этапе компиляции. Для задания функции можно использовать операторы +, -, *, /, а также ряд стандартных математических функций.
Читать дальше →
Total votes 35: ↑34 and ↓1+33
Comments22

Переводим Chrome extension на manifest_version 2

Reading time6 min
Views23K
Владельцам расширений (а также приложений) для Хрома уже пора бы задуматься над поддержкой второй версии манифеста.
Если кто не в курсе, то не так давно были объявлены новые изменения и нововведения в разработку расширений для браузера.
Далее будет выборочный перевод двух страниц и мой способ использования шаблонизатора изнутри песочницы.
Читать дальше →
Total votes 17: ↑14 and ↓3+11
Comments5

Сборка клиентских JavaScript шаблонов

Reading time3 min
Views18K
Я много пишу на JavaScript, и если вам при работе с шаблонами, как и мне, надоело экранировать окончание строк, следить за именами шаблонов и собирать их перед каждым билдом, это решение для вас, jsttojs — утилита для прекомпиляции клиентских шаблонов в JavaScript.
Читать дальше →
Total votes 24: ↑18 and ↓6+12
Comments25

Шаблоны с переменным количеством аргументов на примере обертки для Lua

Reading time5 min
Views21K
Понадобилось мне прикрутить Lua к проекту на C++. Писать обертки в ручную — лень (слишком много писать), готовые не подходили по тем или иным причинам. Решил написать свою. А потому задался вопросом, как максимально упростить интерфейс? От одной только мысли об этом в голову лезли жутчайшие конструкции из шаблонов. Так оно в последствии и оказалось, но гораздо проще, чем представлялось.

В C++11 появились шаблоны с переменным числом аргументов, это позволяет писать шаблонные функции/классы так, как в C++03 было невозможно вовсе. Такие шаблоны сильно упрощают задачу.

Первым делом понадобилось написать обертку над простейшими действиями с интерпретатором (можно было бы обойтись простыми вызовами к C API Lua, но держать в памяти кучу индексов различных значений в стеке мне не хочется. Поэтому я обернул их в несколько функций, которые помимо того, что избавляют от необходимости передавать в каждую функцию указатель на состояние интерпретатора, практически не требуют индексов, так как они имеют значения по умолчанию.

В итоге хотелось увидеть интерфейс близкий к следующему:

lua.export_function(some_function);

Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments4

Попробуй БЭМ на вкус!

Reading time11 min
Views68K
Эта статья рассказывает о том, как создать проект с использованием БЭМ-технологий.
Мы шаг за шагом создадим страничку каталога товаров, пользуясь принципами БЭМ в CSS, возможностями писать декларативный JavaScript на фреймворке i-bem.js и с использованием шаблонизатора BEMHTML. Помогать делать всё это будут bem tools, в частности — инструмент для разработки bem server.

Онлайн магазин

Важно: в статье нет особенных подробностей, её цель — получить проект максимально быстро. Текст, раскрывающий больше информации, пройдёт следующим постом.
Читать дальше →
Total votes 80: ↑61 and ↓19+42
Comments82

MVP на стероидах: заставляем робота писать код за вас

Reading time2 min
Views23K
В статье «Moxy — реализация MVP под Android с щепоткой магии» мы рассказывали, как побороть проблему жизненного цикла и разделить код своего Android-проекта на слои. Однако MVP (даже при умной кодогенерации view state в Moxy) заставляет писать огромное количество лишнего кода (создавать связанные друг с другом классы и интерфейсы presenter и view). На самом деле эту работу за вас должен делать робот! :) Настало время еще сильнее уменьшить boilerplate при помощи кастомизации шаблонов Android Studio под Moxy.

Читать дальше →
Total votes 21: ↑19 and ↓2+17
Comments9

Работа со списком Pinов, на С++ для микроконтроллеров (на примере CortexM)

Reading time13 min
Views8.3K


Всем доброго здравия!


В прошлой статье я обещал написать о том, как можно работать со списком портов.
Сразу скажу, что уже все было решено до меня аж в 2010 году, вот статья: Работа с портами ввода-вывода микроконтроллеров на Си++ . Человек написавший это в 2010 просто красавчик.


Мне было немного неловко, что я будут делать то, что уже сделано 10 лет назад, поэтому я решил не дожидаться 2020 года, а сделать это в 2019, чтобы повторить решение еще пока 9 летней давности, это будет не так стремно.


В выше указанной статье работа со списками типов была сделана с помощью C++03, когда еще шаблоны имели фиксированное число параметров, а функции не могли быть constexpr выражениями. С тех пор С++ "немного изменился", поэтому давайте попробуем сделать тоже самое, но на С++17. Добро пожаловать под кат:

Читать дальше →
Total votes 9: ↑7 and ↓2+5
Comments47

Статическая подписка с использованием шаблона Наблюдатель на примере С++ и микроконтроллера Cortex M4

Reading time12 min
Views8.7K


Всем доброго здравия!


В преддверии Нового года хочу продолжить рассказывать про использование С++ на микроконтроллерах, на этот раз попытаюсь рассказать про использование шаблона Наблюдатель (но далее я буду называть его Издатель-Подписчик или просто Подписчик, такой вот каламбур), а также реализацию статической подписки на С++17 и преимущества этого подхода в некоторых приложениях.

Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments22

Увеличиваем свою производительность в WebStorm / PhpStorm c помощью шаблонов

Level of difficultyEasy
Reading time3 min
Views5.8K

В статье рассмотрим как создавать шаблоны в продуктах Jesbrains (WebStorm, PhpStorm, Intellij, PyCharm).

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments11

Манипулируй DOM правильно

Level of difficultyMedium
Reading time8 min
Views11K

Зачастую, когда я наталкиваюсь на информацию о работе с DOM в Angular, в них присутствуют упоминания об одном или нескольких из этих классов: ElementRef, TemplateRef, ViewContainerRef. Именно упоминания, ведь общее  представление достаточно сложно сложить, даже тщательно изучив документацию Angular. Поэтому я решил подробно сформулировать, как это работает и для чего нужно.

Подробнее
Total votes 2: ↑2 and ↓0+2
Comments1