• Как динамически обновлять размеры CAGradientLayer?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    Изменение размеров CALayer'a лежит полностью на его пользователе.
    Поэтому вам нужно при каждом изменении frame у вью, менять положиние / размер слоя
    Пример:
    class MyView: UIView {
        let gradient: CALayer 
        ...
        override func layoutSubviews() {
            super.layoutSubviews()
            gradient.frame = self.bounds
        }
    }


    Если прям очень хочется через экстеншн, то примерно так:
    private var gradientPropertyKey: UInt8 = 0
    extension UIView {
        func addNiceGradient() {
            let gradient =  < тут ваш слой >
            layer.addSublayer(gradient)
            let observation = layer.observe(\.bounds) { [weak gradient] layer, _ in
                gradient?.frame = layer.bounds
            }
            objc_setAssociatedObject(self, &gradientPropertyKey, observation, .OBJC_ASSOCIATION_RETAIN)
        }
    }

    Но будет работать хуже, да и уверены что хотите в ObjC Runtime без причины лезть?
    Ответ написан
    2 комментария
  • Как объединить два массива?

    jacksparrow
    @jacksparrow
    Воспользуйтесь отношениями между моделями, судя по вашему описание будет несколько изображений к одному тексту, и связывайте по айди текста, который будет первичным ключом у текста и text_id у изображения.
    Ответ написан
    Комментировать
  • Как указать исключения mod_rewrite?

    nalomenko
    @nalomenko
    Руководитель отдела разработок в студии «Lava»
    Если я правильно понял задачу, то Вы преобразуете не первое во второе, а как раз-таки наоборот — преобразуете контекст /value в передачу GET-параметра type со значением value скрипту index.php

    Для отдельно взятых value (в данном случае) можно написать вот так:
    RewriteEngine On
    
    RewriteRule ^contacts$ contacts.php [L]
    RewriteRule ^about$ about.php [L]
    RewriteRule ^([a-zA-Z0-9_/-]+)$ index.php?type=$1 [L]


    То есть, всё, что передано после первого слеша и попадает под маску [a-zA-Z0-9_/-]+, будет передано в качестве type на index.php, кроме значений contacts и about — они будут перенаправлены на другие скрипты.

    Примечание: очень важно соблюдать порядок следования правил, так как выполняется первое правило RewriteRule, под которое попадает запрашиваемый URL. Учитывая, что и contacts и about попадают под маску [a-zA-Z0-9_/-]+, то, будь их обработчики указаны ниже, отработало бы правило, перенаправляющее их на index.php?type=contacts и index.php?type=about
    Ответ написан
    Комментировать
  • Как сделать массив условием для sql выборки?

    Для ассоциативных массивов есть функция array_keys, которая получает все ключи массива. Затем можно просто пробежать foreach-цикл и "слепить" нужную строку.
    Еще есть функция extract, извлекающая ключи массива в качестве переменных.
    Ответ написан
    Комментировать
  • Как правильно скрыть get-параметр через mod_rewrite?

    nalomenko
    @nalomenko
    Руководитель отдела разработок в студии «Lava»
    Как-то так. Можно прописать эти директивы в .htaccess, если в настройках директории в Apache это разрешено
    DirectoryIndex index.php
    
    RewriteEngine on
    
    RewriteRule ^([0-9]+)$ index.php?param=$1 [L]


    Если же параметр param может принимать не только числовые значения, а и текстовые, то замените набор допустимых символов с [0-9] на [a-zA-Z0-9], ну или любой другой.
    Ответ написан
    2 комментария
  • Нужно ли разделять категории товара?

    bingo347
    @bingo347
    Crazy on performance...
    Разделение однотипных моделей по разным таблицам - это очень сложно поддерживаемые связи в реляционных БД. То есть это только усложнит работу Вам, разработчикам.
    Если переживаете за скорость, то оно того не стоит, при нормально настроенном кэше БД вполне справляется с миллионами записей на таблицу
    Ответ написан
    Комментировать
  • Как вывести некоторое количество строк из таблицы в порядке уменьшения одного из значений?

    @holfza
    SELECT * from table_name ORDER BY `type` DESC
    Ответ написан
    Комментировать
  • Как запускать работу js скрипта каждый час по глобальному времени?

    twobomb
    @twobomb
    var startScript = (new Date().getHours()+1)%24;//Берем текущий час например 21 прибавляем 1, 21 + 1 = 22 это час когда нужно запустить скрипт
    if(new Date().getMinutes() == 0)//Если мы зашли на сайт и минуты равны 0, например 22:00 то сразу же запускаем наш скрипт
        myScript();
    loop();//Вызываем наш цикл
    function loop(){
        var date = new Date();//Берем текущее время
        if(date.getMinutes() == 0 && date.getHours()==startScript){//Если минут равны нулю и текущий час тому в котором нужно запустить скрипт
         	   startScript = (startScript+1)%24 ;//прибавляем +1 к часу в котором нужно запустить скрипт
            	myScript();// и запускаем скрипт
        }
        setTimeout(loop,30000);//проверка текущего времени 1 раз в 30 секунд, если нужно чтобы скрипт запускался с точностью до секунды (22:00:00) поставить ~500
    }
    
    function myScript(){
     	//Ваш скрипт    
        alert("hello,word!");
    }
    Ответ написан
    Комментировать