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

User

Send message

Отдаем файлы эффективно с помощью PHP

Reading time3 min
Views286K
Если Вам потребовалось отдавать файлы не напрямую веб сервером, а с помощью PHP (например для сбора статистики скачиваний), прошу под кат.
Три способа отправить пользователю файл и не повесить сервер

Вавилонская башня менеджмента

Reading time5 min
Views30K
Развитие компании может происходить разными путями. Руководители строят бизнес-процессы, опираясь на личный опыт, или заимствуя готовые решения. Чем крупнее компания, тем сложнее ее структура, витиеватее информационный обмен, и проблемы носят все более систематический характер.

Я часто слышу фразы, что «начальник урод», «ПМ *** и требует от нас невозможного», «мы боремся с адовым количеством проблем из-за того, что руководство стелется под заказчика», «нас сделали виноватыми и оштрафовали ни за что» и так далее. Разработчики возмущены действиями и решениями своих менеджеров (или же их отсутствием), управленцы проводят карательные операции по отношению к «тунеядцам» и «раздолбаям», топ-менеджмент проводит рейды вазилинирования всех подряд, чтобы процесс зарабатывания денег не прекращался.

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

Пользователи и клиенты. В чем разница?

Reading time2 min
Views18K
Я в своей жизни неоднократно сталкивался с тем, что многие в ИТ не видят и не понимают разницы между пользователями (users) и клиентами (customers). Думаю, будет полезно прояснить этот момент в небольшой статье, хотя для многих тема, которую я попытаюсь раскрыть, будет очевидной. Итак, приступим. Готовы?
Читать дальше →

Сайт сделали, что дальше? Организация службы поддержки web-студии

Reading time5 min
Views25K


Очень часто при заказе сайта клиенты выбирают компанию (или фрилансера) только по соотношению “цена/качество”. При этом на такой важный параметр, как дальнейшее сопровождение, внимание не обращают. Хотя именно быстрая, профессиональная и недорогая поддержка чаще всего является залогом успеха сайта и удовлетворенности заказчика.

Что происходит при отсутствии выделенной службы поддержки? Клиент ждет ответа, ждет доработок — да хоть какой-то реакции! — и не получает ее в ожидаемое время с ожидаемым качеством. Тогда клиент ищет другие варианты.

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

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

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

Таблицы с данными в адаптивном дизайне

Reading time1 min
Views101K
Одна из постоянных проблем верстальщиков адаптивных сайтов — это задача удобно представить обычные таблицы на мобильных устройствах. Вот как выглядят такие таблицы чаще всего:


Не очень удобно, правда? К счастью уже существует несколько хитрых способов решить такую проблему.
Читать дальше →

RedBeanPHP — CodeFirst PHP фреймворк

Reading time6 min
Views31K
RedBeanPHP
В данном посте речь пойдет об весьма интересном ORM фреймворке RedBeanPHP. Примечателен он, прежде всего, возможностью создавать структуру базы данных на лету. К тому же фреймворк прост в использовании как две копейки. Моё повествование будет разделено на 3 части.
Во второй части основная тема будет — модели. В третей — изменение логики работы фреймворка.

Перед написанием поста я потрудился и сделал тестовое приложение с 15 000 записей, для того, что бы убедиться на своем опыте в возможности невероятно облегчить работу. Ведь я наверно не один, кто прописывает поля в нескольких местах с жутким осознанием бессмысленности этой работы, особенно на начальном этапе разработки. Наконец появился аналог Entity Framework Code First из .NET, который в свое время вызвал у меня дикий восторг. Итак по порядку.
Читать дальше →

«Див» блоки одинаковой высоты

Reading time2 min
Views44K

На днях столкнулся с задачей:


Сделать две одинаковые по высоте -колонки, не зависимо от количества текста в какой либо из них.

Условия:


  1. Никаких таблиц;
  2. Поддержка IE6+ и т.д;
  3. Резиновая верстка;
  4. Никакого JavaScript, чистый HTML и CSS.

Дизайн:


В дизайне изображены две колонки с отступом друг от друга. Каждый из них имеет свой фон и border с округленными уголками. На вид все просто.

Поиск решений:


Искал и естественно нашел очень полезный пост, где описаны все самые действенные способы решения данной задачи: http://habrahabr.ru/post/64173/.
Собственно 4-е решение из этого поста было наиболее приемлемым, но с помощью него мне так и не удалось вывести два разных фона для своих колонок.

Решение

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

Google Analytics для сбора ошибок JavaScript

Reading time2 min
Views19K
image
Не так давно на Хабре была статья про навороченный стартап, заточенный на сбор ошибок JavaScript. Далеко не всегда нужно столько возможностей, но оказалось, что многие просто не знают про старый бородатый способ с Google Analytics. Про него я и попытаюсь кратенько рассказать.
Читать дальше →

СRM vs lead-management

Reading time5 min
Views19K
Так получилось не случайно, для этого есть предпосылки, термин «CRM» в России понимают превратно и применяют для обозначения двух важнейших процессов, структурирующих продажи. Эти процессы – отделены друг от друга, каждый из них имеет свое назначение, свою методологию, свой инструментарий и, следовательно, свой термин для обозначения:

Lead-management — термин, который определяет цикл продажи;

СRM – система отношений с текущими клиентами, а точнее – с покупателями (customer).

«СRM» по-русски — это перепутанные, срощенные между собой 2 процесса: процесс управления лидами (контактами) и процесс работы с текущими клиентами.

История вопроса

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

Тестирование — это не поиск ошибок!

Reading time5 min
Views155K
Многие считают, что тестирование ПО — это поиск ошибок. Иногда я говорю тестировщикам: «не старайся найти как можно больше ошибок, старайся пропустить как можно меньше!», и меня не понимают: а в чём разница?

А разница огромная! В этой статье я хочу рассказать, в чём она заключается, и какие инструменты необходимо использовать для настоящего полезного тестирования.
Читать дальше →

Доступ к Skype API используя PHP на *nix системах

Reading time4 min
Views41K
Еще давно я хотел иметь свой автоответчик или бота для скайпа, называйте как вам угодно. В гугле я ничего найти не мог, да еще из-за того, что я пользуюсь Ubuntu, задача становилась сложнее в несколько раз. А если учесть, что я знаю только PHP, и то, не очень хорошо, моя мечта становилась нереальной.

Но недавно, просматривая официальную документацию по API скайпа, я обратил внимание на «D-BUS messaging», не знаю, почему я раньше не обращал на него внимание. Разобравшись со всем, я наконец сделал то, что давно хотел! Я получил доступ к Skype API на PHP. Об этом я и хочу рассказать в своей статье.

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

Сетки без заморочек

Reading time4 min
Views80K
Подавляющее большинство сайтов создано с использованием сеточных макетов. Они могут не использовать их в явном виде, но если на сайте присутствует блок с основным контентом, расположенный справа, и боковой блок (сайдбар), расположенный слева, то это и есть простейшая сетка.

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

В этой статье я расскажу вам, как я верстаю сеточный макет. Это не так уж и сложно. И даже сделать резиновые сетки не составит большого труда.
Читать дальше →

10 признаков сайта, заслуживающего доверие

Reading time5 min
Views34K
Trustworthy website by Zfort Group

Это адаптативный перевод статьи. Оригинал находится по ссылке: «10 Signs of a Trustworthy Website».

В Интернете находятся миллионы сайтов. Надежность некоторых из них не вызывает сомнений: к примеру, если речь идет об Интернет-магазине Macy’s или о новостном портале BBC. Но сколько раз в поисках определенного продукта или сервиса вы сталкивались с компаниями, о которых никогда раньше не слышали? И сколько раз вы задумывались: безопасно ли иметь с ними дело?

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

Почему? Чем мы руководствуемся?
Читать дальше →

Работа с Gmail используя PHP

Reading time6 min
Views3.6K
Доброго времени суток, коллеги. В этой статье я расскажу об опыте использовании Gmail API. Как оказалось, данная тема не очень освещена в интернете, да и документация далека от идеала.

Недавно у меня появилась задача: написать PHP приложение для поиска сообщений на Gmail ящике пользователя. Притом не просто поиск, а поиск по параметрам, благо Gmail имеет неплохую строку поиска, позволяющую написать что то вида “is:sent after:2012/08/10”. Да и в API есть расширения IMAP протокола X-GM-*
Читать дальше →

Несколько интересных приемов и особенностей работы с MySQL

Reading time3 min
Views88K
Я думаю, что в процессе изучения той или иной СУБД каждый из вас не раз изобретал велосипеды для решения своих задач, не зная о существовании той или иной функции или приема, которые бы могли в разы ускорить выполнение запросов и уменьшить объем кода. В данной статье я хочу поделиться с вами своим опытом работы с очень «добрым» и «отзывчивым» MySQL, часто позволяющему программисту делать вещи, которые другие СУБД переварить бы не смогли. Материал будет полезен скорее тем, кто только решил углубиться в чудесный мир запросов, но возможно и опытные программисты найдут тут что-то интересное.
Читать дальше →

Ключевое слово this в javascript — учимся определять контекст на практике

Reading time4 min
Views185K
По просьбам некоторых читателей решил написать топик про контекст в javascript. Новички javascript часто не понимают значение ключевого слова this в javascript. Данный топик будет интересен не только новичкам, а также тем, кто просто хочет освежить данный аспект в памяти. Посмотрите пример ниже. Если вы затрудняетесь ответить на вопрос «что будет выведено в логе» хотя бы в одном из пунктов или хотите просто посмотреть ответы — добро пожаловать под кат.

var f = function() {
    this.x = 5;
    (function() {
        this.x = 3;
    })();
    console.log(this.x);
};

var obj = {x: 4, m: function() {
    console.log(this.x);
}};


f();
new f();
obj.m();
new obj.m();
f.call(f);
obj.m.call(f);

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

Ваш сайт тоже позволяет заливать всё подряд?

Reading time4 min
Views52K
Один французский «исследователь безопасности» этим летом опубликовал невиданно много найденных им уязвимостей типа arbitrary file upload в разных «написанных на коленке», но популярных CMS и плагинах к ним. Удивительно, как беспечны бывают создатели и администраторы небольших форумов, блогов и интернет-магазинчиков. Как правило, в каталоге, куда загружаются аватары, резюме, смайлики и прочие ресурсы, которые пользователь может загружать на сайт — разрешено выполнение кода PHP; а значит, загрузка PHP-скрипта под видом картинки позволит злоумышленнику выполнять на сервере произвольный код.

Выполнение кода с правами apache — это, конечно, не полный контроль над сервером, но не стоит недооценивать открывающиеся злоумышленнику возможности: он получает полный доступ ко всем скриптам и конфигурационным файлам сайта и через них — к используемым БД; он может рассылать от вашего имени спам, захостить у вас какой-нибудь незаконный контент, тем подставив вас под абузы; может, найдя параметры привязки к платёжной системе, отрефандить все заказы и оставить вас без дохода за весь последний месяц. Обидно, правда?

Как ему это удастся?

Система распределения заказов среди исполнителей методом ангелов

Reading time8 min
Views24K
Представим, что в компании есть отлаженный процесс регулярного поступления заказов (звонков, заявок). И есть несколько возможных исполнителей, которые могут выполнить эту работу.
Задача усложняется, если исполнитель выполняет работу на территории заказчика. А услуга, которую он оказывает — вполне может быть выполнена без поддержки компании работодателя. Скажем, договорившись за полцены от официальной цены. Знакомо? Сантехники, репетиторы или даже девушки по вызову – все эти бизнесы остаются халтурами низкого уровня, во многом из-за сложности контроля со стороны работодателя. А диспетчеру, выполняющему эту работу, придется стать ангелом, чтобы распределить все заказы и никого не обидеть.

Наша задача — выбрать оптимального исполнителя, среди нескольких возможных.
Читать дальше →

JsRender: Новое поколение jQuery Templates

Reading time3 min
Views37K
Буквально пару месяцев назад, мы начали переписывать весьма крупный сайт, с момента прошлого крупного релиза прошёл не один год, конечно, сайт дорабатывался, правились баги и в итоге в настоящее время создаётся новая версия. В ней будет активно использоваться AJAX, поэтому весьма остро стоял вопрос с генерацией контента на клиенте, полученного в формате JSON. Прошлые шаблоны были собственной разработки, так как на то время вариантов было не так много, которые по разным причинам не подходили, базировались наши шаблоны на jquery, с помощью атрибутов происходило заполнение.

Прежде всего было решено провести тест, при генерации списка из 1500 элементов было получено превосходство в 20 раз, похожие результаты показывает сравнение с jQuery Template (страница с тестами).
Читать дальше →

Information

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