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

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


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

Gravatar image
tetraset
  • Репутация: 6
  • Сниппеты: 3
  • Ревизии: 0
SET foreign_key_checks = 0;
TRUNCATE TABLE users;
SET foreign_key_checks = 1;
Gravatar image
Artem Iljin
  • Репутация: 1
  • Сниппеты: 0
  • Ревизии: 1
  public class PropertyStore
  {
      private readonly ConcurrentDictionary<string, object> _dictionary = new ConcurrentDictionary<string, object>();
      public T Get<T>(Func<T> instanceCreator, [CallerMemberName] string propertyName = "")
      {
          _dictionary.GetOrAdd(propertyName, key => instanceCreator());
          return (T)_dictionary[propertyName];
      }

      public void Set<T>(T value, [CallerMemberName] string propertyName = "")
      {
          _dictionary.Adate(propertyName, value, (key, oldValue) => value);
      }
  }

Использование:

  public class MyClass
  {
      private readonly PropertyStore _store = new PropertyStore();

      public string MyString
      {
          get => _store.Get(() => "It's my default string");
          set => _store.Set(value);
      }

      public int MyInt
      {
          get => _store.Get(() => 5);
          set => _store.Set(value);
      }

      public SecondClass MySecondClass
      {
          get => _store.Get(() => new SecondClass());
          set => _store.Set(value);
      }
  }

Проверка:

  class Program
  {
      static void Main(string[] args)
      {
          var myClass = new MyClass();

          Console.WriteLine(myClass.MyString); //"It's my default string"
          myClass.MyString = "Custom string";
          Console.WriteLine(myClass.MyString); //Custom string

          Console.WriteLine(myClass.MyInt); //5
          myClass.MyInt = 10;
          Console.WriteLine(myClass.MyInt); //10

          Console.WriteLine(myClass.MySecondClass); //SecondClass Initialized
                                                    //SecondClass

          Console.WriteLine(myClass.MySecondClass); //SecondClass
      }
  }

  public class SecondClass
  {
      public SecondClass()
      {
          Console.WriteLine($"{nameof(SecondClass)} Initialized");
      }

      public override string ToString()
      {
          return nameof(SecondClass);
      }
  }
Gravatar image
Борис Вандышев
  • Репутация: 3
  • Сниппеты: 2
  • Ревизии: 0
  public class PropertyStore
  {
      private readonly ConcurrentDictionary<string, object> _dictionary = new ConcurrentDictionary<string, object>();
      public T Get<T>(Func<T> instanceCreator, [CallerMemberName] string propertyName = "")
      {
          _dictionary.GetOrAdd(propertyName, key => instanceCreator());
          return (T)_dictionary[propertyName];
      }

      public void Set<T>(T value, [CallerMemberName] string propertyName = "")
      {
          _dictionary.AddOrUpdate(propertyName, value, (key, oldValue) => value);
      }
  }

Использование:

  public class MyClass
  {
      private readonly PropertyStore _store = new PropertyStore();

      public string MyString
      {
          get => _store.Get(() => "It's my default string");
          set => _store.Set(value);
      }

      public int MyInt
      {
          get => _store.Get(() => 5);
          set => _store.Set(value);
      }

      public SecondClass MySecondClass
      {
          get => _store.Get(() => new SecondClass());
          set => _store.Set(value);
      }
  }

Проверка:

  class Program
  {
      static void Main(string[] args)
      {
          var myClass = new MyClass();

          Console.WriteLine(myClass.MyString); //"It's my default string"
          myClass.MyString = "Custom string";
          Console.WriteLine(myClass.MyString); //Custom string

          Console.WriteLine(myClass.MyInt); //5
          myClass.MyInt = 10;
          Console.WriteLine(myClass.MyInt); //10

          Console.WriteLine(myClass.MySecondClass); //SecondClass Initialized
                                                    //SecondClass

          Console.WriteLine(myClass.MySecondClass); //SecondClass
      }
  }

  public class SecondClass
  {
      public SecondClass()
      {
          Console.WriteLine($"{nameof(SecondClass)} Initialized");
      }

      public override string ToString()
      {
          return nameof(SecondClass);
      }
  }
Just a cat
  • Репутация: 62
  • Сниппеты: 15
  • Ревизии: 0
sudo mysqlbinlog -v --start-position={START_POS} --base64-output=DECODE-ROWS {FULL_PATH_TO_BINLOG_RELAYLOG_FILE} > {FULL_PATH_TO_DECODED_FILE}

Далее можно открыть DECODED_FILE через vim:

  1. :set hlsearch - включаем подстветку результатов поиска
  2. /# at - по такому паттерну перемещаемся между statements
  3. n - следующее совпадение; N - предыдущее совпадение
Gravatar image
Hector68
  • Репутация: 2
  • Сниппеты: 1
  • Ревизии: 0

Актуально, в частности для работы над Magento

 git log
 ....
 git archive -o ../latest.zip some-commit $(git diff --name-only earlier-commit some-commit)
FullZero
  • Репутация: 7
  • Сниппеты: 6
  • Ревизии: 0
const randomColor = () => {
  return `#${((1<<24)*Math.random()|0).toString(16)}`;
}
console.log(randomColor());
Сниппет,  Bash

Enable Docker Remote API

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

Открываем конфиг, редактируем параметры запуска демона, перезапускаем сервис

vi /etc/init/docker.conf 
> DOCKER_OPTS='-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock'
service docker restart

При запуске через systemctl:

vi /lib/systemd/system/docker.service
> ExecStart=/usr/bin/dockerd daemon -H fd:// -H tcp://0.0.0.0:2373
systemctl daemon-reload