- 1
IT Оффтоп #57
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
IT Оффтоп #57
#29: https://govnokod.ru/26385 https://govnokod.xyz/_26385
#30: https://govnokod.ru/26413 https://govnokod.xyz/_26413
#31: https://govnokod.ru/26423 https://govnokod.xyz/_26423
#32: https://govnokod.ru/26440 https://govnokod.xyz/_26440
#33: https://govnokod.ru/26449 https://govnokod.xyz/_26449
#34: https://govnokod.ru/26456 https://govnokod.xyz/_26456
#35: https://govnokod.ru/26463 https://govnokod.xyz/_26463
#36: https://govnokod.ru/26508 https://govnokod.xyz/_26508
#37: https://govnokod.ru/26524 https://govnokod.xyz/_26524
#38: https://govnokod.ru/26539 https://govnokod.xyz/_26539
#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
Этот оффтоп сгенерирован автоматически.
Индекс оффтопов: https://index.gcode.space/.
Зеркала Говнокода и полезные ресурсы:
* https://govnokod.xyz/
* https://gcode.space/
* @GovnokodBot в «Telegram»
Заметил, когда уже удалило?
К щщастью нет, просто проснулся, проверил «НГК», вчитался в скрипт и всё понял.
Ну в общем-то свою задачу он выполнил перед этим, заново не пришлось писать.
Мне кажется, ты его даже выкладывал
1. Для всех пользователей из users проверяет, не просрочена ли кука, если просрочена — обновляет. Последняя полученная кука используется для всех дальнейших операций.
2. Получает количество комментариев в последних оффтопах из каждой категории:
3. Все переполненные оффтопы помещаются в отдельный список offtops_to_perekat:
4. Для каждого оффтопа из offtops_to_perekat публикуется новый оффтоп и два комментария (перекатный и приветственный).
https://pbs.twimg.com/media/EgK9xOmX0AAQTse?format=jpg&name=large
хотя на самом деле нихуя не смешно
Показывать боюс
А ссылка вот
https://vorec.space
Багрепорты приветствуются
> поиск на «NGK» регистронезависимый
- даже в кавычках?
Да, даже в кавычках.
1) Ограничить частоту ручных проверок (по нажатию кнопки) до одной раз в секунду, например;
2) Выдавать пользователю access_token (который сейчас в куках), чтобы можно было аутентифицироваться без прохождения проверки по комментарию.
> Выдавать пользователю access_token (который сейчас в куках)
- тогда его придётся хранить в локалсторадже, а мне как-то подсознательно не хочется. Или ничего страшного не произойдёт?
А, кроме этого, в чём будет профит? Токен живёт неделю, часто перелогиниваться не нужно вроде
«NGK», а не «ГК», но не суть.
По privateToken в /check, наверное. Записывать, когда с таким токеном последний раз проверяли, и если это было меньше, чем N секунд назад — отправлять 404.
> тогда его придётся хранить в локалсторадже, а мне как-то подсознательно не хочется
Нет, просто выдай его мне на руки.
> А, кроме этого, в чём будет профит?
В том, что я смогу записать его себе в менеджер паролей и в дальнейшем просто входить, без необходимости проводить процедуру с постингом комментария на ГК. В частности, подтверждать аккаунт придётся только один раз, а не для каждого браузера/компьютера/мобильника.
Было бы круто такое фильтровать на уровне nginx, но я не знаю, можно ли.
> Нет, просто выдай его мне на руки, я смогу записать его себе в менеджер паролей
- так, ты его себе запишешь, а мне как надо делать? Типа будет отдельно получение токена и отдельно логин по паре юзернейм/токен?
> - так, ты его себе запишешь, а мне как надо делать? Типа будет отдельно получение токена и отдельно логин по паре юзернейм/токен?
Ну вот насколько я вижу, сейчас ты с /link выдаёшь publicTokenString и privateTokenString, а потом /check получает privateTokenString и проверяет, запощщен ли комментарий с соответствующим publicTokenString. Я предлагаю:
0) Сохранять результаты успешной проверки (чтобы уже проверенный privateTokenString не проверять);
1) После успешного логина напечатать пользователю его privateTokenString;
2) В дальнейшем на /#/login дать возможность ввести не ник, а сразу privateTokenString. После нажатия кнопки «Проверить» этот токен так же, как сейчас, отсылается на /check (минуя /link), в ответ пользователю ставится кука access_token.
3) Предусмотреть возможность удаления privateTokenString для случаев, когда его спиздили, например.
И с пользователями они никак сейчас не связаны, только с запросами на линк юзернейма с гк
Ну в общем сделать по твоей схеме не то чтобы сложно, просто добавить ещё один токен, грубо говоря, refresh_token
Знатоки nginx, скажите, этого достаточно?
* ssh на 22 порту: заебут брутом
* нет hsts preload
* нет DNS CAA
* TLS 1.0 и 1.1, старые шифры. В результате хуёвая оценка на SSLabs
* нет http/2
* нет заголовка для вечного кеша статики, хотя статика явно имеет хешевое имя
* ошибка в JS консоли
> ошибка в JS консоли
- это внутри axios вроде, пока не разбирался
> Синоним "Хуйня"
Не соглашусь
Я ж правильно помню?
Да, я люблю заботливо схоронять в отдельный текстовый файлик всякую ненужную питушню.
Думаю, как запилю, так и уберу.
С раковых аккаунтов пока всё равно никто не сидит
Действуй по методу Страйко: DELETE FROM records WHERE records.user_name = 'nacpaJl';
Кстати, прямые ссылки работают, можно использовать в разговоре
https://vorec.space/#/term/Скриптушня
В ссылках в названиях также могут содержаться пробелы, пока не определил степень потенциального багра, чтобы решить, переделывать или нет
Что-то перемудрил.
https://www.gamedev.ru/flame/forum/?id=122958
Где основные срачи про эти хвостики проходили?
Например: "ну строки сишные мы же терминируем нулом, почему не терминировать им массив?"
Кстати, в субъективной сишечке (если я не путаю) NSArray терминировался нилом.. но это не точно
Шли три крокодила:
Данила, Пахом и Федот.
:-(.
> почему не терминировать им массив?
Кстати, динамический массив, терминированный нулевым значением — это довольно-таки распространённая ебола в «WinAPI». Реальный пример:
В конце этой структурки приделывается строка длины FileNameLength, а &FileName[0] служит указателем на её начало.
UPD: Тьфу, задумался, перепутал, это не то. Реальный реальный пример забыл.
*если не подсунуть свои данные в fromRawData
http://govnokod.ru/26478
Нужно было отдельным тредом сделать тему.
А то я заебался искать.
Добавьте пужулуйста статью про Глето́ны:
Щас добавим
А ты сам чего не?)
там же можно оставить ссылку на пример
я запишу фича-реквест: редактирование примеров)
https://twitter.com/i/status/1298088783838052354
https://pbs.twimg.com/media/EgWdQJfWsAAhuAf.jpg
https://pbs.twimg.com/media/EglPIABWsAcwq_o.jpg
заебись у него работа интересная
А за какие клавиатуры вы? Мембранные/механические? проводные/беспроводные?
http://www.rapoo.com/product/461
Да все равно бага это. Микроконтроллеры из слипа почти мгновенно выходят, ты не успеешь клавишу отпустить даже если у него тактовый генератор был отключен. USB разбудить тоже миллисекунды.
Ленивые китайцы прошивку писали, вот и теряет нажатия.
Зачем? Зачем? Только провода, только хардкор. Я даже беспроводные наушники выбирал чтобы с проводом работать могли.
> какую бы ты купил
Хер знает, я не разбираюсь в беспроводных.
Вот такое у меня на соневских проводных ушах щас, а когда-то было с беспроводными плантрониками. А до этого были дешёвые хвилипсы, там такого не было
Надень их задом наперёд. Если баланс перевернётся - значит с техникой. Если нет - значит пора к врачу уши промывать.
Только проверь, что у тебя на компе баланс не сбитый нигде. А то вдруг случайно крутанул регулятор. Ну и тестить лучше не на музыке а на специальном семпле для настройки.
З.Ы. Ни разу такого не видел, на самом деле.
http://www.rapoo.com/product/461
http://www.rapoo.com/product/461
http://www.rapoo.com/product/461
http://www.rapoo.com/product/461
http://www.rapoo.com/product/461
http://www.rapoo.com/product/461
http://www.rapoo.com/product/461
http://www.rapoo.com/product/461
http://www.rapoo.com/product/461
http://www.rapoo.com/product/461
http://www.rapoo.com/product/461
http://www.rapoo.com/product/461
http://www.rapoo.com/product/461
http://www.rapoo.com/product/461
http://www.rapoo.com/product/461
http://www.rapoo.com/product/461
http://www.rapoo.com/product/461
http://www.rapoo.com/product/461
http://www.rapoo.com/product/461
http://www.rapoo.com/product/461
http://www.rapoo.com/product/461
http://www.rapoo.com/product/461
http://www.rapoo.com/product/461
http://www.rapoo.com/product/461
http://www.rapoo.com/product/461
до этого стояла какая-то китайская sven за 300р
какой reified )))
программистам она не нужна
Сёма
Забыл как страшный сон когда разобрался с кватернионами. Эти углы очень неудобно кобенировать.
Блядь, синус на косинус на минус свинус на косинус плюс косинус на синус на косинус на свинус…
З.Ы. На самом деле ахуенно было понтоваться лабой, в которой объект крутился интуитивно. Ты жмёшь стрелку вверх - и он поворачивается вверх! Независимо от текущего угла. С углами эйлера такое сделать было бы очень сложно.
А на самом деле будешь пилить UI, обвес вокруг готового двигла да скрипты для NPC.
З.Ы. Или вообще хуйню под фейсбук да мобилы.
> Минкомсвязь предложила обязать дата-центры передавать данные о своих мощностях в Роскомнадзор
> Минкомсвязь планирует обязать операторов центров обработки данных (ЦОД) предоставлять в Роскомнадзор текущую техническую информацию об эксплуатируемых системах, включая количестве стойко-мест, параметрах электроснабжения, уровня загрузки коммутационного оборудования, доступные и используемые вычислительные мощности, параметры систем хранения данных (СХД), виды предоставляемых услуг и тарифов.
> le1ic
> Вам же наднесь обещали второй пакет мер поддержки IT бизнеса. Получите, распишитесь )
что бы пользоваться
Ребенок сидит за семейным компом, и хочет поставить игру. Это нормально вообще-то.
Или пользователь в большой компании хочет поставить icq
Что такое "проги ставить"?
Чем "скачать игру в на рабочий стол и оттуда запустить" отличается от "поставить"?
Помещать экзешники в каталог, откуда разрешено их исполнение.
исполнение разрешено с рабочего стола по умолчанию.
И в суперзащищенных прыщах тоже по умолчанию обычно можно запускать файлы из домашней папки.
Серьзно, что бы ты предложил в ситуации с ребенком.
Допустим, у меня стоят все обновления и антивирь, и большинство вирусов мне не страшно (меня никто не хочет сломать спецаиально итд).
И есть ребенок/гость/хуйзнаеткто.
Я не могу давать ему админские права, иначе он случайно сломает систему или зайдет в мою учетку (или прочитает оттуда файлы).
Однако, я не хочу каждые 15 минут бегать к нему, когда он захочет запустить очередную игру.
Кажется, что установка говна в домашнюю папку -- самое верное решение, да еще и удобное тем, что я могу потом ёбнуть профиль вместе со всем говном
Что не так?
Именно. И да, именно поэтому я за «SRP» и «AppLocker».
> Я не могу давать ему админские права, иначе он случайно сломает систему или зайдет в мою учетку (или прочитает оттуда файлы).
У меня для тебя тоже плохие новости: если ребёнок/гость/хуйзнаеткто может запускать на твоей системе произвольные исполняемые файлы — у него по факту уже есть максимальные права. 0day «local privileges escalation» на винде появляются чуть ли не каждый месяц. Свежачок, например: https://www.helpnetsecurity.com/2020/08/07/zero-days-windows-print-spooler/. Но это бы не было так печально, если бы не тот факт, что практически каждая установленная программа повышает риски таких уязвимостей в разы. Примечателен пример «Стима», который несколько месяцев (!) отказывался патчить повышение до NT AUTHORITY\SYSTEM: https://habr.com/post/462479/.
Так что увы, де-факто любой виндовый аккаунт равен локальному администратору.
>меня никто не хочет сломать спецаиально итд
Если у меня на компе захочет посидеть J Random Hacker, то я ему виртуалку подниму, и за свой комп не пущу.
В прыщеядре тоже бывают дыры, но никто не говорит же "давайте всем рута, потому что даже не рут всё равно сломает"
Есть разные случаи"безопасности".
В одном случае мы доверяем ОС, и считаем, что она не ломается, потому что пользуется ею ребенок, она не торчит в наружную сеть, итд.
В другом уровне мы знаем, что ломается что угодно, и пользователь может быть каким угодно крутым хакером.
В первом случае логично не дать пользователю админских прав, и на том успокоиться.
Во втором случае вообще нужно делать отдельный инстанс ОС.
Я бы хакера не пустил по ssh под обычным пользователем даже на openbsd.
Но я говорю про первый случай
А у тебя все дети приучены не брать конфетку у чужих людей скачивать приложения исключительно из Надёжных Источников и никогда не попадают на говнодорвеи по запросам «скачать дока2 бесплатно»?
Вон, Борманд умную вещь сказал:
>>> Рандомное говно в домашней папке слишком много прав имеет, на самом деле. К примеру, оно может шариться по твоей локалке. Может писать на флешки. Может через какую-нибудь дыру в сервисах, коих тысячи, повысить себе привилегии до админских. Куча софта тупо не готова к атакам изнутри.
>> Я бы просто отдельный комп собрал ему. И пусть сам его чинит, если какое-нибудь говно скачает. Все права есть.
Они его сксачают, запустят, и оно сломает винду через " дыру в сервисах, коих тысячи"
И получат красивое окошко «обратитесь к администратору», потому что из «Загрузок» ничего запускать нельзя.
Ну да, это потребует от тебя дополнительной работы. Но если (абстрактному) тебе важны данные на общей пеке — это, как ни печально, необходимое зло.
Стоит отметить, что конкретно тебя я ни к чему не призываю, потому что каждый сам должен оценивать ценность своих данных и сколько он готов вложить труда в их защиту.
А могу обечпечить на B+ не разрешив ему запускать ничего, кроме спец белого списка
А могу обеспечить "A" собрав отдельный комп внутри отдельного VLAN без доступа к локалке
Кстати многие роутеры сейчас умеют в гостевой wifi, поэтому с этим проблем особо нет, любая домохозяйка справится. Ну и физический порт тоже можно закинуть в эту гостевую сеть вроде.
Именно поэтому я за «Air Gap».
Так вот, если ты будешь настраивать на «B» — у тебя всё будет заебись. А вот если тебе понадобится обеспечивать «B+» — программы, пишущие себя в аппдату, будут тебе активно и сильно мешать. И это хуёво.
А я и не предлагал всем раздавать админа. Наоборот: если тебя действительно волнует безопасность ПК — стоит грамотно настроить «SRP» и «AppLocker».
Ну а всякое говно, которое ставится в аппдаты, этому активно мешает. И это хуёво*.
* Попрошу заметить, что «SRP» и «AppLocker» — это больше корпоративные инструменты, поэтому не надо писать, что, мол, они нинужны.
Это не понижает безопасность (потому что он всё равно может запустить говно с рабочего стола)
Напоминаю, что речь о домашнем компе.
Если мы запрещаем вообще запуск любых .exe кроме тех, что уже стоят в "program files", куда записи нету, то тогда конечно пользователю не надо давать никаких прав на установку.
Но обычно это не так. Обычно у него есть права запустить kitty.scr.exe с рабочего стола. А значит позволив ему установить что-то в AppData мы не делаем хуже
Я тебе про архитектуру — ты мне про конкретного пользователя.
Вот у меня свой комп есть, я на нём единственный пользователь и творю что хочу. У меня все права есть. Следует ли из этого, что управление правами нинужно вообще?
Я не очень понял эту фразу.
>Следует ли из этого, что управление правами нинужно вообще?
Я считаю, что нужно. Я не сижу под рутом на прыщах, мне самому спокойнее и удобнее срать в домашнюю папку.
И на винде я бы тоже не сидел под админом, если бы там было нормальное sudo
Эм, кстати а в чём вообще суть этого фетиша с "sudo команда" на каждый чих? Бесполезные буковки и вбивания пароля, имхо.
Либо сидишь под юзером либо sudo su под админа.
во-вторых можно в одном терминале su
и наконец есть мерзкий pkxec
На пинде этого нет
Если ты не админ, то ты вынужден будешь перелогиниваться, или юзать пиздопротивный runas
а вынуждены они были потому что половина программ срала в "program files", и еще потому, что не было нормального sudo.
Ну вот я сижу под юзером, и захотелось мне обновить драйвер. Или поменять IP. И пиздец: мне проще залогиниться второй раз, чем ебстись с runas
если ты не админ, то uacа у тебя не будет.
uac только для админов
Проверял?
Run as administrator на cmd и т.п. спрашивает пароль админской учетки и потом всё прекрасно работает. Свойства сети менять тоже можно без проблем, если админский пароль знаешь.
Просто для обычного юзера запрос элевейшена требует пароля админа. А для админа - просто кнопку ок по-умолчанию.
И все кнопки в панели управления вроде точно так же работают.
а вынуждены они были потому что половина программ срала в program files, и еще потому, что не было нормального sudo.
Ну вот я сижу под юзером, и захотелось мне обновить драйвер. Или поменять IP. И пиздец: мне проще залогиниться второй раз, чем ебстись с runas
а вынуждены они были потому что половина программ срала в program files, и еще потому, что не было нормального sudo.
Ну вот я сижу под юзером, и захотелось мне обновить драйвер. Или поменять IP. И пиздец: мне проще залогиниться второй раз, чем ебстись с runas
а вынуждены они были потому что половина программ срала в program files, и еще потому, что не было нормального sudo.
Ну вот я сижу под юзером, и захотелось мне обновить драйвер. Или поменять IP. И пиздец: мне проще залогиниться второй раз, чем ебстись с runas
а вынуждены они были потому что половина программ срала в program files, и еще потому, что не было нормального sudo.
Ну вот я сижу под юзером, и захотелось мне обновить драйвер. Или поменять IP. И пиздец: мне проще залогиниться второй раз, чем ебстись с runas
а вынуждены они были потому что половина программ срала в program files, и еще потому, что не было нормального sudo.
Ну вот я сижу под юзером, и захотелось мне обновить драйвер. Или поменять IP. И пиздец: мне проще залогиниться второй раз, чем ебстись с runas
а вынуждены они были потому что половина программ срала в program files, и еще потому, что не было нормального sudo.
Ну вот я сижу под юзером, и захотелось мне обновить драйвер. Или поменять IP. И пиздец: мне проще залогиниться второй раз, чем ебстись с runas
а вынуждены они были потому что половина программ срала в program files, и еще потому, что не было нормального sudo.
Ну вот я сижу под юзером, и захотелось мне обновить драйвер. Или поменять IP. И пиздец: мне проще залогиниться второй раз, чем ебстись с runas
а вынуждены они были потому что половина программ срала в program files, и еще потому, что не было нормального sudo.
Ну вот я сижу под юзером, и захотелось мне обновить драйвер. Или поменять IP. И пиздец: мне проще залогиниться второй раз, чем ебстись с runas
а вынуждены они были потому что половина программ срала в program files, и еще потому, что не было нормального sudo.
Ну вот я сижу под юзером, и захотелось мне обновить драйвер. Или поменять IP. И пиздец: мне проще залогиниться второй раз, чем ебстись с runas
а вынуждены они были потому что половина программ срала в program files, и еще потому, что не было нормального sudo.
Ну вот я сижу под юзером, и захотелось мне обновить драйвер. Или поменять IP. И пиздец: мне проще залогиниться второй раз, чем ебстись с runas
а вынуждены они были потому что половина программ срала в program files, и еще потому, что не было нормального sudo.
Ну вот я сижу под юзером, и захотелось мне обновить драйвер. Или поменять IP. И пиздец: мне проще залогиниться второй раз, чем ебстись с runas
а вынуждены они были потому что половина программ срала в program files, и еще потому, что не было нормального sudo.
Ну вот я сижу под юзером, и захотелось мне обновить драйвер. Или поменять IP. И пиздец: мне проще залогиниться второй раз, чем ебстись с runas
а вынуждены они были потому что половина программ срала в program files, и еще потому, что не было нормального sudo.
Ну вот я сижу под юзером, и захотелось мне обновить драйвер. Или поменять IP. И пиздец: мне проще залогиниться второй раз, чем ебстись с runas
а вынуждены они были потому что половина программ срала в program files, и еще потому, что не было нормального sudo.
Ну вот я сижу под юзером, и захотелось мне обновить драйвер. Или поменять IP. И пиздец: мне проще залогиниться второй раз, чем ебстись с runas
а вынуждены они были потому что половина программ срала в program files, и еще потому, что не было нормального sudo.
Ну вот я сижу под юзером, и захотелось мне обновить драйвер. Или поменять IP. И пиздец: мне проще залогиниться второй раз, чем ебстись с runas
а вынуждены они были потому что половина программ срала в program files, и еще потому, что не было нормального sudo.
Ну вот я сижу под юзером, и захотелось мне обновить драйвер. Или поменять IP. И пиздец: мне проще залогиниться второй раз, чем ебстись с runas
а вынуждены они были потому что половина программ срала в program files, и еще потому, что не было нормального sudo.
Ну вот я сижу под юзером, и захотелось мне обновить драйвер. Или поменять IP. И пиздец: мне проще залогиниться второй раз, чем ебстись с runas
а вынуждены они были потому что половина программ срала в program files, и еще потому, что не было нормального sudo.
Ну вот я сижу под юзером, и захотелось мне обновить драйвер. Или поменять IP. И пиздец: мне проще залогиниться второй раз, чем ебстись с runas
а вынуждены они были потому что половина программ срала в program files, и еще потому, что не было нормального sudo.
Ну вот я сижу под юзером, и захотелось мне обновить драйвер. Или поменять IP. И пиздец: мне проще залогиниться второй раз, чем ебстись с runas
а вынуждены они были потому что половина программ срала в program files, и еще потому, что не было нормального sudo.
Ну вот я сижу под юзером, и захотелось мне обновить драйвер. Или поменять IP. И пиздец: мне проще залогиниться второй раз, чем ебстись с runas
Это как сообщения в mc/far, которые никто не читает и на автомате жмёт энтер.
Не, типа ты видишь (или, ещё лучше, вручную вводишь) впереди команды слово «sudo» и понимаешь, что дальше будет опасно. Ну типа как значок «Не влезай, убьёт».
> Это как сообщения в mc/far, которые никто не читает и на автомате жмёт энтер.
Эх, вспоминаю, как я не прочитал сообщения «apt» и остался на системе с удалённым libc6…
У меня в рутовом профиле был красный mc и красный root в приглашении ко вводу. Вот их я реально видел.
Ну я за что купил — за то продаю. Сам-то я под рутом обычно сижу :-).
Рандомное говно в домашней папке слишком много прав имеет, на самом деле. К примеру, оно может шариться по твоей локалке. Может писать на флешки. Может через какую-нибудь дыру в сервисах, коих тысячи, повысить себе привилегии до админских. Куча софта тупо не готова к атакам изнутри.
Я бы просто отдельный комп собрал ему. И пусть сам его чинит, если какое-нибудь говно скачает. Все права есть.
Существуют «портативные программы», которые не срут в реестр.
мне не нужны для этого админские права
1. В неконсистентности. Одна параша стоит в «Program Files», другая — в «Program Files (x86)», третья — в «%AppData%», четвёртая — в «%AppData%\..\Local».
2. В безопасности: в общем и целом, исполняемые файлы в папках, в которые юзер может записывать данные, — говнище. Я не так давно в обсуждении «SRP» за это пояснял.
Прыщи очень неконсистенты: одни настройки баша лежат в /etc/profile, другие в ~/.bash_profile
>исполняемые файлы в папках, в которые юзер может записывать данные, — говнище
А как ты предлагаешь ставить программы?
Звать админа каждый раз?
Ну и чо, теперь надо брать всё говно из прыщей? Прыщавое говно не становится неговном просто потому, что так сделали в прыщах.
> А как ты предлагаешь ставить программы?
> Звать админа каждый раз?
В каком сценарии? У меня вот личный комп есть, я сам себе админ.
То есть наличие домашней папки ты считаешь говном?
>В каком сценарии?
Я жеж описал же: есть семейный комп, на него заходят гости и дети, например.
Домашней папки, в которой находятся исключительно конфиги и неисполняемые данные? Конечно нет.
> Я жеж описал же: есть семейный комп, на него заходят гости и дети, например.
Тогда нужно смотреть, какие на этом компе есть данные и насколько они ценны. Если там только игры да кинцо — я бы всё оставил как есть, с антивирусом и стандартными пользовательскими аккаунтами без ограничений.
А вот если в твоём акке лежат условные (!) ключи для доступа к прод-серверу «Гугла», то в таком случае я бы рекомендовал грамотно настроенный «SRP» и запрет на запуск любых скачанных исполняемых файлов.
И вот ты предлагаешь
>с антивирусом и стандартными пользовательскими аккаунтами без ограничений.
То есть ровно то, с чего мы начали: ребенок или гость сидит под пользователем, ставит себе игры в домашнюю папку, и не может сломать мой аккаунт
Если ко мне в гости придет хакер, то он взломает эту систему конечно, но они ко мне не ходят
Конечно, если ты рагулярно делаешь бэкапы на изолированную систему и не хранишь на общем ПК важных данных, то на этот шанс можно спокойно забить.
/lib/i386-linux-gnu
/lib/x86_64-linux-gnu
/lib32
/lib64
/libx32
/usr/lib
/usr/lib/i386-linux-gnu
/usr/lib/x86_64-linux-gnu
/usr/lib32
/usr/libx32
~/Library
Меня просто заебало постоянно искать, куда очередное говно положило свои говноконфиги и говноданные: в «Local», в «Roaming», в «Документы», в «%userprofile%», в «ProgramData», в «Program Files» (привет, «Steam»!) или ещё куда-нибудь. Ёбанная неконсистентность.
https://i.imgur.com/ul3r3Ap.jpg
вообще это самое плохое, что случилось с IT в 20 веке не считая ПХП
но вообще файловое говно проще бекапить, дифиить, искать по нему итд
А когда они в него рекомендовали срать? В «Windows 3.x» в реестре был единственный корень (HKEY_CLASSES_ROOT; начиная с 95 и NT, у него есть псевдоним HKEY_LOCAL_MACHINE\Classes). Этот куст хранил только обработку расширений файлов оболочкой и регистрацию OLE, туда особо не посрёшь. Программы тогда хранили свои настройки в лучшем случае в ini-файлах.
Возможность срать рандомными данными появилась как раз в 95.
Начал кукарекать. Ко-ко-котухи, поясните за идиоматичность, пожалуйста.
потом
такую хуню можно в одну строку, и если у ж ты contains, то сделай перегрухку оператору
Тогда можно так
есть мнение, что обычные императивные циклы лучше форычей, если ты не собираешься строить длиные цепочки
но это вкусовщина
обрати внимание, что вместо get я пишу
и что нулл сейфити работает
> тут, как мне кажется, императивщина понятнее функциональщины, но это не точно
Пожалуй, да. Я изначально там обычный цикл с «break» и написал, но в add() очень уж красиво получилось впилить forEach, решил последовать старому совету про то, что когда в руке молоток, всё вокруг кажется гвоздями.
> и что нулл сейфити работает
Угу, смарткасты мне понравились (их ещё «Идея» зелёненьким подсвечивает, круто).
тут, как мне кажется, императивщина понятнее функциональщины, но это не точно
Пожалуй, да. Я изначально там обычный цикл с «break» и написал, но в add() очень уж красиво получилось впилить forEach, решил последовать старому совету про то, что когда в руке молоток, всё вокруг кажется гвоздями.
и что нулл сейфити работает
Угу, смарткасты мне понравились (их ещё «Идея» зелёненьким подсвечивает, круто).
тут, как мне кажется, императивщина понятнее функциональщины, но это не точно
Пожалуй, да. Я изначально там обычный цикл с «break» и написал, но в add() очень уж красиво получилось впилить forEach, решил последовать старому совету про то, что когда в руке молоток, всё вокруг кажется гвоздями.
и что нулл сейфити работает
Угу, смарткасты мне понравились (их ещё «Идея» зелёненьким подсвечивает, круто).
тут, как мне кажется, императивщина понятнее функциональщины, но это не точно
Пожалуй, да. Я изначально там обычный цикл с «break» и написал, но в add() очень уж красиво получилось впилить forEach, решил последовать старому совету про то, что когда в руке молоток, всё вокруг кажется гвоздями.
и что нулл сейфити работает
Угу, смарткасты мне понравились (их ещё «Идея» зелёненьким подсвечивает, круто).
тут, как мне кажется, императивщина понятнее функциональщины, но это не точно
Пожалуй, да. Я изначально там обычный цикл с «break» и написал, но в add() очень уж красиво получилось впилить forEach, решил последовать старому совету про то, что когда в руке молоток, всё вокруг кажется гвоздями.
и что нулл сейфити работает
Угу, смарткасты мне понравились (их ещё «Идея» зелёненьким подсвечивает, круто).
тут, как мне кажется, императивщина понятнее функциональщины, но это не точно
Пожалуй, да. Я изначально там обычный цикл с «break» и написал, но в add() очень уж красиво получилось впилить forEach, решил последовать старому совету про то, что когда в руке молоток, всё вокруг кажется гвоздями.
и что нулл сейфити работает
Угу, смарткасты мне понравились (их ещё «Идея» зелёненьким подсвечивает, круто).
тут, как мне кажется, императивщина понятнее функциональщины, но это не точно
Пожалуй, да. Я изначально там обычный цикл с «break» и написал, но в add() очень уж красиво получилось впилить forEach, решил последовать старому совету про то, что когда в руке молоток, всё вокруг кажется гвоздями.
и что нулл сейфити работает
Угу, смарткасты мне понравились (их ещё «Идея» зелёненьким подсвечивает, круто).
тут, как мне кажется, императивщина понятнее функциональщины, но это не точно
Пожалуй, да. Я изначально там обычный цикл с «break» и написал, но в add() очень уж красиво получилось впилить forEach, решил последовать старому совету про то, что когда в руке молоток, всё вокруг кажется гвоздями.
и что нулл сейфити работает
Угу, смарткасты мне понравились (их ещё «Идея» зелёненьким подсвечивает, круто).
тут, как мне кажется, императивщина понятнее функциональщины, но это не точно
Пожалуй, да. Я изначально там обычный цикл с «break» и написал, но в add() очень уж красиво получилось впилить forEach, решил последовать старому совету про то, что когда в руке молоток, всё вокруг кажется гвоздями.
и что нулл сейфити работает
Угу, смарткасты мне понравились (их ещё «Идея» зелёненьким подсвечивает, круто).
тут, как мне кажется, императивщина понятнее функциональщины, но это не точно
Пожалуй, да. Я изначально там обычный цикл с «break» и написал, но в add() очень уж красиво получилось впилить forEach, решил последовать старому совету про то, что когда в руке молоток, всё вокруг кажется гвоздями.
и что нулл сейфити работает
Угу, смарткасты мне понравились (их ещё «Идея» зелёненьким подсвечивает, круто).
тут, как мне кажется, императивщина понятнее функциональщины, но это не точно
Пожалуй, да. Я изначально там обычный цикл с «break» и написал, но в add() очень уж красиво получилось впилить forEach, решил последовать старому совету про то, что когда в руке молоток, всё вокруг кажется гвоздями.
и что нулл сейфити работает
Угу, смарткасты мне понравились (их ещё «Идея» зелёненьким подсвечивает, круто).
Кстати, "реально нужный код" скорее всего выглядит так
> Житель Брисбена вернулся домой и заметил огромную дыру в потолке. Практически сразу он обнаружил и виновников разрухи: на полу свернулись два ромбических австралийских питона, сообщает CNN.
https://www.newsvl.ru/vlad/2020/09/02/192736/
Завтра ветер сам перевернет календарь
https://habr.com/ru/users/assembled/comments/
У вас та же идея, кто это может быть?
спроси его про tcl, и все станет на свои места
https://pbs.twimg.com/media/Eg2tQ15WAAMY-Er?format=png&name=900x900
Мне это не очень понятно: а до него одни мужики только были?
Пиздец там содомия наверное цвела, хорошо что я тогда не жил еще
Похоже, что до 17-го века и правда их не было.. интересно. никогда про это не думал
Это щас пошли хитровыебанные девочки, которые хотят и рыбку съесть, и на хуй сесть
ну вообще это нормальное желание для девочек
в общем женщин нет, а докторки и авторки есть
для девочек да
для жостких феминисток типа нет
> докторки и авторки есть
- щас в игнор полетишь
Страйко, у тебя там всё хорошо? Напор, может, снизить?
Напиши мне в #1
Да, проверяю.
Проверяю:
Охуеть, блядь.
софт нужно выпускать каждые 2 недели, и менять его итерфейс без обратной совместимости
Добро пожаловать в 2020, чувак
Зачем тебе аналлайз? Медленно грузица?
Именно по этому я за последователюную загрузку как сами знаете где
Нет, эта штука берёт выражение OnCalendar таймера (ну которое аналог «* * * * *» «Крона») и поясняет, когда таймер с таким OnCalendar будет выполняться. Полезно, чтобы проверить, правильно ли будет запускаться таймер. Там же синтаксис пиздец, могут и напутать.
Нет друзья, я за "крон". Если кому-то хочеца парсер для него,то таких парсеров миллион под все языки мира
Нет друзья, я за "крон". Если кому-то хочеца парсер для него,то таких парсеров миллион под все языки мира
телефоне даже личную информацию хранить, была же история как 16-ти летнюю девченку засудили за изготовление детского порно, из-за того что в её смарте нашли её же ню фоточку.
[/quote]
ахахаха, какой пиздец
Срал ебал я эти ваши современные технологии
Ой, я тоже самое написал.
Во, уважаю, братишка!
Кстати, редкие проблески разума в комментариях малолетние дебилы адепты «Диджитал Резистанс» (это которые копротивлялись блокировке «Телеги» путём пускания из окон бумажных самолётиков) нещадно минусуют:
Какие "революции", такие и "революционеры"
Игра в «бутылочку».
https://ru.wikipedia.org/wiki/Бутылочка
>>> «Буты́лочка» — игра для преимущественно подростковой или молодёжной компании.
Или придётся заново крутить, или найдут барышню, которая ближе всего к воображаемой оси.
Ну или такая компания собралась, что всё ок
>>> на которого укажет горлышко бутылки (или ближайшее лицо противоположного пола)
Ну, я думаю, митингующие и так не знают ровным счётом нихуя. Так что этот просмотр телеграм каналов больше чтобы запугать и отбить желание сходить ещё раз, чем чтобы что-то найти.
Все эти попытки добавить в «Телегу» пятое колесо второе дно выглядят как приделывание нанотинановой дужки к старому китайскому сторублёвому навесному замку.
^^^ туда ^^^ / vvv сюда vvv
крестоёбы, чем addressof лучше амперсанда?
Гы-гы.
И std::real_address_of чтобы ее обойти.
но в обычных версиях нет
крестобляди дали переопределить оператор взятия заще адреса, но потом сделали спец оператор, который всё равно берет адрес, даже если оператор взятия адреса переопределен?
Стесняюсь спросить, а каков юзкейс переопределения взятья адреса?
Думаю я, что надо быть крутым чуваком, что ты такая чудесная абстракция не протекла
Ога. Какой-нибудь
Это, впрочем, и в котлине можно
& * - ~ ! -- + ++ --
а есть оператор, чтобы вызвать реальный +, даже если ++ перегрузили? типа plusplus?
Хотя так-то кресты же начали с того, что сдвиг стали юзать как пхание в стрим
http://govnokod.ru/11549
http://govnokod.ru/18440
Я против тупорогих ослоёбов из жабы, где вообще ничего не переопределено (кроме плюса у строки), но я не очень верю в DSLи тоже: чтобы пользовать DSL из языка, нужно оч хорошо знать язык, на котором он написан. Иначе будешь тупить
Однозначно лучше операторов сдвига для cin / cout.
https://ideone.com/sQbVcy
Спойлер: 23 будет.
Попробуй лучше std::cout << 2 + 3;
З.Ы. Хм, блин, и тут подвоха нет.
Я предпочитаю его в скобки брать. Хватит с меня багров с проёбом приоритетов.
К тому же там любезно разложены разные UB.
Это тот случай когда простые shr/shl лучше ебаных значков.
Это да. Самое противное поведение там для uint8_t аля unsigned char.
Подло. С char как-то ждёшь подвоха, а uint8_t совсем подло.
Какое отношение имеет восьмибитный беззнаковый октет uint8_t к минимально адресуемой единице памяти?
Которая может быть и не октетом.
Зачем тогда весь цирк с CHAR_BIT и UCHAR_MAX?
byte из нового стандарта так и запилен, насколько я помню.
Но багры со старыми типами уже никогда не исправить.
А в «Си» решили смешать две точки. Зачем? Зачем?
Даже без этих крестобагров, которые во многом логичное следствие сишных проёбов.
А на DSP, где char может быть 16- или 32-битным?
Сукапиздецблять.
Именно поэтому я за «printf» и «putchar».
Так?
Потом до чуваков дошло, что в мире уже давным-давно все протоколы с октетами и все байты восьмибитные и каждая либа и прога всё равно дефайнит себе u8 и u16 для удобства.
Вот они и добавили в стандарт uint8_t, uint16_t и т.п. Но не вводить же новые типы, хуйнули их алиасами на старые. А для платформ, где типов такой длины вообще нет или они тормозят, оставили uint_fast8_t и uint_least8_t.
я имел ввиду, что вот я пишу под пинду
у меня есть int
а есть int32_t
а есть DWORD
и это лулзлово
Вообще говоря нет, это часть интерфейса. К примеру, ты не можешь сделать отдельные перегрузки функций для DWORD и для uint32_t.
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
>отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Вообще говоря да. Тот же WPARAM вырос с 16 бит до 32 в своё время.
Но с тех пор майки вроде бы никогда тайпдефы не меняли. Ибо куча народу уже завязалось на 32-битность DWORD.
Хотя конечно если у меня 16ти битное детство было, то я сразу смекну, что DWORD это 32, да и майки про это пишут
https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp/262627d8-3418-4627-9218-4ffe110850b2
а есть так же DWORD64 и DWORD32, блядь
знал про такую тему, кстати?
__int3264
https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp/e29954c2-6e95-46ea-bd2a-4209645cab99
Если явно не пишут - тогда не можешь.
Всё просто :3
Там MSDN'а то поди не было ещё.
Первый msdn я увидел в .chm файлах на диске с шестой или пятой кажется студией
winhlp чтоли
а сверху табики такие
вот же winhlp!
https://www.betaarchive.co.uk/imageupload/1256700924.or.495128.png
лол)
uint32_t полностью соответствующий аналог
почему не можешь?
когда не было фиксированных типов тебе надо было бы либо самостоятельно определить, какому встроенному типу соответствует DWORD (но windows.h делал это как раз за тебя)
> WPARAM вырос с 16 бит до 32
значит ли это, что и DWORD может вырасти?
Выросли почти на метр.
Какой теперь они длины?
Но если ты встретил какой-то тип, про который явно не сказали его длину - не завязывайся на неё.
тем не менее, я бы всё таки ссыканул пхать uint32 туда, где написано DWORD. Ну вот чисто из суеверий, хотя и написано, что это одно и тоже
чтобы "а вот если"
но врядли они ещё раз сами себе выстрелят в ногу и поменяют битность ключевых типов своего апи
в любом случае у тебя будет работать слой совместимости, вон в инете пишут, что 16 битные приложения даже на 32-битной шиндошс 10 можно запустить
ну и 32-х тоже есть
и линукс ваш тоже дос вроде
и биос дос
ну, старый биос
мне теперь инетресно можно срать в окошко консоли, это ведь не твое окошко на самом деле, а конхоста
Ну я в рабочий стол и панель задач и просто так рисовал и добавлял свои кнопки. Не думаю, что конхост чем-то отличается.
Ты только в окна с более высоким уровнем изоляции (аля "запущенные с правами админа") срать не можешь.
Получилась такая питушня:
https://i.imgur.com/rwzeR5D.png
В общем, картинки и текст рисуются в одном окне, скроллятся вместе. Текст по-прежнему можно выделять, картинку нельзя.
Зачем? Зачем?
Вроде был какой-то способ? Кажется, сторонняя программа «nircmd» так умеет?
Мы в свое время это решали запуском отдельной тулы, у которой в манифесте был запрошен UAC, и пользователь на это соглашался, а потом мы с ней общались по пайпам
а так нет
Мне сохранялка паролей будет только мешать логиниться петухами, обезьянами, свиньями и прочей живностью.
ого, иканус не часто матерится
Псевдоторминалы один хуй только в десятку завезли, никто не запускает фар через ssh.
рисовать в сосноли нельзя, но можно сделать дочернее оконо и действительно рисовать) забавно
ну да, терминалы соснут
ну открывало тупо видео память и срало туда
Иксы тоже раньше так делали, но потом все поняли, что это кал: кильнул программу, и у тебя видеокарта в непонятном состоянии осталась.
Потом завезли DRI, теперь люди работают с видео через ядро
На 64-битной нужен мумулятор, например, неофициальные «OTVDM» и «NTVDMx64», собранные из спизженных исходников «Windows»:
https://github.com/otya128/winevdm
http://www.columbia.edu/~em36/ntvdmx64.html
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Это скомпилируется, но будет идеологически неверно
или верно? или можно считать, что int32 это всегда всегда DWORD?
отдельные перегрузки функций
в няшной вроде бы и нет перегрузок как таковых
Почему нет такого оператора, если для взятия адреса он есть?
http://govnokod.ru/26910
https://i.imgur.com/6kx2jGL.png
Прыщебляди соснули.
ЧЯДНТ?
кстати, поставил центос8 потестить в вагрант
iptables там есть, в режиме компат с nftables
а вот докер-це хуй там плавал, ничего не пересобрали для восьмерки
Это фирменная фича центности: из коробки там есть только то, что делает RH. А RH делает очень мало чего.
Все остальное делают добровольцы, а их мало, и они ленивые
Я месяца два ждал пока они opendkim соберут под восьмерку, помню
они там пустили слух, что мы работаем только с iptables, а в рх8 другой питух, никто докер переписывать не будет, поэтому ждите ебилдов
как я понимаю, ебилды давно в центос завезли в виде возможности управлять нфтаблес через старый интерфейс иптаблес
ну или они с иптаблес работали прямо сишным апи (модуля) ядра, и оно, конечно, пошло по пизде, и тогда они правы, что до сих пор докер соснулей для рх8/центос8
несколько лет назад натрахался с почтовиком
заебался
постфикс должен сдохнуть
жду когда поттеринг сделает новый почтовик и встроит его в системд
Реальных пользователей иметь так же не обязательно.
Зачем хранить почту в базе? Зачем вообще реляционная база, если ты не собираешься делать джойны и селекты по условиям?
чтобы легко искать по каким-то специфическим запросам
чтобы легко удалять письма старше Х
Что мешает энкриптить файловую систему?
>чтобы легко искать по каким-то специфическим запросам
Каким например?
>чтобы легко удалять письма старше Х
Странный запрос (в imap вроде бы такой команды нет), но вполне реализуемый в Maildir, если уметь пользоваться командой find
> Каким например?
full-text / fuzzy
> но вполне реализуемый в Maildir, если уметь пользоваться командой find
буханка и троллейбус
Я мешаю. Тем что следующего мудака, который подобное реализует, найду и покараю своим волшебным жезлом во имя луны.
1. отсутствтие транзакционности
2. отсутствие слежения за консистентностью
3. отсутвие индексов, оптимизирующих поиск
4. отсутвие поддержки запросов
5. огромный оверхед для хранения (json текстовый формат с кучей мусора)
>full-text / fuzzy
grep более лучший full-text. А fuzzy база всё равно делает не очень хорошо.
Если реально хочется делать fuzzy по письмам (что странно, так как такого API в IMAP нет) то наверное лучше брать какой-нить
Elasticsearch / Solr /. Sphinx
>буханка и троллейбус
Ты про твой же собственный запрос "легко удалять письма старше Х"?
Ну ок
> 2. отсутствие слежения за консистентностью
> 3. отсутвие индексов, оптимизирующих поиск
> 4. отсутвие поддержки запросов
> 5. огромный оверхед для хранения (json текстовый формат с кучей мусора)
вот ты и написал зачем тут нужна база
> то наверное лучше брать какой-нить Elasticsearch / Solr /. Sphinx
мы и не говорили какое именно хранилище мы берем. а эластиком я по работе занимаюсь. так-то!
> Ты про твой же собственный запрос "легко удалять письма старше Х"?
нет, буханка и троллейбус - это когда требование Х выполняется через Y только по причине личной привязанности к Y
ни один из этих пунктов не актуален для почтового сервера
> 1. отсутствтие транзакционности
не существует задачи "создать письмо B только если создалось письмо A"
> 2. отсутствие слежения за консистентностью
не существует задачи "письмо A должно иметь как минимум два письма B"
> 3. отсутвие индексов, оптимизирующих поиск
не существует задачи "выбрать все письма от пупкина" потому что ее нет в протоколах почты, хотя такая задача могла бы быть, да
> 4. отсутвие поддержки запросов
не существует задачи "выбрать все письма по запросу" потому что ее нет в протоколах почты, хотя такая задача могла бы быть, да
И того, смысл имеют только пункты 3 и 4, и их легко реализовать Elasticsearch / Solr /. Sphinx
>мы и не говорили какое именно хранилище мы берем.
Elasticsearch / Solr /. Sphinx это не хранилища. Индекс делается поверх существующего хранилища
> это когда требование Х выполняется через Y только по причине личной привязанности к Y
То есть когда люди хранят в mysql письма, фотографии и файлы настроек по причине личной привязанности к субд.
СУБД лучше чем файловая система. Чем лучше? Чем файловая система
> 2. отсутствие слежения за консистентностью
существует задача "письмо А не может быть записано наполовину". это А в эйсиде.
существует задача "письмо должно быть записано всеми мультипартами"
> не существует задачи "выбрать все письма от пупкина" потому что ее нет в протоколах почты, хотя такая задача могла бы быть, да
выше мы уже говорили про полнотекст
> Elasticsearch / Solr /. Sphinx это не хранилища. Индекс делается поверх существующего хранилища
чего блят? elasticsearch это поисковый движок, который можно настроить на хранение только индекса, но этого никто никогда не делает, solr туда же. это Lucene является стендэлон-библиотекой, которую вертишь как хочешь.
С этой задачей отлично справляется MTA с файловой системой. Он не имеет права сообщать о принятии письма, покуда он не сохранил его в надежное место. А когда он его сохранил и сделал fsync, то оно уже не потеряется (кроме случаев хардварного сбоя, но он не спасет и субд).
>существует задача "письмо должно быть записано всеми мультипартами"
Мультипартами чего?
>выше мы уже говорили про полнотекст
И я уже выше сказал, что устанавливать субд ради полнотекстового поиска -- не правильно. Для этого есть специальные инструменты.
Кроме того, задачи полнотекстового поиска на сервере почты не существует так как ее нету в протоколе IMAP, но если уж ее делать, то явно не через базу.
> но этого никто никогда не делает,
ну да
https://stackoverflow.com/questions/29841348/how-reliable-is-elasticsearch-as-a-primary-datastore-against-factors-like-write
https://stackoverflow.com/questions/4258593/using-solr-search-index-as-a-database-is-this-wrong
ты несешь хуйню про эластиксерч, я говорю тебе, что это явная хуйня, ты начинаешь кидаться какими-то ссылками, где ни разу не сказано, что "эластиксерч краулит какую-то другую хранилку"
давайте вы не будете рассказывать о том, с чем не имели дело
попробуй их прочитать, и узнаешь почему твоя фраза "никто никогда не делает" не является правдой.
ElasticSearch не используется в качестве главного хранилища если нужна надёжность. А в случае с почтой она нужна.
> чего блят? elasticsearch это поисковый движок, который можно настроить на хранение только индекса, но этого никто никогда не делает
ну ребят, ну вы чего
> если нужна надёжность. А в случае с почтой она нужна.
вы там топите за хуевое складирование файлов прямо на фс без всяких wal, и говорите что эластик ненадежен?
предлагаете в лучшем случае однонодовую рсубд, и эластик опять ненадежен?
давайте вы мне докажете, что классический мастер-слейв отработает лучше временного моргания мастера в эластике, тогда и поговорим.
поговорим о том, что в эластике могут расходиться версии одного документа, а меил с одним и теи же айди вы никогда не переписываете
Возможно, я тебя не понял.
Давай попробуем снова.
Следующая фраза является неверной:
"elasticsearch это поисковый движок, который можно настроить на хранение только индекса, но этого никто никогда не делает"
Очень многие делают именно так: Данные хранят в надежном месте, а эластиком делают только индекс и поиск. Это обсуждается по данным ссылкам.
>вы там топите за хуевое складирование файлов
Файловая система более надежна и удобная в востановлении, чем эластик. "Хуевое" это не технический термин.
>без всяких wal
У файловой системы есть wal, но он следит только за консистеностью самой системы, а не данными.
Однако, почтовый сервер и так обязан сначала записать письмо в надежное место, и только потом вернуть OK пользователю. WAL тут избыточен.
> классический мастер-слейв
Напоминаю, что мы говорим о хранении писем в почтовом ящике почтового сервера с доступом по IMAP.
вы там либо крестик наденьте, либо прекращайте топить за "надежность". пока вы ебошите на диск одной ноды, вся ваша надежность улетает с этим самым диском
Для решения его задач ФС отлично подходит.
Ты выставляешь новые требования: мастер-слейв репликация, индексирование почты и другие требования, на решения которых постфикс расчитан не был.
Для выполнения указаных тобою требований нужно другое приложение с субд, эластиком итд.
Говорить "фс хуже субд" неверно без указания требований
это ровно та же история, что и с "нахуй вам байт в сишке, у вас же char есть"
postfix передает почту в local(8)
http://www.postfix.org/local.8.html
Ты можешь сделать свой local(8), и писать в базу.
Но если бы дефолтный MTA в unix требовал наличия реляционной субд для хранения почты, то это было бы очень накладно кмк
Это не безопасно: демон работает от одного польщователя, а твоя прога может хотеть работать от другого (чтобы иметь нужные пермишены)
Именно потому local это отдельная прога.
Ты можешь написать ее хоть на паскале. Она будет вызываться с параметрами "кому" и "путь до письма" (или получает их через сокет)
А дальше ты сам будешь делать, что тебе нужно
grep, юникс-вей во все поля.
grep, юникс-вей во все поля.
grep, юникс-вей во все поля.
grep, юникс-вей во все поля.
grep, юникс-вей во все поля.
grep, юникс-вей во все поля.
grep, юникс-вей во все поля.
grep, юникс-вей во все поля.
grep, юникс-вей во все поля.
grep, юникс-вей во все поля.
grep, юникс-вей во все поля.
Ну базы не только реляционные бывают. А файлуху использовать для таких целей — очень, очень плохая идея. Реплицировать/бэкапить кучу мелких файлов — это страдание. На прошлой работе кто-то этого не знал, и нам как-то пришлось срочно 8TB мелкой файлушни из DC в AWS перетаскивать. Это был анекдот тот ещё: rsync тупо список файлов строил бы неделю, пришлось делать dd + nc через VPN, лол.
А разве база умеет более лучше делать diff, чем rsync? Базу можно конечно целиком переписать, но и файлы можно
И это конечно намного запутаннее и сложнее в дебаге, чем maildir.
представь, что ты один раз получишь ошибку "неверный формат файла базы", а это бинарное говнище на гигабайт. Сразу с теплотой подумаешь про maildir в домашней папке пользователя, где одно письмо -- один файл
Нихуя.
Горячий бекап базы всгеда имеет консистентное состояние - все письма целые, все индексы актуальные. Либо письмо есть либо его нет.
Горячий бекап файлухи - это хуйня с полубитыми файлами.
>все индексы
можно подробнее про индексы в Maildir?
Что будет, если у меня файл открыт на запись в момент снепшота и я половину уже перетёр?
Понятно, что даже на ext можно врубить транзакционный режим. Вот только он немного тормозит.
Вспомни Shadow Volume Copy в винде
Пруф? Особенно про LVM. Про правильно настроенный ZFS я готов поверить на слово.
LVM действительно делает exact copy of a logical volume, frozen at some point in time, так что на момент бекапа почтовик лучше отключить.
нет
> LVM snapshots консистенты
нет
Короче, с нормальной базой у тебя будет write-ahead лог, репликация, пирфоманс и снапшоты. С файлами — закорапченные данные, отсутствие fault-tolerance и геморрой. (Если что, в K. я пилил движок БД, и один из легаси бекендов был на файлах, и это был пиздец)
Да, ты прав: lvm плевать на файлы, он работает с блочным устройством.
>С файлами — закорапченные данные
Почтовые сервера реализуют Write ahead сами.
Они сначала полностью принимают письмо, и флашат его на диск. Затем сообщают клиенту, что письмо принято.
Они обязаны делать это по стандарту.
>репликация, пирфоманс и снапшоты.
Перформанс чего?
Репликация и снапшоты -- да, но у MTA нет требования реализовывать репликацию и снапшоты, как было сказано выше
Ну да. Придёт троян удалять файлы и задумается на месяц-другой. А там его уже и задетектят.
Ну если ты вебморду или локальный почтовик прикручиваешь, то без индексов там никак. Не будешь же на каждый чих перечитывать и парсить всю папку с тыщами писем и вложений.
И эти индексы придётся резетить после восстановления бекапа. Ибо они не идут в одной транзакции с записью файла в майлдир.
Если ты прикручиваешь вебморду, то у нее скорее всего будет свой индекс, и тогда действительно может случиться неконсистентность
>локальный почтовик
думаю, что у mutt свои индексы
>И эти индексы придётся резетить после восстановления бекапа
Совершенно верно. Индексы придется строить заново.
Консистентны с точки зрения чего?
Но это слишком низкоуровневая консистентность, не решающая описанную Бормандом проблему, о чем вы верно с ним и сказали
Дык у zfs она точно такая же, хоть и чуть лучше. Если нет поддержки со стороны софта. А для почтовиков из говна и палок она вряд ли есть.
Внутри одного файла может всё и норм будет, но два разных файла сами в транзакцию не объединятся. Будешь индексы перестраивать как в ёбаном фокспро.
ZFS это не только блочное устройство, но и файловая система поверх него.
Snapshots can be created almost instantly, and they initially consume no additional disk space within the pool. However, as data within the active dataset changes, the snapshot consumes disk space by continuing to reference the old data.
Все изменения в ZFS напоминают VCS, и ты можешь сделать снепшот указав на конкретный "коммит".
Если бы это было не так, то сделать снепшот работающей системы было бы невозможно, нет?
>но два разных файла сами в транзакцию не объединятся.
Разумеется, как не объединятся и два последовательных коммита в VCS.
Транзакционная фс была у MS, но ее убили.
>Будешь индексы перестраивать
Верно. Но индексов у Maildir нет.
Если мне нужны консистентные индексы, то придется брать субд.
Потому что makaka@bigframe1
Поттеринг сделает конечно, будет почтовик, не работающий без dbus
Просто как супервизор для нескольких сервисов в одном контейнере?
правда сильно пропатченную
Там не systemd конечно, но супервизор какой-то есть (без него будет pid 1 problem: некому похоронить будет зомби).
У нас толстый контейнер, потому что там gunicorn, nginx и cron одновременно (еще был syslog). Такой багор ваще
ps aux
kill -9 <pid>
А в юнитфайле написать, что рестартить, если гуф
systemctl разве не через него сервер ищет?
И PulseAudio вроде, и pkexec
govc is a vSphere CLI built on top of govmomi.
Follows pyvmomi and rbvmomi: language prefix + the vSphere acronym "VM Object Management Infrastructure".
Follows pyvmomi and rbvmomi: language prefix + the vSphere acronym VM Object Management Infrastructure.
Follows pyvmomi and rbvmomi: language prefix + the vSphere acronym VM Object Management Infrastructure.
Follows pyvmomi and rbvmomi: language prefix + the vSphere acronym VM Object Management Infrastructure.
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/
https://govnokod.ru/26916
https://govnokod.xyz/_26916/