LINUX.ORG.RU

Избранные сообщения igor_kr

Состряпал конструктор SQL на Java

Форум — Development

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

В связи с чем я решил разработать его аналог на Java: https://github.com/r0ck3r/IQL

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

Connection con = DriverManager.getConnection("jdbc:mysql://server/database", properties);

Вставка данных:

IQL iql = new IQL(con);  
iql.addTable("mytable");  
iql.setInsertRows("name %s", "register_date %d", "level %i");  
iql.insert("User1", "17.05.2017", 4);  
iql.insert("User2", "12.03.2016", 5);  
Statement st = iql.getStatement();

Сгенерирует следующее:

INSERT INTO `mytable`(`name`, `register_date`, `level`) VALUES ('User1', 1494968400, 4), ('User2', 1457730000, 5)

Обновление данных:

IQL iql = new IQL(con);  
iql.addTable("organisations");  
iql.setUpdateRows("name %s", "address %s");  
iql.update("New orgname", "New address");  
iql.whereId(112);  
PreparedStatement ps = iql.getStatement();
Сгенерирует следующее:
UPDATE `organisations` SET `name` = 'New orgname', `address` = 'New address' WHERE `organisations`.`id` = 112
при этом, если для операций обновления или удаления не указан where, то будет сгенерировано исключение

Пример выборки:

IQL iql = new IQL(con);
iql.addTable("domains").select("subdomain subdomain", "domain domain").where("domain %s", IQL.ISNTNULL);
iql.addTable("orgs").select("org_name name", "org_address address").where("org_name %s", IQL.LIKE, "%организация%");
iql.join(2, "id", 1, "org_id"); //присоединить к таблице №2 (orgs) таблицу №1 domains по полям id из orgs к org_id из domains
String SQL = iql.getSQL();

Создаст следующий SQL-код:

SELECT 
`domains`.`subdomain` AS `subdomain`, 
`domains`.`domain` AS `domain`, 
`orgs`.`org_name` AS `name`, 
`orgs`.`org_address` AS `address` 
FROM `orgs` 
JOIN `domains` ON `orgs`.`id` = `domains`.`org_id` 
WHERE 
`domains`.`domain` IS NOT NULL AND 
`orgs`.`org_name` LIKE '%организация%'

В общем, кому надо - используйте

 , , , ,

r0ck3r
()

Изучение Java с помощью курса (решение разнобразных задач), кто проходил?

Форум — General

Кто занимался на курсе (JavaRush) по изучению программирования на Java? Не так давно с ним познакомился. Понравилось там выполнять задания, писать код, учиться и тд. Но интересует вопрос, реально ли после него устроиться на работу? или это все реклама? Количество материала, задачи(около 1200), и 20 минипроектов это конечно круто, но хватит ли этого для Java junior developer? (Ну и книги почитать само собой(филоссофия Java например или head first java), и html, css, java script подучить немного.) И не завалялись у кого случаем нерешенные (чистые) задания (те что выше 10 уровня)? Буду очень благодарен).

 , ,

Lily32
()

Vim, FZF, zsh, Tmux, Base16 и другое

Галерея — Скриншоты

Мое стандартное рабочее окружение. Уже более 3х лет использую и доволен. Конечно в процессе делал улучшения, раньше было куда хуже. Надеюсь в будущем будет лучше и удобнее. Пытался уйти на Sublime и даже на PyCharm. Не вышло, слишком тяжело было работать. Так и остался в виме.

На скрине tmux, мой любимый FZF, который дружит со всем - git, ag, vim, tmux, ctags. Шрифты - Monoid regular

Цветовая схема base16 (плагин для вима + base16-shell). Удобно менять цветовые схемы, просто вводим в консоле base16_<tab>

Для zsh использую oh-my-zsh (пока свой конфиг не освоил, и смысла не вижу куда то уходить). Все остальное - свое.

Vim лежит тут http://github.com/aliev/vim очень прошу, если есть замечания по коду - пишите, исправлю(сь).

Другие скриншоты:

Go to symbol in current buffer: https://habrastorage.org/files/c66/b04/7cb/c66b047cb6a547319497d3cfd8c33a3c.png

Git history with preview: https://hsto.org/files/fad/310/055/fad310055ab041d2a350523a52f06cf8.png

Ссылки:

https://github.com/aliev/vim

https://github.com/junegunn/fzf

https://github.com/junegunn/fzf.vim

https://github.com/junegunn/vim-plug

https://github.com/larsenwork/monoid

https://github.com/chriskempson/base16-shell/

>>> Просмотр (1680x1050, 745 Kb)

 ,

shamkir
()

Озвучка видео в линуксе

Форум — Multimedia

ЭТО НЕ ВОПРОС! ЭТО ГОТОВОЕ РЕШЕНИЕ!

sudo cast AP, ist76. Чот больше и не могу вспомнить кому будет интересно.

В начале 2000-х под офтопиком у меня был опыт озвучки короткометражки (не столько в микрофонном смысле, сколько в комплексном, наложение звуков взрывов, ударов, криков, музыки, автоматизация, эффекты, мастеринг). И теперь вот понадобилось сделать то же самое в онтопике.

Конечно, мое решение не единственное. Но я опишу здесь то, что взлетит в 99.999% случаев, т.к. состоит из проверенного временем минимального набора ПО. Решение дающее реально качественный результат на выходе.

Сейчас будет о том, как удобно и правильно озвучить абсолютно любое видео, в том числе, с возможностью переозвучить (ревер комнаты, шум, тихие фразы) диалоги из видеоряда.

Сначала теория.

Главные комплексные вопросы: Как синхронизировать начитку синхронного перевода или озвучки с исходным звуком и видеорядом? Как применить аудиоэффекты и чтобы каждый был в свое время, место и с определенными настройками? Как сделать 5.1 или вклиниться в исходный 5.1 или просто сделать 2.0 но на уровне профессионального качества?

Обычно начитывают в микрофон в отдельной программе и потом импортируют кусками в видеоредактор в дополнительную дорожку, подгоняя расположение фраз во времени с видеорядом. Или начитывают прямо в видеоредакторе. Но видеоредактор, он на то и видео, что не аудио и не имеет возможности полноценно работать со звуком. А если нужно добавить звук очень синхронно как в клипах? Или накидать синхронных шумов (пердежь, бьющееся стекло, выстрелы, скрип шагов по снегу, etc..)?

Выводы:

1) Нам нужна DAW (многодорожка, VST(i), LADSPA, automation и прочее).
2) DAW должна уметь мониторинг видео!

Для себя я выбрал Ardour.

Но тут есть нюанс. Ardour поддерживает видеодорожку, но с какой-то там конкретной версии. К тому же, эта шляпа поставляется в качестве отдельной фичи, и нужно конпелять с этим патчем (возможно я и плохо смотрел, тем не менее, зачем искать конкретные версии, возможно этой не будет в репозитории вашей системы или не будет готового пакета). Да и сам патч стартует сервер слушающий сокет и реализует какой-то свой протокол синхронизации. Это как удаление зубов через задний проход. А еще в этом патче есть php (по-ха-пэ!) — ну его нахер этот патч. Так что просто берем тот Ardour который есть в вашей системе.

ГЛАВНОЕ:

Не нужно искать DAW которая умеет видеомониторинг из коробки!
Любая нормальная DAW в линуксе умеет в jack!
Т.е. вы можете взять другую DAW вместо Ardour, я же рассказываю про Ardour.


Вот оно: jack, Ardour, xjadeo. Эти компоненты работают так, как нам нужно. Ardour и xjadeo синкуются через jack.

Описываю по шагам ваши действия:

1) Заканчиваем работу над видеороликом в видеоредакторе не обращая внимания на качество звука — тут главное качество видео.
2) Пережимаем с помощью ffmpeg видеоролик в *.avi (без аудио) говняного качества и/или без сжатия (для того чтобы воспроизведение видео не жрало ресурсы).
3) С помощью ffmpeg вычленяем исходное аудио из качественного видеоролика.
4) Стартуем jack (ставим желаемый samplerate, например 48000гц).
5) Создаем в Ardour проект (внимание на samplerate и fps!).
6) Импортируем в проект исходное аудио, вычленненое ранее с помощью ffmpeg (2.0, 5.1, какое оно там у вас было не важно).
7) Устанавливаем в Ardour опшн «Positional sync source» в значение «JACK».
8) Стартуем xjadeo: $ xjadeo -i 3 /path/do/govno-quality.avi

Картинко

Теперь можно полноценно работать над звуком! Можете начитывать в микрофон прямо просматривая видео. Делать дубли. Двигать, резать, клеить начитанное прямо в DAW и проверять в реальном времени как оно сходится с тем что происходит в видеоряде или соотносится с оригинальным аудио. Добавлять любое кол-во дорожек. Микшировать так как хочется. Применять эффекты и автоматизацию.

После того как вы завершили работу с звуковой частью вашего фильма — рендерите готовый проект в *.wav (умеет и 5.1 например) и склеиваете через ffmpeg старое видео и новое аудио в результирующий видеофайл. Все!

 , , ,

deep-purple
()

CloudCross — мульти-облачный клиент

Новости — Open Source
Группа Open Source

Вышла новая версия консольного мульти-облачного клиента для синхронизации локальных файлов с различными облачными хранилищами.

Возможности:

  • Поддержка Google Drive и Dropbox.
  • Конвертация «на лету» из офисных форматов в формат Google Docs и обратно.
  • Возможность определения приоритета синхронизации локальных файлов над удаленными или наоборот.
  • Поддержка черных и белых списков файлов для синхронизации

>>> Подробности

 , ,

CreepingDeath
()

Нужна ли лекция по KiCAD? [сделаль]

Форум — Talks

Иногда создаю на ЛОР-е темы не про МЛУГ, вот собственно в своё время был тред о том нужна ли лекция о KiCAD. Собственно фестивалей по линукс в Москве, что-то не предвидится, а записывать скринкаст на семинаре, как показала практика - плохо.

В общем доделал видео о начальной работе в KiCAD

В общем к своему ужасу ожидаю обратной связи от ЛОР-а, конструктивной. Что ещё осветить, что добавить в начальный урок, а что убрать. Чем заменить screenkey.

pihter, Puzan, Eddy_Em, AP, CYB3R, Kosyak, ncrmnt, SMD

 , ,

DR_SL
()

Автосимулятор GRID Autosport теперь доступен под Linux!

Новости — Игры
Группа Игры

GRID — игра в жанре автосимулятора. В игре доступно 78 автомобилей, более 100 трасс на 22 локациях и пять режимов: Touring, Endurance, Open Wheel, Tuner и Street.

>>> Подробности

 ,

CPU-550
()

уголок, куда я убегаю от семьи

Галерея — Рабочие места

кабинет в квартире куда я сбегаю от жены и детей, когда окончательно достанут.

на фото реальный рабочий порядок, греющий душу ежевечерне.

предназначен данный уголок для рисования и работы.

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

>>> Просмотр (5118x3999, 1039 Kb)

 

pyometra
()

Перебрать все темы vim через некоторый интервал времени

Форум — General

Мне хотелось бы, чтобы все цветовые схемы vim сменились у меня перед глазами в vim/gvim с интервалом в несколько секунд, а то я устал их по одной переключать в поисках идеала. Есть ли способ этого добиться? Заранее спасибо.

 , ,

jaliwo
()

Laptop энергопотребление и шум

Форум — General

Пришлось сегодня на рабочий годовалый ноут (Lenovo Y50-70 i7-4710HQ@2.50GHz) втулить gentoo (дуалбутом). Ноут и под виндой шумел жутко и грелся как печка, а под линуксом да еще при сборке гетушных пакетов вообще на «взлет пошел», и греется как сковородка. Окозалось что мой CPU хоть и позиционируется как 2.5GHz но при сильной нагрузке он разгоняется аж до 3.5GHz - отсюда шум и разогрев недецкий.

Решил я ноут перевести в более комфортный режим работы, еще года 3-4 назад я для похожей задачи набросал простенький скрипт (cputune), пользуясь случаем его немного окультурил и решил тут выложить - вдруг кому понадобтся, да и кто шел начинает изучать может интересно будет посмотреть.

#!/bin/bash

cpus=(`ls /sys/devices/system/cpu|grep -e 'cpu[0-9]\+'`)
cpu0=${cpus[0]}
cpuN=${#cpus[*]}

min=`cat /sys/devices/system/cpu/${cpu0}/cpufreq/cpuinfo_min_freq`
max=`cat /sys/devices/system/cpu/${cpu0}/cpufreq/cpuinfo_max_freq`

function setGovernor {
        for cpu in ${cpus[*]}; do
                echo "${1}" > "/sys/devices/system/cpu/${cpu}/cpufreq/scaling_governor"
        done
}
function toHZ {
        i=$((${#1} - 1))
        case "${1:$i:1}" in
                'G' ) r=$((${1:0:$i} * 1000000)) ;;
                'M' ) r=$((${1:0:$i} *    1000)) ;;
                *   ) r="${1}" ;;
        esac
        echo -n $r
}

case "${1}" in
        "power" )
                setGovernor "powersave"
        ;;

        "speed" )
                setGovernor "performance"
        ;;

        "max" )
                if [ -z "${2}" ]; then
                        fr=${max}
                else
                        fr=`toHZ ${2}`
                fi
                for cpu in ${cpus[*]}; do
                        echo "${fr}" > "/sys/devices/system/cpu/${cpu}/cpufreq/scaling_max_freq"
                done
        ;;

        "min" )
                if [ -z "${2}" ]; then
                        fr=${min}
                else
                        fr=`toHZ ${2}`
                fi
                for cpu in ${cpus[*]}; do
                        echo "${fr}" > "/sys/devices/system/cpu/${cpu}/cpufreq/scaling_min_freq"
                done
        ;;

        "num" )
                if [ -z "${2}" ]; then
                        n=${cpuN}
                else
                        n=${2}
                fi
                for cpu in ${cpus[*]}; do
                        if [ ${n} -gt 0 ]; then
                                if [ -f "/sys/devices/system/cpu/${cpu}/online" ]; then
                                        echo '1' > "/sys/devices/system/cpu/${cpu}/online"
                                fi
                                ((n --))
                        else
                                echo '0' > "/sys/devices/system/cpu/${cpu}/online"
                        fi
                done
        ;;

        "" )
        ;;

        * )
                echo -n "CAPABILITIES: cpus: ${cpuN}, min freq: ${min}, max freq: ${max}, governors: "
                cat "/sys/devices/system/cpu/${cpu0}/cpufreq/scaling_available_governors"
                echo
        ;;
esac

active=0
for cpu in ${cpus[*]}; do
        if [ -f "/sys/devices/system/cpu/${cpu}/online" ]; then
                st=`cat "/sys/devices/system/cpu/${cpu}/online"`
                if [ "${st}" = "1" ]; then
                        ((active ++))
                fi
        else
                ((active ++))
        fi
done


min=`cat /sys/devices/system/cpu/${cpu0}/cpufreq/scaling_min_freq`
max=`cat /sys/devices/system/cpu/${cpu0}/cpufreq/scaling_max_freq`
echo -n "STATUS: cpus online: ${active}, min freq: ${min}, max freq: ${max}, governor: "
cat "/sys/devices/system/cpu/${cpu0}/cpufreq/scaling_governor"
cat /proc/cpuinfo  | grep 'MHz'

Использование: Посмотреть информацию о CPU:

cputune info

Перевести ЦПУ в энергосберегающий режим:

cputune power

Перевести ЦПУ в «производительный» режим:

cputune speed

Установить верхний предел частоты процесора в 2.5GHz (2500MHz):

cputune max 2500M

Установить нижний предел частоты процессора в 1GHz:

cputune min 1G

Активировать только первые 2 ядра CPU (в моем случае это будет 1 едро + второе виртуальное - гиптрединг):

cputune num 2

Если хотите сбросить какойто параметр в значение по умолчанию - просто не опускает значение. Например активировать все ядра:

cputune num

Убрать верхнее ограничение по частоте:

cputune max

В принципе все довольно просто и очень эффективно получилось, для стандартной работы я делаю:

cputune max 2500M

Ноут работает довольно тихо и быстро.

Если нужно долго работать от батареи то:

cputune max 1G
cputune num 2

Шума нету, не греется, время автономной работы возрастает в разы

 , ,

zaz
()

Что писать на Java?

Форум — Development

Пытаюсь освоить язык Java, успешно закончил краткое ознакомление путём прохода онлайнового курса, теперь надо бы закрепить материал какой-нибудь практикой — надо что-то написать, как минимум работающее, в идеале полезное. Вопрос: какое ПО лучше писать или традиционно пишут на Java? Дальше пойдёт некоторое перечисление полное натяжек и неверного мнения: для динамических вебовых страничек нужен JavaScript, для вебовых сайтов — динамические языки, например Ruby, для серверов — Erlang, для ИИ — Lisp, для реального времени и микроконтроллеров — C. А для какой области хорош язык Java?

Кровавый энтерпрайз? Это, конечно, хорошо, но мне бы что-нибудь такое чтобы попрактиковаться

Настольные приложения на Java? Они разве не выглядят как говно на палке?

Как там Java Server Pages? Кто-нибудь ещё ими пользуется?

Что писать на Java?

Я бы написал что-нибудь для движка L.o.r.'а, но там Scala, а я её совсем не знаю.

 

Camel
()

Релиз электромагнитного симулятора openEMS-v0.0.33

Новости — Open Source
Группа Open Source

В минувшие выходные состоялся очередной релиз open-source (GPLv3) электромагнитного симулятора openEMS-v0.0.33. Его разрабатывает один человек — Thorsten Liebig (Германия, Университет Дуйсбург-Эссен). OpenEMS позволяет проводить следующие виды расчётов:

  • Расчёт электромагнитного поля (электродинамика) методом FDTD (метод конечных разностей во временной области).
  • Расчёт S-параметров электромагнитных систем.
  • Расчёт электромагнитного поля в ближней и дальней зоне.
  • Расчёт диаграмм направленности антенн.

В отличие от проприетарных аналогов симулятор не имеет собственного графического интерфейса, а вместо этого встраивается в Octave или Matlab. Задание на моделирование является скриптом Matlab/Octave, а визуализация результатов также осуществляется средствами Octave или Paraview.

Нововведения версии v0.0.33:

  • Система сборки полностью переведена на CMake.
  • Произведена оптимизация препроцессинга больших объектов.
  • Улучшена реализация синусоидального источника сигнала возбуждения.

( читать дальше... )

>>> Сайт проекта

 , , openems,

DarthVadimius
()

BSPWM

Галерея — Скриншоты

Обоина (просто так поставил, по цвету)
Цвета

Ценности у скрина, думаю, никакой (сто вимов, олень и матрица), так что, если не зааппрувят, то даже лучше, однако, повисев до того момента, может натолкнуть кого-нибудь на ту или иную мысль, поэтому оставлю.

>>> Просмотр (2560x1440, 690 Kb)

 , , , олень

zezic
()

Те самые, тёплые лампы

Галерея — Скриншоты

Ну, те самые «тёплые лампы», какие только могут быть, а точнее - измерение их параметров.
Прошло некоторое время с момента моего знакомства с AVR. Познакомились и пообщались - теперь потихоньку начинаем сотрудничать.
На картинке результат работы скромного аппаратно-программного комплекса, собственной разработки, для снятия вольт-амперных характеристик (ВАХ) электронных ламп.
ArchLinux, openbox, fbpanel, тема иконок - hydroxygen

P.S. Да, без Arduino, но аппаратная часть на ATMega328P

>>> Просмотр (1600x1200, 1287 Kb)

 , ,

lnx
()

Заменить номера на символы.

Форум — General

Имеется файл HTML, где все не-ASCII символы заменены на последовательности вида "&#nnnnn;", например "&#12390;". (Для определённости — японский язык в UTF-8.) Существует ли быстрый способ заменить эти последовательности на соответствующие символы? Написать пару тысяч регулярных выражений для замены можно, но долго и громоздко. Открыть в браузере и скопировать в редактор можно, но неинтересно. Как ещё можно это сделать?

Заранее спасибо.

Ответ: recode умеет конвертировать такие последовательности в символы. В моём случае отсутствовали символы вроде &amp; или &lt;, поэтому оказалось достаточно команды:

cat Gackt-Redemption.html | recode html..utf-8

 , ,

question4
()

Кобейн опять загрустил

Галерея — Скриншоты

после того, как увидел галерею.

>>> Просмотр (2560x1440, 914 Kb)

zezic
()

Красивая тёмная тема для кода, реквест сервиса сочетания цветов

Форум — Talks

Я ни разу не дезигнер, но есть нужда написать цветовую схему для кода в NetBeans, чтобы сочеталась с системной и была приятна для глаз. Есть ли сервис, который бы показывал сочетаемость цветов?
Например, я хочу узнать, какой синий будет красиво выглядеть на #555555, а сервис мне выдаст сразу несколько оттенков синего, от которого не болят глаза.

 , , ,

CYB3R
()

Какие системы видеонаблюдения есть под Linux для IP-камер?

Форум — Desktop

Из бесплатных есть motion+mencoder и Zoneminder. Но второе оставляет желать лучшего. Из платных и серьезных есть Netavis Observer.

На какие решения еще можно обратить внимание?

 , ,

Siado
()

Тайлинг моей мечты

Форум — Talks

В последнее время занимался немного оптимизацией управления окнами в awesome, и теперь получившейся хренью сил нет охота поделиться. Из интересного есть специальный графически оформленный (да, нужен compton) режим для манипуляции окнами, собственная «полуручная» схема тайлинга, нескучные заголовки с табами.

Видео чтобы не описывать: раз, два.

Конфиги можно потыкать палочкой все там же. Отзывы и мнения приветствуются.

 

Worron
()

ajenti @ UMI X2

Галерея — Скриншоты

Нашел время, доработал это извращение. Наглядный пример зачем в современном мобильнике 4 ядра и 2GB RAM. Собственно, на скриншоте ajenti, который торчит из моего старого UMI X2 с разбитым экраном. Так как экран на ладан дышит, а новый экран стоит как новый аппарат, я взял другой телефон, а этот приспособил на чердаке на даче для раздачи интернета.

На борту стоковый android (ядро тоже родное) с root'ом, из которого вычищено все, что только можно, включая google play services. Из софта только smanager, который запускает при загрузке аппарата скрипт, который запускает debian в chroot'е и дергает chroot окружение каждый раз, когда меняется состояние мобильной сети.

В chroot'е живет OpenVPN, stunnel, squid, iptables со стопкой правил, ssh, ajenti и самописная прога, умеющая отдавать фотку по запросу, а так же куча скриптов всех цветов и расцветок. (Ходили слухи, что будет и на нашей улице DPI, решил превентивно разобраться с stunnel. На практике дает много оверхеда).

Так как интернет на даче через мобильную сеть, прямого IP нет, приходится держать OpenVPN до VPS'ки с включенной компрессией, чтобы можно было удаленно наблюдать за курочками^W^W^W администрировать дачную сетку.

Помимо OpenVPN стоит squid с прозрачным редиректом всего траффика через него и жирным кешем на быструю 32GB SD карточку.

Родной «tethering» не используется. Вместо этого скрипт запуска chroot окружения делает вот так:

echo 0       > /sys/class/android_usb/android0/enable
echo rndis,adb > /sys/class/android_usb/android0/functions

А уже debian'овский chroot получает IP штатными средствами. Воткнут телефон в OpenWRT роутер. Изначально, все было на нем, но связка OpenVPN+stunnel оказалась очень жручей до CPU и сжирала 600Mhz MIPS уже на 5-6 мегабитах, если не меньше. Здесь такого боттлнека нет. Да и сеть телефон держит ВНЕЗАПНО лучше 3g модема.

Изначально оверхед от OpenVPN по tcp был где-то 60%, после долгих мытарств, увеличения TCP окна и добавления в конфиг волшебных строк

tun-mtu 1500
mtu-disc yes
txqueuelen 15000
Все стало намного лучше, оверхед стал где-то 20-30%. Пинг без OpenVPN был 80-100ms, с OpenVPN - 150-200ms. TCP_NODELAY в разных местах stunnel уменьшает время пинга, но здорово увеличивает оверхед, потому не используется

Все расписывать будет очень долго, потому отмечу самые нетривиальные хаки:

1. При выключенном экране телефон находится в easrlysuspend (ЕМНИП) и никогда не будет включать вторичные ядра, даже если на 100% загрузить доступное ядро. Потому в настройках девелопмента надо выставить «не гасить экран при подключенном кабеле». Экран он гасить не будет, и в earlysuspend уходить не будет. Сам же экран я гашу в стремном keepalive скрипте, который по крону запускается каждую минуту:

#!/bin/bash
N=`route -n|grep tun0|wc -l`
if [ "$N" -eq "0" ]; then
        route del 127.0.0.1
        route add 127.0.0.1 dev lo
        mkdir /dev/net
        ln -sf /dev/tun /dev/net/tun
        /etc/init.d/stunnel4 restart
        /etc/init.d/openvpn restart
fi

echo 0 > /sys/devices/platform/leds-mt65xx/leds/lcd-backlight/brightness

2. Каждое изменение состояния сети android убивает все маршруты и заполняет таблицу заново, потому помимо крона этот же keepalive вызывается и smanager'ом

3. Напряжение батарейки, температуру батарейки и температуру SoC'а можно прочитать в /sys. Так как у меня медиатек - ajenti это не подхватывает, приходится читать ручками:

Температура батарейки: /sys/devices/platform/mt6320-battery/power_supply/battery/batt_temp

Напруга на батарейке: /sys/devices/platform/mt6320-battery/power_supply/battery/batt_vol

Напруга проводе воткнутом в телефон: /sys/devices/platform/mt6320-battery/power_supply/battery/ChargerVoltage

Ну и

/sys/devices/virtual/thermal/thermal_zone{0,1,2,3}/temp

Для чтения температуры самого SoC'а.

3. usb0 добавлен у меня в br-lan на роутере, вместе с остальнымим портами, для br-lan интерфейса является маршрутом по умолчанию. Хитровыдолбанную настройку DNS и маршрутизации расписывать не буду, лень.

4. На скорость крайне положительно влияет нижеследующее заклинание, немного меняющее настройки буферов для TCP и прочего:

echo "0" > /proc/sys/net/ipv4/tcp_timestamps
echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse
echo "1" > /proc/sys/net/ipv4/tcp_sack
echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle
echo "1" > /proc/sys/net/ipv4/tcp_window_scaling
echo "5" > /proc/sys/net/ipv4/tcp_keepalive_probes
echo "30" > /proc/sys/net/ipv4/tcp_keepalive_intvl
echo "30" > /proc/sys/net/ipv4/tcp_fin_timeout 
echo "404480" > /proc/sys/net/core/wmem_max
echo "404480" > /proc/sys/net/core/rmem_max
echo "256960" > /proc/sys/net/core/rmem_default
echo "256960" > /proc/sys/net/core/wmem_default
echo "4096,16384,404480" > /proc/sys/net/ipv4/tcp_wmem
echo "4096,87380,404480" > /proc/sys/net/ipv4/tcp_rmem

5. OpenVPN не оживет по дефолту, так как /dev/net/tun в андроеде виден как /dev/tun. решается парой строчек:

mkdir /dev/net
ln -sf /dev/tun /dev/net/tun
Лучше запихнуть в keepalive - раз в сутки оно куда-то пропадало у меня.

Задавайте свои вопросы. Все вышеуказанное было настроено за один вечер под действием отборного кофеина, советы экспертов по тонкой настройке OpenVPN на 3g канале приветствуются. ;)

>>> Просмотр (1920x1080, 136 Kb)

 ,

ncrmnt
()