• Можно ли как то проверить по IP использует ли пользователь Tor?

    sunsey
    @sunsey Автор вопроса
    Anton B: а почему выбрали именно 3 часа, не знаете как часто он меняется? И вообще как Вы нашли этот список, мне не попадались на него ссылки нигде
  • Можно ли как то проверить по IP использует ли пользователь Tor?

    sunsey
    @sunsey Автор вопроса
    Спасибо большое! Похоже, это то что мне нужно. Правильно я понимаю, что тут все айпишники, которые использовал Тор за последние несколько часов?
  • Какие web или десктоп клиенты вы используете для postgres?

    sunsey
    @sunsey Автор вопроса
    ну не знаю, на mysql я лет 9 и никогда вручную не писал запросы create table или alter table. Хотя остальные все писал вручную в коде и для тестирования в пхпмайадмин, орм только недавно стал юзать. Но писать вообще все запросы в том числе и create руками не хочется
  • Какие web или десктоп клиенты вы используете для postgres?

    sunsey
    @sunsey Автор вопроса
    по-моему, вообще не вариант для создания таблиц, быстрой выборки данных. Оптимально чтоб видно было автоматический запрос и можно бало его скопировать, модифицировать (как в том же phpmyadmin). А все это вручную писать не кошерно, как по мне.
  • Как в composer отменить измененные файлы? (composer revert modified files )?

    sunsey
    @sunsey Автор вопроса
    Попробовал заинсталить заново через --prefer-dist , сделать правки и опять инсталл и ничего, все изменения в тихую остались. Сработало только если зайти в директорию конкретной либы, типа, D:\projects\github\yii_cms\common\lib\vendor\zhuravljov\yii2-debug> и вручную сделать "git checkout -- .". Ну и, похоже, через сам композер не сделаешь этого.
  • json_encode — строгая типизация

    sunsey
    @sunsey Автор вопроса
    хороший ответ =)
  • json_encode — строгая типизация

    sunsey
    @sunsey Автор вопроса
    да, делал так, но это не выход ибо если нужна стока, а не число для специфического ключа, то это не прокатит.
    типа «title»: «123» станет без скобок. Правильный вариант, все-таки, контролировать тип входных в json_encode данных.
  • json_encode — строгая типизация

    sunsey
    @sunsey Автор вопроса
    да, так и сделал, как то осенило сразу как создал опрос =)
  • Image resize lib в PHP?

    sunsey
    @sunsey Автор вопроса
    Я просмотрел доки и примеры, но не нашел тут, например, imagine.readthedocs.org/en/latest/ методов типа «ресайз по большей стороне», «кроп из центра»…
    Единственный момент об этом в доке коментов даже в самом коде по этим константам нету.
    Вы сами допиливали обертку какую-то?
  • Image resize lib в PHP?

    sunsey
    @sunsey Автор вопроса
    спасибо, эта либа понравилась больше всего, основные моменты из коробки есть, плюс легко можно дописать недостающее так как стиль кода нормальный
  • Какие сейчас есть актуальные книги для веб-разработки?

    sunsey
    @sunsey
    так никто не заставляет покупать старые издания, для меня, например, обучение или просто чтение книг очень эфективно. После прочтения методы и подходы из них как то автоматом получается использовать на практике
  • xml сериализатор для php

    sunsey
    @sunsey Автор вопроса
    Посмотрел оба, даже сифони себе поставил, чтоб поразбираться. Serializer, по-моему, не очень гибкий, у JMSSerializerBundle гибкости куча, только не нашел я примеров с массивами, они по идее только объекты сериализуют используя анотации. Да и судя по обилию классов и колбеков, врядли все это дело будет работать быстре PEAR XML_Serializer. Кстати, не подскажете насколько сложно юзать бандлы вне сифони? Не пробовали? Нада писать автозагрузчик классов свой?
  • xml сериализатор для php

    sunsey
    @sunsey Автор вопроса
    спасибо за наводку, попробую. Жалко только примеров нету
  • xml сериализатор для php

    sunsey
    @sunsey Автор вопроса
    по-моему велосипед, если я вам скажу: «я написал кастомную, под конкретный случай, упаковку в json», вы мне наверно скажете: «есть готовая либа, смысл изобретать вилосипед?». Так и тут, только, я так понимаю, ничего готового нету.
  • xml сериализатор для php

    sunsey
    @sunsey Автор вопроса
    ну тот пример, что вы привели, это упрощенная версия XML_Serializer, но которая использует simple_xml. Я спрашивал больше про аналоги XML_Serializer, с похожим функционалом, но лучшими по быстродействию. Свой велосипед я пока изобретать не захотел, поэтому и заюзал уже написаный серализатор, но скорости оказалось мало. Цель простая, попросили сделать вывод api команды и в json, и в xml. С json, как понимаете, проблем нет, но захотелось с такой же простотой передать тот же сформированный массив с минимальными изменениями и получить xml.
  • PDO - полный отладочный запрос?

    sunsey
    @sunsey Автор вопроса
    Спасибо большое, по-моему, как раз то что нужно, принцип главное ясен и хороший пример есть. Теперь можно под себя переделать. Позволю себе вставить отформатированый код из приведенной вами статьи.
    Как то не обратил я внимания сначала на PDO::ATTR_STATEMENT_CLASS, полезная по идее штука.

    <?php
    class PDOTester extends PDO
    {
        public function __construct($dsn, $username = null, $password = null, $driver_options = array())
        {
            parent::__construct($dsn, $username, $password, $driver_options);
            $this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('PDOStatementTester', array($this)));
        }
    }
    
    class PDOStatementTester extends PDOStatement
    {
        const NO_MAX_LENGTH = -1;
    
        protected $connection;
        protected $bound_params = array();
    
        protected function __construct(PDO $connection)
        {
            $this->connection = $connection;
        }
    
        public function bindParam($paramno, &$param, $type = PDO::PARAM_STR, $maxlen = null, $driverdata = null)
        {
            $this->bound_params[$paramno] = array(
                'value' => &$param,
                'type' => $type,
                'maxlen' => (is_null($maxlen)) ? self::NO_MAX_LENGTH : $maxlen,
                // ignore driver data
            );
    
            $result = parent::bindParam($paramno, $param, $type, $maxlen, $driverdata);
        }
    
        public function bindValue($parameter, $value, $data_type = PDO::PARAM_STR)
        {
            $this->bound_params[$parameter] = array(
                'value' => $value,
                'type' => $data_type,
                'maxlen' => self::NO_MAX_LENGTH
            );
            parent::bindValue($parameter, $value, $data_type);
        }
    
        public function getSQL($values = array())
        {
            $sql = $this->queryString;
    
            /**
             * param values
             */
            if (sizeof($values) > 0) {
                foreach ($values as $key => $value) {
                    $sql = str_replace($key, $this->connection->quote($value), $sql);
                }
            }
    
            /**
             * or already bounded values
             */
            if (sizeof($this->bound_params)) {
                pa($this->bound_params);
                foreach ($this->bound_params as $key => $param) {
                    $value = $param['value'];
                    if (!is_null($param['type'])) {
                        $value = self::cast($value, $param['type']);
                    }
                    if ($param['maxlen'] && $param['maxlen'] != self::NO_MAX_LENGTH) {
                        $value = self::truncate($value, $param['maxlen']);
                    }
                    if (!is_null($value)) {
                        $sql = str_replace($key, $this->connection->quote($value), $sql);
                    } else {
                        $sql = str_replace($key, 'NULL', $sql);
                    }
                }
            }
            return $sql;
        }
    
        static protected function cast($value, $type)
        {
            switch ($type) {
                case PDO::PARAM_BOOL:
                    return (bool)$value;
                    break;
                case PDO::PARAM_NULL:
                    return null;
                    break;
                case PDO::PARAM_INT:
                    return (int)$value;
                case PDO::PARAM_STR:
                default:
                    return $value;
            }
        }
    
        static protected function truncate($value, $length)
        {
            return substr($value, 0, $length);
        }
    }
    
    $pdo = new PDOTester('sqlite::memory:');
    //#------------------- Q1 -------------------#//
    $pdo->query('CREATE TABLE foo(bar TEXT, baz TEXT, num NUMERIC, empty TEXT)');
    $query = $pdo->prepare('SELECT * FROM foo WHERE bar = :bar AND baz = :baz');
    
    // Test with passed in array
    echo $query->getSQL(array(':bar' => 'fo\'o', ':baz' => 'bat')) . PHP_EOL;
    //SELECT * FROM foo WHERE bar = 'fo''o' AND baz = 'bat'
    
    //#------------------- Q2 -------------------#//
    $query = $pdo->prepare('SELECT * FROM foo WHERE bar = :bar AND baz = :baz AND num = :num AND empty=:empty');
    
    // Test with bound params and values
    $bar = 'bar';
    $baz = 'baz';
    $num = '0.1';
    $empty = 'empty!!';
    
    // Bind Param
    $query->bindParam(':bar', $bar);
    
    // Bind Value
    $query->bindValue(':baz', $baz);
    
    // Bind With types
    $query->bindParam(':num', $num, PDO::PARAM_INT);
    $query->bindParam(':empty', $empty, PDO::PARAM_NULL);
    
    echo $query->getSQL() . PHP_EOL;
    //SELECT * FROM foo WHERE bar = 'bar' AND baz = 'baz' AND num = '0' AND empty=NULL
    
    //#------------------- Q 2.1 -------------------#//
    // Change the vars
    $bar = 'foo';
    $baz = 'bat';
    $num = '2.6';
    $empty = 'blah!';
    
    echo $query->getSQL() . PHP_EOL;
    //SELECT * FROM foo WHERE bar = 'foo' AND baz = 'baz' AND num = '2' AND empty=NULL 
    
    //#------------------- Q 2.2 -------------------#//
    // Bind with length
    $query->bindParam(':bar', $bar, PDO::PARAM_STR, 2);
    
    echo $query->getSQL() . PHP_EOL;
    //SELECT * FROM foo WHERE bar = 'fo' AND baz = 'baz' AND num = '2' AND empty=NULL 
  • PDO - полный отладочный запрос?

    sunsey
    @sunsey Автор вопроса
    это был ответ на «урл для тестов, чтобы прикинуть» юзеру «Stdit». В приведенном, не очень удачно, примере нет никаких сторонних подстановок, но восновном то они есть. О том и речь, что щас я могу сделать var_dump($sql) и получить запрос в рабочем виде, если же я заюзаю ПДО и плейсхолдеры, то получу такое из-за этого, весь вопрос и создавался
  • PDO - полный отладочный запрос?

    sunsey
    @sunsey Автор вопроса
    не только, этот урл у меня не под свн, то есть я могу прямо из иде залить быстро маленький кусок кода и потестить,
    запросы у меня например в таком виде , согласитесь, не очень удобно искать в логе все эти подстановки, если сейчас я могу просто быстро вывести в браузер. Вобщем это дело вкуса, вопрос то мой все равно был о другом
  • PDO - полный отладочный запрос?

    sunsey
    @sunsey Автор вопроса
    есть у меня урл для тестов на боевом сервере, что то по быстрому прикинуть на live базе, набросал запрос и иди потом его лови в логах? что плохого в моем подходе? может к логам и можно привыкнуть, может и лучше