Как стать автором
Обновить

Компания NIX временно не ведёт блог на Хабре

Сначала показывать

Анонс митапа ThinkPHP #16 в Харькове

Время на прочтение2 мин
Количество просмотров2.1K


Ты — не ты, когда голоден! Мы же не дадим вам проголодаться, потому что в меню ThinkPHP #16 будут огро-оо-омные порции полезной информации, новых знакомств, вопросов и ответов, ну и компот. Да и среда — это же маленькая пятница :).
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии0

Как создать нейросеть всего из 30 строк JavaScript-кода

Время на прочтение4 мин
Количество просмотров26K


Перевод How to create a Neural Network in JavaScript in only 30 lines of code.

В этой статье мы рассмотрим, как можно создать и обучить нейросеть с помощью библиотеки Synaptic.js, позволяющей проводить глубокое обучение в связке Node.js с браузером. Давайте создадим простейшую нейросеть, решающую XOR-уравнение. Также можете изучить специально написанный интерактивный туториал.
Читать дальше →
Всего голосов 36: ↑24 и ↓12+12
Комментарии11

Node.js + face-recognition.js: простое и надёжное распознавание лиц с помощью глубокого обучения

Время на прочтение5 мин
Количество просмотров27K


Перевод статьи Node.js + face-recognition.js: Simple and Robust Face Recognition using Deep Learning.

В этой статье мы расскажем, как реализовать надёжную систему распознавания лиц с использованием face-recognition.js. Мы искали подходящую Node.js-библиотеку, которая умела бы аккуратно распознавать лица, но ничего не нашли. Пришлось писать самостоятельно!

В этом npm-пакете используется библиотека dlib, предоставляющая Node.js-биндинги для очень хорошо зарекомендовавших себя инструментов распознавания внутри этой библиотеки. Dlib использует методы глубокого обучения и поставляется с уже обученными моделями, которые продемонстрировали точность распознавания на уровне 99,38% при прогоне бенчмарка LFW.
Всего голосов 24: ↑24 и ↓0+24
Комментарии5

Удаление фона с помощью глубокого обучения

Время на прочтение14 мин
Количество просмотров20K


Перевод Background removal with deep learning.

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

Несколько месяцев назад, после прохождения отличного курса Fast.AI, звезды совпали, и у нас появилась такая возможность. Современные достижения в технологиях глубокого обучения позволили осуществить многое из того, что раньше казалось невозможным, появились новые инструменты, которые сделали процесс внедрения более доступным, чем когда-либо.

Мы поставили перед собой следующие цели:

  1. Улучшить наши навыки работы с глубоким обучением.
  2. Совершенствовать наши навыки внедрения продуктов, основанных на ИИ.
  3. Создать полезный продукт с перспективами на рынке.
  4. Весело провести время (и помочь весело провести время нашим пользователям).
  5. Обменяться опытом.
Читать дальше →
Всего голосов 29: ↑25 и ↓4+21
Комментарии5

Анатомия тысячи шрифтов

Время на прочтение10 мин
Количество просмотров31K


Перевод статьи The anatomy of a thousand typefaces.

Даже годы спустя после выхода фильма Avatar остаётся кое-что, с чем не может справиться даже Райан Гослинг — использование шрифта Papyrus в логотипе фильма. В пародии, снятой Saturday Night Live, дизайнер шрифтов открывает меню, перебирает шрифты и случайным образом выбирает Papyrus.


Главная проблема выбора шрифтов — одновременно слишком много и слишком мало вариантов.

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

С другой стороны, библиотеки веб-шрифтов с сотнями и тысячами наименований поражают изобилием, что иногда приводит к парадоксальным выборам шрифтов.
Всего голосов 31: ↑31 и ↓0+31
Комментарии7

Как создать свой первый безопасный веб-сервер, готовый к продуктиву

Время на прочтение4 мин
Количество просмотров42K
В этом руководстве мы рассмотрим некоторые из лучших методик создания своего первого безопасного сервера. Мы пошагово разберём весь процесс, и в результате получим сервер, полностью готовый к использованию в продуктиве для вашего приложения. Конечно, это не исчерпывающее руководство. Безопасный сервер — это постоянный поиск новых ресурсов и бесконечные улучшения. Но с этим материалом вы можете начать создавать собственную инфраструктуру.

Для прогона тестов мы будем использовать Amazon EC2, но можно взять и Amazon LightSail, Digital Ocean, Vultr или другой сервис. Все они конфигурируются одинаково, так что выбирайте тот, который вам по душе.


Читать дальше →
Всего голосов 30: ↑18 и ↓12+6
Комментарии12

Присвоение имён: руководство для программиста

Время на прочтение4 мин
Количество просмотров16K
Перевод Naming 101: Programmer’s Guide on How to Name Things.

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

Хорошие имена делают код лучше и чище. Они помогают интуитивно определять, за что отвечает каждая часть кода. В будущем другим разработчикам будет легче читать ваш код, да и вам самим тоже.

Ниже объясним важность хороших правил присвоения имён и поделимся полезными советами.
Читать дальше →
Всего голосов 25: ↑18 и ↓7+11
Комментарии5

Структура и модель выполнения .NET Core приложений

Время на прочтение15 мин
Количество просмотров53K
В этой статье я рассмотрю компоненты платформы .NET Core 2.0, необходимые для загрузки и выполнения .NET Core-приложений, а также артефакты для двух возможных типов развертывания.

Текст объемный и рассчитан на:

  • начинающих разработчиков, которые только знакомятся с платформой .NET Core;
  • опытных разработчиков, выполняющих роль DevOps-инженеров в produсtion-окружении.

В статье не упоминается процесс создания приложений при помощи SDK (dotnet CLI), однако эта информация будет полезной для понимания, как работает SDK, а именно её основной компонент (ядро) — «драйвер» dotnet.dll, поскольку эта библиотека является управляемой сборкой и выполняется на .NET Core.

Примеры процессов выполнения описаны для ОС Windows, но работают по тому же принципу и на других ОС (с учетом различных расширений исполняемых файлов и нативных библиотек).
Читать дальше →
Всего голосов 42: ↑41 и ↓1+40
Комментарии10

Анонс встречи WordPress Meetup #4 в Харькове

Время на прочтение1 мин
Количество просмотров1.6K

Приглашаем на четвертую встречу WordPress Meetup! В программе 2 интересных доклада, блок вопросов и ответов с нашими докладчиками, возможность поделиться опытом и научиться чему-то новому, а также с уютом и пользой провести пятницу в компании единомышленников.
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

Анонс митапа Sync.NET #5 в Харькове

Время на прочтение2 мин
Количество просмотров1.5K


Приглашаем на пятую встречу Sync.NET-комьюнити! В программе крутые доклады, вкусные кофе-брейки, общение с нашими докладчиками — всё, чтобы провести первую пятницу зимы с пользой и хорошим настроением.
Читать дальше →
Всего голосов 4: ↑4 и ↓0+4
Комментарии3

Чем отличаются JavaScript и ECMAScript?

Время на прочтение6 мин
Количество просмотров74K
Перевод What’s the difference between JavaScript and ECMAScript?

Как-то мы попробовали гуглить «различие между JavaScript и ECMAScript».

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

«ECMAScript — это стандарт».
«JavaScript — это стандарт».
«ECMAScript — это спецификация».
«JavaScript — это реализация стандарта ECMAScript».
«ECMAScript — стандартизованный JavaScript».
«ECMAScript — это язык».
«JavaScript — это диалект ECMAScript».
«ECMAScript — это JavaScript».


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

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

Ну что, погнали.
Читать дальше →
Всего голосов 47: ↑44 и ↓3+41
Комментарии67

Раскрашиваем чёрно-белую фотографию с помощью нейросети из 100 строк кода

Время на прочтение22 мин
Количество просмотров77K

Перевод статьи Colorizing B&W Photos with Neural Networks.

Не так давно Амир Авни с помощью нейросетей затроллил на Reddit ветку /r/Colorization, где собираются люди, увлекающиеся раскрашиванием вручную в Photoshop исторических чёрно-белых изображений. Все были изумлены качеством работы нейросети. То, на что уходит до месяца работы вручную, можно сделать за несколько секунд.

Давайте воспроизведем и задокументируем процесс обработки изображений Амира. Для начала посмотрите на некоторые достижения и неудачи (в самом низу — последняя версия).
Всего голосов 62: ↑61 и ↓1+60
Комментарии35

Анонс митапа ThinkJava #6, Харьков

Время на прочтение1 мин
Количество просмотров2K
Приглашаем всех Java-разработчиков на шестую встречу ThinkJava-комьюнити! Будем говорить о разработке реактивных приложений, а перерывах — общаться на кофе-брейках и делиться впечатлениями об услышанном и собственным опытом.
Читать дальше →
Всего голосов 15: ↑13 и ↓2+11
Комментарии0

Проектируем микросервисную архитектуру с учётом сбоев

Время на прочтение10 мин
Количество просмотров17K
Перевод статьи Designing a Microservices Architecture for Failure.

Микросервисная архитектура благодаря точно определённым границам сервисов позволяет изолировать сбои. Однако, как и в любой распределённой системе, здесь выше вероятность проблем на уровне сети, оборудования или приложений. Как следствие зависимости сервисов, любой компонент может оказаться временно недоступен для пользователей. Чтобы минимизировать влияние частичных сбоев, нам нужно построить устойчивые к ним сервисы, которые могут корректно реагировать на определённые типы проблем.

В этой статье представлены самые распространённые методики и архитектурные шаблоны для построения и оперирования высокодоступной микросервисной системой.
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии0

Анонс митапа ThinkPHP #15 в Харькове

Время на прочтение1 мин
Количество просмотров2.1K

Приглашаем всех на уже пятнадцатую встречу ThinkPHP-сообщества! Актуальные темы, насыщенные доклады, оживленные кофе-брейки — идеальная атмосфера для того, чтобы поговорить о тенденциях современной веб-разработки и круто провести пятницу.
Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии3

Вред маленьких функций

Время на прочтение15 мин
Количество просмотров40K

Перевод статьи Синди Шридхаран.

В этой статье автор собирается:

  • Пролить свет на некоторые предполагаемые преимущества маленьких функций.
  • Объяснить, почему некоторые из преимуществ вовсе не такие радужные, как рекламируется.
  • Объяснить, почему маленькие функции иногда контрпродуктивны.
  • Объяснить, в каких случаях маленькие функции действительно полезны.
Читать дальше →
Всего голосов 60: ↑47 и ↓13+34
Комментарии195

Мьютексы и захват замыканиями в Swift

Время на прочтение11 мин
Количество просмотров17K


Перевод статьи Мэтта Галлагера.

В этой статье речь пойдёт об отсутствии потокового выполнения (threading) и инструментов синхронизации потоков в Swift. Мы обсудим предложение о внедрении «многопоточности» (concurrency) в Swift и то, как до появления этой возможности потоковое выполнение в Swift будет подразумевать использование традиционных мьютексов и общего изменяемого состояния (shared mutable state).

Использовать мьютекс в Swift не особенно сложно, но на этом фоне хотелось бы выделить тонкие нюансы производительности в Swift — динамическое выделение памяти во время захвата замыканиями. Мы хотим, чтобы наш мьютекс был быстрым, но передача замыкания для исполнения внутри мьютекса может снизить производительность в 10 раз из-за дополнительных расходов памяти. Давайте рассмотрим несколько способов решения данной проблемы.
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии0

10 шагов по решению задач в программировании

Время на прочтение8 мин
Количество просмотров87K


Перевод статьи Валинды Чен.

Это сборник советов для разработчиков-новичков, которые смотрят на пустой экран и не знают, с чего начать. Нередко можно услышать от молодых разработчиков, работающих над решением каких-то задач в программировании, что они не уверены, за что нужно хвататься. Ты понимаешь саму задачу, логику, основы синтаксиса и так далее. Если ты видишь чей-то код, или тебе кто-то помогает, то можно всё сделать самому. Но бывает, что ты не уверен в своих силах, или поначалу тебе трудно реализовать свои мысли в коде, несмотря на то, что ты знаешь синтаксис и логику. Под катом — несколько советов по решению этой проблемы, которые помогут вам в повседневной работе.
Читать дальше →
Всего голосов 21: ↑19 и ↓2+17
Комментарии5

Ускорьте ваш сайт с помощью машинного обучения

Время на прочтение6 мин
Количество просмотров19K

Многие из нас постоянно думают о производительности веб-приложений: добиваются 60 FPS на медленных телефонах, загружают свои ассеты в идеальном порядке, кэшируют всё что можно, и много чего ещё.

Но не является ли такое представление о производительности веб-приложений слишком ограниченным? С позиции пользователя все эти действия — лишь крошечный кусок большого пирога производительности.

В этой статье мы пройдёмся по всем этапам использования сайта, как если бы это делал обычный человек, измерив длительность каждого из них. И особое внимание уделим конкретному шагу на одном конкретном сайте, который может быть ещё больше оптимизирован. Хочется верить, что решение (которым будет машинное обучение) может быть использовано во многих различных случаях на разных сайтах.
Читать дальше →
Всего голосов 23: ↑20 и ↓3+17
Комментарии6

Дизайн для пальцев, касаний и людей

Время на прочтение13 мин
Количество просмотров13K


Перевод статьи Стивена Хубера.

Многие читают и ссылаются на статью 2013 года “How Do Users Really Hold Mobile Devices?”. Но с тех пор было проведено немало исследований и экспериментов по использованию разных методик в реальных продуктах, написано много других статей. За прошедшие годы стало больше известно о том, как люди удерживают свои смартфоны и планшеты, как они взаимодействуют с ними тактильно. И всех этих, зачастую неожиданных данных, нет в старой статье 2013 года. И это её главная проблема. В ней были сделаны предположения, основанные на наблюдениях за использованием десктопов, на стандартах для более старых способов взаимодействия, а также на казусных ситуациях и неверно интерпретированных данных. Но благодаря дальнейшим исследованиям и более качественному анализу удалось отвергнуть ошибочные предположения и докопаться до истины.

Сегодня многие ещё ссылаются на устаревшие, менее точные статьи по этой теме. Иногда читатели комбинируют одни неактуальные данные с другими, и на основании этого приходят к ошибочным выводам. Данная статья призвана положить этому конец и предложить обновлённое представление о том, как люди взаимодействуют с сенсорными экранами, и как вы можете использовать эту информацию для разработки более качественного продукта.
Читать дальше →
Всего голосов 22: ↑21 и ↓1+20
Комментарии8