- 1
- 2
- 3
- 4
- 5
_RE_DESCRIPTION_TAG_OPEN = re.compile(r'<p\s+class="description">'.encode('utf-8'))
_RE_DESCRIPTION_TAG_CLOSE = re.compile(r'</p>\s*<p\s+class="author">'.encode('utf-8'))
def replace_description_tag(content, new_tag):
content = _RE_DESCRIPTION_TAG_OPEN .sub(f'<{new_tag} class="description">'.encode('utf-8'), content)
return _RE_DESCRIPTION_TAG_CLOSE.sub(f'</{new_tag}><p class="author">'.encode('utf-8'), content)
Парсить HTML регулярками — нельзя. Но если HTML невалидный — то можно!
А дело в том, что ГК генерирует говно, которое пришлось фиксить таким вот диким образом, см. https://govnokod.ru/26373#comment522056.
gost 21.01.2020 18:30 # 0
3.14159265 21.01.2020 18:39 # +2
Любой формат с тегами используют только идиоты.
HTML имеет смысл только для страницы браузера, читаемой человеком.
Очевидно, что всё остальное - ненужно.
На базе этого говна ты ничего нормального не сделаешь.
Любой теговый формат - мусор.
Любая обработка тегов - мусор.
Любые данные в теговом виде - мусор.
Her 21.01.2020 19:00 # −1
gost 21.01.2020 19:13 # +1
HoBorogHuu_nemyx 21.01.2020 19:17 # 0
gost 21.01.2020 19:21 # +2
Stallman 21.01.2020 19:50 # +3
Ровно с тех пор, как разработчики браузеров осознали, что переучивать веб-макак (а среди них программистов практически не было) писать валидное говно - себе дороже. Проще напидорасить костылей. Тут забыли закрыть тег? Похуй, где-нибудь сами закроем. Незаэскейпленный амперсанд в урле? Сами заэскейпим. Макака не знает про doctype? Ну и хуй с ним, нам тоже не особо-то и нужен. Невалидный CSS? Проигнорим, и без него что-то отображается. Макака передала не все аргументы в JS-функцию? Ну пусть будет undefined, вдруг прокатит.
Так и живем, и теперь это хуйня пиздит уже самих веб-макак -- надо теперь зубрить, в каком браузере что и как закостылено, и отлавливать примитивные баги всю ночь, оставаясь в офисе на неоплачиваемый овертайм.
AnalBoy 21.01.2020 20:04 # 0
https://www.setwalls.ru/pic/201304/2560x1440/setwalls.ru-19347.jpg
HoBorogHuu_nemyx 21.01.2020 20:09 # 0
Desktop 21.01.2020 20:12 # +1
gost 21.01.2020 20:31 # +1
Desktop 21.01.2020 20:40 # 0
Может, проблема в том, что веб стал решать совсем не те проблемы, для которых изначально создавался? Что HTML, CSS и тем более JS это в принципе не лучшие инструменты для SPA с кучей медиа и канвасами?
guest8 21.01.2020 20:57 # −999
Desktop 21.01.2020 21:00 # 0
3.14159265 21.01.2020 21:35 # +2
Они начинаются с тегов <script> <link> <iframe>
Desktop 21.01.2020 21:39 # 0
3.14159265 21.01.2020 21:41 # +1
<img src="javascript:scriptushok.koko()">
Desktop 21.01.2020 21:43 # 0
3.14159265 21.01.2020 21:46 # +2
Но с появления вёба, таких трюков придумали миллионы.
И каждый раз в браузеры впиливают всё новые костыли, проверки и говнотехнологии типа corsов, js-only кукисов, SameSite.
gost 21.01.2020 21:48 # +3
Desktop 21.01.2020 21:51 # 0
говно. ЧТД
3.14159265 21.01.2020 21:53 # 0
HTML говно выглядит как говно, и работает как говно.
Поскольку является ёбанным, неортогональным, избыточным, оверхедным, ансекьюрным говном.
Desktop 21.01.2020 22:05 # +2
То есть оригинальный HTML это что-то типа сегодняшнего мракдауна (ну ок, чуть сложнее, но не суть). Достаточно простая штука для элементарных вещей. Ну как заметку добавить. А потом кто-то решил, что ПОРА: вебдваноль, виджеты-хуиджеты, спа, анимации и фейерверки, резиновый дизайн, мобильные версии, вебсокеты.
Представим себе, что браузеры начали нативно поддерживать маркдаун. И уже через полгода в нём: img, svg, call, angularMd, MarkDart...
3.14159265 21.01.2020 21:56 # +3
gostinho 21.01.2020 21:58 # 0
3.14159265 21.01.2020 22:01 # 0
gost 21.01.2020 22:13 # 0
HoBorogHuu_nemyx 21.01.2020 22:13 # 0
AnalBoy 21.01.2020 22:46 # −1
Desktop 21.01.2020 21:46 # 0
gost 21.01.2020 22:03 # 0
Desktop 21.01.2020 22:20 # 0
И вообще, макаке всё равно на каком языке говнометать, на простом для обучения или на сложном. А вот царю нужна простота и эффективность и массив
1024-- 21.01.2020 21:29 # 0
> неосуществимо
Осуществимо, просто нужно идти не от требований макак, а от требований людей и далее упрощать интерфейс между человеком и машиной, делать его удобней. А также набираться духу и вовремя сливать старые версии в унитаз и создавать язык с нуля, оставляя интерпретатор старой версии в браузере только с правками безопасности.
Например, foreach делает работу удобной, UB - неудобной и непредсказуемой, автокасты - удобной до какой-то степени, исключения - удобной и непредсказуемой и т.п.
3.14159265 21.01.2020 21:33 # 0
Python 3.
Не взлетит.
1024-- 21.01.2020 21:58 # 0
Компилим всё под ВМ, а там уже оптимизации и жиды.
3.14159265 21.01.2020 22:10 # 0
Ну вот Жабу уже стандартизировали.
Почему-то jvm-ололоязычки не особо взлетели.
Самый жопулярным жвм-языком остаётся эта самая жаба.
>оставляя интерпретатор старой версии в браузере только с правками безопасности
И что это даст? Мало того что в старых браузерах не работает новая хипстерская срань, так ещё и новые будут пухнуть от кучи разных интепретаторов старья.
Desktop 21.01.2020 22:25 # +1
Тот же Котлин занял свою нишу и в ней потихоньку становится стандартом. С Жабой в целом сравнивать смешно, но - повторюсь - ниша застолблена.
Кроме jvm есть ещё пример llvm. Вопрос же в целесообразности и политической воле. Почему нельзя встроить в браузеры интерпретатор байткода llvm или что там у него?
3.14159265 21.01.2020 22:30 # 0
Кресты, Кресты, Кресты.
Написан крестовиками на крестах, как бекэнд для clang (компилятор крестов).
>Почему нельзя встроить в браузеры интерпретатор байткода llvm или что там у него?
Царь недавно всё объяснил.
https://tsar1997.blogspot.com/2019/10/wasm.html
Desktop 21.01.2020 22:34 # 0
Так царь типа за wasm?
1024-- 21.01.2020 22:44 # +1
Как раньше не работала - так и потом не работает. Сейчас ровно то же самое. Даже страница Гугла (одно сраное поле ввода) уже скорее всего в IE5 нормально не откроется.
> новые будут пухнуть от кучи разных интепретаторов старья
Сейчас они всё равно пухнут от интерпретаторов новья и реализации хаков для использования хаков в стандарте для борьбы с предыдущими хаками для предыдущих хаков в стандарте. Что проще, реализовать новый продуманный язык без говна, или впиливать питушню для поддержки "use script", править код в неожиданных местах, который уже никто не помнит, что делает, вставлять затычки для новых багов?
3.14159265 21.01.2020 22:51 # 0
Хаха. Да в мире кодинга, пожалуй нету задачи сложнее, чем реализовать такой язык «без говна».
https://xkcd.com/927
3.14159265 21.01.2020 22:15 # 0
Опять же не понят мой исходный коммент.
Не передать сколько боли было в питух сообществе при портировании сырцов с 2ки на 3ку.
1024-- 21.01.2020 22:38 # 0
Иначе можно было оставить старые классы на 2, а новые писать на 3. Вот NodeJS поддерживает и свои модули CommonJS, и модули новомодных версий JS, можно элементарным образом в одном сервере использовать сразу и старое говно, и новое говно.
Есть же питухизация типов, чтобы JS поднять в TypeScript без переписывания? Есть же сишные библиотеки, которые работают в питоне без переписывания алгоритма? Так почему с C на Python переписывать не надо было, а с Python на Python - надо?
gost 21.01.2020 22:51 # 0
1024-- 21.01.2020 22:58 # 0
Ну вот работает же оно как-то вместе. У меня под Windows с интелловским процессором можно запускать как Python2, так и Python3. Работают на одном и том же железе.
И вообще, я же писал про C. Почему модули на C, языке без ГЦ, обязательных табов и с указателями вместо ссылок, смогли прокинуть в python? Почему в C++, где имена функций компилятся в совершенно другие иероглифы, чем было бы в C, в стандарте описывается несовместимая питушня, и где было норм, стало УБ, смогли прокинуть сишную питушню?
gost 21.01.2020 23:58 # +2
Это потому, что и «Python2», и «Python3» — это программы, написанные на «C» и переведённые на мышиные коды одного и того же ISA.
> Почему модули на C смогли прокинуть в python?
Аналогично, потому что интерпретатор «Python», сконпелированный в мышиные коды, позволяет дёргать другие мышиные коды.
Да, идея создания единой ВМ с едиными инструкциями и полной совместимостью всех со всеми а-ля asm выглядит круто, но у этого подхода есть несколько крупных подводных камней.
1. Неизменность ВМ. Мы не можем вносить изменения в то, как работают уже задокументированные инструкции — иначе сломается вообще всё. Да, перекомпиляция может быть частичным выходом — но, будь у нас полный и тотальный опенсорс, жить вообще было бы легче.
2. Несовместимость высокоуровневых абстракций. Любые структуры данных и уникальные концепции языка придётся переводить сначала в термины ВМ, а потом — обратно, причём делать это по каким-то сложным правилам. Эти правила тоже могут (а на длительном отрезке времени — будут) меняться, и в результате мы получим, что в одной версии языка какая-нибудь UTF-строка будет с квадратиками, а в другой — со смайликами. Всё, потеря совместимости, цирк, пиздец.
3. Сложность межязыковых и межверсионных вызовов. Далеко ходить не надо, достаточно попробовать сделать библиотеку с функцией, возвращающей std::string. Спойлер: работать будет только с модулями, скомпилированными одной и той же версией компилятора, на одной и той же машине и с одними и теми же флагами. И то не факт. С сишкой всё было куда проще, потому что по факту в ней не нет никаких высокоуровневых абстракций, а всё что есть — плюс-минус идеально ложится на x86. Она, по сути, просто удобный ассемблер с хорошим препроцессором
gost 21.01.2020 23:59 # 0
3.14159265 22.01.2020 00:34 # 0
Питон сочетает лучшее из двух миров: портабельность сишки и скорость интерпретируемой скриптухи.
1024-- 21.01.2020 23:04 # 0
Поломаются только компиляторы старых версий языка, и их заставят компилировать код под новую ВМ. Может быть, это будет медленней, но это не важно, т.к. рост производительности восполнит эту потерю, а свежее производительное говно будут клепать под новые версии. Но ничего из пользовательского кода переписывать не надо будет.
Совсем старые версии будут медленно отмирать как отмерла сейчас 16битная питушня. Но это будет всё равно лучше, чем сейчас, когда твой код не отмирает явно и сразу по чьему-то приказу о конце поддержки, а постепенно становится невалидным из-за множества мелких изменений.
gost 22.01.2020 00:05 # +2
3.14159265 22.01.2020 00:49 # +2
Почему?
Для связки языков нужны некие интерфейсы.
Вызовы старых кодов js (как стандарта де-факто) будут возвращать «новым» «улучшеным» версиям языка jsные объекты. Потому что ничего другого там нет.
А это старые-добрые костыльные мапы с valueOf и toString.
То есть из «нового» языка всегда будут торчать уши старого.
Потому сишка до сих пор — основа. Минималистичная и божественная.
3.14159265 22.01.2020 01:09 # +1
Если baseline язык использует исключения, придётся везде иметь исключения (-fno-exceptions никто не будет пилить).
Если там есть рефлексия или рантайм инфа по типам, то и её нужно везде поддерживать.
Если есть именованные аргументы — без них ABI опять поломаются.
gost 22.01.2020 01:56 # +1
Добавлю ещё всякой ООП-питушни.
Множественное наследование, наследование реализации, интерфейсы, миксины;
Поддержка свободных функций. В «Java», например, нет никаких «функций» (только «методы»), и именно поэтому в «JVM» у инструкций invoke* есть обязательный параметр объекта/класса. Хочешь компилить под «JVM» язык со свободными функциями — изволь городить ёбанные костыли со скрытыми классами-пространствами имён.
Модификаторы доступа — начиная тем, что в каких-то языках могут быть более хитрые модификаторы, типа недавно обсуждавшегося на «ГК» «strict_private» (поля, к которым есть доступ только из «private» методов), и заканчивая языками с полным их отсутствием.
В общем, так можно продолжать до бесконечности, а решение всех этих проблем было придумано давным-давно: спуститься на несколько уровней ниже, где ничего, кроме байтов, и нет. А над всеми этими питушарскими абстракциями пусть конпеляторы пыхтят.
Ах да, и чтоб гомоиконы!
3.14159265 22.01.2020 02:11 # 0
Что это такое?
В каждом треде какой-то ФП-мемчик, который я пропустил.
Сепульки какие-то нетрадиционной ориентации?
cocunamp 22.01.2020 02:21 # 0
gost 22.01.2020 02:51 # +7
А вот — главный артефакт гомоиконистов, Первая Гомоикона:
3.14159265 22.01.2020 03:01 # +1
ЛООООЛ. Вот теперь всё стало ясно.
Картинка вместо тысячи слов.
>Это Философский Камень и Великая Мечта j123123
Н-н-н-нооо тут есть логическое противоречие.
В сиподобных языках, реализация гомоиконности мне кажется принципиально невозможной. Это как постройка вечного двигателя.
Именно в силу царской императивности и нерегулярности синтаксиса.
gost 22.01.2020 03:07 # +1
Скорее как поиск девяти миллиардов имён Бога. Стремление к Абсолюту, к Вечности.
https://ru.wikipedia.org/wiki/Девять_миллиардов_имён_Бога
3.14159265 22.01.2020 03:19 # +1
У Аллаха, мир Ему, C99 имён.
>Стремление к Абсолюту, к Вечности.
Так это и есть С++. Должен быть миллион парадигм. Одновременно ноль, одна, сто, девять миллиардов и бесконечность.
Это помогает понять суть и даёт умение облекать её в произвольные формы.
Разные парадигмы, в которых можно сказать одно и том же.
С++ учит мыслить шире и не привязываться к синтаксической конкретике, помогает уйти от операторов к голым идеям и архетипам.
Как учил Платон, который доработал сишный идеализм Сократа, в объективный идеализм.
А заедушники увязли в балаболии, так и не научившись абстрагировать идею от формы.
https://ru.wikipedia.org/wiki/99_имён_Аллаха
Koko 22.01.2020 04:58 # 0
Так а в чём проблем? Дать доступ пргорамме к своему АСТ.
Или можно сделать как в форте, дать программе доступ к исходнику, переменным и подпрограммам транслятора и конпелятора, дать доступ к мискоуровневому коду.
3.14159265 22.01.2020 13:11 # 0
Наипервейшая проблема в том что нотация инфиксная. То есть код невозможно выразить как формат данных.
Это не лисп где нотация префиксная, и не форт, где она постфиксная.
>Дать доступ пргорамме к своему АСТ.
Это не будет гомоиконность. Мы должны манипулировать не АСТ, а исходными кодом-данными. Должен быть так сказать self-eval.
Koko 23.01.2020 06:33 # 0
А если делать гомоиконы по образу форта, то уже будет реальный доступ и к исходному, и к скомпилированному коду, ибо гомоиконы там царские, императивные и низкоуровневые: в нём есть доступ к сырому исходнику, как к байтам в памяти, такой же доступ к скомпилированному коду, к записям в словаре и т.д. Вдобавок форт могут парсить сами же фортовские определения по мере исполнения, т.е. в форте нотация постфиксная только для начального набора слов, и то не для всех, многие слова являются префиксными, особенно определяющие слова, так же есть слова берущие аргументы сразу и из стека, и из исходного кода — эти слова вполне можно считать инфиксными. Т.е. в отличии от лиспа и всех прочих языков в форте нет ни какого-то фиксированного синтаксиса, ни даже фиксированного лексического строения, в программе на форте можно встретить абсолютно любую конструкцию и охуеть, я даже встречал интерпретатор васика на форте, который являлся просто набором форт-слов, такую же питушню можно проделать и для си-подобного синиаксиса.
guest8 23.01.2020 07:12 # −999
Koko 23.01.2020 07:41 # 0
3.14159265 22.01.2020 03:08 # 0
>Гомоиконных фортраноподобных языков не может быть по определению (т.как в доисторические времена, люди которые планировали Алгол считали, что язык должен состоять из трех уровней, "машинного кода", т.е. непосредственно набора инструкций, "обобщенного представления", т.е. непосредственно правил языка, "конкретных интерпретаций" правил языка, например, локализаций, экстрапозиций и т.д.)
Реально за все эти годы я осознал, что Философский Камень всегда был у нас в кармане — и это С++
gost 22.01.2020 03:09 # 0
3.14159265 22.01.2020 02:28 # 0
Лисп-машины остались лишь фантазиями wvxvw. Может какая-то извращённая форма AOT. Однако неизбежно остаётся интерпретируемый eval.
Если под гомоиконностью понимается простота, что я могу за день написать парсер и тормозной, но рабочий интерпретатор байт-кода вм (в отличие от жабы или питона), то это ок.
Но опять же... Слишком широкое понятие.
1024-- 22.01.2020 19:44 # 0
Думаю, обратно тоже можно прокинуть, если нужно.
А уж сделать такое, когда вся логика компиляторов подчиняется тебе, вполне реально.
* Исключения - обернуть try-catch и кодом возврата,
* кодам возврата сгенерировать исключения,
* имена классов вписать в имена методов, если классы были, не не стало,
* сгенерировать класс по имени файла, если классов не было, но появились,
Главное - чтобы старый код внешне работал как раньше, а новый уже может в случае смены парадигмы приспосабливаться и вызывать fileX_Pitux22E1_kokok(&p) из старой библиотеки вместо p.kokok();
3.14159265 22.01.2020 19:47 # 0
Да нихера не удалось. Точнее удалось вызвать менее мудрённый язык из более мудрённого.
Но для этого не надо много ума.
Питух вызывает Сишку, но не наоборот.
Сишка — основа.
Питух не может быть основой, ибо это анскильная скриптуха.
В противном случае питух3 пилился бы на основе питуха2.
3.14159265 22.01.2020 00:46 # +1
Не хотелось разрушать ваши фантазии, но дело в том что совершенно разные языки не смогут гладко взаимодействовать между собой.
Это профанский взгляд человека, который никогда не линковал/перелинковывал разные abi с разными вызовами.
У нас есть бибилотека собранная под процессор интел. Она написана на языке с определённой фичей (например exceptions).
Мы пытаемся слиниковать её с другим языком где этой фичи нет.
Какой выход из ситуации?
Или у нас есть исключения, но на уровне VM реализованы они с разной семантикой (dwarf, sjlj).
1024-- 22.01.2020 19:49 # 0
Гладкое взаимодействие не нужно. Старый код должен работать как раньше, новый код может использовать костыли для вызова старого.
Старый код может вызываться через дополнительные абстракции, т.к. он был написан под старые машины, которые требовали меньше.
ABI не нужно. У нас же браузер, компилятору все исходники доступны. Совместимость версий проверена авторами компилятора, код просто компилируется новым компилятором и работает.
Да, будут ситуации, когда какой-то пидор использовал недокументированную питушню, и его код сломался, но его предупреждали.
3.14159265 22.01.2020 19:51 # 0
Эээ. Изначально речь, насколько я помню была о VM.
Там уже не будет исходников, а будет скомплированная в байт-код новомодная скриптуха. Причём совершенно произвольная.
В теории много разных скриптух, оперирующих разными парадигмами будут конпелироваться в единый байт-код.
1024-- 22.01.2020 19:58 # 0
Идея была в том, чтобы иметь возможность перегонять исходники в VM всё более и более свежими компиляторами, а байткод под VM уже единообразно оптимизировать/исполнять/кобенировать каким-нибудь мощным питуизатором. Так, чтобы компиляторы в байткод были наиболее простыми, и всякая сложная питушня, связанная со строением VM и алгоритмами питуизации, менялась редко и мало.
bormand 22.01.2020 20:34 # +2
1024-- 22.01.2020 20:38 # +1
bormand 22.01.2020 20:47 # 0
gost 22.01.2020 21:02 # +2
Говно это.
bormand 22.01.2020 21:07 # 0
3.14159265 22.01.2020 21:20 # 0
Есть такое. Но мало того.
Они же в последних версиях сломали компиляцию старых исходников. Write once — ебись everytime.
Если раньше был валидный ява-код, использующий например переменную-подчёркивание _
То в новых версиях явы он тупо не скомпилится.
HoBorogHuu_nemyx 22.01.2020 22:11 # +1
1024-- 23.01.2020 01:01 # 0
3.14159265 22.01.2020 20:45 # 0
3_dar 22.01.2020 20:56 # 0
Desktop 22.01.2020 20:59 # 0
3.14159265 21.01.2020 22:52 # +3
Потому что получилось говно непортабельное. Есть ВМ машина, и есть нативные костыли из сишных либ.
Реально единственная вещь где ничего не нужно было переписывать с сишки — это кресты. И то, здесь их все регулярно обсирают.
gost 21.01.2020 21:41 # 0
1024-- 21.01.2020 22:01 # 0
gost 22.01.2020 00:42 # +3
HoBorogHuu_nemyx 22.01.2020 16:16 # 0
1024-- 22.01.2020 19:35 # 0
Ну и если макака уже научилась нагугливать работающий код на SO, научилась вставлять его в нужные места, это говорит о её потенциале и способности учиться.
3.14159265 21.01.2020 21:39 # 0
Оно изначально нацеливалось на заедушников.
В самом прямом смысле этого слова.
HTML делали для биомусора, который «пишет» «сайты» за жратву.
AnalBoy 21.01.2020 19:08 # −1
1024-- 21.01.2020 20:19 # +1
Питушня теоретиков, оторванных от жизни. Уууух, как бесит!
Вариант 1. В Perl, PHP, boost::regex можно рекурсивными питухами описывать ко-ко-контекстно-свободную питушню.
https://www.boost.org/doc/libs/1_64_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html#boost_regex.syntax.perl_syntax.recursive_expressions
Вариант 2. Часто, как и в обсуждаемом коде, регулярки используются внутри кода под машину Питуринга, который уже может парсить всё, что угодно.
Вариант 3. Используется не сам HTML, а его подмножество.
Вариант 4. Парсить надо не весь HTML, а его подмножество.
Desktop 21.01.2020 20:22 # +1
HoBorogHuu_nemyx 21.01.2020 20:27 # +1
https://cs.pikabu.ru/post_img/2013/07/10/0/1373402952_1118716031.jpg
https://edge.alluremedia.com.au/m/g/2013/03/ggrave.jpg
http://www-bgr-com.vimg.net/wp-content/uploads/2011/11/7723.Google_Graveyard2.jpg-550x0.jpg
Desktop 21.01.2020 20:29 # 0
guest8 21.01.2020 20:32 # −999
Desktop 21.01.2020 20:42 # +1
guest8 21.01.2020 20:58 # −999
Desktop 21.01.2020 21:47 # 0
gost 21.01.2020 20:48 # +1
3.14159265 21.01.2020 20:51 # 0
>предельно быстрый, очень простой и совершенно не перегруженный ненужным говном
Geeqie
Xnview-mp
gost 21.01.2020 21:13 # +1
Нет, я не спорю, что эти комбайны наверняка дают куда больше возможностей по организации галерей, систематизации гигабайт фотографий и тому подобное — но вот этого предельного функционального минимализма, который был (увы, в прошедшем времени) визитной карточкой «Гугла», у них нет.
1024-- 21.01.2020 21:38 # 0
Мерзкая питушня. Привязывать что-то такое к колёсику - грешновато. В самой Windows есть настройка, сколько у.е. значит один щелчок колеса. Но есть ведь ещё и тачпады, где собственное ПО может оверрайдить эту настройку и накручивать какую-то логику. Но что важно, если даже на мыши можно легко прокрутить больше, чем надо, на тачпаде ты вовсе не чувствуешь, что есть один щелчок, а что - много.
Колёсико мыши - зло.
3.14159265 21.01.2020 22:26 # +1
Это настраивается.
В нём оч. удобно сразу редактировать фотки, типа обрезать JPEG без потерь.
gost 21.01.2020 22:42 # 0
Да, это я заметил, когда пытался сдвинуть фотку к краю экрана.
1024-- 21.01.2020 22:51 # 0
Это как в ворде, когда посылаешь резюме с твоим фото по грудь, а ихний админ вдруг узнаёт всех твоих друзей-бухариков и обстановку вашего гаража?
gostinho 21.01.2020 22:54 # +1
Надо будет орнуть и так сделать в следующий раз.
3.14159265 22.01.2020 00:53 # +2
Короче, не происходит Generation loss. То есть не проводится iQ+iDCT => raw => DCT+Q.
gost 22.01.2020 00:54 # 0
3.14159265 22.01.2020 00:57 # +1
2. https://jpegclub.org/losslessapps.html
3. https://www.betterjpeg.com/crop.htm
Оно также умеет делать loseless rotate 90/180/270
И resize 1 к 8.
gost 22.01.2020 01:00 # 0
Какой скилл )))
Спасибо!
HoBorogHuu_nemyx 21.01.2020 20:52 # +1
3.14159265 21.01.2020 20:52 # +1
Так же и Google+
HoBorogHuu_nemyx 21.01.2020 21:05 # +2
1024-- 21.01.2020 21:47 # 0
Когда нормальный человек регистрирует почту, он подразумевает, что с ней связаны имя-фамилия, которые будут стоять в поле From. Обычно это Иван Иванов <[email protected]> Иначе заводить почту не требуется, т.к. теряется вся суть. И если кто-то узнал, что [email protected] принадлежит Ивану Иванову, то это просто удобно, и удобно как для Ивана Иванова, так и для его адресантов.
Когда человек хочет остаться анонимным, он создаёт учётную запись почты с логином, который не напоминает о его имени и вводит фэйковые имя-фамилию. Разве не логично?
Desktop 21.01.2020 21:53 # +1
На сайтах гугла ещё почему-то иногда скидку предлагают.
gostinho 21.01.2020 22:47 # +1
HoBorogHuu_nemyx 21.01.2020 21:02 # 0
• «iGoogle» — это самый настоящий проект «веб-джва-ноль». Ты мог собирать страницу из виджетов. Что-то типа расшаренного рабочего стола. Таких проектов было немного. У «Яндекса» и у «Яху» было что-то аналогичное, были отдельные проекты «Pageflakes» и «Netvibes». Последний вроде даже живой.
Всё прочее, что называют «вебджванольным», на самом деле не передаёт суть «Web 2.0».
• «KNOL» — было столько шума. Называли убийцей «Википедии».
• «Google Buzz» — предок «Твиттера» и «Гуглоплюса». Его создатели потом создали «Friendfeed», который был выкуплен и закрыт «Фейсбуком».
• «Jaiku» — ещё один «Твиттур».
• «Google Answers» — «Ответы@Mail.ru», только другого поставщика.
• «Google Talk» — по сути сервер «XMPP» («Jabber»).
Помню, что много шума было про «Google Wave», но его закрыли сразу после бета-тестирования, так что я даже не успел узнать, что это такое.
3.14159265 21.01.2020 21:06 # +1
>я даже не успел узнать, что это такое
Что-то похожее на гуглдок, с совместным редактированием.
HoBorogHuu_nemyx 21.01.2020 21:07 # 0
3.14159265 21.01.2020 21:09 # +1
Оно ж появилось раньше гитхаба. И было гораздо удобнее svn-sourceforge.
Ещё у них была воистину охуенная задумка, сделать поиск по соц. сетям типа Яндекс.Блогов. Google Blog Search. Но её закрыли.
Теперь даже в гугловом ютубе хер найдёшь нужный коммент.
1024-- 21.01.2020 21:52 # +3
Слава богам! Там обычно пишут такое, что не то что найти не хочется, но наоборот - только развидеть и больше никогда не встречать.
Такое ощущение, что аудитория Ютуба по большей части - идиоты. И тут даже не надо говорить о "давайте зарядем мобильник автора адин лайк адин працент". Даже к приличным видео популярны метакомментарии "а что просмотров меньше, чем лайков" или "90% комментариев про А, 10% про Б" или "никто: абсолютно никто: автор: <какая-то херня>" и подобное. И все они повторяются. Отдельный шик - повторять одну и ту же быдлошутку по быдломему.
gost 21.01.2020 22:04 # 0
3.14159265 21.01.2020 22:23 # 0
Потому поиск по комментам ГК «нинужен»
1024-- 21.01.2020 22:52 # 0
Desktop 22.01.2020 00:17 # +1
Плюс там у них дебильный по своей природе принцип по умолчанию показывать первыми самые залайканные комментарии.
3.14159265 21.01.2020 22:18 # 0
Компания, имя которой мутировало в глагол, обозначающий интернет-поиск, не может сделать нормальную индексацию текстовых комментариев НА СВОЁМ же сайте.
Мне одному кажется, что здесь какой-то подвох?
>что не то что найти не хочется, но наоборот - только развидеть и больше никогда не встречать
Просто не надо искать такое.
>или "никто: абсолютно никто: автор: <какая-то херня>" и подобное
Меньше надо смотреть видео «в трендах».
Не знаю, но лично мне такие коменты почти не попадаются.
HoBorogHuu_nemyx 22.01.2020 05:07 # 0
HoBorogHuu_nemyx 21.01.2020 22:18 # +1
А когда-то было ещё несколько автономных поисковых систем по блогам и по форумам, но их тоже закрыли.
3.14159265 21.01.2020 22:22 # 0
Да. После того как Волож умер они скурвились.
Раньше Яндекс помнил по 10 лет, всё. Даже удаленные посты и записи.
А теперь остался только ljsear.ch
gostinho 21.01.2020 22:28 # +2
3.14159265 21.01.2020 22:33 # 0
3.14159265 21.01.2020 21:18 # +1
Desktop 21.01.2020 21:08 # 0
3.14159265 21.01.2020 21:14 # 0
iGoogle стилизация странички поиска.
gost 21.01.2020 21:17 # 0
3.14159265 21.01.2020 21:19 # +2
Зачем они берут труд миллионов людей, а потом просто всё закрывают?
Неужели у гугла места мало? Я уверен что они всю поступившую к ним инфу сохраняют и не стирают ничего вообще.
Desktop 21.01.2020 21:37 # 0
- 90% индустрии так работают. Дурные деньги, сэр.
HoBorogHuu_nemyx 21.01.2020 22:20 # 0
guest8 21.01.2020 20:33 # −999
1024-- 21.01.2020 22:04 # 0
Например, x = /<b>(.*?)<\/b>/ легче понять, чем раздутую грамматику XML или даже возню с нодами после парсинга стандартным парсером.
gost 21.01.2020 22:11 # 0
Регулярка для этого будет выглядеть пиздецом и, наверняка, тормозить.
gost 21.01.2020 20:43 # 0
guest8 21.01.2020 20:34 # −999
gost 21.01.2020 21:03 # +1
А я при чём? Это к разработчикам «f-строк». А r да, надо на rb заменить.
> lxml пробовал?
>>> Я даже больше скажу: сейчас содержимое [code] — тег <pre> — в постах вываливается внутрь описания, которое из себя представляет элемент <p>. А внутри <p> использовать блочные теги нельзя. Такой HTML — невалидный. Умный же браузер (и столь же, мать его, умный lxml.etree.HTMLParser) просто тихо закрывает тег <p> перед <pre> — поэтому в сток и попадал только текст.
guest8 21.01.2020 21:10 # −999
gost 21.01.2020 21:24 # 0
> Я там вроде написал
Не нашёл, проверь.
> тестовыми данными
HTML-код https://govnokod.ru/26373.
> рабочий проблемный кусок
«parse_post» в NGK до последнего коммита. Ну или можешь открыть https://govnokod.ru/26373 в браузере и в «Инспекторе элементов» полюбоваться на <p>, закрытый сразу перед <pre>. И на «<p></p>» в конце.
guest8 21.01.2020 21:26 # −999
gost 21.01.2020 21:32 # 0
Koko 22.01.2020 04:52 # 0
HoBorogHuu_nemyx 22.01.2020 05:05 # +1
pip install --upgrade %
Какой багор )))
Кстати, почему в первом сообщении об ошибке кавычки двойные, а во втором — одинарные? Почему первое с маленькой буквы, а второе — с большой? Почему двоеточие только во втором сообщении? Разные люди писа́ли обработку ошибок?
gost 22.01.2020 05:36 # 0
Koko 22.01.2020 05:51 # +3
ARB — наименьшая строка произвольных символов
*TAG — отложенное вычисление, значение TAG получают только при обращении к TAG_CONTENT, это нужно чтоб работала рукурсия в паттерне
| — наверное и так понятно, что это "или"
SOURCE TAG — собсно сам паттерн матчинг.
Точка присваивает совпадение в переменную справа, OUTPUT — "переменная" для вывода.
gost 22.01.2020 06:29 # +3
Koko 22.01.2020 07:02 # 0
HoBorogHuu_nemyx 22.01.2020 08:04 # +1
По «СНОБОЛу» вычислять надёжнее.
gostinho 22.01.2020 11:11 # 0
HoBorogHuu_nemyx 22.01.2020 22:14 # 0
База обновляется вручную?
gostinho 22.01.2020 22:15 # 0
CTAPblu_nemyx 22.01.2020 22:22 # 0
AnalBoy 22.01.2020 23:55 # 0
Начнём с хорошей: тебе не светит угодить в суп, так что кип ю чен ап!
Новость №2: жаркое из тебя получится вкусным...
guest8 22.01.2020 12:25 # −999