infostart.ru Всё!

К сожалению в связи с последними событиями со стороны infostart, а именно:

  • вывод денежных средств теперь возможен только для самозанятых, что для меня не приемлемо
  • односторонний разрыв ранее подписанного договора о сотрудничестве по инициативе infostart

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

Попытаюсь добиться чтобы вернули деньги которые остались на балансе и удалили мой профиль вместе со всеми публикациями.

Русификация дисплея SSD1306

В интернете полно инструкций по русификации данного дисплея. Фактически все рекомендации сводятся к замене в папке C:\Users\USER\Documents\Arduino\libraries\Adafruit_GFX_Library (у вас другой путь) файла glcdfont.c вот этим файлом, и далее использованием вот этой функции для конвертации UTF-8 в кодировку windows-1251:

String utf8rus(String source){
  int i,k;
  String target;
  unsigned char n;
  char m[2] = { '0', '\0' };
  k = source.length(); i = 0;
  while (i < k) {
    n = source[i]; i++;
    if (n >= 0xC0) {
      switch (n) {
        case 0xD0: {
          n = source[i]; i++;
          if (n == 0x81) { n = 0xA8; break; }
          if (n >= 0x90 && n <= 0xBF) n = n + 0x30;
          break;
        }
        case 0xD1: {
          n = source[i]; i++;
          if (n == 0x91) { n = 0xB8; break; }
          if (n >= 0x80 && n <= 0x8F) n = n + 0x70;
          break;
        }
      }
    }
    m[0] = n; target = target + String(m);
  }
return target;
}

У меня увы, этот метод не сработал, как бы я не бился. И файл со скетчем переводил и в UTF-8 и в кодировку windows-1251 и чего только не делал. Ну не работает и всё тут. Потом на какое-то время заработало, потом опять перестало. Разобраться почему я так и не смог. В результате пошел другим путем — написал онлайн конвертор UTF-8 в восьмеричный формат кодировки windows-1251, после чего стало возможным вставлять в IDE код вида:

display.print("\307\300\317\323\321\312..."); 

Пусть не сильно читаемо в коде, но зато работает максимально стабильно. Конвертер ниже:



Кроме того, обнаружил еще одну не объяснимую ошибку при работе с данным дисплеем: если в программе интенсивно используется вывод в консоль при помощи Serial.println то на дисплее возникают артефакты в виде шума.

MySQL: выгрузка результата запроса в файл

Одним из способов является — воспользоваться встроенным функционалом MySQL. Например так мы выгрузим результат запроса в файл формата csv:

select  
	b_form_result.ID, 
	b_form_result.DATE_CREATE, 
	b_form_result.STATUS_ID, 
	b_form_result.FORM_ID, 
	b_form_result_answer.USER_TEXT, 
	b_form_result_answer.ANSWER_TEXT_SEARCH, 
	b_form_result_answer.ANSWER_TEXT, 
	concat("https://wfcwerfe.ru/upload/",SUBDIR,"/",b_file.FILE_NAME) 
from    
	b_form_result  
	left join b_form_result_answer on b_form_result_answer.RESULT_ID=b_form_result.ID 
	left join b_file on b_file.ID=b_form_result_answer.USER_FILE_ID 
where 
	b_form_result.TIMESTAMP_X>"2023-12-06 16:37:26" 
	INTO OUTFILE '/tmp/res.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

PostgreSQL: Завершение процесса запроса

Ситуация: при попытке добавить столбец в одну из таблиц, получил сообщение, что таблица заблокирована из-за процесса с номером Х. «Странно» подумал я, т.к. собственно никаких запросов, тем более «тяжелых» в данный момент не выполнял. Посмотрел текущие запросы и обнаружил:

SELECT user, pid, client_addr, query, query_start, NOW() - query_start AS elapsed
FROM pg_stat_activity
WHERE query != '<IDLE>'
-- AND EXTRACT(EPOCH FROM (NOW() - query_start)) > 1
ORDER BY elapsed DESC;

Что процесс, на который ругалась БД, был запущен еще несколько дней назад, и не понятно по какой причине еще до сих пор не завершен. По идее то бы тут конечно нужно по выяснять, а почему это собственно произошло… но я не стал. А просто завершил процесс:

SELECT pg_cancel_backend(113964)

Исправление распространённых ошибок при тестировании конфигурации Bitrix

Всё ниже перечисленное применимо к Битрикс «Управление сайтом»

Ошибка! Время отличается на 10800 секунд

Прежде чем применять предложенное исправление, необходимо проверить что в консоли терминала и консоли БД время установлено верно.

Исправление: в файле /bitrix/php_interface/after_connect.php нужно добавить строчку:

$DB->Query("SET LOCAL time_zone='".date('P')."'");

Ошибка! Не настроен запуск cron_events.php на cron, последний агент отработал больше суток назад.

Исправление: в /etc/crontab добавить строчку вида:

* * * * *       sleep $((RANDOM\%3)); flock -x -n /tmp/cron_site.lock -c "[ -f /var/www/www-root/data/www/erfwerf.ru/bitrix/php_interface/cron_events.php ] && { sleep $((RANDOM\%50)); timeout 3600 php -f /var/www/www-root/data/www/erfwerf.ru/bitrix/php_interface/cron_events.php; }" >/dev/null 2>&1

Работа с сокетами: Ошибка! Не работает

Исправление:

  • добавить в /etc/hosts имя домена
  • обновить корневые сертификаты:
yum install ca-certificates
update-ca-trust
  • проверить нет ли проблем с сертификатом при выполнении в терминале на сервере
wget https://adiuoe.ru

Если выведет ошибку — установить корректные ssl сертификаты

Недоступны для чтения или записи

При проверке ругается, что часть файлов/папок не доступны для чтения/записи. Для начала выполним команды в корневой папке сайта:

find . -type d -exec chmod 775 {} \;
find . -type f -exec chmod 664 {} \; 

И выставим владельцев (у вас могут быть свои):

find . -type d -exec chown nginx:apache {} \;
find . -type f -exec chown nginx:apache {} \;

Работа с файлами кеша: Ошибка! Не работает

Сервер apache не имеет доступа в папку /bitrix/cache

chmod 777 bitrix/cache/
1 34 35 36 37 38 310