Pull to refresh
124
0
Михаил Стадник @Mikhus

Software Engineer

Send message

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

Reading time7 min
Views7.2K

Преамбула


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


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


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

Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments2

Canvas Gauges 2.0

Reading time4 min
Views14K
image

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


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


Читать дальше →
Total votes 43: ↑41 and ↓2+39
Comments17

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

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

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

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

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

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

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

Reading time1 min
Views6.7K
HTML5 Canvas GaugeДобрый день, хабровчане!

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

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

Reading time1 min
Views2K

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


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

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

Reading time6 min
Views3.1K

Введение



image

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

Читать дальше →
Total votes 16: ↑12 and ↓4+8
Comments23

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

Reading time1 min
Views920
Буквально сегодня мы запустили новый проект ориентированный на украинский рынок — http://expertauto.com.ua/.

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

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

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

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

Reading time16 min
Views11K

Предисловие



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

Читать дальше →
Total votes 94: ↑93 and ↓1+92
Comments24

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

Reading time14 min
Views22K

Введение



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

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

Читать дальше →
Total votes 123: ↑120 and ↓3+117
Comments27

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

Reading time15 min
Views81K

Введение



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

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

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

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

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

Reading time9 min
Views610K

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



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

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

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

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

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

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

Reading time3 min
Views3.1K
[Обновлено]: Внесены некоторые изменения в код. Спасибо ithilion и LoneCat

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

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

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

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity