Паскаль согласно позиции того же Вирта был дальше улучшен в направлении Modula (аж до
Паскаль же сам вырвался на свободу по известному принципу — в IT побеждает не лучшее, а первое минимально приемлемое (впрочем, такое много где).
Если сейчас смотреть в ту сторону, то нужно сделать нечто среднее между Modula-3 и Ada, без особых тяжеловесностей последней, но с максимальной защитой от типовых граблей, для чего упор на мощную типизацию.
Я втратив нитку бесіди
Це помітно: ви втратили її десь вже в третій раз.
Криптографічність для хеш-функції це просто наявність ефекта лавини і все.
Якщо подивитись в вікі, то криптографічність вимагає 1) preimage resistance, 2) second preimage resistance, 3) collision resistance, 4) приблизно равної імовірности будь-якого результату (image) для довільного входного аргументу (preimage). А те, що ви кажете про лавинний ефект — це вже наслідок (1), і його абсолютно недостатньо. Давайте ви спробуєте вже спиратись не тільки на власні фантазії?
Я вам про визначення, ви мені про назву.
Проте, secure hash — одна з загально відомих назв для того, що для чого офіційна перша назва — «cryptographic hash».
MD5 на моєму віці був актуальним, потім актуальним бути перестав. Питання є?
Є — чому крім актуальности ви не звертаєте уваги більше ні на що, і помʼякшуєте вимоги до рівня, який не є достатнім для реальних застосувань.
Так передумайте xDxDxDxDxD
Навіщо? Я писав на q, але зараз у мене нема, і, сподіваюсь, і не буде такої потреби.
тільки а навіщо його робити, навіщо комусь ламати Джавку або Пітухон?
Ломають не мови, а програми на них.
Підсумовуючи, я намагався отримати щось корисне-конструктивне з дискусії з вами, але це виявилось неможливим.
Проапгрейдив десктопи (попередні були на актуальному стані за
Не вигадуйте визначень, а почитайте що таке криптографічна хеш-функція. «secure hash» це якась галюцинація, таких хеш-функцій не буває.
Стандартне скорочення для cryptographically secure hash. Наприклад, в назві всього сімейства SHA. Не треба казати про галюцинації, коли ви самі далекі від реальности.
Буває криптографічний хеш актуального алгоритму і криптографічний хеш неактуального алгоритму.
Чим/як визначатимете актуальність?
Той хеш що в hashmap може бути нестійким до атаки на знаходження колізії, бо там мінімум раундів — але він все одно криптографічний.
Ніт. Він не має вимоги ні preimage resistance, ні тим паче second preimage resistance, і у більшости реальних реалізацій і не відповідає їм. А без цих вимог він не може бути криптографічним.
Планіметрія.
Ні, дайте результат згідно вашої попередньої класифікації, або визнайте, що вона неповна.
Луска собача. Де ви бачили такий криптографічний хеш у якого нуль колізій? Такого чуда чудесного теорія кілець ще не народила :(
Для множини аргументів такого ж розміру, як і множина результатів — тривіально: беру якісний симетричний шифр (наприклад, AES) з тим же розміром блоку і конкретним секретним ключем. А для довільної довжини аргументу — звісно, не буде, але і не очікувалось.
Але я про те, що навіть при тому ж розмірі множини аргументів (наприклад,
Мені щось ваш підхід до стилю аргументації перестає подобатись.
Кен Іверсон це бог мов програмування. Дивуватися правда є причини.
APL це було красиво, згоден. Але це тільки один аспект програмування. Ой не все можна укласти на довгі масиви.
А ось що і як Уїтні зробив після нього — мені зовсім не сподобалось.
Ну і зараз те ж саме пишуть без синтаксису APL просто на словах. Особливо воно вистрілило зі всякими SSE, «дякуючи» сучасному дизайну оперативної памʼяти (саме на цьому колись «виїхала» kdb+, але зараз таких time series вагон і маленький візок).
І засновані павутиною Форт/Лісп це теж для реальної роботи, ога. Реальна робота в раю хіба що.
Раєм це точно не було б, в Forth можна повіситись через ручний контроль за стеком, в LISP — через лічення дужок. Проте саме Forth як зразок мови для VM, а LISP — гомоіконічного універсального представлення даних, дає розуміння навіть там, де напряму це не використати. А ще S-expressions це універсальна мова конфігурації з виправленими дитячими хворобами синтаксису.
Чому «засновані павутиною»? Якою саме павутиною, і чому?
Я маю на увазі вимоги до hashmap по о-великому для таких і сяких випадків вхідних даних. Там треба розуміти хоча би тільки що чим більше hashmap набивається під зав’язку — тим частіше про чудові властивості приходиться забувати.
А тепер дивимось на те, для чого колись в Python вводили hash seed, а в Java — піддерева в HashMap. «Криптографічність» у вигляді preimage resistance тут би все одно не допомогла, бо вирахувати колізії, наприклад, для набора в 10↑9 елементів, зараз зможе школяр зі смартфоном.
Удовольствие от X
Теорема зонтика
От мозаик Пенроуза к надёжным шифрам
Ну теж цікаво, але вже інше.
Алгоритми бувають:
Цілочислені
Сортування
Пошуку
Навіть якщо так, пошук числа в масиві і пошук відрізку в інтервальному дереві це вже суттєво різні речі. А куди віднесемо, наприклад, триангуляцію багатокутника? Це сортування чи пошук?
Камон, криптографічна хеш-функція це не криптографія?
Ви писали про hashmap, а не про secure hash. Спільного у них приблизно те, що у карʼєрного самосвалу і ракетного двигуна: ну да, в обох паливо.
Пошук ідеального хеша у викладенні Івана Петрушенка — це сука голівудський блокбастер, детектив, трилер, погоня за бест-кейс, втеча від вёрст кейс, піу-піу атата і парадокс днів народження у всі отвори.
Неважливо, у чиєму викладенні. Прямого звʼязку тут немає. Ідеальність хеша не потрібна для того, щоб відповідати головним вимогам про стійкість до preimage attack, second preimage attack, і навіть до collision attack: навіть якщо буде на порядок менше, ну наприклад 2↑245 замість 2↑248, дивитимуться на сукупність характеристик. SHA-2 досі головний варіант у світовому продуктині, хоча йому вже 20 років.
З Блумом те ж саме — максимум, допоміжна технологія 2го рівня віддалености.
Це тільки одна із здоровенної множини фішок. Наприклад, з Ліспом тут спільне використання універсального розділювача (пробільний символ), з Фортом тут спільний спосіб організації команд — стек.
Еее все це ще про array programming?
у нас є тільки бродячий буфер від команди до команди і однопроходний (sic!) інтерпретатор. Нектар і амброзія.
Памʼятаю я таке в sendmail. Ні, краще я той scope юзатиму у класичному стилі.
То для реальної роботи така книжечка потрібна, а для освоєння CS достатньо:
Я казав про навчання для реальної роботи, а не для заліковки.
Нарешті, треба освоїти дебагер, бо він в принципі один і той самий хоч в C хоч в Lisp хоч ще десь.
Те, що спільне у дебагерів, це за пів-дня з перекурами.
А ось далі починаються особливості кожної мови і кожного дебагера.
Поки що я продовжую дивуватись вашим твердженням.
Що заважало зробити флаг компіляції regexpʼу? Як зараз присутні, зазвичай, ignore case, multiline. Якщо вже нема можливости надійно проконтролювати джерело (так буває?), то якщо такі небезпечні розширення вимкнені по дефолту, це менш насильно, ніж зовсім не давати.
Про термінологію — ну а якщо 95+% реалізує саме розширений варіант, дивно було б чекати іншої інтерпретації.
а помилку незрозуміло як обробляти.
Незрозуміло у якому сенсі?
У вас є правило, воно не спрацювало. Якщо це
на правилі редиректу HTTP-серверу
значить, 503 клієнту, і аларм кудись у моніторінг.
Ну ось я не бачу в тому, що він один, жодної переваги.
Або ж якщо це тільки перегрупування ніг при вже успішному запиті на трансфер, там взагалі нема про що думати в плані автомата.
У вас серверна частина, а в мене — клієнтська. Там про транфері треба змержити два об’єкта дзвінків в один — бо слухавка, котра трансферить, бере участь в двох дзвінках.
Attended transfer у нас теж є.
І всі підняти аспекти оброблюються.
Але якийсь автомат саме в цьому процесі виникає тільки там, де спочатку дзвінки були прийняті різними вузлами кластера.
«Код» це якщо ви школяр молодших класів школи, крайняк це тупий11-класник.
При першому читанні він все одно допоможе зібрати в голові досього розрізнене. Хоча були і інші книги схожого типу, вже не памʼятаю назв.
Алгоритми в часи чатботів це дармове читання, адже алгоритми це рідкісна тема в якій вони шарять.
Якщо в принципі не знаєш не тільки про існування алгоритма, а і про формулювання задачі, яку вони вирішують, чатботи не допоможуть, або це буде на порядки складніше.
Я від себе рекомендую тільки вчити криптографічні алг бо вони мають непередбачувану область дії:всі різновиди hashmap
легендарний bloom filter
bittorrent і все-все-все після нього
Яким чином перші два це криптографія?
Книга Дракона зєло складна
Розвʼязувати задачі я і не пропонував:)
Forth зараз крім фізиків ніхто не використовує.
1. Ще нещодавно був в FreeBSD bootloader. Ще залишається в деяких інших лоадерах. Активно сидить в PostScript і не буде видалений звідти. Сидить в алгоритмах хінтінгу TTF. І це тільки сходу по памʼяті.
Ну а stack-based intermediate code в кожній другій VM, для описаного питання — те ж саме.
2. Навіть якщо мало використовується, він цінний саме для логічного замикання підходів.
ІМХО, краще зайнятися array programming
Векторно-матричні операції як над цілим обʼєктом?
Так це при розумінні інших питань досить банально.
Можна витратити, звісно, годину-дві на розуміння того, як потокова обробка допомагає ефективности таких операцій, але навряд чи більше:) Ну і мови потрібно відповідні, а це окреме питання.
На останок я би сказав що несправедливо образили Сішечку. Такого хламу затягнутого павутиной понавитаскували — а основне забули.
Маєте на увазі якийсь підручник типу K&R?
Я якраз намагався мінімально концентруватись на конкретних мовах, і взагалі, якщо хтось почне, наприклад, з Rust, а не C, чим погано?
Геть схоластику.
Ніякої схоластики. Навпаки, максимально реалістичний підхід.
Ми в тій гілці яка закликає в деяких випадках морально давити опонентів так наче вони — підлітки.
Поводитись як з підлітками — згоден, щось таке було.
Давити наче підлітків — ось це вже ваша 100% вигадка, такого автор ідеї не казав.
Казарменні методи, школа-паноптикум, учні = об’єкт навчання (а не суб’єкт).
«Сам домислив, сам спростував» (©)
Ви правда не чули про Закон Стіглера?
Чув. Яке це має відношення до того, що я описую? Нехай ми говоримо про других, а не перших. Все одно за 100-200-500-1000 років формулювання зміниться до невпізнаности.
При дебагу все це робиться на логах. Якщо сценарій хоча б іноді відтворюваний, підняти рівень логування відповідної подсистеми — і всі дані присутні.
От маємо з десяток взаємозалежних стейт-машин на рівні бізнес-логіки. Як їх описувати?
Так і описувати. Як автомати зі звʼязками між їх входами і виходами.
В нас не буває стану з під’єднаним голосом але не обраним кодеком. Як показати в моделі стейт-машини, що він неможливий?
В моделі? Не знаю, не задумувався. Думаю, десь в надрах UML має бути щось на цю тему.
Але це здається дещо іншою темою.
Можу в телеграм скинути код з метода для call transfer. Не уявляю що б то було зі стейт машинами в явному вигляді, і по скільком методам була б розмазана логіка переносу дзвінка.
Я знаю, як у нас реалізований трансфер. Мені цього вистачає.
Код не кидатиму, але логіка в основі проста. Говоримо про blind transfer? Створюється обʼєкт запиту трансфера (один на дзвінок, через його відповідальний call controller), іде на авторизацію, а transferor ставиться на холд. Якщо авторизація пройшла, створюється підлеглий дзвінок у фазі створення на transfer target. Дозвон іде стандартними механізмами, але при успіху дозвону виконується операція перегрупування ніг. При неуспіху transferor знімається з холду.
Все це зараз на колбеках. Не скажу, що логіка проста, але максимум складности не в цьому сценарії по собі, а в організації білінгу і в тому, що наш b2bua намагається якомога більше виключити власне навантаження по transcoding/transrating, вимагаючи у сторін переузгодження кодеків, а це дуже плутаний емпіричний процес.
Мені здавалось, ця діаграмма досить ясна і проста.
Але те, що в індустрії називають regexp (Perl, PCRE, Python re) воно плаває.
Ну ось я і кажу, що «регекспи» до регулярного виразу з математики зараз мають віддалене відношення.
Через це вони є джерелом ReDoS-атак, і їх десь вклчають, десь не підтримують (Go, Rust) та гарантують O(n).
Хмм, а іншим чином обмежувати не пробували? ;\
А то тупо відтяти сокирою воно, звісно, просто...
10 станів і помірно прості переходи — хіба це страшно?
Там в ендпойнта дзвінка ланцюжок INVITE->100->180->200->RELEASE наскільки пам’ятаю, якщо грубо.
Занадто грубо, бо ти поєднав процеси різних рівнів.
На рівні сесії це встановлення голосового каналу через діалог і його завершення.
На рівні діалогу це встановлення діалогу, підтримка, і завершення.
І лише на рівні транзакції ми кажемо або про INVITE-100-180-200, або про BYE-200, або про що ще там буде.
А тепер додаємо ресолв STUN.
Це інший логічний рівень, у якого свої автомати (якщо є).
А тепер можна ще додати стани TRANSFER
І це інший рівень. Я не розумію, як і для чого їх поєднувати.
А в коді воно лежить окремими рівнями
Код є у любому випадку. І окремими рівнями, да, лежить в різних автоматах.
if(stun_failed)
return ERROR_STUN_FAILED;
А яке відношення воно взагалі має до трансфера, стану транзакцій і діалогу?
І на подіях неможливо забезпечити реакцію як треба, якщо не розділяти рівні реакції, кожний з яких зроблений саме як автомат.
Тому виникає питання, чому за 70+ років так ніхто і не розгледів міць?
Чому це не розгледіли? Розгледіли. І застосовують, де треба.
Але мислити так складніше. Це вже наслідок того, як люди думають. Навіть при тому, що ми самі подійно-орієнтовні, ми це описуємо, і для себе і для інших, послідовностями.
Ну а якщо після оптимізації мільйон станів? Тільки автоматично згенерований автомат.
Ну так а послідовний код просто не реагує на те, на що не вказано реагувати. У компонента все зламалось, а ми продовжуємо спробу писати в нього дані.
Звісно, після такого спрощення писати легше;/
А вся логіка переноситься на події.
Я не зрозумів різницю.
Вона в тому, де групується код? По стовпчиках (події) чи рядках (стани)?
Мені за купу років в ембедеді та хай лоаді (де ніби саме місце для стейт машин) вона знадобилася один раз — для обробки імпульсного набору в телефоні.
Ну а у мене вони були на кожному рівні. Я так памʼятаю, ти SIP сам не писав, звалив на бібліотеку?
В лінії TP — BP — Delphi все було.1970-х не було нічого такого.
В стандарті ANSI (досить пізньому) теж було, але інакше.
В базовому зразку