LINUX.ORG.RU

Посоветуйте дистриб для глубокого изучения Linux!


0

0

Доброго дня/вечера/ночи/утра!

Довольно долгое время у меня стояли ASPLinux и Fedora: программы компилировались, видео игралось, инет пахал - большего и не надо было. Сейчас возникло желание более глубоко узнать систему, для чего надо найти подходящий дистрибутив. Хочется, чтобы в нём все действия принято было делять "ручками", с другой стороны имелись дублирующие все действия конфигурационные утилиты(GUI/Curses-based) и удобный менеджер пакетов. Главные 2 претендента-Slackware и Gentoo и их разнообразные форки, однако оба они чем-то меня не устраивают. Slackware-отсутствием 64-битности(хочу 64 бита из принципа; slamd64, насколько я понял, недоработан, плохо поддерживаем и крив) и большим ограничением по пакетам(с Gnome и Gaim, которыми я пользуюсь, там вроде как большие проблемы) Gentoo-большим временем установки и обновления пакетов(хочется постоянно обновляться, однако перспектива всегда заново перекомпилировать пакеты, тратя на это часы совсем не радует) Плюс интернет достаточно медленный, это тоже должно доставить много проблем Недавно узнал об Arch, однако отзывы об этом "Gentoo с бинарниками" разнятся, кто-то упрекал его в нестабильности, плохой поддержке и малом числе пакетов. Так какой дистрибутив вы бы пособетовали мне выбрать? Спасибо.


Ответ на: комментарий от KRoN73

>Да, я прочитал. И ответил - именно на это. Почему-то в моих программах операции вывода и преобразования занимают считанные проценты.

Потому что ты либо гонишь либо академик и учишь студентов

>Если для тебя программирование == строго математические функции, то тебе ещё многому предстоит учиться :)

Мне ужо поздно учиться :)

>Ибо у нормального программиста 90% работы - это именно алгоритмы. Неважно, речь идёт о веб-сервере или MMORPG.

Ты с паттернами случаем не путаешь?

>Если же у тебя в программе 90% занимает ввод-вывод - то тебе пора думать или о повышении квалификации, или о смене профессии.

Если же у тебя это не так - я сильно удивлен и требую описания сделанных тобой проектов.

signal
()
Ответ на: комментарий от signal

>Если же у тебя это не так - я сильно удивлен и требую описания >сделанных тобой проектов.

Из крупных проектов последних 5 лет - это закрытый (пока) CMF, на которой крутятся несколько сайтов, в т.ч. тот, за который зарплату плучаю (154 тыс. строк) и открытый L2Fortress - MMORPG-сервер для LineageII, (173 тыс. строк, но тут работа с коммьюнити).

А так - вот, например, кусок кода, с которым возился вчера:

// Возвращаем статус "обновлено". private boolean nodeCheck(Node node, int dx, int dy) { // Текущую клетку не проверяем. if(dy == 0 && dx == 0) return false;

int test_x = node.x + dx; int test_y = node.y + dy; // Если из текущей клетки нет выхода, то дальше не считаем. byte mask = makeMask(dx, dy); if((node.nswe & mask) != mask) return false;

node.nswe &= ~mask; if(node.nswe == 0) { node.checked = true; addDistList(node); }

int test_z = GeoEngine.NgetHeight(test_x, test_y, node.z);

boolean updated = false;

Node test = getNode(test_x, test_y); if(test == null) { putNode(test_x, test_y, test = new Node(test_x, test_y, test_z, node, _to, node.depth + 1)); test.nswe &= ~makeMask(-dx, -dy); updated = true; } else if(test.depth > node.depth) { test.next = node; test.depth = node.depth + 1; test.checked = false; updated = true; test.nswe = GeoEngine.NgetNSWE(test_x, test_y, test_z); } ... и т.д.

Где тут 90% ввода-вывода?

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Иммать, формат...

    // Возвращаем статус "обновлено".
    private boolean nodeCheck(Node node, int dx, int dy)
    {
        // Текущую клетку не проверяем.
        if(dy == 0 && dx == 0)
            return false;

        int test_x = node.x + dx;
        int test_y = node.y + dy;
     
        // Если из текущей клетки нет выхода, то дальше не считаем.
            
        byte mask = makeMask(dx, dy);
        
        if((node.nswe & mask) != mask)
            return false;

        node.nswe &= ~mask;
        if(node.nswe == 0)
        {
            node.checked = true;
            addDistList(node);
        }

        int test_z = GeoEngine.NgetHeight(test_x, test_y, node.z);

        boolean updated = false;

        Node test = getNode(test_x, test_y);
        if(test == null)
        {
            putNode(test_x, test_y, test = new Node(test_x, test_y, test_z, node, _to, node.depth + 1));
            test.nswe &= ~makeMask(-dx, -dy);
            updated = true;
        }
        else if(test.depth > node.depth)
        {
            test.next = node;
            test.depth = node.depth + 1;
            test.checked = false;
            updated = true;
            test.nswe = GeoEngine.NgetNSWE(test_x, test_y, test_z);
        }

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

>А так - вот, например, кусок кода, с которым возился вчера:

Я прекрасно понимаю что есть у тебя и чисто алгоритмический код (тем более в mmorpg-сервере) но прикинь сам:

Если кратко то этапы работы твоего сервера такие:

1)получение информации от пользователя 2)парсинг ее 3)логика работы 4)отсылка ответа

Пункты 1,2,4 содержат в основном только операции ввода-вывода. Это значит чтобы написать пункт номер 3 придется учиться сначала писать пункты 1,2,4 а это по большей части - всевозможные api ОС и фреймворки т.е опять же ввод-вывод.

Т.е отсюда и делается вывод что для того чтобы написать твой mmorpg-сервер нужно 90% практических знаний и только 10% теории.

Хотя конечно это не значит что осилить теорию для твоей задачи будет проще и быстрее по времени чем практику по различным api.

>Где тут 90% ввода-вывода?

В остальном коде.

signal
()
Ответ на: комментарий от KRoN73

По коду целых два вопроса: 1)почему функция никак не завазанная на конкрентый инстанс класса не описана как final static 2)почему нет проверки на node==null из входных данных

signal
()
Ответ на: комментарий от KRoN73

> private boolean nodeCheck(Node node, int dx, int dy) { // Текущую клетку не проверяем.....

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

anonymous
()
Ответ на: комментарий от signal

>Пункты 1,2,4 содержат в основном только операции ввода

И что из этого? Эти пункты пишутся один раз в проекте и даже если они и занимают процентов 10 кода (у нас так) суммарных обращений к этому коду потом меньше процента.

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

Что в MMORPG, что в CMF.

В MMORPG 90% всей работы - отработка алгоритмов взаимодействия объектов.

В CMF 90% всей работы - разработка нужных SQL-запросов и описание ORM-классов.

KRoN73 ★★★★★
()
Ответ на: комментарий от signal

>1)почему функция никак не завазанная на конкрентый инстанс класса не описана как final static

final - будет, моё упущение. static - нельзя :) Функция приведена не вся, только пара первых экранов, дальше идёт сохранение данных ноды в данные класса. Собственно, это компонент класса, расчитывающего перемещение по пересечённой местности на основе прямого волнового алгоритма. В работе создаётся класс PathFinder с нужными параметрами, и его метод findPath возвращает набор точек для персонажа игры, по которым ему нужно идти.

>2)почему нет проверки на node==null из входных данных

На входе node по алгоритму никогда не равен null. Проверяются только реально существующие узлы.

Вообще, это ещё не оптимизированный код, даже не закоммиченный класс. Я же говорил - буквально вчера с ним возился :) Работает довольно успешно, на тестах 300 мобов двигаются по пересечённой местности вполне уверенно. Но профайлинг ещё предстоит :)

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

>Дрючелко, выучи хаскель и не ипи себе мозк.

Мсье никогда не доводилось работать не в одиночку, а в команде? Или сейчас легко набрать приличную команду Haskell-программистов?

Кроме того, программирование событийных процессов на Хаскеле, работающих с массой глобальных данных - это, кажется, очень весело.

KRoN73 ★★★★★
()

год назад (и два года, и три) - я бы посоветовал Slackware. Сейчас - Archlinux. Ибо логичнее построен.

anonymous
()

Ставь OpenSuSE, иди в /etc и смотри, КАК должны быть писаны конфиги и с КАКИМИ камментами... найдёшь где лучше и грамотнее документировано - дай знать...

sda00 ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.