Pull to refresh
33
0
Игорь @azverin

User

Send message
Открываем главную страницу CMSки, смотрим интро, видим вот такую чухню и спокойно забываем про это мракобесие.
Спойлер
image
Если все действия выполнять через PATCH одного ресурса /missile/[id] то фактически мы утащим туда весь функционал.
Опять же, неочевидно, что должно происходить при вызове /missile/[id]?state=destroyed&target=usa? Как узнать статус или результаты запуска?
В целом верное замечание про омонимы, пусть ресурсы иногда будут совпадать по написанию, но если не понимать разницу, то можно докатиться до твиттеровских ахтунгов вроде POST friendships/destroy или POST friendships/update.

По-моему, так вполне очевидно, что PUT на launch запустит ракету, GET — узнает статус запущенной, POST поменяет целеуказание (доступно пока ракета летит, разумеется) а DELETE — взорвет ракету в воздухе


Не уверен насчет «очевидно». GET, PUT, DELETE — идемпотентны (сколько бы раз мы не вызывали такой метод — результат будет один и тот же.), а ракету нельзя запустить дважды.

И в целом мне не кажется очевидной языковая конструкция GET «глагол». По смыслу получается «Я хочу получить запустить ракету» — что здесь действие: получить или запустить?
Спасибо за развернутый коммент, с большей частью согласен, свойства в примерах действительно получились неудачные и не совсем корректные. Вложенность объектов в адресе не стоит использовать там где это не отражает их связей. Поменял в статье на более осмысленные.

То, что в REST-интерфейсе не должно быть глаголов — это фантазии.


С этим всё же не согласен, т.к. по смыслу как глагол может быть ресурсом? В чем будет смысловая разница между GET и POST на глагол LAUNCH.
Понятно, что должен быть здравый смысл, но если упрощать «до победного» получим RPC.
В заметке я как раз пытался осмыслить впихуемость более сложных ситуаций в REST.

Моё понимание stateless применимо к REST с авторизацией — сервер не должен хранить состояние между запросами, связанных сессией.
Т.е. не должно быть последовательностей типа вызова prepareQuery -> executeQuery, которые были бы привязаны к сессии, а не к своему идентификатору. Надо что-то подготовить\сгенерить — отдал идентификатор, по которому выполняется следующий запрос.

Первый вопрос: ну, дорогие мои, а как эти ваши setUserCity, calculateMatrix и startVideoConverter могут быть реализованы на REST?

setUserCity(userId, cityId) -> PATCH /users/[id] {city_id: [city_id]} // частичное изменение данных
calculateMatrix(data) -> POST /matrix_calculation/ {data}
startVideoConverter(options, source, destination) -> POST /video/[id]/convertation {options}
Мы ракету запускаем куда-то, поэтому задаем страну приземления, остальная бизнес-логика по запуску и доставке крутится внутри.

GET /missiles/[id]/countries-landed — получаем список стран которые накрыло (например, ядерным по лихтенштейну еще зацепит тройку-другую),
GET /missiles/[id]/countries-landed/[country_id] состояние запуска\полета\приземления.

А ресурс /missile/[id]/launched/ отвечает за то, была ли она вообще запущена (возможна ситуация, когда запуск уже назначен, но еще не осуществлен)
При том, что я достаточно свободно могу общаться по-английски, для меня оказалось важным, чтобы окружающая действительность все-таки говорила по-русски. Да и горячую ванну я люблю больше, чем море.
Еще сейчас у меня такой период, когда хочется быть собранным и действовать, а не расслабляться в стиле санук-сабай.

Я родился в Москве и привык пользоваться благами цивилизации. Но в Москве люди слишком напряжены и агрессивны.
Убивают пробки на дорогах, в метро. Слишком навязывается потребл*дство во всем, что тебя окружает.

В Минске вроде бы и цивилизация есть, но нет этого сумасшествия и суеты.
Правда, как выяснилось, уровень сервиса тут остался на совковом уровне, но в остальном весьма приятный город.
Официально можно находиться какое-то ограниченное время, существует похожая система регистрации как в РФ.
Но технически граница отсутствует, поэтому проверить это никак нельзя.
Имхо забыты пара полезных пунктов: возраст и образование.
Мне 27, образование среднее, ВО не начинал.

1) free-lance.ru, хотя сейчас аккаунт без PRO и в статусе «занят» и больше работает сарафанное радио и постоянные клиенты.
2) ~6 лет.
3) Фриланс — основная работа
4) За прошлый год в среднем 2 — 2.5 тыс.$ в месяц, реально качели от 1 до 5 тыс.$ в месяц.
5) Web-программист PHP
6) Один + сработавшийся набор фрилансеров верстальщиков
7) Москва -> Таиланд -> Минск
8) Почти сразу ушел на фриланс. Зацепил SEO, но ушел оттуда.
9) Разведен
10) Бизнес-цель: Вырасти в бизнес, построить компактную и эффективную IT компанию. Личные мечты не для здесь :)
11) www.free-lance.ru/users/iosh/ но в портфолио одно старье.
12) 500 — 1000 руб.
13) Осознаю себя как ремесленника. Работаю с PHP & JS, в другие языки не суюсь, т.к. фатально не хватает времени.
Реально люблю программинг, часто занимаюсь велосипедостроительством, но в последнее время более осознанно, с пониманием зачем и сравнивая с аналогами. Пишу на своём фреймворке с composer`om и Symfony компонентами.

Уровень как программиста, думаю выше среднего, хотя реально улучшил качество кода в последние 1-2 года.
Раньше преимущественно делались типовые сайты магазины\каталоги под SEO.
Сейчас отдаю предпочтение сервисам и крупным сайтам.

Клиенты ценят за ответственность и «неисчезание».
Есть менеджерские навыки и немного понимаю в маркетинге, поэтому в проекте обычно участвую шире чем программер, вношу свою лепту в виденье проекта в целом и консультирую по некоторым другим моментам. Ну и в целом «могу поговорить», имею свою точку зрения.

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

Решил что в Москве жить некомфортно, пробовал жить в Таиланде (Самуи), после пары зимовок понял, что это не моё и сейчас живу в Минске — нравится :)
А я бы предпочел открытое универсальное API и возможность зайти по SSH на стиральную машинку.
И как следствие широкий спектр приложений для Android | iOS | WinPhone.
А потом живешь с девушкой пару месяцев, говоришь дорогая, я решил выдать тебе ключи от квартиры и… достаешь шприц…
Три. Можно перейти в режим web-developer и удалить DOM элемент оверлея и окна.
Если я не ошибаюсь, iTunes версии 11 и старше не будет работать с Linux`овыми iTunes серверами mt-daapd и forked-daapd.
Сервер в сети видит, но зайти в него не дает и музыку с него не играет. Именно они используются в NASах, обжегся на WD My Book Live.

Так что решение с виндой получается единственно возможное, если не учитывать mac mini с хардом на тандерболте.
Было бы очень круто добавить в начало поста оглавление, чтобы перепрыгивать к нужному месту (#anchor)
Спасибо за пост!

Через полгода Диск всё таки есть попросит :)
Хорошее интервью.

А почему не задавали вопросы вслух? Приходится перескакивать, быстро читать мелкий текст вопроса, потом слушать.
Комфортнее было бы слушать вопрос и слушать ответ.
Вы правда думаете, что из пустого поста ниачом, но с плакатом, можно получить дискуссию о дизайне? Что обсуждать-то?

По содержанию не дотягивает даже до «я пиарюсь», не говоря уже про смысловые блоги. ИМХО.
Это не было вопросом, тем более в статье всё разжевано. Речь о том, что пример кода неуместный в данном контексте.
У меня неплохой английский — не стоит из руби делать 1С ;) Про непонятность говорится в тексте:

Что тут странно, так это то, что эти методы (которые, вообще говоря, наследованы) вызываются в процессе определения класса.

Сахара действительно много, и это неплохо. Литературная читабельность на высоте, но непонятно, что происходит: где объявляется, что вызывается и почему вызвается не там, где привычно это видеть (внутри конструктора например). Просто это не тот пример синтаксиса, который я хотел бы увидеть. Плюс обычно такие примеры снабжаются комментариями построчно. Но цель автора была произвести вау-эффект на туземцев. Удалось, ага.

Ror c фреймворком на php лучше сравнивать, а php — c ruby.

Да, в целом, это более корректная постановка вопроса.

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

Странно переходить с PHP на Ruby и писать потом (условно) hello-world-блог, т.к. преимуществ явных от этого не получится.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity