Пишем свой
Vložit
- čas přidán 13. 09. 2024
- #soer #itubeteam
Основной канал для общения и публикации новых видео - Телегарм - t.me/softwaree...
Спонсорство - donate.s0er.ru
Сайт платным контентом - soer.pro
Зеркало для видео Дзен Видео - zen.yandex.ru/...
GitHub - github.com/soe...
Чат для программистов - / discord
Группа ВК - codeart...
Я не программист. Работаю в 3Д и совсем чуть-чуть пописываю скрипты. Но, твой канал очень интересно смотреть. Хорошая, последовательная подача информации. Вообще мне просто любопытно, что там у программистов :)
Где блин мои 3 тысячи лайков??? я уже устал 2ю часть ждать =\
в зависимости от выбора будет зависеть
Вышла уже
@@S0ERDEVS Видел вторую часть! Я тогда мало что понял, так как был ещё зелёным. Хочу его сейчас найти, опять посмотреть. Я так понимаю ты его удалил? Зачем?
Кул лайк. больше видео про алгоритмы
Хотелось бы видеть видео про шифрование и перебор значений для нахождения ключа RSA к примеру. Ну как бы подобный формат.
Видео понравилось, особенно про подводные камни когда используешь подобные реализации функции псевдослучайностей.
Грамотный мужик, лайк
Для того, что бы достичь периода цикла равным количеству дискретных значений Х нужно, что бы а=(2^n)-1, а m=2^k и k должно быть примерно в 2 раза больше n.
Отлично, практика и теория, плюс математика!
Блин, 8 тыс просмотров и всего 1 тыс лайков... Так мы вторую часть не дождёмся.
Покажи, пожалуйста, реализацию крипто рандома на C
В линуксе для этого есть специальный пул энтропии. Куда собираются шумы из внешней среды. Нажатия клавиш на клавиатуре, перемещение головки диска и т.п. Истинно случайное число программным образом не получить
@@fish9370 ты про /dev/random?
Было бы интересно увидеть видео об обфускиции строк в коде, да и в общем об обфускации и насколько это усложняет реверс-инжиниринг
И в чем разница между этим методом и стандартной реализацией rand? Это же одно и то же, то есть дефолтные библиотеки и основаны на этом методе или я чего-то не понял?
"Рабочая сторона" как у дудя - левая. 9-) За видео - лайк и спасибо.
Лайк поставил. Только не понял где второе видео уже доступно?
Для патронов - www.patreon.com/posts/predskazanie-29697136 (это платная подписка), на канале стараюсь публиковать только интересные материалы, которые интересны большинству. Для патронов публикую чуток больше, так как туда приходят люди, которым интересно.
Братан заряжай про криптографию!)
Ух ты, программист VIM использует. Респект.
А что здесь такого? Вим он и в Африке Вим.
Соер а у вас есть в планах видео про ДДД или какую-то архитектуру? Всё-так это контент который нужен в реальной жизни.
В ближайших планах есть мысль поговорить про GRASP.
Ждёёёёёёём!!!!!!!!!!!!
Спасибо
Да ради такого не жаль и 3 тысячи аккаунтов создать, что б залайкать)))
Здравствуйте! Возник вопрос: почему глубина определяется именно тем способом, что вы показали (значение счетчика, измеряющего кол-во значений , не равных константе a ).
расскажи про свой игровой опыт) играешь ли во что-нибудь или играл?
Хорошо бы было начать с объяснения термина3🤙
Хорошо, что не с азбуки ))))
Надо было сказать что m - это маска а не какое-то непонятное число которые не понятно как подобрали. Маска m не влияет на алгоритм, влияет только на кол-во бит в конечной выборке. А вот seed * a влияет. Для равномерного распределения последовательности эти 2 числа должны быть простыми числами. Вот и вся магия.
10 не подходит, 10 число не натуральное. 11 возьми или 13
сразу видно что школьники писали этот алгоритм на викибредии. вместо сложной операции % остатка отделения там нужно использовать & логическое умножение. rand - это функция которая может быть вызвана в двойном или тройном цикле. Поэтому экономия тактов процессора тут может секономить часы реального времени каких-то инженерных вычислений.
@@serhiis_ логическое умножение и деление с остатком - это разные операции (пример: 10 & 7 = 2, а 10 % 7 = 3), не факт, что логическим умножением нельзя обойтись, но это нужно проверять.
UPD: проверил, заменить логическим умножением нельзя.
@@S0ERDEVS сразу видно что вы не шарите о чем я говорю. любое число которые можно представить как 2^n-1 можно заменить на логическое умножение. На 16 системе это сразу видно. Там FF всегда дублируются. Если все равно не понятно - любое число где в двоичном виде стоят всегда единицы.
@@S0ERDEVS я даже не проверял ваше число 7fff... но уже написал. Потому что не нужно это проверять если знать элементарные арифметические операции для двоичных чисел.
@@S0ERDEVS вы до сих пор не поняли что m ни как не влияет на алгоритм? Зачем брать m != 2^n-1 ? Это всего-лишь ограничение разрядов.
Вот смотрите по математеке что у нас происходит если брать длинную арифметику BigInt
На первой итерации у нас a*b & maska
На второй a^2*b^2 & maska
На третьей a^3 * b^3 & maska
Даже переменная m называется так от сокращения от maska. maska Ограничивает число знаков в BigInt что бы не выводило в ответ миллиард знаков.
Так же учитывая то что маска огрничивает число знаков в степенной функции мы можем не использовать числа BigInt. Если маска Int32 то и результат a*b можно записать в Int32. От этого результат не меняется. Вот от сюда выводится эта формула в программирование. Все из математики идет.
правда что ли? обычно используется микросхема с толи калифорнием то-ли с чем другим..
Можешь сделать видео про то, как работает память?
Начал си учить, но память - это что-то страшное и непонятное.
Особенно после видео про патч :(
открою тебе страшную тайну - указатель это число, и работать с ним можно как с числом.Главное понимать что это ЧИСЛО представляет собой просто номер байта в одномерном массиве в памяти, в которой выполняется код программы.
az0009990 Ты прав :>
Но всё же, например, какой смысл от функции malloc?
Я так понимаю, она резервирует память, притом программы у которых нет зарезервированной памяти, работать не могут, верно? Тогда почему мой хелловорлд работает и без malloc?
@@user-ir8nd6mj2b советую почитать чем куча от стека отличается
az0009990 А вот это уже интереснее. И где об этом узнать можно? (на русском, энглиш у меня плохой)
@@user-ir8nd6mj2b в гугле
расскажите почему % реализуется не та как mod в некоторых языка (в C в частности) - есть для этого рациональная причина?
А почему сразу не реализуют криптографический генератор в языках?
Или вообще аппартно генерировать случайное число - на уровне железа. Почему так не делают?
Делают, и очень давно уже.
Что за магические числа в коде 16807 по нескольку раз? Для таких вещей надо выделять глобальную константу. А так, спасибо за видео :)
это следствие из "правила трех", устраняется путем рефакторинга.
Почему после while не оставляешь пробел? Хорошо, когда есть подсветка синтаксиса, но если нет, то if, while, for без пробела при беглом просмотре кода становятся похожи на вызовы функций
А ещё остались среды без подсветки синтаксиса? Давно не встречал.
Пожалуйста, если возможно текст на экране по-крупнее. Спасибо.
ого , очки новые?
Напиши пожалуйста длинную арифметику, умоляю тебя. Меня нужно на олимпиаду это. Сложение я сам смог сделать а вот все остальное не получается..(вычитание умножение деление степень и корень)
Залезь в исходники java и скопируй оттуда реализацию. Пакет BigInteger
Soer, получается для 64бит чисел подойдет m=9223372036854775807
все, ок, понял для чего m.
правильно ли будет делать шансовую система на основе рандома? допустим шанс успеха 60%, получаем рандомное значение из 100 и если это значение меньше или равно 60 это true если больше то false ?
На lcg точно не очень хорошая идея. Есть модифицированные варианты где допускаются повторения, они намного лучше подойдут.
большинство шансов так и вычисляются:
rand() % 101 < chance
@@user-yb3vy2wx8u тут надо понимать, что если мы говорим про lcg, то этот метод без "сюрпризов". Например, если мы кидаем 100 раз монетку и считаем сколько раз выпал орел и решка (это шансовая система 50/50), то вариант 90 орлов и 10 решек - должен рано или поздно выпасть (очень редко, но должен). Но при использовании lcg такой вариант впринципе невозможен.
2 константы в lcg, при вызове же будет каждый раз аллокация?
it depends
Почему Си, а не Си++?
Личные предпочтения.
Software Engineer - Soer , Даа
Фигасе, столкнулся сейчас с неприятной штукой: в одном компиляторе sizeof long int 4 байта в другом 8 (Оба компилятора gcc x86_64)
Так это зависит от того, под какую платформу компилировал
@@4AneR под x86_64, uint64_t в обоих 8 byte, int в обоих 4 byte, long int в одном 4 в другом 8, long long int в обоих 8byte, вроде бы uint64_t пишут гарантированно во всех компиляторах 8 byte, а про стандартные типы неразбериха какая то.
@@МаксимХвостов-м1й суть в обратной совместимости, чтобы не ломать старые стандартные типы, ввели uint64_t и подобные, гарантирующие размер.
Подскажите пожалуйста бренд очков ваших, заранее спасибо
Я взял в аптеке первые попавшиеся. Чисто ради пробы.
@@S0ERDEVS Они антибликовые? Есть ли эффект?
Былобе еще круто видео по структурами данных и как с ними работать и в чем хранить, ну скажем Графы
Магические числа в коде, -антипатерн
Я про 16807
Магическое число - это неименованное число. У меня четко прослеживается связь с алгоритмом "int a = 16807". Просто имя в алгоритме не презентабельное. Но все четко по правилам.
@@S0ERDEVS
7:10
uint r=lcg();
while (r!=lcg())n++;
Я про то, что запоминать первое число, а не хардкодить его
@@ziftrue Так это вообще проверочный код, реализация самого алгоритма в методе lcg. А проверочный код должен выноситься в отдельный тест (и рефакториться) или удаляться - это уже по ситуации.
Изначально хотел сделать через переменную "r" сохранение первого значения (если ты обратил внимание, я ее ввел, но не стал использовать), но потом понял, что пояснить сравнение "while(lcg() != r)" придется на словах, т.е. в данном случае явно теряется семантика. Поэтому решил использовать прямую константу. По идеи нужно было подобрать более точное название переменной "r", тогда можно было бы завести в условие цикла. Так что тут много нюансов.
@@ziftrue инициализация результатом функции ? фуу, это ж даже не совместимо с ANSI C
Внимание всё идёт на очки, не получается вникнуть в обсуждение. Очки блестят и поглощают внимание, не удается сконцентрироваться на сути
с интереса скачал компилятор С, запустил код - жду жду жду нет результата програмы, почему?)
/dev/hands проверял?
А вообще, если все правильно сделал, значит у тебя разрядности не хватает, смотри sizeof(int).
@@S0ERDEVS я не учил СИ, но после Java все понятно. win10, x64, intel 5, 8 озу
@@KyivanEnjoyer а хули ты сразу на java пришёл, минуя ассемблер и Си? Это как сразу в доктора наук идти, не окончив школу..
@@ihateidiots9484 а нахуй мне Си?
В универе начинал с C#, Java, Javascript.
Остался на java.
Щас на магистратуре есть Scala, Android(Java/Kotlin). Хз что тебе не нравится
Ты точно CTF не занимался?
Capture The Flag? Этим точно не занимался.
@@S0ERDEVS зря :)
Из-за блика моника, один глаз смотрится ниже другого, выглядит крипово 😬
может это проблемы со зрдв
это редактор VIM? почему он? для понтов типа олдскул?)
Даже не думал. Нужен был редактор, взял вим.
Включил на "третем" монике смотрю, эмм в основном слушаю..
Типо, умный, удобно D) (Забавно получился слоган, прям как в рекламе).).
(Для людей кто, даже на самую маленькую капельку не в теме, или с нечто подобным никогда не был знаком.. - для таких словно все равно, что в космос ракету отправить и их глаза на лоб лезут. --- А ты такой сидишь просто из интереса, ну или пытаешься понять нуу хотя бы капельку..)
(с С++ не знаком, да понятно согласен круче С++ ниче нет.)
Все равно, было интересно, спс.
Хитрый Соер, хоть бы раз рассказал, какими проектами занимался, что реализовал, над чем работаешь.
Уже миллион раз говорил, что занимаюсь распределенными системами мониторинга, BI-системами.
Смотрел многие Ваши видео и все не мог для себя точно определить, а что же мне не нравится на данном канале? Как будто бы что-то не то... Со временем, кажется, понял, что именно не то. Есть какое-то ощущение, что автор несколько депрессивен и эта депрессивность/уныние передается зрителю. Кто согласен, ставь лайк, кто не согласен, ставь дислайк! Это просто мое предположение, возможно, ошибочное!
Очень сложно.