Search
Write a publication
Pull to refresh
608
4
Андрей Карпов @Andrey2008

Директор по развитию бизнеса

Send message

Порочный симбиоз пиратов и копирастов или как текстовый редактор перевернул моё мировоззрение

Reading time8 min
Views4.3K
Принято считать, что между пиратами и копирастами идёт война. Это очень похоже на правду. Но правда и то, что их противостояние подпитывает и укрепляет обе стороны. Разве пиратские партии в Европе смогли бы набрать сколько-нибудь значительное количество сторонников без громких юридических расправ, учинённых копирастами? Разве авторы продолжали бы довольствоваться крохами со стола корпораций и кабальными условиями эксклюзивных контрактов, если бы копирасты не были их единственной защитой от принудительного пиратского «коммунизма»?

Борьба пиратов и копирастов поляризует общество, создавая ложное впечатление, что нет никаких альтернатив двум крайностям. Одна крайность — та, которой придерживаются копирасты. Правообладатель может диктовать любые условия потребителю — что можно делать с произведением, что нельзя, сколько оно стоит, где и как его покупать. Другая крайность — пиратская — правообладатель не может ничего. Вся информация принадлежит всем и точка! Обе крайности деструктивны. Обе они убивают автора.
Читать дальше →

Автоматизируем социальную активность вашего интернет стартапа с помощью ifttt.com

Reading time5 min
Views5.3K

Начнём с описания ifttt.com



ifttt.com — это очень перспективный стартап, который в двух словах: Lets You Hack Together Web Apps, Without Coding Skills. Если детальнее, то это сервис позволяющий пользователям, без погружения в API огромного количества сервисов и каких либо знаний о разработке\языках программирования смешивать и автоматизировать различную активность друг с другом. В начале 2012 года получили посевные инвестиции в размере $1.5M.

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

ifttt main screen
Экран задач выглядит так

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

КартонБот v1.0 — утилизируем картон с пользой для мозга

Reading time6 min
Views30K
Количество попыток собрать робота у меня – не счесть. Но, то материалов не хватало, то навыков их обработки, то каких-то узлов, то знаний, как все эти штуки связать вместе. Если знакома такая ситуация – я постараюсь рассказать свой опыт сборки робота из подручных материалов и каких-то узлов купленных на eBay.
image
Робот обошелся мне в 35$ и два дня отпуска, но восторг, испытанный от его первых движений, стоил намного больше. Если заинтересованы – прошу под кат (много картинок).
Читать дальше →

Написание компилятора LALR(1)-парсеров. Базовая теория

Reading time7 min
Views23K

Введение, или зачем нужны синтаксические анализаторы


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

Эта часть посвящена базису, общей теории computer science. Возможно, что это даже преподаётся в школах/вузах России. Самая мякота пойдет со второй части.

Итак, зачем же кому-то может понадобиться писать парсер и что вообще это такое? Парсер — это код, который наделяет входящий набор символов семантическим смыслом. То есть, происходит анализ этих символов, и на основе этого анализа программа понимает как интерпретировать эти буквы и цифры. Простой пример — «1+2», после или во время процесса парсинга знак "+" это не просто символ плюса, но обозначение бинарноого оператора сложения, а в "+3" это унарный оператор знака числа. Большинству людей это очевидно, машине — нет.

Парсеры используются всюду — в Word'e для анализа приложений, словоформ, формул, etc; практически на любом сайте при валидации входных данных: email'а, телефонного номера, номера кредитки; конфигурационные файлы; сериализованные данные (например, в xml); во многих играх — скриптовые ролики, скрипты ИИ, консоль. В общем, это неотъемлемая часть computer science.

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

Linux 2.6, PHP 5.3 и PostgreSQL 9.1 признаны открытым ПО с высоким качеством кода

Reading time1 min
Views1.8K


В 2006 году между Департаментом Национальной безопасности США и частной компанией Coverity, производящей решение для автоматизированного тестирования качества кода, был заключён договор об крупнейшем аудите исходного кода открытого и проприетарного программного обеспечения. Несколько дней назад отчёт компании был опубликован и его выводы кратко приведены ниже:
  • Было проверено 37 млн строк программного кода сорока пяти наиболее активных Open Source-проектов, причём средний размер тестируемых проектов составлял 832 000 строк. Был рассчитан показатель "Средняя плотность дефектов" как число ошибок на тысячу строк кода, который составил в среднем 0.45.
  • Было проверено 300 миллионов строк проприетарного кода, произведённого сорока одной анонимной компанией. Средний размер проекта — 7.5 млн строк кода, средняя плотность дефектов составила 0.64.


Узнать подробности

Maximite — Ностальгия с паяльником по временам Радио-86РК и Спектрума

Reading time3 min
Views17K
Некоторое время назад я наткнулся на интересный проект — Maximite.

Это микрокомпьютер на базе Microchip PIC32 со встроенным Бейсиком. Прелесть тут в том, что собрать его можно за пару часов.

image

По возможностям он немного мощнее Радио-86РК и классического Спектрума. Но вот периферия у него сказочная: SD/FAT карточка, USB, VGA, PS/2, таймеры, RS232, I2C, SPI, PWM, ADC/DAC и просто одиночные порты-пины общего назначения.

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

Подробности

Реализация Code Action с помощью Roslyn

Reading time8 min
Views2.7K
Roslyn Services API позволяют легко реализовывать расширения, которые находят и устраняют проблемы в коде прямо в Visual Studio. Roslyn Services API доступно как часть Roslyn CTP.

В этом посте мы реализуем расширение для Visual Studio, которое детектирует вызовы метода Count() у Enumerable, после чего результат проверяется на равенство больше нуля, например, someSequence.Count() > 0. Проблема, заключающаяся в коде, в том, что Count() должен пройтись по всей последовательности, прежде чем вернуть результат. Более правильным подходом в данном случае является вызов метода Enumerable.Any().

Чтобы исправить это, мы реализуем CodeIssueProvider, детектирующий проблему, и CodeAction, который заменяет условие на вызов Enumerable.Any(), как и требуется. Т.е. наш CodeAction изменит что-то типа someSequence.Count() > 0 на someSequence.Any().
Читать дальше →

Еще один рейтинг популярности языков программирования

Reading time1 min
Views17K
Я нашел еще один (очень простой) график, отражающий рейтинг языков программирования. Всё элементарно: по горизонтали — количество проектов на Github, по вертикали — количество вопросов на Stackoverflow.



Я позволил себе провести на этом графике две красные диагональные линии, чтобы показать как наглядно отделены друг от друга мейнстрим (C++, C#, Java, PHP, Javascript и т.д.), группа «альтернативного мировозрения» (Scala, Haskell, Erlang, Prolog, Lisp) и откровенный трэш (всё, что ниже). По-моему, проще некуда. Никаких там годовых колебаний в полтора процента, высчитанных по непонятным формулам.
Взято тут.

UPD: сорри за мини-троллинг со словом «трэш» — зато он породил весьма интересную дискуссию в комментариях. Всем высказавшимся — спасибо.

«Программист» — это сверхобобщение

Reading time3 min
Views8.1K
В этом коде могут быть ошибки; я только доказал, что он правилен, а не проверял его.
Дональд Кнут

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

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

Термин «программист» покрывает колоссальный спектр способностей и умений. По вертикальной оси, программист может едва уметь писать на vbscript — или разрабатывать компиляторы для Intel или научный софт для авиакомпаний. По горизонтальной оси, он может быть экспертом в базах данных, улучшать производительность GPU, писать библиотеки параллельных вычислений, физические движки или драйвера для принтеров, заниматься обработкой изображений, генерацией 3D моделей или исследованиями в области искусственного интеллекта, использовать coffeescript, HTML5 и AJAX для разработки веб-приложений или nginx и PHP для разработки LAMP-стека, на котором веб-приложения работают… И это все — программисты.
Читать дальше →

Почему проекты в IT занимают в 2-3 раза дольше, чем планируется?

Reading time3 min
Views24K
Мы с другом решаем пойти в поход от Сан Франциско до Лос Аджелеса, чтобы заскочить в гости к нашим друзьям на Ньюпорт Бич. Посмотрим на карту и примерно прикинем путь по берегу:

image

Путь займёт около 400 миль, в день мы можем пройти 4 мили в час по десять часов, так что придём мы туда примерно через 10 дней. Мы звоним друзьям и бронируем столик на 6 вечера в воскресенье.

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

Паттерны ООП в метафорах

Reading time17 min
Views575K
Большинство литературы посвященной паттернам в ООП (объектно-ориентированном программировании), как правило, объясняются на примерах с самим кодом. И это правильный подход, так как паттерны ООП уже по-умолчанию предназначаются для людей, которые знают что такое программирование и суть ООП. Однако порой требуется заинтересовать этой темой людей, которые в этом совершенно ничего не понимают, например «не-программистов» или же просто начинающих «компьютерщиков». Именно с этой целью и был подготовлен данный материал, который призван объяснить человеку любого уровня знаний, что такое паттерн ООП и, возможно, привлечет в ряды программистов новых «адептов», ведь программирование это на самом деле очень интересно.
Статья предназначена исключительно для новичков, так что «старожилы» ничего нового для себя не узнают. В основном статья описывает известные паттерны из книги «Приемы объектно-ориентированного программирования. Шаблоны проектирования.», но более популярным и простым языком.
Читать дальше →

Топ-5 самых впечатляющих книг, которые должен прочесть каждый разработчик ПО

Reading time3 min
Views382K
Не так давно промелькнула ссылка на достаточно свежее (осень 2011) англоязычное голосование со скромным названием "самая впечатляющая книга, которую должен прочесть каждый разработчик программного обеспечения" и описанием:

Если бы вы могли вернуться в прошлое, к самому началу своей карьеры разработчика и сказать самому себе: «прочитай именно эту книгу», в самой начале своей карьеры разработчика, какую бы книгу вы рекомендовали?

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

Однако в данном небольшом посте я возьму на себя смелость перечислить ТОП-5 тех самых книг, победивших в голосовании, переведенных на русский язык. И дать небольшие комментарии, ведь книги действительно этого достойны. Да, лично я бы поменял некоторые места, однако положимся на «мнение зала» ресурса Stack Overflow.
Читать дальше →

Я не знаю Си

Reading time4 min
Views51K
Цель этой статьи — заставить всех, особенно программистов на Си, сказать «я не знаю Си».
Хочется показать, что тёмные углы в Си значительно ближе, чем кажется и даже тривиальные строки кода несут в себе undefined behavior.
Читать дальше →

О граблях организации ИТ-мероприятий

Reading time10 min
Views4.5K
В данной статье мне бы хотелось поговорить не только о подготовке и проведении презентации, но и об организации мероприятий в целом. У многих из нас хоть раз в жизни возникает необходимость организовать мероприятие того или иного масштаба, будь то встреча, мастер-класс, семинар или презентация. В мою жизнь так называемый ивент-менеджмент прочно вошел с началом трудовой деятельности в ИТ-компании: организовывая мероприятия по 3-5 раз в год (от встреч проектировщиков интерфейсов до семинаров по электронным библиотекам), я составила чек-лист необходимых для этого дел. Хочу поделиться им с хабражителями и помочь нуждающимся не наступить на грабли, часто встречающиеся на этом непростом, но увлекательном поле деятельности.

В сжатом виде он выглядит так:
  • Решить, кто наши докладчики и потенциальные участники, а также что, где и когда первые расскажут вторым
  • Исчерпывающе и понятно написать о событии на своем сайте
  • Анонсировать событие в СМИ и социальных сетях, пригласить клиентов и партнеров
  • Заблаговременно открыть регистрацию участников
  • Заранее получить презентации докладчиков и тезисы выступлений
  • Обеспечить стабильно работающий интернет, звук, свет, ПО и другое оборудование
  • Заснять доклады и дискуссии на видео
  • Организовать досуг участников после мероприятия
  • После события написать письмо с благодарностью участникам и докладчикам
  • Ознакомить с материалами события тех, кто не смог принять в нем участие
  • Составить детализированный отчет о событии
  • Собрать фидбек и учесть все ошибки при организации следующего мероприятия
За подробностями, советами и примерами — под кат.

Заранее спасибо за дополнения! Самые актуальные добавлю в статью с указанием авторства — глядишь, так и составим универсальное пособие для организаторов событий.

Upd: дополнила статью советами из комментариев! Спасибо за помощь AndreiYemelianov, RGaifutdinov, mivanova, ollystar, Cancel, verbinka, mujaji.
Читать дальше →

Coder vs. Developer vs. Engineer — а какой Job Title у тебя, %username%?

Reading time12 min
Views72K
Computer Scientist, Software Engineer и Coder заходят в бар.
— О, а вот и программисты! — окликает их бармен...


Я знаю людей, которые программируют уже не один десяток лет, но обижаются, когда их называют "программистами". А по запросу Coder vs Developer vs Software Engineer в гугле находится 113 000 000 ссылок: 1 2 3 4 5 6 7 8 9 … 113 000 000. Что интересно, можно найти совершенно противоположные мнения об одном и том же. С чем-то я согласен, а с чем-то в корне нет.

Последние же несколько лет так вообще постоянно подливают масло в огонь, появляются какие-то совсем странные программисты, которые называют себя Creative Technologist, Creative Coder и Interactive Developer.

Давайте же попробуем разобраться.
Читать дальше →

Делаем робота ВаллИ

Reading time5 min
Views49K
image

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

Первое небольшое введение смотрите тут — http://www.youtube.com/watch?v=OJiMUzJHYFk

Я начал с игрушки «Интерактивный ВаллИ». Текущая цена на toys'r'us составляет $34.99.

Я увлекаюсь роботами и у меня есть большой опыт в программировании и дизайне, чтобы дать роботам эмоции и жизнь. Первый совет, который я могу дать вам, — вы должны быть уверены. Второй совет — будьте креативным. Используйте их вместе, а всё остальное ваш ум сделает за вас :)

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

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

Чтобы изменять корпуса, я использую инструменты Dremel, а иногда и свой паяльник, чтобы расплавить пластмассу. При шлифовке, пожалуйста, имейте пылесос поблизости. Внимание: При плавке, держите открытым окно с вентилятором!
Читать дальше →

Лазерная игрушка для кошки на сервоприводах

Reading time2 min
Views21K
Чем только не займешься в новогодние праздники? В этом году подарил своей кошке электронную игрушку на базе лазерной указки, двух сервоприводов и контроллера на базе Mega16. Может сравнить применение Меги в этой схеме со стрельбой по воробьям из пушки, но дома на тот момент была только она. Человеку, имеющему опыт программирования AVR микроконтроллеров не составит труда перенести ее на другую микросхему, вплоть до микроконтроллеров серии Tiny.
Читать дальше →

Как запустить стартап при ВУЗе

Reading time8 min
Views17K

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

Я хотел бы посвятить эту статью тому, зачем мы создали ООО совместно с СПбГЭТУ (ЛЭТИ) и что получили в итоге. Буду рад поделиться опытом, который, надеюсь, поможет реализовать ваши идеи.
Читать дальше →

Статический анализатор кода PC-Lint

Reading time5 min
Views11K
Чтобы не откладывать дело в «долгий ящик», продолжу рассказ о своем опыте использования статических анализаторов кода. (Начало здесь и здесь).

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

Однако кто-то вдруг вспомнил, что однажды компания уже приобретала лицензию на какой-то анализатор кода. Этим анализатором оказался PC-Lint. Оказалось, что его никто не использует (дочитав до конца, поймете, почему), так что лицензию отдали мне, мол, играйся, если интересно.
Читать дальше →

Information

Rating
1,862-nd
Works in
Date of birth
Registered
Activity

Specialization

Specialist
C++
C
Software development