• В чем отличие промисов от монад?

    Promise - одна из монад, где bind (>>=), упрощённо, из обещания и из последующей функции делает новое обещание, которое дожидается выполнения первого обещания и передаёт результат в следующую функцию. В итоге управление в вызывающую функцию возвращается на первом же ожидании.

    Но монады есть и другие. Например Either, позволяющий выдать "ошибку", т.о. обрывая всю цепь вычислений на первой же ошибке. Или Maybe, ведущий себя аналогично Either, но не с возвратом какого-то ошибочного значения, а просто с остановкой на первом фейле. Список - тоже монада, там последующая функция будет вычислена на каждом элементе, а результате сконкатенированы.
    Ответ написан
    Комментировать
  • Как заработать новичку на низкоуровневом программировании?

    @FoxInSox
    Хм, нужно устроится на работу.
    Ответ написан
    Комментировать
  • Динамическая замена URL?

    croupier
    @croupier
    Для смены урлов достаточно history api, по остальному погуглите single page application
    Ответ написан
    Комментировать
  • Как обезопасить свой аккаунт гугл на чужом компьютере убунту?

    @larrabee
    Если подходить пароноидально, то не логиниться совсем, т.к. в ОС может быть встроен кейлогер, троян или другая бяка. Если смотреть более реально, то как уже сказали выше зашифрованного профиля и стойкого пароля будет вполне достаточно.
    Ответ написан
    2 комментария
  • Как декомпилировать программу на .NET?

    @AlexP11223
    Неужели проще задать вопрос на тостере, чем написать в гугле "decompile .net"?
    Ответ написан
    Комментировать
  • Постоянное увеличение стоимости на ключевые слова — Google Adwords/Yandex.Direct

    reaferon
    @reaferon
    Все логично: ваши конкуренты тоже мониторят ставки. Как только вы попадаете в ГП, кто-то из конкурентов из них вылетает. И, соответственно, повышает ставку. И, уверен, также переживают по поводу растущей стоимости перехода.
    Ответ написан
    Комментировать
  • Как организовать разрешение конфликтов?

    @gro
    Да как везде в ЦВС.
    Если на сервере файл изменён — залить свой изменённый нельзя. Нужно скачать с сервера, смержить (автоматически или если не вышло, вручную) и залить получившееся. Если за это время файл опять изменился, повторить итерацию.
    Ответ написан
    Комментировать
  • Разрешение дополнительного монитора?

    В зависимости от задач.
    У меня совсем разные мониторы. На одном браузер и основная работа с пк, на втором — общалки: скайп, icq и т.д.
    Не напрягает совсем.
    Если вы одну картинку\текст\окно хотите растягивать, то тогда не стоит брать.
    Ответ написан
    4 комментария
  • Необходимо выбрать сотую запись для каждого пользователя

    @Samuel_Leonardo
    SELECT user_id,(SELECT ps2.post_id  from post ps2 WHERE ps2.user_id=p.user_id ORDER BY ps2.post_id LIMIT 100,1  ) as post_id FROM (
        SELECT DISTINCT user_id FROM post 
    ) p
    
    Ответ написан
    2 комментария
  • Помогите настроить маршрутизацию

    @mickvav
    Programmer, system and network administrator
    Обычные роутеры обычно делают не только route, но и NAT с фаерволом до кучи.
    Проблема, описываемая вами требует либо отключить на 2-м NAT (что-то типа iptables -t nat -F POSTROUTING плюс еще чего-нибудь, до кучи) либо вообще проще сделать — убить на 2-м dhcp, вставить провод от первого второму в один из LAN и наслаждаться. Если адресов не хватает — расширьте сеть.
    Ответ написан
    2 комментария
  • Как убрать App Launcher в Хроме и вернуть, как было?

    Aldorr
    @Aldorr
    chrome://flags/
    Отключить:
    — расширенный API Живого поиска
    — расширенный API Живого поиска в локальном режиме
    Ответ написан
    1 комментарий
  • Однородный итеративный семплинг в многомерном пространстве?

    @DaylightIsBurning Автор вопроса
    Вроде придумал, для одномерного случая:
    {0/1, 1/1}; {1/2}; {1/4, 3/4}; {1/8, 3/8, 5/8, 7/8}; {1/16,3/16,5/16,7/16,9/16,11/16,13/16,15/16};…
    То есть в числителе последовательно перебираем все нечетные, в знаменателе чем глубже, тем больше степень двойки. Не надо никаких if и хранения «пройденных» значений.
    Ответ написан
    Комментировать
  • Nginx + ngx_pagespeed

    mastini
    @mastini
    Если вы их используете, то нужно добавить.
    Так же можно убрать, те, которые не нужны параметром --without
    а вообще, ./configure --help
    Ответ написан
    Комментировать
  • Один див попадает в другой <div/><div/>

    AxisPod
    @AxisPod
    Потому что в HTML не является одиночным тегом и не может быть таковым. Подобное поведение и для других блочных тегов.
    Ответ написан
    Комментировать
  • Jquery-click/pikaday-plugin/osx или еще какой-то ба?

    @xave
    Объясняю причину:
    pickaday закрывается по onclick в любую часть экрана кроме него самого. Когда вы второй раз кликаете по кнопке, то т.к. она находится за пределами элемента pickaday, то последний сворачивается. Далее у вас в функции срабатывает pickaday.isVisible() = false и метод pickaday.show().
    Ответ написан
    Комментировать
  • Что значит «Порты SFP без общего доступа» в описании коммутатора HP 1910-8G-PoE+?

    karabanov
    @karabanov
    Системный администратор
    Автомат. согласование полу-/полнодуплексного режимов работы каждого порта: повышение пропускной способности каждого из портов в 2 раза

    Ндаа. Похоже, это они так описали факт наличия в этом коммутаторе автосогласования и работы в полно-дуплексном режиме. Маркетологи такие маркетологи.

    Что еще за восходящие соединения?

    Это судя, по всему, они так называют аплинк (линк, который подключен в вышестоящий коммутатор, в узел агрегации, например) :-)
    Довольно часто в коммутаторах порты доступа делают только медными и, максимум, 100 мегабитными (в подавляющем большинстве случаев больше и не надо), и добавляют несколько гигабитных, только оптических или комбо-портов, которые будут использоваться для подключения к узлу агрегации (вот например два комбо-порта и два чисто оптических).

    Вопрос для чего нужен такой порт, а точнее если я в него воткну SFP модель для моего оптоволокна, с другой стороны этого оптоволокна поставлю такой же свитч или другой+медиаконвертер, то удастся ли мне соединить в единую сеть устройства подключенный в этим два свитча?

    Согласен с opium, похоже они так комбо-порт называют (для свича это один порт, но физически это одновременно и SFP порт и обычный порт для меди, что позволяет в зависимости от условий использования, подключать к нему либо оптику либо медь, при подключении сразу и оптки и меди заработает что-то одно). И это все особенности, в остальном это просто порт, так что опасаться за то, что у вас не получится соединить устройства через эти порты я думаю не стоит :-)
    Ответ написан
    Комментировать
  • Едино разовое объявление структуры в проекте

    @Door
    Не «описание» и «описание», а объявление (declaration) и определение (definition).
    Если у Вас есть тип (struct blah) и Вам нужен один экземпляр (instance) (в Вашем случае test_blah) этого типа, к которому нужно иметь доступ с любой точки программы, то Вам нужно один раз определить этот экземпляр (больше, конечно же, не получится, ODR. Определить — написать полное имя типа, указав имя переменной в одной единице трансляции), а перед использованием объявить, предварительно указав, что переменная (экземпляр) является «внешней» (extern) по отношению к текущей единице трансляции (обычно, это отдельный .cpp файл после препроцессора).

    В итоге, у Вас есть, грубо говоря, 2 единици трансляции (blah.c, main.c). Нужно определить переменную в любой из них (в точке, конечно же, когда тип переменной определён, а не объявлён). И, для удобства (чтобы потом просто подключать заголовочный файл, а не каждый раз писать одно и то же) объявить переменную в blah.h, и подключая blah.h в любой, нужный .cpp файл, использовать её. Т.е.:

    1. // blah.h
    2.  
    3. #ifndef BLAH_H
    4. #define BLAH_H
    5.  
    6. // Объявляем и определяем тип (можно только объявить, а определить в другом месте)
    7. struct blah
    8. {
    9.     int value;
    10. };
    11.  
    12. // Объявляем переменную, указав, что она определена в другом месте
    13. // (Поскольку в данной точке мы имеем полное определение типа,
    14. // можно объявить blah_test типа struct blah, а если бы определение
    15. // находилось в другом месте (т.е. имели бы просто struct blah; выше), то пришлось бы
    16. // объявлять указатель на struct blah, т.е. struct blah*)
    17.  
    18. extern struct blah blah_test;
    19.  
    20. #endif
    21.  
    22. // ---------------------------------
    23. // blah.cpp (blah.c)
    24.  
    25.  
    26. #include "blah.h"
    27.  
    28. // Определяем переменную
    29. struct blah blah_test;
    30.  
    31. // ---------------------------------
    32. // main.cpp (main.c)
    33.  
    34. // Подключая заголовочный файл, объявляем переменную,
    35. // которую хотим использовать.
    36. #include "blah.h"
    37.  
    38. int main()
    39. {
    40.     // Используем
    41.     blah_test.value = 0;
    42.  
    43.     return 0;
    44. }
    45.  
    46.  
    Ответ написан
    1 комментарий
  • Настройка сетевых интерфейсов

    KrD
    @KrD
    Это мало относится к настройке сетевых интерфейсов, но куда больше — к серверу HTTP(S), которым Вы пользуетесь. Почитайте документацию к соответствующему ПО.
    Ответ написан
    5 комментариев
  • Firefox: как заставить кэшировать открытые вкладки, чтобы они не обновлялить автоматически при перезапуске браузера?

    Habrahabr в заголовках HTTP-ответа отдает такую строчку:

    Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0

    она запрещает в явном виде кэшировать страницу браузеру.

    Плагинов которые фильтруют именно ответ сервера я не встречал (но можете поискать). Изменить поведение можно отфильтровав эту строку, например с помощью прокси-сервера. Соответствующая настройка 3proxy под Windows, например, будет выглядеть примерно так:
    plugin PCREPlugin.dll pcre_plugin auth iponly pcre_rewrite srvheader allow "Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0" "Cache-Control: max-age=100000" * * habrahabr.ru proxy -i127.0.0.1 -n -p3128
    сохранить как 3proxy.cfg в одном каталоге с 3proxy.exe и PCREPlugin.dll, запустить 3proxy.exe --install для установки как сервис, прописать прокси 127.0.0.1 порт 3128 в настройках FF. Это PoC конфигурация, если заинтересует помогу настроить рабочую.
    Ответ написан
    1 комментарий