Задать вопрос
  • Почему на Java не разрабатывают операционные системы?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Всеё банально просто. Java компилируется в байткод, а не в ассемблер. Байткод интерпретируется виртуальной машиной JVM, которая при необходимости делает компиляцию в нативный код процессора (технология JIT - Just-in-time compilation).
    Другими словами, для того чтобы получить нативный код нужно запустить байткод внутри JVM. Именно поэтому никто не пришет на java драйверов и прочей низкоуровневой хрени. С другой стороны, чтобы эту хрень писать на java, нужно чтобы было одно из двух условий:
    1) либо процессор напрямую поддерживал спецификацию JVM (со всем барахлом типа GC, memory allocation^ resource management)
    2) либо операционная система поддрерживала в ядре спецификацию JVM (с тем же самым барахлом)

    Ну и не нужно говорить, что язык барахло, если на нем нельзя писать драйверы и секции для MMU. Есть еще десятка два языков, которые это не поддерживают, например все X.NET или erlang^ python и т.д.
    Java для прикладного программирования, а C/C++/D/ASM и прочее - для машинного.
    Ответ написан
    Комментировать
  • Как организовать шаблонизатор на Python?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Ага, похоже вам нужен свой DSL (Domain Specific Language). Это можно сделать например на pyparsing. Красивый пример и ссылки в ответе на этот вопрос - stackoverflow.com/questions/14433785/dsl-in-python...
    Ну и гугл в помощь по python+dsl
    Ответ написан
    Комментировать
  • Как хранить рабочие часы?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    А чего бы не хранить интервалом? А генерировать можно через dateutil на любую дату.
    Испольуйте rrule и rruleset из этого пакета и будете получать даты/время на любую дату. Только нужно два списка делать в вашем случае - одно время для открытия и одно для закрытия. Собственно эти два списка можно перепаковать через zip()
    Ответ написан
    Комментировать
  • [РЕШЕНО] Как объединить 3 linux сервера в одну подсеть без коммутаторов?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Без коммутаторов конечно можно, только будет гадость, сами то сервера мы друг с другом соединим, а-б-с-а, как раз по два коннекта в каждый сервер. Только как к этому кластеру снаружи подключаться?!
    Ставьте два коммутатора, один на кластернную сеть, второй на внешнюю, каждый сервер одним адаптером в один коммутатор, вторым - во второй. А еще лучше - добавьте 10ge адаптеры для кластера., а на остальных интерфейсах сделайте бондинг.

    Что касается glusterfs, то странная она, очень, ушли с него... Мы ceph rbd используем, установка не исльно сложнее гластера, а все остальное гораздо лучше. Один минус, не нужно на нодах мапировать rbd девайсы, работайте через librbd напрямую, или через kvm например. Если уж нужно подключить rbd как блочное устройство, делайте это с клиентов извне кластера!
    Ответ написан
    Комментировать
  • Где найти исходники драйверов (kext) под Mac OS X?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    opensource.apple.com Называется io kit, если не ошибаюсь.

    PS. Ошибаюсь - kernel , хотя не совсем ошибался... Времени много утекло...
    Ответ написан
    Комментировать
  • Как улучшить производительность скрипта python?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Используйте numpy для работы с большими массивами, будет щазтие! Там же есть scipy и работа с изображениями, может пригодится...

    import numpy
    ...
    for file in files[:20]:
                print file
                dataset = OpenFile(file)
                # data = ReadAsArray()
                data = numpy.fromfile(dataset, dtype=numpy.dtype(numpy.int16))
                dataset.close()
                print data [3000, 5000]
    Ответ написан
    1 комментарий
  • Есть ли сайт с документацией по java на русском?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Есть www.javable.com
    Куча статей и документации, плюс бесплатный учебник (нужна резистрация).
    Даже форум есть, то неживой... я по привычке туда раз в месяц захожу, но новых вопросов больше нет.
    Сам сайт увы, уже не развивается, заглох примерно 3 года назад :-(
    Раньше там кипела жизнь, статьи каждую неделю, здоровенное сообщество и прочее, ностальгия одним словом...
    Заходите, черпайте и впитывайте.
    Ответ написан
    Комментировать
  • Выбор DFS, какую начать смотреть?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Ceph + rbd + nfs + pacemaker. 4 ноды на ceph (118тб), две на rbd + nfs server + pacemaker, там же виртуалки kvm напрямую через librbd. Клиентами 15 серверов по nfs с сотней пользователей. Все ходит по инфинибанд qdr. Довольны, cephfs пока не планируем...
    И да, не раздавайте rbd + nfs server с OSD-нод, оно виснет! Виртуалки c librbd и kvm на osd-нодах живут нормально, но мы от греха их убрали, да и памяти там на пределе (1 гиг на терабайт рекомендуется)
    Да, до этого glusterfs пробовали, странное оно очень... А еще раньше жило gpfs покупное от интеллегентных бизнесмашин, но стоимость обновления на новую версию превысило все рамки разумного...
    Ответ написан
    Комментировать
  • Есть ли будущее у программиста микроконтроллеров?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Конечно есть! Куча вакансий на эмбеддер-девелоперов, начиная от совсем простых пиков и заканчивая sparc/mips/arm. А если будете знать что-то из мира RTOS типа VxWorks, QNX и компанию - работу найдете всегда.
    Куча железа делается, на которое портируется как существующее ПО/ОС, так и пишется много нового, от чайников/кофеварок до автомотива/аэро.
    Только у нас в бизнесцентре компаний 5 лично знаю, свои разработки и ПО.
    И это не считая ВПК (и около), который тоже лично знаю где и что.
    Зарплаты везде разные (и очень высокие и средние и низкие) и всё зависит как от квалификации, так и от фирмы.
    Ответ написан
    Комментировать
  • Есть ли готовое решение для развертывания гостевых машин на KVM?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Странно, так вроде бы всё даже по умолчанию так настроено, в убунте как минимум, только галочку при установке поставить.
    Ответ написан
  • Объясните какие технологии были применены на сайте Apple Mac Pro?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    У, самому понравилось, в принципе через гугл находится за 5 минут. Но уж коли нашел, то вот - jsfiddle.net/ynKnS/7
    Набор изображений, которые подгружаются по событию + css transform.
    Вот подробное описание https://ihatetomatoes.net/one-page-scroll-with-ani...
    А вот как можно разбить видео на эти самые изображения - https://boagworld.com/reviews/website-animation/

    PS. А вот и подробный разбор самой странички https://ihatetomatoes.net/apple-mac-pro-page-decon...
    PPS. Строка в гугле https://www.google.com/webhp?sourceid=chrome-insta...
    Ответ написан
    Комментировать
  • Как выбрать конфигурацию для системы видеонаблюдения?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вариантов как всегда несколько:
    1) Отдельный NAS/SAN типа Netapp с кучей полок с подключением по smb/nfs/iscsi (простое внедрение, расширяемо, дорого, вендорозависимо)
    2) Каждый сервер со своим локальным хранилищем на дисках - сервер с 16x4Тб дисков в массиве RAID10 (очень простое внедрение, нерасширяемо, неотказоустойчиво, дешево, неоптимальный расход дисков)
    3) Строить самому хранилище на основе CEPH например (расширяемо, отказоустойчиво, вендоронезависимо, свободно)

    Вот по третьему варианту (CEPH) есть два варианта:
    1) Отдельное хранилище, к которому клиентами подключаются сервера, аналог первого варианта.
    Каждый сервер хранилища будет иметь: 16х4Тб дисков SATA, 64Гб RAM, два порта 10Гб и/или 40Гб infiniband (по стоимости одно и тоже), процессор любой ксеон.
    2) Совмещенное хранилище, каждый сервер хранилища дополнительно запускает виртуалку(ки) с trassir. Конфигурацию каждого сервера увеличиваем на более производительный процессор на 8 ядер и добавляем памяти для трассира.
    Типа: 2x Xeon 2680v2, 96Gb RAM, 16х 4Tb SATA.
    В этом случае виртуалки могут мигрировать туда-сюда с сервера на сервер абсолютно безболезненно, прикручиваете дополнительно pacemaker и будет полный HA с аптаймом пять девяток!

    У нас CEPH держит сейчас 118 терабайт, полет нормальный. Клиенты и виртуалки (KVM) и NFS/SMB.
    Ответ написан
  • Удаленое управление компьютером. Что почитать?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    А если сервер настоящий, то наверняка имеет BMC с ip-kvm на борту, ну а так ssh или vnc.
    Ответ написан
    Комментировать
  • Собственное облачное хранилище на linux-сервере?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    А ещё ceph не забудьте.
    Ответ написан
    Комментировать
  • Как выйти в режим программирования вне ос без помощи дополнительных программ(ассемблер), используя лишь машинные инструкции?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    С точки зрения железа, процессор при подаче напряжения считывает первую инструкцию из адреса, выставленного на адресной шине. Эта инструкция и есть битовое представление ассемблерной инструкции. Первый адрес на шине обычно выставляется для обращения во flash/rom, далее уже сама программа, зашитая туда, инициализирует сам процессор, память, регистры и периферию, эта программа называется БИОС.Так работают все биосы. Раньше в биос прошивался интерпретатор языка бейсик, теперь его туда не встраивают.
    Ассемблер кодирует символьное представление инструкций в битовое, на входе текстовый файл, на выходе бинарный. Для записи инструкций непосредственно в память есть специальный механизм, реализуется аппаратно и называется JTAG, через него можно с другого компьютера писать бинарно непосредственно в память целевого компьютера.
    Для тренировки в ассемблере( а без него НИКУДА, так как это символьное представление самих инструкций) рекомендую или простые отладочные комплекты типа arduino/stm32 или простую виртуальную машину, где можно подгружать свой биос из файла.
    Ответ написан
    Комментировать
  • Как/чем аггрегировать большие объемы данных (а в реалтайме?)?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    А что значит "реалтайм агрегация"? Мы же не можем в реальном времени агрегировать по непонятным условиям... Если хоть какие-то параметры имеются, то можно использовать хранилища key/value типа redis или mongo. А если нужны отчеты в виде графиков, то настоятельно рекомендую посмотреть в сторону graphite. Ну и как минимум можно агрегацию кластеризовать методом map/reduce.
    Ответ написан
    Комментировать
  • Как спроектировать сеть?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Ха, всё достаточно просто. Единственное - я не вижу в наборе юного администратора простенького коммутатора. Но не беда, бежим в магазин за dlink des-1016 ( 16 портов за ~3000 рублей) или des 1008 (8 портов за ~1500 рублей), они как раз поддерживают vlan, а это нам хорошо.

    Теперь делаем так:
    1) internet -> ADSL -> (eth0) Linux (eth1) -> switch
    2) switch (VLAN 1) - > клиенты офиса
    3) switch (VLAN 2) - > гости

    На линуксе:
    - поднимаем cамбу и две сетевые шары
    - два виртуальных интерфейса под два вилана на eth1
    - DCHP + BIND (или dnsmasq как простая замена)
    - делаем маскарад на eth0

    На коммутаторе делаем два вилана, на порты одного подключаем офис, на порты второго - гостей.

    Миссион комплете.

    PS. Можно конечно и без виланов обойтись, а авторизовать в сети по запросу через разрешение iptables по web-страничке, но дешевле купить коммутатор.
    Ну а так, вот готовы captive portal для авторизации - www.andybev.com/index.php/Using_iptables_and_PHP_t...
    Ответ написан
    Комментировать
  • Широковещательный шторм. Как победить?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Подозреваю, что видеосервер вещает мультикастом, а вы протокол igmp на коммутаторах не настроили, в частности опции igmp-snooping. В результате мультикаст от сервера получают абсолютно все (от принтера до ip-телефона), а не те, кто подписан на рассылку. Заменой сетевых карт тут не помочь, только настройкой коммутаторов!!! ( это я как разработчик видеотрансляций мультикастов говорю)
    Ответ написан
    Комментировать
  • Как грамотно сохранять множество в питоне при выходе из программы?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Самый простой путь - pickle. Единственный недостаток, плохая совместимость между версиями питона, это когда сохранились в одной версии, а восстанавливаем в другой.

    import pickle
    
    a=[]
    fp = open("afile.bin")
    pickle.dump(a,fp) #сохранить
    a=pickle.load(fp) #восстановить
    Ответ написан
    Комментировать
  • Как сделать дублирование вывода в файл?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Ух ты! Новый вызов однако. Не знал... Вот и описание с примером man7.org/linux/man-pages/man2/tee.2.html
    Мы в своё время извращались с копированием вручную в 2.4.xx ядрах :-)
    Ответ написан