1. Python / Говнокод #15975

    −103

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    def visit_params(visitor, params, schema=None):
    
        """
            Визитор json'a
        @param visitor: посетитель. функция, принимающая параметры, опционально схему и опционально ключ
        @param params: параметры, передающиеся посетителю
        @param schema: схема, передающаяся посетителю. Должна быть расширена до стандартных типов
        @return: результат применения посетителя к параметрам
        """
        def _visit_params_rec(params, schema=None, key=None):
            if schema:
                _type = schema.get('type')
    
                if _type == 'object':
                    if not params:
                        params = {}
    
                    return {
                        k: _visit_params_rec(params.get(k), v, key=k)
                        for k, v in schema["properties"].iteritems()
                    }
    
                if _type == 'array':
                    if not params:
                        params = []
    
                    return [
                        _visit_params_rec(item, schema["items"], key=key)
                        for item in params
                    ]
    
                return visitor(params, schema=schema, key=key)
    
            # schema == None
            if isinstance(params, dict):
                return {
                    k: _visit_params_rec(v, key=k)
                    for k, v in params.iteritems()
                }
    
            if isinstance(params, list):
                return [
                    _visit_params_rec(item, key=key)
                    for item in params.iteritems()
                ]
    
            return visitor(params, key=key)
    
        if schema:
            return {
                k: _visit_params_rec(params=params.get(k), schema=v, key=k)
                for k, v in schema.iteritems()
            }
    
        if isinstance(params, dict):
            return {
                k: _visit_params_rec(params=v, key=k)
                for k, v in params.iteritems()
            }
    
        raise Exception("Must be object %r" % params)

    в продолжение http://govnokod.ru/15831

    Запостил: orion, 13 Мая 2014

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

    • Обход json'a. Если указана схема json'a, то обход одновременно по json'y и схеме. Для листьев вызывается переданная функция.
      - for k, v in params.iteritems()
      + for k, v in params
      Почему нельзя поправить пост?
      Ответить
      • > Почему нельзя поправить пост?
        Потому что есть кнопка предпросмотра.
        Ответить
        • кстати в предпросмотре не подсвечивается синтаксис(
          Ответить
          • Напиши баг на страйкера, он обязательно починит
            Ответить
          • А еще предпросмотр по-другому показывает посты, например, интерпретирует hmtl сущности вида &
            Ответить
            • надо запилить свой гк с банхаммером и предпросмотром
              Ответить
              • Да уже были попытки...

                ГК на скале от Романа - вроде как канул в лету.
                Говнофорум - тоже полудохлый, 3.5 анонимуса тусуются.

                Дерзай :)
                Ответить
                • Я так понимаю, что пока этот сайт не упал, веб-версия 2.0 без полной миграции всего существующего контента мало кого интересует.
                  Неубиваемый децентрализованный форум ГК с криптографией и "G+-кругами" интереснее и притягательнее, но его ведь хрен напишешь за приемлимое время (пиджипи, репликация, мёржи, обход натов, спамфильтр, бутстрап, тарасосовместимость, etc.). Ты бы взялся за такой проект?
                  Ответить
                  • Идея то интересная... Вот только все p2p сети держатся за счет критической массы юзеров. Если там будет 3.5 анонимуса - сеть тупо сдохнет. Так что продвигать ее, походу, надо не как ГК, а как универсальную децентрализованную социалку...
                    Ответить
                    • А как хостить? Совсем пирингом?
                      Ответить
                      • > А как хостить? Совсем пирингом?
                        Ну да. Например каждый держит у себя те треды, в которых он участвует/участвовал + некий фиксированный объем случайных кусков от других тредов...
                        Ответить
                        • > посоны, гоу на раздачу треда про крым! скорости плз где сидер я иво мамку шатал

                          На самом деле, идея тоже не нова. Про подобную, только "настоящую" социальную сеть я читал в статье, кажется, "почему вы не должны использовать монгодб".
                          Ответить
                      • Я уже несколько раз предлагал тут GNUNet - по всем параметрам подходит. Ей мало кто пользуется (автоматически спамить с помощью существующего софта не получится - софта не существует), можно устраивать приватные каналы, собирать нужно самому, но собирается на большинстве платформ, суперсекретно и суперраспределенно.
                        Ответить
                        • >(автоматически спамить с помощью существующего софта не получится - софта не существует)
                          Безопасность через нахуй не нужность?
                          Ответить
                          • Нет, это разрабатывалось для диссидентов / людей у которых есть серьезные основания опасаться, что за их общением могут по-настоящему следить. Так что если у кого-то и есть софт, эти люди не зинтересованы в спаме.
                            Ответить
                            • То есть, безопасность через непопулярность через неюзабельность? С популярностью и спамилки появятся.
                              Ответить
                              • "Тоесть" подразумевает реитерацию, т.е. повторение уже упомянутого другим человеком утверждения в новой форме (предположительно более понятной повторяющему, чем первоисточнику).
                                Где же она? Где же связь между моим ответом и этим комментарием?
                                Ответить
                                • Например, здесь
                                  >Так что если у кого-то и есть софт, эти люди не зинтересованы в спаме.
                                  3,5 человека
                                  Ответить
                                  • Где? откуда такие данные? Речь идет о людях которые вынуждают диссидентов быть диссидентами. Почему их должно быть мало?
                                    Ответить
                                    • ">Так что если у кого-то и есть софт, эти люди не зинтересованы в спаме." означает непопулярность. Для любой более-менее популярной сети появляются спамилки.
                                      Ответить
                                      • Нет, тебе показалось. Не обозначает. Смысл процитированого: люди, которые могли бы навредить сети не заинтересованы в спаме, а в других видах атак. В данном случае речь про больших и маленьких администраторов локальных и не очень сетей, которые по доброй, или злой воле могли бы сливать информацию о пользователях третьим лицам. Их заинтересованость в рассылке спама пользователям, чью инфу они сливают, нулевая.
                                        Ответить
                                        • Нет, мне не показалось, у меня имхо для этого есть достаточный опыт, а ты зато заумные простыни строчить умеешь :)
                                          Ответить
                                        • > люди, которые могли бы навредить сети не заинтересованы в спаме, а в других видах атак

                                          С другой стороны, не исключено, что в рассылке спама заинтересованы спаммеры.
                                          Ответить
                                          • Хз. вроде взрослые люди, а не понимаете, что в пир-нетворк нельзя послать спам. Как вы это вообще себе представляете? Сколько бы его туда никто не слал, исключительно клиент решает, что скачивать.
                                            На говнокоде проблема спама вызвана не тем, что спам прямо такой непобедимый, а идиотскими настройками пользователя. Если бы пользователь мог хранить свои настройки в которых бы указывал сообщения каких пользователей он не хочет читать, спам был бы исключительно по желанию читающего.
                                            Есть смысл спамить мейл-лист, т.как участники подписываются на все сообщения до того, как их получают. Есть смысл спамить форумы типа ВБулетеня / ПХПББ, т.как там есть много читающих бесправных пользователей, которым можно таким образом впарить что-нибудь. А, например, в Фейсбуке нет смысла спамить: блок пользователя осуществляется одним нажатием кнопки, а регистрация - долгий и муторный процесс.
                                            Из моего опыта с сайтами знакомств: там этот вопрос тоже остро стоит, и обычно решается максимально простым механизмом блока и относительно сложной регистрацией.
                                            Ответить
                                            • > Сколько бы его туда никто не слал, исключительно клиент решает, что скачивать.
                                              Как отличить спам от не-спама?
                                              Ответить
                                              • А как отличить спам от неспама, например, в Скайпе? Или вы тут же бросаетесь скачивать файл, когда неизвестный вам пользователь его посылает?
                                                Ответить
                                                • > А как отличить спам от неспама, например, в Скайпе?
                                                  Ну т.е. фактически юзать "сеть для друзей", и новые знакомства не заводить, т.к. все незнакомые люди тупо затеряются в потоках спама.

                                                  Я и сейчас на ГК могу поправить строчку в юзерскрипте, нажать кнопочку и зарезать всех-кроме-доверенных. Спама больше не будет. Никогда. Но я и не встречу новых интересных людей. И не поучаствую в новых дискуссиях.
                                                  Ответить
                                                  • Ну а как же в Скайпе появляются новые контакты?
                                                    Любая процедура делающая регистрацую достаточно долгим процессом по сравнению с баном решает проблему спама. Если регистрация будет занимать в 1000 раз больше времени, чем бан, спаммер просто запарится от нееффективно проведенного времени.
                                                    Напомнило, как я сдавал макроэкономику... как раз мин.обучения решило поэксперементировать. Они ввели систему пересдач, где нужно было брать билетик (в то время, как решение приняли, стоимость билета была как проездной на автобус, как подошли экзамены - сотня билетов стоила как пирожок в столовой).
                                                    Я на макроэкономику не ходил, экзамен, не сдал с первого раза. Пошел за билетиком, а таких мелких купрюр просто не осталось, мне сразу рулон билетов выдали. Преподаватель не долго сопротивлялся.
                                                    Ответить
                                                    • > Любая процедура делающая регистрацию достаточно долгим процессом по сравнению с баном решает проблему спама.
                                                      Ага, вместе с устранением огромной части аудитории, которая банально не захочет тратить свое время для регистрации на каком-то там сайтике (т.к. эта процедура должна иметь такую форму, что автоматические скрипты ее не пройдут). И среди этой части вполне могут оказаться интересные люди, которые и рады бы поучаствовать, но им некогда регистрироваться на этом илитарном ресурсе.

                                                      Но проблему решает, да. На том же хабре их invite-only система вполне справляется. Вот только тут нужны масштабы хабра, и его уровень раскрутки. А ГК 2.0 и с регистрацией в один клик загнется даже не набрав 3.5 анонимуса.
                                                      Ответить
                                                      • Есть интересное наблюдение сделаное (и часто приводимое в качестве сенсационного примера) эволюционной теории игр.
                                                        Они рассматривали известную игру "голубка и ястреб" и ее эволюционирование в разных популяциях, где эквилибриумы были теми же самыми, но разными в процентном соотношении между собой.
                                                        В большинстве случаев популяция быстро вырождалась в 100% ястребов, но нашли так же и случаи с зацикливанием изменений от "почти все ястребы" до "почти все голубки", и даже нашли соотношение эквилибриумов в котором картина была более-менее стабильной (изменения были локальными: в одном месте большая группа переходила от стретегии "голубки" к "ястреб" и наоборот).

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

                                                          Тот же карантин на ГК он убог по определению: нормальный человек ждет 2 недели пока сможет написать свой первый коммент, а ботоёб через 2 недели получит непрерывный поток ботов нужной ему толщины, хоть по 100 в день.
                                                          Ответить
                                            • >Сколько бы его туда никто не слал, исключительно клиент решает, что скачивать.
                                              Как и на емейле, внезапно.
                                              Ответить
                                              • Внезапно нет. Можно для ИМАПа писать фильтры, но, у типичного пользователя ни знаний ни доступа обычно нет.
                                                Ответить
                                                • Какой доступ нужен для локальных фильтров?
                                                  Ответить
                                                  • А в чем смысл локально фильтровать? Спам уже получен.
                                                    Ответить
                                                    • > А в чем смысл локально фильтровать? Спам уже получен.
                                                      Чтобы человеку не пришлось читать его? Машинное время и трафик нынче дешевые. А вот свое - жалко.
                                                      Ответить
                            • > разрабатывалось для диссидентов / людей у которых есть серьезные основания опасаться, что за их общением могут по-настоящему следить
                              > эти люди не зинтересованы в спаме
                              Зато в спаме (как средстве уничтожения сети) заинтересованы люди, которым хотелось бы за их общением по-настоящему следить ;) И если эта сеть обретет популярность, и там действительно будут тусоваться диссиденты, а единственной защитой от флуда будет "нинужность", то сеть положат через пару месяцев, причем навсегда. Уж у этих людей хватит мозгов и опыта, чтобы взять исходники открытого софта и переделать их.
                              Ответить
                              • Я сейчас не могу найти ту самую бумагу, но он на нее ссылался http://www.isg.rhul.ac.uk/sullivan/papers.html в курсе который читал на курсере, где описывал традиционные техники террористических организаций по обмену данными. Скажем так, спам если на что-то и влияет, так только затрудняет обнаружение таких сетей, а не делает их каким-то образом более уязвимыми, т.как у пользователя по сравнению с теми, кто его пытается обнаружить есть преимущество: он знает как найти нужную информацию в куче спама, а тот, кто ищет - нет.
                                Ответить
                                • >где описывал традиционные техники террористических организаций по обмену данными.
                                  А Вы никогда не думали что спам это и есть зашифрованный широковещательный стеганографичсеский обмен тайными данными?
                                  Ответить
                                  • Нет, не думал.
                                    Ответить
                                  • Алекс - Юстасу: книга как бросить курить за три дня скачать бесплатно без смс на высокой скорости.
                                    И только Штирлиц понял, что на Родине ему присвоено звание Героя Советского Союза.
                                    Ответить
                                    • В копилку: http://web.archive.org/web/20111105082514/fghi.pp.ru/?area://RU.BLOG.MITHGOL?msgid=2:5063/88+461b7dfd

                                      Или так: http://clck.ru/9D42x
                                      Ответить
                  • просто оставлю это здесь
                    http://twister.net.co/
                    Ответить
                • Говорили, что можно запилить гк тупо из жумлы.
                  Ответить
    • ──────────────────────────────────
      ──────────────────────────────────
      ────────────────█─────────────────
      ────────────────█─────────────────
      ───────────────███────────────────
      ████████▄─────██─██─────▄█████████
      ▄▄▄▄▄█████▄───█───█───▄██████████▀
      ▀▀▀▀▀▀▀█████▄───────▄███▀▀▀▀▀▀▀█▄─
      ─▀█████▄█████───────█████████▄──█▄
      ───██▄▄██──███─────████▀▀████▀▀──█
      ───██████─████─────███▄▄███▄██────
      ──▄▄████▄▄████─────██████████▄▄──▄
      █▄───────█████─────██████──────▄▄█
      ▀█████████▀▀────────▀████████████▀
      ──▀████▀──────────────▀███████▀───
      ───────────█────────█─────────────
      ──────────█──────────█────────────
      ─────────█────────────█───────────
      ────────██────────────██──────────
      ──────███─────────────███─────────
      ─────███───────────────███────────
      ─────██▄───────────────▄██────────
      ───███─▀▄████▄───▄████▄▀─██───────
      ───██───██████───██████───██──────
      ──███────▀███▀───▀███▀─────██─────
      ────────────────────────────██────
      ──██─────────────────────────██───
      ─██───────────────────────────█───
      ─██─────██████▄▄─▄▄██████───█─────
      ──██───███████████████████──█─────
      ──██──████▓▓▓▓█████▓▓▓▓████─██────
      ──██──████▓▓▓▓▓▓▓▓▓▓▓▓▓████─██────
      ──██───████▓▓▓▓▓▓▓▓▓▓▓████──██────
      ─██─────█████████████████────██───
      ██────────────────────────────██──
      █──────────────────────────────██─
      ────────────────────────────────██
      ──────────────────────────────────
      ──────────────────────────────────
      ──────────────────────────────────
      ─────▀████████████████████▀───────
      ───────▀████████████████▀─────────
      ──────────────────────────────────
      ──────────────────────────────────
      ──────────────────────────────────
      ──────────────────────────────────
      ──────────────────────────────────
      Ответить

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