<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55
global $wpdb2;
global $failure;
global $file_hist;
///// echo '<H2><b>Старт загрузки</b></H2><br>';
$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
///// echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}
$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
///// echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}
/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
///// echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
///// echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist); ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7]; ////получаем размер файла
$m_mtime_file=$masiv_data_file[9]; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file
///// echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
///// echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
///// echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);
if ($results)
{ foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));
////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
///// echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
///// echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}
////загружаем данные
$table='vin_history'; // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация // (путь от корня web-сервера)
$delim=';'; // Разделитель полей в CSV файле
$enclosed='"'; // Кавычки для содержимого полей
$escaped='\
Хорошее решение в плане освоения академических знаний. Но, для выбранного примера — не оптимальное (вероятно, поиск оптимального решения не ставился в задачу)
К счастью, для подготовленного пользователя, на сайтеhttp://edu.1c.ru/ очень легко получить ответы, без взлома БД и прочих противоправных действий.
(1) Да, о таком пути знающие люди мне уже рассказали, но тут вся суть в практическом применении математического метода, который может пригодиться и там, где интересующие зависимости спрятаны более тщательно.
Байес и тер вер конечно был у меня давно. Но разве после броска кубика распределение не останется таким же? Кубик не запоминает своё состояние. И результат следующего броска не зависит от результата пред идущего броска.
С ответами на тест понятно. Мы отбрасываем неверный ответ и вероятность распределяется между оставшимися.
(0) интересная тема спасибо
(6)
В данном случае два события (отдельные броски кубика) независимы, что как раз и определяется равенством условного и безусловного распределения вероятностей. Но вот любой результат броска (один из шести вариантов) и четный результат того же броска связаны. Поэтому если известно, что результат броска будет четным (например, четные грани красные, мы видим только цвет, а число разобрать не можем), то распределение вероятностей можно уточнить.
(8)
Не очень понял.
Бросаем кубик один раз. Получаем чётное число. При повторном броске выпадение чётного или не чётного равновероятно. Или нет?
(8)
Так пока не бросим нам это не известно.
(9) равновероятно
Круто. А я только только начал погружаться в статистику)
(11)Тогда не понимаю как мы после первого броска уточняем вероятность, если события равновероятны?
(10) Я в (8) описал гипотетическую ситуацию, когда кубик бросили ОДИН раз, из-за того, что четные грани кубика красные издалека уже будет видно, что результат четный, а 2, 4 или 6 выпало еще непонятно (пока не видно). Вот в этом случае и нужно использовать условное распределение вероятностей (при условии четности результата).
В случае с тестом известно количество правильных ответов. Например, семь. Их расположение (какие конкретно были правильные) может быть самым разным. Всего столько, сколько комбинаций выбрать семь из четырнадцати (число сочетаний). Четных три комбинации, а там 7 из 14 — это 3432 комбинации. В расчете на них и пересчитывается распределение.
(13) Кубик приведен как пример для объяснение исходного понятия условной вероятности и формулы Байеса. Решаемая задача чуть сложнее, лучше думать прямо над ней.
(14)
Ок. Теперь понятно 🙂 Я не так понял. .
Надо на досуге почитать учебники по тер. веру и статистики, нашёл пару хороших, а то последний раз открывал их лет 15 назад когда учился. Как раз курс по модным нынче ML и DS прохожу.
С возвращением, маэстро!
(1) а можете мне рассказать?.)
Кончайте девочки любить хороших мальчиков, любите девочки летчиков и моряков 😉 Автор рассказывает метод отношения максимального правдоподобия. Подход изначально не академический, а инженерный. Называется относительно-частотный. Есть ещё аксиоматический подход. И там и там по моим остаточным знаниям рассчитывается
отношение апостериорной плотности вероятности к априорной. В качестве расширения задачи можно предложить задаться вопросом, а что если номер правильного ответа будет случайным образом изменяться, но например не по гауссовскому закону, а будет задана телеметрическая модель. И так вы плавно перейдете к Винеру и далее к Калмановской фильтрации и теории оптимального управления, и вперёд, создавать алгоритмы для «кинжалов» )))
(19) Не уверен, что формат форума позволяет открыто публиковать ответ на ваш вопрос.