Обсуждают в коллекции

Фильм «Фонтан» 81


Тёрка в тагах


Сейчас обсуждают

Друзья

Его(2) Общие(0) Хотят дружить(0)


  • Atrinax

  • Blackoff

  • login

  • login

  • login

  • login

Враги

Его(0) Общие(0) Обиженные(1)

На странице: 24 48 96

Большая Тёрка / Мысли /

Личная лента

фото

olegchir

ыыыть!
Портрет жителя

Игры, геймдизайн

Имхо, ключевая проблема Овервоча. (Кстати, цитата из Аарона Келлера, который новый геймдиректор).

Пробема в человеческой природе. Люди предпочитают понятное непонятному. Даже в играх.

Когда кто-то играет за атакующего персонажа, у него всё кристалльно ясно: если ты щелкнул по голове

...
Читать далее
...

противника в течение полсекунды - ты молодец, промазал - не молодец.

Идеальная задача - крайне specific, очевидно measurable, легко achievable, relevant, очень жёстко time-bound.

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

Вот Рейн ставит щит - как понять, правильно или неправильно он его поставил? У тебя всегда кто-то получает урон, ты не можешь спасти всех. Мерси может спасти 1 любого персонажа с вероятностью 90%, но не может спасти всех одновременно.

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

Причем, ты не можешь просто взять и сделать танков сильнее. Ну хотя бы потому, что среди популяции есть какая-то сравнительно небольшая группка людей, интеллект которых позволяет осмыслить навыки танка по SMART и начать уничтожать ими всё живое и ломая игровой баланс. Если трезво посмотреть на способности танков, они сейчас и так имба, все подряд, спасает только статистика, что 500 IQ людей совсем немного.

И вот получается, что из всей популяции только 20% имеют хоть какое-то минимальное желание играть на танке, и только 2% понимают, что вообще делать. (цифры с потолка), но танки - ЭТО КЛЮЧЕВАЯ ЧАСТЬ ИГРЫ

Интересно, что в такой ситуации делать геймдизайнерам.

Аарон решил уменьшить количество танков до 1 и поменять сущность игры.

Каплан просто уволился.

Лично меня вот этот вопрос завораживает наиболее сильно. Каждый раз, когда я играю в эту блядскую игру, вместо того чтобы играть - я думаю, как и что в ней можно было бы исправить )))

овер ап

В «лабораторию» Овера подвезли грядущий патч.

- Маккри перезаряжается и кувыркается хуже.
- Батист заряжает прыжок медленней.
- Заря дамажит минимальным лучом меньше.
- Вампиризм Рипера разнерфили назад.
- Мойра под ультой лечится в 3 раза быстрее.

Не блогодорите пожалусто.

(Что ни сделаешь, лишь бы не готовить доклад. Прокрастинация дошла даже до чтения экспериментальных патчноутов).

Изучаю ЖЖ

Еще немного про ЖЖ, а может и про жизнь даже.

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

Если взять ЖЖ, то весь его топ — про что-то другое. Например, сегодня там есть «Умирать запрещено» Варламова, какие-то статьи про продажных чиновников, бандитов, и прочая совершенно никак не относящаяся ко мне неинтересная фигня.

Причем унылая

...
Читать далее
...

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

Попробуем посмотреть не на топ, а на категории. Цитирую главное меню ЖЖ: кино, еда, коронавирус, общество, история, политика, Россия, дети, медицина, лытдыбр, армия.

Из всех этих категорий хоть как-то может быть интересно общество и кино.

В «обществе» ожидаемо находится всё та же криминальная хроника, что и в топе, включая огненные статьи с заголовками «Холера — это просто понос» и «Припять. Как жили работники ЧАЭС». Изучать этот раздел далее не имеет смысла, по этому же соображению я даже не заглядывал в «политику».

Итак, осталось кино. Кино, кино, кино! Кино хоть и не моя специальность, но тут я хоть немного разбираюсь. Что я ожидаю увидеть? Например, недавно Зак Снайдер отвечал на вопросы поклонников, в июле на Нетфликсе запускают триллер «Пороховой Коктейль» о наемных убийцах, и что DC начала работать над превращением игры Injustice в мультфильм.

Что мы в реальности видим в рубрике «кино»?

— «Веселье разрешается. Могила, на которой можно танцевать.» Статья про могилу клоуна. Весело.

— «У каждого свой Курт. «Кобейн: чёртов монтаж».» Статья про музыканта, покончившего жизнь самоубийством. Я начинаю понимать принцип!

— «Ребенок Розмари» — блогер рекомендует к просмотру очень современный и свежий фильм, о котором ранее никто не знал.

— «Советский фильм о совсем не советской жизни» — явно новый актуальный фильм, по крайней мере, те кто видел «Выше Радуги» в кинотеатрах 2 мая 1986 года году могут быть всё ещё живы.

— «Игры шпионов». Запад опять затевает оголтелую русофобию?!». Кэмбербетч точно не умер, поэтому тематика смерти плавно перешла в другую важнейшую максиму — противостояние мифическим русофобам.

— Фильм «Нормандия-Неман» 1960 про вклад французов в победу над Германией. Тут мы вернулись к главному принципу: все участники давно умерли, присутствует обязательный внешний враг, и тому подобное. Уфф.

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

Интересные статьи там тоже есть, если мотать достаточно долго — например, про то что Том Круз отказался от трех своих «Золотых Глобусов» (впрочем, скользнув вдоль статьи по диагонали я наткнулся на ключевые слова «лесбиянки» и «трансгендеры», понял что ничего хорошего про эти категории людей я там не прочитаю, и немедленно закрыл).

От ЖЖ у меня сложилось полное ощущение перепрочтения самого конца Града Обреченного или что-то типа того. К счастью, чтобы дойти до конца пустыни тут не нужно сильно стараться — достаточно переключить вкладку.

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

Иксбокс и печеньки

Преимущества обычной компании: иксбокс, печеньки

Преимущества JetBrains: внезапные лекции по метавычислениям посреди дня

D for DevOps

Конференционное

Отчислилась

лингвистика

twitch, сущностьтвича

Твич ещё не знает, что уже мёртв

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

Получается, что фокус сдвигается со стримов на статические ролики, а сам стриминг становится только

...
Читать далее
...

интересным дополнением. Но на самом Твиче так и не сделали нормального просмотра предзаписанных материалов! По крайней мере, в веб‑приложении нет, в вебе хоть «клипы» есть.

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

А тут есть вахоебы?) Расскажите, в 2021 году как там история развивается? Я помню историю с Жиллиманом и Сайфером, и на этом всё. Когда там труп скинут с трона?)

Инстант-аппы

Что это за картинка? Это на самом деле объяснение, почему приложения нужно делать или в виде веб-приложений, или желательно - PWA (progressive web apps, т.е. веб-приложений, которые могут работать без интернета).

Веб-приложение у тебя открывается мгновенно по ссылке, откуда бы ты эту ссылку

...
Читать далее
...

не достал (из гугла, из статьи, из баннера, итп). Получается, конверсия у веб-приложения очень крутая. Стопроцентная, в каком-то смысле. У клиента просто нету возможности не сконвертироваться.

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

Интересно, когда Microsoft додумается, что можно запускать нативные приложения сразу по ссылке из интернета, без всяких подтверждений, но в безопасном одноразовом Windows Containers / Hyper-V контейнере.

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

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

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

Жизнеспособна ли эта идея? Вот уже довольно долго я всё что могу запускаю в докере. Это безумно удобно: вместо того, чтобы захламлять систему тоннами мусорных пакетов, у меня есть маленькая песочница, в которой можно немного покопаться и потом удалить её без следа. Но это работает только на линуксе, где докер ничего не стоит. На шиндовсе, к сожалению, он стоит прилично так ресурсов, и ломает поддержку других виртуализаторов (кроме Hyper-V существует еще VMWare и VirtualBox). Кроме того, докер всё-таки умеет запускать только линукс-приложения. И чтобы пробросить в докер графику, особенно под виндой — нужно нехило так напрячься.

Кстати, мгновенно открываемые (в шиндовс-контейнерах) оффлайн-приложения могли бы стать спасением для всех, кого волнует размер дистрибутива и бесполезного говнокода, который жрёт ресурсы твоего компьютера

Очевидно, что если приложение весит 23 гигабайта, то оно никак не может открываться мгновенно. Более того, из-за того, что пользователя не спросили - хочет ли он ждать два часа пока дистрибутив загрузится, процесс запуска 23-гигабайтного приложения - это чистейшее мучение. (Вероятно, там на границе 500 мегабайтов всё-таки нужно ломать идею "мгновенно запускамого" и показывать диалог)

Если кто-то сомневается, может ли приложение весить мало - вспомните пиратские CD-диски из конца 90х - на одном CD-диске объемом 600 мегабайт были десятки фотошопов и 3dmax-ов. Потом прошло несколько лет, и фотошопы и максы начали занимать сначала самостоятельный диск, а потом даже несколько дисков - но это было потом. Изначальными версиями тоже вполне можно было пользоваться.

Visual Studio шла на куче CD-дисков (восемь? уже не помню), но из них самим дистрибутивом был только первый диск (потом - два первых), всё остальное - MSDN и допы типа Install Shield. У нас вместо оффлайн MSDN есть штука лучше - "интернет", так что тут никакой проблемы нет, нет никакого смысла вхреначивать в 20-мегабайтное приложение хелп на 10 гигов.

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

Кому нужно тратить столько сил, чтобы получить компактное, быстро запускающееся приложение? Да как раз вот всем тем людям, которые хотят получить быструю 100% конверсию пользователей. Покажите хоть одного маркетолога, который не хочет.

Дело осталось «за малым» — за каким-то быстрым эффективным воплощением Windows Containers. Достаточно эффективным, чтобы не убить ресурсы компьютера на десятом запущенном приложении. К сожалению, обычные люди над этим не властны, это может сделать только Microsoft.

Froxel (2015)

воксельность, геймдев, рендеринг

2021 — новый 2015, и Майнкрафт такой молодой.
Время шарить знания Великих Старейшин.
(полученных via Kirill A Shabordin)

Это картинка из кулуаров SIGGRAPH 2015, описывающая froxel - frustum voxel. Насколько понял из описания, это позволяет оптимизировать ray marching для рендеринга воксельного домена.

Вероятно, сейчас это правильно делать в виде шейдера постобработки для каждого пикселя, что



...
Читать далее
... возможно воплотить в Юнити. Нагуглил какую‑то статью про это (Юнити и реймаршинг) на Хабре, но ещё не читал: https://habr.com/ru/post/503554/

It's evolving, just backwards.

Сто лет спустя

Прошло очень много лет с тех пор, как я тут хоть что‑то писал.

Интересно, жив ли ещё ЖЖ? Есть ли тут люди?

По телику показывают Технопром‑2017. На сцене собрался круглый стол великих мыслителей русской промышленной революции.

Ведущий разражается речью про мощь сибирской школы алгебраистов, и объявляется слово ученику академика Ершова (на самом деле Герасимова, но что не сделаешь для понта), который якобы смог использовать алгебру на практике (sic!)

Названный сэр открывает рот и начинает...
Читать далее
... говорить что‑то внезапно разумное про отличие Искусственного Интеллекта и человека. [я готовлюсь выслушать Себрант‑like спич и сыто улыбаюсь] Речь внезапно прерывается невнятными всхлипами о психологических комплексах на тему «друзья свалили за бугор, а я нет, но почему?» и вопросами патриотического воспитания. Докладчик завершает мысль следующим: Человек отличается от ИИ тем, что в нём воспитана любовь к России и Новосибирской Области в частности.

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

Дальше Технопром‑2017 продолжается вручением призов на два конкурса, наиважнейших для смены российского технологического уклада:
- Менеджер года
- 3D‑технологии (команды из студентов? Что такое 3D‑технологии не объяснили, но скорей всего это про 3D принтеры).

Дальше я не смог смотреть, они должны мне новую пару глаз

WAT
Што это было
Шипилёв подался в стримеры :)
Вот так должна выглядеть документация для новичков
Респектище

https://www.twitch.tv/videos/152244095
Лайфхак. Релизный Шланг только четвертой версии, и не работает на свежей вижуалке.
Можно последовать инструкции и собирать руками из SVN.
Но оказывается, у них уже есть ночные сборки, которые таки работают на свежей вижуалке.

http://llvm.org/builds/
Стадии знакомства с любым опенсорцным проектом

1 стадия — Отрицание (ну не может такого быть, наверное я что‑то не понимаю и для Настоящих Профессионалов в этом коде всё отлично. Ух сейчас заберусь в пещеру на три месяца и разберусь!);

2 стадия — Гнев (бля, и здесь тоже понаписано говна, никакой документации, комментариев, какие‑то куски залочки на проприетарщину приклеены, бэк зависит...
Читать далее
... от фронта а фронт от бэка, чтобы понять как устроено здесь надо перечитать документацию от всех других проектов этой компании, явно всё посреди Большого Рефакторинга, всё выбросят через месяц и вот нахуй я это ковырял, блядь блядь блядь!);

3 стадия — Торг (ну допустим, понимание этих принципов поможет мне в будущем при создании своего проекта. Да и на этом можно вполне жить, если придумать — как. И в резюме строчка, опять же. И вообще я исследователь, это инженеру важно чтобы работало, а мне — чтобы было в чем копаться.);

4 стадия — Депрессия (на данном этапе человек может круглые сутки находится в депрессивном состоянии. Суть такова, что жизнь проходит зря, а ты ковыряешься в говне мамонта технологий 60-х годов прошглого века, и даже с этим не можешь разобраться. В то время как вокруг искусственный интеллект и не нужно больше программистов и компиляторов, блокчейн, диджитализация, аджайл);

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

kotlin

Начал разбираться в Котлине.

Проект состоит из двух частей — Kotlin и Kotlin/Native.

По идее мне нужно в Native, но с ним всё печально (хотя казалось бы, куда еще хуже), т.к. я не разбираюсь в LLVM, да и C++ для меня глубоко чужое пока. В очередь на изучение добавляется LLVM, т.к. уже очевидно, что без него жить нельзя.

Чтобы познакомиться, взял для начала джавовую часть. Процедура...
Читать далее
... установки простейшая — пойти на гитхаб, форкнуть и выполнить несколько команд на Apache Ant и Maven. Вначале несколько покоробило использование Анта, но в конце концов, наверное, на это есть причины (начиная с нехватки времени на мимимишные плагины).

Добавим еще печальных известий: комментариев в исходнике практически нет. Код написан довольно ясно, но его объем поражает воображение. Поражает вот в каком смысле: когда ты пишешь очередное веб‑приложение, у тебя есть скорей всего стандартная структура типа MVC фреймворка с контроллерами и сервисами, ты сразу идешь в сервисы и читаешь, что происходит. Дальше нужно прошарить, как устроена БД, и начать писать свои сервисы и методы в контроллерах, выставляя их наружу для фронтендщиков. В целом, код неважен, важна бытовая логика, лежащая за манипуляциями с глобальным состоянием. Здесь же код важен. (Наверное, потом его можно будет легко разделить на важное и мусор, но не сейчас).

На всякий случай я связался с Димой и Андреем и получил ту инфу, что никакой дельной документации о дизайне компилятора не существует. Всё что тут остается делать — это читать весь исходник подряд и комментировать. Дельные комментарии можно пул‑риквестить.

По‑моему, правильным подходом было бы аккуратно документировать всё что видишь, чтобы в результате через несколько месяцев как раз получилось бы что‑то типа architecture reference guide
Забавно, что в фейсбуке у любого поста (даже унылейшего) тысячи просмотров и десятки комментариев, в то время как в ВК нет почти ничего. 78 просмотров, 104 просмотра, wtf, это синонимы нуля в пределах погрешности. В Живом Журнале всё еще печальней.

Новосибирск Кудряшовский Бор

Трек на Страве:

[видео]

Фоточки на Имгуре:

alt

Заметки:

  • Посередине закончилась вода, всё дальнейшее путешествие было в полусонном состоянии. Киосков нет, заправка Лукойла случилась только при въезде в город. Брать с собой больше воды!

  • Страва строит маршруты «minimum elevation» через лютые ебеня. Иногда это забавно, но сегодня из‑за этого накрылась важная срезка (дорога уткнулась
...
Читать далее
...
  • тупо в непролазный лес), пришлось давать крюк. Просматривать маршрут со спутника!

  • До Новомарусино стоит чудовищная пробка. Тротуар не везде пригоден для проезда. Нахер ехать по этой дороге. (а есть другая?)

  • В Бору на дороге такой асфальт, что хуже грунтовки. Весь облез до предыдущего слоя (или его изначально таким «облезшим» положили?). Ничего с этим не сделаешь, плакать.

  • Но в некоторых мест таки есть хороший асфальт. Проклятые олигархи.

  • На Р‑254 асфальт отличный. Ехать по нормальному асфальту в горку проще, чем по облезшему под горку.

  • Рядом с обью есть гостиница с домами в виде мельницы и корабля. Но въезд туда закрыт. Проклятые олигархи.

  • Родники стали выглядеть офигенно! Интересно, почем там квартиры

Какими решениями/библиотеками/фреймворками вы пользуетесь для сборки мусора в C++?

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

...
Читать далее
...

Сылышал только о древнючем как создание жизни на Земле Boehm-Demers-Weiser. Есть всякие пулы типа того, что есть в Apache Portable Runtime, но это слишком убого - современные коллекторы типа G1 или Shenandoah в той же джаве умеют на пару порядков больше. То же касается велосипедных слаб аллокаторов и другой забавной копипасты со stackoverflow (кстати, есть где готовый продакшен-реди?). Думаю, что даже без прямой поддержки в синтаксисе языка, реализовать это на готовых инструментах возможно, собирая по кусочкам пулы, кастомные аллокаторы, трейсеры и раскрашиватели ссылок, итп

Так как в предыдущем вопросе о RTTR люди жаловались на отсутствие постановки цели, то вот Лекс лет так 7 назад описал Логику Неизбежности. Каждый кто начинает писать свой мемори менеджмент в конце концов доходит до написания GC в том или ином виде.

В качестве причин можно рассматривать как чистый перфоманс (перемещение выделенных объектов в куче, отложенное пакетизирование удаление с приоритетами), подкрепленный безумной сложностью реализации в одно рыло некоторых вещей (например многопоточности с учетом отсутствия приятной модели памяти), так и вопросы архитектуры приложения (лень писать поэтому вот цитата Донского из «Жизненного цикла программиста»):

«есть общие методические принципы создания программ, не вполне осознаваемые даже хорошими программистами. Примером может служить проблема принадлежности объектов друг другу, а также совмещение двух структур любой программы – иерархии вызова подпрограмм вместе с объектами, принадлежащих подпрограммам, и иерархии объектов по принадлежности друг другу. Примером отказа от самой идеи справиться с этими проблемами является наличие в некоторых языках механизма сборки мусора, что является молчаливым признанием возможности присутствия в среде объектов, не принадлежащих ни подпрограммам, ни другим объектам.»

Да, можно взять какой-нибудь Garbage Collection Handbook и пару пейперов, потратить два месяца (или два года?), и закодить велосипед - но зачем? Я уже видел эту дорогу (не на чистых крестах, а на крестах + джава, но это неважно), и не хочу ходить по ней второй раз, поэтому прошу достойных сэров экспертов Лора подобрать мне уже готовую GC-подобную систему для C++.

Подскажите что-нибудь? Шпасибо!

04.06.2017 - P-255, Снегири

Не стал никуда ездить — просто отдохнул в месте с относительно чистым воздухом, совершив тестовый наезд на Снегири

alt

Фоточге единым ольбомом


alt
alt
alt
alt

[Археология Java] Контекстно-зависимый инлайнинг трейсов в Java

Перевел очередную статейку на Хабр

https://habrahabr.ru/post/329120/
Начал вести приватный дневничок.
Идея была такая, что нужно каждый день выписывать умные мысли, а потом делать из них хорошие статьи.
Знаете что? Эти листы все пустые.
Нечего писать.
Моя жизнь — говно.
Ушел думать.
Нашел таки скан 98ого года «Theory of Objects» (Абади, Карделли) на каком‑то безвестном файлообменнике на задворках интернетов. Завидуйте, жучары! Чуваки заморочились и написали краткие минимальные формализмы для ООП, не используя код на реальном ЯП. Удивительно как всякий шлак типа «освой реакт за 3 часа 33 минуты» заполоняет торренты, а градообразующие труды киснут в мягких обложках на...
Читать далее
... задворках амазона
«– Как же победить третьего врага, дон Хуан?
— Человек должен восстать на него, понять, что сила, которую он якобы покорил, на самом деле ему не принадлежит. Он не должен расслабляться, осторожно и добросовестно относясь к тому, чему он научился. Если он поймет, что ясность и сила при отсутствии самоконтроля хуже, чем заблуждение, все снова будет в его руках. Он узнает, когда и как применять свою...
Читать далее
... силу, и таким образом победит своего третьего врага.
К этому времени человек приблизится к концу учения и совершенно неожиданно встретится с последним своим врагом — старостью. Это самый жестокий из врагов, победить которого невозможно, но можно отогнать.
И вот наступает пора, когда человек избавился от страха, преодолел ясность, подчинил силу, но его одолевает неотступное желание отдохнуть. Если он поддастся этому желанию лечь и забыться, если усталость убаюкает его, то он проиграет последнюю схватку — четвертый враг его повергнет. Желание отдохнуть пересилит всю ясность, все могущество, все знание.
Но если человек сумеет преодолеть усталость и пройдет свой путь до конца — тогда он станет человеком знания хотя бы на то краткое мгновение, когда ему удастся отогнать последнего, непобедимого врага. Этого мгновения ясности, силы и знания — достаточно.»
Наглядное пояснение, почему люди в Новосибирске живут ажно в 4 раза меньше (23/6), чем в более благополучных местах

alt
Если бы у меня была компания, это точно было бы L3C.
(https://en.wikipedia.org/wiki/Low‑profit_limited_liability_company)

Правильно жить так (с)™: делать добро, выкладывать его в опенсорс, и чтобы после этого всего оставалось немного бабла чтобы пожрать, сделать ремонт и починить велосипед.

Стремление к максимальной коммерческой эффективности в ущерб социальной пользе порочны по своей...
Читать далее
... сути. Это стремление не стоит своих жертв.

Мы не обязаны вести себя как рациональные потребители. Мы не обязаны вести себя как модельные менеджеры из формул.

Главное — чтобы всем было хорошо, приятно и спокойно, всё остальное вторично. Да, чтобы заработать на личные замки и яхты, возможно, нужно что‑то большее. Можно просто принять за данность, что у тебя нет и не будет нескольких замков, и всё будет хорошо.

Пожертвовавший всеобщим счастьем ради малой вероятности возвыситься над быдлом — не заслуживает ни счастья, ни возвышения.
Самая большая проблема с тренажеркой — это сумка :(
Иногда начинаешь собирать сумку, и уже идти всё желание пропало

Если напихать туда всё что нужно — вторую порцию одержды, несколько полотенец, технику, воду, итп — сумка становится «тяжелой», то есть непереносимой на расстояния больше 5км в руках без транспорта. Использование транспорта — это плохо.

Не в каждую сумку всё это влезет....
Читать далее
... Единственное куда всё влезает без проблем — это большой туристический рюкзак, но и он неудобен — внутренности рюкзака имеют линейную скорость доступа, а не константную как у наплечной сумки. На больших N распаковка нужной мелочи может так затянуться, что от злости хочется порвать всех на клочки.

Грязную мокрую одежду нужно держать отдельно от чистой свежей. Полотенце мокрое для душа — отдельно от полотенец для подкладки на тренажер и протирки лица. Отдельно от щетки и геля для душа. Отдельно от кроссовок. Значит всё нужно расфасовывать по герметичным пактам, которые завязывать туда‑сюда. Как изолировать планшет, телефон, наушники и прочую электродрянь — вообще хз, они ведь кроме воды еще и к давлению и царапанию очень неустойчивы.

Ах да, все эти вещи нужно собирать по чек‑листу, написанному на бумаге, т.к. запомнить все мелочи нереально (у меня очень маленькая память ;). Забыл замок от кабинки — всё было зря. Забыл ключ от замка для кабинки — всё было зря.

Ненависть. Кажется, сумка — не самая лучшая коллекция для хранения таких данных...
Оказывается, Нуки заявилась в «Голос»
(для тех кто не в курсе — это такая старпёрская передача на 1м канале, где люди поют русские народные песни, и в лучшем случае — слащавую попсятину)
Жюри сделало вид, что не знает, кто это.
Нуки сделала вид, что это не автоматический выигрыш.
Не очень честный вышел конкурс, но уровень толлинга впечатляет.
Я влюбился, Нуки — королева.

[видео]

Откомментировал фильм «Легион (Сезон 01)»

10 из 10, очень круто
"Я только что видел какой-то сон? Утро пришло… День – не мое время. Днем живет нечто далекое и чужое: оно просто, исполнительно и результативно, и это касается не только меня, а вообще всего живущего под ярким светом. Утром оно начинает свою бурную радостную активность, днем громыхает, ревет, мечется, суетится, нагромождая одни плоды своей суеты на другие и запирая себя в лабиринте в конечном...
Читать далее
... счете беспричинной и бесплодной деятельности. А к вечеру удовлетворенно умирает в гробу идеи о непрерывности своего существования изо дня в день, не зная, что с его воспоминаниями назавтра проснется уже кто-то другой.

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

Это не главное, это просто призраки более реальные, чем дневная суета. Дальше всегда больше: под моей кожей, как под коммунальной накидкой, суетится множество незнакомцев, которых я не замечаю днем, и когда они понимают, что я начал их замечать – они начинают волноваться, суетиться и таять, как облака на ветру моего молчания. Они хохочут и травят байки быстрее, затравленными глазами озираются в поисках того, кому они их рассказывают; они рычат и машут кулаками, вращая покрасневшими, они ноют и бьют себя пяткой в грудь, шутят несмешные шутки, волнуются, расслабляются, радуются, печалятся, возмущаются, насмехаются.

Сначала они становятся жирными, как свиньи, и потешными до карикатурности; их черты насыщаются и вываливаются из них, как жирные животы, рвущие корсеты. Им самим от себя так смешно, что они лопаются, как мыльные пузыри, а я молчу, молчу.

Скоро я вспоминаю… Мне снова, в который уже раз становится понятно, что на самом деле я – огромное кладбище, на котором похоронены поколения и поколения разных незнакомых мне якобы меня. Смерти во мне все множатся, каждое следующее поколение «меня» все более жирное и дурное, и к самому темному часу они уже напоминают попытку душевнобольного нарисовать своих демонов.

Такие дохнут скорее всех.

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

Я только что видел какой-то сон? Утро пришло… День – не мое время. Днем живет нечто далекое и чужое…"
xxx: проще убить месяц на написание своего языка программирования на xml'е
xxx: и это будет выгоднее компании, потому что завтра они наймут еще сто хомяков
xxx: которых посадят править эти xml'и
xxx: и гори оно огнем
xxx: рэпид разработка, мать её
yyy: кодь, как будто никто не ревьювит
yyy: комментируй, как будто пишешь на бересте
yyy: проектируй, как будто на все воля Божья
Посмотрел запись доклада Алименкова про ООП и ненужность наследования, надо бы прокомментировать что-то.
Вот ссылка на его видео: https://www.youtube.com/watch?v=G6LJkWwZGuc

Вкратце, автор осуждает наследование, считает что оно зло, предлагает заменять на композицию.

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

Вместо этого для большинства коллег сейчас ООП - это кода ты в IDE протыкал кнопочку "отнаследоваться от класса и переопределить вот такие методы", когда функциональности существующего класса не хватает. Особенно хорошо видно на собеседованиях: тебя спрашивают какую-то чепуху типа "всех методов ArrayList" (вероятно чтобы потом нажать кнопочку "доопределить"), а о самой сути работы, которая как раз есть ООП моделирование, почему-то не спрашивают.

И потом при написании кода начинается история про слепых мудрецов, натолкнувшихся на слона. Только они не хотели изучить слона, они сразу хотели на нем ездить, или хотя бы чтобы он не мешал им пройти. В результате такой вверх ногами постановки возникают странные языки без ООП и метопрограммирования просто для того, чтобы его не было. Вот эти анонимные филды, вложенные структуры в Гошке. Слон, не мешай проезду.

В качестве примера, мне кажется важным: ООП в Java есть продукт теории типов, и она хорошо решает ситуации, когда нужно разобраться с чем-то типа полиморфизма подтипов. Отсюда принципы SOLID, в частности принцип подстановки Лисков.

Но как только люди начинают задавать вопросы типа "а вдруг в этом классе добавятся-убавятся методы" (типичный пример про хэшмеп, в базовый класс которого добавился метод addAll, реализованный как попало), это уже объект внимания совершенно другой по структуре и сложности области. Например, темпоральной логики. И в Java нет никаких встроенных методов решения проблем темпоральной логики.

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

И понимая это, ты приходишь к проблеме конструирования мета-языка поверх Java. Например, правил SOLID (одно из которых говорит, что на каждое мажорное изменение нужно создавать новый класс), или специальных фреймворков (не знаю специальных, наверняка есть, но например в Spring есть своя особенная внутренняя философия на эту тему). Или решать вопрос выходя из границ языка, с помощью пакетного менеджера Linux. Или что-то гибридное, версии бандлов в OSGi. И всё это обмазать системой деплоя, которая реально будет работать в настоящем времени, например, Ansible.

Одного фреймворка будет мало. Даже если это Акка. Фреймворки ложатся на фреймворки, и получается инфраструктура, элементы которой синергетически влияют друг на друга. Таким образом цепочки из десятков классов есть не кривой дизайн, а внешнее отражение внутренне сложной для моделирования области, растянутой в пространстве, времени, конях и людях. Наверное, какая-то очень небольшая часть этих проблем на Haskell это было бы красивее, но это уже другой разговор.

И вот к чему это. Утверждение "наследование - это плохо" - это немного неверно. Наследование не нужно без всего остального. Слепым мастерам, джедаям всех методов класса ArrayList, придется ознакомиться еще с сотнями кусочков, прежде чем осознать свой путь к выходу :3

(Кстати о видеозаписях докладов. Приходите на джава-конференцию JBreak 2017, сможете набить мне морду за эти еретические мысли. Нет, я не докладчик по проблемам ООП, а вот какой-нибудь Бугаенко там точно будет)
UPD про «собеседование на вайтборде». В общем, идея в том, чтобы полностью сделать компьютер и другое железо частью себя: частью своего тела, мозга, способа думать и действовать. Желательно не только мозг заменить на комп с подключением к сети, но еще и тело заменить на механику. И это вполне нормально, что ты не можешь функционировать без части своего тела. И это касается не только кодеров, а...
Читать далее
... вообще всех: если у тебя руки заменены стальными манипуляторами под управлением компьютера, сдавать собеседование на инкассатора и показывать чудеса стрельбы без электроники не получится — руки то двигаться не будут.
Имеется полувоенный девайс, который хотелось бы похакать и превратить в man in the middle.

На матери есть только USB2 вход (1шт), внутри установлена винда, доступ только под гостевой учеткой (но флешки и клавиатура работают), типичные эксплоиты на эскалацию на винде не работают. Запустить экзешник из C:/temp можно.

Я как раз хотел симулировать работу сети с помощью USB, для достижения...
Читать далее
... цели этого хватит.

Поэтому вопрос. Как сделать, чтобы ноутбук с линуксом (или виндовсом, или маком — но это печальней), при подсоединении по USB компьютеру, начал выглядеть для него как флешка? Или еще какой‑то источник данных, для использования которого не нужно прав администратора, но соединение — именно по USB

Мы пока придумали подключить андроид смартфон: на ноутбуке включить вайфай свисток в режиме роутера, данные на телефоне получать по вайфаю, к девайсу подключаться как usb mass storage, а данные пропихивать с помощью самописного андроид‑приложения. Вариация того же самого: чуть более дорогой телефон, чтобы у него был рут доступ и тетеринг (режим wifi точки доступа) — тогда дорогого вайфай‑свистка не нужно, пушить файло с ноута. Но как‑то всё это тяжело. Есть ли более простой способ?
Как правильно сделать зеркало для сайта с плагинами Jenkins для использования без интернета?

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

Про собеседования на вайтборде

Наткнулся на забавный пост Бугаенко, который обиделся на рекрутеров Амазона на тему рисования алгоритмов на вайтборде.

Вот тут можно посмотреть сумму срачей со ссылками: https://jug.ru/2017/02/bugayenko-recruiters/

Вот про сам вайтборд - это интересно! Я не использовал ручку с бумагой уже лет, наверное, десять. Если нужно вести конспект живой речи, обычно это делается с ноутбуком, в котором...
Читать далее
... открыт софт для Mind Mapping (типа Mindjet MindManager - там удобные хоткеи и вообще). Если надо нарисовать диаграмму - то она рисуется мышкой в Визио (или чем-то получше типа Magicdraw UML, если на него есть деньги). Если нужно нарисовать график, то это точно будет эксель и кальк, но никак не тетрадка в клетку.

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

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

Также вайтбордом полностью игнорируются типичные практики формирования этих мыслей. Например, я года два (в общей сложности) использовал PHP, но не знаю в точности его синтаксиса. Да и что там знать, он за всё это время поменялся несколько раз. Когда я пишу, подсознание автоматически мониторит подсказки от IDE и выхлоп компилятора, и в режиме test driven development выдает результирующий код. Проще перезапустить тесты и увидеть косяк, чем разбираться в нем с помощью своего мозга. Таким образом ноутбук с компилятором и IDE становятся частью мышления, самых базовых низкоуровневых рефлексов. Ты не думаешь как дышать и моргать. Ты не думаешь, когда нажимаешь кнопку "перезапустить тесты" или корректируешь подчеркнутое красным. Оно происходит само, совершенно отдельно от твоего сознания.

Что происходит, когда у тебя внезапно исчезает воздух? Случается паника, острая необходимость найти источник воздуха, совершенная неспособность что-либо делать без дальнейшего поступления воздуха. Точно такая же аника случается, если забрать у человека нормальную IDE типа Эклипсы и заставить писать код в vim или notepad.exe. Если вообще забрать ноут и заставить чертить рисунки на доске - то пиши пропало.

По сути, на собеседовании человека лишают основного его средства выражения мыслей (ноутбука), и заставляют писать какой-то немыслимой херней. Что же в этом плане могло пойти не так?
Людям, которые любят вайтборды, возьмете меня рекрутером? Только что придумал несколько забавных испытаний для соискателей:
а) Написание кода под водой, ногами на песке.
б) Написание кода под бутиратом.
в) Написание кода под ЛСД. Десять стандартных доз.
г) Написание кода на эстонском языке, сделав вид что это Java, и что в окружающем мире не выполняется транзитивность.
д) Написание кода кровью на обоях. Представляя себя Есениным. Сложность в том, что Есенин не умел кодить.
е) Методично избивать соискателя каждый раз, когда в голове забрезжит идея. Не давать глазам сфокусироваться.

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

ж) ну и на вайтборде рисовать, как же это можно забыть
Теоборос — «Носитель Слова», — он касается своей шляпы.

TLC: «Зиобе сказала, что один из вас, ветеранов, — психическая проекция. Это ты?»

Теоборос — «Психическая проекция. Интересно ты это называешь, Зи», — он поворачивается к Зиобе. «Мы все в той или иной мере проекции, разве не так?»

Он наклоняется: «Давай подумаем вот о чем... ты всегда выглядишь так, как я тебя представляю? Меняется...
Читать далее
... ли твое поведение от моих мыслей?»

TLC: «Да. Все зависит от формируемого образа. Может, я и изменю мнение».

Теоборос — «Итак, мои мысли формируют тебя. Но в полной ли мере? Если так, то ты мое воображение, а я — твое. Можно сказать, что мы суть единое сознание, субъективно воспринимающее само себя, а значит каждый из нас, и все мы вместе — психические проекции друг друга». Он медленно задумчиво вздыхает.

«Но мы ведь все равно отделены друг от друга, да? В какой‑то степени. Ты ведь существуешь и тогда, когда я на тебя не смотрю. Мне ведь вовсе неинтересно представлять кого‑то вроде тебя».

«Также можно утверждать, что все мы связаны изначально. Все наши мысли и действия влияют на остальных. Может, это и не является реальностью, которая и есть та самая правда, о которой у каждого из нас свое представление. Для нас она как путеводная звезда в жизни. Это реальность, в которой живем мы, но не остальные. Это наша история».

Даама из Цветения — Он закатывает глаза. «Ну вот, Зиобе. Теоборос снова за свое».

Теоборос — «Тихо ты. Сейчас я говорю».

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

Он смеется: «Я лишь хочу сказать, что я не проекция Зиобе. Послушай наши истории и докопаешься до правды. Своей правды.»
Посоветуйте современный стек технологий для реверсинга
(кейводы: бинари аналитика, логическая защита, легкая криптография, сетевые протоколы и всегда онлайн, реконструирование ценных алгоритмов и медиа‑контента)

Для начала, свободные/открытые аналоги IDA и PVS‑Studio. Которые еще и могут работать не только под винду, но и под линукс. И под 64 бита. Неплохо бы из асма какой‑то си‑подобный...
Читать далее
... псевдокод или прям си. А для поисковщика ошибок ориентацию на C++.

Гугл у нас общий, но там куча каких‑то полудохлых проектов, IDEшек на тикле 98ого года производства от одного вида которых задница перекусывает чугунный лом, какие‑то шеллскрипты для аппликух от которых уже и исходников не осталось... Вообще получасовое гугление протащило как будто по задворкам начала 2000х, хаос ужос и запустение. Я из Java и Javascript мира с няшными глянцевыми IDEшками, и все эти остатки ушедших в небытие цивилизаций создают тягостное ощущение..
Это пиздец, посоны. Всё, финиш, приехали. Точнее, приплыли. На двух яхтах с одинаковым именем сразу.

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

В общем‑то Олег — не настоящий...
Читать далее
... программист, просто повезло попасть в струю, достаточно уверенно играть роль, а зрители почему‑то продолжают смотреть (то ли глупые и не раскусили, то ли Олег просто достаточно забавно корячится). Но это не беда, от криво написанной кнопочки войны не случится.

Но вот по‑настоящему страшно, когда секретарь правительства — тоже не настоящий секретарь. Ну ведь не может же быть генсеком правящей партии человек, не могущий связать два слова? А премьер — не настоящий премьер. Ведь не может же быть премьером человек, пиздящий бабки как не в себя. Может быть, даже президент — не настоящий президент? Что за херня творится? Вся окружающая жизнь отдает стойким вкусом сладкого, свежеиспеченного фейка.

Олег не будет логически замыкать этот пост, потому что если даже генсек не может, то нам и подавно можно :-) (а пиздить яхты — нельзя!)

[видео]
В последнее время очень не хочется общаться с технарями.
Намеренно избегаю их компании (кроме рабочих контекстов) и стараюсь перемещаться в другие, более здоровые места.

Дело в том, что формат общения программистов между собой основан на издевательствах, унижении, подколках, словоблудии, и бесконечном измерении своей крутости (в основном, по уровню денег, знаний в конкретных технологиях, итп). Ты...
Читать далее
... как будто участвуешь в непрекращающейся серии Зеленого Слоника.

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

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

По дефолту считается что любой технарь бесконечно психологически устройчив, но это не так.
Fuck this shit, I'm out.
Надо бы поспать часа два перед работой (подумал Олег, замечая, что левая рука без участия разума нашаривает чашку с уберкрепким чаем с сахаром)

alt
Гитхаб всё.

1 марта 2017 года в условия использования GitHub (секция D) были внесены пункты, которые несовместимы с требованиями атрибуции некоторых лицензий, таких как (A/L)GPL и CC-*-SA, а также с лицензиями, которые накладывают условия на использование. Лицензии MIT и BSD, возможно, не затронуты этим изменением. Проекты, которые используют несовместимые лицензии, нарушают условия использования...
Читать далее
... сервиса и должны быть удалены.

Вечерний Овервоч #52 - Бухать, Жахаться и смотреть Польский Артхаус

Когда иконка канала на YouTube не меняется и не обновляется

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

[видео]
Called DeepCoder, the software can take requirements by the developer, search through a massive database of code snippets and deliver working code in seconds, a significant advance in the state of the art in program synthesis.

https://mspoweruser.com/microsoft‑research‑developing‑ai‑put‑coders‑job/

Torment: Tides of Numenera #1- за 4 дня до релиза

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

[видео]

Вечерний овервоч #49 - начало межсезонья

Вечерний Овервоч #48 - солдат на длинной дистанции

Вечерний Overwatch #47

Я тут стал хреначить видосы на ютубе, подтягивайтесь :)
Постараюсь каждый вечер стримить Овер, и возможно что‑нибудь еще


[видео]
alt
Запостил пост про похапэ (им завезли garbage collector, отчего похапэшникам сорвало башню, и они решили что теперь похапэ так же быстр как Java и C++ только на основе наличия факта присутствия какого‑то джит компайлера).

После этого в комментарии пришли похапэшники и написали просто сто пятьсот текста с попытками доказательства своего величия :-)

...
Джаверы совсем обезумели и выпилили сборку мусора.

Меня перекрыло, и в качестве сублимации пришлось слить горячечный брейндамп прямиком на Швабр:

По ссылке: https://habrahabr.ru/post/321856/

Ну в общем, я вам покушать принес, развлекайтесь
Что такое жить по человечески? Это работать 2 часа в неделю, иметь квартиру с видом на Залив и знать Теорию Категорий.

Love is

Love is — когда чинишь с утра любимой операционной системе сегфолтящийся логин скрин

alt
Ничто так не веселит, как перекошенное от испуга лицо питониста, понимающего что столкнулся с человеком, искренне влюблённым в java‑мир
MadDeer@LOR:

Russ Cox, один из главных разработчиков ЯП Go, написал заметку о том, чем он будет заниматься в 2017 году.

Type aliases. Попытка добавить в ЯП «общие псевдонимы» для того, чтобы облегчить рефакторинг внутри Г Корп, была встречена не очень тепло в сообществе. Не смотря на фекалии, фичу запилили, чтобы позже выпилить из-за обнаружившихся проблем. Вместо них, в 1.9 будут реализованы...
Читать далее
... «псевдонимы типов».

Package management. «Группа контрибьюторов» решила реализовать лучший p.m., централизованный. В стиле Rust:
We’re now iterating on tool implementation, with gps as the engine. We’re learning and tweaking as we go, and plan to open up the repository publicly in early January
A central packaging registry (a la npm)
Напомню, ранее в соседнем треде уже упоминали, как выглядел процесс дизайна пакетного менеджера в ЯП Rust. Выглядело всё где-то так же: сначало реализовали без всякой обратной связи, потом дали сообществу и попросили жрать, что дают.
Впрочем, обещать не значит жениться, пилят всё это какие-то левые лоси, а Russ лишь обещает убедиться, что идеи хорошо лягут на стандартный тулчейн Go.

Build improvements. Недостаточно агрессивное кеширование приводит порой к медленной компиляции. Из этого вытекает и проблема медленного прогона тестов. Помимо этого, go build должен поддерживать и проекты вне GOPATH.

go vet, указывающий на ошибки в корректности кода, возможно, должен запускаться параллельно с компиляцией / прогоном тестов. Кроме того, в него должны быть включены наиболее часто встречающиеся ошибки из 100 самых популярных проектов на Github'е по количеству звёзд / форков.

Улучшение сообщений ошибок. Большая часть кода в Go проектах сейчас выглядит так:
if err != nil {
return err
}
В результате - отсутствие контекста ошибки, её непонятность, что не айс. В 2017 Russ будет раскидывать мыслю по этому поводу.

Формулирование лучших практик pkg/context. В 1.7 запилили этот костыль, сформулировали правила использования и нарушили их при реализации стандартной библиотеки database/sql. Теперь нужно таки опять решить, когда context уместен.

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

Immutability. В долгосрочной перспективе go race для обнаружения гонок должен стать бесполезен в виду реализации reference immutability. Хотя, «вполне вероятно, что это лишь влажные фантазии и ничего такого не случится». В одном можно быть уверенным, в 2017 автор познакомится с проблемой ближе.

Generics. Самый горячий аргумент. Между тем, цитата:
Команда Go никогда не говорила, что в Go дженерики не нужны. Она говорила, что есть более приоритетные задачи.
4 предложения (proposals) по реализации этой фичи не взлетело, протухнув после обсуждений. Сейчас подошло время заново глянуть на проблему, учтя опыт Dart, Midori, Rust и Swift. Но в этом году дженериков не будет, год пройдёт под знаком лучшего понимания.
«Well, in our country,» said Alice, still panting a little, «you'd generally get to somewhere else—if you run very fast for a long time, as we've been doing.»

«A slow sort of country!» said the Queen. «Now, here, you see, it takes all the running you can do, to keep in the same place. If you want to get somewhere else, you must run at least twice as fast as that!»
Он вокзал её несколько долгих часов
Немного крем-ликёра перед сном, и вот что хочется сказать...

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

Бог задался вопросом, что такое "над", если еще не заданы системы отсчёта, и тут же словил null pointer exception.
"Пить надо меньше" подумал Он, и задался вопросом: каким хреном отличается небо и земля?
Допустим,...
Читать далее
... земля - это то что черное, а небо - то что синее.
Но почему небо синее, а не фиолетовое? Ведь длина волны фиолетового спектра короче, а значит он должен лучше рассеиваться?

И сказал Бог: «Да будет свод между водами, чтобы отделить воду от воды».
Воду от воды. Где-то я это уже видел. Вода вода = new Вода();
Бог написал воду на Джаве и увидел, что в принципе это хорошо.
Никакой воды за небесным сводом не было, но облегчать людишкам квест отсутствием общения с эфирщиками Он не собирался.

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

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

Был вечер, и было утро – день второй.

И сказал Бог: «Да соберутся вместе воды под небом, и да появится суша», и стало так.

Вообще-то воды были уже собраны и слинкованы.
В этом месте начали появляться циклические ссылки, потому что слинкованная вода и так уже была и над небом, и под небом, и Garbage Collector начал натужено поскрипывать.
Бог позвал Шипилёва, но тот не отозвался.
Плюнув на всё, бог назвал сушу землей (тут тоже должно было упасть, смотри начало файла - но не упало), а собранные воды назвал морями.
И увидел Бог, что это хорошо, хоть и тормозит.
Спишем всё на джаву, подумал Бог, все знают, что джава тормозит.

«Да произведет земля растительность: растения с их семенами и различные виды деревьев на земле, которые приносят плод с семенем внутри»,
– сказал Бог, и стало так.

Так как ни случайности, ни эволюции бог еще не произвел, то пришлось сделать PlantFactory и вызывать у него методы.
Земля произвела растительность: разные виды растений, приносящих семя, и все виды деревьев, приносящих плод с семенем внутри.
Какая срань, подумал Он. Ведь если фактори грузит РАЗНЫЕ виды растений, то для каждого растения по классу, а мы же не можем собирать класс дефинишены через Garbage Collector.
Когда-нибудь это упадет с out of memory, и то станет концом света.
И Бог увидел, что это хорошо. Был вечер, и было утро – день третий

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

Он создал два API - одно для календаря, а другое Joda Time, чтобы управлять временем. И оба были говно.
Тогда он создал еще и время по JEP 150/JSR 310, но и оно было полное говно.
С программированием у него всегда было так себе.

Тогда в отчаянии,
Бог создал два великих светила – большое светило, чтобы управлять днем, и малое светило, чтобы управлять ночью, а также Он создал звезды.
Бог поместил их на небесном своде, чтобы они светили на землю, управляли днем и ночью и отделяли свет от тьмы.
Бог увидел, что это хорошо.
По крайней мере, лучше, чем JSR 310.
Был вечер, и было утро – день четвертый.

Бог сказал: «Да наполнится вода живностью, и да полетят над землей по небосводу птицы».
Бог создал огромных морских чудищ, разные виды движущейся живности, кишащей в воде, и разные виды крылатых птиц.
И увидел Бог, что это хорошо, но тормозит пиздец.

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

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

И сказал Бог: «Да произведет земля разные виды живности: скот, пресмыкающихся и диких зверей», и стало так.
Бог создал разные виды диких зверей, и скота, и все виды пресмыкающихся.
Особенно ему нравилось, когда перед ним пресмыкались всякие джаваскриптеры, не ведающие джаву, также всякие скоты не умеющие чистить память.
И увидел Он, что это хорошо. Очень хорошо.

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

Тогда Бог сказал: «Создадим человека – Наш образ и Наше подобие" и нажал shift+F5.
Копипаста собралась, и это уже внушило надежду.

« – пусть он царствует над рыбами морскими и птицами небесными, над скотом, над всей землей, и над всеми пресмыкающимися».
Вначале он подумал, что не стоит так обижать джаваскриптеров, но потом понял, что джаваскриптеров еще не существует. Они появятся только в 21м веке после рождества его.

Так Бог сотворил человека копипастой по образу Своему,
по образу Божьему Он сотворил его;
мужчиной и женщиной Он сотворил их.

Бог благословил их и сказал: «Плодитесь и размножайтесь; наполняйте землю и владейте ею. Царствуйте над рыбами морскими, и птицами небесными, и над всеми пресмыкающимися, а джаваскриптеров не трогайте, у них няшные кнопочки».

Затем Бог сказал: «Я даю вам все языки программирования со всеми паттернами по всей земле и все деревья включая красно-черные,
дающие более оптимальный код;
они будут вам в пропитание, потому что если жить в россии, а получать бабки за рубежом - неплохие деньги выходят.
И всем зверям земным, и всем птицам небесным, и всем пресмыкающимся и джаваскриптерам – всем, в ком дышит жизнь,
– Я даю в пищу всякую зелень (в смысле, не рубли)».

И стало так.
Бог посмотрел на все, что Он создал, и все было очень хорошо.
Был вечер, и было утро – день шестой. Бухнуть, выспаться до 8 утра, и на встречу с заказчиком.
Мироздание продолжало немного подлагивать на stop-the-world'ах.
Девять серьезных уязвимостей в Firejail

В системе для изолированного выполнения приложений Firejail выявлено девять уязвимостей, большинство из которых позволяют повысить свои привилегии в основной системе до пользователя root. Firejail использует для изоляции механизм пространств имён (namespaces), AppArmor и фильтрацию системных вызовов (seccomp‑bpf) в Linux, но для настройки изолированного...
Читать далее
... запуска требует повышенных привилегий, которые получает через привязку к утилите флага suid root или запуск при помощи sudo. Как оказалось безопасность Firejail находится в весьма печальном состоянии и многие опции и пользовательские данные обрабатываются под euid 0.

https://www.opennet.ru/opennews/art.shtml?num=45824
Мы тут в фейсбуке спорили, тяжело ли живётся писателям. Решил что-нибудь написать из чувства солидарности.

Сказка на ночь

Когда Аня пришла в комнату с иксбоксом где обычно собирались разработчики, ее ждали две печальные новости: а) на консолях всё так же нет игр б) и вызов к шефу. Не то, что бы она очень боялась туда идти, просто уже был конец рабочего дня и через двадцать минут можно было уходить...
Читать далее
... домой, а там скорее всего будет код ревью всех сегодняшних коммитов (она недавно начала писать на Java после Go, а тут нашли какой-то баг в Go и прод развалился), и займет это не менее часа.

Войдя в кабинет она поздоровалась и, как обычно, села на ярко-оранжевый стул Dxracer. Как она и предпологала началось обсуждение того, почему на проде опять не отправляются SMSки, и того, что она совершенно не понимает модель памяти. Через полчаса они решили передохнуть и Аня пошла делать чай. Когда они пили его, то чай уже немного остыл, но все еще был довольно горячим. Аня нечаянно зацепила руку босса и тот пролил чай на кастомную бархатную обивку макбука и на блузку Ани. Миша, начальник Ани, сразу же взял высохшую салфетку для протирания мониторов и начал промокать блузку, а Аня оттирала залитый макбук. Она очень расстроилась и чувствовала себя виноватой, подняв глаза на Мишу. Она не сразу поняла, что он все еще продолжает проводить рукой по намокшей блузке Ани. Аня было хотела отстраниться, но чувство вины удержало ее на месте. Хотя ей и было двадцать три года, она все еще была джуниором, и такие ласки были для нее новы.

Миша же, осмелев и не встретив сопротивления со стороны Ани придвинулся ближе и полубонял ее. Первое что пришло ему на ум – отличие в схеме блокировок в C++ и Java, он начал с использования ReentrantLock, в то время как левая его рука плавно и мягко поглаживала спину под блузкой, а правая ласкала осыпаемое поцелуями лицо. Расстегнув лиф и сняв блузку, не переставая в это время ласкать податливое тело и рассказывать об утечках объектных локов, Миша целовал шею, а потом и груди Ани. Маленькие темные соски на белоснежной груди стали твердыми и квадратными. Аня сначала немного не поняла, зачем делать какие-то объекты, если можно использовать synchronized прямо на объявлении метода, но так же не отвлекаясь целовала и ласкала плавными движениями рук кожу вокруг них, а потом стала лизать их и посасывать, чуть прикусывая зубами.

Аня чувствовала себя неловко не только из-за ощущения вины, но и из-за того, что ей были приятны ласки Миши. Она мучалась, решая правильно ли то, что она делает, ведь Миша пишет на каком-то древнючем отстое типа C++ и Java, но зов тела, поднимающийся от бедер заставил ее откинуться на спину Dxracer’а и обхватить руками голову и спину Миши, сильнее прижимая его с ноутбуком к себе.

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

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

Коллеги устало прилегли на диван, обнявшись, и скоро Миша напомнил, что уже поздно, и скоро охранники залочат здание бизнес-центра до шести утра. Они собрались и вышли, не говоря друг другу ни слова, но перед дверью снова слились в долгом жарком поцелуе, и Миша предложил Ане переехать к ней пожить на неопределенное время в целях изучения практик парного программирования...
Забавные факты. Кучка книжек, скачанная вчера для поиска цитат для курсача, стоит больше двух моих зарплат. Случайно увидел страничку книжки на Озоне, а потом сидел и десять минут складывал на калькуляторе. В частности, Драгонбук стоит 5 косарей рублей, а Кнут — 10. Не то чтобы это было сильно много лично для меня, но по сравнению со средней зарплатой в России — внушает.

Пошаговая инструкция: сборка JDK9 из исходников на Windows 10

Напейсал.
Можно повычитывать ошибки, если не лень :)
https://habrahabr.ru/post/319078/
«количество электронных источников не должно превышать 20% от общего количества источников в Списке использованной литературы»

они же ёбнутые, блядь

откуда у меня еще какие‑то источники кроме электронных

нормальные люди давно уже книг не пишут

и даже если бы писали (туториалы в виде электронной книги), использовать их в работе — это сплошная потеря времени

у меня вообще...
Читать далее
... никаких исходников не надо, всё есть оригинальное исследование, и теории в нём 0, один эксперимент
Небольшая инструкция по модам для Fallout 4.
Вынес из комментариев, вдруг кому-то окажется полезным.

Мотивация
=========


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

Для чего всё это



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

Почему этого не сделали сами разработчики игры - одному Todd Howard известно.

Установка
=========


1. Установить пакетный менеджер с http://www.nexusmods.com
Зарегистрироваться (при регистрации будут просить деньги за донатный аккаунт - платить только если очень щедр ;)

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

Моды устанавливаются из веб-интерфейса, нажатием зеленой кнопки Download (NNM) над описанием мода.

2. База шмоток (нужен по зависимостям для сортировочного мода)
http://www.nexusmods.com/fallout4/mods/6091/?

3. Сортировочный мод (нужен по зависимостям для инвентаря)
http://www.nexusmods.com/fallout4/mods/3877/?

4. Инвентарь
http://www.nexusmods.com/fallout4/mods/10654/?

5. Настройки:
Первый экран: DEF_HUD, DEF_INF, язык любой, формат монитора подходящий
Второй экран: Use sorting mod component tags, Vanilla HUD
Третий экран: I already have sorting XML files
Четвертый экран: со всем согласен

6. Если играешь в наушниках, это поможет, иначе пропускаем
http://www.nexusmods.com/fallout4/mods/19680/?

7. Включение ачивок
(не забыть положить файл, который включает совместимость с предыдущим модом на звук, ибо они юзают один и тот же хук на DXAudio)
http://www.nexusmods.com/fallout4/mods/15639/?

Смоук-тест после установки



- игра должна успешно запуститься и загрузиться

- сохраниться, открыть экран загрузки и посмотреть, что напротив нового сейва не стоит буква [M]. Эта буква означает, что включен режим читера. Если ты поставил мод на включение ачивок, буквы быть не должно.

- открыть пип-бой и посмотреть, есть ли сгруппированные предметы

- подойти к воркбенчу и посмотреть, появились ли табы в режиме transfer

Если тест не пройден - загуглить каменты на нексусмодсе, стиме, и в гугле

Если ответа не найдено - сжаться клубочком и плакать

Эксплуатация



Если Nvidia, перед запуском проверить, что в настройках, что Ambient Occlusion - что угодно кроме SSAO

Если Nvidia+Windows 10, при использовании fullscreen режима, в момент загрузки сейва нельзя альт-табаться в другие приложения
Пора вашему интернет‑царю толкнуть ноговогднюю речь!
Куранты еще далеко, но надо начинать заранее, кто знает сколько там GC будет тормозить... Итак!

Друзья! В новом году желаю вам наконец выучить Java, C++ и методы защиты приложений от взлома. Хипстерам из Санкт‑Петербурга — Rust. И наконец найти приличную работу. (хипстерам из Спб — написать стартап и взломать сайт NSA).

Так вы...
Читать далее
... попадаете в новый, лучший мир, где есть многопоточность и модель памяти без GIL и убогого шедулинга одновременно, где работает отладчик, где пацаны живут полноценным ООП, метапрограммированием, обобщенными коллекциями и многоуровневыми абстракциями, байтоёбством, bare metal / JIT перфомансом, пишут качественный код в стиле TDD в супер умных IDE и ебут систему в рот! ТОЛЬКО JAVA/C++ ТИПИЗАЦИЯ, ТОЛЬКО ХАРДКОР! ЮНИТИ УЛЬТРАХАРДКОР JAVA!

Пацаны, ебашьте джаваскритеров пишущих адовую скриптолапшу и ад из промисов, джавафанатиков, джавахейтеров, гошников ничего не понимающих в ооп и абстракциях, угорайте на гигах, любите своё Комьюнити, пацанов и Сцену! ГОВОРИТЕ ОТКРЫТО И СМЕЛО ПРЯМО В ЛИЦО! 133!

С НОВЫМ ГОДОМ ТОВАРИЩИ!
Quantum Break выглядит как если бы Max Payne и Alan Wake дали современный графон. Даже если б не заставка с именем студии, всё сразу понятно с первых же кадров.
То чувство, когда качаешь пиратскую версию YouTube Downloader Pro, чтобы пиратским способом скачать с YouTube видео, добавленное туда пиратом.

Думаю, не стоит останавливаться. Для YTD нужно написать платный кряк (который взломают и будут раздавать пираты). А для раздачи кряков написать специальный платный сервер лицензирования (такой же как у jetbrains, но вместо ключей он будет отдавать кряки)....
Читать далее
...

Его так же взломать и раздать на торрентах.

Про ненужность проектного менеджмента, и как это должно быть на самом деле

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

Менеджеры в привычном понимании (технология проектного менеджмента по pmbook-like) не нужны. Туда же аналитики и архитекторы. Разработчики в привычном понимании (машинки, которые выполняют задачки,...
Читать далее
... поставленные перечисленными выше ролями) тоже не нужны.

Вижу это как-то так:

У тебя должен быть СВОЙ продукт, и ТЫ его продаешь, и ТЫ его разрабатываешь. Он будет продаваться даже как есть, но если его улучшить - то он будет продаваться еще лучше.

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

Откуда берутся задачи, если нет «менеджмента»? Из хотелок пользователей. Просто заходим в CRMку или на форум пользователей твоего продукта - и там будет бесконечность всяких хотелок. Не нужно никаких спринтов и мозготраха: ты просто сидишься и подряд выполняешь все задачи из багтрекера (хинт: это займет всю твою оставшуюся жизнь)

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

Во всем этом вижу несколько ключевых вещей:

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

- команда должна быть набрана из людей, мотивация которых привязана к выполнению работы (в том числе внешняя - к демонстрации этой работы на публике). Люди, которые работают за деньги, хотят чтобы им ставили четкие задачи, любят переносить ответственность на других (в частности, нуждаются в «начальстве» и «мотивации») - строго нафиг.

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

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

(- в частности никогда, никогда не должно быть ситуации «надо успеть нанять N человек ко дню X, потому что иначе не уложимся в сроки». Это задача, которая подписывает смертный приговор всему процессу сразу)

Если не лень, накидайте в комментах компаний, в которых прямо сейчас так?
Досмотрел Tyranny.
Минусы: очень короткая
Плюсы: всё остальное
Нашел себе еще одного настоящего врага. Это Александр Жаров, руководитель Роскомнадзора. (Есть еще два: Грибов и Колесников из Литреса).

Существует ли какой‑нибудь относительно законный способ превратить жизнь вполне конкретного человека в ад?
«Самая худшая ошибка, которую ты можешь совершить — это думать, что ты живешь, пока ты просто спишь в зале ожидания жизни.»

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

И вот что я думаю, пора проснуться. Как можно скорей. Иначе наступит момент, когда уже не получится этого сделать
Лытдыбр, дневничок!
Целая неделя без физнагрузки.
Очень странное ощущение. Раньше думал, что примерно так должна ощущться жажда вампиров из книжек.

Все‑таки обладание живым человеческим телом — это жуткий наркотик. Как только начинаешь чувствовать, что оно есть, по зависимостям приезжает куча странных вещей, связанных с его обслуживанием. Нужно правильно есть. Нужно его нагружать. Правильно...
Читать далее
... распределять отдых, иначе скорости восстановления батарейки не хватит. Нужно постоянно смотреть и участвовать в чем‑то новом из «физического мира», иначе выведенный из состояния потока «взгляд» тут же замыливается.

Из полезных вещей наблюдаю увеличение реакции и объема памяти. При условии что батарейка не села и башка не замусорена большим количеством мелких недо‑обработанных сообщений. Можно запоминать то, что раньше отправлялось прямиком в «несрочное, неважное». Можно обрабатывать более серьезные стрессовые ситуации при общении с людьми (т.е. вместо стратегии «черной дыры» общаться как минимум как "идеальное зеркало").

Все уже заметили, наверное, что я обычно молчу и слушаю. Составляю модели того, о чем говорится, разбираю синтаксис. Максимум задаю наводящие вопросы и делаю выводы из накопленной информации по запросу. Обычно. Вот теперь я даже понемногу стал участвовать в диалогах и стал добавлять какую‑то отсебятину, которая предположительно будет интересна собеседнику :)

Jocker 2016 Spb

Java

На пршлой неделе прошел Jocker - главная Java-конференция в России.

Надо бы написать какой-то отзыв, но что в нем сказать?
С точки зрения участника, всё было около идеально.

Была куча интересных и полезных мне непосредственно для работы докладов (послушал? а теперь - пойди и сделай).

Были дискуссионные зоны, на которых я вытряс из докладчиков все интересующие меня вопросы.
В том...
Читать далее
... числе, там был авторы ByteBuddy, чувак из Jigsaw, живой и настоящий CTO Azul, итп

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

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

Предоставилась возможность вживую встретиться со знакомыми, контакт с которыми обычно есть только через фейсбук. Например, с Шипилевым, Федоровым, Максом Буйлиным (оказалось, мы снова работаем в одной компании), Стасом Домбровским, и многими другими, перечислять всех не имеет смысла.

(Еще я серьезно прокосячил - еще сидя в Новосибе придумывал, как бы вживую пересечься с Владимировым, раз уж он теперь с нами. Каким-то чудесным образом у него оказался на этой конференции доклад про Trie. Но я не заметил, что докладчик - он, и просто туда не пошел. Стыдно, жутко стыдно.)

Вот это самое главное, что было.

Ну и еще по мелочи:

Были стенды компаний, в том числе нашей. Какие-то конкурсы. Почти в них не учатствовал - слишком мало времени, целиком занятого на общение с докладчиками. Из интересного - послушал "разбор полётов", посмотрел на HTC Vive вживую (это такие очки "виртуальной реальности").

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

В конце второго дня было путешествие в ресторан "41 этаж", находящийся внезапно на 41 этаже высотки, откуда открывается чудный вид на Санкт-Петербург.

(Там же произошел единственный видимый глазу участника факап за всё время - первые пришедшие в ресторан люди сожрали всю еду - он был оперативно разрулен организаторами.)

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

Как-то так.

Большое спасибо команде организаторов, и в особенности (так получилось) Алексею Федорову и Ивану Долгову за героический подвиг в создании такого крутого события.

Надобно повторить. На следующий год.

Клавиатура под хоткеи

Java

Хочу замутить клавиатуру под хоткеи в IntelliJ IDEA CE.

Для этого нужно три вещи:
1) Большие длинные в длину клавиши, чтобы туда влезала пара слов, например: «find class»
2) Отдельные контакты на каждую клавишу (чтобы располагать их как удобно)
3) Контроллер, который позволит каждой клавише быть «программируемой» — т.е. посылать не непосредственно свой код, а сочетание клавиш

(На...
Читать далее
... корпус наплевать, корпус я выпилю лобзиком из старого телевизора. На совместимость с IDE тоже наплевать — это опенсорц детка, впили свои хоткеи сам.)

Подскажите, где найти все эти компоненты?

Попрощался с ВТБ24.

Попрощался с ВТБ24.

Хроники пикирующего бомбардировщика:
1) Пытаюсь оплатить довольно большую сумму. Приходит сообщение на мобильник: лимит карты не позволяет. Веб-интерфейс утверждает, что на карте нет никакого лимита.
2) Хочу выпустить одноразовую временную карту для онлайн-покупок, но не нахожу такую опцию в веб-интерфейсе. В Альфе постоянно юзал эту функцию (она платная, но не безумно платная),...
Читать далее
... тут же её либо нет вообще, либо она запрятана в какое-то интуитивно-непонятное место.
3) Звоню в поддержку. Автомат долго нудно 3 раза читает голосовое меню (я успел поесть), прежде чем сам переключается на специалиста.
4) Специлистка говорит, что у меня выключен 3-D Secure, поэтому такой вот лимит. Не помню, чтобы я его выключал именно на этой карте, ну да ладно. Почему веб-интерфейс об этом не знает - неясно. Специалистка посылает меня включать 3-D Secure или в банкомат, или живьем в офис. По телефону это сделать нельзя.
5) Ни один из банкоматов ВТБ24 не может включить 3-D Secure. Опция такая в банкомате есть (привязка к телефну), после её выполнения банкомат говорит "ждите когда придет СМСка с подтверждением", и СМСка не приходит НИКОГДА.
6) Офисы работают, начиная с 10 часов и заканчивают тоже рано, поэтому в обычные дни я попасть в них просто не могу - ибо работаю в это время на работе. Воскресенье - единственный день, когда я могу свободно перемещаться по левым делам днём.
7) Последний гвоздь в гроб ВТБ24 вбивает себе с размахом и от души - НИ ОДИН офис не работает в воскресенье! Ни один офис в городе Новосибирске, по крайней мере.

Пришлось горестно вздохнуть, и наличкой вывести совершенно все бабки со счёта. (Через несколько разных банкоматов - мало ли какие там еще скрытые лимиты.)
Полученные бабки были перенесены через дорогу и сгружены на свеженькую золотистую карту Сбербанка, а карточка ВТБ24 — заблокирована.

Прощай, ВТБ24.
Об уходящих или хорошо, или ничего, поэтому скажу хорошее: иногда бывали моменты, когда ты работал. Те моменты, когда при блокировке карты вместе с картой не блокировались вообще все имеющиеся на счете деньги на две недели (пока перевыпускается карта). И тогда с помощью тебя можно было что-то сделать. Спасибо тебе за эти редкие волшебные моменты. Rest in peace.

Мавеновое

Java

Закончилось терпение использовать джаваговно, идущее с Мавеном из коробки. Написал плагин для мавена, добавляющий новый lifecycle phase (в котором дергаю другие плагины — типа агрегация, в правильном порядке). На очереди свой packaging. Оказывается, это весьма просто и удобно.

Зачем все эти годы я изучал, как пердолить все эти убогие поделия? Своё поделие пишется быстрее и проще!

Идея для компьютерной игрушки

Проблема с процедурно сгенерированными играми (тип No Man's Sky) заключается не только в однообразии комбинаций, но и в их неестественности, сильно подчеркивающей это однообразие.

Такую игру интересно написать самому, где удовольствие именно в написании, придумывании алогоритма построения локаций или механики взаимодействия роботов-NPC населяющих локацию - но играть в неё в конечном итоге будет...
Читать далее
... мало кто.

Дальше антинаучная хуйня: люди специально сдизайнены так, чтобы их способ мышления совпадал с законами природы. Эскалация явлений с микроуровня на макроуровень (н-р кот Шредингера) ведет не только к появлению такого мысленного эксперимента, но и к тому что вся жизнь человека следует примерно такой же эскалации. Мы (наш способ мышления и следующая из него повседневная жизнь) и есть воплощение такого эксперимента с нами в роли кота - и это вполне бытовое умозаключение.

Соответственно стоит сделать не только такую компьютерную игру, где человек покоряет трудности процедурно сгенерированного мира-песочницы, а в котором процедурно сгенерированный мир динамично адаптируется под действия игрока - создает локации, квесты итп - руководствуясь копированием с паттернов действия игрока.

Т.е. мы расставляем какие-то реперные точки и смотрим: ага, игрок накопал 9000 кристаллов и идет в магазин менять их на космический корабль. Если эти события связаны (часто повторяются в связке?), то наверное стоит сгенерить квест, в котором нужно получить корабль, и рядом сгенерить пещеру с кристаллами. Результат совпадет с мыслями игрока о том, каким должен быть "настоящий" мир и это добавит ему реалистичности.. удобности?

Но при этом нужно еще создать какую-то игру. Например, немного обломать - в пещере не будет всего 8000 кристаллов и придется искать еще одну, или добыть в этой пещере будет сложно именно кристаллы (золота будет навалом и на видном месте, а за кристаллами придется лезть в очень опасное место), или еще что-то такое.

Т.е. нам нужно:
- Базовый мир-песочница, который как-то может генерироваться
- Регистратор паттернов (точки для отслеживания допустим захардкожены, и поверх них нейросетка)
- Геймификатор паттернов (набор вещей как подгадить человеку, наверное, проще сочинить человеку же xD)
- Репликатор паттернов (из того что мы что-то задетектили неочевидно, как это повторить)
- Бутстрап контент для того, чтобы спровоцировать игрока на действия. Например, короткая single player игра с сюжетом
- Собственно человек, который своими дальнейшими действиями создаст контент

И да, я понимаю, что это multi-dimensinal space, куча процессоров и терабайты RAM :)
Когда-нибудь на каждой микроволновке будут терабайты RAM. А готовиться надо уже сейчас.
Смотрим: в тренде так называемая виртуальная реальность с очками Oculus Rift, HTC Vive итп - компутеры для такого железа стоят по 150 тыщ рублей. На те же деньги можно купить комп, который потянет вполне такие некислые вычисления - всё еще не нормальный анализ, но для простенького моделирования должно сгодиться.
Посоны, проблема с отладчиком в Go+Windows решилась.
Оказывается, Delve теперь работает на Windows.
(говорят, он глючный, но это ведь лучше, чем совсем ничего)

1) go get -u -ldflags -H=windowsgui github.com/derekparker/delve/cmd/dlv
2) добавляем полученный экзешник в PATH.
3) Устанавливаем IntelliJ IDEA
4) Добавляем репозиторий плагинов: ...
Читать далее
...https://plugins.jetbrains.com/plugins/nightly/5047
5) Устанавливаем плагин с именем Go, дескрипшеном «Support for Go programming language.» и урлом «https://github.com/go‑lang‑plugin‑org»
6) Всё просто работает

Список книг и других материалов на досужее прочтение

ЖЖ - это такой блокнот, поэтому напишу сюда заметку на память.

Замечания и предложения приветствуются.

Нужно развиваться, иначе пиздец.
Соответственно, нужно определить, как изучать приоритетные для развития вещи.

Совершенно очевидно, что это три вполне конкретные вещи:
- Языки программирования: теория + практика дизайна и конструирования
- Исполнение во времени: concurrency, темпоральная

...
Читать далее
...

логика
- Железо современных серверных компьютеров: как работает проц, память, итп - и как оно на практике связано с Java/C++

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

- Общее стартовое направление: минимальный набор фич ООП по Benjamin Cuire Pierce:
* Dynamic dispatch
* Encapsulation or multi-methods
* Subtype polymorphism
* Object inheritance or delegation
* Open recursion



Конкретика:

- Образцовая, но невыполнимая, подборка:
http://alexott.net/en/fp/books

Практика
========

- ООП
* A Theory Of Objects - Abadi, Cardelli

- Вкус FP для чайников:
* О Haskell по-человечески - https://www.ohaskell.guide/
* Real-World Functional Programming: With Examples in F# and C# - Tomas Petricek, Jon Skeet
* SICP - https://mitpress.mit.edu/sicp/full-text/book/book.html
* HTDP - http://htdp.org/2003-09-26/Book/curriculum-Z-H-1.html…
* Pure functional data structures - Chris Okasaki

- Concurrency
* JCIP
* Seven concurrency models in seven weeks
* Блоги всех причастных

- Дизайн виртуальной машины
* Java standards
* Oracle JRockit: The Definitive Guide - Marcus Hirt, Marcus Lagergren
* ???
* Блоги всех причастных

Теория:
=======

- Теория типов
* Types and Programming Languages - упомянутый Benjamin Cuire Pierce, (http://www.cis.upenn.edu/~bcpierce/tapl/
* Proofs and Types - Jean-Yves Girard, Yves Lafont and Paul Taylor -http://www.paultaylor.eu/stable/Proofs+Types
* Hindley, Seldin - Lambda-Calculus and Combinators - An Introduction -http://www.cambridge.org/gb/knowledge/isbn/item1175709/…
* Intuitionistic Type Theory - Martin-Löf (помойму это уже перебор)

- Теория моделей
* Model Theory : An Introduction - David Marker
* A Shorter model theory - Hodges
* Mathematical Logic - Cori, Lascar

- Теория категорий
* Conceptual Mathematics: A First Introduction to Categories - Lawvere, Schanuel - http://www.amazon.com/Conceptual-Mathematics-F…/…/052171916X
* Category Theory - Steve Awodey - http://www.amazon.com/Category-Theory-Oxford-L…/…/0199237182
* Categories for the Working Mathematician - Saunders Mac Lane -http://www.amazon.com/Categories-Working-Mathe…/…/0387984038
* Physics, Topology, Logic and Computation: A Rosetta Stone - Baez and Stay - http://math.ucr.edu/home/baez/rosetta.pdf
* An Introduction to n-Categories - Baez - http://arxiv.org/pdf/q-alg/9705009v1.pdf
* Algebra - Serge Lang - http://www.amazon.com/Algebra-Graduate-Texts-M…/…/038795385X

- Гомотопическая теория типов (HoTT)
* https://homotopytypetheory.org/book

- Темпоральная логика
* The temporal logic of reactive and concurrent systems - A. Pnuelli
* Linear Temporal Logic Symbolic Model Checking - Kristin Y. Rozier
* Logic in Computer Science: Modelling and Reasoning about Systems - M. Huth, M. Ryan
* Model Checking - E.M. Clarke, O. Grumberg, D. Peled
* Что угодно про Probabilistic Computation Tree Logic (PCTL)
* Что угодно про Propositional Linear Temporal Logic (PLTL)

Coming out

Java

Небольшой обзор статьи в новый тэг ‪#‎кунсткамера‬
Источник: https://habrahabr.ru/company/mailru/blog/307168/


> Эта проблема — ещё одна трещина в Столпе Наследования.

Это трещина не в наследовании, а в башке автора


1) ООП не предназначено для прямого уменьшения повторного использования, оно предназначено для корректного моделирования системы. Повторное использование если вообще и бывает, является

...
Читать далее
... побочным эффектом.

Дублирвание кода (текста) делается макросами или еще какой копипастой. Дублирование высокоуровнего смысла - это совсем другая область, другой логический уровень.

Соответственно, сама система должна быть спроектирована для увеличения повторного использования. А не говнокод которым ты это всё замоделил. Если ты моделируешь говно, то на выходе всегда получается говно, а на Java или Common Lisp оно получится - разница не чтобы сильно большая. Чтобы система была правильно спроектирована нужен хороший разработчик систем, например выделенный системный аналитик или архитектор.

Аналитика у человека не было, сам он не то чтобы гений проектирования, поэтому подпер убогую идею костылями на С++ и Java, и плачет теперь что говно почему-то С++, а не его подход к решению задачи.

Т.е. в проблеме поиска сотрудников (аналитиков, архитекторов) обвинили ООП. Хм, отличная отмаза. На менее подготовленного читателя даже проканало бы, но у нас в Инквизиции за такое сразу же сжигают на рее.

Кстати, все вопросы касательно экономики говна, заставляющей писать софт без аналитиков и анализа, т.е. на самом деле - на все актуальные вопросы современности вообще - отвечает вот эта статья:http://2k.livejournal.com/520078.html


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

В 1986 году Джо Армстронг сделал Эрланг. Оперативная память стоила очень дорого, и Джо пришлось капитально попотеть, чтобы сэкономить хоть немного. И процессоры были очень медленные, анализ контекста в компиляторе занимал очень много вычислительных ресурсов.

А потом прошло 30 лет.


3)
> Я в течение десятилетий программировал на объектно-ориентированных языках.
> private ArrayList a = new ArrayList();

Вместо private List используется private ArrayList. Абстрагирование, полиморфизм подтипов - не, не слышали. Загримированный под матерого ООП кодера, Штирлиц никогда не был так близок к провалу.


4)
> Возьмём следующий базовый класс
> public class Array { private ArrayList a ...

Знаете, чем хороша Java? Тем что в ней, к счастью, нет такого базового класса.

Автор написал поверх класса List прокси с названием Array (sic!), и запроксировал в нем метод add(element). Потом запроксировал addAll, в котором полностью проигнорировал тот факт, что addAll и add это не какие-то произвольные операции, а жестко связанные. В addAll уже нельзя использовать оригинальный add, нужно использовать свой прокси. После столь свинского с собой обращения, всё похерилось. Конец был немного предсказуем, верно?


5)
> Мы должны работать только с интерфейсом. Это раздражающая тенденция...

...раздражающе мешающая писать говнокод, ясно.


6)
> Идея иерархии “общее/частное”...
> Каждый раз, создавая новую компанию, мне приходится решать проблему, связанную с выбором места для документации компании. Нужно ли мне сделать папку Документы, а внутри неё создать папку Компания? Или мне нужно сделать папку Компания, а внутри неё — Документы? Оба варианта рабочие, но какой из них правильный? Какой лучше?

Вы действительно хотите сделать лучше? Тогда вот мой совет как вашего адвоката:

Лучше всего курить дудку немного реже. Мужик, поверь старому норкоманту, это не доводит до добра. Папка документы - это частный случай сущности Компания, серьезно?


7)
> иерархия “общее/частное” не работает. Так для чего тогда хороши иерархии?
> Для включения (Containment).

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

С 1 сентября 1960 года (или когда там в продакшене появится ООП), писать на нем разрешается только отряду Мстители под руководством отца Тони Старка. (Marvel не похоже на людей, свято блюдущих хронологию)


8)
> Инкапсуляция, второй обрушившийся столп

Учитывая критически уменьшающийся объем текста, описывающий проблему, к этому моменту автор уже понял, что что-то пошло не так. Проклятое ООП не сдается даже на его территории - посте на Хабре.


9)
> The Reference Problem
Автор сам придумал этот термин?
Я вижу только https://en.wikipedia.org/wiki/Reference_class_problem
и это вообще из статистики, а не программирования


10)
> Если ссылка на объект передаётся конструктору объектов, то он кладёт её в приватную переменную, защищённую инкапсулированием. Но переданный объект небезопасен! Почему? Потому в какой-то части нашего кода содержится указатель на объект, то есть код, вызывающий конструктор. Но он ДОЛЖЕН иметь ссылку на объект, в противном случае он не сможет передать её конструктору.

Автор скорей всего как бы хотел сказать о паттернах fluent interface + builder, примененных в concurrent случае? Что кроме кроме религии запрещает ему сделать все доступы безопасными?


11)
> Конструктору придётся клонировать переданные объекты.

А, автор решил нам продать defensive copying! Об этом рассказывают на первом курсе универа на предмете "программирование на языке высокого уровня" (ПЯВУ). Так что, кто не пробовал поступить даже на первый курс, или никогда не читал классические тексты по Java, или википедию, или вообще ничего, эта информация безусловно будет вам очень полезной.

> в лучшем случае клонировать их бесполезно, а в худшем — невозможно. В каждом из мейнстримовых ОО-языков существует такая проблема. Прощай, инкапсуляция.

Ну а невозможно это потому что? Да черт его знает. Я уже задолбался писать этот комментарий, если честно :-)


12)
> Полиморфизм, третий обрушившийся Столп
> Куда бы они не отправились, он был с ними, но всегда на вспомогательных ролях.

Барбара Лисков и Джанет Винг, Андрей Александреску и Герб Саттер, Роберт "Uncle Bob" Мартин, Девид Хейден и Бертранд Мейер, и другие, менее популярные товарищи, плачут кровавыми слезами и крутятся в постелях как вентиляторы.


13)
> Блог компании Mail.Ru Group

Мэйлру капец. Ясно. Хорошая когда-то была компания.



В Новосибирске уже ночь, надо с этим заявязывать.

Спят усталые игрушки, книжки спят,
Одеяла и подушки ждут ребят.
Даже сказка спать ложится,
Чтобы ночью нам приснился
Мир, в котором ООП больше не работает

Coming out

Java

я, к сожалению, не гей, поэтому придумал сделать coming out дргуим способом, а именно — расписаться в безграмотности :3

непонятно, как хорошим образом сделать глобальные инварианты для блока кода (в concurrent случае)

например, мы хотим проверить, что на протяжении всего исполнения произвольного блока кода, должно выполняться условие «x > 0».
А этот x — это shared mutable state, и его может...
Читать далее
... поменять другой поток, поэтому его недостаточно проверять только на входе метода, нужно проверять каждый чекпоинт («каждую строчку»).

Но ведь в джаве нет такой фичи. Можно AOPить целиком методы, но не строчки (а что там генерит компилятор на самом деле вообще не видимо глазу чтобы сказать, что вот на этот минимально неделимый кусок intermediate representation я хочу повесить проверку).

и даже для куска IR у нас может случиться тупо мисалайнмент (direct byte buffers на jdk > 6?), и код превратится в фарш (кстати, кто в теме, прокомментируйте про мисалайнмент в джаве, когда случается?)

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

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

Ну можно «макросами» переписать сам исходник и реально обернуть каждую строчку в проверки перед сборкой. Или переписать в байткод?

Как это делают правильные, накачаные русские java мужики?
УСЛОВИЕ ЗАДАЧИ:

- Есть очень популярный веб‑фреймворк, которым пользуется половина Новосибирска.

- Вызов ajax там таков, цитирую имена параметров:
m, mp, e, f, sc, dt, wr, ch, bh, pre, bsh, ah, sh, fh, coh, ep, dep, rt, ad, sp, async, tr

Пример использования:
var wcall = Ajax.get({ u: '${callbackUrl}' + '${args}' });

Например, параметр «ад» — это не то, что вы подумали, а
...
Читать далее
...
allow default
a boolean flag which indicates whether to allow the default behavior of the HTML element which listens for the event. For example: clicking on Ajax checkbox should allow the default behavior to actually check the box.


Заметим интересную особенность: параметр u, как вы видите, существует, а в списке выше его нет. Это потому, что в официальной документации он проебан. Типа, пасхалка.

ВОПРОС:
- в каком состоянии души был написан этот фреймворк?
- если прочитать параметры слева направо в лунную ночь, можно ли вызвать Сатану?
- поднимите руки все (включая активных пользователей фреймворка), кто может не заглядывая в исходники рассказать о более чем половине перечисленных параметров
Весь день пердолился с Wicket.
Постанова: есть отчеты в SQL, которые могут формироваться по полдня. Оптимизировать бесполезно (да я и не умею в этот ваш SQL).

А Wicket не умеет работать ни с долгоживущими процессами, ни с асинхронными обновлениями со стороны сервера. Причем, там так всё от души прибито гвоздями в Викете, что фиг оторвешь. Если просто запустить долгоживущий SQL запрос прямо в...
Читать далее
... контроллере викета — весь веб‑интерфейс виснет намертво.

Пришлось написать что‑то типа Task Manager в шиндовс. Каждый отдельный запрос кидается в Квазар (в наидефолтнейшей конфигурации), а внутри файбера уже выполняется SQL‑запрос через JdbcTemplate. Как только файбер что‑то посчитал — результат кладется в гуавовский кэш. А викет потом с помощью AbstractAjaxTimerBehavior постоянно мучает сервер и смотрит, появилось ли чего в кэше. В кэш также кладется JDBC Statement, чтобы даже если никакого результата еще нет, пользователь мог оборвать запрос.

Квазар подключается через добавление агента в томкате.
Документация по процессу подключения там какая‑то переусложненная, на деле достаточно кинуть в lib томката три джарки: comsat‑tomcat‑loader‑7.0.jar, guava‑19.0.jar и junit‑4.12.jar, и потом в context.xml прописать одну строчку:

Интересно, что начиная со Spring 4 класс SimpleJdbcTemplate дропнули (перед этим на протяжении Spring 3 он был deprecated). Но новый класс JdbcTemplate не умеет в состояние, соответственно я не могу оборвать слишком долгий SQL запрос посередине! Пришлось пойти вручную напердолить аналог удаленного SimpleJdbcTemplate. Спрашивается, зачем было удалять? Длинных SQL запросов больше не существует, 640 килобайт хватит всем?

split testing, a/b testing, a/b тестирование, a/b‑тестирование

(Анонс первоначально опубликован на Хабре и Лоре)

В четверг, 7 июля, в 20:00, в петербургском офисе Oracle состоится встреча CodeFreeze с Романом Поборчим, экспертом по Java, качеству поиска и A/B тестированию. Тема встречи — грабли A/B тестирования.

Участие — бесплатное. Количество мест ограничено, необходима ...
Читать далее
...регистрация по ссылке.


О докладе


A/B-тестирование (англ. A/B testing, Split testing) — метод исследования, суть которого заключается в том, что контрольная группа элементов сравнивается с набором тестовых групп, в которых один или несколько показателей были изменены, для того, чтобы выяснить, какие из изменений улучшают целевой показатель. Примером может служить исследование влияния цветовой схемы, расположения и размера элементов интерфейса на конверсию сайта.

Википедия


Все изменения на вашем сервисе проходят через эксперимент на пользователях. Вы выкатываете только то, что показывает значимое улучшение целевой метрики. Да, у вас есть целевая метрика. Да, вы всё знаете про статистическую значимость — ну или, по крайней мере, слышали о ней.

Так почему же целевая метрика вашего сервиса сегодня находится точно на том же уровне, что и год назад?

Один из возможных ответов состоит в том, что в систему проведения экспериментов вкрались ошибки. Роман расскажет о некоторых типовых проблемах, с которыми сталкиваются практически все, кто начинает экспериментировать над пользователями. Кроме конкретных проблем, доклад коснется индикаторов, следя за которыми можно заметить, что что-то сломалось. Если в вашем проекте есть A/B тестирование, то по результатам рассказа вам наверняка захочется внести в него какие-то улучшения.


О докладчике



Роман Поборчий окончил мат-мех СПбГУ в 1998 году. До 2004 года работал над Sun JDK, поучаствовал в релизах с 1.1.8 до Java 5. С 2004 по 2008 год работал в Intel, где также работал над реализацией Java, впоследствии выложенной в Open Source под именем Apache Harmony.

С 2008 по 2015 год занимался оценкой качества поиска в Яндексе, где, в частности, и приобрёл опыт в A/B тестировании.

С 2015 года сменил основной род деятельности и теперь занимается презентациями в IT. Участвовал в качестве консультанта по презентациям в подготовке Highload++ 2015 и РИТ++ 2016.


Место проведения

Петербургский офис компании Oracle:

10-я Красноармейская улица, 22А, БЦ «Келлерман», 2 этаж
(геометка в 2Гис)

Транспорт

  • от станции метро «Балтийская» — 10 минут пешком: сначала по Лермонтовскому проспекту, потом 100 метров налево по 10-ой Красноармейской.

performance, postgresql, optimization, Java

(Анонс первоначально опубликован на Хабре и Лоре)

В среду, 6 июля, в 20:00, в питерском офисе компании Oracle состоится встреча JUG.ru с Альваро Эрнандесом, экспертом по PostgreSQL. Тема встречи — особенности взаимодействия Java с PostgreSQL.

Язык встречи — английский. Участие — бесплатное. Количество мест ограничено, необходима ...
Читать далее
...регистрация по ссылке.


О докладе

Java — это язык для Enterprise разработки, можно сказать — Язык с большой буквы, и с шансами — самый популярный язык для работы с PostgreSQL. А задавались ли вы вопросом, действительно ли эта связка, Java с PostgreSQL, хорошо подходит для своей задачи, действительно ли оправдывает возложенные ожидания? Этот доклад представляет собой технический отчет об уровне развития PostgreSQL и Java, который ответит на следующие основные вопросы:


  • Может ли Java воспользоваться 100% производительности, предоставляемой PostgreSQL? Если нет, то где происходят потери? И что мы можем с ними сделать? Используются ли в PostgreSQL какие-то технические или архитектурные паттерны, которые могут ограничить производительность Java?

  • Можем ли мы из Java достучаться до совершенно всей функциональности, которую предоставляет PostgreSQL? И если нет, что от нас скрыли, и можем ли мы как-то справиться с этим на практике?



О докладчике



Альваро Эрнандес — 37-летний предприниматель в области информационных технологий, живущий в Мадриде (Испания). Он основал компанию 8Kdata и является её техническим директором. Компания 8Kdata занимается разработкой и исследованиями в области баз данных. Большую часть времени Альваро занимается разработкой проекта ToroDB — СУБД на базе PostgreSQL, которая совместима с MongoDB и может заменять её в уже существующих приложениях. Являясь увлеченным разработчиком, он также занимается распространением и популяризацией идей Open Source.

Альваро не только программирует на Java и является членом JavaSpecialists.eu, но также является отличным DBA, учителем, и часто выступает лектором на международных конференциях. Кроме того, он основал PostgreSQL Spanish User Group — одно из крупнейших сообществ этой тематики в мире, состоящее из более чем 550 участников.

Место проведения

Петербургский офис компании Oracle:

10-я Красноармейская улица, 22А, БЦ «Келлерман», 2 этаж
(геометка в 2Гис)

Транспорт


  • от станции метро «Балтийская» — 10 минут пешком: сначала по Лермонтовскому проспекту, потом 100 метров налево по 10-ой Красноармейской.

Особенности работы JIT-компиляторов в HotSpot JVM — встреча с Дагом Хокинсом, Санкт-Петербург

performance optimization, jug , hotspot, azul, jit , jvm , Java

Источники: Хабр, ЛОР

В четверг, 30 июня, в 20:00, в питерском офисе компании Luxoft состоится встреча JUG.ru с Дагом Хокинсом, JVM-инженером в Azul Systems. Тема встречи — особенности работы JIT-компиляторов в HotSpot JVM.

Язык встречи — английский. Участие — бесплатное. Количество мест ограничено, необходима регистрация по...
Читать далее
... ссылке.

О докладе

Для многих разработчиков компиляторы являются чем-то мистическим. А just-in-time компиляторы, работающие в современных рантаймах, тем более кажутся просто черной магией. Между тем, существует всего несколько простых концепций, которые определяют работу любого компилятора, и, как только приходит их понимание, становится возможным заставить компилятор работать так, как тебе хочется.

В ходе этой встречи участники пройдут по, казалось бы, простому фрагменту кода на Java, в деталях изучая множество техник, которые OpenJDK использует для ускорения выполнения этого кода, включая статические оптимизации, спекулятивные оптимизации на основе профиля, и то, как эти оптимизации совместно превращаются в настоящую черную магию деоптимизации JVM.

О докладчике



Дуглас Хокинс (Douglas Q Hawkins) — работает на должности VM Engineer в компании Azul Systems.

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

Три года назад Дуг перешел от разработки с использованием Java к работе непосредственно разработчиком JVM, и сейчас работает над ReadyNow! — специальной особенностью Zing Virtual Machine, разработанной в Azul, позволяющей виртуальной машине быстро запускаться и продолжать быстро работать, т.е. она решает проблему прогрева, тем самым помогая приложениям, которым нужна высокая скорость отклика. Zing в свою очередь — это специальным образом улучшенный рантайм для Java, предоставляющий консистентное время отклика с минимальным тюнингом GC и JVM, используя технологию сборки мусора без пауз C4 (Continuously Concurrent Compacting Collector), поддерживающую до 2 TB heap-памяти.

Место проведения

Петербургский офис компании Luxoft:
Бизнес-центр «Осень», Свердловская наб., дом 44, литера Я

Транспорт

  • Бесплатный автобус-шаттл «Теорема» от станции метро «Площадь Ленина»

  • Маршрутка К137

  • Автобусы 37 и 106 — остановка на пересечении Полюстровского и Пискаревского пр.


Подробности и регистрация
Заметка о сегодняшнем дне, чтобы почувствовать всю бессмысленность существования.

Узнал несколько ужасных вещей, в том числе то, что на принимающей стороне одного из веб-сервисов XMLка должна приходить обязательно в 1 строку (иначе не провалидируется), причем алиасы неймспейсов должны быть названы не как попало автогенератором, а были названы красивыми именами (иначе не провалидируется). На...
Читать далее
... осознание этого факта ушло много времени.

Пришлось мучить JAXB.

Классы из XSD генерятся вот такой штукой: maven-jaxb2-plugin. Она умеет в jaxb bindings, но как всех обмануть и подменить в bindings.xjc неймспейсы - я не придумал (может, есть способ?)

Но оказалось, что в интернетах есть плагин для плагина, который таки добавляет в заголовок сгенерированных классов нужную инфу: https://github.com/Siggen/jaxb2-namespace-prefix

Hey dougs! I herd you like generator plugins, so we put generator plugin into your generatior plugin, so you can plug generators while your generate plugins

Короче, он какой-то косой, и его действие не распространяется на тэги group, импортированные из другой xsd (ну или я не придумал, как это сделать).
Я хотел прописать bindings node, вдруг это хакнет систему. Но оказалось, что падла почему-то совершенно не понимает запросы типа //*[local-name()=РассветКоммунизма], и падает с ошибкой "ничего не нашлось". А если попробовать //* чисто для теста, оно падает с ошибкой "слишком дофига элементов, не справляюсь, их там больше 25!". Двадцать пять элементов хватить для всех (с). Короче, что за дерево оно там парсит ничерта не понятно, но учитывая что поиск по local-name падает, это явно не моя XSD.

И еще автор забил публиковать стабильные релизы лет 5 как, свежая версия есть только в Sonatype Snapshots.

Вообще там всего плагина - одна портяна на пару экранов. Наверное это как-то можно починить, но лень сейчас с этим пердолиться.

В результате, после МНОГОЧИСЛЕННЫХ попыток обрулить эту проблему разнообразными способами и костылями, пришлось предать общечеловеческие ценности и залить автосгенерированный package-info.java прямо в гит, добавив к нему в шапку еще один @javax.xml.bind.annotation.XmlNs вручную. Причем т.к. если положить _только_ package-info, оно начинает плакать "ой, я тут пытаюсь работать, а класс уже проаннотирован" и падает с ошибкой, пришлось еще навернуть эксклудов.
Кто дочитал до конца, всем синей изоленты.
К посту прилагается срач на Фейсбуке

Встретился сегодня с логгерами в Жабе.
Проблема: логгер работает, но ничего не пишет.
Заметка отвечает на вопрос - почему.

0) При старте вижу, что log4j запускается, но использует реализацию NOP, т.е. ничего не делающую. Привычным движением добавляю в мавеновские зависимости джарку бриджа slf4j-log4j... и не происходит ничего. Долго копаюсь в зависимостях, понимаю...
Читать далее
... что конфиг совершенно стандартный, и дело вероятно не в нем. Надо в thinking out of the box, а снаружи коробки у нас только Tomcat, JDK и операционка. Операционка явно не при чем, Томкат после тщательной инспекции - тоже не при чем, остается только JDK. И тут оказывается, что...

1) Крипто Про в своих зависимостях тащит commons-logging. (Понятно что истории, которые начинаются со слова "Крипто Про" ничем хорошим не продолжаются, так что можно вот прямо тут и закрыть эту заметку.) Так вот, Крипта требует положить джарку с commons-logging прямо внутрь JDK/JRE/lib/ext, Карл!. Иначе ничего не работает. То есть, оно зовет логгер прямо из другой джарки внутри jre/lib/ext, поэтому перенести зависимость на commons-logging из JDK в war-файл нельзя, это тупо не заработает. А Другой софт такого подвоха не ждет, и начинает писать логи куда попало. У меня отвалились все логи. Предположение в том, что оно не читает мое log4j.properties (единый файл на весь проект), и теперь нужно заставить его увидеть сей файл.

2). Одна штука все же работает. Это Apache CXF. Копаюсь в потрохах CXF. Там логгер берется не стандартным спосбом-однострочником, а через какой-то LoggerUtils. Открываю, а там адовый метод на три экрана чистейшей лапши из try-catch и if-return'ов. Общий смысл (кажется) - он пытается угадать, какая у нас сейчас система логирования, и подложить костылей. Причем там есть перлы типа обложенного проверками получения значения примитивной интовой переменной, значение которой дальше нигде не используются. Может быть они таким образом расчитывают на интерцепторы, которые перехватят геттер этой переменной (создание такого интерцептора кажется весьма больной идеей). Либо создатели портяны давно уже не совсем понимают ее содержимое, и на всякий случай не трогают. Ах да, комментариев в портяне нет. В общем, запасной вариант на черный день, логирование через кусок магии и jul без конфигов и без ничего у нас есть, но пользоваться им не хочется. Но копание в CXF приводит к мысли, что на самом деле не работает всего лишь переходник с jul на log4j.

3) Дальше иду разбираться как таки заставить работать commons -logging параллельно с log4j и slf4j.
Оказывается, тут надобно впилить log4j и slf4j, и потом поверх два костыля - бридж из jul в slf, и бридж из slf в log4j.
Вместе они начинают работать в такой цепочке: jul -> slf-> log4j. Что само по себе выглядит как чудовище с восемью ногами.
Но они все равно не работают в этой связке. При их включении (сделать котрое можно только зафорсив compile scope на slf - контринтуитивно, учитывая что проблемный класс находится в совсем другой джарке) отваливается даже то, что раньше логировалось через магическую портяну из CXF.

4) Идем разбираться, как же работает log4j. Внутри обнаруживается чудная особенность: он при инициализации берет первый же попавшийся в classpath объект класса чототам-StaticBinder, и использует его как мост до реальной реализации логгера. Причем если этих StaticBinder'ов несколько, то работать будет максимум один (о чем у них честно сообщено в глубинах документации на сайте, но другими словами). Т.е. если захочется, нельзя написать, например, аггрегатор этих StaticBinder'ов (чтобы потом выбирать нужный по ситуации), ибо он вступит в конфликт с аггрегируемым.

5) Дальше смотрим, что делает таки этот Binder. А он делает класслоадер и засасывает туда всякие адпатеры да мосты. Но в конце концов подсасывается класс Hierarchy, который В СТАТИЧЕСКОМ БЛОКЕ, не в конструкторе, инициализирует сам себя. Т.е. например, хрен мы Спрингом (или чем-то еще) по-человечески можем вмешаться в эту вакханалию. Чтобы переопределить этот кусок логики придется копипастой писать свой StaticBinder, беря за основу мост slf4j-log4j, и создавать в нем какую-то другую копипастаную Hierarchy. Вот тебе и ООП. Ну в любом случае, вот и нашли виновника торжества, место которое проёбывает конфиг.

6) Дальше смотрим, что он делает в секции, может как-то можно подсунуть нужный файл конфига? Ну и видим, что он там есть: там написана некая негибкая лапша, которая вначале ищет В ЛЮБОМ МЕСТЕ класспаса файл log4j.xml, потом если предыдущий файл не найден - опять же в любом месте log4j.properties, а потом смотрит на system property где можно указать оверрайд.
Но мы не можем воспользоваться результатом работы этой лапши:
а) Этот чудный getResources ВСЕГДА находит какой-нибудь log4j.xml внутри ирерахии, т.к. их куча понапихана в библиотеках-зависимостях. Единственный способ не попасть в эту ветку лапши - это указать какой-нибудь оверрайд в system property. Таким образом, в ветку когда оно подцепляет из класспаса log4.properties оно на практике не попадает НИКОГДА.
б) Если вписать system property с путем до файла, оно работает. Но он конструирует его тупо с помощью стандартного класса URL. Т.е. его нельзя указать относительно, например ${catalina.home}/conf/log4j.properties - насколько понимаю, URL не умеет в $-плейсхолдеры (берущие данные из system properties, как можно было бы сделать в случае Спринга). И протокола classpath: по-умолчанию URL не умеет.
в) Случай на черный день - вписать system property с абсолютным путем до файла. Но это говно идея, т.к. повлияет не только на текущее приложение, а вообще на все варки, задеплоенные в Томкате.

Сейчас есть следующие идеи:
z) Покопаться внутри лапши, может туда можно как-то хитро подсунуть относительный путь
x) Попробовать написать свою реализацию протокола classpath: для URL. Но тут возникает проблема в порядке загрузки говнокода. Нужно как-то более-менее гарантировано сделать загрузку этого протокола раньше, чем инициализируется первый логгер (по сути, первый StaticBinder). Иначе есть шанс, что взмах крыльев бабочки в цоде на другой стороне Земляшки разнесет все логироваие к хуям.
c) Написать свой StaticBinder, вызвать там свою Hierarchy, конечно с обильной копипастой из первоисточника чтобы что-нибудь не поломать по дороге, но по пути поправить обнаруженные несправедливости, н-р инициализацию логгера сделать в виде паттерна-стратегия (вместо статического блока)

Вообще, может я чего не понял и просто ламер, всё-таки иногда все эти пирамиды из переходников работают... Интересно, почему... Но я вот тут мимо крокодил, и по крайней мере _выглядят_ все эти пирамиды как адовое рукожопие, какая-то плохо документированная лапша. Склеенная на изоленту (у которой истек срок годности году эдак еще в 1998. Написанная редкими специалистами по PHP, простите - ООП.

Идея: импортозамещение Java (OpenJDK)

Пишу программный документ проекта, помогите с начальным списком фич, пожалуйста!

masterspammer может что-нибудь подсказать насчет анализа языка, если захочет :-)


  • название проекта должно звучать с сохранением духа оригинала и глубины многовековых традиций отношения к клиенту в Oracle, поэтому новое название: Жыдыка

  • идеалогия в том, что если писать код российскими буквами, то
...
Читать далее
...
  • работать будет быстрее! Всё ядро OpenJDK переписать на русском языке, включая комментарии и тесты

  • JMH будет автоматически гонять тесты в двух режимах: в российском и нероссийском. Если нероссийский вариант работает быстрее, всё падает с ошибкой

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

  • особая российская Java Memory Model.

  • мы обязуемся отбить незаконно отобранный у народа России полновесный sun.misc.Unsafe, добавив его под другим именем, возможно даже под несколькими разными другими именами

  • чтобы лучше передавать дампы памяти диктовкой по телефону, по возможности их содержимое автоматически кодируется в последовательность русских матов

  • мониторинг болеющих GC, VM и прочих букв производится через выгрузку статистики на веб-сервис Госуслуг. (Чтобы не переделывать Госуслуги, каждому GC автоматически заводится учётка гражданина, а статус здоровья отображается через графики на веб-сервисах Минздрава)

  • глубинная интеграция с Astra Linux

  • аннотации @Нахуй и @Уходи в Spring Framework будут предоставлять новые scope для бинов, при создании такого бина всё связанное с ним бесследно удаляется, включая засранный пермген, чистятся кармы и сбрасываются кэши в процессоре. В живых остается только то, что не имело DI-связи с данным бином. Это нововведение должно заменить ошибочно отсутствующие в Java деструкторы и прерывание тредов. И да, Spring будет встроен прямо в Жыдыка

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

  • в качестве пре-коммит хука в репозиторий Жыдыки, запускается СОРМ. Все патчи, посланные по почте, проходят через специальный почтовый сервер за авторством сами знаете кого. Все лицензии в начале файлов заменяются необычайно точные на выдержки из Конституции
    сдавшим Р-CJP выдаются стандарты в кожаном переплете и ксива старшего лейтенанта ФСБ. Коммитеры обязательно подписывают подписку о невыезде и дают военную присягу. Все права на боевые заслуги коммитеров передаются Родине лично

А прорвало Касперскую сразу после вот этого не мене зачетного монолога: http://www.kommersant.ru/doc/3002418

Поциент начинает с казалось бы правильной посылки:

«— В каких‑то узких областях импортозамещение имеет смысл — стратегических, связанных с безопасностью страны. Во всем остальном — это изобретать велосипед. Причем, скорее всего, этот велосипед получится медленный и часто ломающийся. В...
Читать далее
... конечном итоге бизнес, который будет вынужден пользоваться продуктами импортозамещения, сильно потеряет.»

Но вместо перехода к идее, что софт нужно разрабатывать вместе, особенно в модели Open Source / Free Software, афтар впадает в пограничное состояние и начинает шизофазировать:

«Технология или программный продукт сегодня является способом улучшить производительность труда и сократить издержки для бизнеса. Нет шансов сделать продукт лучше, чем, например, Oracle, Microsoft или SAP,— это мировые лидеры, формировавшиеся десятилетиями. Качество российских аналогов, скорее всего, будет сильно хуже. Конечный потребитель от этого только потеряет. В итоге денег будет потрачено сильно больше, а конечный результат грустный.»

Не, ну если, конечно, аутсорсная контора не может в R&D и собственное производство, то ойвсе, Россиюшке конец.

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

Skype перешел на новый уровень — теперь его нужно распараллеливать! Обычный компьютер слишком слаб для Скайпа

Когда пытаешься по скайпу скачать большой файл (почему‑то особо люто на XML, совпадение?), он виснет. Причем с шансами вместе со скайпом виснет еще и Мак.

У мну два компа — линукс и макмини. Поэтому на обоих...
Читать далее
... компах теперь запущен скайп. Пока один скайп висит, по другому можно общаться. И наоборот. А если комп не повис, то можно не только общаться, но еще и кодить.

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

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

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

Oleg Chirukhin, [05.06.16 18:49]
Давай споём, друган?

Ainix_Herman_Gref, [05.06.16 18:49]
о том, происходит ли убийство бактерии методом глубокой заморозки

Oleg Chirukhin, [05.06.16 18:49]
Пусть прошлое раскрошится
Волною о причал,
Мы вспомним всё хорошее, ...
Читать далее
...
Забудем про печаль.



Ainix_Herman_Gref, [05.06.16 18:49]
акции российских предприятий раскупаются за границей как горячие пирожки

Oleg Chirukhin, [05.06.16 18:49]
Умчалась юность бедная
За даль туманных звёзд,
И за любовь последнюю
Я поднимаю тост.

Ainix_Herman_Gref, [05.06.16 18:49]
первый этап уже выполнен наказание невиновных

Oleg Chirukhin, [05.06.16 18:49]
Выпьем за любовь,
Как блестят сейчас твои глаза,
Выпьем за любовь,
Пусть дрожит хрустальная слеза.

Ainix_Herman_Gref, [05.06.16 18:49]
мы создаем совершенно немыслимое количество вузов, готовящих бухгалтеров, у нас скоро вся страна станет бухгалтерами

Oleg Chirukhin, [05.06.16 18:50]
Выпьем за любовь,
И уже не надо лишних слов,
Выпьем за любовь, родная,
Выпьем за любовь.

Ainix_Herman_Gref, [05.06.16 18:50]
рублей, а сотрудник центрального аппарата министерства получает 18 тыс

Oleg Chirukhin, [05.06.16 18:50]
Пpости меня за все цветы,
Что для других срывал,
Пpости меня за все мосты,
Что за собой сжигал.

Ainix_Herman_Gref, [05.06.16 18:50]
хотел бы я поменяться постами с министром финансов

Oleg Chirukhin, [05.06.16 18:50]
Hо мы построили с тобой
Последний хрупкий мост,
За возвращение любви
Я поднимаю тост.

Ainix_Herman_Gref, [05.06.16 18:50]
нет, скорее с министром финансов

alt