Pull to refresh
-2
0
Send message

Контекстно-зависимая форма в Yii

Reading time6 min
Views27K
При работе с фреймворками всегда приходится создавать основной функционал самим, желательно, используя при этом возможности фреймворка (зачем тогда он нам нужен). Как понятно по заголовку речь пойдет про контекстно-зависимые формы в Yii. В статье описана реализация подобной формы, используя модальное окошко. Надеюсь, что кому то будет полезен именно такой вариант.

Забегая вперёд скажу, что в результате должно получиться вот такое поле, выпадающее меню и кнопка справа для выбора нужных данных.


Читать дальше →
Total votes 14: ↑9 and ↓5+4
Comments11

Yii: устройство ActiveRecord и Шардинг

Reading time4 min
Views7.6K
В последнее время на хабре довольно много внимания уделяется фреймворку Yii. Он стал и нашим выбором для крупного проекта. А проблема большинства крупных проектов, как известно, в масштабировании. Не менее известно, что можно легко поставить сотни параллельных nginx и отбалансировать нагрузку на процессор, память, диск и даже канал. А вот с СУБД все гораздо сложнее.

Для того, чтобы заранее побороть эту проблему правильным способом было решено реализовать в Yii поддержку шардинга. Речь под катом пойдет вкратце о том что такое шардинг и подробно о:
  1. Устройстве ActiveRecord в Yii
  2. Реализации на этом устройстве шардинга
  3. Проблемах, которые все еще есть в AR
UPD: перенес в PHP, т.к. наличие расширения для шардинга может склонить чашу весов при выборе фреймворка.
Интересно?
Total votes 31: ↑28 and ↓3+25
Comments15

Крупная уязвимость в WordPress и Drupal может положить сайт

Reading time2 min
Views36K
image

Нир Гольдшлегер, исследователь безопасности из Salesforce.com, обнаружил XML-уязвимость в WordPress и Drupal, пишет Mashable. Уязвимость использует известную атаку XML Quadratic Blowup Attack — и при её выполнении может практически мгновенно положить весь сайт или сервер.

XML-уязвимость, обнаруженная Гольдшлегером, может привести к загрузке процессора и оперативной памяти на 100 %, что сделает сервер недоступным и создаст DoS-атаку на базу данных MySQL. Уязвимость присутствует в WordPress от 3.5 до 3.9 (текущая версия) и в Drupal от 6.x до 7.x (последняя версия). WordPress и Drupal уже выпустили патчи.
Читать дальше →
Total votes 40: ↑35 and ↓5+30
Comments17

Пишем Instagram виджет для сайта. Инструкция для любопытных. Готовое решение для всех остальных

Reading time6 min
Views202K
image Недавно мне потребовалось интегрировать в сайт Instagram виджет. Чтобы пользователи видели последние опубликованные фотографии. Может даже подписывались.

Тут же выяснилось, что официального виджета у Instagram нет. Более того, с Instagram можно взаимодействовать исключительно через запросы к API. Никаких тебе JavaScript библиотек, генераторов кода и дизайна. Всё нужно делать руками.

Сразу нашлось множество сторонних сервисов разной степени платности и бесплатности. Объединяло их одно – клиент получает лишь код вызова виджета, всё остальное тянется с сервиса. Меня лично это не устраивало. Почему нет бесплатного standalone решения с открытым исходным кодом? Может быть я плохо искал? В общем, я решил внести свои пять копеек.

Инструкция по созданию виджета и готовое решение под катом.

Небольшое примечание. С момента написания этой статьи прошло уже семь месяцев. За это время виджет был установлен на около 80 ресурсах, создан репозиторий на GitHub, добрый человек подарил мне инвайт, виджет сменил механизм кэширования, обзавёлся собственным сайтом, добрые люди на его основе сделали плагин для CMS Битрикс, а я так и не нашёл аналогов в сети.
Читать дальше →
Total votes 50: ↑46 and ↓4+42
Comments16

Разделяй и властвуй: как мы реализовывали разделение сессий на портале Mail.Ru

Reading time7 min
Views41K


Mail.Ru — огромный портал, существующий более 15-ти лет. За это время мы прошли путь от небольшого веб-проекта до самого посещаемого сайта рунета. В состав портала входит огромное количество сервисов, у каждого из которых своя судьба, и над каждым из которых работает отдельная команда. Разработчикам пришлось как следует потрудиться, чтобы на всех проектах — и новых, и старых, и тех, которые присоединились к порталу по мере его развития, — использовалась единая система авторизации. А через много лет перед нами встала фактически обратная задача: разделить пользовательские сессии. О том, зачем мы это делали, какие трудности нас ожидали и как мы их обошли, я расскажу в этом посте.
Читать дальше →
Total votes 142: ↑125 and ↓17+108
Comments31

Как убедить посетителей вашего сайта купить продукт, используя конкурентов? Часть 2

Reading time3 min
Views21K

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

Способ№2. Опрос клиентов ваших конкурентов в «диких условиях»

Наверняка вы уже слышали о «шпионаже» за конкурентами с помощью социальных медиа, но еще не пробовали это?
Читать дальше →
Total votes 25: ↑20 and ↓5+15
Comments1

SASS против LESS

Reading time6 min
Views184K
«Какой препроцессорный язык стоит использовать для CSS?» является очень актуальным вопросом в последнее время. Несколько раз меня спрашивали об этом лично, и казалось бы, каждые пару дней этот вопрос поднимался в сети. Очень приятно что беседа перешла из темы о плюсах и минусах препроцессинга к обсуждению какой же язык является лучшим. За дело!

Если быть кратким: SASS.

Немного развернутый ответ: SASS лучше по всем пунктам, но если вы уже счастливы с LESS — это круто, по крайней мере вы уже упростили себе жизнь используя препроцессинг.

Развернутый ответ: ниже
Читать дальше →
Total votes 62: ↑50 and ↓12+38
Comments72

12 правил хорошего тона в деловом общении на английском языке

Reading time4 min
Views112K
Даже прекрасно владея английским, те, у кого этот язык — неродной, могут допускать досадные этические оплошности при деловом общении c клиентами, партнерами, инвесторами, коллегами. Манеры учтивого общения в русском и английском языках различаются; о некоторых нюансах практического взаимодействия с англоговорящими клиентами — в переводе статьи предпринимателя и международного эксперта по продажам Гранта Кардона. Кое-какие советы, впрочем, следует хорошенько обдумать, прежде чем взять на вооружение: давайте обсудим спорные тезисы в комментариях.

Переведено в Alconost.



Читать дальше →
Total votes 126: ↑68 and ↓58+10
Comments79

10 заповедей Больших Данных

Reading time2 min
Views4.3K
Заповеди навеяны содержанием книги «Большие данные: Революция, которая изменит то, как мы живем, работаем и мыслим»

Тема Больших Данных интересовала меня с самого начала её популяризации в России. Устав от агрессивного маркетинга производителей в этом направлении, пытающихся продать под видом Больших Данных всё что угодно, только не саму суть Больших Данных, и ангажированных статей ИТ-журналистов, воспевающих об эффективности и полезности Больших Данных в решении бизнес-задач, я решил прочесть книгу фаната технологического подхода Больших данных, профессора Оксфордского университета и со-автора, экономиста, в надежде найти там ответы на вопросы, раскрывающие суть Больших Данных. По мере прочтения в моей голове постепенно происходило осознание идей, заложенных в этой книге. На каком-то этапе я решил, что суть этой книги можно выразить в религиозном ключе, в виде коротких заповедей, гласящих об основных принципах и подходах, которые должны будут применяться в будущем мире Больших Данных.
Читать дальше →
Total votes 31: ↑13 and ↓18-5
Comments11

Анализ одного рефакторинга

Reading time4 min
Views12K
В данном крохотном посте речь пойдет об одной из глав, книги «Принципы, паттерны и методики гибкой разработки на языке C#», с названием «Рефакторинг». Глава полностью посвящена рефакторингу. На примере одного большого метода, автор последовательно модифицирует код, попутно объясняя почему он делает те или иные модификации. После каждого этапа, код прогоняется через тесты.

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

Статья не преследует цели дискредитации автора, просто показалось интересным выложить свои наблюдения и услышать мнение сообщества по этому поводу.
Читать дальше →
Total votes 35: ↑28 and ↓7+21
Comments10

Почему вы никогда не должны использовать MongoDB

Reading time16 min
Views286K
Дисклеймер от автора (автор — девушка): Я не разрабатываю движки баз данных. Я создаю веб-приложения. Я участвую в 4-6 разных проектах каждый год, то есть создаю много веб-приложений. Я вижу много приложений с различными требованиями и различными потребностями хранения данных. Я разворачивала большинство хранилищ, о которых вы слышали, и несколько, о которых даже не подозреваете.

Несколько раз я делала неправильный выбор СУБД. Эта история об одном таком выборе — почему мы сделали такой выбор, как бы узнали что выбор был неверен и как мы с этим боролись.Это все произошло на проекте с открытым исходным кодом, называемым Diaspora.
Читать дальше →
Total votes 219: ↑181 and ↓38+143
Comments245

Полное описание идеи игры. Часть 2: Форма

Reading time8 min
Views23K
Доброй пятницы, Хабр!

Часть 1: Концепция

Продолжаем разговор о формализации идеи в области разработки игр. По результатам первой части было получено достаточно вопросов, рекомендаций и замечаний. С учётом этой новой информации составлены следующий раздел.
Отказ от ответственности
По результатам статьи может оказаться, что твоя идея — «не очень» или вовсе не идея. Я всего лишь предлагаю форму упаковки, и если твоя супер_игра_будущего_убийца_%game_name% не ложится в эту форму, то у тебя два варианта:
Найти тот формат описания, который тебя устроит. Главное — формализуй свои мысли в понятную форму.
Смирись, что в текущем состоянии твоя задумка слаба и не годится ни на что, кроме курсовой работы или личной практики, и начинай её додумывать.

За душевные переживания, разочарования и бессонные ночи ответственности не несу.

Читать дальше →
Total votes 16: ↑11 and ↓5+6
Comments0

7 причин провала вашего интернет-проекта

Reading time8 min
Views38K


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

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

Нужно звать веб-разработчиков. И если у вас был опыт общения с этими милыми, добрыми людьми, и вам периодически хотелось подкрутить у них чего-нибудь в голове (отверткой), чтоб лучше работали — тому есть причины!
Читать дальше →
Total votes 101: ↑71 and ↓30+41
Comments24

Модульное тестирование и непрерывная интеграция при помощи Jenkins для C++ проектов

Reading time12 min
Views59K
Думаю, что все знают, что такое модульные тесты, все знают или, по крайней мере, слышали, что такое непрерывная интеграция, и многие программируют на C++. Но я столкнулся с тем, что в интернете не так много информации о том, как же это все объединить и заставить работать вместе. Эта статья является попыткой дать новичками пошаговую инструкцию, которая позволит сделать первый шаг в создании модульных тестов для C++ проектов и организовать покоммитный прогон модульных тестов при помощи CI сервера.
Update: План:
  1. Напишем HelloWorld
  2. Настроим сборку HelloWorld на Jenkins
  3. Напишем модульный тест для HelloWorld
  4. Настроим прогон модульных тестов на Jenkins

Внимание: много букв и скриншотов, половина из которых избыточны. Особенно для тех кто уже в теме.

Читать дальше →
Total votes 32: ↑31 and ↓1+30
Comments12

MAYHEM — многоцелевой бот для *NIX-серверов. Расследование Яндекс.Безопасности

Reading time5 min
Views43K
UPD. Спустя несколько часов после публикации на Хабре англоязычная версия этого исследования команды Безопасного поиска Яндекса вышла на Virus Bulletin. Чуть больше деталей и ссылки на библиографию.

Ботнеты из зараженных серверов под управлением ОС на базе *nix становятся все более популярными у злоумышленников. Широкий канал, отличный uptime и мощное железо делают сервера привлекательной целью для заражения. Принято считать, что для полноценного заражения *nix-системы нужно обладать правами root. Однако злоумышленники придумывают все новые и новые способы извлечения из зараженного сервера максимума пользы, довольствуясь при этом маленькими привилегиями. В этом посте мы расскажем о довольно нестандартном ботнете под названием MAYHEM, состоящем из зараженных серверов.



Изначально MAYHEM представляет собой php-скрипт, который после запуска определяет архитектуру системы (x86 или x64) и наличие прав на запись в текущую директорию. Эти привилегии в подавляющем большинстве случаев есть у пользователя, под которым запущен веб-сервер, и в данном случае их достаточно для работы бота.
Читать дальше →
Total votes 119: ↑112 and ↓7+105
Comments45

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

Reading time5 min
Views9.6K

Содержание:


1. Поиск и анализ цветового пространства оптимального для построения выделяющихся объектов на заданном классе изображений
2. Определение доминирующих признаков классификации и разработка математической модели изображений мимики"
3. Синтез оптимального алгоритма распознавания мимики
4. Реализация и апробация алгоритма распознавания мимики
5. Создание тестовой базы данных изображений губ пользователей в различных состояниях для увеличения точности работы системы
6. Поиск оптимальной аудио-системы распознавания речи на базе открытого исходного кода
7. Поиск оптимальной системы аудио распознавания речи с закрытым исходным кодом, но имеющими открытые API, для возможности интеграции
8. Эксперимент интеграции видео расширения в систему аудио-распознавания речи с протоколом испытаний

Цели:



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

Задачи:



Провести фотографирования вариаций губ пользователей в различных положениях для увеличения точности системы ручным способом. Реализовать библиотеку базы данных системы по различным типам губ в движении на основе свободной системы управления базами данных (СУБД).

Введение



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

1. Фотографирование вариаций губ с разными типами лиц.



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

Для осуществления данной задачи тестирования было проанализировано движение губ 18 пользователей. Исходные данные были сфотографированы вручную. Рисунок 1 демонстрирует лица пользователей с местом локализации области губ во время произношения речи.

image
image
Читать дальше →
Total votes 26: ↑17 and ↓9+8
Comments8

Грамотное определение языка пользователя

Reading time3 min
Views84K
Сейчас работаю над сайтом, который претендует на глобальность, естественно и с мультыязычностью у него должно быть все в порядке.

О том как отображать информацию на разных языках тут речи идти не будет. Разговор пойдет о том как определить язык пользователя, и выбрать из доступных на сайте языковых версий наиболее подходящую.
Читать дальше →
Total votes 16: ↑10 and ↓6+4
Comments20

Автоматическое разбиение стилей с использованием SASS

Reading time4 min
Views10K

Пост для людей использующих SASS и решающих задачи по оптимизации больших файлов стилей с ограниченными человеческими ресурсами.

Дано:
  1. Большой сайт с количеством шаблонов 50+.
  2. Большой файл стилей.
  3. Сайт постоянно развивается, правятся баги, пишется новый функционал.
  4. Версия develop и production в одной ветке, репозитарий SVN.
  5. 1-2 человека на поддержание всего этого хозяйства.
  6. Огромное желание не сойти с ума и не наложить на себя руки!


Если вам интересен конец этой эпопеи милости прошу под кат
Читать дальше →
Total votes 9: ↑7 and ↓2+5
Comments12

Стартап шаг за шагом: первая бизнес-модель

Reading time5 min
Views73K


Мы продолжаем цикл статей о том, как построить стартап, — рассказываем о каждом шаге на собственном примере. Мы уже описали, как придумать идею и как собрать команду, теперь поговорим о бизнес-модели.
Читать дальше →
Total votes 21: ↑17 and ↓4+13
Comments6

Information

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