Как стать автором
Обновить
17
0

Пользователь

Отправить сообщение

Инструменты разработчика или Почему вы не используете X? Часть 1

Время на прочтение7 мин
Количество просмотров56K


Я видел много примеров, где для совместной разработки использовали dropbox, для отладки приложения после каждой строчки вставляли print, для автоматических тестов писали свои велосипеды (признаюсь, я и сам все это делал).

Это не правильно!

Сейчас в распоряжении программиста, пишет он на Python, C++, Haskell или Ruby, есть огромное количество различных инструментов, которые он может использовать в повседневной разработке.

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

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

Если вам интересно, как улучшить свою продуктивность, начать писать программы лучше, да и просто почитать что-то интересное — добро пожаловать под кат!
Читать дальше →
Всего голосов 110: ↑92 и ↓18+74
Комментарии100

Математический фокус для MP3, JPEG и Гомера Симпсона

Время на прочтение6 мин
Количество просмотров109K
Девять лет назад я посещал курс физики в колледже, и мой профессор рассказал одну вещь, которая поразила меня. Я думаю, не будет преувеличением сказать, что это одно из наиболее широко используемых математических открытий — от оптики до квантовой физики, радиоастрономии, сжатия MP3 и JPEG, рентгеновской кристаллографии, распознавания голоса и МРТ. Этот математический инструмент называется преобразование Фурье, в честь французского физика и математика 18-го века Жозефа Фурье. Им пользовались даже Джеймс Уотсон и Фрэнсис Крик, чтобы декодировать структуру двойной спирали ДНК из рентгенограмм, произведенных Розалиндой Франклин. (Крик был экспертом по преобразованиям Фурье, он в шутку назвал свою книгу «Преобразования Фурье для орнитологов», чтобы объяснить суть Уотсону, заядлому любителю птиц).
Читать дальше →
Всего голосов 159: ↑145 и ↓14+131
Комментарии35

Шпионские гаджеты от АНБ

Время на прочтение10 мин
Количество просмотров395K
imageСреди документов опубликованных Эдвардом Сноуденом, бывшим сотрудником ЦРУ и Агентства национальной безопасности США, были обнаружены материалы описывающие некоторые детали технологий шпионажа используемых АНБ. Список программных и аппаратных средств оформлен в виде небольшого каталога. Всего сорок восемь страниц отмеченных грифами «Секретно» и «Совершенно секретно», на которых дано краткое описание той или иной технологии для слежки. Данный список не является исчерпывающим. Представлены техники связанные с получением скрытого доступа к вычислительной технике и сетям, а также способы и устройства радиоэлектронной разведки связанные с мобильной связью и оборудование для наблюдения. В этой статье я расскажу об этих методах шпионажа, далее будет четыре дюжины слайдов(осторожно, трафик).
Узнать больше
Всего голосов 256: ↑251 и ↓5+246
Комментарии222

Основы теории цвета. Система CIE XYZ

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

Недостаточные или ошибочные знания большинства IT специалистов относительно цветовоспроизведения, по моему мнению, объясняются тем, что на изучение теории цвета тратится очень мало времени, так как её основы обманчиво простые: так как на сетчатке глаза есть три вида колбочек, то смешивая определённые три цвета можно без проблем получить всю радугу цветов, что подтверждается регуляторами RGB или CMYK в какой то программе. Большинству этого кажется достаточно, и ихняя тяга к знаниям в этой области заканчивается. Но, процессы получения, создания и воспроизведения изображений готовят Вам множество нюансов и возможных проблем, решить которые поможет понимание теории цвета, а также процессов в основе которых она лежит. Этот топик призван восполнить пробел знаний в области цветоведения, и будет полезен большинству дизайнеров, фотографов, программистов, а также, надеюсь, другим IT специалистам.

Попробуйте дать ответ на следующие вопросы:
  • почему физика не может дать определения понятию цвета?
  • какая из семи основных единиц измерений СИ основывается на свойствах зрительной системы человека?
  • какого цветового тона нет в спектре?
  • как удалось измерить ощущение цвета человеком ещё 90 лет назад?
  • где используются цвета, которые не имеют яркости?

Если хоть один на вопрос у Вас не нашёлся ответ, рекомендую заглянуть под кат, где Вы сможете найти ответы на все эти вопросы.
Читать дальше →
Всего голосов 82: ↑82 и ↓0+82
Комментарии57

Пиксельная подсветка просто и быстро

Время на прочтение7 мин
Количество просмотров224K
Ролики с демонстрацией пиксельной подсветки выглядят довольно эффектно — куча разноцветных всплохов, динамичные отблески смотрятся просто замечательно и выглядят более подвижными по сравнению с другими типами подобной подсветки.
Желание поработать с управляемыми огоньками с помощью arduino побудили меня соорудить такую систему. Как оказалось, это довольно простое мероприятие, на которое в сумме было потрачено всего несколько часов (собственно, само сооружение — 10 минут, остальное — софт). Детали процесса сборки и программирования я и изложу в этой статье. Софт, выводы и демо прилагаются.

Читать дальше →
Всего голосов 106: ↑98 и ↓8+90
Комментарии66

Почему за рыночной долей 80% может скрываться лишь половина пользователей смартфонов

Время на прочтение10 мин
Количество просмотров59K
Руководство к пониманию всех этих квартальных цифр Android, Apple и Windows. Что они означают, а что не означают.

Рыночные доли смартфонов
Прочтите первый параграф, а затем проверим, сможете ли вы найти изъян в последнем предложении. (Текст взят отсюда, просто потому что он оказался под рукой)
Прошло 20 месяцев с момента первого запуска FuelBand совместно с Nike. И хотя предполагается запустить FuelBand приложение на Android в ближайшем будущем, браслет для отслеживания активности остаётся совместимым с iOS на сегодняшний день.
Многих удивляет это явное упущение в арсенале Nike, так как Android занимает приблизительно 80% рынка смартфонов.

Читать дальше →
Всего голосов 79: ↑58 и ↓21+37
Комментарии35

Зачем нам всем нужен SAT и все эти P-NP (часть первая)

Время на прочтение12 мин
Количество просмотров60K
SAT уже тем хорош, что он ум в порядок приводит
Ломоносов (оригинал)

Введение


На хабре уже немало статей, посвященных проблеме P vs. NP и задаче о выполнимости логических формул (SATisfiability problem). Однако, большинство из них не отвечает на несколько самых важных вопросов. Почему эта проблема действительна важна для нас? Что будет, если её решат? Где это все вообще применяется? И почему необходимо иметь хотя бы общее представление, о чем там идет речь?

image

Если мы детально проанализируем наиболее заметные работы на хабре по данной теме [1, 2, 3, 4, 5, 6, 7], то заметим, что с одной стороны, люди обладающие знаниями в области вычислительной сложности не cмогут почерпнуть ничего принципиально нового в данных статьях. С другой стороны, данные статьи по-прежнему не являются общедоступными. Иллюстрация из заголовка наглядно демонстрирует проблему: тем, кому было не понятно, из неё ничего не ясно, а те, кто об этом уже слышал, в ней не нуждаются.

Данная статья преследует две цели: первое — дать общее представление о проблеме и ответить на вопрос, почему же нам стоить знать об этой задаче (первая часть), второе — предоставить материал «на вырост», который будет интересен людям интересующимся тематикой, а так же может быть полезен для изучения темы в дальнейшем (вторая часть).

Читать дальше →
Всего голосов 85: ↑80 и ↓5+75
Комментарии24

Алгоритм быстрого поиска слов в игре балда

Время на прочтение7 мин
Количество просмотров48K
Как-то в одной социальной сети наткнулся на игру балда с нестандартными правилами (большие поля и узелки). Программы-подбиралки в основном работают по классическим правилам и на полях 5х5. Поэтому у меня появился спортивный интерес написать свою подбиралку полностью адаптированную под нестандартные правила. Причем не просто написать подбиралку, а реализовать максимально быстрый алгоритм поиска слов.

Читать дальше →
Всего голосов 45: ↑41 и ↓4+37
Комментарии22

Меняем лампы подсветки монитора (сами)

Время на прочтение5 мин
Количество просмотров518K
Доброго времени суток!

В данном посте, я бы хотел рассмотреть такую болячку LCD мониторов, как вышедшие из строя лампы подсветки, попытаться разобраться почему это происходит, ну и соответственно поменять их. Заинтересовавшихся прошу проследовать за зелёным человечком.
P.S.
Под катом содержится 27 фото



Читать дальше →
Всего голосов 137: ↑135 и ↓2+133
Комментарии54

Почем опиум для народа? Как устроен FOREX и нужен ли он. (Часть II)

Время на прочтение14 мин
Количество просмотров84K
image

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

Кроме того, был задан ряд провокационных вопросов, которые условно можно свести к вариации одного из двух:

  1. Каковы критерии «кухни»? (вариации: вот этот брокер (имярек) кухня или нет? и пр.)
  2. В чем отличия услуг ITinvest от услуг критикуемых вами кухонь?

Не желая вступать в полемику и спор с представителями форекс-сообщества (все-таки статья писалась не для них), я, тем не менее, счел себя обязанным продолжить объяснение, что такое «правильный» форекс, а также:

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

Попутно читатель получит ответ на провокационные вопросы, сформулированные выше. Кому текст покажется занудным – просьба читать только заголовки.
Читать дальше →
Всего голосов 84: ↑63 и ↓21+42
Комментарии38

Изобретаем JPEG

Время на прочтение28 мин
Количество просмотров174K

Вы правильно поняли из названия, что это не совсем обычное описание алгоритма JPEG (формат файла я подробно описывал в статье «Декодирование JPEG для чайников»). В первую очередь, выбранный способ подачи материала предполагает, что мы ничего не знаем не только о JPEG, но и о преобразовании Фурье, и кодировании Хаффмана. И вообще, мало что помним из лекций. Просто взяли картинку и стали думать как же ее можно сжать. Поэтому я попытался доступно выразить только суть, но при которой у читателя будет выработано достаточно глубокое и, главное, интуитивное понимание алгоритма. Формулы и математические выкладки — по самому минимуму, только те, которые важны для понимания происходящего.

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

Если есть желание, то предлагаю пройти те же этапы самостоятельно параллельно со статьей. Проверить, насколько приведенные рассуждения подходят для разных изображений, попытаться внести свои модификации в алгоритм. Это очень интересно. В качестве инструмента могу порекомендовать замечательную связку Python + NumPy + Matplotlib + PIL(Pillow). Почти вся моя работа (в т. ч. графики и анимация), была произведена с помощью них.

Внимание, трафик! Много иллюстраций, графиков и анимаций (~ 10Мб). По иронии судьбы, в статье про JPEG всего 2 изображения с этим форматом из полусотни.
Читать дальше →
Всего голосов 356: ↑354 и ↓2+352
Комментарии70

Управляем светодиодной лентой при помощи Raspberry Pi и Android

Время на прочтение8 мин
Количество просмотров65K
Здравствуй, завсегдатай и гость Хабра.

Давно читаю Хабр, но всё никак не было поводов написать статью, пока меня не накрыло мне очередной раз не напомнили о существовании Raspberry Pi и о такой вещи как WS2801 LED Strip. Тут уже однажды писали о подобной, но для связи с Ардуиной, чтобы получить Эмбилайт, поэтому я решил рискнуть и написать свою статью, с Лего и Котиками.

В статье будет мало картинок, несколько видео, много текста, включая лирические отступления не по сабжу и совсем мало кода, но в самом конце будут ссылки на проект на Гитхабе. А теперь обо всём по-порядку:
Читать дальше →
Всего голосов 53: ↑52 и ↓1+51
Комментарии43

Как я завалил собеседование в Twitter

Время на прочтение4 мин
Количество просмотров177K
image


До 28 октября я должен был принять решение, буду ли я работать в Amazon по окончанию стажировки. Оставалось совсем немного времени, но мой друг Дэниел убедил меня, что если я попробую попасть в Twitter, то как раз успею пройти все интервью. Я не смог устоять.

Сначала меня попросили решить пару вопросов с Codility, дав на все про все час времени. Вопросы попались средней интересности («является ли слово анаграммой палиндрома» и «посчитать количество седловых точек в двумерном массиве»). Я был не слишком уверен в получившихся решениях, но вскоре Джуди прислала мне письмо с приглашением на телефонное интервью в среду в 17:30.
Читать дальше →
Всего голосов 166: ↑149 и ↓17+132
Комментарии313

SlideStackView или extending ViewGroup в Android

Время на прочтение19 мин
Количество просмотров18K
Занимаясь разработкой почтового приложения под Android, мы в Mail.Ru очень часто анализируем, насколько удобно для конечного пользователя построена навигация внутри нашей программы. Думаю, что не стоит объяснять насколько это важно, потому что все, кто пользуются мобильными приложениями, и без этого знают, что продукт, который не предоставляет интуитивно понятную и быструю навигацию, будет проигрывать тем продуктам, которые об этом позаботились. Удобство и тщательно продуманная навигация – это то, за что пользователь будет либо любить ваше приложение, либо каждый раз проявлять невероятные усилия, чтобы не разбить свой телефон об пол.

Читать дальше →
Всего голосов 37: ↑36 и ↓1+35
Комментарии7

SlideStackView или Extending ViewGroup в Android (часть 2)

Время на прочтение31 мин
Количество просмотров10K


Недавно я рассказывал о своём опыте разработки SlideStackView в мобильной почте Mail.Ru под Android. Тогда я пообещал, что в ближайшее время подготовлю вторую часть, в которой расскажу о том, как реализовать наиболее интересную, с точки зрения программирования визуальных компонентов, часть. Естественно, речь пойдёт о том, что добавляет интерактивность в приложение — об анимации. Все уже давно привыкли к тому, что мобильное приложение должно быть отзывчивым к действиям пользователя. Очевидно, что основным способом взаимодействия с вашим приложением является использование Touch screen.
Читать дальше →
Всего голосов 39: ↑38 и ↓1+37
Комментарии6

Базы знаний. Часть 1 — введение

Время на прочтение5 мин
Количество просмотров67K
Одной из причин слабого использования Linked Data-баз знаний в обычных, ненаучных приложениях является то, что мы не привыкли придумывать юзкейсы, видя перед собой только данные. Трудно спорить с тем, что сейчас в России производится крайне мало взаимосвязанных данных. Однако это не значит, что разработчик, создающий приложение для русскоязычной аудитории совсем уж отрезан от мира семантического веба: кое-что всё-таки у нас есть.
image
Основными источниками данных для нас являются международные базы знаний, включающие русскоязычный контент: DBpedia, Freebase и Wikidata. В первую очередь это справочные, лингвистические и энциклопедические данные. Каждый раз когда вам в голову приходит мысль распарсить кусочек википедии или викисловаря — ущипните себя как следует и вспомните о том, что всё, что хранится в категориях, инфобоксах или таблицах, уже распарсено и доступно через API с помощью SPARQL или MQL-интерфейса.

Я попробую привести несколько примеров полезных энциклопедических данных, которые вы не найдете нигде, кроме Linked Data.

Эта статья — первая из цикла Базы знаний. Следите за обновлениями.


Читать дальше →
Всего голосов 69: ↑66 и ↓3+63
Комментарии29

Введение в анализ сложности алгоритмов (часть 2)

Время на прочтение11 мин
Количество просмотров171K
От переводчика: данный текст даётся с незначительными сокращениями по причине местами излишней «разжёванности» материала. Автор абсолютно справедливо предупреждает, что отдельные темы могут показаться читателю чересчур простыми или общеизвестными. Тем не менее, лично мне этот текст помог упорядочить имеющиеся знания по анализу сложности алгоритмов. Надеюсь, что он окажется полезен и кому-то ещё.
Из-за большого объёма оригинальной статьи я разбила её на части, которых в общей сложности будет четыре.
Я (как всегда) буду крайне признательна за любые замечания в личку по улучшению качества перевода.


Опубликовано ранее:
Часть 1

Сложность


Из предыдущей части можно сделать вывод, что если мы сможем отбросить все эти декоративные константы, то говорить об асимптотике функции подсчёта инструкций программы будет очень просто. Фактически, любая программа, не содержащая циклы, имеет f( n ) = 1, потому что в этом случае требуется константное число инструкций (конечно, при отсутствии рекурсии — см. далее). Одиночный цикл от 1 до n, даёт асимптотику f( n ) = n, поскольку до и после цикла выполняет неизменное число команд, а постоянное же количество инструкций внутри цикла выполняется n раз.
Читать дальше →
Всего голосов 55: ↑53 и ↓2+51
Комментарии16

Введение в анализ сложности алгоритмов (часть 1)

Время на прочтение10 мин
Количество просмотров383K
От переводчика: данный текст даётся с незначительными сокращениями по причине местами излишней «разжёванности» материала. Автор абсолютно справедливо предупреждает, что отдельные темы покажутся чересчур простыми или общеизвестными. Тем не менее, лично мне этот текст помог упорядочить имеющиеся знания по анализу сложности алгоритмов. Надеюсь, что он будет полезен и кому-то ещё.
Из-за большого объёма оригинальной статьи я разбила её на части, которых в общей сложности будет четыре.
Я (как всегда) буду крайне признательна за любые замечания в личку по улучшению качества перевода.


Введение


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

Тем не менее, знание теории тоже имеет свои преимущества и может оказаться весьма полезным. В этой статье, предназначенной для программистов, которые являются хорошими практиками, но имеют слабое представление о теории, я представлю один из наиболее прагматичных программистских инструментов: нотацию «большое О» и анализ сложности алгоритмов. Как человек, который работал как в области академической науки, так и над созданием коммерческого ПО, я считаю эти инструменты по-настоящему полезными на практике. Надеюсь, что после прочтения этой статьи вы сможете применить их к собственному коду, чтобы сделать его ещё лучше. Также этот пост принесёт с собой понимание таких общих терминов, используемых теоретиками информатики, как «большое О», «асимптотическое поведение», «анализ наиболее неблагоприятного случая» и т.п.
Читать дальше →
Всего голосов 106: ↑98 и ↓8+90
Комментарии27

Алгоритм Х или что общего между деревянной головоломкой и танцующим Линком?

Время на прочтение5 мин
Количество просмотров67K


Предисловие


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

Не можешь сам — заставь компьютер. Сказано — сделано. В результате написанному по наитию алгоритму пришлось работать всю ночь, чтобы найти все 4 уникальных решения. В процессе гугления решений для сравнения, я нашёл программу Burr Tools, которая справилась с этой задачей за 3 минуты на моём ноутбуке.

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

Так как же решается эта задача и ещё целый класс подобных?
Всего голосов 145: ↑141 и ↓4+137
Комментарии14

Информация

В рейтинге
Не участвует
Откуда
Тульская обл., Россия
Зарегистрирован
Активность