Search
Write a publication
Pull to refresh
47
0
Валерий @kharvd

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

Send message

Участие в Google Summer of Code

Reading time7 min
Views19K
Приветствую всех!

Думаю, многие слышали о студенческой программе Google под названием Google Summer of Code (GSoC). Если кратко, то суть программы заключается в следующем: проекты с открытым исходным кодом подают заявки, Google их рассматривает и выбирает определённое количество для участия, а затем к участию отбираются студенты силами самих проектов. Естественно, людей надо как-то мотивировать к участию, поэтому в течение тех 3-х летних месяцев, в течение которых студент будет работать, ему выплачивается стипендия в $5000 (в случае удачного завершения работы), его руководителю — $500. Лето уже близится, а это значит, что студентам скоро можно будет подавать заявки на GSoC 2012. Так как я не помню, чтобы на Хабре делились опытом участия в данном мероприятии, я решил это исправить и расскажу подробно о том, что необходимо для подачи заявки, как ее подавать и о дальнейшем участии. Буду рассказывать на примере своего участия в 2010 году. Кому интересно — прошу под кат.
Читать дальше →

Синхронная и асинхронная загрузка изображения из сети с последующей обработкой

Reading time10 min
Views12K
Доброго всем хабрадня!

Сегодня я хочу рассказать об одном из методов синхронной и асинхронной загрузки изображения из сети. Чтобы статья была не скучной, загруженные изображения мы попробуем каким-либо образом обработать средствами Qt.


Как будем загружать?


Для загрузки изображений мы будем использовать QNetworkAccessManager и QEventLoop, а так же немного мета-объектов. Загружать будем по HTTP изображение в любом формате, из поддерживаемых Qt. Ну, ещё будем обрабатывать редиректы.

Как обрабатывать-то будем?


Есть замечательный класс QGraphicsEffect с подклассами. Но мы с ними работать в рамках данной статьи не будем, смиритесь! И я даже объясню почему. К примеру, в Qt 4.8.0 эти эффекты ведут к крашу приложения в Mac OS X 10.7.+, а в Qt 4.7.4 в той же системе они вообще не работают. Уж не знаю, как так вышло, но багу в багтрекере Qt я поставил.

Значит, будем создавать свой класс для обработки изображений. Он будет у нас уметь слудющее:
  • Переводить изображение в оттенки серого
  • Колоризировать (как это по русски-то сказать?)
  • Добавлять тень
  • Менять прозрачность
  • Вращать вокруг центра
  • Квадратизировать
  • Квадратизировать со скруглением углов
  • Как бонус, научимся считывать пользовательские цвета в формате #RRGGBBAA

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

Python-неизвестный

Reading time4 min
Views27K
На Хабре уже есть несколько статей\переводов, в которых рассказывается о неизвестных фичах\тонкостях\возможностях Пайтона. Я буду пытаться не повторять их, а дополнять, но если уж так случилось, что вы это уже где-то видели — не огорчайтесь. Я уверен, что найдется что-то интересное и для вас.
Читать дальше →

Пишем примитивный и никому не нужный компилятор

Reading time9 min
Views178K
Я считаю, что каждый программист должен написать свой компилятор.

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

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

Список ресурсов для изучения Ассемблера

Reading time4 min
Views444K
Доброго времени суток!
Некоторым программистам иногда приходит в голову мысль «а не изучить ли мне ассемблер?». Ведь на нем пишут самые (с некоторыми оговорками) маленькие и быстрые программы, да и охота ощутить вкус низкоуровневого программирования берет свое. Ну и для общего развития не повредит.
Мысль эта не обошла стороной и меня. Вдохновившись историей одного байта, я ринулся в бой…

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

UPD
В список начали добавляться ресурсы по программингу микроконтроллеров.
Читать дальше →

Анализ Crackme #1 от PE_Kill

Reading time9 min
Views13K

Предисловие



Я уже долгое время ничего не исследую, так сказать ушел на покой. Но тут мне на глаза попалась очередная поделка немало известного в определенных кругах PE_Kill'a. Т.к. мне довелось решать его предыдущую поделку в рамках CRACKL@B Contest 2010, которая в свою очередь была довольно интересна, я решил взглянуть на его новое «детище».

Что вас ждет под катом: подделка CRC32, брут ключа для RC4, факторизация для RSA, а также использование коллизии для MD4 и генерация двух разных сообщений с одинаковыми хешеми. Всё это и многое другое под катом.
Читать дальше

Хабраигра «Стартап»

Reading time5 min
Views91K
На прошлой неделе «Мосигра» отгрузила Хабру первые 20 коробок игры «Стартап», которую мы совместно пилили больше трёх месяцев. Это игра про малый бизнес, IT-проекты, умение договариваться, планировать время, оценивать свои силы и вместе разруливать разные проблемы.

Вот что мы хотели от настольной игры:
  • Сделать наконец-то что-то про IT.
  • И про свой бизнес.
  • Игра должна быть тренирующей навыки переговоров и иллюстрирующая проект-менеджмент.
  • Начать играть можно за 2 минуты, но нюансы искать ещё долго.
  • Без 100% выигрышной стратегии, каждый раз — по ситуации.
  • Без кубиков и адского рандома.
  • С небольшой долей чёрного юмора и локальных мемов.
И вот что у нас получилось. Вот так выглядит игра «Стартап», которая с прошлой недели продаётся в Мосигре:

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

Кучи. Часть 1. Биномиальная куча

Reading time4 min
Views31K
Здравствуйте, Хабросообщество!

На хабре есть описание множества интересных структур данных, таких как деревья отрезков, дуча и т.п. Если Вам интересны сложные структуры данных, то добро пожаловать под кат!
Читать дальше →

Полупроводниковая электроника

Reading time30 min
Views385K


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



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





Иллюстраций: 34, символов: 51 609.



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

Простой Twitter-бот на Python

Reading time3 min
Views35K
В данной статье я бы хотел поделиться опытом написания небольшого твиттер-бота на Python.

Вступление



На написание бота меня натолкнул известный многим «пичалька-бот» в Twitter, который автоматически шлет реплаи всем, кто упомянит слово «пичалька» в своем твите. Поскольку в тот момент я занимался активным изучением Python, было решено писать на нем.

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

Еще немного про P и NP

Reading time7 min
Views30K
image

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

Чтобы проиллюстрировать центральную роль этого понятия, можно вообразить пять различных возможных миров (возможных — потому что еще не доказано, что они нереальны, и наш может оказаться любым из них) и посмотреть как условия в них будут влиять на информатику и жизнь вообще.
Читать дальше →

Бесплатные книги

Reading time3 min
Views60K
Несколько книг по разным темам, которые находятся в открытом доступе.

Основы программирования
Читать дальше →

Простой электронный самописец

Reading time6 min
Views40K

Сначала была идея

На работе (работаю в медицине) пыхтят и мучаются два электромеханических самописца ну и я вместе с ними: тушь, механика – знаете ли неприятно. Как то раз в мою голову забрела идея: а почему бы не заменить два задыхающихся от старости самописца простой системой сбора данных состоящей из контроллера АЦП и ПК (пусть даже слабенького и старенького) с соответствующим программным обеспечением с возможностью вывода на принтер? И тут понеслось в голове и закружилось…

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

Иконифицированное окно настроек (Preferences)

Reading time4 min
Views6.3K
Все видели настройки в Android аппаратах — меню с иконками. Это стандартный PreferencesActivity, только вот стандартными функциями Андроида такого эффекта достичь невозможно.
Что бы получить такой внешний вид, используем код, позаимствованный из системного приложения Settings.apk, благо open-source это позволяет сделать.



И так, нам понадобится:
1. Класс IconPreferenceScreen.java;
2. Файл attrs.xml в папке values;
3. Лэйаут preference_icon.xml;
4. Свой класс PreferencesActivity.java;
5. Файл с настройками приложения preferences.xml

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

Что должен знать о времени каждый программист

Reading time3 min
Views100K

Некоторые замечания о времени

  • UTC: время на нулевом меридиане называется Всемирное координированное время, Universal Coordinated Time. Несовпадение акронима было вызвано необходимостью универсальности его для всех языков.
  • GMT: ранее вместо UTC использовалось среднее время по Гринвичу (Greenwich Mean Time, GMT), так как нулевой меридиан был выбран так, чтобы проходить через Гринвичскую королевскую обсерваторию.
  • Прочие часовые пояса могут быть записаны как смещение от UTC. Например, Австралийское восточное стандартное время (EST) записывается как UTC+1000, то есть время 10:00 по UTC есть 20:00 по EST того же дня.
Читать дальше →

Почему Git

Reading time8 min
Views69K
Было время, когда я ничего не знал про VCS, ни что это такое, ни тем более зачем это мне. И верхом своих достижений считал папочку с архивами версий. К моменту осознания необходимости системы контроля версий я уже набил шишек и прочувствовал необходимость такого инструмента. Но борландовский аналог CVS меня не впечатлил. У каждого файла свой номер версии. Как мне получить срез определенного релиза я так и не разобрался. А в это время SVN победоносно шла сквозь умы разработчиков. Черт, это было то, чего мне так не хватало. Прочитав доку и начав работать я просто влюбился в нее. Да, были трудности и определенные неудобства, но куда без них.
Так я и работал бы в SVN, но ничего не стоит на месте. В интернете уже потекли тонкие ручейки новостей про Git. Я не кидаюсь за каждой новой технологией, и прошло уже достаточно много времени, пока мне не прожужжали этим Git’ом все мозги. Мне стало любопытно, я вначале присматривался, примерялся, а потом плюнул и начал новый проект на Git. Мучался с ребятами 2 недели, накачал литературы, написал шпаргалку… ничего, привыкли, … а потом меня поперло.

Теперь меня регулярно просят рассказать про Git и что в нем такого. Уже надоело, поэтому этот пост для тех, кто еще сомневается.
Читать дальше →

Создание своих сложных стилей для LaTeX

Reading time6 min
Views18K

История вопроса


Если вы регулярно создаёте в ТеХ'е единообразные документы, то создание своего стиля может заметно ускорить работу.

Моими регулярными документами является создание листочков с задачами для школьников. Готовые они выглядят следующим образом: PNG или PDF (а также так, так или так)
Практически всё оформление здесь (а также отдельная табличка для результатов) создаётся автоматически.
(если это кому-то нужно, то могу выдать пакет с документацией и примерами использования)

Разными «трюками» при создании своего стиля я бы и хотел поделиться.
Если вы совсем не в теме про создание своих команд, то лучше всего почитать Львовского или чего-нибудь в этом духе.

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

Это должен знать каждый

Reading time3 min
Views83K
Спрос на Android-разработчиков весьма велик сейчас. Я решил подготовить список того, что нужно знать каждому разработчику под эту платформу. Это не только то, что вас могут спросить на собседовании, а весь спектр знаний, который скорее всего пригодится в работе. Бонусом идет пара интерсных вопросов про платформу.
Читать дальше →

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

Reading time3 min
Views18K
Есть много причин недолюбливать нынешнюю образовательную систему — учат плохо, технологии устаревшие, много ненужной информации и т.д. Я так тоже считал и в той или иной степени считаю. Но, несмотря на это, у студентов есть много возможностей, о которых они даже не догадываются. В этой статье я решил собрать советы, которые должны пригодиться студентам во время учебы. К сожалению, о многом я узнал на последнем курсе, а то и вовсе после окончания университета.

Итак, поехали…
Читать дальше →

Пишем LR(0)-анализатор. Простыми словами о сложном

Reading time10 min
Views28K

Введение



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

Существует 2 класса синтаксических анализаторов — восходящие анализаторы и нисходящие. Первые строят дерево начиная с листьев, которые являются входными лексемами, вторые соответственно наоборот начинают с корня дерева. Собственно LR и значит то, что анализатор будет читать поток слева направо (L — 'Left') и строить дерево снизу вверх (пусть не смущает буква R, которая значит Right, объяснения даны чуть ниже). Индекс 0 обозначает то что мы не предпросматриваем следующие лексемы, а работаем только с текущей. Какие же плюсы даёт нам выбор этого типа анализаторов?
  • Он быстр.
  • Покрывает множество языков. То есть если вы придумали язык и описали его, то с большой долей вероятности LR-анализатор его сможет обработать.
  • Синтаксические ошибки обнаруживаются так быстро как это возможно. Сразу же как встречается символ, который не соответствует предыдущему входному потоку, мы можем вывести ошибку об этом.

Есть и недостатки:
  • Относительная сложность построения.
  • Можно вогнать анализатор в ступор неоднозначностью описания языка.


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

Information

Rating
Does not participate
Location
New York, New York, США
Registered
Activity