• Русский текст в тестах Selenium WebDriver - что с поддержкой?

    @m-haritonov
    А ошибка возникает именно тогда, когда присутствуют русские буквы в аргументах метода или в любом случае при вызове данных методов? Выполняется ли вызов вроде: $this->assertTextPresent('.');?
  • Русский текст в тестах Selenium WebDriver - что с поддержкой?

    @m-haritonov
    Насколько я вижу, ситуация следующая:
    PHPUnit 3.7.35:
    — класс PHPUnit_Extensions_SeleniumTestCase предоставляет методы assertTextPresent и clickAndWait;
    — класс PHPUnit_Extensions_Selenium2TestCase не предоставляет методов assertTextPresent и clickAndWait.

    PHPUnit 4.0:
    — класс PHPUnit_Extensions_SeleniumTestCase предоставляет метод clickAndWait, но не предоставляет метод assertTextPresent;
    — класс PHPUnit_Extensions_Selenium2TestCase не предоставляет методов assertTextPresent и clickAndWait.

    Но, поскольку Вы наследуете от класса *_SeleniumTestCase, а не от *_Selenium2TestCase, то дело, видимо, не в этом (разве что, версия у Вас не 3.7.35, а 3.7.28).
  • Русский текст в тестах Selenium WebDriver - что с поддержкой?

    @m-haritonov
    От какого класса Вы наследуете selenium тесты: от PHPUnit_Extensions_SeleniumTestCase или от PHPUnit_Extensions_Selenium2TestCase?
  • Русский текст в тестах Selenium WebDriver - что с поддержкой?

    @m-haritonov
    1. О какой консоли идёт речь? Консоль в PHPStorm?
    2. Откуда выбрасывается исключение? Из Вашего скрипта или из скриптов PHPUnit? И что Вы подразумеваете под прямым выводом?
    3. Какая версия PHPUnit?
    4. Какая версия Selenium?
    5. Какая версия PHPStorm?
  • Русский текст в тестах Selenium WebDriver - что с поддержкой?

    @m-haritonov
    В PHPStorm в правом нижнем углу отображается кодировка файла.
  • Русский текст в тестах Selenium WebDriver - что с поддержкой?

    @m-haritonov
    В какой кодировке находится файл, в котором содержится приведённый Вами PHP код?
  • Кто-нибудь сталкивался с блокировкой от билайна? Как решили?

    @m-haritonov
    А Вы уверены, что сайт блокируется именно по домену, а не по IP адресу (тогда можно просто IP поменять безболезненно)?
  • Идеальная структура файлов и каталогов для архива проектов

    @m-haritonov
    Попробуйте присмотреться к следующим системам (правда, сам я с ними практически не знаком, поэтому в этом вопросе я не сильно компетентен):
    1. www.adobe.com/products/adobedrive.html (user guige)
    2. www.pixelapse.com/
    3. pixelnovel.com/timeline/

    но остается вопрос удобной навигации по дереву проектов

    А что именно требуется? Помечать файлы ключевыми словами и устанавливать зависимости между ключевыми словами для построения из них иерархий (чтобы затем можно было выбрать нужную иерархию и использовать её для навигации по файлам)? Или что-то другое?
  • Идеальная структура файлов и каталогов для архива проектов

    @m-haritonov
    А что именно Вам нужно от подобной системы? Сохранение истории изменений файлов? Предотвращение затирания чужих изменений? Визуальное сравнение графических файлов? И на какие файлы она должна быть ориентирована?
  • Вырезать битые символы из юникод XML

    @m-haritonov
    Оплошность за оплошностью… В предыдущем комментарии BOM не туда вставил. Вот исправленная версия:
    <?php
    // PHP файл в кодировке UTF-8 
    
    $text = iconv("UTF-8", "UTF-16LE", 'ффф');
    print mb_detect_encoding($text, "UTF-16LE,UTF-8"); // Выведет "UTF-8"
    
    // Указание различных вариантов UTF-16 также не помогает
    $text = iconv("UTF-8", "UTF-16LE", 'ффф');
    print mb_detect_encoding($text, "UTF-16LE,UTF-16BE,UTF-16,UTF-8"); // Выведет "UTF-8"
    
    // Не сработает, даже если вручную добавить BOM
    $text = "\xFF\xFE" . iconv("UTF-8", "UTF-16LE", 'ффф');
    print mb_detect_encoding($text, "UTF-16LE,UTF-8"); // Выведет пустую строку
    
    // Указание различных вариантов UTF-16 при наличии BOM также не помогает
    $text = "\xFF\xFE" . iconv("UTF-8", "UTF-16LE", 'ффф');
    print mb_detect_encoding($text, "UTF-16LE,UTF-16BE,UTF-16,UTF-8"); // Выведет пустую строку
    
  • Вырезать битые символы из юникод XML

    @m-haritonov
    Некорректный скрипт привёл в предыдущем комментарии (лишний iconv был в двух вызовах). Вот исправленный:
    <?php
    // PHP файл в кодировке UTF-8 
    
    $text = iconv("UTF-8", "UTF-16LE", 'ффф');
    print mb_detect_encoding($text, "UTF-16LE,UTF-8"); // Выведет "UTF-8"
    
    // Указание различных вариантов UTF-16 также не помогает
    $text = iconv("UTF-8", "UTF-16LE", 'ффф');
    print mb_detect_encoding($text, "UTF-16LE,UTF-16BE,UTF-16,UTF-8"); // Выведет "UTF-8"
    
    // Не сработает, даже если вручную добавить BOM
    $text = iconv("UTF-8", "\xFF\xFEUTF-16LE", 'ффф');
    print mb_detect_encoding($text, "UTF-16LE,UTF-8"); // Выведет "UTF-8"
    
    // Указание различных вариантов UTF-16 при наличии BOM также не помогает
    $text = iconv("UTF-8", "\xFF\xFEUTF-16LE", 'ффф');
    print mb_detect_encoding($text, "UTF-16LE,UTF-16BE,UTF-16,UTF-8"); // Выведет "UTF-8"
    
  • Вырезать битые символы из юникод XML

    @m-haritonov
    mb_detect_encoding не сработает в данном случае (видимо, упущение разработчиков). Можете сами убедиться:
    <?php
    // PHP файл в кодировке UTF-8 
    
    $text = iconv("UTF-8", "UTF-16LE", 'ффф');
    print mb_detect_encoding(iconv("UTF-8", "UTF-16LE", 'ффф'), "UTF-16LE,UTF-8"); // Выведет "UTF-8"
    
    // Указание различных вариантов UTF-16 также не помогает
    $text = iconv("UTF-8", "UTF-16LE", 'ффф');
    print mb_detect_encoding(iconv("UTF-8", "UTF-16LE", 'ффф'), "UTF-16LE,UTF-16BE,UTF-16,UTF-8"); // Выведет "UTF-8"
    
    // Не сработает, даже если вручную добавить BOM
    $text = iconv("UTF-8", "\xFF\xFEUTF-16LE", 'ффф');
    print mb_detect_encoding($text, "UTF-16LE,UTF-8"); // Выведет "UTF-8"
    
    // Указание различных вариантов UTF-16 при наличии BOM также не помогает
    $text = iconv("UTF-8", "\xFF\xFEUTF-16LE", 'ффф');
    print mb_detect_encoding($text, "UTF-16LE,UTF-16BE,UTF-16,UTF-8"); // Выведет "UTF-8"
    
  • Вырезать битые символы из юникод XML

    @m-haritonov
    Если в начале строки присутствует метка порядка байтов (BOM), то отличить UTF-8 от UTF-16LE и UTF-16BE можно по ней.

    Если метки порядка байтов нет (её наличие не обязательно), то узнать кодировку можно по анализу содержимого строки. Однако такой анализ не надёжен.

    В остальных случаях, насколько я знаю, безошибочного способа определить кодировку по тексту нет. Собственно, по этому кодировку текста и указывают дополнительно при передаче текста (в XML кодировка указывается в начале файла в декларации: "<?xml version="1.0" encoding="UTF-8" ?>").
  • Гайд по именованию коммитов?

    @m-haritonov
    evnuh, название метода/класса в человекочитаемых программах уже является указателем на участок с определённой логикой работы, поэтому вполне логично в комментарии к коммиту использовать именно название метода/класса. Такой комментарий для разработчиков может быть понятнее, чем придуманный с натяжкой более абстрактный комментарий. Абстрактные комментарии хороши для описания функциональности, базирующейся на изменении нескольких методов/классов.
  • Как узнать текст выражения, на котором eval() закончился с фатальной ошибкой?

    @m-haritonov
    В Вашем вопросе, как я вижу, говорится о двух разных проблемах. Уточните, что именно Вам нужно:
    1. Найти текст выражения (участок исходного кода), в котором возникла ошибка.
    2. Выполнить код изолированно (т.е. создать PHP скрипт, который при запуске будет вызывать другие PHP скрипты так, чтобы они не изменяли его область видимости (не объявляли в нём своих функций и т.п.), не прерывали его выполнение т.п.).
    3. И то и другое.
  • Вырезать битые символы из юникод XML

    @m-haritonov
    Ага, теперь разобрался — этот диапазон минимально безопасный, но вообще рекомендуется еще отбрасывать, например, #x007F-#x0084 и т. п.

    Посмотрел что за символы содержатся в диапазонах [#x7F-#x84], [#x86-#x9F], [#xFDD0-#xFDEF] — вроде бы ничего нужного для текста действительно нет (разве что #x0082 — «break permitted here» и #x0083 — «no break here»). Тогда модифицированное регулярное выражение, с учётом этих диапазонов, будет таким:
    $text = preg_replace('/[^\x{0009}\x{000a}\x{000d}\x{0020}-\x{D7FF}\x{E000}-\x{FFFD}]+|[\x{007F}-\x{0084}\x{0086}-\x{009F}\x{FDD0}-\x{FDEF}]+/u', '', $text);
    


    Что до #x10000 и прочих кодов, которые выходят за пределы двух байтов, то тут зависит от реализации Юникода — не в каждой программе Юникод четырехбайтовый.

    В UTF-16, как я узнал из википедии, символы из диапазона #x10000-#x10FFFF кодируются так называемыми суррогатными парами (два блока по 2 байта каждый). Для суррогатных пар отведён диапазон #xD800-#xDFFF, который как раз и исключён из допустимых символов XML (в спецификации XML по этому поводу даже специальное пояснение присутствует — «any Unicode character, excluding the surrogate blocks...»).

    В UTF-8 эти символы могут присутствовать (закодированные четырьмя байтами, например) и, при необходимости, можно включить в регулярное выражение диапазон \x{x10000}-\x{10FFFF}, чтобы эти символы не вырезались.

    В моем случае, например, он двухбайтовый, тут (UTF-16) тоже, так что таких символов просто не встретится.

    На всякий случай оставлю здесь напоминание для других читателей, что текст, обрабатываемый вышеприведённым кодом, должен быть в кодировке UTF-8 (т.к. модификатор "\u", используемый в preg_replace, ожидает текст в кодировке UTF-8), поэтому преобразование в UTF-8, присутствующее в примере — обязательно в данном случае.
  • Как изучить/разобраться в чужом PHP коде?

    @m-haritonov
    Там trial версия есть. Скачайте, посмотрите.