Как стать автором
Обновить
67
0
Alexey Korepanov @alexaol

Fullstack developer

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

70 вопросов по JavaScript для подготовки к собеседованию

Время на прочтение 43 мин
Количество просмотров 855K
Доброго времени суток, друзья!

Надеюсь, эта статья будет полезна как начинающим разработчикам, так и опытным.

В вопросах, которые показались мне сложнее прочих, приведены ссылки на дополнительную литературу.

Буду признателен за развернутые комментарии. Все замечания будут учтены при редактировании статьи.

Итак, поехали.
Читать дальше →
Всего голосов 46: ↑43 и ↓3 +40
Комментарии 135

О проблемах транслятора Python и переосмысление языка

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

Сколько нужно архитекторов, чтобы реализовать язык программирования?
Сто. Один будет писать реализацию, а 99 — говорить, что могут сделать лучше.


В этой статье я хочу затронуть не столько сам язык, сколько детали реализации CPython и его стандартной библиотеки, которые гарантируют, что у вас не будет никаких простых способов сделать приложение на питоне ни многопоточным, ни быстрым, ни легко поддерживаемым, и почему было создано столько альтернативных реализаций (PyPy, Cython, Jython, IronPython, Python for .NET, Parakeet, Nuitka, Stackless, Unladen Swallow), половина из которых уже умерла; и мало кто понял, почему у альтернатив не было шансов победить в борьбе за выживание против других языков. Да, есть GDScript, который призван решить проблемы с производительностью, есть Nim, который призван решить вообще все проблемы, не обязывая при этом пользователя чрезмерно явно объявлять типы. Однако, учитывая огромную инертность индустрии, я осознаю, что в ближайшие 10 лет новые языки точно не займут значимой ниши. Однако, я верю в то, что питон возможно сделать эффективным, изменив стиль написания кода, по большей части сохранив оригинальный синтаксис, и полностью сохраняя возможность взаимодействия кода нового и старого стиля. Я буду концентрироваться на проблемах CPython, а не ближайшего его конкурента, PyPy, поскольку PyPy на самом деле прыгает вокруг всё тех же проблем CPython.

Читать дальше →
Всего голосов 65: ↑47 и ↓18 +29
Комментарии 276

Y-метод — действительно простой способ собрать кубик Рубика

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

Введение


В статье рассматривается «Y-метод» сборки кубика Рубика — его легко понять и запомнить. Он основан всего на одной последовательности, которая называется «Y-движение». Поняв этот алгоритм, вы навряд ли забудете как собрать кубик самостоятельно.
Читать дальше →
Всего голосов 118: ↑117 и ↓1 +116
Комментарии 78

Админка за 5 минут. Фронтэнд — react-admin, бэкэнд — Flask-RESTful

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


Если нужно на коленке получить быстро админку, где фронтендом будет react-admin, а бэкендом Flask-RESTful api, то ниже минимальный код в несколько десятков строк, чтобы это реализовать.
Читать дальше →
Всего голосов 21: ↑19 и ↓2 +17
Комментарии 41

Подборка полезных слайдов от Джулии Эванс

Время на прочтение 1 мин
Количество просмотров 52K
Перевели новую порцию слайдов. Права доступа в Unix, файловые дескрипторы, потоки, магия proc. И на закуску пара советов о том, как общаться, когда ты не согласен. А вдруг пригодятся =)



Читать дальше →
Всего голосов 115: ↑111 и ↓4 +107
Комментарии 42

Что ты такое, замыкания в JavaScript?

Время на прочтение 4 мин
Количество просмотров 27K
В этой статье я постараюсь подробно разобрать механизм реализации замыканий в JavaScript. Для этого я буду использовать браузер Chrome.

Начнем с определения:
Замыкания  - это функции, ссылающиеся на независимые (свободные) переменные. Другими словами, функция, определённая в замыкании, 'запоминает' окружение, в котором она была создана.
MDN

Если вам что-то не понятно в этом определении, это не страшно. Просто читайте дальше.

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

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

Итак, приступим:


Рисунок 1
Читать дальше →
Всего голосов 29: ↑27 и ↓2 +25
Комментарии 11

Футурологический конгресс: подборка аккаунтов евангелистов будущего

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


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

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

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

В эпоху избытка бессмысленных знаний голоса футурологов могут стать полезными для поиска новых трендов и понимания механики великих зубчатых колес, вращающих мир. Ниже вы найдете ссылки на аккаунты самых актуальных на сегодняшний день визионеров грядущего.
Читать дальше →
Всего голосов 46: ↑42 и ↓4 +38
Комментарии 17

Где и как изучать машинное обучение?

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

Всем привет!


Ни для кого не секрет, что интерес к машинному обучению и искусственному интеллекту растет в лучшем случае по экспоненте. Тем временем мой Яндекс Диск превратился в огромную свалку пейперс, а закладки в Google Chrome превратились в список, длина которого стремится к бесконечности с каждым днем. Таким образом, дабы упростить жизнь себе и вам, решил структурировать информацию и дать множество ссылок на интересные ресурсы, которые изучал я и которые рекомендую изучать вам, если вы только вначале пути (буду пополнять список постоянно).

Путь для развития новичка я вижу примерно так:

Untitled_presentation
Читать дальше →
Всего голосов 47: ↑44 и ↓3 +41
Комментарии 19

Детектирование частей тела с помощью глубоких нейронных сетей

Время на прочтение 8 мин
Количество просмотров 27K
Привет, Хабр!

Сегодня я расскажу вам про один из методов решения задачи pose estimation. Задача состоит в детектировании частей тела на фотографиях, а метод называется DeepPose. Этот алгоритм был предложен ребятами из гугла еще в 2014 году. Казалось бы, не так давно, но не для области глубокого обучения. С тех пор появилось много новых и более продвинутых решений, но для полного понимания необходимо знакомство с истоками.


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

Acer C710: установка Windows 10

Время на прочтение 4 мин
Количество просмотров 28K
Чтобы посмотреть и пощупать ChromeOS три года назад купил хромбук — Acer C710-2847, по очень приятной цене — 200$ (~8000 рублей c доставкой). Покупал из США с доставкой посредником.


В отличии от выпущенных тогда хромбуков, в C710 процессор Intel (уже в то время появлялись первые ARM-хромбуки, на которых настольная Windows не установилась бы никогда) и имеется возможность апгрейда — есть два слота под оперативную память и HDD обычного ноутбучного размера (именно поэтому была выбрана данная модель).

Характеристики
Экран: 11.6", 1366 x 768
CPU: Intel Celeron 847
RAM: было 2 GB, теперь 5GB (максимально ставил 12 GB)
HDD: 300 GB
Порты: 3xUSB 2.0, HDMI, VGA, RJ-45, kensington lock, 3.5 Jack, Card reader.
HD WebCam

BIOS’а как такового не было, но появлялись энтузиасты в интернете пытавшиеся установить на ноутбук отличную от ChromeOS операционною систему.

Наигравшись с ChromeOS, в дополнение была поставлена Ubuntu (ChrUbuntu) с возможностью переключения между системами, потом поставлен только Debian с предварительной перепрошивкой BIOS Coreboot SeaBIOS на котором и эксплуатировался ноутбук до последнего времени.

Пришли новогодние праздники и появилось время для экспериментов.
Читать дальше →
Всего голосов 24: ↑22 и ↓2 +20
Комментарии 10

Быстрый курс Redux + websockets для бэкендера

Время на прочтение 30 мин
Количество просмотров 48K
Всем привет из 2018! Оригинальный react-redux-universal-hot-example прекратил развитие в 2017 году, но его можно собрать на версии 6.14.2, на 8 и выше версии будут ошибки. Но есть его форк
https://github.com/bertho-zero/react-redux-universal-hot-example, где продолжается разработка и поддерживаются более свежие версии Nodejs.

Это краткое руководство и обучение по фронтэнеду для бэкендера. В данном руководстве я решаю проблему быстрого построения пользовательского интерфейса к серверному приложению в виде одностраничного веб-приложения (single page app).


Основной целью моего исследования является возможность за разумное время (для одного нормального человека) получить удобный и простой в использовании интерфейс-черновик к серверному приложению. Мы (как разработчики серверной части) понимаем, что наш приоритет — серверная часть. Когда (в гипотетическом проекте) появятся во фронте профи своего дела, они все сделают красиво и "правильно".


В роли учебной задачи представлена страничка чата с каким-то умозрительным "ботом", который работает на стороне сервера и принимает сообщение только через WebSocket. Бот при этом выполняет эхо ваших сообщений (мы тут не рассматриваем серверную часть вообще).

Читать дальше →
Всего голосов 37: ↑33 и ↓4 +29
Комментарии 32

Учим английский дешево и эффективно

Время на прочтение 9 мин
Количество просмотров 160K
Английский можно выучить дешево, иногда даже бесплатно. В этой статье я расскажу про личный опыт: какой софт и ресурсы в Интернет оказались максимально эффективными для меня, и как ими правильно пользоваться.

Если вы не готовы тратить на английский хотя бы 2 часа в день, то дальше можно не читать.
Читать дальше →
Всего голосов 45: ↑40 и ↓5 +35
Комментарии 135

Ansible с чего начать

Время на прочтение 8 мин
Количество просмотров 174K
В последние пару лет я все чаще использую Ansible для решения практически любых задач связанных с автоматизацией, будь то конфигурирование, резервное копирование или деплой проектов. Не смотря на то, что система очень хорошо документирована, я думаю смогу добавить немного полезной информации для тех кто еще только начинает пользоваться Ansible. Для начала я хотел бы рассказать об основных вещах, таких как структура проекта в котором будут содержаться плейбуки, роли, переменные, шаблоны и файлы необходимые для автоматизации развертывания серверов, кода и всего другого, что можно сделать с помощью Ansible.
Читать дальше →
Всего голосов 25: ↑24 и ↓1 +23
Комментарии 44

Руководство по работе с Redux

Время на прочтение 80 мин
Количество просмотров 283K
Сегодня Redux — это одно из наиболее интересных явлений мира JavaScript. Он выделяется из сотни библиотек и фреймворков тем, что грамотно решает множество разных вопросов путем введения простой и предсказуемой модели состояний, уклоне на функциональное программирование и неизменяемые данные, предоставления компактного API. Что ещё нужно для счастья? Redux — библиотека очень маленькая, и выучить её API не сложно. Но у многих людей происходит своеобразный разрыв шаблона — небольшое количество компонентов и добровольные ограничения чистых функций и неизменяемых данных могут показаться неоправданным принуждением. Каким именно образом работать в таких условиях?

В этом руководстве мы рассмотрим создание с нуля full-stack приложения с использованием Redux и Immutable-js. Применив подход TDD, пройдём все этапы конструирования Node+Redux бэкенда и React+Redux фронтенда приложения. Помимо этого мы будем использовать такие инструменты, как ES6, Babel, Socket.io, Webpack и Mocha. Набор весьма любопытный, и вы мигом его освоите!
Читать дальше →
Всего голосов 65: ↑59 и ↓6 +53
Комментарии 51

За один проход

Время на прочтение 7 мин
Количество просмотров 154K
Среди задач по программированию часто попадаются такие: дана последовательность однотипных элементов (обычно это числа), требуется за один проход по ней найти какую-нибудь характеристику (среднее квадратическое отклонение, количество минимальных элементов, непрерывный участок с наибольшей суммой...) Дополнительное ограничение — последовательность может быть очень длинной, и в память не поместится. Других ограничений на элементы последовательности, обычно, не накладывается.
С этими задачами всё, более или менее, понятно: нужно найти то, что на мехмате МГУ называют «индуктивным расширением» искомой функции, и реализовать её вычисление. Если найти не удалось (требуемый объём памяти слишком велик), то задача не решается.
Но попадаются и другие задачи. В них есть дополнительные ограничения на элементы последовательности в совокупности, и эти ограничения приходится существенно использовать для решения (и проверять их не надо). Простейшая такая задача выглядит так:

Задача 1. В последовательности записаны целые числа от 1 до N в произвольном порядке, но одно из чисел пропущено (остальные встречаются ровно по одному разу). N заранее неизвестно. Определить пропущенное число

Решение очевидно: просматриваем числа, находим их количество K и сумму S. По условию, N=K+1, значит, сумма чисел от 1 до N будет равна (K+1)*(K+2)/2, и пропущенное число равно (K+1)*(K+2)/2-S. Если вы почему-то боитесь переполнений, то работайте с беззнаковыми числами (там переполнения не страшны — но будьте осторожны при вычислении (K+1)*(K+2)/2 :) ), или вместо суммы ищите XOR всех чисел.
Другие задачи
Всего голосов 73: ↑72 и ↓1 +71
Комментарии 56

История реверс-инженеринга китайского фитнес-браслета

Время на прочтение 14 мин
Количество просмотров 36K
Купи китайский браслет, разочаруйся в официальном ПО, напиши свое!


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

Интеллектуальные игрушки: Инструкция для родителей

Время на прочтение 3 мин
Количество просмотров 13K
Хотите, чтобы ваш ребенок вырос инженером-механиком или инженером-электриком? А как насчет профессии программиста или разработчика приложений? В современном мире каждый старается смотреть в будущее. В то время как многие родители ощущают острую необходимость нанять своему ребенку репетитора по математике перед тем, как отдать его в детский сад, существует альтернатива: игрушки! Однако некоторые игрушки лучше других в том, что касается стимулирования детского любопытства.

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

Здесь перечислены самые лучшие, на нашвзгляд, игрушки 2015 года, разбитые на категории по развиваемым навыкам:
Читать дальше →
Всего голосов 20: ↑17 и ↓3 +14
Комментарии 6

Как я писал клиент PeerJS(WebRTC) под Android

Время на прочтение 13 мин
Количество просмотров 14K
Недавно пришлось писать клиентское приложение на Android для сервера, который организовал видеосвязь между пользователями с помощью библиотеки PeerJS. Эта библиотека является надстройкой над WebRTC, ну или что-то типо того.

Подошел к делу с энтузиазмом, так как до этого ничего такого сложного не делал.
Естественно, первым шагом был поиск библиотек, проектов, которые реализуют такой функционал.
Нашел sample WebRTC, но потом обнаружил проект, который попроще все это реализовывал.
Читать дальше →
Всего голосов 6: ↑4 и ↓2 +2
Комментарии 4

Это правильно, но неверно

Время на прочтение 3 мин
Количество просмотров 52K
Специалисты заслуженно не любят задачи и головоломки на собеседованиях. Но мы просто любим порешать такие задачи в свое удовольствие. Вот что мне лично не нравится, так это когда ты получаешь правильный ответ, но при этом твое решение кажется автору неверным. Хочу просто показать решение нескольких популярных подобных задач, которые можно получить в уме и без сложных расчетов и сопоставить их с авторскими верными.
Читать дальше →
Всего голосов 42: ↑34 и ↓8 +26
Комментарии 106

Делаем свой персональный Skype, пошаговая инструкция создания WebRTC приложения

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

WebRTC позволяет реализовать real-time аудио/видео связь через браузер (firefox и chrome).

В этом топике я расскажу как реализовать простейшее WebRTC приложение.
Читать дальше →
Всего голосов 102: ↑98 и ↓4 +94
Комментарии 28

Информация

В рейтинге
Не участвует
Откуда
Amsterdam, Noord-Holland, Нидерланды
Дата рождения
Зарегистрирован
Активность