gladilov.org.ru 

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

софт

Позднее Ctrl + ↑

Как я приложение 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   сисадминство   софт

Евросоюз утвердил открытую лицензию EUPL 1.2, совместимую с GPLv3

После четырёх лет обсуждений чернового варианта утверждена новая версия лицензии EUPL 1.2 (European Union Public Licence), используемой при разработке открытого программного обеспечения для государственных учреждений в Евросоюзе. Лицензия доступна на 23 языках, используемых в странах Евросоюза и опубликована в официальном журнале Европейского союза, что обозначает вступление правового акта в силу. Лицензия признана организацией Open Source Initiative (OSI) открытой и соответствующей требованиям «Open Source Definition».

Показать

В лицензии EUPL 1.2 решены многие ранее наблюдаемые проблемы с совместимостью с другими открытыми и свободными лицензиями, в том числе обеспечена совместимость с лицензиями GPLv3, AGPLv3, LGPLv2, LGPLv3 и MPLv2. Версия EUPL 1.1 позволяла перелицензировать код в GPLv2, но была включена Фондом СПО в список лицензий, несовместимых с GPL. Наиболее ожидаемым эффектом от принятия EUPL 1.2 стала возможность использовать код продуктов, выпускаемых для госучреждений Евросоюза, в проектах, развиваемых независимым сообществом под лицензией GPLv3. Совместимость с GPLv3 является значительным шагом в сторону улучшения переносимости кода, который упростит смешивание в одном проекте кода под лицензиями GPLv3 и EUPL 1.2, а также сделает возможным перелицензирование EUPL-кода под лицензией GPLv3 без необходимости дополнительных согласований.

Напомним, что по сравнению с GPLv2 лицензия GPLv3 обладает такими особенностями, как запрет тивоизации (привязки программного обеспечения к оборудованию), противодействие заключению дискриминационных патентных соглашений (патент может быть лицензирован для GPLv3 кода только на условиях повсеместного и бесплатного использования) и предоставление защиты от патентных исков со стороны поставщика GPLv3-продукта (если фирма поставляет GPLv3 компоненты, то она не может предъявить судебный иск против пользователей данных компонентов, обвинив их в нарушении патентов в данном ПО или в обходе средств защиты интеллектуальной собственности).

Необходимость поддержания Евросоюзом собственной свободной лицензии вместо использования уже существующих лицензий обусловлена необходимостью приведения лицензии в полное соответствие с требованиями законодательства всех стран Евросоюза. У существующих лицензий наблюдаются несостыковки с особенностями трактовки авторского права в некоторых странах Евросоюза. Кроме того, лицензия EUPL изначально утверждается в переводе на 23 европейских языках. Независимо от того на каком официальном языке используется текст лицензии, все варианты считаются юридически идентичными.

Источник

Переменная PS1 и её сёстры

Всегда хотел узнать, почему у переменной окружения $PS1 (prompt string) в конце цифра 1.

Оказывается — таких переменных аж четыре штуки ($PS1, $PS2, $PS3, $PS4), и все они отображают приглашения ко вводу в различных ситуациях.

Показать

Далее речь идёт о системной оболочке bash.

В моих системах $PSx выглядят так:

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

"\u@\h:\w\$ "

или

"\s-\v\$ "

(расшифровку значений спецсимволов bash см. внизу заметки).
$PS2 — вторичное приглашение командной строки, отображается, когда консоль нуждается в дополнительном вводе для завершения команды, которую уже начала считывать.
Значение по умолчанию:

"> "

Очень длинную команду можно разбить с помощью символа ’\’ в конце строки, при этом приглашение изменится на $PS2, ожидая ввода продолжения команды.

$PS3 — третичное приглашение, выводится тогда, когда оператор select ожидает ввода значений.
Значение по умолчанию:

""

хотя в bash’е вроде как

"#?"

$PS4 — приглашение четвертого уровня, выводится в начале каждой строки вывода во время трассировки выполнения (вызывается с ключом -x).
Значение по умолчанию:

"+ "

Во всех переменных можно использовать следующие спецсимволы (напомню, речь идёт об оболочке bash):

\a

символ Bell (звонок) (код 07)

\d

дата в формате «ДеньНедели Месяц Число» (т. е. «Tue May 26»)

\\

символ обратного слеша (обратная косая черта)

\e

символ Escape (код 033)

\h

имя хоста до первой точки

\H

полное имя хоста

\j

количество заданий, выполняемых оболочкой в фоне

\l

базовое имя наименования терминального устройства оболочки (в случае входа через ssh-клиент возвращает не полное имя, например pts/3, а только 3)

\n

символ перевода строки

\r

символ возврата каретки

\s

имя оболочки, базовое имя от переменной $0 (после последнего символа /)

\t

текущее время в 24-часовом формате (HH:MM:SS)

\T

текущее время в 12-часовом формате (HH:MM:SS)

\@

текущее время в 12-часовом формате (am/pm)

\A

текущее время в 24-часовом формате (HH:MM)

\u

имя текущего пользователя

\v

версия оболочки bash (например, 2.00)

\V

версия и номер релиза bash (например, 2.00.0)

\w

полный путь текущей директории

\W

базовое имя текущей директории

\!

номер истории зтой команды

\#

номер зтой команды

\$

если UID == 0, то символ ’#’, иначе ’$’

\nnn

символ, соответствующий восмеричному числу nnn

\[

начало последовательности невыводимых символов. Может использоваться для осуществления управления терминалом в приглашении

\]

конец последовательности невыводимых символов

\D{format}

строка format передаётся в strftime(3), результат вставляется строку приглашния оболочки, пустой формат приводит к выводу локального времени. Скобки необходимы.

Ну и напоследок бонус — скрипт генерации таблицы цветов в bash

2017   BASH   Linux   сисадминство   софт

Памятка для настройки DebWrt

 Давным-давно появилась у меня железка D-Link DIR-300/A2,  вот такая. Так как на ней есть разъём USB, то я поставил туда прошивку DebWrt, продукт противоестественного скрещивания Debian и OpenWrt

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

Показать

cd /etc/network
rm interfaces // это симлинк на interfaces.firstboot
cp interfaces.firstboot interfaces
vi interfaces // настраиваем сетевые интерфейсы как нам нужно
// следующие команды необходимы для настройки доступа в интернет без перезагрузки устройства
// (после доступ будет реализован путём выдачи IP по DHCP от шлюза во внешнюю сеть)
ip a a $IP/$MASK dev $IF && echo '8.8.8.8' > /etc/resolv.conf && ip r a via $GW
// для обновления репозитория со squeeze до wheezy
cp /etc/apt/sources.list /etc/apt/sources.list.old
echo 'deb http://ftp.debian.org/debian wheezy main' > /etc/apt/sources.list
gpg --keyserver pgpkeys.mit.edu --recv-key F120156012B83718 && gpg -a --export F120156012B83718 | apt-key add -
gpg --keyserver pgpkeys.mit.edu --recv-key 010908312D230C5F && gpg -a --export 010908312D230C5F | apt-key add -
gpg --keyserver pgpkeys.mit.edu --recv-key CBF8D6FD518E17E1 && gpg -a --export CBF8D6FD518E17E1 | apt-key add -
gpg --keyserver pgpkeys.mit.edu --recv-key 7638D0442B90D010 && gpg -a --export 7638D0442B90D010 | apt-key add -
gpg --keyserver pgpkeys.mit.edu --recv-key 8B48AD6246925553 && gpg -a --export 8B48AD6246925553 | apt-key add -
// опционально
gpg --keyserver pgpkeys.mit.edu --recv-key 6FB2A1C265FFB764 && gpg -a --export 6FB2A1C265FFB764 | apt-key add -
aptitude update
aptitude upgrade
adduser $USER
echo '$USER ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers
// обновление системы, можно и aptitude upgrade/aptitude dist-upgrade впендюрить, если время позволяет
aptitude update
// установка нужных пакетов
aptitude install mc sudo locales bash-completion ntpdate openssh-server screen wpasupplicant
// установка опциональных пакетов
aptitude install most nload htop ccze telnet wavemon tcpdump fping nmap ipcalc console-cyrillic
// установка совсем уж опциональных пакетов
aptitude install apache2 php5 mysql-server mysql-client
// настройка локали, шрифтов, таймзоны
dpkg-reconfigure locales
dpkg-reconfigure console-cyrillic // если поставлен
dpkg-reconfigure tzdata

Далее следует настройка переменных и алиасов в ~/.bashrc и ~/.profile (а равно и в /root/.bashrc и /root/.profile).

Если кого заинтересовала эта прошивка — вот  ссылка на мою инструкцию по перепрошивке девайса (DIR-320/A*, версия прошивки — 10.03).

Скрипт подсчёта размера БД MySQL

Понадобилось мне как-то узнать размер таблиц в MySQL-базе данных. Причём узнать в shell script’е. Поискав в сети, наткнулся на чудесный скриптик.

Показать

Допилив его, стал использовать в MRTG. Привожу полностью, без правок/изменений:

#!/bin/bash
# Calculate the storage space used up by all tables in a given MySQL database
# Ben Dowling - www.coderholic.com
database=$1
username=$2
password=$3

if [ ${#database} -eq 0 ]
then
    echo "Usage: $0 &lt;database&gt; [username [password]]"
    exit
fi

if [ "$password" ]
then
   password="-p$password"
fi

mysql="mysql -u $username $password $database"

$mysql -se "USE $database";

tables=$($mysql -se "SHOW TABLES")

totalData=0
totalIndex=0
totalTables=0

for table in $tables
do
   output=$($mysql -se "SHOW TABLE STATUS LIKE \"$table\"\G")
   data=$(echo "$output" | grep Data_length | awk -F': ' '{print $2}')
   dataMegs=$(echo "scale=2;$data/1048576" | bc)
   index=$(echo "$output" | grep Index_length | awk -F': ' '{print $2}')
   indexMegs=$(echo "scale=2;$index/1048576" | bc)
   total=$(($index+$data))
   totalMegs=$(echo "scale=2;$total/1048576" | bc)
   
   echo "$table Data: ${dataMegs}MB Indexes: ${indexMegs}MB Total: ${totalMegs}MB"
   
   totalData=$(($totalData+$data))
   totalIndex=$(($totalIndex+$index))
   totalTables=$(($totalTables+1))
done

dataMegs=$(echo "scale=2;$totalData/1048576" | bc)
indexMegs=$(echo "scale=2;$totalIndex/1048576" | bc)
total=$(($totalIndex+$totalData))
totalMegs=$(echo "scale=2;$total/1048576" | bc)

echo "*** $totalTables Tables | Data: ${dataMegs}MB Indexes: ${indexMegs}MB Total: ${totalMegs}MB ***"

Размеры выводятся в мегабайтах. Пример вывода:

soul@etcetera:~$ ./db.sh somedatabase root ********
wp_comments Data: 6.60MB Indexes: .15MB Total: 6.75MB
wp_links Data: 0MB Indexes: 0MB Total: 0MB
wp_options Data: 1.57MB Indexes: .01MB Total: 1.58MB
wp_postmeta Data: .01MB Indexes: .01MB Total: .02MB
wp_posts Data: .57MB Indexes: .02MB Total: .60MB
wp_term_relationships Data: 0MB Indexes: .01MB Total: .02MB
wp_term_taxonomy Data: 0MB Indexes: 0MB Total: 0MB
wp_terms Data: 0MB Indexes: 0MB Total: 0MB
wp_tla_data Data: 0MB Indexes: 0MB Total: 0MB
wp_tla_rss_map Data: 0MB Indexes: 0MB Total: 0MB
wp_usermeta Data: 0MB Indexes: 0MB Total: 0MB
wp_users Data: 0MB Indexes: 0MB Total: 0MB
*** 12 Tables | Data: 8.78MB Indexes: .25MB Total: 9.03MB ***

Решение проблемы «???????????? no permissions» в adb

Для теста решил поставить Android SDK на свою машину (у меня смартфон с ОС Андроид), но после установки и докачивания компонентов команда

./adb devices

вывела следующий текст:

List of devices attached
????????????    no permissions

Показать

Оказалось, что в моей системе не было правильно настроенных правил демона udev для этого устройства. Для решения проблемы необходимо знать USB-ID производителя и устройства (VendorID и ProductID), ну и конечно имя пользователя, под которым регистрируетесь в системе.
Я создал файл-правило udev с именем /etc/udev/rules.d/51-android.rules и с таким содержимым:

SUBSYSTEM=="usb", ATTRS{idVendor}=="VendorID", ATTRS{idProduct}=="ProductID", MODE="0666", OWNER="UserLogin"

Затем перегрузил демон udev:

sudo /etc/init.d/udev reload

После этого вывод команды

./adb devices

должен вывести что-то вроде:

List of devices attached
DeviceID    device

Бывает, что уже при настроенных правилах udev всё равно не работает, тогда помогает выполнение команд:

sudo ./adb kill-server
sudo ./adb start-server
./adb devices

После перезапуска сервера ADB мой смартфон определился нормально.

ЧТО НЕ ТАК С УБУНТОЙ?

Очень понравилась запись в ЖЖ-сообществе ru-root. И во многом я с автором согласен. Орфография и стиль автора сохранены.

Показать

На днях задавал вопрос о линукс-дистро, которым пользуются читатели ru_linux [http://ru-linux.livejournal.com/2954219.html — моё примечание].
Там были хорошие предложения, наводящие на верные мысли. А для себя после
некоторых колебаний я пожалуй поставлю Арч (Arch linux).

Но (а) в комментариях к моему вопросу несколько раз прозвучало слово Убунту,
и (б) я посмотрел на это дистро пока разбирался (позапускав его с USB stick,
поставив временно на диск, потом стерев). И должен сказать, что все мои
предубеждения против У. оправдались и усилились.

______ЧТО ЖЕ НЕ ТАК С УБУНТОЙ?_______

(1) В нашей (Европейской, Западной (включая американскую), общей для России и Европы
по крайней мере с 18 века культуры, существует концепция «прогресса»: развитие
в жизни (любый ее сторон) идет в целом, за исключением эпизодов, от худшего
к лучшему. Особенно прочно сидит в головах идея бесконечных улучшений когда
речь идет о технологиях.

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

Другой яркий пример — намеренный захват очень прибыльного и чистого электро-
транспорта в городах США американскими автокомпаниями и намеренное (и крими-
нальное) затем его уничтожение. Вся страна пересела на бензиновые авто не
потому что это было обусловлено «естественными причинами» или «прогрессом»,
а потому что автомобильное лобби _смогло_. Как результат через десяток-два
лет получили смоги в городах и экологические проблемы, и стали зависеть от
ввоза нефти, за которую стали вести войны, причем (6% населения) выжигая до
30-40% ее мирового потребления.

Не меньше политики, а не естественного развития или «прогресса» и в компьютерном
мире. Информационные Технологии не «развиваются сами», но «направляются» туда,
куда могут их направить люди с мега-деньгами и властью. И ЭТУ ОБЩУЮ КАРТИНУ
АБСОЛЮТНО УПУСКАЕТ БОЛЬШИНСТВО даже профессионалов, копающихся ежедневно в
деталях.

(2) В частности, в США секретными ведомствами и властью в конце 1990х была принята
доктрина «Всеобщей Информационной Осведомленности» (Total Information Awareness).
Целиком не пропущенная Конгрессом, она была разбита на части (некоторые из них
позже переназывались по нескольку раз, оставаясь теми же по сути), и с тех пор
проводится в жизнь (в моем основном журнале был конкретный подробный пример).
Другими словами, когда увидели, что технология сможет, потянет, были предпри-
няты упредительные шаги, сформулирована программа, и ОНА СТАЛА ПРИКАЗОМ,
ОБЯЗАТЕЛЬНА К ИСПОЛНЕНИЮ всеми крупными корпорациями, занятыми в сфере компью-
терных технологий.

Вы помните, что когда-то купив компьютер или программу ВЫ распоряжались ими
как владелец, аналогично владению любой физически реальной вещью, вроде
ботинок или стиральной машины? Вы заметили, что СЕГОДНЯ вы купив компьютер,
ОС, программы, БОЛЕЕ НЕ ЯВЛЯЕТЕСЬ ИХ ВЛАДЕЛЬЦАМИ?
Так, Интел встроил в чипы некую «anti-theft technology», Майкрософт может
отключить дистанционно машины за «нарушение лицензий» (и был эпический
случай когда упавшие МС-сервера лицензий вырубили целый район, время аварии
пришлось на бизнес-день в Азии, где пострадали даже самые лицензионно
законопослушные)?
Вы заметили, что группы корпораций, совместно, «вдруг» начали развивать
«облачные службы» и хранилки для вашей работы, ваших файлов, всей вашей
информации? Понятно, что продается это под предлогом «удобства», как бы
«защиты и бэкапов», потому что мы, облачные провайдеры «профессионалы и
делаем бэкапы», а также под предлогом что это мега-«удобно», где бы вы ни
были, «ваши данные всегда доступны».

В результате перехода на подобные услуги ЦЕЛЫЕ СТРАНЫ, или уж точно даже
крупные бизнесы ТЕПЕРЬ НЕ ИМЕЮТ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ: некто может
по своим соображениям «выдернуть провод из розетки» — и вся работа остано-
вится.

Уже достаточно примеров в жизни, что именно так, получив контроль, часто
подобные бизнесы и поступают. Виднее и чаще — по причинам жадности и отбора
денег (лицензии, вы нам должны, платите-платите-платите, или...), реже
в СМИ — по причинам политики и в работе спецслужб. Но таких примеров также
уже известно довольно много.

(3) КАК В ЭТОЙ АТМОСФЕРЕ ДЫШИТСЯ ЛИНУКСам И КОНКРЕТНО УБУНТУ?
Главное наблюдение, которое можно сделать — проект Убунту был создан
для перехвата «альтернативного», анти-корпоративного движения ГНУ/линукс
и встраивания его в общую для коммерческих ОС рамку

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

(а1) «zeitgeist» — якобы чтобы что-то там могло нарисовать «recently used applications»
в виде подсказки вам, смешно. Эта неизвестная за пределами У. программа
была создана для сбора ваших вызовов, обращений, действий на машине.
На сайте У. увещевают «некоторые могут подумать, что это нарушает прайваси
и безопасность, но правила всегда одни: не работайте на машине как рут, ...»
(чтобы zeitgeist не писал эти ваши команды и сессии).
Я долго смеялся: см пункт (г) ниже.

(а2) Какое-то там окно с информацией о машине неожиданно содержит вкладку
с «политикой сбора информации» на Убунту. Оказывается компания У. собирает ее
вместе с ваим Ай-Пи. В частности, она собирает и имена всех программ, которые вы
устанавливали на своей машине.

(а3) Оказывается «ошибки и сбои» тоже посылаются в Убунту (независимые линуксы
такого никогда не делают). Понятно, что под предлогом ’ошибок’ можно провести
любую сессию связи с серверами где-то там и отдать им что угодно.

(б) Я еще не подписывался на «Убунту Один», моя машина отсоединена от сети,
но я вижу уже попытки связаться с этой службой. У-1 == сетевая хранилка ваших
файлов, данных, вашей работы. 1:1 совпадающая с общекорпоративной программой
перехвата контроля и отбора у вас вашего владения машиной. Теперь и на линуксе
тоже, by default, «это же так удобно»

(в) сегодня насколько я понял ни одна разновидность Убунту не устанавливается
без головной боли только из скачанных *.iso — вы вынуждены идти на их сервера
во время установки. Это очередное «удобство» где вы потеряли контроль, «наш
менеджер пакетов все за вас сделает». Общее для всех коммерческих ОС.

(г) Убунту Десктоп плюет в лицо 40-летней юникс-традиции: это ОДНОПОЛЬЗОВАТЕЛЬСКАЯ
машина, она так сконфигурирована by default. Аа супер-юзер ЭКВИВАЛЕНТЕН вашему
простому, и запускается из него без пароля (!!! — так же удобнее собирать инфо,
правда?).

Итак, Убунту сегодня есть исполнение ОБЩЕкорпоративной стратегии перехвата
владения и слежки за пользователями машин, лишенных реального права ими
владеть и распоряжаться

(4) Далее:
Убунту последовательно проводит политику — это один из их главных инвариантов,
их стратегическая линия поведения — на абсолютно раболепное копирование
интерфейса и подходов Майкрософта.

Ведущие, самые необходимы utilities не включены в дефолт-установку, или задвинуты
куда-то в задницу — поскольку они «не важны» или «для экспертов» и т. д.
Однако самые безумные и мусорные гуи-utilities, показывающие 1/10 их работы
обязательно включены и обязательно в имитирующем МС варианте.
(разные конфигураторы, статус сервера, читалки логов и т. д.)

Вы не увидите ни терминала (!!!!!), ни скажем «mc» или стандартного «vim»-а,
но зато ничтожный по функциональности текстовый редактор (вроде МС
notepad-a) или убогий графический файл-менеджер (а ля Microsoft Windows Explorer) под рукой.

Общее впечатление — взяли тигра, выбелили ему полоски, затем покрасили
шкурку в леопардовые пятна, отгламурив когти — и продают нам это
метросексуальное существо как «самое популярное дистро линукса»

Намеренное оглупление и пользователя, и администратора МС-подходом очевидно.
Вы думали, вы живете в инженерной нише «компьютеров для серьёзной работы», а потому вас не тронут? — тогда мы летим к вам. Слава убунту.

(5) Ну и наконец, все это мимикрирование под Майкрософт со вставлением
программ-шпионов (ну как же — ваши телефоны стучат о ваших координатах и могут
включаться удаленно на прослушивание, ваши МС-системы имели backdoors уже во второй
половине 90х, Гугл на вас собирает вечное досье — разве мы могли оставить
в стороне линукс-коммьюнити?) — вся эта грязь возможна только в силу ПАРАЗИТИРОВАНИЯ
УБУНТУ НА МНОГОЛЕТНЕМ, ИЗВЕСТНОМ И УВАЖАЕМОМ ДИСТРО, «дебиане», созданном трудами
добровольцев со всего мира.

Вот примерно мое впечатление от Убунту 12.04, или 13.04 (еще хуже) — десктоп и сервер в 2013 году.
(Возможно я не рассмотрел за полтора дня все детали, но думаю общих выводов
они не изменят)

Взято отсюда.

2013   ubuntu   ОС   софт

Права на файлы apache

Вчера намудрил с правами файлов моих сайтов, что только не делал для восстановления, и sticki-бит ставил, и менял владельца/группу, и ставил флаг +x.
Сегодня командой

find . -type f -exec chmod 644 {} \; && find . -type d -exec chmod 755 {} \;

вернул всё взад ;-)

Наверх