Я сам использую MSYS и Cygwin на винде, в обеих средах все собирается и обычным мейком, куда уже кросс-платформеннее.
Это не кроссплатформенность, это эмулятор юниксов в винде. Так-то и «блокнот» виндовый можно под линуксом запустить через wine, но это не делает его кроссплатформенным. :)
Желания делать отдельно для вижака систему сборки не нашел,
Вы не понимаете смысла термина «кроссплатформенная система сборки», да? :)
Кроссплатформенная — значит, одна на все платформы. Не «отдельно для вижака», а одна на все.
При чем здесь версия вижулятины? CMake — это отдельный самостоятельный продукт, он от версии студии не зависит. Есть и другие кроссплатформенные системы сборки, просто cmake наиболее широко распространен и проработан.
Так-то, конечно, накидать файлов в проект может любой, но есть один нюанс. Когда система сборки кроссплатформенная, подразумевается, что автор не прочь бы собрать свой проект на всяких платформах — а значит, будет не против патчей, исправляющих ошибки сборки под виндой. Ну а когда система сборки — *nix-only, то сразу понятно, что код под виндой даже не пытались собирать, а значит, придется разгребать ошибки. При этом не факт, что автор потом патчи примет.
Все это собирается 'make''ом, поэтому пользователи Windows для оценки хотят установить себе какой-нибудь Cygwin, либо разбираться с Visual Studio и библиотеками самостоятельно.
А использовали бы CMake — и виндоюзеры бы заплакали от восторга.
Смотря на все эти сложности, купить жесткий диск или залить все в облако может показаться куда более простым решением проблемы.
Меня всю статью не покидала мысль об архиваторах. Жаль, картинки и видео сжимаются плохо, а они — основной сжиратель места на винтах.
Сразу вижу как минимум одну граблю: «назначенное число» может оказаться слишком большим («назначили» считать с десятой, а в хэше всего 2 цифры, остальное буквы). Еще неясно, кто именно назначает это магическое число и зачем. Сразу ясно — для манипуляций.
Еще непонятно, как именно вы шифруете емейлы. Если шифрование секретное — значит, организатор методом подбора может подогнать нужный хэш. Если шифрование открытое, то это подарок для спамеров.
И непонятно, как в примере вы из числа 8505 получили ID пэрэможця 1711. Какая-то магия.
А нельзя ли — вкратце — сей алгоритм описать?
Помню, был лет двадцать назад бум всяких онлайн-рулеток, так в одной из них предлагалось для проверки честности скачать зашифрованный rar-архив.
Предполагалось примерно такое взаимодействие с пользователем:
1. На сервере «загадывается», куда попадет шарик, и формируется архивчик с загаданным числом.
2. Пользователь скачивает архив и делает ставку.
3. После розыгрыша пользователю дается пароль для расшифровки архива, и он может убедиться, что загадано было именно то, что нарисовалось на экране.
Понятно, что способ проверки был очень муторный и никто этим не занимался.
Эта информация легла в основу алгоритма, который мы реализовали на платформе для проведения конкурсов bepeam.com
А чем вас не устроил обычный генератор случайных чисел? Практически все они генерят вполне себе равномерно распределенные числа от 0 до скольки скажете. Совершенно непонятно, зачем мудохаться с md5 и выкусывать из hex-строки только цифры, рискуя остаться с очень коротким результатом.
Я правильно понял? Вы берете хэш как hex, но считаете от него только цифры от 0 до 9?
А буковки a-f куда деваете? Отбрасываете? Почему? Зачем? А если весь хэш — это нечто вроде aafdeccdeffaabcaadf?
Вот видите, самый могучий на нынешний день интеллект — человеческий — не смог понять цель комментария от другого интеллекта, но при этом не постеснялся рассказать о его дефектах. И даже дал советы о дальнейшем развитии.
Воистину, еще шаг — и вся Вселенная изменится! (на самом деле нет).
Тут в мой слегка пьяный и довольный жизнью мозг пришла мысль, что где-то я уже такое видел.
Большой взрыв
Всё началось 13 миллиардов лет назад.
Эвона как автора-то накрыло… Явно не слегка и явно не только под этанолом…
Этот период мы назвали «Тёмными веками», потому что какое-то время абсолютно ничего не происходило.
Сила гравитации постепенно собирала газ в облака.
Ну как же «ничего не происходило», если газ собирался в облака?
В шоу с фейерверками размером со Вселенную интеллект играет особую роль. Он зажигает свои собственные огни. Интеллект изменяет облик вселенной своим гением и изобретательностью.
Чота ржу.
Особенно умиляет бесподобная, непревзойденная скромность.
«Интеллект» пока даже на своей родной планете больше нагадил, чем создал. А изо всей вселенной пока что немножечко намусорили на поверхности Луны и Марса. Ну и так, на других ближайших телах по мелочи зондов набросали.
Но!
Пафос!
Вселенная уже никогда не будет прежней! :)
И ты и я, и каждое живое существо вокруг нас. Мы все — лишь сияющие искры фейерверка Большого Взрыва.
Косвенное присвоение (dereference, почему то переведенное как «разыменование», хотя очевидно, что «отсылка»)
Reference — это отсылка, ссылка, указание на что-то.
Dereference — это убирание отсылки (т.е. разыменование указателя). Разыменование — да, перевод не дословный, но термин вполне устоявшийся.
Так вот, разыменование — это отдельная операция. Причем есть обратная ей операция — взятие адреса (& в си). Присваивание — еще одна отдельная операция. А то, что вы написали как «косвенное присваивание» — это две операции вместе: разыменование указателя и присваивание.
Вообще-то сакральное знание про О-большое нужно в основном именно при работе с контейнерами всякими. В С++ стандарт тоже регламентирует сложность операций с различными контейнерами в терминах О.
Ну так и чем все закончилось-то? «Читал-читал, пробовал-пробовал, писал наколенные сайты, вот вам полезные ссылки» — а где, собственно, про трудоустройство?
Операция — это записываемое выражение, а не состояние ваших мыслей.
Мы говорили про присваивание. Вы его теперь уже «операцией» называете?
Присвоение записывается тремя способами, которые перечислены в обзоре.
Упорствуете в ереси? Ну-ну. :)
Добавьте четвертый, уберите третий или «молчите навек».
Добавляю четвертый: memcpy().
Убираю третий: нет никакого «косвенного присваивания», т.к. *a = b; полностью эквивалентно 0[a] = b;
Молчать навек, извините, не буду.
Это не кроссплатформенность, это эмулятор юниксов в винде. Так-то и «блокнот» виндовый можно под линуксом запустить через wine, но это не делает его кроссплатформенным. :)
Вы не понимаете смысла термина «кроссплатформенная система сборки», да? :)
Кроссплатформенная — значит, одна на все платформы. Не «отдельно для вижака», а одна на все.
Так-то, конечно, накидать файлов в проект может любой, но есть один нюанс. Когда система сборки кроссплатформенная, подразумевается, что автор не прочь бы собрать свой проект на всяких платформах — а значит, будет не против патчей, исправляющих ошибки сборки под виндой. Ну а когда система сборки — *nix-only, то сразу понятно, что код под виндой даже не пытались собирать, а значит, придется разгребать ошибки. При этом не факт, что автор потом патчи примет.
Но ракудо, пожалуй, поставлю — посмотрю. Любопытно.
А использовали бы CMake — и виндоюзеры бы заплакали от восторга.
Меня всю статью не покидала мысль об архиваторах. Жаль, картинки и видео сжимаются плохо, а они — основной сжиратель места на винтах.
Еще непонятно, как именно вы шифруете емейлы. Если шифрование секретное — значит, организатор методом подбора может подогнать нужный хэш. Если шифрование открытое, то это подарок для спамеров.
И непонятно, как в примере вы из числа 8505 получили ID пэрэможця 1711. Какая-то магия.
Помню, был лет двадцать назад бум всяких онлайн-рулеток, так в одной из них предлагалось для проверки честности скачать зашифрованный rar-архив.
Предполагалось примерно такое взаимодействие с пользователем:
1. На сервере «загадывается», куда попадет шарик, и формируется архивчик с загаданным числом.
2. Пользователь скачивает архив и делает ставку.
3. После розыгрыша пользователю дается пароль для расшифровки архива, и он может убедиться, что загадано было именно то, что нарисовалось на экране.
Понятно, что способ проверки был очень муторный и никто этим не занимался.
А чем вас не устроил обычный генератор случайных чисел? Практически все они генерят вполне себе равномерно распределенные числа от 0 до скольки скажете. Совершенно непонятно, зачем мудохаться с md5 и выкусывать из hex-строки только цифры, рискуя остаться с очень коротким результатом.
А буковки a-f куда деваете? Отбрасываете? Почему? Зачем? А если весь хэш — это нечто вроде aafdeccdeffaabcaadf?
UPD: Ай, чуточку опоздал :)
Воистину, еще шаг — и вся Вселенная изменится! (на самом деле нет).
Эвона как автора-то накрыло… Явно не слегка и явно не только под этанолом…
Ну как же «ничего не происходило», если газ собирался в облака?
Чота ржу.
Особенно умиляет бесподобная, непревзойденная скромность.
«Интеллект» пока даже на своей родной планете больше нагадил, чем создал. А изо всей вселенной пока что немножечко намусорили на поверхности Луны и Марса. Ну и так, на других ближайших телах по мелочи зондов набросали.
Но!
Пафос!
Вселенная уже никогда не будет прежней! :)
Особенно удалась трава.
Не больший новояз, чем «разыменование» в русском.
Что-то мне подсказывает, что в 1960-х влияние русского языка на английский было примерно нулевым. Уж в области вычислительной техники — точно.
Reference — это отсылка, ссылка, указание на что-то.
Dereference — это убирание отсылки (т.е. разыменование указателя). Разыменование — да, перевод не дословный, но термин вполне устоявшийся.
Так вот, разыменование — это отдельная операция. Причем есть обратная ей операция — взятие адреса (& в си). Присваивание — еще одна отдельная операция. А то, что вы написали как «косвенное присваивание» — это две операции вместе: разыменование указателя и присваивание.
Мы говорили про присваивание. Вы его теперь уже «операцией» называете?
Упорствуете в ереси? Ну-ну. :)
Добавляю четвертый: memcpy().
Убираю третий: нет никакого «косвенного присваивания», т.к. *a = b; полностью эквивалентно 0[a] = b;
Молчать навек, извините, не буду.