Блог - Linux, программирование, Я!

Без рубрикиПознания

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

  • 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 (??)
    • Научиться работать с нейросетями
    • Научиться программировать микроконтроллеры
  1. 2010-01-22 13:53:17 | #

    Для полноты ощущений добавь в раздел CMS ModX :)
    Капча зачетная.

    • 2010-01-22 20:09:17 | #

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

  2. Мария
    2011-02-03 22:45:11 | #

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