gladilov.org.ru 

1367 заметок с тегом

софт

Позднее Ctrl + ↑

Создатель MINIX обратился в Intel с открытым письмом

В связи с использованием корпорацией Интел в чипе ME-11 миркоядерной операционной системы MINIX Эндрю Таненбаум, автор этой ОС, выпускаемой под лицензией BSD, обратился к сотрудникам «Голубого гиганта» с открытым письмом.

Цитата:

«Единственное, что было бы хорошо, это то, что после завершения проекта и развертывания чипа кто-то из Intel сказал бы мне, как любезность, что MINIX 3 теперь, вероятно, является самой широко используемой операционной системой в мире на компьютерах x86. Это определенно не требовалось никоим образом, но я думаю, было бы вежливо дать мне знать, вот и все.»

Ссылка на текст открытого письма

N. B. Знатно потролил ( o.o)

Системы управления пакетами

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

Никуда с этого пути на сворачивай!

Современный мир операционных систем состоит как из отдельных ярких звёзд, так и из целых созвездий, сгруппированных общей идеологией. Примерами первых могут служить RISC OS или QNX, во вторую группу входят целые плеяды операционок, например UNIX-подобные ОС, системы, основанные на BSD, macOS, дистрибутивы на ядре Linux и т. д.

Показать

Ещё в раннюю эпоху развития операционных систем создатели и пользователи столкнулись с необходимостью контроля за процессом установки, удаления, настройки и обновления различных компонентов системного и пользовательского ПО. Изящным решением стали системы управления пакетами. Но, к сожалению, в связи с зоопарком эволюцией операционных систем их стало так много, что не все пользователи разбираются, в каких ОС какой пакетный менеджер используется. Решил их здесь перечислить и немного упорядочить свои знания о них.

DEB
dpkg — базовая система пакетного менеджмента в  Debian GNU/Linux и его производных
dselect — фронтенд к dpkg, развивался парраллельно с dpkg
apt — более продвинутая система, позволяет ставить пакеты и из исходных кодов
aptitude — оболочка для apt, имеет псевдографический интерфейс
Synaptic —  графический интерфейс для apt (и apt-rpm)

IPK
apkg — Atlas Package Manager для встраиваемых систем, например  AI\OS Linux
ipkg — облегчённый ПМ для встраиваемых систем, постепенно заменяется opkg
opkg — основан на ipkg, применяется в основном в  *WRT/ LEDE-встраиваемых системах

DEB/RPM
apt-rpm — версия apt, работающая с RPM-пакетами ( ALT Linux,  PCLinuxOS,  Vine Linux)
apt4rpm —  создает APT-репозиторий из RPM-репозитория
smart —  интеллектуальный ПМ, работает с DEB-, RPM- и TXZ-пакетами
PackageKit —  графический пакет с интерфейсом к различным ПМ
KPackage —  пакетный менеджер из состава KDE, работает с DEB-, RPM-, tgz/tar.gz-пакетами

RPM
urpmi — пакетный менеджер для  Mandriva Linux,  OpenMandriva (до версии 3.x),  Mageia и  Rosa Linux
rpmdrake — графический интерфейс для urpmi
dnf — ПМ в  Fedora с версии 22,  OpenMandriva (с версии 4.0)
yum — ПМ в  Fedora до версии 22,  RHEL,  CentOS
Yum Extender — графический интерфейс для yum в  Fedora,  RHEL,  CentOS
YaST — графическая утилита конфигурации  SuSE и установки/обновления пакетов с ПО
ZYpp — консольный менеджер пакетов для  SuSE
pkcon — CLI-версия PackageKit, используется в  Sailfish OS
pkgcon — утилита управления пакетами в  Fedora,  Ubuntu,  OpenSUSE,  Mandriva Linux
Portage — система управления пакетами в  Gentoo Linux
Kuroo — графический интерфейс (QT) к Portage в  Gentoo Linux
PortHole — графический интерфейс (GTK+) к Portage в  Gentoo Linux
Himerge — графический интерфейс на Haskell для Portage в  Gentoo Linux
Pacman — менеджер пакетов для  Arch Linux и его производных (ArchBang, Chakra Linux, ConnochaetOS, DeLi Linux, Frugalware, Manjaro Linux, Parabola, MSYS2, Antergos)
yaourt — обертка для pacman, добавляет работу с AUR в  Arch Linux
pacaur — добавление к pacman, позволяет работать с AUR в  Arch Linux
Entropy — пакет, состоящий из клиентов Equo (текстовый), Sulfur и Rigo (графические), а также серверы Reagent и Activator в  Sabayon Linux

XZM | LZM
Unified Slackware Package Manager — графический пакетный менеджер USM для  Slackware. Модули *.xzm и *.lzm — это LZMA2-архивы SquashFS-образов ФС с нужными файлами.

SNAP
snappy — новая система установки и управления ПО, поддерживается дистрибутивами  Arch Linux,  Fedora,  OpenEmbedded/ Yocto,  Debian GNU/Linux,  Gentoo Linux,  Linux Mint,  Manjaro,  OpenSUSE,  OpenWRT,  Solus OS,  Ubuntu

TAR
pkgsrc — менеджер пакетов для  NetBSD,  DragonFly BSD (в настоящее время использует dports),  BSD/OS,  MirBSD,  FreeBSD (с версии 10.0 pkg),  OpenBSD,  Solaris,  Linux,  Darwin (Mac OS X),  IRIX,  AIX,  Tru64 UNIX ( Digital UNIX,  OSF/1),  HP-UX,  Minix,  UnixWare 7 (в очень ранней стадии),  Haiku (hpkgsrc),  QNX 6 (в ранней стадии)
pkgin — пакетный менеджер, надстройка над pkgsrc, используется в  NetBSD,  DragonFly BSD,  Solaris 10/SunOS,  Opensolaris/SunOS,  Debian GNU/Linux,  Darwin (Mac OS X),  Minix,  SmartOS
pkgtools — система управления пакетами в tar-файлах дистрибутива  Slackware
slackpkg — утилита для управления и установки пакетов из сети в  Slackware
slapt-get — максимально приближенная к apt программа для управления пакетами в дистрибутивах  Slackware и ему подобных, например  Vector
netpkg — менеджер пакетов дистрибутива  Zenwalk Linux

XML
PiSi — пакетный менеджер для дистрибутива  Pardus
eopkg — ПМ (форк PiSi) в дистрибутиве  Solus OS

Исходный код
Paludis — ПМ для сборки пакетов из исходных кодов в  Gentoo Linux
lunar — «волшебный» ПМ для «лунного»  Lunar Linux
sorcery — «колдунский» ПМ для «магического»  Source Mage GNU/Linux
conary — менеджер пакетов для дистрибутивов  rPath Linux и  Foresight Linux
apk-tools — система управления пакетами для дистрибутивов  Alpine Linux и  Adélie Linux
nix — пакетный менеджер для дистрибутива  NixOS, использующий собственный язык nix
xbps —  Void Linux

Источники:
Википедия
Статья Linux Package Management
Сегодняшняя статья на Хабре
BSD’ишный FAQ

2017   интересное   ОС   софт

Регулярка для проверки IPv4

Проверить на корректность IP четвёртой версии можно таким регулярным выражением

/ ((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) /g

Проверить работоспособность можно здесь.

Количество Linux и Windows систем в локальной сети

Количество Linux- и Windows-хостов в сети можно с помощью следующих команд:

$ sudo nmap -F -O 192.168.1.1-255 | grep "Running: " > /tmp/os; \
echo "$(cat /tmp/os | grep Linux | wc -l) Linux device(s)"; \
echo "$(cat /tmp/os | grep Windows | wc -l) Window(s) devices"

Вместо 192.168.1.1-255 нужно подставить параметры своей сети. Для выполнения требуется установленный в системе пакет nmap и пользователь должен иметь возможность получать привилегии рута.

P. S. В источнике приведён однострочник, но я разбил строку на три для удобства и читаемости.

Моды для KSP 1.3.1

Являясь ярым поклонником игры Kerbal Space Program, оставлю для истории список модификаций, которые использую в версии 1.3.1. Перечислил множество модов, некоторые несовместимы между собой, если описание мода выделено красным — для меня мастхэв.
Последнее обновление: 24.06.2018

Показать

Название мода и ссылка Функционал
CKAN Менеджер модов
Module Manager Требуется для работоспособности других модов
Манёвры и управление
MechJeb 2 Система автоматического пилотирования
MechJeb and Engineer for all! Автопилот, интегрированный во все командные модули
Precise Node Точный планировщик орбит
kRPC Управление игрой из внешних скриптов на различных языках программирования
kOS: Kerbal Operating System Скриптовый автопилот
kOS for All Добавление встроенного kOS во все командные модули
Astrogator Помощник по навигации
Trajectories Предсказание траектории спуска в атмосфере
Внутренний вид кабины
RasterPropMonitor Многофункциональные дисплеи в кабине в режиме IVA
VesselView Добавляет экран, отображающий текущий внешний вид аппарата
kOSPropMonitor Работа с kOS из IVA-вида (в треде есть ссылка для 1.3.1)
Картографирование, Спутники, Связь
Remote Tech Система спутниковой связи и управления (не работает с ScienceRelay)
SCANsat Картографирование небесных тел — биомы, аномалии, карта высот, полезные ископаемые
Сбор науки
ForScience! Автоматический сбор научных данных
[x] Science! Помошник по сбору научных данных
DMagic Orbital Science Проведение научных экспериментов беспилотными спутниками и роверами
Science Relay Передача научных данных между аппаратами (не совместим с Remote Tech)
ScienceAlert Предупреждение о возможности сбора научных данных
Внешний вид и управление игры
Toolbar Набор настраиваемых кнопок быстрого доступа
Docking Port Alignment Indicator Вспомогательная индикация по выравниванию/направлению в процессе стыковки
Kerbal Engineer Redux Выводит важные данные о корабле в полете и во время постройки
Alternate Resource Panel Альтернативная панель показа ресурсов
Kerbal Alarm Clock Напоминания о запланированных событиях
Crowd Sourced Flags Набор прикольных флагов, созданных сообществом
Fusebox Continued Отображение уровней потребления и генерации электроэнергии
RCS Build Aid Помощник по балансировке аппарата при проектировании
KerbalStats Вывод дополнительной информации о кербонавтах в игре
Portrait Stats Отображение типа и уровня членов экипажа во время полета
Real Time Clock 2 Вывод внеигрового времени
TextureReplacerReplaced Персонализация и улучшение вида кербонавтов
Probe Control Room Центр управления непилотируемых аппаратов
NavUtilities Посадочная навигационная информация
Navball docking alignment indicator Навбол как указатель правильного направления на стыковочный агрегат
Better Burn Time Отображение точного времени выполнения манёвра
Kronal Vessel Viewer Создание чертежей и схем аппаратов
Who Am I? Отображение имени текущего кербонавта в режиме IVA
DockSafe Блокировка включения двигателей при стыковке
CommunityTraitIcons Значки для отображения типа членов экипажа
Critical Temperature Gauge Отображение имени и температуры самой нагретой детали
Landing Height Показывает расстояние от нижнего края аппарата до поверхности земли
Docking camera (KURS) Стыковочная камера, интегрируемая во все детали
Telemachus Отображение данных телеметрии в браузере
Изменение игровой механики
Sensible Pumps Выключение тяги движков при их отделении
Oh Scrap! Отказы, ремонт и проверки надёжности агрегатов и узлов
Kerbal Launch Failure Revived Случайные аварии и нештатные ситуации во время старта
BARIS Реалистичная система наработки надёжности деталей (вместо TestFlight и DangIt!)
HyperEdit Плагин для перемещения любого объекта в любое место
Kerbal Krash System Реалистичные нештатные ситуации, поломки частей при столкновениях
Kerbal Joint Reinforcement Правдоподобная жёсткость соединения деталей и конструкций
Connected Living Space Реалистичная механика перехода кербонавтов из отсека в отсек
USI Life Support Система жизнеобеспечения для кербонавтов (совместим с EPL и MKS)
Kerbal Construction Time Постройка аппаратов в течение некоторого времени
Kerbal R&D Улучшение функционала узлов и агрегатов за очки науки
Deadly Reentry Реалистичный нагрев в плотных слоях атмосферы при сверхзвуковых скоростях
Ferram Aerospace Research Правдоподобная аэродинамика
KRASH Симуляция полёта с восстановлением предыдущего состояния
Crew R&R Реалистичный набор членов экипажа
Dang It! Continued Случайные аварии и нештатные ситуации (заменяется BARIS)
TestFlight Увеличение надёжности деталей посредством лётных испытаний (заменяется BARIS)
EvaFuel Continued Реалистичная трата монотоплива при ВКД
Улучшение звукового сопровождения
Docking Port Sound FX Добавляет реалистичные звуки стыковки и расстыковки
Water Sounds Добавляет звук воды и подводные звуковые эффекты
Music Mute Continued Отключение и включение фоновой музыки горячей клавишей
Chatterer Добавляет звуки радиопереговоров в процесс игры
RCS Sound Effects Звуки работы маневровых двигателей
Реалистичная визуализация
Stock Visual Enhancements Реалистичные облака и атмосферы планет
Reentry Particle Effect Отображение плазмы и искр при торможении в атмосфере
Distant Object Удалённые объекты реалистично выглядят на больших расстояниях
Collision FX Добавляет искры, свето-звуковые эффекты при столкновениях
Through the Eyes Вид от первого лица во время ВКД
Real Plume Добавляет реалистичный выхлоп двигателей
Engine Lighting Добавляет реалистичные отблески выхлопа двигателя




Рекомендованные моды
Дополнительные детали и наборы
ALCOR Усовершенствованная капсула ALCOR
Kerbal Attachment System Прикрепляемые детали, стойки, трубы и лебедки
Kerbal Inventory System Реалистичная система хранения деталей
Ground Construction Постройка аппаратов в любом месте, где есть ресурсы и условия
Extraplanetary Launchpads Возможность создания аппаратов в полёте
Modular Kolonization System Набор модулей для создания длительных самодостаточных колоний
SnapDock Установка стыковочных агрегатов под углом
OLDD (8К82К) РН «Протон-К»
Smart Parts Сontinued Набор интеллектуальных деталей и контроллеров с настраиваемыми функциями
Pathfinder Оборудование для организации лагерей и поселений (включает Buffalo)
Buffalo Модульные транспортные средства для поселений
Изменение игровой механики
Kerbal Star Systems Другие звёздные системы вблизи Кербола
Real Solar System Преобразование системы Кербола в Солнечную систему
Realism Overhaul Приближение игры к реальности
Real Fuels Реальные типы топлива, ограниченное количество зажиганий двигателей
SETI-Unmanned before Manned Улучшенный игровой баланс деталей, технологий, контрактов
Kerbalism Продвинутая система жизнеобеспечения
TAC Life Support Система жизнеобеспечения для кербонавтов (несовместим с EPL и MKS)
WarpEverywhere Улучшенный варп
Editor Extensions Redux Новые уровни симметрии, режимы привязки, горячие клавиши
TAC Fuel Balancer Удобный перелив топлива, обмен ресурсов между деталями
WorldStabilizer Предотвращает подпрыгивание крафтов в момент прогрузки
Реалистичная визуализация
Environmental Visual Enhancements Реалистичные облака и огни городов
Scatterer Зффект рассеяния в атмосфере
Stock Part Revamp Более правдоподобные текстуры деталей
Antenna Helper Отображение возможностей связи антенн крафта
Всякий хлам
Community Resource Pack
Orbital Colony
Contract Configurator

2017   KSP   досуг   игры   интересное   космос   софт

Установка xfce4 в BSD-системах

Всё время забываю, как установить и настроить гуй в BSD-системах. Процесс такой...
Ставим пакеты xfce4-session, xfdesktop, xfwm4:

$ sudo pkg_add -v xfce4-session xfdesktop xfwm4

Пакет вытянет вместе с собой GTK, Glib, cairo, d-bus, некоторые компоненты среды и все необходимое для их работы (кроме X.Org, он идет в комплекте базовой системы).

Показать

Добавляем Xfce в автозагрузку:

$ echo 'LC_CTYPE="ru_RU.UTF-8"' > ~/.xinitrc
$ echo 'setxkbmap "us,ru" ",winkeys" "grp:caps_toggle" &' >> ~/.xinitrc
$ echo 'exec xfce4-session' >> ~/.xinitrc
$ ln -s ~/.xinitrc ~/.xsession
$ startx

Для графического входа в систем ставится менеджер входа SLIM:

$ sudo pkg_add -v slim

Автозапуск SLIM при старте системы реализуется добавлением в /etc/rc.local строки:

[ -x /etc/rc.d/slim ] && /etc/rc.d/slim start

Для автологина добавляем в /etc/slim.conf строки:

default_user [имя_юзера]
auto_login yes



P. S. Хотя в DragonFly BSD 5.0.0 установил так (с небольшими извратами, см. ниже):

$ sudo pkg install xorg xfce slim slim-themes

и в /etc/rc.conf дописал

dbus_enable="YES"
hald_enable="YES"
slim_enable="YES"

а в .xinitrc

exec startxfce4

(ставил по этому мануалу).

Извраты были такие:

$ sudo dbus-uuidgen > /var/lib/dbus/machine-id

чтобы иксы стартовали без ошибок, а в /etc/rc.conf дописал

moused_enable="YES"
moused_nondefault_enable="YES"
hald_enable="YES"
dbus_enable="YES"

и выполнил

$ sudo /etc/rc.d/moused start

Эти извраты подсмотрел здесь и здесь.

Утверждён стандарт C++17

Комитет ISO по стандартизации языка C++ единогласно утвердил спецификацию C++1z в качестве международного стандарта «C++17». Представленные в спецификации возможности уже полностью поддерживаются в компиляторах GCC и Clang, а также частично реализованы в Intel C++ и Visual C++. Поддерживающие C++17 стандартные библиотеки реализованы в рамках проекта Boost.

Показать

В следующие два месяца утверждённая спецификация будет находиться на стадии подготовки документа к публикации, на которой будет проведена работа по редакторской правке орфографических ошибок и опечаток. В начале ноября результирующий вариант документа будет направлен в ISO для публикации под формальным именем ISO/IEC 14882:2017. Тем временем, комитет уже начал работу над следующим стандартом C++20 (C++2a) и рассмотрел на последнем совещании возможные новшества.

Основные особенности C++17:

  • Возможность инициализации переменных внутри выражений if и switch;
  • Возможность использования кодировки UTF-8 в символьных литералах;
  • Шестнадцатеричные литералы с плавающей запятой;
  • Указание текстового сообщения в static_assert теперь опционально;
  • Удалена поддержка триграфов;
  • Возможность указания typename (как альтернативы классам) в параметрах вложенного шаблона;
  • Новые правила вывода типа «auto» из списка инициализации (braced-init-list);
  • Возможность упрощённого определения вложенных параметров пространств имён: «namespace X::Y {...}» вместо «namespace X { namespace Y {...}}»;
  • Возможность указания атрибутов для пространств имён и перечислений;
  • Новые стандартные атрибуты [[fallthrough]], [[maybe_unused]] и [[nodiscard]];
  • Проверка на неизменность (константность) для всех нетипизированных аргументов шаблонов;
  • Сворачивание выражений для вариативных шаблонов;
  • Раскрытие выражений «if» на стадии компиляции, если заданное внутри условие является константой;
  • Структурированные привязки, например, «auto [a, b] = getTwoReturnValues()»;
  • Автоматическое определение типов конструктора шаблонов (например, теперь можно указывать std::pair(5.0, false), явно не задавая типы «double, bool»);
  • Inline-переменные, которые можно определять в заголовочных файлах;
  • Добавлена библиотека для работы с ФС, основанная на boost::filesystem;
  • Из библиотеки TS I перенесены std::string_view, std::optional и std::any;
  • Добавлен std::uncaught_exceptions в качестве замены std::uncaught_exception;
  • Новые функции вставки try_emplace и insert_or_assign для std::map и std::unordered_map;
  • Унифицирован доступ к контейнерам std::size, std::empty и std::data;
  • Определены непрерывные итераторы (contiguous iterators);
  • Удалены устаревшие типы и функции, в том числе std::auto_ptr и std::random_shuffle;
  • Представлены параллельно выполняемые варианты алгоритмов STL;
  • Добавлены дополнительные математические функции, включая эллиптические интегралы и функции Бесселя;
  • Представлены std::variant и std::byte;
  • Новые свойства логического оператора: std::conjunction, std::disjunction и std::negation.
2017   C++   в мире   интересное   события   софт

Как я приложение Just Weight данными заполнял

Сел как-то я на диету...
И у меня вошло в привычку каждое утро взвешиваться. Сначала результаты взвешивания я просто записывал в блокнот, затем начал периодически дублировать эти записи в Гугель Таблицах. Затем данные из этой таблицы визуализировал на  страничке своего сайта.

Показать

Затем я ещё более разнообразил свой быт, купив Xiaomi Mi Band 2. Понятно, что теперь я начал вводить вес и в  Mi Fit. А дня три назад поискал на 4PDA какую-нибудь апликуху под ОС Андроид. Первой поиск мне выдал некую Just Weight – Контроль Веса, довольно молодую прогу, весь функционал которой сводится ко вводу данных и рисованию графика изменения веса. В общем целевая аудитория проги — фитнес–тёлки и старпёры, к которым отношу и себя. Поставил я ознакомительную версию проги на свой телефон, пару дней утром повводил результаты взвешивания, и тут у меня запоздало созрела весьма здравая мысль: — А как же предыдущие дни/месяцы/годы!? Казалось бы — знай себе выбирай дату и вводи соответствующий вес, прога это позволяет, но дело в том, что вести записи я стал с 16 сентября 2014 года, а это 1085 измерений! В меню приложения есть пункты "Импорт" и "Экспорт", но в обычной версии они не доступны, предлагается купить полную версию за $0.99.
У меня как раз на QIWI было рублей 150 (плюс-минус 50), поэтому решил заодно проверить надёжность санкций для жителей Крыма. Выпустил виртуальную QIWI-карту, получил её срок действия и CVC, указал их в  Гугель Кошельке (через VPN, так как я живу на полуострове, которому весь «цивилизованный» мир помогает выжить с помощью санкций). Затем из проги перешёл на страницу покупки полной версии, и с помощью того же VPN оплатил её.

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

[{"date":1504558800000,"unit":"kg","value":1146,"tableName":"WEIGHT"},{"date":1504645200000,"unit":"kg","value":1135,"tableName":"WEIGHT"}]

Очевидно, что числа 1146 и 1135 представляют собой данные веса в десятых долях колограмма (мой вес тогда был 114,6 и 113,5 кг соответственно). Об это также говорят наименования параметров "unit" и "value". Тег "date" сразу понятен человеку, знающему что такое timestamp и UNIX-время. Здесь оно указано с точностью до миллисекунд.
N.B. Интересно, зачем такая точность в проге, рисующей график веса человека?
Последний тег "tableName" предполагает, что разработчики хотят в дальнейшем (или хотели ранее) вести графики с другими данными.
N.B. Или (чисто в порядке бредового предположения) им попались исходники проги, анализирующей, к примеру, JSON-файл с разными параметрами, и они выдрали алгоритм работы оттуда практически без изменений, сократив количество параметров до одного

Но вернёмся к созданию импортируемых данных...
Вот в таком формате я веду табличку:

Я создал на этом же листе таблицы рядом с первой записью о весе (в ячейке H2) такую формулу:

=CONCAT(((D2-DATE(1970;1;1))*86400)-10800;"000")

Пользователям русского Экселя вероятно нужно так:

=СЦЕПИТЬ(((D2-ДАТА(1970;1;1))*86400)-10800;"000")

Общий смысл формулы такой — считаем число дней от 1 января 1970 года до указанной даты [D2-DATE(1970;1;1)], переводим дни в секунды [*86400]. Так как программа не учитывает временные пояса, а я, как и весь Крым, живу по московскому времени, то из полученного значения необходимо вычесть 3 часа = 10800 секунд [-10800]. Команда сцепки строк используется для добавления в конец полученного числа трёх символов "0", повышая "точность" до миллисекунд [CONCAT(UNIX-time;"000")].

Затем в соседней ячейке I2 написал следующую конструкцию:

=CONCAT("{'date':";CONCAT(H2;CONCAT(",'unit':'kg','value':";CONCAT(E2*10;",'tableName':'WEIGHT'},"))))

Здесь всё просто — последовательно сцепляем строки:
"{’date’:" + число секунд из ячейки H2 + ",’unit’:’kg’,’value’:" + значение веса из ячейки E2, умноженное на 10 + ",’tableName’:’WEIGHT’},".

Протянув полученные формулы до конца введённых данных, я сформировал текст, необходимый для импорта в Just Weight.

Копирую все строки вида

'date':1504558800000,'unit':'kg','value':1146,'tableName':'WEIGHT'},

в любой текстовый редактор (вставляю как текст, если редактор слишком навороченный), ставлю в начале и в конце символы открытия и закрытия квадратных скобок ([мой текст]), убираю явно лишнюю запятую в последней строке, и — Voi la!
Подтягиваю полученное творение на телефон, импортирую и наслаждаюсь графиком.

P. S. Я на свой страх и риск использовал в формуле получения строк апостроф ' вместо двойных кавычек ", чтобы не нарушать визуальную целостность формул. Прокатило 

2017   досуг   мну   софт

Cкрипт определения провайдера сотовой связи

Привожу BASH-скрипт получения оператора номера сотового
(используется сервис http://rosreestr.subnets.ru).

Показать

Допустим, мы хотим получить информацию о мобильном номере +7 900 555-55-50 (или 8 900 555-55-50)... При выполнении команды

curl -s "http://rosreestr.subnets.ru/?get=num&format=xml&num=9005555550" | sed -e 's/<[^>]*>//gm' | sed '/^$/d' | tr -d '\t'

получим в консоли вывод

900
260823
5555550
5555550
1
ООО &quot;СИМ ТЕЛЕКОМ&quot;
5418
Москва и Московская область
1880

где:
900 — DEF-код (мобильные номера всегда начинаются с цифры 9)
260823 — ID диапазона номеров с данным DEF-кодом в реестре Российской системы и плана нумерации
5555550 — начальный номер диапазона номеров
5555550 — конечный номер диапазона номеров
1 — Общая номерная ёмкость в данном диапазоне
ООО "СИМ ТЕЛЕКОМ" — наименование оператора, обслуживающего мобильный номер
5418 — ID оператора
Москва и Московская область — наименование региона, в котором оператор обслуживает мобильный номер
1880 — ID региона в реестре Российской системы и плана нумерации

Разоблачение фокуса...

Командой

curl -s "http://rosreestr.subnets.ru/?get=num&format=xml&num=9005555550"

в вывод консоли сервис возвращает ответ в формате XML:

<?xml version="1.0" encoding="utf-8"?>
<response>
<row>
        <code>900</code>
        <codeID>260823</codeID>
        <from>5555550</from>
        <to>5555550</to>
        <capacity>1</capacity>
        <operator>ООО &quot;СИМ ТЕЛЕКОМ&quot;</operator>
        <operatorID>5418</operatorID>
        <region>Москва и Московская область</region>
        <regionID>1880</regionID>
</row></response>

Команда

sed -e 's/<[^>]*>//gm'

по конвейеру убирает все подстроки, заключённые в угловые скобки < ... >

900
        260823
        5555550
        5555550
        1
        ООО &quot;СИМ ТЕЛЕКОМ&quot;
        5418
        Москва и Московская область
        1880

Затем с помощью команды

sed '/^$/d'

удаляются пустые сроки, оставшиеся после удаления <тегов>:

900
        260823
        5555550
        5555550
        1
        ООО 'СИМ ТЕЛЕКОМ'
        5418
        Москва и Московская область
        1880

а команда

tr -d '\t'

убирает символы табуляции в получившемся выводе

900
260823
5555550
5555550
1
ООО 'СИМ ТЕЛЕКОМ'
5418
Москва и Московская область
1880

N. B.: Скрипту нужен установленный пакет curl, можно заменить wget’ом:

wget -q -O - "http://rosreestr.subnets.ru/?get=num&format=xml&num=9005555550" | sed -e 's/<[^>]*>//gm' | sed '/^$/d' | tr -d '\t'

N. B.: В принципе, можно получать вывод не в формате XML, при опускании в урле параметра

&format=xml

сервис выдаёт plain text.

В планах написать веб-версию, использующую данный сервис.

Слизано с Хабра.

Опять про PS1

В дополнению к первому посту о переменной окружения PS1, для себя определился, что у моего пользователя она такая:

а у рута будет лиловенькая:

Показать

И вообще, на всякий случай привожу краткие выдержки конфигурационных файлов моего BASH’a:
Мой ~/.bashrc

PS1='\[\e]0;`if [[ $? = 0 ]]; then echo "\[\033[1;34m\]"; else echo "\[\033[1;31m\]"; fi`\t \[\033[1;32m\]\u\[\033[0;37m\]@\[\033[1;32m\]\H\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

alias sus='sudo -s'

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

export PHANTOMJS_EXECUTABLE=/usr/local/bin/phantomjs

Мой ~/.profile

if [ -n "$BASH_VERSION" ]; then
    if [ -f "$HOME/.bashrc" ]; then
        "$HOME/.bashrc"
    fi
fi

if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

export LANG=ru_RU.UTF-8
export LANGUAGE=ru_RU.UTF-8
export LC_ALL=ru_RU.UTF-8
export PAGER=/usr/bin/most

if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

/root/.bashrc

PS1='${debian_chroot:+($debian_chroot)}`if [[ $? = 0 ]]; then echo "\[\033[1;34m\]"; else echo "\[\033[1;31m\]"; fi`\t \[\e[0;95m\]\u\[\033[0;37m\]@\[\033[1;32m\]\H\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

export LANG=ru_RU.UTF8
export LC_ALL=ru_RU.UTF8
export PAGER=/usr/bin/most

if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

/root/.profile

if [ "$BASH" ]; then
  if [ -f ~/.bashrc ]; then
    . ~/.bashrc
  fi
fi

mesg n || true

Вишенкой на торте — механика процесса инициализации оболочки
(из Вики, чтобы представлять, как оно внутри устроено и заводится).

Когда Bash вызывается как интерактивная оболочка входа в систему, первым делом он читает и вызывает команды из файла /etc/profile, если этот файл существует. После чтения этого файла, он смотрит следующие файлы в следующем порядке: ~/.bash_profile, ~/.bash_login и ~/.profile, читает и вызывает команды из первого, который существует и доступен для чтения. При выходе bash читает и выполняет команды из файла ~/.bash_logout.

Когда запускается интерактивная оболочка, но не для входа в систему, bash читает и исполняет команды из файлов /etc/bash.bashrc и ~/.bashrc, если они существуют. Это может быть отменено опцией -norc. Опция -rcfile file заставит Bash использовать команды из файла file вместо /etc/bash.bashrc и ~/.bashrc.

2017   BASH   Linux   сисадминство   софт
Ранее Ctrl + ↓
Наверх