def start(update, context):
context.chat_data['board'] = chess.Board()
update.message.reply_photo(photo=get_board(context.chat_data['board']))
def move(update, context):
if not context.args:
update.message.reply_text('Please specify a move!')
return
move = context.args[0]
board = context.chat_data['board']
try:
board.push_san(move)
board_image = get_board(board)
if board_image is not None:
send_image(context.bot, update, board_image)
else:
update.message.reply_text('Error: Failed to parse SVG image')
except ValueError:
update.message.reply_text('Invalid move!')
def get_board(board):
board_string = chess.svg.board(board=board)
board_string = board_string.replace('\n', '')
output = BytesIO()
try:
cairosvg.svg2png(bytestring=board_string, write_to=output)
except ET.ParseError:
print("Error: Failed to parse SVG image")
return None
output.seek(0)
return output.getvalue()
def send_image(bot, update, image):
bio = BytesIO()
bio.name = 'image.png'
try:
svg2png(image, write_to=bio)
except ET.ParseError:
print("Error: Failed to parse SVG image")
update.message.reply_text('Error: Failed to parse SVG image')
return
bio.seek(0)
bot.send_photo(chat_id=update.message.chat_id, photo=bio)
// app/Models/Notification.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Notification extends Model
{
const TYPE_EMAIL = 1;
const TYPE_TELEGRAM = 2;
const STATUS_WAIT = 0;
const STATUS_SENT = 1;
const STATUS_ERROR = 2;
protected $fillable = ['to', 'type', 'template', 'class_provider', 'subject', 'content', 'status'];
public function sendNotification()
{
// ...
}
}
public function sendNotification()
{
switch ($this->type) {
case self::TYPE_EMAIL:
$this->sendEmailNotification();
break;
case self::TYPE_TELEGRAM:
$this->sendTelegramNotification();
break;
default:
throw new \Exception('Unknown notification type');
}
}
public function sendEmailNotification()
{
// Получаем провайдера email из поля class_provider
$provider = app($this->class_provider);
// Получаем получателя и контент сообщения из модели уведомления
$to = $this->to;
$content = json_decode($this->content);
// Создаем экземпляр класса MailMessage
$message = new \Illuminate\Mail\Message();
// Устанавливаем адрес отправителя и получателя
$message->setFrom(config('mail.from.address'), config('mail.from.name'));
$message->addTo($to);
// Устанавливаем тему и контент сообщения
$message->setSubject($this->subject);
$message->setBody($content->message, 'text/html');
// Отправляем сообщение
try {
$provider->send($message);
$this->status = self::STATUS_SENT;
} catch (\Exception $e) {
$this->status = self::STATUS_ERROR;
}
$this->save();
}
public function sendTelegramNotification()
{
// Получаем получателя и контент сообщения из модели уведомления
$to = $this->to;
$content = json_decode($this->content);
// Отправляем сообщение
try {
\Telegram::sendMessage([
'chat_id' => $to,
'text' => $content->message,
]);
$this->status = self::STATUS_SENT;
} catch (\Exception $e) {
$this->status = self::STATUS_ERROR;
}
$this->save();
// config/mail.php
return [
'default' => env('MAIL_MAILER', 'smtp'),
'mailers' => [
'smtp' => [
'transport' => 'smtp',
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'timeout' => null,
'auth_mode' => null,
],
],
// ...
];
$notification = Notification::find(1);
$notification->sendNotification();
int m[5] = {1, 2, 3};
int length = 3; // исходно, массив содержит 3 элемента
// добавляем новый элемент в массив
m[length] = 4;
length++;
// теперь массив содержит 4 элемента
int m[5] = {1, 2, 3};
int length = 3;
// ищем незаполненный элемент
for (int i = 0; i < length; i++) {
if (m[i] == 0) {
std::cout << "Незаполненный элемент: " << i << std::endl;
break;
}
}
function filter_woocommerce_return_to_shop_text( $default_text ) {
if ( is_account_page() && ! is_wc_endpoint_url( 'dashboard' ) && ! is_wc_endpoint_url( 'orders' ) && ! is_wc_endpoint_url( 'view-order' ) && ! is_wc_endpoint_url( 'edit-account' ) && ! is_wc_endpoint_url( 'edit-address' ) && ! is_wc_endpoint_url( 'payment-methods' ) && ! is_wc_endpoint_url( 'lost-password' ) && ! is_wc_endpoint_url( 'customer-logout' ) ) {
$default_text = __( 'Название вашей страницы', 'woocommerce' );
}
return $default_text;
}
add_filter( 'woocommerce_return_to_shop_text', 'filter_woocommerce_return_to_shop_text', 10, 1 );
@RestController("/")
public class SimpleRestController {
@RequestMapping(produces = MediaType.APPLICATION_OCTET_STREAM_VALUE, method = RequestMethod.GET)
public ResponseEntity<byte[]> getVideo(@RequestHeader(value = "Range", required = false) String range) throws IOException {
ClassPathResource video = new ClassPathResource("static/Jiraya.mp4");
InputStream is = video.getInputStream();
HttpHeaders headers = new HttpHeaders();
int fileSize = is.available();
byte[] data;
String[] rangeArray = range.split("=");
int byteStart = 0;
int byteEnd = fileSize - 1;
if (rangeArray.length > 1){
String[] byteRange = rangeArray[1].split("-");
byteStart = Integer.parseInt(byteRange[0]);
if (byteRange.length > 1) {
byteEnd = Integer.parseInt(byteRange[1]);
}
}
int contentLength = byteEnd - byteStart + 1;
data = new byte[contentLength];
is.skip(byteStart);
is.read(data, 0, contentLength);
is.close();
headers.add("Content-Type", "video/mp4");
headers.add("Content-Length", String.valueOf(contentLength));
headers.add("Accept-Ranges", "bytes");
headers.add("Content-Range", "bytes " + byteStart + "-" + byteEnd + "/" + fileSize);
return new ResponseEntity(data, headers, HttpStatus.PARTIAL_CONTENT);
}
}
return [
'dsn' => 'mysql:host=localhost;dbname=test;charset=utf8',
'user' => 'root',
'password' => '',
];
<?php
namespace wfm;
require_once 'vendor/autoload.php';
use RedBeanPHP\R;
class Db
{
use TSingleton;
private function __construct()
{
if (!defined('CONFIG')) {
define('CONFIG', __DIR__ . '/config');
}
if (!defined('DEBUG')) {
define('DEBUG', false);
}
$db = require CONFIG . '/config_db.php';
R::setup($db['dsn'], $db['user'], $db['password']);
if (!R::testConnection()) {
throw new \Exception('No connection to DB', 503);
}
R::freeze(true);
if (DEBUG) {
R::debug(true, 3);
}
}
}
from typing import Any
class MyClass:
def __init__(self, param: str):
self.param = param
def __getattr__(self, attr: str) -> Any:
# Здесь можно создать любой атрибут в зависимости от переданного имени
if attr == 'name':
return 'John Doe'
elif attr == 'age':
return 30
else:
raise AttributeError(f"'{type(self).__name__}' object has no attribute '{attr}'")
import cv2
# загружаем файл видео
cap = cv2.VideoCapture('video.mp4')
# создаем объект HOG для обнаружения людей
hog = cv2.HOGDescriptor()
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
# инициализируем счетчик
count = 0
# начинаем чтение видео кадр за кадром
while True:
ret, frame = cap.read()
if not ret:
break
# обнаруживаем людей на кадре
boxes, weights = hog.detectMultiScale(frame)
# рисуем прямоугольники вокруг обнаруженных людей
for box in boxes:
x, y, w, h = box
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
# увеличиваем счетчик на количество обнаруженных людей
count += len(boxes)
# выводим количество обнаруженных людей на кадре
cv2.putText(frame, f"Count: {count}", (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
# показываем кадр
cv2.imshow('frame', frame)
# останавливаем цикл, если нажата клавиша "q"
if cv2.waitKey(1) == ord('q'):
break
# освобождаем ресурсы
cap.release()
cv2.destroyAllWindows()
package net.minecraft.client;
public class Minecraft {
public static void main(String[] args) {
}
}
package net.minecraft.client;
import javafx.application.Application;
public class Minecraft extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
}
}
var pool = mysql.createPool({
host: "хост",
user: "пользователь",
password: "пароль",
database: "датабаза",
port: 3306,
});
pool.getConnection(function (err, connection) {
if (err) {
console.log("Ошибка датабазы: " + err);
throw err;
}
else {
console.log("Датабаза подключена");
connection.query('SELECT * FROM `fac`', function (err, result) {
if (err) {
console.log("Ошибка выполнения запроса: " + err);
throw err;
}
else {
console.log(result);
// do something with the result
}
connection.release(); // always release the connection after you're done with it
});
}
});