Вывод файлов в дериктории с помощью PHP

                                  <?
                                    $dir = $_SERVER['DOCUMENT_ROOT'] . '/imprices/';
                                    $gl = glob($dir . "*.xls");
                                    if (is_array($gl)):
                                        ?>
                                    <dt><label>Вы можете выбрать уже загруженный файл:</label></dt>
                                    <dd>
                                        <select>
                                            <?
                                            foreach ($gl as $filename):
                                                ?><option value="<?= trim(str_replace($dir, '', $filename)); ?>">
                                                    <?= str_replace($dir, '', $filename) . " size " . filesize($filename); ?>
                                                </option>
                                                <?
                                            endforeach;
                                            ?>
                                        </select>
                                    </dd>
                                <? endif; ?>

Facebook OAuth 2.0

ФБ давно уже предупреждал о переходе на OAuth 2.0.
Что поменялось:

  1. Куки называются ‘fbsr_’ ( раньше ‘fbs_’);
  2. ‘perm’ стало ‘scope’
  3. response.authResponse (было response.session)
  4. FB.init нужно добавить oauth:true

FB.getSession

Теперь, кто использовал функцию get_facebook_cookie().
Она стала вот такой:

function get_facebook_cookie($app_id, $app_secret) {
    if (isset($_COOKIE['fbsr_' . $app_id])) {
        list($encoded_sig, $payload) = explode('.', $_COOKIE['fbsr_' . $app_id], 2);

        $sig = base64_decode(strtr($encoded_sig, '-_', '+/'));
        $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);

        if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
            return null;
        }
        $expected_sig = hash_hmac('sha256', $payload, $app_secret, $raw = true);
        if ($sig !== $expected_sig) {
            return null;
        }
        $token_url = "https://graph.facebook.com/oauth/access_token?"
                . "client_id=" . $app_id . "&client_secret=" . $app_secret . "&redirect_uri=" . "&code=" . $data['code'];

        $response = @file_get_contents($token_url);
        $params = null;
        parse_str($response, $params);
        $data['access_token'] = $params['access_token'];
        $data['session_key'] = $data['code'];
        return $data;
    } else {
        return null;
    }
}

Но лушче уже сейчас перейти на PHP SDK.

Удаление элемента массива по его значению

<? unset($user_ar[array_search($id,$user_ar)]); ?>
//var_dump($user_ar);

Достали «тратуарщики»

Как же достали мудаки, которые рассекают по тратурам, чтобы срезать 200 метров.

Какие законные методы борьбы у вас есть?

Прогулка с «телевиком»

Гуляя по Киеву с «телевиком» на некоторые моменты начинаешь смотреть совсем по-другому. К сожалению, прогулка выдалась очень короткой — испортил все дождь. В общем, что с этого получилось — ниже.
PS: Все фотки есть в хайрезе. Если кому-то нужно — пишите в комментах. Ну, и не стоит забывать, что создание сайта в Киеве делает лучше всего Украинская студия дизайна :)

Zend_Log или пишем собственный лог PHP в Zend Framework

Теперь имеем собственный лог. Очень полезно, когда сервер лог не предоставляет, или при работе ошибок нет.
Добавляем в Bootstrap.php

$logger = new Zend_Log();
$writer = new Zend_Log_Writer_Stream(APPLICATION_PATH . './logs/php_errors.log');
$logger->addWriter($writer);
$logger->registerErrorHandler();

Выставка цветов. Киев 2011

В этом году выставка цветов открылась 22 августа и пройдет до 1 сентября. Выставка посвящена 20 годам независимости Украины.

Добраться можно от станции метро Арсенальная пешком минут за 20 или на троллейбусе, автобусе. Также, можно со станции метро Контрактовая площадь на автобусе, вроде номер 72. Но, тогда много нужно будет подниматься по ступенькам.

Для себя же я решил выйти на Арсенальной и пойти пешком через парк, Лавру и зайти на выставку сверху.
Входной билет стоит 10 грн.

В прошлом году выставка была ужасна. В этом не лучше. Было всего где-то 7 экспонатов и один, рекордный, от Рафаэлло, с котором представители фирмы фоткали желающих.

Как всегда, сфотографировать что-то без людей достаточно сложно. Даже выставляя человека для портрета находятся «индивидумы» которые всунуться в кадр. Стоит ли говорить о тех, кто начинает фотографироваться и стоит возле экспоната минут 10 подвигая свои части, расставляя всех челнов своего объединения на фото, то фото в очках, то фото без очков. Благо таких было не много. К сожалению, фотки логично заканчиваются на экспонатах, но не логично по прогулке, т.к. был куплен какой-то большой цветок который очень сильно не давал не только фото делать, но даже и идти.

Ну а дальше фото. Без слов. Сухо, красочно, правдиво.

PS: А давно вы были на смотровой площадке в Мариенском? — Теперь там смачно стоят два бело-зеленых крана, который «дополняют» вид.
PPS: А давно ли вы были на «мосту влюбленных»? Теперь там не только замочки весят, а так же: одноразовые салфетки, кулечки, пленка от минеральной воды «Моршинская», презерватив. В предвкушении — скоро труселя будут вешать.

Про выставку цветов 2011

Завтра выложу отчет с выставки цветов в Киеве.
Кратко — с каждым годом всё хуже.

UPD: Выставка цветов Киев 2011

Восстановились :)

Фух, после того, как ночью Вазелинчик упал, наконец-то удалось восстановить.
Виной был плагин от webo. Что-то на звёздах пошло не так и трио: хостинг, вордпрес и вэбо отказались отображать ВАЗелин.

А теперь ньюанс:
Если после всех танцами с бубнами не удается оживить вордпрес и виден белый фон — смените название папки wp-content, зайдите в админку (вас уже запустят) и зайдите в плагины. После этого все плагины автоматом будут отключены.

@font-face via Internet Exlorer

Рабочий css для того, чтобы во всех браузерах работал @font-face:

@font-face {
  font-family: "Your typeface";
  src: url("type/filename.eot");
  src: local("☺"),
    url("type/filename.woff") format("woff"),
    url("type/filename.otf") format("opentype"),
    url("type/filename.svg#filename") format("svg");
  }

Весь прикол именно в непробиваемом смайлике в UTF-8 :)

Ну, есть так же сервис, который сразу все сделает за вас — http://www.font2web.com/