Ответы пользователя по тегу PHP
  • Существует ли php-скрипт для ресайза изображения по размеру div?

    @niko83
    вот такая либа есть. на входе может принимать рамеры картинки, на выходе пережатое изображение под нужный размер
    https://code.google.com/p/phpresizer/wiki/Manual

    пример использования тут brusnichka.info/%D0%92%D1%8B%D1%81%D1%82%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D1%8B%D0%B5_%D1%81%D1%82%D0%B5%D0%BD%D0%B4%D1%8B
    (изменяем размер окна браузера и с сервера приходят изображения подходящего размера)
    Ответ написан
    Комментировать
  • Архитектура для характеристик заведении

    @niko83
    в mysql не дебажил но типа такого должно сработать
    select place_id, count(*) from places_filter where filter_id IN ( 1, 100, 15 ,22) group by place_id HAVING count(*) = 4

    ( 4 - кол-во всех характеристик перечисленных в IN )
    Если сработает, то повставляйте данных побольше и посомтрите на EXPLAIN и проверьте производительность. Проблема скорее всего будет если в filter_id IN попадутся две самые распростанённые характеристики (зависит от объёма данных)
    Ответ написан
    Комментировать
  • RabbitMQ, сообщение каждый 5 секунд

    @niko83
    Можно и не воркер а просто кроном обойтись, смотря насколько гибко надо. Вроде ничего необычного и достаточно очевидно, в чём подвох вопроса?
    Ответ написан
    Комментировать
  • Что выбирать: SQL vs NoSQL?

    @niko83
    Допустима потеря данных до 2%

    Один из 50 insert'ов падает, и это приемлемо, я верно понял?

    БД (MySQL) при огромном количестве записей (ожидается более 20 млн записей) очень сильно начинает «тупить»

    Если структура данных вполне определена и поддаётся секционированию, возможно можно разбивать инфу по таблицам по месецам/неделям/ и др. ( смотря какой поиск будет производится)

    1. Хотите быть гибкими чтоб поменять редис-могно-sql, подумайте об абстракции, используйте шлюз между вызывающим кодом и хранилищем. ( в таком случае кеширующую прослойку можно легко внедрить при необходимости)
    2. Напишите тест генерирущий кучу предположительных запросов на чтение и на запись (если проект будет развиваться — пригодится)

    (оба пункта дадум вам ценный полезный практический опыт)

    Большой поток инсертов можно решить буферизирование на клиенте, и вставлять кучу строк за одну зоманду — Хорошая оптимизация, подумайте, возможно в вашем случае это вполне приемлемо.

    Мне больше нравится как первичное хранилище реляционка, редис/монго и прочее как промежуточно хранение агрегированной инфы или для кеширование.
    Ответ написан
    Комментировать
  • Как определить сервером, что пользователь зашел на сайт с какого-либо сенсорного телефона или планшета?

    @niko83
    api.yandex.ru/detector/
    API Яндекс.Детектор предоставляет возможность определения модели и характеристик мобильного устройства пользователя сайта по заголовкам HTTP-запросов, передаваемых браузером его устройства
    Ответ написан
    1 комментарий
  • PHP: с чего начать, как учить и что в итоге знать?

    @niko83
    1. Английский конечно важно, но его необходимость для начала карьеры вы переоценили, есть уйма отличных книжек (на русском) (именно книжек, с методичным изложением информации, а не разразненных статей в интернете). Книги по программированию читать нужно регулярно!
    2. Когда я начинал, я придумал себе реальный проект и придумывал себе задачи в рамках этого проекта и их решал (что было не понятно смотрел как это реализовано у других, и консультировался у знакомого программиста), изучал чужой код. Не понятные моменты прорабатывал, исследовал.
    3. Ходил на собеседования, слушал умные вопросы, ответы на которые я после тщательно прорабатывал.
    4. Ни дня без строчки кода.
    Ответ написан
    1 комментарий
  • Php, поиск неиспользуемых файлов?

    @niko83
    этот код удалит файлы из папки к которым не было обращений более N минут,
    в сердце лежит команда find, можете её модернизирвоать чтоб сделать более уникальный запрос

    НЕ ОБДУМЫВАЯ, ИСХОДНЫЙ КОД, В ИСХОДНОМ ВАРИАНТЕ НЕ ЗАПУСКАЙТЕ, ЧТО Б БЕДЫ НЕ НАДЕЛАТЬ

    public function clearCache($ttl = self::DEFAULT_CACHE_TTL)
    {
    $ttl = (int) $ttl;
    $dir = escapeshellcmd($this->_cacheDir);
    $command = "find {$dir} \! -type d -amin +{$ttl} -exec rm -v '{}' ';'";
    exec($command, $stringOutput);
    return $stringOutput;
    }

    Ответ написан
    2 комментария
  • PHP, ООП. Практическое изучение

    @niko83
    ООП это наследование, инкапсуляция, полиморфизм. Купите книгу Мэт Занстра кажется автор, там всё акуратно по полочкам растусовано и прочтите внимательно.
    Параллельно поглядывайте исходный код современных фрэймворков. И попробуйте напсиать свой простой, не для того чтоб вознести его к вершинам, а сделать хотяб так чтоб всё работало — это развивает.
    Ответ написан
    Комментировать
  • Вопрос по View (PHP MVC)?

    @niko83
    Присоединяюсь. Копипаста быть не должно, общие фрагменты во view выносятся в отдельные подключаемые файлы. в CakePHP эта структура называется elements book.cakephp.org/1.2/en/view/97/Elements в других фрэймовках есть свои аналоги
    Ответ написан
    Комментировать
  • Php, console, параметры?

    @niko83
    Если не ошибаюcь в Zend есть либа для работы с консольными вызовами
    Ответ написан
  • Прием почты, парсинг аттача - CSV-файла и добавление данных в базу на PHP. Чем быстрее все сделать?

    @niko83
    MySQL умеет автоматом загружать CSV файлы в базу
    LOAD DATA INFILE
    dev.mysql.com/doc/refman/5.1/en/load-data.html
    (на практике не использовал, проверьте раскажите)
    Ответ написан
    Комментировать
  • Именование классов?

    @niko83
    Подумайте не о том как класы назвать, а о том как этим всем пользоваться.
    Подумайте в первую очередь об интерфейсах. В вашем случае, на мой взгляд, нужно частично отказаться от наследования и использовать стратегию. Для пораждения объекта использовать паттерн фабрика.
    Ответ написан
  • PHP: вызов пользовательской функции сортировки из объекта?

    @niko83
    Ответ написан
    Комментировать
  • Защита от SQL инъекций

    @niko83
    Никак не соглашусь с вашей строкой «Думаю, что она делает объяснять не стоит».
    Мой комментарий может не совсем по теме вопроса, но всё же код прокомментирую: функция ужасна. Не смотря на то что в функции 10 строк, на входе она берёт 3 аргумента, имеются конструкции elseif, используются два вида кавычек в том числе такие штуки $_GET["$query"], три тернарных оператора

    Программа написанная в таком стиле вызывает ОЧЕНЬ большие трудности с её понимаем.

    кроме того
    строка $var1 = sql_guard('POST', 'input1'); вызовет ошибку.

    PS: читайте Макконнелла «Совершенный код»
    Ответ написан
    1 комментарий
  • Javascript или PHP: проверить доступен ли хост?

    @niko83
    Может что-то такое попробовать?
    var img = new Image();
    $(img).load(function () {
    alert('Хост доступен');
    ).error(function () {
    alert('не загрузилась');
    }).attr('src', 'ссылка на картинку на удалённом хосте');
    Ответ написан
    2 комментария
  • PHP Качество preview фотографий?

    @niko83
    Используй GraphicsMagick — и не забудь использовать фильтр для добавления резкости.
    Фильтр предаёт чёткость изображению, (хотя в примере на фотке вконтакте он не используется)
    в консольном вызове добавить параметр ' -sharpen 1x10'
    (можно и ImageMagick там тоже есть этот фильтр)

    фрагмент для GraphicksMagick одной PHP либы (название не помню, но если интересует, найду её)

    $command = $this->gmPath.' convert'
    . ' ' . escapeshellcmd($path) . ' -crop'
    . ' ' . $srcWidth . 'x' . $srcHeight . '+' . $srcX . '+' . $srcY
    . ' -resize ' . $dstWidth . 'x' . $dstHeight
    . ' -sharpen 1x10'
    . ' -quality 75'
    . ' ' . escapeshellcmd($cacheFile);

    exec($command);
    Ответ написан
    Комментировать
  • PHP - как сделать толковый кэш?

    @niko83
    Можно кэшировать сами запросы к БД, и проанализировать: кеш каких запросам следует очищать после того или иного действия.
    Например после добавление нового комментария нужно почистить счётчик комментариев и выборку всех комментариев к данной статье, при этом запрос на кол-во просмотров статьи трогать не надо. (пример грубый).

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

    Можно подумать о использовании тегов в кэше, а не просто по ключу сохранять.

    Подумать об использовании системы кеширования: на файлах, memcache, redis, apc, и прочее…

    Чтоб что-то более конкретное посоветовать нужно смотреть на эту ленту и прочие особенности реализации
    Ответ написан
    2 комментария
  • Сертификация, тесты [php5]

    @niko83
    вот этот мне нравится
    php.feedme.ru/index.php

    Не плохо было б чтоб на хабре была система тестов для определения компетентности человека. Зашёл в профиль и видишь у чела 99% из 100% по какому-то разделу, значит чел крутой, стоит прислушаться к его словам повнимательней.
    Ответ написан
    Комментировать
  • Когда оправдано использование публичных полей в PHP?

    @niko83
    Существует две школы. Первая из них учит, что в том классе, где определена переменная, обращаться к ней следует свободно (непосредственный доступ). Другая школа утверждает, что даже внутри этого класса следует всегда применять методы доступа (косвенный доступ).

    Преимущество косвенного метода состоит в том что он позволяет переопределить в подклассе метод получения информации и обеспечивает большую гибкость в управлении данными, например отложенную инициализацию (lazy initialization).

    Преимущество прямого доступа заключается в лёгкости чтения кода. Не надо останавливаться на мысли «да это просто метод получения значения переменно»

    Обычно сперва используется непосредственный доступ к переменным, до тех пор пока это не станет препятствием. Далее можно перейти к косвенному методу.

    Блин, где ж я это прочитал?
    Ответ написан
    1 комментарий
  • PHP библия

    @niko83
    Одно дело справочник по функциям с полным описанием аргументов и примеров (тут понятно у каждого языка свой справочник), а другое дело собрать это всё в большую работоспособную систему с проработанной архитектурой. Эти принципы уже для многих языков могут быть одинаковыми.
    Хорошая программа на PHP или любом другом языке, мне кажется, включает в себя правильное использование функций в правильной архитектуре.
    По функциям — php.net в помощь. По архитектуре и шаблонам конкретного источника не назову, но выделю отдельно автора — М.Фаулер.

    Терпение и труд — всё перетрут.
    Ответ написан
    1 комментарий