Архив рубрики: Полезная информация

Выступление Dan Bricklin, стоявшего у истоков электронных таблиц

Интересное выступление Dan Bricklin, который стал одним из изобретателем электронных таблиц и заложил те основные идеи, что до сих пор используются в популярных редакторах электронных таблиц.

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

Информация, которая помогает решать мировые проблемы

Этот небольшой 11-минутный позволяет получить представление о том, насколько может быть важными технологии и информация, которую агрегируют многие компании. И чем больше таких технологий и информации становится доступной для ученых и исследователей, тем более серьезные проблемы они могут решить.

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

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

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

Если бы мы имели достаточно информации и вычислительных ресурсов, то, например, при организации питания для 500 тыс. человек можно путем оптимизации уменьшить затраты на 17% и, таким образом, накормить еще около 80 тыс. человек. И все это благодаря тому, что обработка всех возможных комбинаций решения данной задачи с применением современных методов анализа данных позволяет выбрать наилучший вариант.

Некоторые крупные телекоммуникационные компании уже предоставляют свои данные сигналов сотовых вышек. Благодаря анализу этих данных, полученных в Африке, можно выявить наиболее активные туристические маршруты и таким образом увидеть, где потенциально может распространяться малярия, чтобы принять соответствующие профилактические меры.

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

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

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

Прогнозирование заработной платы в России

Данные о среднемесячной заработной платы в России, начиная с января 1993 года и заканчивая настоящим моментом, находятся в публичном доступе, например, по ссылке: http://sophist.hse.ru/exes/tables/WAG_M.htm

К этим данным можно применить инструменты анализа данных и построить, к примеру, прогноз на следующие 3 года.

В данном случае мы имеем дело с временным рядом, поэтому для построения прогноза можно применить модель ARIMA (https://ru.wikipedia.org/wiki/ARIMA), а точнее её модификацией, которую также можно встретить под названием SARIMAX и которая в том числе используется в подобного рода задачах.

Путем подбора была выбрана модель SARIMAX(1, 1, 0)x(1, 1, 1, 12), которая неплохо описывает имеющиеся данные.

salary-prediction_2

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

    Для построения данного прогноза использовались:

  • язык программирования: Python 3.5.2;
  • удобная среда интерактивной разработки: Jupyter Notebook;
  • библиотеки для предобработки и анализа данных: pandas, scipy, statsmodels;
  • пакет для построения графиков: matplotlib.

Данный пример является лишь небольшой демонстрацией наших возможностей в сфере «анализа данных«.

Создание виртуального окружения для python3 на Ubuntu

python_linuxТрадиционно для создания виртуального окружения для Python используется модуль virtualenv. Но, начиная с версии Python 3.3, появилась возможность создания «легкого» виртуального окружения с помощью встроенного модуля pyvenv.

Официальная документация по модулю pyvenv.

1. Для начала можно проверить переменную $PATH, которая указывает, какие пути прописаны для запуска из командной оболочки:

$ echo $PATH
/home/pavel/installed/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Согласно данной информации python установлен как в пакете Anaconda (/home/pavel/installed/anaconda3/bin), так и в системном варианте (/usr/bin).

По умолчанию (если просто набрать python) запускается python3 из пакета Anaconda, а если я хочу получить доступ к системному python, нужно набрать: /usr/bin/python3.

Если у вас не установлены никакие дополнительные пакеты, то для вызова системного python3 достаточно набрать в командной строке: python3.

2. Если не установлена поддержка виртуального окружения, то есть система выдает при попытках создания (см. п.3) следующее сообщение:

The virtual environment was not created successfully because ensurepip is not available. On Debian/Ubuntu systems, you need to install the python3-venv package using the following command.

Тогда нужно установить:

$ sudo apt install python3-venv

3. Далее переходим в выбранную папку, и создаем в ней поддержку виртуального окружения:

$ cd work/python
$ /usr/bin/python3 -m venv myvenv

В результате в директории work/python будет создана папка myvenv с необходимым содержимым для поддержки виртуального окружения.

4. Активировать виртуальное окружение можно командой (из папки, где оно создано):

$ source myenv/bin/activate
(myvenv) $

В результате в bash в начале командной строки появиться надпись (myvenv).

5. Для деактивации используется команда:

(myvenv) $ deactivate
$

6. Можно убедится, что pip и python работают в контейнере:

(myvenv) $ which pip
/home/pavel/work/python/myvenv/bin/pip

(myvenv) $ which python
/home/pavel/work/python/myvenv/bin/python

(myvenv) $ python -V
Python 3.5.2

7. Если виртуальное окружение создавалась для работы с Django, то далее нужно выполнить следующие команды:

(myvenv) $ pip install django # Устанавливаем Django
(myvenv) $ pip freeze # Смотрим какие при этом зависимости установились
Django==1.10.2
(myvenv) $ python django-admin.py startproject newproject # Создаем новый проект
(myvenv) $ pip freeze > newproject/requirements.txt # Сохраняем зависимости

При подготовке статьи использовались следующие источники:

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


Дополнительная информация (добавлена 21-03-2017).

Виртуальное окружение можно создавать и используя установленную Anaconda с помощью менеджера пакетов Conda. При этом есть возможность гибко выбирать, какую версию python нужно использовать.

Все доступные версии python можно проверить командой:

$ conda search python

Чтобы создать виртуальное окружение с именем venv и самым последним python из 3-й ветки, достаточно выполнить:

$ conda create --name venv python=3

Файлы окружения будут располагаться в папке envs внутри директории с Anaconda.

Активация и деактивация виртуального окружения производится с помощью следующих команд:

$ source activate venv
$ source deactivate venv

Посмотреть все имеющиеся виртуальные окружения, созданные с помощью Conda можно командой:

$ conda info --envs

Информация взята по ссылке: https://conda.io/docs/py2or3.html

Если Anaconda не прописана в системном пути $PATH, то для запуска созданного Conda виртуального окружения может потребоваться набирать длинную команду, например:

$ source /home/pavel/installed/anaconda3/bin/activate venv

Это, конечно, неудобно. Кроме того, если запуск виртуального окружения нужен для работы с Jupyter Notebook, то проще сделать небольшой файлик со скриптом на bash в рабочей директории.

$ touch begin.sh
$ sudo chmod +x begin.sh
$ gedit begin.sh

Первая строчка создает файл. Вторая — присваивает ему атрибут «исполняемый». Третья — запускает редактор для внесения правок в файл. В редакторе добавляем и сохраняем следующий код:

#!/bin/bash
source /home/pavel/installed/anaconda3/bin/activate venv
cd workdir
jupyter notebook

Из консоли такой файл запускается командой bash begin.sh или ./begin.sh. Можно его запускать двойным кликом левой клавишей мышки и из файлового менеджера Nautilus. Если этого не происходит, нужно перейти в раздел «Параметры» — «Поведение» и поставить галочку «Каждый раз спрашивать» в разделе «Исполняемые текстовые файлы».

Источник информации — http://forum.ubuntu.ru/index.php?topic=77841.0


Добавлено 29-03-2017:

Для дополнительного чтения и понимания сути виртуального окружения есть хорошая статья (и комментарии) — https://www.dabapps.com/blog/introduction-to-pip-and-virtualenv-python/. В ней дается вводная информация и базовые сведения по работе с pip и virtualenv.

Для удобства организации виртуальных окружений и быстрой работы с ними есть надстройка virtualenvwrapper.

Настройка Flash Player в Chromium под Ubuntu 16.04

flash-player-ubuntu

Перед тем как читать статью ниже, просто проверьте включен ли у вас Flash в настройках Chromium. Инструкция как это сделать на официальном сайте: https://support.google.com/chrome/answer/142064.

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

Проблема:

В Ubuntu 16.04 в Chromium по-умолчанию работают YouTube и другие видео. Но, например, видео на сайте http://imagineradio.ru не запускалось. Там используется JW Player, которому требовался Flash Player. Но почему-то последний не хотел работать, поэтому пришлось немного повозиться с этой проблемой. Может для кого-то данный пост окажется полезным и сэкономит драгоценное время.

Поиски решения:

Команда sudo apt install adobe-flashplayer устанавливает pepflashplayer.so, но при этом в файле /etc/chromium-browser/castomization/10-flash пользовательских настроек Chromium прописывает неправильную версию. Посмотреть это можно, набрав в адресной строке Chromium команду chrome://plugins.

Если установить непосредственно Chrome, используя дистрибутив на официальном сайте, то в нем Flash Player нормально работает «из коробки». Опять-таки в этом можно убедиться, набрав в адресной строке Chrome chrome://plugins.

Долгий серфинг и попытки решить проблему вывели на статью «How do I make Chromium use Flash from Google Chrome?».

Собственно, благодаря ей и удалось разобраться с проблемой, потратив целый вечер на это.

Итак, порядок решения:

1. Подготовить файл libpepflashplayer.so:

Нужно запустить менеджер файлов с правами администратора:

sudo nautilus

и скопировать файл /home/pavel/.config/google-chrome/PepperFlash/23.0.0.185/libpepflashplayer.so (при этом должен быть установлен Chrome) в папку /usr/lib/chromium-browser/plugins/libpepflashplayer.so (именно в имеющуюся папку plugins, так как создание еще одной вложенной папки уже не позволяет Flash Player работать).

Обязательно нужно проверить, чтобы файл был доступен для чтения пользователю (pavel в моем случае).

Также можно скопировать файл из /usr/lib/adobe-flashplugin/libpepflashplayer.so, но после этого плагин нужно удалить командой:

sudo apt purge adobe-flashplugin

Чтобы он не подключал в Chromium неправильную версию плагина.

2. Добавить подключение плагина в файле запуска Chromium:

sudo gedit /etc/chromium-browser/default

И добавить следующую строку в файл:

CHROMIUM_FLAGS="--ppapi-flash-path=/usr/lib/chromium-browser/plugins/libpepflashplayer.so --ppapi-flash-version=23.0.0.185"

Можно указать и /usr/lib/adobe-flashplugin/libpepflashplayer.so при установленном adobe-flashplayer, но тогда нужно удалить файл /etc/chromium-browser/castomization/10-flash, чтобы он не вызывал конфликт с текущим файлом конфигурации (вообще логика подключения пользовательских настроек показана в файле /usr/bin/chromium-browser, и это прямо указано в файле /etc/chromium-browser/default)

У меня также заработало при указании дирректории /home/pavel/.config/google-chrome/PepperFlash/23.0.0.185/libpepflashplayer.so, но если Chrome будет удален, то это не будет работать.

Полностью удалить Chrome можно следующими командами:

sudo apt purge google-chrome-stable
rm -rf ~/.config/google-chrome

Версию плагина, которую нужно указывать в выше приведенных командах, можно посмотреть в файле manifest.json, который находится в той же папки откуда копируется файл libpepflashplayer.so

3. Перезагрузить Chromium. После этого Flash Player должен нормально работать.

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

Редкое интервью с Линусом Торвальдсом

Этот человек не только положил начало распространенной на весь мир операционной системы Linux, но также имеет отношение к появлению Git (система контроля версий). Также он стоял у истоков Open Source, то есть идеи открытости программного обеспечения и совместности его разработки.

При этом он сам говорит, что идея совместно работать с кем-то ему не очень нравится, в силу характера. Но таковы парадоксы нашей жизни 🙂

Добавление иконки ВКонтакте к теме для WordPress

wordpresscustomizationWordPress помимо того, что позволяет быстро создать свой сайт, используя одну из многочисленных тем, также имеет удобные возможности по созданию собственного оформления. Например, одна из возможностей это создание дочерних тем от уже существующих. Это удобно, так как существующие темы, особенно те, что автоматически устанавливаются вместе с WP, имеют весь необходимый функционал, а также используют все встроенные возможности.

Например, вы создаете дочерную тему от темы TwentySixteen. Это хороший выбор, но проблема в том, что TwentySixteen (впрочен как многие другие похожие темы) имеет встроенную возможность создания меню социальных ссылок, но при этом не имеют в своем распоряжении иконки ВКонтакте. Вместо неё используется прочто иконка «по-умолчанию», но это конечно, же не может нас строить

Особенность работы встроенного меню социальных ссылок, что вы указываете адрес своей группы, профиля или страницы и по адресу ссылки распознается, какая это социальная сеть и подставляется соответствующая иконка.

Для подстановки иконок использует какой-нибудь шрифт. Одним из популярных для этого шрифтом является http://genericons.com/. Работает он достаточно просто и в инструкции на сайте все подробно расписано. Также есть статьи и на русском языке https://wpmag.ru/2013/genericons-besplatnyie-ikonki-dlya-vashih-tem-wordpress/.

Но проблема в том, что этот шрифт не имеет иконки ВКонтакте. И более того, авторы шрифта не смотря на просьбы не собираются эту иконку добавлять. Вот здесь об этом прямо и написано https://github.com/Automattic/Genericons/issues/7.

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

Например, можно взять шрифт Grands icon font. О нем можно прочитать в статье на Хабре https://habrahabr.ru/post/156767/, либо сразу же на сайте http://grawl.ru/Grands/

Далее, следуtv инструкциям по установке шрифта. Скачиваем архив и копируем папочку fonts из него в папку с нашей темой. Открываем файл style.css новой темы и вставляем лучше в самое начало код:

@font-face {
font-family: 'Grands';
src:url('fonts/Grands.eot');
src:url('fonts/Grands.eot?#iefix') format('embedded-opentype'),
url('fonts/Grands.svg#Grands') format('svg'),
url('fonts/Grands.woff') format('woff'),
url('fonts/Grands.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}

Теперь наша тема знает о новом шрифте.

И теперь подключаем иконку ВКонтакте к нашей теме следующим кодом:

.social-navigation a[href*="vk.com"]:before {
font-family: 'Grands';
font-style: normal;
speak: none;
font-weight: normal;
-webkit-font-smoothing: antialiased;
content: "\e003";
}

Этот код можно вставить в любое место файла style.css, но лучше в соответствующий раздел, где подключаются другие иконки социальных сетей.

Если вас по какой-то причине не устраивает выбранный шрифт или в нем недостаточно иконок для решения других задач, то можно посмотреть шрифт Font Awesome на https://fortawesome.github.io/Font-Awesome/ — там есть точно почти все. Инструкция по подключению будет примерно похожа.

Порядок установки Ubuntu

headpic_1404В качестве основного источника информации был использован сайт http://ubuntu.ru. Откуда, в том числе, можно скачать образ под Ubuntu 14.04 «Trusty Tahr» LTS (выпуск с длительной поддержкой). Конкретно инструкция по установке расположена здесь http://help.ubuntu.ru/manual/, где все очень подробно расписано, правда для более старой версии, но это намного лучше, чем ничего.

Перед началом каких либо манипуляций были сделаны резервные копии всех данных на диске, так как предполагалось производить действия с разделами, а это повышенный риск потери информации.

Немало времени заняло создание загрузочной флешки. Раньше для этого использовались инструкции по установке реаниматора «USBReanimatorZolotoy», в которых рекомендовалось с помощью утилиты usb_format_special отформатировать флешку под NTFS, потом используя GRUB4DOS сделать на ней загрузочную область и затем распаковать файлы образа. После форматирования флешки дело не пошло, так как образ файлов реаниматора в exe-формате, а образ Ubuntu в iso.

Тогда было принято решение действовать, как рекомендуется в инструкции по установке Ubuntu. По ссылке http://unetbootin.sourceforge.net/ скачена программа Unetbootin. Там все очень просто, но почему-то не получалось сделать: загрузка системы с флешки не происходила. Но в итоге проблема была найдена — нужно было лишь отформатировать флешку в FAT32 обычными средствами Windows, и затем, вновь воспользоваться Unetbootin, что позволило получить нужный результат.

Далее, нужно было выделить место на жестком диске под установку Ubuntu, а точнее под 3 раздела, которые рекомендовалось создать (под саму систему, под файл подкачки и под данные). Это можно сделать и средствами Windows 7 (через панель «Система» там есть возможность производить манипуляции с разделами диска), но лучше для этого подходит Acronis Disk Director 11 (либо другая версия), который уже несколько раз использовался для разбиения винчестера, никаких проблем при этом не возникало и не происходило потери данных. В итоге было освобождено 70 ГБ под установку Ubuntu.

Далее пошли сложности с созданием дополнительных разделов. Дело в том, что на диске можно иметь либо максимум 4 основных раздела, либо 3 основных и сколько угодно логических. На используемом винчестере уже было 4 основных раздела: “DELLUTILITY”, “Recovery”, “C:\(OS)” и основной раздел, содержащий логический “E:\(DOC)”. Последний был переделан в основной, но в результате исчезла возможность создавать дополнительные логические диски. Поэтому он снова был преобразован к логическому, так как только так можно создать в высвобожденном пространстве логические разделы, необходимые для установки Ubuntu. Правда, в инструкции по установке говорилось, что сначала нужно создать отдельный основной раздел, а в нем уже 3 логических. Нов итоге Acronis’ом было просто создано 3 логических раздела (без форматирования и без назначения буквы) размером 12 Гб, 12 Гб и 46 Гб, которые расположились в том же основном разделе, что и E:\(DOC).

В инструкции по установке рекомендуется использовать для разбиения и правильного форматирования диска под установку Ubuntu программу Gparted, входящую в Ubuntu по умолчанию, в том числе и в LiveCD-версию. Дальнейшие манипуляции с созданными логическими разделами производились с помощью неё. Для этого достаточно было выполнить загрузку LiveCD-версии Ubuntuс флешки. Созданные разделы были отформатированы под файловые системы ext4, swap-linux, ext4 и обозначены метками root, swap и home.

Итак, диск был готов к установке. Далее нужно было лишь кликнуть на ярлык «Установка» на рабочем столе LiveCD-версии, загруженной с флешки. Под LiveCD-версией удобно работать еще и тем, что можно легко подключиться через Wi-fi к Интернет, пользоваться браузером Mozilla и читать документацию на Ubuntu.ru как и что делать или искать ответы на возникающие вопросы.

Как оказывается, есть еще «Установка Ubuntu Desktop на LVM» http://help.ubuntu.ru/wiki/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_ubuntu_desktop_%D0%BD%D0%B0_lvm, являющейся альтернативой традиционному фиксированному разбиению HDD на разделы. Технология интересная и когда-нибудь можно будет с ней разобраться и применить. Пока же было решено не усложнять и так затянувшийся процесс 🙂

В самой установке нет ничего сложного, но есть тонкий момент. Там нужно выбрать «Другой метод» установки, который подразумевает, что пользователь сам укажет, куда и что устанавливать. Там и нужно указывать точки монтирования “/” и “/home” и отформатировать в журналируемую файловую систему ext4 разделы c метками root и home соответственно. Раздел swap Ubuntu обнаружит и подключит самостоятельно. Для дисков C:\(OS) и E:\(DOC) были заданы точки монтирования “/media/windows” и “/media/data” соответственно, как и было указано в инструкции. И очень важно НЕ ставить галочки форматирование!!! Иначе все данные будут потеряны на этих дисках.

Дальше нужно было указать место установки загрузочного сектора, и по умолчанию там стоял загрузочный сектор винчестера “sda”. По случайности он был изменен на “root”, и, как потом оказалось, это было правильно. Правда после завершения установки и перезагрузки Windows7 начал загружаться как обычно. Дело в том, что загрузочный сектор Windows не был перезаписан Ubuntu, поэтому про дополнительно установленную систему он и знать ничего не знает.

Для решения проблемы в поисковую систему был введен запрос «Ubuntu системный загрузчик установка» и найдена ссылка со статьей http://kharkovblog.info/blogs/mir-Linux/razmetka-diskov-dlya-ustanovki-ubuntulinuxmint-ryadom-s-windows.html, где было написано, что с помощью программы EasyBSD (http://soft.oszone.net/download/4063/EasyBCD.html) можно отредактировать меню загрузки Win и добавить к ней Linux. Что и было сделано. Правда, в этой статье говорилось, что под загрузочный сектор Ubuntu нужно создать отдельный раздел /boot размером около 300 Мб. Но и без этого все прекрасно заработало.

Таким образом, потратив без малого целый день, удалось разрешить этот квест и получить на своей “машине” помимо Windows 7, еще и Ubuntu 14.04 «Trusty Tahr» LTS

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