LINUX.ORG.RU

Сообщения ProtoH

 

Как сделать несколько типов с одними и теми же конструкторами в Haskell?

Форум — Development

Файл Test.hs:

data RestrictionMechanismName = Seccomp | AppArmor | SeLinux | Namespaces | Chroot | Capabilities | CGroups

data LinuxSecurityModule = AppArmor | SeLinux

Из-за строки
data LinuxSecurityModules = AppArmor | SeLinux

`stack runhaskell Test.hs` выдаёт ошибку
Test.hs:3:29:
    Multiple declarations of ‘AppArmor’
    Declared at: Test.hs:1:43
                 Test.hs:3:29

Test.hs:3:40:
    Multiple declarations of ‘SeLinux’
    Declared at: Test.hs:1:54
                 Test.hs:3:40

Но по смыслу AppArmor и SeLinux это и RestrictionMechanismName и LinuxSecurityModule. Как выход пока сделал функцию:
linuxSecurityModules :: [RestrictionMechanismName]
linuxSecurityModules = [AppArmor, SeLinux]

Есть ли возможность в Haskell сделать, чтобы значение принадлежало нескольким типам по-другому для этого примера?

 

ProtoH
()

Что за программа для рисования графов?

Форум — Talks

Помогите определить, что за программа использовалась для рисования этого. Если невозможно определить, подскажите похожую программу, в которой легко можно рисовать графы с циклами, что-то вроде XMind. В XMind к сожалению графы с циклами создаются через Relationship, что неудобно для меня - получается layout в котором сложно ориентироваться.

Dia, yEd не подходят, кажутся неудобными, слишком много движений нужно сделать для простых вещей, в XMind намного проще. Пробовал CmapTools, не очень подошло, есть ли другие?

 ,

ProtoH
()

Вопрос по Scala - доступ к переменной объекта

Форум — Development

Следующий код:

object Main extends App {
    val eps = 0.0001
    val foo = "Hello"

    def test() {
        println(Main.eps)
        println(Main.foo)
/*
Это:
        println(eps)
        println(foo)
выводит то же самое - 0.0 и null
*/
    }
}
Main.test()

выводит:
0.0
null

Почему eps и foo не иницилизируются и выводятся значения 0.0 и null, а не 0.0001 и «Hello»? Что нужно исправить?

 

ProtoH
()

Переключение версии сайта со staging на production с 0 downtime, как?

Форум — Admin

Есть сайт, работающий на одном хосте/машине, больше хостов нет (используется VPS/VDS). Сайт работает на базе php-fpm + mysqld + nginx, используется только одна база MySQL. PHP-исходники, которые обрабатывают текущие запросы лежат в папке /site/production. На хост была залита др. папка - /site/staging с новой версией исходников.

Теперь нужно:
1. Применить апдейт для БД в виде .sql-скриптов, которые могут поменять структуру таблиц базы.
2. Переключить nginx на новую версию исходников, т.е. с /site/production на /site/staging.

Эти два пункта нужно сделать одновременно, так, чтобы юзеры это вообще не заметили, ниодного HTTP-запроса не прервалось, т.е. с 0 downtime и connection draining.

Переключить root можно с помощью команды nginx reload и таким образом переключиться с /site/production на /site/staging. Проблема в том, что /site/staging зависит от скриптов апдейта БД - нужно вначале применить их, иначе .php-скрипты в /site/staging не будут работать. Если же вначале применить скрипты апдейта БД, то сайт некоторое время будет недоступен, потому как Nginx будет использовать старые исходники /site/production какое-то время, до полного переключения на /site/staging.

Как это можно сделать? Можно ли это сделать без введения второго хоста в строй? Если нет, как это делается в случае с двумя или более хостами? Можно ли обойтись без репликации MySQL?

Я полагаю, что для 0 downtime и connection draining нужна репликация MySQL: на slave применяются апдейты, нужные для /site/staging и затем переключаются через DNS, так ли это?

В общем, кто уже строил HA кластеры или имеет опыт для одного хоста переключения с 0 downtime сайта как вы это делаете или это можно сделать? Хотелось бы обойтись без введения второго хоста, если возможно.

Перемещено leave из web-development

 ,

ProtoH
()

Есть ли кому интересно исследование программ?

Форум — Talks

Только начал изучать тему исследования программ - хочется детально разобраться как работают многие опен соурс проги, например: bash, vim, tmux, php, ядро Linux, сокеты, emacs, драйвера и т.д. Хочется обмениваться опытом и инструментами исследования. Одному тут не справиться, слишком большой объём работы. Есть ли кому это тоже интересно?

Update: добавлю несколько ссылок, чтобы было понятнее что я имею в виду:
* linux-inside - a series of posts about the linux kernel and its insides.
* Доки ядра Linux
* Статический анализ
* Reverse Engineering for Beginners

 ,

ProtoH
()

Есть ли желающие изучить очедерной PHP фреймворк?

Форум — Talks

Есть фреймворк - Morpho, есть тут кто, кто хотел бы изучить его?

 ,

ProtoH
()

Что происходит с момента нажатия кнопки питания?

Форум — Linux-hardware

Нажали кнопку питания, что происходит до момента загрузки GRUB. Берём комп с UEFI и ноутбучным процессором Intel-i3/5/7. Прошу помочь разобраться. Пока родил вот что:

1. После нажатия кнопки напряжение подаётся на процессор.
2. Если процессоров несколько выбирается тот, который будет ответственнен за загрузку
3. Процессор переходит сразу 64-битный защищённый режим
4. Процессор проводит процедуру самотестирование, известную как BIST (Built-In Self Test) и загружает из firmware в оперативную память программу UEFI.
.

Непонятно, где хранится прога, которую проц грузит в память. Как называется этот чип? Непонятно используется ли в современных процах реальный режим вначале?

Давайте разберёмся вместе.

 

ProtoH
()

Разработка ОС для программистов на базе Arch Linux - идёт набор в команду

Форум — Talks

Привет всем!

Сейчас идёт такая тенденция: интерфейсы упрощаются, становятся всё более попсовыми.

Те, кто не согласен с этой тенденцией, кто не хочет быть в толпе, которую ведут сами знаете куда, умеет думать и хотят контроллировать систему пишут свои решения. Но посмотрите сколько раз одна и та же проблема была решена множеством людей - просто изучите .dotfiles на GitHub: выбор своих инструментов, настройка буфера обмена, шрифтов, панелей, сочетаний клавиш, редакторов, и др. софта занимает кучу времени.

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

Так дальше нельзя, поэтому решено: быть новому дистру на базе Arch Linux.

Цель: создание удобного открытого диструбутива на базе Arch, где разработчик может всё контроллировать и видеть все процессы, где ничего не скрыто и ничего не остаётся незамеченным, где по всем компонентам ведётся статистика, чтобы разработчик видел, что происходит в системе.

Основные идеи:

* ОС для программистов, никаких компромиссов

* основа - редактор Vim и его сочетания клавиш (конечно в основе Arch и последнее ядро). Для тех, кто использует Emacs, будет возможность переключиться со схемы Vim на схему Emacs, также будет компромиссный вариант, основанный на комбинированном подходе.

* единые сочетания клавиш во всех программах, каждая программа это часть общей идеологии, а не отдельный разрозненный настроенных компонент

* система управления пакетами без изменений - pacman

* оболочка zsh + oh my zsh, для скриптов bash

* используемые и поддерживаемые языки программирования: assembly, bash, c++, clojure, haskell, java, lisp, octave (matlab), perl, php, python, r, racket (scheme), ruby, rust, sql, tex, typescript (javascript)

* сразу из коробки предустановленный софт - лучшие решения из всех найденных

* внедрение machine learning

* отбрасывание всего ненужного (принцип бритвы Оккама (в разумных пределах)).

Вот список софта:

* File manager: mc

* Офис: LibreOffice (альтернативно можно установить OpenOffice, Calligra, GOffice)

* Генерирование паролей: pwgen

* Затирание файлов: wipe, shred * Затирание дисков: nwipe

* Шифрование: cryptsetup, dm-crypt * Хранение паролей: KeePassX

* Диаграммы: Dia, Visual Paradigm, R, Sage?

* Синхронизация файлов: rsync

* Синхронизация и сравнение текста в файлах: meld, (возможно kdiff3?)

* Гипервизор: VirtualBox

* Программы для управления контейнерами: lxc, systemd-nspawn.

* Основной браузер: Firefox

* Вспомогательный браузер: Chromium, Opera, Midori

* Торрент: Transmission

* FTP, SFTP клиент: mc, FileZilla, браузеры, ftp (консольный по-умолчанию)

* SSH: ssh (консольная прога)

* Почта: Thunderbird

* Общение: Skype

* Веб-сервер: Nginx

* Сервер БД: MySQL, Sqlite

* Графовые БД: Neo4j?

* Музыка, фильмы: VLC (MPlayer?)

* Запись аудио: Audacity, PulseCaster

* Поиск дубликатов файлов: fdupes

* Менеджер буфера обмена: autocutsel, но нужна серъёзная доработка

* Desktop Environment: не используется

* Display Manager: не используется

* Window Manager: XMonad

* Основные IDE: IDE на базе IntelliJ IDEA (WebStorm, PhpStorm, PyCharm, и т.д), RStudio, Qt Creator

* Контроль версии: Git

* Основные редакторы: Vim, Light Table (для Light Table нужна доработка)

* Скриншаринг: TeamViewer

* Калькулятор: R или Ipython.

* Органайзер: xmind, Firefox (спец. расширения)

* Эмулятор терминала: urxvt (rxvt-unicode) локально, tmux - удалённо

* Shell: zsh + bash-cкрипты

* Пипетка: gpick

* Таблица символов: gucharmap

* pdf и djvu: qpdfview, zathura, evince?

* epub: evince?

* dvi: evince?

* mobi: evince?

* chm: kchmviewer

* Управление задачами: Taskwarrior

* Растровый редактор: Gimp

* Векторный редактор: Inkscape

* Просмотровщик: nomacs

* Обработка текста: awk, cat, cut, *grep, head, sed, sort, tac, tail, tr, uniq, wc, read

* Disassembler: radare2, capstone, Frida?

* Исследование сети: Wireshark, ss, и ?

* Взаимодействие с Android по MTP протоколу: android-file-transfer

Сайт проекта: https://morpho-os.github.io/

Название дистра: Morpho

Логотип дистра: https://en.wikipedia.org/wiki/Morpho#/media/File:Morpho_didius_Male_Dos_MHNT.jpg

Если вы хотите присоединиться к разработке, пожалуйста пишите сюда. Количество участников команды пока ограничено.

 , , ,

ProtoH
()

В чём преимущество sudo для одного аккаунта при работе через ssh?

Форум — General

Я читал уже wiki и форумы по sudo, но пока я не могу понять в чём его преимущество при работе через ssh (я админю свой VPS), если пользователь один - т.е. админ и никого другого пока не будет в ближайшем будущем? Зачем нужно отключать возможность заходить под root через ssh?

Вот мои размышления по поводу sudo:

Рассмотрим случай использования sudo. Допустим, я на сервере делаю вот что:
1. Cоздаю юзера proto-h
2. Добавляю настройки для proto-h в sudoers
3. Потом прописываю всё, что нужно в конфиг sshd - sshd_config.
4. После этого захожу через ssh с авторизацией по ключу и паролю под proto-h.

Теперь мне нужно для каждой операции вводить команды вида:

sudo моя-команда аргументы
А это будет, наверное 99% операций. Но ведь если логиниться как root, всё можно делать проще, без лишней команды sudo.

Рассмотрим основной аргумент за sudo - так безопаснее. Но где безопасность? Если кто-то зайдёт под proto-h, он всё равно сможет сделать почти всё, что может root, ведь, если ограничить доступ для proto-h к только безопасному малому множеству команд, то под этим аккаунтом (proto-h) просто нельзя будет сделать ничего полезного по администрированию сервера.

Где провтык в моей логике и в чём действительно преимущество?

 ,

ProtoH
()

Где выставляются настройки монтирования для зашифрованного диска

Форум — Linux-hardware

Приветствую всех!

ОС: Fedora 21, DE: Mate

Есть 1 ТБ внешний диск, подключаемый к ноуту по USB. Я зашифровал диск такими командами:

# Создать раздел LUKS.
cryptsetup -yv luksFormat /dev/sdc
cryptsetup -v luksOpen /dev/sdc my-hdd
# Создать файловую систему.
mkfs.ext4 /dev/mapper/my-hdd
# Примонтировать файловую систему на папку.
mount -t ext4 /dev/mapper/my-hdd /mnt/my-hdd
Теперь, если соединительный кабель выткнуть и воткнуть, диск автоматом монтируется и становится виден:
1. в выводе mount:
> mount
# ...
/dev/mapper/5f906665-acfe-4dc0-ab8a-fc5541654b96 on /run/media/proto-h/e721e304-767a-4c0-af6e-c3c9cf22dc81 type ext4 (rw,nosuid,nodev,relatime,seclabel,data=ordered,uhelper=udisks2)
2. в Caja (дефолтном файловом менеджере Mate), в разделе «Devices» под именем «1 TB Encrypted».
3. в /run/media/proto-h/e721e304-767a....

Но проблема в том, что диск монтируется с правами root. После монтирования он не доступен под обычным юзером. Обрыл кучу мест, так и не нашёл конфиг, где можно изменить юзера, а также не нашёл кто выполняет авто-монтирование.

Нужно понять:

1. Какая прога монтирует диск при подключении?

2. Кто добавляет эту строчку в вывод mount?

3. Откуда mount читает эту инфу?

4. Какой конфиг нужно изменить, чтобы можно было монтировать с нужным юзером.

Просьба помочь с ответами на вопросы.

 ,

ProtoH
()

RSS подписка на новые темы