?

Log in

No account? Create an account

Программистское - Общество дровосеков Бердичева по изучению Мишны

Aug. 6th, 2014

07:03 pm - Программистское

Previous Entry Share Next Entry


Молодому сотруднику (PhD, на минуточку) поставили задачу совместить некую сишную библиотеку, дампящую текстовое представление дизайна и принимающую FILE * для записи в него, с сиплюсплюсной шифровальной библиотекой, в которой надо писать в fstream. Он тыр-пыр, восемь дыр. Ладно, показал я ему open_memstream, но местные специалисты по intellectual property protection зарубили этот вариант - так в памяти образуется полный открытый текст, который можно увидеть, попросту убив процесс и сделав strings core. Ладно и это; показал я ему fopencookie, и тут наступил затык: он не понял, как оно работает.

Два или три раза приходил, чтобы я ему объяснил.

Tags:

Comments:

[User Picture]
From:archaicos
Date:August 7th, 2014 02:11 am (UTC)
(Link)
"Местные специалисты" должны зарубить все, это в том числе, если я правильно понимаю их паникерскую логику.
(Reply) (Thread)
[User Picture]
From:spamsink
Date:August 7th, 2014 02:20 am (UTC)
(Link)
В любом случае парсеру надо давать открытый текст, так что при большом желании и куче времени/денег всё вскрывается, особенно если бинарник слинкован не статически. Защита, в сущности, на уровне Macrovision™, так что им достаточно, чтобы совсем явных дыр не было.

Если им припрет, выключим буферизацию.
(Reply) (Parent) (Thread)
[User Picture]
From:archaicos
Date:August 7th, 2014 02:13 am (UTC)
(Link)
Что до не понял, был эпизод с человеком, который не мог протестировать malloc() и free(). Тоже PhD не хватило.
(Reply) (Thread)
[User Picture]
From:juan_gandhi
Date:August 7th, 2014 03:46 am (UTC)
(Link)
Ну не все же умеют писать код. Некоторые больше по части попиздеть.
(Reply) (Thread)
[User Picture]
From:spamsink
Date:August 7th, 2014 04:40 am (UTC)
(Link)
Тут проблема противоположная. Написать-то он мог бы; ему мозги застило классами, таблицами виртуальных функций и прочей терминологической лабудой. Чтобы понять, что такое opaque pointer, который может указывать на что угодно, и что сишная структура, "реализующая полиморфизм", может быть индивидуальной у каждого объекта, потребовалось 2-3 итерации.
(Reply) (Parent) (Thread)
[User Picture]
From:some41
Date:August 7th, 2014 05:02 am (UTC)
(Link)
ничего особенно удивительного. когда пишешь на языке высокого уровня, и все это работает само, то обычно не задумываешься, как это реализовано, и как это собрать самому из говна и палок. для этого нужно иметь специальный опыт.
(Reply) (Parent) (Thread)
[User Picture]
From:sab123
Date:August 7th, 2014 05:26 pm (UTC)
(Link)
Вообще-то нормальные люди задумываются. Отсутствие такого задумывания - признак отсутствия мозга.
(Reply) (Parent) (Thread)
[User Picture]
From:yatur
Date:August 7th, 2014 04:09 am (UTC)
(Link)
Корень зла - в монструозности С++.

http://yosefk.com/c++fqa/defective.html#defect-11

Нормальному человеку, далекому от мира uninon-ов и undefined behavior, такое понять действительно может быть непросто. Хотя Adapter pattern, конечно, никто не отменял, но очень уж это коряво выглядит в данном случае.
(Reply) (Thread)
[User Picture]
From:spamsink
Date:August 7th, 2014 04:41 am (UTC)
(Link)
stdio реализовано на чистом Си, а знание С++ как раз мешало.
(Reply) (Parent) (Thread)
[User Picture]
From:fatoff
Date:August 7th, 2014 04:53 am (UTC)
(Link)
Поясни, что должно вызывать восхищение/недоумение/живой интерес? Никаких знаков пунктуации, как вопросительных/восклицательных нет.

По поводу шифрования, представляется такой небольшой шифровальный адаптер, едящий по одному символу...
(Reply) (Thread)
[User Picture]
From:spamsink
Date:August 7th, 2014 05:08 am (UTC)
(Link)
Недоумение вызывает то, что человек не смог понять/вычислить, как устроена адаптированная к стандартной функциональность, описанная по ссылке, хотя, казалось бы, всё прозрачно.

С шифровальным адаптером нет проблем, ему можно хоть по одному символу давать, хоть по несколько.
(Reply) (Parent) (Thread)
[User Picture]
From:fatoff
Date:August 7th, 2014 05:23 am (UTC)
(Link)
Ну что тут можно сказать... не только код пишем, но и вникаем сначала, когда не можем вникнуть, то стало быть, не можем выполнить работу в принципе...
(Reply) (Parent) (Thread)
[User Picture]
From:spamsink
Date:August 7th, 2014 05:24 am (UTC)
(Link)
Да он вроде ничего, работу выполняет, в большинство вещей вникает. А тут в трех соснах заблудился.
(Reply) (Parent) (Thread)
[User Picture]
From:oldjackaroo
Date:August 7th, 2014 06:22 am (UTC)
(Link)
А какое отношение PhD к этому непониманию имеет? Тебе еще попался очень правильный молодой сотрудник, который не постеснялся прийти к тебе два или три раза. Мог ведь и написать полтыщи строк, послать на ревью и потом доказывать, что переделывать ничего не надо...
(Reply) (Thread)
[User Picture]
From:spamsink
Date:August 7th, 2014 06:26 am (UTC)
(Link)
Писать там от силы строк 20-30, не считая комментариев, причем чем меньше понимаешь, тем короче выйдет. С одной стороны хорошо, что он решил не просто написать по образцу, как по приведенной ссылке, а разобраться; с другой - плохо, что до него так медленно доходило.
(Reply) (Parent) (Thread)
[User Picture]
From:ny_quant
Date:August 7th, 2014 04:30 pm (UTC)
(Link)
PhD это не обязательно человек, до которого быстро доходит. Там другие ТТХ.
(Reply) (Parent) (Thread)
[User Picture]
From:sab123
Date:August 7th, 2014 05:25 pm (UTC)
(Link)
Гм, красиво. Давно пора было такое устроить, замечательная штука для писания юнит-тестов.
(Reply) (Thread)