LINUX.ORG.RU

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

Утрамбованный Firefox

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

Недавно решил перейти с Chrome на Firefox. Поскольку экран ноутбука маленький, решил ужать его по вертикали, благо в отличие от хромого ничего гвоздями не прибито. И ужал: вместе с парой расширений заставил все нужные элементы отображаться на всего одной аккуратной панельке толщиной в ~40px. И при этом Kwin все равно рисует красивую рамочку, тени и подсветку.

Kubuntu 16.10, KDE 5.8.4, Plasma+qt+gtk: Breeze, kwin - Oxygen-qt5.

Ждем kde 5.9 с обещанным возвращением appmenu. А пока довольствуемся тем, что плазма уже не падает.

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

 , ,

Kor03d
()

TCP. Как сделать надёжное соединение?

Форум — Development

Если связь нестабильна, то tcp соединения часто уходят в какую-то «спячку». При этом второе соединение к тому же серверу успешно открывается, то есть связь есть. Есть возможность в своём клиент-серверном приложении придумать какое-то нормальное решение?

Необходимо оперативно получать оповещение с удалённого компьютера (когда событие произошло, оповещение надо через пару секунд), а получатель оповещения за NAT'ом. Пока придумал только постоянно гонять сообщения, что всё хорошо, а если больше, чем на секунду задержка, то сбрасывать соединение и соединяться заново. Но выглядит как-то костыльно. Кажется, что тогда проще на UDP накостылять свой надёжный протокол.

Есть какие-нибудь идеи?

 

monk
()

Коммуникация между JVM

Форум — Development

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

Также надо иметь возможность управлять этим всем мышой, тоесть в вебе. Тыкать в кнопки и вкл/выкл сервер и по отдельности клиенты. Отчеты о работе клиентов тоже надо видеть в вебе.

Вопрос: чем это в java организовывается. Я нагуглил Jetty и KryoNet. Туда копаю?

 , , ,

unt1tled
()

Мультисит

Форум — Desktop

Доброе $(время_суток).

Запилил себе мультисит используя две видеокарты:
Nvidia GTX480 и Nvidia 7600, в общем оно работает, однако игры на вторую видеокарту приходится пробрасывать с помощью VirtualGL.

Звук делил пульсой, usb-порты и устройства ввода делил systemd (на удивление легко все получилось).

Проблема в графической части, VirtualGL добавляет оверхед и это неприятно для моего i5, начального уровня.
Судя по информации с панели nvidia-settings и htop, я не уперся в производительность видеокарты, а уперся в процессор.
Игра Insurgency2 (движок portal2) на втором пользователе (где идет пророс) съедает на 30% процессора больше. Примерно такое-же оверхэд есть и в других играх. Кроме того есть проблемы с некоторыми играми, они не позволяют себя пробросить с помощью VirtualGL.

Вопрос, можно-ли как-то организовать мультисит в одном Xorg`е? Тогда по идее не должно быть проблем с 3d графикой. Да и вторую видео карту можно убрать. Вариант с xenphyr у меня почему-то не взлетел.

Короче, мне интересно, как можно изолировать двух пользователей в одной сессии xorg, как можно ограничить/привязать устройства ввода к дисплеям xorg и в какую сторону мне дальше гуглить/копать.

(цены на комп-железо угнетают, особенно, когда дома 6 юзеров)

 ,

kir2yar
()

OOP и common sense

Форум — Development

Сидел недавно, писал код на яве и подумал... вот есть у меня тип (класс), а в классе штук 10 членов-переменных. И ничего вроде бы больше нету, так как это на самом деле тип, а не объект. Ну тоесть как нету, есть еще 10 геттеров и 10 сеттеров к этим 10 членам-переменным. Так я привык делать и пишу так уже лет 10. Раньше как-то все равно было, ну будет у каждой переменной свой геттер и сеттер, зато они private, инкапсуляция там, хороший дизайн и вообще красиво. А сейчас стало тревожить непокидающее чувство идиотизма происходящего. Мало того, что куча глупого кода, так мне еще повсюду приходится дергать эти геттеры/сеттеры, а я ведь еще их getBlabla/setBlabla называю. Не проще ли сделать эти 10 переменных public и пользоваться вот так сразу. Инкапсуляция сломается, да и я буду знать, что каку сделал, спать буду плохо. Совесть не разрешает. Такой вот common sense.

Всякие там сисярпы изобрели такую штуку как property, которой аксессоры не нужны. Но мне они кажутся противными и неспроста.

 ,

unt1tled
()

Создание графических приложений на Python

Форум — Development

Хотелось бы хотя бы минимально освоить создание маленьких графических программ на Python. Мне, что называется, окончательно припекло мое незнание программирования, есть острая необходимость в некоторых маленьких утилитах, которые я нигде не могу найти.
Подскажите пожалуйста, на каком графическом фреймворке лучше всего начать освоение? Он должен быть максимально простым и не быть deprecated (активно развиваться, к примеру я бы PyQt4 сейчас не выбрал, потому что Qt4 уже отмирает в пользу Qt5, а переучиваться через пару лет не хочется). Посоветуйте пожалуйста также IDE, которая бы подходила для новичка и взяла на себя максимум рутинной работы (создание форм в визуальном редакторе, автоматическое создание необходимых конструкций для event'ов формы и т.д)

 , ,

Rinaldus
()

Есть ли жизнь без Google?

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

Давно хотел показать свой смартфон, в котором нет гугла; а тут ещё и f-droid обновился, и о нём все заговорили...

Итак, в один прекрасный день google задолбал меня настолько, что я решил выкинуть его на помойку. Решительно взял свой Galaxy Nexus, сделал полный вайп, поставил CyanogenMod без GApps, f-droid, и несколько приложений «руками». Что можно видеть на скрине?

( Список приложений, которые можно видеть на главном экране, с кратким описанием: )

Кое-что, конечно, не поместилось на рабочем столе, и распихано по папкам; такие приложения я вынес на второй рабочий стол, просто чтоб показать, что ещё есть (обычно, конечно, не «кручу столы», а открываю из папок):

( Список того, что не поместилось на главный экран: )

Если кто-то знает свободные аналоги того, что установлено руками - буду благодарен.

Чего пока что не хватает: конвертер валют (в f-droid есть несколько, и ни один не умеет чилийский песо); карта метро (в ametro все чилийские карты старые, как говно мамонта - наверное, надо на связь с разрабами выходить и предлагать помощь по актуализации); мессенджер (буду благодарен за советы; пока что адекватным вариантом кажется прикрутить фейсбук в качестве транспорта jabber, а для jabber поставить Tigase Messenger). Ну и, конечно, хотелось бы заменить вообще все несвободные программы на свободные аналоги... Буду рад подсказкам и наводкам.

Мои впечатления от F-Droid

Большинство софта довольно неплохо; хотя, как видно, некоторых вещей не хватает. Если говорить о самом хранилище, то очень не хватает пользовательских оценок и рейтинга; в сочетании с отсутствием скриншотов это приводит к тому, что чтоб выбрать приложение, зачастую приходится поставить пять-шесть приложений на телефон и самостоятельно протестировать каждое. Это - скорее, не аналог GooglePlay, а аналог Synaptic для телефона. Печалит то, что соотношение FOSS/non-free приложений для андроида совсем не то, что для «большого брата».

Из плюсов - телефон стал медленнее разряжаться (просто раза эдак в полтора-два медленнее), причём я даже не могу понять, с чем это связано.

>>> Просмотр (720x1280, 296 Kb)

 , ,

stav_artefakt
()

аппаратное ускорение flash на ubuntu с fglrx

Форум — Desktop

Как в этой ubuntu 14.04 включить аппаратное ускорение flash player'а в firefox?! Невозможно видео смотреть в полноэкранном режиме - кулер на проце начинает гудеть как истребитель на взлете.

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

kubuntu 14.04 x86_64

firefox 31

fglrx 14.301 который от декабря 2014

radeon hd 6770

Вроде бы в mplayer и vlc аппаратное ускорение работает, ибо фильмы смотрятся нормально без высокой нагрузки на проц.

 , , ,

der_looser
()

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
()

Spring по-человечески

Форум — Development

Раньше пользовался спрингом как быдло - ну, навешать всякие @Component, обвернуть черным хлебом, и типа оп - вдруг из маминой из спальни ололо DI риальне! Пару раз в жизни постпроцессор написал, и даже уже не помню - какой.

На самом деле, всё то же самое можно сделать на коленке с хэшмапом и такой-то матерью за пару часов.

Сейчас нужно сдавать собеседование, и я знаю, что ничего не знаю. Представляю как объясняю «я попользовался спрингом как хэшмапом», и уже заранее стыдно.

Посоветуйте литературы или других ресурсов по Спрингу.

Думаю, мне нужно вот что:
- описание внутренней механики Спринга
- логика создателей этого поделия, чтобы понять как в нем копаться, проследить ход мыслей
- реальные юзкейзы, отличающиеся от быдло-использования (поясню, я могу написать BeanFactoryPostProcessor, но зачем в реальной жизни мне это может быть нужно?

Гугл наш товарищ, но проблема в том, что большинство туториалов написано без тени мысли в глазах, и представляют собой очередной эпос на тему, как над классом надписать @Component. А нужно что-то четкое и по сути.

Пока что я забил в гуголь «spring framework sucks», там есть немного конкретики.

Это первый из серии глупых вопросов, остальные coming soon xD

 

stevejobs
()

Как отключить vsynс на свободном драйвере radeon?

Форум — Desktop

Ubuntu 13.04, unity, Radeon HD3870, начитался на ЛОРе восторженных отзывов о свободных драйверах, удалил fglrx-legacy, поставил свежие свободные дрова из xorg-edgers ppa. Зашел потестировать в Counter Strike - 60 фпс и не больше, то же в CS Source, явно что включен vsync. В fglrx вертикальная синхронизация отключается в amdccc, тут я нагуглил только конфиги. Создал ~/.drirc с параметром «vblank_mode» value=«0», в настройках компиза отключил vsync, все равно 60 фпс. Подскажите, куда еще копать?

 , , ,

MyFreedom
()