Pull to refresh
37
0
Серега @thecoder

Бекенд на микросервисах

Send message

Почему я работаю на почасовой оплате

Reading time3 min
Views24K
Перевод статьи молодого греческого программиста «Why I bill hourly»

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

Я люблю сравнивать разработку программного обеспечения с возведением здания, начиная с пустого земельного участка. Процесс выглядит примерно так:

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

Любой инженер-строитель шарахнется от такого предложения, программисты же в своей жажде заключить сделку прикинут смету, удвоят ее, добавят 30% и будут надеяться на лучшее. Как отвечаю на такой вопрос я?

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

TAPe-технология — новое слово в распознавании изображений

Reading time4 min
Views12K
Приветствую, уважаемые Хабражители!

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

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

Компрессия данных в системах промышленной автоматизации. Алгоритм SwingingDoor

Reading time5 min
Views9.6K
Здравствуйте, уважаемые читатели. Хочу представить вашему вниманию описание алгоритма компрессии данных SwingingDoor и рассказать о том, как мы его применяем.



По роду деятельности я занимаюсь разработкой решений в области промышленной автоматизации, а более конкретно — разработкой информационных систем производства. Их назначение — предоставлять информацию для людей и других систем. Они предоставляют оперативные, самые последние данные, а также данные за прошлое. Данные поступают из многочисленных систем контроля (СК), количество параметров измеряется десятками тысяч.

Зачем использовать компрессию, почему бы не хранить все данные?
Читать дальше →

Муравьиные алгоритмы

Reading time8 min
Views85K

Предисловие


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

Введение


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

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

Фанатам фреймворка Kohana — сделал клон репозитория (155+ модулей для v.3)

Reading time1 min
Views3.2K
imageФанатам фреймворка Kohana — сделал клон репозитория (155+ модулей для v.3)

Если знаете еще модули для KO3 (пришлите в приват)

Текущие модули:
Читать дальше →

Инструментарий веб-разработчика под мобильные устройства

Reading time2 min
Views11K
С каждым днем количество веб-сайтов и сервисов под мобильные платформы становится все больше и больше. Я уже как то писал про эмуляторы, а сейчас хочу представить несколько полезных инструментов, начиная от самых простых, показывающих как будет сайт выглядеть на том или ином устройстве, заканчивая различными оптимизаторами контента.
Читать дальше →

phpDaemon и runkit: новый уровень

Reading time3 min
Views3.9K
Сегодня я поведаю о новых вкусных плюшках phpDaemon, в том числе предоставленных PHP-модулем runkit.

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

Разверзнуть врата рая

Evercookie — самые устойчивые куки

Reading time1 min
Views75K
Samy Mamkar разработал систему, которая позволяет хранить куки в 8 местах, автоматически восстанавливая друг друга, и даже добиться того, чтобы куки, поставленное в одном браузере, действовало и в другом.

Удалить это куки практически невозможно! (Все возможно, конечно, но слишком много мороки)

Куки хранятся в:
  • HTTP Cookies;
  • Local Shared Objects (Flash);
  • Сохранение куки в значениях RGB автосгенерированных и форсированно кэшированных PNG с использованием HTML5 canvas;
  • Сохранение куки в Web History;
  • HTML5 Session Storage;
  • HTML5 Local Storage;
  • HTML5 Global Storage;
  • HTML5 Database Storage через SQLite.

При удалении из одного из этих мест кука автоматически восстанавливается из оставшихся. Работает даже если пользователь сменит браузер (через Local Shared Objects из Flash).

Описание (на английском) и демо: http://samy.pl/evercookie/.
Попробуйте удалить куки, почистить систему и зайти назад.



Как пользоваться?
Читать дальше →

Впечатляющие анимационные эффекты

Reading time2 min
Views115K
С появлением jQuery, у веб-программистов появилась возможность создавать впечатляющие визуальные эффекты, не прибегая к использованию технологии flash. В данной статье представлено несколько ярких примеров того, каких потрясающих результатов можно достичь, используя стандартные средства браузера и свое воображение.
Читать дальше →

И ещё про «домашний» Asterisk

Reading time4 min
Views19K
Прочитав этот пост, решил поделиться и своим опытом.

В данный момент решены 2 простые задачи:
  • все звонки, поступающие на PSTN номер (обычный городской), переадресовываются на мобильный телефон, который у меня всегда в кармане и, одновременно, на SIP телефон, который стоит дома
  • с SIP телефона я могу звонить как по России, так и в некоторые нужные мне страны по минимальным тарифам.

Как это сделано?
Читать дальше →

Asterisk, или домашняя телефония для (про)двинутых пользователей

Reading time14 min
Views122K
Эта история началась два долгих года назад, когда во время командировки в США я ВДРУГ остался без мобильной связи: с дуру перед поездкой поменял телефон, а он оказался «двух-диапазонником»… Да и роуминг не дешёвый…
Итогом стало открытие для себя SIP-телефонии.

И вот несколько месяцев назад, из статей на Хабре, выясняю, что чужим дядям можно и не платить за межгород, если надо позвонить откуда-то в родной город через Интернет! Достаточно поставить VoIP сервер и настроить его так, как надо именно тебе!

И вот, взяв в руки Asterisk, я приступил к операции по борьбе с излишней жадностью ОпСоСов…

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

Почему хороший игрок в Starcraft — идеальный работник для стартапа?

Reading time5 min
Views37K
В последнее время мы как-то особенно углубились в тему стартапов (это и понятно, ведь новые проекты занимают все наши мысли и свободное время), поэтому активно читаем все, что пишут по этой теме у нас и в англоязычных источниках.
И вот наткнулись на забавную статью. Автор написал ее, размышляя о турнире StartupCraft (турнир по Starcraft для IT-компаний), пытаясь понять, является ли выигрыш в этом турнире свидетельством успеха компании в работе или инвесторы должны дать денег в первую очередь тем, кто проиграл (ведь они еще что-то кроме Starcraftа умеют). Без сомнения, автор склоняется к первому варианту:)

image

Под катом перевод этой самой статьи
Читать дальше →

Мини-задачка: «олд-скульное» дерево

Reading time3 min
Views1.9K

Постановка задачи



Буквально несколько дней назад Eric Lippert на своем блоге Fabulous Adventures In Coding опубликовал очень простую, но занимательную задачку:

Есть дерево, заданное с помощью класса Node, в котором есть Children с теми же самыми Node и какой-то Text (чуть ниже приведу код класса). Необходимо сгенерировать строку такого вида (включая переносы строк):
Использовать нужно юникодовые символы "│ ├ ─ └" (вспомним старые добрые картинки с псевдографикой). Цель, которую поставил себе Эрик — выяснить, какие предпочтения будут сделаны при составлении решения: рекурсивное (так как дерево), более быстрое или более читабельное.
Читать дальше →

Мирный ботнет

Reading time5 min
Views1.7K
Современные поисковые системы способны самостоятельно упорядочивать огромные объемы информации, позволяя быстро находить материалы по любой теме. Но когда дело касается поиска товаров в интернет-магазинах или вакансий в базах рекрутинговых агентств, или предложений автомобилей по сайтам автосалонов, в общем поиска любой каталогизированной информации в Интернет, о самостоятельности поисковых систем говорить не приходится, потому что для удовлетворения таких запросов в большинстве случаев они требуют от сайтов-источников выгрузки (Datа Feed) своих каталогов в специальном формате.

Автоматическое извлечение фактов из каталогов, не имеющих семантической разметки, является непростой задачей, но всё же она много проще задачи извлечения фактов из произвольного неструктурированного текста.
Читать дальше →

Не бойтесь менять!

Reading time4 min
Views12K
thecommentor-release-logo Сегодня хотелось бы поведать о том, как мы выкинули полугодовую работу и за 2 месяца сделали все заново. О том, как нам было страшно, жалко и обидно. Ну и конечно о том, что в результате получилось.

Некоторое время назад я писал о том, что не надо заставлять человека думать (много и долго :). Это своеобразное продолжение этой же темы но уже с конкретными результатами.

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

Календарный период — улучшаем интерфейс

Reading time2 min
Views4.4K
Работая над интерфейсом очередного крупного проекта я старался дотошно проработать каждый его элемент. Конечно нет предела совершенству и, как это обычно бывает, заканчивая один проект ты уже видишь кучу его недостатков, делаешь анализ и выводы на будущее.

Тем не менее, в результате, работая над drop-down выбором календарного периода, в голову пришла интересная мысль не разбивать дату на две отдельные формы «С» и «По», как это всегда делают, а объединить их в одну форму и выпадающий блок.

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

Если короче, сейчас сплошь и рядом, в том числе на именитых туристических сайтах, используют две отдельные формы для определения календарного периода, при чём одновременно, как правило, можно открыть только одну из них:

image
Пример обычной формы на Booking.com. Календари «С» и «По» разнесены в разные блоки

Как же улучшить этот интерфейс?

MapReduce: более продвинутые примеры, попробуем без зауми

Reading time9 min
Views34K
Чтобы не откладывать в долгий ящик сразу порассказываю несколько других примеров для MapReduce, обещанные в топике "MapReduce без зауми". (Если не понимаете полностью что такое MapReduce — прочитайте тот топик сначала! Без него не разберетесь)

Поговорим тут о подсчетах национальностей в городах, средних оценках и приводах учеников, ТИЦ, PageRank, входящих ссылках, нишевых ключевых словах, словах-синонимах, социальных сетях и общих друзьях. Постараемся обойтись без математических знаков и зауми.

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

Входящие ссылки


Допустим у нас есть Интернет. В Интернете есть исходящие ссылки.

Допустим на входе у нас есть такие данные об ИСХОДЯЩИХ ссылках, собранные нашим паучком:

habrahabr.ru -> thematicmedia.ru, apple.ru, microsoft.com, ubuntu.com, yandex.ru
thematicmedia.ru -> habrahabr.ru, autokadabra.ru
autokadabra.ru -> habrahabr.ru, yandex.ru


Т.е. мы знаем, что Хабр ссылается на Apple, MS, Ubuntu и Яндекс но кто ссылается на Хабр? Да, вопрос примитивный, но все же разложим на MapReduce. Дальше будет интереснее и этот пример понадобится.

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

jQuery плагин визуального стека сообщений

Reading time2 min
Views3.8K
Стояла задача динамического визуального отображения реакции на действия пользователя со стороны системы.
Другими словами: изменилось какое-то состояние объекта — вывести сообщения об удачном завершении сохранения изменения в базе/системе.
Написание плагина не заставило себя ждать...
 
Читать дальше →

Правила эффективного использования jQuery

Reading time5 min
Views43K
Здесь приведен ряд очень простых правил, следуя которым, ваше сотрудничество с jQuery не будет омрачено скрежетом напрягшегося браузера. Конечно, не так часто случается, что скорость работы javascript’а оказывается критичной, однако такое все же может произойти, и произойти в самый неподходящий момент. Поэтому, лучше держать эти правила в голове и не пренебрегать ими.
Читать дальше →

F3: маленький PHP-фреймворк с огромными возможностями

Reading time7 min
Views27K


Хочу представить вашему вниманию легковесный PHP-фреймворк, на который я недавно наткнулся и который сразу же полюбил.

Fat-Free чем-то похож на известный Ruby-фреймворк Sinatra. Автор Fat-Free помешан на минимализме и чистоте кода, что положительно отразилось на этом простом каркасе для разработки самых разнообразных приложений.

Fat-Free состоит из одного файла и весит всего 55KB. При этом фреймворк обладает таким функционалом: специфический и довольно удобный шаблонизатор, гибкое кеширование, автоматическая защита от спама, интегрированные средства для юнит тестов, профайлер кода.

Он настолько маленький и быстрый, что даже может использоваться для контроля траффика Web-сервера.

Это, также, единственный фреймворк, который защищает Ваше приложение от хотлинкинга и DoS атак.
Читать дальше →

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity