ApacheНастройка HTTPS в Apache

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

В двух словах - что такое HTTPS и с чем его едят.

HTTPS - это расширение протокола HTTP, поддерживающий шифрование. Данные, передаваемые подобным образом, шифруются с использованием SSL или TLS.

В данной заметке будет создаваться самоподписанный сертификат и хотя браузеры начнут ругаться, что такой сертификат не является доверенным, но свою задачу выполнять он всё таки будет, т.е. если и не исключит возможность прослушивания при помощи тех же снифферов, например, но, по меньшей мере, сильно затруднит жизнь некоторых хацкеров. И что немаловажно - такой сертификат не будет стоить ни копейки, в отличии от сертификатов, подписанных компаниями-сертификаторами :)

kharkovtool.net

РаботаЗапустил kharkovtool.net

Запустил недавно магазинчик (ссылка всё) на базе популярного движка Magento. Хотя знатоки увидят это уже по favicon, менять его не стал :)

Хоть помещаю эту запись в раздел "Работа", но с той работой, где находятся мои работо- и зарплатодатели, данная новость никак не связана, это, скорее, фриланс, но не пропадать же категории.

UbuntuУдаление драйвера nVidia из командной строки

Не успел я ещё нарадоваться этой операционной системе, как после очередного обновления приключился облом. Обновляюсь, перезагружаюсь и чёрный экран с бесконечно мигающим курсором. Обновилось много чего, включая ядро, и происходил сей процесс довольно долго, но внутренний голос подсказал, что проблему надо искать в видеодрайвере. И не ошибся, как выяснилось спустя час колупаний.

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

twig localized date

Symfony2Twig, интернационализация даты

Иногда возникает потребность выводить дату в таком формате, когда месяц написан текстом, но при этом сайт многоязычный. Месяц, естественно, тоже должен соответствовать выбранной локали. Вот тут и возникает загвоздка, поскольку php-шная функция date выведет месяца на английском. Какой-нибудь крутокодер Вова Теплов создал бы массивчик с переведёнными месяцами и прошёлся бы простой заменой, поскольку некогда разбираться, надо делать тикеты. Но это не наш путь. Языков на сайте может оказаться пять штук, один из которых, допустим, арабский/корейский. Да и сами языки могут добавляться на сайт в будущем.

В общем, задача эта типовая и не надо ничего придумывать. Решение имеется уже готовое → IntlDateFormatter. Но решать эту задачу я буду в контексте Symfony 2.

composer transportexception

Контроль версийComposer TransportException, проблемы с загрузкой пакетов.

Иногда так бывает, что composer не может стянуть вендорские файлы. Тут даже и сам композер совершенно не при чём, может валяться github, например, или другой ресурс, где необходимый пакет размещается.

Собственно, вылазит ошибка вида:

1
2
[Composer\Downloader\TransportException]
The "https://api.github.com/repos/bla-bla-bla/zipball/v6.6.6" file could not be downloaded (HTTP/1.1 404 Not Found)

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

1
php composer.phar install --prefer-source

Данная опция указывает composer-у, что необходимые файлы должны извлекаться непосредственно из исходников в репозитории системы управления контроля версиями, а не из подготовленного пакета (по умолчанию для стабильных версий). Собственно, всё. Больше информации здесь

web block

ВсячинаАтака роботов, часть 2-я

Живу себе спокойно, никого не трогаю, а мой блог этот, как оказалось, регулярно проверяют на вшивость. Часть вторая, так как первая находится → тут, но там дело касалось спама.

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

Результат метода clear

Doctrine 2Падение производительности при импорте данных

Не в первом проекте уже сталкиваюсь с ситуацией, когда при импорте данных при помощи ORM Doctrine 2 происходит падение производительности с увеличением количества импортируемых данных. Вот и сейчас проявилась данная особенность, а заодно и обнаружилось решение, которым спешу поделиться :)

Небольшое вступление. Переписываю один сайт с некой CMS на более-менее человеческий фреймворк, а заодно разбираю ту кашу, которая образовалась внутри базы данных (из-за того, что прежним разработчикам неоднократно приходилось прикручивать функционал, на который CMS-ка, естественно, не была рассчитана изначально). Пишу определённые SQL-запросы, которые вытягивают информацию в нужной мне форме из старой БД и складывают её в CSV-файлы, из которых впоследствии эти же данные переносятся доктриной в новую БД.

На последнем этапе как раз и наблюдается неприятное явление. Первые порции данных в цикле импортируются быстро, а потом становится заметно, что скорость всё падает и падает.

Вывешу скриншот из серии БЫЛО и СТАЛО, остальное под катом...

Трубоног

ФотографияЧудо 3D-технологий

Такого вот чудика встретили во время прогулки.

Не смог пройти мимо и не сфотографировать :) Жалко, что аккумулятор смартфона разрядился к тому времени, не удалось зафиксировать гео-метку, пришлось снимать на старый телефон (которому батареи всё же хватает больше, чем на день). Ну да ладно, это всё ерунда, главное, что чудик уже в интернетах. Хотя он вполне мог туда уже попасть сотню раз и без моего участия.

Ниже ещё несколько фоток, да и разрешение повыше.

user-defined-functions

Doctrine 2Пользовательские функции DQL

Допустим, что вы используете ORM Doctrine 2 и что вам необходимо выбрать из базы некие записи, но не просто так, а по хитрому. Выборка должна осуществляться по хешу какого-то поля, значение в котором вы не хотите никому показывать из соображений безопасности. Пример, возможно, и надуманный, но не в этом суть... Короче говоря, нужно реализовать подобный запрос:

1
2
SELECT * FROM `spam` AS `s`
WHERE MD5(`s`.`secretfield`) = 'hash';

Дальнейшие действия хоть и касаются DQL и Doctrine, но будут описаны в контексте фреймворка Symfony 2. Оригинальную статью можно обнаружить в документации

Zend FrameworkZend_Service_Twitter, небольшие изменения

Месяц назад обновил версию Zend Framework до 1.12.3 в движке этого блога, потестировал изменения локально, ничего страшного не обнаружил, залил на хостинг. Белый экран. Спустя пару минут вспомнил, что в девелоперском и тестовом окружениях у меня отключены последние сообщения из твиттера. А так же и то, что в последнем (первом) зенде были внесены изменения в Zend_Service_Twitter в связи с обновлением API до версии 1.1

Заметка, в принципе, и не стоит того, чтобы её писать, но по поисковым запросам вижу, что люди ищут, так что поделюсь решением, позволившим починить извлечение последних записей twitter-а.