Search
Write a publication
Pull to refresh
20
0
Сергей Поповичев @Vanger

DevOps

Send message

Evernote API или Что внутри слона?

Reading time6 min
Views14K
В комментариях к нашим предыдущим записям в блоге на Хабре мы упомянули о том, что Evernote имеет собственный API. Сейчас я хочу рассказать о нем подробнее.


Когда мы только разрабатывали протокол синхронизации для Evernote, мы хотели добиться кроссплатформенности решения (веб-часть написана на Java, клиент для Windows и Windows Mobile — на C++, клиенты для Mac и iPhone на Objective C). Нужно было что-то, что позволит легко имплементировать этот протокол на разных клиентах и позволять расширять этот протокол по необходимости. Помимо этого, нам хотелось обеспечить передачу бинарных данных по данному протоколу, дабы уменьшить объем передаваемых данных. Выбор пал на Thrift, протокол, использовавшийся (и до сих пор использующийся) в Facebook, а ныне ставший опенсорсным проектом под крылом Apache Incubator. Разрабочики Evernote даже приложили свою руку к развитию проекта, исправляя ошибки и дорабатывая Java, Objective C и Perl-реализациии Thrift.
Читать дальше →

Обзор Zend_CodeGenerator

Reading time10 min
Views689
Как многим уже известно Zend_CodeGenerator появился в бете 1.8 Zend_Framework
Я хотел было потерпеть до релиза версии 1.8, но не удержался и решил всё таки попробавть «на зубок».
Мы будем генерировать класс формы на основе mysql таблицы.
Это действительно очень удобно и избавляет нас от порой рутинной работы.
Читать дальше →

Обзор Zend Server

Reading time3 min
Views25K
Недавно компания Zend выпустила собственную сборку веб-сервера, в которую входят как стандартные Apache+PHP+MySQL, так и разнообразные дополнительные пакеты, например, Zend Optimizer, Zend Debugger, Zend Framework, phpMyAdmin и многие другие. Даже на хабре уже был анонс. Называется эта сборка вполне логично — Zend Server. Предназначена она исключительно для PHP.
Читать дальше →

Miranda становится дружелюбнее?

Reading time2 min
Views979
Здравствуй, уважаемое ХабраСообщество!

В данном «топике» хотелось бы поделиться с Вами позитивом, вызванным двумя «событиями» в мире Миранды.
Это новый «ночной билд №29» и первая паблик версия «программы для создания скинов к Миранде».
Надеюсь, что новости и правда приятные.

Подробности как всегда ниже…

Читать дальше →

Мультик про Quality Management

Reading time1 min
Views1.1K
Нашёл симпатичный мультик про IBM Rational Quality Manager (под хабракатом). Впрочем, мультик не специфичен для данного конкретного инструмента, всё рассказанное и показанное с равным успехом можно применить и к любому другому инструменту управления тестированием. Мульт не технический, можно показывать его начальству с целью объяснения того, что это за инструменты такие и зачем они нужны.

(Предупреждение: мульт на английском языке)
Смотреть мультик ...

Работа с модулями

Reading time12 min
Views3.1K
Задача:
Использовать класс, в который можно добавлять новые методы воздействия, чтобы в последующем можно было ими пользоваться. При этом отделить эти методы по разным файлам.
Представим космический корабль, в котором используются:
a) методы перемещения по пространству, связанные с двигателем
б) методы зарядки энергии, связанные с его солнечными батареями
в) итд

Есть варианты:
1) Создание в объекте переменных и инициализация их через __construct, как новые классы.
Но, при создании каждого нового объекта — мы получаем снижение производительности и постоянную модификацию класса (что может осложнять работу нескольких программистов).
2) Работа через функции __call, __get, __set.
В 3-10 раз более медленная работа этих функций. Особенно при вызове call_user_func_array с параметрами.

Я предлагаю свой вариант.
Быстрый, оптимизированный, но при этом есть небольшая сложность в отладке.

В этом хабратопике я затрону темы:
1. Overloading
2. Ускорение загрузки модулей. Объединение модулей.
3. Оптимизация
Читать дальше →

ООО «Снежинка» — Часть 1. Пошаговое руководство по регистрации.

Reading time7 min
Views3.6K

Прелюдия


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

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

Как сделать Интернет одним из основных Каналов Продаж?

Reading time5 min
Views2.5K
Это моя первая статья на хабре, если я её разместил не в тот блог, извините, более подходящего я не нашёл.

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

Тем кто считает, что в его компании Интернет как “канал продаж” используется на все 100%, читать эту статью необязательно.

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

Почему так происходит?
Читать дальше →

Делаем красивые кнопочки

Reading time4 min
Views12K
Зачастую стандартный вид кнопочек не может сочетаться с концепцией дизайна, которую придумал дизайнер, поэтому он рисует свои кнопочки.

Что обычно делает верстальщик при виде такой кнопки? Правильно, просто напросто, вырезает ее как есть, и вставляет ее в верстку как картинку.

Например:
<a href="some_page.html"><img src="button.gif" alt="Button"></a>
<input type="image" src="button.gif" alt="Button">


* This source code was highlighted with Source Code Highlighter.


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

Простое сравнение изображений с помощью php

Reading time3 min
Views27K
Алгоритм возможно не новый, и не является идеалом, но, на удивление, работает. Никаких графов и корелляции.

Для начала, стоит отметить, что сравнение очень приблизительно (по крайней мере, на данном этапе), временами две совершенно разные фотографии оказываются похожими процентов на 60%, так же не учитываются жесткие модификации (повороты, инверсия, обрезка) – для этого нужно доводить и доводить. Лично для меня самым главным оказались два параметра: скорость, независимость от разрешения изображения и возможность сравнивать «изображения» прямо в базе данных.
Читать дальше →

Q4wine — установка Windows-игры в Wine в картинках

Reading time2 min
Views27K
В этой статье я опишу установку Windows-игры в Wine через Q4Wine.
Для примера я возьму TrackMania Nations Forever.

Я думаю, что Q4Wine у вас уже установлен. Если нет, посетите страничку программы, или возьмите из GIT-репозитория.
Ебилды для Gentoo доступны в оверлее qting-edge.

Итак,
Читать дальше →

Начало пути — Часть 6. Основы сведения и мастеринга.

Reading time6 min
Views249K
Вот, с грехом пополам, мы и добрались до финальной статьи. Она будет про сведение и мастеринг. Первым делом поясню чем сведение отличается от мастеринга, расскажу немного про такую штуку как SideChain и еще парочку трюков. В конце — небольшая таблица, которая до сих пор помогает мне при эквализации.
Читать дальше →

Изменение разделов в Linux, восстановление grub

Reading time2 min
Views8.9K
Являясь счастливым обладателем Asus eee pc 900, решил изменить разбиение разделов, так как первоначальная разбика перестала устраивать. Для тех, кто не в курсе, у eee pc два SSD накопителя емкостью 4 Гби 16Гб, к тому же больший по размеру значительнее медленнее. Первоначально на накопителе емкостью 4Гб у меня находился системный раздел и swap емкостью порядка 200Мб, второй накопитель был полностью отдан для директорий пользователей. Для возможности включения опции Hibernate мне необходим был swap размером минимум с оперативную память, то есть от 1Гб. Было решено изменить размер раздела /home, высвободив 1Гб для swap. А старый раздел swap соединить полностью с корневым разделом. Для работы с разделами в состав Ubuntu Live CD/USB входит достаточно удобная и интуитивно понятная утилита Gparted, объяснять суть работы с которой я не буду. После окончания работы с gparted в live cd/usb я попробовал перезагрузиться и тут меня ждало разочарование.
Читать дальше →

Как получить PMP за 2 месяца и уложиться в 24000р

Reading time2 min
Views27K
Сегодня я делал краткую презентацию на работе по профессиональному развитию + сертификации и сразу после презентации понял, чего я не сделал. Я забыл задать 2 простых вопросам участникам:
  • Вас устраивает ваша должность и зарплата?
  • А что Вы делаете такого что не делают остальные чтобы Вас повысили/увеличили зарплату?
Читать дальше →

Как стать менеджером в ИТ

Reading time2 min
Views3.4K
Побывал я давеча на занимательном и полезном мероприятии под названием

Онлайн тренинг “Как стать менеджером в ИТ”


Занимателен он по нескольким причинам.

Во-первых данный тренинг был бесплатным! Почти… Я только заплатил (а точнее мой работодатель) 4 часа рабочего времени, но это очень дешево. :)
Читать дальше →

Оптимизации системы разделения прав доступа в веб-приложении

Reading time19 min
Views7.6K
После написания прошлой статьи про реализацию системы разделения прав доступа в веб-приложении, появилось множество интересных комментариев. В них в основном велись споры о том, что можно сделать её ещё лучше.

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

В этой статье я рассмотрю:
  1. Битовые поля, оптимизация
  2. Serialize с денормализацией таблиц БД
  3. Вы узнаете, как работает система, подобная Zend ACL

Читать дальше →

Три редкоиспользуемые оси в XPath

Reading time2 min
Views82K
Основная мощь языка XPath заключается в осях, позволяющих добраться до любого элемента в исходном документе. Рассмотрим применение таких редкоиспользуемых осей, как ancestor, descendant и self.

ancestor


Задача: получить атрибут id элемента-«прадеда» foo.

Обычно в таких случаях начинают рисовать лестницы:

../../../@id

Такая запись плоха тем, что малопонятна без знания исходного xml. Автор рекомендует в подобных случаях использовать более информативное выражение:

ancestor::foo[1]/@id

Эта запись не только даёт представление об искомом элементе, но и продолжает работать даже в том случае, когда текущий элемент изменил своё положение в дереве.
Читать дальше →

Русская документация по mootools 1.2

Reading time1 min
Views2.7K
Русская документация по MooTools По данным летнего опроса на habrahabr, на mootools програмируют около 8% разработчиков. Понятно, что чем популярнее фреймворк, тем быстрее и качественнее он развивается, тем больше плагинов под него появляется в сети. Можем ли мы как либо влиять на эту цифру? Я думаю, можем!

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

Разработчики MooTools неплохо поработали над документацией, но в сети она доступна только на английском. Ну вот я и решил исправить ситуацию. Сейчас полностью переведена только секция Core, остальные секции пока что находятся в процессе перевода. Вот я и решил обратиться к Вам, уважаемые разработчики, принять участие в переводе (кого заинтересовало мое предложение пишите мне на oleg точка cherniy at Гмейл.ком).

Полезные ссылки:

Создаем свой SVN сервер: 3$ и 30 минут

Reading time4 min
Views14K
Многих хабрачитателей иногда волнует вопрос хостинга SVN. В интернете полно вариантов захостить SVN репозиторий, с ценой порядка 10-15уе в месяц, но смущает одно: хостинг репозитория — намного более ответственное дело, нежели хостинг сайта. В коде — ваши «сверхценные идеи», от аптайма сервера и надежности бэкапов напрямую зависит работа вашего бизнеса. Некоторые выбирают все же хостить SVN в серьёзных компаниях. Хорошее сравнение по параметрам тут: http://www.svnhostingcomparison.com/, open-source кстати можно захостить в неплохом месте на букву G ;-).

Другие же, как и я, решают хостить SVN на своём VDS / Dedicated сервере. На этом вопросе я и остановлюсь, рассказав заодно немного о вариантах запуска/настройки svn сервера (в том числе относительно новых — шифрование/аутентификация SASL и хранение в FS). Выльеться все это вам в 3-4$/месяц, в полный контроль за бэкапами и доступом к серверу. Пожертвовать придется 30 минут драгоценного времени на настройку.

Целевая аудитория: начальный — средний уровень опыта работы с Linux.
PS. Я в курсе что FreeBSD is not Linux ;-)
Читать дальше →

AutoTranscoder — транскодирование из MP3 в Ogg Vorbis для портатива

Reading time1 min
Views5K
Данный скрипт автоматически перекодирует всю вашу музыку из MP3 в Ogg Vorbis -q0, уменьшив объем файлов в 2-4 раза за счет некоторой потери качества. Это актуально для портативных плееров с поддержкой Ogg Vorbis. Субъективно — потеря качества не ощущается.



Для работы скрипта достаточно запустить файл auto_ogg.bat в каталоге с музыкой. Скрипт автоматически найдет все MP3 файлы, перекодирует их, скопирует теги и удалит оригиналы. Так как он собой представляет небольшой bat файл, скрипт достаточно просто модифицировать и настраивать под себя.

Скачать: autotranscoder.zip (1,4МБ)

Information

Rating
Does not participate
Location
Калужская обл., Россия
Date of birth
Registered
Activity