• Как передать созданную запись на редактирование другому пользователю?

    @Kadabrov
    Есть несколько вариантов
    Первый в админке дать права на редакирование записей и автор, которому дали права может редактировать записи
    Permissions
    второй вариант во вьюхе написать проверку того, что автору разрешено редактировать этот пост
    у модели NoteInstance проверяете responsible если он совпадает с залогиненым пользователем, то возвращаем тру и передаем через контекст в шаблон. В шаблоне проверяем через if и либо показываем ссылку на редактирование, либо нет
    Ответ написан
    1 комментарий
  • Функция the excerpt(); убирает тег ссылки, и возвращает просто текст, как изменить?

    vova87
    @vova87
    Разработка сайтов на wordpress
    Попробуйте вариант из этой статьи
    Ответ написан
    Комментировать
  • Какие выбрать размеры первой страницы Landing Page?

    При вёрстке указывается высота 100% для первого блока, а в фотошопе зависит от разшерения вашего экрана, к примеру если разшерение экрана 1366х768 - то ширина макета должна быть где-то на 22-24 пикселя меньше то есть 1340 - можно в принципе сделать. А высота первого сегмента примерно 640 пикс: 768 - высота панели задач - верхняя чачть браузера(высота заголовка, и строки ввода урла).
    Ответ написан
    Комментировать
  • Какой лучший Git клиент с GUI для Windows?

    @D3Nd3R
    На win использую tortoisegit. Он интегрируется в проводник. Для связки с вижлой использую git source control provider.
    Ответ написан
    1 комментарий
  • Возможно ли на javascript/html5 или python написать хороший аналог игры Stardew Valley? С помощью какого движка/фреймворка?

    FeNUMe
    @FeNUMe
    Возможно на обоих языках, но питон не особо популярен как основной язык для геймдева. Движки легко гуглятся.
    Для питона например pygame, pyglet, ren'py(этот для визуальных новел), Cocos2d(Python). Еще как вариант Panda3D и Godot(используется свой скриптовый язык с синтаксисом питона)

    Для js вариантов очень много, смотрите список тут
    А вот например реализация героев 3 на js(перевод статьи о разработке) или Command and Conquer
    Ответ написан
    1 комментарий
  • Правильно ли я создал sql запрос?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    SELECT `name`
      FROM `users`
      WHERE `id` IN (
        SELECT `user_id`
          FROM `article`
          WHERE `id` IN (
            SELECT `article_id`
              FROM `article_comment_association`
          )
      )
    Ответ написан
    6 комментариев
  • Правильно ли я создал sql запрос?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Нет, запрос сделан неправильно! Он, дополнительно к тому, что требуется, выберет еще и пользователей, которые написали комментарий, даже если их собственные статьи никто не комментировал... не говоря уже о том, что если нет явной необходимости аггрегирования полей в группе, то использование GROUP BY там, где можно обойтись DISTINCT - дорогое удовольствие (почему - объясню дальше, а пока, просто для сравнения, его план и "стоимость"):
    5ab3f036b072d356066942.png
    Чтобы просто получить нужный результат, его, конечно, можно тупо дополнить еще одним JOIN с article_comment_association, но это все еще очень плохо: во-первых, JOIN с таблицей комментариев там просто лишний, во-вторых, GROUP BY - все то же разбазаривание ресурсов:
    5ab3f0802b299318193006.png
    Вот, для сравнения, стоимость DISTINCT vs. GROUP BY:
    5ab3f08c07b85920446589.png
    (Все эти неправильные варианты приводить не буду, чтоб их случайно не скопипейстили в систему управления ядерным реактором!)

    В этом смысле вариант, предложеный Rsa97 , уже лучше, т.к. дает правильный результат.
    SELECT name FROM users
      WHERE id IN (
        SELECT user_id FROM article
          WHERE id IN (
            SELECT article_id FROM article_comment_association
          )
      );

    Однако, использование subquery в таком порядке, действительно, не позволяет использовать distinct:
    5ab3f109468d6235394789.png
    Фишка в том, что subquery, как правило, создают временную таблицу, обычно, в памяти, но если ее мало, то и на диске. Так что, если есть возможность заменить их на JOIN (а она есть почти всегда!), это нужно делать, не стесняясь.

    А вот феншуйная (она же - правильная, легко читаемая, очевидная и эффективная) версия запроса:
    SELECT distinct users.name from users
      INNER JOIN article ON (article.user_id = users.id)
      INNER JOIN article_comment_association ON (article.id = article_comment_association.article_id)

    ... и ее план:
    5ab3f135365b0576447042.png
    Мораль истории: в реляционной базе данных самый прямой путь к нужному результату, как правило, оказывается наиболее эффективным. Как общее правило - начинать нужно с самого большого множества записей, исключая за раз как можно больше ненужного, и давая оптимизатору использовать индексы.
    Ответ написан
    3 комментария
  • Как найти наибольшее число в двумерном массиве?

    Nipheris
    @Nipheris Куратор тега C++
    Подумайте как использовать цикл для перебора элементов массива и что и с чем нужно сравнивать для определения максимального значения.

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

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    переделал твой код:
    #include <iostream>
    #include <string>
    #include <ctime>
    #include <iomanip> // setw(отступ)
    #include <limits>
    
    int main() {
    
      setlocale(0, "");
      srand(time(NULL));
    
      const size_t ROWSIZE = 3;
      const size_t COLSIZE = 3;
    
      int arrMaxValue = std::numeric_limits<int>::min();
      int arr[ROWSIZE][COLSIZE] = {};
    
      // Заполняем массив случайными числами
      for (size_t rowNum = 0; rowNum < ROWSIZE; rowNum++) {
        std::cout << "Строка " << rowNum + 1 << ": ";
        for (size_t colNum = 0; colNum < COLSIZE; colNum++) {
        	int value = 1 + rand() % 9;
        	arr[rowNum][colNum] = value;
        	if (value > arrMaxValue)
        		arrMaxValue = value;
        	
        	std::cout << std::setw(2) << arr[rowNum][colNum];
        }
        std::cout << std::endl;
      }
      
      std::cout << "Max value is " << arrMaxValue << std::endl;
      
      return 0;
    };
    Ответ написан
    2 комментария
  • Как сейчас создают персонажей для игр?

    @GreatRash
    Сперва скульптинг.
    Потом хай-поли модельку дублируют и из дубликата делают лоу-поли модельку. Называется этот процесс - ретопология (retopology).
    Потом из хай-поли модельки запекается карта нормалей.
    Карта нормалей натягивается на лоу-поли модельку.
    Ну а потом всё - раскраска и отдача заказчику.
    Ответ написан
    2 комментария
  • Как отзеркалить текстуру в libgdx?

    @exenza
    Вот такой код у меня отражает вашу текстуру слева направо:
    sb.begin();
    Texture unnamed = new Texture("unnamed.png");
    int width = unnamed.getWidth();
    int height = unnamed.getHeight();
    sb.draw(unnamed, 350, 350, width, height, 0, 0, width, height, true, false);
    sb.end();


    Но я бы предпочел спрайт:
    sb.begin();
    Texture unnamed = new Texture("unnamed.png");
    Sprite sprite = new Sprite(unnamed);
    sprite.flip(true, false);
    sprite.setCenter(700, 600);
    sprite.draw(sb);
    sb.end();
    Ответ написан
    1 комментарий
  • Есть ли аналог themeforest.net в рунете?

    @zRrr
    https://www.templatemonster.com/ru/
    и что тебе мешает поставить впн или заходить через веб-прокси?
    Ответ написан
    4 комментария
  • Как поменять направление пули?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Пуля летит вправо, потому что внутри ShootScript ей задаётся такое направление:
    MoveScript move = shootTransform.gameObject.GetComponent<MoveScript>();
    if (move != null)
    {
        move.direction = this.transform.right;
    }

    Зададите другое - полетит в другую сторону. Нужный вектор можно найти с помощью Input.mousePosition и Camera.ScreenToWorldPoint.
    А вообще говоря, специально для таких случаев юнити создаёт проекты-туториалы, где есть готовые скрипты, которые можно изучать и делать своё, либо использовать как есть.
    Ответ написан
    1 комментарий
  • Что необходимо знать программисту геймплея в видеоиграх?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    tl;dr В порядке убывания релевантности: Любой, Unity (JS/C#), Web (PHP/JS), Other (Python/Lua/C++/...)

    Программист геймплея... Программист геймплея! Геймплея, Карл!

    Что за? Что это за зверь вообще? Не могу знать, не могу понять.

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

    Конечно, можно делать на от@$%, однако это не путь, это так... Хлеб. Возможно. Но мы вообще не об этом сейчас. Тут надо сказать, что разработка игр очень хорошо распределена по ролям. Именно что благодаря своей монструозности становится возможным элементарное делегирование задач. Но и тут возникают большие сложности.

    Есть два типа людей. Одни просто берут и е#$%. Они не думают о потраченном времени, не думают о структурах данных, просто берут. И делают. Классно быть ими, я, к сожалению, не такой. Однако с обратной стороны игры выходят багованными, ужасно медленными (2D платформер официально требующий 2Гб RAM и два ядра, WUT?), но зато проработанный геймплей увлекает и затягивает. А есть люди, которые сначала десять лет думают, а потом пишут одну строчку кода, которая максимально быстрая и эффективная и на ней держится половина всей игры... Однако таких строк надо пара тысяч, а со временем возникает такая лапша зависимостей, которая убивает любое масштабирование. Конечно, надо делать как-то средне.

    Но в тоже время, в таких заголовках как World of Warcraft уже чувствуется не только эпичность и масштабность, но и почти неограниченные ресурсы: всё равно существует пачка багов, которые не закрываются годами. Про них все всё знают, в Интернетах по дцать вариантов обойти оные, но... Они есть!

    К чему я это? К тому, что независимо от инструмента можно сделать игру. Независимо, хоть на голом C# с managed directx (terraria), хоть на жирнющем python (eve), хоть на хардкорных плюсах (doom), в любом случае результат зависит от профессионализма.

    А вам же... Скорее всего хочется в идеи. Но идеи... Они ни#$% не стоят. И уж работая на дядю последнее, что вам придётся - это придумывать геймплей. Причём в небольших компаниях придумывать-то в общем-то нечего, а экономические f2p игры и вовсе прорабатываются отдельными гейм-дизайнерами во всевозможных екселях.

    И единственный выход, вроде бы, делать всё самому (или небольшой кучкой людей), однако раз уж этот вопрос был задан, значит вряд ли у вас что-то получится. Хотя, как знать. Удачи.
    Ответ написан
    Комментировать
  • Почему не сохраняет и не выводит последнее введенное число?

    @Mercury13
    Программист на «си с крестами» и не только
    Код while (cin >> val) подразумевает, что мы ждём конца консоли.
    Если консоль перенаправлена из файла — ну, с этим всё понятно.
    А если нужно сделать конец в настоящей консоли, нажмите Ctrl+Z.

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

    @MarkusD
    все время мелю чепуху :)
    https://habrahabr.ru/post/209144/
    https://habrahabr.ru/post/209524/
    https://habrahabr.ru/post/213559/

    Оригиналы:
    web.archive.org/web/20190328001900/https://gaffero...

    Дополнительные материалы:
    web.archive.org/web/20190328001900/https://gaffero...

    По этому поводу, в целом, советую почитать блог Гленна Фидлера.

    Так же есть удобные библиотеки, которые сами собой отвечают на остальные твои вопросы:
    https://developers.google.com/protocol-buffers/
    https://capnproto.org/
    Ответ написан
    5 комментариев
  • Как учиться новому после рабочего дня?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    1. 9 часов. Это уже ошибка. КЗОТ писали не дурни. 8 часов достаточно для работы, если человек не чаи пьет
    2. Пересмотрите процесс работы. По приходу на работу сначала делать самые важные. Прошу прочесть внимательно: сначала важные, а только потом срочные и другие. Отличие важных от срочных в том, что одни, как правило, делаются разово и про них забываются, а другие хоть и не срочные, но они влияют стратегически.
    3. Уделяйте время на то, чтобы подумать над "светлым будущим", т.е. создать\актуализировать список страгеческих целей и задач
    4. Делайте утром зарядку. Растяжку, отжимания, приседания. Это влияет на энергетику в организме
    5. Делайте перерывы во время работы.
    6. Чаще пейте воду
    7. Займитесь спортом. На своей шкуре опробовал и четко знаю то, что до занятия плаванием делал меньше, чем сейчас
    8. Окружите себя теми, кто куда-то стремится. Это не значит что надо всех других послать в Южную Америку на оз. Нахой. Это значит, что надо чаще общаться с одним типом людей и меньше с другим
    9. Стремитесь работать на результат, а не подсчет "жопочасов". В дальнейшем ставьте работодателю на собеседовании вопрос "Вам нужны жопо-часы или результаты?". Старайтесь выявить жмотов. Если вы вдруг справились не за 5, а за 4 часа, а работодатель жмотится и боится выделить время на самообучение сотрудника, хотя эти же знания будут применены при решении рабочих задач, то уходите от такого работодателя!

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

    После работы лучше тупить. Мозг должен "отдыхать". То есть заниматься структуризацией, обработкой того, что произошло за день.

    Старайтесь избегать рывко-образной работы. Все должно быть стабильно. Пусть даже небольшими кусками работы, но стабильно и бессбойно!
    Ответ написан
    6 комментариев