Для получения полного доступа
зарегистрируйтесь.

Раздел:
Подраздел:
Языки:


Gravatar image
ivaaaan
  • Репутация: 3
  • Сниппеты: 1
  • Ревизии: 0
function urange($start, $end, $step)
{
    if (!is_callable($step)) {
        return range($start, $end, $step);
    }

    $helper = function ($current, $start) use ($end, $step, &$helper) {
        if ($start > $end) {
            return $current;
        }
        $current[] = $start;
        return $helper($current, $step($start));
    };
    
    return $helper([], $start);
}

print_r(urange(20, 39, function ($n) {
    $next = ($n / 10) % 10;
    return $n + ($next >= 1 ? $next : 1);
}));

print_r(urange(1, 40, function ($n) {
	return $n+1;
}));

print_r(urange(1, 40, function ($n) {
    return $n+$n;
}));
Stephen Berezuev
  • Репутация: 5
  • Сниппеты: 3
  • Ревизии: 1

Для разработки активно использую docker-compose. Иногда необходимо снести все содержимое докера (для выкатывания новой версии с нуля). Для этого я держу у себя следующий шелл-скрипт:

docker-compose down --rmi all -v --remove-orphans;
docker-compose rm -f -s -v;
docker network rm `docker network ls -q`;
docker rm -f `docker ps -qa`;
docker rmi -f `docker images -q`;
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 # handle exits from shell or function but don't exit interactive shell

ВНИМАНИЕ: Запускать аккуратно, ибо выпиливает без предупреждения все контейнеры, образы, сети и тома докера.

В процессе выполнения иногда кидает ошибки о том, что нечего удалять - это нормально.

dfatt
  • Репутация: 260
  • Сниппеты: 53
  • Ревизии: 7

Если SF3 ставить на Docker, без лишних заморочек с конфигурированием, отдача страницы будет около 30 сек, что очень долго. После долгого чтения гугла, я пробовал вариант с :cached, стало веселее - отдача страницы 2-3 секунды.

Проблема долгой отдачи страницы - много файлов. В папке vendor, cache, много файлов. Для быстрой отдачи страницы, мы должны игнорировать синхронизацию этих папок.

Вот простое решение задачи:

php:
    ...
    volumes:
    	- ${SYMFONY_APP_PATH}:/var/www/src
    	- ${SYMFONY_APP_PATH}/var/logs:/var/www/src/var/logs
    	- /var/www/src/vendor
    	- /var/www/src/var/cache

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

Gravatar image
Доктор Скальпинг
  • Репутация: 2
  • Сниппеты: 0
  • Ревизии: 1

На случай если вы не знали, Ctrl + R ищет команды которые вы вводили ранее. Бывает так, что начало команды одно, и вы не можете посмотреть следующий результат поиска. Например:

ssh root@216.3.118.12
ssh root@52.111.13.175

Решение: нажмите Ctrl + R в режиме поиска, если хотите получить следующий результат.

samdark
  • Репутация: 349
  • Сниппеты: 57
  • Ревизии: 5

Иногда требуется показать текущее время в другом часовом поясе. Сделать это можно вот так:

function getCurrentTimeWithOffset(timezoneOffset) {
    var tzDate = new Date((new Date()).getTime() + (3600000 * timezoneOffset));
    return tzDate.getUTCHours() + ':' + (tzDate.getUTCMinutes() < 10 ? 0 : '') + tzDate.getUTCMinutes();
}
Gravatar image
Archakov06
  • Репутация: 1
  • Сниппеты: 0
  • Ревизии: 1

ES6:

const randomColor = () => {
  return `#${((1<<24)*Math.random()|0).toString(16)}`;
}
console.log(randomColor());

ES5:

var randomColor = function() {
  return '#' + ((1<<24)*Math.random()|0).toString(16);
}
console.log(randomColor());
Сниппет,  Bash

docker short command

alex912004
  • Репутация: 8
  • Сниппеты: 3
  • Ревизии: 0

Остановить все контейнеры

docker stop $(docker ps -a -q)

Удалить все контейнеры

docker rm -f $(docker ps -q -a)

Удалить все образы

docker rmi -f $(docker images -q)
dfatt
  • Репутация: 260
  • Сниппеты: 53
  • Ревизии: 7

Intervention Image — библиотека с простым API для работы с изображениям.

Что библиотека умеет:

  1. изменение размера
  2. обрезка
  3. добавление прозрачности
  4. добавление блюра
  5. кеширование изображений
  6. и многое другое

Вы можете использовать Intervention Image двумя способами:

// open an image file
$img = Image::make('public/foo.jpg');

// now you are able to resize the instance
$img->resize(320, 240);

// and insert a watermark for example
$img->insert('public/watermark.png');

// finally we save the image as a new file
$img->save('public/bar.jpg');

Либо, через цепочку вызовов:

$img = Image::make('public/foo.jpg')
    ->resize(320, 240)
    ->insert('public/watermark.png')
    ->save('public/bar.jpg');

Помимо статического вызова, можно создать объект, и работать с ним:

// include composer autoload
require 'vendor/autoload.php';

// import the Intervention Image Manager Class
use Intervention\Image\ImageManager;

// create an image manager instance with favored driver
$manager = new ImageManager(array('driver' => 'imagick'));

// to finally create image instances
$image = $manager->make('public/foo.jpg')->resize(300, 200);

Для разработчиков Laravel, всё работает из коробки.

Ссылки
Репозиторий на Github
Документация

Just a cat
  • Репутация: 62
  • Сниппеты: 15
  • Ревизии: 0
sudo mysqldump -h [host] -u [username] -p[password] [database] --tables [table1 table2 ...] --lock-tables=false | gzip > dump.sql.gz
Gravatar image
Insolita
  • Репутация: 7
  • Сниппеты: 3
  • Ревизии: 1

При сохранении груповых данных, зачастую требуется сопоставить, то-что у нас уже хранится в БД и то-что пришло с формы, для этого приходится сверять элименты по уникальному полю, данный снипет, из одной незамысловатой строки, вернет массив с уникальными ключами. Затем можно уже проверять на isset($models_by_id[$id]) или array_diff_key, ну и т.д.

$models_by_id=Model::find()->indexBy('id')->all(); //yii 2 path @mista twista

$models=Model::model()->findAll(); //yii 1
$models_by_id=array_combine(array_keys(CHtml::listData($models, 'id', 'id')),$models);
$models_by_id=array_combine(array_column($model,'id'),$model); //since php5.5