Архив автора: Павел

Отображение веток Git в командной строке Terminal под Ubuntu

git branch terminal ubuntu

По умолчанию такая возможность не предоставляется. Но иметь её очень удобно, когда регулярно работаешь над проектами, использующими Git для версионирования. К счастью, адаптировать Terminal оказалось достаточно простым делом.

В файле $/.bashrc ищем строки:

if [ "$color_prompt" = yes ]; then
  PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
  PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

Комментируем их c помощью символа «#» в начале каждой строки.
Ниже или выше добавляем следующий код:

parse_git_branch() {
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
if [ "$color_prompt" = yes ]; then
  PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;33m\]$(parse_git_branch)\[\033[00m\]\$ '
else
  PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(parse_git_branch)\$ '
fi

Перезапускаем терминал и наслаждаемся результатом.

Проверено под Ubuntu 18.04.

Данное решение легко адаптировать под себя. Например, перед $(parse_git_branch) можно добавить пробел, чтобы отделить имя текущей дирректории от названия ветки. Также можно поменять цвет отображения информации. Параметр 33m в данном примере отвечает за желтый цвет названия ветки. Можно изменить его на красный 31m или другой, в зависимости от предпочтений.

Информация взята по ссылке: https://askubuntu.com/questions/730754/how-do-i-show-the-git-branch-with-colours-in-bash-prompt

Новая услуга «Профессиональный сервис почтовых рассылок»

Закрытие сервиса почтовых рассылок Смартреспондер в конце 2016 года не прошло незамеченным на территории Рунета. Многие владельцы рассылок задумались, каким другим сервисом воспользоваться и при этом вновь не попасть в заложники от политики его владельцев.

Решение напрашивается только одно — настроить свой собственный почтовый сервер и больше ни от кого не зависеть. И это вполне возможно реализовать благодаря отличному компоненту Acymailing для популярной CMS Joomla.

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

Наша IT-Лаборатория предлагает услуги по профессиональной настройке почтового сервера «под ключ». Если вас заинтересовало данное предложение, то пишите или звоните.

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

Выступление 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 должен нормально работать.

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

Новая услуга «Анализ данных»

data scienceВ нашей IT-Лаборатории расширяется спектр предоставляемых услуг. Теперь мы можем помочь вам в комплексной обработке и анализе информации.

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

Кроме того, подобная информация может непрерывно генерироваться в реальном времени, отражая происходящие события на сайте.

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

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

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

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

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

 

Отзыв об обучении работе в CMS WordPress (Корсакова Марина)

korsakova-marinaКорсакова Марина
Контент-менеджер Питерского Клуба Своего Дела (http://pksd.spb.ru)


Отзыв об обучении работе в CMS WordPress:

Павел Абрамов обучал меня работе в CMS WordPress.

Все было четко, структурировано, оперативно.

Павел – профессионал и талантливый педагог.

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

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

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

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