03.04.2012 Впечатления от РИТ++ 2012
Пользы нет... Наверное на этой фразе стоило бы и закончить этот пост. К сожалению, подводя итоги этой конференции для себя, я сделал вывод, что я не услышал совершенно ничего нового, о чем бы раньше не слышал. Сразу вспоминаю, как я уходил с HighLoad несколько лет назад с полностью исписанным блокнотом, полным той литературы, которую мне нужно срочно прочитать. Вспомнил YAC от Яндекса и его субботники, вспомнил технофорум mail.ru. Уходя с каждой из этих конференций, я приходил домой и судорожно копался в википедии, изучая новые термины, новые технологии, новую литературу. Сегодня же, искать в википедии мне нечего.
Но, конечно же не все так печально, как мне кажется. Многим начинающим программистам, возможно, это было полезно. Были и интересные доклады. Особенно мне понравился доклад ашмановцев про их "семантическое зеркало" для Вьетнама, очень интересная система. Был хороший доклад про релевантность и поиск от разработчика Sphinx, но, все это уже было известно. Также Был традиционный доклад Кости Осипова про его tarantool :) Выделить что-то еще, я к сожалению не могу.
Зато, пообщался с интересными людьми. Втроем, где-то за пол часа мы решили головоломку от Google, которую смогли решить еще только в двух странах на подобных мероприятиях:) Потом успел пообщался с работником гугла из Дублина. До этого он работал в поиска Рамблера, оказывается у нас очень много знакомых, мир и правда тесен. Часть народу из бывшего поиска рамблера сейчас работает у нас.
29.03.2012 Ура, я еду на РИТ++
РИТ++ - наверное одна из самых масштабных IT кофнеренций России. На ней собираются все самые сливки IT общества :) Проходить в этом году она будет 2 и 3 апреля. Есть куча интересных секций. В первую очередь, меня интересует конечно же секция "Серверная разработка", но я постараюсь послушать как можно больше. Спасибо Mail.ru за возможность моего участия там!
Сайт конференции: http://ritconf.ru
Кстати, совсем скоро будет проходить Технофорум Mail.ru, посвященный системному администрированию.
01.03.2012 Простенькая задачка по программированию
Случайно наткнулся на простую задачку. Она послужит хорошей тренировкой для начинающих программистов. Текст задачи ниже.
В Самую Секретную Военную Часть под командованием полковника Покрышкина приехал с проверкой генерал из Министерства Обороны. По этому случаю полковник приказал всем n солдатам из своей Части построиться на плацу.
Согласно военному уставу, солдаты должны стоять в порядке невозрастания их роста, но так как времени на построение совсем не осталось, то солдаты выстроились в произвольном порядке. Однако у генерала весьма плохое зрение, и поэтому он считает, что солдаты построены правильно, если самый первый в строю — солдат с максимальным ростом, а самый последний — солдат с минимальным ростом. Обратите внимание, что неважно то, как расположены остальные солдаты, в том числе и в случае нескольких максимальных или минимальных по росту солдат. Важны лишь росты первого и последнего солдата.
Например, генерал считает последовательность ростов (4, 3, 4, 2, 1, 1) правильной, а последовательность (4, 3, 1, 2, 2) — нет.
За одну секунду полковник может обменять местами любых двух соседних солдат. Помогите ему подсчитать, какое минимальное количество секунд понадобится, чтобы получившийся строй понравился генералу...
Полный текст условия задачи.
Мое решение: permutations.pl:
#!/usr/bin/perl -w
use strict;
#reading input data
open F, $ARGV[0] or die('Cant read input data');
my $n = int(<F>);
my @soldiers = split(/\s+/,<F>);
die('Incorrect input data') unless $n and scalar(@soldiers) == $n;
#Counting min permutations
my $min_permutations = 0;
#1. Trying to find min and max soldier
my ($min_soldier,$min_soldier_index,$max_soldier,$max_soldier_index) = (99999,0,-99999,$n-1);
for(my $i=0; $i<$n; ++$i){
#interesting in max index
($min_soldier, $min_soldier_index) = ($soldiers[$i], $i)
if $min_soldier >= $soldiers[$i];
($max_soldier, $max_soldier_index) = ($soldiers[$i], $i)
if $max_soldier < $soldiers[$i];
}
#2. Counting how many permutations we need
$min_permutations = $max_soldier_index + ($n - 1 - $min_soldier_index);
#2a. Case when max soldier stands righter then min soldier
$min_permutations-- if $max_soldier_index > $min_soldier_index;
#3. Printing result to stdout
print $min_permutations."\n";
Запускается так: perl permutations.pl data_file
28.02.2012 Автоматический backup MySQL базы данных с возможностью восстановления последней рабочей копии
Наверное каждый из разработчиков более менее крупного проекта хотя бы раз задумывался о его надежности. Давайте представим, что у вас внезапно пропали данные из базы данных вашего сайта. Как это произошло? Допустим у вас полетел диск на сервере, или ваш доблестный товарищ перепутал "SELECT * FROM..." с "DROP DATABASE...", такое тоже случается:). Как быстро вы сможете вернуть утерянные данные с минимальными потерями, и снова привести сайт в рабочее состояние? Учитывая, что разработчики большинства сайтов лишь что-то слышали о mysqldump, а делать его всегда лень, большинство сайтов восстановить не удастся.
Совсем недавно мне попалась подобная задачка, и я написал пару удобных bash скриптов, которые могут быть полезны и вам в ситуации, если вдруг сломается ваша MYSQL. Эти скрипты может написать любой, но зачем писать то, что написали уже за вас?
Первый скрипт(create_mysql_dump.sh) - делает копию базы данных. Все, что вам нужно - это указать в параметрах скрипта параметры соединения с БД, имя базы и каталог, в котором будут сохраняться бэкапы. Достаточно повесить его на crontab раз в сутки, чтобы спать спокойно :) Второй скрипт(restore_mysql_dump.sh) - восстанавливает последний backup базы данных. Все что нужно сделать - это опять же прописать настройки соединений с БД.
Скачать оба скрипта одним архивом можно здесь: mysqldump.zip
24.02.2012 Просто совпадение?
Сегодня второй раз выступал на конференции в МИЭМе. Второй раз потому, что подал заявку на участие в конкурсе У.М.Н.И.К, и так вышло, что я попал в следующий этап, где нужно было выступать перед специальной комиссией.
Параллельно выступали ребята, претендующие на ректорские гранты. Их было всего 12 человек. Часть докладов были просто ни о чем, а некоторые было очень даже интересно послушать. После выступлений, комиссия пошла совещаться, и уже, спустя 5 минут, они огласили троих победителей на гранты. Больше всего удивило то, что выйграли те 3 человека, чьи руководители сидели в комиссии. Может это просто совпадение?:)
В принципе, доклады у победителей неплохие. Победа одного из участников у меня даже не вызывает сомнений. Его знания, подготовка, и подход к научной деятельности несравнимо лучше, чем у всех остальных участников. Но что сказать про других победителей? Не мне оценивать их работы, но, я просто не мог ни поделиться столь интересным совпадением:)