Как стать автором
Обновить
21
0
Филипп Филиппак @xenohunter

Data scientist

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

Обширный обзор собеседований по Python. Советы и подсказки

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

Всем привет!


Кратко о себе. По образованию я математик, а вот по профессии — программист. В сфере разработки с 2006 года. Хотя, поскольку программирование начали изучать ещё в школе, свои первые программки и игры я начал писать ещё в школе (примерно, с 2003). Так сложилось, что пришлось выучить и поработать на нескольких языках. Если не брать во внимание ВУЗ-овские лекции по С, С++, Бэйсику, Паскалю и Фортрану, то реально я работал с Delphi (более 6 лет), PHP (более 5 лет), Embedded (Atmel + PIC около 2.5 лет) и последним временем Python + чуть-чуть Scala. Конечно же без баз данных тоже никак не обойтись.


Для кого эта статья? Для всех, кто, как и я, хотел (или хочет) найти для себя достойную хорошо оплачиваемую работу с интересным проектом, классным коллективом и всякими плюшками. А также для тех, кто желает поднять свой уровень знаний и мастерства.

Читать дальше →
Всего голосов 71: ↑70 и ↓1+69
Комментарии57

Где найти фриланс, который будет приносить удовольствие? (Спойлер: не Upwork)

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

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


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


Теперь «фриланс» становится новым трендом. И поскольку многие начинают к нему присматриваться, первый вопрос, который возникает: «Где можно найти хорошие предложения по удаленной работе?»


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


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


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

Читать дальше →
Всего голосов 32: ↑24 и ↓8+16
Комментарии15

Вирус и антибиотики: нежный ликбез для паникующих

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

Эта няшка — пушистый мимивирус с размером кода 2,5 Мегабазы (бит четвертичной системы)

Мы тут мониторили каналы, чатики и форумы по поводу текущей обстановки в разных странах. Я просто офигевал от того, что люди могут придумать в панике и безграмотности. Поэтому ликбез. Не про коронавирус. Просто про вирусы. Маленьких «нанороботов». И антибиотики. Которые не надо кушать просто так.

Ликбез мы подготовили вместе с инфекционистом Викторией Валиковой, руководящей клиниками в Гватемале и Никарагуа. Естественно, он полон грубых упрощений.

Кто такие вирусы?


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

  1. Переработкой клеток на свои копии.
  2. Путешествиями в поиске новых клеток.

Про «форму жизни» есть холивар, потому что вирион (транспортное состояние вируса, частица без клетки) — это просто кусок кода ДНК или РНК + оболочки + некий аналог порта-коннектора. В этом состоянии вирус почти ничем не напоминает жизнь, а, скорее, похож на набор инструкций. И ведёт себя именно, как распечатка инструкций: пока не найдётся кто-то, кто их выполнит, они неактивны.

Если инструкция говорит вам, как использовать ксерокс, чтобы самоскопироваться, можно ли считать её живой?
Читать дальше →
Всего голосов 251: ↑243 и ↓8+235
Комментарии291

Визуализация больших графов для самых маленьких

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


Что делать, если вам нужно нарисовать граф, но попавшиеся под руку инструменты рисуют какой-то комок волос или вовсе пожирают всю оперативную память и вешают систему? За последние пару лет работы с большими графами (сотни миллионов вершин и рёбер) я испробовал много инструментов и подходов, и почти не находил достойных обзоров. Поэтому теперь пишу такой обзор сам.
Читать дальше →
Всего голосов 95: ↑94 и ↓1+93
Комментарии30

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

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

Всем привет!


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

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

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

DPKI: устраняем недостатки централизованной PKI при помощи блокчейна

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


Ни для кого не секрет, что один из общераспространенных вспомогательных инструментов, без которого невозможна защита данных в открытых сетях, — это технология цифровых сертификатов. Впрочем, не является секретом и то, что главный недостаток это технологии — безусловное доверие к центрам, выпускающим цифровые сертификаты. Директор по технологиям и инновациям компании ENCRY Андрей Чмора предложил новый подход к организации инфраструктуры общедоступных ключей (Public Key Infrastructure, PKI), который поможет устранить существующие в настоящее время недостатки и который использует технологию распределенного реестра (блокчейна). Но обо всем по порядку.
Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Комментарии18

Телега для датасайентиста

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

How to deploy Python Telegram bot using Webhooks on Google Cloud Platform


Вместо предисловия


image

— Напиши телеграм-бота. Сейчас даже школьники пишут, — сказала она.
— А почему бы и нет, — подумал я тогда ( — Ну, ну, — сказал бы я сейчас).


Мы сидели в Бине и за чашкой кофе обсуждали возможности тестирования идей с моделями искусственного интеллекта на близком и не очень круге друзей. Лена, моя бывшая коллега, и во всех отношениях не блондинка, только что закончившая магистратуру, рассуждала так. Создав бота, можно сэкономить силы и время на интерфейсе, сосредоточившись на ядре с машинным обучением. Согласитесь, что устоять против такой логики “спортсменки, комсомолки и просто красавицы” в то прекрасное воскресное утро было невозможно. Решено. Телеграм-бот, значит телеграм-бот.


Первым делом я залез в гугл и нашел большое число ссылок “как сделать бот за 30 минут”. Это меня настолько воодушевило, что дальше названий я не пошел и занялся созданием ядра. В самом первом приближении мне предстояло написать систему обработки поисковых запросов с использованием NLP (natural language processing). Написание ядра заняло некоторое, вполне разумное, время (все же опыт кока-колой не пропить). И через несколько дней я был готов к тому, чтобы за пару часов обернуть первую тестовую версию ядра в пару другую команд send-receive, запустив все это в Телеграме на благо моим друзьям. Но не тут-то было.


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

Читать дальше →
Всего голосов 49: ↑45 и ↓4+41
Комментарии35

Математическое расследование, как подделывали выборы губернатора в Приморье 16 сентября 2018 года

Время на прочтение19 мин
Количество просмотров97K
Во втором туре выборов губернатора Приморского края 16 сентября 2018 года встречались действующий и.о. губернатора Андрей Тарасенко и занявший второе место в первом туре коммунист Андрей Ищенко. В ходе подсчета голосов на сайте ЦИК РФ отображалась информационная панель с растущим числом обработанных протоколов и голосов за кандидатов.

Публикация подробных данных по участкам на официальном сайте ЦИК www.izbirkom.ru замерла после ввода 1484 (95.74%) протоколов и не возобновлялась до самого конца. Поэтому когда в трансляции лидер голосования вдруг поменялся с Ищенко на Тарасенко, было неясно, как именно это могло произойти. В СМИ просто писали «после обработки 99,03% протоколов лидер сменился».

Однако, располагая промежуточными суммарными данными из информационной панели, с помощью простой математики и программирования можно подробно установить, что именно происходило с протоколами в ночь после выборов. Используем Python, Colab от Google и Z3 theorem prover от Microsoft Research. Ну и добьём всё обычной дедукцией.


И что же там можно расследовать?
Всего голосов 394: ↑388 и ↓6+382
Комментарии392

Ещё лучшая ZIP-бомба

Время на прочтение25 мин
Количество просмотров126K
В статье показано, как создать нерекурсивную zip-бомбу, которая обеспечивает высокую степень сжатия путём перекрытия файлов внутри zip-контейнера. «Нерекурсивная» означает, что она не зависит от рекурсивной распаковки декомпрессорами файлов, вложенных в zip-архивы: здесь всего один раунд. Выходной размер увеличивается квадратично от входного, достигая степени сжатия более 28 миллионов (10 МБ → 281 ТБ) в пределах формата zip. Ещё большее расширение возможно с помощью 64-разрядных расширений. Конструкция использует только наиболее распространённый алгоритм сжатия DEFLATE и совместима с большинством парсеров zip.

  • zbsm.zip 42 kB → 5.5 GB
  • zblg.zip 10 MB → 281 TB
  • zbxl.zip 46 MB → 4.5 PB (Zip64, менее совместима с парсерами)

Исходный код:
git clone https://www.bamsoftware.com/git/zipbomb.git
zipbomb-20190702.zip

Данные и исходники иллюстраций:
git clone https://www.bamsoftware.com/git/zipbomb-paper.git
Читать дальше →
Всего голосов 176: ↑176 и ↓0+176
Комментарии53

HBO, cпасибо что напомнил… «Чернобыльская аптечка» беларуского фармацевта

Время на прочтение20 мин
Количество просмотров123K
Что бы ни сказали — не станем спорить
Что бы ни дарили — не станем верить

Егор Летов «Как листовка»

Думаю не стоит лишний раз говорить о нашумевшем сериале Чернобыль и эффективности такого «сериального» воздействия на массы. Особенно на массы, проживающие на территориях, показанных в фильме. Выход каждой новой серии сопровождается всплеском публикаций в FB. В каждой из которых горечь, страх, боль. Что в такой ситуации я могу сделать ("кто виноват и что делать?")? Могу только описать свой взгляд на терапию лучевых поражений. Спасибо родненькой кафедре химии высоких энергий и проф. Шадыро О.И., которые пестовали в своих лабораториях нас, непутевых фармацевтов-радиохимиков. Надеюсь своей статьей честь этой, легендарной некогда, кафедры я не опорочу.

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

В общем, спасибо, сценаристы HBO, за то, что всколыхнули Память. Мой посильный вклад — под катом. Рейтинг доступных (и не очень) антидотов, способных сработать при радиационном выбросе. В закладки — класть строго ВСЕМ! И прочитал сам — перекинь другу.

Читать дальше →
Всего голосов 227: ↑210 и ↓17+193
Комментарии272

Бэкдоры в микрокоде ассемблерных инструкций процессоров x86

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

Софту мы не доверяем уже давно, и поэтому осуществляем его аудит, проводим обратную инженерию, прогоняем в пошаговом режиме, запускаем в песочнице. Что же насчёт процессора, на котором выполняется наш софт? – Мы слепо и беззаветно доверяем этому маленькому кусочку кремния. Однако современное железо имеет те же самые проблемы, что и софт: секретную недокументированную функциональность, ошибки, уязвимости, малварь, трояны, руткиты, бэкдоры.



ISA (Instruction Set Architecture) x86 – одна из самых долгих непрерывно изменяющихся «архитектур набора команд» в истории. Начиная с дизайна 8086, разработанного в 1976 году, ISA претерпевает постоянные изменения и обновления; сохраняя при этом обратную совместимость и поддержку исходной спецификации. За 40 лет своего взросления, архитектура ISA обросла и продолжает обрастать множеством новых режимов и наборов инструкций, каждый из которых добавляет к предшествующему дизайну, и без того перегруженному, новый слой. Из-за политики полной обратной совместимости, в современных процессорах x86 присутствуют даже те инструкции и режимы, которые на сегодняшний день уже преданы полному забвению. В результате мы имеем архитектуру процессора, которая представляет собой сложно переплетающийся лабиринт новых и антикварных технологий. Такая чрезвычайно сложная среда – порождает множество проблем с кибербезопасностью процессора. Поэтому процессоры x86 не могут претендовать на роль доверенного корня критической киберинфраструктуры.

Читать дальше →
Всего голосов 147: ↑142 и ↓5+137
Комментарии87

Зацените: сделал стол

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


TL;DR В статье описывается мой опыт постройки стола c нуля из фанеры. От проектирования до сборки.

Я очень долго страдал от плохих столов. Все они неудобные, плохого качества, маленькие и, самое главное, ШАТКИЕ. Более-менее приличные столы стоили тысячи долларов. В итоге я решил изготовить стол самостоятельно.

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

  • Устойчивость! Предметы на столе не должны трястись, если резко положить руки на стол или оттолкнуться от него. Мой стол весит ~120кг. С его края можно делать сальтухи, при этом на другом конце паять SMD компоненты.
  • Ширина и глубина столешницы. Столы шириной 60 см — это унижение. Мне нужно иметь запас по глубине, чтобы можно было отодвинуть ноутбук вперед, и при этом получить достаточное рабочее пространство.
  • Вместительность. Мне нужны полки, чтобы разместить там оборудование: паяльники, лабораторный блок питания, осциллограф, аудио усилитель и т.д. При этом полки должны быть так же устойчивы, как и стол.
  • Цена. Я не готов выложить за стол несколько тысяч долларов. Мой стол обошелся в ~$300 с учётом покупки всего инструмента для сборки и покраски.
Всего голосов 261: ↑250 и ↓11+239
Комментарии559

Генеральная уборка в компании

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


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

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

А знаете, что такое большая компания? Это когда ты не знаешь в лицо кого-то. Когда в команде есть люди, которые работают по должностным обязанностям без понимания, для чего нужна их работа. Когда простая задача «напечатайте табличку с текстом в магазин» начинает гулять по согласованиям и решается за 22 дня. Реальный случай. Это когда договор подписывается 4 месяца. И куча других приколов звериного оскала бюрократизма.

Разгребать всё это… хм, ну, скажем, увлекательно.
Читать дальше →
Всего голосов 159: ↑154 и ↓5+149
Комментарии299

На дворе почти 2018, а мы любим колбэки

Время на прочтение9 мин
Количество просмотров25K
Если в первый момент идея не кажется абсурдной, она безнадёжна.
— Альберт Эйнштейн

Мы собрали для вас самые популярные темы из обсуждений Node.js на Хабре, и попросили рассказать о них признанных экспертов: некоммерческого Node-хакера Матиаса Мэдсена и автора множества книг и курсов по Node, Азата Мардана.


Вот точный список тем:


  1. Потоки в Node.js и способы распараллеливания вычислений;
  2. Асинхронность в Node.js;
  3. Отладка и логирование в Node.js;
  4. Проблемы мониторинга производительности на продакшене;
  5. Инструменты для мониторинга нод.


    Азат Мардан (Azat Mardan) — Tech Fellow, менеджер в компании Capital One, и эксперт по JavaScript/Node.js с несколькими онлайн-курсами на Udemy и в Node University, а также автор 14 книг по той же тематике, включая «React Quickly» (Manning, 2017), «Full Stack JavaScript» (Apress, 2015), «Practical Node.js» (Apress, 2014) и «Pro Express.js» (Apress, 2014).






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

Планетарный ландшафт

Время на прочтение51 мин
Количество просмотров21K
Трудно поспорить, что ландшафт — неотъемлемая часть большинства компьютерных игр на открытых пространствах. Традиционный метод реализации изменения рельефа окружающей игрока поверхности следующий — берем сетку (Mesh), представляющую из себя плоскость и для каждого примитива в этой сетке производим смещение по нормали к этой плоскости на значение, конкретное для данного примитива. Говоря простыми словами, у нас есть одноканальная текстура размером 256 на 256 пикселей и сетка плоскости. Для каждого примитива по его координатам на плоскости берем значение из текстуры. Теперь просто смещаем по нормали к плоскости координаты примитива на полученное значение(рис.1)


Рис.1 карта высот + плоскость = ландшафт

Почему это работает? Если представить, что игрок находится на поверхности сферы, и радиус этой сферы чрезвычайно велик по отношению к размеру игрока, то искривлением поверхности можно пренебречь и использовать плоскость. Но что если не пренебрегать тем фактом, что мы находимся на сфере? Своим опытом построения такого рода ландшафтов я хочу поделиться с читателем в данной статье.
Читать дальше →
Всего голосов 82: ↑82 и ↓0+82
Комментарии16

Методы приближенного поиска ближайших соседей

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


Довольно часто программисты и специалисты из области data science сталкиваются с задачей поиска похожих профилей пользователей или подбора схожей музыки. Решения могут сводиться к преобразованию объектов в векторную форму и поиску ближайших.


Мы тоже столкнулись с необходимостью поиска ближайших соседей в задаче распознавания лиц. Там мы формируем векторные представления лиц при помощи нейросети и ищем ближайшие векторы уже известных людей. Изначально для поиска мы выбрали Annoy, как хорошо известный и проверенный алгоритм, используемый в том числе в Spotify. Но быстро поняли, что с его аппетитами по памяти мы либо не вмещаемся в RAM, либо сильно теряем в точности. Это привело к небольшому исследованию. О результатах которого пойдет речь ниже.

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

Настольные игры ЦРУ

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


Все мы в детстве любили настольные игры. Это прекрасное средство развития навыков социализации и логического мышления. Но потом мы постарели выросли, большинство из нас «повзрослели» и стали пренебрежительно относиться к настолкам. Некоторые перешли на «взрослые» настольные игры, вроде того же Magic The Gathering. Но оказывается, что настольными играми не пренебрегает даже такая серьёзная организация ЦРУ. В этой кузнице шпионов нашего наиболее вероятного мирового партнёра разработаны специальные игры для обучения агентов. Может, большинству из нас пора пересмотреть своё отношение к настолкам? Под катом рассказ Сэма Машковича о дивном мире настольных игр в которые играют агенты западных спецслужб. На эту историю я набрел совершенно случайно. Грех было не перевести. Оригинал доступен тут. Надеюсь после публикации этой заметки у меня не возникнет проблем за границами нашей Родины.
Читать дальше →
Всего голосов 69: ↑67 и ↓2+65
Комментарии20

Погружение в технологию блокчейн: Что такое ICO и как его провести

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

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


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

4 крутые штуки про разработку игр

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


Привет! Это не полноценный пост, мы просто сделали четыре перевода блогозаписей Тайнана Сильвестра, мужика, который в одну харю создал игрушку Rimworld. Он выдаёт хорошие мысли про разработку игр, за некоторые из которых в приличной компании его бы вообще побили. Ниже короткая выжимка каждой и ссылка на перевод.

В «Симуляторе мечты» описывается старая добрая история мира из сериала Westworld – когда игрокам предлагают сложный мир со внутренними конфликтами, прямо шедевр искусства. А они сразу всех убивают и насилуют. Не обязательно в такой последовательности.

После выпуска Ultima Online Ричард Гэрриот сказал: «Мы думали, это будет что-то фантастическое. Мы потратили на неё огромное количество времени и сил. Но случилось то, что игроки просто шли и убивали всех так быстро, что игра даже не переходила на новый виток, и симулятор жизни даже не начинался. И эту часть, на которую мы потратили столько времени, даже никто ни разу не заметил, ни разу! И в итоге мы просто удалили ее из игры».

А дальше вводится совершенно сумасшедшая концепция оценки плотности сюжета – модель в голове игрока. Это очень многое для меня перевернуло.
Читать дальше →
Всего голосов 39: ↑33 и ↓6+27
Комментарии51

Анализ исходного кода Quake

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

Я с удовольствием погрузился в изучение исходного кода Quake World и изложил в статье всё, что я понял. Надеюсь, это поможет желающим разобраться. Эта статья разделена на четыре части:

  • Архитектура
  • Сеть
  • Прогнозирование
  • Визуализация
Читать дальше →
Всего голосов 54: ↑54 и ↓0+54
Комментарии11
1
23 ...

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность

Специализация

Frontend Developer, Chief Technology Officer (CTO)
TypeScript
JavaScript
React
Redux
Node.js
Python
Pytorch
Keras
Computer Science