Я и мой ёбаный кот на фоне ковра. Войти !bnw Сегодня Клубы
УНЯНЯ. У нас есть немножечко инфы об этом пользователе. Мы знаем, что он понаписал, порекомендовал и даже и то и другое сразу. А ещё у нас есть RSS.
Теги: Клубы:

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

#U7A9PA (28) / @hirthwork / 3500 дней назад

если вы не уверены, что вашу шутку оценят, просто повторите в конце ключевое слово шутки снабдив его обращением «…, Карл!»

#85BXPG (7+1) / @hirthwork / 3500 дней назад

обесните позязя, поцчему в книжном Лем находился в разделе Фантанстики, а Берроуз — в современной прозе, он же ж 18 лет как умир

#FJT6U9 (2) / @hirthwork / 3500 дней назад

7.5км за 44:34

#6BC57G (0) / @hirthwork / 3500 дней назад

пока топится баня хётворк разминается карсбергом

#FEB44K (0) / @hirthwork / 3500 дней назад

натаскал воды в баню. как щитаете мангал раскочегаривать до или после?

#DA3ECJ (4) / @hirthwork / 3501 день назад

а ещё что в селе, что в городе отвратительно работает мегафон. в городе так вообще каждые пять минут случается No Service

#LSI7TU (2) / @hirthwork / 3501 день назад

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

#VEI2B6 (11+2) / @hirthwork / 3501 день назад

затопил баню, а чего добился ты?

#ENR9E0 (4) / @hirthwork / 3503 дня назад

6.36км за 38:57

#C0SI5W (13) / @hirthwork / 3505 дней назад

Давно искал пичку на эту тему, неожиданно в треде про Who Killed Captain Alex нашёл почти то что искал, не то, но всё же на случай важных переговоров сгодится: https://scontent-ams.xx.fbcdn.net/hphotos-xpa1/v/t1.0-9/11183461_10153259624093764_6062047641116055302_n.jpg?oh=8dc175bffdc1984fb06bbd93f1cc50f0&oe=55D73893

#AB5IW9 (3) / @hirthwork / 3505 дней назад

Ксюха, тебе нравится что ли делать мне НЕПРИЯТНО?

#N3V649 (2) / @hirthwork / 3505 дней назад
bnw

мне не нравится когда меня рекомендит тигрч, когда она это со мной делает, я получаю сообщение 6 more users received it, а вот когда меня каментит горен, то сразу 20 пользовательских мозгов были засраны моим постом

#9MMIDB (18+3) / @hirthwork / 3505 дней назад

весь тред охуенный. вы можете дальше ныть, а реальные пацаны фильмы будут снимать: https://www.facebook.com/ViralThread/videos/602106589931187/

#567MZH (0+1) / @hirthwork / 3505 дней назад

бнвач, а чо эта у меня дикое желание ещё раз попробовать пересесть с вима на емакс? и чо это у меня ощущение, что я опять скажу, что емакс для говноедов?

#PH8FHY (25+1) / @hirthwork / 3505 дней назад

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

public class CompletingFutureCallback<T> implements FutureCallback {
    private final FutureCallback<? super T> callback;
    private final Runnable completionCallback;

    public CompletionFutureCallback(
        final FutureCallback<? super T> callback,
        final Runnable completionCallback)
    {
        this.callback = callback;
        this.completionCallback = completionCallback;
    }

    @Override
    public void cancelled() {
        callback.cancelled();
        completionCallback.run();
    }

    @Override
    public void completed(final T result) {
        callback.completed(result);
        completionCallback.run();
    }

    @Override
    public void failed(final Exception e) {
        callback.failed(e);
        completionCallback.run();
    }
}

Зоркий глаз сразу скажет: А что если коллбэк был написан говнокодером и он кинет unchecked exception в ответ на вызов cancelled, completed или failed? Тогда completionCallback вызван не будет. Ладно, переделаем на finally. Далее уже рассматриваем рефакторинг одной функции, благо все они однотипные:

@Override
public void cancelled() {
    try {
        callback.cancelled();
    } finally {
        completionCallback.run();
    }
}

Зоркий глаз возразит ещё раз: А что если оба коллбэка написаны одним и тем же говнокодером и completionCallback.run() так же кинет unchecked exception? Да, после того как unchecked exception кинул callback.cancelled(). Даже если мы где-то снаружи ловим все Throwable, то информация о первом эксепшене будет безвозвратно потеряна.
В этот момент перфекционист вырывает клок волос из головы и призывает в помощь try-with-resources:

class Completer implements AutoCloseable {
    private final Runnable completionCallback;

    public Completer(final Runnable completionCallback) {
        this.completionCallback = completionCallback;
    }

    @Override
    public void close() {
        completionCallback.run();
    }
}

public class CompletingFutureCallback<T> implements FutureCallback<T> {
    …
    @Override
    public void cancelled() {
        try (Completer completer = new Completer(completionCallback)) {
            callback.cancelled();
        }
    }
    …
}

Вот теперь всё предельно корректно:
Если callback кинет исключение, то completer.close() так же будет вызван, и если он также кинет исключение, то это второе исключение будет добавлено к первому в список suppressed и при печати стек-трейса его будет видно и можно будет поанализировать.
Ну а если callback отработал как следует, то completer.close() так же будет вызван, а если исключение, if any, будет также проброшено наружу.

#KIFEAY (7) / @hirthwork / 3505 дней назад
--
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.