• Многопользовательский сервер python

    DeNnEr
    @DeNnEr
    С самого начала ты пошёл в верную сторону — Twisted.
    Если уж ты и хочешь «шустрый, отказоустойчивый сервер», то лучший вариант — писать такое приложение на Twisted, как библиотеку, разработанную для этих целей. Тем более что примеров там хватает(http://twistedmatrix.com/documents/current/core/examples/#auto0)
    Если тебе просто нужно смоделировать такую систему, то тебе нужно сделать нормальную схему работы.
    Я бы тебе посоветовал почитать про TCP, тогда это тебя избавит от проблем синхронизации, т.к. алгоритм будет многим проще(хинт: погугли чем различаются UDP и TCP).
    А вообще, судя по тому, что ты пишешь систему на языке, который не изучал(т.е. вам его не преподавали?), значит что преподаватель просто дал случайную задачу, чтобы тебя занять чем-то интересным. В таком случае я тем более советую изучать Twisted, т.е. больше нового узнаешь, будет опыт и о большем сможешь рассказать.
    Если же вас обучали Python'у, но ты прогулял, то… Ну плохо дело, всё-равно учи Twisted или бегай по форумам, сцеживай решение. И да, если у вас обучали Python'у, будь добр, скажи что за учебное заведение.
    Ответ написан
    2 комментария
  • Создание вектор массивов C++? И как добавлять туда данные?

    TrueBers
    @TrueBers
    Гуглю за еду
    Какие массивы, какие элементы? Что вам скажет ваш код через год-другой, когда вы увидите массив из шести "чего-то"?
    Почему бы не объявить обычную структуру вида
    struct Point { // понятно, что это координаты точки, а не абстрактные буквы в вакууме
      double x, y;
    };

    и дальше для каждой группы создать тоже структуру
    // имена, конечно, надо заменить на что-то, имеющее отношение к вашей задаче
    struct Bundle { // здесь понятно, что это какая-то композиция из трёх точек
      Point p1, p2, p3;
    };

    ну, и вектор этих структур
    std::vector<Bundle> v; // а здесь — вектор из этих композиций из трёх точек
    // добавляем
    v.emplace_back(Bundle{{ 0.0,  0.1},
                          {0.15, 0.05},
                          { 1.0,  0.5}});
    Ответ написан
    Комментировать
  • Что такое asyncio и в чём реальное отличие от многопоточности?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Один человек ставит кастрюлю на плиту, ждёт пока она закипит, закидывает пельмени, ждёт пока сварятся, снимает, ставит вторую, ждёт пока закипит... - последовательное однопоточное выполнение.

    Один человек ставит две кастрюли на плиту, как только одна из них закипела, забрасывает пельмени и т.д. - асинхронное выполнение.

    Два человека ставят две кастрюли... - многопоточное выполнение.

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

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    К элементу массива на который указывает указатель можно обращаться с синтаксисом [], как к массиву, т.е.
    int *array = new int[10];
    array[1] = 10;
    delete[] array;

    или же с синтаксисом разыменовывания указателей, т.е.
    int *array = new int[10];
    *(array + 1) = 10;
    delete[] array;

    вероятно от вас требуется второй вариант. А вообще, читайте лучше книжки, чем по каждому пустяку идти на тостер.
    Ответ написан
    Комментировать
  • Какие существуют книги по Big Data?

    Комментировать
  • Какие существуют книги по Big Data?

    aRegius
    @aRegius
    Python Enthusiast
    Я слежу за книжными новинками конечно на Amazon, где же еще... Все существующие книги, по той или иной тематике (+ отзывы, сортировка по дате/количеству отзывов/средней оценке/, описание и содержание) там есть. Поэтому рекомендую исключительно туда.

    Big Data

    Ну и ТУТ неплохой анализ, возможно пригодится.

    У меня тоже недавно "проснулся" интерес к данной теме, начал с этой книги (в смысле читаю в настоящее время), поскольку:
    1. Хорошие отзывы.
    2. Свежайшее издание (2017 год)
    3. Хороший охват тем.
    4. Исключительно практичная.
    5. Есть в свободном доступе для чтения онлайн - ТУТ.

    Чем смог, как говорится...
    Успехов!
    Ответ написан
    Комментировать
  • Генератор словаря из словаря в Python 3?

    longclaps
    @longclaps
    Возможно, смелее пробуйте:
    a = {'key1': 'word1', 'key2': 'word2', 'key3': 'word3'}
    b = {key.upper(): value[::-1] for key, value in a.items()}

    Output:
    {'KEY1': '1drow', 'KEY3': '3drow', 'KEY2': '2drow'}
    Ответ написан
    1 комментарий
  • Как начать разработку с нейронными сетями на JAVA, какие возможности они открывать?

    Kokosso
    @Kokosso
    Начинающий программист
    Нужно прежде всего хорошо знать математику! Работа с матрицами очень важна. Практическое применение находит во многих областях (об этом у Гугла).
    Ответ написан
    1 комментарий
  • Конструктор по умолчанию?

    @sitev_ru
    sitev.ru - мой блог ...
    t1 - это объект класса, а t2 - это прототип функции https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D...

    #include <iostream>
    using namespace std;
    
    class Test{
    public:
    	Test()  { cout << "ctor\n"; }
    };
    
    int main(int argc, char** argv){
    	Test t1;     // объект№ 1
    	Test t2();  // прототип функции
    	t2(); // вызов функции
    }
    
    // сама фунция
    Test t2() {
    	Test t;
    	return t;
    }
    Ответ написан
    1 комментарий
  • Как реализованы порталы в игре Portal?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Честные порталы делать очень сложно, нужно хорошо понимать физику и весь пайплайн рендера. Есть очень много граничных случаев, каждый из которых нужно отдельно поддерживать: портал внутри портала, пересечение границ внутреннего и внешнего портала, несколько внутренних порталов, повороты плоскости портала, перемещение предметов, тени и освещение, прозрачные материалы и т. п. Есть две основные техники реализации отрисовки порталов: через рендер текстуры и стенсильный буфер.

    Порталы на рендер текстурах делаются проще, но они дороже по производительности, даже на простой геометрии несколько порталов могут оказаться непосильной задачей для компьютера. Основной принцип следующий: когда вы смотрите на портал, на другой стороне портала камера рисует картинку в текстуру, эта текстура натягивается на плоскую геометрию, и со стороны кажется, будто бы через дырку видно другую часть сцены. Примитивную реализацию такой схемы можно собрать руками в редакторе, но дальше начинаются сложности. Если у конечного портала "за спиной" будет геометрия, она попадёт во вьюпорт камеры и будет странно смотреться. Чтобы это предотвратить нужно ближнюю плоскость отсечения у камеры сдвигать в плоскость портала с помощью CalculateObliqueMatrix. Для вычисления положения камеры и пересчёта матрицы есть удобный колбэк OnRenderObject. После корректировки матрицы порталы будут смотреться более-менее корректно, но будут всплывать всевозможные косяки при перемещении через плоскость портала из-за буфера глубины и nearClipPlane основной камеры.

    Стенсильные порталы будут работать сильно быстрее, но для их реализации нужно хорошо шарить в шейдерах. Расписывать их работу подробно не буду, в целом они делаются точно так же, только трюки с рендер текстурами заменяются на трюки с буферами, предлагаю лучше почитать пару полезных статей на тему: раз и два. В контексте юнити всё немного сложнее, чем на чистом OpenGL, потому что нет прямого доступа ко всем буферам и для получения похожего результата придётся немного поизвращаться. Потенциально облегчить задачу может низкоуровневое API, но у меня не получилось добиться хороших результатов без потери качества картинки. Я возлагаю большие надежды на ScriptableRenderLoop, если судить по документации, это как раз то, что нужно.

    Прошу заметить, что всё вышесказанное касается чисто графической части, для простейшего случая, когда мы имеем FPS камеру без анимаций, без дополнительных механик, которая просто ездит по уровню и может заглядывать в порталы. Что уж говорить про миллион потенциальных багов, если вы захотите включить рядом с порталом систему частиц или взять в руки кубик. Посему советую либо купить плагин и довольствоваться тем, что он умеет, либо приготовиться потратить несколько месяцев на разработку своей портальной системы. И в том и другом случае ограничения движка не позволят вам в разумные сроки получить Portal, в лучшем случае это будет Narbacular Drop.
    Ответ написан
    Комментировать
  • С++ как работать с строками?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Наиболее разумный способ - использовать нехитрое регулярное выражение для того, чтобы проверить структуру строки и выделить цифры.

    А для работы со строками в c++ есть std::sring и там есть метод для выделения подстроки.
    Ответ написан
    Комментировать
  • Как присвоить нескольким классам одинаковое значение переменной внутри?

    qlkvg
    @qlkvg
    python backend developer
    Все очень просто
    1. Открываете любой туториал по питону на странице, где рассказывается про ООП в питоне.
    2. Читаете.
    3. Читаете еще раз внимательно.
    3.1. В качестве факультатива читаете PEP8
    4. ?????
    5. PROFIT
    Ответ написан
    1 комментарий
  • Как присвоить нескольким классам одинаковое значение переменной внутри?

    @fireSparrow
    Похоже, вы не очень понимаете, как работают классы.

    Если вы создаёте аттрибут self.color - то это аттрибут экземпляра, а не класса. Вы не сможете обратиться к значению этого аттрибута через класс, это значение будет разное для каждого экземпляра.
    Ответ написан
    Комментировать
  • Как присвоить нескольким классам одинаковое значение переменной внутри?

    @gill-sama
    Попробуйте создать класс предок figure и в него записать общие свойства фигур, такие как цвет, состояние(если необходимо) или любые, которые придумаете, тогда сможете обратившись к переменной прочесть свойство класса предка figure.color
    Ответ написан
    3 комментария
  • Подойдёт ли Python для взломов?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Вам нужно не питон учить, а технологии.

    Если вы изучите паяльник, это не значит что вы сможете спаять например телевизор.

    Так и язык программирования - это просто инструмент, он собственно не важен и подойдет любой. А учить вам нужно в первую очередь не его, а то, что вы собрались взламывать.
    Ответ написан
    Комментировать
  • Python Как в строке перед и после всех знаков (не букв) поставить пробел?

    longclaps
    @longclaps
    import re
    s = 'привет. 123,56    !  78'
    print(re.sub(r'([.,!?])', r' \1 ', s))  # добавляет пробелы
    print(re.sub(r' *([.,!?]) *', r' \1 ', s))  # оставляет ровно по одному пробелу до/после
    Ответ написан
    1 комментарий
  • Как работает этот код?

    @MiiNiPaa
    Может ли n быть больше нуля, если перед этим мы делаем count = 0?
    static unsigned long count = 0;
    Объявляет и инициализирует переменную. Переменная инициализируется только раз за время своей жизни. В случае статической переменной — перед первым запуском функции.
    То есть, начальное значение n — 0, после этого обратно в ноль она больше не сбрасывается.
    зачем здесь mutex
    Подумайте, что случится. если два потока наткнутся на инкремент одновременно юез синхронизации. Особенно при существовании кэша, присутствии оптимизаций, консолидирующих запись в память и тому подобного. На самом деле тут лучше использовать атомик, ну да ладно.
    Ответ написан
    Комментировать
  • Как создавать игру квест(текстовый)?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Вариантов реализации текстовых квестов много, но в конечном итоге всё сводится графу и механике путешествия по нему. Возьмём примитивный вариант, где у вас есть вопрос с двумя вариантами ответа, каждый из которых приводит к своему результату. Вы можете представить этот вопрос как вершину графа, из которой есть два выхода в другие вершины. При таком раскладе количество вершин будет расти экспоненциально, но никто не мешает вам на оба ответа вести в одну вершину и таким образом управлять ветвлением. На такой механике можно построить очень большое количество историй, но, если хочется большего, то можно добавить другую механику.

    Ответы на вопросы могут выставлять специальные флаги, которые проверяются позже по графу. "Убить злодея?" - "Да", выставили флаг, через несколько вершин графа проверили условие и попали в другую сюжетную ветку. Флаги можно комбинировать и получать дополнительные варианты концовок.

    Кроме булевых переменных можно использовать целочисленные и дробные переменные. Например, каждое принятое решение может двигать главного героя по линии добрый-злой, а в определённых точках это значение проверяется на попадание в диапазон.

    Короче говоря, я бы предложил вам начать с абстракции над switch-case, которую можно связывать друг с дружкой, а потом почитал бы блог Emily Short, она специалист в текстовых квестах и делала кучу всевозможных механик учёта решений игрока.

    UPD: Ещё советую попробовать Twine, сейчас это самый популярный движок для текстовых игр.
    Ответ написан
    Комментировать
  • PyQt4 | Как задать имя образа и описания процесса для своей программы?

    qlkvg
    @qlkvg
    python backend developer
    setproctitle. Под линуксом работает, пишут, что под виндой тоже должен. Либо городить костыль через py2exe или другую подобную тулзу.
    Ответ написан
    2 комментария
  • Как разметить бота на сервере?

    @mudatad
    Херока стала бесплатной?
    Про OpenShift знаю - бесплатен до определенных пределов.
    Google AppEngine - бесплатен до определенных пределов.

    Существует 1 млн. способов.
    К сожалению, формулировка вашего вопроса невнятная.
    А объяснять миллион способов - слишком расточительно по отношению ко времени.

    Если бы вы уточнили, что именно вам непонятно в найденных вами инструкция по деплою на Хероку и пр. - можно было бы побеседовать более предметно.

    Можете погуглить "как задеплоить на Хероку, ОпенШифт, GAE)
    Ответ написан
    Комментировать