Как стать автором
Обновить
74
0
Долганов Евгений @edolganov

Пользователь

Отправить сообщение
Ну вот!
А я с товарищем 5 лет назад делал что-то похожее в университете.
Приятно, что мы двигались в том же направлении, что и авторы из Фейсбука.
Посмотрел видео работы с системой: http://vimeo.com/77210510

Выглядит с одной стороны логично, с другой — довольно запутанно: постоянно надо нажимать кучу разных элементов интерфейса. Я, как разработчик, наверно бы в итоге сбежал от этой «интерфейсной магии». :)

Но, наверняка, многим заказчикам нравится возможность клепать всё из UI.
Да, паттерн «Command» наиболее близок к «Action-Handler».
Но, реализуя свои собственные комманды, вы столкнетесь с необходимостью передавать в них контекст, с желанием добавить перехватчики вызовов, фильтры и т.д. Все эти вещи как раз реализованы в представленном фреймворке.
Так же на сайте проекта написано, что этот IoC контейнер можно (и нужно) использовать вместе с JEE и Spring.
И даже даны примеры этой интеграции тут и тут.
Простите, опечатка: первая строка some/package/user/ — лишняя
Простите, опечатка в коде: готовил пример с живого проекта :)
Правильный код:
public class CreateUser extends Action<CreateUser.Input, User>{
	
	
	public static class Input {
		
		public Object someData1;
		public Object someData2;

		public Input(Object someData1, Object someData2) {
			this.someData1 = someData1;
			this.someData2 = someData2;
		}
		
	}

	public CreateUser(Input input) {
		super(input);
	}
	
}
Если рассматривать только вопрос навигации, то раньше нужно было сначала искать класс в пакетах, потом метод в классе.
в новом подходе — нужно искать только класс. Причем пакеты древовидны, в отличие от линейных методов:
some/package/user/
some/name/user/basic
		CreateUser.java
		UpdateUser.java
		...
some/name/user/moderation
		BlockUser.java
		UnblockUser.java
		...
«Action<From, To> — если у меня есть 3 аргумента — нужно их оборачивать в еще 1н класс?»

Да, к сожалению, за всё надо платить.
Если у вас входные параметры — это несколько разных классов, то придется делать класс-обертку для них.
Самый быстрый способ — создать этот класс внутри самого Action:
public class CreateUser extends Action<CreateUser.Input, User>{
	
	
	public static class Input {
		
		public Object someData1;
		public Object someData2;

		public Input(Object someData1, Object someData2) {
			this.someData1 = someData1;
			this.someData2 = someData2;
		}
		
	}

	public GetDeletedNodesByDate(Input input) {
		super(input);
	}
	
}
Рассмотрим ваш подход:
@Service
class CreateUserService {
  public void createUser(...)
}
@Service
class ActivateUserService {
  public void activateUser(..)
}


Плюсы:
очевидны — остаемся в рамках той парадигмы, что и были

Минусы:
1. В реале придется писать не только class, но и interface (ведь в классической парадигме мы отдаем наружу интерфейсы).

Т.е. у вас будет:
interface CreateUserService {}

class CreateUserServiceImpl{}

interface ActivateUserService{}

class ActivateUserServiceImpl{}


Получается, что сложность того же порядка:
  • интрефейс + реализация + метод
  • Action + Handler + метод

Так что в классическом подходе вы не сэкономили.

2. Посмотрим на клиент:
В классическом подходе придется писать:
class Client {

  @Autowired
  CreateUserService createUser;

  @Autowired
  ActivateUserService activateUser;

  @Autowired
  UpdateUser updateUser;

  ...

}


В подходе же Action-Handler:
class Client {

  @Autowired
  UserService userService;

}


Т.о. у нас для внешнего мира всё так же один интерфейс UserService.
Просто теперь у него — «универсальное» API:
userService.invoke(new CreateUser(...));
userService.invoke(new ActivateUser(...));
увы, я вначале не правильно понял вопрос.
да parse не имеет доступа к this.
поэтому там есть ссылка «self», чтобы parse мог обращаться через нее к публичным полям и функциям объекта.
Спасибо за рекомендацию!
Да, можно выбрать много способов записи. Это же Js. :)
Я выбрал тот, что больше всего напоминает Java код
В 4-ом пункте все корректно.

Смотрим код:
  var doc = new NoteDocument("hello!");
  doc.init();


1. Создается экземпляр NoteDocument — при этом создаются все внутренние функции, включая parse, которая стоит в определении ниже чем init
2. Вызывается init, которая в этот момент уже может обращаться к parse
не проверял. милости просим в их доки… ;)
Для внешнего мира ваш веб-сервер будет доступен на 80-м, просто запросы с этого порта передаются на 8080 вашего удаленного компьютера
Тоже добавил в топик. Спасибо!
В комментах присутствует много сомнений о возможности реализации этого при нашей текущей власти. В любом случае, инициатива, оказывается, уже взята и ссылки на два подобных ресурса я вынес в топик. Думаю, их наличие — верный знак движения в нужную сторону.
Накопление общедоступной публичной критики к работе властей — это тоже сильный инструмент сам по себе. Он может быть использован в рамках политики — как аргумент в пользу смены текущих управленцев городом.

В общем, кто владеет информацией — тот в более выгодном положении, чем если бы он ей не владел.)
Будущий (надеюсь) хаброюзер mightydelight написал мне в личку его видение сервиса:

Сервис должен быть не коммерческим (основанным на группах Facebook и Facebook Places, к примеру, это снимет всю нагрузку на то за чей счет это делать, плюс есть много приложений на всех платформах, плюс Facebook Places (готовая платформа, и приложения для всех моб. платформ, для того чтобы быть распространенным и мобильным если надо что-то сфотографировать и отослать к примеру).

Сервис не должен принадлежать кому-то. Это не бизнес. Никто не должен пытаться заработать. Т.к. если этот ресурс будет чьим-то он будет уязвим. В случае популярности его банально закроют, купят, подкупят, запугают и т.п. и т.п. Поэтому Facebook подходит как никто другой.

Хозяевами ресурса должна быть группа людей. Костяк который удастся собрать как по началу так и потом после ведения статистики. Люди долгоиграющие, не просто выплеснуть инициативность, и потом забить, а те кто будет постоянно этим заниматься, понимая цель. Это может быть несколько десятков человек, может больше. Принцип делегирования власти как на Хабре вести карму и т.п. и чтобы добавлять информацию все же могли люди через определенный фильтр. Информации возможно будет не много по началу, но так и надо. Нужна осязаемая база данных. Не одна показательная казнь, и не миллион не понятно чего. Пара сотен, явных и четких. А главное адекватных и реальных проблем.
Один человек выкладывает, другие могут только комментариями, like'ами добавлять свой голос что они тоже видели и тоже хотят чтобы эту проблему решили.Можно добавлять информацию, обновления, но все через доверенных людей. Чтобы не было бедлама. В этом ценность такой базы, все будет только если все будет в порядке.

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

Но взять на вооружение я думаю они смогут. Люди-то сами не знают чего хотят и редко могут объяснить внятно, что да где… А тут будет показательно видно. В каком районе какие проблемы. Какие срочные какие нет. Были предложения делать карты по которым будет видно месторасположение и количество людей взволнованных и т.п.
Не надо изобретать велосипед, все можно реализовать на том что уже есть. Ценность не в качестве кода и т.п., а в том каким образом все будет делаться. Очень в тему аналогия с Хабром… он классный не с технической точки зрения, а из-за своего общества, своих правил, и подхода к делу. Это проект сделанный современными людьми. А давать троглодитам цифровые палки в руки это дорого в никуда.
А все выступления и ЖЖ и т.п. это максимум можно добиться чтобы Москву брусчаткой покрыли. Хотя Лебедев рассказывал, что тротуары не асфальтированные это признак расширенной зоны комфорта, в европейских городах (http://www.youtube.com/watch?v=RxF63VvcJdw). А у нас решили сделать одну из миллиона результатов, а систему не менять. Но это на самом деле, тоже самое, что ходить осенью по полю и разбрасывать овощи на землю. Вместо того чтобы их вырастить. Заткнули рот еще на год другой, чтобы продолжать воровать и НЕ делать свою работу.

Я в этом аспекте краудсорсинга думал не только о том чтобы фонари и дороги чинить. А и на много шире. Любые противозаконные действия, коррупцию и т.п. Цель сделать по умному в плане что не убьешь систему кем бы ты ни был, и в том чтобы она была одна и только тогда о ней узнают все и только тогда она заработает.

Хотя не вижу ничего плохого чтобы гос. сотрудники ею пользовались. Тот же президент с поездкой в какой-то город России может глянуть.а что на самом деле там с вопросами которые его интересуют.

Правдивое, народное, некоммерческое СМИ.

(если я угадал и вы об этом, пишите могу погрузить еще, хотя предыдущие сообщения почему-то инициатив не вызвали. Многие любят только потрындеть, попытаться наживаться на каком-то проекте и т.п. и т.д. Я же говорю о том что может изменить систему в принципе. Пусть начало будет с Москвы, зато масштабироваться можно и за пределы России в случае успеха. БД может быть и огромной, просто фильтры тогда нужны. А для начала надо не много… Суть в идее и подходе. Реализация — уже технические мелочи.)

ps: Не обязательно это рассматривать как революцию какую-то, этого как раз делать и не надо, от этого будет хуже всем. Просто ресурс позволяющий понять что люди хотят, что их волнует, Кто виноват и что с ним делать это не наше дело. Наше дело мимолетом проезжая яму, сфотать отправить и забыть. И не накапливать в себе злость. Как только цели растекаются властям тоже становиться сложно что делать. Проблем миллионы… а делать как Путин, когда законы про пожарную безопасность вводят только после того как пол сотни людей погибло из-за старых не работающих это как грустно, та и вряд ли эффективно.
ps2: Я сам FB не использую, но просто лучше варианта на вскидку не придумал. И остальные мысли только подтверждают что это верный вывод. И политика компании не будет мешать, и ресурс взрослый и добротный, и все уже готово (учитывая FB Place), и лично мне, не просто любого интернет пользователя, а в принципе любого человека, попросить зарегистрироваться на FB не зазорно. И в плане анонимности, либо только имя, либо полная инфа, решать уже человеку. Было бы место, а люди которым есть на что пожаловаться и что рассказать появятся.
ps3: как twitter'ом пользуются врачи на западе, ресурс не государственный и не официальный, но это не мешает им пользоваться. Подобные ресурсы довольно качественные и если они полностью выполняют все твои требования, то зачем… Тем более, что если это будет кому-то принадлежать, то это явно источник проблем, и рушит всю идею. Посмотрите на того же Навального…

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность