Pull to refresh
1
0

User

Send message

Топ-10 библиотек для React на GitHub

Reading time6 min
Views26K
Как искать хорошие инструменты для разработки веб-проектов? Один из способов поиска заключается в анализе статистики проектов из интересующей вас сферы на GitHub. Если, например, некая библиотека пользуется популярностью, то это, по меньшей мере, говорит о том, что на неё стоит взглянуть. Вполне возможно, что одна из таких библиотек окажется именно тем, что вам нужно.

image

Библиотека React, созданная Facebook, представляет собой мощный JavaScript-фреймворк, упрощающий работу программистов, занимающихся веб-разработкой. Однако, если вы работали какое-то время с React JS, вы согласитесь с тем, что для того, чтобы в полной мере раскрыть возможности этого фреймворка, не помешает ещё несколько дополнительных библиотек.

Автор материала, перевод которого мы сегодня публикуем, говорит о том, что из опыта знает о важности опенсорсных проектов в деле веб-разработки. Однако, из-за того, что на GitHub присутствует очень много библиотек для React, программисты оказываются избалованы выбором. Поэтому было бы неплохо сузить рассматриваемые варианты до буквально нескольких проектов. Перед вами — обзор первой десятки самых популярных библиотек для React с GitHub, ранжированных по количеству присвоенных им звёзд.
Читать дальше →
Total votes 29: ↑24 and ↓5+19
Comments7

Чем полезен мономорфизм?

Reading time14 min
Views32K


Выступления и посты в блогах о производительности JavaScript часто обращают внимание на важность мономорфного кода, однако обычно не дается внятного никакого объяснения, что такое мономорфизм/полиморфизм и почему это имеет значение. Даже мои собственные выступления зачастую сводятся к дихотомии в стиле Невероятного Халка: «ОДИН ТИП ХОРОШО! ДВА ТИП ПЛОХО!». Неудивительно, что когда люди обращаются ко мне за советом по производительности, чаще всего они просят объяснить, что на самом деле такое мономорфизм, откуда берется полиморфизм и что в нем плохого.

Ситуацию осложняет еще и то, что само слово «полиморфизм» имеет множество значений. В классическом объектно-ориентированном программировании полиморфизм связан с созданием дочерних классов, в которых можно переопределить поведение базового класса. Программисты, работающие с Haskell, вместо этого подумают о параметрическом полиморфизме. Однако полиморфизм, о котором предупреждают в докладах о производительности JavaScript – это полиморфизм вызовов функции.

Я объяснял этот механизм столькими различными путями, что наконец-то собрался и написал данную статью: теперь можно будет не импровизировать, а просто дать на нее ссылку.

Я также попробовал новый способ объяснять вещи – изображая взаимодействие составных частей виртуальной машины в виде коротких комиксов. Кроме того, данная статья не покрывает некоторые детали, которые я посчитал незначительными, излишними или не связанными напрямую.
Читать дальше →
Total votes 50: ↑49 and ↓1+48
Comments11

Создание игровых уровней: советы и хитрости (часть 2)

Reading time11 min
Views87K
Это вторая часть моей статьи с левел-дизайнерскими Tips and Tricks, которые разработчик может использовать, чтобы повысить общее качество своей игры. Это ни в коем случае не пошаговое руководство, а только сборник идей и полезных советов, основанных на моём личном опыте. Первая часть статьи была больше ориентирована на визуальную составляющую дизайна уровней, в этот же раз мы поговорим о ещё более фундаментальных вещах, начиная с прототипирования и заканчивая плэйтестингом с аналитикой.

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

Под капотом рендеринга навигационных данных в MAPS.ME

Reading time7 min
Views12K


Всем привет! Навигация в приложении MAPS.ME является одной из главных особенностей, на которые мы делаем упор. Недавно мы рассказали вам про пешеходную навигацию. Сегодня я хочу вам рассказать о том, как мы отображаем навигационные данные в MAPS.ME. Под навигационными данными я подразумеваю линии маршрута, стрелочки для отображения маневров и положение пользователя на маршруте. Данный пост не коснется ни алгоритмов построения маршрутов по данным OSM, ни алгоритмов выделения маневров, а исключительно рендеринга. Заинтересовавшихся прошу под кат.
Читать дальше →
Total votes 42: ↑28 and ↓14+14
Comments27

Nested routing в AngularJS

Reading time2 min
Views27K
image
В AngularJS, как известно, нет возможности штатными средствами сделать многоуровневую маршрутизацию, в которой перезагрузка нижних уровней маршрутов бы не приводила к пересозданию элементов верхнего уровня. Стандартный сервис $route инициализирует вид, контроллер и его scope целиком каждый раз, когда изменяется URL страницы.

Для решения этой проблемы написано несколько сторонних решений, включая известный ui-router. По ряду причин ни одно из решений для некоторых моих проектов не подошло, и я написал собственную библиотеку, которую здесь и представляю: angular-route-segment.

Что она позволяет делать?
Читать дальше →
Total votes 29: ↑27 and ↓2+25
Comments19

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

Reading time5 min
Views104K
Текущий месяц выдался удачным для разработчиков элементов питания. В различных источниках то и дело появляются новости о новинках в этой отрасли. Я решил собрать информацию о них и поделиться с вами. Под катом вас ждёт много различных технологий хранения энергии — от сахарных до квантовых.

Читать дальше →
Total votes 56: ↑51 and ↓5+46
Comments37

Коллективный разум ХабраХабра выбрал лучшие игры всех времен и народов на 2013 год

Reading time5 min
Views299K
Коллективный разум ХабраХабра выбралучшие игры всех времен и народов на 2013 год

Этим постом подвожу итог попытки определить лучшие игры всех времен и народов по версии Хабрахабра на 2013 год.

Отбор проводился по простым правилам:

− В этот пост каждый желающий вносил свою любимую игру,
− Каждый другой желающий голосовал за любимую игру.

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

Основные итоги


Всего в посте собралось за 5 дней больше 1 800 комментариев. Игр было указано около 400. Набрали больше 20 голосов 121 игра. При подсчете учитывались только плюсы (минусы не считал, ибо мы выбирали то, что нравится). Итак, встречайте десятку лучших:

  1. Герои Меча и Магии (259)
  2. Half Life (254)
  3. Fallout (211)
  4. Portal (182)
  5. Neverhood (174)
  6. DOOM (153)
  7. Civilization (151)
  8. StarCraft (150)
  9. Космические рейнджеры (128)
  10. Warcraft (127)

Читать дальше →
Total votes 219: ↑191 and ↓28+163
Comments208

Непросто выбрать из простого

Reading time2 min
Views4.6K
Дамы и Господа! Я к вам одновременно с вопросом и с небольшим рисерчем. У меня следующая задача: купить юной племяннице планшет, который бы сочетал несочетаемое несколько качеств одновременно. Нужно, чтобы 1) он был более или менее мощным, 2) работал на Android не ниже 3.x (т.к. привыкла к мобилке на роботе), 3) был не страшным внешне, 4) стоил бы не дороже 10 килорублей. Больше платить не вижу смысла, т.к. школа, дети и т.п. Заранее предупрежу, что советы вроде «маленьким девочкам не нужны планшеты» не годятся :)



Я немного погуглил и выяснил, что за такую цену сейчас можно купить только три планшета, соответствующих условиям: Explay Informer 701, TeXet TM-7025 и Archos 80 G9 Turbo. Плюс еще скоро должен появиться Prestigio MultiPad 9.7 Pro.
Читать дальше →
Total votes 48: ↑21 and ↓27-6
Comments46

Создание игры на ваших глазах — часть 7: 2D-анимации в Unity («как во флэше»)

Reading time6 min
Views96K
В этой статье поговорим о 2D анимациях в Unity. Я расскажу о своем опыте работы с родными анимациями в юнити, о том, насколько тайм-лайны похожи на флэшевские, об управлении анимациями, event'ах, вложенности, и о том, как художник справляется с анимированием.

Для начала, немного теории.

В Unity есть две сущности:

1. Анимация (то, что отображается в окно «Animation»)
2. Mechanim дерево анимаций (то, что отображается в окне «Animator»).



Ниже я немного расскажу, что это такое и как нам может приходиться (или не пригодиться).
Читать дальше →
Total votes 29: ↑26 and ↓3+23
Comments15

[кейс] Как навести порядок снизу: за 90 дней от бардака к проектному офису

Reading time2 min
Views32K
Не так давно мы проводили опрос по проблемам в проектах для нашей новой программы “Формула управления проектами”. Получили более 600 ответов, которые распределились в темы работы с заказчиком, оценок работ, сроков, коммуникаций и прочих безусловно нужных проектных вещей.

Интересным оказался эмоциональный настрой многих комментариев. Возникло четкое ощущение, что многие коллеги недовольны своей действительностью. Но при этом не знают, как ее изменить в лучшую сторону — и крайне недовольны этим. Отчего текущая действительность описывается достаточно красочными эпитетами. Эту же картину косвенно подтвердил и недавний опрос по методологиям.

Мы пригласили в студию нашего эксперта по управлению проектами Ивана Селиховкина (selikhovkin) и попросили поделиться историей наведения порядка. В итоге Иван рассказал историю о том, как он с коллегами по шагам за 90 дней привел компанию от хаоса к работающему проектному офису. Находясь при этом не на должности ТОП-менеджера. Все изменения шли СНИЗУ.



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

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

P.S. Если поможете нам с опросом по проблемам проектов — будем отдельно благодарны.

P.P.S. Краткое содержание истории по шагам — под катом:

По шагам: за 90 дней от хаоса к порядку
Total votes 36: ↑27 and ↓9+18
Comments9

Архитектура простой 2D игры на Unity3D. План, факт и работа над ошибками

Reading time12 min
Views104K
Недавно команда Whistling Kite Framework выпустила в релиз очередную игру, на этот раз — Змейку, написанную на Unity3D. Как и в большинстве игровых проектов, при решении вопроса о том, насколько детально нужно проектировать приложение, критическим фактором было время. В нашем случае причина проста: т.к. разработка велась в свободное от основной работы время, то идеальный подход к проектированию отложил бы релиз ещё на год. Поэтому, составив первоначальное разделение на модули, мы закончили проектирование и приступили к разработке. Под катом описание того, что из этого получилось, а также пара уроков, которые я вынес для себя.


Осторожно, картинки!
Читать дальше →
Total votes 31: ↑25 and ↓6+19
Comments27

Еще один дайджест (теперь Go)

Reading time4 min
Views19K
image Привет всем фанатам и интересующимся Go. Это 6-й выпуск дайджеста ссылок и новостей о набирающем популярность языке. Не сочтите за наглую попытку пропиарить ресурс, на котором я регулярно публикую новости все о том же Go. Все последующие выпуски «тулзовин и хреновин» будут публиковаться именно на 4gophers.com. Кроме того, по просьбам трудящихся, теперь есть подписка на рассылку.

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

Читать дальше →
Total votes 54: ↑50 and ↓4+46
Comments6

Вышел COLT 2.0 с поддержкой Angular.js, node-webkit

Reading time4 min
Views7.3K
Сегодня мы выпускаем новую версию нашего продукта. COLT 2.0.
Данный релиз будет интересен JavaScript разработчикам.

Главные новости. Коротко


Поддержка node-webkit, поддержка работы с удаленными или локальными серверами (live-proxy). Консольная версия COLT (запуск без UI на сервере). Поддержка Angular. Новый механизм HTML доставки. Улучшение работы с Sublime Text (JSDocs и другое). Улучшение производительности. Новый интерфейс на node-webkit. Улучшена поддержка Linux. Новый демо режим (как в Sublime). Значительное уменьшение размера дистрибьютива.
Читать дальше →
Total votes 26: ↑23 and ↓3+20
Comments19

Быстрая, экономная, устойчивая…

Reading time10 min
Views60K

Если вам понадобится алгоритм сортировки массива, который:
  • Работал бы гарантированно за O(N*log(N)) операций (обменов и сравнений);
  • Требовал бы O(1) дополнительной памяти;
  • Был бы устойчивым (то есть, не менял порядок элементов с одинаковыми ключами)

то вам, скорее всего, предложат ограничиться любыми двумя из этих трёх пунктов. И, в зависимости от вашего выбора, вы получите, например, либо сортировку слиянием (требует O(N) дополнительной памяти), либо пирамидальную сортировку (неустойчив), либо сортировку пузырьком (работает за O(N2)). Если вы ослабите требование на память до O(log(N)) («на рекурсию»), то для вас найдётся алгоритм со сложностью O(N*(log(N)2) — довольно малоизвестный, хотя именно его версия используется в реализации метода std::stable_sort().

На вопрос, можно ли добиться выполнения одновременно всех трёх условий, большинство скажет «вряд ли». Википедия о таких алгоритмах не знает. Среди программистов ходят слухи, что вроде бы, что-то такое существует. Некоторые говорят, что есть «устойчивая быстрая сортировка» — но у той реализации, которую я видел, сложность была всё те же O(N*(log(N)2) (по таймеру). И только в одном обсуждении на StackOverflow дали ссылку на статью B-C. Huang и M. A. Langston, Fast Stable Merging and Sorting in Constant Extra Space (1989-1992), в которой описан алгоритм со всеми тремя свойствами.

Так что же это за алгоритм?
Total votes 155: ↑150 and ↓5+145
Comments29

60 FPS? Легко! pointer-events:none!

Reading time2 min
Views98K


Вы, наверное, уже читали интересную статью о том, как можно отключать эффекты :hover при скроле – это позволяет здорово сохранить отзывчивость сайта, но имеет один недостаток – вам приходится опираться на один общий класс, и это плохо.

.hover .element:hover {
  box-shadow: 1px 1px 1px #000;
}
Читать дальше →
Total votes 144: ↑138 and ↓6+132
Comments58

Охотимся за утечками памяти в Node.js (1-я из 12 статей о Node.js от команды Mozilla Identity)

Reading time7 min
Views27K
От переводчика: Это первая статья из цикла о Node.js от команды Mozilla Identity, которая занимается проектом Persona. Как клиентская, так и серверная часть Persona написаны на JavaScript. В ходе работы команда проекта создала несколько инструментов на все случаи жизни — от локализации до отладки, управления зависимостями и многого другого. В этой серии статей разработчики Mozilla делятся с сообществом своим опытом и этими инструментами, которые пригодятся любому, кто пишет высоконагруженный сервис на Node.js.

Первая статья цикла посвящена распространённой проблеме Node.js — утечкам памяти, особенностям утечек в высоконагруженных проектах и библиотеке node-memwatch, которая помогает найти и устранить такие утечки в Node.




Зачем заморачиваться?


Вы можете спросить, зачем вообще отслеживать утечки памяти? Неужели нет более важных дел? Почему бы просто не перезапускать процесс время от времени, или просто добавить памяти на сервер? Есть три причины, по которым устранять утечки всё-таки важно:

  1. Возможно, вы не сильно переживаете об утечках памяти, но этого нельзя сказать о V8 (движок JavaScript на котором работает Node). Чем больше памяти занято, тем активнее работает сборщик мусора, замедляя ваше приложение. Так что в Node утечки напрямую вредят производительности.
  2. Утечки могут привести к другим проблемам. Протекающий код может блокировать ограниченные ресурсы. У вас могут закончиться файловые дескрипторы или вы вдруг не сможете открыть ещё одно соединение с БД. Такие проблемы могут возникнуть задолго до того, как кончится память, но обрушат ваше приложение ничуть не хуже.
  3. Рано или поздно ваше приложение упадёт. И это наверняка случится во время наплыва посетителей. Вас все засмеют и будут писать про вас гадости на Hacker News.

Откуда доносится звук падающих капель?
Total votes 63: ↑61 and ↓2+59
Comments1

Использование AI и утилит при разработке игр жанра Tower Defense

Reading time6 min
Views35K
Эта статья продолжает тему применения математического моделирования при разработки игр в жанре ТD. В прошлых статьях рассматривались базовые параметры основных объектов игры – крипов и башен, и их зависимость от времени раунда и размера карты, а также принципы построения внутриигровой экономики, которая не привносила бы дисбаланс на тех или иных этапах игры.

Дальнейшее развитие этой темы напрашивалось само собой: если известны основные алгоритмы, которые позволяют задавать граничные рамки игровых параметров, то эти же алгоритмы можно применять для создания AI, который позволил бы хотя бы частично заменить игрока и проверить геймплей «вживую».


Читать дальше →
Total votes 41: ↑31 and ↓10+21
Comments2

Http запросы — мы все это делаем неправильно

Reading time3 min
Views189K
В проекте, над которым я работаю, мы используем огромное количество сторонних библиотек. Многие из них — адаптеры для различных сервисов. Что их объединяет, это то, что они работают с сетью. Json поверх http, soap поверх http, какие-то свои протоколы поверх http. Т.е. все так или иначе используют http. И как ни удивительно, мало кто из них пользуется преимуществами его последней версии. Я не поленился заглянуть в википедию, прошло ровно 14 лет как была принята спецификация http 1.1. И потому я решил обратиться с призывом:
image

Да, речь пойдет о keep alive. Суть в том, что, начиная с http 1.1, клиент и сервер могут договориться не закрывать установленное tcp-соединение после завершения запроса, а переиспользовать его для следующих запросов. Это нужно потому, что на установку соединения требуется время. Иногда это время больше, чем время самого запроса. И если все серверы уже давным-давно такую возможность поддерживают, а все браузеры и большинство других клиентов её используют, то у разработчиков различных библиотек для популярных языков программирования здесь почему-то пробел.
Читать дальше →
Total votes 167: ↑142 and ↓25+117
Comments169

Pixi.js — 2D движок с прозрачной поддержкой WebGL

Reading time1 min
Views81K
Pixi.js позволяет использовать мощь WebGL для рендеринга 2D-сцен, совершенно не вникая в подробности реализации, более того, он умеет самостоятельно определять наличие поддержки WebGL и переключаться между способами рендеринга. В отсутствие WebGL рендеринг осуществляется средствами canvas. Кроме того в Pixi.js реализован граф сцены, поддержка текстур и спрайтов, чуть больше недели назад в нём появилась поддержка интерактивности — на спрайты можно повесить обработчики событий мыши и тачскрина.
Читать дальше →
Total votes 64: ↑61 and ↓3+58
Comments48

GamePlay 3D Framework — лёгкий старт в кроссплатформенную разработку 3D игр

Reading time13 min
Views32K
Доброе время суток, уважаемые хабражители!

Прослушав курс по компьютерной графике в университете и вдоволь наигравшись с OpenGL, я решил, что пора бы уже двинуться дальше и попробовать себя в разработке игр. Писать с нуля свой движок, прямо скажем, не очень-то хотелось. Главной целью было скорее посмотреть как это делается, вынести уроки и может быть создать что-то на базе выбранного движка. Беглый поиск показал, что с открытыми кроссплатформенными движками немного туго. У одного проблемы с Linux, Windows или Mac OS, у другого со свежими версиями мобильных ОС, третий почти заброшен… Но я-таки наткнулся на один очень привлекательный экземпляр, о котором и хочу поведать в этой статье.

gameplay

Имя этому фреймворку — GamePlay 3D. Информации о нём на просторах интернета не очень много, чего уж говорить про рунет. Это open source фреймворк написанный на C++ для программирования игр на C++ со всеми вытекающими из этого достоинствами и недостатками. Авторы проекта позиционируют его как универсальный инструмент, эдакий аналог cocos2d для 3D игр. Чтобы начать писать на GamePlay 3D не нужно обладать глубокими знаниями OpenGL, GLSL или математики 3D графики, однако все мы понимаем, что для достижения хорошего результата от этого никуда не деться. Подробности и небольшой пример для старта под катом.

Читать дальше →
Total votes 31: ↑29 and ↓2+27
Comments13
1

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity