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

Выдумщики

История про то, как манекен охранял мост, напомнила мне байку, которую нам в воинской части на сборах рассказывали.

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

Стройка века

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

Первый блин комом

Вчера докачалась Windows 10 и я поставил её устанавливаться. На 10% я лёг спать, а когда проснулся, то обнаружил закрытую крышку у ноутбука. Похоже, что я во сне закрыл её, чтобы вентилятор не шумел. Открыв крышку с утра, я обнаружил крэш, после чего загрузилась Windows 7.

Попытка реанимировать установку привела к тому, что заново стали качаться 3GB. Руки бы им поотрывать за такое...

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

Прямой эфир

Регулярно слушаю радио ROKS. У них какой-то странный репертуар: то какие-то старые композиции, далёкие от рока (Depeshe Mode), то наоборот - классика рока (Creedence Clearwater Revival). Но сейчас подборка баллад перед сном просто шикарная - выключать совсем не хочется. Особенно после того, как поставили Harvest группы Opeth. Но ведь спать пора!

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

Билет на концерт

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

Zuma's Revenge

Origin, этакий конкурент Steam от EA, бесплатно раздаёт игру.


Детская библиотека

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

Хотите самое читающее население, как это было в Советском Союзе? Сделайте такие же библиотеки! Чтобы человек мог прийти и взять что-нибудь почитать. Бесплатно!

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

Я его не люблю

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

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

PS. На картинке - красный индикатор наличия перегрузки.

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

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

На обратном рейсе автобус был заполнен наполовину, поэтому мне удалось разместиться с большим комфортом и подремать. При выезде из Эстонии зал для досмотра отсутствует и выходить из автобуса, как раньше, не надо.

воскресенье, 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

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

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