Блоги

Как то пытался изучить Go и даже книжку прикупил, но потом в связи с отсутствием времени забил на это дело (пока что). Но за развитием языка в среде сообщества я конечно же слежу. Синтаксически язык многих не устраивает, а компилируемость не дает такой производительности, которую возможно все ожидали. Да, это действительно круто, язык поддерживает кросс - компиляцию (компилировать можно под любую архитектуру и операционную систему), с его помощью можно разрабатывать Web приложения, многопоточные приложения но к сожалению у языка нет графической библиотеки, даже биндинга для Tk. Но статья не об этом, статья о том, как один умелец(Gustavo Niemeyer) разработал поддержку QML для языка программирования Go.

Демонстрация Go QML на устройстве Ubuntu Touch, подключенный к компьютеру

Результат запуска показан на видео, отображение строчки "Hello from Go!" и ее перетаскивание пальцем с красивым эффектом.

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

Сравнивать будем два компилятора и два интерпретатора языка Python: Cython, Nuitka, PyPy, CPython. Сравнивать будем с Си. Проверять будем на примере алгоритма подсчета чисел Фибоначчи.

Язык Си

#include <stdio.h>
 
 
int fib(int n) {
    if(n < 3) {
        return 1;
    } else {
        return fib(n-1) + fib(n-2);
    }
}
 
int main(void) {
    printf("%d\n", fib(30));
}

gcc fib.c -o fib
time ./fib
832040
./a.out  0,01s user 0,00s system 2% cpu 0,372 total

CPython (Python 2.7)

def fib(n):
    if n < 3:
        return 1
    return fib(n-1) + fib(n-2)
 
 
if __name__ == '__main__':
    print fib(30)

time python fib.py
832040
python fib.py  0,34s user 0,05s system 37% cpu 1,031 total

Cython без ctypes (тот же код)

Makefile можно взять отсюда

time ./fib
832040
./fib  0,24s user 0,01s system 80% cpu 0,309 total

Cython with ctypes

cdef fib(int n):
    if n < 3:
        return 1
    return fib(n-1) + fib(n-2)
 
 
if __name__ == '__main__':
    print fib(30)

time ./fib
832040
./fib  0,05s user 0,01s system 45% cpu 0,143 total

Nuitka

def fib(n):
    if n < 3:
        return 1
    return fib(n-1) + fib(n-2)
 
 
if __name__ == '__main__':
    print fib(30)

nuitka --exe fib.py
time ./fib.exe
832040
./fib.exe  0,34s user 0,05s system 31% cpu 1,229 total

PyPy

time pypy fib.pyx
832040
pypy fib.pyx  0,23s user 0,02s system 60% cpu 0,423 total

Итог

Самым быстрым оказался Cython с типами Си, чуть медленнее - без использования типов Си. Выигрыша производительности у Nuitka почти нет, а вот PyPy показал неплохой результат для интерпретатора.

Интерпретатор/Компилятор Время исполнения в секундах
Си 0.01
Cython 0.05
PyPy 0.23
Cython without ctypes 0.24
Nuitka 0.34
CPython 0.34

Indicator-Synapse это аналог Spotlight для Linux - меню поиска в Mac OS X, которое позволяет быстро получить доступ ко всем файлам на вашем жестком диске. Indicator-Synapse очень похоже на Spotlight. Если вы никогда не пользовались Mac OS X посмотрите скриншоты и сравните:

Установка в Ubuntu

sudo add-apt-repository ppa:elementary-os/unstable-upstream
sudo add-apt-repository ppa:birdie-team/stable
sudo apt-get update && sudo apt-get install indicator-synapse libkeybinder-3.0-0

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

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

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

Приложение поддерживает OpenGL фильтры, нескольких звуковых дорожек и VDPAU. В репозиториях Ubuntu доступна все еще старая версия приложения (Avidemux 2.5.x), поэтому для установки последней версии нам понадобятся репозитории GetDeb:

wget http://archive.getdeb.net/install_deb/getdeb-repository_0.1-1~getdeb1_all.deb
sudo dpkg -i getdeb-repository_0.1-1~getdeb1_all.deb
sudo apt-get update
sudo apt-get install avidemux2.6-qt # Установка приложения

После того как компания Google анонсировала Google Drive компания по непонятным причинам не стала разрабатывать клиент под Linux. Есть множество сторонних клиентов, например платный Insync и бесплатный Grive.

В этой статье мы рассмотрим альтернативу - приложение google-drive-ocamlfuse. google-drive-ocamlfuse - это бекенд файловой системы Fuse, которая позволяет монтировать ваш Google Drive в Linux.

Установка google-drive-ocamlfuse в Ubuntu

Загружаем бинарники отсюда:

https://github.com/astrada/google-drive-ocamlfuse/wiki/Installation

Распаковываем архив и запускаем следующую команду:

sudo install ~/google-drive-ocamlfuse*/google-drive-ocamlfuse /usr/local/bin/

Дополнительно вы должны установить следующие пакеты:

sudo apt-get install libcurl3-gnutls libfuse2 libsqlite3-0

Установка через OPAM

По названию приложения я думаю вы догадались, что google-drive-ocamlfuse написан на OCaml, поэтому приложение можно установить через OPAM. OPAM это менеджер пакетов для OCaml. Вначале устанавливаем OPAM и OCaml:

sudo add-apt-repository ppa:avsm/ppa-opam-unstable
sudo apt-get update
sudo apt-get install ocaml opam

Ставим зависимости:

sudo apt-get install m4 libcurl4-gnutls-dev libfuse-dev libsqlite3-dev

Устанавливаем сам google-drive-ocamlfuse:

opam init
opam update
opam install google-drive-ocamlfuse
sudo install ~/.opam/system/bin/google-drive-ocamlfuse /usr/local/bin/

Запуск и настройка

Для начала вы должны авторизоваться в Google Drive. Запустите для этого команду:

google-drive-ocamlfuse

У вас откроется окно броузера, где вы должны ввести логин и пароль от Gmail. Теперь мы можем смонтировать наш диск:

mkdir ~/gdrive # Создаем директорию
google-drive-ocamlfuse ~/gdrive # Монтируем

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

Установка в Ubuntu

sudo add-apt-repository ppa:atareao/atareao
sudo apt-get update
sudo apt-get install touchpad-indicator

Trevilla - минималистичная тема, разработанная для GTK +3 доступная в нескольких цветовых схем.

Для установки скачайте тему по следующему адресу http://home.teletu.it/trevilla/ и распакуйте архив с директориями (Trevilla-ThemeColor, Trevilla-ThemeDark, Trevilla-ThemeGray, Trevilla-ThemeWhite, Trevilla-ThemeWhiteX) в ~/.themes либо в /usr/share/themes

Несколько скриншотов:

Что то меня поперло сегодня писать в блог =) В общем найдена критическая ошибка в Mac OS X всех версий. Всем известно, что sudo после первой авторизации устанавливает счетчик отсчета времени, поэтому после первой авторизации вы можете какое то время авторизовываться без пароля. Проблема в том, что изменив дату на 1 января 1970 года (эра Unix) Unix сбрасывает счетчик и отсчет времени авторизации sudo начинается с нуля. В Mac OS X есть возможность устанавливать дату и время без необходимых прав суперпользователя. В Linux такой проблемы нет, так как установка даты требует прав суперпользователя.

Эксплоит:

systemsetup -setusingnetworktime Off -settimezone GMT -setdate 01:01:1970 -settime 00:00;sudo su

Взял отсюда
Гениальный подход для сбора статистики - использование Google Big Query. Рейтинг языков рассчитывается по количеству репозиториев в Github. Попробовал выполнить запрос. Получилось :-)

Статистика за 2013 год

SELECT repository_language, count(repository_language) AS repos_by_lang
FROM [githubarchive:github.timeline]
WHERE repository_fork == "false"
AND type == "CreateEvent"
AND PARSE_UTC_USEC(repository_created_at) >= PARSE_UTC_USEC('2013-01-01 00:00:00')
AND PARSE_UTC_USEC(repository_created_at) < PARSE_UTC_USEC('2013-08-30 00:00:00')
GROUP BY repository_language
ORDER BY repos_by_lang DESC
LIMIT 100

Место Язык # Кол. репозиториев
1 JavaScript 264131
2 Ruby 218812
3 Java 157618
4 PHP 114384
5 Python 95002
6 C++ 78327
7 C 67706
8 Objective-C 36344
9 C# 32170
10 Shell 28561
11 CSS 17813
12 Perl 15412
13 CoffeeScript 11133
14 VimL 7857
15 Scala 6918
16 Go 6884
17 Prolog 5829
18 Clojure 4904
19 Haskell 4681
20 Lua 4048

Радует то, что питон из 6го места перешел на 5е, по сравнению с прошлым годом.

Статистика за 2012 год:

SELECT repository_language, count(repository_language) AS repos_by_lang
FROM [githubarchive:github.timeline]
WHERE repository_fork == "false"
AND type == "CreateEvent"
AND PARSE_UTC_USEC(repository_created_at) >= PARSE_UTC_USEC('2012-01-01 00:00:00')
AND PARSE_UTC_USEC(repository_created_at) < PARSE_UTC_USEC('2012-08-30 00:00:00')
GROUP BY repository_language
ORDER BY repos_by_lang DESC
LIMIT 100

Место Язык # Кол. репозиториев
1 Ruby 344825
2 JavaScript 296564
3 Java 265223
4 C 212393
5 PHP 173938
6 Python 173727
7 C++ 93764
8 Shell 72006
9 Perl 48620
10 C# 43665
11 Objective-C 41536
12 VimL 18077
13 Go 16224
14 CoffeeScript 15722
15 Scala 14262
16 Haskell 10402
17 Clojure 9748
18 Tcl 9633
19 Emacs Lisp 8567
20 Groovy 6973

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

Доступна так же версия Ubuntu 12.04 LTS, которая была создана для тех, кому необходима стабильность и надежность операционной системы, а не новейшие функции.

Сегодня команда Ubuntu объявила о выходе Ubuntu 12.04.3 LTS для настольных компьютеров, серверов и облачных вычислений. Из новых функций стали доступны обновлённое ядро и графический стек для свежеустановленных систем. Так же релиз содержит огромное количество исправлений

Скачать последние образы Ubuntu 12.04.3 вы можете по следующим ссылкам:

Ubuntu 12.04.3
Kubuntu 12.04.3
Edubuntu 12.04.3
Ubuntu Studion 12.04.3

Немного о редакторе.

Sublime Text очень мощный текстовый редактор с богатым набором расширений. Редактор является условно бесплатным, но ограничений без покупки лицензии нет.

Я уже перешел на 3-ю версию редактора, сразу после того как он стал публичной бетой, поэтому в этой статье я буду рассматривать именно Sublime Text 3. Из киллер-фич, доступных в 3 версии можно назвать Go To Definition, который позволяет с легкостью бегать по определениям функций и переменных в рамках текущего проекта, и скорость работы редактора. Теперь плагины изолированны от основного приложения. Кстати, диалоговое окно с просьбой купить лицензию в редакторе без лицензии теперь выходит очень редко.

Предисловие.

Я долгое время кочевал между редакторами Vim и Emacs. В Vim мне нравился гибкий редактор, возможность практические все что угодно делать с текстом без использования мыши. Так случилось что у меня возникла некая неприязнь при использовании IDE. Пока что я знаю две самые лучшие IDE для питона: PyCharm, которая является коммерческой и PyDev в виде плагина на Eclipse. Эти обе IDE написаны на Java и не могут похвастаться скоростью работы. Наконец я нашел Sublime, немного его настроив и расширив плагинами, о которых мы поговорим в этой статье. Я начну с описания самых простых расширений и закончу настройкой редактора для работы с Python и Django.

Package Control

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

Официальный сайт и инструкция по установки
Тут полное описание редактора и данного расширения, процесс его установки

Rsub/Rmate

Утилита rmate пришла в Sublime из редактора TextMate. Бывает так, что мне приходится часто бегать по клиентским ssh и править файлы конфигураций. Команда rmate запускается на удаленном ssh сервере, и в качестве параметра ей передается редактируемый файл. Данный файл сразу открывается в вашем редакторе и вы можете его редактировать как локальный, при этом все изменения сохраняются на сервере. Подробно прочитать об установки rmate вы можете тут

Emmet

Emmet это способ для ускоренного написания CSS и HTML кода. Ранее плагин назывался Zen Coding, но потом проект был переименован в emmet. Я думаю что установка данного расширения через Package Control не должна вызывать сложностей, поэтому описывать ее тут не буду.

Bracket Highligheter

Bracket Highligheter позволяет красиво подсвечивать парные скобки. Плагин работает из коробки и результат его работы выглядит так:

SublimePythonIDE

Я кратко описал основные расширения, которые упрощают редактирование текста. Давайте перейдем к расширениям, которые сделают из редактора почти полноценную IDE.

SublimePythonIDE ранее назывался SublimeRope (для Sublime Text 2). Без данного расширения вы можете бегать по объявлениям функций, методов и переменных только в рамках текущего проекта, но после установки SublimePythonIDE вы можете переходить по объявлениям всех модулей, указанных в переменной окружения PYTHONPATH. Достаточно только выбрать метод (переменную, функцию) правым кликом мыши и выбрать пункт меню Go To Definition:

Каждый раз выбирать пункт из контекстного меню неудобно, поэтому присвоим команде Go To Definition определенную комбинацию клавиатуры. Откройте Preferences -> Key Bindings User и добавьте туда следующие строки:

[
    { "keys": ["super+l"], "command": "python_goto_definition" },
]

Теперь во время нажатия cmd-l (в Linux ctrl+l, когда курсор стоит над переменной или функцией откроется ее объявление.

В стандартную поставку SublimePythonIDE входит PyLint, который может подсвечивать ошибки и предупреждения PEP8.

Настраиваем Build System для тестирования Django кода

Мне неудобно каждый раз идти в консоль и запускать команду python manage.py test, что бы запускать автоматические тесты, поэтому давайте создадим новый Build System. Перейдите в меню Tools -> Build System -> New Build System. Редактор создаст новый файл. Добавьте в него следующие строки:

{
    "cmd": ["python", "manage.py", "test", "--noinput"],
    "working_dir": "[mathjax:inline {project_path:]{folder}}",
    "selector": "source.python",
    "env": {"PYTHONPATH":"/Users/aliev/env/lib/python2.7/site-packages"},
}

В строке env я указал стандартную переменную окружения питона - PYTHONPATH и путь к пакетам virtualenv проекта, с которым я работаю (вы можете указать свой путь либо вообще удалить строку env). Сохранить файл и дайте ему название (например Django-test). В меню Tools->Build System выберите Django-test. Теперь после нажатия комбинации cmd->b (в Linux ctrl+b) у вас будут запускаться тесты для текущего Django проекта:

Плагин SublimeREPL и Django консоль

SublimeREPL это отличный плагин, который позволяет запускать REPL консоль практически любого языка программирования (Python не исключение). Мне захотелось что бы в редакторе запускалась консоль Django (которая запускается командой python manage.py shell). К счастью, SublimeREPL настраиваемый плагин. Если вы хотите быстро запускать консоль Django прямо в Sublime Text 3 установите SublimeREPL и добавьте следующие строки куда нибудь в середину файла:

Sublime Text 3/Packages/SublimeREPL/config/Python/Main.sublime-menu

{"command": "repl_open",
"caption": "Django",
"id": "repl_python_run",
"mnemonic": "d",
"args": {
"type": "subprocess",
"encoding": "utf8",
"cmd": ["python", "-u", "manage.py", "shell"],
"cwd": "[mathjax:inline {project_path:]{folder}}",
"syntax": "Packages/Python/Python.tmLanguage",
"external_id": "python"
}
},

Теперь мы можем в текущем Django проекте открыть консоль перейдя в пункт меню: Tools->SublimeREPL->Python->Django. В редакторе должна открыться Django консоль:

В течении несколько месяцев разработчики Ubuntu осуществляли разработку операционной системы в два этапа: развитие следующего поколения компонентов Ubuntu, и добавление новых функций и оптимизация Ubuntu под кодовым названием "Saucy Salamander"

Unity 7 (0.1) был обновлен в Ubuntu 13.10 и был добавлен индикатор раскладки клавиатуры по умолчанию. В новом индикаторе клавиатуры добавлены новые функции, о которых мы поговорим в этой статье.

На скриншоте видно, как выглядит новая ракладка:

Во время нажатия на индикатор открывается меню, откуда можно выбрать текущую раскладку:

Пункт меню Character Map выводит таблицу символов:

Пункт меню Keyboard Layout Chart открывает визуальное представление клавиатуры:

Text Entry Settings - настройка ввода текста, где вы можете добавлять или удалять языки.

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

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

Если честно я ожидал увидеть сумму более внушительную, судя по тому как активно шли сборы первые несколько дней. До окончания сбора средств осталось чуть более суток. Еще неизвестно какой будет процессор в супер навороченном телефоне, но разработчики обещают поставить самый последний, на момент релиза. Основные спецификации телефона очень внушительны. 128 Гб SSD и 4 Гб оперативной памяти должно хватит для всего. Такие внушительные параметры были сделаны по той причине, что телефон можно будет использовать как Desktop, подключив его к монитору пользуясь обычной убунтой. Из спецификации нельзя не обратить внимание и на стекло экрана из сапфира (Sapphire Glass), в отличие от конкурентов с Corning Gorilla Glass 3 и Corning Gorilla Glass.

Ubuntu Phone конечно еще очень сырая, но радует то, что в телефоне есть дуал бут с Android. Вы в любой момент можете переключиться на Android.

Дополнительные спецификации телефона:

Dual boot Ubuntu mobile OS and Android
Fully integrated Ubuntu desktop PC when docked
Fastest multi-core CPU, 4GB RAM, 128GB storage
Micro-SIM
4.5in 1,280 x 720 HD sapphire crystal display
8mp low-light rear camera, 2mp front camera
Dual-LTE, dual-band 802.11n Wi-Fi, Bluetooth 4, NFC
GPS, accelerometer, gyro, proximity sensor, compass, barometer
Stereo speakers with HD audio, dual-mic recording, Active Noise Cancellation
11-pin connector providing simultaneous MHL and USB OTG
3.5mm jack
Silicon-anode Li-Ion battery
64 x 9 x 124mm

Kazam это мощное приложение для записи скринкастов и захвата изображений. Приложение поддерживает два режима:

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

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

Несколько скриншотов работы приложения:

Установка

sudo add-apt-repository ppa:kazam-team/stable-series 
sudo apt-get update
sudo apt-get install kazam

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

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

Новая версия стала более расширенной и поддерживает следующие функции:

Запоминание названия вкладок после того как приложение было закрыто
Создание нескольких вкладок и их переименование
Сокрытие панели вкладок (включено по молчанию), сокрытие нижней области где находятся вкладки
Сокрытие панели вкладок в полноэкранном режиме

Установка приложения в Ubuntu:

sudo add-apt-repository ppa:ozcanesen/terra-terminal 
sudo apt-get update
sudo apt-get install terra

RSS-материал