Пишу про разработку вообще и в частности про: JavaScript, HTML5, CSS3, AngularJS, ReactJS, Agile, Bitcoins

Как запускать jasmine тесты es6 кода

Очень простое решения для запуска jasmine тестов на коде написанном на es6. Никакого вебпака, только воля 🙂

.babelrc

package.json

spec/run.js

Источник: https://gist.github.com/mauvm/172878a9646095d03fd7

Поделиться:

Разрешение git конфликтов в visual studio code

В новой версии visual studio code добавил весьма приятный интерфей для разрешения git конфликтов. С одной стороны поддерживает классический (не люблю все эти gui варианты) текст конфликта, а с другой есть интерактивность. Отлично.

visual-studio-code-conflict-handling

Поделиться:

Обновил react-webpack-starter

Одна из особенностей разработки под веб (а особенно под фронт, чего уж говорить) – это постоянная необходимость обновлять используемые пакеты. А все потому что разработчикам не сидится и они все улучшают и улучшают)

Итак, делаем апгрейд моего репозитория react-webpack-starter. В этот раз поменялось много чего:

  • Упростил npm команды, теперь сборка продакшена будет зависеть от передаваемой глобальной переменной NODE_ENV='production' И это сильно хорошо.
  • Переписал конфигурацию вебпака – стало чище.
  • Обновил все модули, кроме раутинга. Тут еще есть работа и не все зависимости готовы к переходу. Придется подождать.
  • Добавил “chunk-hash”, теперь хэш меняется, только если код изменился
  • Выделил вендорные библиотеки в отдельный файл

Продолжаем кодить 👍

Поделиться:

Chrome 59

Выходит новая версия хрома, а с ней и новые возможности

  • Coverage – табик, в котором показывается какая часть скриптов (css и js) используется сайтом.
  • Скриншот всей страницы. Даже той части, которая скрыта за прокруткой.
  • Блок адресов. Помогает проверять как ведет себя сайт, когда часть скриптов не загружена.

Поделиться:

Shell и целые числа

Bash shell оказывается работает только с целыми числами и в противном случае нужно делегировать эти вычисления. (Да, да, странно что я этого не знал ^_*). Воспользуемся нодой! В итоге код выглядит фейерично:

bash-node-js

Поделиться:

Русскоязычный репозиторий в трендинге гитхаба

Может быть и не в первый раз, но до этого я не видел, что бы русскоязычный репозиторий выходил в трендинг гитхаба. Китайские (или японские? корейские?) были, а вот кирилицы я точно не видел.

Не то бы – это самая большая новость за сегодня, но как-то приятно 🙂

react-things

https://github.com/rtivital/react-things

Поделиться:

Алгортим сортировки “sleep sort”

Это потрясающе 🙂

Поделиться:

Что бы вы назвали “7-ю чудесами” из мира программирования

Мой свободный перевод ответа на вопрос What do you think are the “7 wonders” of the coding world? Ответ короткий, но настолько интересный, что не возможно не поделиться.

Прекрасный вопрос!

Семь чудес из мира программирования:

Виртуальная память. Без нее нам бы все так же приходилось бы думать о рациональном дизайне программного обеспечения.
ООП. Программирования больше не вызывает высокого ментального напряжения, переходящего в сумасшествие.
IDEs. Даже законченный идиот может писать программы с хорошим IDE. Многое объясняет кстати.
HTML5/ECMAscript. Для программистов это тоже самое, что и рэп для музыкантов. (Я рэпер! *примечание переводчика)
Scrum. Способ позволить менеджерам думать, что они конторлируют проект.
Stackoverflow. Без комментариев.
Кофейные напитки. Разве нужны пояснения?

Поделиться:

Магический метод для всех “get” обращений к объекту

Уф, ну и заголовок. Хотя звучит весьма весомо %) В чем суть – предположим у нас есть некий объект:

Что произайдет, если мы обратимся к несуществующему свойству этого объекта?

Ничего интересного – мы получим undefined. Ошибки не будет.

А что получится, если обратимся по цепочке несуществующих свойств?

А вот тут уже вылете ошибка “Cannot read property ‘exist’ of undefined”. Это стандартное поведение интерпритатора, думаю неожиданностей тут нет. Вопрос – как это можно обрабатывать?

Есть несколько вариантов. Можно проверять наличие свойства на каждом шагу:

Либо обернуть в try & catch

Это тоже давно известный подход. А есть ли еще способ? Стандартный ответ из мира ES5 – “нет, других вариантов нет”, можно конечно проверять наличие свойств через “.hasOwnProperty()”, но этот подход не ушел далеко от предыдущих примеров, поэтому им мы конечно заниматься не будем.

С приходом ES6 появился еще один интересный вариант, который и был реализован в библиотеке object-locator, которая позволяет тварить следующую магию:

Такой подход стал возможен с использованием нового конструктора Proxy(). Сама библиотека совсем маленькая и весь ее исходный код это только несколько строчек:

Proxy() позволяет “следить” за обращениями к свойствам объекта и переписывать их на лету. Разумеется такая магия возможна только нативными средствами, поэтому никакой babel не сможет переписать это в ES5. Печальный минус, но с другой стороны можно смелее смотреть в будущее.

Поделиться:

GitKraken – кроссплатформенный редактор для git’а

Я почти не пользуюсь GUI для работы с git’ом. Когда я только начинал программировть, то не было ничего интересного под linux, да меня в принципе сразу приучили к команддной строке, так что никакие интерфейсы не требовались. Потом появилась IDEA с ее интеграцией с гитом, и это мне отлично дополняло работу в командной строке.

Кстати, то что я постоянно работаю с гитом в командной строке видно по этому тегу – #git 😉

Однако, я все равно слежу за разными проектами, тем более если они пишутся на технологиях фронта. Так я наткнулся на GitKraken. Кроссплатформенный интерфейс для работы с гитом.

gitkraken

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

gitkraken-remote-branches

GitKraken написан на электроне и использует открытые библиотеки: NodeGit, libgit2. Именно это и позволяет ему достаточно просто поддерживать кросплатформенность.

Определенный минус программы в том, что она не бесплатная. То есть для личного использования, с некоторым ограничением функционала, она полностью бесплатна, а вот для профессиональной работы уже нет. Причем лицензия не дешевая – $60 в год. Конечно есть скидки, если заказываешь сразу несколько лицензий, но в моем случае пока совершенно нет смысла на это тратиться.

Поделиться: