The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Создать новую тему
 - Свернуть нити
Пометить прочитанным
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Архив | Избранное | Мое | Новое | | |  
Форум WEB технологии
upstream cтатистика, !*! 999, (nginx) 21-Мрт-24, 20:02  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Приветствую, коллеги.
Помогните решить задачу сбора статистики подключений к backend серверам.
Есть что-то такое
upstream backend {
    server server1;
    server server2;
}

server {
    listen 80;
    server_name default;

    location / {
        proxy_pass http://backend;
    }
}

Каким образом можно узнать сколько клиентов отправлено на server1, а сколько на server2?
RTFM не помогло))
Заранее спасибо.



Паралельное выполнение обработки файлов, !*! Nightman_Sha, (PHP) 09-Янв-24, 08:15  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Добрый день!
Имеем
PHP Version 7.4.10
Есть скрипт, который выполняет scandir нужного каталога в отдельной функции и возвращает массив

Затем бежит по этому массиву и выполняет процессинг "по одному":

foreach ($lrFiles as $lsKey => $lsFile) {
      $this->CopyToArchivDir($lsOrigDir. $lsFile , PRESENTATION_DIR.'../'.$irService['InFileDir']);
      $lbResult = $this->ProcessFile($lsOrigDir . $lsFile);
      if ($lbResult) {
        unlink($lsOrigDir . $lsFile);
      }
    }

ProcessFile достаточно тяжелая , выполняются всякие iconv, ввод/вывод в БД и другие преобразования. Не суть.

Вопрос: можно ли распараллелить выполнение ProcessFile минуя последовательную обработку"по одному".
Чтобы процессинг шел _безопасно_ в паралели на несколько трэдов.

googlение дает противоречивое, куча фремворков и встроенных возможностей PHP. А какие надежные и безопасные? Учитывая, что с PHP я знаком не хорошо ..
Направьте пожалуйста в нужное русло
Спасибо


Обновить letsencrypt с помощью certbot, если 80 порт занят, !*! userovich, (nginx) 20-Ноя-23, 21:22  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Порты 443 и 80 слушаются nginx, входящие на 80 вообще-то просто редиректят на https (443), но отказаться от использования 80 порта не могу.

Вари1: /etc/letsencrypt/cli.ini:
pre-hook = service nginx stop
post-hook = service nginx start
(кривой способ освободить 80-й порт)
Но блин, так как-то неправильно. А как обойти то, что порт 80 занят?

Одновременно не могу понять следующее: сразу после перезагрузки (nginx стартует автоматом, все ок) запускаю certbot renew --dry-run - тесты проходит, все ок (это когда в /etc/letsencrypt/cli.ini стоит "post-hook = service nginx reload").

То есть мне, конечно, норм, что тест проходит, но как certbot с 80 портом обходится в этом случае, непонятно. Последующие тестовые запуски могут показывать ошибки nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Unknown error), но не всегда. При этом сайт работает нормально. Мистика какая-то.

Как сделать HTML страницу из трёх блоков с прокруткой среднего , !*! КриоМух, (CSS) 25-Окт-23, 09:22  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Доброго дня Уважаемые!

Клепаю тут страницу, и хочу чтобы не было JS, а надо в частности мне сделать стандартную штуку:
<body>
   <div id="pgHeader">Тут шапка страницы. Её высота неизвестна</div>
   <div id="pgContent">Тут собственно блок с содержимым. Он должен быть высотой от шапки до подножья, и если содержимое не влазит, то с прокруткой (но только сам блок с прокруткой, а не страница)</div>
   <div id="pgFooter">Это подножье страницы, тоже неясна высота. Этот блок должен быть прикреплен к низу экрана.</div>
</body>

Подскажите как это на CSS сделать? Т.е. шапка и подножье всегда должны быть на своих местах соответственно сверху и снизу, а блок содержимого при необходимости скроллиться.



Резиновое горизонтальное меню с 'прыгающими' пунктами, !*! Дмитрий, (CSS) 16-Сен-23, 16:37  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Доброго времени суток!

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

Пункт1 Пункт2 Пункт3 Пункт4 Пункт5

При изменении ширины экрана до "Пункта3", получается:

Пункт1 Пункт2 ...

... - при нажатии сюда, выпадает меню с пунктам "3, 4, 5".

Может кто знает, где посмотреть образец?

Неполучается проксировать доступ к двум веб серверам одной сети, !*! lotric, (Редирект) 27-Июл-23, 20:00  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Пробовал nginx, haproxy
одна проблема это ssl не могу настроить доступ по https(который добовляют и управляется на веб серверах).
В гуглах 99% вариантов описывают http но с этим проблем нету это просто.

вот суть задачи https://i.postimg.cc/vBR0vqkR/haproxy2.jpg


имеется 3 сервера
1. сервер  (192.168.0.2) у него есть wan ip который в интернет смотрит через DMZ роутера
2. веб сервер1 (192.168.0.36) на нем панель управления в том числе и ssl https
3. веб сервер2 (192.168.0.46) на нем панель управления в том числе и ssl https

сайты вручную каждый не вариант прописывать

----------попытка в nginx(192.168.0.2) (для второго сервера аналогично)
В фале /etc/nginx/sites-available/default добавил следующее:
server {
listen 80;
server_name moodle.name.ru;
server_name_in_redirect on;
location / {
proxy_pass http://192.168.0.36:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded_for $proxy_add_x_forwarded_for;
}
----------попытка в haproxy(192.168.0.2)
frontend http-https-in
bind 192.168.0.2:80
bind 192.168.0.2:443

use_backend http_nginx_pool if !{ ssl_fc }
use_backend https_nginx_pool if { ssl_fc }

backend http_nginx_pool
mode http
server nginx2 192.168.0.36:80 check
server nginx2 192.168.0.46:80 check

backend https_nginx_pool
mode http
server nginx2 192.168.0.36:443 check
server nginx2 192.168.0.46:443 check

Kerberos авторизация в PHP8.2, !*! Doc, (PHP) 22-Июн-23, 10:13  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
    Коллеги , подскажите , что изменили с Kerberos авторизацией в v8.2?
    модуль auth_kerb_module отсутствует как класс
    при этом детектива AuthType Kerberos - работает, а все остальные вплоть до Krb5Keytab нет

    как организовать керберос авторизацию и SSO на 8.2?

Браузер Луна - брендированная сборка?, !*! rvs2016, (Разное) 20-Июн-23, 10:20  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Нынче появилась новость о размещении в Апп Сторе российского браузера Луна.
Все сайты нахваливают только российскость этого браузера да всякие там сертификаты Минцифры в нём.
Но в гугле пока не попадаются на глаза его настоящие технические характеристики.
В частности не заметна пока информация - является ли браузер Луна написанной с нуля программой или он является очередной брендированной сборкой Файрфокса или Чрома подобно браузерам Яндекс, Амиго и т.п.


Почему при использовании оператор IN пропадает индекс?, !*! Дмитрий, (MySQL) 17-Июн-23, 22:22  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Доброго времени суток!

Есть таблица. И два запроса:

select id FROM articles WHERE id in ( 45, 46);
select id FROM articles WHERE id IN(SELECT 45 union SELECT 56);

В первом случае стоимость (cost) 1.82. В таблице articles используется Primary Index и идет Index Range Scan .

Во втором случае стоимость (cost) 2003.22. В таблице используется другой индекс и идет Full Index Scan.

Откуда такая разница и как заставить второй запрос использовать Primary Index?

копия кластера и pg_basebackup, !*! ZlyddeN, (PostgreSQL) 30-Май-23, 16:00  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Вопрос по созданию копии кластера. Такой план насколько плох?

1. Делаем pg_basebackup -D /mnt/newDATA
2. останавливаю кластер
3. копирую pg_wal/ в новый путь /mnt/newDATA/pg_wal
4. монтирую newDATA на место старого кластера /var/lib/pgsql/11/data
5. запускаю кластер.

Это мне гарантирует целостность данных? обязательно ли прописывать recover.conf?
PS. архивация WAL не настраивалась

не отправляется почта на внешние адреса одного домена, !*! deminart, (Разное) 23-Май-23, 14:17  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Коллеги, помогите пожалуйста с проблемой.
Есть доменная почта на Яндексе, условно обозначим именем yagroup.ru
С таким же именем group.ru внутренний домен.
Подняли почтовый сервер Debian 11, postfix 3.5.18 на втором уровне домена с именем gkgroup.ru
Ситуация следующая, при отправке на внешнюю почту яндекса, с таким же доменным именем  как и внутренний домен (yagroup.ru ) сервер стучится на кд, в итоге получаю Connection refused, status=deferred и висящее в очереди письмо.
Во всех остальных случаях всё прекрасно работает…

[spoiler=mail.log]
May 23 13:17:22 mail postfix/submission/smtpd[3036]: connect from localhost[127.0.0.1]
May 23 13:17:22 mail postfix/submission/smtpd[3036]: Anonymous TLS connection established from localhost[127.0.0.1]: TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signa>
May 23 13:17:22 mail postfix/submission/smtpd[3036]: 4QQTH65NNZz3cq6H: client=localhost[127.0.0.1], sasl_method=LOGIN, sasl_username=petrov@gkgroup.ru
May 23 13:17:22 mail postfix/cleanup[3052]: 4QQTH65NNZz3cq6H: message-id=<30b74af0cab6e948c7a51a2d1b307d9e@gkgroup.ru>
May 23 13:17:22 mail postfix/qmgr[2057]: 4QQTH65NNZz3cq6H: from=<petrov@gkgroup.ru>, size=659, nrcpt=1 (queue active)
May 23 13:17:22 mail roundcube: <tl39kq6a> User petrov@gkgroup.ru [192.168.0.50]; Message <30b74af0cab6e948c7a51a2d1b307d9e@gkgroup.ru> for petrov@yagroup.ru; 250: 2.0.0 Ok: queued as 4QQTH65NNZz3cq6H
May 23 13:17:22 mail postfix/submission/smtpd[3036]: disconnect from localhost[127.0.0.1] ehlo=2 starttls=1 auth=1 mail=1 rcpt=1 data=1 quit=1 commands=8
May 23 13:17:23 mail postfix/10025/smtpd[3063]: connect from localhost[127.0.0.1]
May 23 13:17:23 mail postfix/10025/smtpd[3063]: 4QQTH72QbLz3cqfS: client=localhost[127.0.0.1]
May 23 13:17:23 mail postfix/cleanup[3052]: 4QQTH72QbLz3cqfS: message-id=<30b74af0cab6e948c7a51a2d1b307d9e@gkgroup.ru>
May 23 13:17:23 mail postfix/10025/smtpd[3063]: disconnect from localhost[127.0.0.1] ehlo=1 mail=1 rcpt=1 data=1 quit=1 commands=5
May 23 13:17:23 mail postfix/qmgr[2057]: 4QQTH72QbLz3cqfS: from=<petrov@gkgroup.ru>, size=1954, nrcpt=1 (queue active)
May 23 13:17:23 mail amavis[2179]: (02179-01) Passed CLEAN {RelayedInternal}, ORIGINATING/MYNETS LOCAL [127.0.0.1]:49942 ESMTP/ESMTP <petrov@gkgroup.ru> -> <petrov@yagroup.ru>, (), Queue-ID: 4QQTH65NNZz3cq6H,>
May 23 13:17:23 mail postfix/amavis/smtp[3057]: 4QQTH65NNZz3cq6H: to=<petrov@yagroup.ru>, relay=127.0.0.1[127.0.0.1]:10026, delay=0.76, delays=0.2/0.03/0.02/0.51, dsn=2.0.0, status=sent (250 2.0.0 from MTA>
May 23 13:17:23 mail postfix/smtp[3064]: connect to yagroup.ru[192.168.0.2]:25: Connection refused
May 23 13:17:23 mail postfix/smtp[3064]: connect to yagroup.ru[192.168.0.3]:25: Connection refused
May 23 13:17:23 mail postfix/smtp[3064]: connect to yagroup.ru[192.168.0.4]:25: Connection refused
May 23 13:17:23 mail postfix/qmgr[2057]: 4QQTH65NNZz3cq6H: removed
May 23 13:17:23 mail postfix/smtp[3064]: 4QQTH72QbLz3cqfS: to=<petrov@yagroup.ru>, relay=none, delay=0.05, delays=0.01/0.03/0/0, dsn=4.4.1, status=deferred (connect to yagroup.ru[192.168.0.4]:25: Connect>
May 23 13:18:33 mail postfix/postsuper[3147]: Deleted: 1 message [/spoiler]

[spoiler=dig gkgroup.ru MX]
; <<>> DiG 9.16.37-Debian <<>> gkgroup.ru MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18341
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;gkgroup.ru.                      IN      MX

;; AUTHORITY SECTION:
gkgroup.ru.               3600    IN      SOA     dc2.yagroup.ru.ru. hostmaster.yagroup.ru 25 900 600 86400 3600

;; Query time: 0 msec
;; SERVER: 192.168.0.6#53(192.168.0.6)
;; WHEN: Tue May 23 13:48:24 +04 2023
;; MSG SIZE  rcvd: 97  [/spoiler]


[spoiler=digdig mail.gkgroup.ru MX]
; <<>> DiG 9.16.37-Debian <<>> mail.gkgroup.ru MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56903
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;mail.gkgroup.ru.                 IN      MX

;; ANSWER SECTION:
mail.gkgroup.ru.          3600    IN      MX      10 mail.gkgroup.ru.

;; ADDITIONAL SECTION:
mail.gkgroup.ru.          3600    IN      A       192.168.0.200
mail.gkgroup.ru.          3600    IN      A       11.0.111.11

;; Query time: 0 msec
;; SERVER: 192.168.0.6#53(192.168.0.6)
;; WHEN: Tue May 23 13:50:49 +04 2023
;; MSG SIZE  rcvd: 90 [/spoiler]

Какой верный путь для получения экземпляро объектов по их типу?, !*! Вервер, (PHP) 11-Фев-23, 12:05  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Доброго дня Товарищи!

Я тут пишу свои всякие поделки, и вот заинтересовался вопросом, а правильный ли я выбрал подход к созданию экземпляра объекта по его ТИПУ? Поясню это на примере:

Допустим, есть у меня к несколько разных вариаций от общего предка, к примеру виды Документов:


//Общий предок
Class Document {
    const DOC_DOGOVOR = 1;
    const DOC_PISMO = 2;

    static public getDocByType(int $docType){
        switch($docType){
            case self::DOC_DOGOVOR:
                return new Doc_Dogovor();
                break;

            case self::DOC_PISMO:
                return new Doc_Pismo();
                break;
        }

        return false;
    }
}

Class Doc_Dogovor extends Document {
    protected static $docType = Document::DOC_DOGOVOR;
    //Своя какая-то кухня с свойствами и методами такого
    //типа документов ...
}

Class Doc_Pismo extends Document {
    protected static $docType = Document::DOC_PISMO;
    //Своя какая-то кухня с свойствами и методами такого
    //типа документов ...
}

//Получить объект нужного типа (из БД к примеру тип приходит)
$docObj = Document::getDocByType($neededTypeFromDB);


Так вот вопрос собственно в том, насколько оправданно или наоборот плохо и как лучше всего такой тип задачи реализовывать?
А задача значит получение экземпляра объекта указанного типа. Видел, что во всяких автозагрузчиках классов сейчас используется динамическое их получение условно такой схемой что если запрошенного класса нет, он подгружается по имени и дальше также создаётся объект класса, название которого в переменной
$docObj = new $objClassName();



IOException в Java вызывается isReachable, !*! nicholas21, (Java, JSP, сервлеты) 09-Фев-23, 12:29  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Если isReachable выдает исключение IOException в Java, что делать правильно и почему?

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

большое спасибо

Настройка вывода PHP сообщений в лог Lighttpd, !*! Кривотолк, (Apache, http-серверы) 08-Фев-23, 21:42  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Здравствуйте Товарищи АйТи-Специалисты!

Скажите, кто знает, как в lighttpd убрать лишние поля в выводе сообщений от php в лог?
Коряво сформулировал, вот поясню:

Связка у меня FreeBSD 13-STABLE + Lighttpd 1.4.68 + php82 в fastcgi режиме.

fastcgi.conf

server.modules += ( "mod_fastcgi" )
fastcgi.server = ( ".php" =>
    ( "php-local" =>
        (
            "socket"        => "/var/php-fpm/php-fpm.sock",
            "max-procs"     => 1,
            "broken-scriptfilename" => "enable",
        )
    )
)

vhosts.d/my_site.conf
$HTTP["host"] =~ "(my\.site)" {
    var.server_name = "my.site"
    http_host       = "my.site"
    server.document-root = vhosts_dir + "/my.site/html"
    accesslog.filename          = log_root + "/" + server_name + "_access.log"
    server.errorlog             = log_root + "/" + server_name + "_error.log"
}

php.ini
. . . . .
error_log = /var/log/php_errors.log
. . . . .

Так вот в итоге в /var/log/php_errors.log - идёт в нормальном формате

[08-Feb-2023 23:31:11 Europe/NSK] PHP error_log() MESSAGE
но туда валятся сообщения из php со всех виртуальных хостов на lighttpd, а вот в индивидуальный лог, средствами самого веб-сервера, идёт лог с добавочными полями о том из какого модуля сервера это пришло и т.п.:
2023-02-08 23:18:38: (mod_fastcgi.c.449) FastCGI-stderr:PHP message: PHP error_log() MESSAGE

т.е. лог идёт с лишним куском: (mod_fastcgi.c.449) FastCGI-stderr:PHP message:

Как бы мне его убрать из вывода?

Окончательные классы в Java, которые не должны быть окончательн, !*! nicholas21, (Java, JSP, сервлеты) 25-Янв-23, 17:18  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Недавно мне задали этот вопрос в интервью:

Можете ли вы назвать какой-либо класс в Java API, который является окончательным, которого не должно быть, или тот, который не должен быть и должен быть?

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

Если кто-нибудь знает такие классы, пожалуйста, приведите примеры.

Не работает директива Alias - почему?, !*! xintrea, (Apache, http-серверы) 18-Ноя-22, 14:11  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Настраиваю сейчас gitweb. Сам CGI-скрипт работает, веб-интерфейс рисуется. Однако нет доступа к ресурсам http://our_server/git/static/..., т. е. к картинкам, CSS, JS-скриптам.

Конфиг в данный момент следующий:


...
<IfDefine ENABLE_GITWEB>

  # Turning on mod rewrite
  RewriteEngine on

  # Make the front page an internal rewrite to the gitweb script
  RewriteRule ^/git/$  /cgi-bin/gitweb.cgi [L,PT]

  # Make access for "dumb clients" work
  RewriteRule ^/git/(.*\.git/(?!/?(HEAD|info|objects|refs)).*)?$ /cgi-bin/gitweb.cgi%{REQUEST_URI}  [L,PT]

  Alias /git /home/git

  <Directory /home/git>
    Options +FollowSymLinks +ExecCGI
    AddHandler cgi-script .cgi
    Require all granted
    DirectoryIndex /cgi-bin/gitweb.cgi
  </Directory>
</IfDefine>

Я выяснил, что ресурсы лежат в каталоге /usr/share/gitweb/static. Поэтому подумал, что можно проблему решить такой опцией:


Alias /git/static /usr/share/gitweb/static

И с завершающим слешем пробовал:

Alias /git/static/ /usr/share/gitweb/static/


Опцию эту взял из документации git-scm (https://git-scm.com/docs/gitweb), прописываю рядом с Alias /git /home/git.

Но все равно, при запросе ресурсов типа http://our_server/git/static/gitweb.css выдается ошибка 404.

Вопрос: почему не работает данная опция? Вроде все правильно написал. Причем Alias /git /home/git - работает, без нее страница не генерируется. А алиас на static не работает.

Разумная пагинация, !*! CHIM, (PHP) 28-Окт-22, 10:35  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Доброго времени суток уважаемые форумчане!

Вопрос мой заключается вот в чём. Я довольно давно занимаюсь простенькой разработкой WEB приложений и сайтов на php и всегда пытаюсь что-либо делать по другому и усовершенствовать свой код, сделать его более правильным и функциональным. Сейчас делая очередной проект меня посетила идея об изменении принципа пагинации. Как обычно происходила пагинация в моих проектах?
1. Был обычный запрос в базу данных с количеством записей,  делился на количество записей на странице и формировалось общее количество ссылок на страницы
2. Ссылки с переходом по GET на другие страницы передавали номер страницы для дальнейшего запроса в базу и среза offset, после чего выдавал новый срез данных и формировались страницы.

Всё просто до безобразия.
Но тут мне понадобилось сделать различные фильтры и поиск по всем(или определённым) полям, необходимой информации и динамически выводить это всё в таблицу. С этим проблем не возникло:
1. JS отслеживал ввод в поле поиска, селекты и выбор дат. Проверял все эти параметры в совокупности и отправлял через AJAX к PHP файлу
2. В PHP фале формировалось два запроса, первый был со всеми фильтрами и критериями поиска на количество записей, а второй с теми же критериями поиска, но с offset.

Данные в таблице успешно заполнялись, ссылки формировались, но при поиске или фильтрации я заполнял таблицу через innerHTML и вариантов добавить пагинацию не было, так как заполнялся один только id, а пагинация была в другом id. Соответственно пагинация не обновлялась. Было решено заносить данные для пагинации в сессии, но они срабатывали только после перехода или при перезагрузке страницы. В общем всё это выглядело  довольно-таки коряво. Я задумался, ведь я видел, как на многих сайтах страницы меняют содержимое при пагинации без перезагрузки. Начал копать в этом направлении и понял что в большинстве случаев, осуществляется полная загрузка данных в память, а далее просто js нарезается по странично. Если честно я сомневаюсь в разумности данного подхода, ведь если взять те же смартфоны и скажем таблицу из 1 миллиона строк, то загрузив это всё разом, всё будет ужасно тормозить. Всё-таки это огромный объём данных, который пусть сразу и не выводится на страницу, но хранится в памяти в виде массива данных.
Начал искать другие способы и наткнулся что сейчас многое делается на node.js + vue.js или react.js. Начал смотреть более подробно что за зверь такой этот node.js и везде русским по белому написано что это фактически замена любому серверному языку вроде php, python, perl, ruby и прочим. Тогда у меня появляется разумный(как мне кажется) вопрос, неужели нельзя создать динамическую пагинацию страниц без перезагрузки страницы на php+js без использования node.js? Или задумываясь об отзывчивых динамических интерфейсах уже нет речи о php и теперь нужно переучиваться на node.js?



Сылка на коды программ в книге Герберта Шилдта, !*! korbnik, (Java, JSP, сервлеты) 19-Окт-22, 15:18  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Добрый день!

Подскажите, пожалуйста, ссылку на коды программ в книге Герберта Шилдта "Java Полное руководство 10-е издание".
В самой книге ссылка не работает.

Заранее благодарен. Борис.

Вышкл OpenChatPhp-1.1., !*! dcc0, (PHP) 18-Окт-22, 05:38  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Состоялся релиз открытого чата OpenChatPhp-1.1.
В этой версии появилась возможность устанавливать пароль для создания канала.
На главной странице теперь отображается только 10 каналов. Остальные каналы скрыты. Для работы в них требуется знать имена каналов.

Напомним особенности:
Чат обновляется с помощью Ajax,
в базе данных хранятся только последние 50 сообщений (настраивается пользователем). Сообщения чата сохраняются только у пользователей в браузере, что разгружает сервер и делает недоступным чтение чужой переписки.

Ссылка на архив на сервере gitflic:
https://gitflic.ru/project/dcc0/open/blob?file=OpenChatPhp-1...



Apache MPM ITK + PHP, !*! Pahanivo, (Модули apache) 14-Окт-22, 19:10  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Имеется сабж.
Данный MPM позволяет отрабатывать под разными пользователями для разных vhost.

Исходно апач работает по дефолту под www-data:
ps axu |grep apache
root      370987  0.0  0.0 227504 35032 ?        Ss   09:40   0:00 /usr/sbin/apache2 -k start
www-data  370988  0.0  0.0 228060 16544 ?        S    09:40   0:00 /usr/sbin/apache2 -k start
www-data  370989  0.0  0.0 228060 16544 ?        S    09:40   0:00 /usr/sbin/apache2 -k start
www-data  370990  0.0  0.0 228072 16920 ?        S    09:40   0:00 /usr/sbin/apache2 -k start
www-data  370991  0.0  0.0 228072 16920 ?        S    09:40   0:00 /usr/sbin/apache2 -k start
все стандартно.

Заведен vhost, у него в настройках:
AssignUserID www-root www-root

Все работает - меняю у файлов владельца и группу на отличные от www-root - получаю форбидден, все логично.
Но вот phpinfo() упрямо показывает:
______
apache2handler
...
User/Group    www-data(33)/33
______
т.е. говорит что он работает под www-data.

Я было засомневался, но проверив созданием файла из php, он ожидаемо создается от www-root.
Почему php показывает другого пользователя??

Учебник по программированию Java, !*! korbnik, (Java, JSP, сервлеты) 05-Окт-22, 09:17  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Добрый день!

Посоветуйте, пожалуйста, хороший учебник по программированию Java.

Не обязательно для начинающих, хотя можно и такой.

Заранее благодарен. Борис.

репликация в MySQL, !*! lavr, (MySQL) 31-Авг-22, 23:02  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Hi All,

в DB ноль, буду рад любому совету, ссылкам, пинкам в нужном направлении.

Дано: три сервера MySQL 8.x
- server1 с db1, db2, ...
- server2
- server3 с ..., db7, ...

возможно ли оганизовать следующее
server1 <- master-master -> server2 для баз db1,db2
и
server3 (master) с db7 <- master-slave -> server1 и server2

Те server1 и server2 друг с другом как master<->master,
и в то же время они будут slave'ами для master server3 с базой db7.

Или вовсе все иначе и заменить верхнее безобразие на multi-master?

Как в PHP полностью корректно экранировать для Shell'а?, !*! Кровосток, (PHP) 20-Июл-22, 10:47  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Добрый день Товарищи!

Скажите пожалуйста, если есть такая гипотетическая задача:
Скрипт в PHP берёт из БД данные и делает с ними что-то типа того:


//Массив строк для shell'а
$arr = [];

//В $result данные типа SELECT aa.filePath, aa.linkPath FROM tablename
while($cur=mysqli_fetch_array($result)){
    //Собственно сам вопрос в этом блоке. Как в PHP корректно экранировать путь к файлу для shell
    //чтобы исходный к примеру путь: /home/vasyan kudrikov/file super cool!!!.avi
    //был экранирован c учётом всех требуемых для shell к экранированию символов
    //для свободного уже использования этого значения как аргумента к командам shell'а?
    $escFilePath = HOW_TO_ESC($cur[0]);
    $escLinkPath = HOW_TO_ESC($cur[1]);

    //Мне надо сформировать shell скрипт с манипуляцией файлов.
    $arr[] = 'ln -s '.$escFilePath.' '.$escLinkPath;
}

//Вывод результата в stdout
echo implode("\n", $arr);

Собственно как организовать эту HOW_TO_ESC()?



Бэкэндеру нужно знать фронтэнд?, !*! Thinking, (Разное) 25-Май-22, 05:32  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Всем привет. Заранее сорри, если пишу не в тот раздел. Вопрос такой - Есть ли такое что занимаясь бэкэндом, тем не менее необходимо знать немного и о фронтэнде? Спасибо.


.htaccess: RewriteEngine not allowed here, !*! ramzes3000, (Apache, http-серверы) 29-Апр-22, 00:40  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Привет.
Apache/2.4 (Ubuntu)
Уже не знаю, что делать.  Выручайте.

internal server error 500
в логах .htaccess: RewriteEngine not allowed here

/etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>
ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory />
     AllowOverride FileInfo Options
        AllowOverride All
</Directory>


.htaccess:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

Возможны ли автопроверки всех SQL запросов в своём приложении, !*! Кровосток, (MySQL) 07-Апр-22, 20:51  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Уважаемые, доброго дня!

У меня свой самописный "фреймворк" назовём его так, и там соответственно свой класс для работы с БД MySQL, средства отладки и прочие личные хотелки.

Так вот, я хочу иметь возможность все генерируемые SQL запросы при включении дебага - чтобы автоматом проверялись на всякие SQL минусы. Типа того, что там например индексы не используются, или временная таблица на диске создалась... Я на самом деле просто в глубинах SQL не так силён, но хочу так сказать погрузиться.

Что у вас хочу спросить: Посоветуйте пожалуйста, как можно анализировать запрос, ну т.е. к примеру всем проходящим через обёртку работы с БД запросам SELECT перед их исполнением делать EXPLAIN и там анализировать то-то и то-то, и в случае таких-то проблем сигнализировать, что данный запрос потенциально "проблемный". Какие есть способы диагностики, может кроме EXPLAIN'а, с ним я немного знаком. Может там на уровне самой БД что-то можно включить, я смогу это связать со своим "конструктором".



Видимость папок с интернета. Апачи, !*! miltorg, (Apache, http-серверы) 13-Фев-22, 11:13  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Видимость папок с интернета. Апачи

Нужно чтоб с интернета была видна не папка public_html, а папка web.

ДиректАдмин. Доменов много. Они лежат в папке domains

СимЛинк подходит только для доменов. А мне нужны и поддомены тоже.

Спасибо.

Через браузер и консоль отдается разный сертификат. Это что за?, !*! xintrea, (nginx) 11-Янв-22, 14:55  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Имеется хост https://webhamster.ru. На нем используются сертификаты Lets Encrypt. Если в браузере посмотреть информацию о сертификате, то будут видны следующие даты:

Действителен с ‎30 ‎декабря ‎2021 ‎г. 8:15:11
Действителен по ‎30 ‎марта ‎2022 ‎г. 8:15:10

То есть, сертификат действителен, не просрочен.

Если же залогиниться в консоль этого хоста, и попробовать получить главную страницу через wget, то будет ошибка:


> wget https://webhamster.ru

--2022-01-11 14:16:46--  https://webhamster.ru/
Распознаётся webhamster.ru (webhamster.ru)… 193.124.188.214
Подключение к webhamster.ru (webhamster.ru)|193.124.188.214|:443... соединение установлено.
ОШИБКА: Нет доверия сертификату для «webhamster.ru».
ОШИБКА: Срок действия сертификата «webhamster.ru» истёк.


Хм, что за дичь, надо посмотреть через openssl:

> openssl s_client -showcerts -connect webhamster.ru:443

CONNECTED(00000003)
depth=3 O = Digital Signature Trust Co., CN = DST Root CA X3
verify error:num=10:certificate has expired
notAfter=Sep 30 14:01:15 2021 GMT
verify return:0


А тут показывается, что сертификат заканчивает действие 30 сентября 2021, то есть сертификат уже недействительный.

Я аж полез в конфиг nginx, посмотрел какой файл прописан в опции ssl_certificate, посмотрел информацию по нему:


> openssl x509 -in *****.pem -text

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            03:0d:58:dc:36:10:f7:40:f8:73:0c:19:ae:fc:d5:38:f0:00
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, O=Let's Encrypt, CN=R3
        Validity
            Not Before: Dec 30 05:15:11 2021 GMT
            Not After : Mar 30 05:15:10 2022 GMT


А тут все нормально, даты правильные. В Nginx прописан один server для протокола HTTPS, у него одна опция ssl_certificate, никакой путанницы быть не может. Именно этот сертификат и отдается в браузер.

Но почему при запросе через wget и openssl отдается какой-то странный сертификат, с закончившейся датой действия?

Мультиканальный  чат, !*! dcc0, (PHP) 10-Янв-22, 18:41  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Не помню, анонсировал ли я то, что написал открытый мультиканальный чат:
Исходники: https://github.com/dcc0/OpenChatPhp
Описание есть на github.
Модель MVC.
Технологии PHP7 (ООП), MYSQLI, AJAX, HTML5.
История чата хранится у клиента, что призвано заметно разгрузить сервер.
Мгновенное переключение между каналами мышью. Собственное оформление.

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

Пример работы:
http://comb.org.ru/chat/index.php



super pi на ubuntu, !*! san, (Разное) 26-Ноя-21, 18:53  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
везде сылка на сайт фтп,который уже не подерживается браузерами. где можно скачать?

 
Пометить прочитанным Создать тему
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Архив | Избранное | Мое | Новое | | |



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру