Skip to content

Instantly share code, notes, and snippets.

View sharifulin's full-sized avatar

Anatoly Sharifulin sharifulin

View GitHub Profile
@sharifulin
sharifulin / gist:616824
Created October 8, 2010 13:46
Duty clean code and html
sub clean_code($){
for (my $str = shift) {
s/<(xml|style)>.*?<\/\1>//sg;
s/<!--.*?-->//sg;
s/<\/?([a-z0-9:]+)[^>]*?>/(grep { lc($1) eq $_ } 'p', 'a', 'b', 'strong', 'br', 'img') ? $& : ''/iesg; #tags
s/(<img[^>]+class=)("[^"]*"|\S+)/my ($r,$t) = ($1,$2); $r.($t =~ m!^"! ? $t : qq!"$t"!)/iesg;
s/(<\/?[a-z0-9]+)\s*([^>]*)>/ $2 ?
@sharifulin
sharifulin / gist:613760
Created October 6, 2010 17:44
Mojo::IOLoop and Mojo::Client
#!/usr/bin/env perl
use lib 'lib';
use Mojo::IOLoop;
use Mojo::Client;
my $loop = Mojo::IOLoop->new;
my $client = Mojo::Client->new; $client->ioloop( $loop );
foo();
# don't work
use Mojolicious::Lite;
my $loop = app->client->ioloop;
$loop->timer(5 => sub {
my $self = shift;
warn 1111;
});
@sharifulin
sharifulin / gist:611589
Created October 5, 2010 14:01
LWP::UserAgent vs. Mojo::Client
use Mojo::Client;
use LWP::UserAgent;
use Test::More tests => 6;
my $r;
$r = LWP::UserAgent->new->post(
'http://post.audioscrobbler.com/2.0/',
'Content-Type' => 'application/x-www-form-urlencoded',
@sharifulin
sharifulin / gist:604897
Created September 30, 2010 16:47
Using Mojolcious-app in standalone script
use App;
use App::Controller;
my $self = App::Controller(app => App->new, tx => Mojo::Transaction::HTTP->new);
$self->helper(...);
$self->app->conf;
$self->app->db;
@sharifulin
sharifulin / gist:579121
Created September 14, 2010 14:25
Is share agent?
sub is_share_agent {
my $self = shift;
my $ua = $self->req->headers->user_agent;
my $range = $self->req->headers->header('Range');
my $enc = $self->req->headers->header('Accept-Encoding');
return
$ua =~ /facebookexternalhit/ && $range && $enc eq 'gzip' ? 'facebook' :
$ua eq 'Mozilla' && !$range && $enc eq 'gzip' ? 'buzz' :
@sharifulin
sharifulin / gist:562053
Created September 2, 2010 08:34
Get mp3-url from podcast
#!/usr/bin/env perl
use common::sense;
use ojo;
die "Usage: $0 <podcast url>" unless @ARGV;
b(g( shift )->dom->find("enclosure[url]")->each(sub {
local $_ = shift->attrs->{url};
say if /\.mp3$/;
}));
@sharifulin
sharifulin / gist:534788
Created August 18, 2010 13:51
mojo daemon + nginx = fail ?!
# mojo code
#!/usr/bin/env perl
use Mojolicious::Lite;
get '/' => sub {
shift->render(t => join '', 1..50_000);
} => 'index';
@sharifulin
sharifulin / gist:517102
Created August 10, 2010 11:20
Mojolicious controller
package App:Foo;
use common::sense;
use App::User::Info;
use base 'App::Controller';
__PACKAGE__->attr(user => sub { App::User::Info->new(%{ +shift }) });
sub bar {
my $self = shift;
@sharifulin
sharifulin / gist:484208
Created July 21, 2010 07:59
Idea for Mojolicious::Lite app
#!/usr/bin/env perl
use Mojolicious::Lite;
use App::Foo;
use App::Bar;
for (ref app) {
$_->attr(db => sub { ... });
$_->attr(conf => sub { ... });
}