Нашёл забавный тест на просторах интернета. Взяты факты из историй о былинных богатырях и надо узнать, о положительном герое идёт речь или об отрицательном...
Сказка — ложь, да в ней намек, Добрым молодцам урок!
суббота, 11 июля 2015 г.
Kotlin @ Hackathon
Завершился сорока восьми часовой марафон программирования, на котором я изучал язык Kotlin и писал известно что, а ведь до этого события я его и в глаза не видел.
Первые часов 20 прошли очень результативно, после чего пришлось пойти поспать в комнату отдыха. После обеда работа шла медленно и печально, поэтому я решил поехать домой и выспаться. Сегодня с утра полировал код и пытался найти ошибку в алгоритме подсчёта очков, из-за которой он долго думает, но плохо играет. Ещё не успел портировать Пашкин код.
Язык Kotlin мне понравился. Подобно JavaFX он сильно уменьшает количество boilerplate кода. С другой стороны, код становится плотным и насыщенным, поэтому лучше добавлять комментарии.
Конструктор по-умолчанию имеет два обязательных и один опциональный параметр со значением null по умолчанию. String? означает, что параметр типа String может принимать значение null.
Свойство name задаётся не напрямую через конструктор, а на основе выражения, в котором присутствует куча проверок на null. Сначала мы спрашиваем имя solver?.name, которое вернёт null, если сам solver тоже null.
Потом идёт так называемый elvis-оператор, который возвращает левую часть, если она не null, иначе возвращает правую.
Тип свойства name напрямую не задан, а определяется из выражения. С учётом всех проверок на null, типом оказывается String, а не String?, как у соответствующего параметра.
Методы так и подмывает писать однострочными:
Поддержка range сделана простой и оптимальной в коде:
В общем, интересный опыт. Теперь надо готовить презентацию.
Первые часов 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 г.
понедельник, 6 июля 2015 г.
Skype
Пришло загадочное письмо от Skype:
Средства на вашем счете будут деактивированы через 7 дня (дней)Получается, что если мне потребуется позвонить, то придётся плясать с бубном? Зачем им эти сложности?
Согласно нашим данным, вы уже довольно давно не пользовались средствами на своем счете в Skype. Деньги на счете деактивируются, если вы ни разу не использовали их в течение 180 дней. Однако беспокоиться не о чем: деактивированные средства можно будет активировать, когда они вам понадобятся. Просто войдите в свою учетную запись, выберите опцию "Активировать баланс на счете" и следуйте инструкциям на экране.
Интересный ход
Продолжил прятаться от Чужого. Когда Рипли попросила рассказать Марлоу его историю, то вместо рассказа получилась мини игра за Марлоу на странной планете. Забавный способ передать атмосферу.
воскресенье, 5 июля 2015 г.
суббота, 4 июля 2015 г.
Метизы
Зашёл сегодня в магазин купить пару шурупов, а мне сказали, что продать меньше пяти штук не могут, так как у них касса округляет до рубля, а шурупы выходят по 20 копеек. Интересно, как на это смотрит Общество защиты прав потребителей?
пятница, 3 июля 2015 г.
Nokia 105 black
Купил телефон на замену 1110, у которого отказал микрофон. Выбор обуславливался не только ценой, но и совместимостью батареи, которую мы относительно недавно обновили.
105 заметно легче, но проигрывает по эргономике. У него цветной экран, который блекнет на солнце. Менее рельефная клавиатура весьма непривычна на ощупь. Пару раз промахивался и выключал телефон, ибо соответсвующий пункт меню идёт первым в списке и подтверждения нет.
Функционал такой же, поэтому Мишке привыкать не придётся. Думаю: брать ли Лёшке такой же или от другого производителя?
105 заметно легче, но проигрывает по эргономике. У него цветной экран, который блекнет на солнце. Менее рельефная клавиатура весьма непривычна на ощупь. Пару раз промахивался и выключал телефон, ибо соответсвующий пункт меню идёт первым в списке и подтверждения нет.
Функционал такой же, поэтому Мишке привыкать не придётся. Думаю: брать ли Лёшке такой же или от другого производителя?
четверг, 2 июля 2015 г.
Башни
Посидели с коллегами по Оракл в клубе Башни, провожая ещё пару человек, покидающих эту компанию.Сам клуб находится на территории мотоцентра в одном из сохранившихся газгольдеров. На небольшой сцене иногда играют группы, но сегодня там крутили Убойные каникулы, а фоном шла отличная музыка. Пиво, кстати, понравилось, но название забыл.
Звенигородская
Последний раз я был на улице Звенигородская более десяти лет назад, когда ещё в Borland/TogetherSoft работал.
Сегодня я вышел прямо на эту улицу с новой станции метро Звенигородская и не узнал местности. Даже пришлось у таксиста какого-то спрашивать в какой стороне Обводный канал. Я помню эту улицу тихо и пустынной, со старыми неухоженными домами. А теперь это просто какая-то оживлённая магистраль!
Сегодня я вышел прямо на эту улицу с новой станции метро Звенигородская и не узнал местности. Даже пришлось у таксиста какого-то спрашивать в какой стороне Обводный канал. Я помню эту улицу тихо и пустынной, со старыми неухоженными домами. А теперь это просто какая-то оживлённая магистраль!
Летало


В полдень я опять вышел на крышу, а там тепло и облаков нет. А самое главное, что авиация уже в воздухе.Сначала половина офиса вышла поглазеть, но полтора часа отсидели не все.
Самое прикольное, что у одного из коллег оказался бинокль, которого вполне хватало, чтобы различать разные группы самолётов.
Разбор полётов
Связался с хозяйкой гостиницы, в которой мы останавливались. Она говорит, что их район не зацепило. Судя по всему, эта статья достаточно убедительно расписывает причины затопления.
Нелётная погода
Согласно расписанию, с 10:30 до 13:20 над нами должны летать самолёты. До сих пор ещё никто не пролетел, а я уже замёрз. Какое-то холодное лето выдалось...
среда, 1 июля 2015 г.
Кубинка
Сегодня нашёл информацию о том, как надо устанавливать аудиогид для танкового музея. С этого сайта переходим в соответствующий магазин и ставим.
Интересующиеся могут поставить эту программу с описанием танков, так как в бесплатной версии их маловато будет.
Интересующиеся могут поставить эту программу с описанием танков, так как в бесплатной версии их маловато будет.
Nekrogoblikon
В новом клипе группа решила показать, как можно достигнуть успеха предыдущего, но как-то неубедительно:
Всё-таки, тот ролик был гениален!
Всё-таки, тот ролик был гениален!
вторник, 30 июня 2015 г.
Подписаться на:
Сообщения (Atom)

