The document announces and provides details about YAPC::Europe 2013 conference on Perl that will take place August 12-14, 2013 in Kiev, Ukraine. The conference will feature talks and presentations on Perl 5 and Perl 6 from Larry Wall and over 200 Perl hackers from many countries, as well as a Perl 6 hackathon and social events including a river cruise. Attendees can look forward to delicious Ukrainian food and an opportunity to network with the international Perl community.
The document announces and provides details about YAPC::Europe 2013 conference on Perl that will take place August 12-14, 2013 in Kiev, Ukraine. The conference will feature talks and presentations on Perl 5 and Perl 6 from Larry Wall and over 200 Perl hackers from many countries, as well as a Perl 6 hackathon and social events including a river cruise. Attendees can look forward to delicious Ukrainian food and an opportunity to network with the international Perl community.
Ещё один способ привлекать и удерживать пользователей в играх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.
То, что русскому — ФРИИ, финну — 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.
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.
То, что русскому — ФРИИ, финну — 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 г.