• Ресурсы по django?

    aRegius
    @aRegius
    Python Enthusiast
    Здравствуйте.
    Еще ресурсов? Пожалуйста:

    TaskBuster Django Tutorial
    Tango With Django
    Try Django Tutorial
    Django Packages
    Classy Class-Based Views
    Awesome Django
    GoDjango
    Django REST framework
    Django Vanilla Views

    UPD
    Не в моих правилах давать непрошеные советы, поэтому не в качестве истины в последней инстанции, а в качестве мыслей вслух:
    1. Как бы от такого количества материала не образовалась "каша" в голове :)
    2. На сегодняшний день я склоняюсь к такому варианту изучения Django с нуля:
    a) Django. Подробное руководство, Джейкоб-Каплан Мосс и Адриан Головатый. Почему, Зачем и Как от непосредственных создателей фреймворка. Да, немолода, но все так же актуальна.
    б) Руководство Django Girls. После того, как вы осилите пункт а), можете приступать к практике, и ничего проще, быстрей и понятней Django Girls на этом этапе вы не найдете.
    в) Django by Example + Two Scoops of Django. Создавайте что душе угодно + "шлифуйте" свои знания примерами лучших практик.

    В качестве настольной и справочной книги используйте Официальную документацию.
    Ну и не забывайте про сам Python, конечно.
    Ответ написан
    Комментировать
  • Две функции main?

    romy4
    @romy4
    Exception handler
    Lua должен быть собран как библиотека. Соответственно, там не будет main()
    Ответ написан
  • Как реализовать параллельный ввод и вывод текста?

    Olej
    @Olej
    инженер, программист, преподаватель
    Как мне сделать чтобы чужие сообщения выводились cout в консоль одновременно с вводом cin моего сообщения?

    1. Сделать 2 потока.
    2. Используйте побайтный ввод и вывод (циклический polling).

    P.S. Только cin/cout для "чата" ... ? как-то смешно... хороший анекдот, плюсую.
    Ответ написан
    1 комментарий
  • Что нужно знать разработчику многопользовательских онлайн игр?

    @pavelkolodin
    1. API для асинхронной обработки событий от разных сокетов (kqueue, epoll, select)
    2. Структуры данных -- они важнее алгоритмов.
    3. Вопросы пространства-времени) когда сервер получил пакет от клиента, на клиенте часы уже ушли вперёд -- всё что связано с компенсацией этой фигни. Пинг (задержка) "к клиенту" может отличаться от пинга "от клиента".
    4. Изоляция клиентов друг от друга: никто из них не должен получать событий обо всём мире. События на клиент должны падать, только если они произошли вблизи его.
    5. https://habrahabr.ru/post/302394/ -- статья про способы синхронизации. В конце описан самый интересный способ с накоплением истории на клиенте, выкидывании части истории по факту подтверждения её исполнения на сервере.
    Ответ написан
    3 комментария
  • Как записать слово в переменную?

    std::string answ1, answ2, answ3;
    Ответ написан
    Комментировать
  • Как повысить свои навыки программирования на С/С++?

    abyrkov
    @abyrkov
    JavaScripter
    Ну что же... итак.
    1. Узнайте больше о кодстайлах
    Кодстайл(codestyle) - это, в буквальном смысле, стиль кода. Если вы будете писать по кодстайлу, то проблем явно станет меньше. Код станет читабельнее, его станет легче читать и сопровождать. А тот код, что написан с явными нарушениями очевидных правил... это такой же вырвиглаз как пробелы перед знаками препинания и ???.
    2. Научитесь пользоваться дебаггером
    Действительно. Дебаггер это, в буквальном смысле, антибаг. Багом, если вы еще не в курсе, называют именно логические ошибки. Ну, я думаю, освоив этот инструмент вы станете гораздо успешным охотником за покемо... жуками-багами.
    3. Перейдите на IDE
    Многие IDE или продвинутые редакторы имеют кучу плюшек, которые облегчат вам жизнь до того, что создание кода превратиться в чистое наслаждение. Оно того стоит.
    4. Анализируйте ошибки
    Все делают ошибки. Но если мы будем узнавать и запоминать в чем тогда была ошибка выше шанс, что мы ее не сделаем в следующий, и, если мы ее все-таки сделаем, то куда быстрее ее найдем.
    5. Учите и используйте библиотеки
    Люди давно уже поняли, что можно использовать один и тот же код несколько раз, а особо универсальный код - собственно библиотеку - можно использовать во многих проектах. Правильно подобранная библиотека позволит вам намного ускорить разработку типичных вещей.
    6. Сначала думай, потом делай
    Ты, наверно, думаешь, что как только крутым кодерам приходит в голову гениальная идея, они сразу же садятся и пишут код? Нет, они сначала придумывают структуру этой вещи, что они для нее будут использовать, алгоритм... словом, кучу вещей и только убедившись, что все предусмотрели, садятся, и пишут код.
    7. Практика + Google
    И, напоследок, запомни две простых вещи:
    В теории, теория и практика неразделимы. На практике это не так.
    и
    Профессионалы тоже пользуются гуглом. Может, даже чаще, чем новички.

    Удачных проектов тебе!
    Ответ написан
    5 комментариев
  • Как выбрать клаву для кодинга?

    @vilgeforce
    Раздолбай и программист
    Плохому танцору известно что мешает... Я пользуюсь любой полноразмерной клавиатурой, которая под руку попадется: начиная от старых еще AT-шных, которым уже лет 25, наверное... И заканчивая вполне современными.
    Ответ написан
    1 комментарий
  • Что подразумевается под получением ресурса и его инициализации в RAII?

    AtomKrieg
    @AtomKrieg
    Давай я поищу в Google за тебя
    RAII это оборачивание в класс некоторой "сырой" сущности. Сущность может быть любая, но с ней неудобно работать, потому что надо следить за созданием и уничтожением в программе. Например

    class WinAPI32_Window
    {
    HWND hWnd = 0; // <--ресурс
    public:
      WinAPI32_Window()
      {
        //100 строк для регистрации класса окна и создания окна
        hWnd = CreateWindow(/* много параметров */); // <--получаем ресурс
    
        if (!hWnd) throw std::system_error("win creation error"); // кидаем исключение в конструкторе, если окно не создается, то объект не создается тоже 
        ShowWindow(hWnd, nCmdShow);
        UpdateWindow(hWnd);
      }
    
      ~WinAPI32_Window()
      {
        DestroyWindow(hWnd);  // <-- освобождение ресурса
      }
    }
    
    //ну а дальше в программе:
    try {
      auto win = new WinAPI32_Window; //создаем объект = инициализируем и получаем внутри hWnd
    } catch //...
    //работаем
    delete win; //освобождаем ресурс путем удаления объекта
    Ответ написан
    1 комментарий
  • Как перейти с консольных приложений на графические (оконные)?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    Выбор GUI-фреймворка зависит от ОС, под которую хотите писать.
    Лучше всего писать GUI не на C++, а осваивать C# под Winforms/WPF. Создавать на нем GUI гораздо проще, получается гораздо лучше, в нем гораздо больше всего готового, под винду это однозначно лучше, чем Qt (который кроссплатформенный - т.е. работает больше на количество, чем качество) Но полноценный C# есть только под винду. А вот нужны ли вам другие ОС, какие именно - это от задач зависит и от того, какую ОС вы знаете лучше всего и какая под рукой.

    C++ под WinAPI стоит изучать под виндой параллельно C# под Winforms, для знания основ, ведь весь GUI, который есть на винде, в той или иной мере основан на WinAPI.
    Но реально на нем, конечно, не пишут гуев, а используют его в виде вставок в код на том же C#, для тех задач, для которых в .NET нет средств.
    Ответ написан
    1 комментарий
  • Как перейти с консольных приложений на графические (оконные)?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    Создавать GUI с помощью WinAPI - это, конечно, очень полезно с точки зрения своего развития, но... сейчас мало кто этим занимается. Есть Qt, есть GTK, есть <вставьте свое название>, которые заметно упрощают разработку пользовательских интерфейсов. Если вам будет необходимо создавать сложные интерфейсы (вспомните MS Office или Adobe Photoshop) - стоит выбрать что-то из этого и использовать, но в случае с разработкой игр ситуация немного другая: в играх интерфейс такого рода обычно не нужен. Вообще. Там обычно только одно "главное меню" и немножко элементов интерфейса, которые мало похожи на то, что вы видите в среднестатистическом приложении. Поэтому (личное мнение) если вы хотите заниматься разработкой игр, вам стоит изучать то, что в них более востребовано - например SDL. И сразу читать что-то вроде SDL Game Development и писать. Через некоторое время будете делать 2D-игры без проблем (со звуком, спрайтами, клавиатурой/мышью/джойстиком, нормальными уровнями, и.т.д.) и, заодно, поймете принципы создания архитектуры подобного рода проектов. А потом смотреть в сторону каких-либо физических движков или углубляться в графику (OpenGL/DirectX).
    Ответ написан
    1 комментарий
  • Как изучить Python после C++?

    havelock
    @havelock
    docs.python.org/tutorial

    Сам начал с этого. Лично для меня это было то что нужно для освоения языка.

    Dive into Python тоже хорош, но требует некоторого опыта.
    Ответ написан
    Комментировать
  • Порядок инициализации?

    AtomKrieg
    @AtomKrieg
    Давай я поищу в Google за тебя
    en.cppreference.com/w/cpp/language/initializer_list
    struct S {
        int n = 42;
        S() : n(7) {} // will set n to 7, not 42
    };
    Ответ написан
    Комментировать
  • Почему компилятор c++ в netbeans ругается на cout?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Первое - .h это сишные хэдеры, в плюсах просто всякие
    #include <iostream>
    Второе - уверен, что вы не указываете пространство имен. Либо в начале .cpp файла укажите using namespace std, либо пишите
    std::cout;
    std::endl;


    А вообще - давайте код.
    Ответ написан
    Комментировать
  • Как изучить Python после C++?

    aRegius
    @aRegius
    Python Enthusiast
    Nexeon, я тоже хотел бы помочь вам с рекомендацией. Одно но... Я, в силу своей природы, лучше всего воспринимаю материал в виде книг (печать либо pdf). Ни видеокурсы, ни онлайн tutorial (скомпанованные в виде справочной информации, в коем ключе я их и использую) мне не "идут". Поэтому, ни первого, ни второго я посоветовать не могу, ибо не знаю/не пользовался (справочный характер использования официального Python-tutorial не в счет).

    Но по книгам подскажу:

    1. Для быстрого "погружения" - Think Python (2-издание 2016 год)
    2. Для основательного - Learning Python (5-издание 2013 год)

    P.S. В скобках я специально пометил издание/год. На это нужно всегда обращать внимание, поскольку книга может переиздаваться и, логично, выбирать стоит более свежую версию. Первая книга на русский не переведена, вторая - переведено издание 2009 года.
    Конечно, лучше читайте в оригинале. Обе, погуглите, были в открытом доступе.

    P.S. Информация для всех: недавно вышла отличная книга Fluent Python (2015 год). (Nexeon, с нее, думаю, начинать не стоит). Так вот, я-то начал ее читать сразу в оригинале, потом, узнав, что вышел русскоязычный перевод (что большая редкость для такой оперативности), я, любопытства ради, пролистал... Мне настолько нечего сказать по этому поводу, что просто в тысячный раз отмечу уже избитую истину - английский, это наше всё. Кстати, для сравнения, и справедливости ради, Learning Python ("Изучаем Python") 2009 года переведен отлично.
    Ответ написан
    2 комментария
  • Как изучить Python после C++?

    @12ss
    Dive into python
    Learn python the hard way
    Automate the boring stuff
    checkio.org
    Ответ написан
    Комментировать
  • Как изучить Python после C++?

    @Mintormo
    1. Byte of Python
    2. Если хотите подробнее, то ищите Лутца и Саммерфилда.
    3. Документация на официальном сайте.
    Ответ написан
    1 комментарий
  • Чем rvalue-ссылка отличается от lvalue-ссылки?

    Nipheris
    @Nipheris Куратор тега C++
    то в чем профит использования rvalue ссылок в семантике перемещения

    В том, что они позволяют отличить временные объекты, из которых можно утащить кое-что полезное, от постоянных, с которыми так лучше не поступать. Постоянные объекты будут и дальше копироваться конструкторами копирования. А вот для временных будет выбран конструктор перемещения, если таковой определен.

    Использование std::move - это возможность назвать некоторый постоянный с точки зрения языка объект (например, обыкновенную локальную переменную) временным, когда есть уверенность, что его содержимое не нужно далее по коду. Для него все также будет вызван деструктор (т.е. объект, попавший под move-семантику НЕ считается разрушенным после этого), но после процедуры перемещения считается, что объект находится в некотором неопределенном ("пустом"), но валидном состоянии.
    Ответ написан
    1 комментарий
  • Чем rvalue-ссылка отличается от lvalue-ссылки?

    AtomKrieg
    @AtomKrieg
    Давай я поищу в Google за тебя
    Вы можете реализовать класс таким образом. Суть в том что при перемещении вам не надо лишний раз выделять память и копировать данные, а достаточно позаимствовать указатель (объект временный). Для того чтобы компилятор знал какой конструктор использовать нужна rvalue семантика.
    Код очень схематичный.

    class A
    {
    private:
      char* ptr;
      int size;
    public:
      A(char* initial){/*allocate etc*/}
      ~A(){/*deallocate etc*/}
    
    //конструктор копирования
      A(const A& other) { 
        size = other.size;
        ptr = new char[size]; 
        memcpy(ptr, other.ptr, size ); }
    
    //конструктор перемещения
      A(A&& other) {
        size = other.size;
        ptr = other.ptr;
    
        other.size = 0;
        other.ptr = nullptr; }
    Ответ написан
    6 комментариев
  • Чем rvalue-ссылка отличается от lvalue-ссылки?

    zagayevskiy
    @zagayevskiy
    Android developer at Yandex
    Подробное описание: https://habrahabr.ru/post/226229/
    Ответ написан
    Комментировать
  • Как использовать dynamic_cast?

    @MiiNiPaa
    Чтобы безопасно скастовать базовый класс к дочернему.

    Допустим у вас есть указатель Base* foo, который скорее всего указывает на производный класс. И вы хотите скастовать его к производному, чтобы использовать его функции. Но есть шанс, что это не производный класс в таком случае у вас будут проблемы.

    Чтобы избежать проблем можно использовать dynamic_cast(foo). Каст вернёт nullptr в случае, если указатель не указывает на Derived класс.
    Ответ написан
    Комментировать