1. C++ / Говнокод #25246

    −1

    1. 1
    .

    Как попасть в гугол по рекомендации Романа Кашицына?

    Запостил: crestoblyad, 31 Декабря 2018

    Комментарии (124) RSS

    • Надо вращать матрицы на хакирранке
      https://govnokod.ru/25229#comment447145
      Ответить
      • Спасибо, уже понял, но еще в процессе осознавания.
        Ответить
    • На уборщицу нужны рекомендации?
      Ответить
      • Даже на чистильщика параш наверняка надо, и чтоб мог ответить на вопросы типа почему очко унитаза округлой формы
        Ответить
        • И на самый главный вопрос, почему хотите работать именно в нашей компании.
          Ответить
        • По скиллам вы явно круче, чем принципал инженегры в гугле. Почему же вы не там?
          Ответить
          • А я не хочу в гугл. Мне не нравится то, что они делают. Например, не так давно они скрытно хотели сделать цензурированную версию гугл-поисковика для Китая, а я против этого https://habr.com/post/433728/

            У гугла есть софтерные патенты, а я против софтерных патентов (для меня это выглядит как патент на вычисление числа Пи)

            Например, такой патент: https://patents.google.com/patent/US8606778
            Techniques are disclosed that locate implicitly defined semantic structures in a document, such as, for example, implicitly defined lists in an HTML document. The semantic structures can be used in the calculation of distance values between terms in the documents. The distance values may be used, for example, in the generation of ranking scores that indicate a relevance level of the document to a search query.

            Если вкратце, это какая-то херня для ранжирования страниц на основе расстояний между каким-то говном, распознавать какое-то говно какими-то эвристиками. Как такое вообще можно патентовать? Это достаточно очевидно, что можно каким-то сложным способом анализировать документ. Блядь, пойдите еще алгоритм сортировки пузырьком запатентуйте, дебилы блядь.

            А еще гугл это копирасты, а копирастов я тоже не люблю. Мне не нравится что гугл собирает персональные данные и на их основе втюхивает свою говнорекламу. И мне не нравится их говнореклама. А ведь всё так хорошо начиналось: https://i.imgur.com/K7bIPLF.jpg

            В общем "don't be evil" уже явно не про гугл. Нахер его
            Ответить
            • Хотя я мог бы еще подумать над тем чтоб в гугле поработать, но только чтобы чисто опенсорс пилить, например компилятор GCC, как Ian Lance Taylor
              Ответить
            • > алгоритм сортировки пузырьком
              Емнип, у майков есть патент на "способ создания коротких имён из длинных" (да, та самая хуита с тильдой и циферками).
              Ответить
              • Кококококоторый ещё не совпадает у NT и у тупиковой ветки, начинающейся с Чикаго.
                Ответить
              • Неужели отчисления превысили трату на сам патент?
                Ответить
                • Дык это очень важный патент был... Хочешь совместимость с вендовыми флешками - готовь бабки. По сути любой девайс, который FAT32 юзает, попадает под него.

                  Линукс, правда, тонко обошёл этот патент. Но это совсем другая история.
                  Ответить
                  • А можно ли запатентовать вообще все алгоритмы, которые делают X? Ну т.е. запатентовать сортировки (вообще все), т.е. какой бы неочевидный и принципиально новый алгоритм ты не написал (пусть хоть пузырьком, хоть вставками, что угодно), он попадет под действие патента. Хочешь что-либо отсортировать каким-либо способом - плати бабосики.
                    Ответить
                    • Вроде надо больше конкретики.

                      Но есть, к примеру, патент на устройство barrel shifter'а из джвух половинок, который выглядит примерно как (x << n) | (x >> (32-n)).
                      Ответить
                      • Значит надо конкретно каждую операцию (или инструкцию процессора) запатентовать.
                        Ответить
                        • Ты не поверишь, но многие их реализации действительно запатентованы.
                          Ответить
                        • надо запатентовать сложение, вычитание, умножение, деление, ксоры всякие, условные переходы и мувы всякие, вот это будет БАГОР вообще
                          Ответить
                          • Ну сдвиги запатентованы. Деление - однозначно запатентовано, ибо нетривиально. Схемы быстрых умножителей, скорее всего, тоже.

                            Насчёт мувов - х.з., но какой-нибудь патент на "вычислительную машинау с регистрами" всяко есть.
                            Ответить
                      • https://graphics.stanford.edu/~seander/bithacks.html#IntegerAbs
                        https://lj.rossia.org/users/sadkov/241882.html?nc=36
                        Ответить
                        • Вот кстати еще один говнопатент на хуйню:
                          https://patents.google.com/patent/US6007232

                          > Calculating the average of two integer numbers rounded towards zero in a single instruction cycle

                          Который кстати вчера истек: 2019-02-10 Application status is Expired - Lifetime
                          Ответить
                          • Эм, а внутри - тупо сложение и сдвиг вправо?
                            Ответить
                            • return (a >> 1) + (b >> 1) + (a & b & 0x1);

                              https://stackoverflow.com/a/3816473
                              Ответить
                              • Интересно, а если кто-нибудь из патентных троллей увидит какую-нибудь мою битоебскую хуйню, которую я выкладывл на говнокод (ну например https://www.govnokod.ru/25334 ) и попробует эту хуйню запатентовать, смогу ли я требовать аннулирования патента т.к. эта хуйня ранее упоминалась на говнокоде?
                                Ответить
                                • Вроде нет. Просто ты сможешь пользоваться этой хуйнёй дальше без всяких отчислений... Вроде так prior art работает.

                                  З.Ы. А нет, походу сможешь. Мутная хуйня эти патенты...
                                  Ответить
                              • Крестоблядские говностандартизаторы предлагают другой вариант: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0811r2.html
                                return a+(b-a)/2;
                                Ответить
                                • https://rise4fun.com/Z3/a2gy крестоблядки соснули

                                  https://wandbox.org/permlink/nj7BuNLZ2Mq0XRxr
                                  Ответить
                                  • https://rise4fun.com/Z3/MFa8 вот немного пофиксил проверку SMT решателя
                                    https://wandbox.org/permlink/F4dkwZtTQBSKE4CG
                                    Ответить
                                    • Это какой-то… багор )))
                                      https://www.youtube.com/watch?v=lUV9W9ndorw
                                      Ответить
                                • http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0811r2.html
                                  Computing the (integer) midpoint of two integer values via

                                  (a+b)/2

                                  can cause overflow for signed or unsigned integers as well as for floating-point values. Java’s binary search implementation had this integer overflow bug for nearly a decade, and Mozilla had the same issue in its JavaScript implementation.

                                  The standard alternative

                                  a+(b-a)/2

                                  works for unsigned integers (even if b<a).

                                  Красным цветом отмечено то место, где написана хуйня.
                                  Ответить
                                  • https://rise4fun.com/Z3/OF7D вот так все работает нормально

                                    Можно для SMT решателя переписать на теорию http://smtlib.cs.uiowa.edu/theories-FixedSizeBitVectors.shtml но я тупо замутил поверх целочисленной арифметики.
                                    Ответить
                      • https://govnokod.ru/24496 кстати, а на это можно патент получить?
                        Ответить
                        • Наверное, особенно если на верилог переписать. Для софта - говнище, конечно. А вот для железа выглядит интересно.
                          Ответить
            • > don't be evil
              https://ro-che.info/ccc/28
              Ответить
            • >Это достаточно очевидно, что можно каким-то сложным способом анализировать документ.
              Спрашивается, а что для тебя недостаточно очевидно?
              Ответить
              • Для меня недостаточно очевидно, как сделать хороший ретаргетируемый (адаптируемый) под разные архитектуры язык программирования, чтобы был декларативный язык, описывающий аппаратуру процессора (в т.ч. не только обычного процессора, а например FPGA или control-flow архитектур каких-нибудь, что-нибудь типа GPU) и чтобы на основе этого описания сделать генератор оптимизирующих компиляторов на основе описания, с суперкомпиляцией и прочими умными штуками.
                Ответить
                • Но это тоже не достойно патента?
                  Ответить
                  • Естественно. Я вообще считаю патентную систему полным говном.
                    Ответить
                    • Но если ты не живешь в лесу и не питаешься говном, то ты поддерживаешь патентную систему как минимум деньгами при каждой покупке товара, который прямо или опосредованно был запатентован.
                      Ответить
                      • А у меня есть варианты ее не поддерживать, не живя в лесу и не питаясь говном? Или может ты подскажешь мне способ эти патенты упразднить, ну или открыть дверь в параллельное измерение без говнопатентов?
                        Ответить
                        • Конечно подскажу: вот мы с парнями занимаемся Web-разработкой, пишем всю неделю на react и typescript, по пятницам ходим всей командой пить пиво в бар.
                          И никаких дурацких мыслей о патентах, гуглах, говне всяком мне в голову не приходит.
                          Ответить
                          • Web-разработка это вообще днище какое-то. Разрабатывать какие-то сраные жабаскриптики, от которых браузер тормозит, что может быть хуже? Разве что какое-нибудь крестоблядство с метушней на констэкспрах и шаблонах. Или пхпблядство какое-нибудь. Чистить параши в офисах гугла наверно и то лучше.

                            Намного круче разрабатывать прошивки на Си и асме. Драйвера писать. Изучать какие-нибудь функциональные языки программирования, попытаться разобраться во всех этих теориях категорий. Обдумать как можно было бы оптимизировать (эвристиками!) сложные, NP-полные задачи. Попробовать создать какой-нибудь новый эффективный алгоритм сортировки. Почитать про теорию компиляции, всякие там проекции Футамуры, суперкомпиляцию, мемоизацию, метапрограммирования, переписывания термов, формальных методах доказательства в программировании, автоматическое доказательство теорем... Блядь, в программировании вообще настолько дохуя интересных областей, в которых можно углубиться и задрачивать, что и жизни не хватит, но нет, не хочу, хочу жрать говно и писать поебень на жабаскриптиках к говнобраузерам. И это программисты?
                            Ответить
                            • > Намного круче разрабатывать прошивки на Си и асме. Драйвера писать.
                              Один баг - и какая-нибудь питушня закирпичилась или сгорела, несите другую.
                              Один баг - и отладка printfом не поможет, т.к. printf и libc частично перетёрты.
                              Неделю думаешь над тем, что где-то в программе какая-то питушня в очень редком случае выходит за границу массива и из чана выливается расплавленный металл куда-нибудь на голову пятому бригадиру за месяц.

                              То ли дело JavaScript. Полноценный ЯВУ. Есть исключения, отладка printfом принципиально не может сломаться, много встроенных фич по сравнению с сишкой. Конкатенация строк через банальный плюс, строки внутри после оптимизации становятся мутабельными, если надо. Не надо пердолиться с памятью, можно на практике применять функциональный подход, а не дрочить на недостижимый Haskell, копаясь в сишном говне. Есть трансляторы, транспайлеры, eval - можно на одном и том же языке писать исходный код, его компилятор. За счёт Function.prototype.toString можно прикрутить хоть риалтайм формальное доказательство. ЯВУшность позволяет писать код быстрее. Интересующиеся конпеляцией могут посылать пулл-реквесты в код движков JS. Как я говорил, там работы ещё много, пока не создан умный оптимизатор.

                              И стоило бросать этот волшебный мир абстракций и свободы ради чистки байтов вилкой, где даже printf можно сломать?!
                              Ответить
                              • > Есть исключения

                                Есть прерывания. Поделил на 0 - прыгаешь на обработчик

                                > отладка printfом принципиально не может сломаться

                                Принципиально может сломаться, если у тебя в интерпретаторе JS баг, от которого портится память самого интерпретатора.

                                > Конкатенация строк через банальный плюс

                                Можно придумать такой процессор, в котором будет особая инструкция для конкатенации строк, и можно в нем такую инструкцию назвать "+"

                                > Не надо пердолиться с памятью

                                А потом мне приходится набирать killall firefox оттого, что кто-то с памятью не пердолился.

                                > Есть трансляторы, транспайлеры

                                У меня вот есть компилятор языка Си - он код на Си переводит в код на ассемблере. Это тоже транспайлер, так что не надо тут. К тому же оптимизирующий. А под JS есть оптимизирующие транспайлеры?

                                > eval - можно на одном и том же языке писать исходный код, его компилятор

                                Можно на ассемблере в rwx сегмент позаписывать байтиков, сбросить кеш и туда перейти

                                > И стоило бросать этот волшебный мир абстракций и свободы ради чистки байтов вилкой, где даже printf можно сломать?!

                                Напиши на своем волшебном JS что-нибудь под контроллер 8-битный, в котором 8 Кбайт флеша и 1 Кбайт оперативки
                                Ответить
                                • > 8 Кбайт флеша и 1 Кбайт оперативки
                                  Что-то дохуя для восьмибитки...

                                  З.Ы. А где сейчас восьмибитки реально юзают помимо ёлочных гирлянд? В каких-нибудь резиновых хуях с интеллектуальной вибрацией?
                                  Ответить
                                  • > 8 Кбайт флеша и 1 Кбайт оперативки

                                    Ну вообще есть конечно и более дохлые, но JS даже в такие лимиты не уложится. В ATmega 16 например столько https://ww1.microchip.com/downloads/en/devicedoc/doc2466.pdf :

                                    – 16 Kbytes of In-System Self-programmable Flash program memory
                                    – 512 Bytes EEPROM
                                    – 1 Kbyte Internal SRAM
                                    Ответить
                                • > А потом мне приходится набирать killall firefox оттого, что кто-то с памятью не пердолился.
                                  А это уже питушки на C++ внутри браузера накукарекали. Движок JS вычищает вилкой лишнюю память. Если вдруг удалось написать код с утечкой памяти (для C++ это легко, для JS - нетривиально и неслучайно), перезагрузка вкладки всё, что JS засрал, исправит.

                                  > Можно придумать такой процессор, в котором будет особая инструкция для конкатенации строк
                                  Можно сразу нормальный язык вместо C/C++ придумать.
                                  Всё равно, чтобы этот процессорный + работал как надо, нужно будет встроить в процессор GC или запускать одноразовые программы в стиле PHP. Прелесть + не в том, что это символ в один байт, а в том, что можно писать return a+b, f(a+b) и прочее и не думать над тем, где лежит a, b и a+b.

                                  > А под JS есть оптимизирующие транспайлеры?
                                  Вероятно, там же, где и конкатенация в процессоре - всегда можно написать.

                                  > Напиши на своем волшебном JS что-нибудь под контроллер 8-битный, в котором 8 Кбайт флеша и 1 Кбайт оперативки
                                  А зачем? Давайте я лучше напишу под компьютер 32-битный, в котором свободно 500МБ диска и 100МБ оперативки. Моя программа будет больше уметь, легче писаться, легче читаться, легче модифицироваться. Заказчик сможет сам её потом подправить, если не дурак. Или её легко перепишут под новые технологии, а меня добрым словом вспомнят.
                                  Зачем себя ограничивать и тратить время на пердолинг с контроллером, когда можно выбрать удобное решение и тратить время на решение задачи заказчика?
                                  Ответить
                                  • > Зачем себя ограничивать и тратить время на пердолинг с контроллером
                                    Чтобы в цене железки конкурировать же... Ёлочную гирлянду по цене терабайтного SSD у тебя никто не купит.
                                    Ответить
                                    • Кстати, почему нельзя одни и те же микроконтроллеры и одну и ту же гирлянду с одной и той же программой продавать много лет подряд? Зачем эта фигня с переписыванием стандартного кода гирлянды каждый год? Это же не роботопитушня, где идёт какое-то развитие.
                                      Ответить
                                    • Ну как никто? Дерипаска или сыновья Чайки купят.

                                      Смузиёбов не интересует массовый рынок. Им достаточно и одного покупателя.
                                      Ответить
                                      • Да кто угодно купит, если маркетологи внушат. Смартфоны же покупают, хотя стоят они дороже нормальных телефонов.

                                        Именно, что смузиёбы работают на массовый рынок. Кто угодно может прийти и заказать сайт, который будет открываться у кого угодно. Массовый рынок.

                                        С какой вероятностью низкопитушки вроде j123123 будут писать код для гирлянд по 200 рублей, которые я куплю в магазине? Сразу скажу: с нулевой. Гирлянды уже запрограммировали китайцы.

                                        j123123 и его собратья пилят штучные микроконтроллеры для крупных заводов. Им достаточно одного покупателя, чтобы за вырученные деньги жить лет пять, а потом за те же деньги тому же покупателю переписать под новый микроконтроллер. Потому, что больше никто не знает, что там внутри делается и как это переписать за меньшую сумму.
                                        Ответить
                              • > выливается расплавленный металл куда-нибудь на голову пятому бригадиру за месяц

                                Вот она, веселуха!

                                М-М-МЕТААААААААЛ!!!
                                Ответить
                                • > М-М-МЕТААААААААЛ!!!
                                  https://youtu.be/vifaZYpThaY?t=60
                                  Ответить
                                  • Мощный у них алгоритм стабилизации картинки. Такое ощущение, что это дрон с камерой летает в компютерной игре.
                                    Ответить
                            • Ты кое-что упускаешь: Javascript уже давно вырвался за рамки "жабаскриптиков, от которых браузер тормозит". За последние 8 лет интерфейсостроение как и сам язык развились от страшных уродств вроде angularJS и ES3 до изящных, функциональных, но при этом простых в использовании библиотек и фреймворков, сам язык тоже стал гораздо выразительнее. Web - программисты создали отличные инструменты для визуализации, описания бизнес-логики, даже банальной верстки, сборщики пакетов и таскраннеры чтобы слепить все это говно в кучу, инструменты отладки типа hot reload. Все это позволило писать настолько большие и сложные клиенты за приемлемое время, что какие-то статичные веб-странички кажутся пережитком прошлого, а жалобы на производительность и вес скриптов - нытьем ретроградов - и, повторюсь, все это меньше чем за 10 лет!
                              Javascript при этом пошел гораздо дальше - он есть на сервере, на десктопе, на мобайле, даже в embedded и data science. Конечно сейчас большинство из поделок смехотворно, но темпы развития колоссальны, и скоро мы это исправим.
                              Javascript сейчас на всех платформах, он является встроенным языком, например, в Qt и сам является целью компиляции других языков - абсолютно справедливо можно заявлять что Js - это С нашего времени.
                              Разумеется, он не остановится ни в развитии, ни в расширении - и рано или поздно, но JS всех поимеет.
                              Ответить
                              • Слишком позитивно. Дальше будет как с C и C++. Язык вроде есть, но всех не поимел. Язык вроде можно выбросить, но без него не обойтись. Говно из языка хорошо бы выпилить, но обратную совместимость ещё подержим. Начинали как простой и понятный язык, который произведёт революцию, но оказалась куча легаси питушни.
                                Ответить
                                • >>Дальше будет как с C и C++
                                  Страшно представить, как будет выглядеть Javascript++.
                                  Ответить
                                • Да и нельзя сказать, что С всех не поимел. Сколько у него было конкурентов на позицию самого распространенного прикладного языка - и где они теперь?
                                  Ответить
                              • Ты написал такое количество хуйни, что я даже не хочу это комментировать. Ну т.е. это примерно как если б кто-то мне написал про тайное мировое правительство с ящериками, которые всех заставляет жрать ГМО и хотят устроить глобальное потепление, чтобы люди вымерли и потом рептилоидами всю землю заселить.

                                Чтобы JS поимел область, которую занимает Си (на микроконтроллерах например) тебе надо каким-то образом законы физики поменять, или открыть какие-то новые законы физики чтоб через них можно было каким-то образом быстро интерпретировать жабаскриптовое говно, или создать какую-то параллельную реальность с другими законами физики, или блядь я не знаю даже, придумать ИИ который бы умел код на JS переписывать (компилировать) в Си (но если ты такой ИИ изобретешь, то нахера вообще писать на JS, можно человеческим языком такому ИИ всё пояснить)
                                Ответить
                                • Господи, я тебе про то что JS станет самым распространенным языком, ты мне про микроконтроллеры сраные.
                                  Байтоебы, ей-богу.
                                  Ответить
                                  • > я тебе про то что JS станет самым распространенным языком, ты мне про микроконтроллеры сраные.

                                    > справедливо можно заявлять что Js - это С нашего времени.
                                    > Разумеется, он не остановится ни в развитии, ни в расширении - и рано или поздно, но JS всех поимеет.

                                    Ну да, ну да. "C" нашего времени.
                                    Ответить
                                    • Уважу твое нежелание читать мою хуйню, и приведу цитату целиком:
                                      >Javascript сейчас на всех платформах, он является встроенным языком, например, в Qt и сам является целью компиляции других языков - абсолютно справедливо можно заявлять что Js - это С нашего времени.
                                      Контекст заявления про C нашего времени приведен, и он именно про распространенность.
                                      Ответить
                                      • >Javascript сейчас на всех платформах,

                                        "на всех платформах" - очевидная херня. На дохлых 8-битных контроллерах его нет.

                                        > и рано или поздно, но JS всех поимеет.

                                        Очевидная херня. На контроллерах не поимеет
                                        Ответить
                                        • >"на всех платформах" - очевидная херня. На дохлых 8-битных контроллерах его нет.
                                          А на 32-битных контроллерах есть, например IskraJS.
                                          >Очевидная херня. На контроллерах не поимеет
                                          Поимеет-поимеет.
                                          Я упоминал что значимое - скорость развития. А нерелевантные и устаревшие платформы останутся артефактами прошлого.
                                          Ответить
                                          • > Я упоминал что значимое - скорость развития. А нерелевантные и устаревшие платформы останутся артефактами прошлого.

                                            Микроконтроллеры у него нерелевантными станут, охуеть просто. Не неси херни
                                            Ответить
                                            • > Микроконтроллеры у него нерелевантными станут
                                              Он имеет в виду восьмибитное говно.
                                              Ответить
                                              • А если это будет какая-то нестандартная 8-битная питушня, например хреновина из 1000 8-битных соединенных ядер с независимым тактированием, которые между собой могут обмениваться какими-то сообщениями, образовывать какие-то хитрые цепочки(пайпы) вычислений?

                                                http://www.kit-e.ru/articles/build_in_systems/2010_2_92.php
                                                Ответить
                                            • https://www.alphr.com/news/interviews/379333/the-intel-coffee-machine-that-puts-a-face-to-a-drink
                                              >Intel's top-end Core i7 processor is being used in Costa Coffee's latest coffee machines...
                                              Вон какое железо в кофеварки ставят уже. Так что станут, можешь быть уверен.
                                              Хотя bormand прав и я имел в виду 8-битные контроллеры.
                                              Ответить
                                              • Скоро для смывания говна в бачок в унитазе будут встраивать процессор Core i7 и 64 гига оперативы. И чтоб на жабаскрипте
                                                Ответить
                                              • > Core i7
                                                > кофеварки
                                                Они им воду кипятят для кофе?
                                                Ответить
                                • > на микроконтроллерах например
                                  Дык оно есть. Причём с отладкой из браузера.
                                  Ответить
                                  • и как на 8-битных AVR с гарвардской архитектурой оно будет с килобайтом оперативы работать? (и чтоб с eval() )
                                    Ответить
                                    • > на 8-битных AVR
                                      Ну да, туда въебали целый 32-битный ARM на 72МГц и 48КБ оперативки. Который стоит... дешевле твоей 16й атмеги, лол.
                                      Ответить
                                      • Атмеги вообще хуита оверпрайснутая, потому что ардуинщики ссаные
                                        Ответить
                                        • > Атмеги вообще хуита оверпрайснутая
                                          Если бы не ардуинщики - восьмибитная эпоха закончилась бы, имхо.
                                          Ответить
                                        • > Атмеги вообще хуита оверпрайснутая
                                          Угу. Вот недавно приехали китайские платки на STM'ке. Стоит столько же как эта ваша ардуина, по дизайну такая же. Но няшные 32 бита, ядро быстрее, памяти больше в 10 раз и настоящее USB есть, без этих ваших оверпрайснутых "шилдов".
                                          Ответить
                          • > по пятницам ходим всей командой пить пиво в бар.

                            Крафтовое? А смузями запиваете?
                            Ответить
                            • Нет, смузи мы пьем по пути на работу. На гироскутере, разумеется.
                              Ответить
                    • Задумка же хорошая была - дать людям шанс заработать немного бабла на своих изобретениях пока более крупные игроки не скопипастили идею.

                      Но потом всё это перевернулось с ног на голову и превратилось в какой-то пиздец...
                      Ответить
                    • Ну и ругать корпорацию надо не за наличие патентов (тут либо копишь патенты либо сосешь хуи у тех, кто накопил), а за их использование во зло.
                      Ответить
                      • * g o a t s e x * g o a t s e x * g o a t s e x *  
                         g                                               g  
                         o /     \             \            /    \       o  
                         a|       |             \          |      |      a  
                         t|       `.             |         |       :     t  
                         s`        |             |        \|       |     s  
                         e \       | /       /  \\\   --__ \\       :    e  
                         x  \      \/   _--~~          ~--__| \     |    x  
                         *   \      \_-~                    ~-_\    |    *  
                         g    \_     \        _.--------.______\|   |    g  
                         o      \     \______// _ ___ _ (_(__>  \   |    o  
                         a       \   .  C ___)  ______ (_(____>  |  /    a  
                         t       /\ |   C ____)/      \ (_____>  |_/     t  
                         s      / /\|   C_____)       |  (___>   /  \    s  
                         e     |   (   _C_____)\______/  // _/ /     \   e  
                         x     |    \  |__   \\_________// (__/       |  x  
                         *    | \    \____)   `----   --'             |  *  
                         g    |  \_          ___\       /_          _/ | g  
                         o   |              /    |     |  \            | o  
                         a   |             |    /       \  \           | a  
                         t   |          / /    |         |  \           |t  
                         s   |         / /      \__/\___/    |          |s  
                         e  |         / /        |    |       |         |e  
                         x  |          |         |    |       |         |x  
                         * g o a t s e x * g o a t s e x * g o a t s e x *
                        Ответить
                • Есть ещё такая проблема: среди известного гораздо больше очевидного, чем среди неизвестного. Всё становится очевидным, когда подумаешь и хорошо объяснишь, но когда не додумался до этого очевидного, оно совсем-совсем неочевидно. Поэтому, если что-то описанное кажется очевидным, не значит, что додуматься до этого было легко. Посему нужны либо патенты, либо пожизненная пенсия авторам изобретений (пропорционально важности изобретения на время выплаты пенсии).

                  Здесь как с NP-задачами. Ты долго пердолишься, получаешь решение. А потом набигает толпа халявщиков, быстро проверяет, что решение верно, говорит, что оно очевидно, и уносит к себе.

                  Вот, например, фича с перетаскиванием иконок на иконки для перемещения содержимого в папки, мусора в корзину, распечатываемого - в принтер и т.п. Простая и привычная фича, ничего сложного. Но если бы её не было, как скоро мы бы до неё додумались?
                  Ответить
                  • Ну как бы есть действительно сложные патенты от всяких MPEG, где на разработку потрачена куча времени и сил.

                    А есть очевидная хуйня, которую все подряд случайно переизобретают.
                    Ответить
            • Если бы гугол не имел патентов и не впаривал бы рекламу, то его сотрудники жили бы на донаты.
              Ответить
              • Прикольно было бы. Выживали бы те проекты, которые действительно нужны людям, а не всякая хуйня.

                Я ещё считаю, что законодательная власть должна жить на донаты.
                Ответить
                • И много ты дал донатов тем проектам, которыми пользуешься?

                  про власть согласен. Пришел ты на выборы, проголосовал з партию, значит лично у тебя в пользу этой партии раз в месяц снимают деньги
                  Ответить
    • https://google.com/

      Не благодари.
      Ответить
    • Успешно прособеседовался на должность принципиального инженера.
      Ответить
    • * g o a t s e x * g o a t s e x * g o a t s e x *  
       g                                               g  
       o /     \             \            /    \       o  
       a|       |             \          |      |      a  
       t|       `.             |         |       :     t  
       s`        |             |        \|       |     s  
       e \       | /       /  \\\   --__ \\       :    e  
       x  \      \/   _--~~          ~--__| \     |    x  
       *   \      \_-~                    ~-_\    |    *  
       g    \_     \        _.--------.______\|   |    g  
       o      \     \______// _ ___ _ (_(__>  \   |    o  
       a       \   .  C ___)  ______ (_(____>  |  /    a  
       t       /\ |   C ____)/      \ (_____>  |_/     t  
       s      / /\|   C_____)       |  (___>   /  \    s  
       e     |   (   _C_____)\______/  // _/ /     \   e  
       x     |    \  |__   \\_________// (__/       |  x  
       *    | \    \____)   `----   --'             |  *  
       g    |  \_          ___\       /_          _/ | g  
       o   |              /    |     |  \            | o  
       a   |             |    /       \  \           | a  
       t   |          / /    |         |  \           |t  
       s   |         / /      \__/\___/    |          |s  
       e  |         / /        |    |       |         |e  
       x  |          |         |    |       |         |x  
       * g o a t s e x * g o a t s e x * g o a t s e x *
      Ответить
    • Петухи, помогайте! Кто сможет придумать такую функцию тому тонну воображаемого пшена:
      ┌───┬──┬─┬──┐
      │x\y │-1│0│1 │
      ├───┼──┼─┼──┤
      │-1 │1 │0│-1│
      ├───┼──┼─┼──┤
      │0  │-1│0│-1│
      └───┴──┴─┴──┘
      Ответить
      • (-y) работает во всех клетках кроме (0, -1). Её можно задетектить как !(x | ~y).

        Т.е. что-то в духе -y - (!(x | ~y) << 1), проверь.
        Ответить
        • Годный вореант, спасибо. Отсыпал пшена тебе за щеку, проверь.
          Ответить
      • (x, y) => y * (x || -y)


        signed char f(signed char x, signed char y) {
          return y*(x?x:-y);
        }
        Ответить
        • Со стрелочкой не правильно. За тренарник пшена не получишь.
          Ответить
          • Поцчему неправильно? Всё работает

            > За тренарник пшена не получишь.
            Боже мой, меняем на математически эквивалетное, переносим минус для красоты, упрощаем:
            - y*(x?x:-y)
            ~ y*((-x)*x+(1+x)*-y)
            ~ -y*(x*x+(1+x)*y)
            ~ -y*(x*x+(1+x)*y)
            + -y*(x*(x+y)+y)
            Ответить
            • Можно воспользоваться тем, что x² = - x в данной области значений x.
              -y*(-x + x*y + y)
              y*(x - x*y - y)
              Ответить
            • > Поцчему неправильно? Всё работает
              Действительно, я, вилимо, что то перепутал. Но в нём спрятано ветвление.

              > -y*(x*(x+y)+y)
              тоже годно, лови пшена.
              Ответить
      • Решение «в лоб»: (x - |y|)*(x + 1) - y*x^2 (при условии, что строка x=1 не играет роли).
        Ответить
    • Кстати, вот что я тут подумал. Допустим, у вымышленного Борманда есть база ГК, но он не хочет отдавать её целиком. Пользователи хотят поучаствовать в специальной олимпиаде и посчитать различные метрики (кто написал больше всех комментариев, самый длинный комментарий, создал говнокоды с большим объёмом комментариев, у кого в речи больше разных аббревиатур и т.п.). Борманд не против, но метрики неизвестны заранее. Борманд согласился, что пользователи будут присылать свои SQL-запросы, а он он будет лично их модерировать. Чтобы никто не вставил RTL, похожие символы и прочую питушню, Борманд сам вводит запросы. Борманд может отказаться вводить запрос, если ему что-то показалось не так.

      * Работает ли автоматически запрос после прохождения модерации, или Борманд его постоянно вводит - на ваше усмотрение.
      * Платят ли Борманду за каждый запрос или за месяц - на ваше усмотрение.
      * Ограничен ли Борманд во времени, ругает ли его босс за промедления - на ваше усмотрение.

      Как можно взломать такую систему? Как можно защищаться от взлома?

      Из простого в голову приходит только:
      * Посылать со своей учётки некоторое количество хороших запросов, а затем - один плохой, надеясь на то, что вошёл в доверие. Помочь может анонимизация запросов.
      * Посылать цепочку похожих запросов от хорошего до плохого, ссылаясь на уточнение критериев и оптимизацию, надеясь на то, что Борманд задолбается читать почти одинаковый хороший запрос и пропустит плохой. Здесь можно перемешивать запросы и обрабатывать, скажем, раз в день или месяц.
      * Попытаться посылать запросы, которые чуть-чуть отличаются от нехороших, но при ручном переписывании можно сделать роковую ошибку. Ограничить количество рассматриваемых запросов в день?
      * DoS. Чтобы запросы честных пользователей тонули на фоне запросов атакующих. Нанять несколько доверенных людей?
      * Послать Борманду кругленькую сумму на спиртное, подождать и ввести плохой запрос. Поставить на компе детектор алкоголя?
      Ответить
      • > защищаться
        Создать в БД бесправную учетку для олимпиадников (только select из разрешенных таблиц).
        Ответить
        • >> но он не хочет отдавать её целиком

          Что можно сделать, чтобы олимпиадник не смог посмотреть все записи?
          Ответить
          • Насколько я понимаю, Борманд хочет сделать бесправную учётку, с которой им будут вручную отправляться запросы олимпиадников. Дальше, если не запускать автоматом запрос как аппрувленный, можно посмотреть на результат и понять, все ли записи выбрались. Надёжность сильно повышается по сравнению с учёткой с правом на запись.

            Разумеется, тут может быть вариант, когда придумывается столько метрик, сколько нужно, чтобы косвенным образом скачать БД (аналогично тому, как аноним выплёвывает по кусочку безобидную информацию о своей жизни, из которой потом складывается полный пазл). Это уже серьёзный вопрос и, возможно, хороший пример долгой, но эффективной атаки.
            Ответить
            • Я читал про алгоритм деанона-травли в какококой-то соцсети, но уже не могу найти ссылку. Суть такова: регистрируемся как рекламодатель, создаём рекламное объявление, шаг за шагом добавляем фильтры, пока размер аудитории не сократится до одного человека. Если это произойдёт (размер аудитории станет равным одному человеку), то об этом человеке мы будем знать всё.
              Ответить
              • Интересно. Та соцсеть отдавала аудиторию прямо как имена, а не как уникальные случайные идентификаторы? Или товар был настолько хорош, что его покупали, связывая тем самым набор данных о себе с номером карты и подобными данными?
                Ответить
          • Т.е. нельзя возвращать инфу по конкретным записям, только обобщённую статистику?

            И запрос в духе "у скольки юзеров пароль начинается на букву а" - плохой?
            Ответить
            • Если можно было возвращать всё, вымышленный Борманд мог бы просто выложить всю базу, как некогда делал реальный.

              > запрос в духе "у скольки юзеров пароль начинается на букву а" - плохой?
              Кстати, зависит от контекста. Если он только один, то ответ заметно не повредит, это даже меньше бита. Если таковых много - можно вычислить пароли.

              Кстати, вымышленный Борманд может как китайский GPS возвращать искажённую информацию, хотя тогда придётся отслеживать связи (как в тесте на случайные числа), чтобы отвечать консистентно, либо просто внаглую врать, чтобы неконсистентность осталась, но пароли и личные данные не выдавались.
              Ответить
              • > меньше бита
                Сегодня бит, завтра бит, через миллион запросов вся база утекла...

                Можно, конечно, запрещать запросы, которые совместно с результатами всех предыдущих позволят выудить какие-то данные. Но это сложно и рано или поздно начнет отшибать любые запросы, которых еще не было.
                Ответить
        • Защищайся! Пыщь! Пыщь! Пыщь!
          Ответить
      • > у вымышленного Борманда
        я об этом уже давно догадывался... признавайтесь, кто его придумал.
        Ответить

    Добавить комментарий