Pull to refresh
265
0
Арсений @aruseni

Lead Python Software Engineer

Send message

Навык поиска работы

Reading time5 min
Views24K
Есть много причин, почему классные разработчики часто долго не могут найти работу, а компании — классных разработчиков. Я хочу поговорить об одной из наиболее распространённых.

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

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

Что это за собеседования? Они не абсолютно одинаковые, но одна из их особенностей — теоретические вопросы, ответы на которые кандидат, по их мнению, обязан заучить наизусть. Такие собеседования отвратительны тем, что дают огромное количество ошибок первого и второго рода. По сути, настолько много, что можно использовать вместо собеседований генератор случайных чисел, и результаты будут приблизительно те же самые.
Читать дальше →
Total votes 23: ↑18 and ↓5+18
Comments102

Telegram after 5 years

Reading time2 min
Views2.7K
A few years ago, when I was using Jabber, all of a sudden the centralized IMs that glue your account to your phone number became popular. I was skeptical towards them for some time, but then there was a temporary illusion that the Telegram developers were trying to do something bigger. Unfortunately, over time it was becoming clearer and clearer that they were not actually going to do anything that was different in any way from what other centralized IMs had to offer.
Read more →
Total votes 15: ↑8 and ↓7+1
Comments4

Проект популяризации науки 15x4 проводит открытые лекции и масштабируется в новые города

Reading time3 min
Views5.4K
Прошлым летом, когда появилось движение 15x4, едва ли кто-то мог подумать, что проект настолько вырастет так быстро. Всё началось с нескольких человек, безумно увлечённых наукой, которым нравилось пересказывать друг другу Википедию. А потом в Харькове открылся первый лекторий. Немного позже — второй, в Киеве. Со временем в разных городах проводилось всё больше мероприятий, а на YouTube-канале 15x4 появлялись новые и новые записи лекций.

На картинке 176 разноцветных квадратиков с пиктограммами лекций. Посередине 15x4 Share Your Knowledge.

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

15x4 — категорически не коммерческое объединение учёных и фанатов науки. Деятельность проекта никак не монетизируется, а вход на все мероприятия во всех городах был и остаётся свободным.

На сегодня прочитано около 150 лекций и проведено около 50 мероприятий. Темы лекций очень разнообразны. Лекторы часто читают о физике и биологии, также были лекции о технологиях, медицине, психологии, лингвистике и, естественно, космосе. В том числе сейчас на сайте вы найдёте лекции про Большой адронный коллайдер, глютен, вакцинацию, гомеопатию, CRISPR, 3D-печать, квантовые компьютеры и редактуру текста.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments0

Используем ноутбук как Bluetooth-клавиатуру (или мышь)

Reading time1 min
Views28K
Только что пришла мне в голову мысль — можно ли подключить ноутбук по Bluetooth к телефону/планшету/etc, чтобы можно было печатать текст на компьютере, а передавались нажатия клавиш на мобильное устройство.

Оказывается, это уже реализовано в виде готовой программы, которую получилось достаточно быстро нагуглить по запросу linux emulate bluetooth mouse.

Называется она hidclient. Работает на Linux-компьютерах с Bluetooth.

Теоретически, передавать таким образом события с клавиатуры или мышки можно на любое устройство, которое поддерживает подключение HID-устройств по Bluetooth. На практике я попробовал это с iPod — прекрасно работает.
Настройка
Total votes 12: ↑12 and ↓0+12
Comments10

Какие эксперименты Facebook ставит над своими пользователями

Reading time1 min
Views66K
17 июня в журнале Proceedings of the National Academy of Sciences была опубликована статья под названием «Экспериментальное доказательство заражения масс эмоциями через социальные сети».

Суть исследования заключается в выборочном удалении записей из новостной ленты пользователей Facebook. Для эксперимента были отобраны 689 тысяч человек, у половины из которых в новостной ленте скрывались негативно окрашенные сообщения, а у другой половины, наоборот, позитивные.

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

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

При регистрации в Facebook вы принимаете пользовательское соглашение, в котором, в частности, указывается ваше согласие на «внутренние операции, включающие устранение неполадок, анализ данных, тестирование, исследования и улучшение сервиса». Поэтому, теоретически, Facebook оставляет за собой право на своё усмотрение управлять содержимым новостной ленты каждого пользователя.
Опрос
Total votes 62: ↑54 and ↓8+46
Comments50

Motocoin — криптовалюта с человеческим майнингом

Reading time2 min
Views50K
Логотип1 мая на форуме BitcoinTalk появилась ветка, в которой один из пользователей форума анонсировал несколько необычный форк Bitcoin. Основное отличие этой криптовалюты заключается в том, что майнят её не компьютеры, а люди. Для того, чтобы получить MOTO (единицы криптовалюты Motocoin), вам понадобится лишь средний компьютер (на данный момент требуется поддержка OpenGL версии три, но в будущем, скорее всего, игра будет работать и со второй версией) и некоторые навыки прохождения компьютерных игр.

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

Игра, в которую нужно играть для майнинга MOTO, очень похожа на ЭластоманиюX-Moto) — отсюда и такое название криптовалюты.

Такой необычный подход к майнингу сначала удивил многих участников Bitcoin-сообщества (некоторые даже решили, что это шутка), но позже, когда стало понятно, что всё вполне серьёзно, эксперимент пришёлся сообществу по вкусу. А отчего бы и нет — ведь не так уж много таких криптовалют, которые (в теории) можно годами майнить даже на среднем ноутбуке. И, что ещё важнее, тут нужно время человека, а не компьютера, а оно гораздо ценнее.
Читать дальше →
Total votes 60: ↑50 and ↓10+40
Comments73

Платформа для общественного финансирования разработки свободного ПО Bountysource теперь работает и с Bitcoin

Reading time1 min
Views7.2K
Bountysource, набирающая популярность платформа для общественного финансирования разработки свободного ПО, теперь позволяет производить взаиморасчёты не только в долларах, но и в криптовалюте Bitcoin.

Работает Bountysource следующим образом:

  • Если вам нужно, чтобы в том или ином программном продукте появилась какая-либо фича, либо был исправлен какой-либо дефект, вы можете объявить сбор средств для разработчика, который за это возьмётся. Возможно, помимо вас на это пожертвуют деньги и другие люди, и кто-либо из разработчиков, таким образом, возьмётся за дело быстрее, так как это будет выгодно.
  • Если вы хотите заработать денег, вы можете сами взяться за реализацию фич и исправление багов. Конечно же, результат вашей работы станет доступен не только для тех, кто её профинансировал, но и для всего opensource-сообщества. Двойная выгода: вы одновременно расширяете своё общедоступное портфолио (при приёме на работу большое количество качественного открытого исходного кода вашего авторства может очень хорошо сыграть в вашу пользу) и получаете за это деньги.

Я думаю, что Bountysource и другие аналогичные платформы в будущем позволят вывести свободное ПО на качественно новый уровень. На самом деле, эта модель может быть настолько эффективна, что в какой-то момент надобность в покупке проприетарного ПО для большинства людей и вовсе исчезнет: потому что профессиональным разработчиком будет настолько выгодно заниматься OS-проектами, что это просто станет их основной деятельностью, вместо работы над проприетарными проектами.
Поучаствовать в опросе
Total votes 17: ↑17 and ↓0+17
Comments10

Восстановление данных в MySQL из снимка EBS

Reading time4 min
Views4K
Это короткое руководство, возможно, поможет кому-то, кто использует AWS (и, в частности, MySQL на инстансе EC2), восстановить данные в MySQL из снимка EBS (регулярное создание которых любой предусмотрительный системный администратор, конечно же, настраивает заблаговременно — с помощью ec2‑consistent‑snapshot, например)

Прежде всего нужно открыть EC2 Management Console, и в разделе ELASTIC BLOCK STORE → Snapshots найти подходящий снимок (обычно это последний снимок раздела).

Далее нужно щёлкнуть на снимке правой кнопкой мышки и выбрать «Create Volume». В Availability Zone при этом нужно выбрать тот же регион, в котором находится инстанс EC2.

После этого нужно перейти в раздел ELASTIC BLOCK STORE → Volumes и, опять же, щёлкнуть правой кнопкой мышки на появившийся раздел. В меню нужно выбрать пункт «Attach Volume», после чего в появившемся модальном окне выбрать инстанс EC2 и нажать «Yes, Attach».

Всё — на сервере должно появиться новое блочное устройство. Теперь можно запустить dmesg | tail и посмотреть, какой идентификатор был присвоен для подключённого блочного устройства. Допустим, это xvdg. Тогда ФС может располагаться, например, на /dev/xvdg1 (зависит от предпочтений того, кто создавал таблицу разделов).
Непосредственно восстановление
Total votes 16: ↑15 and ↓1+14
Comments3

bcat: просмотр вывода консольных программ в браузере

Reading time2 min
Views8.4K
С удивлением обнаружил, что никто на Хабрахабре не писал про bcat. Это маленькая удобная утилита для просмотра вывода консольных программ в браузере. У вас есть скрипт, возвращающий HTML? Bcat! Нужен простой предпросмотр для README-файла с Markdown-форматированием, который вы только что дописали? Bcat! Пишете парсер веб-сайта, и хотите посмотреть, что за ошибку возвращает сайт? Bcat! Есть большой лог, и вы хотите, чтобы он отобразился чёрным по белому, и его было удобно читать? Ну, вы поняли, да? :)

Программа работает на Linux, Mac OS X и FreeBSD (и, теоретически, на любой UNIX-подобной платформе с интеграцией freedesktop.org).

Для установки bcat можно воспользоваться gem:

gem install bcat

Вместе с bcat устанавливается rack (если, конечно, он не был уже установлен до этого).

Для проверки можно попробовать открыть календарь на 2014 год:

python -c "import calendar ; print calendar.HTMLCalendar().formatyear(2014)" | bcat

Если в браузере открылась новая вкладка, и в ней отобразился календарь — значит, всё работает правильно.
Примеры
Total votes 33: ↑30 and ↓3+27
Comments21

2ndb — тетрадка для записей, которая изучает, а затем улучшает того, кто в ней пишет

Reading time18 min
Views15K
У вас есть такие друзья, которые всё время что-то записывают в тетрадку или в файлик в Google Docs? Вы спрашивали у них о том, зачем они это делают, и что именно они туда пишут? Если нет, то отвечу за них (не за всех, но за многих):

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

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

Именно такую систему я бы и хотел описать более подробно: программный продукт, способный собирать информацию (на начальных этапах это в основном те данные, которые пользователь предоставляет самостоятельно, регулярно занося их в систему) и, анализируя её, находить в ней различные тенденции, связывать разнообразные аспекты человеческой жизни по каким-либо общим параметрам (например, обнаруживая хронологическую связь) и информировать пользователя в том случае, если у системы есть для него какие-либо рекомендации, советы или предостережения.
Читать дальше →
Total votes 30: ↑16 and ↓14+2
Comments10

Пять вещей, которые нужно учесть, продумывая архитектуру интернет‑магазина

Reading time6 min
Views38K
Не секрет, что заказчики не всегда заранее знают обо всём, что им потребуется от разрабатываемого программного продукта. Многие из них также не могут отличить такие нововведения, которые можно легко добавить в уже готовую систему от таких, которые необходимо либо предусмотреть с самого начала, либо сразу готовиться к значительным правкам существующего кода, сложным миграциям данных, и, соответственно, значительным затратам времени.

Однако часто ситуацию можно значительно улучшить, если ещё до начала разработки попытаться угадать возможные желания клиента, и сразу объяснить ему, что решение нужно принять прежде, чем начинать работу, поскольку в ином случае (если он в дальнейшем передумает), придётся многое переделать, и это займёт много времени.

Давайте рассмотрим, что стоит сразу же учесть при обсуждении проекта интернет-магазина.
Читать дальше →
Total votes 29: ↑17 and ↓12+5
Comments14

Простым языком об HTTP

Reading time9 min
Views1.4M
Вашему вниманию предлагается описание основных аспектов протокола HTTP — сетевого протокола, с начала 90-х и по сей день позволяющего вашему браузеру загружать веб-страницы. Данная статья написана для тех, кто только начинает работать с компьютерными сетями и заниматься разработкой сетевых приложений, и кому пока что сложно самостоятельно читать официальные спецификации.

HTTP — широко распространённый протокол передачи данных, изначально предназначенный для передачи гипертекстовых документов (то есть документов, которые могут содержать ссылки, позволяющие организовать переход к другим документам).

Аббревиатура HTTP расшифровывается как HyperText Transfer Protocol, «протокол передачи гипертекста». В соответствии со спецификацией OSI, HTTP является протоколом прикладного (верхнего, 7-го) уровня. Актуальная на данный момент версия протокола, HTTP 1.1, описана в спецификации RFC 2616.

Протокол HTTP предполагает использование клиент-серверной структуры передачи данных. Клиентское приложение формирует запрос и отправляет его на сервер, после чего серверное программное обеспечение обрабатывает данный запрос, формирует ответ и передаёт его обратно клиенту. После этого клиентское приложение может продолжить отправлять другие запросы, которые будут обработаны аналогичным образом.

Задача, которая традиционно решается с помощью протокола HTTP — обмен данными между пользовательским приложением, осуществляющим доступ к веб-ресурсам (обычно это веб-браузер) и веб-сервером. На данный момент именно благодаря протоколу HTTP обеспечивается работа Всемирной паутины.
Читать дальше →
Total votes 94: ↑82 and ↓12+70
Comments35

Автоматизируем щелчки мышкой в Linux: xdotool

Reading time4 min
Views48K
Эта очень короткая заметка на примере активации ключей в Steam описывает процесс автоматизации операций, выполняемых при помощи мыши и клавиатуры.

Допустим, вы купили несколько наборов игр Humble Bundle. Теперь у вас есть, например, 5 ключей для активации в Steam. А может быть 15 или даже 25. Вы очень не хотите активировать их вручную, потому что это слишком муторно: в клиенте Steam нужно каждый раз наводить курсор на меню «Games», щёлкать, потом наводить курсор на пункт меню «Activate a Product on Steam…», опять щёлкать, потом нажимать Enter, потом ещё раз Enter, и только затем наконец-то вводить ключ (а потом нужно подождать, ещё раз нажать Enter, затем Escape). А потом повторять то же самое для каждого последующего ключа. Как писал Леонид Каганов, стоило ли вообще ради такого «прогресса» спускаться с пальмы и брать в руки каменный топор?

В общем, вы решили этот процесс автоматизировать — тем более, что задача-то, на самом деле, очень простая. Для её решения нам потребуются консольные утилиты xdotool и xclip — убедитесь, что они установлены у вас в системе.
Читать дальше →
Total votes 29: ↑27 and ↓2+25
Comments15

Всемирная база паролей к сетям Wi-Fi на вашем мобильнике

Reading time3 min
Views194K
Те из нас, кто много путешествует, наверняка не раз оказывались вот в такой ситуации: в городе, в который вы приехали, много беспроводных сетей, но все они с паролями (которых вы не знаете). Местной SIM-карты у вас нет, а интернет в роуминге у вас стоит как двигатель самолёта, на котором вы прилетели.

А вот здорово бы было, если бы хотя бы некоторые из этих паролей были бы вам известны. Давайте рассмотрим, как именно подобная система могла бы работать.
Читать дальше →
Total votes 63: ↑54 and ↓9+45
Comments72

Безграмотная мотивация — хуже отсутствия какой-либо мотивации

Reading time3 min
Views34K
Часто бывает, что какие-то бизнес-принципы одни компании копируют у других — просто потому, что директор компании когда-то где-то уже видел, как что-то было сделано в других компаниях, и, в силу отсутствия каких-либо знаний в соответствующей области, ему проще всего сделать у себя точно так же: вроде же как-то работает.

На самом деле в некоторых случаях это будет ошибкой. Один из довольно ярких примеров — мотивация персонала. Именно в разговорах о мотивации многие руководители проявляют вопиющую биологическую безграмотность.
Читать дальше →
Total votes 39: ↑31 and ↓8+23
Comments59

Вход на сайт с помощью авторизационного файла

Reading time2 min
Views14K
ИллюстрацияРанее я уже рассказывал о том, как можно добавить авторизационные QR-коды, чтобы пользователи, которые уже вошли на сайт на компьютере, могли сразу же также авторизоваться на мобильных устройствах (например, на планшете или мобильном телефоне), и при этом не вводить ни адрес сайта, ни логин, ни пароль. Справа изображён ещё один вариант авторизации — с помощью файла.

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

Исходный код (Python/Django) простого варианта реализации можно посмотреть здесь. В каждом авторизационном файле хранится некоторая сгенерированная случайным образом строка символов, для которой в базе данных на сервере есть хэш, привязанный к определённому идентификатору пользователя. Таким образом, время, необходимое на вход, минимально: после того, как пользователь перетаскивает авторизационный файл на страницу, JS проверяет размер файла, вставляет содержимое в специальное текстовое поле и тут же отправляет форму — никаких дополнительных действий для входа не требуется, даже кнопку «Войти» нажимать не нужно.
Читать дальше →
Total votes 34: ↑25 and ↓9+16
Comments42

Парное программирование как сервис

Reading time2 min
Views18K
Что, если можно бы было в тот момент, когда сталкиваешься с какой-то сложной задачей, которую уже достаточно долго не можешь решить самостоятельно (хоть и посмотрел всё, что можно было найти в Гугле на этот счёт), зайти на специальный сайт и попросить кого-нибудь посмотреть и помочь?

Речь идёт про теоретическую возможность сделать сайт для поиска напарников для па́рного программирования.

Бэндэр и Фрай

Когда кому-то нужна помощь, он заходит на сайт, нажимает на кнопку «Нужна помощь» и описывает суть проблемы.

Например:

Всем привет, меня зовут Антон, мне 12. Дело такое: друг написал сайт, но у него по-дурацки реализована защита от накрутки в форме голосования. Хочу продемонстрировать ему проблему в действии, но я никак не могу понять, как в Python правильно использовать CookieJar с urllib2 — серьёзно, какое-то запутанное API. Так в остальном у меня почти всё готово, осталось как раз вот поддержку cookies прикрутить. Буду рад, если поможете!

Время на реализацию (приблизительно): 30 минут
Время для связи: любой день недели, с 3 p.m. до 12 a.m.

python, cj, cookiejar, urllib2
Читать дальше →
Total votes 39: ↑30 and ↓9+21
Comments48

Пользуетесь ли вы кнопкой «стоп» в музыкальном проигрывателе?

Reading time1 min
Views18K
В последние несколько лет появилась тенденция убирать кнопку «стоп» из интерфейса музыкальных проигрывателей. Например, такой кнопки нет в Ubuntu (Rhythmbox), в Mac OS X (iTunes), в Android, в iOS.

Так, в случае с Rhythmbox, если у вас нет кнопки «стоп» на мультимедийной клавиатуре (в этом случае «стоп» всё-таки работает — хотя в интерфейсе нет ни кнопки, ни пункта в меню), чтобы добиться эффекта, который был бы от кнопки «стоп», нужно поставить музыку «на паузу», и затем закрыть Rhythmbox. Либо выбрать последнюю композицию и промотать её до конца.

Иначе при нажатии на «плэй» воспроизведение начнётся с того же места (что вполне логично для кнопки «пауза»), что далеко не всегда уместно (особенно для музыки). Либо придётся вместо «плэй» нажимать на кнопку для воспроизведения предыдущей композиции (для того, чтобы начать воспроизведение текущей композиции сначала).

Лично вам нравится такое решение? Вы согласны с тем, что кнопка «стоп» — лишняя? Или всё-таки не стоило её везде убирать?
Total votes 38: ↑22 and ↓16+6
Comments73

Django: Использование QR-кодов для быстрого входа на сайт с мобильных устройств

Reading time9 min
Views22K
Если у вас есть сайт, которым часто пользуются с мобильных устройств (таких как телефоны и планшетные ПК), то вы, возможно, задавались вопросом, как реализовать быстрый вход — так, чтобы пользователю не требовалось вводить ни адрес сайта, ни логин и пароль (либо E-mail и пароль).

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

Скриншот с экрана мобильного телефона

Кстати, весь процесс написания приложения, которое приводится далее, можно посмотреть в скринкасте (есть на YouTube, либо в более хорошем качестве в виде файла MPEG2 в 1080p).
Читать дальше →
Total votes 22: ↑19 and ↓3+16
Comments11

Песни об IT

Reading time2 min
Views14K
Дорогие хабраюзеры! Хочу поздравить вас с Днём гордости гиков!

Этот праздник ежегодно отмечают все те, у кого есть любые нетрадиционные увлечения и интересы, которые они не боятся и не стесняются демонстрировать публике.

И, поскольку у нас есть такой хороший повод, то давайте вспомним некоторые песни, которые напрямую относятся к жизни IT-гиков. Если вы вспомните ещё какие-то интересные песни, добавляйте их в комментарии.
Читать дальше →
Total votes 85: ↑60 and ↓25+35
Comments60

Information

Rating
Does not participate
Location
Харьков, Харьковская обл., Украина
Date of birth
Registered
Activity