47 posts tagged

разработка

/core.php, line 2
Error 2: Use of undefined constant k - assumed 'k' (this will throw an Error in a future version of PHP)

/core.php, line 2
Error 2: Use of undefined constant k - assumed 'k' (this will throw an Error in a future version of PHP)

/core.php, line 2
Error 2: Use of undefined constant k - assumed 'k' (this will throw an Error in a future version of PHP)

/core.php, line 2
Error 2: Use of undefined constant k - assumed 'k' (this will throw an Error in a future version of PHP)

/core.php, line 2
Error 2: Use of undefined constant k - assumed 'k' (this will throw an Error in a future version of PHP)

/core.php, line 2
Error 2: Use of undefined constant k - assumed 'k' (this will throw an Error in a future version of PHP)

/core.php, line 2
Error 2: Use of undefined constant k - assumed 'k' (this will throw an Error in a future version of PHP)

Later Ctrl + ↑

Про выбор технологий

Выбор инструментов и технологий должен быть обусловлен критериями, в которых строится проект. Бюджет, размер команды, планы на будущее, опыт людей, с которыми нужно будет работать – все влияет на выбор инструментов. Молодые амбициозные технологии хороши для домашних проектов так как цены ошибки невелика, а шанс, что потенциал технологии будет соответствовать заверениям маркетологов, присутствует.

Проверенные временем, опенсорсные, на которые уже завязано много работающего кода – для потенциально долгоживущих за счет инертности. Бывает, лучше выбрать кривоватое решение с большим коммьюнити, чем прекрасное решение “в точку” без единой живой души, кто им пользуется.

Тем, кто убежден, что “популярность === высокое качество”, у меня плохие новости: ваше видение мира не соответствует действительности.

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

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

2014   по-русски   разработка

Интеграция dash в alfred

Есть 2 прекрасных инструмента, которыми я активно пользуюсь во время разработки. Это dash и alfred. Даш имеет плагин для интеграции с альфредом. Плагин работает криво, сначала предлагая список возможных вариантов выбора в выпадающем списке альфреда, в котором нужно тыкнуть интересующий вариант, и только потом откроется приложение даш. При этом плагин предлагает назначить отдельное сочетание клавиш на запуск даш, и на поиск выделенного текста в даш.

Какого поведения хотелось бы: по одному и тому же хоткею всегда открывается даш. Если был выделен текст, этот же текст ищется в даше. Реализация состоит из одной строки. Зная что даш регистрирует свой протокол, благодаря которому можно открывать окно поиска через консоль

open dash://forEach

, пишем скрипт открытия даша, куда аргументом передаем выделенный текст. Готовый воркфлоу: https://github.com/podgorniy/alfred-dash/blob/master/Dash.alfredworkflow?raw=true
После установки не забудь назначить хоткей для запуска воркфлоу. У меня это

ctrl+shift+d

.

2014   по-русски   разработка

Отладка стилей динамического DOM-а

Под отладкой я принимаю необходимость подкрутить свойства стилей узла через вебинспектор, и сразу же увидеть результат применения. Осложняющим фактором будет видимое отсутствие элемента на странице. Элемент может быть не виден до определенного события. Может быть несколько причин невидимости. Рассмотрим случаи:

Случай 1. Тривиальный
Элемент находится в DOM, но скрыт, и появляется при наведении мышки на своего родителя.
В этом случае удобнее воспользоваться возможностью вебинспектора форсить состояние элемента будто на него наведена мышка. Обрати внимание, что элемент, на котором зафорсен hover, подсвечивается оранжевыми точками.

Страница для тренировки: http://dmitrypodgorniy.com/demos/dynamic-visibility/hover.html
В динамике:

Случай 2. Терпимый
Элемент добавляется и удаляется из DOM динамически. При этом DOM сам по себе не сильно изменяется. Такое поведение можно встретить на несложных сайтах с плагинами-меню. Чтобы отладить стили всплывающего элемента, словим момент добавления элемента в DOM с помощью установки breakpoint на мутацию DOM-а. Находясь в режиме отладки, хром не выполняет скрипты, которые должны бы скрыть элемент, но позволяет изменять стили элемента.

Не забудьте убрать breakpoint после того, как закончите отладку, чтобы не попадать в отладчик каждый раз при модификации DOM. Список всех breakpoint можно найти во вкладке “Sources”

Страница для тренировки: http://dmitrypodgorniy.com/demos/dynamic-visibility/dynamic-dom.html
В динамике:

Случай 3 (запущенный)
Элемент добавляется и удаляется с помощью js или с использованием хитрых стилей. При этом с первой попытки не удалось понять механику добавления, а DOM страницы меняется очень уж часто, и подход из предыдущего случая не помогает.

Идея – попасть в режим отладки прямо из консоли, введя debugger. При этом не потеряв фокус на странице. Помогает хитрость: нужно скрыть консоль, выполнить действие, чтобы элемент появился, открыть консоль (в этот момент она получает фокус, но фокус со страницы не пропадает), напечатать debugger. Теперь, в режиме отладки, можно менять стили, а элемент не будет скрываться, пока мы не выйдем из этого режима.

Страница для тренировки: http://dmitrypodgorniy.com/demos/dynamic-visibility/hover.html
В динамике:

2014   по-русски   разработка

Автоматический репост из gplus в twitter и facebook

Первый шаг:
Превратить поток публичных сообщений g+ в rss фид. Подобная функциональность не встроена в g+, поэтому требуется посредник. Есть несколько сервисов, которые умеют генерировать RSS.

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

Второй шаг:
Воспользоваться сервисом ifttt. Можно собрать свои рецепты, или использовать готовые (не забудь подменить источник RSS) “если новый пост в RSS, запостить в твиттер” и “если новый пост в RSS, запостить в фейсбук”.

2014   проект   разработка

Слайды и ресурсы о новшествах ECMAScript 6

Слайды

http://dmitrypodgorniy.com/talks/es6-whats-new/
Кстати, если находясь на странице презентации, нажать “s”, то появится окно, в котором можно почитать заметки к текущему слайду (не ко всем слайдам есть заметки).

Ресурсы

Таблица фич и реализации фич для некоторых движков и трансляторов кода. Обрати внимание, что фичи могут быть реализованы не в полную меру. + некоторые из описанных фич не являются частью стандарта es6 (например Object.observe).
http://kangax.github.io/es5-compat-table/es6/

Текущий черновик стандарта
http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#current_working_draft

Про консерваторов и новаторов в комитете по развитию es
https://mail.mozilla.org/pipermail/es-discuss/2008-August/006837.html
http://ejohn.org/blog/ecmascript-harmony/

Почитать про транслятор кода из es6 в es5. Интересен тем, что поддерживает модули и классы
https://github.com/google/traceur-compiler
https://github.com/google/traceur-compiler/wiki/LanguageFeatures

Traceur online
http://google.github.io/traceur-compiler/demo/repl.html

Онлайн песочница квазилитералов
http://js-quasis-libraries-and-repl.googlecode.com/svn/trunk/index.html

ast исходного кода (es6 в том числе)
http://esprima.googlecode.com/git-history/harmony/demo/parse.html#

Примеры кода es6 с описанием поведения
https://github.com/JustinDrake/node-es6-examples

Генераторы в v8. и для асинхронной работы
http://wingolog.org/archives/2013/05/08/generators-in-v8

Генераторы и их применение
http://jlongster.com/2012/10/05/javascript-yield.html

Анализ генераторов с отличными примерами
http://spion.github.io/posts/analysis-generators-and-other-async-patterns-node.html#the-analysis

Понимание array comprehensions
http://ariya.ofilabs.com/2013/01/es6-and-array-comprehension.html

Стрелочные функции
http://habrahabr.ru/company/mailru/blog/213455/
http://www.nczonline.net/blog/2013/09/10/understanding-ecmascript-6-arrow-functions/

Про беды js, и как все станет лучше в es6 (древненькая статья)
http://peter.michaux.ca/articles/javascript-is-dead-long-live-javascript

2014   разработка   ссылки   что почитать

Как создать и поддерживать много презентаций

Речь пойдет не про презентации, которые менеджеры делают на квартальные отчеты. А про слайды-якоря по которым можно строить свой рассказ. Стала передо мной необходимость создавать много презентаций, в относительно сжатые сроки. Делать их в powerpoint смысла ноль. К тому-же хотелось со временем добавлять ништячков в оформление, да и просто иметь одинаковый дизайн всех презенташек вне зависимости от их возраста.

Начал с написания своего велосипеда, тут можно глянуть на результат (прогресс, навигация по якорям, возможность дать ссылку не только на слайд по индексу, но и по заголовку). Основная идея заключалась в том, чтобы, вместо верстки слайдов, специальным образом их размечать тегами (без классов и дополнительных рюшечек). Все остальное скрипт генерирует налету. Второе решение, которое должно было бы упростить работу — подключение внешних файлов (как стилей, так и скриптов) в едином main.js. Таким образом можно и базовую библиотеку обновить, и стили всех презенташек изменить разом.

На определенном моменте, стало понятно, что движусь не в ту сторону. Вернее в ту, в которую уже кто-то двигался до меня. Последовало исследование сегодняшнего рынка js презентаций, в итоге остановился на revealjs. Выглядит симпотно, и эффектов не такая куча, как в некоторых других. В нем ряд вопросов решен: подсветка синтаксиса, анимашки, апишка (планирую прикрутить удаленное управление по вебсокетам). Удаленное управление есть, но тормозит оно безбожно. Еще приятным бонусом оказалась поддержка markdown (с разбитием на слайды).

Имея на руках такой плацдарм, упростить процесс написания презентаций до невозможного:

  • все слайды размечаются в markdown во внешнем файле.
  • подгрузка презентации реализована через параметр в URl.

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

Отдельная тема с подсветкой кода. Для подсветки revealjs ипользует ту же библиотеку, highlightjs, что и этот блог. highlightjs определяет язык, на котором написан код, по классу контейнера с кодом. Иначе она пробует подобрать самостоятельно язык. Так как у меня примеры часто имеют не более 3-х строчек, и написаны на js, highlightjs часто ошибается в определении языка. Ставить класс в markdown нет возможности. Задача решается добавлением комментария к коду, и доработкой highlightjs напильничком, чтобы та подсвечивала код с определенным комментарием как javascript-овый.

Итого:

  • презентации — чистые markdown файлы
  • для всех презентаций единый файл, один стиль

Пример презентации, исходный код.

2013   по-русски   разработка

Скринкаст. Как создать сайт на github pages

Сперва регистрируемся на гитхабе. Учтите, что итоговый сайт будет иметь адрес типа ИМЯ_АККАУНТА.github.com. Програмку под винду скачать тут. При установке не забудьте залогиниться со своим гитхабовским аккаунтом, а также заполнить имя и ящик.

Сам скринкаст: http://yadi.sk/d/4pUWCoLn2i7Gi.
Качество далеко от совершенства. Будем считать первым блином.

UPD Выложил запись

Создание страниц на github pages from Dmitry Podgorniy on Vimeo.

2013   видео   по-русски   разработка
Earlier Ctrl + ↓