воскресенье, 26 июля 2015 г.

Старый город


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

суббота, 25 июля 2015 г.

Oracle переехал

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

Radisson Blu Sky

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

Шашлыков нет

Батя предложил в Пирита шашлыков поесть, но у них закончилось мясо и мы на них обиделись, решив поехать ужинать в Mack.

Зато погуляли по прибрежному лесу, что отделяет пляж от дороги. Батя там даже несколько маслят нашёл.

Бабушка

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

Проездной

Оказывается, что мне, как жителю Таллина, положен бесплатный проезд на общественном транспорте. Но для этого пришлось купить карту за 3€ и зарегистрировать её на свою ID kaart.

Питер - Таллин


Поехал в Таллин на выходные. Lux Express запустил новые автобусы c планшетами на борту. Можно смотреть фильмы, слушать музыку или играть в Angry Birds.

Каждое кресло, похоже, соединено с общей точкой по WiFI.

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

вторник, 21 июля 2015 г.

Applet @ Chrome

Сегодня наткнулся на сообщение, что не будет больше апплетов в браузере. Оракул, похоже, не знает и продолжает настаивать...

Список языков

В этом списке языков программирования даже Котлин есть.

понедельник, 20 июля 2015 г.

Slack

Ещё один чат типа ICQ или Hangouts? Не совсем. Эта программа заточена именно на командную работу.

У нас на работе используется в качестве замены внутреннего NNTP сервера, так как позволяет общаться всем со всеми и достаточно оперативно. Создаётся поддомен для команды и все общаются со всеми либо в отдельных комнатах, либо тет-а-тет.

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

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

Прикольно, конечно, для стартапов, если ты не параноик ;)

Атомный Atom

Прикольный редактор с подсветкой синтаксиса от GitHub:

Мегаполис

Как и в прошлом году ехал дорого, но с удобствами. Поезд Мегаполис, он один такой оранжевый, где апельсины выдают и WiFi на халяву. Пароль mega2003, где 20 - поезд, а 03 - вагон.

воскресенье, 19 июля 2015 г.

Московские дороги

Минское шоссе почти закончили ремонтировать. Теперь там от Голицыно до Дубков, где съезд на платную дорогу, четыре полосы и ограничение в 110 км/ч. На Кутузовском, куда я давненько не заезжал, убрали левые повороты, сделали его местами двухярусным и увеличили скорость до 80 км/ч.

С другой стороны, на Можайском шоссе понаставили столько светофоров и камер, что едешь теперь, как по городу.

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

Хотя, может мне просто не повезло сегодня...

Панда-парк Фили

В Красной поляне видели филиал московского Панда-парка и решили поехать в Фили, где есть детский маршрут. Лёшка его раз десять прошёл, пока Мишка где-то сверху болтался:

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

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

Конную полицию видели в парке. Жаль, не успел щёлкнуть.

Зубные врачи

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

суббота, 18 июля 2015 г.

Шашлыки


Пока Юля с Лёшкой малину собирали, Мишка готовил угли для шашлыка. Я его учил топором работать - сначала щепки тесать, потом брёвна рубить.

Беговая

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

Каланчёвская


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

Питер - Москва


По приколу поехал в Москву на двухэтажном поезде. Вагоны делались в Твери, выглядят вполне современно. Все туалеты в одном углу, что удобно. Купе, правда, низкие и места для багажа маловато - только под сиденьями. У каждого места - розетки для телефонов, но они не работали. Проводница сказала, что в Питер ехала толпа китайцев, которые грели воду кипятильниками, хотя на розетке написано "до 100 ватт", и что-то спалили в системе.

пятница, 17 июля 2015 г.

Погода

На улице громыхает изрядно и льёт как из ведра. Кстати, можно посмотреть где ещё гром гремит в реальном времени.

четверг, 16 июля 2015 г.

Uncharted 4


Прикольная приставочная игра, похожая на фильм.

Ложка дёгтя

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

Реверси

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

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

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

вторник, 14 июля 2015 г.

Кевин Смит на линии


Смешно чувак байки рассказывает...

Второй монитор для игр

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

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

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

Я же думал несколько о другом...

Когда я работаю в IDEA, то могу вспомогательные окна перетаскивать на второй монитор, чтобы они там болтались и в глаза не лезли. Хотелось бы аналогичной функциональности в играх. Допустим, играете вы в Deus Ex на большом мониторе, а на соседний выводится карта, инвентарь и всякое разное.

Это было бы реально круто!

Sic transit gloria mundi

При покупке телефона рекламировалось, что в режиме ожидания он работает 35 дней. Ну а у меня в режиме три звонка в день он прожил чуть более недели. Чуда не произошло.

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

Unleash the Archers

Какие-то канадцы пиарятся на популярности Безумного Макса:

понедельник, 13 июля 2015 г.

Пятилетие

Вот и ещё один же ребёнок подрос.

На следующий год

Kotlin существует только в трёх видах: для JVM, JavaScript и Android; а переносимое приложение написать можно только текстовое через вывод println.

И в этом вопросе язык сильно проигрывает почившему в бозе JavaFX script, в котором существовала Scene с набором 2D-примитивов, анимацией и связыванием переменных. Это позволяло создать переносимое приложение под телефон.

Посему у меня возникла идея для следующего Hackathon: разработать (для начала) библиотеку работы с графикой и реализовать единый интерфейс для всех трёх платформ.

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

Неожиданно

В процессе изучения Kotlin я нашёл следующую проблему:
  open class Super(val value: Int) {
      constructor(value: Super) : this(value.value)
  }
  class Sub(value: Int) : Super(value) {
      constructor(value: Sub) : super(value)
  }
Наследник не компилируется, сообщая, что нельзя использовать super в данном контексте, а надо использовать this. Покурив документацию, я всё-таки написал требуемую мне иерархию:
  class SubOK : Super {
      constructor(value: Int) : super(value)
      constructor(value: SubOK) : super(value)
  }
Это не лишено некоторой логики: если определяется конструктор по-умолчанию, то остальные конструкторы должны использовать только его. Во втором случае у класса SubOK нет конструктора по-умолчанию, а оба конструктора равноправны. Но на мой взгляд, логика достаточно спорная, да и добавляет лишнюю строку кода.

PS. Коллеги подсказывают, что похожее поведение у Scala.

суббота, 11 июля 2015 г.

Герой или нет

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

Сказка — ложь, да в ней намек, Добрым молодцам урок!

Nightwish


Оказывается, что у Nightwish уже третья вокалистка. Мне стало не интересно следить за ними после ухода Тарьи. Хотя, нынешняя поёт, вроде, нормально - мне нравится больше, чем предыдущая. Правда, обоим им до Тарьи, как до Луны...

Kotlin @ Hackathon

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

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

Язык Kotlin мне понравился. Подобно JavaFX он сильно уменьшает количество boilerplate кода. С другой стороны, код становится плотным и насыщенным, поэтому лучше добавлять комментарии.
  data class Player(val id: Int,
                        name: String?,
                    val solver: Solver? = null) {
      val name = solver?.name ?: name ?: "Player ${id + 1}"
  }
Например, код выше является описанием класса с тремя readonly свойствами id, name и solver, для поддержки которых генерятся методы equals и hashCode.

Конструктор по-умолчанию имеет два обязательных и один опциональный параметр со значением null по умолчанию. String? означает, что параметр типа String может принимать значение null.

Свойство name задаётся не напрямую через конструктор, а на основе выражения, в котором присутствует куча проверок на null. Сначала мы спрашиваем имя solver?.name, которое вернёт null, если сам solver тоже null.

Потом идёт так называемый elvis-оператор, который возвращает левую часть, если она не null, иначе возвращает правую.

Тип свойства name напрямую не задан, а определяется из выражения. С учётом всех проверок на null, типом оказывается String, а не String?, как у соответствующего параметра.

Методы так и подмывает писать однострочными:
  fun count(id: Int) = cells.values().filter { it == id }.size()
Да, λямбды поддерживаются. Кстати, тип объекта внутри if определяется автоматически, если в if этот тип проверялся.

Поддержка range сделана простой и оптимальной в коде:
  x in 1..width && y in 1..height
Кроме того, мне очень понравились функции расширения. Обычно в Java заводят вспомогательный класс с набором статических методов, а тут можно написать следующим образом:
  fun JComponent.getInnerBounds(): Rectangle {
      val bounds = Rectangle(getWidth(), getHeight())
      val insets = getInsets()
      if (insets != null) {
          bounds.x += insets.left
          bounds.y += insets.top
          bounds.width -= insets.left + insets.right
          bounds.height -= insets.top + insets.bottom
      }
      return bounds
  }
После чего можно использовать этот метод, будто он объявлен в классе JComponent. В целом, поддержка Java отличная.

В общем, интересный опыт. Теперь надо готовить презентацию.

Вписался

И зачем я только домой ездил на ночёвку?

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

Бесплатных автобусов на время ремонта не будет, придётся пользоваться общественным транспортом.

вторник, 7 июля 2015 г.

Helloween

Нашёл тут что-то новенькое от давно забытой группы:

Kung Fury


Это какой-то трэш, угар и содомия! В начале - так ваще!!!

понедельник, 6 июля 2015 г.

Skype

Пришло загадочное письмо от Skype:
Средства на вашем счете будут деактивированы через 7 дня (дней)

Согласно нашим данным, вы уже довольно давно не пользовались средствами на своем счете в Skype. Деньги на счете деактивируются, если вы ни разу не использовали их в течение 180 дней. Однако беспокоиться не о чем: деактивированные средства можно будет активировать, когда они вам понадобятся. Просто войдите в свою учетную запись, выберите опцию "Активировать баланс на счете" и следуйте инструкциям на экране.
Получается, что если мне потребуется позвонить, то придётся плясать с бубном? Зачем им эти сложности?

Интересный ход

Продолжил прятаться от Чужого. Когда Рипли попросила рассказать Марлоу его историю, то вместо рассказа получилась мини игра за Марлоу на странной планете. Забавный способ передать атмосферу.

воскресенье, 5 июля 2015 г.

Троица


Вести с полей: гуляют...

Сушишоп

Заказал себе суши на обед, пришёл домой и обнаружил, что они забыли положить васаби. Пришлось идти снова. Хорошо, что недалеко. И они мне наложили не только васаби, но и имбиря.

суббота, 4 июля 2015 г.

Метизы

Зашёл сегодня в магазин купить пару шурупов, а мне сказали, что продать меньше пяти штук не могут, так как у них касса округляет до рубля, а шурупы выходят по 20 копеек. Интересно, как на это смотрит Общество защиты прав потребителей?

пятница, 3 июля 2015 г.

Nokia 105 black

Купил телефон на замену 1110, у которого отказал микрофон. Выбор обуславливался не только ценой, но и совместимостью батареи, которую мы относительно недавно обновили.

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

Функционал такой же, поэтому Мишке привыкать не придётся. Думаю: брать ли Лёшке такой же или от другого производителя?

четверг, 2 июля 2015 г.

Башни

Посидели с коллегами по Оракл в клубе Башни, провожая ещё пару человек, покидающих эту компанию.

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

Звенигородская

Последний раз я был на улице Звенигородская более десяти лет назад, когда ещё в Borland/TogetherSoft работал.

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

Летало

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


Сначала половина офиса вышла поглазеть, но полтора часа отсидели не все.


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

Разбор полётов

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

Нелётная погода

Согласно расписанию, с 10:30 до 13:20 над нами должны летать самолёты. До сих пор ещё никто не пролетел, а я уже замёрз. Какое-то холодное лето выдалось...

среда, 1 июля 2015 г.

Кубинка

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

Интересующиеся могут поставить эту программу с описанием танков, так как в бесплатной версии их маловато будет.

Nekrogoblikon

В новом клипе группа решила показать, как можно достигнуть успеха предыдущего, но как-то неубедительно:

Всё-таки, тот ролик был гениален!

вторник, 30 июня 2015 г.

ПетроЭлектроСбыт


А они, оказывается, следят за своей репутацией. Уважаю!

понедельник, 29 июня 2015 г.

Стрелки поменяли

Сегодня по пути на работу осознал, что что-то неуловимо поменялось, а потом понял, что одностороннее движение по 2-3 и по 4-5 линиям поменялось на противоположное. Видимо, ремонт на Малом, из-за которого у меня навигатор плутал, закончили.

Windows 10

Компьютер предложил бесплатно обновиться до новой версии Windows, после чего прислал подтверждение:
Congratulations on reserving Windows 10
Your free upgrade will be available from July 29th, and now that you’ve reserved it, you won’t miss a minute of Windows 10 helping you do great things.
Сдаётся мне, что они не хотят, чтобы кто-то зависал на Windows 7, как это было с Windows XP, чтобы сэкономить на поддержке.

Белые ночи

А как в Питере определить, что спать уже пора?
За окном светло, а время, оказывается, уже позднее...

воскресенье, 28 июня 2015 г.

Сюрприз

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

Голицыно - Питер

Юлин брат меня подбросил до Голицыно на 14:27, которая идёт на Каланчёвскую, что рядом с Московским вокзалом.

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

Сапсан выехал в 16:40 и через четыре часа прибыл в Питер. Домой же я добрался к половине десятого.

Год стукнул


Сегодня Катю поздравляли: подарили куклу и много летающих шариков.

суббота, 27 июня 2015 г.

Шашлык

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

Шашлык оказался вкуснее, чем на море. То ли из-за свежего воздуха, то ли из-за того, что сами делали...

четверг, 25 июня 2015 г.

Эк нам повезло

Сочи затопило через несколько дней после нашего отлёта.

среда, 24 июня 2015 г.

Встречи на дорогах


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

Полевая кухня

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

Патриот

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

Тяжёлая техника

Танковый музей

Свозил мальчишек в Кубинку. Музей заметно похорошел. Для него сделали обширную стоянку, подлатали территорию, провели интернет с аудиогидом:

Однако мне не удалось им воспользоваться, так как сайт не работает. Попробовал My Travel Guide и My Tourist Guide, но это всё не то.

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

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