Куча говна / Говнокод #27464 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
insert(Alias, Tab, Val) ->
    ok.

delete(_Alias, _Tab, _Key) ->
    ok.

add_aliases(_) ->
    ok.

remove_aliases(_) ->
    ok.

check_definition(_Alias, _Tab, _Nodes, _Properties) ->
    ok.

close_table(_Alias, _Tab) ->
    ok.

create_table(_Alias, _Tab, _Properties) ->
    ok.

delete_table(_Alias, _Tab) ->
    ok.

first(_Alias, _Tab) ->
    '$end_of_table'.

fixtable(_Alias, _Tab, _Bool) ->
    ok.

last(_Alias, _Tab) ->
    '$end_of_table'.

index_is_consistent(_Alias, _IxTag, _Bool) ->
    ok.

init_backend() ->
    ok.

info(_Alias, Tab, memory) ->
    0;
info(Alias, Tab, size) ->
    0;
info(_Alias, _Info, _Item) ->
    nobody_here_but_us_chicken.

lookup(_Alias, _Tab, _Key) ->
    [].

is_index_consistent(_Alias, _IxTag) ->
    true.

load_table(_Alias, _Tab, _Reason, _CsList) ->
    ok.

match_delete(_Alias, _Tab, _Pattern) ->
    ok.

next(_Alias, _Tab, _Key) ->
    '$end_of_table'.

prev(_Alias, _Tab, _Key) ->
    '$end_of_table'.

real_suffixes() ->
    [].

repair_continuation(Continuation, _MatchSpec) ->
    Continuation.

select(_Continuation) ->
    '$end_of_table'.

select(_Alias, _Tab, _Pattern) ->
    '$end_of_table'.

select(_Alias, _Tab, _Pattern, _Limit) ->
    '$end_of_table'.


semantics(_Alias, storage) -> ram_copies;
semantics(_Alias, types  ) -> [set, ordered_set, bag];
semantics(_Alias, index_types) -> [];
semantics(_Alias, _) -> undefined.

slot(_Alias, _Tab, _Pos) ->
    '$end_of_table'.

sync_close_table(_Alias, _Tab) ->
    ok.

tmp_suffixes() ->
    [].

If /dev/null is fast in web scale I will use it. Is it web scale? Does /dev/null support sharding?

Запостил: CHayT CHayT, (Updated )

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

  • SEO: неиронично пришлось запилить /dev/null storage backend из классического видео.
    Ответить
    • Нет, это для прода. Чтобы транзакционно генерить некие события, и при этом их не хранить.
      Ответить
          • А когда нужно нанять нового работника, ему говорят, что на этом придётся писать? Или он охуевает после найма?
            Ответить
            • Это вопрос к Снауту, но я думаю, что человек, который идет в телеком примерно понимает специфику.


              А что такого страшного в эрланге?

              Кстати, внезапно

              Many companies are using Erlang in their production systems:

              • Amazon uses Erlang to implement SimpleDB, providing database services as a part of the Amazon Elastic Compute Cloud (EC2).

              • Yahoo! uses it in its social bookmarking service, Delicious, which has more than 5 million users and 150 million bookmarked URLs.

              • Facebook uses Erlang to power the backend of its chat service, handling more than 100 million active users.

              • WhatsApp uses Erlang to run messaging servers, achieving up to 2 million connected users per server.

              • T-Mobile uses Erlang in its SMS and authentication systems.

              • Motorola is using Erlang in call processing products in the public-safety industry.

              • Ericsson uses Erlang in its support nodes, used in GPRS and 3G mobile networks worldwide.
              Ответить
              • > что такого страшного в эрланге

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

                Зато в нём можно биты паттерн-нячить и неплохое concurrency с дешевыми "процессами" и передачей сообщений. В стандартной либе куча готовых кубиков-паттернов для сборки сервака описана. Да и язык очень простой в общем-то.
                Ответить
                • Ну если ты собрался строить надежную распределенную систему, то тебе полюбасу нужны какие-то акторы, которые друг с другом общаются месседжами, ничего друг про друга особо не знают, и переживают смерть легко и непринужденно
                  Ответить
                    • Какая часть моего утверждения показалась тебе нелогичной?
                      Ответить
                        • Ну вот ты делаешь систему, которая должна быть надежной и скейлится горизонтально (потому что она очень большая)

                          Ты вероятно захочешь разделить её на независимые куски, каждый из которых не шарит состояние с другими, а общается с ними только через месседжи (тогда смерть и перезапуск одного куска не приведет к смерти всей системы, не будет single point of failure)

                          Эрланг (насколько я могу судить) именно такой подход и пропагандирует: https://verraes.net/2014/12/erlang-let-it-crash/

                          Он противопостоявляется монолиту, где всё вместе работает в одном адресном пространстве, и шарит общие данные
                          Ответить
                            • Вот если в ObjC каждый класс засандалить в отдельный процесс, и слать между ними месседжи (что уже сделано в ObjC) то будет оно:)
                              Ответить
                            • так милениалы всегда изобретают то, что за тридцать лет до было известно
                              Ответить
                                • > жс наверное попроще выучить, чем Эрланг

                                  Вообще не факт.
                                  Ответить
                                • Ну они обычно так и говорят.

                                  Например:

                                  Зачем нам языки со статической типизацией?
                                  Скриптушню же проще выучить

                                  А потом насирают кривое хуёвое поделие частично статически типизированное, а то и вовсе компилятор
                                  Ответить
                                        • А что смотреть-то. Я и на йаже асинхронщину и DSLи писал в одной небезызвестной музыкальной конторе. Изучив N разных языков разных парадигм, начать писать на (N + 1)м куда проще.
                                          Ответить
                                          • вопрос не в том, проще ли, а в том, зачем

                                            большинству людей удобнее сидеть в рамках одной экосистемы

                                            и даже если переезжать, то удобнее переезжать в готовую экосистему, то есть, например, из жабы в дотнет, чем из жабы в эйфорию

                                            а то, что на любом языке можно писать, как на фортране, не секрет ни разу
                                            Ответить
                                            • > вопрос не в том, проще ли, а в том, зачем

                                              Мне совсем ня интересно пилить CRUD'ы, например. А если держаться "экосистем", то кроме них перспектив особых нет.
                                              Ответить
                                        • Ну вообще у разных питухов разное совершенно отношение к изучению чего-то нового.

                                          Встречаются такие: "я выучил язык $FOO для небольшого пет-проекта"

                                          И такие: "у меня уже три года опыта на C#/ASP.NET, поздно мне другие технологии изучать"
                                          Ответить
                                          • если ты всё пишешь на js, то что странного, что берёшь/пишешь что-то ещё на js? это 99% удобнее, чем сношать js с тем же эрлангом
                                            Ответить
                                                • В смысле вы не пользуетесь фреймворками, китами, и SDK?:)
                                                  Ответить
                                    • если цель - собрать их все (вдруг повезет и язык окажется хорошим), то да
                                      именно по этой причине джавамены плодят A-lang, B-lang, C-lang ... R-lang (keyspace 18/26)
                                      эволюция слепа
                                      Ответить
                              • > RabbitMQ написан на эрланге.

                                Какой багор )))

                                Вот так вот юзаешь кролика и даже не подозреваешь, что в нём таится эрланг.
                                Ответить
                • так, падажжи, ёпта, вот эти преимущества как-то хреново ложатся на sucksass story выше где все его юзают миллиардами для высокотехнологичных ЖПРСов

                  я помню был какой-то багор из-за которого приходилось юзать кусок jscript посреди продакшона иначе гомогенно слепленного на вбскрипе

                  https://www.boyens-medien.de/fileadmin/_processed_/9/d/csm_umkleide_ONW2_2cd6eb85_a1df_4e66_a0e c_159cfb6d0030_c_f932daf81e.jpg
                  Ответить
                • а я а я а я научился функциональному языку без циклов и с иммутабельностью сначала и теперь страдаю, когда нужно как-то формально о памяти рассуждать
                  Ответить
                    • P.S. Раз тут знатоки собрались, давайте посмеёмся вместе над кодом.
                      Ответить
                      • да, где-то год назад статья на похожую тематику была. правда, там программная логика не стоковая, а под ноды (анерис называется). наверное, можно за основу взять
                        Ответить
                        • "** Q: Why not iris/aneris?", а, увидел, но все равно немного не понял причину
                          Ответить
            • > А когда нужно нанять нового работника, ему говорят, что на этом придётся писать? Или он охуевает после найма?

              В деревне Нижняя Кашицынка есть контора эрлангистов, куда часто попадают ничего не подозревающие люди. На моей практике хомо сапиенсы и хомо эмбеддусы въезжают в Erlang месяца за два. Джава мэны, конечно, сливаются.
              Ответить
              • А пыхоэректусов у тебя наверное и статистики-то нет, потому что они живут в параллельном пространстве, и с той конторой физически пересечься не могут
                Ответить
                • Знал одного 1С-ника, который переквалифицировался в разработчика TCP стека )))
                  Ответить
                  • в смысле стал в ядре TCP реализовывать?

                    Это очень необычно, как три белых гриба одновременно в лесу найти
                    Ответить
                    • > в смысле стал в ядре TCP реализовывать?

                      Уровнем повыше, вроде. Броадкомовское SDK вроде интегрировал. Но это всё равно пиздец хардкорная тема была.
                      Ответить
        • Почему бы и нет? Даже на жс прод пишут и ничего...
          Ответить
        • > Реально кто-то для прода на этом пишет?

          С большой вероятностью, говнокод на эрланге за тобой сейчас следит.
          Ответить
  • I am not using Win32 APi. My code is in native c,c++ Can't use GDI libraries ! – TechnoWings Inc- Rajesh
    Ответить
    • Ну пускай сисколы тогда дергает напрямую. Кусок GDI один хрен в драйвере расположен
      Ответить
        • Если ты лезеш в нейтивапи, то ты либо мамкин хакер (и тогда тебя это не пугает) либо писатель дров, а им не следует пытаться рисовать что-то на экране через GDI.

          Пусть срут юзерспейс приложение и общаются через иоктлы
          Ответить
          • Мне почему-то кажется, что под native c/c++ он понимает тупо стандартную либу.
            Ответить
              • > integrate

                Существующий синхронный код и правда сложно напялить на событийно-ориентированную модель...

                Разве что в тред захуйнуть.
                Ответить
                • Это ты про линковку с GDI32.dll, получение контекста и рисование на нем?:)
                  Ответить
                  • Дык нельзя взять и нарисовать... Ну вернее можно, но оно потом испортится или винда подумает, что у тебя прога повисла.

                    Как минимум луп для разгребания событий нужен.
                    Ответить
                    • а, ну да: нужно сделать окно, и на нем рисовать запустив там лупа

                      рисовать на своей соснолечке не нужно, там для другого тред

                      ну или развернуться на весь экран, взять ddraw или direct2d, и срать уже монопольно
                      Ответить
                      • > ddraw

                        Бери вулкан, что мелочиться. Там тоже не надо окна создавать если на монопольный фуллскрин идёшь.
                        Ответить
                        • не совсем корреткное сравнение

                          ddraw это устаревший 2D API, очень простой.

                          Правильнее сравнивать вулкана с Direct3D, наверное..
                          Ответить
                          • Ну в вулкане ты тоже можешь софтом рисовать в битмапе, а потом вывалить её на экран... Шейдеры и алгебру учить не придётся.
                            Ответить
                            • А это не будет как примерно компьютером гвозди забивать?
                              Ответить
                                • Ну может)

                                  Я просто тока с ддроу особо и игрался

                                  Там берешь кусочек видеопамяти, срешь туда картинкой, выбираешь ключевой цвет и операцию, срешь спрайтами, потом всё это переносишь на экран
                                  Ответить
                              • Я вот к сожалению не помню спеку, возможно там вообще можно замапать себе текущий фреймбуфер, без копирований. И рисовать как во времена svga.
                                Ответить
                                • если ты замапишь себе текущий буфер, то у тебя будет тиринг фликеринг и прочий кал же, не? Или ты будешь синхронизироваться с обратным ходом лу частотой обновления?
                                  Ответить
                                  • Ну ты дальше будешь делать флип, а он синхронизнётся как надо и подождёт.

                                    Режима совсем без флипа там вроде и нет, хотя бы 2 буфера надо.
                                    Ответить
                                    • тогда я не понял, что такое "текущий буфер"

                                      я думал ты про тот, с которого прямо на экран изображение выводится

                                      Обычная схема это иметь два буфера, срать в один, потом менять их местами

                                      Это если в карте есть место на два буфера

                                      А если нет, то задний держать в памяти, а потом его битблтить

                                      но я хз у какой карты в 21-м веке памяти нет
                                      Ответить
                                      • > памяти нет

                                        Там её уже почти по 30 гигов на топовых...

                                        Текущий -- это тот, который тебе отдал свопчейн. Тот, который сейчас на монитор передаётся, он конечно не отдаст.
                                        Ответить
                                        • >не отдаст

                                          ну вот, значит тиринг толком не сделать
                                          Ответить
                                          • Тиринг можно сделать в некоторых режимах... Но они опциональные, спека их наличие не гарантирует.

                                            В общем там есть режим, в котором ты флипаешь буфера без ожидания, прям посреди кадра.
                                            Ответить
                              • А он ещё работает, кстати? Или надо с собой дллку таскать?
                                Ответить
                                • ddraw работает: в system32 лежит, а вот SDK вроде бы нужно ставить отдельно (ну как и любое directx SDK, вероятно)

                                  А еще там есть такой лулз

                                  You must use LoadLibrary to explicitly link to Ddraw.dll and then use GetProcAddress to access the DirectDrawCreate function.
                                  Ответить
                                    • Я не знаю, почему так.
                                      Может быть это соль, чтобы ты не юзал старый API
                                      А может как-то связано с шимами...
                                      Ответить

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

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8