Pull to refresh
7
0
Федор Зайцев @rus_phantom

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

Send message

Обучение без учителя. Как стать профессионалом, не имея наставника

Reading time8 min
Views30K

image


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


В этой статье я поделюсь правилами, которые помогают мне постоянно развиваться как специалист, поддерживать себя в конкурентноспособной форме, и расскажу историю подъема от pre-junior до senior.


БОНУС: подборка забавных и удручающих случаев с собеседований.

Читать дальше →
Total votes 22: ↑16 and ↓6+10
Comments35

Почему я игнорирую рекрутёров Google

Reading time3 min
Views65K
Это реальная история, она — не только про Google. Я нередко получаю письма от рекрутёров Amazon, Facebook, а также небольших стартапов Кремниевой долины. Они как-то находят меня — наиболее вероятно через этот блог, через мои книги или через аккаунт на GitHub. Они всегда начинают с фразы: «Ваш профиль нас сильно впечатлил», — а заканчивают: «Давайте назначим собеседование». Я всегда отвечаю одинаково, а они всегда после этого исчезают, возвращаясь нередко через несколько месяцев под другим именем. Попробую здесь объяснить мои соображения. Возможно, вы будете делать то же, и мы сможем изменить ситуацию.

image

«Охотник на оленей» (1978), режиссёр Майкл Чимино
Читать дальше →
Total votes 156: ↑143 and ↓13+130
Comments162

Скоро открытие ML Boot Camp III

Reading time9 min
Views14K


15 февраля стартует Machine Learning Boot Camp III — третье состязание по машинному обучению и анализу данных от Mail.Ru Group. Сегодня рассказываем о прошедшем контесте и открываем тайны нового! Итак, в ходе предстоящего конкурса нужно будет угадать, останется ли участник в онлайн-игре или уйдет из нее. Выборки для задачи построены на двенадцати игровых признаках для 25000 пользователей. Естественно, все данные анонимизированы.
Читать дальше →
Total votes 38: ↑37 and ↓1+36
Comments6

Машинное обучение — это легко

Reading time7 min
Views346K
В данной статье речь пойдёт о машинном обучении в целом и взаимодействии с датасетами. Если вы начинающий, не знаете с чего начать изучение и вам интересно узнать, что такое «датасет», а также зачем вообще нужен Machine Learning и почему в последнее время он набирает все большую популярность, прошу под кат. Мы будем использовать Python 3, так это как достаточно простой инструмент для изучения машинного обучения.
Читать дальше →
Total votes 51: ↑44 and ↓7+37
Comments20

Open Source-законодательство

Reading time1 min
Views6.7K
Здравствуйте, я тут подумал, что системы управления версиями вроде GitHub — это идеальная площадка для экспериментов в области электронного законодательства.

Ведь как работают депутаты? Они правят законы. Почти любой законодательный акт является правкой уже существующих документов. У законов есть редакции — точно так же, как ревизии у кода.

Например, я залил сюда сюда* Конституцию Российской Федерации и предлагаю внести в нее правки. Можно и другие законы внести и их тоже поправить. И не обязательно России.

Мне интересно, если любой желающий имеет возможность предложить свои редакции существующих норм — кто что предложит? Сколько народу поддержит чьи правки? Какие будут комментарии? Сколько возникнет форков?

Welcome, как говорится.

* Если кому показался знакомым никнейм, то да, это я, надеюсь, никто не против, что меня тут снова захабрили.
Total votes 33: ↑19 and ↓14+5
Comments71

Как устроен парсер Python, и как втрое уменьшить потребление им памяти

Reading time12 min
Views49K
Любой, кто изучал устройство языков программирования, примерно представляет, как они работают: парсер в соответствии с формальной грамматикой ЯП превращает входной текст в некоторое древовидное представление, с которой работают последующие этапы (семантический анализ, различные трансформации, и генерация кода).

КДПВ

В Python всё немного сложнее: парсеров два. Первый парсер руководствуется грамматикой, заданной в файле Grammar/Grammar в виде регулярных выражений (с не совсем обычным синтаксисом). По этой грамматике при помощи Parser/pgen во время компиляции python генерируется целый набор конечных автоматов, распознающих заданные регулярные выражения — по одному КА для каждого нетерминала. Формат получающегося набора КА описан в Include/grammar.h, а сами КА задаются в Python/graminit.c, в виде глобальной структуры _PyParser_Grammar. Терминальные символы определены в Include/token.h, и им соответствуют номера 0..56; номера нетерминалов начинаются с 256.

Проиллюстрировать работу первого парсера проще всего на примере. Пусть у нас есть программа if 42: print("Hello world").
Читать дальше →
Total votes 122: ↑116 and ↓6+110
Comments68

Нейронные сети для начинающих. Часть 1

Reading time7 min
Views1.5M
image

Привет всем читателям Habrahabr, в этой статье я хочу поделиться с Вами моим опытом в изучении нейронных сетей и, как следствие, их реализации, с помощью языка программирования Java, на платформе Android. Мое знакомство с нейронными сетями произошло, когда вышло приложение Prisma. Оно обрабатывает любую фотографию, с помощью нейронных сетей, и воспроизводит ее с нуля, используя выбранный стиль. Заинтересовавшись этим, я бросился искать статьи и «туториалы», в первую очередь, на Хабре. И к моему великому удивлению, я не нашел ни одну статью, которая четко и поэтапно расписывала алгоритм работы нейронных сетей. Информация была разрознена и в ней отсутствовали ключевые моменты. Также, большинство авторов бросается показывать код на том или ином языке программирования, не прибегая к детальным объяснениям.

Поэтому сейчас, когда я достаточно хорошо освоил нейронные сети и нашел огромное количество информации с разных иностранных порталов, я хотел бы поделиться этим с людьми в серии публикаций, где я соберу всю информацию, которая потребуется вам, если вы только начинаете знакомство с нейронными сетями. В этой статье, я не буду делать сильный акцент на Java и буду объяснять все на примерах, чтобы вы сами смогли перенести это на любой, нужный вам язык программирования. В последующих статьях, я расскажу о своем приложении, написанном под андроид, которое предсказывает движение акций или валюты. Иными словами, всех желающих окунуться в мир нейронных сетей и жаждущих простого и доступного изложения информации или просто тех, кто что-то не понял и хочет подтянуть, добро пожаловать под кат.
Читать дальше →
Total votes 70: ↑60 and ↓10+50
Comments64

Итоги GSOC

Reading time8 min
Views7.7K
30 августа закончился Google Summer of Code, в котором мы принимали участие во второй раз. В целом результат достойный — большинство студентов подтвердили, что их выбрали не зря. Но были и ошибки, о которых расскажем в этой статье. Для подведения итогов GSOC были опрошены менторы — те самые люди, на плечах которых всё и держалось последние полгода. Подробности под катом.


Читать дальше →
Total votes 22: ↑20 and ↓2+18
Comments32

Reverse engineering тестового crackme от Лаборатории Касперского

Reading time2 min
Views29K
Приветствую сообщество! Давным давно, в 2013 году на Хабре был опубликован пост «Reverse engineering на собеседовании: как мы нанимаем на работу». В нём был предложен тестовый crackme для претендентов на позицию вирусного аналитика. Убедившись, что полного разбора тестового файла в интернете нет, я решил написать свой разбор. Итак, приступим. Crackme 64-разрядный. Запустим его в IDA Pro.

image

Читать дальше →
Total votes 52: ↑49 and ↓3+46
Comments23

Оптимизация сравнения this с нулевым указателем в gcc 6.1

Reading time3 min
Views15K


Хорошие новостиTM ждут пользователей gcc при переходе на версию 6.1 Код такого вида (взят отсюда):

class CWindow {
    HWND handle;
public:
    HWND GetSafeHandle() const
    {
         return this == 0 ? 0 : handle;
    }
};

«сломается» — при вызове метода через нулевой указатель на объект теперь может происходить разыменование нулевого указателя, потому что компилятор теперь может просто взять и удалить проверку. Код, конечно, с самого начала сломан, а gcc 6.1 его только немного доломает.
Читать дальше →
Total votes 66: ↑61 and ↓5+56
Comments194

Не так-то просто обнулять массивы в VC++ 2015

Reading time5 min
Views20K
В чем разница между двумя этими определениями инициализированных локальных переменных С/С++?

char buffer[32] = { 0 };
char buffer[32] = {};

Одно отличие состоит в том, что первое допустимо в языках С и С++, а второе — только в С++.

Что ж, давайте тогда сосредоточимся на С++. Что означают эти два определения?

Первое гласит: компилятор должен установить значение первого элемента массива в ноль и затем (грубо говоря) инициализировать нулями оставшиеся элементы массива. Второе означает, что компилятор должен инициализировать нулями весь массив.

Эти определения несколько различаются, но по факту результат один — весь массив должен быть инициализирован нулями. Поэтому согласно правилу «as-if» в С++ они одинаковы. То есть любой достаточно современный оптимизатор должен генерировать идентичный код для каждого из этих фрагментов. Верно?
Читать дальше →
Total votes 59: ↑59 and ↓0+59
Comments30

Первый подтвержденный случай реального использования ReactOS

Reading time2 min
Views87K


На нашем официальном сайте еще недавно висело сообщение, что операционная система ReactOS пока не готова для повседневного использования, а образы ОС, раздаваемые с сайта, предназначены только для тестирования. Тем не менее периодически всплывали «утки», что ReactOS видели установленным на кассовых терминалах такого-то супермаркета. Однако шутки шутками, а время шло, и релизы выходили.

И вот некоторое время назад к нам обратился системный администратор одной из российских библиотек и поделился опытом реального «боевого» применения ReactOS в работе. Александр поведал, что смог установить и настроить сервер ИРБИС64 (библиотечный каталог книг) на компьютере под управлением ReactOS. Более того, конфигурация уже длительное время работает без серьезных сбоев и выполняет свои функции.

Несколько демонстрационных видео
Total votes 115: ↑85 and ↓30+55
Comments239

Microsoft раскрыла исторические аспекты разработки Windows

Reading time5 min
Views45K
Несколько дней назад Microsoft опубликовала очень любопытную информацию, мимо которой мы не могли пройти мимо. Опубликованная статья называлась The engineer’s engineer: Computer industry luminaries salute Dave Cutler’s five-decade-long quest for quality и посвящена заслуженному инженеру Microsoft и первому архитектору Windows NT Дэйву Катлеру, который заложил основу всех версий Windows начиная с 1993 года.



Известно, что Windows NT разрабатывалась как серверная операционная система и она прошла достаточно долгий путь эволюции перед тем как предстать во всей своей красе перед домашними пользователями в виде Windows 2000 и Windows XP. Не многие знают, что, на самом деле, все семейство ОС Windows NT, начиная от самых первых ее версий и заканчивая Windows 10 основано на одной из первых полностью 32-битных ОС фирмы Digital Equipment Corporation под названием VAX VMS, которая основана на UNIX.

Читать дальше →
Total votes 33: ↑25 and ↓8+17
Comments37

Математика на пальцах: методы наименьших квадратов

Reading time8 min
Views227K

Введение




Я математик-программист. Самый большой скачок в своей карьере я совершил, когда научился говорить:«Я ничего не понимаю!» Сейчас мне не стыдно сказать светилу науки, что мне читает лекцию, что я не понимаю, о чём оно, светило, мне говорит. И это очень сложно. Да, признаться в своём неведении сложно и стыдно. Кому понравится признаваться в том, что он не знает азов чего-то-там. В силу своей профессии я должен присутствовать на большом количестве презентаций и лекций, где, признаюсь, в подавляющем большинстве случаев мне хочется спать, потому что я ничего не понимаю. А не понимаю я потому, что огромная проблема текущей ситуации в науке кроется в математике. Она предполагает, что все слушатели знакомы с абсолютно всеми областями математики (что абсурдно). Признаться в том, что вы не знаете, что такое производная (о том, что это — чуть позже) — стыдно.

Но я научился говорить, что я не знаю, что такое умножение. Да, я не знаю, что такое подалгебра над алгеброй Ли. Да, я не знаю, зачем нужны в жизни квадратные уравнения. К слову, если вы уверены, что вы знаете, то нам есть над чем поговорить! Математика — это серия фокусов. Математики стараются запутать и запугать публику; там, где нет замешательства, нет репутации, нет авторитета. Да, это престижно говорить как можно более абстрактным языком, что есть по себе полная чушь.
Математика для программистов!
Total votes 125: ↑115 and ↓10+105
Comments400

От действий над матрицами к пониманию их сути…

Reading time5 min
Views141K
Очень уважаю людей, которые имеют смелость заявить, что они что-то не понимают. Сам такой. То, что не понимаю, — обязательно должен изучить, осмыслить, понять. Статья "Математика на пальцах", и особенно матричная запись формул, заставили меня поделиться своим небольшим, но, кажется, немаловажным опытом работы с матрицами.

Лет эдак 20 назад довелось мне изучать высшую математику в вузе, и начинали мы с матриц (пожалуй, как и все студенты того времени). Почему-то считается, что матрицы — самая лёгкая тема в курсе высшей математики. Возможно — потому, что все действия с матрицами сводятся к знанию способов расчёта определителя и нескольких формул, построенных — опять же, на определителе. Казалось бы, всё просто. Но… Попробуйте ответить на элементарный вопрос — что такое определитель, что означает число, которое вы получаете при его расчёте? (подсказка: вариант типа «определитель — это число, которое находится по определённым правилам» не является правильным ответом, поскольку говорит о методе получения, а не о самой сути определителя). Сдаётесь? — тогда читаем дальше…
Читать дальше →
Total votes 60: ↑49 and ↓11+38
Comments74

Глубокое обучение в гараже — Возвращение смайлов

Reading time5 min
Views13K
Пример работы системы
Это третья статья из серии про определение смайла по выражению лица.

Глубокое обучение в гараже — Братство данных
Глубокое обучение в гараже — Две сети
Глубокое обучение в гараже — Возвращение смайлов

Так что же со смайлами?


Фух, ну наконец, детекция лиц работает, можно учить сеть распознавания смайла. Только вот на чем учить? Открытых наборов данных нет. А из того, как долго в предыдущей части я добирался до, собственно, обучения моделей вы уже должны были понять, что в глубоком обучении данные решают все. И их нужно много.
Покажите девушек!
Total votes 25: ↑21 and ↓4+17
Comments3

Обстоятельно о подсчёте единичных битов

Reading time16 min
Views97K
Я хотел бы подарить сообществу Хабра статью, в которой стараюсь дать достаточно полное описание подходов к алгоритмам подсчёта единичных битов в переменных размером от 8 до 64 битов. Эти алгоритмы относятся к разделу так называемой «битовой магии» или «битовой алхимии», которая завораживает своей красотой и неочевидностью многих программистов. Я хочу показать, что в основах этой алхимии нет ничего сложного, и вы даже сможете разработать собственные методы подсчёта единичных битов, познакомившись с фундаментальными приёмами, составляющими подобные алгоритмы.

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

Простейшие самообучающиеся алгоритмы на языке «Автор»

Reading time4 min
Views11K
К сожалению, все самообучающиеся алгоритмы достаточно сложны и объёмны. Логика самообучения алгоритма по-прежнему остаётся задачей программиста. Но, не смотря на это, я приведу пример классической задачи на самообучение.
Задача состоит в том, чтоб дать ответ, является ли заданное число простым. На первый взгляд ничего особенного. Но проблема заключается в том, что для того, чтобы дать правильный ответ, нужно найти заданное число в ряде простых чисел. Другого способа просто не существует. А этот ряд бесконечный. Разумеется, мы можем задать в памяти только ограниченный отрезок ряда, и получается, что как не крути, а заданное число может превышать ограничение. Конечно, вы скажите, что ряд легко продолжить. Да, вы абсолютно правы. Но с точки зрения оптимизации работы программы, по времени, неудобно каждый раз вычислять одно и тоже, а лучше сохранять массив простых чисел, каждый раз при дополнении его. Собственно в этом и заключается мера обучения этой классической задачи. С точки зрения классического программирования нам нужно организовать хранилище для содержания массива известных простых чисел, например в отдельном файле, или в базе данных. Но опираясь на возможность языка «Автор» вносить изменения программ в собственный код можно сделать такое хранилище прямо внутри кода программы.
Читать дальше →
Total votes 29: ↑9 and ↓20-11
Comments25

Information

Rating
Does not participate
Registered
Activity