Pull to refresh
-1
0
Евгений Васильев @johny

User

Send message

О гриппе А (H1N1) с точки зрения программирования

Reading time6 min
Views17K
Учёные уже полностью дизассемблировали H1N1 и занесли его в вирусную базу NCBI Influenza Virus Resource. Там всё задокументировано в подробностях. Например, образец A/Italy/49/2009(H1N1) был обнаружен в носу 26-летней женщины, вернувшейся из Италии в США. Вот первые 120 бит его генетического кода.

atgaaggcaa tactagtagt tctgctatat acatttgcaa ccgcaaatgc agacacatta

Сколько бит убьёт человека?
По приблизительным подсчётам, общий размер исходников H1N1 составляет 26 022 бит, а если исключить служебные стоп-сигналы (указывают на окончание каждой белковой последовательности), то исполняемый код состоит примерно из 25 054 бит. Это число является приблизительным ещё и потому, что в вирусе присутствует механизм генерации избыточного мусора для маскировки от антивирусов.

Итак, получается около 25 килобит или 3,2 килобайта. Таков объём кода для программы, имеющей ненулевые шансы убить человека. H1N1 написан гораздо эффективнее, чем компьютерный вирус MyDoom размером около 22 КБ.

Очень унизительно, что меня могут убить всего 3,2 КБ генетических данных. Впрочем, в 850 МБ человеческого генома по любому должны быть дыры для парочки эксплойтов.
Читать дальше →

Различный рендеринг таблиц современными браузерами

Reading time1 min
Views482
При верстке сложных таблиц обнаружились отличия в рендеринге таблиц разными браузерами. [upd]Браузеры не знают какую ширину ставить у ячеек в неочевидных ситуациях. Safari рендерит ближе к IE, Fox и Opera — по своему. Это создает проблемы. Мне было необходимо, чтобы ячейки имели наименьшую ширину.

такие дела

Demo
  • Safari 4.0.2 Mac
  • Opera 9.64 Mac
  • Firefox 3.5.2 Mac
  • IE 6.0.2900.2180.xpsp_sp2_rtm.040803-2158

Раздаем права на запуск/остановку сервисов под Windows

Reading time3 min
Views56K
Буквально сегодня понадобилось дать человеку возможность перезапускать тестовый вебсервер под виндой.
Права админа давать естественно давать не хочется.
«Мощный» юзер не подходит.

букв много
Читать дальше →

Лучшее время для изучения микроконтроллеров

Reading time12 min
Views213K
image
Признайтесь, как часто вы думали о том, чтоб освоить азы программирования микроконтроллеров? Наверняка у вас есть в голове несколько идей потенциальных проектов, но воплощать их в жизнь вы так и не взялись. Так вот: лучше времени для старта, чем сейчас просто не найти.

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

С другой стороны, в моём текущем окружении очень много программистов, но почти нет имбедеров. Когда я разговариваю с ними на тему микроконтроллеров, у меня создаётся впечатление, что мнение о них у многих осталось на уровне 10-летней давности.
Читать дальше →

Собираем CarPC на Android: недостроенный долгострой

Reading time12 min
Views401K


Моя машина меня устраивает почти всем. Есть практически все, что нужно. В комплектации блютусный телефон, кнопочный климат-контроль, электростеклоподъемники на всех дверях, подогрев сидений, подогрев, регулировка и складывание зеркал, чип-ключ, CD-чейнджер на 6 дисков, но без MP3 и линейного входа. Вот этот прискорбный факт и привел меня к мысли начать собрать свой CarPC на базе андроида. Начал рассматривать варианты и покатился… появилось много идей.
Хочу поделиться с Вами!

Распределенный аудиоплеер на Odroid U2

Reading time5 min
Views61K

Однажды я заметил, что довольно много времени я провожу на кухне, куда звук от колонок, расположенных в комнате доходит плохо. И тогда мне захотелось сделать хороший бесшумный плеер, способный синхронно воспроизводить музыку в нескольких комнатах. Конечно проблему можно было решить простым поворотом регулятора громкости, но этот способ был отброшен как негуманный по отношению к соседям. Другой важный момент заключался в том, что я хотел использовать те же колонки для вывода звука с компьютера. Зачем мне иметь несколько комплектов аккустики в одной комнате?
Пост получился довольно длиннный, так как я старался уделить внимание соображениям, по которым я выбирал то или иное решение.
Читать дальше →

Основы репликации в MySQL

Reading time10 min
Views333K
С репликацией серверов MySQL я познакомился относительно недавно, и по мере проведения разных опытов с настройкой, записывал, что у меня получалось. Когда материала набралось достаточно много, появилась идея написать эту статью. Я постарался собрать советы и решения по некоторым самым основным вопросам, с которыми я столкнулся. По ходу дела я буду давать ссылки на документацию и другие источники. Не могу претендовать на полноту описания, но надеюсь, что статья будет полезной.
Читать дальше →

Почта без оленей

Reading time10 min
Views55K
Этот пост для тех, кому интересно, как в Яндексе создаются интерфейсы продуктов с многомиллионной аудиторией. Мы хотим максимально подробно рассказать, почему решили создать новую почту Trinity, чем руководствовались в работе над ее дизайном, поделиться с вами решением логических проблем.

На самые популярные и важные вопросы дизайнер нового интерфейса Анна Котляревская ответила в интервью:



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



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

Базовые темы популярных CMS на Twitter Bootstrap

Reading time1 min
Views47K
Все мы любим популярный CSS-фреймворк Twitter Bootstrap, облегчающий разработку. За год существования многие CMS обзавелись базовыми темами на основе Bootstrap. Представляю вашему вниманию подборку таких шаблонов.

Wordpress


BootstrapWP


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

XMPP-SMS шлюз на Android

Reading time11 min
Views20K


Введение

Причиной написания данной статьи послужила необходимость создания программы для системы Android, с помощью которой можно отправлять данные заказа в виде SMS сообщений владельцам интернет магазинов о том, что был совершен заказ товаров или услуг. Ранее мною использовалась система включающая GSM-модем и программу написанную на языке С++, использовавшая AT-команды для общения с модемом и библиотеку gloox для получения сообщений по протоколу XMPP, на стороне web-сайта использовалась библиотека xmpphp, для отправки данных заказа. При такой схеме приходилось держать включенным компьютер постоянно, так как система приема заказов работала круглосуточно, соответственно отсюда дополнительный расход электроэнергии, шум от вентиляторов ночью и постоянный контроль интернет соединения.
Читать дальше →

Сниппеты для Twitter Bootstrap

Reading time1 min
Views97K
Фреймворк Twitter Bootstrap уже давно стал одним из самых любимых средств ленивых сторонников быстрого прототипирования и разработки интерфейсов, а где популярность там много разных сторонних интересных штук.
На этот раз я случайно попал на пополняющуюся коллекцию сниппетов.
Думаю многим пригодится, сейчас там набор небольшой (23 штуки), но уже достаточно полезный чтобы поделиться.
Кликабельные картинки:

Интерфейс аля gmail



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

Unix как IDE: Работа с текстом

Reading time6 min
Views29K
Текстовый редактор — это основной инструмент для любого программиста, вот почему вопрос его выбора становится причиной яростных дебатов. Unix традиционно тесно связан с двумя своими многолетними фаворитами, Emacs и Vi, и их современными версиями GNU Emacs и Vim. Эти редакторы имеют очень разный подход к редактированию текста, но при этом сравнимы по мощи.

Поскольку я отношусь к секте Vim, далее мы обсудим неисчерпаемые возможности этого редактора, а также инструменты командной строки, вызываемые прямо из Vim для расширения встроенной функциональности. Некоторые из обсуждаемых дальше принципов могут быть применимы и для Emacs, но не для простых редакторов, вроде Nano.
Читать дальше →

Написание программ на PHP с использованием fork()

Reading time5 min
Views38K

Параллельные программы на PHP


Раньше заголовок темы был «Написание многопоточных программ на PHP». В PHP есть ровно один «нормальный» способ писать приложения, которые используют несколько ядер/процессоров — это fork(). О прикладном использовании системного вызова fork() в языке PHP и расширения pcntl я и расскажу. В качестве примера мы напишем достаточно быструю параллельную реализацию grep (со скоростью работы, аналогичной find . -type f -print0 | xargs -0 -P $NUM_PROCS grep $EXPR).
Читать дальше →

Сравнение алгоритмов вычисления чисел Фибоначчи

Reading time3 min
Views9.1K
В комментариях к статьям N-е число Фибоначчи за O(log N) и Еще один алгоритм вычисления чисел Фибоначчи указывалось на тот факт, что уже 100-е число Фибоначчи не помещается в 4 байта, а в «длинной» арифметике скорость выполнения умножения резко просядет. Более того, были предположения, что примитивное сложение может оказаться быстрее. Я решил сравнить 2 алгоритма — простое сложение и алгоритм с логарифмическим количеством операций — и написал тестовую программу на С. Для «длинной» арифметики использовал библиотеку GMP.
Читать дальше →

Принцип цикады на чистом CSS

Reading time2 min
Views14K
Принцип цикады позволяет строить очень длинные неповторяющиеся фоны веб-страниц из нескольких простых изображений. Он был впервые описан Алексом Уокером в апреле 2011 года и быстро завоевал популярность. На сайте designfestival.com появилась целая галерея фонов, сделанных по этому принципу.

Во многих случаях можно сэкономить ещё больше, используя градиенты. Даже с учётом того, что пока практически все браузеры поддерживают свойство linear-gradient только с префиксами, суммарный объем кода CSS, необходимый для создания фона, в несколько раз меньше размера нескольких PNG с фрагментами, и, что ещё важнее — вообще не требует лишних запросов к серверу. Так, Эрик Мейер недавно привёл пример реализации первых двух фонов из оригинальной статьи Уокера на чистом CSS. Для простых цветных полосок (вверху) понадобилось 2.66 Кб кода CSS (с префиксами, без минификации и компрессии). В будущем, когда все популярные браузеры избавятся от префиксов, будет достаточно 0.59 Кб кода. В оригинальном примере изображения весили около 6 Кб + 3 запроса к серверу. Второй пример с занавесом (внизу) впечатляет ещё больше. Даже с префиксами получается примерно десятикратный выигрыш.
Читать дальше →

Записи с летней школы по Metro-дизайну

Reading time1 min
Views15K


Друзья, как вы, наверняка, знаете, буквально в прошедшие выходные (13-14 июля) мы проводили летнюю школу по Metro-дизайну для Windows Phone и Windows 8. Рады сообщить, что записи лекций уже доступны на TechDays!
Под катом ссылки на отдельные лекции

SQL injection для начинающих. Часть 1

Reading time5 min
Views805K

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

Вычислительная геометрия, или как я стал заниматься олимпиадным программированием.Часть 1

Reading time8 min
Views136K
Здравствуйте, уважаемые хабравчане! Это моя вторая статья, и мне хотелось бы поговорить о вычислительной геометрии.

Немного истории


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

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

Мне очень нравится подход моего преподавателя: «разберись с этой темой, а потом расскажи нам, да так чтоб мы все поняли».

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

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

Восстановление расфокусированных и смазанных изображений. Практика

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

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

Ниже показан результат обработки реального размытого изображения (не с синтетическим размытием). Исходное изображение было получено камерой Canon 500D с объективом EF 85mm/1.8. Фокусировка была выставлена вручную, чтобы получить размытие. Как видно, текст совершенно не читается, лишь угадывается диалоговое окно Windows 7.



И вот результат обработки:



Практически весь текст читается достаточно хорошо, хотя и появились некоторые характерные искажения.

Под катом подробное описание проблем деконволюции, способов их решения, а также множество примеров и сравнений. Осторожно, много картинок!
Читать дальше →

Information

Rating
Does not participate
Location
Новосибирск, Новосибирская обл., Россия
Registered
Activity

Specialization

Fullstack Developer
Lead