Как стать автором
Обновить
12
0
Артем Родыгин @arodygin

Веб разработчик

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

Важные аспекты работы браузера для разработчиков. Часть 2

Время на прочтение8 мин
Количество просмотров28K
image
Автор: Антон Реймер
В первой части статьи, основанной моем вебинаре, мы рассмотрели общие принципы работы браузера. Во второй — я сконцентрировал внимание на важных событиях: repaints и reflows — и на принципах работы event loop.

Repaints and reflows

При загрузке страницы, если она не пустая, всегда выполняется, как минимум, по одному reflow и repaint. Далее эти события возникают в следующих случаях:

1. Часть дерева отображения нуждается в перерасчете, т. е. у какого-то узла изменились ширина, высота или координаты. Вызывается событие reflow.

2. В результате изменений часть отображаемого контента должна обновиться. Речь идет, в первую очередь, о свойствах стилей: цвет фона, радиус и т. д. Вызывается событие repaint.

Если вызывается reflow, после него обязательно вызовется и repaint. Но обратное неверно: repaint может вызываться независимо от reflow.

Какие действия вызывают reflow и/или repaint
Читать дальше →
Всего голосов 20: ↑15 и ↓5+10
Комментарии12

Сигналы и слоты в PHP. Такие же как в Qt. Ну почти

Время на прочтение5 мин
Количество просмотров12K
Сигналы и слоты — подход, используемый в некоторых языках программирования и библиотеках (например, Boost и Qt) который позволяет реализовать шаблон «наблюдатель», минимизируя написание повторяющегося кода. Концепция заключается в том, что компонент (часто виджет) может посылать сигналы, содержащие информацию о событии (например: был выделен текст «слово», была открыта вторая вкладка). В свою очередь другие компоненты могут принимать эти сигналы посредством специальных функций — слотов. Система сигналов и слотов хорошо подходит для описания Графического интерфейса пользователя. Также механизм сигналов/слотов может быть применён для асинхронного ввода-вывода (включая сокеты, pipe, устройства с последовательным интерфейсом, др.) или уведомления о событиях. В библиотеке Qt благодаря Метаобъектному компилятору (англ.)русск. отпадает необходимость писать код регистрации/дерегистрации/вызова, так как эти шаблонные участки кода генерируются автоматически.
Говорит нам Википедия.
Зачем это в php?
Всего голосов 20: ↑20 и ↓0+20
Комментарии35

Немного о повышении производительности БД: Практические советы

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


/ фото Ozzy Delaney CC

Мы в 1cloud много рассказываем о собственном опыте работы над провайдером виртуальной инфраструктуры и тонкостях организации внутренних процессов. Сегодня мы решили немного поговорить об оптимизации БД.
Читать дальше →
Всего голосов 27: ↑23 и ↓4+19
Комментарии34

Лучшие IT-курсы западных вузов по версии хабрасообщества 2016 года

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

Данный пост-опрос − попытка определить лучшие ИТ-курсы западных вузов, которые находятся в открытом доступе. Конечно, по версии нашего хабрасообщества. Ну и, разумеется, с годами предпочтения меняются, поэтому версия 2016 года.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии15

Работа с геолокациями в режиме highload

Время на прочтение6 мин
Количество просмотров59K
При разработке ПО часто возникают интересные задачи. Одна из таких: работа с гео-координатами пользователей. Если вашим сервисом пользуются миллионы пользователей и запросы к РСУБД происходят часто, то выбор алгоритма играет важную роль. О том как оптимально обрабатывать большое количество запросов и искать ближайшие гео-позиции рассказано под катом.

image
Читать дальше →
Всего голосов 37: ↑35 и ↓2+33
Комментарии12

Путешествие запроса Select через внутренности Постгреса

Время на прочтение9 мин
Количество просмотров29K
До конференции PG Day'16 Russia остались считанные дни, расписание можно посмотреть на нашем сайте. Мы трудимся в поте лица, но тем не менее успеваем готовить для вас переводы самых интересных материалов о PostgreSQL. Сегодня представляем вашему вниманию перевод статьи Pat Shaughnessy о поведении запроса Select.

Готовясь летом к этой презентации, я решил изучить некоторые части исходного кода PostgreSQL на C. Я запустил очень простой запрос select и наблюдал, что Постгрес с ним делает, с помощью LLDB, отладчика C. Как Постгрес понял мой запрос? Как он нашел данные, которые я искал?



Этот пост — неформальный журнал моего путешествия через внутренности PostgreSQL. Я опишу пройденный мной путь и то, что я видел в процессе. Я использую серию простых концептуальных диаграмм, чтобы объяснить, как Постгрес выполнил мой запрос. В случае, если вы понимаете C, я также оставлю вам несколько ориентиров и указателей, которые вы можете поискать, если вдруг решите покопаться во внутренностях Постгреса.

Исходный код PostgreSQL восхитил меня. Он оказался чистым, хорошо задокументированным и простым для понимания. Узнайте сами, как Постгрес работает изнутри, присоединившись ко мне в путешествии в глубины инструмента, которым вы пользуетесь каждый день.
Читать дальше →
Всего голосов 34: ↑33 и ↓1+32
Комментарии24

9 секретов онлайн-платежей. Часть 8: возвраты — и как их избежать

Время на прочтение6 мин
Количество просмотров21K
imageМожет ли для интернет-магазина быть что-то обиднее, чем упущенная прибыль? Может! Еще обиднее ситуация, когда деньги уже поступили на счет, а клиент или банк внезапно потребовал вернуть средства обратно на карту плательщика. Особенно, если услуга уже оказана или отгрузка товара уже состоялась. Что делать в этом случае? Об этом — в новом, предпоследнем материале цикла «9 секретов онлайн-платежей», в котором сконцентрирован восьмилетний опыт работы команды PayOnline.

Представим ситуацию: покупатель совершает покупку с помощью карты, но товар ему по каким-то причинам не подходит. Клиент возвращает товар и инициирует так называемый рефанд (англ. refund) — добровольный возврат платежа, произведенного ранее в счет покупки по банковской карте. Чаще всего он осуществляется по просьбе покупателя. Еще один случай — мошенничество с картой, и здесь могут быть разные ситуации. Во-первых — дружественный фрод (от английского fraud — мошенничество) — когда злоумышленник делает заказ на крупную сумму, ему отгружают товар, а в интернет-магазин приходит запрос на возврат денег «настоящего» владельца карты. Согласно легенде подельника, его карту украли, и с нее совершили покупку. «Настоящий» владелец карты требует вернуть ему деньги, и если банк встает на его сторону, то интернет-магазин остается и без товара, и без денег.
Читать дальше →
Всего голосов 20: ↑15 и ↓5+10
Комментарии19

Микросервисы как архитектура: выжать по максимуму

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

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


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

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

9 секретов онлайн-платежей. Часть 7: система Fraud-мониторинга

Время на прочтение8 мин
Количество просмотров28K
imageПочему отклоняются платежи? Как интернет-магазины защищаются от мошенников? Как определить, настоящей картой вам платят или ворованной? Что обеспечивает защиту e-commerce от фрода? Ответы на эти вопросы вы найдете в седьмой части серии авторских статей «9 секретов онлайн-платежей» от PayOnline.

От карточного фрода может пострадать и интернет-магазин, и банк, и непосредственно сам держатель карты. В случае утечки данных карт, злоумышленники стараются снять максимальную сумму денег и не оставить следов, чтобы интернет-магазины разбирались с банками, кто же всё-таки должен возместить утраченную сумму. За владельцами карт уследить невозможно — интернет-магазин не может знать, кто находится по ту сторону экрана: злоумышленник или добропорядочный клиент. Риск есть всегда, но чтобы приблизить его значение к нулю существует множество инструментов проверки платежей и верификации плательщиков. Об одной из них, системе мониторинга мошеннических операций, или «системе антифрод», пойдет речь далее.
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии2

Как мы написали helpdesk (часть 3)

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


В продолжении части 2 и части 1, мы решили написать ещё одну статью, в которой хотим детально рассказать, что произошло за 2 года работы над проектом, чего мы добились, что нового реализовали, почему вообще системы заявок настолько перспективное направление. И конечно номер статьи (3) соответствует номеру версии продукта, о которой ниже пойдёт речь.
Читать дальше →
Всего голосов 14: ↑12 и ↓2+10
Комментарии20

Как мы написали helpdesk (часть 2)

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

В продолжении части 1, мы решили написать статью, как вышли на «новый уровень» по созданию веб-продукта. Хочу сразу уточнить, что это не совсем хелпдеск, который основан на создании заявок клиентами (хоть такая возможность и присутствует), а больше рассчитан на внутреннюю работу организации или IT-департамента. Так же хочу напомнить, что система создавалась конкретно под наши требования, поэтому она не лучше других, но и не хуже. Она просто «другая», у которой есть свои функции под конкретные задачи и возможно займёт достойное место в общем мире продуктов, делающих IT-мир лучше.
Читать дальше →
Всего голосов 25: ↑20 и ↓5+15
Комментарии22

Как мы написали helpdesk

Время на прочтение6 мин
Количество просмотров123K
Есть продукты, которые можно взять и использовать, но с небольшой модификацией «под себя». Так вот система заявок или helpdesk как раз к таким вещам не относится. Точнее, мы для себя не нашли подходящий продукт и решили сделать сами.


Читать дальше →
Всего голосов 61: ↑53 и ↓8+45
Комментарии86

ASP.NET Identity Caché Provider — работаем с Identity через InterSystems Caché

Время на прочтение6 мин
Количество просмотров8.1K
С появлением технологии ASP.NET Identity от Microsoft .NET разработчики стали все чаще использовать ее при создании веб-приложений. Для краткого экскурса в технологию предлагаем прочитать статью. Эта технология присутствует в стандартном шаблоне проекта и позволяет использовать стандартную реализацию функциональности авторизации и аутентификации пользователя.

image


«Из коробки» провайдером данных для ASP.NET Identity является MSSQL, но поскольку система авторизация Identity может взаимодействовать с любой другой реляционной СУБД, мы исследовали и реализовали эту возможность для InterSystems Caché.
Как мы это сделали
Всего голосов 20: ↑18 и ↓2+16
Комментарии14

Чем PostgreSQL лучше других SQL баз данных с открытым исходным кодом. Часть 2

Время на прочтение10 мин
Количество просмотров65K
Друзья, представляем вашему вниманию вторую часть перевода «Чем PostgreSQL лучше?». Надеемся, она вызовет такое же горячее обсуждение в комментариях, как и первая часть. А также с радостью продолжим с вами дискуссию лично на PG Day'16 Russia, до которой осталось совсем немного!

В слогане PostgreSQL заявляется, что это «Самая продвинутая база данных с открытым исходным кодом в мире». В первой части этой серии мы рассмотрели хранение данных — модель, структуры, типы и ограничения по размеру, — чтобы дать вам несколько причин, почему Постгрес подтверждает свои слова делом. Во второй части мы поговорим о манипуляциях с данными и поиске, включая индексирование, виртуальных таблицах и возможностях запросов. В этой серии мы выясняем, что выгодно отличает PostgreSQL от других баз данных с открытым исходным кодом, а именно — от MySQL, MariaDB и Firebird.


Читать дальше →
Всего голосов 49: ↑47 и ↓2+45
Комментарии32

10 атак на веб-приложения в действии

Время на прочтение4 мин
Количество просмотров54K
В настоящее время практически все разработанные и разрабатываемые приложения стремятся стать как можно более доступными для пользователя в сети интернет. В сети размещаются различные приложения для более продуктивной работы и отдыха, такие как Google Docs, калькуляторы, электронные почты, облачные хранилища, карты, погода, новости и т.д… В общем все, что нужно для повседневной жизни. Наши смартфоны практически бесполезны без доступа к интернету, так как почти все мобильные приложения подключаются к облаку, сохраняя там наши фотографии, логины и пароли. Даже большинство домашних устройств постоянно подключено к сети.



Прикладной уровень является самой надежной защитой. Уязвимости, с которыми мы тут встретимся, зачастую полагаются на сложные сценарии ввода данных пользователем, что делает их трудноопределимыми с помощью систем обнаружения вторжений. Этот уровень — самый доступный извне. Для нормального функционирования приложения должен быть доступ через порт 80 (HTTP) или порт 443 (HTTPS).
Читать дальше →
Всего голосов 25: ↑20 и ↓5+15
Комментарии1

Тест производительности: удивительно и просто

Время на прочтение15 мин
Количество просмотров38K
Так сложилось, что последние полгода я активно занимался тестами производительности и мне кажется, что в этой области IT царит абсолютное непонимание происходящего. В наше время, когда рост вычислительных мощностей снизился (vertical scalability), а объем задач растет с прежней скоростью, проблема производительности становится всё острее. Но прежде, чем броситься на борьбу с производительностью, необходимо получить количественную характеристику.

Краткое содержание статьи:

Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии5

Неизменяемые объекты в PHP

Время на прочтение7 мин
Количество просмотров32K
В этой короткой статье мы рассмотрим, что собой представляют неизменяемые объекты и почему нам следует их использовать. Неизменяемыми называются объекты, чьё состояние остаётся постоянным с момента их создания. Обычно такие объекты очень просты. Наверняка вы уже знакомы с типами enum или примитивами наподобие DateTimeImmutable. Ниже мы увидим, что если делать простые объекты неизменяемыми, то это поможет избежать определённых ошибок и сэкономить немало времени.
Читать дальше →
Всего голосов 28: ↑25 и ↓3+22
Комментарии49

Ленивый event sourcing или как жить сегодняшним днем

Время на прочтение3 мин
Количество просмотров13K
Перевод статьи опубликованной на Eventsourcing Publications. Статья описывает некоторые из идей примененных в проекте Eventsourcing.

Если вы читали статью Фаулера или подобные источники на тему event sourcing, у вас в мозгу могла остаться вот приблизительно такая картинка:

image

Общая идея такого подхода заключается в том, что пользователь (или любая другая внешняя система) генерирует команды, мы их обрабатываем, складывая полученные события в event store и обновляя «состояние мира» в базе данных, данные из которой запрашивает пользователь.

Этот подход выглядит просто и красиво. У нас есть достаточно данных чтобы «переигрывать» события, у нас есть откуда запрашивать данные о состоянии мира и мы можем использовать проверенные временем базы данных. С другой стороны, я обратил внимание что я хотел немного другого от концепции event sourcing. Мне хотелось избежать предугадывания будущего и эта модель как-то не очень подходила, потому что мне приходилось записывать обновленное состояние в мою базу данных «для чтения».

Читать дальше →
Всего голосов 13: ↑10 и ↓3+7
Комментарии35

Удачная модель ветвления для Git

Время на прочтение10 мин
Количество просмотров995K
Перевод статьи Vincent Driessen: A successful Git branching model

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



В качестве инструмента управления версиями всего исходного кода она использует Git.

Читать дальше →
Всего голосов 180: ↑171 и ↓9+162
Комментарии105

Когда мы написали сотое API мы поняли…

Время на прочтение4 мин
Количество просмотров47K
Мы в Perfect Solutions на прошлой неделе написали сотое по счету API. За все это время, ценой граблей, костылей, велосипедов и рефакторинга, мы поняли, что выработали отличную стратегию «как писать API и прекратить боль и страдание».

Этот пост о версировании, поддержке, багфиксинге и полном цикле жизни API.

Под катом нет фото с большим трафиком, нет серебрянных пуль, тут даже нет картинки для привлечения внимания — только полезная выжимка нашего опыта. Под катом методология, выработанная на реальном опыте разработки, набитых шишках и сломанных грабляхъ.
Читать дальше →
Всего голосов 45: ↑36 и ↓9+27
Комментарии41

Информация

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