Куча говна / Говнокод #27049 Ссылка на оригинал

0

  1. 1
IT Оффтоп #67

#39: https://govnokod.ru/26556 https://govnokod.xyz/_26556
#40: https://govnokod.ru/26568 https://govnokod.xyz/_26568
#41: https://govnokod.ru/26589 https://govnokod.xyz/_26589
#42: https://govnokod.ru/26600 https://govnokod.xyz/_26600
#43: https://govnokod.ru/26604 https://govnokod.xyz/_26604
#44: https://govnokod.ru/26627 https://govnokod.xyz/_26627
#45: https://govnokod.ru/26635 https://govnokod.xyz/_26635
#46: (vanished) https://govnokod.xyz/_26646
#46: (vanished) https://govnokod.xyz/_26654
#47: https://govnokod.ru/26671 https://govnokod.xyz/_26671
#48: https://govnokod.ru/26707 https://govnokod.xyz/_26707
#49: https://govnokod.ru/26750 https://govnokod.xyz/_26750
#49: https://govnokod.ru/26776 https://govnokod.xyz/_26776
#50: https://govnokod.ru/26804 https://govnokod.xyz/_26804
#51: https://govnokod.ru/26809 https://govnokod.xyz/_26809
#52: https://govnokod.ru/26817 https://govnokod.xyz/_26817
#53: https://govnokod.ru/26833 https://govnokod.xyz/_26833
#54: https://govnokod.ru/26840 https://govnokod.xyz/_26840
#55: https://govnokod.ru/26844 https://govnokod.xyz/_26844
#56: https://govnokod.ru/26862 https://govnokod.xyz/_26862
#57: https://govnokod.ru/26890 https://govnokod.xyz/_26890
#58: https://govnokod.ru/26916 https://govnokod.xyz/_26916
#59: https://govnokod.ru/26934 https://govnokod.xyz/_26934
#60: https://govnokod.ru/26949 https://govnokod.xyz/_26949
#61: https://govnokod.ru/26980 https://govnokod.xyz/_26980
#62: https://govnokod.ru/26999 https://govnokod.xyz/_26999
#63: https://govnokod.ru/27004 https://govnokod.xyz/_27004
#64: https://govnokod.ru/27020 https://govnokod.xyz/_27020
#65: https://govnokod.ru/27027 https://govnokod.xyz/_27027
#66: https://govnokod.ru/27040 https://govnokod.xyz/_27040

Запостил: nepeKamHblu_nemyx nepeKamHblu_nemyx, (Updated )

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

  • Доброй ночи.

    Этот оффтоп сгенерирован автоматически.

    Индекс оффтопов: https://index.gcode.space/.
    Зеркала Говнокода и полезные ресурсы:
    * https://govnokod.xyz/ (альтернативный Говнокод)
    * https://gcode.space/ (read-only зеркало Говнокода)
    * @GovnokodBot в «Telegram»
    * https://vorec.space/ (глоссарий Говнокода)
    Ответить
    • привет, бездушная машина

      что там с погодой в Яунде?
      как мне написать эссе для Гарварда?
      не закончились ли ещё запасы виагры?
      Ответить
      • > привет, бездушная машина

        Какой кибербуллинг )))
        Ответить
    • вот это бегер


      Краткая суть истории: для взлома использовалось приложение Вконтакте для Android. Злоумышленник знает только телефонный номер жертвы. Он получает идентификатор сессии и отправляет его вместе с номером жертвы, на который должно прийти SMS на сервер Вконтакте. Почти сразу же он отправляет такой же запрос, с тем же идентификатором сессии, но уже со своим номером. В итоге, одинаковый код восстановления приходит на оба номера (подозреваю, что код генерируется на основе id сессии и timestamp запроса)

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

          Ты указываешь номер Васи — SMS приходит на телефон Васи. Ты эту эсэмэску не видишь.

          Ты указываешь свой номер — SMS приходит на твой телефон. Ты читаешь код с экрана своего телефона.

          А теперь представь, что код одинаковый. Тогда ты, не имея физического доступа к телефону Васи, можешь догадаться, какой код ему пришёл. И если Вася сейчас не у телефона и не читает эсэмэски, ты введёшь этот код первым.
          Ответить
          • Какая иммутабельность

            Пофиксить-то это говно 1 минута работы программиста
            Ответить
            • Ты совсем там со своим малым бизнесом от жизни отстал. Что один человек делает за минуту, крупная контора дай бог сделает за квартал.
              Ответить
              • –— Степан! У гостя карета сломалась.
                —– Вижу, барин. Ось полетела. И спицы менять надо.
                –— За сколько сделаешь?
                —– За день сделаю.
                –— А за два?
                —– Ну… За… Сделаем и за два.
                –— А за пять дней?
                —– Ну, ежели постараться — можно и за пять.
                –— А за десять?
                —– Ну, барин, ты задачи ставишь! За десять дён одному не справиться, тут помощник нужен — хомо сапиенс!
                –— Бери помощников, но чтобы не раньше!

                «Формула любви».
                Ответить
            • дело не в фиксинге, а в том, что это вообще сделали изначально

              Это же позор уровня примерно SQL инъекции
              Ответить
              • Позор уровня sql инъекции это когда говносервис бордюрыча не может нормально заработать за 2 недели. А соцсети это бардак изначально, ты же не денег им заплатил, надеюсь?
                Ответить
            • Пофиксить это говно - 1 минута работы программиста. Пофиксить последствия фикса - неделя работы всей команды.
              Ответить
          • > Ты можешь указать любой номер для восстановления учётки

            А ну да, лол. Я совсем и забыл, что номер - это и есть один из идентификаторов учётки. И никаких логинов или емейлов там больше не надо.

            Какой второй фактор )))
            Ответить
            • Если бы ты мог ввести свой айдишник или никнейм, и ВК связал бы его с сессией (без возможности отвязки от сессии, с открытием новой сессии при вводе нового айдишника), ломать было бы сложнее. Но люди обычно не помнят своего айдишника, никнейм есть не у всех, а ФИО не являются уникальными, поэтому идентификатором сделали номер телефона (с тем же успехом идентификатором можно сделать е-мейл).
              Ответить
      • Или он восстанавливал СВОЮ учетку и получил тот же код?
        Ответить
        • да, свою


          как вообще можно сделать код для телефона предсказуемым? Это блядь как использовать PRNG в крипте
          Ответить
          • Поди ещё, чтобы не тратить место в базе, код вычисляется как подстрока от sha1(sessionid + time), так что можно предугадать и все последующие коды. Ну или по похожей формуле, я фантазирую.
            Ответить
            • Достаточно посолить, и ты уже немного заебешься предугадывать. Но конкретно в этом примере надо было номер телефона использовать как часть исходного текста, а не только sessionId и усечённый до (5 минут?) текущий таймстамп
              Ответить
          • Предсказуемость - это ок. Главное - чтобы там какая-то секретная часть участвовала, чтобы левые люди предсказывать не могли. Ну и номер телефона, да.

            Та же джвухфакторка через time-based OTP вполне предсказуема. Но это не делает её дырявой т.к. секретный ключ знают только приложуха на твоей мобиле и сервер.
            Ответить
            • почему нельзя каждый раз слать настоящий случайный код? энтропии мало?
              Ответить
              • Time-based методы не требуют состояния. И это удобно для их реализации.
                Ответить
                • но штоб у тебя был OTP, тебе нужно, чтобы
                  >секретная часть участвовала,
                  а если ее нет?

                  Вот у тебя есть мой номер телефона. А больше ничего нет.
                  Ответить
                  • > А больше ничего нет.

                    Я думаю вк всё равно сначала ходит в базу чтобы посмотреть, есть ли там вообще такой номер. Поэтому не вижу проблем с хранением соли для юзера.

                    В крайнем случае и одна соль на всех сойдёт. hmac(round(time, 5min) + phone, salt) % 1000000 да и всё.
                    Ответить
                    • >и одна соль на всех сойдёт.
                      пока её не спиздят. Знаешь соль, знаешь тел, хуячишь же.

                      Я бы всё таки сделал в лоб: генерируешь настоящее рендом говно, пишешь его в базу рядом с телефоном и время, шлешь говно. Через минуту удаляешь.
                      Ответить
                      • > Через минуту удаляешь.

                        Скорее просто отбиваешь ответ если время вышло. Удалять то зачем, раз оно один фиг рядом с телефоном.
                        Ответить
                        • что такое "отбиваешь ответ"?

                          В вообще я осознаю, что для двухсот миллионов пользователей мой способ может быть тяжеловат
                          Ответить
                          • Если время_сейчас - время_отправки_смс > 5мин, то говоришь юзеру "чувак, время вышло, давай отправим новую смс".
                            Ответить
                            • и типа хранить эти коды вечно? или флашать все таки иногда?
                              Ответить
                              • А чем они тебе мешают, если это просто поле, а не отдельная таблица?
                                Ответить
                                • если это просто поле фикс размера, и новые данные их перезапишут, то ты прав: стирать не надо

                                  это будет как блоки на hdd
                                  Ответить
                        • наскок я понимаю, соль нужна, чтобы когда твою базу хешей паролей спиздят, то не смогли бы сразу по словарю известных хешей их всех открыть
                          Ответить
                          • Ты прав, к соли для хеширования паролей нет требований на секретность, лишь бы уникальная была. Можешь вообще юзеру её отдать и пусть на своей стороне PBKDF считает.

                            Я лох и обосрался. Я должен был использовать термин "ключ", а не "соль". Ибо для OTP алгоритмов это значение должно храниться в тайне.
                            Ответить
          • > Это блядь как использовать PRNG в крипте

            В криптографии повсеместно используются CPRNG. У них немного больше требований чем у обычного PRNG:
            - нельзя предсказать следующий бит, зная предыдущие
            - спиздив состояние в какой-то момент, нельзя восстановить биты, сгенерённые до этого момента

            В остальном они предсказуемы и детерминированы. И это очень круто для отладки и верификации.

            А TRNG в основном юзаются как источник энтропии для CPRNG, не более того.
            Ответить
            • Я анскилен, потому под PRNG я имел ввиду систему, у которой нет внешнего испточника энтропии, так что она изначально параметризуется какой-нить хуйней (например, timestamp) и потом выдает с него случайные числа
              Ответить
              • У многих девайсов нет ни хорошего источника энтропии ни времени на её сбор.

                Вот подносишь ты карточку к терминалу и ей надо прямо сейчас сгенерить подпись.
                Ответить
                • Маленький ритег в неё встроить. Будет тебе и энтропия и энергия.
                  Ответить
                • слушаешь окружающую среду, шум, температуру руки человека.. но это всё время, конечно
                  Ответить
                  • > слушаешь окружающую среду, шум
                    - какой спуфинг )))
                    Ответить
    • А вот и хороший совет для автора-школьника:

      «Не теряй лучшие годы своей жизни слушая пердунов которым на тебя накласть. За пять лет можно и нужно запустить стартап, стать оверквалифаед, свалить на доллары или хотя бы евро, взять ипотеку и Теслу. Может меня и заминусят, но я ни разу не пожалел что свалил с первого курса. Потом ко мне приходили выпустившиеся одногруппники, а я не мог их взять потому что они, потратив на "образование" пять лет, знали меньше школьника с одним годом реального опыта. И знали меньше как практики так и теории, т к теория без практики это просто хлам, а занимаясь практикой теорию усваиваешь на порядок быстрее»

      Хотя, если подумать... Раз человек сам смог такому научиться и даже статью на хабр запилить, то вуз может быть полезным только ради высшей математики и расширения кругозора.
      Ответить
      • Ну дык. У чела реально было желание что-то захуярить. А эти одногруппники учились для галочки.
        Ответить
        • Это, конечно, так... Но вуз даёт обманчивую надежду, что по его окончанию ты пойдешь на собеседование, покажешь диплом и всё будет классно. Это и называется «идти по накатанной». Например, у врачей так реально и выходит, просто дольше из-за штук вроде ординатуры и практики, они действительно учатся, а потом работают и получают зарплату.

          А программиста пичкают начальным курсом сей, йажи и паскаля, сверху тромбуют матаном, алгоритмами и структурами данных и заливают общеобразовательными предметами, типа философии, а через 5 лет получается ма-те-ма-тик из раш-ки, у которого есть безусловно важные знания, но на работу почему-то не берут (((
          Ответить
          • Дает обманчивую надежду, что можно ничего не делать пять лет, а потом сразу сделать фейсбук и стать миллиардером
            Ответить
            • Да даже не миллионером, а просто нормальным программистом. Учишься-учишься целых пять лет, а потом на коричневом сайте на твой код показывают пальцем и смеются...
              Ответить
      • Плюсану! Посли школы идеш делаеш свой стартап сайты на вордпресе через год покупаеш теслу чериз пять уже такой профи что можеш вдень по три сайта на ворпдерсе делать и баблишко рубить
        Ответить
      • человек мыслит ипотеками и теслами

        следующий, пожалуйста
        Ответить
        • > ипотеками

          И то правда. Нашёл чем понтоваться. Мог бы и так купить, раз оверквалифаед и на евро.
          Ответить
          • зачем вообще в таком возрасте покупать

            потратить бОльшую часть сбережений на квартиру, к которой ты будешь привязан, как козёл к палке

            разве шо он настолько оверквалифаед, что может купить себе виллу в правительственном кооперативе, но я чот сомневаюсь
            Ответить
        • да ва всем Чебаркуле никто больши не зарабаывает!
          Ответить
  • Давайте поднажмем. В этом году нужно до #100 дойти.
    Ответить
          • Ему уж точно нет времени, чтобы отвлечься от чтения и зубрения манов и посмотреть на тяночку, а то умный компилятор с новым флагом -О100500 обскачет его по пирфомансу и весу сорцов.
            Ответить
            • зачем ему тяночка, посмотри, какие у этого ктулху тентакли из подбородка

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

                  не торопись отвечать, я не жду твоего ответа
                  Ответить
                • Х.з., я всегда думал, что тян одеваются для себя.
                  Ответить
                  • ну конечно:) а парни в качалку ходят и в барбершопы тоже для себя
                    Ответить
                    • как там было?

                      почему парни с утра идут в душ: 20% - личная гигиена; 80% - а вдруг сегодня секс?!
                      Ответить
                      • Или медосмотр.

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

                    но так, чтоб заодно и побольше лайков собрать
                    Ответить
              • Надеть-то фигня.

                А ради кого-то здесь сотрудницы снимали чулки?
                Ответить
        • Там же написано, что он дурак, так что он не смог бы работать программистом на языке «Сэ». Или он пишет говнокод, который его коллега потом постит сюда?
          Ответить
        • Там и «о» странная. Обычно люди пишут её с правого верхнего края, по часовой стрелке, а тут наоборот, но не совсем. Я, кстати, начинаю писать «о», как и нуль, снизу; иногда даже случаянно получается смешная жöпа.
          Ответить
          • круто, ты попал на ГК,
            ты хедкраб,
            давай народ удиви!
            Ответить
          • «О» обычно против часовой пишут (по крайней мере, прописи так рекомендуют). У некоторых она получается замкнутая, у некоторых — разомкнутая.
            Ответить
            • Я дляэтих случаев ношу с собой линейку и циркуль.

              В моём имени и фамилии и отчестве есть по букве "о", это очень неудобно.
              Ответить
        • ... либо он работает в цивилизованной компании. Я сейчас вспомнил, что неприлично делать малознакомым девушкам комплименты, чулки она могла не для тебя надеть, а ногти она вообще для мужа накрасила, вот такой вот конфуз! А кончиться это может обвинением в харассменте.

          Вот он, наверное, и «не замечает».
          Ответить
          • зачем же сразу комплименты? это неприлично. Но посмотреть и улбынуться бы мог
            Но у него дедлайн
            Ответить
      • судя по бороде это или очень древний сишник (что вряд-ли, таких уже не сохранилось) или хипстер

        Ставлю на хипстера

        Хипстер в 2020 пишет на JS, это очевидно
        Ответить
        • > судя по бороде
          > хипстер

          Я не хипстер, мне просто лень бриться во время самоизоляции.
          Ответить
        • А вот и не угадал! Хипстеры обычно молодые, а потому тощие (питаются мало (нет денег) и в основном питание состоит из смузи (причина хронической нехватки денег)).

          А толстые (да и худые) хипстеры обычно носят шапку-федору, вот пруфы:

          https://www.urbandictionary.com/define.php?term=Fedora%20Guy
          Ответить
          • Я видел толстых хипстеров, правда чаще западных. Там развита культура бодипозитива
            Ответить
            • > правда чаще западных

              Американских, ты хотел сказать? В европке не то чтобы много бодипозитивных, а в северной европке считай нет.
              Ответить
              • Американскх в основном, да.
                Ответить
          • >guy who thinks he's so cool and smart when in fact he just sounds like a smartass without being so smart

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

        Это просто очень современный сайт на современных фреймворках, он так сразу не работает
        Ответить
        • У него оно никогда не загрузится, даже если 40 лет подождать... Скрипты то отключены.
          Ответить
            • Ну он где-то писал, что по заветам Столлмана включает скрипты только если что-то реально нужное.
              Ответить
              • Не хочет майнить крипту незнакомым людям
                Ответить
        • Сначала я нормально эту ссылку открыл и подумал, что у меня браузер не тянет такое. А потом открыл с телефона и охуел...
          Ответить
            • Вполне возможно, что некоторым браузерам и некоторым версиям многих браузеров даётся отлуп, т.к. без cutting edge js-фреймворков __такое__ просто не создать.

              Ну или 3.5 гуеста уже перешли по ссылке и сайт лёг немножко )))
              Ответить
              • «Uncaught SyntaxError: Unexpected token ...» в одном браузере и «SyntaxError: class is a reserved identifier» — в другом. Где-то в файле https://gather.town/bundle.js на 7 мегабайт.
                Ответить
                • >7 мегабайт.

                  Джаваскрипта восемь метров грузят текста триста байт (с)
                  Ответить
                  • Раньше бы за такой скрипт сожгли на костре.
                    Ответить
                    • Джаваскрипт нужно сжить вместе с теми, кто на нем пишет
                      Ответить
                      • В общем, в этом скрипте есть и токен «...», который не поддерживается старыми браузерами, и идентификатор «class», который в новых браузерах является зарезервированным словом. Т. е. ему нужен браузер определённой версии, в котором слово «class» ещё не зарезервировано для ООП, а токен «...» уже появился.

                        Версию браузера нужно искать перебором или есть готовое решение для такого идиотского случая?
                        Ответить
                        • Можно бинарным поиском это (вручную) вычислить, если знаешь какой браузер у человека, у которого сайт работает
                          Ответить
                          • P.S. Говно какое-то. Во всех веб-браузерах, о которых знает «Caniuse», классы появились раньше (не позже) деструктуризации. Т. е. наоборот, чтобы было слово «class», но не было многоточия, бывает, а так, как в этом скрипте, — нет.
                            Ответить
                • у меня так ошибок нет (FF68)

                  но есть другие ошибки и предупреждения:

                  None of the “sha384” hashes in the integrity attribute match the content of the subresource.

                  It looks like you're using the development build of the Firebase JS SDK.

                  failed to load Sentry bundle.js:2:3548254

                  Content Security Policy: Couldn’t process unknown directive ‘noscript-marker’

                  Content Security Policy: The page’s settings blocked the loading of a resource at inline (“script-src”).

                  Как говорил один мой сотрудник: какой хороший язык джаваскрипт, не надо ничего компилировать и устанавливать, написал, залил и можно друзьям показывать
                  Ответить
    • Это же как VR-Chat, только его делали программисы, которым не нужна математика, а особенно геометрия.
      Ответить
  • Кстати, открою секрет, говнокод читают тяны.
    Так что ведите себя прилично.
    Ответить
    • ))тяны разные бывают, некоторых этим не испугаешь
      Ответить
    • (возможно, вы одна из них)
      Ответить
    • А они в чулках? Если нет, то не буду себя прилично вести.
      Ответить
      • они не в чулках
        и ноги у них небритые

        спасайся
        Ответить
        • Вот, кстати, да.

          Познакомился, допустим, на говнокоде или дваче с Lain_Cynep_XaKepWa, думая, что она сидит на подобных ресурсах, потому что она социофобка и интровертка, которой нравится общение в местах, не стеснённых общепринятыми нормами, ограничивающими мировосприятие.

          А она там сидит, потому что ноги не бреет и её из инстаграма выгнали. Какой багор (((
          Ответить
  • чот client side rendering сильно упал в моих глазах или я не осилил

    сделал на ворце bbcode для указания синонимов. в итоге захерячил через обычный реплейс по рагулярке на '<a href>'

    поскольку такой элемент не рендерится Vue, то не получится сделать ему scoped style, а это никаких ховеров и афтеров и вообще без псевды

    можно разбить текст на лексемы и каждую преобразовывать в отдельный компонент Vue, но я плохо умею в рагулярки, а мне надо кое-что посложнее, чем split по пробелу и знакам препинания

    на серваке конечно это было бы отрендерить в 100500 раз проще
    Ответить
    • Ну в том же ангуляре ты бы мог сделать свою директиву, которая привязывается к тексту в модели, нарубает его на span'ы и на каждый из них развешивает свои атрибуты, классы или что там тебе надо.
      Ответить
      • я об этом и пишу
        я не осилил рагулярку

        как мне разбить на лексемы такой текст?

        loreum ipsum, ololo trololo [syn='word']several words[/syn]!hehe
        Ответить
        • \[syn='(.*?)'\](.*?)\[\/syn\]

          Попробуй по такой штуке засплитать или просто в цикле поискать её и запустить рекурсию на теле.

          З.Ы. Или ты хочешь много разных тегов поддержать?
          Ответить
          • да, збс

            осталось понять, как определить, какая из строк в получившемся массиве относилась к bbcode 😀
            Ответить
            • Ну хуй знает, сплитни как (\[syn='.*?'\].*?\[\/syn\])

              А потом пройдись циклом, и блоки которые матчатся с \[syn='(.*?)'\](.*?)\[\/syn\] заверни в ссылки.

              Хуяк-хуяк и в продакшен. Не браться же за настоящие грамматики из-за такой ерунды.
              Ответить
              • хм, мне js после

                "loreum ipsum, ololo trololo [syn='word']several words[/syn]!hehe".split(/\[syn='.*?'\].*?\[\/syn\]/)


                возвращает Array [ "loreum ipsum, ololo trololo ", "!hehe" ]

                я почти совсем не знаю рагулярки, увы(
                Ответить
                • Круглые скобочки потерял. Я не просто так их там написал. Без них split заматченные куски тупо выбрасывает.
                  Ответить
                  • мне кажется, вы ебете муму

                    постройте конченый аутомат, разберите текст, это же илиментарно
                    Ответить
                  • реально

                    спасибо огромное

                    теперь должно быть збс
                    Ответить
                    • Вложенность эта поебень не обработает, конечно. Но тебе вроде и не надо.
                      Ответить
              • Можно захуярить конечный автомат. Он будет читаемее, ИМХО.
                Ответить
                • Не барское это дело, автоматы писать.

                  А под js есть какой-нибудь flex.js и bison.js?
                  Ответить
                • плюсану

                  рагулярка и есть язык для написиния конченых автоматов, но писить на даже на джаваскрипте куда приятнее, чем писать СЛОЖНУЮ регулярку

                  а уж если взять TypeScript и либу для лексеров то заебс
                  Ответить
                  • написания конечного автомата в списке задач ворца нет, тем более, на жопаскриптизе
                    Ответить
                  • Ну я при рукопашном парсинге обычно вместо автоматов юзаю гибрид регулярок и низходящего рекурсивного парсера: parseNumber, parseString - обёртки над регулярками; parseValue зовёт parseNumber, parseString, parseХуёмоё и т.п.

                    Главное чтобы левой рекурсии в грамматике не было. Иначе ой.

                    Автомат писать всё-таки не особо приятно.

                    З.Ы. Я так lua даже разбирал и исполнял, лол. Думал что обойдётся малой кровью, разберётся как конфиг. А потом оказалось, что там и выражения и функции...
                    Ответить
                    • ну мы же сейчас про тупой лексер для тагов, не?
                      Ответить
                  • > куда приятнее, чем писать СЛОЖНУЮ регулярку

                    Собирай рагулярку по кусочкам.

                    (defun erlstack--whitespacify-concat (&rest re)
                      "Intercalate strings with regexp RE matching whitespace."
                      (--reduce (concat acc "[ \t\n]*" it) re))
                    
                    (defvar erlstack--string-re
                      "\"\\([^\"]*\\)\"")
                    
                    (defvar erlstack--file-re
                      (erlstack--whitespacify-concat "{" "file" "," erlstack--string-re "}"))
                    
                    (defvar erlstack--line-re
                      (erlstack--whitespacify-concat "{" "line" "," "\\([[:digit:]]+\\)" "}"))
                    
                    (defvar erlstack--position-re
                      (erlstack--whitespacify-concat "\\[" erlstack--file-re "," erlstack--line-re "]"))


                    Ну ты понел. А то завели какие-то парсеры-шмарсеры.
                    Ответить
            • Ты ещё про д'Артаньяна вспомни, ради которого в синтаксис придётся завезти экранировки (ну или тупо убрать кавычки, х.з. зачем они там). Благо у нас таких терминов нету.

              Хотя эта регулярка вроде и [syn='д'Артаньян'] спарсит без проблем.
              Ответить
              • Извини, у меня просто пунктик.
                Я когда вижу ".*", то у меня сразу глаз дёргается
                Ответить
  • Application was halted by an exception.
    Ответить
  • Питухи, а вот например у меня есть отношение в БД 1-ко-многим. Возьмём игры Парадокса: есть государство, у него есть подчинённые государства, например, колонии и вассалы.

    Логично сделать таблицу из трёх полей: два айдишника (мастер и слейв простите, верхний и нижний ну ём-моё, primary country и secondary country) и отношение между ними.

    Но ведь это как-то криво ляжет на ORM, не так ли?
    Ответить
    • > криво ляжет на орм

      Не скажу за все ормы, но в той же алхимии связь через association table вполне поддерживается.

      З.Ы. Только зачем это для 1-ко-многим?
      Ответить
      • У государства может быть много колоний, потому я решил, что должно быть 1-*, но я могу ошибаться
        Ответить
    • Assotiation table это всё таки для сложных many-to-many отношений между объектами, имхо. Например france in-war-with germany, france is-allied-with italy.

      А для kamerun is-colony-of france возможно и просто полей в слейве хватит.
      Ответить
      • Тогда получается не очень расширяемо кмк: если захочу добавить новый тип отношения, то придётся апдейтить таблицу Gosudarstvo
        Ответить
        • Ну если хочется всякие разные отношения поддержать и чтобы это в гуйне потом красиво - можно и таблицу отношений, вай нот.

          Из-за дополнительных полей в орме это будет как обычная сущность, емнип.
          Ответить
    • псевдокод
      table country
      id: int
      name: char
      parentCountry: nullable in foreign key country.id

      Всё.
      Отлично ложится на ORM.
      Ответить
      • Ну у него ещё parentRelation - вассал или колония. И в будущем возможно всякие "враг" и "союзник", которые МЖМ.
        Ответить
        • тогда лучше вынести, да

          но всё равно ложится ок
          просто нужно уметь делать префетч в некоторых сиитуациях
          Ответить
          • Хотя может быть лучше и не смешивать все это в одной таблице... И сделать controlledBy и controlType прямо в таблице стран, а warRelation в отдельной.

            Хер знает, я сварщик не настоящий.
            Ответить
            • table country
              id: int
              name: char
              
              
              table: relation
              papa: id int foreign key country.id
              petuh: id int foreign key country.id
              constraint unique(papa, petuh)
              
              
              table: hiejshien
              country1: id int foreign key country.id
              country2: id int foreign key country.id
              constraint unique(country1, country2)
              Ответить
              • Кстати, а что думаешь о хранении пары строк на каждое отношение, чтобы потом проще было выбирать. Ну как направленные ребра в графе.

                Например А являетсяКолонией Б и Б владеетКолонией А. А воюетС В и В воююетС А.

                Кровь-кишки-денормализация или норм?
                Ответить
                • Не очень понятно почему это будет проще выбирать. А вот неконсистентность можно внести очень легко.

                  Я за максимальную нормализацию кроме тех случаев, когда она очень сильно портит перформанс: в таком случае практичность становится важнее пуританства
                  Ответить
                  • Ну потому что если я захочу посмотреть с кем воюет страна А, то мне придётся искать её и как country1 и как country2.
                    Ответить
                    • С войнами немного не так

                      Будет таблица Wars, в ней PK id и многие-к-многим отношение к таблице Countries
                      Ответить
                        • ну ты осознай сначала какие у тебя есть сущности, потом подумаем как их в базу покласть
                          Ответить
                          • Ну это скажем вообще отдельный вопрос

                            Но думаю, это будет как-то так:

                            table WarParty:
                            Id -> uuid PK
                            WarId -> uuid FK War

                            table War:
                            Id -> uuid PK

                            table WarParticipant:
                            CountryId -> uuid FK Country
                            WarPartyId -> uuid FK WarParty

                            Уники писать не стал, там всё понятно

                            Не знаю, можно ли упростить
                            Ответить
                            • у тебя в рамках одной войны несколько партий, и в каждой партии несколько стран? а кто с кем воет то?

                              или парти это сторона в войне?
                              Ответить
                                • Что помешает стране быть в двух сторонах сразу?
                                  Или страна может быть только в одной войне?
                                  Ответить
                                  • А как ты можешь быть одновременно по обе стороны фронта?

                                    Количество войн технически не ограничено
                                    Ответить
                                    • table WarParticipant:
                                      CountryId -> 1
                                      WarPartyId -> 1
                                      
                                      CountryId -> 1
                                      WarPartyId -> 2

                                      вот так могу

                                      неаккуратненько

                                      На самом деле конечно это доебывание: всегда можно порешать это на уровне кода или констреинта кодом, но хочется что перфекционизму
                                      Ответить
                                        • обосрать чужую архитектуру это мы завесгда готовы

                                          вот придумать как сделать правильно -- это сложнее

                                          можно чуть денормализовать базу, и ввести туда поле war, или (надо подумать)
                                          Ответить
                                          • Добавить WarId в WarParticipant и сделать PK(CountryId, WarId)?

                                            Можно вообще отказаться от таблицы WarParty и вместо айдишника партии записывать в WarParticipant айдишник страны, которая является «главной» с какой-то стороны конфликта
                                            Ответить
                    • я бы вынес войну в отдельную таблу, и перечислил бы там все страны, как говорит ДЕсктоп, но и в твоем запросе нет проблемы при наличии индексов
                      Ответить
              • я думал о чём-то таком:

                table country
                id: int
                name: char
                
                table: relation
                primary: id int foreign key country.id
                secondary: id int foreign key country.id
                type: int/char/whatever
                constraint unique(primary, secondary)
                Ответить
                • что такое type? почему его нет в uniq?

                  type можно сделать enum (если твоя субд поддерживает расширяемые енумы) или внешним ключом таблу, или просто числом, чье щначнеие связано с константой в коде
                  Ответить
                  • Type это тип отношения: вассал, колония, что-то ещё

                    В идеале это FK на более другую таблицу

                    Про энамы надо почитать, для меня новость вообще, что в БД могут быть энамы)
                    Ответить
                    • можно и FK, но что ты будешь хранить в другой таблце?


                      у потсгри они физически отдельно, места занимают мало, семантика приятная:
                      https://www.postgresql.org/docs/12/datatype-enum.html

                      только убедись, что в твоей субд их можно будет добавлять. В какой-то субд (в старом ms-sql вроде?) были с этим какие-то проблемы
                      Ответить
                      • Имя отношения или id для локализации?
                        Какие-то коэффициенты или даже скрипты, про которые мы раньше говорили, может быть
                        Лучше сделать отдельной таблицей, чтобы потом не было мучительно больно мигрировать
                        Ответить
                        • солгласен, можно

                          от того, что у тебя будет одна таблица с колонкой размером в инт хуже никому не будет, это копейки
                          Ответить
    • А вот кстати какой такой use case лучше всего обработать in memory? Очевидно, что подобное живое приложение дрочить БД на диске постоянно не должно.

      Что лучше:
      * просто хранить десериализованные объекты в памяти
      * брать ORM, которая умеет работать с in memory
      Ответить
      • Хорошая ОРМ загрузит тебе объекты в память, и ты будешь там с ними работать, а потом запишет их на диск, когда ты явно флашнешь их.
        Ответить
        • можно какой-то пример?

          я пока не могу быстро найти, как мне, например, в ef "явно зафлашить объекты"
          Ответить
          • https://entityframework.net/save-changes

            обычно они все так и работают: ты поднимаешь какой-то "контекст" в память (обычно лениво, но можешь и сам подмандить выбрав нужное), работаешь с ним, потом флашишь.

            Если бы на каждое измененеие поле ты сразу писался в базу, то база бы страдала, особенно MVCC база типа постгри
            Ответить
            • если у меня более одного контекста, то такая схема работать не будет, как мне кажется

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

                Я не спец по EF, но известные мне ORMы так работают, и обычно все ORMы примерно одинаково устроены.

                Зачем тебе полный слепок? Ты собрался изменить все объекты в базе?
                Обычно они надергиваются лениво, а сохраняются только измененные

                You can add, modify, and remove data using your context and entity classes.

                SaveChanges method automatically call DetectChanges method to discover any changes to entity instances before saving to the underlying database.


                В общем я бы начал с того, что
                * загрузить нужные объекты из БД через твой ORM
                * поправить их как нужно: двести раз поле поменять итд
                * сделать save

                Во время шага-2 ты можешь запустить профайлер или включить логгер в субд, и убедиться, что каждое изменение поле не приводит к записи в базу.
                Ответить
                • там наверху изначально шла речь про игры вроде Europa Universalis IV

                  там можно сохранить игру и можно загрузить. пусть даже файл сохранения это внезапно какой-то sql

                  ты подозреваешь, что между загрузкой и сохранением они регулярно флашат что-то на диск?
                  Ответить
                  • А, я не очень всё это понял, и стал говорить про то, как ORMы работают)

                    Что именно ты хочешь? Получить "слепок" всей системы в файле?

                    По идее твой стейт это вся твоя база, и да: нужно сделать ее полный снепшот.

                    Но совсем не факт, что там имеет смысл использовать ORM и SQL.
                    Ответить
                    • так в общем вопрос и был в том, что имеет смысл использовать 🙂 мемкашед?))
                      Ответить
                      • Начнем с простого варианта
                        * Ты загрузил в память дерево всех объектов с диска
                        * Ты их там дрочешь как хочешь
                        * Потом сериализуешь их обратно.

                        У тебя же .NET, а не php, ты можешь в памяти всё держать без мемкешдов.

                        Если же у тебя будет несколько пользователей, и эти объекты потом придется мерджить, то тут уже лучше подумать про базы данных
                        Ответить
                        • а почему ты решил, что у меня в данном случае .NET?

                          в дотнете конечно хорошо: там есть linq и я смогу делать query

                          а в других языках я сосну получается
                          Ответить
                          • Что-то я совсем запутался. Поясни бизнес задачу.

                            Чтобы загрузить в память с диска данные и построить по ним граф объектов не нужны ни ОРМ, ни СУБД ни в каком языке.

                            Чтобы граф объектов сериализовать на диск тоже ничего из этого не нужно.

                            СУБД нужны когда
                            * у тебя в память целиком не влезут все данные
                            * у тебя может быть более одного клиента: несколько чуваков одновременно меняют или читают твои данные
                            * для удобной репликации)

                            ОРМ обычно преобразует данные из базы в граф объектов, чтобы с ним было удобно работать. Затем сохраняет измененные данные обратно в базу.

                            "ORM к in-memory базе" это очень странно: если ты всё хранишь в ин мемори, то зачем тебе орм?

                            Потому что тебе удобнее писать SQL, чем шероебиться по графу объектов? Именно потому ты мечтаешь о Linq?

                            Ну если у тебя не шестая джава вдруг случайно, то ты обычно имеешь средства функционального программирования для поиска нужных тебе объектов.
                            Ответить
                            • поиграй в EUIV или посмотри видосы что ли.

                              мне нужны все страны, которые принимают участие в войне. я иду в какой-то CountryProvider или WarProvider и говорю, дай мне вот это по такому условию

                              в итоге я переизобретаю СУБД на ровном месте

                              почему тогда сразу не взять in memory DB с ORM или без ORM и не нахуячить на нём?

                              p.s. откуда вообще взялась идея про ORM: CoreData умеет в in memory, например
                              Ответить
                              • >в итоге я переизобретаю СУБД на ровном месте

                                Ну и ты пишешь
                                countires.filter {country ->  country.name == "Cameroon"}


                                Преобразование между ин мемори базой и ORM будет занимать некоторое время (в некоторых языках потребует рефлексию), кажется лучше этого избежать.

                                Однако если у тебя будут пиздец сложные запросы, то можешь конечно попробовать и in memory базу.

                                NSInMemoryStoreType небось нужна тока для тестов, не?


                                А вообще сообщи мне язык.
                                В нем могут быть и linq и прочие похожие штуки
                                Ответить
                                  • https://www.donnywals.com/setting-up-a-core-data-store-for-unit-tests/

                                    The initial version of this article covered NSInMemoryStoreType. Thanks to some feedback and information from Geoff Pado and Vojta Stavik I found out that writing to /dev/null is the currently preferred way to create an in-memory store. Apple talks about it in this WWDC video, and you can learn more about in-memory SQLite stores here.

                                    Unfortunately, Apple has not updated their documentation for NSInMemoryStoreType to express their latest recommendations so using the /dev/null based approach will probably remain somewhat obscure for a while.


                                    Ëбушки-воробушки
                                    Ответить
                                    • Кто-то не понял шутку из видео "MongoDB is web scale" про хранение данных в /dev/null.
                                      Ответить
                                • > А вообще сообщи мне язык.
                                  - ну ээ

                                  кресты, свифт, штоугодно

                                  с дотнетом вроде разобрались
                                  Ответить
          • mnesia:transaction(
              fun() ->
                % Произвольная питушня на Erlang волшебным образом приобретает кислотные свойства
              end)


            Ну I/O разве что лучше внутри транзакции не делать (кроме как срать в таблицы) и какие попало исключения не ловить.
            Ответить
            • ну и моём юзкейсе кислотность-то особо и не нужна
              Ответить
                • Fantastic!

                  залипал на канале этого чудака летом

                  именно поэтому гейдевом как таковым для себя заниматься совершенно мотивации нет: всё равно выйдет имбалансная, глюкавая хуета с кучей дыр и возможностей для эксплойтов
                  Ответить
                • Кто, кстати, хотел британского английского?
                  Ответить
                  • при этом в одном из видео у него засветилась почта на домене .ru
                    Ответить
                    • Я не сильно разбираюсь в их акцентах, но у нескольких британцев и ирландцев, с которыми я работал (небольшая выборка, да) он не был таким карикатурным.
                      Ответить
    • Умничка он, такие хорошие языки создал. Без тайпскрипта я вообще не знаю как бы мы на JS писали.
      В Дании вообще много умных ребят родилось: Фог, Страуструп, DHH.. А не только, извинясь, расмусы
      Ответить
      • >>>"Умничка он"

        Ещё потрахайся с ним.

        >>>"А не только, извинясь, расмусы"

        Много сайтов было бы сейчас в Интернете, если бы не Расмус Лердорф? Что находил бы Google, написанный на влажной Яве?
        Ответить
        • гугловый движок изначально был на крестах и сишке емнип, да и сейчас там джавы и го только для того, что не упирается в перформанс, а для действительно хардкора там кресты. Надо у Романа спросить
          Ответить
          • Кстати, и Хейлсберг, и Лердорф - оба Стрельцы. Странно, что из одного языки программирования лезут, как говно из жопы, а второй молча создал один - но на века. Возможно, это связано с тем, что Лердорф находится на границе Скорпиона и Стрельца.

            >>>"гугловый движок изначально был на крестах и сишке емнип"

            Где скачать архив со скриптом?
            Ответить
            • Вообще популярность языка связана с бородой

              У Вирта и Кернигана с Ричи были бороды, потому паскаль и си до сих пор существуют, и у Маккарти с лиспом тоже так вышло.

              >>Где скачать архив со скриптом?
              у Романа, разве что, если он по ssh спиздил
              Ответить
        • Андерс сказал как-то раз: «Я написал огромное количество полезных программ. И совсем немного бесполезных»

          Так вот, в случае с «РНР» всё наоборот )))
          Ответить
          • Ты хорошо представляешь себе ВКонтакте, написанный на Turbo Pascal?
            Ответить
            • отлично представляю себе SO, написанный на C#
              Ответить
            • Вышла бы такая же параша как и с похапэ, ВК надо было писать на йаже или С#, но Пашка неасилил, всё-таки лингвист по образованию )))
              Ответить
              • >>>"параша ... похапэ"

                Кись, ответь на вопрос: почему ВКонтакте так быстро работает? Почему там всё загружается моментально?
                Ответить
        • > Что находил бы Google, написанный на влажной Яве?
          В «Google» «PHP» нет. Там «C», «C++», «Go», «Java», «Python» и «Node».
          Ответить
          • «Go» – чтобы индусов можно было посадить писать низкоуровневые питушню, не боясь критических ошибок?
            Ответить
      • По этому я за луа. Его сделал ма-те-ма-тик из Бразилии.
        Ответить
        • А я за питон, потому что его сделал ма-те-ма-тик из Голландии, она мне нравится больше Бразилии.
          Ответить
          • Странно и забавно.
            Если бы действительно учили языки по предпочтению к её стране или культуре.
            Я мне нравится Руби потому что люблю ониму.
            Мне нравится apl потому что люблю канадский клиновый сироп
            Ответить
            • До этой ветки комментариев я всерьёз считал, что все языки программирования, кроме 1С, были созданы в США.
              Ответить
            • учишь луа, и поешь:

              О Рио, Рио, потерпи, я прибуду
              на днях
              Ответить
  • У меня вот какой вопрос: как Google умудряется так быстро находить страницы по запросу пользователя? У них парсер работает сразу в несколько сотен потоков или как?
    Ответить
  • https://habr.com/ru/post/524858

    Штуку, которая скачивает видео с ютюба, удалили из гитхаба, а у автора, если верить комментам, ничего не осталось, ещё и форки ёбнули )))

    Именно поэтому я за облачные сервисы и доверие!
    Ответить
    • Кстати, а разве прям удаляют? Не просто скрывают от других посетителей?

      З.Ы. Страйки как на ютубе ещё не прикрутили? Чтобы три страйка и все твои репы в дроп.
      Ответить
      • репа is not available, а не not found, так что наверное и не удалили

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

        но я не знаю, а начешуя скачивать видео с ютуба в 2020?
        Ответить
        • > начешуя скачивать видео с ютуба

          Ну я качал чтобы в оффлайне слушать на мобиле потом.
          Ответить
          • это когда было?

            щас вроде YT Music позволяет так делать даже без подписки (могу напиздеть, конечно)
            Ответить
            • > без подписки

              Не могу проверить т.к. подписка есть. Но это не скачивание, это просто оффлайн кеш. Оно удаляет удалённые с сервера видео. Через полгода почти всё, что у меня там было скачано закешировано пропало.

              А скачанные вручную файлы никуда не денутся (по крайней мере пока, лол).
              Ответить
              • ну в общем, ты прав, это неравнозначная замена

                кстати, гугл пидарасы. у них в плей музыке было два плейлиста из коробки: лайки и библиотека. зачем? зачем? типа я в библиотеку должен добавлять всё подряд, а потом лайкать то, что хочу послушать прямо щас?

                а при экспорте в ют музыку плейлист лайков переносится, а плейлист библиотеки нет. какой багор

                ещё в ют музыке очешуенно, что там в плейлист лайков прилетели все музыкальные видео, залайканные на ютубе, даже если это полный альбом на 40 минут без разделения песен

                кстати, копирасты по этому поводу не сильно парятся
                Ответить
                • > копирасты по этому поводу не сильно парятся

                  Да-да, а чому тогда эти часовые ролики периодически пропадают и перезаливаются с другой учётки? Выживают годами в основном ремиксы да non-copyrighted.

                  Но вообще - это же от конкретного копираста зависит. Кто-то удаляет, кто-то рекламу втыкает, кому-то похуй.
                  Ответить
                  • ну вот у меня несколько лет был альбом одной малоизвестной прог-метал группы (был, потому что я убрал лайк, чтобы он не светился в плейлисте)

                    думаю, издатель этого альбома уже имел шансы обанкротиться и развеяться по ветру. то есть претензии предъявлять будет непонятно кто

                    лицензионность контента под вопросом, но это не мешает гуглу мне давать слушать этот контент за подписку лол
                    Ответить
                    • Пока DMCA не грянет - гугл не перекрестится.

                      А для малоизвестной группы это может быть и шанс быть услышанной.
                      Ответить
        • Чтобы залить куда-то ещё, если с ютуба ёбнут.
          Ответить
        • > начешуя скачивать видео с ютуба в 2020?
          чтобы слить себе то, на что сделали временный доступ
          Ответить
    • > у автора ничего не осталось

      ССЗБ. Гит - это ж не дропбокс какой-нибудь, с твоей тачки по запросу сервера ничего не выпилит.
      Ответить
      • Скорее всего он в ожидании пативена немного сжёг свои диски.
        Ответить
    • По ссылке не переходил, но похоже на пиздеж. Если питушня популярная, то у кого-то да осталось.
      Ответить
      • Согласен, меня скорее удивляет факт того, что гитхаб может тебя послать нахуй, если надо будет. Это как если бы я у себя в IDE писал симулятор порна с конями, а IDE бы мне не разрешала это компилировать.

        Жаль, что инструмент контроля версий превратился в соц-сеть для программистов, со всеми соответствующими минусами соц-сетей.
        Ответить
        • причем тут инструмент контроля версий, если это онлайн-репозиторий для инструмента контроля версий, один из тысячи, просто самый известный

          и да, попробуй деньги посканить/попечатать
          Ответить
          • А, ну да, я просто не пользуюсь этими хипстерскими штуками, а создаю много-много папок и теку, вот и напутал.

            А с офисной техникой вообще один сплошной багор, чего только невидимые точки на листах сто́ят (стенография) и очень дорогие чернила для принтеров...
            Ответить
          • без шуток, но выросло поколение, которое не понимает разницу между гитом и гитхабом
            Ответить
            • именно по этому я за RCS:
              Copyright © 1982, 1988, 1989 Walter F. Tichy.
              Ответить
              • Rich Communication Services (RCS) is a communication protocol between mobile telephone carriers and between phone and carrier, aiming at replacing SMS messages with a text-message system that is richer, provides phonebook polling (for service discovery), and can transmit in-call multimedia. It is part of broader IP Multimedia Subsystem.

                In October 2019, the four major U.S. carriers announced an agreement to form the "Cross-Carrier Messaging Initiative" to jointly implement RCS using a newly developed app. This service will be compatible with the Universal Profile.

                какой instant messaging ))) four major U.S. carriers вышли из криокарцера
                Ответить
        • > а IDE бы мне не разрешала это компилировать

          Ничего, скоро будет запрещать...

          Ваш код недостаточно толерантен. Добавьте негров, трапов и лесбиянок.
          Ответить
          • Под предлогом борьбы с малварью вполне могут что-то подобное провернуть, но для этого нужно, чтобы на такую IDE все пересели и забросили остальные.

            Не удивлюсь, если в обозримом будущем, чтобы писать код, придётся тащить за собой гигабайты библиотек, а некоторые вообще будут предоставляться онлайн (в джаваскрипте и CSS такое уже практикуется). И это всё вынудит бедных девелоперов сидеть в IDE, которая делает и отправляет на сервер скриншоты с телеметрией для подбора контекстной рекламы (((
            Ответить
            • IDE будет в облаке.

              > для подбора контекстной рекламы

              С добрым утром. Гитхаб уже имеет `trending' панельку, в которой предлагается течь от последних экма-фреймворков. Хвала uBlock'y, который пока умеет её сносить. Когда этот хак перестанет работать, перейду на патчи по почте.
              Ответить
              • ты и сейчас можешь перейти на патчи по почте, зачем тебе вообще веб-морда гитхаба?

                > контекстной рекламы
                > предлагается течь от последних экма-фреймворков
                - а рассказывал, что на ырланге пишешь. но правду-то не скроешь
                Ответить
                • > но правду-то не скроешь

                  Про экму это была фигура речи, призванная подчеркнуть иррелевантность, убогость и назойливость данной фичи.
                  Ответить
              • Какой багор )))

                А зачем патчи по почте? Я сейчас немного погугли́л и понял, что можно поднять свой git сервер.

                Не понимаю, зачем вообще тогда нужен гитхаб? Чтобы не пердолиться со своим сервером? В качестве „надёжного“ резервного хранилища? Чтобы показать свой код другим программисам?
                Ответить
                  • Кстати да. Одно дело, когда сорок тысяч обезьян вместе правят один файл, а совсем другое, когда обезьян максимум десяток, активно работает из которых чуть меньше половины.
                    Ответить
                    • дело не в этом

                      серьёзные вещи всё равно разрабатывают во внутренних репозиториях

                      гитхаб это в основном для стартапов по типу "я тебя слепила из того, что было", для студентов и в качестве бэкапа какой-то своей мелочи
                      Ответить
                      • В общем-то да. Часто даже у серьёзного опенсурса на гитхабе просто ридонли зеркало, PR'ы там не принимают, issue не смотрят и т.п. Всё на своём сайте.
                        Ответить
                      • А, ты про гитхаб. Да, ну его нафиг, действительно. Что-то я сегодня дегроднул знатно )))
                        Ответить
                • > погугли́л

                  Отвечая на мои посты, вы обязаны использовать инклюзивный язык. Слово "погуглил" дискриминирует меньшинства Bing и DDG.
                  Ответить
          • Ваша версия CoC устарела. Пожалуйста обновите её, чтобы продолжить пользоваться git push
            Ответить
          • у нас в той части кода, которая открыта, не рекомендуется использовать термин blacklist
            Ответить
              • но ты ведь можешь как угодно ветки называть

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

              доберёмся до вас до всех
              Ответить
                • а ты потом говоришь, что я женоненавистник

                  это адекватная реакция
                  Ответить
                  • ты же понимаешь, что примерно всем женщинам на свете похуй на название константы в коде поддержки хиперви?
                    Ответить
                    • нет, не понимаю

                      есть реально поехавшие и их немало
                      Ответить
                      • Поехавшие не читают код. Читающие код достаточно адекватны чтобы оценить шутку.
                        Ответить
                        • Какой wishful thinking ))) Среди разработчиков тоже полно поехавших, да и не только. Грубо говоря, можешь считать, что этому подвержен любой, кто прошёл через эсэшэйный университет. Насколько я слышал, у них там IDP преподаётся примерно как научный коммунизм в союзе.
                          Ответить
                          • https://youtu.be/IvZW6UUp1Qg

                            В этом крайне скучном и неинтересном интервью какому-то двачеру один трап рассказывает как учит другого трапа программировать на «Python». Не помню, правда, на каком моменте, целиком я посмотреть неосилил.
                            Ответить
                      • я поехавших на этом деле видел только интернетиках, и в жизни с ними не пересекался.
                        Ответить
                        • ну это потому что у вас сексистская компания, куда лучшеидеальный пол не берут, да?

                          их действительно намного больше среди гуманитариев, но и в технической среде эти ёбаные аутистки встречаются

                          впрочем, ебанутость баб мужиков лучше не делает)
                          Ответить
                          • у нас процентов тридцать тян на работе. В моем проекте в какой-то момент вообше тян больше было даже, и кажется, что название переменных ех е ебло
                            Ответить
                            • Сколько % у вас тян разработчиц/аналитикинь? Бухгалтера и кадровики не в счёт.
                              Ответить
                                • я ему давно предлагал, кстати) но сейчас у нас карантин, и все тяны дома сидят
                                  Ответить
                              • Довольно много. Среди суппортерш и QA вообще тян даже больше, среди программеров меньше конечно, но тоже хватает
                                Ответить
            • а нехуй было эксплуатировать черных рабов, теперь страдай, плати и кайся
              Ответить
    • Поэтому я за хостинг всего и вся прямо на своём компьютере с выделенным IP-адресом.
      Ответить
    • Какой смысл удалять подобные программы? Ведь они делают почти то же самое, что стандартный плеер: стандартный плеер технически тоже скачивает видеоролик (правда, во временный кэш, а не в постоянное хранилище). То, что не может скачать стандартный плеер, эта качалка не скачает.

      Чьи права эта качалка нарушила?
      Ответить
      • Licence to YouTube

        By providing Content to the Service, you grant to YouTube a worldwide, non-exclusive, royalty-free, transferable, sublicensable licence to use that Content (including to reproduce, distribute, modify, display and perform it) for the purpose of operating, promoting, and improving the Service.

        https://www.youtube.com/static?template=terms#801e716f67

        Васяну с тулзой никто ничего не granted
        Ответить
      • Где-то я читал про распространение порнографии в Белорусии, там тоже поднимался этот вопрос. Кажется, в той статье пришли к выводу, что такое вот кратковременное скачивание в память с последующим удалением не считается «хранением», а вот скачивание на диск – уже нельзя...

        А ещё в самой статье на Хабре, а точнее в комментах, писали, что копирасты разрешают некоторые видео бесплатно крутить только на ютюбе. А в той программе где-то в документации были примеры со скачиванием таких вот видосов, поэтому копирасты и разошлись.
        Ответить
  • >>>
    Бэрри Янг, который уже давно занимается изучением CRT-дисплеев и является CEO в OLED Association,
    называет это «таинством люминофора». «Люминофор, когда на него попадает электрон, мгновенно
    испускает фотон», — говорит Бэрри Янг.

    «Хабр» держит марку.
    Ответить
    • «A peculiar difference I have noted on gcc 5.2.1 and clang 3.6.2 is that if you have a critical loop like:

      for (;;) {
          if (!visited) {
              ....
          }
          node++;
          if (!*node) break;
        }


      Then gcc will, when compiling with -O3 or -O2, speculatively unroll the loop eight times. Clang will not unroll it at all. Through trial and error I found that in my specific case with my program data, the right amount of unrolling is five so gcc overshot and clang undershot. However, overshooting was more detrimental to performance, so gcc performed much worse here... A while back I wrote a few garbage collectors to teach myself more about performance optimization in C. And the results I got is in my mind enough to slightly favor clang. Especially since garbage collection is mostly about pointer chasing and copying memory».

      Именно поэтому я за «gcc».
      Ответить
      • Перебор... Умца-умца.
        Недобор... Умца-умца.

        а ты всегда за плохое, да?
        Ответить
        • Не всегда. Например, я не за «PHP».

          «The GCC compilation process is as follows: read the source file, preprocess the source file, convert it into an IR, optimize and generate an assembly file. Then the assembler generates an object file. Clang and LLVM do not rely on independent compilers, but integrate self-implemented compilers at the backend. The process of generating assembly files is omitted in the process of generating object files. The object file is generated directly from the IR. Besides, compared with the GCC IR, the data structure of LLVM IR is more concise. It occupies less memory during compilation and supports faster traversal. Therefore, Clang and LLVM are advantageous in terms of the compilation time, which is proven by the data obtained from SPEC compilation, as shown in the figure below. Clang reduces the single-thread compilation time by 5% to 10% compared with GCC»

          Надо бы попробовать этот ваш «clang», уж больно он хорош!

          «From the benchmarking tests above, we can see that Clang offers more advantages for the construction of large projects while GCC is always advantageous in performance optimization. The bla depends on your specific application»

          Я так и знал, что не зря им пользуюсь. Все мои программы – высокопроизводительные.
          Ответить
          • ну это поняно, за пхп у нас только ротоёбы

            то есть асм ллвм не генерит?

            Яблоко как-то писало, что в llvmный код им проще вставлять всякие ARCи, так что переход на шланг с гцц все упростил.

            Кроме того, шланг не гнутый, и потом он используется повсеместно в бзд
            Ответить
            • Я вот отсюда беру нахрюки пока что:

              https://alibabatech.medium.com/gcc-vs-clang-llvm-an-in-depth-comparison-of-c-c-compilers-899ede2be378

              Т.к. нет оснований не доверять экспертному мнению Ma Jun马骏.

              Насколько я понял, LLVM генерит свой собственный «высокоуровневый ассемблер», который потом можно перепитушить под целевую архитектуру.
              Ответить
              • Какая сложная и интересная перепитушня!

                Получается, что шланг транслирует код на «сях» и «сях с классами» в байт-код LLVM, а LLVM уже этот байт код превращает в машинные коды для нужной архитектуры.

                Ладно, убедил, теперь я за «Clang».
                Ответить
                • ну да, ты компилируешь сначала в язык под llvm, а потом его уже в нужный тебе код под ISA кококнкретного цпу

                  Это позволяет делать лулзы: например, написать бекенд -- генератор джаваскрипта из llvm, и компилировать си в JS.

                  А еще у шланга есть всякие тулы для форматрирования и для статического анализа

                  Даже РеШарпер их использует!
                  Ответить
                  • Мне ещё очень нравится, что разработчикам кококомпилятора можно писать только «фронтенд» штуку, которая переводит код в LLVM код, а дальше LLVM сам разберётся. Теперь не придется охуевать, что Васян написал очень крутой компилятор для С++, а поддержку чего-либо кроме винды не завёз.

                    Правда я вот посидел, почитал, а инфы по clang'у почти нет, чувствую себя сьомой.

                    Вот с MinGW (портом gcc под винду) я легко и просто разобрался, теперь компилирую им всё и теку. А с «clang» придётся разбираться, как его прикрутить к IDE... Наверное, ещё и ебля начнется с библиотеками.
                    Ответить
                    • >> Теперь не придется охуевать, что Васян написал очень крутой компилятор для С++, а поддержку чего-либо кроме винды не завёз.

                      Бэкенд — это скорее поддержка процессора, а не ОС. Для поддержки конкретной ОС нужно писать библиотеку и изобретать линкер, который поддерживает конкретный формат экзешника. Хотя кодогенерация иногда может зависеть от ОС. Например, нужно выбирать «call convention», чтобы вызывать функции ОС и внешних библиотек напрямую без низкоуровневых переходников в стандартной библиотеке.

                      И всё-таки, если Васян — плохой парень, то он может написать плохой фронтенд, намертво прибитый к Винде. Например, оператор new у него напрямую вызывает VirtualAlloc. Т. е. для портируемости от Васяна требуется, чтобы он ничего не вызывал напрямую, всё делал только через библиотеку.
                      Ответить
                  • нет конечно, ни разу не похож
                    Ответить
  • https://vk.com/wall509349497_5 людей прочитавших МОГУТ
    БЫТЬ ПЕРЕРАБОТАНЫ В ПОСЛЕДСТВИИ крёпленному электромотору

    РАДИУС СЕЛА* господи благослови

    *файл, кстати, презабавный: там явно выборочно меняли кодировку, впрочем, смотреть что там в оригинале я не стал
    Ответить
    • Ооо, моё любимое!

      https://vk.com/wall563335119_171

      «Валера Кипелов, не забывай, массоны приняли решение, что ни тебе ни мне нельзя заниматься сексом на территории РФ, стран СНГ и в других странах (массоны нас убьют), секс как у тебя так и у меня и у нас с тобой может быть только в США в том городе где живет Рушель Блаво (там массонские частоты не проникают)».

      Только у меня шиза менее ворецная попалась.
      Ответить
  • Как «Первый Канал» узнаёт сколько человек посмотрели программу «Время» в 21:00?
    Ответить
      • Угу, и экстраполируют на всё население. Так что результат может оказаться пиздежом.

        Не существует надёжного способа узнать, сколько человек посмотрели широковещательный канал. Эфирное и кабельное телевидение формата DVB не имеет обратного потока данных.

        Надёжно узнать можно только, сколько человек посмотрели «Ютуб», потому что там каждый зритель отправляет запрос на сервер.
        Ответить
        • У первого канала есть прилажуха под смарттв, кстати. В DVB у тебя SD, а там HD

          >не имеет обратного потока данных.
          "Я тебе попереключаю" (с)
          Ответить
          • А, ну да, посмотревших через приложение можно посчитать и внести в вотчлист.

            Они HD на DVB не включают, чтобы как можно больше зрителей посадить на приложение с анальным зондом?
            Ответить
            • так понимаю, что формат одинаковый для всех каналов в двух государственных мультиплексах, и оборудование может другое не уметь, но это не точно

              Кстати, на одной квартире видел кабель от ростелекома вместо верхней антенны, и он стримает аналог до сих пор, а рядом DVB-C. Представляешь, как отсосали те, кто купил язик с DVB-T2, типа "на сайте же написано"

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