пятница, 30 сентября 2011 г.

среда, 28 сентября 2011 г.

Про мой подъезд

Тут у нас как-то дверь в подъезде сломалась. Ну не сама дверь, а домофон. Изнутри на кнопку "открыть" жмёшь, а дверь не открывается. Пошёл я на работу, ну и стоял с другими жильцами в подъезде под дверью, пока снаружи дверь не открыл кто-то. Мужик один позвонил жене, говорит, мол, по домофону открой. Ни фига, не открывается тоже. Девушка одна принялась стучать в стекло и махать руками парню какому-то, который мимо подъезда проходил. Симпатичная девушка. Парень посмотрел, посмотрел... (представляю, что он увидел - девушка машет ему рукой, стучит в стекло и к себе жестами подзывает, а в глубине подъезда видны фигуры нескольких мужчин) ...и ускорил шаг.

Потом ещё алкаш какой-то в подъезд к нам попал. Сидит внизу под лестницей, спит бухой сидя, грязный весь, как бомж. Я его разбудил, говорю, мол, выметайся из подъезда. Он сначала мычал что-то, потом, видимо, разглядел меня, послал на три буквы, высморкался на пол и посоветовал мне проваливать на три буквы. Почуял, видимо, интеллигентскую жилку во мне, что я его лицо ботинками в фарш не превращу. Ну ладно, я пошёл, зашёл к соседу. Сосед у меня по лестничной площадке - громила ростом метра два, такой своим видом алкаша того уже заставит выползти из подъезда. Но соседа дома не оказалось. Что ж, я взял и вызвал полицию. Все говорят, мол, вот вызовешь ментов, себе же дороже. Да ничего подобного! Алкаш проснулся, принялся ругаться и советовать мне поскорее исчезнуть из его поля зрения. Я перезвонил в полицию и уточнил, что бомж в подъезде проснулся и стал вести себя агрессивно, на что мне милая оператор сказала, что наряд уже подъезжает. И правда, из-за поворота спустя пару минут показалась полицейская шестёрка.

От общения с полицейскими у меня остались только положительные впечатления. Алкаш тот, только увидев полицейскую форму, сам вышел из подъезда и отмазывался:
- Да чо ты! Ну чо, да ладно, уберу я за собой! Да чо ты!
Со мной-то он разговаривал не так. Инспектор записал в бумажку мои фамилию, имя и отчество, адрес проживания и даже не спросил паспорт, видимо, тоже почуяв интеллигентскую жилку.

Куда потом господа полицейские дели этого алкаша, я не знаю, потому что, отблагодарив их и попрощавшись, развернулся и пошёл на работу.

понедельник, 26 сентября 2011 г.

Домашнее задание 4 (часть 2)

Желая стать чуть более труе, чем есть, я поддался на провокации и слегка модифицировал скрипт домашнего задания №4 для программистов, чтоб он прогонял это всё раз за разом все с большим и большим числом точек. Сначала с шагом увеличения числа точек 10 до тысячи, потом с шагом увеличения числа точек 1000 до ста тысяч. Правда, мой скрипт до ста тысяч не добрался и вывалился из-за переполнения памяти где-то на 64 тысячах.

И получился вот такой график в итоге.

По оси ординат - секунды, по оси абсцисс - число точек.

Кстати говоря, мой алгоритм всё же оказался дерьмом, потому как atan($y / $x) при $x = 0 давал сбой. Но это решилось смещением центра полярной системы координат на нецелое число пикселей вбок. Кстати, вот как выглядит решение задачи при числе точек, равном 60000:

Домашнее задание 4

Следующее, четвёртое, домашнее задание, предложенное программистам, было следующим: на ограниченном куске плоскости случайным образом задаются 50 точек. Требуется по ним по всем построить замкнутый контур, и нарисовать его. Первая мысль, которая приходит в голову - напилить треугольничков между точками, чтоб получился граф. И по графу искать нужный контур. Эту мысль я отмёл сразу как очень трудоёмкую, и стал думать. И совершенно случайно в пятницу вечером за вискарём во время обсуждения я высказал вслух отличное решение. Моё отличное решение очень простое - поставить куда-нибудь в середину точку и объявить её центром полярной системы координат. Относительно неё перевести все 50 точек в полярные координаты, отсортировать по углу, и соединить.
<?php

$image_width   = 700;
$image_height  = 500;
$points_number = 50;

function dekart2polar($point_x, $point_y, $center_x, $center_y)
{
	$x = $point_x - $center_x;
	$y = $center_y - $point_y;
	$a = sqrt(pow($x, 2) + pow($y, 2));
	if($a == 0)
	{
		$f = 0;
	}
	else
	{
		$f = atan($y / $x);
	}
	if($x < 0)
	{
		$f += 3.14159265;
	}
	elseif($y < 0)
	{
		$f += 2 * 3.14159265;
	}
	return array($a, $f);
}

function polar2dekart($point_a, $point_f, $center_x, $center_y)
{
	$x = $point_a * cos($point_f) + $center_x;
	$y = $center_y - $point_a * sin($point_f);
	return array($x, $y);
}

$_POINTS = array();
for($i = 0; $i < $points_number; $i++)
{
	$_POINTS[] = array(round(mt_rand(0, $image_width)), round(mt_rand(0, $image_height)));
}

$image = imagecreatetruecolor($image_width, $image_height);
imagefill($image, 1, 1, imagecolorallocate($image, 255, 255, 255));

$max_x = $max_y = 0;
$min_x = $min_y = false;
foreach($_POINTS as $point)
{
	$max_x = max($max_x, $point[0]);
	$max_y = max($max_y, $point[1]);
	$min_x = $min_x === false ? $point[0] : min($min_x, $point[0]);
	$min_y = $min_y === false ? $point[1] : min($min_y, $point[1]);
	
	// для отладки - если на картинке останутся чёрные точки, значит, алгоритм дерьмо
	imagesetpixel($image, $point[0], $point[1], 0);
}
$center_x = ($max_x - $min_x) / 2;
$center_y = ($max_y - $min_y) / 2;

$_POINTS_POLAR = array();
foreach($_POINTS as $point)
{
	$_POINTS_POLAR[] = dekart2polar($point[0], $point[1], $center_x, $center_y);
}

usort($_POINTS_POLAR, create_function('$a, $b', 'return $a[1] > $b[1];'));

$red = imagecolorallocate($image, 255, 0, 0);

$prev_x = $prev_y = false;
foreach($_POINTS_POLAR as $point)
{
	$point = polar2dekart($point[0], $point[1], $center_x, $center_y);
	$x = round($point[0]);
	$y = round($point[1]);
	if($prev_x !== false)
	{
		imageline($image, $prev_x, $prev_y, $x, $y, $red);
	}
	else
	{
		$first_point = array($x, $y);
	}
	$prev_x = $x;
	$prev_y = $y;
}
imageline($image, $x, $y, $first_point[0], $first_point[1], $red);
imagepng($image, 'circular.png');
imagedestroy($image);

?>
Результат выполнения:

воскресенье, 25 сентября 2011 г.

Осенняя дорога


Осенняя дорожка через лес. Canon 50D + Sigma 18-50mm F2.8-4.5 DC OS,
F2.8, 1/20 sec, ISO 1000, EV -1

четверг, 22 сентября 2011 г.

Домашняя работа 2 и 3

Второе домашнее задание разработчикам получилось очень сложным. Задача стояла такая: есть 25 гробов, каждый из которых характеризуется двумя случайно заданными числами - массой гроба (от 1 до 10 кг) и его жёсткостью (сколько килограмм он выдержит на себе, от 10 до 100 кг). И надо найти максимально высокую башню, которую можно построить из данного набора гробов. Совершенно случайно я задал такие параметры (25 гробов, 1-10 кг масса и 10-100 жёсткость), что перебором решить эту задачу не представлялось возможным. Я с помощью всяческих ухищрений ухитрился значительно сократить количество возможных итераций, но всё равно перебор шёл оооочень долго. на 11 гробах - долю секунды, 12 - секунды, 13 гробах - десятки секунд, 14 гробах - минуты, а вот на 15... мне надоело ждать, пока оно переберёт хотя бы половину комбинаций, и я прервал расчёт. А вот наш начальник отдела конроля качества (и единственный его сотрудник) Роман Сергеевич молодец, он единственный придумал или нашёл где-то быстрый алгоритм, заключающийся в поиске максимально жёсткой башни заданной высоты (метод подъёма на холм, что ли, называется - поиск максимума на каждом шаге и инкрементация). Так как никто не смог доказать наличие локального ложного максимума, куда может завести этот метод, проверка его перебором с небольшим количеством гробов и методом Монте-Карло подтвердили правильность результатов, то результат засчитали.

Третье домашнее задание мы взяли немного попроще, чтоб побольше народу его решило. Задача такая: есть лестница из 1000 ступеней, приставленная к стене дома. На каждой ступени есть стрелка, показывающая вверх или вниз (определяется случайном образом), и на одну из ступенек рандомайзером забросило садовника. Садовник может подниматься или опускаться только в ту сторону, куда показывает стрелка, и проходя по ступеньке, садовник меняет направление стрелки на противоположное. Надо сказать, спустится он когда-нибудь или нет. Сперва я подумал, что это нерешаемая алгоритмически Проблема Останова (в общем случае нельзя определить, остановится когда-нибудь произвольный алгоритм или нет), но моделирование ситуации в голове во время мытья под душем показало обратное.

Садовник движется в одну сторону до тех пор, пока наступает на ступеньки со стрелками, которые показывают в эту сторону, при этом он разворачивает их в противоположную. Встретив стрелку, показывающую ему навстречу, он разворачивает её и идёт по стрелочкам обратно до тех пор, пока снова не встретит стрелочку, показывающую ему навстречу. То есть он будет болтаться вверх и вниз по лестнице, с каждым разом поднимаясь всё выши и опускаясь всё ниже. Стало быть, опустится он когда-нибудь или нет, определяется количеством стрелочек, которые расположены выше него и разворачивают его вниз и стрелочек, которые разворачивают его вверх и расположены ниже его.

Алгоритм:
<?php
$_LADDER = array();
for($i = 0; $i < 1000; $i++)
{
	$_LADDER[$i] = mt_rand(0, 400) > 200 ? 1 : 0; // 1 - флажок наверх, 0 - флажок вниз
}
$M = round(mt_rand(0, 1000)); // ступенька, на которой стоит садовник
if($M == 0)
{
	echo "Садовник уже спустился\n";
}

// вариант первый, более изящный
$flags_up_under_M = 0; // флажков "наверх" ниже садовника
$flags_down_higher_M = 0; // флажков "вниз" выше садовника
for($i = 0; $i < 1000; $i++)
{
	$flags_down_higher_M += ($i > $M && !$_LADDER[$i]);
	$flags_up_under_M += ($i < $M && $_LADDER[$i]);
}
if($flags_up_under_M  + $_LADDER[$M] > $flags_down_higher_M)
{
	echo "1) Садовник не спустится\n";
}
else
{
	echo "1) Садовник спустится\n";
}

// вариант второй, "в лоб"
class TuringMachine
{
	protected $position;
	
	public function __construct($position)
	{
		$this->position = $position;
	}
	
	public function run()
	{
		while($this->position > 0 && $this->position < 999)
		{
			$this->step();
		}
		if($this->position)
		{
			echo "2) Садовник не спустился\n";
		}
		else
		{
			echo "2) Садовник спустился\n";
		}
	}
	
	protected function step()
	{
		global $_LADDER;
		if($_LADDER[$this->position])
		{
			$_LADDER[$this->position] = 0;
			$this->position++;
		}
		else
		{
			$_LADDER[$this->position] = 1;
			$this->position--;
		}
	}
}

$sadovnik = new TuringMachine($M);
$sadovnik->run();

?>

среда, 21 сентября 2011 г.

УкрЯма

Как, наверное, уже известно всем читателям хабрахабра и окрестностей, открыты исходники "РосЯмы". По идее, открытие исходников какого-нибудь проекта должно сопровождаться двумя вещами - созданием клонов и форков. Если кто-то, не обладающий профессиональными знаниями в области веб-разработки захочет развернуть у себя свою маленькую локальную копию "РосЯмы", то столкнётся с кучей неочевидных вещей, и, по идее, должен будет задавать вопросы "а чё тут не работает?", а кто-то обладающий профессиональными знаниями оной области - "у вас тут не работает, но я починил, смотрите как".

Несмотря на то, что я заранее скептически отнёсся к активности сообщества, даже я ожидал, что эффект будет значительнее. Похоже, сообщество действительно гораздо только пиздеть в каментах, потому что поначалу что-то реально сделали только 4-5 человек. И я ходил расстроенный и разочарованный, недоумевая, как так "РосПил" собрал несколько миллионов рублей жертвоприношений, а "РосЯма" - всего один патч, закрывающий XSS-уязвимость на странице карт. Но тут нам в "Гринсайт" написали ребята с Украины. Мы, говорят, хотим запилить "УкрЯму" на основе ваших исходников, пособите?

А чего ж не пособить. Работы, конечно, у этих ребят было дофигища - РосЯма полностью заточена под РФ - субъекты, законодательство, шаблоны заявлений, и им пришлось всё переделывать. Ну, не всё, конечно, но многое. Чем могли, мы им помогали (обычно добрым словом и полезным советом, а больше толком ничем и не могли), но, тем не менее, проект уже практически полностью готов к запуску. Пусть о нём пишут газеты, блоги и сам Алексей Навальный даст ссылку: ukryama.com. Ура!

А ещё там есть раздел "благодарности", среди которых мне передают отдельное спасибо ("отельное")! Моё честолюбие показывает флажок "winner", и я могу идти спать со спокойной душой, чистой совестью и лёгким сердцем.


По состоянию на 1 минуту первого ночи 22 сентября по московскому времени

вторник, 20 сентября 2011 г.

Осень

В Зеленограде наступила осень. В студии Greensight тоже наступила осень.


понедельник, 19 сентября 2011 г.

Ощущения

Довольно давно я как-то собирался принять участие в одном из можества флешмобов в ЖЖ, посвящённому тому, что я люблю слышать, видеть, нюхать, и всячески ощущать прочими рецепторами. И вот я много дней ходил понурив голову и думал, что же мне написать. Первоначально я хотел каждое из этого всего проиллюстрировать фотографиями, но передумал потом, и решил оставить пост без фотографий.

Прежде всего, хотел написать о том, что мне нравится нюхать. И тут я с удивлением обнаружил, что не обращаю внимания на запахи. То есть конечно обращаю, если, например, пахнет говном у кого-то изо рта, или в подъезде пахнет краской. И запахи делятся на три категории — те, на которые мне пофиг, и те, которые мне не нравятся. Третья категория — невыносимая вонь, но лучше не думать о запахах этой категории. Поэтому, понятное дело, мне проще писать о запахах, которые мне не нравятся. Например, захожу в лифт, а со мной барышня, и так от неё разит духами, что хочется задержать дыхание до своего этажа. Или какой-нибудь мудак в том же лифте накурит. Не нравящихся мне запахов великое множество.

воскресенье, 18 сентября 2011 г.

Москва

Вчера я имел неудовольствие побывать в столице нашей Родины Москве, в самом её центре, и удовольствие побывать в гостях у своего приятеля Сирожи и напиться там.

Я вышел на "Смоленской", зашёл в театральную студию "Артэ", а потом долго ходил взад и вперёд вдоль Садового кольца, в поисках, где бы его перейти или куда зайти пожрать. Очень странно, что вот центр Москвы, а пожрать негде! Кругом всякие лэтуали, ильдобэтэ, прочие бутики и банки. Да кому они на хер всрались? Есть хочу! Зашёл в какую-то пиццерию, а там вовсю шёл детский праздник, и я оттуда быстро ретировался. На противоположной стороне Садового кольца я увидел "кофехауз", но не нашёл, где перейти дорогу. И тут увидел две золочёные арки макдональдса в глубине квартала. И, таким образом, в центре Москвы, где, по идее, кафетерии и рестораны должны быть в наивысшей концентрации, я сидел и давился биг-тейсти, который биг, но вовсе не тейсти.

Потом я решил пройтись пешком по Новому Арбату, и прошёлся. В основном, кроме меня по Новому Арбату ходили иностранцы, отечественные панки и хипстеры, и люди, раздающие всякие рекламные бумажки, их было чуть ли не больше, чем остальных пешеходов.

Я увидел в конце улицы одну из башен Кремля, но опять же столкнулся с такой ситуацией, что не смог найти подземный переход, чтоб перейти туда, к Александровскому саду, и пошёл куда глаза глядят. В этот момент мой андроидофон с чего-то решил, что я нахожусь в городе Эшвилл, Северная Каролина, и, если верить ему, некоторое время я шёл по Макдоуэлл-стрит. Потом спустился в метро.

У моего боевого товарища Сирожы мы напились водки, я достал из пакета то, что купил в "Артэ", и мы фотографировались.

пятница, 16 сентября 2011 г.

Говно и доска

У нас в офисе с наступлением осени стала летать противная муха. Сидишь, бывало, программируешь, а она на руку сядет. Или на монитор греться, мерзкое создание. Я её гонял книжкой "Приёмы объектно-ориентированного проектирования. Паттерны программирования", когда она садилась на экран, пытался выделить и удалить в корзину. Всех она доставала и все от неё страдали. Недавно у нас в офисе стало две мухи или даже три. Я высказал предположение, что они почуяли сдохшее говно и прилетели на запах.


У нас в офисе много беспомощного говна. Один из ярчайших представителей оного - модем D-Link

В самый неподходящий момент - когда я тестировал вызов внешнего сервиса котировок, эта чёрная коробочка взяла и перестала работать. Сначала её пытались реанимировать. Потом все плюнули и разошлись из офиса, кто в институт пошёл, кто домой, кто обедать. Разработчики продолжали фигачить в локальных рабочих копиях. А мы с бухгалтером поехали в магазин и купили новую коробочку для интернета.

Я уже неоднократно показывал нашу разработческую доску. На ней мы рисуем и пишем что угодно, например, сегодня на ней с утра была нарисована гистограмма, отображающая количество косяков, которое осталось каждому из разработчиков до анального наказания, а после обеда было написано "клуб анонимных говнокодеров, режим работы пн-пт 8:00-20:00". Видимо, дизайнерам стало завидно, что у нас такая доска есть, а у них нет, и они запилили себе тоже доску на стену.





Правда, на такой доске у них не получится писать и рисовать, а получится только лепить туда бумажки. Они расчертили доску на несколько столбцов и налепили туда себе бумажек.

Ну а я сделал постановочную фотографию, которая является иллюстрацией к фразе "главное - не победа, главное - участие".



Кто останется участвовать последним, тот и победил.

четверг, 15 сентября 2011 г.

Карта GreenSight



Схема расположения регионов, контролируемых той или иной группировкой по состоянию на сентябрь 2011. Покрытие вай-фай сигналом и мобильной связью 100%. Рельеф местности позволяет применять танковые войска.

Обязательства

Очень многие мои знакомые программисты, что называется, немного левачат. Подпрограммливают в свободное время за денюжку. Ничего плохого в этом, наверное, нет, но я очень, очень не люблю левак. Работать налево в рабочее время - это совсем айайай, стулом по почкам за такое. Работать налево дома в свободное время - я ничего не имею против того, чтоб кто-то этим занимался, но сам такое ненавижу.

Дело не в какой-то там лояльности текущему работодателю или ещё чём-то подобном, дело в обязательствах. Если я соглашаюсь кому-то подпрограммить за деньги - это означает, что я беру на себя обязательства в своё свободное время не спать, не дрочить, не играть с детьми, а сидеть и программировать, пусть даже это будет влиять негативно на сон и настроение. Как в школе домашняя работа, только хуже - там-то можно было забить и списать на переменке, а тут нельзя, ибо обязательства и деньги.

среда, 14 сентября 2011 г.

Трололо фашизм

Как-то под вечер сегодня начальнику отдела контроля качества показалось, что один из разработчиков сделал жест "siege hail", и он принялся на этого разработчика наезжать, мол, ты чего зиги кидаешь?
- Да ничего я не кидаю, я ловил! - оправдывался тот.
- У тебя рука прямая была! - не унимался начальник отдела контроля качества.

Я услышал шум и совершенно инстинктивно взялся за троллинг, буквально за пару минут доведя начальника отдела контроля качества до белого каления. Он пытался взывать к моей совести, что, дескать, деды сражались и умирали за то, чтоб я тут жил, но его фраза про "почтить память предков" вызвала у меня приступ хохота. Когда я понял, что он не прикалывается, а совершенно серьёзно всей душой ненавидит фашистов и бросается на фашистскую символику, даже если она ему показалась, как бык на тореодора, было уже поздно, и он был на меня необычайно зол и обижен. Уходя после работы, он сказал всем "пока", а мне - "прощай, Дмитрий", как будто решил меня подстеречь возле подъезда и зарезать во славу процветания социализма за то, что я не поверил ему, что в Конституции Российской Федерации запрещён фашизм и отказался признавать то, что нельзя одновременно чтить память предков и спокойно относиться к неофашистам и нацистской символике.

Предки уже давным-давно умерли и сгнили и им всё равно, а тем ветеранам, которые ещё живы, правительство выделяет по три пачки крабовых палочек и немного лапши "доширак" ко дню победы, и им совершенно всё равно, ненавидит кто-то фашизм очень сильно или просто сильно.

89.32 КБ

Я против фашизма. Но также я и не разделаю взгляды тех, кто боится чисел 14 и 88, букв ss и коричневых рубашек, потому что вдруг духи предков обидятся за нечаянное использование фашистской символики, нашлют триста лет поноса. Хотел ещё этого товарища позлить - прийти завтра на работу в штанах расцветки flektarn, заправленных в высокие голенища ботинок, и положить себе на стол книжку про Манфреда фон Рихтгофена обложкой вверх. Но потом подумал, что не надо - вдруг и правда подкараулит и по башке стукнет.

понедельник, 12 сентября 2011 г.

Портрет в очках

В связи с недавними событиями, в результате которых произошло такое, о чём меня просили не рассказывать, угрожая тем, о чём меня тоже просили не рассказывать, я теперь три месяца должен постить у себя в бложике фоточки котят, сисек и демотиваторы на неполитические темы. Но я меж тем покажу свой портрет в очках.



Подпись под дебильной фотографией, призванная сделать её хотя бы чуть-чуть смешной или попытаться придать ей некий концептуальный глубинный смысл.

воскресенье, 11 сентября 2011 г.

Снеговик

Чистое, незамутнённое детское творчество.

суббота, 10 сентября 2011 г.

Самая противная вещь

Недавно на работе мы обсуждали самые противные в мире вещи. Меню Бира Грилса - что может быть ужаснее! Или вот наш дизайнер Шавкат сказал, что, по его мнению, самое ужасное, что может быть - это есть человечину. Да, я согласен, неприятно, но сегодня я познал новый уровень противности.

Маленькое отступление, надо подготовить читателя. Я люблю разделывать мясо. Кровь меня обычно не пугает, особенно своя. Когда мы в автошколе смотрели обучающий фильм про безопасность, там показывали документальные съёмки людей после ДТП, многие девушки не выдерживали - отворачивались. Я не моргнув глазом опускал руки в блевотину, чтоб прочистить засорившуюся от неё, блевотины раковину - протолкнуть через крестовину крупные кусочки пищи. Фотографии с места авиакатастроф с трупами разной степени обугленности и расчленённости не вызывают во мне никаких чувств. Короче, я мнил себя человеком с крепкой нервной системой, которого не так-то легко заставить проблеваться видом какой-нибудь мерзости. Про запахи я не говорю - бывает, такого нюхнёшь, что и проблюёшься, и обосрёшься, и в конвульсиях башкой об стенку ударишься.

Конец лирического отступления. Итак, сегодня я познал новый уровень мерзости. Началось всё с того, что в раковину плохо стала уходить вода. Если кто-то догадывается о том, что будет дальше, лучше дальше не читать. Я предположил, что дело всё в том, что внизу, под раковиной, к трубе подключается слив стиральной машинки, и, наверное, там что-то засорилось. Ну, стиральная машинка-то сливает всё с волосами, нитками, каким-нибудь мусором с одежды, а фильтр не пропускает только крупные вещи, например, щепки или монеты.

Я предусмотрительно надёл резиновые перчатки, ослабил резьбовое соединение и принялся вынимать сливную трубу. За трубой потянулась длинная, чёрно-серая с белыми вкраплениями, толстая сопля, состоящая, как мне показалось, из волос, слизи и водорослей. В нос ударил запах сточных вод. Второй рукой я взял эту соплю и попытался её вытянуть из трубы, она тянулась и тянулась... короче, я едва сдержался, чтоб не сблевать. Фу.

И снова о РосЯме

Как я уже говорил, иcходники РосЯмы открыты, Алексей Навальный написал об этом пост, и даже, вопреки моим сомнениям, нашлись люди (по крайней мере, один человек на текущий момент), готовые подключиться к этому проекту и помочь не только пиздежом в комментариях.

А теперь немного технической информации. Во-первых, исходники Битрикса не содержатся в репозитории, поэтому не надо ухмыляться "хе-хе, BSD-подобная лицензия и битрикс", и РосЯму можно развернуть на любой его редакции. Хотя нет, вру, не на любой, та ущербная редакция типа "мой первый сайт" или как там она, которая позволяет создать только два инфоблока, не подойдёт, так как два инфболока - это только справочники начальников ГИБДД и прокуратур, а новости и F.A.Q. - это уже ещё два.

Почему Битрикс? Ну, я уже писал об этом, мне не лень повторить. Когда мы начинали работу над РосЯмой, мы не предполагали, что когда-либо будем открывать исходники, ну и взяли Битрикс "по инерции" - мы привыкли с ним работать. Существенную часть бюджета студии Greensight составляет продажа сайтов на Битриксе с кастомным дизайном и компонентами корпоративным клиентам. Я согласен с теми, кто говорит: "Битрикс - беспомощное монструозное эпическое говно", но у нас нет своей самописной CMS, а в Битриксе зато есть авторизация через соцсети, поэтому он обеспечивает РосЯму всем базовым функционалом.

Но РосЯма написана не как отдельно стоящий сайт, пользующийся битриксовской авторизацией, а довольно глубоко в него интегрирована, поэтому выдрать её из Битрикса не будет тривиальной задачей, если кто-то думает иначе, то он ошибается. Как и положено, мы сделали свой модуль Битрикса (даже не один), в котором содержится описание статических классов с функциями базового функционала. Этот модуль можно установить через админку Битрикса, он создаст таблицу для хранения ям. В папке bitrix/components/greensight располагаются компоненты. Если сравнивать Битрикс с моделью MVC, то компоненты - это как раз получаются контроллеры; а шаблоны компонентов - это тогда вью. Ещё есть основной шаблон РосЯмы, где описаны основные стили, вёрстка хедера и футера, ну и всё такое.

А, вот ещё. Вопрос, который волнует многих: "почему mercurial, а не git, ведь git лучше mercurial?". По моему мнению, ничуть не лучше. Однако, я не возражаю против расположения исходников РосЯмы на гитхабе, и даже за, но тут существуют определённые организационные и технические вопросы, и требуется время на их решение. А так мне без разницы, откуда забирать изменения в основной репозиторий РосЯмы в Гринсайте - с hg.rosyama.ru или с гитхаба, главное, чтоб всем удобно было.

Надеюсь, из затеи выйдет толк, и найдутся инициативные люди, готовые помочь развитию проекта, а не будет такого, что попиздели и разошлись (как обычно, на мой взгляд, и происходит, что является основной причиной того, что большинство краудсорсинговых проектов в России мертворождённые).

пятница, 9 сентября 2011 г.

Пятница

Рабочая неделя пролетела как-то совершенно незаметно, вроде бы только-только началась, а уже пятница. Выдалась неделька, надо отметить, ударная, всё благодаря кое-какой фирме, которая работает на министерство, а мы у них на субподряде. Давно так не имели в мозг меня и всю команду разработчиков. И это ещё не всё, в понедельник будет продолжение.

Пообедал сегодня с чуваками в "Пастальяно", это такой итальянский ресторанец на углу Панфиловского проспекта и Солнечной аллеи. Если бы я знал, что там так дорого и невкусно (супчик там очень даже ничего, а вот паста карбонара не оправдала моих ожиданий, да и, к сожалению, оказалась не такой горячей, как хотелось бы), то я бы не пошёл туда, конечно.

А вообще неделя мне запомнилась, помимо детских болезней, знакомством с культурой славной страны Чехии. Знакомство с культурой Чехии заключалось в знакомстве с творчеством двух музыкальных коллективов чешского происхождения - Silent Stream of Godless Elegy и Salamandra. SSGE это такой заунывный фолк-блэк метал, очень нравится нашему бухгалтеру, а мне не очень. Что касается Salamandra, то тут с точностью до наоборот - мне понравилось очень, слушаю целыми днями в наушниках на работе и в колонках дома. Мелодичный симфонический-павер. Напоминает местами Therion образца конца 90-х - начала 2000-х.

среда, 7 сентября 2011 г.

Лазарет

Вот ведь как происходит. В одной и той же семье дети болеют одной и той же болезнью ну совершенно по-разному. У кого-то температура что 36.6°, что 37.7° - скачет, как лось, по квартире, а у кого-то чуть за 37 - и настроение плохое, вялость, сонливость, капризы. Кто-то отделался насморком и лёгким покашливанием, а у кого-то кашель лечим антибиотиками.

воскресенье, 4 сентября 2011 г.

ЛОСТ, первый сезон

Мы с женой вчера вечером досмотрели первый сезон Лоста (который "Остаться в живых") и, ориентируясь по своим ощущениям и по отзывам знакомых о следующих пяти сезонах, я решил более не тратить время на эту сантабарбару.

 
На скриншоте: косяк операторской работы в одной из последних сериях первого сезона. Один из главных героев сериала в открытом море на плоту из бамбука ищет хотя бы какое-то судно, чтоб подать сигнал бедствия, в окружении прогулочных яхт, кораблей береговой охраны и катеров сопровождения.

Решил почитать краткое содержание и тут же запутался в главных героях, годах, временных осях и используемой авторами сериала терминологии. Жена решила почитать менее краткое содержание, а описание каждой серии в отдельности, и сейчас читает, периодически отбирая у меня мышку, чтоб переключать табы в браузере на втором мониторе.

пятница, 2 сентября 2011 г.

Открытие исходников РосЯмы

Мы открыли исходники РосЯмы. Посоветовавшись с координатором проекта, решили открыть под BSD-подобной лицензией. Так как мы не в состоянии отследить все клоны РосЯмы, которые могут возникать, и вообще всё то, что могут придумать наши предприимчивые соотечественники, решили выбрать лицензию посвободнее. Кто угодно может совершенно бесплатно скачать себе исходный код, как угодно его менять, использовать в своих проектах, в том числе коммерческих и закрытых. Единственное условие - давать ссылку на проект РосЯма. И мы не несём никакой ответственности за вред, который может быть причинён прямым или косвенным образом вследствие использования исходников РосЯмы.

Это условие касается только исходных кодов скриптов на PHP. Дизайн, в том числе картинки, HTML-вёрстку и CSS-скрипты надо использовать свои, так что уж потрудитесь хотя бы перерисовать. Но прикладываем их мы к исходникам по двум причинам: во-первых, для того, чтоб можно было посмотреть, как у нас всё устроено, чтоб было проще разобраться, как всё сделать самостоятельно, во-вторых, потому что всё равно все картинки, вёрстку и стили можно скачать с самого сайта РосЯмы, они там никаких образом не спрятаны и не обфрусцированы.

Небольшое руководство для тех, кто хочет запилить свою маленькую РосЯму. Во-первых, потребуется mercurial для клонирования репозитория. Сам репозиторий в данный момент находится по адресу hg.rosyama.ru.

$ hg clone http://hg.rosyama.ru

Эта несложная команда позволит получить свеженькую версию исходников, которую потом можно будет обновлять (да-да, мы не забросили проект и работаем над ним по мере возможностей) с помощью команды hg pull.
Во-вторых, понадобится Битрикс, редакции "Старт" будет достаточно. Могу порекомендовать одну зеленоградскую веб-студию, золотого сертифицированного партнёра Битрикса, которая может продать один-другой лицензионный ключ :) Ставите Битрикс, сверху накатываете исходники РосЯмы, в админке в списке модулей устанавливаете модуль РосЯмы (только называется он "Статья 12.34", по-моему - это первое название), и можно начинать собирать материал. Никаких тестовых серверов мы не предоставляем, разворачивайте всё у себя. Понадобится веб-сервер, PHP, php-curl, php-gd, MySQL, php-mysql и вроде всё, надеюсь, ничего не забыл.

Конечно, найдутся люди, которые усмотрят злые намерения в оном акте открытия исходников. Дескать, Гринсайт двести тысяч пропили, и теперь хотят, чтоб сторонние разработчики за них всю работу делали. Не буду отрицать, в первой части своего предположения они, конечно, будут правы, а вот во второй - нет. Исходники РосЯмы открыты только на pull, то есть только для чтения. Если кто-то захочет внести свою лепту в развитие проекта, то ему придётся самостоятельно вручную найти в футере РосЯмы адрес емейла, на который отправить патч или переделанный файл. Ну конечно, если таких желающих будет великое множество (я надеюсь, что должно быть - когда Алексей Навальный анонсировал проект РосЯма, в комментариях к его посту косяками оставляли комментарии люди, готовые сделать такой же проект за три дня и пятнадцать тысяч), то мы придумаем какую-нибудь РосЯма Коммьюнити Эдишн или ещё что-нибудь этакое, но пока что этого нет. Зато уже есть и функционирует по адресу trac.rosyama.ru багтрекер, куда можно зайти и почитать целых 20 или даже 30 тикетов.

Скачивайте исходники, создавайте перекрашенные клоны РосЯмы локально в волостях и уездах, чтоб ни одна яма на дороге не осталась незаделанной. А коли придут к нам ФСОшники с паяльниками и скажут: "ну-ка, закройте РосЯму быстро", так хоть клоны останутся.