22 июня 2010
Красивые адреса - изобретаем велосипед, опираясь на современные тенденции
Реализация красивых адресов сайта обычно выглядит так: добавляем в таблицу уникальное поле path, которое будет хранить валидный адрес, а потом делаем по нему выборку.
Минусы очевидны:
1) SELECT по текстовому полю.
2) В случае нескольких баз данных мы не можем предположить какая из них содержит нужную нам запись.
3) Дополнительное идентификационное поле в то время, как уже есть основное, обычно, ID.
Читать далее →
Минусы очевидны:
1) SELECT по текстовому полю.
2) В случае нескольких баз данных мы не можем предположить какая из них содержит нужную нам запись.
3) Дополнительное идентификационное поле в то время, как уже есть основное, обычно, ID.
Читать далее →
04 июня 2010
PHP-программист, от 25 000 рублей, полный рабочий день
Разработка‚ программирование‚ доработка сайта‚ написание технических заданий. Отличные знания PHP‚ PostgreSQL‚ MySQL и понимание XML‚ HTML‚ CSS‚ JavaScript‚ AJAX.
06 апреля 2010
Два программиста в ООО «РН-УфаНИПИнефть»
PHP/MySQL/верстка. Подробнее по ссылке. 15-18 т.р. Мопед не мой.
21 марта 2010
Взаимодействие Silverlight приложения с PHP
Достать нынче дешевый Windows хостинг легко и дорого, а создавать Silverlight клиент-серверные приложения хочется. Собственно, тем и занимаюсь последнее время. Так как Linux хостинг у меня уже есть, решил его использовать для этих целей.
Итак, опишем задачу. Silverlight приложение позволяет вводить текст и отсылать его на сервер, где эти данные обрабатываются PHP скриптом — вычисляется MD5 хеш, который отсылается клиенту, полученные данные отображаются в ТеxtBox.
Примечание: В Silverlight 4 RC функций по вычислению MD5 хеша все еще нет, хотя при непродолжительном поиске можно найти готовые классы.
Читать далее →
Итак, опишем задачу. Silverlight приложение позволяет вводить текст и отсылать его на сервер, где эти данные обрабатываются PHP скриптом — вычисляется MD5 хеш, который отсылается клиенту, полученные данные отображаются в ТеxtBox.
Примечание: В Silverlight 4 RC функций по вычислению MD5 хеша все еще нет, хотя при непродолжительном поиске можно найти готовые классы.
Читать далее →
17 февраля 2010
JetBrains Web IDE Public Preview
JetBrains WebStorm & PhpStorm are two Integrated Development Environments for web programming, providing a unique user experience for editing HTML, CSS, JavaScript, XMl, as well as for working with VCS and SQL. PhpStorm is also a professional PHP IDE offering advanced PHP development support.
11 февраля 2010
PHP: Eclipse или NetBeans?
Проголосовало: 10, Воздержалось: 0
Опроc на сайте с двумя с половиной программистами (образно говоря) нерепрезентативен, но все же.
09 февраля 2010
Ускорение PHP скриптов (для нуба)
Общеизвестный факт, что PHP это такое средство разработки домашних страниц, что совершенно исключает его применение для крупных проектов. Но с годами домашняя страничка выросла, а время на переписывание всего с нуля взять неоткуда. Пришлось изменить название языка и обвешиваться инфраструктурой, чтобы получить какой то компромисс в производительности.Читать далее →
31 января 2010
Мелочь отладки, а приятно
Знаете, есть же всё же у каждого программиста с опытом свои фишки, свои привычки, свои так сказать маленькие чертики в головах. И порой эти фишки казалось бы маленькие и очевидные, когда ты их знаешь или читаешь, но порой так облегчают жизнь. Предлагаю делиться такими мелкими фишками и не зажимать их от глаз коллег.
Я начну, пока с мелочи, но важной, очень — ОТЛАДКА.
Меня всегда мучила проблема отладки и запуска кода на рабочей (девелоперской) машине и рабочем уже сервере.
Это настройки подключения к базе данных, это другой домен, совершенно не те пути к домашней папке и т.п. Выносить в конфиги, править и править. А когда разработчиков не один или два, у каждого свои данные по базе, свои пути и прочие индивидуальные настройки. Муторно, а мы любим просто, отладил на локальной машине, открыл ftp, залил, вуа-ля — заработало!
Потому моё решение очень простое.
Так как я ставлю на рабочую машину всегда Apache, то просто в корне своего сайта в файле .htaccess создаю строку
например так.
А уже дальше в моих приложениях задаю, по этому параметру если он есть, то какие у меня настройки, какое подключение и где мы в целом работаем.
Пример того же простого конструктора с различными данными подключения
Извините, просто кусок кода из рабочего проекта, вполне такой простой и понятный на мой взгляд, но написанный один раз, будем перезаливать его сотню раз.
В общем, порой «окружение» может нам помочь очень часто, высказывайтесь о своих «фишечках» не стесняйтесь
Я начну, пока с мелочи, но важной, очень — ОТЛАДКА.
Меня всегда мучила проблема отладки и запуска кода на рабочей (девелоперской) машине и рабочем уже сервере.
Это настройки подключения к базе данных, это другой домен, совершенно не те пути к домашней папке и т.п. Выносить в конфиги, править и править. А когда разработчиков не один или два, у каждого свои данные по базе, свои пути и прочие индивидуальные настройки. Муторно, а мы любим просто, отладил на локальной машине, открыл ftp, залил, вуа-ля — заработало!
Потому моё решение очень простое.
Так как я ставлю на рабочую машину всегда Apache, то просто в корне своего сайта в файле .htaccess создаю строку
SetEnv "MPAKENV" "development"например так.
А уже дальше в моих приложениях задаю, по этому параметру если он есть, то какие у меня настройки, какое подключение и где мы в целом работаем.
Пример того же простого конструктора с различными данными подключения
class Mein_Spyder{
protected function database(){
return (!empty($_SERVER['MPAKENV'])) ?
array(
'login' => '{LOGIN_DEV}',
'psw' => '{PAS_DEV}',
'database' => '{DB_DEV}',
'host' => '{HOST_DEV}'
)
:
array(
'login' => '{LOGIN_PROD}',
'psw' => '{PAS_PROD}',
'database' => '{DB_PROD}',
'host' => '{HOST_PROD}'
);
}
public function __construct(){
$db = $this->database();
$this->db = new PDO('mysql:host='.$db['host'].';dbname='.$db['database'], $db['login'], $db['psw']);
$this->db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$this->db->setAttribute( PDO::ATTR_ORACLE_NULLS, PDO::NULL_TO_STRING );
$this->db->query('SET NAMES "utf8"');
$this->db->query("SET sql_mode = default");
}
...
}Извините, просто кусок кода из рабочего проекта, вполне такой простой и понятный на мой взгляд, но написанный один раз, будем перезаливать его сотню раз.
В общем, порой «окружение» может нам помочь очень часто, высказывайтесь о своих «фишечках» не стесняйтесь
30 декабря 2009
PDO и маленькая проблема placeholder'а и мнимых типов в PHP
В целом, как-то неожиданно и совершенно не вовремя всплыла у меня проблема на пару часов, которые пришлось отвлекаться и разбираться с непонятной «фигней».
Читать далее →
Читать далее →
19 декабря 2009
Получени GEO данных по IP
В целом простая задача, возникла у меня недавно для получения данных регистрирующегося пользователя выявить его страну, город и его часовой пояс.
Конечно можно решать разными способами, загрузить себе базу с кучей ip данных и получать из неё, быстро и удобно, но проблема, что придётся заниматься поддержанием базы в актуальном состоянии. Я как человек ленивый, хотел бы упростить задачу и нашел веб-сервис, который отдаёт по запросу на ip адрес данные в 2х форматах, JSON и XML. Так как JSON мне как-то ближе и проще, то был набросан быстро класс старающийся как бы тише и спокойно отдать мне информацию по IP.
Класс и короткий пример прилагаю, юзайте на здоровье так сказать.
Читать далее →
Конечно можно решать разными способами, загрузить себе базу с кучей ip данных и получать из неё, быстро и удобно, но проблема, что придётся заниматься поддержанием базы в актуальном состоянии. Я как человек ленивый, хотел бы упростить задачу и нашел веб-сервис, который отдаёт по запросу на ip адрес данные в 2х форматах, JSON и XML. Так как JSON мне как-то ближе и проще, то был набросан быстро класс старающийся как бы тише и спокойно отдать мне информацию по IP.
Класс и короткий пример прилагаю, юзайте на здоровье так сказать.
Читать далее →
18 декабря 2009
Очередное тестирование php фреймворков инструментом от facebook
Сферический конь, но всё же почитать интересно и в плане показа возможностей инструмента тестирования XHprof.
Как работает XHprof?
XHProf работает по принципу декомпозиции системы на вызовы функций (методов) и построения статистики в разрезе их ресурсопотребления. В результате получаем информацию: количество выделяемой памяти, количество вызовов функций, время исполнения и т.д.
15 декабря 2009
Ресайз изображений
В общем целом, существует два подхода к ресайзу изображений. И оба имеют как плюсы, так и минусы.
Читать далее →
Читать далее →
01 декабря 2009
Мытьё рук или безопасное экранирование данных в моем понимании...
Знаете как обычно происходит работа с данными пользователя в веб-приложении?
Показать форму для пользователя → получить данные → обработать и сохранить (например в БД) → в дальнейшем показать пользователю в нужном виде или в форме редактирования
Просто? Но всё же есть мелкие нюансы и на волне, что в последнее время я столкнулся с тоннами чужого кода и новым шаблонизатором Twig www.twig-project.org/ который желает всё и вся обезопасить перед выводом пользователю, я бы хотел добавить своих 5 копеек в общую копилку размышлений.
С детства нам прививают ряд жизненных правил, манеры. Поднимать стульчак мальчикам, здороваться со старшими, переходить дорогу на зеленый свет ну и т. д. На самое главное в нашей кухни это мыть руки перед едой. Так как я был хорошим мальчиком, то обязательно придерживаюсь и сейчас этого правила.
Читать далее →
Показать форму для пользователя → получить данные → обработать и сохранить (например в БД) → в дальнейшем показать пользователю в нужном виде или в форме редактирования
Просто? Но всё же есть мелкие нюансы и на волне, что в последнее время я столкнулся с тоннами чужого кода и новым шаблонизатором Twig www.twig-project.org/ который желает всё и вся обезопасить перед выводом пользователю, я бы хотел добавить своих 5 копеек в общую копилку размышлений.
С детства нам прививают ряд жизненных правил, манеры. Поднимать стульчак мальчикам, здороваться со старшими, переходить дорогу на зеленый свет ну и т. д. На самое главное в нашей кухни это мыть руки перед едой. Так как я был хорошим мальчиком, то обязательно придерживаюсь и сейчас этого правила.
Читать далее →