Алексей Карташов

Алексей Карташов

С нами с 04 февраля 2013; Место в рейтинге пользователей: #58
Алексей Карташов
25 ноября 2015, 14:55
+1


p.s. эх, вот бы они ещё систему прав пересмотрели, чтобы не надо было на каждый чих по группе пользователей создавать. И поддержку Postgres в xpdo добавили бы… Мечты-мечты)
Алексей Карташов
25 ноября 2015, 14:38
0
Хех, а я даже не заметил, кто автор топика)

просто хотел посмотреть, что щас в моде
Вообще, вся эта ситуация сложилась из-за того, что хипстота возвела ангуляр в статус культа, не особо разбираясь в вопросе, а потом, следуя веяниям этой моды, как на дрожжах начали плодиться фреймворки (rivets, ractive, vue) со схожими подходами, мол смотрите, мы такие же, как и ангуляр, только «лучше»! Ага-ага.

Кто-то идёт своим путём (react, riot, mithril), со своими синтаксисами и идеологиями. Кто-то от этого тащится, но меня к такому жизнь не готовила :) «Смешались в кучу — кони, люди».

Из новой гвардии есть ещё Ember. О нём могу сказать, что это хардкорная годнота с высоким порогом вхождения (мой уровень пониже, поэтому сильно в него не углублялся, времени нет).
Из старой — есть Backbone (со своим разношёрстным набором расширений, на каждый из которых надо потратить кучу времени, чтобы разобраться) и ExtJS.
На Backbone надо много писать руками, у ExtJS весь ui — компонентный уже из коробки, с декларативным подходом (что удобно).

В итоге, пришло осознание, что зря я в своё время с ExtJS'ом не подружился :-D
Грустно. И забавно одновременно)

Тогда в голове прочно сидела мысль, что Ext — это уже что-то монструозно-устаревшее и уж в наши-то времена по-любому есть что-то более удобное. Ага, как же.

Конечно, он тоже не без недостатков (с кучей недостатков)), но быстрота разработки (благодаря декларативному подходу), куча готовых ui-компонентов для crud-интерфейсов и по порогу входа ниже среднего — всё это перекрывает его недостатки и наповал валит всю эту новомодную разношёрстную братию. Для своих проектов и админок — идеален. Но делать на нём интерфейсы со сложной ux-логикой я бы всё-равно не стал, ибо разработка легко может перейти от декларативной к постоянной борьбе с самим фреймворком.

посмотрим, что MODX 3 предложит
Вот прям чувствую, что ничего нового не предложат. И надеюсь на это. Потому что ExtJS для задач modx'а подходит идеально и доказал временем свою пригодность.

Другим достойным кандидатом может быть только Ember, но авторы Modx'а вряд ли на это пойдут, потому что порог вхождения для написания новых компонентов сильно увеличится, старые авторы отсеятся, новых не прибавится.

И вряд ли они выберут что-то построенное на jQuery (типа KendoUI). Потому что это те же яйца, только в профиль и сильно урезанные.

А больше выбирать-то и не из чего.

Компоненты, не завязанные на ext, легко можно делать хоть сейчас. Кому это нужно — тот пользуется такой возможностью, а кому нет — использует ext. Баланс идеальный. Вряд ли это станут менять. Да и не хотелось бы.
Единственное, что хотелось бы видеть — так это коннекторы чуть более restful-ориентированными и ui-kit (css-фрейворк со гайдлайнами), не завязанный на ext, описание которого вывести отдельным разделом в документации (чтобы получился свой getbootstrap.com). Вот тогда будет действительно офигенно и абсолютно универсально и каждый будет использовать то, что ему нравится и что умеет.
Алексей Карташов
25 ноября 2015, 09:42
0
Блин, с телефона минус случайно задел, сорри)
Алексей Карташов
25 ноября 2015, 09:08
0
Хм, что-то новенькое.
А не могли бы вы в той теме (ссылку на которую я выше кинул) по-подробнее расписать — что на что поменяли и т.п. На будущее, ткскзать, и для потомков)
Алексей Карташов
24 ноября 2015, 20:08
2
+5
Я в ближайшие несколько месяцев буду писать фронтенд для одного крупного b2b-сервиса (бекендеры его делают на yii2, не modx). С кучей динамики — crud-таблицы, модалки, вот это всё.
Я очень много времени провёл в выборе адекватного фреймворка/библиотеки с двухсторонним дата-биндингом, отсутствием магии в исходниках, простоте в поддержке кода, и отсутствием навязывания структуры приложения.

Много чего смотрел — vue.js, riot.js, angular, react, ractive, rivets, mithril, куча их
plnkr.co/edit/leZaT043Yffz4LfG8Ykq

Так вот. Нахер ангуляр. Если вам кто-то рьяно советует брать ангуляр, то это либо очень хороший спец (каких действительно мало), либо ведомый на моду новичок (который не делал ничего сложнее примеров из туториалов). Причём очень хороший спец вряд ли будет вам его советовать, потому что он прекрасно знает сколько подводных камней может собрать неопытный разработчик. Писать на нём что-то серьёзное — это постоянная борьба с самим фреймворком (при условии отсутствия должного опыта). А набивать этот опыт — смысла тупо нет ибо сами авторы от своих подходов уже отказались и пилят новую версию с нуля вообще выбросив дата-биндинг со своим dirty-checking'ом.

Реакт можно брать и изучать только в том случае, если вас не воротит от адовой смеси html и типа-js (jsx). Меня лично воротит :-D

Та же история с riot — он прикольный, но для действительно сложных интерфейсов может не подойти. Та же адова смесь логики и вьюхи, но до кучи — каждый компонент должен лежать в отдельном изолированном tag-файле. Расширяемые насыщенные интерфейсы делать сложновато.

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

Rivets/ractive — всё туда же, но со своими приколами.

Лично для себя я выбрал (не поверите) матрёшку. Я приверженец выбранного автором матрёшки подхода — вьюхи отдельно, логика работы с вьюхами — отдельно. Из коробки двухсторонний дата-бинд без магии (на геттерах и сеттерах). Это то, чего мне так не хватало в любимом мною Backbone'е.
Структура приложения не навязывается — хочешь писать на «классах» — пиши, хочешь писать универсальные расширяемые ui-компоненты — пиши (если умеешь)). Шаблонизатор — бери любой по вкусу (я выбрал swig). Хочешь компилировать вьюхи на этапе сборки? Всё в твоих руках (привет ангуляр, vue, ractive).
Да, кода надо писать побольше, но зато он полностью под твоим контролем и в нём разберётся любой джуниор, миддл — тем более.

А если нету жёстких условий по интерфейсу и дизайну — берите ExtJS, используйте его обширную библиотеку готовых компонентов и не заморачивайтесь.

Как-то так.
Алексей Карташов
23 ноября 2015, 20:32
0
Вот здесь мы многие варианты разбирали
modx.pro/help/4080/

Может и вам что-нибудь из того списка поможет
Алексей Карташов
21 ноября 2015, 17:46
0
А Яндекс вам ключ для доступа к апи уже выдал?
Потому что мне, для этих же целей, он ключик зажал. Прям хоть в яглу иди, блин.
Алексей Карташов
13 ноября 2015, 17:31
+1
В настройке session_cookie_domain добавьте следующее:
.domain.tld
где вместо domain.tld подставьте домен своего сайта (точку в начале не забудьте).
Алексей Карташов
12 ноября 2015, 19:03
0
Сниппет, который выводит это меню, точно вызывается НЕкеширонным?
Алексей Карташов
10 ноября 2015, 20:46
0
По вашему описанию не понятно — что и как вы делаете.
Но имейте в виду ещё и такой нюанс. Может быть проблема в этом?
Алексей Карташов
29 октября 2015, 08:15
+3
socfish (как уже писали выше). Сейчас есть ещё intarget и множество других.
Да даже я для себя делал такой вот скрипт clickjacking'а, только так ни разу им и не воспользовался ибо совесть.

Холиваров на эту тему было мерянно-немерянно и прошли они года два назад. Как-то поотстали вы от современного интернет-маркетинга)
Судя по тому, что сервисы живут и здравствуют уже несколько лет — с юридической точки зрения к ним не подкопаться.
Так что смысла в ещё одном холиваре нет — все обсуждения прекрасно гуглятся. А использовать или нет, честно/нечестно, красиво/некрасиво, как обычно, каждый решает для себя сам.

p.s. сорри, веткой промахнулся
Алексей Карташов
11 сентября 2015, 18:13
+1
Я с msDiscount не работал, поэтому это гадание на кофейной гуще…

Но, первым делом, я бы изучил код msdGetDiscount-сниппета, изучил бы его логику, с какими таблицами он работает, как работает с акциями, скидками, группами пользователей и т.п.
И по аналогии написал бы плагин на событие регистрации нового пользователя, который и сделает нужную работу.
Алексей Карташов
11 сентября 2015, 17:06
0
Здравствуйте!
Обратиться можно, конечно, да только вот, к сожалению, времени нет. И в ближайшие несколько месяцев — не появится.

Но я могу дать вам пару рекомендаций, чтобы вы смогли двигаться в верном направлении :)

1. Обратите внимание на msDiscount.
2. Можете также обратиться к любому разработчику из списка пользователей сообщества. Уверяю — там много талантливых разботчиков (гораздо талантливее меня)), с которыми вы сможете прийти к каким-либо договорённостям.
3. Создать объявление о работе — тоже вариант :)

Надеюсь, помог)
Алексей Карташов
07 сентября 2015, 17:59
0
Более полной документации, насколько мне известно, просто нет.
По интернету, конечно, есть отдельно взятые статьи и на русском, и на английском, но назвать это документацией — сложно)
Алексей Карташов
25 августа 2015, 01:28
0
Какая-то бессмысленная там статья.

MyISAM не поддерживает транзакций. И php никаким образом не может заставить эти транзакции работать, потому что это уровень базы данных — если мускул не умеет, то php тут бессилен.
Вызов функций $modx->beginTransaction(), $modx->commit() и $modx->rollBack() не даёт ровным счётом ничего, ибо это просто обёртки над стандартными одноимёнными функциями встроенного в php PDO-класса.

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

Как мы выяснили выше, xPDO умеет работать только с MyISAM. Транзакции есть в InnoDB.
Автор в той статье не уточняет — научил ли он работать modx с innodb или нет. Если бы научил, подозреваю, что статья была бы именно об этом, а не о транзакциях.

Вывод? Какая-то бессмысленная там статья.
Алексей Карташов
24 августа 2015, 22:38
+1
Во времена, когда меня ещё не тошнило от ExtJS'а и я не оставлял попыток познакомиться с ним поближе, я тоже натыкался на описываемое в статье поведение. И мне это тоже жутко не нравилось.
Решал это тем, что в методе открытия окна делал проверку на существование этого же окна в dom'е. Если в dom'е оно есть, то делаем hide(), remove(), а потом создаем окошко заново.
У окна, соответственно, жестко прописанный id-шник.

Как-то так:
// ...
,createDiscount: function(btn,e) {
	// находим dom-элемент
	var w = Ext.getCmp('ms2discount-window-discount-create');
	// если есть, скрываем и удаляем
	if (w) {w.hide().getEl().remove();}

	if (!this.windows.createDiscount) {
		this.windows.createDiscount = MODx.load({
			xtype: 'ms2discount-window-discount-create'
			,id: 'ms2discount-window-discount-create'
			,fields: this.getDiscountFields('create', {})
			,listeners: {
				success: {
					fn: function() { this.refresh(); },
					scope: this
				},
				hide: {
					fn: function() {
						this.getEl().remove()
					}
				}
			}
		});
	}
	this.windows.createDiscount.fp.getForm().reset();
	this.windows.createDiscount.show(e.target);
}