SnappySnoop. Причины моего молчания.
В последнее время мне стали очень часто задавать вопрос: “Что со SnappySnoop, не закинул ли ты этот проект?”. В этом посте я попытаюсь дать ответ на данный вопрос.
В настоящее время работы над Снапом временно приостановлены. Причин тому несколько:
Во-первых, сейчас я активно занимаюсь еще одним небольшим проектом, который, как мне кажется, должен получиться интересным и полезным. По понятным причинам говорить о том, что это за проект я пока не могу. Скажу лишь, что обрисовав своим друзьям общую идею получил твердое добро на ее реализацию.
Во-вторых, много времени стал занимать блог. Честно говоря, до сих пор пытаюсь определиться о чем конкретно я пишу. У меня нет одной конкретной темы, о которой бы хотелось писать и писать. Вместо этого имеет место быть интерес ко многим различным по своей сути вещам, которые, как мне кажется, имеют слабое отношения к программированию. А так как блог все же называется “codeart”, то складывается ощущение, что данным темам не место на страницах этого ресурса.
Чтобы хоть как-то примириться со свой совестью я решил создать рубрику - “Офтопик”, в которой и буду публиковать весь “не формат” данного блога. Кроме этого, меня постоянно глодало чувство неудовлетворенности по поводу внешнего вида и организации материалов на блоге. В конечном итоге они тоже были изменены, но на это потребовалось время, которое пришлось оторвать от Снапа.
В-третьих, код Снапа требует значительного редизайна. Это связано с тем, что долгое время я писал как бог на душу положит. Просто, чтобы проверить работоспособность своих идей. Сейчас же хочется иметь более строгую и логически верную структуру. Чтобы можно было привлекать других людей в разработку Снапа. И чтобы им не пришлось ломать свой мозг в тщетных попытка понять, что делает тот или иной модуль. Уже несколько человек предложили помочь, а мне стыдно показать свой неряшливый код.
Редизайн мне всегда давался нелегко, очень трудно заставить себя переделывать работающий код, в котором сам худо бедно можешь разобраться. При этом я понимаю, что если буду продолжать в том же духе, то через некоторое время сам буду смотреть на исходники и думать: “Какой идиот мог это написать!?”. Поэтому решение переписать исходники принято окончательно и бесповоротно. Осталось дело за малым - заставить себя работать.
Сейчас я подумываю использовать библиотку jQuery для построения пользовательского интерфейса. Но меня смущает тот факт, что на многих сайтах используются довольно старые версии этой библиотеки и некоторые функции в них реализованы несколько иначе, чем в последних версиях. Я не знаю как в таких случаях наилучшим образом загрузить новую библиотеку, чтобы не порушить логику работы сайта (ведь если jQuery загружена, то она для чего-то нужна?). В частности меня волнуют функции width и height, которые я использую наиболее часто, для определения ширины окна. В более ранних версиях ими можно было задавать только ширину и высоту объектов, а получить текущие значения было невозможно.
Правда есть другой вариант - использовать вместо jQuery свою библиотеку, которая уж точно будет уникальной и не будет конфликтовать с уже загруженными на сайт скриптами. Я даже накидал небольшой код этой библиотеки, в основу положив ту же идею построения цепочек вызовов, что и в jQuery. Но опять же смущает, тот факт, уже сейчас имеет множество хаков, котрые позволяют ей работать с большим количеством браузеров. Сдирать их один в один не хотелось бы, а делать повторно ту же работу, что и Джон Рейзиг (создатель jQuery) не очень то интересно.
Вот так и мучаюсь вопросом, что лучше
Кроме этого ведется работа над модулями для Снапа, такие например, как регистрация и авторизация пользователей. Возможно, лучше было бы взять, модули от старых проектов, но мне хочется учесть прошлые ошибки и сделать Снапа на порядок более качественным, чем все остальные мои работы.
В заключение хочу еще раз сказать, что работа на SnappySnoop обязательно будет возобновлена. Просто нужно проявить немного терпения.
Vadim
Гость
Опечаточка в 4м абзаце: “до сих поп пытаюсь”
ACID Jesus
Гость
Начнёшь писать свлю жс-библиотеку и в итоге выйдет как с серверным кодом - получится каша и пожелеешь что сразу не начал писать нормально, но основе фреймворка того же скажем
jeka911
Гость
width и height можно написать отдельным модулем (чтобы не зависеть от версии), но целую библиотеку переписывать - адский велосипед, имхо.
А разве не получается через noConflict подружить разные версии? Я не пробовал никогда, но вроде как должно получится.
Evgeny Sergeev
Веб-разработчик, автор блога codeart.ru
ACID Jesus, не думаю, что так получится.
Николаич, Эм… чего это такого?
jeka911, ты где пропадал? Целую библиотеку переписывать не придется, многое, что есть в jQuery мне просто не нужно. Ну а подружить две версии не так то просто. Если я не ошибаюсь, то noConflict служит, для того чтобы подружить библиотеки использующие ‘$’ (например Prototype).
jeka911
Гость
Где меня только не было
Как-то мне интересна эта идея стала, провел небольшой тест. Чтоб работало как надо (обе версии), в подключаемой заменил все упоминания “jquery” на “jquery2″. Потом после подключения script src, вызвал - var j = jQuery2.noConflict(); . Т.о. через j - доступна последняя версия (подключаемая), а через $ и jquery - старая (оригинальная которая была на странице). Тестил на 1.1.2 и на 1.2.3.
Я в лицензиях сильно не разбираюсь, но одна из jquery - MIT, по ней вроде как можно менять код.
P.S. Николаич - спамер.
Evgeny Sergeev
Веб-разработчик, автор блога codeart.ru
jeka911, тогда николаеча в топку
Я тоже думал насчет смены имени… Но как-то не очень мне эта идея нравится
jeka911
Гость
Да, как-то неспортивно
согласен.