Search
Write a publication
Pull to refresh
52
0
Андрей Кравчук @prefrontalCortex

Software Engineer

Send message

Искусство публичных выступлений в историях о жизни

Reading time8 min
Views15K
1 спасибо всем, кто комментировал предыдущую статью на эту тему. Новая статья — для тех, кто задавал вопросы, и для тех, кто чувствует себя опытным докладчиком. Как и раньше, все советы здесь — это мой опыт. У кого-то сработает то, что сработало у меня, у кого-то — что-то иное. Волшебных таблеток и истин в последней инстанции в тексте нет.

Особое спасибо karellen за ссылку на книгу Pitch Anything. У karellen безусловно стоит поучиться: написав в комментарии к моей предыдущей статье, что в этой книге «автор очень убедительно опровергает почти все эти «истины»», он заинтриговал меня. Интересно же: кто-то опровергает то, что у меня отлично работает. Я, конечно, полез на Амазон, купил kindle-версию книги и читал ее с большим удовольствием. Книга на самом деле ничего не опровергает: я рассказывал, что именно я делал, чтобы выступать интересно, а в книге рассказано, почему надо делать именно так. Книгу безусловно стоит прочесть, тем более, что написана она на довольно простом английском.

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

Перед тем, как благодарить, посмотрите habrahabr.ru/post/57913 — я не со всем согласен, но интересно все равно. Там как раз товарищ возмущается дурацкими началами докладов.
Налаживайте контакт, вовлекайте аудиторию в разговор, если она спит. Хороший способ для больших залов (человек двести и больше) — заставить одну половину аудитории кричать один короткий слоган или слово, а другую — другой. А потом — все вместе что-то общее. Работает на слоганах, хорошо разбираемых на части, и вызывающих энтузиазм у значимой части аудитории, например: «Россия — вперед!», «Уралмаш — чемпион!», «PHP — рулит!» и т.п.
Читать дальше →

Интересные результаты о эволюционной систематике прокариот или «многовидовое происхождение»

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

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

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

Известно, что в рибосомах прокариот и эукариот присутствуют 3 типа рРНК. Информационная емкость крупных молекул больше, но их труднее анализировать. Поэтому наиболее удобным оказался анализ молекул рРНК средней величины: 16S (~1600 нуклеотидов). Систематика основывается на расчете коэффициентов сходства сравниваемых организмов. Именно на основании анализа рРНК современная систематика выделяет три домена бактерии, археи и эукариоты, а так же на этом основывается систематика, бактерий и архей X издания Берги.

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

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

Смотрим, что из этого получилось.

Читать дальше →

Первые шаги с OpenCL или сказ о том как одинаковый код на GPU и CPU запускать

Reading time15 min
Views59K
Итак, прошел почти год с момента моего первого поста о программировании видеокарт и страшилок о том, как это все сложно. Теперь настала пора показать, что все не так плохо и как пользоваться этой странной штукой по имени OpenCL, да еще и использовать его главное преимущество, то есть возможность запускать один и тот же код на разных девайсах. А еще я покажу как можно получить на порядок большую производительность обычного процессора практически бесплатно.
За деталями под кат...

vmd — консольное приложение для скачивания музыки из vk.com

Reading time2 min
Views9.6K
У вас в vk.com есть любимые музыкальных группы или друзья, с которыми ваши музыкальные вкусы совпадают? У меня да. И хотелось иметь актуальную локальную копию музыки этих групп и друзей, чтобы слушать её, например в машине, телефоне, плейере или где-нибудь ещё. Так родилась идея создания консольного open source приложения vmd (vkontakte music downloader), которое я обещал выложить на github вот в этом посте. Программа мультиплатформенная работает под linux, windows и mac os x. Скачать бинарные сборки под эти ОС можно скачать на домашней странице проекта. Под хабракатом рассказано, как vmd использовать и некоторые технические подробности.
Читать дальше →

Экспорт избранного Хабра в FB2

Reading time2 min
Views9.7K
Ненавижу длинные вступления
И поэтому не буду писать их даже под спойлером.

  • Зачем?
    • Для оффлайнового просмотра на читалках.
  • Моя читалка не поддерживает FB2!
  • Хочу!
    1. Обзаводимся Python 2.7+. Тестировалось на Python 2.7.3.
    2. Ставим библиотеку BeautifulSoup 4. Вкратце варианты:
      • apt-get install python-beautifulsoup4
      • easy_install beautifulsoup4
      • pip install beautifulsoup4
      • Исходники и python setup.py install
    3. Качаем код из репозитория (прямая ссылка на последнюю версию).
    4. Открываем файл habrafav.py и в строке username = ... прописываем свой логин.
    5. python habrafav.py (или просто habrafav.py под Windows)
    6. Ждём. У меня с кэшированными данными экспорт ~150 статей занимает около 6 минут и 600 Мб оперативной памяти.
    7. Забираем habrahabr_favorites.fb2. Мой занимает примерно 62 Мб.

Читать дальше →

Исходники бесплатны, бинарники — за деньги

Reading time2 min
Views3.2K
Разработчик Open Source программ Брайан Ландюк (Bryan Lunduke) придумал интересную модель монетизации Open Source. Он полностью убирает с сайта страницу со ссылками на дистрибутивы программ. При этом все программы доступны под GPL в виде исходных кодов, и каждый может их взять и скомпилировать.

Те пользователи, которые перечислят добровольное пожертвование (кнопочка Donate), автоматически получат «волшебное» письмо с прямыми ссылками на исполняемые файлы, библиотеки и инсталляторы. Вроде бы, такой способ распространения свободного ПО не противоречит лицензии GPL.
Читать дальше →

Неделя удивительных подарков. Отличные ресурсы с нужной лицензией

Reading time3 min
Views14K
Привет, хочу сказать, что мне очень нравится делать подборки для хабры. Много положительных отзывов, много комментариев, а значит моя работа полезная и я ее делаю не зря. Поэтому сегодня я хочу представить вам собрание различных ресурсов, на которых любой дизайнер сможет найти много полезного и интересного. Кому интересно, прошу под кат.
Читать дальше →

Пользователи Android ничего не знают о своих смартфонах?

Reading time2 min
Views30K
Биржевой блог The Street обычно следит за взлетами и падениями на бирже, но смартфонный бизнес настолько интересует сейчас всех, что авторы включили и его в сферу своих интересов. На прошлой неделе The Street на основе полученных статистических данных пришел к выводу, что пользователи Android ничего не знаю о своих телефонах.



Редакция утверждает, что большинство пользователей платформы получили ее вместе с дешевыми или вообще бесплатными телефонами и вообще не привязаны к ней. Сайт говорит, что многие пользователи Android переходят на смартфоны с featurephon-ов и перегружены возможностями ОС. Частично их выводы основаны на данных comScore, в которых говорится, что 70% пользователей Android не знают как получить доступ к Wi-Fi на своем устройстве. В тоже время только 29% пользователей Apple iPhone в США соединяются с Сетью используя сотовых операторов. С другой стороны месяц назад 68% пользователей Android использовали операторов для доступа в интернет.
Но есть и другое мнение...

Современные аналоговые компьютеры: есть будущее?

Reading time5 min
Views35K
Большинство из нас связывает развитие информационных технологий с цифровой революцией. Появление микропроцессоров, конечно, вывело электронику на принципиально новый уровень. Уже гонки за обладание самым мощным суперкомьютером потеряли свой научный шарм — терафлопсы прямо зависят от количества денег и свободного места. Докупай серверов и увеличивай вычислительную емкость.

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

До цифровой эпохи развивалось направление аналоговых компьютеров.
Где они сейчас? Есть ли им применение?

Контракты vs Юнит тесты

Reading time5 min
Views7.9K
DISCLAIMER: Эта заметка подразумевает наличие у читателя базовых знаний о юнит тестах, в чем автор этих строк не сомневается, а также базовых знаний о проектирование по контракту, которые можно пополнить начиная отсюда.

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

Итак, давайте вкратце рассмотрим, в каком именно месте находится пересечение контрактов и юнит тестов, и постараемся ответить на вопрос: являются ли постусловия избыточными при наличии юнит тестов?

Читать дальше →

Сравнительная таблица 39 одноплатных компьютеров

Reading time1 min
Views58K
ongFiRE сделал сравнительную таблицу 39 одноплатных компьютеров в PDF!

В таблице присутствуют:
Raspberry Pi Model B, MK802, Mele A1000, Rhombus-Tech A10 EOMA-68, Gooseberry board, A13-OLinuXino, VIA APC, ,IA ARTiGO A1200, VIA ARTiGO A1150, BeagleBoard Rev. C4, BeagleBoard-xM, BeagleBone, PandaBoard, PandaBoard ES, Cotton Candy, CuBox, Hawkboard, IGEP v2, IGEP COM Proton, IGEP COM Module, Gumstix Overo series, Origen Board, ,Nimbus, Stratus, SheevaPlug dev kit (Basic), GuruPlug Standard, GuruPlug Display, DreamPlug, D2Plug, Trim-Slice series, Snowball, i.MX53 Quick Start Board, Pineriver H24/MiniX, Smallart UHOST, Genesi Efika MX Smarttop, Embest DevKit8600, Embest SBC8018, Embest SBC8530, Embest DevKit8500D
Читать дальше →

Пакеты, системы, модули, библиотеки — КАКОГО?

Reading time5 min
Views7.5K


По моим наблюдениям, минимум раз в неделю в списке c.l.l или другом Lisp-списке «новички» путаются в том, что связано с пакетами. Говорят о «загрузке» пакета, «требовании» (requiring) пакета, удивляются тому, что после загрузки системы нужно пользоваться маркерами пакетов и т.д. Меня это раздражает, думаю также, что это может быть одной из причин, почему начинающие считают, что использование библиотек в Lisp сложнее, чем есть на самом деле.

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

Юнит-тестирование в Qt

Reading time6 min
Views86K

gollum подметил что в тексте картинки есть ошибка

Салют, хабр! Как дела?

Хотел немного подучится чему-то. Искал на хабре в хабе «Qt Software» хоть какой-то пост про юнит-тестирование в Qt. Не нашел. Тут я расскажу базовые вещи про юнит-тестирование на Qt (не ожидайте могучего шаманства). На самом деле, юнит-тестить в Qt довольно просто. Что бы узнать как это делать, приглашаю читать дальше.
Читать дальше →

VK::App — модуль для создания клиентских приложений в vk.com

Reading time3 min
Views27K
Хочу рассказать о своем модуле VK::App для создания клиентских приложений в социальной сети vk.com. Основные возможности модуля:
  • Авторизация, основанная на OAuth 2.0, по логину/паролю или cookies.
  • Установка прав доступа, которые потребуются приложению.
  • Выполнение любых запросов VK API и получение результата в JSON, XML или Perl Object виде.
Модуль использует минимум зависимостей: только LWP и JSON.
A пользоваться им очень просто

Метаклассы в Python

Reading time10 min
Views205K
Как сказал один из пользователей StackOverflow, «using SO is like doing lookups with a hashtable instead of a linked list». Мы снова обращаемся к этому замечательному ресурсу, на котором попадаются чрезвычайно подробные и понятные ответы на самые различные вопросы.

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

Читать дальше →

Соглашение внутри команды

Reading time3 min
Views4K
Привет, у нас довольно большой поток разношерстных проектов. В какой-то момент нам пришла в голову светлая идея создать внутреннюю хартию ведения проектов, с которой соглашается каждый участник команды. Есть надежда, что это сократит издержки, увеличит качество и уменьшит количество неразберихи, позволит проще вводить новых «игроков» и вообще В качестве системы управления проектами выбрана Redmine, и надо сказать даже в default устанвоке эта штука правильно решает много вопросов за тебя: разделение на Ошибка\Улучшение, интеграция Git, лог действий, подпроекты, удобная Wiki и.т.д.
Наш вариант

Развертывание радиостанции на GNU/Linux. Часть I

Reading time5 min
Views20K
Прежде всего, хочу сказать, что я читал на хабре много топиков о развертывании радио, но ни один не дал мне исчерпывающей информации.
Я решил все сделать сам. Это не какой-то проект или стартап, а просто just4fun. Возможно, это покажется полезным для вас.
Итак, я использовал только свободное ПО в развертывании радио-стрима, так что пользователи window$ и ma o$ могут дальше не читать ;). Хотя нет, все же прочитайте, возможно это откроет вам GNU/Linux с новой стороны.

Читать дальше →

Формирование высокоуровневых признаков с помощью широкомасштабного эксперимента по обучению без учителя

Reading time5 min
Views25K
В статье Распознавание лиц человеческим мозгом: 19 фактов, о которых должны знать исследователи компьютерного зрения упоминался экспериментальный факт: в мозге примата имеются нейроны, селективно реагирующие на изображение морды лица (человека, обезьяны и т.п.), причем средняя задержка составляет около 120 мс. Из чего в комментарии я сделал дилетантский вывод о том, что зрительный образ обрабатывается прямым распространением сигнала, и количество слоёв нейронной сети — около 12.

Предлагаю новое экспериментальное подтверждение этого факта, опубликованное concretely нашим любимым Andrew Ng.
Читать дальше →

Кормление и уход за разработчиками (или почему мы такие ворчуны)

Reading time22 min
Views28K
Прим. переводчика — В оригинале использовался всем знакомый термин «software engineer». Так как русский его аналог «инженер-программист» используется в повседневной речи редко, пришлось использовать слово «разработчик» как наиболее близкое. Также профессия «short-order cook», с которой автор сравнивает положение многих разработчиков в индустрии, была переведена как «мальчик на побегушках» — мне кажется, что она отлично отражает суть проблемы отношения к разработчикам. Наконец, я старался везде вместо слов «to code» и «programming» использовать «разрабатывать» и «разработка» из-за сложившемся в русском языке негативном смысле слов «кодировать» и «программирование» как примитивных процессов перевода требований в машинные инструкции низкого или высокого уровня.

Автор оригинальной статьи — Nickolas C. Zakas, известный фронтенд разработчик и JavaScript-евангелист в свое время проработавший более пяти лет в Yahoo. Это запись из его блога, в которой он говорит о том, почему с разработчиками так сложно договориться и что с этим делать.


Не так давно Дженна Байлотта написала замечательную статью «Как дизайнерам ужиться с разработчиками», в которой она описывает методы работы в команде, позволяющие дизайнерам и разработчикам добиться лучшей производительности. Я в свое время работал с дизайнерами (а, работая в UI, и с разработчиками) и столкнулся с похожими проблемами, так что мне понятен ее практичный подход. Во время командной работы никогда не помешает уважать труд своих коллег и понимать их способ мышления.

Одна из главных мыслей той статьи заключалась в том, что разработчики говорят «нет» слишком быстро. Эта мысль тут же въелась мне в мозг и долго отказывалась вылезать оттуда. Мне хотелось воскликнуть: «Но подожди, ты же не понимаешь, почему мы говорим „нет“!». Тут же появился миллион других защитных аргументов. На самом деле она, конечно, права — мы правда слишком быстро говорим «нет», причем не только дизайнерам, а вообще всем. Это побудило меня поразмыслить над психологией разработчиков и тем, что составляет нашу истинную суть.
Читать дальше →

Information

Rating
10,856-th
Location
Подгорица, Подгорица, Черногория
Works in
Date of birth
Registered
Activity

Specialization

Software Developer, Fullstack Developer
Senior
From 5,000 €
Lisp
Clojure
Unix
Linux
Docker