Давным-давно, когда трава была зеленее, а деревья выше, жил-был тролль, по имени Xenocephal. Жил он, в принципе, во многих местах, но мне повезло встретить его на одном форуме, где я, в то время, набирался ума-разума. Я уже не вспомню топика, в котором протекала беседа, но суть ее сводилась к тому, что Xenocephal пытался убедить всех окружающих, что Lisp (с его макросами) — всему голова, а C++, с его шаблонами, жалкое подобие левой руки. Также утверждалось, что наметапрограммировать в нем что-то сложнее набившего оскомину факториала не представляется возможным.
Читать полностью »
Метка «templates» - 2
Что-то посложнее факториала
2013-05-08 в 11:28, admin, рубрики: c++, DFA, nfa, templates, КодоБред, ненормальное программирование, ностальгия, метки: c++, DFA, nfa, templates, ностальгияОчень маленький фреймверк или как написать собственный Angularjs в 200 строк
2013-03-06 в 11:11, admin, рубрики: AngularJS, framework, javascript, templates, Веб-разработка, Песочница, метки: AngularJS, framework, javascript, templates, web componentsНе так давно в одном из уже практически написаных проектов возникла необходимость в использовании подобия вэб-компонентов. Хочу расказать что у нас получилось, постараюсь кратко:
Цель:
Начать использовать компонентный подход в HTML верстке(новую семантику), а именно вэбкомпоненты.
Под компонентом я подразумеваю — “независимый модуль программного кода, предназначенный для повторного использования и развертывания”. К примеру в другом проекте.
Тут хочу сделать небольшое отступление и внести ясность – речь пойдет о компонентах, а не о виджетах(функционально обособленных единицах приложения, объединяющих в себе представление, логику и/или данные, конкретного приложения — javascript+html+css).
Разница, по моему мнению, состоит в том что компонент не подвязывается к конкретной модели данных или логике конкретного приложения – и вы можете его без труда перенести в другое приложение. А виджет – это единица конкретного приложения тесно связанная логикой или данными, и перенести его куда либо без внутреннего изменения самого виджета у вас не получится.
В качестве примеров компонента могу привести селект, аккордеон или табки, а виджетов – панель состояния или окно отображения сообщений в чате.
Зачем:
Реюзабельный код и удобство верстки с помощью возможности расширения HTML синтаксиса.
Как сказано в доке к одному известному фреймверку:
“Directives is a unique and powerful feature available only in Angular. Directives let you invent new HTML syntax, specific to your application.”
— я хочу показать, что это возможно и без angularjs.
И потому, что я хочу использовать компонентный подход(аналог angularjs директив) с виджет-ориентированной архитектурой или с теми шаблонизаторами к которыми мне удобно работать.
Вобщем использовать ту архитектуру приложения или фреймверк которые мне удобны в конкретном случае.
И описанное далее это ни в коем случае не MV* фреймверк, и никогда не задумывался как онный.
Читать полностью »
Шаблоны с переменным количеством аргументов на примере обертки для Lua
2013-01-14 в 10:44, admin, рубрики: c++, c++11, Lua, templates, tuple, ооп, метки: c++, c++11, lua, templates, tupleПонадобилось мне прикрутить Lua к проекту на C++. Писать обертки в ручную — лень (слишком много писать), готовые не подходили по тем или иным причинам. Решил написать свою. А потому задался вопросом, как максимально упростить интерфейс? От одной только мысли об этом в голову лезли жутчайшие конструкции из шаблонов. Так оно в последствии и оказалось, но гораздо проще, чем представлялось.
В C++11 появились шаблоны с переменным числом аргументов, это позволяет писать шаблонные функции/классы так, как в C++03 было невозможно вовсе. Такие шаблоны сильно упрощают задачу.
Первым делом понадобилось написать обертку над простейшими действиями с интерпретатором (можно было бы обойтись простыми вызовами к C API Lua, но держать в памяти кучу индексов различных значений в стеке мне не хочется. Поэтому я обернул их в несколько функций, которые помимо того, что избавляют от необходимости передавать в каждую функцию указатель на состояние интерпретатора, практически не требуют индексов, так как они имеют значения по умолчанию.
В итоге хотелось увидеть интерфейс близкий к следующему:
lua.export_function(some_function);
Roots — Инструментарий для продвинутого фронт-енд разработчика
2012-12-14 в 3:54, admin, рубрики: css, deployment tools, html, templates, toolkit, Веб-разработка, метки: css, deployment tools, html, templates, toolkitRoots — это набор инструментов для создания простых, красивых и эффективных продуктов для Интернета.
Jade, stylus и coffeescript
Live reload
вывод ошибок компилятора
coffeescript и markdown можно писать во view
продвинутый хелпер css библиотеки
bower и require.js
github: https://github.com/jenius/roots
официальный сайт проекта: http://roots.cx/
Обзор (english):
Попробуй БЭМ на вкус!
2012-12-12 в 14:18, admin, рубрики: css, html, javascript, templates, БЭМ, Веб-разработка, шаблонизатор, шаблоны, метки: css, html, javascript, templates, БЭМ, мастер класс, шаблонизатор, шаблоны Эта статья рассказывает о том, как создать проект с использованием БЭМ-технологий.
Мы шаг за шагом создадим страничку каталога товаров, пользуясь принципами БЭМ в CSS, возможностями писать декларативный JavaScript на фреймворке i-bem.js
и с использованием шаблонизатора BEMHTML
. Помогать делать всё это будут bem tools
, в частности — инструмент для разработки bem server
.
Важно: в статье нет особенных подробностей, её цель — получить проект максимально быстро. Текст, раскрывающий больше информации, пройдёт следующим постом.Читать полностью »
Прекомпиляция клиентских JavaScript шаблонов
2012-11-04 в 12:02, admin, рубрики: javascript, node.js, templates, Веб-разработка, метки: javascript, node.js, templates Я много пишу на JavaScript, и если вам при работе с шаблонами, как и мне, надоело экранировать окончание строк, следить за именами шаблонов и собирать их перед каждым билдом, это решение для вас, jsttojs — утилита для прекомпиляции клиентских шаблонов в JavaScript.
Читать полностью »
Что же такое envanto? Все ли так легко?
2012-10-19 в 22:50, admin, рубрики: freelance, templates, веб-дизайн, Веб-разработка, дизайн, работа, разработка, темплейты, метки: freelance, templates, дизайн, работа, темплейтыПривет всем!
Впрочем больше наверное коллегам-дизайнерам. Речь пойдет именно о дизайне, а скорее о заработке в сфере дизайна. Время обратно, я вдохновившись статьей про Evanto сеть купи/продай — решил тоже начать там зарабатывать, во всяком случае опробовать.
Что же такое envato? Все ли так легко?
2012-10-19 в 22:50, admin, рубрики: envato, freelance, templates, веб-дизайн, Веб-разработка, дизайн, работа, разработка, темплейты, метки: envato, freelance, templates, дизайн, работа, темплейтыПривет всем!
Впрочем больше наверное коллегам-дизайнерам. Речь пойдет именно о дизайне, а скорее о заработке в сфере дизайна. Время обратно, я вдохновившись статьей про envato сеть купи/продай — решил тоже начать там зарабатывать, во всяком случае опробовать.
Реализация шаблона проектирования «Наблюдатель» на С++
2012-08-31 в 11:29, admin, рубрики: c++, class, Events, Observer, patterns, templates, Песочница, метки: c++, class, Events, Observer, patterns, templatesВведение
«Наблюдатель» (observer) – один из часто используемых шаблонов (паттернов) проектирования. Также известен как «подчинённые» (dependents) и «издатель-подписчик» (publisher-subscriber). Определяет зависимость типа «один ко многим» между объектами таким образом, что при возникновении некоторого события в одном из объектов, все объекты, подписавшиеся на оповещения об этом событии, извещаются о его возникновении.
Переводим Chrome extension на manifest_version 2
2012-08-21 в 9:27, admin, рубрики: chrome, chrome extension, content security policy, csp, extension, Google Chrome, sandboxing, templates, underscore, Web-store, метки: chrome, chrome extension, content security policy, csp, extension, sandboxing, templates, Underscore, Web-store Владельцам расширений (а также приложений) для Хрома уже пора бы задуматься над поддержкой второй версии манифеста.
Если кто не в курсе, то не так давно были объявлены новые изменения и нововведения в разработку расширений для браузера.
Далее будет выборочный перевод двух страниц и мой способ использования шаблонизатора изнутри песочницы.
Читать полностью »