Представьте, что мы хотим написать на обычном SQL запрос не в базу данных, а к логам. В работе может возникнуть задача анализа логов, для которой потребуется делать запросы на SQL к неструктурированному набору данных, который даже не находится в СУБД. В этой заметке я расскажу о примере использования Spark SQL для выявления правил (логики) выбора необходимых документов из большого хранилища.
Рубрика «Разработка веб-сайтов» - 329
Анализ логов с помощью SQL?
2016-07-10 в 12:35, admin, рубрики: data mining, php, spark, sql, Разработка веб-сайтовПохоже, Github опять не доступен в России
2016-07-08 в 18:12, admin, рубрики: github, github pages, информационная безопасность, ит-инфраструктура, Разработка веб-сайтов, метки: github pages
7 июля 2016 года многие пользователи Github из России начали жаловаться на перебои с доступом к сайту.
Вот список некоторых проблемных адресов:
Веб авторизация доменного пользователя через nginx и HTTP Negotiate
2016-07-07 в 11:31, admin, рубрики: active directory, ActiveDirectory, AD, auth, autorization, domain, domain controller, gssapi, HTTP Negotiate, kerberos, negotiate, negotiate_auth, nginx, nginx module, pdc, primary domain controller, samba, samba4, security, spnego, SSL, web, windows, авторизация, авторизация без паролей, безопасность, безопасность веб-приложений, домены, ит-инфраструктура, Разработка веб-сайтов, системное администрированиеНамедни встала задача — обеспечить прозрачную авторизацию пользователей домена в CRM, собственно Microsoft давным давно разработал для этих целей метод аутентификации HTTP Negotiate, это все замечательно работает на IIS и Windows Server, а у нас за плечами Samba4 в роли Primary Domain Controller и проксирующий веб сервер nginx. Как быть?
В сети куча информации по организации подобной схемы для Apache2 & AD на базе Windows, а вот пользователям nginx приходится собирать все по крупицам, информации кот наплакал. В базовой поставке Nginx нет подобного функционала. Благо люди не пали духом и история началась в мейл рассылках nginx в 2009 году, где один американский товарищ из Огайо нанял разработчика на RentACoder для запиливания модуля с подобным функционалом. Ребята форкнули подобный модуль для апача, прикрутили его к nginx и результаты работы выложили на github, где модуль время от времени допиливался разными людьми и в итоге принял роботоспособный вид. Последнюю версию можно получить на гитхабе.
В данном руководстве я расскажу как заставить работать nginx с SPNEGO модулем и samba4.
Читать полностью »
Redux-Redents — (еще) один модуль для работы с серверными данными из React-Redux приложений.
2016-07-07 в 10:38, admin, рубрики: front-end development, front-end разработка, javascript, node.js, npm, React, ReactJS, redux, Разработка веб-сайтовReact и Redux, в последнее время одни из самых популярных buzz-words в мире фронтенда. Поэтому когда мне потребовалось сделать веб-приложение, которое бы отображало данные, полученные с сервера, а также позволяло бы ими манипулировать (создавать, удалять и изменять), я решил построить его на основе связки React и Redux. Множество getting-started руководств покрывают только функционал создания компонентов, action creators и reducers. Но как только дело касается обмена с сервером, начинаются сложности — растет количество необходимых action creator, редьюсеров. Причем они очень похожи друг на друга, с миниальными отличиями. В большинстве случаев — только в типе (имени) активности. После того, как я создал третий одинаковый набор креаторов и редьюсеров, то появилось желание что-то изменить. Так родилась идея реализации redux-redents.
Рентабельный код 3: Немного особой контейнерной магии
2016-07-07 в 9:00, admin, рубрики: .net, conventions > configuration, ioc/di, Программирование, Проектирование и рефакторинг, Разработка веб-сайтовВ прошлой статье я привел пример фабрики для получения реализаций IQuery, но не объяснил механизм ее работы
_queryFactory.GetQuery<Product>()
.Where(Product.ActiveRule) // это статический экспрешн, как в примере с Account. Используется ExpressionSpecification
.OrderBy(x => x.Id)
.Paged(0, 10) // получаем 10 продуктов для первой страницы
// Мы решили подключить полнотекстовый поиск и добавили ElasticSearch, не вопрос:
_queryFactory.GetQuery<Product, FullTextSpecification>()
.Where(new FullTextSpecification(«зонтик»))
.All()
// Или EF тормозит и мы решили переделать на хранимую процедуру и Dapper
_queryFactory.GetQuery<Product, DictionarySpecification, DapperQuery>()
.Where(new DictionarySpecification (someDirctionary))
.All()
В данном материале я хочу поделиться техникой регистрации необходимых компонентов сборки по соглашениям. Сейчас у меня под рукой кодовая база с другой реализацией CQRS, поэтому примеры будут отличаться. Это не принципиально: основная идея остается неизменной.
Допустим у вас есть такой интерфейс, где ListParams – спецификация, приходящая с фронтенда
public interface IListOperation<TDto>
{
ListResult<TDto> List(ListParams listParam);
}
Задача
Избавить прикладных разработчиков от необходимости написания контроллеров, проекций и сервисов.
Читать полностью »
Как начать разработку крупного, нетипичного проекта. Практическое пособие
2016-07-07 в 7:57, admin, рубрики: AngularJS, php, website development, yii, yii2, ооп, Разработка веб-сайтов
Выбор платформы для бекенда
Чтобы создать качественное и производительное Web-приложение, необходимо уделить должное внимание выбору платформы для разработки. Этим нужно заняться сразу же после того, как вы ознакомились, какие задачи должно выполнять это приложение.
В данном случае, немаловажным фактором в техническом задании была предположительно высокая нагрузка на сервис. На рынке есть много хороших инструментов, с помощью которых можно решить поставленную задачу. Некоторые мы используем в разработке, но в этот раз выбор все-таки пал на Yii2.Читать полностью »
Фильтр Блума для веб-разработчиков
2016-07-06 в 7:56, admin, рубрики: bloom filter, C, libevent, libevent2, Алгоритмы, высокая производительность, Разработка веб-сайтов, фильтр блума, хранилища данныхНа хабре уже немало рассказано про фильтр Блума. Напомню, что это структура данных, которая позволяет проверить принадлежность элемента ко множеству, не храня при этом сам элемент. Существует вероятность ложно-положительного ответа, но отрицательный ответ всегда достоверен. В фильтре с точностью 1% требуется всего лишь несколько бит на элемент.
Эта структура часто применяется для ограничения числа запросов к хранилищу данных, отсекая обращения за элементами, которых там заведомо нет. Кроме того, её можно применять для примерного подсчёта числа уникальных событий, пользователей, просмотров и т.д. Больше примеров интересных применений.
Однако есть трудности, которые могут сдерживать веб-разработчиков от применения фильтра Блума.
Читать полностью »
Сигнальные и транспортные протоколы WebRTC: срываем покровы
2016-07-05 в 8:13, admin, рубрики: data channel, http/2, instant messaging, rest, signaling, sip, socket.io, telephony, WebRTC, WebSocket, xhr, xmpp, Блог компании Voximplant, браузеры, Программирование, Разработка веб-сайтовНаша платформа VoxImplant состоит из нескольких частей: облако, API, SDK для разных платформ. SDK для браузера подключается к облаку по WebSocket и позволяет звонить (и принимать звонки) как другим пользователям VoxImplant, так и на обычные телефоны. Раньше это работало с помощью flash, но в современных браузерах используется специально созданная для работы с голосом и видео технология WebRTC. Штука хорошая, но довольно сложная в использовании: возможность peer-to-peer коммуникаций, одна из ключевых «фишек» технологии, управляется полностью вручную. Чтобы два браузера могли организовать голосовой или видеочат друг с другом, разработчику нужно собрать информация об IP-адресах компьютеров, как-то передать эту информацию между браузерами, запустить NAT Traversal и скормить это все WebRTC. А если обойти NAT не получилось, то еще и предоставить Relay-сервер для передачи данных.
Недавно мы нашли на просторах интернета интересную статью, которая рассказывает технические подробности «передачи информации» между браузерами. Адаптированный для Хабра перевод – под катом.Читать полностью »
Почему участие в Open Source проектах это интересно и полезно
2016-07-04 в 11:01, admin, рубрики: github, open source, Программирование, разработка, Разработка веб-сайтов
В этой статье не будет психологических исследований на тему open-source и разработки.
Не будет анализа open-source проектов с помощью R или Python.
И не расскажу о том, как правильно контрибьютить.
Возможно я даже буду говорить какие-то банальные вещи.
Но я всего лишь хочу поделиться тем, как участие в open-source проектах сделало мою жизнь разработчика ярче и продуктивнее.
Рефакторинг при помощи композиции Клейсли
2016-07-04 в 10:48, admin, рубрики: scala, scalaz, XML, Блог компании Wix.com, Разработка веб-сайтов, рефакторингВ течение довольно длительного времени мы поддерживали приложение, которое обрабатывает данные в форматах XML и JSON. Обычно поддержка заключается в исправлении дефектов и незначительном расширении функциональности, но иногда она также требует рефакторинга старого кода.
Рассмотрим, например, функцию getByPath
, которая извлекает элемент из XML дерева по его полному пути.
import scala.xml.{Node => XmlNode}
def getByPath(path: List[String], root: XmlNode): Option[XmlNode] =
path match {
case name::names =>
for {
node1 <- root.child.find(_.label == name)
node2 <- getByPath(names, node1)
} yield node2
case _ => Some(root)
}
Эта функция отлично работала, но требования поменялись и теперь нам нужно:
- Извлекать данные из JSON и, возможно, других древоподобных структур, а не только из XML;
- Возвращать сообщение об ошибке, если данные не найдены.
В этой статье мы расскажем, как осуществить рефакторинг функции getByPath
, чтобы она соответствовала новым требованиям.
Читать полностью »