БлогNot. Блог ПерСа

Помощь дата->рейтинг Поиск Почта RSS канал Статистика nickolay.info Домой

общество образование россия маразм видео firefox flash безопасность сервер php графика random цвет ошибка javascript c++ алгоритм учебное список studio картинка алкоголь ретро железо фото mathcad числа дата сервис время html форматы wav личное кино памятка психология политика шахматы пол excel mysql xml вебдезигн яндекс поиск статистика хостинг программирование афоризмы все теги все комментарии


[1-15] [16-30] [31-45] [46-60] ... [1861-1875] [1876]


Как перейти с MySQL на MySQLi?

Как известно, расширение MySQL, применяемое в большинстве скриптов на PHP, работающих с базой данных, с версии PHP 5.5 устарело, а с версии 7.0 будет удалено.

Легко ли для существующего сайта перейти с MySQL на рекомендуемое MySQLi? Я считаю, что да, ведь формат БД не изменился, а процедурный стиль обращения к новым функциям сохранён, так что работа будет небольшой.

Во-первых, у большинства функций достаточно заменить имя типа mysql_select_db на имя типа mysqli_select_db, во-вторых, кое-где придётся поменять параметры (добавить идентификатор соединения или поменять параметры местами, как у mysqli_query против mysql_query), в-третьих, некоторые функции, не имеющие прямых аналогов в MySQLi, такие как mysql_result, можно "обернуть" в код, написанный при помощи новых рекомендуемых функций, например:

if (!function_exists('mysql_result')) {
 function mysql_result($result, $number, $field=0) {
  mysqli_data_seek($result, $number);
  $row = mysqli_fetch_array($result);
  return $row[$field];
 }
}

Кроме того, если вы не писали вызова mysql_connect перед каждым запросом, а применяли модуль, в котором собраны функции для работы с БД, достаточно будет поменять только этот модуль.

Например, приведённый по последней ссылке модуль db.php для работы с MySQLi изменится только следующим образом: Страница статьидалее...
09.12.2017, 15:06 [111]


Шахматные фигуры PNG размером 80x80 пикселов, для шахматных скриптов

Надеюсь, это завершающая шахматная заметка на ближайшее время :)

Все наименования файлов с фигурами - стандартные для шахматных фреймворков (chessboard.js, chess.js и т.д.) и программ, то есть:

Чёрные:
bB.png   слон
bK.png   король
bN.png   конь
bP.png   пешка
bQ.png   ферзь
bR.png   ладья
Белые:
wB.png   слон
wK.png   король
wN.png   конь
wP.png   пешка
wQ.png   ферзь
wR.png   ладья

Везде формат PNG 32bit с прозрачным фоном и размером 80 на 80 пикселов, некоторые очень старые смотрелки могут такое показать неправильно, но стандартные Paint или браузеры - нормально.

Сейчас в архиве лежат наборы фигур со следующими наименованиями (жирным выделены стандартные наименования):

Каждый набор находится в папке со "своим" именем.

Ниже можно посмотреть на красивые шахматные фигуры вместе с названиями наборов. Страница статьидалее...
08.12.2017, 15:30 [155]


Шахматная ходилка-2: теперь со стандартными библиотеками :)

Не так уж давно, лет 5-7 назад, моя старая добрая шахматная ходилка была вполне себе востребована. Но времена меняются, и пора собрать её версию на основе библиотек chess.js и chessboard.js, фактически, ставших сегодня стандартом для шахматных приложений на Web.

Новый небольшой сервис позволяет двигать мышкой шахматные фигуры начиная как со стандартной позиции, так и с любой позиции в формате FEN, которую Вы туда загрузите. Запись партии ведётся в стандартном формате PGN, файл PGN содержит стандартные теги и формируется "однострочным", для удобства вставки в шахматные смотрелки вроде ChessTempo или на форумы.

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

Единственное, чем приложение не похоже на другие мои поделки последних двух дней (Случайные шахматы-2, Ходы фигур) - реализация превращения пешки, которое chess.js при "ручной" игре не обрабатывает. В итоге несколько модифицировал и выдрал код для превращения пешки вот отсюда, его можно увидеть в секциях "Обработка превращения фигуры" файлов index.html и script.js. Для поддержки всплывающего окна превращения фигуры нужен также стиль css/pgnbuilder.css из приложенного архива.

Полный листинг исходников не прикрепляю, но их легко скачать в архиве .zip с этой страницы.

В режиме онлайн скрипт также можно будет всегда открыть по следующей ссылке: Страница статьидалее...
08.12.2017, 11:59 [142]


Случайные шахматы-2 или майним шахматную криптовалюту :)

Не так давно я писал и даже переписывал код для генерации случайной шахматной игры самостоятельно (рандомные партии) или же извлекал его из базы удалённого сервера (реальные партии). С использованием библиотек chessboard.js и chess.js, ссылки на которые есть в предыдущей статье, задача становится куда приятнее для программирования.

В отличие от предыдущего скрипта, случайная партия развивается и записывается динамически, а с помощью небольшой серверной части ведётся общая статистика игр - какое получается количество ничьих, побед одной из сторон, а также какова средняя длина партии в ходах. AJAX-код - простейший, примерно как здесь, поэтому полные исходники не привожу, а лишь прикреплю в архиве. Тем не менее, ниже показана содержательная часть кода скрипта, демонстрирующая применение некоторых возможностей шахматных JS-фреймворков.

Запустив на некоторое время этот скрипт у себя в браузере, вы способствуете накоплению статистики о процентах "случайных" побед в шахматах, возможно, по законам больших чисел, это соответствует и проценту побед при любой "непредвзятой" игре сторон, например, при выборе хода с помощью сколь угодно сложной оценочной функции. Страница статьидалее...
08.12.2017, 09:06 [162]


Изучаем ходы шахматных фигур

Посмотрел разработки опытного шахматного педагога (В.А. Полоудин, любезно предоставивший мне свои материалы), в частности, программки для изучения детьми ходов шахматных фигур.

Всё неплохо, но эпоха Visual Basic, Delphi, да и вообще stand-alone приложений давно прошла :)

Немного поработав вчера и сегодня, написал небольшой сервис для работы с фигурами на доске в режиме "перетащил и оставил".

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

Всё, что мне понадобилось - освежить в памяти примеры по chessboard.js и документацию по chess.js, эти замечательные библиотеки я уже использовал в "искусственном интеллекте" на Javascript.

Ниже показан сервис в работе, приведена содержательная часть кода и прикреплён архив с исходниками. Страница статьидалее...
07.12.2017, 11:33 [179]


Делаем "векторную" графику на Javascript

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

Итак, в документе есть канва, размер которой не указан атрибутами тега <canvas>:

<canvas id="dynamicCanvas" style="background-color:black;"></canvas>

Этот размер будет установлен яваскриптом, расположенным ниже в документе:

<script type="text/javascript">
(function() {
 var canvas = document.getElementById('dynamicCanvas');
 var ctx = canvas.getContext('2d');
 var width = canvas.width = document.documentElement.clientWidth; //клиентская ширина окна
 var height = canvas.height = window.innerHeight; //а высота - из высоты окна
 //
 // здесь будет остальной код скрипта
 //
})();
</script>
<noscript>Нужен включённый Javascript для работы приложения</noscript>

Высота взята из объекта window, чтобы канва не оказалось маленькой высоты, если страница не наполнена содержимым.

Затем поставим слушатель события resize, который будет менять размеры канвы и вызывать функцию перерисовки через нужное количество миллисекунд, например, 100: Страница статьидалее...
06.12.2017, 14:11 [87]


Фонтан, который не заткнётся, он же на Javascript :)

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

Если "притормаживает" при открытии ленты, это связано с загруженностью её другими скриптами, на отдельной странице не должен :) Страница статьидалее...
06.12.2017, 12:52 [85]


C++: заполняем динамический массив случайными целыми значениями и реализуем простую сортировку

В коде формируется динамический целочисленный массив, содержащий значения из диапазона [0,range[, затем он сортируется простым "пузырькоподобным" методом и выводится в консоль. Для удобства функции обмена двух значений, сортировки массива и вывода массива в консоль представляют собой шаблоны. Более толковая для больших размерностей сортировка QuickSort показана в этой заметке.

Функция обмена элементов массива назвается swp, а не swap, чтобы избежать конфликта со стандартной и ошибки C2668. Страница статьидалее...
06.12.2017, 08:10 [120]


О чём написать Путину :)

В интервью с ГМ Наумкиным, весьма, кстати любопытной и колоритной личностью, главред Суров, возможно, не без иронии заметил: "Попробуйте написать письмо Владимиру Путину". Из этого вышла небезынтересная переписка, которую приведу здесь, чтоб не затерялась.

Завершил тему, как всегда, Салов, указав на "мессианский характер" явления.

Увы, простому человеку всей глубины идей Валерия Борисовича не понять, а вот ощущение, что он живёт пусть в бедном, несовершенном но своём государстве для него очень важно.

Именно это чувство - что у нас есть хоть плохонькое, но своё государство, мы в последние 5 лет и потеряли окончательно...

Опубликовано ПерС в 1 Декабрь, 2017 - 22:12.
> Попробуйте написать письмо Владимиру Путину
Мне кажется, так уж изощрённо издеваться над гроссмейстером Наумкиным не нужно :)

Опубликовано Володин Виктор в 1 Декабрь, 2017 - 22:34.
Во-первых, я не издеваюсь над гроссмейстером Наукиным, которого знаю боле 20 лет. Мгорь - очень приятный человнеК, и с чувством юмора у него всё в порядке! (как со всем остальным!!) А во-вторых, я стараюсс не писать Путину более двух раз в году! (Ему надо и свалки закрывать, и в семьи погрельцев в гости заходить ..) а в 2017 году я обратился к Путину уже 3 раза! Путину не легче, чем ММ!

Опубликовано ПерС в 2 Декабрь, 2017 - 08:59.
Уважаемый Виктор, я цитировал не Вас, а Сурова, что ясно видно из текста интервью. Да, и в конце моей реплики стоит смайлик, что как бы намекает не воспринимать её слишком всерьёз :) Что же до писем Путину, мне кажется, Вам не нужно так себя ограничивать. Пишите ему больше и чаще, пишите так, чтобы негодяй, метаясь по мокрым от пота подушкам, всю ночь не мог сомкнуть глаз, в ужасе думая об одном – «нет ли письма от Володина?!» :)

... Страница статьидалее...
03.12.2017, 21:49 [116]


Mathcad: метод Гаусса-Зейделя и диагональное преобладание

Вопрос возник по этой заметке, где реализованы прямые и итерационные методы решения систем линейных алгебраических уравнений (СЛАУ) в Mathcad.

Для сходимости как метода Якоби, так и модификации Гаусса-Зейделя, следует приводить матрицу к виду с диагональным преобладанием, это можно всегда сделать, применяя элементарные преобразования над строками и столбцами матрицы.

Приложенный документ содержит модификацию итерационного метода Якоби, известную как метод Гаусса-Зейделя и показывает, как привести матрицу к виду с диагональным преобладанием :)

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

Как видно из результата проверки, система решена с точностью не менее 15 знаков после запятой. Страница статьидалее...
02.12.2017, 13:11 [208]


Как правильно написать "Компьютерный практикум" и никому не сказать :)

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

Молодцы, авторы О.В. Приходько и М.А. Токарева, их "Компьютерный практикум" можно купить онлайн всего-то за 586 деревянных (Приходько О.В., Токарева М.А. Компьютерный практикум. Учебное пособие для будущих специалистов по управлению персоналом. – Оренбург: ОГУ, 2008. – 201 с).

Мои книги продаются по 100 рублей ну или вообще бесплатны.

А заинтересовал меня вот такой фрагмент:

фрагмент 1
фрагмент 1

Как мило. Они знают мой адрес мыла :) Но зачем же на него ссылаться в своём пособии? Хм, но ведь и дальше текст "чуть-чуть напоминает" мой оригинальчик 14-летней давности, правда? Страница статьидалее...
29.11.2017, 13:35 [107]


Треугольник Паскаля на Javascript

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

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

Мне понадобилось всего 2 функции:

Исходный текст легко увидеть, открыв скрипт по ссылке, нажав на свободном месте страницы правую кнопку мыши и выбрав пункт меню "Исходный код страницы", "Просмотр HTML-кода" и т.п. (название пункта меню зависит от браузера).

Любопытно в тексте - как динамически поменять ширину создаваемого элемента (функция printPascalTriangle).

Под катом приводится ссылка на приложение в работе, файл выложен в кодировке Юникод (UTF-8). Страница статьидалее...
29.11.2017, 10:59 [95]


Лондонская система: лучший дебют для лентяя :)

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

Я лично пришёл к ней независимо от каких-либо источников, ни одного из которых до сегодняшнего дня и не читал :)

Прелесть этой системы с пешечным построением c3-d4-e3 в том, что до определённого момента можно развивать фигуры практически не обращая внимания на ответы соперника, пока за белых не получается примерно вот что:

расстановка белых в лондонской системе
расстановка белых в лондонской системе

Белые развивают фигуры, получают устойчивый центр и имеют большой запас надёжных продолжений.

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

Страница статьидалее...
28.11.2017, 13:07 [180]


Javascript: слить все строки текста в одну

Просто понадобилось срочно из текста убрать переводы строк, ничем их не заменяя (точней, заменяя одним пробелом любое количество разделителей, в том числе, переводов строки). Такой формат нужен, например, при преобразовании pgn-файла в строку pgnString для Chesstempo.

Пришлось написать кодик вроде вот такого, ведь сервисы nl2br и sus этого не делают. Но писать код на PHP, который ещё надо на сервак загрузить, мне сейчас лень, а на JS можно сделать за минуту, да и выполняется пусть вашим браузером, а не моим сервером :)

Вот скрипт в работе, а под катом - полный исходник, по сути, это маленькая обёртка над пользовательской функцией trim, удаляющей из строки лишние разделители.

Введите или вставьте текст:

Результат:

Страница статьидалее...
28.11.2017, 12:58 [96]


Календарик негра на 2018 год :)

Нет, это не вечный календарь в Excel и даже не биоритмы, это в прямом смысле календарик рабочих и выходных дней на 2018 год.

В принципе, ещё рано, но он мне (в недоделанном виде) попался именно сегодня, а файл сейчас сунуть некуда, да и постановление уже давно есть, правда, наш гений, подписывая его, про 4-5 ноября как раз забыл, может, ещё отменят, как "зимнее время" :)

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

Сделано в Excel и рассчитано на печать одного листа A4, на бумаге получится примерно вот что (показан только верх листа):

календарик рабочих и выходных дней на лист A4, 2018 год
календарик рабочих и выходных дней на лист A4, 2018 год
Страница статьидалее...
27.11.2017, 17:14 [92]


[1-15] [16-30] [31-45] [46-60] ... [1861-1875] [1876]

  свежие записипоиск по блогукомментироватьстатистика

Наверх Яндекс.Метрика
© PerS
вход