Pull to refresh
84
0
Пётр @Error1024

Разработчик

Send message

Создание API: в рамку и на стену

Reading time5 min
Views57K
Каждый программист — проектировщик API. Хорошие программы состоят из модулей, а протокол взаимодействия модулей — это тоже API. Хорошие модули используются повторно.

API — это большая сила и большая ответственность. У хорошего API будут благодарные пользователи; поддержка плохого превратится в кошмар.

Публичный API — не воробей, опубликуешь — не уберешь. Есть только одна попытка сделать все правильно, поэтому постарайся.

API должно быть легко использовать, но сложно использовать неправильно. Сделать что-то простое с помощью такого API должно быть просто; сложное — возможно; сделать что-то неправильно должно быть невозможно, или, по крайней мере, трудно.

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

Перед разработкой API собери требования с долей здорового скептицизма. Осознай общие задачи и реши их.

Оформляй требования как шаблоны использования API. Сверяйся с ними в процессе проектирования.
Читать дальше →
Total votes 154: ↑143 and ↓11+132
Comments97

У Mail.ru магические алгоритмы антиспама?

Reading time5 min
Views103K

Если у вас или у ваших клиентов почтовый ящик на mail.ru, будьте готовы к неприятностям.


Немного истории
Исторически сложилось так что почта mail.ru особо не пользовалась популярностью среди ИТ-шников и технарей, как и сама компания в целом. Но в последнее время компания изменилась в лучшую сторону, ребята собрались и сделали отличный почтовый сервис, перешли на HTTPS, даже успешно перевели почту на UTF-8. Недавно вот еще «Облако» сделали бесплатное на 1ТБ, и даже изменили к нему лицензионное соглашение. Ну и много всего у них происходит хорошего. Но
«не будем говорить о плохом, а лучше сделаем»
 цитаты великих людей :)

Вернемся в настоящее
Все администраторы у кого есть «сайт / блог / форум» наслышаны о проблемах с доставками писем в ящики для пользователей mail.ru, я их не оправдываю, ведь в большинстве случаев у них плохо настроен MTA, нет DKIM подписей, нет правильной PTR-записи, и все их письма «успешно» валятся в спам. («успешно» без сарказма). Но команда антиспама решила не останавливаться на таких примитивных проверках как валидные цифровые подписи DKIM, обратные записи PTR, «трастовость» домена и исходящего сервера и многое другое что используют бесплатные сервисы с устаревшей антиспам системой (eg. Yandex, Google, Yahoo), команда антиспама отказалась от этих проверок, и начала использовать настоящую магию!
Читать дальше →
Total votes 178: ↑156 and ↓22+134
Comments83

(Само)идентификация процессоров. Часть вторая. Волосатый CPUID

Reading time11 min
Views49K
В первой части я рассказал о необходимости идентификации расширений, присутствующих на конкретном процессоре. Это нужно для того, чтобы исполняющийся код (операционная система, компилятор или пользовательское приложение) смог надёжно определить, какие возможности аппаратуры он может задействовать. Также в предыдущей статье я сравнил несколько популярных архитектур центральных процессоров общего назначения. Возможности по идентификации между ними сильно разнятся: некоторые предоставляют полную информацию о расширениях ISA, тогда как другие ограничиваются парой чисел для различения вендора и ревизии.
В этой части я расскажу об одной инструкции архитектуры Intel IA-32 — CPUID, введённой специально для перечисления декларируемых процессором расширений. Немного о том, что было до её появления, что она умеет сообщать, какие неожиданности могут поджидать и какой софт позволяет интерпретировать её вывод.


Источник изображения: [1]
Читать дальше →
Total votes 49: ↑48 and ↓1+47
Comments18

Разбираем и вычисляем формулы MS Excel

Reading time18 min
Views69K
Одной из самых интересных задач, с которыми нам пришлось столкнуться в процессе работы над компонентом Spreadsheet, стал механизм вычисления формул. Работая над ним, мы основательно углубились в механику функционирования аналогичного механизма в MS Excel.

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

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

Читать дальше →
Total votes 55: ↑53 and ↓2+51
Comments17

Reverse-инжиниринг Caesar III (часть 2, Рисование города)

Reading time4 min
Views45K
Надеюсь, предыдущий пост Back-инжиниринг Caesar III, где был описан алгоритм получения текстур из ресурсов оригинальной игры, был благосклонно встречен хабражителями. В этой статье я опишу формат карт, алгоритм выбора и порядок тайлов для отрисовки, формирование итоговой текстуры.



Как это устроено
Total votes 110: ↑109 and ↓1+108
Comments55

Пятьдесят оттенков инфракрасного

Reading time4 min
Views130K
Не знаю как вам, а мне всегда было интересно: как выглядел бы мир, если бы цветовые каналы RGB в глазу человека были чувствительны к другому диапазону длин волн? Порывшись по сусекам, я обнаружил инфракрасные фонарики (850 и 940нм), комплект ИК фильтров (680-1050нм), черно-белую цифровую камеру (без фильтров вообще), 3 объектива (4мм, 6мм и 50мм) расчитанные на фотография в ИК свете. Что-ж, попробуем посмотреть.

На тему ИК фотографии с удалением ИК фильтра на хабре уже писали — на этот раз у нас будет больше возможностей. Также фотографии с другими длинами волн в каналах RGB (чаще всего с захватом ИК области) — можно увидеть в постах с Марса и о космосе в целом.

Читать дальше →
Total votes 168: ↑166 and ↓2+164
Comments43

Написание приложений, основаных на Qt, на языке Python

Reading time5 min
Views120K
Доброе время суток.
Недавно решил изучить ещё один язык программирования. Выбор пал на python. Написал несколько маленьких скриптов. Но прежде всего я хотел писать приложения с графическим интерфейсом. В интернете наткнулся на этот небольшой туториал, прочтение которого вылилось в предлагаемый Вашему вниманию перевод. Надеюсь, что кому-нибудь он будет полезен.


Это руководство нацелено на получение представления о том как писать маленькие приложения на python, использующие библотеку Qt.

Читать дальше →
Total votes 54: ↑53 and ↓1+52
Comments34

Трюки с интерфейсами в Delphi

Reading time7 min
Views35K
Приветствую.
Буквально сегодня обсуждал с коллегой интерфейсы. Он мне рассказал о своем интересном приеме, я ему о своем, но только по дороге домой я осознал всю мощь этих приемов, в особенности если объединить их вместе.
Любители удобной автоматики и MVC паттернов — прошу под кат.
За трюками
Total votes 35: ↑27 and ↓8+19
Comments26

Организация многозадачности в ядре ОС

Reading time22 min
Views78K
Волею судеб мне довелось разбираться с организацией многозадачности, точнее псевдо-многозадачности, поскольку задачи делят время на одном ядре процессора. Я уже несколько раз встречала на хабре статьи по данной теме, и мне показалось, что данная тема сообществу интересна, поэтому я позволю себе внести свою скромную лепту в освещение данного вопроса.
Сначала я попытаюсь рассказать о типах многозадачности (кооперативной и вытесняющей). Затем перейду к принципам планирования для вытесняющей многозадачности. Рассказ рассчитан скорее на начинающего читателя, который хочет разобраться, как работает многозадачность на уровне ядра ОС. Но поскольку все будет сопровождаться примерами, которые можно скомпилировать, запустить, и с которыми при желании можно поиграться, то, возможно, статья заинтересует и тех, кто уже знаком с теорией, но никогда не пробовал планировщик “на вкус”. Кому лень читать, может сразу перейти к изучению кода, поскольку код примеров будет взят из нашего проекта.
Ну, и многопоточные котики для привлечения внимания.

Читать дальше →
Total votes 92: ↑92 and ↓0+92
Comments19

Здравствуй, %habrauser%! Давай знакомиться!

Reading time2 min
Views16K
Мы – коллектив нового, современного дата центра в Санкт-Петербурге, соответствующего всем требованиям уровня обслуживания, безопасности и надёжности класса Tier III. 31 января 2014 года мы официально открыли наши двери для всех желающих. В этой приветственной статье мы хотим рассказать Вам о нас и о нашей миссии на Хабре, о наших проектах и целях.



Читать дальше →
Total votes 53: ↑36 and ↓17+19
Comments38

Анализ приложения защищенного виртуальной машиной

Reading time52 min
Views44K
В данной статье будет рассмотрено построение защиты приложения с использованием различных программных «трюков» таких как: сброс точки входа в ноль, шифрование тела файла и декриптор накрытый мусорным полиморфом, сокрытие логики исполнения алгоритма приложения в теле виртуальной машины.

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

Для более или менее адекватного восприятия статьи потребуется минимальные знания ассемблера (его будет много) а так-же навыков работы с отладчиком.

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

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

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

Вот первоначальная ссылка, где он появился: http://exelab.ru/f/index.php?action=vthread&forum=1&topic=4732
А потом он попал вот сюда: http://www.crackmes.de/users/ms_rem/keygenme_by_ms_rem/
Где данному keygenme был выставлена сложность 8 из 10 (*VERY VERY* hard).
Хотя, если честно, это слегка завышенная оценка — я бы поставил в районе 5-6 баллов.

Пожалуй, начнем.
Читать дальше →
Total votes 154: ↑151 and ↓3+148
Comments75

С сегодняшнего дня прекращена поддержка Windows XP

Reading time1 min
Views90K
Корпорация Майкрософт в течение 12 лет предоставляла поддержку для Windows XP.



И с 8 апреля 2014 г. прекращается техническая поддержка Windows XP и выпуск автоматических обновлений, которые повышают защиту компьютера. Также с этого дня пользователь больше не сможет скачать программу Microsoft Security Essentials для Windows XP. Если продолжить использовать Windows XP после окончания поддержки то, компьютер может стать уязвимым для вирусов и других угроз безопасности.
Читать дальше →
Total votes 135: ↑111 and ↓24+87
Comments247

Постоянный IRC хабраканал в даркнете I2P

Reading time3 min
Views14K

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

Принимая во внимание, что Хабрахабр до сих пор не работает по шифрованному HTTP и не имеет адреса IP шестой версии, не говоря уже о шлюзировании Хабрахабра в даркнеты, и не единожды обозначенную руководством Хабрахабра позицию по этому поводу, было решено не ожидать подвижек со стороны Хабрахабра, не препираться и не спорить по поводу уместности ряда тем на Хабрахабре, а просто организовать открытую, анонимную площадку обсуждений общего характера. Хабраюзерами для Хабраюзеров.
Читать дальше →
Total votes 59: ↑53 and ↓6+47
Comments90

Еще раз об утечке атомов и баге VCL

Reading time3 min
Views7.6K
Введение

Просматривая ленту, наткнулся на статью Неправильное использование атомов и трудноуловимая бага в VCL. После прочтения возникла мысль описать еще одну проблему в той же самой области, о которой не рассказано в этой статье. Наша команда натолкнулась на нее самостоятельно, потом оказалось, что это уже известный баг VCL. Разработка ведется на Delphi 7, и я не уверен, существует ли ошибка в более новых версиях. Судя по приведенным чуть ниже ссылкам, есть, как есть и исправление. На исправление версии 7 надеяться, по понятным причинам, не приходится.

В статье MrShoor описывается переполнение т.н. таблицы атомов в случае, если приложение на Delphi завершено некорректно, и некоторые атомы не удаляются. Оказывается, для переполнения таблицы атомов вовсе необязательно «убивать насильно» ваше приложение. Вполне достаточно его запустить и корректно закрыть, но много-много раз подряд.
Давайте посмотрим, как это происходит:
Читать дальше →
Total votes 27: ↑25 and ↓2+23
Comments12

Неправильное использование атомов и трудноуловимая бага в VCL

Reading time5 min
Views22K
image

Поиск бага


Мучила меня долгое время бага, связанная с неадекватным поведением дельфийских контролов после длительного аптайма системы и интенсивной отладки. Списки переставали обновляться, кнопки нажиматься, поля ввода начинали терять фокус. И все было печально, и перезапуск IDE не помогал. Более того, после перезапуска IDE — она сама начинала так же глючить. Приходилось перезагружаться.
Сегодня меня это достало, и я принялся её искать. Надо сказать не безрезультатно.
Залогировав оконные сообщения я стал анализировать что же пошло не так.
И что же?
Total votes 68: ↑63 and ↓5+58
Comments13

Вирусы для MS-DOS в действии

Reading time1 min
Views57K
image

На своем YouTube-канале danooct1 Дэниель Уайт уже пять лет собирает видео с демонстрацией работы старых вирусов. На сегодняшний день он записал уже 450 штук; испытанные им вирусы охватывают период с MS-DOS до конца 90-ых и расцвета Windows, и в то время как одни из его видео вызывают ностальгию по прошлому, другие удивляют.

Под катом — анимации, демонстрирующие работу некоторых из вирусов, разработанных для MS-DOS. Осторожно, трафик.
Читать дальше →
Total votes 98: ↑94 and ↓4+90
Comments71

Откуда «мыло» в WPF и как с ним бороться

Reading time21 min
Views82K


Это руководство для WPF-разработчиков, стремящихся добиться максимально чёткой картинки в своих приложениях. Графическая система WPF до мозга костей векторная, но конечным результатом её работы по-прежнему является растр. Если не уделить этому факту должного внимания, можно столкнуться с различными сортами «мыла» — паразитными артефактами растеризации. В такой ситуации важно не терять присутствия духа, причины их возникновения вполне рациональны, а методы борьбы достаточно просты и эффективны.
Читать дальше →
Total votes 184: ↑175 and ↓9+166
Comments62

Парсинг формул в 40 строк

Reading time2 min
Views38K
Иногда бывает интересно взять какую небольшую задачку(по типу тех, что дают на собеседованиях) и найти для нее необычное решение.
В этот раз такой это стала задача от Яндекса. В самом посте и в комментариях было предложено несколько вариантов решения, темой этого топика станет поиск короткого решения в функциональном стиле.
Читать дальше →
Total votes 48: ↑44 and ↓4+40
Comments27

Информационно-технологические средства практического выживания социальных сообществ в условиях отключения Интернета в 2014 году

Reading time15 min
Views86K
В декабре прошлого (2013) года было обнародовано сделанное на специальной пресс-конференции заявление Александра Гостева (эксперта «Лаборатории Касперского»), согласно которому нынешний (2014) год станет последним годом для Интернета в России. Власти России, как сообщил Гостев, нацелены создать национальную сеть с ограниченным доступом к иностранным ресурсам.

Месяцем позже (в январе нынешнего года) появление законопроекта, предусматривающего уведомительный порядок создания серверов в Интернете, показало наинагляднейше, что Гостев скорее преуменьшил масштабы намерений отечественных законодателей. Сперва (26 февраля) стало известно, что этот законопроект одобрен комитетом Госдумы по информационной политике, что он готовится ко прохождению первого чтения в Госдуме; затем, буквально через два дня (28 февраля) стало известно также, что законопроект был принят Госдумою в первом чтении. Каким же окажется дальнейшее развитие событий? Можно подозревать, и небезосновательно, что в итоге всё сложится примерно так же, как получилось с митингами и иными массовыми сборищами граждан: прописанный в законе уведомительный порядок закономерно со временем превратится de facto в разрешительный, а количество таких серверов, разрешённых к массовому посещению через Интернет в России, окажется более близким к той прозорливой и мрачной оценке ≈1943 года, которую иногда приписывают Томасу Дж. Уотсону, тогдашнему президенту IBM (см. фото) — не более пяти штук в год.

Сразу скажу: стремясь с максимальною пользою употребить пару-тройку сотен последних дней существования Хабрахабра, я, уж конечно, не стану обсуждать политические меры противодействия вышеозначенной законодательной инициативе, ведь правилами Хабрахабра это запрещается. Также я ни словом не коснусь её влияния на бизнес, чтобы не попасть за это в хаб-оффтопик. Как раз наоборот — предметом моей заботы станет практическое выживание вполне некоммерческих социальных сообществ, притом достигаемое не политическими, а сугубо айтишными средствами. Вот почему изложенные ниже мысли хочется донести не только до Хабрахабра (что частично получилось бы и с оффтопиком), но также и до внешних (по отношению к Хабрахабру) сообществ его незарегистрированных читателей. За такое нынче, правда, также с недавних пор попадают — да не в хаб-оффтопик, а прямо в чёрный список Федеральной службы охраны (коллекционирующей имена, адреса и другие данные о негативно настроенных интернетчиках) — но это, по-видимому, неизбежное зло. Не всем дано, единожды постигнув пользу Интернета, позитивно относиться к намерениям тех лиц, которые сейчас его деятельно ненавидят и стремятся уничтожить. Скорее дано противоположное. Подозреваю поэтому, что недалёк уж и тот час, когда недовольство сделается поголовным — и ФСО неизбежно придётся закупить базу абонентов Ростелекома (и других провайдеров) да воспользоваться именно ею вместо собственных чёрных списков.

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

Предлагаю простое мысленное упражнение ума. Вообразите себя участником обширного социального сообщества, сформировавшегося в Интернете и объединяющего жителей различных отдалённых городов — объединяющего граждан, вполне далёких от личного знакомства и общения в так называемом реальном мире. Один или два сервера, важных для этого сообщества, ужé показывают «ошибку 451°» вместо своей заглавной страницы; а совсем скоро (возможно, ужé къ столѣтію Міровой войны?…) всѣ, всѣ его серверы въ Интернетѣ раздѣлятъ ту же судьбу въ Россіи: сѣть «Интернетъ» станетъ для нихъ «Интернѣтомъ» (отъ слова «нѣтъ»).

Кроме того, вы айтишник.

Читать дальше →
Total votes 222: ↑155 and ↓67+88
Comments269

Отзыв о книге “Интроверты – как использовать особенности своего характера” или почему не стоит смотреть порно на рабочем месте

Reading time8 min
Views311K
Автор книги – Сьюзан Кейн, в течении многих лет изучавшая феномен интроверсии. Впервые про неё я узнал из блога моей коллеги, Ольги Романовой. Книга та оказалась столь полезной, что я теперь просто не могу ею не поделиться. А уж читать её или нет, решайте сами.
Читать дальше →
Total votes 224: ↑198 and ↓26+172
Comments117

Information

Rating
3,880-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity

Specialization

Software Developer, Траблшутер