Форум программистов, компьютерный форум, киберфорум
Apache, htaccess
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
52 / 37 / 9
Регистрация: 13.06.2019
Сообщений: 209

htaccess, CGI, perl + каталог статических файлов

18.02.2020, 08:42. Показов 1241. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется хостинг, не особо заточенный под perl. Тем не менее, требуется вкорячить на него, скажем,

%{DOCUMENT_ROOT}/my_app/scripts/myapp

можно к примеру так.
Bash
1
2
3
4
5
6
7
RewriteEngine on
 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
 
RewriteRule ^(.*)$ index.pl/$1 [L]
Но, к несчастью, очень хочется пуститься жуткий блудняк со статическими файлами:
определённые файлы в корне, типа yandex123.html доступные по адресу: example.com/yandex123.html
и все файлы в папке %{DOCUMENT_ROOT}/my_app/public/ доступные по адресу example.com/public/my.file

Понятно, хочется чтобы статические файлы отдавал сам апач.

Кстати, скрипт формирует все ссылки в корне сайта. Папки my_app как бы не существует.

Сейчас в поиске решения. Ещё напишу. Есть какие-то соображения - напишите пожалуйста.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.02.2020, 08:42
Ответы с готовыми решениями:

Perl + SSI = ошибка invalid CGI ref 'http://сервер/cgi-bin/view_bag.pl' in ....
Вопрос такой: Скрипт view_bag.pl без ошибок выполняется в папке /cgi-bin/, при этом атрибуты файла rwxr-xr-x. Но есть файл bag.shtml,...

Дебаг Perl CGI
Здравствуйте, есть ли какой нибудь нормальный способ дебага веб прожекта? Есть система отрс, написанная на перле, поднятая на апаче....

cgi-скрипт на Perl'e
Здравствуйте все) Помогите, пожалуйста, сделать, так, чтобы при успешной авторизации, выходило сообщение "Неверный логин и/или...

9
52 / 37 / 9
Регистрация: 13.06.2019
Сообщений: 209
24.02.2020, 12:54  [ТС]
Попробую более предметно:

имеется тестовая среда: CGI-приложение my_app на таком виртуальном хостинге:
httpd-vhosts.conf
Bash
1
2
3
4
5
6
7
8
<VirtualHost *:80>
    ServerName my.site
    DocumentRoot "/www/my.site"
    <Directory "/www/my.site">
        Require all granted
        AllowOverride All
    </Directory>
</VirtualHost>

минимальный рабочий .htaccess в корне сайта:
.htaccess
Bash
1
2
3
4
5
6
RewriteEngine on
 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ my_app/script/my_app/$0


при этом скрипт прозрачно обрабатывает запросы типа my.site/foo/bar ни чем не выдавая наличия каталога /my_app/

Далее, собственно проблема:
Хочу )) чтобы все запросы к несуществующему каталогу /public/ Apache прозрачно отрабатывал, как запросы к статическим файлам из каталога /my_app/public/. При этом желательно чтобы Apache на запросы к каталогу /my_app возвращал код 404.

Понятно, исходим из того, что к основному конфигу у меня доступа нет.
0
1308 / 1000 / 232
Регистрация: 01.10.2018
Сообщений: 3,894
24.02.2020, 14:31
Корневой каталог сайта по определению является публичным каталогом. Но он не обязательно должен быть "корневым каталогом" всего приложения, а скорее наоборот, т.е. использоваться по своему прямому назначению. Иными словами, корневым каталогом сайта нужно сделать my_app и перенести в него статические файлы "типа yandex123.html" из надкаталога. Если изменить корневой каталог сайта нельзя, вы просто избавляетесь от my_app, поднимая все статические файлы вместе с содержащими их каталогами на один уровень вверх, размещая все служебные и исполняемые файлы в каталоге, находящемся рядом с корневым (из-за технических ограничений в корневом каталоге можно оставить исполняемые файлы, запускаемые непосредственно сервером, например index.pl; их называют точками входа). Обезопасить сайт. авторизация с базой данных в отдельном файле

Внутреннее перенаправление только ради сокрытия my_app - это крайний случай. Я бы даже порекомендовал подыскать другой хостинг, если бы на имеющемся из-за технических ограничений сделать это по-другому было нельзя. Делается примерно так же, как и в предыдущем случае: размещаете в my_app все публичные статические файлы и, возможно, точки входа, а все прочие файлы - вне его. В .htaccess корневого каталога используете примерно такое правило:
Code
1
2
RewriteCond %{DOCUMENT_ROOT}/my_app%{REQUEST_URI} -f
RewriteRule ^.* /my_app%{REQUEST_URI} [L]
Добавлено через 15 минут
Вместо my_app при этом лучше использовать какое-нибудь более сложное имя, чтобы случайно найти находящиеся в нем файлы по адресам /my_app/* было сложно.
0
52 / 37 / 9
Регистрация: 13.06.2019
Сообщений: 209
24.02.2020, 15:15  [ТС]
ошибочка,
с приведёнными настройками mod_rewrite не делает внутренний редирект по запросу my.syte/

Поскольку, у меня теперь отладочная среда со всеми опциями отладки mod_rewrite, то хорошо видно, что происходит:

error.log
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
initial] strip per-dir prefix: /www/my.site/ -> 
initial] applying pattern '^.*$' to uri ''
initial] RewriteCond: input='/www/my.site/' pattern='!-f' => matched
initial] RewriteCond: input='/www/my.site/' pattern='!-l' => matched
initial] RewriteCond: input='/www/my.site/' pattern='!-d' => not-matched
initial] pass through /www/my.site/
subreq] strip per-dir prefix: /www/my.site/index.php -> index.php
subreq] applying pattern '^.*$' to uri 'index.php'
subreq] RewriteCond: input='/www/my.site/index.php' pattern='!-f' => matched
subreq] RewriteCond: input='/www/my.site/index.php' pattern='!-l' => matched
subreq] RewriteCond: input='/www/my.site/index.php' pattern='!-d' => matched
subreq] rewrite 'index.php' -> 'my_app/script/my_app/index.php'
subreq] add per-dir prefix: my_app/script/my_app/index.php -> /www/my.site/my_app/script/my_app/index.php
subreq] strip document_root prefix: /www/my.site/my_app/script/my_app/index.php -> /my_app/script/my_app/index.php
subreq] internal redirect with /my_app/script/my_app/index.php [INTERNAL REDIRECT]
subreq] strip per-dir prefix: /www/my.site/index.html -> index.html
subreq] applying pattern '^.*$' to uri 'index.html'
subreq] RewriteCond: input='/www/my.site/index.html' pattern='!-f' => matched
subreq] RewriteCond: input='/www/my.site/index.html' pattern='!-l' => matched
subreq] RewriteCond: input='/www/my.site/index.html' pattern='!-d' => matched
subreq] rewrite 'index.html' -> 'my_app/script/my_app/index.html'
subreq] add per-dir prefix: my_app/script/my_app/index.html -> /www/my.site/my_app/script/my_app/index.html
subreq] strip document_root prefix: /www/my.site/my_app/script/my_app/index.html -> /my_app/script/my_app/index.html
subreq] internal redirect with /my_app/script/my_app/index.html [INTERNAL REDIRECT]
subreq] strip per-dir prefix: /www/my.site/index.htm -> index.htm
subreq] applying pattern '^.*$' to uri 'index.htm'
subreq] RewriteCond: input='/www/my.site/index.htm' pattern='!-f' => matched
subreq] RewriteCond: input='/www/my.site/index.htm' pattern='!-l' => matched
subreq] RewriteCond: input='/www/my.site/index.htm' pattern='!-d' => matched
subreq] rewrite 'index.htm' -> 'my_app/script/my_app/index.htm'
subreq] add per-dir prefix: my_app/script/my_app/index.htm -> /www/my.site/my_app/script/my_app/index.htm
subreq] strip document_root prefix: /www/my.site/my_app/script/my_app/index.htm -> /my_app/script/my_app/index.htm
subreq] internal redirect with /my_app/script/my_app/index.htm [INTERNAL REDIRECT]
[autoindex:error] Cannot serve directory /www/my.site/: No matching DirectoryIndex (index.php,index.html,index.htm) found, and server-generated directory index forbidden by Options directive

Похоже, после всех проверок apache всё же решает выдать код 403.
Упростим начальные настройки:

.htaccess
Bash
1
2
3
4
RewriteEngine on
 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ my_app/script/my_app/$0


error.log
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
initial] strip per-dir prefix: /www/my.site/ -> 
initial] applying pattern '^.*$' to uri ''
initial] RewriteCond: input='/www/my.site/' pattern='!-f' => matched
initial] rewrite '' -> 'my_app/script/my_app/'
initial] add per-dir prefix: my_app/script/my_app/ -> /www/my.site/my_app/script/my_app/
initial] strip document_root prefix: /www/my.site/my_app/script/my_app/ -> /my_app/script/my_app/
initial] internal redirect with /my_app/script/my_app/ [INTERNAL REDIRECT]
initial/redir#1] add path info postfix: /www/my.site/my_app/script/my_app -> /www/my.site/my_app/script/my_app/
initial/redir#1] strip per-dir prefix: /www/my.site/my_app/script/my_app/ -> my_app/script/my_app/
initial/redir#1] applying pattern '^.*$' to uri 'my_app/script/my_app/'
initial/redir#1] RewriteCond: input='/www/my.site/my_app/script/my_app' pattern='!-f' => not-matched
initial/redir#1] pass through /www/my.site/my_app/script/my_app
subreq] strip per-dir prefix: /www/my.site/ -> 
subreq] applying pattern '^.*$' to uri ''
subreq] RewriteCond: input='/www/my.site/' pattern='!-f' => matched
subreq] rewrite '' -> 'my_app/script/my_app/'
subreq] add per-dir prefix: my_app/script/my_app/ -> /www/my.site/my_app/script/my_app/
subreq] strip document_root prefix: /www/my.site/my_app/script/my_app/ -> /my_app/script/my_app/
subreq] internal redirect with /my_app/script/my_app/ [INTERNAL REDIRECT]


Добавлено через 9 минут
estic,
да, в корневом должны лежать статические файлы, но предлагаю с этим потом разобраться.
хочу именно с /public ==> /my_app/public в первую очередь разобраться.

структура подкаталогов в /my_app предопределена

Имя my_app взято для лабораторной-отладочной среды.
0
1308 / 1000 / 232
Регистрация: 01.10.2018
Сообщений: 3,894
24.02.2020, 15:26
Цитата Сообщение от mark74 Посмотреть сообщение
хочу именно с /public ==> /my_app/public в первую очередь разобраться.
Я написал, что это внутреннее перенаправление лишнее. Но если хочется все усложнить, также написал, как это сделать.
0
52 / 37 / 9
Регистрация: 13.06.2019
Сообщений: 209
24.02.2020, 16:12  [ТС]
проверяю такой вариант

.htaccess
Bash
1
2
3
4
5
6
7
RewriteEngine on
 
RewriteCond %{IS_SUBREQ} "=false"
RewriteRule "^public/.*$" "my_app/$0" [L]
 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ my_app/script/my_app/$0


вроде работает, когда файл реально есть в каталоге:
error.log
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
initial]initial] add path info postfix: /www/my.site/public -> /www/my.site/public/logo.jpg
initial] strip per-dir prefix: /www/my.site/public/logo.jpg -> public/logo.jpg
initial] applying pattern '^public/.*$' to uri 'public/logo.jpg'
initial] RewriteCond: input='false' pattern='=false' => matched
initial] rewrite 'public/logo.jpg' -> 'my_app/public/logo.jpg'
initial] add per-dir prefix: my_app/public/logo.jpg -> /www/my.site/my_app/public/logo.jpg
initial] strip document_root prefix: /www/my.site/my_app/public/logo.jpg -> /my_app/public/logo.jpg
initial] internal redirect with /my_app/public/logo.jpg [INTERNAL REDIRECT]
initial/redir#1] strip per-dir prefix: /www/my.site/my_app/public/logo.jpg -> my_app/public/logo.jpg
initial/redir#1] applying pattern '^public/.*$' to uri 'my_app/public/logo.jpg'
initial/redir#1] strip per-dir prefix: /www/my.site/my_app/public/logo.jpg -> my_app/public/logo.jpg
initial/redir#1] applying pattern '^.*$' to uri 'my_app/public/logo.jpg'
initial/redir#1] RewriteCond: input='/www/my.site/my_app/public/logo.jpg' pattern='!-f' => not-matched
initial/redir#1] pass through /www/my.site/my_app/public/logo.jpg

если файла нет, то с этими настройками происходит внутренний редирект на скрипт, что не правильно:

error.log
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
initial] add path info postfix: /www/my.site/public -> /www/my.site/public/logo.jp
initial] strip per-dir prefix: /www/my.site/public/logo.jp -> public/logo.jp
initial] applying pattern '^public/.*$' to uri 'public/logo.jp'
initial] RewriteCond: input='false' pattern='=false' => matched
initial] rewrite 'public/logo.jp' -> 'my_app/public/logo.jp'
initial] add per-dir prefix: my_app/public/logo.jp -> /www/my.site/my_app/public/logo.jp
initial] strip document_root prefix: /www/my.site/my_app/public/logo.jp -> /my_app/public/logo.jp
initial] internal redirect with /my_app/public/logo.jp [INTERNAL REDIRECT]
initial/redir#1] strip per-dir prefix: /www/my.site/my_app/public/logo.jp -> my_app/public/logo.jp
initial/redir#1] applying pattern '^public/.*$' to uri 'my_app/public/logo.jp'
initial/redir#1] strip per-dir prefix: /www/my.site/my_app/public/logo.jp -> my_app/public/logo.jp
initial/redir#1] applying pattern '^.*$' to uri 'my_app/public/logo.jp'
initial/redir#1] RewriteCond: input='/www/my.site/my_app/public/logo.jp' pattern='!-f' => matched
initial/redir#1] rewrite 'my_app/public/logo.jp' -> 'my_app/script/my_app/my_app/public/logo.jp'
initial/redir#1] add per-dir prefix: my_app/script/my_app/my_app/public/logo.jp -> /www/my.site/my_app/script/my_app/my_app/public/logo.jp
initial/redir#1] strip document_root prefix: /www/my.site/my_app/script/my_app/my_app/public/logo.jp -> /my_app/script/my_app/my_app/public/logo.jp
initial/redir#1] internal redirect with /my_app/script/my_app/my_app/public/logo.jp [INTERNAL REDIRECT]
initial/redir#2] add path info postfix: /www/my.site/my_app/script/my_app -> /www/my.site/my_app/script/my_app/my_app/public/logo.jp
initial/redir#2] strip per-dir prefix: /www/my.site/my_app/script/my_app/my_app/public/logo.jp -> my_app/script/my_app/my_app/public/logo.jp
initial/redir#2] applying pattern '^public/.*$' to uri 'my_app/script/my_app/my_app/public/logo.jp'
initial/redir#2] add path info postfix: /www/my.site/my_app/script/my_app -> /www/my.site/my_app/script/my_app/my_app/public/logo.jp
initial/redir#2] strip per-dir prefix: /www/my.site/my_app/script/my_app/my_app/public/logo.jp -> my_app/script/my_app/my_app/public/logo.jp
initial/redir#2] applying pattern '^.*$' to uri 'my_app/script/my_app/my_app/public/logo.jp'
initial/redir#2] RewriteCond: input='/www/my.site/my_app/script/my_app' pattern='!-f' => not-matched
initial/redir#2] pass through /www/my.site/my_app/script/my_app
subreq] strip per-dir prefix: /www/my.site/my_app/public/logo.jp -> my_app/public/logo.jp
subreq] applying pattern '^public/.*$' to uri 'my_app/public/logo.jp'
subreq] strip per-dir prefix: /www/my.site/my_app/public/logo.jp -> my_app/public/logo.jp
subreq] applying pattern '^.*$' to uri 'my_app/public/logo.jp'
subreq] RewriteCond: input='/www/my.site/my_app/public/logo.jp' pattern='!-f' => matched
subreq] rewrite 'my_app/public/logo.jp' -> 'my_app/script/my_app/my_app/public/logo.jp'
subreq] add per-dir prefix: my_app/script/my_app/my_app/public/logo.jp -> /www/my.site/my_app/script/my_app/my_app/public/logo.jp
subreq] strip document_root prefix: /www/my.site/my_app/script/my_app/my_app/public/logo.jp -> /my_app/script/my_app/my_app/public/logo.jp
subreq] internal redirect with /my_app/script/my_app/my_app/public/logo.jp [INTERNAL REDIRECT]


Добавлено через 16 минут
estic,
спасибо, я читаю
но ваш вариант сложно реализовать, так как скрипт уже написан и структура каталогов предопределена.
скрипт умеет обрабатывать статические файлы, но отработка на уровне апача всё же быстрее должна быть.
0
1308 / 1000 / 232
Регистрация: 01.10.2018
Сообщений: 3,894
24.02.2020, 17:24
О чем вы? Я вам не писал, что нужно "обрабатывать статические файлы" скриптом (если речь, конечно, не о выводе оглавления каталога, о чем можно было подумать, глядя на концовку названия темы).

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

Добавлено через 6 минут
Цитата Сообщение от mark74 Посмотреть сообщение
но ваш вариант сложно реализовать
Я вам два варианта описал. Правильный и неправильный. Неправильный - это практически то, что вы просили. Можете использовать его. В чем сложность?
0
52 / 37 / 9
Регистрация: 13.06.2019
Сообщений: 209
24.02.2020, 17:52  [ТС]
На данный момент проблема со случаем когда файла нет, но всё таки не нужно вызывать скрипт, можно сразу вернуть 404.
Сейчас уже вопрос принципиальный, настроить так и понять как вообще это работает.

Добавлено через 1 минуту
... на примере понять как работает mod_rewrite.
если найду решение, напишу ))
0
1308 / 1000 / 232
Регистрация: 01.10.2018
Сообщений: 3,894
24.02.2020, 18:25
Цитата Сообщение от mark74 Посмотреть сообщение
но всё таки не нужно вызывать скрипт, можно сразу вернуть 404
Используйте ErrorDocument 404 для такого внутреннего перенаправления, хотя обычно в современных сайтах подобные ошибки тоже обрабатываются на прикладном уровне (за редкими исключениями).

По идее предопределенная страница ошибки 404 и так должна выдаваться сервером. Или речь о том, что вы получаете ошибку 403 вместо 404? Это, видимо, из-за чего-то лишнего в .htaccess.

Добавлено через 1 минуту
И не забывайте вставлять обращение или авторское цитирование, если обращаетесь ко мне

Добавлено через 11 минут
Цитата Сообщение от mark74 Посмотреть сообщение
когда файла нет, но всё таки не нужно вызывать скрипт
Если речь о третей логической ветви, то нужно для нее определить критерий. Но лучше опять-таки не усложнять. Обычно используют максимум два варианта выбора.
0
52 / 37 / 9
Регистрация: 13.06.2019
Сообщений: 209
01.03.2020, 18:44  [ТС]
Народ, если вдруг кому то эта тема интересна,
хотелось бы подитожить свои изыскания.

задача была:

во-первых,
на виртуальном хостинге
с возможностями настройки только через .htaccess
скрыть факт запуска скрипта из подкаталога так, чтобы все ресурсы сайта были доступны через человекочетаемые URL
к примеру
http://my.site/foo/bar
превращался бы во внутренний редирект /my_app/script/my_app/foo/bar
где выделен жирным CGI-скрипт

во-вторых,

скрыть факт размещения статических файлов в подкаталоге скрипта
например, запрос
http://my.site/public/logo.jpg
должен превращаться во внутренний редирект к файлу /my_app/public/logo.jpg

это всё решается так

/.htaccess
Code
1
2
3
4
5
6
7
8
9
RewriteEngine on
 
RewriteRule "^public/.*$" "my_app/$0" [L]
 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d [OR]
RewriteCond %{REQUEST_URI} "=/"
RewriteRule ^.*$ my_app/script/my_app/$0

/my_app/script/.htaccess
Code
1
2
Options +ExecCGI
SetHandler cgi-script


те ситуации которые не удалось отработать на уровне апача, такие, как прямые запросы к скрипту, или запросы к несуществующим файлам из public/, пришлось отрабатывать в CGI-программе.

вот и сказочки конец, а кто слушал - молодец
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.03.2020, 18:44
Помогаю со студенческими работами здесь

CGI скрипт на perl
помогите пожалуйста написать cgi скрипт на perl, который будет проверять фамилия ли это, имя, отчество человека или нечто другое например...

Получение IP-адреса в Perl - не CGI
if ($ENV{'HTTP_X_FORWARDED_FOR'}) # если соединение происходит через прокси { $ip=$ENV{'HTTP_X_FORWARDED_FOR'}; # запишем в...

Perl в CGI выполнения команд linux
Всем привет! начал учить perl. Есть задача сразу по делу. Надо сделать CGI страницу, на которой будет 2 формы, в одной вписывается номер, в...

CGI (Perl) и ASP. Можно ли их сдружить ?
Проблема вот в чем, есть уже написаный сервер статистики юзеров на Perl. А после перевода сайта под АСП... не у дается гармонично вживить...

Странное поведение CGI Perl под win32
Не могу понять логику Perl, так как использую впервые. Скачал один движек ClipShare (php+perl), в котором perl используется для аплоэда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru