Познания

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

  • Linux и системное администрирование:
    • Linux:как таковой
      • Ubuntu – сам использую в качестве основной ОС на десктопе/рабочей станции. Настраивал и использую в качестве веб-сервера. Многих знакомых подсадил на десктоп.
      • Debian – настраивал и использоавл на веб-сервере.
      • CentOS – настраивал и использовал на Development сервере.
    • LAMP (Linux Apache MySQL PHP): ставил, настраивал, виртуалхосты там всякие, учетные записи, PHP отладчики и кешеры… Теперь апач не использую т.к. предпочитаю Nginx.
    • NGINX: fcgi, proxy, uWSGI виртуалхосты, балансировка, кеширование, url-rewrite
    • Gitolite: установка, настройка, разграничение доступа, интеграция с Redmine
    • bind9 (named): установка, простейшая настройка
    • OpenVPN: настройка, маршрутизация, ключи
    • Bacula: установка, настройка.
    • SphinxSearch: установка, настройка (см. так же в разделе PHP)
    • PostgreSQL: установка, настройка (!!!). Весьма хорошо разбираюсь. При разработке отдаю предпочтение этой БД.
    • uWSGI: установка, настройка.
    • RabbtMQ: настраивать – то особо нечего
    • Redis: немного
    • MongoDB: досталась в качестве legacy, выпилил везде где можно
    • debhelper: умею собирать DEB-пакеты
    • Windows: хорошо разбираюсь, но усиленно стараюсь забыть как страшный сон
  • Программирование (работаю в Emacs под Ubuntu):
    • PHP: с PHP завязал. Предпочитаю Python.
      • ООП
      • Архитектура Контроллер – Модель – Представление (MVC)
      • Smarty (уже не использую, предпочитаю XSLT)
      • DOM, XML, SimpleXML, XSLT, XPath
      • SOAP
      • GD2, Image Magick
      • PDO, MySQL, Memcache
      • SphinxSearch – помимо обычного поиска реализовывал довольно продвинутые поисковые техники вроде Suggest, коррекция опечаток и группировка результатов по категориям
      • Отладка, профилирование, трассировка PHP скриптов (xdebug, KCachegrind, Eclipse)
    • JavaScript:
      • FireBug использую на полную катушку
      • Работа с “чистым” JavaScript, DOM
      • jQuery
      • Knockout.js – интерактивные data-driven интерфейсы. Очень нравится.
      • D3.js – хорошая библиотека для визуализации данных
      • Socket.IO (на сервере – Python; в следующий раз взял бы SocksJS)
      • MooTools немного
      • YUI немного
      • Raphaël – работа с SVG
    • Python: основной язык.
      • Django в основном Python использую с Django (модели/ORM, формы, шаблоны, авторизация (в т.ч. через LDAP) Middleware, настройка веб-сервера под uWSGI/Nginx, django-rest-framework, django-nonrel)
      • Twisted (не очень много работал, есть опыт интеграции с QT; довольно интересная штука, но в целом не нравится)
      • Tornado – сойдет, если приложение очень простое
      • SQLAlchemy – очень мощная ORM, нравится.
      • Pylons – (SQLAlchemy, mako, кеш в Redis) есть явные плюсы и явные минусы. В целом – довольно много недочетов.
      • Flask – (SQLAlchemy + alembic, Jinja2, WTForms) очень гибкий фреймворк, но приходится слишком много писать самому.
      • Celery – весьма интересный обработчик отложенных задач, но ужасно глючный. Приходится активно использовать.
      • gevent – неплохая штука, но не мейнстрим. Довольно большой опыт использования в качестве HTTP-паука. Предпочитаю Erlang.
      • Приложения с GTK GUI (Glade, PyWebKit) и Qt (PySide, PyQt4)
      • Работа с DBus и прочим Linux-desktop окружением
      • Сетевые приложения (HTTP, сокеты)
      • Многопоточные приложения (очереди, блокировки и пр.), работа с дочерними процессами (subprocess)
      • Неблокирующие сокеты (asyncore, epool, Twisted, TornadoWEB)
      • Работа с XML и DOM, XPath  (lxml)
      • Работа с MySQL, PostgreSQL, Sqlite3 базами данных
      • Работа с AMQP (RabbitMQ) – синхронно и асинхронно, библиотеки pika, puka. Exchanges, routing etc довольно плотно.
      • Работа с изображениями PIL – немного
      • Numpy – немножко
      • PyGame – немного
      • AST – из интереса написал неполный транслятор Pyhton кода в JavaScript
      • Scrapy – веб-краулер
      • Реализовал на Python ОЧЕНЬ МНОГО Пауков/грабберов/краулеров + клиентов для различных API
      • Юнит-тесты
      • Отладка, профилирование, отладка потребления памяти (Eclipse, cProfile, pyprof2calltree, KCachegrind)
    • Erlang/OTP: Очень нравится, планирую использовать как можно чаще.
      • Писал веб-приложение для конкурса (писал почти без OTP; использовал MochiWeb, Django Templates, PostgreSQL /в т.ч. epgsql_pool/, работа с сервером SphinxSearch через MySQL протокол)
      • Дописал движок XPath для mochiweb_html
      • Интерпретатор jsonpath
      • Написал сложного веб-паука, успешно заменил им в продакшне предыдущую реализацию на Python (OTP; lhttpc, mochiweb_html, mochiweb_xpath, epgsql + poolboy, AMQP)
      • Вообще несколько web-crawler и ботов различной сложности и нагруженности написал на Erlang
      • Запустил сервис временной почты DropMail.me (gen_smtp, cowboy, erlydtl)
    • C + Linux: на среднем уровне
    • Rust: в реальных проектах пока не применял, но язык очень понравился.
    • SQL: есть опыт работы с MySQL, PostgreSQL и SQLite, немного MSSQL. Предпочитаю PostgreSQL. SQL люблю.
      • Обычные (и не очень) запросы
      • Немного реляционной теории и теории множеств
      • Хранимые процедуры
      • Транзакции
      • Представления (Views)
    • R: немного работал с ним, классная вещь
      • ggplot2 – сложные настраиваемые графики
      • data.table – расширенный data.frame (продвинутая круппировка, быстрая сортировка и фильтрация)
      • db – экспорт данных из БД
    • bash: куда-ж без него
    • Makefile: иногда очень полезен
    • Elisp: в Emacs без этого никак…
    • XML, DOM
    • XSLT ОЧЕНЬ МНОГО на нем делал всяких вещей, в том числе HTML/XHTML шаблонизация на XSLT.
  • Командная работа и контроль версий
    • GIT репозиторий, gitolite, GitHub
    • Mercurial работал с ним, Git нравится больше
    • SVN через git-svn
    • Bazaar – вел один проект на Launchpad. Не нравится.
    • Redmine, в т.ч. установка и настройка самого Redmine
    • GitLab есть опыт разворачивания и настройки.
  • Верстка
    • Умею, но, по возможности избегаю, т.к. не особо люблю это дело.
  • Графика и дизайн: разве что наброски какие-то
    • GIMP.
    • В векторе SVG Inkscape
  • Веб – фреймворки/CMS:
    • Django (см раздел Python)
    • Flask
    • Pylons (sqlalchemy понравилось, остальное – нет)
    • WordPress (довольно глубоко приходилось залезать. Есть опыт создания тем)
  • Сторонние API
    • Службы Google для доменов (Google apps, http://www.google.com/apps/)
    • YouTube API (“API данных” через Zend GData и “API проигрывателя” через JS)
    • Google Analytics “Data Export API” (через PHP библиотеку gapi, на другом месте работы похожее реализовал на Python)
    • Google Base API (аналог Яндекс-маркет) через Python библиотеку (даже патчик им отослал)
    • eBay SOAP/XML API (будь оно неладно)
    • Facebook social graph API (через Python обертку – совсем немного)
    • Vkontakte desktop API (делал Open Source плагин для Gwibber на Python), разрабатывал игру для Vkontakte
    • Twitter REST API (совсем немного)
  • Планы на будущее:
    • Пощупать Haskell (??)
    • Научиться работать с нейросетями
    • Научиться программировать микроконтроллеры

4 thoughts on “Познания

    1. P.S. Post author

      С ModX я поработать пока не успел, но, думаю, в ближайшее время и он появится в этом списке!
      А капча обычная ReCaptcha api

      Reply
  1. Мария

    Я начинаю работать с Python. Работаю с примером из одной книги, но почему-то не работает. Нужно получить список лэптопов из категорий сайта eBay. Вы не могли бы мне подсказать, что я делаю неправильно. Я получила все ключи этого аукциона, внесла их в программу, но не работает. Можно ли переслать Вам файл с программным кодом?

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *