Pull to refresh
  • by relevance
  • by date
  • by rating

TechnoMeetsFront. Открытый онлайн-митап по Frontend-разработке 24/06

API *Conferences

26 июня вместе с разработчиками из «Технократии» и KODE обсудим поговорим о фронтенд-разработке, а именно обсудим что такое WebRTC, узнаем как упростить работу с API, а также подискутируем о важности чистого кода.

Присоединяйтесь к нам

Подробнее
Total votes 4: ↑3 and ↓1 +2
Views 295
Comments 0

Как применять GraphQL и не переделывать все с нуля, и как Nx ускоряет Angular разработку: митап LoGeek Night Front-End

Luxoft corporate blog JavaScript *Conferences

Привет, Хабр! Приглашаем на митап, посвященный технологиям и тулам в Front-End разработке 2 сентября.

Наши эксперты расскажут о применении GraphQL на проекте и как не переделывать все с нуля, как Nx ускоряет Angular разработку, о преимуществах использования Nx и на что обращать внимание при использовании Nx.

Все подробности под катом.

Читать далее
Total votes 4: ↑3 and ↓1 +2
Views 668
Comments 0

Запросы к JavaScript

Lumber room
Есть необходимость: передавать параметры непосредственно JavaScript.
Мы можем передавать параметры через GET, POST, но при передаче этих параметров просто будет загружаться новая страница, т.е. если в кеше браузера есть

some.so/index.php?id=2

а мы запрашиваем

some.so/index.php?id=3

то сервер для нас сгенерирует новую страницу, он не будет брать из кеша some.so/index.php?id=2 (и правильно будет делать).

Таже самая ситуация и с POST, поэтому говорить о том, что методами GET и POST можно передать параметры яваскрипту конечно можно, но это будет не совсем правдой. Т.к. параметры передаются на сервер, там генерируется новый контент, а там можно что угодно делать. Хоть напрямую GET переменные брать из window.location.href, хоть как-то серверным языком каждый раз заново генерить JavaScript. а это всё только имитация запросов к JavaScript.

Однако, есть один символ в стандарте URL, который нам поможет.

Читать дальше →
Total votes 9: ↑7 and ↓2 +5
Views 1.1K
Comments 25

W3Cast #5

Lumber room

  • Проектирование Web-документов
  • Командная работа в Web-разработке
  • Процесс вёрстки — с какого конца приступать?
  • Фразовые элементы
Total votes 1: ↑1 and ↓0 +1
Views 218
Comments 27

Суровые челябинские 1С-разработчики и как же юзать XSLT

Lumber room
Озадачился я вопросом — а что такое «шаблонизаторы» и какой в них смысл?

Полез читать, да все как-то про «сипульки для сипуления в сипулярии». Но за пол-дня в общем и целом начал осозновать, что именно имеют некоторые, говоря об отделении логики от представления и благе шаблонизаторов для больших проектов, где не нужно дергать кодера для того чтобы что-то где-то поправить, мол — «дизайнера это работа».

Вся сложность восприятия этой темы возникает лишь из-за того, что есть настоящие шаблонизатор — например XML -> XLST -> «Привет мир!» и многие другие, по факту являющееся библиотеками расширения языка.

Что я хочу этим сказать? Да то что Smarty к примеру — не шаблонизатор, а лишь библиотека акронимов, позволяющая писать (я не знаю ни PHP ни Smarty, это лишь попытка объяснения на пальцах, не приставайте к коду)
{foreach from=$data item="entry"}
{$entry.Comment|escape}

{/foreach}

Вместо
<?php
//... а здесь мы пишем функцию, которая читает из базы и последовательно вставляет полученное нами в
$output = $output.''.$entry.''
//... и делает это наверное в цикле
?>

Т.е. разделения логики и отображения не происходит — мы просто используем расширение языка. Мы обязаны быть в курсе, какие именно переменные и в каком виде (какого типа) у нас возвращаются из основного кода, после чего в «шаблонизаторе» мы эти переменные используем для отображения.

Сериализации данных не происходит, а лишь сериализация позволяет гарантировать «чистоту» данных от логики источника. Я не говорю о том, что в сериализованных данных не может содержаться какой-то код, я говорю о том, что он перестает быть исполняемым. Адресат данных должен самостоятельно решать, как именно будут восстановлены полученные им данные, в «предложении» же должны содержатся как минимум и подлежащее и сказуемое для возможности самостоятельного восстановления сути сказаного. Содержащиеся данные не «подразумевают» чего-либо еще или не умалчивают о чем-то, они ровно то, что они есть.

Ну например, если принять выражение -«Эта булка стоит 5 рублей!» за сериализованное, то варианты несереализованных выражений будут такими — «Это стоит 5 рублей! (Что?)», «Булка стоит 5 рублей (Какая?)», «Эта булка стоит 5 (Чего?)», «Эта булка — 5 рублей!(Местная валюта-хлеб?)» ну и апофеозом будет «Это стоит денег (???)» и «Смотрите прайс-лист! (wtf?!)».

Smarty позволяет разработчику сказать что-то типа "-Эта булка стоит 5 тышш рублей, потому что мы — пафосный бутик на Тверской!" и следует принимать решение на основе полученных от него данных и находясь в границах его логики. То есть начать соображать "- А, этож Тверская, тут же все дорого, значит надо баблос слюнявить как сказали".

Сериализация позволяет отстранится от логики источника и вполне обосновано предположить "- Дороговато!", соотнеся услышанную стоимость со своим представлением о том, чего должен стоить хлеб, после чего вежливо поинтересовавшись, не отведывали ли тут рыбного супа предложить продавцу отправиться налегке в пешее эротическое путешествие.

Сериализация — это пачка распечатанных фотографий из последней поездки, которые Вы прихватили с собой показать бабушке в деревне. Не-сериализованные данные — когда вместо распечатанных на матовой бумаге фотокарточек 13х15 Вы везете с собой Blu-ray диск, находя очевидным, что уж где-нибудь там найдется ноут с поддержкой Blu-ray.

Отлично, мы прониклись идеей, что «сериализация» есть благо, но при чем тут 1С?

Ну, они похоже этой идеей просветлились, во всяком случае г-н Рыжиков, создавший незабвенную виршу Иллюзии XML/XSLT технологий. Я лично смутно себе представляю, сколько и чего нужно раскурить, чтобы «я сам программист», прочитавший
много книг и учебников, в которых программистов и проектировщиков учили, что лучший способ создать шаблонизатор или абстрагировать внешний вид (представление) от данных — это загнать все в XML, пропустить потом через XSLT и уже на выходе получить HTML.

наложил табу на back-end логику и
Все восприняли это буквально и начали делать подобные продукты. Ну и конечно мы тоже наслушались и уверовали, что наше будущее — это XML/XSLT технологий.
Совершили подвиг, заставив XSLT шаблоны работать достаточно быстро, вложили кучу сил, времени и денег в разработку технологии… Самые большие каталоги товаров вмещали по 70 тысяч товаров.

сделал вывод, что:
Как не стараются РАЗРАБОТЧИКИ, производительность XML/XSLT систем остается очень низкой, несмотря на все усилия индустрии. Да и как выжать эту производительность? Сначала данные из SQL базы преобразуются в XML (а это текстовый файл большого размера в силу своей структуры). Потом XML данные загружаются в XML парсер уже в серверной части, где они занимают еще больше памяти для работы XPATH, формирования индексов по XML данным в момент загрузки и т.п. Далее XSLT проходит по огромному массиву данных, получая на выходе опять же текст, который занимает память.

При этом искренне не понимал о чем идет речь, когда ему задавали вопрос — «Откуда берутся огромные объемы данных, если контента на страницу бывает кило 100 максимум???».

Действительно, как же не взяться огромным объемам, если обрабатывать xml-дамп базы XSL-шаблоном?

Безумству храбрых поем мы песню!

Не менее весело читать «независимых разработчиков», которые согласны с мэтром — «XSLT — тормоза и отстой!».

Нет, ну вообразите себе — это ровно (в смысле абсолютно эквивалентно) как наткнутся в ЖЖ на топик
-Сегодня взялся за голые провода, стоя в мокрой ванне. Нехило меня током долбануло, 3 часа в себя приходил!

с толпой комментов:
— И я сегодня взялся за провода! И меня долбануло!

-+1, ванны отстой! Резиновые коврики рулят!

— Резина — отстой, лучше пластик!

— Сам ты отстой, и пластик твой — фуфел!

— Ответил за базар, что пластик — фуфел?

— Ха, да у меня друг — директор шинного завода, они там только резину и юзают, а не какой-то говнопластик. Не надо же тебе объяснять, как это круто — делать шины! Это не какой-то там свечной заводик в Урюпинске, это же production!

— А меня так каждый раз током долбит, когда я за провода берусь, достало!

— Да ты лошара, вот меня один раз долбануло в ванне от проводов, так я нахрен их вырубил в щитке в подвале! Чтоб ни меня, не мою семью, ни соседей не било! Надо же и об окружающих думать!

Клиника, одним словом :)

Пожалуйста, не делайте так!

Шаблон должен делать ровно то, что он делает — взять с полки и укомплектовать товар аксессуарами, в зависимости от того — OEM это или Retail. Если Retail — то и диск положи, и шлейфы и мануалы на всех языках, и брелок. А если OEM — чихни в пакет для комплекта к самой железяке. При этом комплектовщик работает с конкретной железкой и каким-то конечным объемом аксессуаров, подходящих к этому устройству. Он не пытается запихнуть в коробку с видеокартой блок питания, потому что у нее есть дополнительный разъем — блок питания не входит в комплект по его ТИ, или вместо видюхи положить бутылку коньяка, метнувшись за ним в магазин, потому что это для «самого». И уж тем более ему не говорят — «Вот видюха, вот склад комплектов — выбери чего-нить и сунь туда, ты же головастый малый!»

Разделение логики означает ее, логики, разделение — не более и не менее!
(если Вас передернуло от такой формулировки — просто проигнорируйте, а если какая-то смутная догадка мелькнула в мозгу — перечитывайте до просветления)

У вас все еще есть база SQL с хреновой тучей записей (как и положено приличной SQL-базе); back-end который ходит в базу и получает от нее полтора десятка записей (в соответствии с запросом пользователя и логикой постраничного отображения, предписывающего отображать 15 записей, причем в названии не должно быть слова «Жопа» если в графе «Возраст» у юзера стоит «до 18») на выходе заворачивающий результаты своей работы в XML; front-end получающий коротенький XML и накладывающий на него свою таблицу стилей ака XLST в результате чего получается новый XML-файл, в котором первоначальный узел <bullshit>Костюм и галстук — $5000</bullshit> меняется на <Haute couture>Костюм и галстук — $5000</Haute couture>.

А где же HTML? Да здесь он, родимый, просто в другом шаблоне — toHTML, для узла <bullshit> задано другое правило, трансформирующего его в <span class=«amazing» >, которое отдается клиенту тем же front-end-ом, если пользователь не умеет читать XML. Да, суть front-end-а именно в том, чтобы говорить с клиентом на одном языке, при этом ему пофигу о чем ведется речь — про шмотки или бухло. Он и о том и о том может, если суфлер-back-end подскажет, что вставлять после «Это очень крутая штука, наша»…

Короче, если Вы смогли это дочитать и все еще пытаетесь реализовать back-end как XLST-преобразование XML-дампа базы данных — прямая дорога вам в 1С, делать «Битрикс-ы» под руководством г-на Рыжикова. Или нет, не возьмут Вас за слова XML и XSLT, они же уже «накололись» на этом и больше так не «лохонутся». Ну, тогда перечитайте еще разок этот опус или попробуйте написать гневный отклик на него, думая над каждой своей фразой.

UP. Disclaimer — сложность текста, его сумбурность, оторванность примеров от предмета и тэдэ — результат крайне поверхностных знаний автора в обсуждаемом предмете. На данный момент вся моя профессиональная подготовка по XLST состоит в прочтении первого предложения XLST — стандарта, гласящего:
This specification defines the syntax and semantics of XSLT, which is a language for transforming XML documents into other XML documents.

Еще вопросы?
Total votes 29: ↑21 and ↓8 +13
Views 614
Comments 19

С чего начинается БЭМ?

Website development *
БЭМ расшифровывается как «Блок Элемент Модификатор». Это подход к web-разработке, позволяющий быстро создавать сайты с гибкой архитектурой. Он знаком многим, кто занимается HTML/CSS вёрсткой.

Изобретённый в Яндексе, БЭМ постепенно проникает и в разработку других компаний.
В данный момент основные мейнтейнеры работают над выводом в Open Source фреймворка, построенного по методологии БЭМ, инструментов и многих полезных утилит.

Читать дальше →
Total votes 90: ↑77 and ↓13 +64
Views 52K
Comments 61

Готовим Sublime Text 2 для front-end

Website development *Programming *
Ни для одного опытного программиста или верстальщика не секрет, что настроенная под себя среда разработки (не в смысле IDE, а в более общем) — жизненная необходимость. Было время, когда я делал очередную верстку в практически голом Notepad++ на единственном мониторе, поочередно открывая Photoshop, браузер и редактор. Сегодня, в эпоху «автоматизации всего», мне сложно представить, как вообще можно было так работать.

Sublime Text 2 — популярный расширяемый кроссплатформенный текстовый редактор, для которого написано множество плагинов если и не на все случаи жизни, то на многие. В этом посте я попытаюсь рассказать как из этого конструктора сложить удобный инструмент front-end разработчика для работы с HTML, CSS и JavaScript.
Читать дальше →
Total votes 107: ↑95 and ↓12 +83
Views 267K
Comments 134

Подборка инструментов для эффективной frontend разработки

CSS *
В эту прекрасную пятницу осмелюсь предложить хабрасообществую небольшую подборку приложений, предназначенных для увеличения продуктивности во время работы с фронтэндом. Если ваш любимый апп здесь не представлен — добро пожаловать в комментарии!

Form Builder

image

Этот прекрасный генератор форм поможет вам в создании красивейших CSS логин-боксов и прочих input вещей, при минимальных временных затратах. Помимо форм на сайте этого проекта можно создавать и другие не менее красивые CSS элементы, в том числе кнопки и ленты.
еще 24 ссылки
Total votes 204: ↑197 and ↓7 +190
Views 100K
Comments 46

Point-Of-Sale: автоматизация промо-акций

Website development *
В этой статье хочу поделиться классификацией схем промо-акций, автоматически обрабатываемых POS-системами, выстроенной на опыте разработки таковых для множества клиентов в течении многих же лет. Надеюсь, она будет полезна как разработчикам, реализующим сами POS-модули и интерфейсы с ними, так и пользователям таких систем.
Читать дальше →
Total votes 3: ↑3 and ↓0 +3
Views 5.5K
Comments 1

Фильтрация элементов в cuSel

Website development *jQuery *HTML *
image

На одном из сайтов, который я имею честь обслуживать, для кастомизации селекта используется замечательный jQuery-плагин cuSel. Он удобен тем, что достаточно прост в настройке и позволяет кастомизировать даже полосу прокрутки.
Но иногда случается так, что список элементов может быть очень большим. И быстро найти нужный пункт не так просто.
Читать дальше →
Total votes 13: ↑6 and ↓7 -1
Views 7.9K
Comments 8

Запуск проекта GeeksLab и анонс конференции «Happу New Front-End! О фронтенде по-новому!» 18 января в Одессе

RootUA Media corporate blog Website development *JavaScript *

Приветствую Хабрасообщество!

В 2014 году команда RootUA Media запускает новый образовательный проект GeeksLab. В рамках проекта будут проводиться узкоспециализированные мастер-классы, семинары, различные встречи и конференции. В состав проекта GeeksLab вошли такие мероприятия: FOSS Sea, WebCamp, Odessa Innovation Week, Startup Weekend Odessa, Odessa StartUP Coffee и IT Tech Meeting (в прошлом FOSS Fest и FOSS Meeting).

Список мероприятий проекта GeeksLab пополнит конференция: «Happу New Front-End! О фронтенде по-новому!». Она пройдет 18 января в Одессе на базе Коворкингового пространства HUB Odessa. В рамках конференции будут подняты темы современной верстки, разработки фронтенда на чистом JavaScript, а также использования различных CSS и JavaScrpt фреймворков для построения фронтенда веб-проектов.
Читать дальше →
Total votes 15: ↑12 and ↓3 +9
Views 3.7K
Comments 1

Загрузка модуля по требованию в AngularJS

JavaScript *Angular *
Translation
Если вы очень спешите: то да, отложенная загрузка модулей в AngularJS возможна, и код необходимый для этого вы можете видеть ниже.

Неужели AngularJS не поддерживает отложенную загрузку в каким либо способом?


AngularJS является одним из лучших шаблонов для front end разработки, но он все еще молод, и не имеет нескольких важных возможностей (кто сказал хорошего маршрутизатора?).
В то время как большинство из этих возможностей может быть добавлено в виде модулей, которые можно найти в google или на специализированных веб сайтах, есть некоторые функции, которые не получится добавить таким способом.
В настоящее время многим требуется асинхронная загрузка модулей, и кажется Google собирается реализовать ее во второй версии фремворка, но кто знает, когда это будет…
Читать дальше →
Total votes 19: ↑17 and ↓2 +15
Views 17K
Comments 17

URL.js или дружим JavaScript с обработкой ссылок

JavaScript *
Sandbox
image

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

Возникла передо мной сегодня задача генерации GET-параметров и всего URL в целом, на стороне клиента, прям вот щас, без возможности «поговорить» с сервером. Сразу оговорюсь, про этот пост я узнал вот прям перед написанием данной статьи ибо сначала закончил писать, а потом уже прибег к поиску, да и пост тот — не со всем про то же самое, что у меня.

Итак, к делу.

Задача и проблемы


Проблемы — те же что и в посте, который я привел выше:
  • Невозможность использовать window.location для «приготовления» URL;
  • Нельзя работать сразу с несколькими window.location в силу политики безопасности браузеров;
  • Отсутствие известных готовых решений ( да и сейчас, уже апосля, я не нашел подобного кода )

Задачи которые я поставил перед собой:
  • Удобный синтаксис
  • Возможность как читать части URL так и изменять их
  • Работа с GET-параметрами
  • Кроссбраузерность и универсальность


Писал я на чистейшем JavaScript, причем без использования prototype.__defineGetter__ или prototype.__defineSetter__ в угоду кроссбраузерности ибо IE < 9 такого не умеет. Более подробно про getters/setters написано в этом посте.

Для тех кому интересно — сядем разберем, а кому надо готовое решение — милости прошу в конец поста, ссылки на скачивание — там.

Приступим! Раньше сядем — раньше выйдем.
Читать дальше →
Total votes 60: ↑47 and ↓13 +34
Views 42K
Comments 60

Автоматизированный шаблон для front-end проектов

Website development *CSS *JavaScript *CoffeeScript *


Человек изобрел компьютеры, чтобы они выполняли за нас большую часть повторяющихся задач. Это позволяет нам экономить много времени и использовать его с максимальной пользой. И, так как эта статья о front-end разработке, в этой области таких задач много: компиляция css- и js-препроцессоров, сборка спрайтов, оптимизация изображений, минификация файлов и др.
Познать дзен
Total votes 27: ↑22 and ↓5 +17
Views 29K
Comments 30

Видео докладов с конференции IT NonStop Воронеж 2015

DataArt corporate blog Website development *Programming *
Привет, Хабр!

Совсем недавно завершился воронежский этап отличной международной конференции IT NonStop 2015. Перед гостями выступили отличные спикеры с докладами на самые разные темы. Сегодня мы хотели бы поделиться с вами видео с выступлений.

Читать дальше →
Total votes 15: ↑13 and ↓2 +11
Views 5.5K
Comments 0

Тонкости ES6: Коллекции (часть 1)

Website development *JavaScript *
Translation
Ранее на этой неделе (статья от 19 июня — прим.) спецификация ES6, официально названная ECMA-262, 6th Edition, ECMAScript 2015 Language Specification, преодолела последний барьер и была утверждена как стандарт Ecma. Мои поздравления TC39 и всем остальным, кто помогал. ES6 закончен!

Даже лучше: больше не надо будет ждать следующего обновления 6 лет. Комитет собирается выпускать новую версию в срок около года. Предложения по ES7 уже примаются!

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

Читать дальше →
Total votes 13: ↑11 and ↓2 +9
Views 29K
Comments 32

Распознаем коды Морзе с использованием Rx.js

Website development *JavaScript *
Tutorial


Задача: на входе сигналы с клавиатуры (keyup, keydown) — на выходе буквы и слова декодированные по азбуке Морзе. О том, как декларативно решить данную задачу используя FRP подход, в частности Rx.js — ниже под катом. (Зачем? Because we can)
Читать дальше →
Total votes 10: ↑10 and ↓0 +10
Views 15K
Comments 17

Видео докладов с конференции IT NonStop Odessa 2015

DataArt corporate blog Website development *Programming *


Привет, Хабр!

Недавно завершился одесский этап крупной международной конференции IT NonStop 2015. Спикеры были не ограничены жесткими рамками тем и направлений, каждый мог поделиться с аудиторией тем, что казалось важным и актуальным именно ему. В итоге мы получили массу отличных докладов на разные темы.

Делимся видео выступлений.

Еще два доклада были посвящены менеджменту, их можно найти в нашем блоге на Мегамозге.
Читать дальше →
Total votes 6: ↑3 and ↓3 0
Views 2.6K
Comments 0

Web Camp 2015: как это было

Website development *
Как-то так получилось, что это мероприятие на хабре обошли стороной. И даже m31 или забыл, или не успел о нём написать.
Я решила внести свою лепту и рассказать о своих впечатлениях о Web Camp 2015.
Это мероприятия проходило в рамках Odessa Innovation Week со 2 по 10 июля.

image

О мероприятии

Проходило в Одессе и состояло из 3-х направлений:

  • Tech направление
  • Business направление
  • StartUp направление
Подробности
Total votes 14: ↑12 and ↓2 +10
Views 8.9K
Comments 5