LINUX.ORG.RU

34
Всего сообщений: 1144

Cloud-разработка в Chrome OS на ASUS Chromebit и Kubernetes+CoreOS

У меня давно настроен Kubernetes+CoreOS на одной машине и это позволяет мне экспериментировать с разработкой распределенных приложений дома и запускать разные сервисы вроде торрентов и транскодинга в условиях жесткой изоляции среды и ресурсов.

Я решил попробовать устроить себе среду разработки, которая будет соответствовать определенным критериям

  • Будет глобально доступна с любой машины в мире без установки софта кроме браузера.
  • При работе с другого континента не будет ощущаться задержка при печати как было бы в vim+tmux. mosh скорее всего бы не решил проблему с vim.
  • Глобально доступны по HTTPS веб-приложения запущеные в этой среде
  • В Linux среде где запускается разрабатываемое приложение можно заменить дистрибутив на другой за несколько минут, но сохранить home.

Чтобы эксперимент был чистым все это тестируется на ASUS Chromebit со стоковой ChromeOS, 2 ГБ памяти и ARM Rockchip Quad-Core RK3288C, которая размером с большую флешку и воткнута в телевизор LG 49LB550V. Потому шрифты могут быть чуть больше чем обычно, чтобы было лучше видно на телевизоре. Устройство очень маломощное, но работает быстро потому что в ChromeOS нету дискового swap, только RAM+zRAM и если что-то не влезает, то выгружается.

Скриншоты

  • Редактор Codiad в полноекранном режиме. В принципе можно установить любой другой, но для обычного редактирование текста он подходит. Если найду такой, который потребляет мало памяти и умеет режим vim, поставлю его.
  • tmux. Вот так выглядит контейнер для разработки. Он совершенно отдельный от Codiad и я могу менять в нем дистры простым редактированием Dockerfile. В него и в Codiad примонтирован один и тот-же каталог с исходным кодом. При смене контейнера home тоже сохраняется. В данном случае в контейнере последняя версия Ubuntu, но ядро как всегда остается хостовым от CoreOS. В контейнер заранее установлены средства разработки на C++, Go, Python, NodeJS.
  • Caddy, который вы видели запущеным в контейнере. Интересная часть заключается в том, что для него создается виртуальный хост, создается Let's Encrypt сертификат и производится авторизация. Это умеет делать и сам Caddy, но он тут просто для демо. Суть в том, что в данном случае это будет делаться на уровне nginx фронтенда для любого приложения открывшего порт 8080 в контейнере
  • tmux+vim. Если работать не издалека, то вполне можно просто пользоваться tmux+vim. Плагины на него устанавливаются в home и в основном продолжают работу при смене дистра, кроме тех, которым нужна перекомпиляция.
  • Внутренности. Это Kubernetes Dashboard. В ней вы видите некоторые из упомянутых выше контейнеров и еще много чего. Для временных изменений некоторые параментры контейнеров можно менять прямо в UI, но лучше конечно через файл конфигурации.

Изначально CoreOS машина разворачивается сама по iPXE на голый диск. Если система уже была установлена, то она просто загружается. После этого по SSH необходимо загрузить ключи и некоторый набор базовых сервисов Kubernetes. Теперь кластером можно пользоваться удаленно через kubectl. Я запустил там локальный docker реестр, потому вы видите localhost в названии некоторых контейнеров. На моей машине различные сервисы работают на Alpine Linux, Ubuntu или CentOS в зависимости от того, на чем было проще настроить конкретное приложение. Если разницы нету, то я использую Alpine, так как тогда контейнеры наиболее компактны.

Цепочка загрузки такая

  • BIOS
  • PXE
  • iPXE
  • Ядро CoreOS
  • systemd
  • Docker
  • Kubernetes
  • Сервисы из публичных образов и локальный Docker реестр
  • Сервисы из локального Docker реестра

В качестве сервера использую старый Dell ноутбук с Core i7-2630QM, 8GB RAM и сломаной батареей, ибо нечего ему пылиться с таким процессором.

Если я захочу подключить второй сервер, то мне нужно сделать два действия: сделать для второго сервера облегченный конфиг без части Kubernetes демонов и придумать как монтировать диски удаленно. Пока что персистентные каталоги монтируются в хост систему, что не будет работать если сервисы будут случайно мигрировать между машинами. Но если я это сделаю, то полностью програмная виртуальная сеть на flannel будет работать полностью прозрачно и контейнеры на разных будут общаться друг с другом так же просто как и раньше. Из того что можно настроить дома поддерживаются GlusterFS+Heketi, Ceph и NFS

Среди дополнительных удобств на сервере есть связка Transmission+Plex, интерфейсы которых тоже доступны глобально. Потому я могу пойти в гости, поставить torrent дома с телефона, а потом транскодированый и оптимизированый фильм можно посмотреть на телевизоре например через Chromecast, AppleTV, PS4, XBox, Android, Windows Phone или другой способ отобразить браузер с компьютера на телевизор.

В качестве заключения скажу что мне понравился такой способ настройки домашнего сервера. Использование Docker контенеров позволяет уравнять в легкости настройки опакеченый софт из дистрибутивов и софт, который устанавливается скриптом сборки на github. Они оба могут быть завернуты в контейнер на любом дистрибутиве и потом когда более не нужны могут быть аккуратно удалены. Kubernetes очень облегчил работу с виртуальными хостами, шифрованием, перенаправлением портов, изоляцией ресурсов, перезапуском упавших сервисов и проверкой их здоровья.

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

 , , ,

vertexua ()

Android 7.0 на Nexus 5 (2013)

Собственно, 7.0 на старом Nexus 5, работает все. Официльной причиной отказа продолжать поодержку Nexus 5 (2013) стала не поддержка процессорами Snapdragon 800/801 API Vulcan. При этом даже на nexus 4 сделали полностью рабочий 7.0. Очень достовляют те кто купил шлак на медиатек и потом жалуются что производитель его не обновляет. Режим двухоконности тоже очень доставляет, будет полезен планшетам типа Nexus 9. Печально что после 5 нексуса так и не вышло больше ничего годного.

многоокооность шторка меню приложений лок скрин настройки

>>> Просмотр (1080x1920, 503 Kb)

 , , ,

ilipnitsky ()

Большой «планшет»

Привет ЛОР! Скажу сразу что главный скрин в jpg, так как оригинал в png весит 2,4 Мб.
Вот решил себе поставить на андроид на ПК.
При первой загрузке - море приятных впечатлений!
При установке сразу же указал свой аккаунт - все сразу подхватилось и отлично работает - маркет, аудио, видео, сервисы Google.
Поставил привычный огнелис - и сразу адблок к нему, офис, торрент-качалку, карты, deadbeef - почему-то не захотел играть музыку - а вот PowerAMP - запросто.
В качестве файлового менеджера TotalCommander - точно такой же каким пользуюсь и на маленьком зеленом роботе.
Клавиатура переключается по Ctrl Space.

LOR

Mozilla addons

Редактор кода

Рабочий стол в оригинальном качестве

Просмотр изображений

Музыкальный плеер

Терминал с ядром
UPD. Специально для любителей многозадачности
В целом системой доволен.

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

 , , ,

w1nner ()

[серость][унылость][странное]

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

diff -Naur orig/chromium-16.0.910.0/chrome/browser/ui/gtk/tabs/tab_renderer_gtk.cc work/chromium-16.0.910.0/chrome/browser/ui/gtk/tabs/tab_renderer_gtk.cc
--- orig/chromium-16.0.910.0/chrome/browser/ui/gtk/tabs/tab_renderer_gtk.cc	2011-10-17 08:02:05.000000000 +0000
+++ work/chromium-16.0.910.0/chrome/browser/ui/gtk/tabs/tab_renderer_gtk.cc	2011-10-18 10:41:25.000000000 +0000
@@ -41,14 +41,14 @@
 namespace {
 
 const int kFontPixelSize = 12;
-const int kLeftPadding = 16;
+const int kLeftPadding = 7;
 const int kTopPadding = 6;
-const int kRightPadding = 15;
+const int kRightPadding = -5;
 const int kBottomPadding = 5;
 const int kDropShadowHeight = 2;
 const int kFaviconTitleSpacing = 4;
 const int kTitleCloseButtonSpacing = 5;
-const int kStandardTitleWidth = 175;
+const int kStandardTitleWidth = 275;
 const int kDropShadowOffset = 2;
 const int kInactiveTabBackgroundOffsetY = 15;
 
@@ -68,7 +68,7 @@
 const int kHoverDurationMs = 90;
 
 // How opaque to make the hover state (out of 1).
-const double kHoverOpacity = 0.33;
+const double kHoverOpacity = 0.00;
 
 // Max opacity for the mini-tab title change animation.
 const double kMiniTitleChangeThrobOpacity = 0.75;
@@ -79,7 +79,7 @@
 // The vertical and horizontal offset used to position the close button
 // in the tab. TODO(jhawkins): Ask pkasting what the Fuzz is about.
 const int kCloseButtonVertFuzz = 0;
-const int kCloseButtonHorzFuzz = 5;
+const int kCloseButtonHorzFuzz = -17;
 
 SkBitmap* crashed_favicon = NULL;
 
diff -Naur orig/chromium-16.0.910.0/chrome/browser/ui/gtk/tabs/tab_strip_gtk.cc work/chromium-16.0.910.0/chrome/browser/ui/gtk/tabs/tab_strip_gtk.cc
--- orig/chromium-16.0.910.0/chrome/browser/ui/gtk/tabs/tab_strip_gtk.cc	2011-10-17 08:02:05.000000000 +0000
+++ work/chromium-16.0.910.0/chrome/browser/ui/gtk/tabs/tab_strip_gtk.cc	2011-10-18 10:42:40.000000000 +0000
@@ -42,18 +42,18 @@
 
 namespace {
 
-const int kDefaultAnimationDurationMs = 100;
-const int kResizeLayoutAnimationDurationMs = 166;
-const int kReorderAnimationDurationMs = 166;
-const int kAnimateToBoundsDurationMs = 150;
-const int kMiniTabAnimationDurationMs = 150;
+const int kDefaultAnimationDurationMs = 10;
+const int kResizeLayoutAnimationDurationMs = 16;
+const int kReorderAnimationDurationMs = 16;
+const int kAnimateToBoundsDurationMs = 15;
+const int kMiniTabAnimationDurationMs = 15;
 
-const int kNewTabButtonHOffset = -5;
+const int kNewTabButtonHOffset = -1;
 const int kNewTabButtonVOffset = 5;
 
 // The delay between when the mouse leaves the tabstrip and the resize animation
 // is started.
-const int kResizeTabsTimeMs = 300;
+const int kResizeTabsTimeMs = 30;
 
 // The range outside of the tabstrip where the pointer must enter/leave to
 // start/stop the resize animation.
@@ -63,7 +63,7 @@
 
 // The horizontal offset from one tab to the next, which results in overlapping
 // tabs.
-const int kTabHOffset = -16;
+const int kTabHOffset = -1;
 
 // Inverse ratio of the width of a tab edge to the width of the tab. When
 // hovering over the left or right edge of a tab, the drop indicator will
css ЛОР-а своя, скроллы тоже свои
снизу некий vkplayer - на кутях и вполне удобен - поиск, закачка, умеет убирать дубли из результатов
WM - компиз с декоратором emerald - тема своя - весь декор заключается в рамочке в 1 чёрный пиксель
видно глобальное меню (man stuff overlay) - недавно прикрутил поддержку gtk2 и gtk3 одновременно
панель скрывается, тема виджетов qtcurve(geek) плазмы (да - это кеды! ) - Geek-light
всё это дело крутится в генте «тестовой»
ШГ - везде PT Sans Caption - фанаты мыльной радуги, проходите мимо - вам этого не осилить и не понять

>>> Просмотр (1280x1024, 307 Kb)

 , , , ,

megabaks ()

Gnome на нетбуке

Тема - Elegant GNOME. Сверху две гномопанели; в верхней отображается заголовок развёрнутого окна, во второй верхней - глобальное меню и трей. Выглядит это, как будто в строке меню окна, развёрнутого на весь экран, находится трей и меню gnome, т.е. экономится место по вертикали на отсутствии горизонтальных панелей на низком экране нетбука. Слева - AWN, чтобы быстро переключаться между окнами (не Alt+Tab).

Тут ещё есть скриншот с conky: http://ompldr.org/vN3Z6aQ

ШГ - Droid Sans

>>> Просмотр (1024x600, 77 Kb)

 , , , ,

gentoo_root ()

Прощай, Fedora 13

У меня трискаидекафобия (болезненная боязнь числа 13). Был приятно удивлен отсутствием kernel panic. Ну что ж, ровно через неделю родится, новый, принципиально новый Fedora 14, так что прощай, 13-ий, я буду по тебе скучать.

>>> Просмотр (1280x800, 610 Kb)

 , ,

xhat ()

Любопытная статистика =)

График из гугл трендс. Я думал интерес к линуксу растет, странно.

>>> Просмотр (607x625, 67 Kb)

 ,

nichegonepodhodit ()

QGoogleTranslate - встречайте

И вот в течении недели я написал этот переводчик. Сделан он приемущественно под личные нужды, но я думаю, что многие сочтут его полезным.

Исходники брать так:

svn co http://qgt.googlecode.com/svn/branches/1.0 qgt

Внимание! Для сборки необходимо иметь следующие библиотеки: Qxt, QJson

Теплый png. Программа распространяется под лицензией GPL.

>>> Просмотр (1680x2100, 523 Kb)

 , ,

flareguner ()

допилил...вроде

вроде допилил плазмо-тему до нормального состояния
собственно тема - http://kde-look.org/content/show.php/geek?content=128471
там же линк на тему QtCurve
замечания о ШГ не принимаются :)
хромиум перерисован
css своя - http://userstyles.org/styles/29147?r=1272881930
тема емеральда тоже самонарисованная http://s43.radikal.ru/i100/1008/a0/aa069209bf0e.png
вроде всё получилось достаточно одинаково-квадратно-плоско-не вырвиглазно
я почти доволен :)
всё это дело крутится на генте ~x86
З.Ы. поправил косяк с углом панели и апплетом

>>> Просмотр (1280x1024, 218 Kb)

 , , ,

megabaks ()

Desire, CyanogenMod pre6.0.0 (Android 2.2 a.k.a. FroYo)

И так, на скриншотах - «ночная» сборка CyanogenMod от 2010.07.24 c Android 2.2 (a.k.a FroYo) внутри, работающая на HTC Desire (a.k.a. Bravo). Одно из новшеств ожидаемой шестой версии CyanogenMod'а (помимо Android 2.2 и обновления различного софта в комплекте) - это официальная поддержка HTC Desire. На данный момент в этой прошивке работает уже почти всё. По порядку (начиная с левого верхнего скриншота):

  1. Почти пустой экран. Из примечательного на статусбаре: синий значок работающей точки доступа WiFi, раздающей интернет, а так же индикатор заряда аккумулятора, показывающий заряд в процентах. Первое - фича FroYo, второе - фича CyanogenMod'а. Можно также включить показ мощности GSM-сигнала в dBm, но ИМХО это практически бесполезная фича. Снизу расположена панель ADWLauncher'а. Действия правой и левой кнопок можно настраивать - достаточно создать на рабочем столе ярлык и перетащить на нужную кнопку.
  2. Плазмоид^WАпплет^WВиджет гуглепоиска и закладки на часто посещаемые сайты.
  3. Ещё виджеты: погода, новости и календарь.
  4. Виджет управления плеером. Можно заметить, что обложка диска выглядит как говно. Сам файл с обложкой - JPEG на полтора мегабайта с разрешением 1400*1400 точек. Вся проблема в том, что ведроид, будь он не ладен, автоматически конвертирует обложки под нужное разрешение с некими «стандартными» настройками качества, которые похоже нигде не настраиваются =(. Впрочем на экране мобильника это не так заметно.
  5. Виджет управления энергопотреблением (вторая слева кнопка - вкл/выкл мобильного интернета, теперь больше не нужны костыли типа APNSwitch'а), виджет включения фонарика-вспышки (Lamppu) и ярлыки на разные программы.
  6. Ничего интересного, просто редко используемые ярлыки на «системные» программы.
  7. «Expose» как в фирменном HTC Sense UI. Фича ADWLauncher'а.
  8. Скриншот с ЛОР'ом, куда же без него =).
  9. Настройка раздачи интернета: через USB или по WiFi. В отличие от старого метода с костылём в виде Wireless Tether, устройство работает честной точкой доступа в Master Mode, а не в Ad-Hoc.
  10. Эмулятор терминала. Шелл - busybox 1.16.2. Полезные CLI-утилиты, вроде tcpdump, wget и netcat - в комплекте. Также имеется SSH-сервер dropbear, который можно запустить, предварительно скопировав ключи.
  11. Права root'а даются программам не автоматически, а с запросом пользователю, утилиты su это тоже касается =). Выбор можно запомнить, тогда при получении прав суперпользователя какой-либо программой, будет просто выдаваться уведомление.
  12. Настройка прав.
  13. DialerOne. Основная фича - поиск контактов при наборе на клавиатуре T9, так же как в HTC Sense.
  14. Снимок с «IT-ужастиком» в галерее.
  15. Фото/видео-камера. Тоже работает.
  16. Блокировочный экран. Если в момент блокировки играет музыка - показываются кнопки управления плером.
  17. Номера версий.
  18. Сидней на фоне Google Earth. Да, 3D-ускорение тоже работает.

Известные глюки (см. форум на XDA-Developers):

  • 3D-галерея «oversaturated» (не знаю как правильно перевести). Лично у меня вроде не наблюдается проблем с цветопередачей в галерее, но на forum.xda-developers.com пользователи жалуются.
  • Система автоподстройки яркости дисплея не понижает яркость, пока дисплей не выключится. Опять таки, у меня всё работает нормально.
  • Не работает синхронизация с Twitter'ом и Facebook'ом. Способы исправления (как минимум синхронизации с фейсбуком) описаны на форме (см. ссылку выше). Мне не нужно ни то, ни другое, так что я не проверял - возможно в свежей прошивке уже поправили.
  • Иногда может перестать работать оптический трекпад и сенсор ускорения. Я (ещё?) не сталкивался. Ядро с исправлением уже доступно для тестирования.
  • Иногда отваливается WiFi-соединение с точкой доступа (т.е. не раздача интернета, а когда телефон - клиент). У меня было пару раз, лечится выключением и включением вайфая. Разработчики вроде бы уже работают над исправлением.

Если кто-то ещё осмелится прошить свой Desire:

P.S. Ссылка на PNG (3.3 MiB).

>>> Просмотр (2908x2424, 917 Kb)

 , , , ,

mironov_ivan ()

Chromium с одним меню.

Для запуска данного элемента (или производного) с таким меню допишите параметр --new-wrench-menu, работает в тестовых сборках chromium и chrome. И да, я нашел это на хабре, просто решил поделиться.

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

Пустой стол с тинтом2: http://img17.imageshack.us/img17/6549/10568655.png

>>> Просмотр (1024x768, 305 Kb)

 , , , , ,

alltiptop ()

Инфаркт под утро

Бороздя под утро просторы интернетов (чашек 5 кофе) наткнулся на это. Ужасу моему не было предела. На скриншоте Debian Squeeze, Awesome (дефолтный, ибо он и так бесподобен), свежий Chromium (на удивление стабилен).

>>> Просмотр (1280x800, 209 Kb)

 , , ,

hoggor ()