Skip to content

Instantly share code, notes, and snippets.

View klopp's full-sized avatar

Vsevolod Lutovinov klopp

  • Russia
  • 06:52 (UTC +03:00)
View GitHub Profile
@klopp
klopp / anyevent-getter.pl
Last active May 6, 2016 19:46
Тестовое задание
#!/usr/bin/perl
# ------------------------------------------------------------------------------
# Необходимо разработать консольное приложение на базе фреймворка AnyEvent,
# которое принимает список URL из STDIN, вызывает их все сразу в
# неблокирующем режиме, выводя на экран полученные ответы по мере их получения
# и статистику по скорости вызова каждого урла после завершения всех вызовов.
# ------------------------------------------------------------------------------
use Modern::Perl;
use AnyEvent::Fork;
@klopp
klopp / json-rpc.pl
Created June 29, 2016 20:01
Тестовое задание
#!/usr/bin/perl
# ------------------------------------------------------------------------------
# Разработать JSON-сервис на Perl:
# * загружает из файла настроек порт, параметры коннекта к БД и список
# разрешенных методов и начинает слушать заданный порт
# * получает запрос JSON-RPC (содержит внешнее имя метода и аргументы)
# * конвертирует запрос в SELECT * FROM name(args) и выполняет его в БД Postgresql
# * возвращает JSON-RPC структуру с результатом запроса или описанием ошибки
# ------------------------------------------------------------------------------
@klopp
klopp / tsv-insert.pl
Last active July 7, 2016 17:26
Тестовое задание (Яндекс, 11 мая 2016)
#!/usr/bin/perl
# ------------------------------------------------------------------------------
# Напишите программу на Perl, которая получает первым аргументом командной
# строки имя tab-separated файл и записывает его содержимое в таблицу БД.
# Таблица создана таким запросом:
#
# create table banners (
# banner_id int unsigned not null primary key,
# title varchar(200),
@klopp
klopp / mojo-spider.pl
Last active July 13, 2016 15:26
Тестовое задание
#!/usr/bin/env perl
# ------------------------------------------------------------------------------
# Написать скрипт, который принимает в аргументах url с сайтом и делает
# рекурсивный обход всех страниц этого сайта (как указанного в аргументе,
# так и его поддомены, если они будут встречаться) и выводит их в виде дерева
# на stdout.
#
# Необходимо использовать Mojo::IOLoop, Mojo::UserAgent и Mojo::DOM для решения.
#
@klopp
klopp / calc.c
Last active July 18, 2016 10:49
Тестовое задание
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <limits.h>
/* ----------------------------------------------------------------------------
* Напишите программу, которая считывает со стандартного ввода строку и выводит
* на стандартный вывод значение арифметического выражения, содержащегося в
* этой строке.
#!/usr/bin/env perl
# -----------------------------------------------------------------------------
use Modern::Perl;
use AnyEvent;
use AnyEvent::HTTP;
use Const::Fast;
# -----------------------------------------------------------------------------
# Задача: распараллелить N действий так, чтобы в T секунд совершалось не больше
@klopp
klopp / ctu.c
Created September 16, 2016 09:11
Тестовое задание
#define _GNU_SOURCE
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
/* -----------------------------------------------------------------------------
* Написать функцию, которая меняет первые буквы слов на заглавные и сохраняет
* их в отдельную строку.
*
#!/usr/bin/perl
# Напишите на Perl примитивный базовый класс MyApp::Accessor для
# использования в качестве базового класса для генерации ацессоров
# (методов которые сохраняют и отдают свойство объекта). Ацессоры должны
# работать настолько быстро, насколько это возможно в принципе. Какими
# технологиями/модулями, по вашему, лучше всего пользоваться в реальной
# разработке для создания ацессоров?
# P.S. Accessor – это примитивная функция, которая служит для доступа к
# свойству объекта извне. Т.е. $obj->property() – возвращает значение,
package AA;
sub func { print "AA\n" }
package BB;
use parent 'AA';
sub func { print "BB\n"; shift->SUPER::func(@_); }
package CC;
use parent 'AA'
sub func { print "CC\n"; shift->SUPER::func(@_); }
#
# Чем отличаются между собой переменные, объявленные с помощью my, our,local, state?
# Что и почему напечатается, если в качестве XXX подставлять вышеуказанные 4 типа объявления переменных?
#
func() for 1..10;
sub func {
my $var;
$var++;
say "A=$var";
}