PHP. Генератор случайных строковых значений

Здесь один нюанс: mt_rand() раза в 4 быстрее rand()

function generateRandomString($length = 10) {
        $randomString = "";
        $characters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
        $min = 0;
        $max = strlen($characters) - 1;
        for ($i = 0; $i < $length; $i++) {
            $randomString .= $characters[mt_rand($min, $max)];
        }
        return $randomString;

}

PHP4/5. Works with directories

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

function getCatalogStruct($path, array &$list) {
        $d = dir($path);
        while (false !== ($entry = $d->read())) {
            if (is_file($path."/".$entry)) {
                $list[] = $entry;
            }
            if (is_dir($path."/".$entry) && $entry !== "." && $entry !== "..") {
                $list[$entry] = array();
                getCatalogStruct($path."/".$entry."/", $list[$entry]);
            }
        }
        $d->close();
    }
   
    $catalogStruct = array();
    $path = "./debugMsg/";
   
    getCatalogStruct($path, $catalogStruct);
   
    echo "<pre>";
    print_r($catalogStruct);
    echo "</pre>";


Вот такая структурка на выходе:

Array
(
    [dir1] => Array
        (
            [subdir1] => Array
                (
                )

            [0] => subTestFile1.txt
            [1] => subTestFile2.txt
        )

    [dir2] => Array
        (
            [0] => subTestFile2.txt
        )

    [0] => testFile1.txt
    [1] => testFile2.txt
    [2] => testFile3.txt
    [3] => testFile4.txt
)

Jquery. Work with hidden iframes. Interaction between parent window and child iframes

Во время веб-разработки приходится решать различного рода задачи, во время решения некоторых из них прибегают к использованию так называемых фреймов - <iframe></iframe>
Внутри этих фреймов можно либо создать свои дополнительные DOM-элементы, например - добавить формы:

$(document).ready(function() {

    $('body').after('<iframe id="testIframe" width="1" height="1" align="center"></iframe>');
   
    $('#testIframe').load(function() {
        var form =     '<form id="testForm" action="test.php" method="post">' +
                        '<input type="text" name="testInput" value="testValue"/>' +
                    '</form>';
        $(this).contents().find('body').html(form);
    });
   
});


Здесь стоит оговориться: в Opera и Chrome этот пример не прокатит - форма так и не будет добавлена, нужно сразу же после создания фрейма добавлять свою форму (видимо это связано с тем, что в данном случае внутри фрейма документ пуст, ведь мы не указали через тег src на источник, поэтому метод $('#testIframe').load() не отработает должным образом)
Либо загружать другие документы. При этом не засоряется текущая структура документа. В большинстве случаев эти фреймы делают скрытыми, скрывая от глаз пользователей побочную работу веб-приложения. Но при этом встает вопрос: как можно общаться с дочерними фреймами. Если бы повсеместно использовался HTML5, то вопрос этот бы отпал, так как там есть методы для этих целей (window.postMessage). Но в настоящее время ситуация другая. Можно воспользоваться вот таким нехитрым способом. Во-первых, нам понадобится библиотека - jquery и дополнительный плагин к нему - jquery.form. А далее внутри создать форму, которая может обращаться к серверу. Перед отправкой данных на сервер необходимо передать эту форму методу упомянутого выше плагина ajaxForm. Этот метод позволит нам создать обработчик ответов сервера, что я и сделал, к тому же он доступен родительскому окну, точнее - документу. Так достигается своего рода общение между родительским документом и дочерними скрытыми фреймами:

$('#testButton').click(function(){
    var ref = $('#testIframe').contents().find('#testForm');
    // обработчик на стороне дочернего фрейма
    ref.ajaxForm(function(response) {
        if (response == 'catched') {
            // взаимодействие с "родителем"
            $('#result').html('<p>from testIframe1</p>');
        }
    });
    ref.submit();
}); 


В данных примерах я использую метод $('#testIframe').load(), который удобен тем, что в нем можно использовать свой callback, который будет вызываться только после полной загрузки документа внутри этого фрейма.    

Источник тестовых данных. Частотный список английских слов (7998)

На днях нужен был источник данных для проведения теста приложения. Казалось бы, можно было для этого воспользоваться списком английских слов из какого-либо справочника. Но так сразу найти его не удалось. Но все же такой источник был найден. Это список наиболее употребимых в речи и писменности английских слов. Всего слов - 7998. Источник представляет собой текстовый файлик с построчным распределением слов. Вот ссылка - download. Всем удачи :)

HTML5. Canvas. Fill text by special symbols ( html named entities )

Any character entity references in HTML have unicode character. For fill canvas by html named entities you can use a unicode escape sequences.

GREEK SMALL LETTER SIGMA:

σ -> &sigma; -> U+03C3

context.fillText( "\u03C3", x, y );