Vizz
Vizz
Anima
Anima
fchars
FChars
lanima
LAnima
Кофейня «Калейдоскоп утрат»

Когда каждый день у заведения случайным образом обновляется название, когда вместо меню — ссылки, когда можно пить и не пьянеть — это называется Веб-Гастро-Бар «Глоагент».

4.01.18
Гит

Код, который не укладывается в формат и некоторые библиотеки на моем гитхабе.

4.08.19
Шутка

Мой любимый прикол, который демонстрирует скорость машины, за пару секунд генерирующей столько комбинаций рандомных чисел от 0 до N в массиве размера N, что среди них попадается такая, где числа не совпадают.


function t_uniq($r){
    while(count(array_unique($r)) < count($r))
        for($i = 0; $i < count($r); $i++)
            $r[$i] = rand(0,count($r));
    return $r;
}
$arr = [1,1,1,1,1,1,1,1,1,1,1,1,1];
$arr = t_uniq($arr);
print_r($arr);
20.09.19
Шутка
20.09.19
Выключение

Простой скрипт, который я оставил на ночь, чтобы скопировать большие объемы данных и выключиться.

#!/bin/bash

echo "Start copy data"
cp -r '/home/glo-agent/doc/f_name1' '/media/glo-agent/A2F64765F64738B5/f_name2' 
echo "Done"

sudo shutdown

07.07.19
Оптимизация картинок

Рекурсивно обходит папки, оптимизирует картинки и жмет их размер до 2000 пикселей.

#!/bin/bash

I=`dpkg -l | grep "imagemagick"`
if [ -n "$I" ]
then
   echo imagemagick installed
else
   sudo apt-get install imagemagick -y
fi

start() {
  local fullname="$1"
  local filename=`basename "$1"`
  local fileext="${filename##*.}"
  local formatfile=`file "$1" -b --mime-type`;
  if  [[ $formatfile = "image/jpeg" || $formatfile = "image/png"  ]]
    then
      local width=`identify -format "%w" "$1"`
      if [[ $width -gt 2000 ]]
        then
          convert "$fullname" -resize 2000 -quality 75 -strip "$fullname"
      else
          convert "$fullname" -quality 75 -strip "$fullname"
      fi
  fi
}

scan() {
  local x;
  for e in "$1"/*; do
    x=${e##*/}
    if [ -d "$e" -a ! -L "$e" ]
    then
      scan "$e"
    else
      start "$e"
    fi
  done
}

[ $# -eq 0 ] && dir=`pwd` || dir=$@

scan "$dir"

30.06.19
Полоса прокрутки

Автоматическая линия, которая отражает процент проскроленной страницы.

function Status_line(id, h, back, tops) {
    this.id = typeof id !== 'undefined' ? id : 'status-line';
    this.h = typeof h !== 'undefined' ? h : '5px';
    this.back = typeof back !== 'undefined' ? back : '#E91E63';
    this.tops = typeof tops !== 'undefined' ? tops : '0px';

    window.onload=function(){
        var d=document.createElement('div');
        d.innerHTML = '';
        d.id = this.id;
        document.body.appendChild(d);
        jQuery("#" + this.id ).css({
            'position' : 'fixed',
            'z-index' : 1,
            'width' : '100%',
            'left' : 0,
            'top' : this.tops
        });
        jQuery("#" + this.id + " span" ).css({
            'display' : 'block',
            'width' : '0%',
            'height' : this.h,
            'background' : this.back
        });
    }

    window.onscroll=function(){
        var scrolled=window.pageYOffset||document.documentElement.scrollTop;
        var document_height=jQuery(document).height()-950;
        var percent=(scrolled*100/document_height);
        jQuery("#" + this.id + " span").css('width',percent+'%');
    };
    
}

Status_line(); // статусная строка по умолчанию
28.06.19
ImgBust

Анимация картинок в JS. Когда нет возможности использовать .mov, а хочется коротких анимаций с прозрачностью.

jQuery(function () {
     /**
     * Создание экземпляра ImgBust.
     *
     * @constructor
     * @param {string} elem - id картинки.
     * @param {array} urls - список картинок в порядке необходимого следования.
     * @param {number} speed - частота смены кадров в миллисекундах.
     */
    function ImgBust(elem, urls, speed) { // version 0.9

        if (!jQuery("*").is(jQuery(elem))) {
            console.error('ImgBust error: element ' + elem + ' not found');
            return false;
        }
        if (urls.length < 1) {
            console.error('ImgBust error: not found image urls');
            return false;
        }
        this.elem = jQuery(elem);
        this.urls = urls;
        this.len = urls.length;
        this.speed = speed;
        this.step = 0;
        this.flag = false;

        this.bust = function () {
            if (this.step === this.len - 1) {
                this.step = 0;
            }
            this.elem.attr('src', this.urls[this.step]);
            this.step++;
        };

        this.start = function () {
            var interval = setInterval(function (img_bust) {
                if (!this.flag) {
                    img_bust.bust();
                } else {
                    clearInterval(interval);
                }
            }, this.speed, this);
        };
    }
    // Использование 
});
28.06.19