То, что русскому — ФРИИ, финну — Startup Sauna. Опыт прохождения акселерации ...Anatoly Sharifulin
Доклад с Codefest, Новосибирск, 27 марта 2016 года
Поделюсь опытом прохождения акселерации во ФРИИ и Startup Sauna (Хельсинки, Финляндия) на примере стартапа, которым сейчас занимаюсь.
- Зачем проходить акселерацию стартапу?
- Есть ли в ней смысл?
- Если есть, то зачем вторая-третья-... акселерации?
- Разница подхода к стартапам в России и Финляндии, сравнение "без купюр"
То, что русскому — ФРИИ, финну — Startup Sauna. Опыт прохождения акселерации ...Anatoly Sharifulin
Доклад с Codefest, Новосибирск, 27 марта 2016 года
Поделюсь опытом прохождения акселерации во ФРИИ и Startup Sauna (Хельсинки, Финляндия) на примере стартапа, которым сейчас занимаюсь.
- Зачем проходить акселерацию стартапу?
- Есть ли в ней смысл?
- Если есть, то зачем вторая-третья-... акселерации?
- Разница подхода к стартапам в России и Финляндии, сравнение "без купюр"
— Реальная история из жизни о том, как мы внедряли Docker;
— Хочешь чтобы все коллеги узнавали тебя? Займись внедрением Docker в своей компании!;
— Собрать все шишки? Легко… или «Даунтайм, как неотъемлемая часть внедрения»;
— Будь сильным и смелым, если уверен в перспективах и необходимости своего внедрения;
— «Делать новое не ломая старого» – основная цель любого внедрения;
— Чекпоинт, как инструмент промежуточной оценки результатов;
— Как растут наши аппетиты или о новых инфраструктурных идеях;
— Мы сделали это, значит это вполне осуществимо;
— Самое сложное позади или какие приятные результаты вас ожидают, если все пошло правильно.
Николай Сиварев "Приручая сайты"
Я.Субботник в Новосибирске
О докладе:
В Метрике есть карта кликов, карта ссылок, плеер Вебвизора – всё это веб-приложения, которые поверх произвольной страницы в интернете показывают какие-то данные. Рассказ пойдет о нескольких подходах к созданию таких приложений, достоинствах и недостатках каждого подхода.
JSLab. Григорий Перетяка "Разработка SPA на мультисайтовом highload-проекте"GeeksLab Odessa
28.03.15. Одесса. Impact Hub Odessa. Конференция JSLab.
Георгий Подсветов "Путь архитектора. Введение в архитектурные паттерны."
В рамках данного доклада мы познакомимся с рядом архитектурных паттернов, поговорим об их назначениях, сильных и слабых сторонах. Обсудим возможность создания гибридных решений. Поговорим о том, почему важно знать и понимать архитектурные паттерны. И конечно же вы получите рекомендации по дальнейшему развитию этого направления.
Подробнее:
http://geekslab.co/
https://www.facebook.com/GeeksLab.co
https://www.youtube.com/user/GeeksLabVideo
Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»Yandex
На примере карточек контактов мы покажем, как создать сайт на трехуровневой архитектуре с использованием полного стека БЭМ-технологий. Сервер мы реализуем на Express, а в качестве базовой библиотеки возьмем bem-core. Сырые данные будем преобразовывать во view-ориентированный BEMJSON с помощью декларативных шаблонов BEMTREE. При написании шаблонов BEMJSON → HTML применим новый JS-синтаксис BEMHTML. JavaScript на клиенте будет писаться с использованием блока i-bem.js.
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...Yandex
С развитием веб-технологий сайты стали уже не просто информационными ресурсами, а полноценными приложениями. Такие приложения используют большое количество статических ресурсов, общий объем которых часто превышает 1 МБ. При условии частых обновлений встает вопрос: "Как наиболее эффективно загружать ресурсы при выходе новых версий?". В докладе будет рассказано про существующие техники обновления, которые позволяют загружать не целиком новые ресурсы, а только «разницу» между новой и старой версией.
Баба-Яга против! — Роман Дворнов, Ostrovok.ruYandex
В последнее время во фронтенде появляется столько нового и внедряется настолько быстро, что не все успевают осознать последствия. Хорошо это или плохо? Рассмотрим некоторые новинки с точки зрения «за», а главное – «против».
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов» Badoo Development
В Badoo я работаю в команде, которая разрабатывает на PHP. Одна из фич, которой мы занимаемся, со временем начала отъедать всё больше и больше железячных ресурсов. В итоге мы едва успевали добавлять серверы под растущую нагрузку. При этом вечера, проведённые с Go дома, подсказывали, что можно сделать на порядки производительнее, не затратив на разработку много времени.
Я расскажу о том, почему наша фича так плохо ложится на PHP и хорошо – на Go, как уговорить всех всё переписать и не показаться сумасшедшим, ну и, конечно же, как из 19 серверов оставить только 4.
Ещё один способ привлекать и удерживать пользователей в играхAnatoly Sharifulin
Речь пройдёт про пользовательский фидбек, а именно — про влияние рейтингов и отзывов на Customer Support, User Acquisition и Game Development. Выступление Анатолия Шарифулина, CEO & Co-founder в AppFollow, на White Nights 2019.
— Реальная история из жизни о том, как мы внедряли Docker;
— Хочешь чтобы все коллеги узнавали тебя? Займись внедрением Docker в своей компании!;
— Собрать все шишки? Легко… или «Даунтайм, как неотъемлемая часть внедрения»;
— Будь сильным и смелым, если уверен в перспективах и необходимости своего внедрения;
— «Делать новое не ломая старого» – основная цель любого внедрения;
— Чекпоинт, как инструмент промежуточной оценки результатов;
— Как растут наши аппетиты или о новых инфраструктурных идеях;
— Мы сделали это, значит это вполне осуществимо;
— Самое сложное позади или какие приятные результаты вас ожидают, если все пошло правильно.
Николай Сиварев "Приручая сайты"
Я.Субботник в Новосибирске
О докладе:
В Метрике есть карта кликов, карта ссылок, плеер Вебвизора – всё это веб-приложения, которые поверх произвольной страницы в интернете показывают какие-то данные. Рассказ пойдет о нескольких подходах к созданию таких приложений, достоинствах и недостатках каждого подхода.
JSLab. Григорий Перетяка "Разработка SPA на мультисайтовом highload-проекте"GeeksLab Odessa
28.03.15. Одесса. Impact Hub Odessa. Конференция JSLab.
Георгий Подсветов "Путь архитектора. Введение в архитектурные паттерны."
В рамках данного доклада мы познакомимся с рядом архитектурных паттернов, поговорим об их назначениях, сильных и слабых сторонах. Обсудим возможность создания гибридных решений. Поговорим о том, почему важно знать и понимать архитектурные паттерны. И конечно же вы получите рекомендации по дальнейшему развитию этого направления.
Подробнее:
http://geekslab.co/
https://www.facebook.com/GeeksLab.co
https://www.youtube.com/user/GeeksLabVideo
Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»Yandex
На примере карточек контактов мы покажем, как создать сайт на трехуровневой архитектуре с использованием полного стека БЭМ-технологий. Сервер мы реализуем на Express, а в качестве базовой библиотеки возьмем bem-core. Сырые данные будем преобразовывать во view-ориентированный BEMJSON с помощью декларативных шаблонов BEMTREE. При написании шаблонов BEMJSON → HTML применим новый JS-синтаксис BEMHTML. JavaScript на клиенте будет писаться с использованием блока i-bem.js.
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...Yandex
С развитием веб-технологий сайты стали уже не просто информационными ресурсами, а полноценными приложениями. Такие приложения используют большое количество статических ресурсов, общий объем которых часто превышает 1 МБ. При условии частых обновлений встает вопрос: "Как наиболее эффективно загружать ресурсы при выходе новых версий?". В докладе будет рассказано про существующие техники обновления, которые позволяют загружать не целиком новые ресурсы, а только «разницу» между новой и старой версией.
Баба-Яга против! — Роман Дворнов, Ostrovok.ruYandex
В последнее время во фронтенде появляется столько нового и внедряется настолько быстро, что не все успевают осознать последствия. Хорошо это или плохо? Рассмотрим некоторые новинки с точки зрения «за», а главное – «против».
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов» Badoo Development
В Badoo я работаю в команде, которая разрабатывает на PHP. Одна из фич, которой мы занимаемся, со временем начала отъедать всё больше и больше железячных ресурсов. В итоге мы едва успевали добавлять серверы под растущую нагрузку. При этом вечера, проведённые с Go дома, подсказывали, что можно сделать на порядки производительнее, не затратив на разработку много времени.
Я расскажу о том, почему наша фича так плохо ложится на PHP и хорошо – на Go, как уговорить всех всё переписать и не показаться сумасшедшим, ну и, конечно же, как из 19 серверов оставить только 4.
Ещё один способ привлекать и удерживать пользователей в играхAnatoly Sharifulin
Речь пройдёт про пользовательский фидбек, а именно — про влияние рейтингов и отзывов на Customer Support, User Acquisition и Game Development. Выступление Анатолия Шарифулина, CEO & Co-founder в AppFollow, на White Nights 2019.
This document discusses changes and optimizations needed for App Store Optimization (ASO) in iOS 11. The key points covered are:
1. App name length must be <= 30 characters and subtitle <= 30 characters.
2. Include 3 screenshots in search and 1-3 video autoplays.
3. Developer pages and In-App Purchases will now appear in search results.
4. Description, promotional text, and rating history can be changed when submitting app updates. Replies can also now be provided for reviews.
5. ASO should be optimized for name, subtitle, keywords and consideration of moving keywords between name and subtitle.
This document outlines Anatoly Sharifulin's recommendations for app store optimization (ASO) best practices in 2016. It discusses optimizing search visibility through keyword research, analyzing competitors, and testing app metadata. It also covers optimizing conversion rates by testing app page text and metrics. The goal of ASO is to improve search traffic and positioning as well as conversion rates through ongoing app store metadata and content optimizations.
Аналитика мобильных приложений: как настроить аналитику в приложении, какие инструменты выбрать (Flurry, Google Analytics, Fabric Answers, AppsFlyer), на что обращать внимание
http://light.mdday.ru
Доклад с Online MDDay 2014. http://online2014.mdday.ru
Расскажу о том, что делать, когда вам «кажется», что приложение готово и его пора начать рекламировать.
Обычно это обманчивое чувство :-) Как устроены сторы (App Store и Google Play), какие существуют типы трафика, как устроен топ и что можно или даже нужно сделать для продвижения самостоятельно. Зачем и почему стОит сделать ASO и «разобраться» с конкурентами. Когда всё-таки можно начинать платное продвижение и какие каналы выбрать.
9. Что такое Mojo?
• Pure Perl веб-фреймворк
• Без зависимостей (начиная с Perl 5.10)
• Объектно-ориентированное API
• Поддержка HTTP 1.1 (клиент-сервер)
• CGI, FastCGI, Daemon и Daemon Prefork
• MVC веб-фреймворки:
Mojolicious и Mojolicious::Lite
18 декабря 2009 г.
10. Что такое Mojo?
• Pure Perl веб-фреймворк
• Без зависимостей (с версии Perl 5.8.1)
• Объектно-ориентированное API
• Поддержка HTTP 1.1 (клиент-сервер)
• CGI, FastCGI, Daemon и Daemon Prefork
• MVC веб-фреймворки:
Mojolicious и Mojolicious::Lite
18 декабря 2009 г.
11. Что такое Mojo?
• Pure Perl веб-фреймворк
• Без зависимостей (с версии Perl 5.8.1)
• Объектно-ориентированное API
• Поддержка HTTP 1.1 (клиент-сервер)
• CGI, FastCGI, Daemon и Daemon Prefork
• MVC веб-фреймворки:
Mojolicious и Mojolicious::Lite
18 декабря 2009 г.
12. Что такое Mojo?
• Pure Perl веб-фреймворк
• Без зависимостей (с версии Perl 5.8.1)
• Объектно-ориентированное API
• Поддержка HTTP 1.1 (клиент-сервер)
• CGI, FastCGI, Daemon и Daemon Prefork
• MVC веб-фреймворки:
Mojolicious и Mojolicious::Lite
18 декабря 2009 г.
13. Что такое Mojo?
• Pure Perl веб-фреймворк
• Без зависимостей (с версии Perl 5.8.1)
• Объектно-ориентированное API
• Поддержка HTTP 1.1 (клиент-сервер)
• CGI, FastCGI, PSGI, Daemon и Prefork
• MVC веб-фреймворки:
Mojolicious и Mojolicious::Lite
18 декабря 2009 г.
14. Что такое Mojo?
• Pure Perl веб-фреймворк
• Без зависимостей (с версии Perl 5.8.1)
• Объектно-ориентированное API
• Поддержка HTTP 1.1 (клиент-сервер)
• CGI, FastCGI, PSGI, Daemon и Prefork
• MVC веб-фреймворки:
Mojolicious и Mojolicious::Lite
18 декабря 2009 г.
15. Что такое Mojo?
• Pure Perl веб-фреймворк
• Без зависимостей (с версии Perl 5.8.1)
• Объектно-ориентированное API
• Поддержка HTTP 1.1 (клиент-сервер)
• CGI, FastCGI, PSGI, Daemon и Prefork
• MVC веб-фреймворки:
Mojolicious и Mojolicious::Lite
18 декабря 2009 г.
19. Mojo::Base
Minimal Base Class For Mojo Projects
18 декабря 2009 г.
20. package App;
use base ‘Mojo::Base’;
__PACKAGE__->attr(conf => sub {
return do ‘conf/app.conf’;
});
__PACKAGE__->attr(db => sub {
my $self = shift;
return Util->db($self->conf->{'db'});
});
sub dispatch { ... }
18 декабря 2009 г.
21. package App;
use base ‘Mojo::Base’;
__PACKAGE__->attr(conf => sub {
return do ‘conf/app.conf’;
});
__PACKAGE__->attr(db => sub {
my $self = shift;
return Util->db($self->conf->{'db'});
});
sub dispatch { ... }
18 декабря 2009 г.
22. package App;
use base ‘Mojo::Base’;
__PACKAGE__->attr(conf => sub {
return do ‘conf/app.conf’;
});
__PACKAGE__->attr(db => sub {
my $self = shift;
return Util->db($self->conf->{'db'});
});
sub dispatch { ... }
18 декабря 2009 г.
92. Объектно-
ориентированное API
18 декабря 2009 г.
93. package TestMojo;
use base 'Mojo';
sub handler {
my ($self, $tx) = @_;
warn $tx->req; warn $tx->req->url;
$tx->res->headers
->content_type('text/plain');
$tx->res->body('Hello Mojo!');
}
18 декабря 2009 г.
94. package TestMojo;
use base 'Mojo';
sub handler {
my ($self, $tx) = @_;
warn $tx->req; warn $tx->req->url;
$tx->res->headers
->content_type('text/plain');
$tx->res->body('Hello Mojo!');
}
18 декабря 2009 г.
95. package TestMojo;
use base 'Mojo';
sub handler {
my ($self, $tx) = @_;
warn $tx->req; warn $tx->req->url;
$tx->res->headers
->content_type('text/plain');
$tx->res->body('Hello Mojo!');
}
18 декабря 2009 г.
96. package TestMojo;
use base 'Mojo';
sub handler {
my ($self, $tx) = @_;
warn $tx->req; warn $tx->req->url;
$tx->res->headers
->content_type('text/plain');
$tx->res->body('Hello Mojo!');
}
18 декабря 2009 г.
97. use overload '""' => sub
{ shift->to_string },
fallback => 1;
18 декабря 2009 г.
100. package TestMojo;
use base 'Mojo';
sub handler {
my ($self, $tx) = @_;
warn $tx->req; warn $tx->req->url;
$tx->res->headers
->content_type('text/plain');
$tx->res->body('Hello Mojo!');
}
18 декабря 2009 г.
101. package TestMojo;
use base 'Mojo';
sub handler {
my ($self, $tx) = @_;
warn $tx->req; warn $tx->req->url;
$tx->res->headers
->content_type('text/plain');
$tx->res->body('Hello Mojo!');
}
18 декабря 2009 г.
105. use FindBin;
use lib "$FindBin::Bin/../lib";
use lib "$FindBin::Bin/../../lib";
# Application
$ENV{MOJO_APP} ||= 'TestMojo';
use Mojo::Commands;
Mojo::Commands->start; # ->start(‘cgi’)
18 декабря 2009 г.
107. package TestMojo;
use base 'Mojo';
sub handler {
my ($self, $tx) = @_;
warn $tx->req; warn $tx->req->url;
$tx->res->headers
->content_type('text/plain');
$tx->res->body('Hello Mojo!');
}
18 декабря 2009 г.
186. package TestApp;
use base 'Mojolicious';
sub startup {
my $self = shift;
my $r = $self->routes;
$r->route('/:controller/:action/:id')
->to(controller => 'example', action =>
'welcome', id => 1);
}
18 декабря 2009 г.
187. package TestApp;
use base 'Mojolicious';
sub startup {
my $self = shift;
my $r = $self->routes;
$r->route('/:controller/:action/:id')
->to(controller => 'example', action =>
'welcome', id => 1);
}
18 декабря 2009 г.
188. package TestApp;
use base 'Mojolicious';
sub startup {
my $self = shift;
my $r = $self->routes;
$r->route('/:controller/:action/:id')
->to(controller => 'example', action =>
'welcome', id => 1);
}
18 декабря 2009 г.
189. package TestApp;
use base 'Mojolicious';
sub startup {
my $self = shift;
my $r = $self->routes;
$r->route('/:controller/:action/:id')
->to(controller => 'example', action =>
'welcome', id => 1);
}
18 декабря 2009 г.
190. package TestApp;
use base 'Mojolicious';
sub startup {
my $self = shift;
my $r = $self->routes;
$r->route('/:controller/:action/:id')
->to(controller => 'example', action =>
'welcome', id => 1);
}
18 декабря 2009 г.
191. package TestApp;
use base 'Mojolicious';
sub startup {
my $self = shift;
my $r = $self->routes;
$r->route('/:controller/:action/:id')
->to(controller => 'example', action =>
'welcome', id => 1);
}
18 декабря 2009 г.
192. package TestApp;
use base 'Mojolicious';
sub startup {
my $self = shift;
my $r = $self->routes;
$r->bridge->route('/:controller/:action/:id')
->to(controller => 'example', action =>
'welcome', id => 1);
}
18 декабря 2009 г.
193. package TestApp;
use base 'Mojolicious';
sub startup {
my $self = shift;
my $r = $self->routes;
$r->route('/:controller/:action/:id')
->to(controller => 'example', action =>
'welcome', id => 1);
}
18 декабря 2009 г.
194. package TestApp::Example;
use base 'Mojolicious::Controller';
sub welcome {
my $self = shift;
warn $self->stash(‘id’);
$self->render(message => 'Welcome!');
}
1;
18 декабря 2009 г.
236. use Mojolicious::Lite;
get '/' => 'index';
any '/:groovy' => sub {
my $self = shift;
$self->render_text($self->stash('groovy'));
};
shagadelic;
18 декабря 2009 г.
237. use Mojolicious::Lite;
get '/' => 'index';
any '/:groovy' => sub {
my $self = shift;
$self->render_text($self->stash('groovy'));
};
shagadelic;
18 декабря 2009 г.
238. use Mojolicious::Lite;
get '/' => 'index';
any '/:groovy' => sub {
my $self = shift;
$self->render_text($self->stash('groovy'));
};
shagadelic;
18 декабря 2009 г.
239. use Mojolicious::Lite;
post '/' => 'index';
any '/:groovy' => sub {
my $self = shift;
$self->render_text($self->stash('groovy'));
};
shagadelic;
18 декабря 2009 г.
240. use Mojolicious::Lite;
any '/' => 'index';
any '/:groovy' => sub {
my $self = shift;
$self->render_text($self->stash('groovy'));
};
shagadelic;
18 декабря 2009 г.
241. use Mojolicious::Lite;
get '/' => 'index';
any '/:groovy' => sub {
my $self = shift;
$self->render_text($self->stash('groovy'));
};
shagadelic;
18 декабря 2009 г.
242. use Mojolicious::Lite;
get '/' => 'index';
any '/:groovy' => [groovy => qr/d+/] => sub {
my $self = shift;
$self->render_text($self->stash('groovy'));
};
shagadelic;
18 декабря 2009 г.
243. use Mojolicious::Lite;
get '/' => 'index';
any '/:groovy' => {groovy => 42} => sub {
my $self = shift;
$self->render_text($self->stash('groovy'));
};
shagadelic;
18 декабря 2009 г.
244. use Mojolicious::Lite;
get '/' => 'index';
any '/:groovy' => (agent=>qr/Firefox/) => sub {
my $self = shift;
$self->render_text($self->stash('groovy'));
};
shagadelic;
18 декабря 2009 г.
245. use Mojolicious::Lite;
get '/' => 'index';
any '/:groovy' => sub {
my $self = shift;
$self->render_text($self->stash('groovy'));
};
app->renderer->default_handler(‘epl’);
shagadelic;
18 декабря 2009 г.
246. use Mojolicious::Lite;
ladder sub { ... }; # auth
get '/' => 'index';
any '/:groovy' => sub {
my $self = shift;
$self->render_text($self->stash('groovy'));
};
shagadelic;
18 декабря 2009 г.
247. use Mojolicious::Lite;
get '/' => 'index';
any '/:groovy' => sub {
my $self = shift;
$self->render_text($self->stash('groovy'));
};
shagadelic; # shagadelic(‘cgi’)
18 декабря 2009 г.
252. Mojo Guide Style
• Keep it simple, no magick unless absolutely nessary
• Code should be written with a Perl6 port in mind
• It’s not a feature without a test
• Only add prereqs if absolutely necessary
• No inline POD
• No spaghetti code
• Every files should contain at least one quote from
The Simpsons or Futurama
18 декабря 2009 г.
253. Mojo Guide Style
• Keep it simple, no magick unless absolutely nessary
• Code should be written with a Perl6 port in mind
• It’s not a feature without a test
• Only add prereqs if absolutely necessary
• No inline POD
• No spaghetti code
• Every files should contain at least one quote from
The Simpsons or Futurama
18 декабря 2009 г.
254. Mojo Guide Style
• Keep it simple, no magick unless absolutely nessary
• Code should be written with a Perl6 port in mind
• It’s not a feature without a test
• Only add prereqs if absolutely necessary
• No inline POD
• No spaghetti code
• Every files should contain at least one quote from
The Simpsons or Futurama
18 декабря 2009 г.
255. Mojo Guide Style
• Keep it simple, no magick unless absolutely nessary
• Code should be written with a Perl6 port in mind
• It’s not a feature without a test
• Only add prereqs if absolutely necessary
• No inline POD
• No spaghetti code
• Every files should contain at least one quote from
The Simpsons or Futurama
18 декабря 2009 г.
256. Mojo Guide Style
• Keep it simple, no magick unless absolutely nessary
• Code should be written with a Perl6 port in mind
• It’s not a feature without a test
• Only add prereqs if absolutely necessary
• No inline POD
• No spaghetti code
• Every files should contain at least one quote from
The Simpsons or Futurama
18 декабря 2009 г.
257. Mojo Guide Style
• Keep it simple, no magick unless absolutely nessary
• Code should be written with a Perl6 port in mind
• It’s not a feature without a test
• Only add prereqs if absolutely necessary
• No inline POD
• No spaghetti code
• Every files should contain at least one quote from
The Simpsons or Futurama
18 декабря 2009 г.
258. Mojo Guide Style
• Keep it simple, no magick unless absolutely nessary
• Code should be written with a Perl6 port in mind
• It’s not a feature without a test
• Only add prereqs if absolutely necessary
• No inline POD
• No spaghetti code
• Every files should contain at least one quote from
The Simpsons or Futurama :)
18 декабря 2009 г.
265. get ‘/bug/’ => sub {
my $self = shift;
# open my $fh, ‘|-’, ‘/usr/sbin/sendmail -t’;
open my $fh, ‘|-’, ‘perl test.pl’;
print $fh join "n",
'To: sharifulin at gmail.com',
'Subject: Test', '',
'Test!';
$self->render_text(‘Test’);;
};
18 декабря 2009 г.
266. get ‘/bug/’ => sub {
my $self = shift;
# open my $fh, ‘|-’, ‘/usr/sbin/sendmail -t’;
open my $fh, ‘|-’, ‘perl test.pl’;
print $fh join "n",
'To: sharifulin at gmail.com',
'Subject: Test', '',
'Test!';
$self->render_text(‘Test’);;
};
18 декабря 2009 г.
267. test.pl
#!/usr/bin/perl
warn $_ while <STDIN>;
18 декабря 2009 г.
279. package App;
use base ‘Mojo::Base’;
__PACKAGE__->attr(conf => sub {
return do ‘conf/app.conf’;
});
__PACKAGE__->attr(db => sub {
my $self = shift;
return Util->db($self->conf->{'db'});
});
sub dispatch { ... }
18 декабря 2009 г.
280. package App;
use base ‘Mojo::Base’;
__PACKAGE__->attr(conf => sub {
return do ‘conf/app.conf’;
});
__PACKAGE__->attr(db => sub {
my $self = shift;
return Util->db($self->conf->{'db'});
});
sub dispatch { ... }
18 декабря 2009 г.
281. package App;
use base ‘Mojo::Base’;
__PACKAGE__->attr(conf => sub {
return do ‘conf/app.conf’;
});
__PACKAGE__->attr(db => sub {
my $self = shift;
return $::DB ||= Util->db(...->{'db'});
});
sub dispatch { ... }
18 декабря 2009 г.
284. «мне кажется документацию он никогда
не напишет) он х**рит быстрее, чем
можно писать документацию для него)»
FriendFeed форева!
18 декабря 2009 г.
285. Полезная информация
• http://mojolicious.org
• http://labs.kraih.com/blog/
• http://search.cpan.org/dist/Mojo/
• http://github.com/kraih/mojo
• http://sharifulin.livejournal.com/tag/mojo
• http://getbootylicious.org/
18 декабря 2009 г.
286. Полезная информация
• http://mojolicious.org
• http://labs.kraih.com/blog/
• http://search.cpan.org/dist/Mojo/
• http://github.com/kraih/mojo
• http://sharifulin.livejournal.com/tag/mojo
• http://getbootylicious.org/
18 декабря 2009 г.
290. Полезная информация
• irc://irc.perl.org/#mojo
• http://lists.kraih.com/cgi-bin/mailman/
listinfo/mojo
• Twitter: @kraih, @vtivti, @sharifulin
• Juick: @vti, @sharifulin
18 декабря 2009 г.
291. Последние новости
• PSGI and Plack is the future of HTTP::Engine that
has support for servers like CGI, FastCGI, Apache,
AnyEvent and Mojo.
• New #mod_perlite release looks great,
#Mojolicious with CGI backend should "just
work™" on it.
• Slowly starting with documentation work, crazy
how much #Mojolicious has grown recently, looks
like it needs a few extra chapters now. :)
• Added native #PSGI support to #Mojolicious
18 декабря 2009 г.