Forwarded from cringepost
подарки в тг прилумали гениальные люди просто потому что возродили подарки из одноклассников,когда люди за реальные деньги покупали классы,а потом за них подарки и кидали друг другу в бутылочке и прочем бесполезном кале, НО ТЕПЕРЬ ДЛЯ ЗУМЕРОВ
👍15😁10🤡3💯2❤1
А сегодня (вчера по местному часовому поясу) моему самому любимому папищеку исполнился 21 год!
🍌16🤡6🎉3🤮3💩2😱1
Forwarded from Panic! At the 0xC0D3 (Lev)
(📽 Камера дрожит, кусты шевелятся, кто-то осторожно пробирается вперёд)
— Тсс... Смотрите, вон он. Прямо перед нами — редчайший экземпляр. Вайбкодер маниграбер, решивший... завайбкодить библиотеку для терминального UI на Rust.
— Он не использует реактивность. Вообще. Никаких состояний, никаких подписок, ничего живого. Просто... текст. Выплюнутый один раз и навсегда. Как надпись на камне.
*пример рисует кнопку "Click me" и завершает выполнение, не дождавшись действия от юзера*
— Это всё. Он считает, что UI — это просто вывод текста. Кажется, для него “интерфейс” заканчивается после println!.
*перелистывает LICENSE*
— А вот и лицензия. Своя, уникальная. Если ты начнёшь зарабатывать деньги с проектом, использующим эту библиотеку... ты должен платить ему. Серьёзно.
— Мы были здесь. Мы это видели. Никто не поверит.
this post was generated with chatgpt due to it being fucking hilarious
— Тсс... Смотрите, вон он. Прямо перед нами — редчайший экземпляр. Вайбкодер маниграбер, решивший... завайбкодить библиотеку для терминального UI на Rust.
— Он не использует реактивность. Вообще. Никаких состояний, никаких подписок, ничего живого. Просто... текст. Выплюнутый один раз и навсегда. Как надпись на камне.
*пример рисует кнопку "Click me" и завершает выполнение, не дождавшись действия от юзера*
— Это всё. Он считает, что UI — это просто вывод текста. Кажется, для него “интерфейс” заканчивается после println!.
*перелистывает LICENSE*
— А вот и лицензия. Своя, уникальная. Если ты начнёшь зарабатывать деньги с проектом, использующим эту библиотеку... ты должен платить ему. Серьёзно.
— Мы были здесь. Мы это видели. Никто не поверит.
this post was generated with chatgpt due to it being fucking hilarious
GitHub
GitHub - entrepeneur4lyf/reactive-tui: CSS-styled Terminal User Interface framework with native Node.js/Bun bindings via NAPI-RS
CSS-styled Terminal User Interface framework with native Node.js/Bun bindings via NAPI-RS - entrepeneur4lyf/reactive-tui
🤡10😁3🎉1
Forwarded from Kedr to Earth | Земля, я Кедр (✅ Yuri Ammosov)
Интересный лайфхак. В MacOS при первом старте идет запуск экранов онбординга - языковые настройки, создание юзера и подключение в Apple ID. И только после этого можно попасть на рабочий стол. На ноутбуках это все протекает как само собой разумеющееся.
А вот в Mac Mini хитрая система предполагает, что у юзера есть Magic Mouse и Magic Keyboard (в таком порядке). Ютуб и Реддит с 2020 года примерно усеян видео, как выходить из положения, если вы вместо этих эргономических уродств нормальные устройства хотите использовать (особенно не дружит с Apple почему-то Logitech). В итоге общими усилиями выяснили: надо в момент старта держать BT-мышь в режиме пейринга, и она (почти всегда) подцепится. А с клавиатурой, если она не подцепится на следующем шагу, надо так: выбрать внизу экрана иконку человечка - откроются настройки "доступа для инвалидов". "Опорно-двигательный" (Motor Disability) откроет экранную клавиатуру, и вуаля, дело в шляпе.
В Apple к 2024 году эти инструкции прочли. Подумали. И что думаете, починили? В своем роде, да. Убрали "disability mode" В САМЫЙ КОНЕЦ настроек. Теперь экранную клавиатуру мышью не вызовешь, и двойным или тройным кликом по кнопке запуска - тоже. Нуачо, нефиг от апселла увиливать.
Так вот, лайфхак. ПРОВОДНАЯ КЛАВИАТУРА. Только тут надо иметь в виду, что все проводные клавиатуры до сих пор USB-A (большие лопатки), а на Маках все порты стали USB-C. Поэтому для такой надобности надо сразу иметь или переходничок USB-A > USB-C, или USB-хаб со входом USB-С. Последнее намного практичнее - и не болтается, и нужен будет потом едва ли не каждый день - флешку или еще что-нибудь воткнуть.
Да и в целом, иметь дома проводную клавиатуру до сих пор практично. На те редкие случаи, когда беспроводные интерфейсы мрут.
А вот в Mac Mini хитрая система предполагает, что у юзера есть Magic Mouse и Magic Keyboard (в таком порядке). Ютуб и Реддит с 2020 года примерно усеян видео, как выходить из положения, если вы вместо этих эргономических уродств нормальные устройства хотите использовать (особенно не дружит с Apple почему-то Logitech). В итоге общими усилиями выяснили: надо в момент старта держать BT-мышь в режиме пейринга, и она (почти всегда) подцепится. А с клавиатурой, если она не подцепится на следующем шагу, надо так: выбрать внизу экрана иконку человечка - откроются настройки "доступа для инвалидов". "Опорно-двигательный" (Motor Disability) откроет экранную клавиатуру, и вуаля, дело в шляпе.
В Apple к 2024 году эти инструкции прочли. Подумали. И что думаете, починили? В своем роде, да. Убрали "disability mode" В САМЫЙ КОНЕЦ настроек. Теперь экранную клавиатуру мышью не вызовешь, и двойным или тройным кликом по кнопке запуска - тоже. Нуачо, нефиг от апселла увиливать.
Так вот, лайфхак. ПРОВОДНАЯ КЛАВИАТУРА. Только тут надо иметь в виду, что все проводные клавиатуры до сих пор USB-A (большие лопатки), а на Маках все порты стали USB-C. Поэтому для такой надобности надо сразу иметь или переходничок USB-A > USB-C, или USB-хаб со входом USB-С. Последнее намного практичнее - и не болтается, и нужен будет потом едва ли не каждый день - флешку или еще что-нибудь воткнуть.
Да и в целом, иметь дома проводную клавиатуру до сих пор практично. На те редкие случаи, когда беспроводные интерфейсы мрут.
🤮23😭10😁4
Forwarded from Технологический Болт Генона
Достижение выполнения кода при контроле над текстом комментария в Python-скрипте
https://www.opennet.ru/opennews/art.shtml?num=63669
Участники могли отправить сетевой запрос к Python-скрипту, который создавал новый Python-скрипт cо случайными именем, добавлял поступившие от пользователя данные в текст комментария, вырезав символы "\n" и "\r", и запускал этот скрипт командой "python3 имя.py". Контролируя только содержимое комментария, участник должен был извлечь строку из файла "/home/ctfuser/flag". Скрипт создавался следующим кодом:
Вместо "{comment}" подставлялись данные, поступившие от участника, и в итоге запускался следующий код:
Успешно справившийся с заданием участник не стал искать новые уязвимости в парсере, которые бы позволили разбить строку на части, а воспользовался особенностью выполнения в Python файлов по типу их содержимого. Например, вместо исходного кода в файл с расширением ".py" можно поместить прокэшированный байткод, сохраняемый в файлах с расширением ".pyc", и подобный файл будет выполнен. В рассматриваемом конкурсе участник мог контролировать только содержимое в середине файла, поэтому не мог добавить свой заголовок для искажения MIME-типа.
Задачу удалось решить, воспользовавшись тем, что Python начиная с ветки 2.6 может исполнять содержимое ZIP-архивов для поставки Python-пакетов в сжатом виде. Как и в случае с кэшем байт-кода, наличие zip-архива определяется по содержимому, а не по расширению файла, т.е. в "файл.py" можно поместить zip-архив, и при запуске командой "python файл.py" он будет обработан как сжатый Python-пакет. При этом ZIP-архивы в Python индексируются не по заголовку в начале файла, а по секции EOCD (End of Central Directory Record) в конце файла. При наличии в архиве файла "__main__.py" этот файл запускается автоматически при прямом запуске архива командой "python архив".
Больше подробностей в оригинале
Executing arbitrary Python code from a comment
https://www.hacktron.ai/blog/posts/python-zip-confusion/
https://www.opennet.ru/opennews/art.shtml?num=63669
Участники могли отправить сетевой запрос к Python-скрипту, который создавал новый Python-скрипт cо случайными именем, добавлял поступившие от пользователя данные в текст комментария, вырезав символы "\n" и "\r", и запускал этот скрипт командой "python3 имя.py". Контролируя только содержимое комментария, участник должен был извлечь строку из файла "/home/ctfuser/flag". Скрипт создавался следующим кодом:
comment = input("> ").replace("\n", "").replace("\r", "")
code = f"""print("hello world!")
# This is a comment. Here's another:
# {comment}
print("Thanks for playing!")"""
Вместо "{comment}" подставлялись данные, поступившие от участника, и в итоге запускался следующий код:
print("hello world!")
# This is a comment. Here's another:
# Данные, поступившие от участника соревнования
print("Thanks for playing!")
Успешно справившийся с заданием участник не стал искать новые уязвимости в парсере, которые бы позволили разбить строку на части, а воспользовался особенностью выполнения в Python файлов по типу их содержимого. Например, вместо исходного кода в файл с расширением ".py" можно поместить прокэшированный байткод, сохраняемый в файлах с расширением ".pyc", и подобный файл будет выполнен. В рассматриваемом конкурсе участник мог контролировать только содержимое в середине файла, поэтому не мог добавить свой заголовок для искажения MIME-типа.
Задачу удалось решить, воспользовавшись тем, что Python начиная с ветки 2.6 может исполнять содержимое ZIP-архивов для поставки Python-пакетов в сжатом виде. Как и в случае с кэшем байт-кода, наличие zip-архива определяется по содержимому, а не по расширению файла, т.е. в "файл.py" можно поместить zip-архив, и при запуске командой "python файл.py" он будет обработан как сжатый Python-пакет. При этом ZIP-архивы в Python индексируются не по заголовку в начале файла, а по секции EOCD (End of Central Directory Record) в конце файла. При наличии в архиве файла "__main__.py" этот файл запускается автоматически при прямом запуске архива командой "python архив".
Больше подробностей в оригинале
Executing arbitrary Python code from a comment
https://www.hacktron.ai/blog/posts/python-zip-confusion/
👏3
Технологический Болт Генона
Достижение выполнения кода при контроле над текстом комментария в Python-скрипте https://www.opennet.ru/opennews/art.shtml?num=63669 Участники могли отправить сетевой запрос к Python-скрипту, который создавал новый Python-скрипт cо случайными именем, добавлял…
#prog #itsec #python
В конце мне не нравится, что автор поёт дифирамбы ИИ. Ну и ещё у него есть функция
Это явно можно написать одновременно эффективнее и проще для восприятия:
В конце мне не нравится, что автор поёт дифирамбы ИИ. Ну и ещё у него есть функция
ascii_safe
, которая написана просто ужасно:def ascii_safe(x: int) -> bool:
"""True if all four bytes have high bit clear."""
return all(((x >> (8 * i)) & 0x80) == 0 for i in range(4))
Это явно можно написать одновременно эффективнее и проще для восприятия:
def ascii_safe(x: int) -> bool
return x & 0x80808080 == 0
💯13🤡5
Forwarded from Немного туп(л,)
Короче, мне только что позвонили мошенники. Ничего удивительного так-то, мне и Kaspersky WhoCalls подсказал, что звонит кто-то подозрительный (минутка рекламы) , и тему сразу подняли известную уже (про замену полиса ОМС), но суть не в этом.
Мне звонил парень. И он настолько заработался, что представился Анастасией.
Когда я решил уточнить у Настеньки, а не ошиблась ли он(а), он(а) слегка смешалась и дальше диалог уже не склеился 🌚
Мне звонил парень. И он настолько заработался, что представился Анастасией.
Когда я решил уточнить у Настеньки, а не ошиблась ли он(а), он(а) слегка смешалась и дальше диалог уже не склеился 🌚
😁23🤡2🥴2
Блог*
#prog #article #amazingopensource Jujutsu (jj) — система контроля версий, которая концептуально проще git и при этом мощнее. Неплохой (но местами устаревший) обзор Jujutsu — jj init — сделал Chris Krycho. Также есть пока что неполный туториал от Стива Клабника…
#prog
Чел делится впечатлениями от jj.
t.iss.one/paniccode/45
Чел делится впечатлениями от jj.
jj крута
Посидел я наjj
где-то месяц, и... это офигенно.
Т.е. у меня по большей части не обычный "гит воркфлоу", где делаешь фичу, мержишь, делаешь новую, а эдакий стейт "тещу 20 фичей какая заработает"
И jj для этого идеален
t.iss.one/paniccode/45
👍7🤡6💯3❤2🔥1