Pull to refresh
76
0

User

Send message
Итак, задача сводится к тому, чтобы:
1. Получить надежный источник энтропии.
2. Прошлые значения может проверить любой желающий.
3. Этот источник был независим от заинтересованных лиц, то есть независим от подтасовок.

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

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

Тогда источником энтропии может быть природа. Значения (с максимально возможным числом знаков после запятой, но исключая влияние погрешности измерений) солнечной активности, геомагнитной активности, и т.д. Брать значения от надежных лабораторий, которые публикуют такую информацию. Можно брать совокупность таких параметров и считать хеш. Так как лабораторий много по всему миру, подделать этот результат так просто не получится.
Первые подобия словарей появились в XXV веке до н.э. у шумеров. Это были так называемые глоссы: на полях рукописей выписывались значения незнакомых слов.

Какие еще рукописи? У древних шумеров же была клинопись, на глиняных табличках… Или я что-то пропустил?
Согласен. Единственное, что хоть как-то объединяет этот пост с тематикой Хабра, так это использование ключевых слов QR-код и MacBook Pro. IMHO, этому посту тут (да и вообще на Хабре) не место.

Но вообще автор крут, это нельзя не признать. Хоть в данном случае и проявил себя как попрошайка, как бы негатив, да, но такое по молодости бывает, можно понять… В принципе, не нам судить. Главное, чтобы законы стран пребывания не нарушал (и не подавал другим пример в этом). Будем считать, что в данном случае он ставил социологический эксперимент. ))
Если человек просит и ему дают — значит он это заслужил (читай заработал).

IMHO, это в корне неверно. Попрошайки мастерски научились эксплуатировать альтруистические качества простых людей, например, могут использовать грудных детей и т.д., то есть речь идет исключительно о манипулировании, но не о заслугах (или читать как заработал ???). А вот музыканты в метро это уже не совсем попрошайки, хотя и близки к ним, но по крайней мере они хоть как-то пытаются заслужить подаяние.
Можно искать работу в знакомом городе (поспрашивать у друзей и родственников) удаленно по инету. Или на фрилансерском сайте. Но тут да, действительно, придется работать. И нужно что-то уметь. Хотя, вот, сайты автор делать может, это уже что-то.
Посмотрел на карту путешествий автора в его блоге. Круто. Только вот, пока что он был в более-менее безопасных местах с доброжелательным мирным населением. А вот дальше, если, конечно, он выберет кругосветку, ему предстоит посетить Латинскую Америку и Африку. Там вряд ли сработает подобная тактика выпрашивания (по QR-коду или как-нибудь еще, не менее креативно), да и подработать на примитивных работах может не получиться, разве что за еду. Тогда и начнется настоящий экстрим. Как бы друзьям и маме с папой не пришлось собирать деньги на выкуп из какой-нибудь африканской страны, с таким образом жизни и без наличных денег это легко может получиться… Хотя мало ли, может быть автор в те места и не собирается, и ограничится путешествиям по благополучным странам, тогда OK.

IMHO, если уж принципиально хочется путешествовать без денег, и быть открытым миру, это лучше делать с прокачанным фрилансерским аккаунтом, чтобы в случае чего можно было где-то остановиться на несколько дней, и пополнить кошелек, нажимая кнопки и не подвергая жизнь опасности. ))
Про паразитический образ жизни тут еще никто автору не написал? Ладно, шучу, шучу. Автор, все OK, не слушайте. Навскидку, где-то 70% хомо сапиенсов на этой планете паразитируют на обществе (в том числе немало студентов), так этот мир устроен.

С точки зрения программиста такой образ жизни вряд ли приемлем, провести полтора года в экстремальных путешествиях, и планировать еще столько же, в возрасте 20-22 года, когда мозг наиболее открыт для получения новых знаний, когда буквально впитывает новые сложнейшие технологии, которые изменят будущее… Более оптимально было бы забуриться в общаге возле своего вуза, и день и ночь проводить на кафедре с кучей компов и прочего железа, участвуя в научных разработках вместе с доцентами и профессорами, или например конструируя роботов, и т.д. Да, я серьезно.

Но тут же другая ситуация. Автор сам себе организовал прекрасный личный университет журналистики. После такого многолетнего путешествия у него сформируется отличный английский, возможно, еще будет пара языков на сносном уровне. Знание ряда культурных нюансов многих народов мира. Кроме того, сейчас он уже работает на свое будущее портфолио. Уже через несколько лет он, если захочет, будет иметь приоритет перед 99% выпускников какого-нибудь журфака, и сможет поставлять качественные новости для крупнейших новостных каналов, рапортажи из горячих точек, и т.д. С такими-то навыками коммуникации!
> Звонок после продажи

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

IMHO, меня такой звонок бы очень сильно напряг. Особенно если бы я в это время был на работе и писал код, или был на совещании, или у клиента, или в муниципалитете, или в магазине возле кассы… да где угодно. И вообще, зачем мне неожиданный звонок от незнакомых людей?
Спасибо за развернутый ответ, позиция понятна, принимается. Повторюсь, написать такое за два часа, с нуля, без интернета, это уже отличный уровень. Но в любом случае, не мне судить. Меня просто некоторые детали реализации зантрересовали, у вас они, как оказалось, позволительны, а в некоторых других компаниях строго запрещены. Но это мелочи, в принципе.
Ясно, спасибо за ответ, принимается. Хотя я бы не доверял во всех случаях компилятору (включая данный случай), так как реальные результаты часто отличаются от того, что ожидается по теории, но я понимаю, что, возможно, это лишь моя личная программерская паранойя. Кстати, если не секрет, какой компилятор Вы в данном случае использовали, и с какими ключами компилировали этот код? Было бы интересно проверить.
Тут скорее не придирка, а констатация факта, что тестовое задание не выполнено. Конечно, это не значит, что такого кандидата не нужно брать на работу, просто достаточно попросить доработать код. Хотя вообще лучше отдавать предпочтение тем кандидатам, которые с первого раза сдают такие задания без ошибок, это потом и по реальной работе будет заметно.
Думаю, то, что получится, очень сильно зависит от выбранного компилятора, а также реализации std::string. Прошу прощения, какой компилятор Вы имеете в виду, и с какими опциями компиляции? Хотелось бы посмотреть, какой генерируется код (на ASM).

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

Eсли посмотреть имплементацию basic_string.h, то, в зависимости от реализации, будет что-то типа:

iterator end() {
    return iterator(_M_data() + this->size());
}


По крайней мере описание именно такое:

The past-the-end character is a theoretical character that would follow the last character in the string. It shall not be dereferenced.

Because the ranges used by functions of the standard library do not include the element pointed by their closing iterator, this function is often used in combination with string::begin to specify a range including all the characters in the string.
#0. Код программиста, приведенный на данный момент в статье, не обрабатывает унарный оператор перед скобками. То есть на выражение -(1+1) будет выдана ошибка, хотя это вполне допустимое выражение с точки зрения математики.

#1. Код программиста на выражение -1*0 выдаст -0. Вряд ли это хорошо. Или это так было задумано?
Посмотрел код разработчика, всегда интересно смотреть, как пишут специалисты крупнейших компаний… Правильно ли я понял, что у вас допускается и считается нормальным, когда конструкции типа str.end() многократно вызываются в циклах, включая вложенные циклы?

for (std::string::const_iterator cit = str.begin(); cit != str.end(); ++cit) {
    ...
    int curnum = 0;
    while (cit != str.end()) {
        curnum = 10*curnum + (*cit - '0');
        if ((cit + 1) == str.end() || !isdigit(*(cit+1))) {
            break;
        }
        ++cit;
    }
    ...
}


P.S. То, что я написал выше, это не в упрек программисту. Сам я, с нуля, прямо на собеседовании, такую задачу за два часа скорее всего не решу на C++ (по крайней мере без ошибок и ляпов, и чтобы мне было не стыдно такой код показывать). Попросил бы часа четыре, но при этом написал бы множество юнит-тестов, и доку под доксиген. Хотя тогда проводящие собеседование скорее всего меня назвали бы медленным программистом, и не взяли бы. Жаль.
Правильно ли я Вас понял, что всё, что по ту сторону интерфейса — абстракция?

Наконец-то! Кажется, я начинаю понимать! Всё предметы, которые я вижу своими глазами (то есть через визуальный интерфейс) — абстрактны. И все люди, которых я видел, и про которых читал — абстрактны. Нужно будет не забыть казать своей жене, что она тоже абстрактна.
Вам не важно как генерируется прерывание, ему не важно какие конкретно команды вы напишите.

Да, это именно так.

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

Действительно, можно притянуть за уши, и назвать это абстракцией. Но на самом деле это просто разные задачи. Железо и прога… тут просто один объект сделал нечто, и передал сообщение другому объекту через некий заданный интерфейс, не более. Так ли уж необходимо вводить дополнительное избыточное понятие абстракции в этом случае?
Можно подумать, прерывание — это не абстракция взаимодействия с внешним миром, а запись бита в контроллер — это не абстракция управления лампочкой.

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

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

Незачем строить иерархию абстракций там, где это не нужно. Например, вам поручили вскопать огород. Вы копаете, абстрагируюясь от того, что в это время где-то далеко в Африке родился слоненок? Нет же, причем тут слоненок к вашему огороду? Вы абстрагируетесь от начальника, коротый поручил эту работу? Нет, так тоже нельзя сказать, при чем тут это? Вы абстрагируетесь от того, что потом за эту работу получите оплату? Так тоже нельзя сказать, это вообще другая плоскость. Или кто-то скажет, что, мол, копает огород, абстрагируясь от погодных условий, от ветра, дождя… но это бред же. А вот у бухгалтера есть листочек, где написано, что он должен заплатить каждому работнику по N денег за каждую обработанную сотку огорода. Для него и работники, и сотки абстрактны, и как раз тут упоминание абстракции уместно. Чувствуете разницу?

Практически всегда можно подобрать [как бы] логичную абстракцию для чего угодно. Но зачем это делать в тех случаях, когда это избыточно? Бритва Оккама — «сущности не следует умножать без необходимости», это относится в том числе и к абстрактным сушностям. Прога для микроконтроллера на обязательно от чего-то абстрагируется… точно также можно сказать, что она просто имеет некое поведение сама по себе, как некий самодостаточный объект, а подкюченные к девайсу внешние устройства просто используют это поведение.

Повторюсь, в данном случае это спор о философских понятиях, не имеющих отношения не только к ООП, но и вообше к программированию. В ООП же абстракции другого рода, они касаются именно абстракции программной реализации, и это уже не философское понятие.
А при чем тут программирование? Тогда уж к вообще под что угодно можно подвести те или иные абстрактные категории, вообще всё, что существует или не существует. Это уже скорее из области философии. Ну ладно.

Данная прога для микропроцессора ни от чего не абстрагируется. Ей не нужно ни от чего абстрагироваться. При чем тут форма бачка унитаза? Эта прога самодостаточна — это просто последовательность команд микропроцессора, которая запускается при срабатывании прерывания, не более. Неважно что вызвало прерывание, если оно вызвано, то прога запустится. ))
Программирование бывает не только построением модели, это бывает и просто кодированием, написанием инструкций для выполнения.

Допустим, я написал программу для микроконтроллера, которая при поступлении прерывания внешнего датчика включает световой индикатор. Где тут модели и абстракции? А, ну да, можно было бы сделать иерархию классов, реализовать гибкую расширяемую архитектуру, все дела… но у меня для моей задачи было всего лишь 128 байт, и мне этого хватило. Или это не программирование? ))
== а вот для* Oracle DBA это бы не составило ни малейшего труда ==

Information

Rating
Does not participate
Location
Noord-Holland, Нидерланды
Registered
Activity