Search
Write a publication
Pull to refresh
3
0
Максим Мирошниченко @maxwp

User

Send message

Как сделать группу инпутов удобной

Reading time2 min
Views47K
Когда я работал над сервисом заметок jotsky.com, еще до работы в Островке, надо было сделать ввод телефонного номера из двух инпутов. Примерно такой:



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

Групповые сопротивления

Reading time12 min
Views27K
Многие менеджеры в приватных беседах жалуются на сотрудников. Вроде бы и знающие специалисты, а работу не работают. Более того — часто отнимают время у тех, кто таки работает. Хоть увольняй.
Многие родители жалуются на что-то подобное в отношении детей. И тут уволить уже нельзя.
И сотрудники, и дети, часто действуют похожими способами. Реализация разная, а виды действий — схожие:

  • Привлечение внимания
  • Борьба за власть
  • Месть и личные нападки
  • Беспомощность
image
У каждого из этих видов есть свои формальные признаки и стандартные лекарства.
Читать дальше →

Улучшаем релевантность поиска в sphinxsearch

Reading time4 min
Views59K
Sphinxsearch является поисковым движком для быстрого fulltextsearch, может получать данные из mysql, oracle и mssql, может выступать сам хранилищем(realtime индексы). Также sphinx имеет режим работы через api и через sphinxql — аналог протокола sql(с некоторыми ограничениями), что позволяет подключить поиск через sphinx на сайте с минимальным изменением кода. Это один из немногих великих, крупных и открытых проектов разработанный в России. На моей жизни я видел как sphinx обрабатывает порядка 100-200 поисковых запросов на 2 миллиона записей из mysql и при этом сервер свободно дышал и его не тошнило, mysql начинает умирать уже на 10 запросах в секунду на аналогичном конфиге.

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

Sphinx содержит две независимые программы indexer и searchd. Первый строит индексы по данным взятым из базы данных, второй производит поиск по построенном индексу. А теперь перейдем к настройкам поиска в sphinx.

morphology

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

Пример нормализации слова стеммингом на русском.
Слова “яблоко”, “яблока”, “яблоку” будут обрезаны в “яблок” и любой поисковый запрос с вариацией слова “яблока” будет тоже нормализован и найдет записи со словами которые были описаны выше.
Читать дальше →

Redmine — контроль за обновлением production

Reading time3 min
Views12K
В процессе разработки веб приложений, у нас часто возникает 2 вопроса:
1. Какие задачи уже решены, но ещё не залиты на боевой сервер. Другими словами — что именно зальется на боевой сервер при апдейте git
2. Как быстро посмотреть логи — что и когда заливалось на сервер.

В качестве системы контроля версий используется git (через него и обновляется production сервер). В качестве таск-менеджера Redmine.
Читать дальше →

Архитектура и архитекторы

Reading time4 min
Views75K
Относительно давно посетил семинар посвященный управлению архитектурой и ее контролю и все хотел описать полученные знания, так как информации было много, и большая ее часть была весьма полезна. Могу сказать, что представления мои об архитектуре сильно расширились, и тема оказалась более глубокой и широкой, нежели я себе ее представлял. Но это и хорошо, есть отправные точки, которые можно будет самостоятельно проработать в будущем. Итак, заканчивая с лирикой, хочу предоставить краткий конспект по архитектуре.


Большинство разработчиков, скорее всего, представляют себе архитектуру только в приложении к конкретному проекту, т.е. можно часто услышать от них «архитектура ПО», однако это лишь малая часть того, что входит в общее понятие. Условно можно разделить глобальное понятие на несколько частей, от общего к частному. Можете представить их в виде пирамиды:
  • Бизнес архитектура
  • Архитектура информационных систем (потоки данных)
  • Технологическая архитектура

Таким образом, разработчики чаще всего говорят о технологической архитектуре приложения.

Бизнес архитектура, она же Enterprise, является представлением того, как эффективно воспроизвести цели бизнеса и стратегию путем создания, улучшения и объединения ключевых требований, принципов и моделей для успешного развития бизнеса и достижения поставленных целей. Определение взято из английской википедии.  Архитекторы уровня Enterprise должны ориентироваться на бизнес потребности и проводить анализ потоков данных, т.е. покрывают два указанных пункта. Архитекторы уровня Solution занимаются технологическими аспектами проектов. Так же стоит упомянуть не обозначенных здесь Infrastructure Architect, людей, которые занимаются глобальным развитием и анализом технических возможностей по реализации проектов.
Читать дальше →

Централизованное резервное копирование данных Windows и *nix серверов средствами Bacula

Reading time15 min
Views99K
Приветствую всех хаброжителей!

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

Думаю вполне резонным будет предположение, что данная тема уже набила оскомину, но все же я рискну поделиться своим опытом. На суд читателя будет представлена клиент-серверная реализация схемы резервного копирования. В качестве инструмента я выбрал open source проект Bacula. По более чем полугодовому опыту его использования остаюсь доволен своим выбором.

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

Под хабракатом я опишу все демоны подробно


В моем случае резервному копированию подлежат:
  1. Конфигурационные файлы различных демонов со всех серверов.
  2. MySQL базы данных.
  3. Документооборот с файлового сервера Windows.
  4. Различные важные данные с nix серверов(движки сайтов/форумов, etc..)


Приглашаю под кат тех, кто еще не делает бекапы, и тех кто уже их делает.

Google Maps API снижает цены в 8 раз

Reading time2 min
Views15K
В официальном блоге Google Geo Developers объявлено о снижении цен и упрощении лимитов на использовании Google Maps API.

  • Доступ к API дешевеет с $4 до $0,50 за 1000 загрузок.
  • На стандартные и стилизованные карты теперь действуют одинаковые тарифы (раньше на стилизованные карты лимит был всего лишь 2500 обращений в день, плюс более высокий тариф за превышение лимита).

При этом доступ к API по-прежнему остаётся бесплатным для сайтов, которые не превышают лимит 25 000 загрузок в сутки на протяжении 90 последовательных дней. По статистике Google, к этой категории относится 99,65% всех сайтов, которые пользуются Google Maps API.
Читать дальше →

Размышления об эволюции маркетинга в IT

Reading time7 min
Views6.6K
Да-да. Именно размышления. Я не стану перечислять по пунктам «39 вещей, которые поднимут ваши продажи на 235%». Вместо 39 и 235 можно подставить любую другую цифру. Всякий здравомыслящий человек понимает, что ограниченные в своей конечности списки «how to’s» или «хаутусов», как я их про себя называю, нисколько не помогут в конкретной ситуации. По этому поводу есть хорошее высказывание одного ученого:

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

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

Все просто: когда в конце 90х человек заканчивает лингвистический вуз, по специальности учитель английского и немецкого языка, то ясное дело, что учителем работать ну никак не хочется. И даже окончание магистратуры этому желанию не способствует. Можно было попробовать свалить куда-нибудь, к чему стремились многие однокурсники, и что некоторые сделали, но этот вариант оказался не для меня. To cut a long story short, деятельность моя в IT, начатая в качестве переводчика, плавно переросла в продажи и маркетинг.

Ситуация в то время была весьма благоприятной для людей, владеющих английским. Конец 90х -начало нулевых. В западном мире широко раскручена тема аутсорса. Толковые мозги девелоперов из постсоветского пространства востребованы весьма и весьма. Появилась кучка мелких и средних компаний, которые подвизались на аукционах проектов, или просто каким-то другим способом находили себе заказики. Некоторые особо разросшиеся, которым удалось подгрести под себя ресурсы (какое ужасное слово применительно к людям), предлагали (и до сих пор предлагают) не услуги по разработке софта на заказ, а просто мозги. Естественно, что этим компаниям были нужны менеджеры по продажам, которые могли урвать проектик на аукционе, или же успешно продавать эти самые людские ресурсы. Сразу оговорюсь, в те годы я вообще слабо себе представляла, что в IT можно делать не просто проекты на заказ и продавать разработчиков, но и делать свои (!) собственные продукты. Не спущенные на тебя клиентом, а захотеть, решить и сделать свой продукт. И еще при этом даже добиться успеха. Но я забегаю вперед. Это только с годами стало ясно, что продавать аутсорс или мозги, и делать маркетинг своего продукта – это две больших разницы, как говорил кто-то из классиков.

Поговорим немножко об аутсорсе. К чему сводились продажи:

1. Тусоваться на онлайн-аукционах проектов. Обещать сделать максимум всего за минимум. Эта работа очень похожа на то, что делает зазывала на восточном базаре: во все горло расхваливает товар, не стыдится приврать и пообещать больше, чем можно реально сделать. Ведь главное же урвать проект, а как там потом, и как поступать с такой страшной вещью, как «сhange requests» — это дело десятое. Как-нибудь разрулится. Иногда оно и в самом деле разруливалось, когда клиент понимал, что действительно он стал хотеть уже немножко не то, и требуется больше эфортов, а иногда нет. Опять же, в то время я никак не понимала, почему же эти клиенты с самого начала точно не знают, что им надо, и почему у них меняются требования. Звучит смешно сейчас, когда космические корабли и т.п. и когда agile стал мейнстримом.

2. Рассылки. Они же email marketing, они же direct mailing. Берутся базы каких-нибудь приблизительно подходящих prospects и оптом промыливаются. Рассылками до сих пор пользуются индусские разработческие фермы. Когда я натыкаюсь на этот спам в своем ящике, всякий раз удивляюсь: неужели же до сих пор находится кто-то, кто отзывается на такие предложения.

3. Пресловутый cold calling. Столь много воспетый в разнообразных книжуськах по продажам. Насколько я знаю, cold calling еще сколько-нибудь нормально мог работать в Европе. В USA люди настолько уже запуганы втюхиванием всего чего угодно, что до живого человека дозвониться очень сложно. Я ни разу не видела, чтобы из cold calling'а получилось что-то путное, хотя существуют мифы, что кто-то где-то якобы кого-то таким образом подцепил.

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

Эффективное распределение ролей посредством RACI матрицы (Обновлено)

Reading time5 min
Views165K
Часто ли Вы сталкивались с таким явлением, как нерациональное распределение обязанностей? Сколько раз приходилось наблюдать за тем, как один человек «на все руки мастер» выполняет работу за пятерых? А так называемый «специалист, занимающийся не понятно чем» — знакомо? Такие варианты, а также им подобные нередко приходилось видеть ранее в отечественных реалиях. Этот же «совок» многим приходится наблюдать, и что хуже, чувствовать на своей личной шкуре и поныне во многих госструктурах.

О таком умном словосочетании, как «разделение полномочий» говорят часто. Но все ли знают, как его применять на практике, и кому удается этим реально воспользоваться? Приглядевшись внимательно, делаем вывод, что такое явление происходит по большому счету, в компаниях частного сектора, в особенности тех, кто работает с иностранным клиентом.

Именно из-за «бугра» до нас дошла любопытная аббревиатура под названием RACI. При этом, зачастую перед ней можно наблюдать разного рода умности а-ля «матрица» или «модель». Что это и с чем его едят, попытаюсь объяснить читателю далее. Возможно, кому-то уже повезло работать в коллективах, где каждый знает свои обязанности и область ответственности – за таких людей можно только порадоваться. При этом лично я верю, что далеко не у всех всё идеально в сфере разделения полномочий. Для таких людей данная статья может оказаться полезной.
Читать дальше →

Проблема модификации даты через strtotime

Reading time1 min
Views19K
Добрый день хабравчане.

Хочу поведать вам о небольшой проблеме с вычислением даты функцией strtotime.

Суть в следующем. Мне нужно было получить название предыдущего месяца. Ничего сложного в этой задаче нет:
$t = strtotime('-1 month');
echo strftime('%B', $t);

В большинстве случаев этот вариант отлично подходит. Но не сегодня.
Читать дальше →

Herrmann Dominanz Instrument (HDI). Часть II

Reading time7 min
Views6.8K
Продолжим наш разговор о людях.
Речь в этой статье пойдет больше о практических инструментах в области мотивации и делегирования полномочий персоналу. Но и какая-то часть теории тоже будет.

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

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

В этой статье рассмотрим:


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

Tecart — новая тема для OpenCart

Reading time1 min
Views15K
Хочу поделиться с хабрасообществом отличной новостью. Мы закончили работу над фришной темой для популярного e-commerce движка OpenCart! Тема называется Tecart и она отлично подходит для магазинов электроники, компьютерной техники, мобильной техники.

Вот так выглядит главная страница магазина



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

Защита ajax-приложения от Cross Site Request атак (CSRF)

Reading time2 min
Views35K
Совсем недавно у меня появилась задача защитить web-приложение полностью построенное на ajax от CSRF-атак.

Каков же механизм такой атаки? Суть заключается в выполнении запроса с другого сайта под авторизационными данными пользователя. Например, у нас есть действие удаления своего аккаунта example.com/login/dropme. Если защиты от CSRF атаки нет, мы можем на нужном нам сайте разместить тег:
<img src="http://example.com/login/dropme">

Сразу после того как пользователь зайдет на приготовленную нами страницу и подгрузит содержимое img, его аккаунт на example.com будет удален. О защите от этого я расскажу под катом.

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

RESTful API для сервера – делаем правильно (Часть 1)

Reading time13 min
Views334K
В 2007-м Стив Джобс представил iPhone, который произвел революцию в высокотехнологичной индустрии и изменил наш подход к работе и ведению бизнеса. Сейчас 2012-й и все больше и больше сайтов предлагают нативные iOS и Android клиенты для своих сервисов. Между тем не все стартапы обладают финансами для разработки приложений в дополнение к основному продукту. Для увеличения популярности своего продукта эти компании предлагают открытые API, которыми могут воспользоваться сторонние разработчики. Пожалуй Twitter был первым в этой сфере и теперь число компаний, последовавших этой стратегии, растет стремительно. Это действительно отличный способ создать привлекательную экосистему вокруг своего продукта.

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

Руководство по оформлению HTML/CSS кода от Google

Reading time12 min
Views361K

От переводчика


С удовольствием ознакомился с этими рекомендациями и теперь предлагаю вам перевод.

Введение


Это руководство описывает правила для оформления и форматирования HTML и CSS кода. Его цель — повысить качество кода и облегчить совместную работу и поддержку инфраструктуры.

Это относится к рабочим версиям файлов использующих HTML, CSS и GSS

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

SkypeKit в качестве XMPP gateway

Reading time1 min
Views7.6K
Странно, что после появления такого изобретения, как SkypeKit, этого еще никто не сделал.

Собственно такой шлюз позволяет обмениваться сообщениями с пользователями Skype, используя уже имеющуюся кучу клиентов с поддержкой Jabber.
Читать дальше →

Использование Microsoft Bing Translator API в своем приложении

Reading time5 min
Views10K
Добрый день!

Иногда возникает потребность в переводе данных, введенных пользователем на сайте (для генерации ЧПУ на сайтах, при мультиязычном контенте и т.п.). Так как API Google Translate на данный момент доступен только за деньги, в качестве решения проблемы может использоваться Bing Translator API.
Читать дальше →

Расширение для jQuery: Execute Object

Reading time2 min
Views1.7K
Делюсь с аудиторий написанным накануне небольшим плагином, который может оказаться полезным и вам. К описанию на гитхабе добавить нечего, поэтому я его просто перескажу.

Плагин позволяет передавать команды манипуляции ДОМом в одном объекте, то есть заменить много вызовов методов одним вызовом функции.

Использование


$.executeObject({"#my_div": ["text", "новый текст"]})   // можно передать объект
$.executeObject('{"#my_div": ["text", "новый текст"]}') // а можно и JSON

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

Использование API Яндекс.Карт для работы с произвольными подложками

Reading time4 min
Views27K


Что общего у трех картинок сверху? На левой — часть Санкт-Петербурга из OpenStreetMap. На центральной — карта из Lineage 2. На правой — автомобильные пробки Москвы на подложке от Google. А объединяет эти изображения новое API Яндекс.Карт, вышедшее совсем недавно.

Одной из особенностей API 2.0 является очень простая в использовании поддержка произвольных подложек. Вам не обязательно использовать карты Яндекса для своего ресурса. Никто не мешает скрестить подложку от OpenStreetMap и мощное API от Яндекса для реализации функционала карты.

Хотите показать на OpenStreetMap область доставки вашей пиццерии? Расположить на карте монстров очередной MMORPG? Отобразить Яндекс.Пробки на карте от Google? Нет ничего проще!

Заинтересовало?

Gearman — сервер очередей: использование в проектах на PHP

Reading time9 min
Views82K
Не так давно была замечательная статья, описывающая общие принципы работы с сервером очередей Gearman. Мне бы хотелось продолжить материал, дополнив его некоторыми деталями практического применения, а именно:
— установка и управление сервером
— управление очередью — что возможно и как
— PECL и PEAR php-расширения для работы с Gearman
— мониторинг сервера
— примеры кода
— передача данных порциями
— организация параллельных вычислений в PHP

Интересно? Прошу под кат
Читать дальше →

Information

Rating
Does not participate
Location
Чернигов, Черниговская обл., Украина
Date of birth
Registered
Activity