Планета обезьян

Не «Планета обезьян: Революция», а «Рассвет планеты обезьян».

Революции никакой в сюжете фильма нет.

В прочем, аллегории, добавляемые русскоязычным переводом названия очевидны и понятны.

 

А как Вам метод, тело которого начинается с return?

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

Готов поиграть в игру: Кто сможет дать максимально подробное описание или комментарии к данному коду или переписать его максимально просто для человеческого прочтения? И сколько на это понадобится времени?

private List<BlankComposition> GetBlankInfo(SKDREntities db, Requisition inz, int deliveryType, long? languageId)
        {
            return db.RuleDescriptions
                .Where(rd => rd.OrganizationId == inz.ReqUnit && rd.IsActive)
                .ToList()
                .Where(rd => rd.DeliveryTypes.Split(',').Select(int.Parse).Contains(deliveryType))
                .DefaultIfEmpty()
                .SelectMany(or => db.RuleDescriptions
                    .Where(rd => rd.OrganizationId == inz.RequisitionOrg.OrgID && rd.IsActive)
                    .ToList()
                    .Where(rd => rd.DeliveryTypes.Split(',').Select(int.Parse).Contains(deliveryType)).DefaultIfEmpty(), (org, lab) => new { org, lab })
                .Select(rule => new[] { rule.org, rule.lab }.Where(r => r != null).ToList())
                .Select(rule => new
                    {
                        HeadHeight = rule.Select(r => r.Composition.HeaderHeight).FirstOrDefault(hh => hh != null) ?? "3cm",
                        FooterHeight = rule.Select(r => r.Composition.FooterHeight).FirstOrDefault(fh => fh != null) ?? "4.5cm",
                        DemographyDescriptionId = rule.Select(r => r.DemographyDescriptionId).FirstOrDefault(),
                        Suffix = rule.Select(r => r.Suffix).FirstOrDefault(),
                        Elements = rule
                                    .SelectMany(
                                        re => re.Composition.CompositionElements,
                                        (rd, element) => new { element, priority = rd == rule.First(), langPriority = element.LanguageId == languageId }
                                    )
                                    .GroupBy(g => g.element.ElementTypeId)
                                    .SelectMany(g => g
                                        .OrderByDescending(e => e.priority)
                                        .ThenByDescending(e => e.langPriority)
                                        .Take(1)
                                        .Select(e => e.element)
                                    )
                                    .Where(e => e.ElementId != null)
                                    .ToList()
                    }
                ).Select(item => new BlankComposition
                    {
                        HeaderHeight = item.HeadHeight,
                        FooterHeight = item.FooterHeight,
                        BlankElements = item.Elements.Select(e => new BlankElement
                        {
                            Width = e.Element.Width,
                            Height = e.Element.Height,
                            Left = e.Element.Left,
                            Top = e.Element.Top,
                            Image = e.Element.ImageId == null ? null : e.Element.Image.Data,
                            Text = e.Element.Text,
                            Placing = e.Placing
                        }).ToList(),
                        Demography = db.DemographyDescriptions
                            .Single(dd => dd.Id == item.DemographyDescriptionId)
                            .DemographyTables
                            .Select(dt => new DemographyInfo
                            {
                                Placing = dt.Placing,
                                Height = dt.Height,
                                Left = dt.Left,
                                Top = dt.Top,
                                Width = dt.Width,
                                Lines = DemographyFormatter.GetDemographyInfo(inz, dt.DemographyType.DemographyContents.OrderBy(o => o.SortOrder).ToList())
                            })
                            .ToList(),
                        Suffix = item.Suffix,
                        AddHyperlinks = item.Elements.Any(hy => hy.ElementTypeId == 6 && hy.ElementId != null)
                    }
                ).ToList();
        }

Прыжки с парашютом, обучение (AFF) и безопасность

«Испытай один раз полёт,
и твои глаза навечно будут устремлены в небо.
Однажды там побывав,
на всю жизнь обречён тосковать о нём.»

Леонардо да Винчи

Программа AFF пройдена, и отдельно заострять внимание на том из чего она состоит пожалуй не стану, все это в подробностях можно найти на просторах интернета. Впрочем, если кому-то интересно — спрашивайте. Могу показать прекрасные методические материалы для подготовки с  примерами (в том числе и видео) как надо и как не надо делать, и что вообще из себя представляют прыжки по программе AFF.

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

Не вспомню о чем шла речь в тот момент,  но помню что Андрей Белокрылов рассказывал о каких-то случаях и спросил — «Страшно?». «Нет» ответил я. Как оказалось, я ошибался.

Читать далее

Усадьбы Санкт-Петербурга, Ораниенбаум, Сенсейшен, Клаустрофобия, Бал-Вампиров

В начале июня побывал в Санкт-Петербурге.

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

Отдельно нужно заметить чудеснейшую вещь — смотровая площадка со скамеечкой огороженная перилами.

Читать далее

Прыжки с парашютом

Майские праздники я провел в DZ Menzelinsk (http://www.skyjump.ru/). Это было мое первое знакомство с небом и воздушным потоком в принципе. Именно поэтому было очень забавно, когда несколько инструкторов последовательно задавали  одни и те же вопросы:
- Тандем прыгал?
- Нет.
- А в трубе летал?
- Нет.
- Т.е. вот так сразу AFF еще не зная как оно вообще?
- Да.
Тут было что-то похожее на 

К моему сожалению попрыгать вволю не вышло т.к. несколько дней просто не было погоды. Тем не менее, несколько прыжков сделать все таки удалось, а когда погода брала своё  — с пользой проводил время в Самарской аэротрубе.

Читать далее

Оптимизация?

Вот ты даже дважды два посчитать не можешь на самом деле, сказал Миша и вызвал целую цепочку логических заключений в моей голове.

Дважды два четыре

Почему это не могу

Но ведь я знаю что дважды два четыре

А ведь и правда не могу, я просто знаю ответ и не пытаюсь считать…

Что-то в этом духе пронеслось у меня в голове в ту секунду, но разговор начался совсем с других рассуждений.

Читать далее