Ещё один способ привлекать и удерживать пользователей в играхAnatoly Sharifulin
Речь пройдёт про пользовательский фидбек, а именно — про влияние рейтингов и отзывов на Customer Support, User Acquisition и Game Development. Выступление Анатолия Шарифулина, CEO & Co-founder в AppFollow, на White Nights 2019.
То, что русскому — ФРИИ, финну — Startup Sauna. Опыт прохождения акселерации ...Anatoly Sharifulin
Доклад с Codefest, Новосибирск, 27 марта 2016 года
Поделюсь опытом прохождения акселерации во ФРИИ и Startup Sauna (Хельсинки, Финляндия) на примере стартапа, которым сейчас занимаюсь.
- Зачем проходить акселерацию стартапу?
- Есть ли в ней смысл?
- Если есть, то зачем вторая-третья-... акселерации?
- Разница подхода к стартапам в России и Финляндии, сравнение "без купюр"
Аналитика мобильных приложений: как настроить аналитику в приложении, какие инструменты выбрать (Flurry, Google Analytics, Fabric Answers, AppsFlyer), на что обращать внимание
http://light.mdday.ru
Доклад с Online MDDay 2014. http://online2014.mdday.ru
Расскажу о том, что делать, когда вам «кажется», что приложение готово и его пора начать рекламировать.
Обычно это обманчивое чувство :-) Как устроены сторы (App Store и Google Play), какие существуют типы трафика, как устроен топ и что можно или даже нужно сделать для продвижения самостоятельно. Зачем и почему стОит сделать ASO и «разобраться» с конкурентами. Когда всё-таки можно начинать платное продвижение и какие каналы выбрать.
Ещё один способ привлекать и удерживать пользователей в играхAnatoly Sharifulin
Речь пройдёт про пользовательский фидбек, а именно — про влияние рейтингов и отзывов на Customer Support, User Acquisition и Game Development. Выступление Анатолия Шарифулина, CEO & Co-founder в AppFollow, на White Nights 2019.
То, что русскому — ФРИИ, финну — Startup Sauna. Опыт прохождения акселерации ...Anatoly Sharifulin
Доклад с Codefest, Новосибирск, 27 марта 2016 года
Поделюсь опытом прохождения акселерации во ФРИИ и Startup Sauna (Хельсинки, Финляндия) на примере стартапа, которым сейчас занимаюсь.
- Зачем проходить акселерацию стартапу?
- Есть ли в ней смысл?
- Если есть, то зачем вторая-третья-... акселерации?
- Разница подхода к стартапам в России и Финляндии, сравнение "без купюр"
Аналитика мобильных приложений: как настроить аналитику в приложении, какие инструменты выбрать (Flurry, Google Analytics, Fabric Answers, AppsFlyer), на что обращать внимание
http://light.mdday.ru
Доклад с Online MDDay 2014. http://online2014.mdday.ru
Расскажу о том, что делать, когда вам «кажется», что приложение готово и его пора начать рекламировать.
Обычно это обманчивое чувство :-) Как устроены сторы (App Store и Google Play), какие существуют типы трафика, как устроен топ и что можно или даже нужно сделать для продвижения самостоятельно. Зачем и почему стОит сделать ASO и «разобраться» с конкурентами. Когда всё-таки можно начинать платное продвижение и какие каналы выбрать.
7. Что такое Mojolicious?
• Веб фреймворки:
Mojolicious::Lite, Mojolicious, Mojo
• Объектно-ориентированное API,
без скрытой магии и зависимостей,
написанное на чистом Perl
• Полный стек HTTP 1.1 и WebSocket
(клиент-сервер), а также IPv6, SSL и IDNA
вторник, 18 мая 2010 г.
8. HTTP 1.0
Запрос
Ответ
Запрос
Ответ
вторник, 18 мая 2010 г.
9. HTTP 1.1
Запрос
Запрос
Ответ
Ответ
вторник, 18 мая 2010 г.
10. Что такое Mojolicious?
• Асинхронный ввод-вывод, prefork-веб
сервер с поддержкой epoll и kqueue,
unix-сокетов и «горячей» разработки
• CGI, FastCGI и PSGI
• RESTful-роутеры, плагины, сессии,
Perl-ish шаблонизатор, JSON, I18N
вторник, 18 мая 2010 г.
11. «Свежий» код,
основанный на опыте
разработке Catalyst
вторник, 18 мая 2010 г.
12. Удовольствие!
Код
Mojolicious::Lite
Код
Mojolicious
Mojo
CGI FastCGI PSGI HTTP 1.1 WebSocket
вторник, 18 мая 2010 г.
13. Mojolicious::Lite
MVC веб-фреймворк
~ sinatra
вторник, 18 мая 2010 г.
14. use Mojolicious::Lite;
get '/hello' => sub {
shift->render_text( 'Привет Devconf!' );
};
app->start;
вторник, 18 мая 2010 г.
15. use Mojolicious::Lite;
post '/hello' => sub {
shift->render_text( 'Привет Devconf!' );
};
app->start;
вторник, 18 мая 2010 г.
16. use Mojolicious::Lite;
any '/hello' => sub {
shift->render_text( 'Привет Devconf!' );
};
app->start;
вторник, 18 мая 2010 г.
17. use Mojolicious::Lite;
get '/hello' => (agent => qr/Firefox/) => sub {
shift->render_text( 'Привет Devconf!' );
};
app->start;
вторник, 18 мая 2010 г.
18. use Mojolicious::Lite;
post '/:name' => sub { # /*
my $self = shift;
my $name = $self->param('name');
$self->render_text( "Привет $name!" );
};
app->start;
вторник, 18 мая 2010 г.
19. use Mojolicious::Lite;
post '/:name' => { id => 42 } => sub { # /*
my $self = shift;
my $name = $self->param('name');
warn $self->param( 'id' );
$self->render_text( "Привет $name!" );
};
app->start;
вторник, 18 мая 2010 г.
20. use Mojolicious::Lite;
post '/:name' => { id => 42 } => sub { # /*
my $self = shift;
my $name = $self->param('name');
warn $self->stash( 'id' );
$self->render_text( "Привет $name!" );
};
app->start;
вторник, 18 мая 2010 г.
21. use Mojolicious::Lite;
post '/:name' => [ name => qr/d+/ ] => sub {
my $self = shift;
my $name = $self->param('name');
$self->render_text( "Привет $name!" );
};
app->start;
вторник, 18 мая 2010 г.
22. use Mojolicious::Lite;
any '/time' => 'clock';
app->start;
__DATA__
@@ clock.html.ep
% my ($sec, $min, $hour) = (localtime)[0, 1, 2];
Текущее время
<%= $hour %>:<%= $min %>:<%= $sec %>
вторник, 18 мая 2010 г.
23. use Mojolicious::Lite;
websocket '/echo' => sub {
my $self = shift;
$self->receive_message(
sub {
my ($self, $msg) = @_;
$self->send_message( "тук-тук: $msg" );
}
);
};
вторник, 18 мая 2010 г.
24. Примеры
Mojolicious WebSocket
@xantus, @vti
Интересный пример IRC-клиент
вторник, 18 мая 2010 г.
25. use Mojolicious::Lite;
get '/fetch' => sub {
my $self = shift;
$self->render_data(
$self->client
->get( 'http://devconf.ru' )
->res
->body
);
};
вторник, 18 мая 2010 г.
26. use Mojolicious::Lite;
plugin charset => { charset => 'windows-1251' };
ladder sub {
my $self = shift;
# проверка авторизации
};
...
вторник, 18 мая 2010 г.
27. Cписок всех роутеров
приложения
script/lite.pl routes
/hello (?-xism:^/hello)
/time (?-xism:^/time)
/echo (?-xism:^/echo)
/fetch (?-xism:^/fetch)
/:name (?-xism:^/((?-xism:d+)))
вторник, 18 мая 2010 г.
28. Если много шаблонов
в секции __DATA__
script/lite.pl inflate
/templates/
/templates/clock.html.ep
вторник, 18 мая 2010 г.
29. Сокращатель ссылок
на Mojolicious::Lite
100 строк кода (5 обработчиков)
130 строк шаблонов (4 шаблона)
1 файл
вторник, 18 мая 2010 г.
31. Mojolicious
MVC веб-фреймворк
~ Ruby on Rails
вторник, 18 мая 2010 г.
32. package App;
use base 'Mojolicious';
sub startup {
my $self = shift;
my $r = $self->routes;
$r->route('/:controller/:action/:id')
->to('example#welcome', id => 1);
}
1;
вторник, 18 мая 2010 г.
33. package App;
use base 'Mojolicious';
sub startup {
my $self = shift;
my $r = $self->routes;
$r->route('/:controller/:action/:id')
->to('example#welcome', id => 1);
}
1;
вторник, 18 мая 2010 г.
34. package App;
use base 'Mojolicious';
sub startup {
my $self = shift;
my $r = $self->routes;
$r->route('/:controller/:action/:id')
->to('example#welcome', id => 1);
}
1;
вторник, 18 мая 2010 г.
35. package App;
use base 'Mojolicious';
sub startup {
my $self = shift;
my $r = $self->routes;
$r->route('/:controller/:action/:id')
->to('example#welcome', id => 1);
}
1;
вторник, 18 мая 2010 г.
36. package App;
use base 'Mojolicious';
sub startup {
my $self = shift;
my $r = $self->routes;
my $b = $r->bridge->to('auth#check);
$b->route('/admin')->to('admin#welcome');
}
вторник, 18 мая 2010 г.
37. package App;
use base 'Mojolicious';
sub startup {
my $self = shift;
my $r = $self->routes;
$r->route('/:controller/:action/:id')
->to('example#welcome', id => 1);
}
1;
вторник, 18 мая 2010 г.
38. package App::Example;
use base 'Mojolicious::Controller';
sub welcome {
my $self = shift;
warn $self->stash( ‘id’ );
$self->render( message => 'Devconf!' );
}
1;
вторник, 18 мая 2010 г.
39. Шаблон
example/welcome.html.ep
controller / action . format . handler
вторник, 18 мая 2010 г.
40. Шаблон
example/welcome.xml.ep
controller / action . format . handler
вторник, 18 мая 2010 г.
41. Шаблон
example/welcome.rss.ep
controller / action . format . handler
вторник, 18 мая 2010 г.
42. Шаблон
example/welcome.mail.ep
controller / action . format . handler
вторник, 18 мая 2010 г.
43. Шаблон
example/welcome.html.ep
controller / action . format . handler
вторник, 18 мая 2010 г.
44. Шаблон
example/welcome.html.tt
controller / action . format . handler
вторник, 18 мая 2010 г.
54. Mojo::Client
HTTP 1.1 и WebSocket клиент
вторник, 18 мая 2010 г.
55. my $client = Mojo::Client->new;
$client->get(
‘http://devconf.ru’ => sub {
my ($self, $tx) = @_;
say $tx->res;
}
)->process;
вторник, 18 мая 2010 г.
56. my $client = Mojo::Client->new;
$client->post(
‘http://devconf.ru’ => sub {
my ($self, $tx) = @_;
say $tx->res;
}
)->process;
вторник, 18 мая 2010 г.
57. my $client = Mojo::Client->new;
$client->put(
‘http://devconf.ru’ => sub {
my ($self, $tx) = @_;
say $tx->res;
}
)->process;
вторник, 18 мая 2010 г.
58. my $client = Mojo::Client->new;
$client->delete(
‘http://devconf.ru’ => sub {
my ($self, $tx) = @_;
say $tx->res;
}
)->process;
вторник, 18 мая 2010 г.
59. my $client = Mojo::Client->new;
$self->client->get(
‘http://devconf.ru’ => sub {
my ($self, $tx) = @_;
say $tx->res;
}
)->process;
вторник, 18 мая 2010 г.
60. my $client = Mojo::Client->new;
$client->async->get(
‘http://devconf.ru’ => sub {
my ($self, $tx) = @_;
say $tx->res;
}
)->process;
вторник, 18 мая 2010 г.
61. my $client = Mojo::Client->new;
$client->get(‘http://devconf.ru’)->res->code;
$client->get(
'http://search.twitter.com/trends.json'
)->success->json->{trends}->[0]->{name}
вторник, 18 мая 2010 г.
62. Mojo::IOLoop
TCP клиент-сервер
вторник, 18 мая 2010 г.
63. my $loop = Mojo::IOLoop->new;
$loop->listen(port => 3000, cb => sub {
my ($self, $id) = @_;
$self->read_cb ($id => sub { ... });
$self->write_cb($id => sub { ... });
);
my $id = $loop->connect(port => 3000, ...);
$loop->start; $loop->stop;
вторник, 18 мая 2010 г.
64. Test::Mojo
Фреймворк для тестирования
вторник, 18 мая 2010 г.
66. Всё, что нужно – есть!
Mojolicious – веб в коробке!
вторник, 18 мая 2010 г.
67. Mojolicious на CPAN
• Mojolicious • MojoX::Log::*
• Mojo::Server::FCGI • MojoX::Renderer::*
• AnyEvent::Mojo • TT
• Apache::Mojo • CTTP2, HTP
Apache2::Mojo
• XSLT
• Catalyst::Engine::Mojo • Mail
Squatting::On::Mojo
вторник, 18 мая 2010 г.
68. Документация
• Пока мало документации, зато очень
хороший фидбек :)
• Mojolicious::Lite и Mojolicious::Guides
• Mojolicious Handbook @kvorg
• Mojolicious FAQ @vti
вторник, 18 мая 2010 г.
69. Полезная информация
• http://mojolicious.org
• irc://irc.perl.org/#mojo
• http://groups.google.com/group/mojolicious
• Github: kraih, vti, xantus, memowe, sharifulin
• Twitter: @kraih, @vtivti, @sharifulin
• Juick: @vti, @sharifulin
вторник, 18 мая 2010 г.
70. «Making hard things possible
and everything fun!»
Девиз Mojolicious
вторник, 18 мая 2010 г.
71. «Duct tape
for the HTML5 Web»
Девиз Mojolicious #2
вторник, 18 мая 2010 г.