Когда каждый день у заведения случайным образом обновляется название, когда вместо меню — ссылки, когда можно пить и не пьянеть — это называется Веб-Гастро-Бар «Глоагент».
Когда каждый день у заведения случайным образом обновляется название, когда вместо меню — ссылки, когда можно пить и не пьянеть — это называется Веб-Гастро-Бар «Глоагент».
Код, который не укладывается в формат и некоторые библиотеки на моем гитхабе.
У меня возникла проблема, с которой я так и не разобрался. Редирект с site1.ru/* на site2.ru/* ни одним из известных способов через .htaccess не выполнялся корректно. Возможно, по вине хостера, возможно из-за фреймворка.
Решение состояло в том, что разнес директории между двумя этими доменами и на site1.ru закинул голый codeigniter.
Routes.php
$routes->get('/(:any)', 'Home::index');
Home.php
<?php
namespace App\Controllers;
class Home extends BaseController {
public function index() {
header("Location: https://site2.ru" . $_SERVER['REQUEST_URI'], true, 301);
exit();
return 0;
}
//--------------------------------------------------------------------
}
Бекап каталога в tar по ssh (по ключам).
#!/bin/bash
FOLDER="test"
USER="user"
SERVER="server"
LOCAL_DIR="/home/"
DATE=$(date +%m.%Y)
#ssh-keygen -o -a 100 -t ed25519 если нужно добавить ключи
#ssh-copy-id $USER@$SERVER
TAR_COMMAND="tar -cf $FOLDER-$DATE.tar $FOLDER"
RM_COMMAND="rm $FOLDER-$DATE.tar"
echo "Архивирование"
ssh $USER@$SERVER "$TAR_COMMAND; exit"
echo "Копирование"
scp $USER@$SERVER:$FOLDER-$DATE.tar $LOCAL_DIR
echo "Удаление архива с сервера"
ssh $USER@$SERVER "$RM_COMMAND; exit"
Мой любимый прикол, который демонстрирует скорость машины, за пару секунд генерирующей столько комбинаций рандомных чисел от 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);
Рекурсивно обходит папки, оптимизирует картинки и жмет их размер до 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"
Автоматическая линия, которая отражает процент проскроленной страницы.
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(); // статусная строка по умолчанию
Анимация картинок в 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);
};
}
// Использование
});