- 1
Как вы думаете, что может делать функция getAlabamaTimezone(now: Date) ?
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
Как вы думаете, что может делать функция getAlabamaTimezone(now: Date) ?
guest6 25.11.2021 22:52 # 0
2) Узнать сам часовой пояс Алабамы относительно времени, данного в аргументе.
bormand 25.11.2021 23:09 # 0
Хотя может быть и наоборот, конвертит время из алабамского в utc...
Soul_re@ver 25.11.2021 23:13 # 0
bormand 25.11.2021 23:33 # 0
Soul_re@ver 25.11.2021 23:41 # 0
guest6 25.11.2021 23:45 # +2
JaneBurt 26.11.2021 18:05 # 0
Desktop 26.11.2021 01:33 # 0
– В своей сестре.
– А, точно!
bormand 26.11.2021 01:34 # 0
Desktop 26.11.2021 01:43 # 0
guest6 25.11.2021 23:36 # +1
TOPT 26.11.2021 03:49 # +2
Soul_re@ver 26.11.2021 11:00 # +1
JaneBurt 26.11.2021 17:39 # +1
bormand 26.11.2021 17:46 # +1
Т.е. она возвращает true/false?
JaneBurt 26.11.2021 17:49 # 0
JaneBurt 26.11.2021 17:51 # +1
Soul_re@ver 26.11.2021 18:18 # +2
Я надеюсь, хоть не на клиенте?
JaneBurt 26.11.2021 18:30 # +1
Soul_re@ver 26.11.2021 18:37 # 0
Я надеюсь, время хоть в UTC/с сохранением таймзоны?
JaneBurt 26.11.2021 18:40 # 0
Нет, просто UI покажет неправильное состояние (а когда дело дойдет до транзы, приложение просто ругнется нотификашкой с ошибкой от бэка). Операции с билетами на уровне данных делает бэк.
> Я надеюсь, время хоть в UTC/с сохранением таймзоны?
Да, при расчетах времени все даты приводятся к UTC.
JaneBurt 26.11.2021 18:51 # 0
guest6 26.11.2021 18:53 # +2
современное программирование это когда ты написал логику на беке а потом еще раз на фронте, но уже на другом языке (например, на TS)
Потом написал ее на свифте для иоса и на котлине для андроида.
JaneBurt 26.11.2021 18:57 # 0
JaneBurt 26.11.2021 19:03 # 0
guest6 26.11.2021 19:03 # +2
Если есть бизнес знание "пуськи бятые не могут быть в крапинку", то его придется писать и на беке (чтобы они не попали в базу) и на фронте (чтобы подсветить формочку).
Правильное решение -- написать это один раз, и сгенерить из этого код бека и фронта.
Буткемп приносил какую-то схему для валидации форм декларативной, но я забыл
JaneBurt 26.11.2021 19:08 # 0
Да, из этого возникли isomorphic приложения (актуально только в контексте веба), кодогенерация по всяким JSON-чикам (главное чтобы инициализация фронта и бэка использовала один и тот же конфиг, в котором расписаны валидаторы и пр). Но между валидацией фронта и бэка не всегда 1-1 соотношение
guest6 26.11.2021 19:12 # +1
Очень много копипасты логики между ними, и это грустно
JaneBurt 26.11.2021 20:29 # 0
В небольших (веб) приложениях достаточно монолита.
JaneBurt 26.11.2021 20:33 # 0
j123123 26.11.2021 20:57 # +3
https://www.youtube.com/watch?v=o111yYPqLHU&t=4420s
Desktop 26.11.2021 22:41 # +2
JaneBurt 26.11.2021 22:47 # 0
Возможности исполнителя ограничены в первую очередь не ею, а его устройством. Тьюринг-полнота лишь означает, что с помощью языка исполнителя мы можем решить все задачи, относящиеся к bounding context исполнителя (html-ем и css-ом мы не можем например сделать фоторедактор). Майнкрафт тоже Тьюринг-полный...
j123123 26.11.2021 23:09 # 0
В случае JS это еще означает, что браузер может сожрать кучу памяти, и всё нафиг зависнет. Или что этот JS может нагружать процессор некоторой хренью, о которой я не просил (например майнить что-нибудь).
>(html-ем и css-ом мы не можем например сделать фоторедактор)
А зачем делать фоторедактор на JS?
> Майнкрафт тоже Тьюринг-полный...
И?
guest6 26.11.2021 23:14 # +2
Потому что это простой способ сделать кросс-платформенный софт, который не нужно ставить.
Сделать его на плюсах и Qt будет намного сложнее и дороже, увы.
guest6 26.11.2021 23:10 # 0
и всё сломать
Если бы бразуер умел только документы показывать (как было во времена HTML 3.2 когда можно было смотреть сайты вообще без JS) то проблемы бы не было
JaneBurt 26.11.2021 23:13 # 0
const arr = [];
while(1) {
arr.push(new Object());
}
и всё сломать
Проблема это JavaScript-а или все же браузера, который слишком много памяти для процесса позволяет выделять (в Хромом движок детектит deadlock на обработку юзерских ивентов и говорит: "не, чет слишком долго выполняется" и предлагает остановить выполнение скрипта - такой проблемы нет) (то что сам скрипт виснет - проблема уже самого программирования на JS)?
guest6 26.11.2021 23:16 # 0
Через минуту? Через секунду?
Что значит "много памяти"? Много -- это сколько?
В общем случае мы не можем доказать, что какое-то говно не зациклилось. Ты же знаешь про проблему остановки, да?
JaneBurt 26.11.2021 23:32 # +1
По истечению таймера на ожидание доступности обработчика юзерского события. Скрипт выполняется в параллельном от tab manager-а процессе/потоке.
> Через минуту? Через секунду?
Через 10-20 секунд, не больше. Для прикладного приложения not of concern.
> Ты же знаешь про проблему точки останова, да?
Которая тут bound-ится процессом(ами) движка JS. Если зависает из-за этого весь браузер и тем более вся ОС - ну значит памяти/CPU слишком мало, в ОС неправильно приоритеты процессов выставлены. Проблема JS кода тут только в том что из-за него виснет движок.
1024-- 28.11.2021 16:26 # 0
JaneBurt 26.11.2021 23:39 # +1
"В том, что у меня при выполнении глючного кода на GPU отказал центральный процессор, виноват язык GPU а не архитектура материнской платы". Никакие системы не устойчивы к экплоитам на 100%.
j123123 27.11.2021 00:03 # 0
> "В том, что у меня при выполнении глючного кода на GPU отказал центральный процессор, виноват язык GPU а не архитектура материнской платы".
К самому JS как к языку программирования я тут кстати не доебывался (хотя можно, но это тема отдельного разговора). Если б вместо JS в браузер встроили какой-нибудь Tcl или Lua, сути бы это не изменило
Я доебывался до того, как этот язык используется в браузерах, что всякие говносайты могут невозбранно выжрать память и процессорное время. Ссылку я уже кидал https://www.youtube.com/watch?v=o111yYPqLHU&t=4420s
guest6 27.11.2021 01:16 # 0
а зря. Если у TS есть хоть какие-то плюсы, то у JS их совсем нет
j123123 27.11.2021 11:44 # 0
1024-- 28.11.2021 16:23 # 0
Когда же все уже поймут, что проблема постановы и питуринг-пестрота абсолютно ни на что не влияют?!
Ставим лимит 10 секунд и 100МБ. Кто не выполнил - прибивать. Настройки лимитов для каждого сайта отдать пользователю (как с настройками криптушни, микрофона и т.п.).
Касательно постановы:
* Если у меня есть полиамидный ай-горит определения проблемы постановы, да пусть даже лунейный, но который проверяет реальный скрипт за 60 секунд, никто не будет ждать, кроме довольных ма-те-ма-ти-ков.
* Если у меня есть мгновенный детектор постановы, но он не просчитывает время постановы и потребление памяти во время работы, то толку от него всё равно нет. 5 минут и 10 гигабайт спустя пользователь скрипт всё равно убьёт, это для 99% людей бесконечность.
* Если у меня есть мгновенный детектор постановы, времени и памяти, то я не буду зря запускать ненужную питушню и ждать таймаут, но у меня функциональность не будет работать.
Касательно пестроты:
* Бесконечной ленты байтов не бывает. Бесконечного времени не бывает. Способность/неспособность что-то вычислять на них ни о чём не говорит.
* Тройной вложенный цикл по всему диапазону short будет и без питуринговой пустоты эквивалентен бесконечному вычислению на бесконечной ленте.
P.S. Особенно весело вышло с тестом Тьюринга. Тот в шутку что-то сказал, но сектанты её приметили и начали строить свои философствования.
j123123 26.11.2021 23:50 # 0
Думаю что если браузер не будет выдерять много памяти, почти никто этим браузером пользоваться не станет, т.к. уже написано куча говнокода на JS который кучу памяти требует для своей работы и используется на куче сайтов, и эти сайты в таком браузере работать тупо не будут.
JaneBurt 26.11.2021 23:16 # 0
Возможно. Но и в нативных приложениях хватало vulnerabilities, ведущих систему юзера к отказу.
JaneBurt 26.11.2021 23:06 # +1
j123123 26.11.2021 23:15 # +2
Уровень безопасности современных браузеров на данный момент (2021 год) недостаточен, регулярно появляются новые уязвимости, позволяющие выполнить произвольный код с правами того пользователя, от чьего имени браузер запущен. CVE-2021-30632 в хроме например https://threatpost.com/google-chrome-zero-day-exploited/169442/
bormand 26.11.2021 23:16 # 0
Именно поэтому я за apparmor. Ещё один слой поверх песочницы браузера...
JaneBurt 26.11.2021 23:42 # 0
Наконец-то можно "безопасно" запускать Флэш..
j123123 26.11.2021 23:43 # 0
Можно еще в виртуалку это всё засунуть, как в Qubes OS. https://www.qubes-os.org/doc/gui/ - там вообще под каждое приложение свой огороженный Xorg сделан
> All AppVM X applications connect to local (running in AppVM) Xorg servers that use the following “hardware” drivers:
> dummyqsb_drv - video driver, that paints onto a framebuffer located in RAM, not connected to real hardware
> qubes_drv - it provides a virtual keyboard and mouse (in fact, more, see below)
bormand 26.11.2021 23:58 # 0
Ну тут уже оверхед по диску/памяти становится слишком большим, к сожалению... Плюс всё аппаратное ускорение идёт в пизду: не буду же я по видюхе на каждое приложение покупать.
Так что это уже для чуваков, которые от трёхбуквенных агентств бегают.
guest6 27.11.2021 02:31 # 0
Пусть возможные сисколы и аргументы будут ограничены хардварно!
Было же хардварное переключение контекстов, но нет бля, нам перформанс важнее
bormand 27.11.2021 02:46 # 0
В случае с "тонким" сендбоксом ты получаешь сотню-другую сисколлов и ещё сотню-другую иоктлов. На этом уровне на порядки сложнее построить что-то секьюрное. Если вообще возможно.
И это даже если запретить иксы, пульсу, DRM и кучу других протоколов.
guest6 27.11.2021 12:26 # 0
Ядро в спец таблице прописывает какие сисколы доступны, и пусть за этим следит процессор как он следит за IO и памятью.
bormand 27.11.2021 12:34 # +1
Все вот эти lockdown, seccomp, apparmor, selinux и ещё десяток LSM как раз таки пытаются что-то обрезать на уровне сисколлов. Семь (?) неймспейсов для ядерных объектов вон даже прикрутили.
Столько лет умные чуваки с этой задачей бьются, и всё равно что-то проскакивает, какие-то неочевидные атаки остаются.
Составить "список разрешённых сисколлов и их аргументов" не так просто, как тебе кажется.
j123123 27.11.2021 12:51 # 0
Это все давно придумали. https://man7.org/linux/man-pages/man2/seccomp.2.html
guest6 27.11.2021 12:57 # 0
j123123 27.11.2021 12:59 # 0
Что "процессор"? А сейчас за этим GPU следит, или что?
guest6 27.11.2021 13:01 # 0
кто не дает мне вызвать запрешщенный сискол?
j123123 27.11.2021 13:08 # 0
Как системный вызов, который какие-то там другие системные вызовы разрешает или не разрешает. А как это еще можно было б реализовать? Переписать ядро Linux на VHDL чтобы вот системные вызовы Linux ядра были частью процессора, или что ты блядь предлагаешь? Что там процессор должен следить?
guest6 27.11.2021 13:11 # 0
заебись идея, надо торвальдсу передать
guest6 27.11.2021 13:26 # 0
Если бы у каждого процесса была таблица сисколов (как сейчас есть таблица страниц) которую заполняло бы ядро, то следить за допустимыми сисколами мог бы процессор.
По-моему я четко написал:
https://govnokod.xyz/_27840/#comment-779379
j123123 27.11.2021 13:40 # 0
А как бы по-твоему процессор понимал, что вот сейчас выполняется вот этот процесс, и ему можно вот эти системные вызовы, а вот сейчас произошло переключение контекста, и теперь выполняется другой процесс, которому можно другие системные вызовы? Ему об этом ядро ОС должно сообщать? А почему б самому ядру ОС при системных вызовах не проверять системные вызовы, по-твоему там будет супербольшой оверхед? И кстати есть еще seccomp-bpf, через который можно сделать ограничения вида "системный вызов write может писать только в файловый дескриптор 1 и не более чем 512 байт за 1 раз" - пример вот там можешь посмотреть https://book.hacktricks.xyz/linux-unix/privilege-escalation/docker-breakout/seccomp
Или ты хочешь в сам процессор встроить понятие каких-нибудь процессов и планировщик?
guest6 27.11.2021 13:48 # 0
Ну во-первых переключение контекста и так сопровождается загрузкой других Page tables, точно также можно было бы и грузить таблицы сисколов.
Во-вторых когда-то была идея хардварного переключения контекстов, но оно не используется, хотя и есть в проссоре.
>seccomp-bfp
а BPF у нас тюринг-полный?:)
Задачи про "не более чем 512 за раз" это скорее про перформанс, чем про безопасность, это можно оставить и в ядре
>Или ты хочешь в сам процессор встроить понятие каких-нибудь процессов?
Ну так они и были в Hardware Task Switching же
j123123 27.11.2021 14:00 # 0
Не, ну можно конечно, но особой выгоды в этом нет. Можно и ядро ОС аппаратно реализовать в процессоре, только тогда для обновления ОС надо будет новый процессор покупать
> Во-вторых когда-то была идея хардварного переключения контекстов, но оно не используется, хотя и есть в проссоре.
Потому что оказалось тормозной хуйней. https://stackoverflow.com/a/2761422
> а BPF у нас тюринг-полный?:)
Нет. https://blog.cloudflare.com/bpf-the-forgotten-bytecode/
Before executing the BPF bytecode kernel ensures that it's safe:
All the jumps are only forward, which guarantees that there aren't any loops in the BPF program. Therefore it must terminate.
All instructions, especially memory reads are valid and within range.
The single BPF program has less than 4096 instructions.
All this guarantees that the BPF programs executed within kernel context will run fast and will never infinitely loop. That means the BPF programs are not Turing complete, but in practice they are expressive enough for the job and deal with packet filtering very well.
bormand 27.11.2021 14:35 # 0
Отлично! А теперь запрети писать слово "хуй" в дескриптор 1.
j123123 27.11.2021 14:58 # 0
Модулем ядра можно такое реализовать.
Или огороженый процесс может срать в какой-нибудь пайп, из пайпа потом читает другой процесс и ищет там слово "хуй". Если не находит, тогда пишет уже в дескриптор 1
bormand 27.11.2021 15:05 # 0
Ну вот, уже прокси надо городить, которая тоже добавляется к поверхности атаки, состояние какое-то хранить для каждого клиента...
А ведь это фундаментальная проблема -- очень много нетривиальных IPC'шек написано поверх байтовых стримов. И существующие механизмы тут могут только сказать "похуй, пусть общаются о чём хотят" или "нахуй, они вообще не будут общаться".
j123123 27.11.2021 15:49 # 0
Не, ну вообще можно через системный вызов ptrace всякой хуйни понаделать. https://www.alfonsobeato.net/c/modifying-system-call-arguments-with-ptrace/
Т.е. если трассируемый процесс пробует делать вызов write(), другой процесс его приостанавливает и что-то там может поменять, в том числе и поискать "хуй" в передаваемом буфере
Можешь погуглить ptrace sandbox
bormand 27.11.2021 15:52 # 0
seccomp вроде тоже умеет отправлять на дальнейший анализ в ptrace. Чтобы совсем все вызовы под ptrace не гонять.
bormand 27.11.2021 16:11 # 0
Ну тут тоже огромный простор для багов и уязвимостей...
Можно, к примеру, увидеть "ху" и от радости забыть, что дальше конец буфера.
Или забыть тот факт, что прошлый буфер закончился на "ху".
Т.е. сам ptrace-sandbox становится частью attack surface... И его тоже надо загонять в сендбокс по-хорошему. Или писать на чём-то безопасном.
j123123 27.11.2021 16:43 # 0
Если б проверка на слово "хуй" была реализована в ядре, это было б еще хуже для секурности. Так что в идеале надо формально доказывать.
bormand 27.11.2021 13:24 # 0
Ты реально не понимаешь проблему? Суть не в том, как запретить. Суть в том, что запретить.
Никто тебе на этот вопрос не ответит со 100% уверенностью.
guest6 27.11.2021 13:29 # 0
Тут видимо надо делать простой и понятный набор сисколов и делать прослойку поверх него, а потом делать белый список.
когда у тебя 500 сисколов, то конечно никто ничего не понимает
bormand 27.11.2021 14:23 # 0
Первая, на самом деле.
> делать простой и понятный набор сисколов
Да, к сожалению придётся всю ось, все протоколы и весь софт редизайнить с нуля. И никаких сокетов, пайпов, девнод и прочих "волшебных" сущностей, которые превращают "простые и понятные" read и write в неконтролируемые каналы связи.
Для каких-то встраиваемых решений это (с натяжкой) прокатит. Для десктопа и серверов это не взлетит никогда. Рыночек выберет совместимость.
bormand 27.11.2021 03:03 # 0
Для сендбокса же это маунты, файлы, каталоги, симлинки, юникс сокеты, девноды,
права доступа и куча сисколлов для работы со всем этим.
Где больше вероятность отстрелить себе ногу и пропустить неочевидную дыру?
1024-- 28.11.2021 16:03 # 0
JaneBurt 26.11.2021 19:17 # 0
JaneBurt 26.11.2021 17:47 # 0
CHayT 26.11.2021 18:09 # +1
Джун просто лиспер был.
JaneBurt 26.11.2021 18:26 # 0
Я вот на Си почти не прогаю, но всегда стараюсь чистить внешние ресурсы в cleanup колбэке после их аллокации. Либо неотработавший воркер (например fetch) при изменении какого-то state. Иначе будут race conditions, dangling references (компонент удалился из дерева, а колбэк вызывает метод компонента и он еще висит в очереди неотмененным).
CHayT 26.11.2021 19:57 # +2
JaneBurt 26.11.2021 20:07 # 0
JaneBurt 26.11.2021 20:13 # 0
Или когда на этапе написания кода не проведено исследование по специфичному формату данных и пр., и ты прибегаешь к параметризации чтобы "на всякий случай".
guest6 26.11.2021 22:09 # 0
DEsign Driven Development?
Desktop 26.11.2021 22:41 # 0
JaneBurt 26.11.2021 22:50 # 0
Soul_re@ver 26.11.2021 18:15 # +1
Внутри ифами раскидать, что куда.
bormand 26.11.2021 18:19 # 0
Desktop 26.11.2021 18:22 # +2
bormand 26.11.2021 18:23 # 0
guest6 26.11.2021 18:27 # 0
для совместимости с K&R C?
guest6 26.11.2021 18:45 # 0
guest6 26.11.2021 18:27 # +2
JaneBurt 26.11.2021 18:27 # 0
CHayT 26.11.2021 19:52 # +1
ι-комбинатор неиллюзорно Тьюринг-полон: ι = λ f. f S K
BAJlEHOK 26.11.2021 18:19 # 0
JaneBurt 26.11.2021 18:36 # 0
guest6 26.11.2021 18:44 # 0
CHayT 27.11.2021 16:37 # +4
JaneBurt 12.12.2021 18:40 # 0
guest6 12.12.2021 18:43 # 0
bormand 12.12.2021 18:50 # +1
bormand 12.12.2021 18:44 # 0
guest6 12.12.2021 18:55 # 0
через пол часа читай его вопрос на "otevy.mail.ru"
OMuKPOH 12.12.2021 21:04 # 0
1024-- 28.11.2021 16:49 # 0
Было
Предлагал хотя бы
> Посоветовала ему почитать/прорешать
Почитал и добавил
1. backshifted_sin, argbackshifted_sin, backscaled_sin, argbackscaled_sin с "-" и "/"
2. logscaled_sin, arglogscaled_sin
3. sinsin
bormand 28.11.2021 16:51 # 0
Это как в питере -- комбо из убийства и чревоугодия?
1024-- 28.11.2021 17:15 # 0
Придут неравнодушные и либо оставят только cos, либо переименуют sin/cos в wave/swav (shifted wave).
guest6 26.11.2021 19:14 # 0
Пишите ли вы нормальные коммит месседжи чтобы ревьюер понимал что вы починили и как, или пидорские типа
?
bormand 26.11.2021 19:20 # +1
guest6 26.11.2021 19:29 # 0
Пишешь ли ты развернуто
* что было сломано
* почему
* как ты пончили.
Если issue звучит как "Failed to create Foo" то явно недостаточно указать задачу
JaneBurt 26.11.2021 19:32 # +1
> почему
Обычно описывается в той же задаче в Жире. А вообще если идет речь про тырпрайз, то ты привязан основное время к одному проекту и ты можешь обсудить с тем же аналитиком или тестировщиком детали. Стартапы плачут, колятся, бросают скоротечные портянки но продолжают пилить бабло на ИТ.
> что было сломано
> как ты починил
А это уже описывается в коммит-месседже да.
bormand 26.11.2021 19:34 # +2
А в коммит обычно более кратко, чтобы не засирать людям лог... Кому захочется покопаться -- откроет задачу и почитает там.
guest6 26.11.2021 22:35 # 0
У меня просто жопа горит когда есть ишью
И коммент у коммита
а в том коммите поменяли сорок четыре файла
Desktop 27.11.2021 01:19 # 0
guest6 27.11.2021 01:22 # 0
"Зависало потому что обращалось не из итого потока и был дедлок. Я использовал Bar чтобы гарантоировать обращение из правильного потока"
Desktop 27.11.2021 01:24 # 0
так-то идея хорошая, только в рабочем ритме ей сложно следовать.
guest6 27.11.2021 01:29 # 0
Desktop 27.11.2021 01:31 # 0
guest6 27.11.2021 01:34 # +1
Стало понятно, что его можно трогать только из конкретного.
Об этом была написана дока у метода, вставлен ассерт, и все места его использования завернули в код, который ставит задачу пулу, который с этим тредом связан
JaneBurt 26.11.2021 19:56 # 0
JaneBurt 26.11.2021 19:24 # +1
JaneBurt 26.11.2021 19:28 # 0
guest6 26.11.2021 19:31 # +1
ээ
ты можешь случайно закоммитить изменения, не имеющие отношения к задаче?
JaneBurt 26.11.2021 19:33 # 0
1024-- 28.11.2021 17:01 # 0
> А это просто у меня на машине линтер поработал
Кто дал слово этому петуху? Раньше это была просто кукарекалка, которую можно было просто игнорировать. Удивлён, что ей позволили писать своё авторитетное мнение в файлы, которые не изменялись, даже в IDE не открывались.
guest6 28.11.2021 17:09 # +1
Потом другой чел открыл проект, и закоммитил уже
длинная история была у того файла
Desktop 26.11.2021 19:39 # +2
А потом они обижаются, что про фронтендеров столько мемов
JaneBurt 26.11.2021 19:42 # 0
Desktop 26.11.2021 19:57 # +2
– Всю ночь на стейдже автотесты гонял. Даже базу грохнул.
– Но у нас нет стейджа!
Хотя это больше про aqa, наверное
guest6 26.11.2021 22:05 # 0
Я бы сказал, что среди веб-макак таких большинсво.
Desktop 27.11.2021 01:14 # 0
хук можно глобально как-то для репы прописать, чтоб не каждый питух отдельно это делал?
guest6 27.11.2021 01:17 # 0
pre-receive
The first script to run when handling a push from a client is pre-receive.
тогда локально ты можешь себе срать, а запушить не сможешь
например у нас нельзя пушнуть файл более 10 мегабайт, и вроде нельзя форспушнуть в мастер
Desktop 27.11.2021 01:18 # 0
я имел в виду pre-commit hook, который автоматически подтягивается, когда делаешь clone
bormand 27.11.2021 11:31 # +1
Проще действительно на серваке не пропускать.
1024-- 28.11.2021 17:06 # 0
bormand 28.11.2021 17:17 # 0
Так что можно поставить правильную версию гита и наслаждаться автоматической установкой хуков и майнеров.
Desktop 28.11.2021 18:07 # 0
bormand 28.11.2021 18:16 # 0
Ты просто скачал посмотреть, а тебя уже выебли.
А сборка проекта -- это уже осознанное действие обычно.
Desktop 28.11.2021 18:23 # 0
ObeseYoung 28.11.2021 18:25 # 0
bormand 28.11.2021 18:29 # +1
Ну ок, представь что ты склонил репу, создал бранч (и словил майнера в post-checkout), поправил ридмишку, закоммитил её (и словил майнера в pre-commit) и запушил (и словил майнера в pre-push).
Согласись, никто не ожидает, что от правки сраного текстовика на его компе исполнится произвольный код?
Desktop 28.11.2021 18:35 # 0
> никто не ожидает, что от правки сраного текстовика на его компе исполнится произвольный код
– а так же я не ожидаю, что мои коллеги рискнуть влепить майнер в скрипт в рабочей репе.
bormand 28.11.2021 18:44 # 0
Ну т.е. уже нужен какой-то переключатель во время загрузки репы, доверяешь ты ей или нет? Какое-то осознанное действие для активации хуков.
Т.е. в общем-то можно засимлинкать каталог с ними куда надо после клона и не ебать мозг.
Desktop 28.11.2021 18:49 # 0
> можно засимлинкать каталог с ними куда надо после клона
– ну дык это каждому новому питуху придётся качать архив, распаковывать и делать симлинку. а питухи ленивые пошли и не хотят потратить две минуты на то, что им позже сэкономит часы.
вот мне и интересно стало, есть ли какой-то глобальный механизм
как я понял, нет, потому что с понтом security issues
bormand 28.11.2021 18:50 # +1
Откуда, блядь, git знает рабочая она или от рандомного Васяна с гитхаба?
> качать архив
Дык закоммить их в репу! Останется только засимлинкать/скопировать одной командой, написанной в ридмихе той же репы. Или даже скрипт для этого приложи, чтобы одним кликом.
Desktop 28.11.2021 18:52 # 0
> Дык закоммить их в репу!
– симлинки ж всё равно придётся руками делать, не?
bormand 28.11.2021 18:55 # +1
А как он поймёт, надо ему автоматически включать хуки или нет? Пусть из-за одного лентяя все регулярно ловят троянов, как с автораном в винде?
Или ты ему опцию будешь передавать при клоне?
Desktop 28.11.2021 18:58 # 0
ну то есть чем это в итоге отличается от остального набора скриптов, которые лежат в репе и могут быть произвольно запущены при той же сборке? аудит делать не нужно того, что ты качаешь?
1024-- 28.11.2021 19:30 # 0
Это уже дофига знать надо. Я могу годами пользоваться гитом, знать, что там могут храниться разные скрипты, но не знать про исполняемые хуки.
Примерно аналогично питушне про sudo. Нельзя просто зайти в исходники луникса и прочитать, что незаконный sudo пишет в Спортлото?
Или почти как с ярлычками. Нельзя просто зайти в бинарники винды и прочитать, что иконка может исполнить вредоносный код?
Одно дело - когда питузок пишет сайт с инъекциями, создаёт какой-то код, подключает к базе и запускает, а другое - когда он просто читает файлы.
Desktop 28.11.2021 18:53 # 0
– лол, так несекьюрно же
bormand 28.11.2021 18:56 # 0
Ты его сознательно запустил. Сам. Понимая, что это рабочая репа. Возможно даже прочитав его перед этим.
Desktop 28.11.2021 18:59 # 0
а про то, что в папке hooks лежат скрипты с правами на исполнение и их количество, гиту не так уж сложно напиздеть в кококонсолечку при клоне
bormand 28.11.2021 19:08 # +1
Ну разве что задать вопрос, как это делает ворд: Эта репа содержит хуки. Хуки могут выебать вас в жопу. Введите "ДА Я ХОЧУ ВКЛЮЧИТЬ ХУКИ", если действительно доверяете этой репе и хотите включить хуки.
Ты реально не чувствуешь разницы между "я запустил скрипт для сборки" и "я просто переключил ветку, решил выкачать свежую версию или закоммитил ридмишку, а оно пошло код исполнять"?
Desktop 28.11.2021 19:24 # 0
да, можно задать вопрос, как это делает ворд. это пиздец какое сложное архитектурное решение?
я почитал, как это сделано в fossil, и там вроде хуки добавляются командой для репы
но у них такая дока, что нихуя не понятно
guest6 27.11.2021 02:04 # 0
ObeseYoung 27.11.2021 09:39 # 0
guest6 27.11.2021 12:30 # 0
guest6 27.11.2021 15:15 # 0
Soul_re@ver 27.11.2021 15:26 # +2
> Создатель и владелец Telegram Павел Дуров сообщил, что в социальной сети у пользователей теперь не будет возможности отправлять анимированный значок с изображением баклажана и персика.
Какой референдум, какая демократия :)
bormand 27.11.2021 15:38 # 0
З.Ы. Страйкер вот заранее приготовился и запретил их все.
CHayT 27.11.2021 16:09 # −2
ObeseYoung 28.11.2021 18:27 # 0
Представляю CNN, всяки NBC, WaPo и NYT
Desktop 28.11.2021 18:09 # 0
– ничо, что там есть стикерпак с чуваком, у которого вместо головы жопа?
ucnaHckuu_CTblD 28.11.2021 20:38 # 0