Слайд 15app->hepler(
db => sub {
DBI->connect(...)
}
);
![app->hepler( db => sub { DBI->connect(...) } );](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-14.jpg)
Слайд 16my $dbh = DBI->connect(...);
app->hepler(
db => sub { $dbh }
);
![my $dbh = DBI->connect(...); app->hepler( db => sub { $dbh } );](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-15.jpg)
Слайд 40{
таблица => [
[список полей],
[запись1],
[запись2],
…
],
}
![{ таблица => [ [список полей], [запись1], [запись2], … ], }](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-39.jpg)
Слайд 42app->plugin(any_data => {
load_data => 'db.conf',
helper => 'db',
});
![app->plugin(any_data => { load_data => 'db.conf', helper => 'db', });](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-41.jpg)
Слайд 43any_data (helper)
Почти экземпляр
DBD::AnyData
![any_data (helper) Почти экземпляр DBD::AnyData](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-42.jpg)
Слайд 451) Враппер
DBD::AnyData::func()
2) + Парочка своих
методов
![1) Враппер DBD::AnyData::func() 2) + Парочка своих методов](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-44.jpg)
Слайд 46app->plugin(any_data => {
load_data => 'db.conf',
helper => 'db',
});
![app->plugin(any_data => { load_data => 'db.conf', helper => 'db', });](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-45.jpg)
Слайд 47app->plugin(any_data => {
load_data => 'db.conf',
helper => 'db',
});
![app->plugin(any_data => { load_data => 'db.conf', helper => 'db', });](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-46.jpg)
Слайд 52app->plugin(any_data => {
load_data => 'db.conf',
helper => 'db',
});
![app->plugin(any_data => { load_data => 'db.conf', helper => 'db', });](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-51.jpg)
Слайд 53app->plugin(any_data => {
load_data => HASH(0x95…),
helper => 'db',
});
![app->plugin(any_data => { load_data => HASH(0x95…), helper => 'db', });](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-52.jpg)
Слайд 54$self->any_data
->load_data('db.conf');
![$self->any_data ->load_data('db.conf');](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-53.jpg)
Слайд 55$self->any_data
->load_data('db.conf');
![$self->any_data ->load_data('db.conf');](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-54.jpg)
Слайд 57app->plugin(any_data => {
func => […]
});
![app->plugin(any_data => { func => […] });](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-56.jpg)
Слайд 60func
Не падает с ошибкой
Перезаписывает таблицу
![func Не падает с ошибкой Перезаписывает таблицу](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-59.jpg)
Слайд 61func
Не падает с ошибкой
Перезаписывает таблицу
Только ad_import, если вызван из хелпера (не из
![func Не падает с ошибкой Перезаписывает таблицу Только ad_import, если вызван из хелпера (не из startup)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-60.jpg)
startup)
Слайд 63Работает только
в development-режиме
![Работает только в development-режиме](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-62.jpg)
Слайд 65Mojolicious::Plugin::AnyData
uses perl data in the memory
like a database source
![Mojolicious::Plugin::AnyData uses perl data in the memory like a database source](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-64.jpg)
Слайд 66Mojolicious::Plugin::AnyData
uses perl data in the memory
like a database source
In a development
![Mojolicious::Plugin::AnyData uses perl data in the memory like a database source In a development mode only](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-65.jpg)
mode only
Слайд 67 таблица => [
[список полей],
[запись1],
[запись2],
…
],
① Создать тестовую
![таблица => [ [список полей], [запись1], [запись2], … ], ① Создать тестовую БД в конфиге:](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-66.jpg)
БД в конфиге:
Слайд 68app->plugin(any_data => {
load_data => 'db.conf',
helper => 'db',
});
② Подключить плагин, загрузив
![app->plugin(any_data => { load_data => 'db.conf', helper => 'db', }); ② Подключить](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-67.jpg)
базу в память:
Слайд 711) Никаких баз данных
2) Вообще никаких баз данных!
![1) Никаких баз данных 2) Вообще никаких баз данных!](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-70.jpg)
Слайд 721) Никаких баз данных
2) Вообще никаких баз данных!
3) Нативный перл
![1) Никаких баз данных 2) Вообще никаких баз данных! 3) Нативный перл](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-71.jpg)
Слайд 731) Никаких баз данных
2) Вообще никаких баз данных!
3) Нативный перл
4) Открытое нагляное
![1) Никаких баз данных 2) Вообще никаких баз данных! 3) Нативный перл](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-72.jpg)
представление данных
Слайд 741) Никаких баз данных
2) Вообще никаких баз данных!
3) Нативный перл
4) Открытое нагляное
![1) Никаких баз данных 2) Вообще никаких баз данных! 3) Нативный перл](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-73.jpg)
представление данных
5) Только для development и быстрого проектирования
Слайд 751) Никаких баз данных
2) Вообще никаких баз данных!
3) Нативный перл
4) Открытое нагляное
![1) Никаких баз данных 2) Вообще никаких баз данных! 3) Нативный перл](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-74.jpg)
представление данных
5) Только для development и быстрого проектирования
6) Создан для Mojolicious с любовью ☻
Слайд 77http://shootnix.com
shootnix@gmail.com
https://github.com/shootnix/Mojolicious-Plugin-AnyData
![http://shootnix.com shootnix@gmail.com https://github.com/shootnix/Mojolicious-Plugin-AnyData](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473320/slide-76.jpg)