Сообщения в linux.14

localhost

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

Что планируется запилить:
+ go git server
^ wisemapping server
~ ftp server
- nginx server
* dokuwiki или mediawiki
{ какой-нибудь простой just another бложик
[ instead-games mirror
= torrent server

Какие есть у кого предложения, что можно еще вкорячить на железку?
jmaks to All (2015-11-15 05:14:29) [ссылка]

Re: VirtualBox on amd64

Ответ на сообщение
Difrex>> Да, попробуй этот мануал http://docs.slackware.com/howtos:general_admin:kvm_libvirt
jmaks> Низкий поклон тебе, добрый человек, поисковые системы постоянно чудят со
jmaks> мной и на полезные и понятные маны в одном месте не выдают никаких ответов
jmaks> на запросы.
jmaks> Читаю и просвещаюсь. Вообще у слаки вроде такая богатая история, а с поиском
jmaks> манов в сети -- постоянно проблемы.
Вобще, это официальный сайт слаки. Как бы не такая уж и проблема =)

PS Но гугл действительно выдаёт муру по слаке часто. Просто потому что он так устроен.
Andrew Lobanov to jmaks (2015-11-12 18:40:59) [ссылка]

Re: VirtualBox on amd64

Ответ на сообщение
Difrex> Да, попробуй этот мануал http://docs.slackware.com/howtos:general_admin:kvm_libvirt
Низкий поклон тебе, добрый человек, поисковые системы постоянно чудят со
мной и на полезные и понятные маны в одном месте не выдают никаких ответов
на запросы.
Читаю и просвещаюсь. Вообще у слаки вроде такая богатая история, а с поиском
манов в сети -- постоянно проблемы.
jmaks to Difrex (2015-11-12 17:40:29) [ссылка]

Re: VirtualBox on amd64

Ответ на сообщение
Да, попробуй этот мануал http://docs.slackware.com/howtos:general_admin:kvm_libvirt
Difrex to jmaks (2015-11-12 08:58:43) [ссылка]

Re: VirtualBox on amd64

Ответ на сообщение
>чем хорош qemu? и будет ли он работать на x86_64 архитектуре?
*qemu-kvm*. kvm в ванильном ядре. Будет работать, конечно. У нас облако на kvm(как бэкенд к openstack, конечно же) построено, а это примерно 400 виртуалок amd64.
Difrex to jmaks (2015-11-12 08:57:34) [ссылка]

Re: VirtualBox on amd64

Ответ на сообщение
jmaks> http://www.tecmint.com/wp-content/uploads/2013/10/Install-VirtualBox-5-in-Linux-620x297.jpeg
Шли вторые сутки. Читаю мануалы. Попробовал собрать пакет qemu из скрипта от
slackbuilds.org, и получил непонятный вылет на моменте копирования файлов
*.html

// все ещё в поиске, нужна среда виртулизации, но простых путей почему-то
// нет, а те которые есть не взлетают.
jmaks to All (2015-11-10 21:24:13) [ссылка]

Re: VirtualBox on amd64

Ответ на сообщение
jmaks>> Каким образом можно заинсталлить vb на систему x86_64. Кто делал, что делал,
jmaks>> как делал?
AL> Я сейчас глупость скажу, но можно попробовать поставить мультилиб и собрать под 32 бита или подыскать версию vbox работающую на старом ядре.
мультилиб стоит. Не могу найти нигде толком рабочих инструкций, где можно было бы
прочитать, как все делается с успехом, версий vb очень много и все они не
понять как будут или нет работать с текущим установленным ведром. При
попытке запуска, ругается, мол пересобери меня хозяин под свое ведро...
AL> ps Я так понимаю, попытка запустить ядро из current-ветки результатов не дала?
Не ведро не запускал. Пробовал различные комбинации и различные версии уже
приготовленных пакетов, а так же пробовал пересобрать под свое железко.
jmaks to Andrew Lobanov (2015-11-10 17:21:56) [ссылка]

Re: VirtualBox on amd64

Ответ на сообщение
Difrex> А так в немаргинальных дистрах:
да ладно, прям таки сразу и маргинальный дистрыб. слакварь он один и самый
тру, все остальное подделка.
>> Ничего не дает правильного результата. Кто чем может помочь?
Difrex> Попробуй qemu-kvm+virt-manager. Понравится.
чем хорош qemu? и будет ли он работать на x86_64 архитектуре?
jmaks to Difrex (2015-11-10 17:21:56) [ссылка]

Re: VirtualBox on amd64

Ответ на сообщение
jmaks> Каким образом можно заинсталлить vb на систему x86_64. Кто делал, что делал,
jmaks> как делал?
Я сейчас глупость скажу, но можно попробовать поставить мультилиб и собрать под 32 бита или подыскать версию vbox работающую на старом ядре.

ps Я так понимаю, попытка запустить ядро из current-ветки результатов не дала?
Andrew Lobanov to jmaks (2015-11-10 15:45:29) [ссылка]

Re: VirtualBox on amd64

Ответ на сообщение
>slackware
Оу...

А так в немаргинальных дистрах:
apt install virtualbox
dnf install virtualbox
pacman -S virtualbox
emerge -av virtualbox
>Ничего не дает правильного результата. Кто чем может помочь?
Попробуй qemu-kvm+virt-manager. Понравится.
Difrex to jmaks (2015-11-10 10:02:33) [ссылка]

VirtualBox on amd64

Собственно сабж.
http://www.tecmint.com/wp-content/uploads/2013/10/Install-VirtualBox-5-in-Linux-620x297.jpeg

Каким образом можно заинсталлить vb на систему x86_64. Кто делал, что делал,
как делал?

Попробовал \актуально для slackware 14.1 x86_64 ядро 3.10.17\:
% установка из готовых пакетов txz из репа packages.slackonly.com
# установка из сконвертированных rpm от RHEL6
! попытки запуска сборки-уставовки из бинарника
VirtualBox-$version-$build-linux_amd64.run с оффсайта.

Ничего не дает правильного результата. Кто чем может помочь? Курение ман
вредит уже здоровью. Гугление не дает положительных и полезных результатов.
jmaks to All (2015-11-09 20:22:31) [ссылка]

Re: написание софта под Андроид

Ответ на сообщение
IDE мне всё-таки завести удалось. Но жрать гигабайт с чем-то ОЗУ, извините, просто нагло с её стороны.
Здесь завести NDK пришлось немного по-другому: тут используется система сборки gradle вместо чего-то более простого. Для начала в файле gradle.properties надо прописать: android.useDeprecatedNdk=true
Затем в local.properties указываем: ndk.dir=/путь/к/ndk
Потом либо создаём в проекте каталог jni и туда сишные исходники, либо делаем симлинк для libs/, сгенерированного ndk-build на jniLibs/ и собираем библиотеки вручную через консоль, чтобы IDE их подхватывала.

А так скажу, что со средой разработки гораздо проще, чем без неё. Настолько просто, что даже интерес особый пропадает в ней писать.
vit01 to vit01 (2015-10-28 11:52:48) [ссылка]

Re: Первая проба Android NDK или лень против костылей :)

Ответ на сообщение
>Оставляем 20 знаков в msgid и обязательную точку в имене эхи, но без обязательного числа в конце (ii.talk)
Я за такой вариант
Difrex to vit01 (2015-10-20 10:54:06) [ссылка]

Re: Первая проба Android NDK или лень против костылей :)

Ответ на сообщение
> У нас таки будет андроид-клиент?
А разве его до сих пор нет? =)
Java-клиент от ntkrnlmp.exe и так вполне работает. Сишный клиент тоже работает (с доустановкой терминала и рута).

Пока "андроид-клиента от vit01" в планах не намечалось, но в перспективе хотел бы и на андроид свои грязные^W руки просунуть ;)

Пробовал ещё на Qt что-то сделать опять же на сабж, но ничего не вышло. И снова из-за ужасной IDE =(
vit01 to Andrew Lobanov (2015-10-20 10:16:46) [ссылка]

Re: Первая проба Android NDK или лень против костылей :)

Ответ на сообщение
> В iing чего договорились то? Оставляем 20 знаков в msgid и обязательную точку в имене эхи, но без обязательного числа в конце (ii.talk)?
Пока ещё не договорились, но готов остановиться на этом варианте. msgid пока оставляем.
vit01 to Andrew Lobanov (2015-10-20 10:16:46) [ссылка]

Re: Первая проба Android NDK или лень против костылей :)

Ответ на сообщение
>>Думаю, что IDE всё-таки придётся ставить.
>Попробовал android studio, так она виснет и вылетает через 5 минут работы. Ещё и терминал, в котором запущена, в сегфолт загоняет.
У нас таки будет андроид-клиент?

Оффтопик: у меня, скорее всего, остались последние дни сессии. В iing чего договорились то? Оставляем 20 знаков в msgid и обязательную точку в имене эхи, но без обязательного числа в конце (ii.talk)?
Andrew Lobanov to vit01 (2015-10-20 04:50:09) [ссылка]

Re: Первая проба Android NDK или лень против костылей :)

Ответ на сообщение
>Думаю, что IDE всё-таки придётся ставить.
Попробовал android studio, так она виснет и вылетает через 5 минут работы. Ещё и терминал, в котором запущена, в сегфолт загоняет.
vit01 to vit01 (2015-10-20 03:01:49) [ссылка]

Re: Первая проба Android NDK или лень против костылей :)

Ответ на сообщение
> А IDE не пробовал?
Не, ни одну не пробовал. Они все такие жирные :[
Предпочитаю писать код в vim.
> Может, в нем проще будет NDK пользовать
NDK и там, и там одинаково используется, я же писал, в чём главные минусы этой штуки =)

Неудобно сборку пакета воедино делать, отлаживать и на джаве писать.

Думаю, что IDE всё-таки придётся ставить.
vit01 to Difrex (2015-10-19 12:38:33) [ссылка]

Re: Первая проба Android NDK или лень против костылей :)

Ответ на сообщение
А IDE не пробовал?
Может, в нем проще будет NDK пользовать
Difrex to vit01 (2015-10-19 11:54:30) [ссылка]

Первая проба Android NDK или лень против костылей :)

Решил не так давно написать что-то родное для своего андроида. Но проблема в том, что на Java я программировать не умею, да и не хочу.
Вспомнил, что существует набор компиляторов Android NDK, который, со слов Гугла, позволяет писать приложения на C/С++ или даже на других языках. На самом деле это немного не так, но об этом позже. Обрадовался и решил написать небольшой скрипт на своём любимом Си + скомпилировать некоторые полезности.

Скачал этот NDK (а он в 7zip SFX, фу и весит гига 2 в распакованном виде), попробовал что-то скомпилировать под arm.

Готовый скрипт для тех, кому надо быстро что-нибудь собрать. Можно адаптировать под Makefile для сборки всяких свободных библиотек.
#!/bin/bash
NDK_DIR=/mnt/android-ndk-r10e/
CC_PATH=$NDK_DIR/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86/bin/ # для GCC 4.9, доступен также 4.8 и clang
CC=$CC_PATH/arm-linux-androideabi-gcc # есть и другие утилиты из списка
SYSROOT=$NDK_DIR/platforms/android-21/arch-arm/ # android-21 - это версия 5.0, есть и более старые

$CC -I $SYSROOT/usr/include/ --sysroot=$SYSROOT ваша_прога.c -o output
Собрал lua, свой клиент для ii вместе с libcurl (писал об этом в ii.14), ещё один небольшой скрипт под 200 строк.

Захотелось большего =) Решил сделать apk, чтобы можно было просто тыкнуть пальцем и запускать свои скрипты, а не заходить в терминал.

Тут и начались проблемы. Документация у Гугла по NDK слишком скудная, поэтому разбираться пришлось самому.
GUI андроид-приложения называется Activity. В каталоге samples из NDK нашёл пример native-activity.

Компилируется оно уже по всем правилам и стандартам. Сначала надо зайти в сам каталог проекта, а потом уже запустить $NDK_DIR/ndk-build. Данный скрипт сам найдёт нужные параметры и соберёт библиотеку для всех архитектур.
Для того, чтобы упаковать программу в apk-файл, потребуется Android SDK и apache-ant. SDK в распакованном виде тоже весит несколько гигабайт, к сожалению.

Самой упаковкой apk и прочими рутинными вещами занимается ant. Но просто так он работать не может, ему нужен специальный файл под названием build.xml. И чтобы не мучаться с его ручным составлением, можно прибегнуть к небольшой хитрости с использованием SDK.
#!/bin/bash
SDK_DIR=/mnt/android-sdk-linux
TOOLS=$SDK_DIR/tools

$TOOLS/android create project --activity APP_Name --path ./каталог_проекта -n HelloWorld -t android-21 -k vit01.helloworld # в -k должно быть внутреннее системное имя пакета; точка в названии обязательна
Вот мы создали обычный java-проект. Теперь копируем файлы build.xml, local.properties и project.properties в каталог с проектом ndk.

Содержимое build.xml у меня оказалось вот такое:


    
    
    
        
    

    

    
    
    

Теперь идём в нужный каталог, набираем ant debug, ждём сборки пакета и находим apk в bin/
Устанавливаем, запускаем, радуемся.

А, стоп, надо посмотреть исходники (в jni/main.c)! Нет, не радуемся. Приложение почти полностью построено на EGL. Значит оно работает с видеокартой на низком уровне, а activity в хэдерах NDK - это единственная небольшая обёртка для него.

Если посмотреть в заголовочные файлы NDK, то видно, что для него есть только та самая обёртка, поддержка сенсоров, карты памяти, TTS, логов и прочее незначительное. A GUI-контролов нет!

Без Java, увы, здесь не обойтись. И это главный минус NDK. Пробуем пойти длинным путём. Идём в каталог java-проекта того самого хеллоуворлда, создаём там каталог jni, внутрь jni суём наш сишных хеллоуворлд и файл Android.mk с вот таким содержанием:
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := modulename
LOCAL_SRC_FILES := helloworld.c

LOCAL_LDLIBS    := -llog -landroid
LOCAL_STATIC_LIBRARIES := android_native_app_glue

include $(BUILD_SHARED_LIBRARY)

$(call import-module,android/native_app_glue)
Ещё не помешает Application.mk с подобным:
APP_ABI := all
APP_PLATFORM := android-21
И что же нам написать на этот раз, чтобы хоть что-то получилось?
Для связывания Java кода и Си используется вещь под названием Java Native Interface, или JNI. Она позволяет пробрасывать сишные функции, чтобы их можно было вызывать из java-кода. И наоборот, но так гораздо сложнее. Проще говоря, это такой костыль.

Для демонстрации его работы напишем в java файл (а находится он в каталоге src/vit01/helloworld/APP_Name.java для моего проекта) вот такой код:
package vit01.helloworld;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class APP_Name extends Activity
{
    native public String return_helloworld(); // объявляем функцию, находящуюся в сишной библиотеке; ключевое слово native обязательно
    String mytext;
	
	static {
		System.loadLibrary("modulename"); // загружаем наше скомпилированное
	}
	
	TextView textView;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		textView = new TextView(this);

		mytext=return_helloworld(); // вызываем сишную функцию

		textView.setText(mytext);
		setContentView(textView);
    }
}
В jni/helloworld.c пишем
#include 

JNIEXPORT jstring JNICALL Java_vit01_helloworld_APP_1Name_return_1helloworld(JNIEnv * env, jobject jObj) {
	// много букв, да? И не говорите. Название для этой функции jni ищет по особым правилам, и если в джаве она называется return_helloworld(), то здесь вот такой ужас
	// приходится нагромождать в сишном коде кучу костылей и обёрток
	char str[]="Hello World 123456!";
	return (*env)->NewStringUTF(env, str);
}
Потом в каталоге проекта запускаем $NDK_DIR/ndk-build и ant debug, на выходе получаем готовый apk в bin/, который при запуске выдаст наш хеллоуворлд. Кстати, material design из коробки я в нём так и не увидел. Видимо, надо ещё стилевые библиотеки подключать.

Вывод: программирование на Андроид без IDE и джавы довольно сложно, много минусов у NDK, но так или иначе приноровиться можно. Через любимую консоль будет довольно тяжело писать под эту платформу.
vit01 to All (2015-10-19 03:05:58) [ссылка]

Танком по кокаину

Кокаин(Yandex cocaine) прекрасен своей масштабируемостью. Вот, например, есть у нас всего лишь одна нода и на ней всего одно приложение на nodejs. При возрастании нагрузки кокс сам запустит необходимое количество процессов nodejs, чтобы отдавать данные с минимальным откликом.

Приложения изолируются друг от друга. Путей изоляции несколько: proccess spawning, cgroups, docker.

И так, посмотрим на продакшен:
$ cocaine-tool info
{
    "apps": {
        "site_web-1.0": {
            "load-median": 0,
            "profile": "spawn",
            "sessions": {
                "pending": 0
            },
            "queue": {
                "depth": 0,
                "capacity": 100
            },
            "state": "running",
            "slaves": {
                "active": 0,
                "idle": 1,
                "capacity": 10
            }
        },
        "test_site_web-1.1": {
            "load-median": 0,
            "profile": "spawn",
            "sessions": {
                "pending": 0
            },
            "queue": {
                "depth": 0,
                "capacity": 100
            },
            "state": "running",
            "slaves": {
                "active": 0,
                "idle": 0,
                "capacity": 10
            }
        }
    }
}
У нас запущенно два приложения: продакшен, в который смотрит интернет и тест в который смотрит локальная сеть. Нагрузка в данный момент минимальна.

Попробуем пустить нагрузку. Я буду использовать yandex-tank. С линейным возрастанием количества запросов в секунду, а потом с постоянным RPS в течении 5 минут. Будем нагружать тестовое приложение :). Пульки заряжаем:
line(1,1000,1m) const(1, 800, 5m)
Пулим и смотрим, что происходит с кокаином:
ps aux | grep cocaine | wc -l
134
Кокс сам пустил дофигища своих форков, чтобы нормально отрабатывать запросы.

Довольно слов! А графики вот:
* http://storage1.static.itmages.ru/i/15/1013/h_1444741070_8277061_cc04f720d3.png
* http://storage5.static.itmages.ru/i/15/1013/h_1444741087_2241184_6546648048.png
* http://storage8.static.itmages.ru/i/15/1013/h_1444741106_8000667_4fdb5b0c2e.png
* http://storage9.static.itmages.ru/i/15/1013/h_1444741121_4574491_424dfe3a4b.png
* http://storage1.static.itmages.ru/i/15/1013/h_1444741138_7778052_204ac4dc16.png

Выглядит неплохо? Нагрузка, конечно небольшая и синтетическая.

А если вдруг нам станет не хватать этого сервера, то мы сходим на другой и зупустим приложение и там
cocaine-tool -h another.cox.node.example.com app start --name uber-app-0.1 --profile spawn --timeout 20000
И локатор найдет его там, и нагрузку пустит как надо, и будет хорошо, да.
Difrex to All (2015-10-13 13:01:20) [ссылка]

Re: MS Linux

Ответ на сообщение
> Микрософт проиграл.
Но если смотреть на денежный вопрос, то, может быть, и выиграл.

Сама ситуация забавная, да =)
vit01 to Difrex (2015-09-18 09:39:15) [ссылка]

MS Linux

Микрософт проиграл.

ii://2NQ7aCfFarqPROo1W9Mq
Difrex to All (2015-09-18 09:10:10) [ссылка]

Re: LILO закрывают

Ответ на сообщение
>Особенно на GRUB2, так как слишком он сложный в настройке
Да ладно тебе. Нормально он настраивается
vi /etc/defaults/grub
grub-mkconfig > /boot/grub/grub.cfg
grub-install /dev/sda
ЗЫ. Лило пользуюсь на некоторых машинках.
Difrex to spline (2015-09-14 12:45:49) [ссылка]

LILO закрывают

Вот сабж блин. Я понимаю, что у всех давно GRUB2 и LILO ему во многом уступает, но я к нему привык и очень он мне нравится своей простотой. И пользуюсь повсеместно. Пат, конечно, в ближайшей слаке его наверняка оставит, но переход на GRUB в перспективе мне не очень нравится. Особенно на GRUB2, так как слишком он сложный в настройке.
spline to All (2015-09-01 05:53:43) [ссылка]

Re: Скриншоты

Ответ на сообщение
>А вот мой http://storage4.static.itmages.ru/i/15/0727/h_1437994819_1040467_72099de28a.png
i3wm как всегда прекрасен.
>В таком окружении уже почти 4 месяца
Я около полутора лет на нём просидел. Хороший WM.
spline to Difrex (2015-07-28 04:37:42) [ссылка]

Re: Скриншоты

Ответ на сообщение
> В таком окружении уже почти 4 месяца
Тоже неплохо. Минимализм редко надоедает.
vit01 to Difrex (2015-07-27 11:37:37) [ссылка]

Re: Просим, казалось бы, невозможного у VNC и Pulseaudio

Ответ на сообщение
> Кстати, советую заменить VNC на NX или X2go. :)
Они трафик через ssh туннелируют, так что будет процессор нагружать достаточно шифровкой-расшифровкой.
Да и вообще: работает - не трогай =)
vit01 to Difrex (2015-07-27 11:33:59) [ссылка]

Re: Скриншоты

Ответ на сообщение
А вот мой http://storage4.static.itmages.ru/i/15/0727/h_1437994819_1040467_72099de28a.png

В таком окружении уже почти 4 месяца
Difrex to vit01 (2015-07-27 11:01:25) [ссылка]

Re: Просим, казалось бы, невозможного у VNC и Pulseaudio

Ответ на сообщение
>Первая задача решается через VNC.
Кстати, советую заменить VNC на NX или X2go. :)
>А ещё пульсаудио не шипит и не портит звук, как про него многие с Лора любят говорить
Пульсаудио рулит =)
Difrex to vit01 (2015-07-27 07:23:39) [ссылка]