sfFinder

21.09.2018

Вам это будет интересно!

  • Файл. xcf. Какой программой можно открыть файл формата. xcf ?

  • JavaScript / Обфускация JavaScript



  • Запись опубликована railsmaniac. Пожалуйста, оставляйте комментарии там.

    Давно приходилось использовать поиск файлов или каталогов в вашем коде? Сказать честно — я и не помню, когда в последний раз приходилось работать непосредственно с файлами, за исключением логотипов или изображений товаров в каталогах магазинов.

    Я уже писал в одной из прошлых статей о прикладных классах в symfony. В случае с поиском файлов, вместо того, чтобы использовать glob(), можно и нужно использовать класс sfFinder. Он позволяет достаточно гибко задать критерии поиска и получить список файлов, удовлетворяющих этим критериям.

    Допустим, в системе учета неких данных, входящие данные поступают в каталог /var/our-strange-service/data/new/. Мы знаем, что файлы в формате CSV, но при этом данные поступают спонтанно, безо всякого расписания и в неизвестном количестве. Как бы вы проанализировали такие входящие данные?

    Я бы создал отдельную задачу, запускаемую по расписанию, в которой:

    
    myDataParser::parseFiles(sfFinder::type('file')->name('*.csv')->in('/var/our-strange-service/data/new/'));
    

    В этом примере, рассматривая его более конкретно, я упустил из вида ту делать, что уже обработанные файлы надо удалять. Но нас не интересует метод обработки, нас интересуют подробности о sfFinder.

    • Статический метод type()принимает один параметр: ‘file’, ‘dir’ или ‘any’. А возвращает он объект класса sfFinder.
      
      // найдется всё!
      $oFinder = sfFinder::type('any');
      
    • Метод name() задает критерий имени файла, принимая один параметр, который может быть регулярным выражением или строкой и возвращает объект sfFinder. Другими словами, реализована поддежрка цепочек методов. Метод name() кумулятивен.
      
      // ищем исходники.
      $oFinder = sfFinder::type('any')->name('/.*\.php/')->name('*.js')->not_name('/^Base.*/');
      

      Такой поиск вернет все php и js файлы, кроме файлов, начинающихся с ‘Base’. C not_name(), думаю, все понятно. Расскажу о его друзьях — discard() и prune(). Первый — удаляет из результатов поиска директорию по шаблону, переданному в параметре, но в результатах останутся все подкаталоги указанного каталога. А второй — удаляет только все, что находится глубже данного каталога в дереве, но не сам каталог.

    • Метод size() принимает в параметр строку или число (байтов). Если в параметре строка, то эта строка должна состоять из: знак сравнения, пробел, количество, единицы.
      
      // файлы, меньше 10 мегабайт.
      $oFinder = sfFinder::type('file')->size('< 10M');
      
    • Метод in() принимает в параметр каталог, в котором производится поиск и возвращает список файлов, удовлетворяющих заданным критериям поиска.

      
      // Кто там не любит FAT ?
      $aFiles = sfFinder::type('file')->size('> 4GB')->in('/');
      

      </li>

    Вот еще один пример:

    
    $aFiles = sfFinder::type('file')->size('> 20K')
    	->name('*.php')->not_name('/^Base.*/')
    	->discard('plugins')->discard('lib/vendor')
    	->prune('plugins')->prune('lib/vendor')
    	->in(sfContext::getInstance()->getConfiguration()->getRootDir());
    

    Упс. Я точно знаю, где нужен рефакторинг!

    Остальное вы можете прочитать в спецификации и в symfony api. Надеюсь, поможет :)


    Вам это будет интересно!

  • Файл. xcf. Какой программой можно открыть файл формата. xcf ?

  • JavaScript / Обфускация JavaScript




  • Последние новости


    Пробковые утеплители

    Одним из высокоэффективных современных утепляющих материалов считаются плиты, изготовленные из измельченной коры пробкового дуба. Среди их главных достоинств следует назвать небольшой вес, твердость, прочность и устойчивость к гниению и образованию плесени при воздействии влаги. Пробковые теплоизолирующие материалы не повреждаются грызунами и не разрушаются...
    Читать далее »

    Приложение

    Утепление окна стекловолокном – обязательное условие, при котором значительно снизятся теплопотери. Теплоизоляция кирпичного дома плитами пенополистирола – надежный способ сделать жилище теплым и комфортным. Как сделать это правильно, показано на рис. 50. ...
    Читать далее »

    Пенополистирольные утеплители

    В последнее время на строительном рынке особенно высоким спросом пользуется теплоизолирующий материал URSA XPS. Его выпускают в форме жестких плит, размер которых составляет 1,25 × 0,6 м. Сырьем для производства данного материала является экструдированный пенополистирол, обладающий структурой с закрытыми ячейками. URSA XPS – это утеплитель, главными свойствами которого являются устойчивость к воздействию влаги и высока...
    Читать далее »

    Торфяные утеплители

    Для повышения теплоизоляционных характеристик ограждающих конструкционных элементов нередко используют торфоизоляционные плиты. Их производят на основе плохо разложившегося торфа, который отличается волокнистой структурой. В процессе обработки сырье формуют и выдерживают в условиях высокой температуры. Плотность торфоизоляционных плит составляет от 170 до 260 кг/м3, а коэффициент теплопроводности равен 0,06 Вт/(м°С)...
    Читать далее »

    Теория теплопередачи - основа строительства

    Современные физики говорят о 3 явлениях, выражающих теплопередачу, – теплопроводности, излучении и конвекции. Каждое из них обладает собственными характеристиками. Так, при определении свойств однородных твердых тел говорят о теплопроводности. Ее суть заключается в способности одного объекта передавать тепло другому при соприкосновении либо посредством промежуточного проводника (рис. 3). ...
    Читать далее »

    Древесно-стружечные теплоизолирующие материалы

    Одним из наиболее распространенных в настоящее время древесно стружечных утеплителей является фибролит. Его получают путем смешивания древесной стружки, портландцемента и воды. Древесная стружка, или древесная шерсть, при этом должна состоять из лент длиной не менее 50 см. В некоторых случаях портландцемент нередко заменяют магнезиальным вяжущим компонентом. Перед технологической обработкой древесную стружку, вы...
    Читать далее »

    Стеклянные утепляющие материалы

    Технология изготовления стекловаты во многом сходна с методом производства минеральной ваты. В качестве основного сырья выступают мел либо известняк, кварцевый песок и сульфат натрия либо сода. Кроме того, для получения этого утеплителя могут использоваться и остаточные продукты стекольной промышленности. Стеклянная вата состоит из тончайших волокон, которые получают путем вытягивания из предварительно расплавле...
    Читать далее »