Опубликовано
Комментарии Нет

Иногда в батник нужно передать параметр с пробелом.
Очевидно, что его нужно заключить в кавычки.
А вот как убрать кавычки, если параметр дальше используется?

Довольно просто:

set pt=%1
:: Убираем кавычки
set p=%pt:~1,-1%

Теперь переменная p содержит значение переданного параметра без кавычек.

Автор
Категории

Опубликовано
Комментарии Нет

Обнаружил, что иногда CouchDB, запущенная на VDS у хостера валится, выдавая в логи странное сообщение:

Executed "/usr/local/bin/couchdb -k" -> 0. Terminating.

Оказалось, все дело в волшебных пузырьках работе сервера на Ерланге. Происходит рассинхронизация времени у хостера и внутри виртуальной машины, веб-сервер CouchDB не получает ответа в течение нескольких секунд и останавливается.

Чтобы этого не происходило, надо указать CouchDB, что необходим перезапуск.

Делается это с помощью ключа -r <int> в командной строке (если вдруг запускаете вручную), или же с помощью параметра couchdb_respawn=<int> в файле /etc/rc.conf. Здесь <int> – время в секундах до следующего перезапуска. По умолчанию сервер не перезапускается, что может быть не очень приятно.

Костыль, конечно, но работает.

UPD: Если CouchDB установлено внутри виртуальной машины (VirtualBox, например), то после перезапуска ВМ CouchDB также останавливается. Приведенное решение избавляет от этого досадного недостатка.

Автор
Категории ,

Опубликовано
Комментарии Нет

ООО «Альтернатива» оказывает услуги в области информационных технологий.

Развертывание программных комплексов на основе СУБД MS SQL, Oracle, MySQL, CouchDB.

Установка и настройка систем CRM, в том числе TerraSoft CRM.

Разработка ПО на языках программирования C#, Embarcadero Delphi, Common Lisp.

Интеграция программных комплексов между собой, обеспечение транзита данных между разнородными системами, миграция данных, конвертация данных между системами. Автоматизация процессов миграции и конвертации.

Разработка систем поиска информации на основе ПО SphinxSearch.

Создание (доработка) систем формирования отчетов на базе ПО FastReport, JasperServer.

Системное администрирование серверного ПО: Microsoft Windows, Oracle Database, MS SQL Server, FreeBSD.

Автор
Категории

Опубликовано
Комментарии Нет

Если вы делаете сайт на Common Lisp с помощью RESTAS, то вы можете воспользоваться возможностями инспектора сайтов, который показывает вам структуру вашего сайта (сайтов), подключенные маршруты, модули и т.д.

Для этого в RESTAS есть специальный функционал, расширяющий возможности системы. Это система RESTAS-SWANK. Загвоздка, однако, состоит в том, что эта система отключена, и чтобы её запустить, необходимо выполнить две вещи:

  1. настроить Emacs для загрузки этой системы,
  2. загрузить систему RESTAS-SWANK.

Во время загрузки RESTAS-SWANK происходит передача в Emacs кода, создающего функцию restas-inspector в Emacs. Для того, чтобы он выполнился, необходимо установить переменную slime-enable-evaluate-in-emacs в T.

Итак, резюмирую.

Шаг 1. Устанавливаем в Emacs переменную slime-enable-evaluate-in-emacs (после загрузки Slime, разумеется):

M-x set-variable RET slime-enable-evaluate-in-emacs RET t RET

Шаг 2. Выполняем следующую функцию:

(defun init-restas-swank () 
  (ql:quickload "restas")
  (let* ((rs (asdf:find-system 'restas))
	 (path (pathname-directory (asdf:system-source-directory rs))))
    (push (make-pathname :directory (append path (list "slime"))) asdf:*central-registry*))
  (ql:quickload "restas-swank"))

Шаг 3. В Emacs вызываем функцию restas-inspector:

M-x restas-inspector RET

Ну а дальше разберетесь, где-что. Удачи!

Автор
Категории ,

Опубликовано
Комментарии Нет

Сгорел у меня намедни роутер. Старенький был, пришло время ему.

После торжественных похорон был куплен новый — ZyXEL Keenetic Lite II. Выбор был хоть и мучительным, но недолгим.

После инсталляции оказалось, что у него нет одной важной функции. Отсутствует возможность производить манипуляции с настройками по расписанию. Т.е. штатными средствами нельзя выключить WiFi в определенное время, или заблокировать какой-то сайт на определенное время. Функция эта очень востребована, если у вас есть дети со смартфонами. Если в свое время мы с фонариком зачитывались книжками под одеялом, то теперь под этим же одеялом дети сидят в чатах. Блокировка WiFi появилась тогда, когда я пару раз ловил ребенка сидящим «ВКонтактике» в два часа ночи.

А по ночам детям нужно спать!

В целом работа устройства мне нравится. Держит интернет очень хорошо, скорость выдает нормально. Что называется, включил и забыл. Но было немного досадно от того, что проглядел при покупке такую «мелочь».

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

Я же придумал и реализовал более простой способ.

Сейчас в большинстве устройств можно найти какой-нибудь Linux. А где есть Linux, там есть и cron. Если есть cron, значит есть управление временем. Это половина дела. В моем случае это оказался домашний NAS, в котором установлена сильно порезанная версия Linux; cron, тем не менее, там присутствует.

Вторая половина дела — это возможность управления роутером через терминал, наличие интерфейса командной строки.

За вечер были написаны скрипты блокировки/разблокировки. Эти скрипты запускаются по расписанию на NAS сервере. В скрипте производится подключение к роутеру и модификация правил фильтрации. Для всех блокируемых устройств в сети заведены фиксированные IP-адреса, чтобы нельзя было так просто обойти брендмауэр и включена фильтрация MAC-адресов по белому списку.

Отправка команд на роутер осуществляется с помощью «армейского ножа» — команды netcat.

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

Блокировка конкретного адреса (скрипт phone_deny):

/opt/bin/netcat-nc -i 4 192.168.1.1 23 < /opt/etc/fw/deny.phone

Содержимое deny.phone:

[login]
[password]
access-list _WEBADMIN_Home
deny tcp 192.168.1.5 255.255.255.255 0.0.0.0 0.0.0.0
deny udp 192.168.1.5 255.255.255.255 0.0.0.0 0.0.0.0
exit
exit

Понятно, что [login] и [password] необходимо заменить на ваши. Этот скрипт блокирует доступ конкретному адресу по протоколам tcp и udp.

Ему соответствует парный скрипт (phone_allow):

/opt/bin/netcat-nc -i 4 192.168.1.1 23 < /opt/etc/fw/allow.phone

Содержимое allow.phone:

[login]
[password]
access-list _WEBADMIN_Home
no deny tcp 192.168.1.5 255.255.255.255 0.0.0.0 0.0.0.0
no deny udp 192.168.1.5 255.255.255.255 0.0.0.0 0.0.0.0
exit
exit

Скрипт deny.phone запускается в 21:30, allow.phone — в 9 утра.

Детям в школе задают много уроков, которые нужно делать на компьютере. Поэтому часто бывает, что до 9 утра компьютер уже включен. Чтобы ребенок делал уроки, а не сидел снова «Вконтактике», дополнительно еще сделаны скрипты для блокировки/разблокировки доступа к сайту vk.com.

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

Содержимое deny.vk:

[login]
[password]
access-list _WEBADMIN_Home
deny tcp 0.0.0.0 0.0.0.0 87.240.128.0 255.255.192.0
deny tcp 0.0.0.0 0.0.0.0 93.186.224.0 255.255.248.0
deny tcp 0.0.0.0 0.0.0.0 93.186.232.0 255.255.248.0
deny tcp 0.0.0.0 0.0.0.0 95.142.192.0 255.255.248.0
deny tcp 0.0.0.0 0.0.0.0 95.142.201.0 255.255.240.0
deny tcp 0.0.0.0 0.0.0.0 95.142.206.0 255.255.240.0
deny tcp 0.0.0.0 0.0.0.0 95.213.0.0 255.255.192.0
deny tcp 0.0.0.0 0.0.0.0 95.142.200.0 255.255.248.0
exit
exit

Содержимое allow.vk:

[login]
[password]
access-list _WEBADMIN_Home
no deny tcp 0.0.0.0 0.0.0.0 87.240.128.0 255.255.192.0
no deny tcp 0.0.0.0 0.0.0.0 93.186.224.0 255.255.248.0
no deny tcp 0.0.0.0 0.0.0.0 93.186.232.0 255.255.248.0
no deny tcp 0.0.0.0 0.0.0.0 95.142.192.0 255.255.248.0
no deny tcp 0.0.0.0 0.0.0.0 95.142.201.0 255.255.240.0
no deny tcp 0.0.0.0 0.0.0.0 95.142.206.0 255.255.240.0
no deny tcp 0.0.0.0 0.0.0.0 95.213.0.0 255.255.192.0
no deny tcp 0.0.0.0 0.0.0.0 95.142.200.0 255.255.248.0
exit
exit

Запуск производится аналогично.

Дешево и сердито. Приятный бонус состоит в том, что этот способ блокировки довольно гибкий и он спокойно переживает перезагрузку как роутера, так и NAS, на котором запускается cron.

Диапазоны ВКонтакта выужены на просторах интернета

Наименование _WEBADMIN_Home получено путем анализа действующей конфигурации роутера.

Спасибо за внимание.

Автор
Категории

← Старые Новые →