Рубрика «скрипт» - 3

Скорость загрузки любого сайта во многом зависит от количества и качества используемых изображений. Поэтому очень важно уметь их оптимизировать. Существует множество веб сервисов для этого, но большинство из них обладает недостатками:

  • Нет возможности оптимизировать автоматически много файлов
  • Сложно и неудобно использовать в рабочем процессе

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

Оптимизация изображений с помощью командой строки

Для каждого png файла используются optipng и pngcrush, а для jpg — jpegtran. Для начала опробуем optipng:

Оптимизация изображений bash скриптомЧитать полностью »

Не могу отыскать вирус засевший на сайте.
skyhall.com.ua
Гугл не ругается и свободно пропускает, а Яндекс ругается и сообщает о заражении «Поведенческий анализ»
js скриптов на сайте много, попроверял вроде чистые, размеры с исходниками совпадают.
.htaccess файл чист
Сканировал On-Line сервисами — чист у всех кроме яндекса, ai-bolit — ничего вразумительного не дал. Каспер при входе молчит.
Помогите пожалуйста разобраться в чем проблема.

Читать полностью »

Последний день 21 века в России и эволюция протеста

Последний день 21 века в России и эволюция протеста
Сегодня вступает в силу закон о блокироках сайтов и все об этом уже знают.
Что нас ждёт и что мы будем делать дальше, вкратце описано в этой статье.
А также, сегодня начал работать баннер для форсирования инициативы.
Читать полностью »

Сайт заблокирован по решению органов государственной власти

Меньше месяца осталось до вступления в силу закона, позволяющего блокировать сайты в досудебном порядке за наличие ссылки на нелицензионный контент, оставленной пользователем в комментарии. На данный момент нет никаких сомнений, что данный законопроект не будет отправлен на доработку и это очень плохо. Ответы на вопросы «Почему это плохо?», «Что мы можем с этим сделать?» и «Почему именно мы?» под катом.
Читать полностью »

Если вы работали с syslog'ом, то знаете, что у него есть приложение logger, необходимое для логгирования каких-то действий от обычных пользователей. И если многие программы умеют работать с syslog'ом самостоятельно, то логгировать все действия пользователей — это не всегда простая задача.

Тем не менее, есть как минимум два способа это сделать с использованием bash.
Читать полностью »

Установка «безопасного соединения» с банком Wells FargoНа форуме Hacker News обсуждают нестандартный способ авторизации на сайте Wells Fargo. «Безопасное соединение» с сервером «устанавливается» в несколько этапов и занимает 10 секунд.

loader.jsp

Исходный код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html>
  <head>
    <title>Loading....</title>
  </head>
  <body>
    <p align="center">
      <img src="https://a248.e.akamai.net/6/248/3583/000/wellsoffice.wellsfargo.com/ceoportal/DocumentumRepository/content/images/signon/messaging.gif" width="300" height="30" border="0" alt="Loading Status" /><br />
      <img src="https://a248.e.akamai.net/6/248/3583/000/wellsoffice.wellsfargo.com/ceoportal/DocumentumRepository/content/images/signon/statusbar.gif" width="300" height="30" border="0" alt="Loading Status Bar" />
    </p>
    <script type="text/javascript">
      var selfClose = function() {
        self.close();
      };
      window.onload = function() {
        setTimeout(selfClose, 10000);
      };
      window.onblur = function() {
        selfClose();
      };
    </script>
  </body>
  </html>

Для справки: Wells Fargo — один из крупнейших банков США, годовой оборот 85 миллиардов долларов. Четвёртый банк в США по размеру активов. Со штатом 270 тыс. сотрудников оперирует 9000 отделениями в нескольких странах и обслуживает более 70 миллионов клиентов.
Читать полностью »

В этой главе сказа про дружбу C++ и Python будет на удивление мало использования Boost.Python. Передача исключений туда и обратно является по сути слабым местом данной библиотеки. Будем обходиться родным API языка Python, а где это возможно использовать Boost.Python.
Тем не менее Boost.Python создаёт окружение, в котором исключения из C++ попадают в Python в виде стандартного RuntimeError, а обратно из Python генерируется исключение C++ типа error_already_set, что означает «тебе что-то прилетело, сходи сам почитай что там». И вот здесь нам как раз будет не лишним использовать C-API языка Python, чтобы вычитать необходимую информацию об исключении и преобразовать в соответствующий класс сообразно логике приложения.
К чему такие сложности? — Дело в том, что в Python, в отличие от C++, кроме текста исключения и его типа приходит ещё и traceback — стек до места возникновения исключения. Давайте немного расширим стандартный std::exception дополнительным параметром для этого stacktrace, а заодно напишем конвертер исключений туда и обратно из классов C++ в классы исключений Python.
Читать полностью »

Данная статья не является продолжением повествования об обёртках C++ API. Никаких обёрток сегодня не будет. Хотя по логике это третья часть данного повествования.
Сегодня будет море крови, расчленение существующих типов и магическое превращение их в привычные аналоги в другом языке.
Речь не пойдёт о существующей конвертации между строками, нет, мы напишем свои конвертеры.
Мы превратим привычный datetime.datetime питона в boost::posix_time::ptime библиотеки Boost и обратно, да чёрт с ним, мы вообще всю библиотеку datetime превратим в бустовые типы! А чтобы не было скучно, принесём в жертву встроенный класс массива байт Python 3.x, для него как раз ещё нет конвертера в Boost.Python, а потом зверски используем конвертацию массива байт в новом конвертере питоновского uuid.UUID в boost::uuids::uuid. Да, конвертер можно использовать в конвертере!
Жаждешь крови, Колизей?!..
Читать полностью »

Данная статья является продолжением первой части.
Продолжаем мучить Boost.Python. В этот раз настала очередь класса, который нельзя ни создать, ни скопировать.
Обернём обычные обычную сишную структуру с необычным конструктором.
И поработаем с возвращением ссылки на поле объекта C++, так чтобы сборщик мусора Python его не удалил ненароком. Ну и наоборот, сделаем альтернативный вариант, чтобы Python прибрал мусор после удаления того, что ему отдали на хранение.
Поехали…
Читать полностью »

Boost.Python во всех отношениях замечательная библиотека, выполняющая своё предназначение на 5+, хотите ли вы сделать модуль на С++ для Python либо хотите построить скриптовую обвязку на Python для нативного приложения написанного на С++.
Самое сложное в Boost.Python — это обилие тонкостей, поскольку и C++ и Python — два языка изобилующие возможностями, и потому на стыке их приходится учитывать все нюансы: передать объект по ссылке или по значению, отдать в Python копию объекта или существующий класс, преобразовать во внутренний тип Python или в обёртку написанного на C++, как передать конструктор объекта, перегрузить операторы, навесить несуществующие в C++, но нужные в Python методы.
Не обещаю, что в своих примерах опишу все тонкости взаимодействия этих фундаментальных языков, но постараюсь сразу охватить как можно больше частоиспользуемых примеров, чтобы вы не лазили за каждой мелочью в документацию, а увидели все необходимые основы здесь, или хотя бы получили о них базовое представление.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js