LINUX.ORG.RU

Сообщения AlexVR

 

Т-платформы добивают...

 

HABR: У «Т-платформ» крупные проблемы: сайт не работает, 80% сотрудников уволились (2019-12-21)

… Проблем много, в основном они касаются взаимоотношений с государством. …

История на ЛОРе:

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

Что у нас сейчас с суперкомпьютерами:

Что с процессорами:

  • Как приоритетные научные проекты государству не нужны.
AlexVR
()

bitbucket дропает поддержку HG

 , ,

https://bitbucket.org/blog/sunsetting-mercurial-support-in-bitbucket

.......................

Больше сказать мне нечего.

AlexVR
()

Картинки на новостной ленте в теме black

 ,

Это ужас!!! На большом мониторе сегодня главная вызывает отвращение. Картинка высотой больше высоты окна!!!

Сделайте хоть что-то...

Перемещено jollheef из linux-org-ru

AlexVR
()

Abstract data type и Си

 ,

Задача написать учебный пример по Abstract data type на примере Си.

Что получилось:

stack.h:

// ...
struct Stack_s;
typedef struct Stack_s Stack;
// Old: typedef int Item;
typedef int8_t Item;

// Old: Stack*  stack_create    ();
// Old: void    stack_destroy   (Stack **stack);
// Old: Stack*  stack_clone     (Stack *stack);
Stack*  stack_create    (void);
void    stack_destroy   (Stack *stack);
Stack*  stack_clone     (const Stack *stack);

size_t  stack_size      (const Stack *stack);
int     stack_is_empty  (const Stack *stack);

void    stack_push      (Stack *stack, Item item);
Item    stack_pop       (Stack *stack);
Item    stack_top       (const Stack *stack);
void    stack_clear     (Stack *stack);
// ...

stack.c:

#include "stack.h"

struct Stack_s {
  // Полное описание структуры стека скрыто от пользователя
  // ...
};

// Old: Stack* stack_create() {
Stack* stack_create(void) {
  // Создать стек можно только используя stack_create
  // ...
}

// ...

main.c:

#include <stdio.h>
#include <stack.h>

int main(void) {
  Stack *stack = stack_create();
  
  stack_push(stack, 1);
  stack_push(stack, 2);
  stack_push(stack, 3);
  
  while(!stack_is_empty(stack)) {
    printf("%d\n", stack_pop(stack));
  }
  
// Old: stack_destroy(&stack);
  stack_destroy(stack);
  return 0;
}

Хочется конструктивной (и не очень) критики.

Не смог найти хороших ссылок по именованию и минимальному набору функций (в том числе как удалять «объект»).

З.Ы.: Про GObject, Cello, OOC toolkit, Axel T. Schreiner, Object-Oriented Programming with ANSI-C слыхал

AlexVR
()

multiplo

 

Есть такой «свободный» конструктор http://multiplo.org/.

Кто его юзал? И что есть похожего?

AlexVR
()

Симпатичный python веб-фреймворк

 , ,

Есть ряд мелких задач для управления сервером, которые хочется свести в простую Web-морду. Для чего готов написать немного кода. Основные требования:

  • Поддержка аутентификации в LDAP (OpenLDAP).
  • Выполнение подготовленных скриптов от имени вошедшего пользователя.
  • Готовый набор CSS-стилей.
  • Простой способ создания небольших форм.
  • Закладки или глобальное меню для основных групп заданий.

Примеры задач:

  • Управление пользователями и группами LDAP для «админов».
    • Создать пользователя и одноимённую группу.
    • Создать пачку пользователей вида user01, user02, …., user23.
    • Создать группу для проекта и поместить в неё пользователей. Для этой группы автоматом создать директорию на общем файловом ресурсе.
  • Отображение статуса квот в общей файловой системе для текущего пользователя.
  • Управление квотами для «админов».
  • Отобразить очередь заданий текущего пользователя в планировщике задач SLURM.
  • Удалить из очереди SLURM задание.
  • ...

Главное от чего хочется уйти, так это от HTML/CSS вёрстки.

AlexVR
()

CentOS vs Scientific Linux, заход №2016.1

 , ,

Стою перед выбором CentOS 7 или Scientific Linux 7.

Цель: обновление вычислительного кластера.

Как следствие: будут свои ядра для работы с Lustre.

Подход к сохранению версий 7.1/7.2 в SL мне больше по душе чем Rolling у CentOS.

Результат: пока склоняюсь к SL

Хочется услышать за и против от других.

AlexVR
()

Определение системы управления версиями

 , , , ,

Решил тут подготовить пару слайдов по DVCS для студентов и понял, что не могу выбрать внятное определение «системы управления версиями» и список функций, что бы влезало на слайд обычным текстом в beamer. Кто что может посоветовать?

UPDATE:

Исходный код презентации: https://bitbucket.org/AlexVRud/presarhpc/src/default/Mercurial_intro.tex?file...

AlexVR
()

static const double в функции

 

Как избавиться от варнинга в ситуации:

typedef struct Solver_s {
    ...
} Solver;

double Solver_compute_X(Solver * self) {
    static const double alpha = sqrt(M_PI)/27.0; // <--- Warning
    static const double beta  = cos(3.0/17.0);   // <--- Warning
    ...
    return ... alpha ... beta ...;
}

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

AlexVR
()

Делать вложенные классы или нет?

 ,

Пусть есть некая модель: http://medical.nema.org/dicom/2013/output/chtml/part17/sect_C.5.html

Patient
Study
Series
Waveform
Waveform\MultiplexGroup
Waveform\Chanel
Waveform\Sample
Которую надо представить в виде классов в библиотеке на C++.

Так же планируется задействовать SWIG для предоставления доступа к библиотеке из Python.

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

1:

namespace dicom {
class Patient;
class Study;
class Series;
class Waveform;
class WaveformMultiplexGroup;
class WaveformChannel;
class WaveformSample;
}

2:

namespace dicom {
class Patient;
class Study;
class Series;
class Waveform {
  class MultiplexGroup;
  class Channel;
  class Sample;
  ...
};
}

3:

namespace dicom {
class Patient;
class Study;
class Series;
class Waveform
namespace wf {
  class MultiplexGroup;
  class Channel;
  class Sample;
}
}

AlexVR
()

Наследование

 

Лето, температура за бортом +10, что уже радует.

Решили порешать задачки, ни у одну подкидываю.

Есть код:

#include <iostream>

class Foo {
public:
    Foo() : a_(0) {};
    Foo(int a) : a_(a) {};
    inline int getA() { return a_; };
    virtual void print() { std::cout << "{a: " << getA() << "}\n"; };
private:
    int a_;
};

class Bar : public Foo {
public:
    Bar() : Foo(), b_(0) {};
    Bar(int a, int b) : Foo(a), b_(b) {};
    inline int getB() { return b_; };
    virtual void print() override { std::cout << "{a: " << getA() << ", b: " << getB() << "}\n"; };
private:
    int b_;
};

int main() {
    Foo t1 = Bar(10,10);
    Bar t2 = Bar(20,20);
    Foo *t3 = new Bar(30,30);
    t1.print();
    t2.print();
    t3->print();
    delete t3;
    return 0;
}

Выхлоп ожидаемый:

...$ g++ -std=c++11 task.cpp && ./a.out
{a: 10}
{a: 20, b: 20}
{a: 30, b: 30}

И тут вопрос: «А как сделать вывод в первой строке такой же как в других? А чем это будет плохо?»

AlexVR
()

stdarg и float

При компиляции на 32-битной платформе:

float x = 0.0f;
printf("%f", x);
будет происходить нечто подобное:
float x = 0.0f;
printf("%f", (double)x);
Т.е. дополнительные параметры типа float будут преобразованы в тип double, перед вызовом функции с переменным числом аргументов.

Вопрос: в каком документе это описано?

AlexVR
()

Перезагрузка из-за переполнения ОЗУ

Ситуация: вычислительный кластер, на узлах запускается приложение в 20 потоков потребляющее много памяти. В один момент ОЗУ заканчивается и узлы тут же уходят в перезагрузку. Что бы пользовательское приложение уводило систему в перезагрузку мне кажется мало вероятным, более вероятным кажется, что систему выводит из строя либо какая-то служба (например, ganglia), либо драйвер Infiniband. Если что ОС Redhat 6, ОЗУ 64Гб, своп 2 Гб. Что можно сделать?

AlexVR
()

Удалённый графический терминал

Понимаю, что задача достаточно стандартная, но башка уже не варит.

Есть сервер (RedHat). На нём в основном народ будет работать через ssh. Но в некоторых случаях нужен запуск графических приложений. Проброс X-ов ведёт себя, мягко говоря, притормаживающи. Каналы связи клиентов могут быть крайне медленными (1Мб/с, а то и уже). Основная ОС клиентов: Оффтоп. В далёкие времена я для таких целей использовал FreeNX. Но что сейчас выбрать?

AlexVR
()

Тем кто пользуется CentOS

 

Стою перед задачей поднять несколько машиин с CentOS для разработки ПО под кластер. Честно говоря от такого закоренелого Ынтерпрайза я в шоке. Тихо мирно первый ноут привожу к удобоворимому виду. Но вот хочется услышать, кто как использует сабж (какие репозитории используете, откуда таскаете spec-файлы, чем автоматизируете сборку пакетов, зачем вам вообще это надо, ...)

AlexVR
()

Глюк с [url=...

Пример А пытался сослаться на http://xn--90afdbaav0bd1afy6eub5d.xn--p1ai/bsr/case/13446

AlexVR
()

http://www.doxygen.org в реестре?

Что-то у меня http://www.doxygen.org/ выдаёт сообщение «Мы приносим свои извинения, но доступ к запрашиваемому ресурсу ограничен.»

З.Ы.: Хотя http://doxygen.org/ - редиректится на http://www.stack.nl/~dimitri/doxygen/ и всё ок.

AlexVR
()

Страница регистрации

Сейчас зашёл через другой браузер и пришлось логинится. Но я промахнулся и попал на страницу регистрации, после чего повторно залогинился и тут увидел форму регистрации в своей любимой black-теме.

Что-то мне подсказывает, что форму регистрации залогиневшейся пользователь не должен видеть вообще. Должен быть редирект на главную или предыдущую.

AlexVR
()

Переход с SVN на HG

Решил потренироваться с переходом с SVN на HG.

  • В качестве тестового примера взял КуМир (http://lpm.org.ru/kumir2/).
  • Используя snvsync сделал локальную копию репозитория. С ней получается быстрее конвертация и анализ изменений.
  • Далее начинаются проблемы. Если использовать hg convert то:
    • получаем набор независимых веток, но по ним нормально виден процесс работы.
    • теряется вся что было где-то до 984 ревизии, когда код из корневой директории всё таки начал переноситься в trunk. Т.е. до этого никаких brunches и trunk небыло.
    • теряются директории playground и testing, но с ними надо разбираться отдельно, находя подходящее место в новом проекте.

Собственно приходи к вопросам:

  • как добавить всё что было до этого (984 SVN-ревизии)?
  • как свести ветви в единое дерево?
  • как быть с дополнительными директориями playground, testing находящимися и сейчас в корне?

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

AlexVR
()

[почта] что выбрать

 

Понадобилась система со следующим функционалом:

  1. Почтовые ящики для собственного домена
  2. Групповые алиасы - кто угодно посылает письмо на один адрес, пересылается нескольким адресатам, не все из них в этом домене
  3. Закрытые подписки - на подобе Гугловских групп, участники не обязательно в этом домене
  4. Web-интерфейс управления всем выше перечисленным

ни как не могу найти всё в одном.

AlexVR
()