Задать вопрос
  • NFS - можно ли избежать синхронизации passwd?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Конечно можно! Развёртываете ldap (или radius) и через него и pam раздаёте пользователей на сервера и клиенты. Ну а если по полной использовать nfs4, то до кучи ещё и kerberos приворачиваете.
    Ответ написан
    2 комментария
  • Как можно протестировать файловую систему?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Можно скомпилировать fio freecode.com/projects/fio и им тестировать. А что конкретно хотим тестировать то?
    Ответ написан
    Комментировать
  • Стоит ли использовать SWOP в качестве замены памяти на сервере?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Нет, не стоит! Если память активно используется, то процессор при добавлении свопа будет утыкаться в производительность дисковой системы и также будет простаивать. Ведь процессору нужно достать из свопа стреницу, заместить её в реальной памяти и только птом передать управление программе.
    Я подозреваю, что стоит монгодб, которая и съела всю память. Если так, то запускайте монгу в отдельном инстансе или в контейнере.
    Также, в приведенном примере со 100% загрузки памяти и swap, мне кажется нужно разбираться с приложением, которое память так любит - это ненормально!
    Ответ написан
    1 комментарий
  • С помощью чего реализовать кэширование SQL-запросов для разных представлений таблицы в одном месте (Java+SWT/JFace+Hibernate)?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Во первых, кеш запросов и кеш данных приложения, возможно и кеш отрендереных кусков страницы - совершенно разные вещи, которые , мне кажется, Вы смешали в одну кучу.

    1) В hibernate есть свой кеш запросов, который настраивается кучей разных способов для работы с разными кешами. О! Даже хабра-статья оказывается есть - habrahabr.ru/post/135176

    2) Устаревание записей и прочее - прерогатива кеша работы с базой
    3) Если какие-то данные должны удаляться со временем, то есть политики типа LRU, для кеша данных, возможно, придется использовать не только кеш запросов, но и кеш отрендерренных страниц.

    Со статьи на хабре найдете описание основных библиотек кеширования...
    Ответ написан
  • Как запускать 10+ потоков в java без повторяемости кода?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Как-то так....
    ArrayList<Thread> mythreads = new ArrayList<Thread>();
    int tcount = 1000;
    for(int i=0; i< tcount; i++) {
         Thread thr = new myThread();
         mythreads.add(thr);
         thr.start();
    }
    for (Thread thr : mythreads) {
         thr.joint();
    }

    или по модному
    ExecutorService es = Executors.newCachedThreadPool();
    for(int i=0;i<5000;i++)
        es.execute(new Runnable() { /*  your task */ });
    es.shutdown();
    boolean finshed = es.awaitTermination(1, TimeUnit.MINUTES);
    Ответ написан
    Комментировать
  • Как сделать правильную организацию "напоминаний" на уровне БД?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    У меня это так реализовано. Все даты храним в формате таймстампа, это проще для хранения и вычислений. Исключения храним в произвольной форме ключ/значение, у меня реализованы только часы ключами from to. Задания бывают в нескольких состояниях: активная, неактивная, просроченная, будущая, бесконечная.
    Само задание выглядит примерно так (это как раз и есть запись в таблице):
    - старт - дата старта (таймстамп)
    - дельта - смещение реального старта от начала старта (это особенность моего приложения, нафиг не нужна, просто чтобы код не портить)
    - период - период повторения (таймстамп в виде timedelta)
    - продолжительность (должна быть меньше или равна периодутаймстамп в виде timedelta)
    - стоп - дата окончания (может отсутствовать, таймстамп в виде timedelta)
    - count - число повторений от даты старта (если есть, то обязана ставиться дата окончания, int )
    - исключения (например без понедельников или только чётные часы, или время с 10 до 19)
    - активна (да/нет)

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

    Базовый класс (на питоне):
    # функция преобразования питоновского класса datetime в timestamp
    # возвращает timestamp (int)
    def total_seconds(td):
        seconds = (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10.**6
        ret = 0 if seconds < 0 else seconds
        return ret
    
    class interval(object):
    # здесь должно быть все понятно
    # self  - указатель на сам класс, особенность питона, на другом языке этот параметр опускаем
    # вместо self на других языках используем this или аналог
        def __init__(self, start, delta, duration, period):
            self.start = start
            self.delta = delta
            self.duration = duration
            self.period = period
    
    # вычисление последнего интервала от нужной даты
    # возвращает две даты от и до
        def last(self, date):
            _start = self.start+self.delta 
            mul = int(total_seconds(date - _start)/total_seconds(self.period))
            at = _start+(self.period*mul)
            to = at+self.duration
            return (at,to)
    
    # является ли интервал активный на нужную дату
    # возвращает true/false
        def isLive(self, date):
            at, to = self.last(date)
            f1 = date >= at
            f2 = date < to
            return f1 and f2
    
    # вычисление следующего интервала от нужной даты
    # возвращает две даты от и до
        def next(self, date):
            at, to = self.last(date)
            return (at + self.period, to + self.period)


    Остальное, не привожу, так как много и надеюсь, допишите сами.
    Ответ написан
  • Arduino, с чего начинать?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Только что пробегала на хабре статья про амперку, почтой доставят. - amperka.ru
    Ответ написан
    Комментировать
  • Замыкания, что не так?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Оператор this яваскрипте не всегда указывает на то, на что хотелось бы. Вот javascript.ru/Function/call и вот habrahabr.ru/post/199456 на почитать. А всё потому, что в яваскрипте объекты, как таковые, не совсем объекты. Я так вообще this стараюсь не применять, ибо странный он...
    Ответ написан
    Комментировать
  • Отключен Iptables и SELinux. Что еще может мешать входящим подключениям?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Еще есть замечательный сервис failtoban, он как раз вместе с freepbx в комплекте. Вот он тоже может через iptables блокировать. Если он включен, то снесите его и еще, на всякий случай:
    setenforce 0
    iptables -F
    Ответ написан
    Комментировать
  • Как узнать загрузку дисков(iops) под Solaris?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Промониторить можно через iostat, здесь один из важных параметров tps (iops) - транзакций в секунду. Как это сделать описано здесь docs.oracle.com/cd/E23824_01/html/821-1451/spmonit... и здесь thegeekdiary.com/12-iostat-examples-for-solaris-pe...

    Но чтобы понять, когда же диску наступит кирдык, то нужно его сначала оттестировать и узнать, сколько IOPS он может отдать на данной системе, для этого используй fio freecode.com/projects/fio или iometer. Как потестировать через fio - www.linux.com/learn/tutorials/442451-inspecting-di...
    Ответ написан
    Комментировать
  • Как передать видео с IP камеры через 2G/3G/GPRS в сеть для просмотра из дома?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Увы, живой поток получить нереально! Реально только получать снапшоты с заданным промежутком времени. Это из-за асинхронности передачи данных в 2G/3G сетях , к абоненту может быть и 1Мб/с, а от абонента от силы будет 9,6-36 Кб/c, практически доисторический модем :-( Да и размер снапшотов тоже будет невелик.
    Ответ написан
    Комментировать
  • Какой хороший ИБП купить под мои условия?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Купите например ИБП APC Back-UPS BX800CI-RS, около 5000 рублей. И как писали выше, скорее всего имеет смысл поменять блок питания.
    Ответ написан
    Комментировать
  • CPython. Есть ли утечки памяти в самом языке?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Сам язык, интерпретатор, вроде бы не замечен в текучести. То, чем пользуюсь, twisted + cyclone, плюс еще десяток пакетов, тоже не текут. Все работает 24х7, меня устраивает.
    Ответ написан
    1 комментарий
  • Как мигрировать железный Linux сервер в Xen 6.2?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Сделать образ можно простой утилитой tar или cp
    я делаю так, только не для XEN, а для KVM, но технологии похожи (наверное)...
    mkdir /root/archive
    tar --one-file-system --exclude /root/archive -czf /root/archive/my-image.tgz /

    1) создаем каталог
    2) запускаем копирование корневой FS в файл в каталоге, этот каталог исключаем из копирования

    С полученный образ разворачиваем где хотим, например на подмонтированную FS в /mnt:
    tar -C /mnt -xzf /root/archive/my-image.tgz
    Не забываем делать grub-install после развертывания на целевой образ и следим за UUID в файлах /boot/grub/grub.cfg и /etc/fstab на нем!
    Ответ написан
    Комментировать
  • Как начать заниматься робототехникой?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Рекомендую ресурс - www.easyelectronics.ru уважаемого DiHalt
    - там есть раздел для начинающих - easyelectronics.ru/category/nachinayushhim
    - сообщество we.easyelectronics.ru с блогами
    - форум forum.easyelectronics.ru
    - и куча занимательных статей почти на все случаи жизни.
    Ответ написан
    2 комментария
  • Какие технологии выбрать для конкретной задачи?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Работаю (года 3 уже) с клоном торнадо, написанным под twisted - cyclone.io
    Все тоже самое как и в торнадо, плюс весь стек технологий twisted, что очень удобно. Асинхронности бояться не нужно, но мозг придется немного вывернуть. В торнадо/циклоне очень удобно работать с отложенными запросами типа comet/websockets, ну и в дополнение в этому к твистед есть библиотеки для работы с монгами и раббитами.
    Базу данных выбирайте, какую удобней, можно монго, можно постгрес. И логично хранить результаты в этой же базе. Я за монго.
    Если результат нужен только на один раз, на отдачу клиенту, то можно его вообще не хранить в базе, а просто посылать его в очередь rabbitmq, как клиент пришел за результатом - его и отдавать.
    Ответ написан
  • Какие сервисы ставить на файловый сервер под Debian Wheezy?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Glusterfs забыли. Как раз самое то для файлопомойки.
    Ответ написан
    Комментировать
  • Витая пара FTP 5e почему не заводится 1Gb/s?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    По вопросам:
    - шестую категорию брать не нужно, всё прекрасно работает на 5e.
    - экран особой роли не играет, его не нужно подключать, если разъем RJ-45 этого не позволяет;
    - кабель говно, берите neomax например, но даже на нем должно завестить на двух метрах.

    Подозреваю, что:
    - обжимали говноинструментом и недожали;
    - не до конца заправили в разъём проводники;
    - произошла распарка, перепутаны сигналы разных пар в разъёме - вот это самое главное, физически кабель будет как бы нормальным, но работать нормально не будет, так как будут наводки между парами.

    Что делать:
    - еще раз заправить в обжимку и дожать;
    - абсолютно ВСЕ проводники должны быть прижаты к торцу разъёма и быть одинаковой длины, обрезка перед заправкой проводников в разъём производится в ОДНО действие.
    - чательно проверяйте маркировку проводников в разъёме.
    Ответ написан
    Комментировать
  • Как посмотреть, какой демон инициализации и какая оконная система в linux?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    В ubuntu за инициализацию графики по умолчанию отвечает lightdm. Он инициализирует xserver (xorg) и выводит окно приглашения с вводом палоля и/или запускает сессию пользователя.
    Чтобы его погасить, достаточно выкинуть его из автозагрузки командой sudo dpkg-reconfigure lightdm Или переименовать файл /etc/init/lightdm.conf например в lightdm.conf.disabled

    После этого просто входить в систему, а графику запускать по команде startx.
    Ответ написан
    Комментировать
  • Чем создать распределенный торрент диск?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    А обязательно через битторрент?! Может быть подойдет распределенная файловая система типа glusterfs?
    Ответ написан
    Комментировать