Доброго времени суток уважаемые Хабрецы!
Здесь я расскажу вам об использовании DBIx::Class, с помощью которого вы сможете реализовать Object Relation Mapping (ORM) на языке Perl. опросы о том, полезен или бесполезен ORM как таковой и другие
риторические размышления в стиле «жили же раньше люди как-то без компьютеров, и зачем они нужны сейчас?!», я обошел стороной. Обо всем об этом прошу в кОменты.
А теперь собственно об использовании DBIx::Class.
Читать полностью »
Метка «sql» - 11
Perl: ORM с помощью DBIx::Class (DBIC)
2012-07-26 в 16:32, admin, рубрики: database, orm, perl, sql, sqlite, метки: database, orm, perl, sql, sqliteНемного о связываемых переменных (prepared statements)
2012-07-25 в 8:17, admin, рубрики: prepared statements, sql, инъекции, подготовленные выражения, метки: prepared statements, sql, sql-injection, инъекции, подготовленные выраженияЕсли бы мне пришлось писать книгу о том, как создавать немасштабируемые приложения Oracle, первая и единственная ее глава называлась бы «Не используйте связываемые переменные».
Том Кайт, вице-президент Oracle
Недавно на Хабре появилась статья от AlexanderPHP «SQL injection для начинающих. Часть 1». По ее содержимому и комментарием к ней может создаться впечатление, что у многих разработчиков нет понятия, что такое связываемые переменные, зачем ими следует пользоваться и какие преимущества они дают. Попытаюсь в данной статье пролить небольшой свет на данные вопросы.
Читать полностью »
LINQ для PHP. Часть 2. Если гора не идёт к Магомету, Магомет идёт к горе
2012-07-15 в 19:25, admin, рубрики: functional programming, linq, php, phpstorm, sql, похапэ, Программирование, функциональное программирование, метки: functional programming, linq, PHP, phpstorm, sql, похапэ, функциональное программированиеКак можно было заметить из моей предыдущей статьи со сравнением библиотек LINQ для PHP, библиотек много, а качества мало: ленивые вычисления не реализованы ни в одной библиотеке, тесты есть в половине случаев, типы коллбэков ограничены, а иногда и вовсе незнамо что выдаётся за LINQ. Поэтому я написал свою библиотеку. Встречайте:
YaLinqo — Yet Another LINQ to Objects for PHP
Возможности:
- Самый полный порт .NET LINQ на PHP, со многими дополнительными методами. Некоторые методы отсутствуют, но работа ведётся. Всего реализовано более 70 методов.
- Ленивые вычисления, текст исключений и многое другое, как в оригинальном LINQ.
- Детальная документация PHPDoc к каждому методу. Текст статей адаптирован из MSDN.
- 100% покрытие юнит-тестами.
- Коллбэки можно задавать замыканиями, «указателями на функцию» в виде строк и массивов, строковыми «лямбдами» с поддержкой нескольких синтаксисов.
- Ключам уделяется столько же внимания, сколько значениям: преобразования можно применять и к тем, и к другим; большинство коллбэков принимает на вход и то, и другое; ключи по возможности не теряются при преобразованиях.
- Минимальное изобретение велосипедов: для итерации используются Iterator, IteratorAggregate и др. (и их можно использовать наравне с Enumerable); исключения по возможности используются родные похапэшные и т.п.
Пример кода:
// Отфильтровать продукты с ненулевым количеством, поместить в соответствующие категории,
// отсортированные по имени. Продукты отсортировать сначала по убыванию количества, потом по имени.
from($categories)
->orderBy('$v["name"]')
->groupJoin(
from($products)
->where('$v["quantity"] > 0')
->orderByDescending('$v["quantity"]')
->thenBy('$v["name"]'),
'$v["id"]', '$v["catId"]', 'array("name" => $v["name"], "products" => $e)'
);
LINQ для PHP. Часть 1. Я его слепила из того, что было, а потом, что было, то и полюбила
2012-07-11 в 16:59, admin, рубрики: functional programming, linq, php, phpstorm, sql, грусть, печаль, похапэ, Программирование, функциональное программирование, метки: functional programming, linq, PHP, phpstorm, sql, грусть, печаль, похапэ, функциональное программированиеСказ о том, как PHP на LINQ портировали. Сравнение ныне существующих библиотек с табличками, но без графиков — прилагается.
Картинка код для привлечения внимания (картинок не дождётесь!)
echo Phinq::create($people)
->groupBy(function($person) { return $person->residence->region; })
->select(function($grouping) {
$obj = new stdClass();
$obj->people = $grouping;
$obj->region = $grouping->getKey();
return $obj;
})->orderBy(function($obj) { return $obj->people->count(); }, true)
->aggregate(function($current, $next) {
$count = $next->people->count();
return $current . sprintf(
"%d %s (%s) live in the %s regionn",
$count,
$count === 1 ? 'person' : 'people',
$next->people->aggregate(function($current, $next) {
if ($current !== null) {
$current .= ', ';
}
return $current . sprintf('%s [%s]', $next->name, $next->residence->code);
}),
$next->region
);
});
Кто видел C# или любой функциональный язык — при виде этого шедевра закатит глаза (если они предварительно не вылетят из орбит). И, наверное, будет прав. Но можно ещё вот так:
$lowNums =
from('$n')->in($numbers)->
where('$n < 5')->
store($digits)->into('digits')->
select('$digits[$n]');
Автоматическое построения диаграмм сущность-связь
2012-07-08 в 5:19, admin, рубрики: ER-диаграммы, postgresql, python, sql, Регулярные выражения, метки: ER-диаграммы, python, sql, регулярные выражения Я не люблю всякие визуальные редакторы для создания ER-моделей. Предпочитаю писать SQL код вручную, но для всяких отчетов и обсуждений хотелось иметь графическое представление и желательно в векторном формате.
Читать полностью »
Автоматическое построение диаграмм сущность-связь
2012-07-08 в 5:19, admin, рубрики: ER-диаграммы, postgresql, python, sql, Регулярные выражения, метки: ER-диаграммы, python, sql, регулярные выражения Я не люблю всякие визуальные редакторы для создания ER-моделей. Предпочитаю писать SQL код вручную, но для всяких отчетов и обсуждений хотелось иметь графическое представление и желательно в векторном формате.
Читать полностью »
Триггеры — спасители
2012-07-02 в 11:46, admin, рубрики: mysql, sql, триггеры, метки: mysql, sql, триггерыУже много статей в интернете есть про sql триггеры, но добавлю еще одну с адекватными примерами, что бы закрепить материал для тех, кто «в теме» и что бы лучше понять материал тем, кто только начал постигать «дзен sql». Заодно и создам дискуссию по теме.
Сразу оговорюсь, что мое мнение — это только мое мнение, оно порой сильно категорично. В силу ряда причин приходится работать с высоконагруженными сайтами и сложными веб-приложениями.
Девушка с татуировкой ANSI
2012-06-07 в 12:38, admin, рубрики: sql, ненормальное программирование, СУБД, хакеры в кино, метки: sql, СУБД, хакеры в киноСпециалисты по СУБД с сайта Oracle WTF заинтересовались, что же такое печатает в терминале юный хакер в фильме «Девушка с татуировкой дракона». По сюжету, это были запросы к базе данных полицейского отделения, с помощью которых она раскрыла убийства 40-летней давности.
Второй день трансляции с DevCon’12! Ещё больше докладов
2012-05-24 в 6:12, admin, рубрики: .net, azure, cloud, devcon, microsoft, sql, windows, Windows 8, windows phone, Блог компании Microsoft, разработка, разработка по, тестирование, метки: .net, azure, cloud, devcon, microsoft, sql, windows, Windows 8, windows phone, разработка по, серверДрузья!
Вчера завершился первый день трансляции с крупнейшей конференции по разработке и тестированию ПО — DevCon'12. Множество интересных докладов, вопросы участников, интервью со спикерами — всё это можно было наблюдать онлайн.
Подключайтесь к трансляции второго дня! Ещё больше докладов и интервью.
Читать полностью »
PhpStorm 4: результат с первой попытки!
2012-04-24 в 14:42, admin, рубрики: css, debugging, drupal, html, javascript, php, profiling, sql, XML, xsl, xslt, Блог компании JetBrains, профилирование, разработка, метки: css, debugging, drupal, html, javascript, PHP, profiling, sql, XML, xsl, xslt, профилированиеСделайте еще шаг к идеальной продуктивности ;)
Представляем вниманию хабрасообщества PhpStorm 4.0:
- Полная поддержка PHP 5.4
- Встроенный Code coverage для PHPUnit
- Новые PHP code inspections
- Сообщения PHP Code Sniffer прямо в редакторе
- Встроенный Drupal-стиль
- Лучшая в индустрии поддержка JavaScript (включая ECMAScript Harmony)