Строго говоря для этого сообщества это слегка оффтопик, так как события развиваются в Raspbian. Но скриптец пишется и работает в Ubuntu, так что я его выложу ниже для пользы людей. Суть в том, что синтезатор речи festival - самое узкое место в моих говорящих часах (которые еще и nas, и медиаплеер). К тому моменту как он произносит текущее время, оно уже совсем не текущее, особенно на Raspberry PI. Мой вопрос заключается в том, можно-ли как-то это оптимизировать - например держать в памяти сервер фестиваля, или есть какая-нибудь более бодрая говорилка?
А вот этот скрипт дергается по крону:
#!/usr/bin/env python2 # -*- coding: utf8 -*- import subprocess, json, requests, os, time from number_to_text import num2text os.environ['TZ'] = 'Europe/Moscow' thours = ((u'час', u'часа', u'часов'), 'm') tminutes = ((u'минута', u'минуты', u'минут'), 'f') tdeg = ((u'градус', u'градуса', u'градусов'), 'm') proc = ((u'процент', u'процента', u'процентов'), 'm') mm = ((u'миллиметр', u'миллиметра', u'миллиметров'), 'm') h = int(time.strftime('%H')) m = int(time.strftime('%M')) textout = u'Добрый день, ' if h<10: textout = u'Доброе утро, ' if h>18: textout = u'Добрый вечер, ' textout+= u'сейчас ' textout += num2text(h, thours) + ', ' + num2text(m, tminutes) + '. ' r = requests.get("http://api.openweathermap.org/data/2.5/weather?q=Moscow,ru") wo = json.loads(r.content) wr = u'Температура на улице ' intdeg = int(float(wo[u'main'][u'temp'])-273.15) inthum = int(wo[u'main'][u'humidity']) intpre = int(float(wo[u'main'][u'pressure'])/4*3) if intdeg<0: wr+=u'минус ' if intdeg>0: wr+=u'плюс ' wr+=num2text(abs(intdeg), tdeg)
print textout subprocess.call("echo \""+textout+"\"| festival --tts --language russian", shell=True) Помимо зависимостей что есть в репах, используется еще вот этот модуль. API Open weather map, кстати, возвращает дофига информации, просто пока я её в текст не заворачивал - итак долго думает. И да, если присутствует быдлокод - критикуйте, так как это по сути мой hello_world.py
Уважаемые сообщники. На ноуте Lenovo G5030 стоит Ubuntu 14.10, постоянно пропадает wifi-инет. Лечится только перезагрузкой ноута. Гуглил (оказалось, что проблема до сих пор актуальна для Ubuntu), после чего поставил Wicd Network Monitor, первые дни проблема вроде пропала, потом все вернулось на круги своя. Перезапуск wicd монитора проблему не решает, как и попытки отключиться от сетки и снова подключиться. Wifi появляется, интернет нет. Когда на ноуте стояла винда, такой проблемы не наблюдалось. На других устройствах типа телефона и планшета на андроиде никаких проблем с wifi нет. Кто-нибудь знает, как это лечится?
Уважаемые сообщники, в последнее время меня терзают смутные сомнения. Дело в том, что у меня до сих пор установлена Ubuntu 11.04. Стоит уже 4 года и вроде уже давно пора обновиться до последней версии. С одной стороны меня все устраивает, но постоянно возникают проблемы с установкой даже старых программных пакетов, а новые вообще не установить из-за проблемы зависимостей. В стандартных репозиториях моя система уже не поддерживается и ничего оттуда устанавливать не желает. Из других репозиториев программы устанавливаются, но либо не работают совсем, либо работают со скрипом и с глюками. Собирал из исходников, но тогда проблем еще больше. С другой стороны за 4 года я большинство нужных мне программ уже установил, все их настроил под себя, чего мне стоило немалых усилий. Как только представлю, что все эти настройки придется делать заново, то мне плохо становиться. Поэтому хотел спросить, а стоит ли переходить на 14.04 или все же махнуть рукой и работать на старой, доброй 11.04?
Воскресенье, 12 Октября 2014 г. 17:35
+ в цитатник
После долгих и продолжительных мучений, наконец то настроил в своем Ubuntu, редактор Vim. По дефолту в дистрибютив входила сильно урезанная версия Vim'a - Vim-Tiny. Удалось настроить проверку русской орфографии и прочее.
Дано:
Ubuntu 12.04
Apache Tomcat 6.0.35
Open JDK 1.6.0
самописные сервлеты (простые, как грабли. и даже проще).
Число одновременно открытых соединений к ATc не превышает 30 (статистика за несколько дней).
Задача: переехать сервлетам на ATc8 + JDK по вкусу (8 или 7, не важно).
Причина: уязвимости в ATc6, позволяющие учавствовать в ботнетостроении.
Проблема: под несущественной нагрузкой сервлет на ATc8+JDK8 падает с исключением "Too many connections".
Конфигурация ATc8 такая же как и у ATc6, за исключением изменений для соответствия версии. Сервлеты перенесены как-есть (в виде war'ов), права доступа проверены.
Сервлет обрабатывает на запрос HTTP/GET, авторизует используя MySQL для хранения комбинации имя:пароль, выполняет команду из запроса (ls, get, put) над файлами авторизовавшегося пользователя. При ошибке или неверном запросе возращает ошибку.
08-Sep-2014 16:05:09.360 SEVERE [http-nio-8080-exec-1] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [httpapt] in context with path [/HttpApt] threw exception [Too many connections] with root cause
javax.servlet.ServletException: Too many connections
at httpapt.HttpApt.doPost(HttpApt.java:124)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:644)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:534)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1081)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
$ cat /proc/ATc6/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 63247 63247 processes
Max open files 4096 4096 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 63247 63247 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
$ cat /proc/ATc8/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 63247 63247 processes
Max open files 16384 16384 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 63247 63247 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
Уважаемое сообщество, Никак не получается написать баш-скрипт, который бы выполнял следующие действия:
1. Войти в указанную пользователем директорию 2. Для каждого файла в данной директории выполнить следующие действия: 3. Проверить расширение файла. 4. Если не html, то перейти к следующему файлу. 5. В противном случае (если html) заменить каждый случай появления в файле строки вида Х на строку вида У. 6. Сохранить измененный файл под тем же именем. 7. Сообщить об окончании работы или выдать лог.
Воскресенье, 17 Августа 2014 г. 16:19
+ в цитатник
Уважаемые сообщники, в Ubuntu 14.04 встала проблема с разрешением экрана.
Зрение у меня - не очень. Но разрешение стоит 1280х800. Очень мелко. Стоит поставить 800х600 - между картинкой и краем монитора появляется чёрный промежуток шириной в 2 см с обеих сторон. Если ставить 1280х800 промежутков нет. 1024х768 даёт промежутки поуже. Хотелось бы их убрать совсем. Гуглил. Вероятно, линух неправильно определяет размер монитора ноутбука.
Ноут HP-530. Если верить производителю, там стандартное разрешение 1280х800.
Вопрос - что делать? Как мне поставить нормальное крупное разрешение, не теряя часть экрана?