• Как работать на odesk если тебе меньше 18?

    можно работать только людям старше 18 лет

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

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Очевидно, что если надо хранить лайк пользователя для комментария, то должна быть таблица `likes` с полями `user_id` и `comment_id`, образующими вместе первичный ключ.
    В этом случае в базу просто не получится занести два лайка одного пользователя на один комментарий.
    Ответ написан
    Комментировать
  • Можно ли настроить роутер как неуправляемый свитч?

    Melkij
    @Melkij
    PostgreSQL DBA
    Выключите DHCP и воткните кабель в LAN-порт, оставив WAN пустым. Будет коммутатор.
    Ответ написан
    7 комментариев
  • Как работать с Django в PyCharm Community Edition?

    mututunus
    @mututunus
    Backend developer (Python, Golang)
    Community Edition на работает с Django.
    Ответ написан
    Комментировать
  • Какие актуальные технологии фронтенда?

    teotlu
    @teotlu
    Навёрстываю упущенное
    Препроцессоры (LESS, SCSS, SASS, Stylus), всякие фреймворки типа Angular и React.js, сборщики типа Grunt или Gulp. Node.js, чтобы это всё замутить в автоматическую сборку. Bower ещё какой-нибудь.
    Нативный JavaScript — это основное и неотъемлемое требование.

    Разумеется, нужно хорошо уметь верстать. Для современных браузеров уже не настолько актуально, но всё-таки стоит использовать спрайты или иконочные шрифты. Я предпочитаю второе.
    Ответ написан
    Комментировать
  • Какие актуальные технологии фронтенда?

    @crazyjs
    Vanilla JS всегда актуален
    Ответ написан
    Комментировать
  • Как в django отдать медиа файл?

    un1t
    @un1t
    Если на дев сервере нужно отдавать media то, нужно добавить в urls.py

    from django.conf.urls.static import static
    from django.conf import settings
    
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)


    Если же ты действительно хочешь отдавать файлы через вьюху, то вот так
    stackoverflow.com/questions/8600843/serving-large-...
    Ответ написан
    Комментировать
  • Как в django отдать медиа файл?

    suguby
    @suguby
    программист, python, django, mysql, git, hg, linux
    ктт
    from django.core.servers.basehttp import FileWrapper
    
    def get_file(request):
        filename = '...'
        content_type = 'application/vnd.ms-excel'
        file_path = os.path.join(store_path, filename)
        response = HttpResponse(FileWrapper(file(file_path)), content_type=content_type)
        response['Content-Disposition'] = 'attachment; filename=%s' % (
            filename.encode('utf-8') if isinstance(filename, unicode) else filename,
        )
        response['Content-Length'] = os.path.getsize(path)
        return response
    Ответ написан
    Комментировать
  • Как в django отдать медиа файл?

    def get_document(request, file_link):
        document = get_object_or_None(Document, link=file_link, users=request.user.id)
        if document:
            return serve(request,
                         path=document.document.name,
                         document_root=settings.USERS_DOCUMENT_ROOT)
        return HttpResponse('Error!')
    Ответ написан
    2 комментария
  • Что должен уметь веб-программист?

    Мне кажется, что веб-программист (как и любой другой) должен иметь в запасе парочку других ЯП.
    Например, PHP'ку неплохо бы уметь писать hello world на C++ / Java / .NET.
    За C++ автоматом потянутся знания о компиляции, системах сборки и т.д.
    За Java потянутся знания о серверах приложений (tomcat, wildfly).
    Эти знания фундаментальные. Написав свой велосипед на плюсах (например веб-сервер для показа баннеров), вы будете лучше понимать PHP и средства оптимизации / архитектуры и т.д.
    Java вас научит ООП, аннотациям и прочему "сахару".

    От этих знаний будет легко перейти и к администрированию Linux'а и к пониманию внутренностей Apache Http (например, работа с неблокирующими сокетами).

    Ну а вообще, если говорить о Apache Http, то у PHP есть функционал, предоставляемый HTTP сервером - это точно нужно знать.
    Ответ написан
    4 комментария
  • Как развернуть django на digitalocean?

    Комментировать
  • Стоит ли переходить с CodeIgniter на современные фреймворки?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    Автору вопроса советую внимательно прочитать все ответы и найти хоть один объективный минус CI (не субъективный) из названных. (в том числе спросить их у вашего советчика, который вам посоветовал уйти с CI)

    - "В Модели тупо пишешь методы работы с базой"? Вы серьезно? И всё? А, простите, вы как хотели? Хотели автоматический биндинг на поля из базы? Сомневаюсь, что найдётся приложение, которое бы не нуждалось в фильтрации / преобразовании полей и правильного разворачивания связей между таблиц без ручного кода. Покажите мне модели в Yii для среднего размера сайта, там костылей на фильтрацию и преобразование полей для базы ещё больше, чем бы вы в CI ручного кода написали.

    Ну и да, я вообще редко встречаю программиста на PHP фреймворке, который бы понимал, как он устроен и пользовался бы всеми плюсами фреймворка именно так, как задумывал автор фреймворка. Комментарии выше это и подтверждают, судя по тому что у них весь код в контроллерах. Руки кривые у них, а не "фреймворк совсем не помогает".

    CI предельно прост, он и есть тот самый "фреймворк", который не додумывает за тебя, а позволяют самому всё реализовать. Отсюда его скорость, легкость в освоении и предельно понятный код.

    Ну и плюсом ко всему - он абсолютно не устарел. Недели две назад релизнулась 3 версия, коммиты каждый день. Или вас так пугает отсутствие неймспейсов и PSR?
    Ответ написан
    2 комментария
  • Книги по архитектуре веб приложений?

    qfox
    @qfox
    Ответы есть у меня
    Вопрос настолько обширный, что врядли кто-то вам сможет посоветовать актуальную литературу, т.к. нужны примеры.

    Большинство хороших архитектурных решений находится в постоянной разработке и люди, которые пишут книги, часто отстают лет на 5 от прогресса. А те, кто не отстает — находятся в творчесском процессе и им некогда писать книги.

    По теме могу посоветовать смотреть в сторону ruby/nodejs/go фреймворков для различных веб-приложений и сервисов, каждый фреймворк затачивается под определенную задачу и, если есть желание эффективно работать в этой сфере, вам так или иначе придется это делать — без чтения чужого кода и участия в разработке этих самых фреймворков сейчас никуда, и это полностью заменяет литературу по теме.

    Как пример, могу посоветовать сравнить www.sinatrarb.com (ruby), expressjs.com (nodejs) и martini.codegangsta.io (golang). Все они используют схему — создаем приложение, у приложения регистриуем обработчики для get/post/других запросов, в обработчиках получаем объекты request/response, и работаем с ними. Это считается базой для любых веб-сервисов, веб-приложений.

    Когда нужны какие-то дополнительные функции — все делается независимо от этих модулей внутри колбеков, которые в них регистрируются и там зоопарк очень большой. Если нужны контроллеры, модели — есть rails, compoundjs, beego. Если нужно сделать REST — обычно, берется синатра + доп. модули, и получается что-то вроде loopback.io

    Но, повторюсь, когда это все пишется у тебя на глазах, а цикл создания книги — год-полтора — то за это время технологии уже уходят далеко вперед и хороших книг с такой глубокой проработкой вопроса будет появлятся все меньше.
    Ответ написан
    5 комментариев
  • Как переписать класс?

    @SlivTime
    Я бы сделал так. Переменную endpoint, конечно, можно не инициализировать, а сразу передавать строку в вызов _call_with_endpoint. Но так нагляднее.

    class Vehicle(API):
        def _call_with_endpoint(self, lang, fields, account_id, endpoint):
            if type(fields) is list:
              fields = self._format_fields(fields)  
            return self._api_call(endpoint=endpoint,
                                  fields=fields,
                                  language=lang,
                                  account_id=account_id)
    
        def vehicle_stats(self, lang='ru', fields='', account_id=''):
            endpoint = '/tanks/stats/'
            return self._call_with_endpoint(lang=lang,
                                            field=fields,
                                            account_id=account_id,
                                            endpoint=endpoint)
            
    
        def vehicle_achievements(self, lang='ru', fields='', account_id=''):
            endpoint = '/tanks/achievements/'
            return self._call_with_endpoint(lang=lang,
                                            field=fields,
                                            account_id=account_id,
                                            endpoint=endpoint)
    Ответ написан
    Комментировать
  • Каким должен быть адрес у админки?

    un1t
    @un1t
    Есть settings.py и admin_settings.py
    Во втором добавлено приложение админки.
    Сайт с админкой запускается на отдельном хосте, доступном только внутри корпоративной сети, только определенной группе.
    Общедоступный сайт соответсвенно запущен без админки.

    Но можно и совсем не заморачиваться, все засит от важности сайта и подходу к безопасности.
    Ответ написан
    2 комментария
  • Как ускорить шаблон Django?

    @kazmiruk
    Как не крутите у Вас буде 1млн итераций, что много. Из более-менее реальных вариантов - вынести этот код из шаблона (генерировать плоский список в контроллере, а затем прокидывать его в шаблон). Т.е. в результате у вас должно быть что-то типа:
    {% for el in l %}
    <span>{{o1.n}}</span>
    {% if el.flag1 %}
    ...
    {% if el.flag2 %}
    ...
    {% endif %}
    {% endif %}
    {% endfor %}

    Хотя шаблоны и компилируются, но в целом выполняются медленнее, чем код. После того, как вы получите метод, генерирующий такой список - кешируйте список (или можно даже закешировать кусок шаблона со списком). Судя по всему это что-то типа хлебных крошек категорий и часто меняться не должен. Так как рендеринг в 3 секунды - ад, то при сбросе кеша этот список надо сразу помещать назад, чтобы не заставлять пользователя ждать. Т.е. должно быть как-то так: сгенерировали новый список, атомарно заменили старый список на новый. Возможно есть еще варианты оптимизации кода (например преобразование списков в словари, исключение повторений в проверках и т.п.)
    Также можно извратиться обертками - не делать полный перебор, а сделать метод, который будет применять бинарный поиск к списку, к примеру. И Вы получите не O(N), а O(log2N). Но опять же тут надо смотреть применимость к Вашему коду.
    Ответ написан
    1 комментарий
  • Как ускорить шаблон Django?

    dizballanze
    @dizballanze
    Software developer at Yandex
    1. Кэшировать
    2. Перейти на jinja2
    Ответ написан
    2 комментария