Search
Write a publication
Pull to refresh
15
0
Denis Savitskiy @qweewq

Разработчик приложений и сайтов

Send message

Разбор финальных задач Яндекс.Алгоритма 2014

Reading time9 min
Views59K
1 августа в офисе Яндекса, открывшемся недавно в Берлине, состоялся финал нашего чемпионата по программированию. И его победителем снова стал известный всем, кто интересуется спортивным программированием, Геннадий Короткевич.

Задания для Алгоритма готовила международная команда. В нее вошли программисты из России, Беларуси, Польши и США. Это специалисты МГУ имени М.В. Ломоносова, Университета Карнеги-Меллон, сотрудники Яндекса и Google. В Яндексе задачи составляли разработчики минского и киевского офиса, а потом проверяли их на своих коллегах. Один из составителей в прошлом году сам был финалистом Алгоритма. Специально для Хабрахабра мы разобрали с авторами все задачи. Кстати, несмотря на то, что соревнование завершено, вы можете попробовать себя в вирутальном контесте.



На победу претендовали многие финалисты. Среди них были победители и призеры АСМ ICPC и TopCoder Open, разработчики Google и Facebook. В финальном раунде сражались призёры Алгоритма-2013 Евгений Капун и Ши Бисюнь, чемпион АСМ ICPC Михаил Кевер, а также один из самых титулованных спортивных программистов мира Пётр Митричев. В этом году побороться за приз решил также Макото Соэдзимо — составитель заданий для Алгоритма-2013 и администратор TopCoder Open.

Борьба за первое место разгорелась между Геннадием Короткевичем и Хосакой Кадзухиро из Токийского университета. Лучший результат — четыре задачи при 66 минутах штрафного времени — показал Короткевич, подтвердив титул чемпиона. Кадзухиро решил столько же задач, но набрал больше штрафного времени (90 минут) и занял второе место. Третье место завоевал Ван Циньши из университета Цинхуа: он решил четыре задачи при 125 минутах штрафа.
Читать дальше →

Опыт производства партии Wiren Board Smart Home

Reading time5 min
Views31K


Краткая предыстория


На базе нашей платформы Wiren Board (компактный индустриальный компьютер с Linux и разными интерфейсами) мы сделали навороченный контроллер для домашней автоматизации Wiren Board Smart Home, к которому можно подключить кучу проводных и беспроводных устройств от разных систем и производителей. В устройстве есть ARM9 64MB RAM, GSM/GPRS, Ethernet, Wi-Fi, USB, 2xRS-485/Modbus, CAN, 2 реле, ASK/FSK радиомодуль 433MHz, NRF24L01 — полное описание здесь.

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

Домофонный мультиключ и всё про имитацию «таблеток»

Reading time9 min
Views526K
Да, это жутко избитая тема. Универсальный домофонный ключ «таблетку» делал наверное каждый второй, кто начинал изучать микроконтроллеры. В Интернете очень много и статей на эту тему, и готовых решений. Однако, интерес к этому угасать не перестаёт даже с массовым переходом на RFID. Это не удивительно, ведь многим хочется собрать такое устройство, которое выполняет не только весьма интересную задачу, но ещё и всегда с собой. К тому же оно не такое уж сложное в изготовлении.

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



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

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

Maxmertkit. Идеальный css-фреймворк

Reading time29 min
Views48K


Всю документацию на английском языке вы сможете прочесть на maxmert.com.

Требования и задачи


При создании версии 1.0 мне пришлось пересмотреть основные требования к фреймворку:

  • Возможность легко добавить/удалить размер или тему. Json-файл с прописанными темами и размерами для каждого виджета. Таким образом можно конфигурировать фреймворк исправляя json-файл.
  • Модульность. При отключении или добавлении любого виджета фреймворк должен стабильно работать (привет bootstrap).
  • Особое именование классов для избежания переопределения пользовательских классов.
  • Javascript компоненты без jQuery (но с возможностью его использования, если он подключен).


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

Осторожно! Трафик.
Читать дальше →

Как собрать WhatsApp за сутки. Часть 1

Reading time12 min
Views112K


Здравствуйте, дорогие читатели Хабрахабра!

В этой серии статей я расскажу, как быстро и почти безболезненно поднять свой собственный WhatsApp под iOS. Статью делю на две части для вашего удобства:

  1. Создание проекта, простой UI, привязка к сервису мгновенных сообщений
  2. Делаем красивый UI, добавляем видео и аудио звонки, передачу фото и документов

К сожалению, пособие о том, как набрать 400 000 000 пользователей и продать сервис за 19 Инстаграмов, затерялось где-то на книжной полке. Постараюсь его найти, если кому интересно.

Заинтересовавшихся прошу под кат.
Читать дальше →

Как я фотоаппарат покупал

Reading time6 min
Views112K


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

Итак, началось всё с обзвона условно-доступных магазинов: их нашлось около десятка.

Дыра 8-800


У нескольких магазинов стоит автоответчик на 8-800 — это хорошая дыра для атаки на переполнение бюджета. Уязвимость давно описана – конкуренты могут делать ботом четырёхсекундные звонки на номер 8-800, и, не дожидаясь живого оператора, класть трубку. За 800 платит владелец (магазин), поэтому в конце месяца при таком раскладе может приехать большой счёт. Я почти уверен, что грамотный админ отследит такие ситуации – но не уверен, он есть у маленьких магазинов. Собственно, мы сами узнали об этом из топика на Хабре и сразу закрыли дыру.
Проверьте, как у вас.
Читать дальше →

Собираем и анализируем логи с помощью Lumberjack+Logstash+Elasticsearch+RabbitMQ

Reading time9 min
Views44K
Добрый день.

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

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

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

Почему? Maxifier представляет собой SaaS-продукт с клиентами в США, Бразилии, в нескольких странах Европы и в Японии, так что у нас около сотни серверов, раскиданных по всему миру. Для оперативной работы нам необходимо иметь удобный доступ к логам наших приложений и быстрый поиск ошибок в них в случае проблем на сторонних сервисах/api, появления некорректных данных т.д. Кстати, похожей системой сборки логов пользуются The Guardian (одни из наших клиентов).

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

Умный дом, как я до такого докатился. Часть 2-я

Reading time5 min
Views289K

В первой части я рассказал о причинах, побудивших меня заняться построением своего “умного дома”, и об используемом “железе”.
Но “железо”, само по себе, умным быть не может, главное это “софт”. Вот об этой стороне своего проекта я и хочу рассказать в этой части. Банальное управление освещением с пульта, конечно, выглядит круто в глазах непосвященной публики, но “ума” тут никакого.
Так что же такого умного можно сделать? И, главное, как?
Читать дальше →

Несколько интересностей и полезностей для веб-разработчика #13

Reading time4 min
Views46K
Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

Colour Schemes


image
Репозиторий уже набрал более 4000 старов на GitHub. Автор проекта — Dayle Rees — один из участников команды Laravel PHP, где люди убеждены, что «код должен приносить удовольствие разработчикам, а не только пользователям, принимающим вашу трудную работу». Сolour Schemes на сегодняшний день это 56 различных тем для: Sublime Text (2 & 3), Sublime Text UI (2 & 3), Textmate, Coda 2, VIM, Jetbrains Editors (inc. PHPStorm), Google Code Prettify, Highlight.js и Xcode.

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

Эмиграция в Польшу как студент либо как фрилансер

Reading time11 min
Views195K
Прокомментировав хорошую статью IT-эмиграция в самое сердце Европы, в Словакию я получил сразу же много писем по внутренней почте хабра с вопросами по этому поводу, и с просьбами рассказать подробнее. Увидев такой ажиотаж, решил что не будет лишним попробовать расписать подробно для широкой аудитории.
Так как я переезжал вместе с девушкой, которая ехала сюда учиться на магистратуру, то у меня есть возможность описать оба способа переезда, вместе с подводными камнями с которыми мы сталкивались. Таким образом статья разделена на 2 части — переезд фрилансера, и переезд на учебу.
Читать их полностью

Ruby: cheatsheet для изучения

Reading time14 min
Views60K
Это — статья-roadmap-cheatsheet для изучающих Ruby. Вместо того, чтобы рассказывать очередной how-to я постараюсь расписать все те вещи, которые, на мой взгляд, можно изложить кратко и емко, с упором на то, что программисту пришедшему с других языков и платформ может показаться не очевидным, антипоисковым и просто затратным по времени на изучение без подсказок — на остальное просто дам ссылки. Не смотря на то, что в природе существует множество туториалов/кастов/книг/чего угодно по чему угодно — именно такого формата мне самому всегда не хватает. И по сути, это те вещи, которые чаще всего рассказываю при вопросах «а как оно вообще?», «с чего начать?», «а как делается такая вот штука?», «а какой gem лучше?». Кстати, пока работал над этой статьей на Хабре появилась похожая про Python — видимо, идея витает в воздухе.
Читать дальше →

Тексты, которые загубят самый красивый дизайн

Reading time4 min
Views47K


Хорошо, когда к тексту относятся так же внимательно, как и к тенюшечкам в кнопочках, градиентикам на плашечках и иконочкам-в-плоском-стиле, но для многих это — слишком тяжкий труд. Дизайнер продает картинку клиенту и ему все равно, что там написано будет. Клиент обращается к копирайтерам, за недорого штампующим «продающую» бредятину, иногда поручает работу с текстами маркетологам, иногда заголовки сочиняет целый отдел девушек-менеджеров по персоналу, и у всех них неумение писать по-русски, похоже, обязательная составляющая профессии. В итоге на сайт нам смотреть приятно, но читать невозможно. Дизайн — это в первую очередь содержимое, а потом уже декорации. Это обзор самых явных ошибок, за которыми должен следовать удар словарем по щам. Не переключайте.
Читать дальше →

Девушка изучает веб-программирование: 180 сайтов за 180 дней

Reading time2 min
Views302K
Чуть больше четырёх месяцев назад Дженнифер Девальт (Jennifer Dewalt) приняла важное решение — научиться программировать. Хотя у неё не было опыта в этом деле, она никогда не посещала технических спецкурсов в школе, а наоборот — увлекалась только искусствами, но девушка сразу же решительно взялась за дело.

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

Наглядный жизненный урок

Reading time6 min
Views103K

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

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

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

Самодельный трекинг посылок, или Туда и Обратно

Reading time6 min
Views555K
Наверняка многие, кто заказывал товар из-за границы, задавались вопросом: что происходит с посылками от экспорта до импорта? В каком потустороннем пространстве они иногда проводят месяцы своего путешествия? Какими самолетами прилетают в Новосибирск посылаемые авиапочтой в Москву отправления?

Идея


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

Один мой друг послал почтой другому моему другу…

сколько на это ушло времени, как ходят посылки, почему семь тысяч вёрст не крюк

Разработка под Blackberry10: все видео с Blackberry 10 Jam Moscow!

Reading time2 min
Views4.8K
Для тех, кто пропустил первое в России мероприятие RIM для разработчиков — Blackberry 10 Jam, которое мы освещали (см.видео), мы еще и сняли на видео все лекции и семинары, в две камеры добавили слайдов и перевели все выступления на русский.



Короче, проделали большую работу, надеемся не зря! Так что кому интересны нюансы разработки приложений под Blackberry 10 и Каскады — велкам под кат. Там 8 видеолекций в исполнении ведущих разработчиков RIM Адама Стэнли и Пола Бернхардта. Посмотрите их — и все равно что присутствовали на самом ивенте :).

Вот полный список того, что под катом

  • Создание HTML5-приложений с нативными характеристиками для BlackBerry
  • Продвинутая разработка HTML5 приложений для BlackBerry: WebGL и удаленный веб-инспектор
  • Cоздание приложений в стилистике BlackBerry с помощью bbUI и Alice.js
  • Оптимальное использование существующих фреймворков
  • Анатомия приложений BlackBerry 10
  • Каскады и их использование в разработке на BlackBerry 10
  • Разработка приложений с помощью BlackBerry 10 NDK
  • Продвинутый инструментарий для разработки на BlackBerry Native SDK

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

Создание приложений для смартфонов BlackBerry средствами WebWorks SDK

Reading time6 min
Views5K
image
BlackBerry WebWorks SDK выгодно отличается среди прочего доступного на настоящий день инструментария для создания приложений BlackBerry тем, что позволяет вести разработку одновременно и под смартфоны, начиная с BB OS 5.0, и под планшеты Playbook.
Если в двух словах, то BlackBerry Web Apps или «веб-виджеты» — это платформа на базе стандартов HTML5, CSS3 и расширяемого JS. Вроде бы «негусто» для написания приличного приложения, но первое впечатление обманчиво. Ниже станет ясно, почему. Нужно отметить, что версия API для планшетов Playbook пока сильно отличается от полноценной, но активно развивается и дополняется, документация обновляется с интенсивной периодичностью. В данной статье мы будем приводить примеры, использующие возможности полноценного API, т.е. поддерживаемые в BB OS 6 и 7, а в следующей опишем процесс разработки виджетов под Playbook.

Начинка BlackBerry WebWorks


Начиная с шестой версии операционной системы для смартфонов движком браузера стал webkit, заменив собой браузер на основе Java. На планшете Playbook вебкит-браузер установлен в качестве нативного изначально. В совокупности одно только это обстоятельство позволяет широко использовать возможности связки HTML5+CSS3, поддержка которых ограничена в иных браузерах. Второй и главный фактор — это расширение для джаваскрипта, объект blackberry, предоставляющий доступ для взаимодействия с ресурсами системы и устройства, расположенными за пределами приложения. Данные ресурсы делятся на категории, присутствующие в именованиях соответствующих вложенных объектов:
Читать дальше →

Особенности русской разработки

Reading time8 min
Views285K
image

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

Есть очень неплохая книжка о специфике работы русских вообще. Она называется «Русская модель управления». Ее написал А.П.Прохоров (другой, не олигарх). Не буду ее пересказывать. Основная идея в том, что русские по своей природе могут работать только в двух модах. В нестабильном состоянии они могут свернуть горы. В это время мотивация очень высокая. В стабильном расслабленном состоянии — когда никто не пинает — русские вроде как работают плохо и не сильно утруждаются.

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

Еще один дисклеймер: на реальное поведение людей действует сложившаяся культура в а) команде б) организации в) стране. Причем именно в этом порядке. Есть «прозападные» компании, где влияние наших культурных кодов очень небольшое. В чисто российских компаниях оно просто огромно. Но реально заметить разницу можно только увидев, как различные культуры сталкиваются друг с другом.

Я буду приводить влияние разных факторов в порядке их важности и силы влияния. Чем выше — тем сложнее это изменить и тем больший эффект это оказывает.
Читать дальше →

Путешествие через вычислительный конвейер процессора

Reading time16 min
Views138K
Так как карьера программиста тесно связана с процессором, неплохо бы знать как он работает.

Что происходит внутри процессора? Сколько времени уходит на исполнение одной инструкции? Что значит, когда новый процессор имеет 12, или 18, или даже 31-уровневый конвейер?

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

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

Эта статья рассказывает, как устроен вычислительный конвейер x86 процессора.
Читать дальше →

Arduino: Автоматическая подсветка лестницы

Reading time4 min
Views231K
Продолжая изучать возможности платформы Arduino, решил подсветить лестницу дачного дома.

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

Цель:


«Автоматическая подсветка лестницы в тёмное время суток»


Задачи:



1) Собрать электрическую схему управления

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

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity