Задать вопрос
  • Какой язык программирования\игровой движок выбрать для реализации моей идеи?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Нулевое. На эту тему есть moodle. Это первое о чем вас спросят на любом конкурсе и первое от чего вам придется отбиваться (и вы не отобьетесь, потому что по сути, вы собираетесь сколхозить мудл, только с тридегуем и блекджеком (причем в вашем случае, буквально) - первое на обучение не влияет никак, второе влияет скорее отрицательно, потому что идет вразрез с психологией педагогического процесса)

    возможно ли на андройд

    Невозможно. Можно попытаться на андроиде, и то не факт.

    В этом приложении главным является контент, а не движок. Движок тут сугубо вторичен - он будет определять, насколько жирное железо нужно пользователю.

    Идея в том, чтобы студенты и преподаватели входили через телефон (с Интернетом) на базе андроид в приложение


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

    У преподавателя должен быть доступ к загрузке\созданию теста\опроса


    Вы хотите, чтобы препод делал этот контент на телефоне? Садитесь, два.

    + стеснительные люди-интроверты-компьютерные черви могли активно участвовать в процессе обучения, а не молчать-бездействовать на той же паре


    Идите и учите психологию/педагогику. От того, что вы заставите интроверта быть 90 минут экстравертом, вы в итоге получите отвали-от-меня-верта (с тревогой и депрессией), а не обученного студента. Интроверт в этом коллективном чатике будет точно также молчать, как и на паре.

    за правильные ответы они получают условную игровую валюту.
    Эту валюту можно будет тратить в игровом казино\на покупку снаряжения или каких-то предметов в игре-развлечении, также находящемся в этом приложении.


    Педагогика нас учит, что оценка студента должна исключительно показывать уровень его подготовки и конвертироваться в диплом. А уже диплом в итоге студент потенциально может конвертировать в деньги.

    Оценка сама по себе не должна давать никому никаких преимуществ, а также не должна использоваться в качестве меры административного воздействия на студентов (как в качестве положительного, так и в качестве отрицательного стимула)

    Из хорошего
    Действительно годным элементом геймийикации могли бы стать ачивки. Вроде сданного на круглую сотню из ста баллов теста или N отсутствий прогулов подряд.

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    База данных всегда сама подробно расскажет, почему у неё не получилось выполнить запрос. Надо её только об этом попросить.

    Поэтому сначала учимся правильно соединяться.
    Весь этот детский лепет "не могу соединиться с БД" выкидываем и пишем нормальный код, который сам, без всяких проверок, сообщит нам об ошибках.
    В случае mysqli это
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect($host, $user, $pass, $db_name);
    $link->set_charset("utf8mb4");

    Здесь первая строчка отвечает как раз за информирование об ошибках

    Кроме того надо не забыть про ошибки РНР
    Во-первых, всегда в коде должно быть error_reporting(E_ALL);
    Плюс на домашнем компе ini_set('display_errors',1);, а на боевом - ini_set('display_errors',0);ini_set('log_errors',1);, и смотреть, соответственно, в логах.

    После этого переписываем запрос. Причем так, чтобы данные в БД всегда попадали отдельно от самого запроса. Это непреложное правило, которое надо соблюдать всегда.
    Для этого надо
    • Заменить все переменные в запросе на специальные маркеры, которые называются плейсхолдеры или параметры, а по сути - просто знаки вопроса
    • Подготовить запрос к исполнению с помощью функции prepare(). Эта функция принимает строку запроса и возвращает экземпляр специального класса stmt, с которым в дальнейшем и производятся все манипуляции
    • Привязать переменные к запросу.
    • Выполнить подготовленный ранее запрос с помощью с помощью execute()

    В mysqli это будет так
    $sql = "INSERT INTO `events` (`title`, `discription`, `date`, `img`) VALUES (?,?,?,?)";
    $stmt = $link->prepare($sql);
    $stmt->bind_param("sssss", $title, $discription, $date, $path);
    $stmt->execute();

    bind_param() принимает в качестве параметров все переменные, которые должны попасть в запрос, в том же самом порядке, в котором стоят плейсхолдеры в запросе. Но кроме того, сначала в этой функции должны быть указаны типы для всех переменных, в виде строки, где тип переменной обозначается одной буквой. То есть букв в этой строке должно быть ровно столько, сколько дальше будет переменных. К счастью, можно особо не париться с типами и для всех переменных указывать тип "s".

    И тогда никаких ошибок запроса уже никогда не будет. Не говоря уже о том что при любых других вариантах твой сайт поломает любой пятиклассник

    Но по-хорошему для работы с БД в РНР лучше использовать PDO, Тем более что там колупаться с bind_param не нужно, а можно сразу отправить все данные в execute

    Подключение
    $host = '127.0.0.1';
    $db   = 'test';
    $user = 'root';
    $pass = '';
    $port = "3306";
    $charset = 'utf8mb4';
    $options = [
        \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
        \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
        \PDO::ATTR_EMULATE_PREPARES   => false,
    ];
    $dsn = "mysql:host=$host;dbname=$db;charset=$charset;port=$port";
    $pdo = new \PDO($dsn, $user, $pass, $options);

    Здесь за информирование об ошибках отвечает параметр PDO::ERRMODE_EXCEPTION, а остальные просто для удобства/корректности.

    Выполнение запроса
    $sql = "INSERT INTO `events` (`title`, `discription`, `date`, `img`) VALUES (?,?,?,?)";
    $stmt = $link->prepare($sql);
    $stmt->execute([$title, $discription, $date, $path]);
    Ответ написан
    2 комментария
  • Почасовая оплата работы верстальщика?

    DevMan
    @DevMan
    никакая.
    за вёрстку начинающим сейчас готовы платить (если вообще готовы, такое тоже есть) на уровне уборщиков, приходящих 2-3 раза в неделю.

    вынерните из своего мирка (даже не буду спрашивать как там очутились). верстка в чистом виде - это самое дно.
    она интересна только с другими скилами (с вашей стороны) или как часть другого готового продукта.
    Ответ написан
    Комментировать
  • Поможет ли суррогатный ключ увеличить скорость вставки в таблицу?

    @neol
    Если речь про Innodb, то
    Indexes other than the clustered index are known as secondary indexes. In InnoDB, each record in a secondary index contains the primary key columns for the row, as well as the columns specified for the secondary index. InnoDB uses this primary key value to search for the row in the clustered index.

    If the primary key is long, the secondary indexes use more space, so it is advantageous to have a short primary key.

    https://dev.mysql.com/doc/refman/5.7/en/innodb-ind...

    В вольном переводе каждый из ваших вторичных индексов будет содержать в себе значение из primary key (PK) и чем длиннее PK, тем больше все индексы в таблице.
    Вполне вероятно, что при таких раскладах PK даже из 8 байтового bigint сильно выиграет у 36 байтового char+int (а то и 102, если с дуру сделали ID utf8mb4). Как минимум по занимаемому месту.
    Ответ написан
    Комментировать
  • Как проверить вхождение даты в определённый диапазон?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Перевести дату в стандартный формат YYYY-MM-DD или в unix timestamp, потом обычным сравнением.
    Ответ написан
    Комментировать
  • Какие есть программы для "перемагничивания" жестких дисков?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Ох уже эти сказки. Ох уж эти сказочники

    Раньше чем это произойдет, у диска откажет механическая часть.

    В целом, вопрос вида "есть информация" (откуда? Научная статья, техническая статья, бабули у подъезда, лично наблюдали, как магнитный монополь сваливал гермозоны)

    должен включать в себя ссылку на источники информации. А то я тоже могу рассказать, как в Африке кур доят.
    Ответ написан
    4 комментария
  • Стоит ли идти в NoCode разработку?

    BorLaze
    @BorLaze
    Java developer
    Как бы вайти в айти, но так, чтобы не учить ничего по айти?
    Ответ написан
    Комментировать
  • Стоит ли идти в NoCode разработку?

    xenon
    @xenon
    Too drunk to fsck
    Общее правило: Если технологию можно легко освоить в короткое время, тогда, даже если такая технология будет в самом деле ценной, все равно, в ней будет слишком много специалистов, высокая конкуренция и низкие доходы. (например, Uber. Стать таксистом несложно, зарабатывают таксисты немного.)

    Либо же технология в принципе будет мало востребована (каждый, кто хочет, сам себе может пожарить яичницу и заварить растворимый кофе, специалисты, освоившие эту технологию не слишком востребованы)
    Ответ написан
    1 комментарий
  • Узнают ли пользователи дирректории сайта?

    Adamos
    @Adamos
    Лучше априори предполагать, что любой в интернете знает, что и где лежит у вас на сайте.
    Может, меньше дыр в безопасности будет...
    Ответ написан
    Комментировать
  • Как отправить данные на сервер с Ajax на чистом JavaScript?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Отправку данных делаете так:
    spoiler
    // Ждем когда элементы на странице прогрузятся:
    
    document.addEventListener('DOMContentLoaded', function() {
    
    	// Вешаем на кпопку обработчик клика, чтобы при каждом клике
    	// сразу запускалась функц я dataSend отвечающая за отправку данных:
    	
    	document.querySelector('.button').addEventListener('click', dataSend);
    	
    });
    
    // Функция для отправки данных на сервер:
    
    async function dataSend() {
    
    	// Получаем данные с нужных нам полей в переменные:
    	
    	var loginValue = document.querySelector('.login').value
    	var emailValue = document.querySelector('.email').value
    	var passwordValue = document.querySelector('.password').value
    	var conf_passwordValue = document.querySelector('.conf_password').value
    
    	// Создаем объект с данными:
    
    	var data = {
    		'login': loginValue,
    		'email': emailValue,
    		'password': passwordValue,
    		'conf_password': conf_passwordValue
    	}
    
    	// Конвертируем объект в JSON:
    
    	var json = JSON.stringify(data);
    
    	// Отправялеям полученный JSON на сервер обычным POST-запросом:
    
    	var response = await (await fetch('https://yousite.ru/handler.php', {
    		'method': 'POST',
    		'headers': {
    			'Content-Type': 'application/json; charset=utf-8'
    		},
    		'body': json
    	})).text();
    
    	// Выводим ответ сервера в консоли:
    
    	console.log('Ответ сервера:');
    	console.log(response);
    
    }

    Замените только ссылку на php-обработчик на свой. Далее, принимать данные отправленные, как JSON надо по другому. Пример получения данных отправленных, как JSON:
    spoiler
    <?php
    
    // Включим показ ошибок:
    
    ini_set('error_reporting', E_ALL);
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    
    // Считываем полученный JSON:
    
    $json = file_get_contents('php://input');
    
    // Раскодируем JSON в массив:
    
    $array = json_decode($json, true);
    
    // Выведем массив, чтобы посмотиеть, что в нем:
    
    header('Content-Type: text/plain; charset=UTF-8'); // Указыавем браузеру, что ответ будет обычным текстом
    echo "Из браузера получены следующие данные:\n"; // Выведем текст-предупреждение
    print_r($array); // Выведем все, что находится в массиве
    Ответ написан
    7 комментариев
  • Как сделать курсор-чат в реальном времени?

    uDenX
    @uDenX
    PHP Developer
    Так же как и любой обмен данными. На сервер передаётся информация (например положение курсора), сервер передаёт клиентам, клиент рендерит
    Ответ написан
    Комментировать
  • Как максимально быстро попасть на позицию Junior php разработчика?

    DevMan
    @DevMan
    джун - человек способный решать реальные задачи под присмотром. а не "я только начал, учите меня".

    ходите по всем собеседованиям, цепляйтесь за любую возможность.
    так вы либо найдете работу, либо поймёте чего не хватает в скилах/что надо подкачать.
    Ответ написан
    2 комментария
  • Хочу стать Android программистом. С чего мне начать?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Прочитать учебник по Java для начинающих и попрактиковаться.
    Прочитать учебник по Java среднего уровня и попрактиковаться.
    Прочитать учебник по разработке под Android для начинающих и попрактиковаться.
    Прочитать учебник по разработке под Android среднего уровня и попрактиковаться.
    Ответ написан
  • Хочу стать Android программистом. С чего мне начать?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    Прочитать документацию на kotlinlang и пройти kotlin koans(можно не включая DSL). Прочитать developers.android.com.
    Всё это время писать код. Это основное правило.
    Попробовать устроиться куда-то стажёром или джуном.
    Пытаться поступить во все доступные школы разработки(например). Делать в них тестовые задания, стараясь повышать свой уровень.
    Когда "не знаю как сделать что то - гуглю и делаю", стараться не копипастить, а разобраться, что происходит.
    Ответ написан
    Комментировать
  • Как увеличить % в зависимости от id?

    Stalker_RED
    @Stalker_RED
    foreach ($arBlocks as $IBLOCK_ID) {
      $multiplier = getPriceMultiplierByBlock($IBLOCK_ID);
      $newPrice = $price * $multiplier;
      // сохраняйте
    }
    
    function getPriceMultiplierByBlock($blockId) {
      $multipliers = [
        2 => 1.30,
        8 => 1.30,
        9 => 1.20,
        43 => 1.25,
        44 => 1.20,
        45 => 1.10,
        99 => 1.10,
        // ...
      ];
      return isset($multipliers[$blockId])
        ? $multipliers[$blockId]
        : 1; // если множитель не указан - единица
    }
    Ответ написан
    3 комментария
  • Порекомендуйте замену vim?

    @mureevms
    Посмотрите на mcedit, входит в состав mc.
    Ответ написан
    Комментировать
  • Как сделать редирект в curl запросе?

    DevMan
    @DevMan
    какой нафиг редирект?
    создать новый запрос и отправить данные.
    Ответ написан
    9 комментариев