Pull to refresh
16
0
Send message
Если вы дочитали статью до конца, то могли увидеть что в последней версии, ни new, ни delete, ни виртуализация напрямую не используется.
Другое дело что, если мне не изменяется память, тот же std::function именно через виртуализацию и сделан.
Ну в таком случае наши решения весьма похожи ), отличие только в макросах, которые добавляют немного удобства.
Недостаток вашей реализации в том, что вызвать можно только какую-то отдельную функцию, в моей-же можно вызвать просто произвольный код. Хотя некоторые вещи, такие как ваш второй пример, всё-же удобнее делать вашей.
Мне так видится, что закрывающий код вообще не должен бросать эксепшены, та же проблема может быть в любом деструкторе. Можно, конечно, вызывать этот блок в пустом try..catch, вот только это совсем не корректно.
Как-то совсем забыл что function тоже добавили в новый стандарт, сейчас поменяю.
У меня, вот, давно мелькают такие мысли
Неизвестно кто наносит больший вред обществу: преступники или МВД/ФСБ.
Возможно, стоило бы их расформировать и ввести механизм выборных шрифов/судей.
Нда, не пишите так больше.
Даже не говоря о том, что будет если в структуре встретится к примеру что-нибудь типа std::string.
Это нарушает все нормы языка, и имеет кучую сайд эфектов.
Дичайше интересная статья.
Точно такой-же подход можно использовать, что-бы удобно и красиво реализовать проперти.

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

ps. Очень жаль, что действительно интересная техничная статья имеет такой низкий рейтинг, хабр уже не торт
Почему — про это можно написать целую статью, правда это не формат для хабра. Если интересно, могу опубликовать у себя в ЖЖ, а здесь разместить ссылку.
В двух словах: человеку, который не имеет доступа к разностаронней информации, можно навязать практически любую точку зрения.
Кроме того, можно творить совершенно жуткие дела, если про это никто не узнает.
Я, наверно, сейчас уйду в глубокие минуса, но я считаю что:
Да, он имеет такое право, как бы мерзко это не выглядело со стороны нормальных людей.
И пока он не прикоснётся к ребёнку( или пока не предпринял такую попытку ), т.е. не нанесёт обьективный вред другому человеку — сажать его не за что.( хотя взять на карандаш, конечно же, нужно )
А если без ссылки — то это уже отдельный акт клеветы, за который можно подать в суд.
С гос.тайной — виноват только тот, кто её обнародовал. В обоих случаях краеугольным камнем является преступление, а информация — это как круги по воде.
Сам подход, когда кто-то определяет какую информацию можно подвергнуть цензурированию, в корне порочный, и в конечном итоге, ведёт к диктатуре.
Знаете историю про марш нацистов в америке? Про еврея, прошедшего концлагерь и защищавшего право нацистов на марш? Он сказал тогда что те, кто борётся с этим правом, делает для нацизма гаразда больше, чем те, кто идёт этим маршем.
Тут есть один не очевидный нюанс: не следует путать саму информацию как таковую, с действием по приданию ей огласки.
Тот кто создал клеветническую информацию, т.е. оклеветал другого человека-должен понести наказание, но не тот кто это перепечатал, со ссылкой на оригинал.
С охраняемой законом информацией — точно так-же. Тот кто имеет к ней доступ — должен нести ответственость за её огласку.
Далее, да, пропаганда нарушения закона — должна быть без ограничений, как минимум потому, что конституцией нам гарантирована свобода слова. Закон может быть бредовым, противоречивым, наконец даже запрещать себя обсуждать, и это — безусловное зло.
Кроме того, разница между обсуждением, озвучиванием достоверной информации и пропагандой — весьма условна. Если я скажу, что коэффициент вредности и привыкания у травы ниже, чем у алкоголя, это может считаться пропагандой?
Хм, меня всегда умиляло, когда вам подобные защитники общества, говорят о пагубной информации.
Объясните мне этот термин, пожалуйста, так как я в принципе не могу понять, как информация может быть пагубной( я здесь не рассматриваю информацию, к которой не должны иметь доступ дети, и.к. это совершенно отдельный вопрос )
И туда-же: почему некоторые люди считают, что имеют моральное право ограничить свободный обмен информацией между другими людьми, просто потому, что эта информация им не нравится.
Вы в этом не одиноки
Здесь — test\hookproc\HookProcTest.cpp все примеры, работающие на текущий момент, описание действительно стоит поправить, просто не планировал это публиковать нигде, пока эту статью не увидел.
Я некоторое время назад начал писать свой небольшой фреймворк для установки хуков на API, чтобы можно было сделать что-то типа:

auto& hook = SD_HP_CREATE_HOOK( MessageBoxA, "user32.dll" );
hook.setActive(true);
hook.setCallback( boost::bind( consoleMsg, _3 ) );

Конечно, она не дотягивает по могуществу до великого творения от микрософт, зато маленькая, открытая и моя )).

Сейчас он работает на x32, хотя и не очень стабильно, да и код ещё бяка, но если всё пойдёт нормально и ко мне не наведается птица обломинго то через пару месяцев появится и x64 версия.
Кому интересно — может посмотреть здесь
Давайте отделять мух от котлет: что общего между употреблением и преступлением на почве употребления? Для примера: "Меня затрахали на работе, поэтому я ударил жену", может давайте работу запретим? ;)
В реализации исключений на С++ есть другой фатальный недостаток — это нечёткая спецификация ислучений в функциях, вот корень всех зол. Если у функции специфицированы исключения, то это не даёт никаких гарантий что она бросает только их.
Называть абсолютно незнакомого человека дураком, без сомнения, очень умно. Но я всё же останусь при своём мнении: к насилию, как правило, прибегают когда уровень интеллектуального развития не позволяет решить проблему в ином ключе. Да, бывают ситуации, когда насилие неизбежно, но с моей точки зрения описанная ситуация таковой не являлась.
И да, и нет.
Вы привели свои примеры, я приведу свои. Есть масса замечательного старого софта( да. конечно, в первую очередь игрушки конечно :-)) ), который уже давным давно не поддерживается, и что-бы его запустить, нужны танцы с бубном, которые не всегда помогают. В случаи открытия исходников, можно было-бы пофиксить это одним движением руки, и осчастливить всё сообщество.
Насчёт второго примера — тоже приведу свой контр пример с гэймдева( извините, наболело ): Когда к гениальной игрушке пишется сиквел, причём пишется людьми, бесконечно далёкими от производства оригинала, просто по тому что права на этот брэнд принадлежат одной конторе, а делала её другая. И в результате имеем эталонное уг, под наклейкой ТОЙ самой игры. Или например для многих игрушек не пишутся продолжения, потомучто владельцы бренда просто положили его в долгий ящик. Я согласен что обладатели изначальных прав должны получить прибыль со своего имущества, я против того, чтобы они. пользуясь своими правами ограничивали творческий процесс других.

Information

Rating
Does not participate
Registered
Activity