Pull to refresh
179
0

Пользователь

Исчезающие фреймворки

Reading time 18 min
Views 47K
Почему мы используем фреймворки? Angular, React и Vue помогают нам строить сложные веб-приложения: структурировать код, управлять состоянием и разрабатывать сложные интерфейсы. За последнее десятилетие фреймворки стали стандартом. Дорогим стандартом. С тех пор как фреймворки вошли в обиход, JS сильно раздуло. Страниц весом несколько мегабайт становится больше, и существенная часть этого объема — фреймворк сам по себе. Кажется, это немного, но для пользователя критично — на телефоне или слабом интернете страница может даже не загрузиться. Это проблема.



Кроме лишнего веса у классических фреймворков много других минусов и они подходят не для всех проектов. Эти проблемы решены в «исчезающих фреймворках». Что это за новый тренд, почему это не «еще один JS-фреймворк», а хорошая идея и как таинственные фреймворки могут улучшить наши приложения, расскажет Павел Малышев.
Total votes 60: ↑51 and ↓9 +42
Comments 61

Что не так с GraphQL

Reading time 6 min
Views 53K

В последнее время GraphQL набирает всё большую популярность. Изящный синтаксис запросов, типизация и подписки.


Кажется: "вот оно — мы нашли идеальный язык обмена данными!"...


Я разрабатываю с использованием этого языка уже больше года, и скажу вам: всё далеко не так гладко. В GraphQL есть как просто неудобные моменты, так и действительно фундаментальные проблемы в самом дизайне языка.


С другой стороны, большая часть таких "дизайнерских ходов" была сделана не просто так — это было обусловлено теми или иными соображениями. По факту, GraphQL — не всем подойдет, и может оказаться совсем не тем инструментом, который вам нужен. Но обо всём по порядку.

Читать дальше →
Total votes 91: ↑88 and ↓3 +85
Comments 132

Внутри Quake: определение видимых поверхностей

Reading time 17 min
Views 34K
image

Ветеран программирования трёхмерной графики Майкл Абраш на примере разработки первого Quake рассказывает о необходимости творческого мышления в программировании.

Много лет назад я работал в теперь уже не существующей компании-производителе видеоадаптеров Video Seven. Там я помогал в разработке клона VGA. Мой коллега Том Уилсон, долгие месяцы круглосуточно работавший над разработкой VGA-чипа Video Seven, стремился сделать VGA как можно более быстрым, и был уверен, что его производительность оптимизирована почти по максимуму. Однако когда Том уже вносил в конструкцию чипа последние штрихи, до нас донеслись слухи, что наш конкурент Paradise достиг ещё большей производительности в своём разрабатываемом клоне, добавив в него FIFO.

На этом слухи заканчивались — мы не знали, ни что это за FIFO, ни насколько он помог, ничего другого. Тем не менее, Том, обычно приветливый и расслабленный человек, превратился в активного, одержимого фанатика со слишком большим процентом кофеина в крови. Исходя из этих крупиц информации, он пытался выяснить, что же удалось сделать Paradise. В конце концов он пришёл к выводу, что Paradise вероятно вставил FIFO-буфер записи между системной шиной и VGA, чтобы когда ЦП выполнял запись в видеопамять, записываемые данные сразу же попадали в FIFO, и это позволяло ЦП продолжать обработку, а не простаивать каждый раз, когда он выполнял запись в память дисплея.

У Тома не было ни логических элементов, ни достаточно времени на реализацию полного FIFO, но ему удалось реализовать FIFO глубиной в одну операцию, что позволяло процессору обгонять VGA-чип на одну операцию записи. Том не был уверен, что это даст хорошие результаты, но это было единственное, что он смог сделать, поэтому он реализовал эту систему и передал чип в производство.
Читать дальше →
Total votes 87: ↑87 and ↓0 +87
Comments 6

Пишем свой язык программирования, часть 3: Архитектура транслятора. Разбор языковых структур и математических выражений

Reading time 6 min
Views 11K
image

Введение


Приветствую вас, заинтересованные читающие разработчики на не важно каких языках, на которых я ориентирую эти статьи и чьи поддержку и мнения я ценю.

Для начала, по устоявшимся традициям, я приведу ссылки на предыдущие статьи:

Часть 1: пишем языковую ВМ
Часть 2: промежуточное представление программ

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

Также мне стоит разместить сразу ссылку на статью о проекте, который был написан мной ранее и на основе которого идет весь этот разбор полётов: Клац сюды. С ним пожалуй стоит ознакомиться первым делом.

И немного о проекте:

Небольшой сайт проекта
GitHub репозиторий

Ну и также скажу сразу, что все написано на Object Pascal, а именно — на FPC.

Итак, начнем.
Читать дальше →
Total votes 30: ↑23 and ↓7 +16
Comments 22

Как стать React разработчиком в 2018 году

Reading time 17 min
Views 77K


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

Адам Голаб, эксперт по React и JS, составил пошаговый учебный план, который поможет вам стать разработчиком с нуля либо укажет направление для дальнейшего повышения навыков в профессии.

План Адама представляет собой список основных пунктов, которые вам нужно изучить самостоятельно. Мы добавили описание, а в некоторых сложных моментах указали ссылки на дополнительные справочные материалы, с помощью которых вы получите ответ на вопрос: «Что я должен узнать как React-разработчик?».
Читать дальше →
Total votes 67: ↑62 and ↓5 +57
Comments 121

Что действительно случилось с Vista

Reading time 27 min
Views 29K
См. также: «Что действительно случилось с Vista: инсайдерская ретроспектива»

Я обычно пищу о вещах, которыми непосредственно занимался — или писал код, или управлял проектом. В этой статье я выбрал другой подход, чтобы написать о своём взгляде на глубинные причины фиаско Windows Vista (кодовое название Longhorn). Хотя это случилось более десяти лет назад, то был ключевой период по переходу на мобильные устройства — и те события вызвали долговременные последствия внутри Microsoft. Я нашёл, что многие попытки описать проблемы Microsoft, особенно в связи с переходом на мобильную платформу, неубедительны и не совпадают с моим пониманием того, что случилось. Статья в Vanity Fair «Потерянное десятилетие Microsoft» описывает бюрократическую гниль и подковёрную борьбу («жизнь… стала непрерывно жестокой») или культурную гниль из-за негативных последствий системы оценки рейтинга конкурентных стеков. Последующая статья в The Atlantic описывает ситуацию как классическую «дилемму инноватора».

Думаю, что ситуацию можно изложить иначе — с лучшей привязкой к конкретным фактам о проектах и истинными мотивами ключевых сторон. Это не попытка написать альтернативную историю — я понятия не имею, что бы случилось, не будь сделаны те ошибки. Но они определённо не помогли Microsoft пройти через этот переломный момент в компьютерной индустрии.
Читать дальше →
Total votes 38: ↑36 and ↓2 +34
Comments 62

Docker для Symfony 4 — от локалки до production

Reading time 15 min
Views 50K

Предистория


Одним прекрасным днём мне понадобилось развернуть среду разработки для своего проекта. Vagrant уже порядком поднадоел и хотелось иметь единую среду разработки для всех участников проекта которая была бы идентичной production серверу. Соответственно наслушавшись информации про хипстерский docker, я решил начать с ним разбираться. Далее я постараюсь максимально подробно описать все шаги начиная от установки докера на локалке вплоть до разворачивания продуктива на KVM.

Исходный стек технологий:

— Docker
— Symfony 4
— nginx
— php-fpm
— postgresql
— elasticsearch
— rabbitmq
— jenkins

Железо:

— ноутбук под ОС Ubuntu 16.04
— продакшн сервер на хостинге KVM

Почему кроме технологического стека я перечислил ещё и стек железа?

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

Первый и наверно самый важный аспект при начале работы с докером — это операционная система вашего ноутбука. Проще всего работать с докером именно на linux системах. Если вы работаете на Windows или Mac то у вас 100 % будут некоторые сложности, но эти сложности не будут являться критическими и при желании «нагуглить» как это исправляется не составит никаких проблем.

Второй вопрос — это хостинг. Зачем нужен Hosting именно с типом виртуализации KVM? Причина в том, что виртуализация VPS разительно отличается от KVM и установить сам docker на VPS у вас попросту не выйдет, так как VPS распределяет ресурсы сервера динамически.

Подитог: для самого быстрого старта на докере резоннее всего выбирать Ubuntu в качестве локальной операционки и KVM хостинг (либо собственный сервер). Далее рассказ пойдёт опираясь именно на эти две составляющие.
Читать дальше →
Total votes 29: ↑26 and ↓3 +23
Comments 46

Практическое руководство по использованию CSS Modules в React приложениях

Reading time 9 min
Views 157K
Привет Хабр! Предлагаю вашему вниманию свободный перевод статьи «Practical Guide to React and CSS Modules» от Tatu Tamminen.

В прошлом веб-разработчики тратили много времени и сил на создание повторно используемых компонентов. Оcобую проблему представлял собой CSS и природа его каскадов. Например, если разработчик создаёт компонент для отображения древовидной структуры, то как он может гарантировать, что CSS класс (например, .leaf), используемый в этом компоненте, не приведёт к побочным эффектам в других частях приложения? Были созданы различные методологии и соглашения, чтобы справиться с проблемами селекторов. БЭМ и SMACSS — широко используемые методологии, которые хорошо выполняют свои задачи, но в то же время далеко не идеальны. В этой статье рассказывается о недостатках таких методологий, основанных на соглашении об именах, о том, что представляют собой CSS Modules, и о том, как эти модули можно использовать в React приложении.
Читать дальше →
Total votes 8: ↑8 and ↓0 +8
Comments 18

Обновление строк на лету в мобильных приложениях: часть 2

Reading time 8 min
Views 5.1K


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

В недавней статье наш коллега Дмитрий Марущенко yojick рассказал о том, как доставлять динамические обновления переводов с сервера на мобильные устройства. В продолжение темы сегодня поговорим о том, как мы используем эти обновлённые переводы в наших приложениях.

Исторически сложилось, что все основные мобильные платформы «из коробки» обладают превосходной поддержкой локализации сообщений. В iOS, Android и Windows Phone приложение можно локализовать без всяких трудностей. Все средства для этого уже встроены в IDE: просто укажите нужный язык в списке поддерживаемых локализаций, введите текст на этом языке — и всё остальное за вас сделает IDE. Работает как часы. Но у этого подхода всё же есть недостатки.

Нашли в тексте ошибку? Хотите что-то перефразировать? Вам нравится экспериментировать с разными обращениями к разным целевым группам? Во всех случаях ответ один: придётся пересобирать приложение, снова выкладывать его в магазин, проходить проверку, получать одобрение, публиковать новую версию со всеми изменениями и ждать, чтобы пользователи обновили приложение на своих устройствах. Даже если все процедуры пройдут без заминок, это займёт дни или недели. А если пользователи не захотят обновляться? Или того хуже — не смогут этого сделать по техническим причинам вроде неподдерживаемой ОС? Тогда нежелательный текст в вашем приложении проживет гораздо дольше, чем хотелось бы.

Это довольно неудобно. К счастью, нам удалось решить эту проблему на разных платформах (с учётом особенностей каждой из них). И мы рады поделиться своим решением.
Читать дальше →
Total votes 29: ↑28 and ↓1 +27
Comments 2

Недокументированные приемы CSS

Reading time 8 min
Views 54K
Всем привет! Зовут меня Дмитрий Григоров. Работаю фронтедером в Райффайзенбанке в команде RBO PRO. Я расскажу и покажу вам, как можно творчески применять данные возможности CSS. В статье мы рассмотрим следующие темы:

  • Фоны и рамки;
  • Фигуры;
  • Визуальные эффекты.

Total votes 116: ↑114 and ↓2 +112
Comments 30

Перевод — Максимальное использование APK Analyzer

Reading time 4 min
Views 8.4K
Одним из моих любимых последних дополнений к Android Studio является APK Analyzer, который вы можете найти в главном меню в разделе «Сборка → Анализ APK».

image
Полезный совет: можно просто перетаскивать APK-файлы в редактор, чтобы открыть их

APK Analyzer позволяет вам открывать и проверять содержимое любого APK файла, который у вас есть на компьютере, который может быть создан из вашего проекта в Android Studio, либо получен с сервера сборки или другого хранилища. APK-файл не обязательно собирать (Build → Build APK) перед этим, и вам не нужен исходный код для этого APK.

Примечание. APK Analyzer лучше всего работает с release-версиями APK. Если вам нужно проанализировать debug-версию вашего приложения, убедитесь, что вы используете APK, который не предназначен для Instant run. Чтобы получить этот APK, соберите APK Build → Build APK. А еще можно узнать, открыли ли вы APK Instant Run, проверив наличие в архиве файла instant-run.zip.
Читать дальше →
Total votes 4: ↑4 and ↓0 +4
Comments 6

Вторая волна, накрывшая нас. Стандарт, который ждали

Reading time 10 min
Views 25K


Прежде, чем писать о волнах, поговорим об источнике, их породившем. В данном контексте это стандарт беспроводных локальных сетей 802.11ac, являющийся эволюционной итерацией предыдущего стандарта 802.11n, частично с ним совместимой. Частично, потому что, как мы узнаем позже, он работает только на частотном диапазоне 5ГГц. 802.11n, как известно, работал на обоих диапазонах — чистый лицензируемый 5ГГц, и диапазон 2,4 ГГц — никак не умирающий бодрячок, рассадник частотных помех и ограниченного фактора реюзинга (повторного переиспользования частотных каналов в пределах одной локации или беспроводного домена). Разработка стандарта в виде первых редакций началась в 2011 году, и тогда же пионеры WIFI-альянса стали выпускать первые чипсеты под новый беспроводной стандарт, стремясь не к прогрессу, но обогащению. Пройдя через муки рождения и становления, новый стандарт окончательно сформировался в 2014 году (новость о радостном событии можно прочитать здесь).
Читать дальше →
Total votes 23: ↑20 and ↓3 +17
Comments 19

Рефакторинг кода в обеденный перерыв: знакомство с сodemod-скриптами

Reading time 9 min
Views 22K


Думаю, что рефакторинг проекта – тема, близкая каждому разработчику. Зачастую мы сталкиваемся с проблемами, когда нам перестает хватать средств IDE и регулярных выражений, и тогда на помощь приходят средства вроде тех, что описаны в этом посте. Codemod скрипты – это очень мощный инструмент. После его освоения станет ясно, что ваш рефакторинг уже никогда уже не будет прежним. Поэтому я перевел этот пост для нашего хабраблога. Желаю приятного прочтения.


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


За последние годы JavaScript изменился до неузнаваемости. Развитие этого языка привело к тому, что была изменена даже простейшая задача по объявлению переменных. В ES6 появились let и const, стрелочные функции и множество других новшеств, каждое из которых приносит пользу разработчикам.


При создании и поддержке в рабочем состоянии кода, призванного выдерживать проверку временем, растёт нагрузка на разработчиков. Из этого поста вы узнаете, как можно автоматизировать задачи по широкомасштабному рефакторингу кода с использованием Codemod-скриптов и инструмента jscodeshift, что позволит вам, например, легко обновлять свой код для использования новых возможностей языка.

Total votes 64: ↑63 and ↓1 +62
Comments 5

Разработка браузерной онлайн-игры

Reading time 7 min
Views 37K
Привет, хабровчане. Меня зовут Евгений, по профессии я backend-разработчик и пишу я на языке c# в сегменте enterprise приложений. В этой публикации я хочу рассказать вам о своём опыте в не совсем профильной для меня сфере — разработке видеоигр, а конкретнее — о разработке браузерной онлайн-игры.

Я привык относить себя к тем везучим людям, у которых хобби совпадает с работой — я люблю разработку ПО. Поэтому для меня абсолютно нормально, вернувшись домой, вновь сесть за компьютер, открыть Visual Studio и продолжить что-то разрабатывать — отдых от этой деятельности мне не нужен. Проблема лишь одна — нужен проект, который мне интересен и который я смог бы осилить один в свободное время — по вечерам и в выходные дни.

Примерно год назад мне показали довольно популярную браузерную онлайн-игру — слитерио. После ознакомления у меня появилась навязчивая идея — мне захотелось сделать что-то похожее по подходу, но с чуть более продвинутым геймплеем. Спустя пару месяцев идея сформировалась в тему этой публикации — игру World of Frogs.



Суть игры — вы управляете лягушкой, можете нападать на других игроков, а также на управляемые компьютером объекты — мух, тараканов, болотных лягушек. Мухи не умеют нападать и умирают с одного удара, тараканы нападают лишь обороняясь, болотные же лягушки нападают как на мух, так и на игроков.

Побеждая врагов вы получаете опыт, растёте по уровням, изучаете новые способности и становитесь сильнее.

Основные пункты, от которых я отталкивался:

  1. С клиентской стороны никакого Flash, только html + js;
  2. Одна машина должна тянуть как можно больший онлайн игроков;
  3. Возможность горизонтального масштабирования;
  4. Низкий порог вхождения в игру и быстрый старт;
  5. Чуть более разнообразный геймплей, чем в слитерио;
  6. Красивый и запоминающийся домен;
Читать дальше →
Total votes 27: ↑23 and ↓4 +19
Comments 17

Тестирование или парсинг сайтов с динамическим дом и многое другое. Nightmare.js — ему все равно

Reading time 4 min
Views 21K
Эта статья не будет содержать много лирики, марали или вводных зачем и кому это может быть надо.

В двух словах:


1. Пакет можно использовать для тестирования сайтов.
2. Пакет можно использовать для парсинга данных.
3. Пакет можно использовать для автоматизации ввода данных на сайты.

Альтернативы:


Casper.js, phantom.js, watir и много кто еще, в гугле полно всех и вся. Почему я за nightmare.js:

  1. Простота использования.
  2. Полная поддержка html5, никаких конфликтов с сайтами.
  3. Расширяемый через экшены.

Структура библиотеки


Nightmare класс использует фреймворк electron, для каждой страницы создавая объект (BrowserWindow) который запускает браузер оболочку Chromium.

Принцип работы


  1. Nightmare инициализирует новое приложение electron с стартовой страницей, которую необходимо подвергнуть дальнейшей обработке.
  2. Перед загрузкой исследуемой страницы загружаются скрипты, которые позволяют поддерживать двустороннее взаимодействие программиста и страницы через серию эмиттеров.
  3. Nightmare предоставляет программисту набор апи (цепочки действий), позволяющие произвести любые манипуляции с сайтом и получить требуемые данные.
Читать дальше →
Total votes 17: ↑16 and ↓1 +15
Comments 19

Идиоматичный Redux: Дао Redux'а, Часть 1 — Реализация и Замысел

Reading time 20 min
Views 19K

Мысли о том, какие требования выдвигает Redux, как задумано использование Redux и что возможно с Redux.


Введение


Я потратил много времени, обсуждая онлайн паттерны использования Redux, была ли это помощь тем, кто изучает Redux в Reactiflux каналах, дискуссии о возможных изменениях в API библиотеки Redux на Github'е, или обсуждение различных аспектов Redux'а в комментариях к тредам на Reddit'е или HN (HackerNews). С течением времени, я выработал свое собственное мнение о том, что представляет собой хороший, идиоматичный Redux код, и я хотел бы поделиться некоторыми из этих мыслей. Несмотря на мой статус мейнтейнера Redux'а, это всего лишь мнения, но я предпочитаю думать, что они являются достаточно хорошими подходами.


Redux, в своей сути, невероятно простой паттерн. Он сохраняет значение, выполняет одну функцию для обновления значения когда это необходимо, и уведомляет любых подписчиков о том, что что-то изменилось.


Несмотря на эту простоту, или, возможно, вследствие ее, существует широкий спектр походов, мнений и взглядов о том, как использовать Redux. Многие из этих подходов широко расходятся с концепциями и примерами из документации.


В то же время, продолжаются жалобы на то, как Redux «заставляет» вас делать вещи определенными способами. Многие из этих жалоб на самом деле включают концепции связанные с тем, как Redux обычно используется, а не фактическими ограничениями наложенными самой библиотекой Redux. (Например, только в одном недавнем HN треде я видел жалобы: «слишком много шаблонного кода», «константы action'ов и action creator'ы не нужны», «я вынужден редактировать слишком много файлов чтобы добавить одну фичу», «почему я должен переключаться между файлами чтобы добраться до своей логики?», «термины и названия слишком сложны для изучения или запутанны», и слишком много других.)

Читать дальше →
Total votes 35: ↑33 and ↓2 +31
Comments 12

Как заработать на API Яндекс.Денег

Reading time 15 min
Views 19K


С вас — идеи монетизации стриминга и реализация на API Яндекс.Денег, с нас — аудитория, реклама и деньги.


Шестой день рождения API переводов мы решили отпраздновать антихакатоном, на котором любой желающий может попробовать свои силы в борьбе за джекпот. Помимо денежного приза в 100 000 рублей мы поделимся с победителем прибылью от переводов через Яндекс.Деньги.


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

Читать дальше →
Total votes 32: ↑24 and ↓8 +16
Comments 22

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

Reading time 15 min
Views 27K


Это третья статья из серии “Обзор исследований в области глубокого обучения” (Deep Learning Research Review) студента Калифорнийского университета в Лос-Анджелесе Адита Дешпанда (Adit Deshpande). Каждые две недели Адит публикует обзор и толкование исследований в определенной области глубинного обучения. В этот раз он сосредоточил свое внимание на применении глубокого обучения для обработки текстов на естественном языке.
Читать дальше →
Total votes 25: ↑24 and ↓1 +23
Comments 2

Как удалить свой IP из чёрного списка Gmail

Reading time 10 min
Views 57K

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

Проблемы с чёрным списком Gmail? Вы пришли по адресу.

Используя описанный ниже процесс, мы успешно разрешили почти все случаи включения в чёрный список Gmail, с которыми сталкивались.
Читать дальше →
Total votes 26: ↑25 and ↓1 +24
Comments 6

Information

Rating
Does not participate
Location
Россия
Registered
Activity