• Смесь из gulp-jade, jinja2, angularjs Как всё это настроить?

    @rysev-a
    Скажу сразу, я не использую angular. Но думаю что если вы можете использовать jade + angular, то возможно вас заинтересует мой способ:

    Вообще я не думаю, что это дурость. Это очень удобно - использовать gulp для верстки и python (django или flask) для разработки сайта.

    Лично я использую pyjade для flask, а шаблоны jade настраиваю так, чтобы они использовались и при верстке и на flask одинаково. То есть фактически использую одинаковые шаблоны.

    Когда я просто верстаю, то в файле gulpfile.js я добавляю следующее

    gulp.task('jade', function() {
        var siteinfo = require('./siteinfo.json');
        gulp.src(['./assets/template/*.jade', '!./assets/template/_*.jade'])
            .pipe(jade({
                pretty: true,
                data: siteinfo
            }))  // Собираем Jade только в папке ./assets/template/ исключая файлы с _*
            .on('error', console.log) // Если есть ошибки, выводим и продолжаем
        .pipe(gulp.dest('./public/')) // Записываем собранные файлы
        .pipe(livereload(server)); // даем команду на перезагрузку страницы
    });


    и создаю файл siteinfo.json, это как аналог базы данных для верстки, например если у меня есть новости, я добавляю вот такое

    {
        "news" : [
            {
                "img"     : "/img/news/001.jpg",
                "title"   : "QT-ITEMS - новый фреймворк или попытка найти теорию всего",
                "anons" : "Как известно, физики давно пытаются найти Теорию Всего, в рамках которой можно было бы объяснять все ",
                "date"    : "2 мая 2015    17:15"
            },        
            {
                "img"     : "/img/news/002.jpg",
                "title"   : "QT-ITEMS - новый фреймворк или попытка найти теорию всего",
                "anons" : "Как известно, физики давно пытаются найти Теорию Всего, в рамках которой можно было бы объяснять все ",
                "date"    : "2 мая 2015    17:15"
            }
        ]
    }


    а в шаблоне jade вывожу так

    .news__block
      for item in news
        article.news__block__item
          a.news__block__item-img
            img(src="#{item.img}").news__block__item-img-src
          a.news__block__item-title #{item.title}
          .news__block__item-anons #{item.anons}
          .news__block__item-date  #{item.date}


    Абсолютно такой же кусок кода я использую и для flask (или django) используя pyjade.
    Только теперь информацию о новостях я получаю не из файла siteinfo.json, а из базы данных из модели News

    (код для flask)
    @app.route("/blog")
    def news():
        news = News.query.all()
        return render_template('news.jade', news = news)


    В итоге я практически не трачу кучу времени на интеграцию верстки из gulp в flask. Для изображений и прочих статических файлов путь одинаковый, потому что я запускаю flask на nginx+gunicorn и статические файлы отдаю с помощью nginx.

    server {
      listen 80;
      server_name default;
      root /home/alex/air-sites/air-sites/static/public/;
      location / {
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        if (!-f $request_filename) {
          proxy_pass http://127.0.0.1:5000;
          break;
        }
      }
    }


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

    head
      ...
      link(href='/css/screen.css', type="text/css", rel="stylesheet")
      script(src='/js/index.js')


    в общем я предлагаю вам не пытаться сделать из gulp сборщик шаблона jinja, а попробовать использовать jade когда верстаешь и pyjade на рабочем сайте
    Ответ написан
    2 комментария
  • Установка python пакетов mac os?

    @idap
    интересуюсь python, latex, linux, ML, AI
    Посмотрите на which python, which pip, pip --version, и согласуйте это между собой. Возможно, достаточно будет изменить PATH, или как советовали выше, изменить ссылку.
    Иногда еще brew при установке определяет, что что-то пошло не так и говорит как это можно исправить. В brew, кстати, есть команда link, и он сам может заново создать ссылки, которые должны быть.
    Ответ написан
    Комментировать
  • Как изменить путь в который устанавливается node_modules в PyCharm?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Установить переменную среды NODE_PATH
    export NODE_PATH='yourdir'/node_modules
    Подробнее тут
    https://nodejs.org/api/modules.html#modules_loadin...
    stackoverflow.com/questions/18974436/change-node-m...

    Вы можете использовать опцию --prefix
    npm install bower --prefix ./vendor/node_modules
    https://docs.npmjs.com/files/folders
    https://docs.npmjs.com/misc/config#prefix
    stackoverflow.com/questions/14742553/npm-local-ins...

    Чтобы не писать --prefix, используйте .npmrc
    https://docs.npmjs.com/files/npmrc

    Для bower существует аналогичный .bowerrc
    Ответ написан
    3 комментария
  • Музыка для кодинга, под что вы программируете?

    @inapped
    Rainy Mood. Блокирует внешние звуки и не отвлекает как музыка. Плюс не приходится тратить время на то, чтобы выбрать, что послушать.
    Ответ написан
    Комментировать
  • Выбор ОС и настройка рабочего окружения?

    miraage
    @miraage
    Старый прогер
    Ответ написан
    Комментировать
  • Работа с анаграммами, как можно оптимизировать скрипт?

    adugin
    @adugin Куратор тега Python
    Расчёт анаграмм (permutations) здесь не требуется (пп. 2 и 3 - вводят в заблуждение).
    Поэтому скорость выполнения представленного ниже кода не зависит от длины слова.
    На базе в 20.000 слов выполняется мгновенно даже с 'antidisestablishmentarianism':
    from collections import Counter
    from itertools import ifilter
    
    def criteria(dictword):
        return (
            wlen == len(dictword) and
            wset == set(dictword) and
            wcnt == Counter(dictword)
        )
    
    while True:
    
        word = raw_input('\nEnter word: ')
        wlen, wset, wcnt = len(word), set(word), Counter(word)
    
        with open('thesaurus.txt') as f:
            thesaurus = (line.rstrip() for line in f)
            for dictword in ifilter(criteria, thesaurus):
                print dictword
    
        if word in {'exit', 'quit'}:
            break
    Ответ написан
    Комментировать
  • Какие есть технологии для разработки браузерных онлайн-игр?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Как верно сказал @Eugene22, выбирать язык стоит из двух факторов - 1) существующий опыт на каком-то языке и 2) что хочется изучить для будущего. Если с первым пунктом плохо, то остаётся выбрать какой-то язык и начать его изучать.
    Браузерные игры состоят из трёх компонентов:
    1) клиентская часть - тут практически без вариантов - javascript.
    2) серверная часть - тут есть множество вариантов. Из основных два варианта - php или Node.js (это серверный javascript). Оба варианта достойны рассмотрения, у каждого есть свои достоинства и недостатки. Также можно рассмотреть Python и Ruby. Не стоит сбрасывать со счёта Java и .Net языки (тут c# и asp.net). Ну и экзотика - Erlang или Go (всё-таки go я отнёс к экзотике, потому что это развивающийся язык, но активно набирает очки).
    3) База данных - для хранения игровых данных. Здесь тоже есть о чём подумать - взять обычный привычный вдоль и поперёк исследованный MySQL, или подумать о более мощных базах типа Postgres, или взять модный MongoDb и его nosql-братьев.
    Выбирайте, что вам нужно и вперёд. Но самый главный мой совет - не беритесь за что-то "типа Травиана и Гриполиса" в качестве первого проекта. Подобные проекты делаются годами профессиональными опытными программистами. Сделайте что-то гораздо проще - типа танчиков, бомбермена, вертолётиков, гонок - где есть только одна основная игровая механика. За время разработки этого проекта вы получите бесценный опыт, без которого вы даже не сможете оценить сложность тех проектов, о которых вы говорили в вопросе.

    UPD. В своём ответе вы просите добавить аргументов в пользу некоторых серверных языков. Добавлю про них.
    Первым рассмотрим php. Это достаточно простой язык для начала написания скриптов, и можно очень быстро написать что-то уже рабочее. Но это язык, который за внешней простотой прячет большую гибкость и достаточно сложные моменты. Поэтому для профессионального его использования нужны его глубокие знания, иначе получившийся код будет 1) медленным, 2) дырявым (ошибки и уязвимости) и 3) сложным в поддержке (сложно добавлять новые функции). Но начать его использовать очень просто.
    Node.js. Это серверная платформа, имеющая в качестве языка программирования javascript. Он в некоторых задачах намного быстрее, чем php, но в некоторых может быть сравним по скорости. Его преимущество, что используется тот же язык, что и для клиентской части - меньше изучать. Его сложность в том, что для серверного языка он достаточно сложен, писать хороший код сложнее, чем на php. Плюс, его основные парадигмы - прототипное наследование и асинхронный код - достаточно сложны для понимания. Хорошим советом может оказаться учиться писать не обычный javascript, а его разновидность CoffeeScript, но многие не согласятся, тут нет единого мнения.
    Python. Это очень мощный язык, позволяющий писать программы не только для web (собственно, сервер игры), но он используется очень много где. Он имеет очень простой синтаксис (кстати, отличающийся от многих других c-подобных языков), но очень гибкий и быстрый, и обладает богатейшей библиотекой готового кода (в принципе, php и node.js тоже обладают этим преимуществом). Недостатком можно отметить то, что гораздо меньшее количество программистов им владеют, и может быть, будет сложнее получить консультацию по возникшим вопросам (а вопросы будут - причём в любом языке). В общем, Python - отличный выбор для начала изучения серверного программирования.
    Ruby может дать очень быстрый старт и быструю разработку. Но его знают ещё меньше программистов, чем Python. Насчёт скорости выполнения он, вроде, медленнее питона (тут я не уверен, не хочу обманывать - у меня нет опыта на ruby). Его синтаксис достаточно своеобразен. Но если вы его хорошо освоите, то никогда не останетесь без высокооплачиваемой работы.
    Java и C# - очень мощные языки общего назначения, дадут очень сильную платформу для любого приложения, в том числе и сервера. Но они сложные, изучать их и хорошо писать на них гораздо сложнее предыдущих рассмотренных языков.
    Go - новый развивающийся язык, можно рассмотреть его для изучения. Но на нём пока мало готового кода, мало материалов, небольшое сообщество.
    Erlang - функциональный язык с очень необычной архитектурой (с точки зрения всех предыдущих языков), и очень необычный синтаксис. Изучать его сложно, но он даёт потрясающие результаты - в некоторых задачах. Советовать его не буду.
    Ответ написан
    3 комментария