1. Java / Говнокод #24731

    +4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    final Optional<Customer> customer = Optional.ofNullable(customerId)
        .map(custId -> customerService.getById(custId)
                .map(cust -> Optional.of(cust))
                .orElseThrow(() -> new NoSuchCustomerException(custId)))
        .orElse(Optional.empty());

    Попытка функционального программирования, когда в язык добавили монаду Optional, но не добавили монаду Try.

    Запостил: wissenstein, 07 Сентября 2018

    Комментарии (163) RSS

    • customerService.getById(custId) возвращает Optional<Customer>, а на самом деле нужно что-то, похожее на Try<Customer, NoSuchCustomerException>
      Ответить
      • А зачем лишний orElse? Что-то типа такого нельзя?
        final Customer customer = customerService.getById(custId)
            .map(cust -> cust)
            .orElseThrow(new NoSuchCustomerException(custId));
        Ведь монада Try либо возвращает Customer, либо кидает исключение, никогда не empty?
        Ответить
        • зачем map id?
          Ответить
          • Объясняй как надо, я не совсем понимаю, что тут написано. Только в общих чертах. Сразу на getById вызвать orElseThrow можно?
            Ответить
            • final Customer customer = customerService.getById(customerId)
                  .orElseThrow(new NoSuchCustomerException(customerId));
              map(x → x) должен быть noop
              Ответить
              • > map(x → x) должен быть noop
                Что что значит? Кроме того, что я не знаю Java.


                получается монада try нинужна.

                P.S. Понял, что вернёшь из map, на том и вызовешь .orElseThrow, у Customer его вполне себе не должно быть.
                Ответить
              • >orElseThrow(new NoSuchCustomerException(customerId))

                Честно говоря это какой-то позор.
                Каждый раз порождать ненужное исключение и надеяться что hotstop его выпилит.

                Вот что бывает если зайчатки функцианальщины завезли, а нормальную ленивость ещё не успели.

                И так везде...

                PS> Оно ж не скопмилится. orElseThrow(Supplier s)
                Ответить
        • Нужно, чтобы если customerId == null, то вернуть None, а иначе достать customer из базы данных и вернуть Some(customer), но если в базе данных его нет, то сообщить, что customerId неправильный.
          То есть по-javному в первом случае вернуть Optional.empty(), а во втором Optional.of(customer). Эта опциональ разбирается дальше по другим специальным правилам.
          Ответить
          • Тогда как-то так надо
            final Optional<Customer> customer = Optional.ofNullable(nullableCustomerId)
                .map(customerId -> customerService.getById(customerId)
                                       .orElseThrow(() -> new NoSuchCustomerException(customerId)));
            Вот эти операции ничего полезного не делают:
            .map(cust -> Optional.of(cust)) // если не пустой, заверни в ещё одну коробку. WUT?
            .orElse(Optional.empty()) // Если коробка пустая, замени её другой пустой пустой коробкой. Зачем? Чтобы типы сошлись после добавления предыдущей лишней коробки?
            Ответить
            • Дальше нужна коробка с возможным customer-ом. Если коробка пуста, просто продаём услугу анонимусу, если не пуста, смотрим, действует ли для него специальная цена, подать ли дополнительно чай на подносе и так далее, и учитываем продажу в списке customer-а.
              Ответить
            • Разобрался я наконец, как ту коробку получить: http://govnokod.ru/24731#comment428846
              Ответить
              • И это именно то, что ты написал. А я невнимательно читал первые строки в твоём комментарии, гг.
                Прошу прощения. :)
                Ответить
              • Это в точности то, что я тебе 5 часов назад написал, только переменные по-другому называются и отступы по-другому расставлены.
                Ответить
                • Эгзактли! (плюсик на том комментарии — это от меня :) )
                  Ответить
        • Я таки, кажется, разобрался, что там лишнее. Вот это должно работать точно так же, но выглядит значительно лучше:
          final Optional<Customer> customer = Optional.ofNullable(customerId)
                  .map(custId -> customerService
                          .getById(custId)
                          .orElseThrow(() -> new NoSuchCustomerException(custId)))
          Ответить
          • Я смотрю "Java" с введением лямбд превращается в ебучий экмаскрипт 2016. Может они ещё перегрузку операторов введут?
            Ответить
            • Да вообще в функциональщине красиво смотрится в основном только матан.
              Ответить
            • >Я смотрю "Java" с введением лямбд превращается в ебучий экмаскрипт 2016

              Когда я говорил что java-8 код станет нечитабельнее все считали что я троллю.
              Ответить
              • http://web.archive.org/web/20161208153348/соснули.рф:80/

                Что из этой таблички уже устарело? А то тут говорят, что жабопетухи соснули.
                Ответить
                • >>Где свойства?
                  нету

                  >>Где замыкания?
                  есть, або говёные

                  >>Где лямбды?
                  есть, або говёные

                  >> Где partial-классы?
                  нету

                  >>Где делегаты/события?
                  нету

                  >> Где полноценное ООП, без цирка с примитивными типами?
                  нету

                  >> Где перегрузка операторов?
                  нету

                  >>Где вывод типов?
                  нету

                  >> Где TCO?
                  SO вам в дупу

                  >> async/await?
                  нету


                  зы: сишарпник писал?
                  Ответить
                  • >делегаты/события
                    Чем это отличается от замыканий?

                    >Где полноценное ООП, без цирка с примитивными типами?
                    Што?

                    >Где вывод типов?
                    Нахуй он нужен?

                    >Где TCO
                    Налисп и в /с/, быдло ебучее!

                    >async/await
                    А вот без этого не понятно как гуй писать.
                    Ответить
                    • >>Чем это отличается от замыканий?

                      Малобуквенностью. На самом деле в java-8 можно так:

                      foo(petuh::coco), так что можно сказать что делегаты из C# там есть. Другой вопрос что в C# они были были за 15 лет до.

                      >>Што?
                      Примитивы это не объекты, у них нет методов. Кроме того автобоксинг там хуевый: нельзя вот так взять, и превратить List<Integer> в int[]

                      >>Нахуй он нужен?
                      Чтобы не писать
                      Petuh petuh = new Petuh()
                      String bobik = "bobik";
                      int foo = 22 + 44;

                      А писать
                      val petuh = Petuh()
                      val bobik = "bobik";
                      val foo = 22 + 44;

                      А особенно чтобы не писать

                      List<Pair<String, List<Map<Integer, String>>>> petuh = getPetuh();
                      а писать
                      val petuh = getPetuh();

                      >>Налисп и в /с/, быдло ебучее!
                      https://www.lua.org/pil/6.3.html
                      http://nithinbekal.com/posts/ruby-tco/
                      лол

                      >>А вот без этого не понятно как гуй писать.
                      гуй в жабе это тоже песня, если мы о Swing. Такой 1999й год по сравнению с тем же WPF или StoryBoards/xib
                      Ответить
                      • Еще раз: в чем разница между событиями, делегатами и замыканиями?

                        Кому нахуй реально нужна оптимизация рекурсии?

                        А, этот вывод типов? Я о другом подумал.
                        Ответить
                        • >>Еще раз: в чем разница между событиями, делегатами и замыканиями?
                          Делегат в C# это тип -- указатель на функцию.
                          Инстанс этого типа может быть замыканием, а может быть обычной функцией.

                          Событие в C# это синтаксический сахар для коллекции делегатов с удобным синтаксисом добавления.

                          Замыкание это анонимная функция, захватывающая использованные ею переменные.

                          До java8 в java не было ничего из вышеперечисленного. Теперь там есть замыкания, но делегатов все еще нет, и потому там есть функциональные интерфейсы (буэ).
                          Ответить
                      • Guido van Rossum wrote about why he is against supporting TCO in Python. One major problem he points out is that TCO messes up the stack traces, and therefore makes debugging harder. For this reason, he does not support implementing TCO in Python.

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

                              Когда питонисту говорят про дебаггер он удивляется
                              Когда говорят про профайлер он не верит
                              Ответить
                              • Жава точно так же отлаживается через логи с исключениями.

                                А профайлер - хуита. Вот у меня профайлер выдал что больше всего жрет xpath, но не показывает с какими параметрами.
                                Ответить
                                • >>Жава точно так же отлаживается через логи с исключениями.


                                  Однако у JVM есть стандртый API для debug. Обычно все про это знают, и все IDE это умеют.

                                  >>xpath
                                  по времени?
                                  Ответить
                                  • И для питона IDE умеют, или ты не знал? Правда, хуй пойми как отлаживать встроенный питон.

                                    >по времени?
                                    А почему еще? По котикам?
                                    Ответить
                                    • Умеют, но никто не знает. Все пишут в sublime.

                                      >>котикам
                                      памяти например
                                      Ответить
                                      • Кто пишет, ты? Нет, нормальная IDE для питона только одна и она дико тормозит, но, извини, дебаггер есть везде - pydev, pyscripter, который больше на это сумбимэ похож, чем на нормальную IDE.

                                        Ты знаешь профилировщики которые память профилируют?
                                        Ответить
                                        • >>Ты знаешь профилировщики которые память профилируют?

                                          Разумеется. YourKit для Java например
                                          Ответить
                  • >сишарпник писал

                    Разумеется. О реально полезных вещах вроде апгрейда сишкоблядского свитча приличным паттерн-матчингом и замене instanceof они не могут и мечтать.
                    Ответить
                    • Когда-то считалось что chain of instanseof это антипаттерн (нужен визитор), но жизнь внесла свои коррективы и теперь все текут от недопаттернматчинга по тайпу (сам теку)

                      В кокококотлин можно
                      val petuh = getPetoox();
                      return when (petuh) {
                        is Sema -> petuh.getPryshegovno()
                        is Konardo -> petuh.getTranslateToPhpPlz()
                        else -> petuh.toString()
                      }


                      Особенно с sealed classes это круто, можно делать монадку Result
                      Ответить
              • >>танет нечитабельнее

                Стало
                doAll((petooh) -> petooh.isCoco() ? 42 : 100500);


                а было
                doAll(new ComputableHujutable{
                   public void int getHujet(Petuh petooh) {
                       return petooh.isCoco() ? 42 : 100500;
                   }
                });


                Знаешь что?
                Иди-ка ты в жопу!
                Ответить
                • Это же 3,14дар, чего ты от него ожидал.
                  Ответить
                • Сферические примеры в вакууме, призванные демонстрировать ту или иную фичу языка всегда выглядят красиво. По отдельности.

                  Когда отойдёшь от теоретизирования, приступив к написанию реального кода, а также совместной работы над ним (читай: чтение чужих высеров) поймёшь что в 85% новые функцианальные фичи делают код:

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

                  Все кому были нужны хипстерские фичи, уже много лет как ушли писать на скале/котлине.
                  Ответить
                  • Я использую эти фичи, и они реально делают код лучше.
                    А ты -- бессмысленный пиздабол, который ничего не знает про джаву кроме того что она "плохая" потому что ее делает оракл
                    Ответить
                  • >>тормознутым
                    лолшто?
                    >>менее читабельным
                    лолшто?
                    >>иногда даже больше по размеру
                    лолшто?

                    >>монады
                    >>хипстерские фичи

                    )))))))чувак, ты ведь не имеешь отношения к серьезному программированию, да?
                    Ответить
                    • >ты ведь не имеешь отношения к серьезному программированию, да?

                      Можно уточнить значение термина «серьезное программирование»™?
                      Ответить
                      • Ну это программирование за пределами /с/ и говнокода.
                        Ответить
                  • > хипстерские фичи

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

                      Ну там когда в комманде 44 роли, и человек с ролью "проектировщик интерфейсов абстрактных фабрик" рисует UML диаграммы этих самых фабрик, а потом другой чувак их реализует
                      Ответить
                    • >серьёзные дядьки ворочали лямбдами задолго то того

                      Те дядьки вроде не горели желанием скрещивать лямбды с императивщиной.

                      >убогое ООП

                      Дык, у «серьёзных дядек»ⓒ, ООП тоже было задолго до.
                      Кстати крестоуродца (C with Classes), а за ним и жабу даже ООП назвать нельзя, в хорошем смысле.
                      Ответить
                      • А где хорошее ООП?
                        Ответить
                        • Это известно только wvxvw CLOS, хачкель
                          Ответить
                          • wvxvw говорил, что ООП — это какая-то бесполезная выдумка, потому что в математических теориях типов и множеств ничего подобного нет.
                            Ответить
                            • Именно по этому я за APL

                              life←{↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵}
                              Ответить
                              • Всё лучше этого вашего "J" с диграфами и с непарными скобками.
                                Ответить
                            • >wvxvw говорил, что ООП — это какая-то бесполезная выдумка потому что в математических теориях типов и множеств ничего подобного нет.

                              Это какая-то отсебячья ересь, за которую ты будешь сожжён на императивном костре.
                              Ответить
                            • wvxvw 11.07.2014 14:38
                              Нет, за ООП есть теория, при чем много. ООП развивалось параллельно, и в каком-то смысле эквивалентно с логическими проблемами связаными с описанием знаний, ограниченых миров (frame problem). Существует object calculus, который может воспроизвести все те же вычисления, что и lambda calculus. С этим как раз все нормально. Можно спорить о практичности этого подхода для решения конкретных задач, но с теоретической базой тут все хорошо.

                              Внемли же Его посланиям, и больше не смущай народ лжеучениями.

                              http://govnokod.ru/16298#comment239220

                              Кстати нажористый тред про MVC.
                              Ответить
                              • Погуглил. Я перепутал. Это он MVC критиковал.
                                Ответить
                              • Вот ещё кое-что:

                                http://govnokod.ru/20108#comment330564

                                http://govnokod.ru/17080#comment254018

                                http://govnokod.ru/13360#comment187479

                                http://govnokod.ru/16346#comment247274

                                http://govnokod.ru/18096#comment284658
                                Ответить
                                • >>Нужно переписать все на Руби. Там правильное ООП.


                                  У смалток, руби и Objc ООП правильное
                                  У симулы, C++ , Java и С# ООП не правильное

                                  Что интересно -- ни то, ни другое не нужно
                                  Ответить
                                  • Я ещё помню, как wvxvw хвалил OCaml за хорошие типы.
                                    Ответить
                                    • OCaml правда клёвый: там очень сложно наложать с типами, все выведится, все строго и статически

                                      копулятор ловит кучу детских ошибок
                                      каждый раз когад у меня в джанге всё падает потому что 42 != '42' -- вспоминаю на окамле
                                      Ответить
                                      • То ли дело "PHP": там всё приводится к одному типу, даже когда не нужно, поэтому при сравнении через == даже фактически разные значения выдаются за одинаковые.

                                        В "PHP 5.3" такой парадокс:
                                        '123456789012345678901234567890'=='123456789012345678900000000000'

                                        Да, это строки, которые внезапно оказываются одинаковыми, потому что неявно приводятся к плавающему питуху.

                                        В более новых сохранился парадокс '0e12' == '0e13'. Да, это опять строки.

                                        Именно поэтому я за "PHP". Там почти всё равно друг другу.
                                        Ответить
                                        • Именно поэтому я за "PHP". Там всем на всё всё равно
                                          Ответить
                              • MVC очень расплывчатое понятие, про него глупо спорить
                                Ответить
                                • Я часто путаю "MVC" и "ООП", потому что в "PHP" ничего из этого нет. Именно поэтому я за "PHP".
                                  Ответить
                                  • Часто путаю "MVC" и "GIT" потому что в "PHP" ничего из этого нет.
                                    Ответить
              • >java-8 код станет нечитабельнее
                И действительно, куда уже. Язык для обучения программированию.
                Ответить
          • Впрочем, то же самое написал roman-kashitsyn, а я заметил только щяз: http://govnokod.ru/24731#comment428814
            O:)
            Ответить
            • o   O:)
               o  O:)
                o O:)
                 oO:)
                  o):)
                  @:|
              Ответить
              • Переведите на осциллограф!
                Ответить
                • трудно написать функцию которая бы имела такой график
                  мне кажется нужно матан включать, диффуры всякие
                  Ответить
                  • Борманд же научился пукселы рисавать:

                    https://github.com/bormand/articles/blob/master/fpga/draw_osc/draw_osc.md
                    Ответить
    • Какой багор )))

      Переведи на "PHP"

      Прыщебляди соснули

      Поэтому я за "PHP"

      Что ещё забыл?
      Ответить
      • Это уже должно быть какими-то стикерами или типа того.
        Ответить
      • :)
        Ответить
      • 1. csrf verification error
        Ответить
        • - Лакни мой яйца (шефу можно слать)
          - Нашёл на помойке
          - 1000 строк в день (прости, Дефекейт, но это реально кандидат на роль мема!)
          - То ли дело С++
          - Где здесь С++?
          - Анскилябра заедушная
          - Тарасоформатирование
          - ты файка борманда (это не утверждение сейчас)
          - поясните мысль

          и конечно же
          "ты питух животное"
          Ответить
          • > Нашёл на помойке

            "Богатый наверное" забыл
            Ответить
          • Где здесь C++ было очень давно:
            $formTitles = array(
                        'Я, <b>' . htmlspecialchars($user->getLogin()) . '</b>, находясь в здравом уме и твердой памяти, торжественно заявляю:',
                        'Помни, <b>' . htmlspecialchars($user->getLogin()) . '</b>, за тобой могут следить!',
                        'Семь раз отмерь — один отрежь, <b>' . htmlspecialchars($user->getLogin()) . '</b>!',
                        'Где здесь C++, <b>' . htmlspecialchars($user->getLogin()) . '</b>?!',
                    );
            Ответить
          • Все классические вореции забыл:
            "дзенский мастер Питушня", "психоза", "зожатие", "животное питух", "Лурик, я не число", тысячи их.
            Ответить
            • > "животное питух"
              - не забыл

              > "Лурик, я не число"
              - ржака. А я такого даже и не помню
              Ответить
              • У 1024-- всё записано:
                https://github.com/1024--/voretions/blob/master/src/md/vorec-hist-2014-09-16.md

                Кстати, был говнокод «Мамо, чому я Number?», в котором обсуждали проблемы типизации. Никто не вспомнит ссылку?
                Ответить
                • Кстати, ведь "карманный лев" тоже его авторства
                  Ответить
                  • Карманного льва форсил kegdan. Даже стихи про него писа́л. А кто первоначальный автор, не помню.
                    Ответить
            • В догонку:
              - Царский анролл
              - J
              - , проверь
              - Александреску
              Ответить
              • - %language% не нужен
                Ответить
              • - напитон
                Ответить
              • Рулонная магия.
                Ответить
              • > ", проверь"
                - фубля. Да и не на ГК это говно появилось и форсилось
                Ответить
              • Анал Тьюринг.
                Ответить
              • > J
                У меня даже вешалки дома такой формы.
                Ответить
                • Зачем тебе вешалки? Ты всегда в одном и том же ходишь.
                  Ответить
                  • Achtung! Кашицын следит за мной!
                    Ответить
                  • А гостей как он будет принимать?
                    Ответить
                    • Смотря какие это будут гости. Если анальные - достаточно пошире распахнуть врата своего алтаря, если оральные - открыть доступ к портам ввода-вывода.
                      Но, ИМХО, входить в орал - всё равно, что ходить в гости по утрам.
                      Ответить
                      • Распахни же пошире свои врата, о гостеприимный хозяин!
                        Ответить
                        • Свои врата я распахну лишь для твоего языка, но могу распахнуть твои.

                          Ох, как давно я не был на говнокоде... Всё уж быльём поросло.
                          Ответить
                          • Ты говоришь о растительности в перианальной области? Побрею.
                            Ответить
                          • Я надеюсь что ты уже не пишешь на пхп как 8 лет назад?
                            Ответить
                            • Попробую угадать: он пишет по-другому, а именно вместо array() пишет [].
                              Ответить
                              • и вместо
                                $a['petushok'] =42
                                пишет

                                a = {
                                petushok: 42
                                }
                                Ответить
                                • Я хотел толсто намекнуть на то, что за 8 лет вышло несколько версий "PHP" (добавили немножко сахарку). Но переход на "node.js" тоже вариант.
                                  Ответить
                                  • А ты знаешь что происходит в мире "PHP"?
                                    Может быть ты на нём еще и пописываешь?

                                    Фу, отойди от меня
                                    Ответить
                                    • А ты знаешь, что происходит в мире "ECMAScript"?
                                      Ответить
                                      • Я только через ганд babel, только чистейщий ES 2015

                                        Тоже конечно не повод хвастаться, но все мы люди
                                        Ответить
                • А у меня не только вешалки такой формы.
                  Ответить
                • > У меня даже вешалки дома такой формы.

                  У тебя вроде как посох должен быть такой формы.
                  https://ae01.alicdn.com/kf/HTB1NDyPLXXXXXXZXFXXq6xXFXXXZ/12-cm-Mistrz-Yoda-Star-Wars-Jedi-Rycerz-Figurka-Kolekcja-zabawki-na-bo-e-narodzenie-prezent.jpg_640x640.jpg
                  Ответить
            • Вореции — отдельная тема:
              https://github.com/1024--/voretions
              Ответить
          • Существует ли программа для тарасоформатирования? Ну или хотя бы кто-нибудь пытался написать?
            Ответить
          • >поясните мысль
            Этот вообще древний. Как и джва стека.
            Ответить
      • >Прыщебляди соснули
        > проверь

        Эти 2 сосачерские.


        >Что ещё забыл?
        WCT. Мне не нравился, но было мемом.
        Ответить
        • Чувак, ты реально крэйзи.
          Ответить
          • https://www.google.ru/search?q="чувак%2C+ты+реально+крейзи"+site%3Agovnokod.ru

            ты сплалился
            Ответить
            • Чувак, ты реально ко-ко-ко-ко-крэйзи мониторить такое...
              Ответить
      • LINQ/AssParallel
        Ответить
    • Фотка автора внушает уважение.
      Ответить
      • У меня пикча маленькая и из пикселей вырисовывается образ Турчинского
        Ответить
        • Так ведь Gravatar позволяет увеличить. Меняешь значение параметра size на 2048 и разглядываешь.

          Офтопик. Наткнулся на такую задачку:
          https://github.com/wissenstein/berlin-clock
          И вспомнил про извращение в таком же духе — часы с бинарной индикацией:
          http://www.classifieds24.ru/images/2775/2774093/large_2.jpg
          Красные точки означают часы, каждая жёлтая точка — 5 минут, зелёные точки — единицы минут.
          Ответить
    • Как в этом влучае поможет монада Try?
      Ответить
      • На псевдокоде то, чего я хочу, выглядело бы примерно так:
        final Optional<Try<Customer, NoSuchCustomerException>> customerBox = Optional.ofNullable(customerId)
                .map(custId -> customerService.getById(custId))  // результат: Try.success(customer) или Try.failure(new NoSuchCusromerException(custId))
                .orElse(Optional.empty());
        Ответить
        • и что-то мне подсказывает, что orElse в этом случае не нужен.
          final Optional<Try<Customer, NoSuchCustomerException>> customerBox = Optional.ofNullable(customerId)
                  .map(custId -> customerService.getById(custId))  // результат вызова getById: Try.success(customer) или Try.failure(new NoSuchCusromerException(custId))
          Ответить
          • Кстати, в жабе можно писать
            Optional.ofNullable(customerId).map(customerService::getById)

            > Optional<Try<Customer, NoSuchCustomerException>>

            У такого подхода есть определённые недостатки:
            • Создаётся ложное чувство безопасности, customerService всё ещё можно плюнуть каким-нибудь SqlException-ом в лицо в самый неподходящий момент.
            • Много синтактического мусора и длинные типы.
            • Работать с монадами, завёрнутыми в монады — сомнительное удовольствие, а человеческих трансформеров монад в жабе не сделаешь.
            Ответить
            • >а человеческих трансформеров монад в жабе не сделаешь

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

              Кстати недавно они сломали пожалуй главную фичу явы: обратную совместимость.
              Введя var, и окончательно запрекейтив переменные называющиеся _
              Ответить
              • Пи? Какими судьбами?..
                Ответить
                • Ушёл борманд, появился пи. Совпадение?
                  Ответить
                  • Не думаю.
                    Ответить
                    • Мы братья? В смысле, по разуму? Чешется ли у тебя между булочек?
                      Ответить
                      • Ползи за персонала



                        Уважаеми Господине/Госпожо,

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

                        Това се потвърждава и от проучването на Световната здравна организация (СЗО), което показва, че служител, който получава доплащане за храна, е по-ефективен с 20%, а отсъствията му намаляват с 27%.

                        Изборът на нашите ваучери за храна като форма на социална придобивка е равнозначно не само на продуктивен и мотивиран екип за работодателя, но и финансово облекчение - стойността на изразходваните средства не се облага с данък.

                        Желаете ли да Ви предоставя повече информация относно ваучерите за храна за служители?


                        Мартин Адамов
                        мениджър
                        yourlunch.eu
                        Ответить
                        • Глисты, очевидно.
                          Ответить
                          • Термин "жиголо" я впервые услышал от конардо: он обозвал им одного из оппонентов. Так как он был конём, я подумал, что жиголо - это упоминание мухи-жигалки, атакующей скот. Потом оказалось, что жиголо - это гомосексуалист, предлагающий платные интимные услуги.

                            p.s. как ты попал сюда?
                            Ответить
                            • Нонсенс, я не конь. Я — вдохновение. Я — совершенство. Я — гений.

                              По ссылке из яндекса. Искал гомосексуальные ресурсы — а попал на Говнокод. Но мне здесь нравится.
                              Ответить
                    • Пи пропал. Появился борманд.
                      Ответить
                      • Анимешник слишком хитёр, чтобы просто так слиться.
                        Раньше я думал, что он - дефекате, но нет. У них разные характеры.
                        А вот 3, 14 пишет очень похоже на конардинхо.

                        Кстати. Что за сервис "amazonaws.com"? Ты же вроде по вебу. Не слыхал? Отчего к нему идёт траффик с мозиллы? Вчера патчил рантайм (xul.dll) забив нулями любые упоминания об амазон, но траффик один хуй прёт. вирусов у меня нет.
                        Ответить
                        • Гугли CDN.
                          Ответить
                        • AWS это крупнейший облачный провайдер. Как ты мог о нём не слышать?
                          Ты в лесу живешь чтоли?

                          В деревне староверов?
                          Ответить
                          • Чем обусловлена массовая течка по облачным хранилищам? Не лучше ли всё хранить на своих серверах? Если влажный "Akamai" наебнётся, весь "Instagram" по пизде поедет.
                            Ответить
                            • Конечно лучше. Надо всего лишь построить свои дата-центры по всему миру, арендовать между ними хорошие каналы, закупить оборудование, посадить админов и суппорт 24 часа, и можно юзать
                              Ответить
                              • "Вконтакте" не использует сторонних CDN. Именно поэтому я за "PHP".
                                Ответить
                                • У среднестатистического пользователя обычно чуть меньше денег чем у ВК
                                  Ответить
                                  • На то они и пользователи, чтобы пользоваться, а не строить дата-центры.

                                    Кстати, кто-нибудь пытался посчитать, сколько денег «среднестатистические пользователи» просрали в фермах и прочих играх ВК?
                                    Ответить
                                    • Судя по тому сколько денег было у Дурова я думаю что много просрали
                                      Ответить
                        • Ты хоть знаешь, для чего в "xul.dll" упоминания "amazonaws.com" и прочих доменов?

                          https://dxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat

                          Сам "xul.dll" никаких запросов к «Амазону» и к прочим сервисам не отправляет. Этот список нужен всего лишь для применения политики cookies к поддоменам, а конкретно для борьбы с явлением «cookie monster».

                          Поясняю: обычно кукис, установленные для домена, действительны и для поддоменов. Если установишь кукис для "govnokod.ru", то они будут действительны и на "subsite.govnokod.ru".

                          Если злоумышленник установит кукис для домена "ru", то они будут действительны на всех сайтах зоны "ru", что может сломать их логику. Для противодействия печеньковому монстру «Мозилла» держит список «публичных суффиксов». Например, в этот список внесён домен "ru", что означает: не применять кукис этого домена на поддоменах. С той же целью туда внесли и "amazonaws.com", чтобы кукис, установленные разными сайтами, использующими эту CDN, не перемешивались.

                          Забив "amazonaws.com" нулями, ты сломал защиту от печенькового монстра.
                          Ответить
                          • Вот это я называю анальной педерастией, файликом /hosts 21го века

                            Почему нельзя было использовать SRV записи в DNS?
                            Ответить
                            • Хардкодить БД в бинарник –— это вообще жесть:

                              1. Пользователю для обновления базы нужно обновлять браузер. Простого способа пофиксить какую-нибудь запись не существует.

                              2. Разработчикам нужно мониторить всевозможные общие домены, чтобы оперативно пополнять базу. Единая точка отказа.

                              Что если это хитрый план, чтобы подсадить пользователей на обновления?
                              Ответить
                              • Это не юникс вей какой-то совсем
                                должно быть

                                /etc/tld
                                и копелироваться в
                                /etc/tld.db
                                Ответить
                                • Ага. Но меня вообще не радует переход от модульности к копролитам монолитам.

                                  Файлик https://publicsuffix.org/list/public_suffix_list.dat распух до 12650 строк. Данные в нём могут в любой момент устареть. Его заколебёшься исправлять.

                                  Мне больше нравится твоё предложение: пусть DNS сами хранят политику поддоменов в специальных записях. Придумали же SPF и DKIM, чтобы не городить лишних протоколов.
                                  Ответить
                                • Вот ещё пример антипаттерна:
                                  https://habr.com/company/infopulse/blog/424369/

                                  Кокококого чёрта список глючных видеокарт зашивают в браузер? Почему он не в драйверах? Почему не в библиотеке DirectX/OpenGL/и т. п.?

                                  Кстати, в комментариях незаслуженно обидели Presto. На самом деле browser.js присутствует и в Хромоопере, а всё из-за глючных сайтов, которые пытаются определить фичи по User-Agent (ещё один антипаттерн).
                                  Ответить
                                  • Сплошь и рядом такое.
                                    Про Windows Shims aka Application Compatibility все знают же?
                                    Ответить
                                    • Это про то, как патчат операционку под баги в приложениях, куд-кудах?
                                      Ответить
                                      • ну не саму операционку, там отдельный файл для этого но смысл именно в том

                                        В свежепоставленной винде есть файлик где сказано как вести себя с Need For Speed итд
                                        Ответить
                          • Ну а по теме-то, по теме. Как заблочить эту хуйню?
                            Файрволл неохота ставить, как и антивирь. Они сейчас шпионажничают ...
                            Ответить
                            • Попробуй вот это: https://www.opennet.ru/tips/3077_firefox_privacy.shtml . Я принимаю уже три месяца, привыкания никакого, в любой момент можно соскочить!
                              Ответить
              • В кокококотлине можно https://github.com/arrow-kt
                Ответить

    Добавить комментарий