Как стать автором
Обновить
124
0
Михаил Стадник @Mikhus

Software Engineer

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

Работа с данными при построении API на основе GraphQL

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

Преамбула


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


GraphQL замечательный инструмент. Думаю, о его преимуществах уже знают и понимают многие. Тем не менее, есть некоторые нюансы, которые следует знать, когда вы строите свои API на основе GraphQL.


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

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

Canvas Gauges 2.0

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

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


Как и раньше, библиотека OpenSource и распространяется по лицензии MIT, так что берите, используйте и, вообще, далайте что хотите без каких-либо ограничений.


Читать дальше →
Всего голосов 43: ↑41 и ↓2 +39
Комментарии 17

Добавляем чуть больше рефлексии: декораторы

Время на прочтение 3 мин
Количество просмотров 9.2K
Последнее время приходится довольно много работать с Python. Решая одну из текущих задач, возникла необходимость внутри функции-декоратора проверить задекорирован ли декорируемый метод другим декоратором. К сожалению, стандартные средства рефлексии языка не позволяют это сделать. Точнее, используя, например, модуль inspect из стандартной библиотеки это сделать можно, но уж больно не нравился такой подход.

Под катом свой метод решения задачи, вылившийся в небольшую библиотеку, доступную для общего пользования.
Читать дальше →
Всего голосов 13: ↑7 и ↓6 +1
Комментарии 35

Манипулирование URL'ами в JavaScript

Время на прочтение 2 мин
Количество просмотров 70K
Из года в год, сталкиваюсь с одной и той же проблемой. Как добавить, изменить или удалить параметр к некоторому адресу в строковом виде. Быстро и грязно это можно делать с помощью, например, регулярных выражений или найти каке-то готовое решение. Зачастую также может потребоваться, к примеру, подменить путь в адресе или изменить протокол с HTTP на HTTPS и т.д.

В целом, это хочется делать просто и понятно. При этом хочется разумного компромиса. Я встречал некоторые библиотеки, которые дают мощный функционал, но при этом по объему — десятки килобайт JavaScript кода. Несколько десятков килобайт, чтобы, например, подменить параметр в QueryString? Эх…
Читать дальше →
Всего голосов 70: ↑67 и ↓3 +64
Комментарии 50

CanvGauge — измерительный прибор с помощью canvas для HTML5

Время на прочтение 1 мин
Количество просмотров 6.6K
HTML5 Canvas GaugeДобрый день, хабровчане!

Сегодня я хочу поделиться своей небольшой разработкой, которую я делал для одного из своих проектов. На самом деле, в сети множество реализаций gauge, как платных, так и бесплатных. Но найти хоть одно решение с использованием именно canvas мне не удалось, поэтому было принято решение написать свое.
Читать дальше →
Всего голосов 78: ↑72 и ↓6 +66
Комментарии 67

Smart-IP.net 2.0 — тотальное обновление сервиса

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

Привет Хабровчане!


Спешу поделиться тем, что после упорного труда я наконец-то решился и отправил в свободное плавание вторую версию своего сервиса Smart-IP.net. Если кто-то помнит старую версию сайта, или же даже регулярно им пользовался, легко заметит существенные изменения. Остальные под катом могут ознакомиться с тем, что же это за сервис и что в нем изменилось.
Читать дальше →
Всего голосов 15: ↑7 и ↓8 -1
Комментарии 29

Nested Grids с помощью ExtJS 3.0

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

Введение



image

Суть проблемы, рассматриваемой в данной статье заключается в том, что Grid объекты библиотеки ExtJS не предназначены для использования в контексте вложенности. В общем случае, такая задача редко становится перед разработчиком. И все же, иногда, как, например, в моем случае, с ней приходится сталкиваться. Ниже я попытаюсь поделиться накопленным опытом, и, возможно, окажу тем самым кому-нибудь неоценимую помощь, на что искренне надеюсь :). Итак, в добрый путь…

Читать дальше →
Всего голосов 16: ↑12 и ↓4 +8
Комментарии 23

Экспертавто — новый сайт публикации объявлений о продаже авто

Время на прочтение 1 мин
Количество просмотров 916
Буквально сегодня мы запустили новый проект ориентированный на украинский рынок — http://expertauto.com.ua/.

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

Именно поэтому я обращаюсь к хабрасообщесту, чтобы услышать конструктивную и полезную критику — нам очень важны такие отзывы.

Оговорюсь сразу, что к моменту запуска у нас не получилось реализовать все, что мы задумали, тем не менее мы будем очень признательны за любые интересные идеи, которые могут быть реализованы в рамках подобного проекта.
Всего голосов 8: ↑5 и ↓3 +2
Комментарии 18

Разработка модуля для Apache 2.x

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

Предисловие



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

Читать дальше →
Всего голосов 94: ↑93 и ↓1 +92
Комментарии 24

Иерархические структуры данных и производительность

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

Введение



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

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

Читать дальше →
Всего голосов 123: ↑120 и ↓3 +117
Комментарии 27

Иерархические структуры данных и Doctrine

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

Введение



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

В первую очередь, это связано с тем, что реляционные базы не приспособлены к хранению иерархических структур (как, например, XML-файлы), структура реляционных таблиц представляет из себя простые списки. Иерархические же данные имеют связь «родитель-наследники», которая не реализована в реляционной структуре.

Тем не менее, задача «хранить деревья в базе данных» рано или поздно возникает перед любым разработчиком.

Ниже мы подробно рассмотрим, какие существуют подходы в организации хранения деревьев в реляционных БД, а также рассмотрим инструментарий, который нам предоставляет ORM Doctrine для работы с такими структурами.
Читать дальше →
Всего голосов 64: ↑63 и ↓1 +62
Комментарии 41

Веб-сервисы в теории и на практике для начинающих

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

Что такое веб-сервисы?



Прежде всего, веб-сервисы (или веб-службы) — это технология. И как и любая другая технология, они имеют довольно четко очерченную среду применения.

Если посмотреть на веб-сервисы в разрезе стека сетевых протококолов, мы увидим, что это, в классическом случае, не что иное, как еще одна надстройка поверх протокола HTTP.

С другой стороны, если гипотетически разделить Интернет на несколько слоев, мы сможем выделить, как минимум, два концептуальных типа приложений — вычислительные узлы, которые реализуют нетривиальные функции и прикладные веб-ресурсы. При этом вторые, зачастую заинтересованы в услугах первых.

Но и сам Интернет — разнороден, т. е. различные приложения на различных узлах сети функционируют на разных аппаратно-программных платформах, и используют различные технологии и языки.

Чтобы связать все это и предоставить возможность одним приложениям обмениваться данными с другими, и были придуманы веб-сервисы.
Читать дальше →
Всего голосов 62: ↑61 и ↓1 +60
Комментарии 30

Контроль скалярных типов в PHP 5

Время на прочтение 3 мин
Количество просмотров 3.1K
[Обновлено]: Внесены некоторые изменения в код. Спасибо ithilion и LoneCat

Все уже знают что в PHP 5 в аргументах функций можно указывать их тип, за исключением… скалярных типов, т.е.: integer, string, boolean, float, и т.д.

Однако на странице мануала о контроле типов, в комментариях, Daniel L. Wood приводит достаточно интересное решение этой проблемы с помощью класса-обработчика ошибок. Единственный существенный недостаток этого решения — это его производительность.

Ниже я попытаюсь рассказать, как можно оптимизировать это решение, а также стоит ли им пользоваться, в принципе, в продакшн релизах.
Читать дальше →
Всего голосов 10: ↑8 и ↓2 +6
Комментарии 10

Информация

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