1. Куча / Говнокод #14374

    +126

    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
    cnt_queue_files()->
      Command = "ls "++code:lib_dir(messaging, priv)++" | grep -v ^l | wc -l",
      case catch list_to_integer(string:strip(os:cmd(Command), right, $\n)) of 
        X when is_integer(X) -> X;
        _ -> 0
      end. 
    
    clear_queue_files()->
      Command = "rm "++code:lib_dir(messaging, priv)++"/*",
      os:cmd(Command).
    
    create_empty_queue_file()->
      Command = "touch "++code:lib_dir(messaging, priv)++"/~"++?COLD_HALT_EXCHANGE++".que",
      os:cmd(Command).

    Ну просто похапе какое-то.

    Запостил: kovyl2404, 16 Января 2014

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

    • Недели Эрланга на Говнокоде :)

      Такое говно можно на любом языке сделать.
      Ответить
      • Но ведь использовать стандартные утилиты разве плохо?
        Ответить
        • > Но ведь использовать стандартные утилиты разве плохо?
          Я надеюсь, что это был сарказм? :)

          - Непереносимость без веской причины. В либах эрланга всяко есть вменяемые и кроссплатформенные функции для перечисления файлов в каталоге, создания файлов и их удаления.
          - Поклейка командной строки в виде строки. Ну тут говно в эрланге - почему-то нет нормальной функции, принимающей массив аргументов, и умеющей их правильно экранировать для текущей операционки. Можно и доиграться (гугли замечательные истории про bumblebee и деинсталлятор яндекс-диска).
          - Удар по производительности. Поднимать пару-тройку процессов чтобы посчитать количество файлов в папке, конечно, весело и удобно... И за счет кеша даже не так уж и медленно... Но нахуя зачем?
          Ответить
          • > Но нахуя зачем?
            Потому что могу же! ;-)

            Не понял все же куда гуглить про bumblebee?
            Ответить
            • https://www.google.ru/search?q=bumblebee+rm+usr
              Ответить
            • > Потому что могу же! ;-)
              - Почему кот яйца лижет?
              - Потому что может!
              Ответить
          • > Ну тут говно в эрланге - почему-то нет нормальной функции, принимающей массив аргументов, и умеющей их правильно экранировать для текущей операционки.
            open_port, кажется, умеет
            Ответить
            • А потом с этой прогой же можно общаться как с обычным erlang процессом?
              Ответить
            • Та прям таки нету...
              http://erlang.org/doc/man/filelib.html#fold_files-5
              Ответить
              • Я писал выше, что в эрланге нет функции для запуска процесса хостовой операционки со списком аргументов. Не исполнения команды текущим шеллом, а именно нормального запуска процесса.

                А tirinox указал мне на мою ошибку, и показал функцию, которая принимает именно список аргументов, и сама занимается платформозависимой фигней.

                Причем здесь функция для обхода файлов? :)
                Ответить
                • ХЗ. Я как-то пропустил что-то, я думал, что это был ответ на ето:
                  > В либах эрланга всяко есть вменяемые и кроссплатформенные функции для перечисления файлов в каталоге
                  Ответить
    • мне это напомнило живо мой код из тестов где мне понадобилось в С сконвертировать шелл скрипты: я просто весь шелл код не меняя зафигачил в system() и только между некоторыми system()ами дергал либу.
      Ответить
    • Его болт уже стоял. Мне нравилось, что он у него небольшой. "Пятнадцать", - вчера сказал; спиздил, нет тут пятнадцати сантиметров, ну да мне похую. Побритый, он смотрелся совсем по-другому: белоснежный, обвитый синими венами, с длинной крайней плотью, которая на конце образовывала клювик.
      Ответить

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