• Как/где нынче визуально рисуют сайты?

    xenon
    @xenon Автор вопроса
    Михаил Р., а IDE - vscode и что-то подобное, или есть специальные, более правильные для HTML?
    Написано
  • Как/где нынче визуально рисуют сайты?

    xenon
    @xenon Автор вопроса
    Спасибо. Из Figma что выходит - уже HTML/CSS (для п.3) или просто картинки согласования и чтобы потом (в текстовом редакторе) повторить что-то похожее?
    Написано
  • Что стоит использовать для защиты PHP-кода на текущий момент?

    Владимир, вроде я это и написал. "Этого кода нет на клиентской части". Скажем (чуть наивный пример) - в целом бухгалтерия на PHP у клиента, а вот какой-то налог считается на сервере.
    Можно выкусить это, написать локальную функцию расчета, но даже небольшой код для чужого проекта писать уже страшновато и сложновато. А что именно делать на сервере (в идеале, что-то, что локально реализовать было бы сложно) - это уже надо по каждому проекту отдельно решать. В общем, нужно увязать готовую программу с внешним сервисом.
    Написано
  • Что выбрать в качестве промежуточного хранилища в проекте?

    А что значит "поиск начал тормозить", какие цифры? Просто у меня есть проект на python (то есть, относительно "медленный") и я тестировал на базе из 1 млн записей (все в памяти, с диска не подргружается ничего), при этом фильтрация идет по пайтоновскому выражению в запросе (скорее ближе к SELECT ... WHERE в SQL, а не быстрый-эффективный поиск по дереву, как в редисе на С).

    Так вот, при всех этих замедляющих факторах, поиск всех продуктов, где "price<20" из миллиона:
    Products: 1000000 items
    evalidate_raw_eval(): 0.266s


    https://github.com/yaroslaff/evalidate

    четверть секунды. Это слишком много? И это на пайтоне и это фильтрация каждого из миллиона (а не поиск по ключу). Если у вас поиск по ключу, да еще и redis'ом больше занимает - что-то где-то как-то криво.

    И еще вопрос - а как часто обновляются данные у вас? Потому что есть еще такая веселая идея (если обновления редки) - сделать все на статике (например, hugo) и раздавать HTMLки (или JSONки) просто как файлы с диска. Nginx найдет выплюнет статический файл с диска просто моментально. Но это уместно только если обновления редки.
    Написано
  • Почему Ubuntu не фиксит уязвимость в RoundCube с октября?

    xenon
    @xenon Автор вопроса
    CityCat4, так это LTSная версия, должна поддерживаться. Ну и для других версий, посвежее, тоже нету. Как-то это странненько... будто забили на уязвимость.
    Написано
  • Почему Ubuntu не фиксит уязвимость в RoundCube с октября?

    xenon
    @xenon Автор вопроса
    Everything_is_bad, не знаю. Пока что я вообще не уверен в ситуации - мне не верится, что большая дырка для которой есть патч может сверкать уже целый квартал. Думаю, что может быть это я что-то упускаю, путаю...
    Написано
  • Напомните библиотеку/технологию чтобы переводить хеши в мнемоничный человекозапоминаемый вид (что-то вроде "бла-бла-кода")?

    xenon
    @xenon Автор вопроса
    Adamos, ээммм... а сейчас ведь через GPT их легко генерировать! Только я что-то не нашел в интерфейсе ChatGPT где сид указывать - может быть это было в другой нейросети, но где-то можно. Если нейросеть по сиду сможет однозначно генерировать хокку - этот хокку-код тоже будет иногда удобен для использования! :-)
    Написано
  • Напомните библиотеку/технологию чтобы переводить хеши в мнемоничный человекозапоминаемый вид (что-то вроде "бла-бла-кода")?

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

    Мне интереснее какое-то более-менее стандартное и популярное решение. И если таких решений несколько, то важнее то, что наиболее популярно и совместимо и где решены все детские проблемы, которые с собственным велосипедом сразу даже и не видятся. Совместимость - это ведь тоже важно, разве нет?

    Вариант выше про BIP39 - очень хорошо подходит под мой вопрос. Но xkcdpass тоже неплох, спасибо!
    Написано
  • Что лучше, FreeXYZ.com или Free-XYZ.com (слитно или через черточку)?

    xenon
    @xenon Автор вопроса
    Исследования того же Ашманова (его лаборатории) показывают, что ключевая фраза в домене может иметь важное значение

    А поисковик догадывается, что FreeXYZ это про Free и про XYZ или думает, что это про "freexyz"? Нужно ли разделять?
    Написано
  • Есть ли здесь реальная reflected XSS или это false positive (безопасно ли включать URL запроса в код страницы)?

    xenon
    @xenon Автор вопроса
    Там в обычной работе & не может встретиться. Ведь все ссылки делает сам сайт, и они имеют вид t=123. Так что разработчику сайта такой метод не мешает.

    Мне интересно, почему все энкодят... ну то что это полезно - окей, но может быть есть какая-то RFC для этого. Я вот нашел RFC3986, но там это не требуется. И интересно, есть ли малопопулярные браузеры, которые, может быть не экнодят (чтобы показать в случае чего, вот браузер X, у него 0.1% рынка, значит 0.1% ваших пользователей уязвимы)... Вижу, что dillo не энкодит угловые скобки (больше/меньше) например. Но в нем и JS нет :-)
    Написано
  • Как сайт понимает, что я был на нём, если я запретил сохранять cookie, а также удалил все данные с него?

    Не каждое, а только мобильное. И разве IMEI автоматиески передается по HTTP?
    Написано
  • Как "навесить" капчу на готовый сайт (anti-ddos, apache2/nginx)?

    xenon
    @xenon Автор вопроса
    Минус вполне себе терпимый (все лучше, чем когда сайт лежит). Но вопрос - а можно ли сделать капчу чисто на фронтенте (HTML/JS) без бэкенда? Если нельзя и нужен бэк, который будет генерировать кастомную страничку каждый раз или проверять капчу, то не получится ли так что обработка капчи (неправильной, боты ее не могут пройти успешно, но могут делать попытки) будет по сложности-скорости сравнимой с генерацией обычной страницы?
    Написано
  • Как "навесить" капчу на готовый сайт (anti-ddos, apache2/nginx)?

    xenon
    @xenon Автор вопроса
    хм.... ну простенький метод - но вполне рабочий, да! супер! это и в апаче легко сделать через RewriteRule.

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

    Спасибо, рабочая идея!
    Написано
  • Как "навесить" капчу на готовый сайт (anti-ddos, apache2/nginx)?

    xenon
    @xenon Автор вопроса
    Ну, слава Богу, у нас пока "не настоящий" DDoS, но хватает, чтобы положить виртуалку. Так что, пока что, нужна не панацея от всех болезней, включая чуму и рак, а просто удобное лекарство от перхоти.

    zGzn1=Ar4lt1aB нигде не используется, но это случайная часть запроса. В этом - так, а в следующем будет 2bQQj=d3k2nnWs. Я сейчас скриптом и выгрепываю такое. Но проблема - логи большие (особенно, во время атак) и выгрепывать все это занимает ощутимое время, несколько секунд на IP. И за одну итерацию (проверку всех подключенных IP, получаю через lsof) - уходит пара минут. Потом новая итерация. Сервак успевают положить, потом я что-то баню, рестартую, но снова забивают запросами. Через какое-то время забаниваются все сегодняшние IP и атака прекращается.

    Про JS страничку - спасибо, идея очень интересная! А можно ли как-то проверять в вебсервере (то есть - быстро проверять, а не через PHP/Python) какую-то правильность куки (чтобы любая кука не работала)? Чтобы куки для разных IP, User-Agent'ов требовались разными.

    CORS может помочь даже от GET запроса? Нас GET'ами долбят, не POST'ами...

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

    xenon
    @xenon Автор вопроса
    Вообще, да, технически, для моей задачи - совершенно подходит. Мне только не нравится, что оно самописно-велосипедное (я бы так же сделал, и мне это и не нравится). Наверняка должно быть решение лучше, быстрее, надежнее.

    Я нашел, оно в hash. Но беда в том, что в пайтоне дикты не хешируются:

    >>> d={"a":1}
    >>> hash(d)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: unhashable type: 'dict'


    Но есть решение!

    class hashabledict(dict):
        def __hash__(self):
            return hash(tuple(sorted(self.items())))


    Пробуем....

    >>> d1=hashabledict({"a":1})
    >>> d2=hashabledict({"a":1})
    >>> id(d1)
    140407093637744
    >>> id(d2)
    140407093637584
    >>> hash(d1)
    -4488753233891433094
    >>> hash(d2)
    -4488753233891433094


    источник:
    https://stackoverflow.com/questions/1151658/python...
    Написано
  • Как получить какой-нибудь хеш от значения переменной (dict)?

    xenon
    @xenon Автор вопроса
    Тогда уж по-правильному, не только IP:порт удаленного узла сравнивать, но и всю четверку (IP:порт каждого конца). На UDP можем для упрощения забить. Да, в рамках задачи такое решение сработает. Но я подумал, что есть общее решение, способное выдать значение по дикту. Похоже, что общего решения нет.

    Вообще, вариант выше с сериализацией через json неплох, но проблема, что в dict будут не только простые типы, которые сериализуются в json, но и более сложные.
    Написано
  • Как получить какой-нибудь хеш от значения переменной (dict)?

    xenon
    @xenon Автор вопроса
    Вот примерно так я и думал сделать, но мне кажется, что это "велосипед" и на самом деле есть какой-то модуль который лучше их хеширует. А этот ваш ответ - от ChatGPT, нет? :-)

    Проблема не в том, что я не могу выдумать решение, я боюсь, что я упускаю стандартное решение.
    Написано
  • Как получить какой-нибудь хеш от значения переменной (dict)?

    xenon
    @xenon Автор вопроса
    проблема в том, что эти dict мне приходят от другого кода (psutil). То есть, будет что-то вроде (чуть упрощенно)

    с = psutil.net_connections()[0]._asdict()
    и через 10 минут тот же код вернет уже новый dict, но с теми же значениями и хочется этот факт обнаружить.
    Написано
  • Откуда в Google search console появились страницы без слеша и как их убрать (как получить 0 не-индексированных страниц)?

    xenon
    @xenon Автор вопроса
    pashjka, нет, не совсем так (ну или в каком-то смысле). Условно, гугл нашел page/ (правильный адрес) и проиндексировал, а еще нашел и page (без слеша) и ругается, что это не страница, а редирект, и как страницу он ее не проиндексировал.

    Реальной проблемы в этом нет, т.к. страница "товара" все равно проиндексирована. Но вот сообщение про редирект числится в ошибках, и это мне не нравится. Во-первых, не нравится по причине "волки! волки!" - если у меня там будет 500 таких ненастоящих ошибок, я не найду среди них сообщение о какой-то реальной проблеме. Во-вторых, я не очень понимаю откуда вообще этот адрес взялся (и он такой не один) и когда гугл его забудет.

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

    в библиотеке.

    ну вот я веду работу в каталоге ~/repo/evalidate в нем всякие setup.py, README и можно еще и какой-нибудь тестовый x.py там положить. И в этом же каталоге у меня есть еще один каталог evalidate и в нем уже либа (__init__.py и другие файлы).

    вот в x.py делаю import evalidate, и пишу свой тестовый код. Чтобы import сработал из моего подкаталога evalidate, а не использовалась системная библиотека, и нужно поставить переменную окружения export PYTHONPATH=.
    Написано