Как стать автором
Обновить
58
0
Олег Полудненко @uaoleg

Пользователь

Отправить сообщение

Yii2 bad behaviors

Время на прочтение2 мин
Количество просмотров8.9K
Минимальная версия PHP для Yii2 — 5.4. Минимальная версия PHP для Traits — 5.4. Совпадение? Не думаю!



Yii2 уже давно пора избавиться от этих плохих поведений. И вот почему.
Читать дальше →
Всего голосов 10: ↑6 и ↓4+2
Комментарии38

Как потерять и найти свой аккаунт на AWS

Время на прочтение1 мин
Количество просмотров8.8K
Очень полезный пост на 3 предложения, который, тем не менее, поможет сэкономить время и нервы.

Несколько дней назад, со мной случилась пренеприятнейшая штука: при попытке войти в AWS Console с домашнего компьютера, я увидел вместо списка сервисов — экран регистрации. Смешных картинок с моим фейсом не будет, вы и так понимаете ситуацию — проект в лайве. После нескольких попыток перелогиниться в режиме инкогнито и в других браузерах, ситуация оставалась прежней. Ничего кроме как завершить регистрацию мне не оставалось. После этого я получил — ТА-ДАМ — совершенно девственный аккаунт.
Читать дальше →
Всего голосов 28: ↑23 и ↓5+18
Комментарии6

Почему вы никогда не должны говорить «никогда»

Время на прочтение7 мин
Количество просмотров56K
Эта моя публикация чуть более чем полностью является ответом на перевод статьи «Почему вы никогда не должны использовать MongoDB». Статья, которая, по сути, рекомендует держаться подальше от MongoDB, является самой заплюсованной в хабе. И это звучит как приговор. Поэтому логично либо хаб закрыть и больше никогда не читать, либо написать ещё более рейтинговое опровержение. Конечно же, я выбрал второй вариант, рискуя своим рейтингом и кармой (ввиду крайней холиварности в комментах).

image
Картинка самоиронии

Читать дальше →
Всего голосов 136: ↑106 и ↓30+76
Комментарии211

Проектирование новостной ленты в социальных сетях

Время на прочтение9 мин
Количество просмотров38K


Так сложилось, что за последние пару лет я успел поучаствовать в разработке нескольких социальных сетей. Главная задача, которую приходилось решать в каждом из этих проектов, заключалась в формировании новостной ленты пользователя. При чём важным условием была возможность масштабирования этой ленты в условиях роста числа пользователей (точнее, числа связей между ними) и, как следствие, — количества контента, который они деливерят друг другу.

Мой рассказ будет о том, как я, превозмогая трудности, решал задачу формирования новостной ленты. А также я расскажу о подходах, которые наработали ребята из проекта Socialite, и которыми они поделились на MongoDB World.
Читать дальше →
Всего голосов 38: ↑34 и ↓4+30
Комментарии68

Три новинки в MongoDB 2.8

Время на прочтение3 мин
Количество просмотров23K
На днях я посетил грандиозную тусовку любителей NoSQL — World MongoDB Conference.



Eliot Horowitz, Co-Founder и CTO в MongoDB, рассказал о 3 новшествах, которые будут доступны уже в ближайшем релизе.
Каждое из анонсированных нововведений нацелено на достижение следующих принципов в архитектуре MongoDB:
  • Продуктивность разработчика
  • Горизонтальная масштабируемость
  • Операционная масштабируемость
  • Администрирование одного вебсервера должно быть простым. То же самое касается кластеров

Видео презентации можно посмотреть здесь.
Подробности здесь
Всего голосов 70: ↑66 и ↓4+62
Комментарии33

Как ваши твиты раскрывают ваше местоположение

Время на прочтение4 мин
Количество просмотров27K

Исследователи из IBM разработали алгоритм, позволяющий определять место жительства пользователя с точностью до 70% путём анализа 200 его последних твитов.



USA tweets
Читать дальше →
Всего голосов 36: ↑31 и ↓5+26
Комментарии18

Функции в PHP 5.6 — что нового?

Время на прочтение10 мин
Количество просмотров60K

Слева направо: Rasmus, Build 5.4, Version 5.5, Relise 5.6

Сегодня хочу поделиться своим видением того, как будет выглядеть работа с функциями уже в ближайшем мажорном релизе PHP — 5.6. Для этого я изучил рабочие предложения и нашёл там немало вкусняшек:

  • Новый синтаксис для функций с переменным числом аргументов и радостный отход в историю мороки с func_get_args():
    function fn($reqParam, $optParam = null, ...$params) { }
    

  • Опускаем указание значений для необязательных аргументов:
    function create_query($where, $order_by, $join_type = '', $execute = false, $report_errors = false) { }
    create_query('deleted=0', 'name', default, default, /*report_errors*/ true);
    

  • Импорт функций из пространства имён:
    use function foo\bar\baz;
    baz();
    

  • Исключения вместо набивших оскомину фатальных ошибок:
    <?php
    function call_method($obj) {
        $obj->method();
    }
    
    call_method(null); // oops!
    
    try {
        call_method(null); // oops!
    } catch (EngineException $e) {
        echo "Cool Exception: {$e->getMessage()}\n";
    }
    

  • Добавление модификатора deprecated:
    deprecated function myOldFunction() { }
    

  • Вызов методов и доступ к свойствам создаваемого объекта:
    new foo()->xyz;
    new baz()->bar(); 
    

Большинство из приведенных предложений пока находятся на стадии обсуждения. Но среди них уже есть утверждённые и даже реализованные.

Также искушённого читателя ждёт эксклюзив: изучая чужие умные мысли, я и сам решился написать собственный RFC. Сейчас вы не увидите его в списке предложений, так как на данный момент он находится на самом начальном этапе — на рассылке internals@lists.php.net.

А начну обзор с RFC, который уже реализован и гарантированно попадает в релиз 5.6.

Синтаксис для функций с переменным числом аргументов

Реализовано в PHP 5.6, Принято 36 голосами против 1

И сразу в бой: рассмотрим код, который показывает как переменный аргумент ...$params будет заполняться в зависимости от количества переданных аргументов:
function fn($reqParam, $optParam = null, ...$params) {
    var_dump($reqParam, $optParam, $params);
}
 
fn(1);             // 1, null, []
fn(1, 2);          // 1, 2, []
fn(1, 2, 3);       // 1, 2, [3]
fn(1, 2, 3, 4);    // 1, 2, [3, 4]
fn(1, 2, 3, 4, 5); // 1, 2, [3, 4, 5]

$params будет пустым массивом, если число переданных аргументов меньше, чем число объявленных. Все последующие аргументы будут добавлены в массив $params (с сохранением порядка). Индексы в массиве $params заполняются от 0 и по возрастанию.
Читать дальше →
Всего голосов 98: ↑83 и ↓15+68
Комментарии203

Ускоряем Nginx за 5 минут

Время на прочтение5 мин
Количество просмотров281K
image
Попытайтесь повторить это сами

Как правило, настроенный должным образом сервер Nginx на Linux, может обрабатывать 500,000 — 600,000 запросов в секунду. Но этот показатель можно весьма ощутимо увеличить. Хотел бы обратить внимание на тот факт, что настройки описанные ниже, применялись в тестовой среде и, возможно, для ваших боевых серверов они не подойдут.

Минутка банальности.

yum -y install nginx

На всякий пожарный, создадим бэкап исходного конфига.

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig
vim /etc/nginx/nginx.conf

А теперь можно и похимичить!
Бдыжь-бдыжь
Всего голосов 203: ↑138 и ↓65+73
Комментарии127

Бесплатная музыка на YouTube

Время на прочтение2 мин
Количество просмотров114K
Нельзя отрицать силу музыки. Правильная песня может создать волшебное настроение. В то же время неправильная — вмиг его испортит. Независимо от того, в какое состояние вы хотите погрузиться, саундтрек имеет решающее значение.

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

Именно поэтому, сегодня мы запускаем музыкальную библиотеку YouTube Audio Library. Любой автор YouTube теперь имеет доступ к более чем 150 бесплатным инструментальным композициям, которые можно использовать бесплатно, в любое время, для любых творческих целей (не только для видео на YouTube). Вы найдете ссылку на библиотеку в вашем редакторе видео и сможете фильтровать треки по тональности, жанру, инструментам и продолжительности. Треки можно скачивать как MP3-файлы (320 Кб).

Если вы создаёте мелодраму, послушайте The Engagement

image
Гитарист Оскар Родригес (Oscar Rodriguez) записывает трек для аудио библиотеки YouTube
Читать дальше →
Всего голосов 40: ↑40 и ↓0+40
Комментарии23

Исследователь компьютерных уязвимостей обнаружил баг, позволяющий удалять чужие фото из Фейсбука

Время на прочтение2 мин
Количество просмотров40K
image

Хороший пример того, как должна работать программа поощрений на Фейсбуке (в отличие от той неразберихи, которая была несколько недель назад): исследователь безопасности обнаружил ошибку, которая позволяет кому угодно удалить практически любую фотографию из Фейсбука — будь то ваши личные фото, мои или Цукерберга. За это открытие он получил весьма щедрое денежное вознаграждение.

По условиям программы поощрений, те кто находит ошибки и публикует их согласно правилам, получают вознаграждение. Минимальная выплата за любую ошибку составляет $500. Однако Фейсбук может заплатить и больше, в зависимости критичности найденной уязвимости. Большинство выплат, как правило, составляют $1500. В своём блоге, исследователь безопасности Арул Кумар пишет, что получил $12 500 премиальных — приблизительно 25 базовых выплат.
Почему так много?
Всего голосов 64: ↑59 и ↓5+54
Комментарии30

Ким Дотком организовывает политическую партию в Новой Зеландии

Время на прочтение2 мин
Количество просмотров11K
image

Основатель Меги подтвердил в Твиттере намерение создать собственную политическую партию к парламентским выборам в 2014 году.
Читать дальше →
Всего голосов 36: ↑30 и ↓6+24
Комментарии9

Bootstrap CSS Sprite: синтаксический сахар для <img />

Время на прочтение3 мин
Количество просмотров21K

UPD


Сегодня в этом уже нет никакого смысла. Просто настройте себе HTTP/2



Что это?


В один прекрасный день я отчётливо понял, что устал писать длинные ссылки на файлы изображений, каждый раз задавать им ширину и высоту, заботиться о том, чтобы это всё не прыгало при загрузке и не мигало при наведении мышкой. И я решил автоматизировать всю эту рутину. Так появился Bootstrap CSS Sprite — библиотека, которая позволяет работать со всеми вашими изображениями, как с одним спрайтом. При этом доступ к тайлам спрайта осуществляется в стиле Twitter Bootstrap.

Приведу пример: у нас есть файл изображения cat.png. Чтобы показать это изображение надо использовать тег <i>, указав для него CSS-класс img-cat, как мы делаем это в Twitter Bootstrap:

<i class="img-cat"></i>


Читать дальше →
Всего голосов 22: ↑14 и ↓8+6
Комментарии62

Как я учился защищать изображения

Время на прочтение5 мин
Количество просмотров78K

Изображение защиты

В этой статье хочу изложить нелёгкий путь, который я прошёл «защищая» изображения в вебе. Перед тем, как мы начнём это увлекательное путешествие, хочу обозначить два подхода в деле защиты изображений:
  1. ограничение/запрет постинга прямых ссылок на оригиналы изображений
  2. вы параноик и пытаетесь ограничить распростронение копий изображений

UPDATE
Универсальной защиты конечно же не существует. Статья о том, как не подставлять напрямую данные из GET в SQL-запросы. Только в контексте защиты изображений.
Итак...
Всего голосов 108: ↑69 и ↓39+30
Комментарии121

Инструменты мониторинга в социальных сетях

Время на прочтение7 мин
Количество просмотров56K
Сегодня можно без труда на пальцах одной руки насчитать две и даже семь сотен социальных сетей. Я думаю мне не нужно убеждать дорогого читателя в том, что это бездонный кладезь информации. Но вот как можно эту самую информацию заполучить, да ещё и в удобоваримом виде?

Для того, чтобы у нас с вами было не как на картинке, предлагаю вашему вниманию обзор наиболее интересных сервисов для монитроинга и взаимодействия с социальными сетями. Если коротко, то ситуация выглядит следующим образом:
Wildfire HootSuite TweetDeck AppData Klout
С чем интегрируется
Google+, Facebook, Linkedin, Pinterest, Twitter, Youtube
Google+, Facebook, Foursquare, Linkedin, Mixi, Myspace, Twitter, Wordpress, App Directory
Facebook, Twitter
Facebook
Facebook, Twitter
Цена
Pro / Enterprise — договорная
Free, Pro — $10/месяц, Enterprise — договорная
Free
Free, Pro — $595/месяц или $5995/год, Enterprise — договорная
Free
Аналитика
          
          
          
          
          
Сравнение брендов
          
          
          
          
          
Постинг по расписанию
          
          
          
          
          
Стриминг сообщений
          
          
          
          
          
Для любопытного же читателя я подготовил более развёрнутое описание всех этих сервисов под катом. Так же там можно найти идеи для сервиса, который мог бы принести радость всем людям на Земле.
Читать большой субъективный обзор с картинками
Всего голосов 24: ↑22 и ↓2+20
Комментарии23

Репликация MongoDB на Amazon EC2

Время на прочтение5 мин
Количество просмотров14K

system.indexes


  • Предисловие
  • Настройка Amazon EC2
  • Установка MongoDB
  • Настройка репликации
  • Что почитать

local.abstract


В этой статье я расскажу о том, как максимально безболезненно организовать репликацию MongoDB на базе Amazon EC2. Несомненно, существует отличная документация как по работе с Amazon EC2, так и по настройке MongoDB в целом и репликации в частности. Но, как известно, дьявол живёт в мелочах. И в этой статье я выделю те “мелочи”, которые более всего донимали меня.
Читать дальше →
Всего голосов 23: ↑22 и ↓1+21
Комментарии14

Информация

В рейтинге
Не участвует
Откуда
Днепр, Днепропетровская обл., Украина
Зарегистрирован
Активность