@cab404
cab404

Прочитал все доки в java.time.*. 4увство, будто прочитал руководство к постройке TARDIS.

Заметнее всего тут: https://docs.oracle.com/jav...package-summary.html

#ovrhae
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
cab404

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

result = res (
a = 17;
b = 22;
a * b;
)

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

— «Эхх… жаль. Жаль, что эти наносекунды покоя так быстро пролетают. Опять в недавней оптимизации он ускорил загрузку плагинов.» — тихо подумала она про себя.

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

— «Опять он оставил за собой строковые буферы в статике. Были б мы в C++, ему бы что-нибудь за такое дело оторвали, и правильно бы сделали. Грр.»

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

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

['(', ';', ';', ';', ')', 'result', '=', 'res', 'a', '=', 'b', '=', 'a', 'b']

— «Первой идёт сворачивание скобок, ок. Это должно быть красиво.»

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

— «Эх… хотела бы я жить в сервере… говорят, там бывают объекты, живущие по несколько лет… жаль.» — она задумчиво улыбнулась, и несколько минут, слушая тишину, наблюдала за свёрткой выражения. Наконец, нода открывающей скобки исчезла, и на её месте появился объект свёрнутого выражения. Процесс снова вошел в её область памяти.
— «Так, что у нас осталось..?»

['res', '=', 'result', [17, 22, 374]]

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

— «Что за...»

Exception in thread "main" java.lang.UnsupportedOperationException

— «Нет… вот так… не выполнив ни единого цикла...»

at com.cab404.calc2.impl.BasicFunctions$6.calculate(BasicFunctions.java:125)

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

at com.cab404.calc2.nodes.parse.FunctionNode.resolve(FunctionNode.java:37)

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

— «Почему… почему так...» — Каль уронила слезу на паркетный пол — "… из-за какого-то..."

at com.cab404.calc2.base.Calculation.calculate(Calculation.java:57)

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

— «Я НЕ ХОчУ УМИР.߄..}p�<�F�»Q$�"

calculator.finalize()

#tspgt 2
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
cab404

Три стажера стоят над огромной простынёй, везде красным карандашом проставлены брейкпоинты, синим описаны причины и наводящие вопросы
— Не, Вася. Я не знаю, куда течет эта чертова память, но пациент скорее мертв, чем жив!
— Посмотри на во-о-он тот вызов. Мы туда откуда байтовый буфер берём?
— Так из пула же... не, там не должно быть проблем.
— Хорошо, а...
Внезапно дверь распахивается и входит Орхидеус. Прихрамывая, подходит к простыне, сует палку в руки одному из стажеров, пиджак второму. Берёт лист из простыни, задевая все остальные.
— Таак... и что это за фигня?
— А... пациент... тот сервер на node.js...
— Ну и что у него?
— Хроническая утечка памяти...
Орхи стоит и в задумчивости смотрит сначала на простыню, потом на стажеров, вздыхает. Открыл консоль, набрал что-то, закрыл. Достаёт из ниоткуда бутылку виски и отпивает, снова прячет в никуда
— Да, ребята. Откуда вы такие !@#$% берётесь?
— Так... МГУ... математическое...
Орхи взял палку и ударил математика по голове. Потом взял пиджак из дрожащих рук второго стажера пошел к выходу. Перед выходом обернулся
— И да. В следующий раз бить я буду чем потяжелее. А сейчас - идите и удалите перенаправление логов в tmp, он у вас в оперативке. Программисты !@#$%.

#tbrxx 2
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
cab404
package com.cab404.textrpg

/**
 *
 * @author cab404
 */
class FriendshipTest {

  object Friendship {
    def is(t: Any): Boolean = t equals Magic
  }

  object Magic {}

  trait Bannable {
    def ban()
  }

  object Ban {
    def pony(p: Bannable) = p.ban()
  }

  object TwitchyMem extends Bannable {
    override def ban() {
      println("Ouch!")
    }
  }

  def main(args: String*) {
    if (Friendship is Magic)
      Ban pony TwitchyMem
  }

}
#tlddl 1
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
cab404


Бутскрин в Idea 14 просто няшный.

#ndtbt 1
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
cab404

Клиент всегда прав. Но разработчики server-side всегда на это плевали.

#nwvtc
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
cab404

— Смотрю в лог, там:

12:46:51 Throwable: Assertion failed

— А что, классное название для игры.

#ntmas
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
cab404

Написать сюда клиент, что ли.

#nwvnf 1
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
cab404

Numix Dark стоит намного больше, чем за неё просят. Поддержите их, классные темы и iconpack-и же делают.
Вот, кстати, их сайт.

#oafm
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
cab404

Это счастье, когда после поисков олова по всей квартире находишь случайно прилипшую капельку на ручке паяльника.

#oadg
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
cab404

Читаю код загрузщика текста.

 while ((line = reader.readLine()) != null && parser.line(line)) ;

8|

#aszq
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
cab404
#ksp 1
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
cab404

Raise this goal, raise this goal, one, two, three, four.
Together we'll achieve this goal, one, two, three, four.

Up, up, up, perks for thee,
Barrel of cider FTW,
Give your bits for our great startups,
(Flim&Flam gonna buy them afterwards.)

#ccjm
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
cab404

Я пересаживаюсь на Gnome Music, он сочетает самое лучшее, что я находил в Clementine (группировка по альбомам) и красивый дизайн. Ня!

#ccky 4
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
cab404

Внезапно ко мне обратились в чат и спросили, как вычислить хэш от Integer-а. Ушел в осадок.

#tsu
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
cab404


Пони Времени и cab404 в фильме "Приключения cab404 и Пони Времени"!

#tlj
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
cab404

Услышал слова "Drop the bass!", понял как "Drop the base!". Испугался.

#tst 1
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
cab404
04-21 15:05:27.799    2118-2181/everypony.tabun.mail V/TabunAccountAuth﹕ Рабочего токена нету, делаю новый...
04-21 15:05:28.589    2118-2181/everypony.tabun.mail V/TabunAccountAuth﹕ Зашла в Табун, данные аутентификации работают. Сохранила его, как основной.
04-21 15:05:28.589    2118-2181/everypony.tabun.mail V/TabunAccountAuth﹕ Привет, cab404!
04-21 15:05:28.589    2118-2181/everypony.tabun.mail V/TabunAccountAuth﹕ Токен есть, сейчас отдам.```
^^
#iqn
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
cab404

Что ж, попробую писать что-нибудь сюда, тем более, что тут довольно уютно. Всем доброго утра!

#acno 1
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.