Как стать автором
Обновить
203
0
Артур Заяц @zag2art

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

Отправить сообщение

Гарвардский курс по основам программирования CS50 теперь на русском

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

Предыстория: кто мы и как дошли до жизни такой

Мы — команда проекта JavaRush. А JavaRush, кто еще не в курсе, — это полностью автоматизированный обучающий онлайн-курс по Java. Когда-то давно, именно благодаря поддержке хаброюзеров и статьям на хабре, JavaRush и появился. В то время мы собирались переучить на программистов миллион человек.
Читать дальше →
Всего голосов 47: ↑47 и ↓0+47
Комментарии38

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

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


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

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

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

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

Az.js: JavaScript-библиотека для обработки текстов на русском языке

Время на прочтение8 мин
Количество просмотров28K
Как чуден и глубок русский курлык
Генератор постов

Обработка естественного языка (natural language processing, NLP) — тема, на мой взгляд, очень интересная. Во-первых, задачи тут чисто алгоритмические: на вход принимаем совершенно примитивный объект, строчку, а извлечь пытаемся вложенный в него смысл (ну или хотя бы частичку смысла). Во-вторых, необязательно быть профессиональным лингвистом, чтобы решать эти задачи: достаточно знать родной язык на более-менее приличном уровне и любить его.

А ещё с небольшими затратами можно сделать какого-нибудь бестолкового чат-бота — или, как вот я, генератор постов на основе того, что вы писали на своей страничке в соцсети. Возможно, кто-то из вас уже видел это приложение — оно довольно глупое, чаще всего выдает бессмысленный и бессвязный текст, но изредка всё же дает повод улыбнуться.

Бессвязность текстов в нынешней версии «Генератора» вызвана тем, что на самом деле никакого анализа он производить не умеет. Просто в одних случаях «предсказывает» продолжение предложения по собранным биграммам, а в других — заменяет в готовом предложении некоторые слова на другие, которые заканчиваются похоже. Вот и вся начинка.

Конечно, хочется сделать что-нибудь поинтереснее. Беда в том, что модные сейчас нейросети не очень-то применимы здесь: им нужно много ресурсов, большую обучающую выборку, а в браузере у пользователя соцсети всего этого нет. Поэтому я решил изучить вопрос работы с текстами с помощью алгоритмов. К сожалению, готовых инструментов для работы с русским языком на JavaScript найти не удалось, и я решил сделать свой маленький велосипед.
Читать дальше →
Всего голосов 54: ↑54 и ↓0+54
Комментарии30

Математика на пальцах: мендосинский двигатель и теорема Ирншоу

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

Постановка задачи


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

Вот на этом видео крайне подробно описан (на русском языке) принцип работы:



Но ещё больше самого двигателя мне показалась любопытной следующая вещь. В описании этого видео Дмитрий Коржевский написал следующую вещь: «Боковую опору заменить магнитом НЕВОЗМОЖНО!!! Не задавайте больше этот вопрос!»

Читать дальше →
Всего голосов 98: ↑97 и ↓1+96
Комментарии226

Построение суффиксного дерева: алгоритм Укконена

Время на прочтение8 мин
Количество просмотров37K
По просьбам трудящихся выкладываю описание и доказательство алгоритма Укконена.

Описание задачи


Требуется построить суффиксное дерево для данной строки за разумное время. Суффиксное дерево — это бор, состоящий из всех суффиксов данной строки. Если в кратце, бор — подвешенное дерево с символами на ребрах, реализация структуры данных для хранения строк. Строки получаются прохождением из корня по рёбрам, записывая соответствующие им символы, до терминальной вершины.

Бор для произвольного набора строк строится за O (суммы длин этих строк). Очевидно, что сумма длин всех суффиксов строки пропорциональна квадрату длины самой строки. Таким образом, построение суффиксного дерева тривиальным алгоритмом работает за O(N2). И тут возникает резонный вопрос, можно ли построить суффиксное дерево быстрее?

На самом деле можно.
Реализация и доказательство алгоритма под катом
Всего голосов 39: ↑38 и ↓1+37
Комментарии25

Центр сертификации Let's Encrypt выдал миллион бесплатных сертификатов

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


8 марта 2016 года в 9:04 GMT центр сертификации Let's Encrypt выдал миллионный TLS-сертификат.

Let's Encrypt – некоммерческая инициатива организации Mozilla и Фонда электронных рубежей (EFF), созданная на благо сообщества. Владелец любого домена может получить здесь сертификат TLS совершенно бесплатно и очень просто его установить (пошаговая инструкция на Хабре). Закрытое бета-тестирование началось 12 сентября 2015 года, а с 3 декабря сертификаты выдают всем желающим без предварительной регистрации и инвайтов.

Это потрясающий успех проекта: для выдачи миллиона сертификатов понадобилось всего 3 месяца и 5 дней.
Читать дальше →
Всего голосов 18: ↑14 и ↓4+10
Комментарии21

Подборка: Более 70 источников по машинному обучению для начинающих

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


Индикатор кулачкового аналогового компьютера / Wiki

В нашем блоге мы уже рассказывали о разработке системы квантовой связи и о том, как из простых студентов готовят продвинутых программистов. Сегодня мы решили вернуться к теме машинного обучения и привести адаптированную (источник) подборку полезных материалов.
Читать дальше →
Всего голосов 35: ↑31 и ↓4+27
Комментарии16

Дайджест интересных материалов из мира веб-разработки и IT за последнюю неделю №188 (1 — 6 декабря 2015)

Время на прочтение7 мин
Количество просмотров24K
Предлагаем вашему вниманию подборку с ссылками на полезные ресурсы, интересные материалы и IT-новости


Читать дальше →
Всего голосов 23: ↑19 и ↓4+15
Комментарии0

Бесплатный курс «Android. Быстрый старт»

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

Урок курса «Android. Быстрый старт»

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

История течет так быстро, что уже только убелённые сединами хипстеры начала этого века помнят, что в одном из гаражей города Пало Альто совсем недалеко от стен альма-матери множества IT-корпораций, в том числе, Sun Microsystems – Стэнфордского Университета, в 2003 году во время товарищеской вечеринки были сформулированы основные идеи программного продукта, который позже стал мировым хитом.

Базовые ценности никто не отменял


Почему мы упомянули Стэнфорд и Sun? Не только для того, чтобы передать тот дух свободы и творчества, который царил в это время в Кремниевой Долине, но и для того, чтобы с момента своего знакомства с Android, начинающие программисты понимали – эта ОС не появилась как бы сама собой на клочке бумаги и не была написана вот так «на коленке» юным дарованием.

За ней стояли люди, которые прекрасно понимали, что и зачем они делают. А заработанные ими 130 млн. долларов в 2005 году от продажи своего продукта корпорации Google только это доказывают.
Читать дальше →
Всего голосов 14: ↑9 и ↓5+4
Комментарии5

Исправляем ACPI на Samsung N250

Время на прочтение8 мин
Количество просмотров15K
В этой статье я хотел бы описать типичные ошибки проектирования, найденные в BIOS современного нетбука, и методы их обнаружения, изучения и исправления.
Читать дальше →
Всего голосов 80: ↑79 и ↓1+78
Комментарии8

Composer — the right way

Время на прочтение2 мин
Количество просмотров15K
The right way? Or the left one?

У нас давеча сложилась очень интересная и горячая дискуссия с коллегами по поводу использования Composer-а в проектах, над которыми мы работаем. Очень бы хотелось услышать мнение «широкой общественности» по этому вопросу.
Так как же правильно на самом деле?
Всего голосов 33: ↑16 и ↓17-1
Комментарии141

19 советов по повседневной работе с Git

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


Если вы регулярно используете Git, то вам могут быть полезны практические советы из этой статьи. Если вы в этом пока новичок, то для начала вам лучше ознакомиться с Git Cheat Sheet. Скажем так, данная статья предназначена для тех, у кого есть опыт использования Git от трёх месяцев. Осторожно: траффик, большие картинки!

Содержание:
  1. Параметры для удобного просмотра лога
  2. Вывод актуальных изменений в файл
  3. Просмотр изменений в определённых строках файла
  4. Просмотр ещё не влитых в родительскую ветку изменений
  5. Извлечение файла из другой ветки
  6. Пара слов о ребейзе
  7. Сохранение структуры ветки после локального мержа
  8. Исправление последнего коммита вместо создания нового
  9. Три состояния в Git и переключение между ними
  10. Мягкая отмена коммитов
  11. Просмотр диффов для всего проекта (а не по одному файлу за раз) с помощью сторонних инструментов
  12. Игнорирование пробелов
  13. Добавление определённых изменений из файла
  14. Поиск и удаление старых веток
  15. Откладывание изменений определённых файлов
  16. Хорошие примечания к коммиту
  17. Автодополнения команд Git
  18. Создание алиасов для часто используемых команд
  19. Быстрый поиск плохого коммита

Читать дальше →
Всего голосов 152: ↑149 и ↓3+146
Комментарии62

webpack: 7 бед — один ответ

Время на прочтение12 мин
Количество просмотров179K
После моего недавнего выступления на MoscowJS #17 с одноимённым докладом у многих возник интерес к этому инструменту. В рамках 11-го выпуска RadioJS, Миша Башкиров bashmish рассказал, что решился попробовать его в своём новом проекте, об успешном опыте и множестве положительных эмоций. Но были озвучены вопросы и возникла дискуссия, в результате которой я решил написать эту статью, чтобы раскрыть основные тезисы с доклада и рассказать о том, что тогда не успел.
Статья ориентирована, как на профессионалов, так и на тех, кто с похожими технологиями ещё не сталкивался.
Итак, начнём.
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии13

Пишем плагин под webpack

Время на прочтение8 мин
Количество просмотров21K
О webpack уже писали на хабре, рассказывали на moscowjs и есть несколько статей на других ресурсах, которые описывают общие возможности webpack’a, его достоинства и недостатки.

Поэтому в этой статье мы расскажем о самом webpack лишь вкратце и более подробно о разработке плагина под него.

image
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии3

Как не угробить архитектуру сразу же? Видео с лекции Евгения Кривошеева

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

Две недели назад в Москве прошла очередная встреча CodeFreeze. Нашим гостем стал Евгений Кривошеев, признанный российский эксперт в области архитектуры программных систем, консультант из Scrumtrek/Skilltrek. Евгений прочитал офигеннейшую лекцию по архитектуре, как он любит и умеет.



В рамках этой встречи Евгений предложил обсудить последовательность решений, критичных для архитектуры любой системы. Выстраданная последовательность действий такова:
  • Точки зрения на систему, или Почему мы слепнем при проектировании
  • Адресация ключевых рисков, или Гордыня убивает
  • Учитываем контекст, или Как не долбиться в закрытую дверь

Краткое содержание и видеозапись
Всего голосов 46: ↑43 и ↓3+40
Комментарии12

Разработка на ES6 для браузеров

Время на прочтение2 мин
Количество просмотров23K
Доброго времени суток.



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

Представляю вашему вниманию github.com/DavidKlassen/es6-browser-boilerplate.

В основу шаблона лег github.com/babel/babel-library-boilerplate, но gulpfile.js был основательно почищен и упрощен. Многие зависимости я убрал и оставил возможности, которые необходимы для разработки приложений для браузеров.

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


  • Шаблон должен быть хорошей стартовой точкой для разработки SPA и third party SDK.
  • Минималистичность и расширяемость.
  • Весь код, то есть и само приложение и тесты можно писать на ES6.

А теперь подробнее
Всего голосов 26: ↑21 и ↓5+16
Комментарии41

Дизайн сайта в Sketch.app (Mac OS). Часть 1: плагины и прототип

Время на прочтение4 мин
Количество просмотров54K
Радует, что все больше дизайнеров посматривают в сторону от Адоби в поисках инструментов поудобнее, полегче, попроще и подешевле. И выбирать есть что. Сегодня я расскажу про свой процесс создания дизайна сайта в Sketch.app. Надеюсь, какие-то мысли вы позаимствуете у меня, что-то никогда не станете делать так же, а до чего-то придете своим путем. Оставайтесь с нами.
Читать дальше →
Всего голосов 24: ↑22 и ↓2+20
Комментарии21

Дизайн сайта в Sketch.app. Часть 2.1: наводим красоту

Время на прочтение3 мин
Количество просмотров30K
Первая часть про прототипы.

intro-img-2

Описание процесса у меня очень длинным получается, поэтому двумя частями не ограничимся.
Итак, продолжаем с нашими наушниками. Для начала давайте разберемся, как в Скетче делать сетку...
Читать дальше →
Всего голосов 11: ↑8 и ↓3+5
Комментарии11

Бесплатные SSL-сертификаты — теперь на 3 года от WoSign

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


Вчера обнаружил, что WoSign дает бесплатно сертификат, теперь уже на 3 года.
Читать дальше →
Всего голосов 60: ↑54 и ↓6+48
Комментарии80

Интервью с Моисеем Урецким, сооснователем и директором Digital Ocean

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


Как возникла идея DO? На рынке уже были тысячи хостинг-провайдеров, не говоря о таких гигантах, как Amazon, Google, Microsoft. Наверняка все говорили, что ваша идея провалится?

До DO мы с братом много лет занимались хостингом, и в какой-то момент стало понятно, что все движутся в сторону «облака». Многие компании начали намного раньше нас — мы и сами тогда работали с различными провайдерами. Все они строили свои облака так, как считали нужным и правильным, но получалось как-то неоправданно сложно.

Так что мы решили, что займемся облаками и сделаем все по-своему, создадим свою версию, которая понравится нам самим, — что, наверно, было не очень разумно. Дело в том, что все, с кем мы это обсуждали, говорили, что это плохая идея и нам вообще не стоит за это браться :).
Читать дальше →
Всего голосов 84: ↑73 и ↓11+62
Комментарии27

Информация

В рейтинге
Не участвует
Откуда
Тула, Тульская обл., Россия
Дата рождения
Зарегистрирован
Активность