Pull to refresh
8
0
Дмитрий @kurd

User

Send message

Проектирование RESTful API с помощью Python и Flask

Reading time 15 min
Views 272K
В последние годы REST (REpresentational State Transfer) стала стандартной архитектурой при дизайне веб-сервисов и веб-API.

В этой статье я покажу вам как просто создавать RESTful веб-сервисы используя Python и микрофреймворк Flask.

Что такое REST?


Характеристика системы REST определяется шестью правилами дизайна:

  • Клиент-Сервер: Должно быть разделение между сервером, который предлагает сервис и клиентом, который использует ее.
  • Stateless: Каждый запрос от клиента должен содержать всю информацию, необходимую серверу для выполнения запроса. Другими словами, сервер не обязан сохранять информацию о состоянии клиента.
  • Кэширование: В каждом запросе клиента должно явно содержаться указание о возможности кэширования ответа и получения ответа из существующего кэша.
  • Уровневая система: Клиент может взаимодействовать не напрямую с сервером, а с произвольным количеством промежуточных узлов. При этом клиент может не знать о существовании промежуточных узлов, за исключением случаев передачи конфиденциальной информации.
  • Унификация: Унифицированный программный интерфейс сервера.
  • Код по запросу: Сервера могут поставлять исполняемый код или скрипты для выполнения их на стороне клиентов.

Читать дальше →
Total votes 40: ↑33 and ↓7 +26
Comments 32

Android AutoCompleteTextView с подсказками из веб-сервиса

Reading time 7 min
Views 35K
Для одного из своих Android-приложений Book Tracker я реализовал кастомный AutoCompleteTextView с подсказками для названий книг, которые динамически подгружаются с Google Books по мере ввода названия книги.

Задача перед компонентом стояла следующая:
  • Загрузка данных должна осуществляться в отдельном потоке, чтобы не блокировать UI-поток;
  • Загрузка подсказок должна начинаться только, если пользователь приостанавливает набор (чтобы предотвратить отправку множества запросов к серверу после каждого введенного символа);
  • Подсказки должны загружаться, если пользователь ввел строку некоторой минимальной длины (нет смысла начинать загрузку данных для строки из двух или трех символов);
  • При запросе к серверу в правой части поля должен быть показан анимированный прогресс, чтобы информировать пользователя о загрузке.

Финальный результат:



Читать дальше →
Total votes 20: ↑19 and ↓1 +18
Comments 9

Лучшие плагины для Sublime Text

Reading time 5 min
Views 638K

WebInspector


Мощный инструмент для дебаггинга JavaScript, полноценный инспектор кода для Sublime. Фичи: установка брейкпоинтов прямо в редакторе, показ интерактивной консоли с кликабельными объектами, остановка с показом стек трейса и управление шагами дебаггера. Все это работает на ура! А еще есть Fireplay от Mozilla, который позволяет подключаться к Firefox Developer tools и максимально простой дебаггер JSHint.



Читать дальше →
Total votes 116: ↑114 and ↓2 +112
Comments 101

Каша из топора или NAS на основе Asus RT-N56U

Reading time 14 min
Views 185K
image
Вкратце, что получилось:
  • ADSL 2+ подключение к Интернету
  • Две домашних WiFi 802.11g/n сети — 2.4Ghz и 5Ghz со скоростью более 100 мегабит/с
  • Гигабитное подключение по кабелю
  • Сетевое хранилище на 6Тб, в виде четырех дисков 2 x 2Тб и 2 x 1Тб с автономным торрент клиентом
  • SMB/CIFS сервер со стабильной скоростью записи/чтения 12-14 мегабайт/с
  • NFS сервер со скоростью записи/чтения 9-10 или 15-18 мегабайт/с (TCP/Windows или UDP/Linux)
  • UPNP/DLNA сервер со скоростью чтения 8-10 мегабайт/с
  • 46-ти дюймовый LED телевизор с встроенным WiFi 802.11n, способный работать с сетевым хранилищем и сам способный раздавать контент по SMB/CIFS со своего USB диска
  • Старый 42-дюймовый телевизор с подключеным BD плеером с поддержкой Ethernet и DLNA клиентом, работающий с сетевым хранилищем
  • 4 домашних компьютера, включая Mac и 4 мобильных телефона которые со всем вышеперечисленным работают, в том числе и мобильные сервера и клиенты DLNA

Кому интересно на какие грабли я наступал, зачем там подушка и как все это работает прошу под кат.
Читать дальше →
Total votes 55: ↑51 and ↓4 +47
Comments 23

Теория и Практика Поиска Работы в Канаде (часть первая)

Reading time 4 min
Views 7.8K
Предисловие

Искренне уповаю на то, что эти заметки могут вырасти в полноценный цикл статей по поиску работы в Канаде, если достаточное количество читателей сочтет данный труд полезным.

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

Вот это как раз следует прочитать обязательно!

Я сам из тех самонадеянных персон, которые любят пропускать вступление!

С первого, второго и последующих взглядов может показаться, что данное вступление содержит набор прописных истин. К сожалению, моим извилинам потребовалось больше трех лет, чтобы впитать эти простенькие пунктики и, обсуждая эту тему с другими, я невольно отметил, что некоторые преуспели здесь еще меньше. Начнем, пожалуй.
Читать дальше →
Total votes 96: ↑88 and ↓8 +80
Comments 116

Электронный бухгалтер #14: Не надо развивать в себе никакие предпринимательские навыки

Reading time 1 min
Views 1.2K

Образ успешного предпринимателя. Какой он? Самый известный бизнес-тренер России делится советами, наблюдениями и примерами из жизни.

В программе:

  1. Можно ли измерить успешность современного предпринимателя?
  2. Есть ли разница между образом успешного предпринимателя-мужчины и образом успешного предпринимателя-женщины?
  3. Лидерские качества. Насколько они важны в реализации бизнес-проектов и есть ли шанс их в себе воспитать?
  4. Какие идеи выгодно доносить до сотрудников, чтобы помочь им работать более продуктивно?
  5. Какие слабости никогда нельзя показывать команде?
  6. Где брать силы на развитие бизнеса?
  7. Когда и с каким настроем предпринимателю стоит идти на тренинг?
  8. Будет ли успешный предприниматель 2012 года отличаться от успешного предпринимателя 2011 года?


Электронный бухгалтер на rpod.ru
Длительность 22 минуты, размер 37 Мб.
Total votes 46: ↑32 and ↓14 +18
Comments 11

Фантастика? Нет, Wacom!

Reading time 1 min
Views 82K
Привет, сообщество!

Увидев это видео, я не смог не поделиться им с вами. Wacom опять на высоте, глядите:



Пишу под большим восхищением. Как же не терпится впустить это чудо в жизнь!

P.S. продажи с 30 сентября.
Total votes 204: ↑188 and ↓16 +172
Comments 158

iPad для молодых родителей

Reading time 3 min
Views 3.7K
Много можно послушать про сферы применения планшетных компьютеров. И что они есть, и что мы бедные раньше один ноут и телефон с собой таскали, а теперь еще и планшет зачем-то носим. При этом, большинство сходится во мнении, что лежать на диване или читать новости за утренним кофе с такого девайса — действительно одно удовольствие. У меня лично скопилось уже много сфер и причин для использования планшета, но об этой хочу написать немного подробней. Думаю, будет полезней. Речь в первую очередь пойдет о софте для iOS — так как опыт именно такой. Вероятно, для андроида тоже что-то есть.

Итак, когда у вас на руках грудной ребенок, а вы, вероятнее всего, его мама, то совмещать манипуляции с ним и с компьютером одновременно не получится. А вот одна рука у вас регулярно свободна. Самый простой пример — во время кормления. Можно, конечно, параллельно смотреть ТВ (что, однако, отвлекает ребенка и раздражает), но если нужно что-то в интернете: почитать книжку или полистать журнал, то, как показывает практика, именно планшетник подойдет идеально.
Это вопросы удобства и комфорта. Есть же и специальное ПО, которое вполне может пригодиться молодым родителям. Его не так мало, но, как водится, реально полезного немного. А еще и применимого в наших реалиях (ПО завязанное на детские американские онлайн шопы сразу отпадает, например), еще меньше.

И все же, что оказалось полезным:
Читать дальше →
Total votes 88: ↑59 and ↓29 +30
Comments 72

Набор иконок Material Design от Google

Reading time 1 min
Views 105K


В списке самых популярных репозиториев Github за неделю на первое место вышел набор иконок Material Design, разработанный в компании Google.

Набор содержит аж 750 (!) глифов. Это пиктограммы, часто используемые в различных мобильных приложениях для воспроизведения медиа, коммуникаций, редактирования контента, установки соединения и т.д.
Читать дальше →
Total votes 66: ↑60 and ↓6 +54
Comments 16

Authomatic: python библиотека для аутентификации и авторизации

Reading time 6 min
Views 40K
imageПрактически любое веб-приложение предоставляет возможность авторизации пользователя с использованием учетной записи пользователя, в каком либо из известных социальных сервисов.

Магия авторизации происходит строго по протоколу OAuth 1.0а и OAuth 2.0 и значительно упрощает жизнь и владельцу веб-приложения и самому пользователю.

Остается сущая мелочь, реализовать нужный протокол применительно к конкретному веб-приложению. Регистрация и вход в веб сервис TheOnlyPage с использованием учетных записей Facebook, Google, LinkedIn и Microsoft Live работают благодаря python библиотеке Authomatic.

Согласно документации Authomatic обладает следующими замечательными особенностями:
Читать дальше →
Total votes 34: ↑31 and ↓3 +28
Comments 7

Впечатления от посещения EuroPython 2014

Reading time 14 min
Views 12K
Одна из отличительных особенностей языка Python — это посвящённые этому языку конференции, так называемые PyConы. Не так давно мне удалось побывать на одном таком PyCon-е — EuroPython 2014. EuroPython — это одна из наиболее крупных европейских ежегодных конференций по языку Python, которая три последних года проводилась во Флоренции, а в 2014м — первый раз в Берлине. Пока свежи воспоминания решил написать небольшой отчётик — что и как было.
Читать дальше →
Total votes 32: ↑32 and ↓0 +32
Comments 2

Распределенный музыкальный плейер на Raspberry Pi

Reading time 7 min
Views 97K

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

(Да, пост во многом пересекается с постом Распределенный аудиоплеер на Odroid U2, но чуть проще в настройке)
Читать дальше →
Total votes 108: ↑105 and ↓3 +102
Comments 52

RESTful API на Node.js + MongoDB

Reading time 16 min
Views 257K
Я, будучи разработчиком мобильных приложений, часто нуждаюсь в backend-сервисах для хранения пользовательских данных, авторизации и прочего. Конечно, для подобных задач можно использовать BaaS (Parse, Backendless, etc…). Но свое решение — это всегда более удобно и практично.

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

В данной статье будет рассмотрено построение REST API для мобильного приложения на Node.js с использованием фреймворка Express.js и модуля Mongoose.js для работы с MongoDB. Для контроля доступа прибегнем к технологии OAuth 2.0 с помощью модулей OAuth2orize и Passport.js.

Пишу с позиции абсолютного новичка. Рад любым отзывам и поправкам по коду и логике!

Содержание

  1. Node.js + Express.js, простой web-сервер
  2. Error handling
  3. RESTful API endpoints, CRUD
  4. MongoDB & Mongoose.js
  5. Access control — OAuth 2.0, Passport.js

Читать дальше →
Total votes 44: ↑41 and ↓3 +38
Comments 63

Мобильное приложения для управления умным домом на базе Z-Wave с помощью OpenRemote

Reading time 8 min
Views 84K

Не так давно был представлен Z-Wave модуль для Raspberry Pi — RaZBerry, который превращает мини-компьютер в полноценный контроллер умного дома. Управление Z-Wave сетью осуществляется с помощью web-интерфейса, использующего HTTP/JavaScript API. Используя JavaScript можно создать набор функций для автоматизации (включение/выключение света, проверка температуры, опрос датчика движения и др.), которые затем можно выполнить, послав HTTP запрос.

Продукт компании OpenRemote с одноименным названием позволяет создавать мобильные приложения для умного дома без программирования, при этом в одном приложении могут использоваться разные технологии: Z-Wave, KNX, X10, ZigBee, управление компьютером по ssh и др.

OpenRemote это сервер выполняющий любые команды и конструктор интерфейсов в котором вы создаете кнопки, переключатели, надписи и др. и этим элементам уже назначаете команды, в нашем случае это HTTP запросы на выполнение JavaScript функций на сервере Z-Wave.

Далее я по пунктам расскажу как создать пульт управления умным домом для iPhone и Android! А вот так будет выглядеть наше приложения, когда мы закончим:


Под катом много картинок.
Будет интересно!
Total votes 52: ↑50 and ↓2 +48
Comments 40

Анимация листа со спрайтами посредством steps()

Reading time 1 min
Views 28K
[иллюстрация принципа]

Если вам не хочется использовать гифы на сайте, а предпочитаете PNG за их лучшую цветность, но всё же нужно анимировать их, тогда вот способ:

у анимаций CSS с ключевыми кадрами есть свойство под названием animation-timing-function. Одна из его возможностей — использовать функцию steps(), как в нижеследующем примере:

div {
    animation: play 1s steps(10) infinite;
}
@keyframes play { 
      0% { background-position:    0px 0; } 
    100% { background-position: -500px 0; }
}

Различие между нею и остальными анимационными функциями состоит в том, что вместо плавного движения от 0px к −500px происходят резкие прыжки с паузами между ними. Это идеально подходит для анимаций, использующих лист с покадровым изображением спрайта. В вышеприведённом примере шаг равен 50px, а пауза — 100 миллисекунд (всего 10 шагов).

Вот небольшое демо.

Читать дальше →
Total votes 57: ↑54 and ↓3 +51
Comments 25

Привлекательные экспериментальные плагины на JavaScript

Reading time 2 min
Views 49K

Вступление


Я безумно люблю различные эксперименты на JS. Они словно позволяют заглянуть нам в будущее, и посмотреть, каким захватывающим и футуристичным оно будет. Когда вы будете просматривать приведенную подборку, вы наверняка вспомните про еще недавнего короля — Adobe Flash, а затем осознаете, насколько быстро CSS и JavaScript лишили его трона. Современные браузеры позволяют нам использовать множество различных эффектов и анимаций без сильных тормозов. Однако слово «экспериментальный» подразумевает ряд ограничений, как например некорректное отображение в некоторых браузерах (IE), кроме того, подобные плагины будут, скорее, отличным концептуальным дополнением для персональных страниц, а не для использования в больших проектах.

Meny


image

Meny — трехмерное меню, которое помимо своей визуальной притягательности еще и экономит место на экране. При наведении (или свайпе на тачскрине, что важно), меню «выезжает» с отличным эффектом.
Читать дальше →
Total votes 128: ↑122 and ↓6 +116
Comments 35

Удивительно простой, но красивый CSS-эффект

Reading time 4 min
Views 67K
Наткнулся на очень простой в реализации, но интересный rollover-эффект для кнопок на CSS. Автор — некий японец ksk1015.



Демонстрация эффекта и процесс написания.
Читать дальше →
Total votes 141: ↑130 and ↓11 +119
Comments 31

Pictonic — необычный иконочный шрифт

Reading time 1 min
Views 30K

В последнее время появилось множество иконочных шрифтов для нужд веб-дизайнеров, но такой как Pictonic я вижу впервые. Это «логотипный» иконочный шрифт, где собрано более 220 логотипов известных сервисов, браузеров, операционных систем, языков программирования и т.д. Среди символов конечно нет русскоязычных сервисов.
Читать дальше →
Total votes 82: ↑79 and ↓3 +76
Comments 32

jQuery plugin для форм с динамической структурой

Reading time 5 min
Views 33K
Хочу поделиться с обществом собственным плагином, который упрощает работу с динамическими формами и называется jqDynaForm. Под динамическими формами я подразумеваю формы, в которые при заполнении пользователь может добавлять по необходимости дополнительные поля или блоки полей. Разумеется, в каждом месте разрешено добавлять только заранее разрешенные виды блоков. Вот примеры подобных простейших форм:

1. Контактная форма, в которой есть поле «телефон». Пользователь может добавить еще несколько дополнительных полей для телефонов, если возникнет желание.

2. Счет на оплату. Есть фиксированный набор полей, таких как «имя плательщика» и «номер счета». Кроме того, есть таблица с позициями. Каждая позиция состоит следующих полей: «наименование», «количество», «цена». Пользователь может добавлять произвольное количество дополнительных позиций.

Давайте рассмотрим работу с jqDynaForm на примере такого счета. Вот пример такой формы:



Читать дальше →
Total votes 45: ↑42 and ↓3 +39
Comments 29

Хочешь быть iOS разработчиком? Будь им!

Reading time 2 min
Views 387K
На хабре в прошлом месяце была опубликована статья Конкурс ВК: Мессенджер для Android. Как это было!, в которой автор поделился своими мыслями о конкурсе и опубликовал список ресурсов и статей, которые помогли ему в создании приложения. Так как в последнее время я начал изучать разработку под iOS, то у меня скопилось некоторое количество ссылок, которые могут быть полезны для начинающих. Поэтому я последую его примеру и сделаю то же самое, только для своей платформы. Надеюсь, кому-нибудь они окажутся полезны и сэкономят немного времени.

Читать дальше →
Total votes 234: ↑222 and ↓12 +210
Comments 38

Information

Rating
Does not participate
Location
Нижегородская обл., Россия
Registered
Activity