Comments 95
>>> Нужны ли вообще такие инструменты разработчикам и пользовались бы вы сами этим помощником?
Нет, потому что все мои куски кода уже оформлены в библиотеки и классы и лежат в личном репозитории, откуда я могу их просто переносить и сразу же использовать.
Не вижу смысла в том, чтобы многократно дублировать один и тот же кусок кода в разных местах.
Нет, потому что все мои куски кода уже оформлены в библиотеки и классы и лежат в личном репозитории, откуда я могу их просто переносить и сразу же использовать.
Не вижу смысла в том, чтобы многократно дублировать один и тот же кусок кода в разных местах.
Спасибо. Хороший способ.
В отличии от предыдущего коментатора, мы в работе используем именно дублирование кода повсеместно с маленькими самописными библиотеками. И людей поступающих аналогично довольно много, но далеко не все. Да и новички часто пользуются вставкой именно готового кода и по нему учатся. Поэтому считаю нужное дело.
Спасибо =)
вы наверное про шорткоды хотели сказать
действительно, зачем объекты, зачем библиотеки, когда платят за строчку кода?
Это ваши догадки только за что платят.
А есть ещё какой-то повод повсеместно использовать дублирование кода?
Опять не угадали. Дублирование используется там, где есть необходимость (частый вызов функции тоже «стоит»), либо просто копируются файлы с исходниками, в которых лежат функции и включаются. Это тоже дублирование.
А что вам мешает это оформить это в библиотеки и классы?
А зачем, объясните? Всё делается по мере необходимости. Создавать сплошь и рядом всё объектно-ориентированно не нужно для текущих задач.
Ну, наверное, затем, что когда/если в тонне копипаста обнаружится ошибка, либо изменятся условия применения (стороннее апи) и тд и тп, то вам придётся долго и мучительно шерстить всю тонну копипаста во всех стопиццот местах и проектах. И не факт, что вспомните все стопицот мест, может в паре-тройке останется. Антипаттерн хорошо известен и описан под именем, — «фальшивая черепица».
Вы так говорите будто знаете всё про мою работу. Бросьте. Там, где нужны шаблоны проектирования типа самого используемого «замещение зависимостей», они там используются.
Обана! Так вы же сами это написали!
Первый комментатор написал, что повторяющиеся куски оформил в классы-библиотеки и аля-улю. Вы тут же заметили, что вы _в_отличии_ от него, широко используете индусский метод копипасты. Очевидно, в тех самых случаях, где он использует библиотеки. Иначе стОило ли делать такое замечание, не?
Первый комментатор написал, что повторяющиеся куски оформил в классы-библиотеки и аля-улю. Вы тут же заметили, что вы _в_отличии_ от него, широко используете индусский метод копипасты. Очевидно, в тех самых случаях, где он использует библиотеки. Иначе стОило ли делать такое замечание, не?
Про индусский метод вы глубоко заблуждаетесь, видно не знаете вообще что это такое.
Извините, не имею желания продолжать эту бесполезную дискуссию.
Извините, не имею желания продолжать эту бесполезную дискуссию.
Почему же не знаю? Было дело, заменял собой целую индийскую контору. Те мегатонны копипаста, что они дружно наплодили оказалось проще переписать (в одиночку) заново, чем по десяткам файлов исправлять одну и ту же кривость, многократно заботливо скопированную трудолюбивыми сынами и дочерьми дружественного индийского народа. Вас — извиняю, раз просите, тем более, с вашим кодом мы, скорее всего, не встретимся никогда, так что мне, в общем-то, всё-равно, просто вздрогнул, вспоминая печальный опыт встречи с работами копипастеров…
А зачем бездумно копировать пару строчек кода в кучу мест проекта? Оформлять пару строк в библиотеку/класс так же смысла не имеет. Вообще ни в чем нету смысла, если подумать.
Пару строк проще заново написать. Иногда даже получается то же самое, как в том самом судебном случае оракел против гугла :)
Согласен. Посему вопрос, в чем смысл? Человеку, который в состоянии эти пару строк написать самостоятельно — сборник готовых «снипетов» в том понимании, в котором они представлены на сайте, ненужен. А человеку который не в состоянии это сделать, лучше бы попытаться все же самому написать, ибо учиться как?
UFO just landed and posted this here
Платят за результат.
Было бы интересно узнать, как именно этот репозиторий оформлен, какие средства используются, как выглядит сценарии работы с ним.
До банальности просто всё это устроено. Алгоритмы собраны в функции, функции собраны в классы. Некоторые вещи представляют собой несколько файлов. Что-то является модулем (например, штука для заливки файлов с предпросмотром), что-то простым файлом, содержащим класс (например, универсальный генератор превьюшек на все случаи жизни). Никакой автоматики (например, контроллера зависимостей) пока нет.
Если мне нужно что-то — я копирую соответствующие файлы/папки в проект, и ядро это подхватывает.
Если мне нужно что-то — я копирую соответствующие файлы/папки в проект, и ядро это подхватывает.
Согласен, к тому-же когда я пишу код то незнаю какой кусок мне понадобится потом. я использую поиск по проектам в редакторе
я использую сниппеты, только я их так не называл. Складываю в свою вики
Жаль, что не хватает кармы, чтобы поставить плюс.
Интересный проект. Но есть несколько интересных нюансов.
Снипеты могут добавлять все, правильно? Какие приоритеты (кроме скорости — но это для вас) и правила добавления? Не отправляйте читать на сайт, лучше в коменте ответить. Дальше. Кто будет проверять корректность работы снипетов, что были добавлены людьми?
Что касается сайта: мне кажется, на главной не стоит делать кучу новых поступлений. Ну и может как-то более детально категоризировать, сделать обязательные теги.
Снипеты могут добавлять все, правильно? Какие приоритеты (кроме скорости — но это для вас) и правила добавления? Не отправляйте читать на сайт, лучше в коменте ответить. Дальше. Кто будет проверять корректность работы снипетов, что были добавлены людьми?
Что касается сайта: мне кажется, на главной не стоит делать кучу новых поступлений. Ну и может как-то более детально категоризировать, сделать обязательные теги.
мм, Github Gist, не?
Отличный ресурс. Сам им хотел пользоваться. Но мне ближе идея большого хранилища, где можно хранить не только свои но и найти сторонние решения.
ну а чем вас тут гист не устроил?
навигация меня смутила (неудобная как по мне)
это да, но вопрос предпочтений. весь описанный вами функционал там есть + «All gists are git repositories, so they are automatically versioned, forkable and usable as a git repository.»
в любом случае, желаю удачи в вашем начинании
в любом случае, желаю удачи в вашем начинании
Спасибо за конкретный ответ.
По поводу приоритетов: здесь заложена но пока не реализована возможность модерирования.
С тегами тоже согласен.
По поводу приоритетов: здесь заложена но пока не реализована возможность модерирования.
С тегами тоже согласен.
Мне лично сервис понравился, спасибо, буду пользоваться
Отличный сервис!
Рекомендую поставить на главной странице в блоке «о проекте» социальные кнопки. Хотел ретвитнуть — а кнопки нету…
Рекомендую поставить на главной странице в блоке «о проекте» социальные кнопки. Хотел ретвитнуть — а кнопки нету…
Да, отличный сервис.
Только зачем вы CSS и JS прямо в код включаете, а не отдельными файлами?
Только зачем вы CSS и JS прямо в код включаете, а не отдельными файлами?
UFO just landed and posted this here
Для скорости помогает включение gzip в nginx и Cache-Control (тогда нужно к js, картинкам и css приписывать ?v=… чтобы после деплоя новые загружались) вот пример конфига gist.github.com/be54db5f7063a804e5e6
Так-же приятно когда страницы менются без перезагрузки, это делается просто (например на Github когда ходим по директориям в проекте)
Ну и размер главной страницы у вас неприлично большой (200кб)
developers.google.com/speed/pagespeed/insights
Так-же приятно когда страницы менются без перезагрузки, это делается просто (например на Github когда ходим по директориям в проекте)
Ну и размер главной страницы у вас неприлично большой (200кб)
developers.google.com/speed/pagespeed/insights
Я свои наработки и заметки держу в собственной wiki.
API для ресурса планируется? Хотелось бы получать список, искать в списке сниипетов.
Для чего это? Было бы хорошо иметь быстрый доступ к сниппетам непосредственно из редактора кода в СMS, либо в любой другой оболочке, работающей со сниппетами.
Методы API:
snippet.search (name, [limit])
snippet.getList ([limit])
snippet.getSource (id)
Очень хорошо было бы наличие в каждом сниппете (конкретно для PHP) PHPDoc комментария.
Так же совсем замечательно было бы наличие мультиязычных названий у сниппетов.
Спасибо!
Для чего это? Было бы хорошо иметь быстрый доступ к сниппетам непосредственно из редактора кода в СMS, либо в любой другой оболочке, работающей со сниппетами.
Методы API:
snippet.search (name, [limit])
snippet.getList ([limit])
snippet.getSource (id)
Очень хорошо было бы наличие в каждом сниппете (конкретно для PHP) PHPDoc комментария.
Так же совсем замечательно было бы наличие мультиязычных названий у сниппетов.
Спасибо!
Быстренько пробежался по этим снипетам, половина слишком проста что бы это не знать, вторая половина написана так, что я бы это никогда не использовал бы.
Хороший сервис. Пожалуйста, укажите в статье, что сервис предназначен не только для PHP-сниппетов, а то указанные хабы несколько сбивают с толку.
>И сайт получился действительно быстрым (мое мнение)
Сейчас сайт жутко тормозной, страница со снипетом 160Kb.
CSS и JS прямо в теле страницы, не кэшируются браузером, а постоянно грузятся снова.
Сейчас сайт жутко тормозной, страница со снипетом 160Kb.
CSS и JS прямо в теле страницы, не кэшируются браузером, а постоянно грузятся снова.
Я гляжу эти сервисы вам настолько понравились, что вы решили и внешний вид у них позаимствовать — snipplr.com :) А так прикольно, что сам недавно хотел запилить такой сервис, но взгляную на snipplr отказался от этой затеи — не хочу лишних сущностей плодить.
Да, сайт классный. И именно он меня вдохновил. + еще один www.codesphp.com
Надо добавить вторизацию через соц. сети
Постраничную навигацию бы доделать, а то после просмотра сниппета возвращаешься всегда на первую страницу.
А вы используете фреймворки? Просто сейчас во всех фреймворках очень жесткая привязка, один класс — один файл, и ваши функциональные сниппеты не впишутся в их среду. Уж лучше писать небольшие классы, которые могут действительно многократно использоваться или, скажем, разбить по фреймворкам и писать код, зависящий от конкретного ядра.
Хотел выложить сниппет, а регистрации через FB или TW нет. Исправляйтесь ;-)
Сервис интересный, понравилось все, единственное что я бы подключил на вашем месте History API, не слишком это трудно, но для пользователя очень удобно
Сервис интересный, понравилось все, единственное что я бы подключил на вашем месте History API, не слишком это трудно, но для пользователя очень удобно
Мне нравится реализация cнипетов в Sublime Text 2. Они работают так, что пользователь начинает набирать функцию или часть конструкции, затем нажимает tab и, на основанииь того что он начал набирать (паттерн находится в сниппете), выводится сниппет или список. По нажатию enter, в случае списка, выводится весь сниппет причем курсор или курсоры находятся уже в нужных местах.
Эти сниппеты есть уже готовые, для основных фреймворков, а можно создавать свои, как локально, так и на github, причем рекомендуется заводить отдельный аккаунт на github для сниппетов.
Эти сниппеты есть уже готовые, для основных фреймворков, а можно создавать свои, как локально, так и на github, причем рекомендуется заводить отдельный аккаунт на github для сниппетов.
Отлично. Рад за ваш проект, надеюсь он получит поддержку и развитие. Сам планировал писать в точности такой же.
Хотелось бы, чтобы у вас появилось какое-то API и более удобный интерфейс.
Критика по пунктам.
— Сейчас категории видны в только подвале, хотя это один из важных элементов поиска сниппетов, который стоило бы оформить тегами в боковой колонке.
— Необходимы ключевые слова на сниппет и динамический поиск, к примеру, искать отключение выделения user-select можно как по запросу «select», так и по запросу «выделение», но сделать это быстро и удобно через ваш поиск совершенно невозможно.
— Третье, самое важное — размещайте код сниппета прямо в блоке с заголовком. Очень неудобно переходить на страницу сниппета ради какого-то мелочного куска кода. Заголовок сниппета вообще почти никогда ни о чем не говорит, а вот код можно почти всегда сразу узнать. В идеале, конечно, вообще отказаться от заголовков и оперировать прокомментированными кусками кода, как это сделано к примеру в Backbone annotated source. Заголовок и описание сниппета в отрыве от кода — самая бессмысленная и досадная вещь.
Хотелось бы, чтобы у вас появилось какое-то API и более удобный интерфейс.
Критика по пунктам.
— Сейчас категории видны в только подвале, хотя это один из важных элементов поиска сниппетов, который стоило бы оформить тегами в боковой колонке.
— Необходимы ключевые слова на сниппет и динамический поиск, к примеру, искать отключение выделения user-select можно как по запросу «select», так и по запросу «выделение», но сделать это быстро и удобно через ваш поиск совершенно невозможно.
— Третье, самое важное — размещайте код сниппета прямо в блоке с заголовком. Очень неудобно переходить на страницу сниппета ради какого-то мелочного куска кода. Заголовок сниппета вообще почти никогда ни о чем не говорит, а вот код можно почти всегда сразу узнать. В идеале, конечно, вообще отказаться от заголовков и оперировать прокомментированными кусками кода, как это сделано к примеру в Backbone annotated source. Заголовок и описание сниппета в отрыве от кода — самая бессмысленная и досадная вещь.
> В идеале, конечно, вообще отказаться от заголовков и оперировать прокомментированными кусками кода, как это сделано к примеру
Нереально и непонятно нафиг это надо, логичнее позволить автору снипета внятно описать по-русски назначение снипета, чем извлекать сводную информацию каким-то алгоритмом написанным на коленке. В куче сниппетов вообще комментариев не будет, особенно в «каком-то мелком кусочке кода» :)
Нереально и непонятно нафиг это надо, логичнее позволить автору снипета внятно описать по-русски назначение снипета, чем извлекать сводную информацию каким-то алгоритмом написанным на коленке. В куче сниппетов вообще комментариев не будет, особенно в «каком-то мелком кусочке кода» :)
3. Не согласен, т.к. сниппет может и из десятка строк состоять. Лучше писать понятный заголовок.
Этот код может быть свернут, но он не дожен быть на другой странице. Мне заголовки ничто не говорят, это — субъективная точка зрения автора на его код, в то время как код скажет все.
По поводу поиска — это да. Планирую сделать расширенный поиск. Так удобнее.
По поводу неудобства просмотра кода — справа под каждым заголовком сниппета есть иконка глаз, нажимая на которую раскрывается сниппет. И вам не обязательно переходить на эту страницу.
Спасибо за конструктивные замечания =)
По поводу неудобства просмотра кода — справа под каждым заголовком сниппета есть иконка глаз, нажимая на которую раскрывается сниппет. И вам не обязательно переходить на эту страницу.
Спасибо за конструктивные замечания =)
Норм идея, для сайта. Тока дизайн неудобный
1) Нет кнопки «поиск» в форме поиска.
2) Куча серых бейджеров смотрятся… как куча серых бейджев, надо цвет или что-то ещё, может убрать фон серый у них )
3) Тултипы категория, дата создания, пользователь и т.д. — это для совсем тупых пользователей? :)
4) Я бы вызуально разделил последние снипеты на две колонки на морде сайта
5) Кому вообще нужны последние снипеты? Выводите популярные снипеты. Если нет рейтинга популярности можно просто счётчтик просмотров вести
6) Пункт меню «страницы» очень странный, может всё таки информация или там помощь, не? :)
7) Что такое сниппет и для чего вообще этот сайт? — я бы вынес это на самый верх. Уж точно полезнее чем последние снипеты.
8) Категории снипетов в подвале — fail. Надо наверх или в сайдбар.
9) snippets.su/topic/141/a/ snippets.su/topic/141/aaaaa/ snippets.su/topic/141/aasdfalskdjflkasj/ — только по адресу с правильным адресом должен быть http 200, остальные должны редиректить на правильный урл 301-редиректом
10) Нельзя запостить снипет без регистрации — неудобно.
имхо :)
1) Нет кнопки «поиск» в форме поиска.
2) Куча серых бейджеров смотрятся… как куча серых бейджев, надо цвет или что-то ещё, может убрать фон серый у них )
3) Тултипы категория, дата создания, пользователь и т.д. — это для совсем тупых пользователей? :)
4) Я бы вызуально разделил последние снипеты на две колонки на морде сайта
5) Кому вообще нужны последние снипеты? Выводите популярные снипеты. Если нет рейтинга популярности можно просто счётчтик просмотров вести
6) Пункт меню «страницы» очень странный, может всё таки информация или там помощь, не? :)
7) Что такое сниппет и для чего вообще этот сайт? — я бы вынес это на самый верх. Уж точно полезнее чем последние снипеты.
8) Категории снипетов в подвале — fail. Надо наверх или в сайдбар.
9) snippets.su/topic/141/a/ snippets.su/topic/141/aaaaa/ snippets.su/topic/141/aasdfalskdjflkasj/ — только по адресу с правильным адресом должен быть http 200, остальные должны редиректить на правильный урл 301-редиректом
10) Нельзя запостить снипет без регистрации — неудобно.
имхо :)
1. Если говорить о личной коллекции сниппетов, то самое главное — возможность быстро найти нужный сниппет. А значит нужна фильтрация по языкам и тегам. Кроме того, некоторые предпочитают вместо тегов использовать древовидные папки.
2. Как искать только по своим сниппетам? Можно ли делать сниппеты приватными? (черновик — это не совсем оно)
3. Пример верстки, состоящий из html+css+javascript — это какой язык (категория)? Так же сниппет может и из нескольких «файлов» с кодом состоять, написанных на разных языках.
4. Если говорить о публичной библиотеке сниппетов, то надо заботиться о качестве сниппетов:
4.1. Код должен быть с документацией, примерами использования.
4.2. Код должен быть с тестами, причем определять покрытие кода и запускать тесты можно автоматически.
4.3. Для этого любой человек должен иметь возможность изменить любой сниппет или хотя бы форкнуть его и предложить свой патч. (Кто может изменять сниппеты можно определять на основе репутации, как на stackoverflow.)
4.4. Если код будет меняться, то нужна система контроля версий.
4.5. Сниппеты должны быть организованы как по тегам, так и в древовидной структуре. Причем пользователи с репутацией должны иметь возможность изменять это.
4.6. Для сниппетов верстки\фронтэнда нужно что-то типа jsfiddle.net
И т.д. Получается довольно сложно…
2. Как искать только по своим сниппетам? Можно ли делать сниппеты приватными? (черновик — это не совсем оно)
3. Пример верстки, состоящий из html+css+javascript — это какой язык (категория)? Так же сниппет может и из нескольких «файлов» с кодом состоять, написанных на разных языках.
4. Если говорить о публичной библиотеке сниппетов, то надо заботиться о качестве сниппетов:
4.1. Код должен быть с документацией, примерами использования.
4.2. Код должен быть с тестами, причем определять покрытие кода и запускать тесты можно автоматически.
4.3. Для этого любой человек должен иметь возможность изменить любой сниппет или хотя бы форкнуть его и предложить свой патч. (Кто может изменять сниппеты можно определять на основе репутации, как на stackoverflow.)
4.4. Если код будет меняться, то нужна система контроля версий.
4.5. Сниппеты должны быть организованы как по тегам, так и в древовидной структуре. Причем пользователи с репутацией должны иметь возможность изменять это.
4.6. Для сниппетов верстки\фронтэнда нужно что-то типа jsfiddle.net
И т.д. Получается довольно сложно…
да не надо это всё :) Вот пример простого сайта снипетов, он работает и там нет ничего сложного: djangosnippets.org/, раньше там поиска даже не было, кажется :)
Там есть поиск, теги, рейтинг сниппетов, популярность сниппетов, версия django, комменты… Сомневаюсь, что кому-то реально нужен сайт сниппетов без поиска и вообще без всего.
Спасибо. Я не все продумал и не все реализовал из задуманного. Это пока прототип. Я не претендую на первое место. Но с такими отзывами можно действительно сделать что-то стоящие. Еще раз спасибо.
Считаю ваш сайт невероятно полезным для меня, в закладки.
чем больше таких сервисов и чем лучше они будут индексироваться поисковиками тем лучше. При программировании часто необходимые куски кода мне выдает гугл. Судя по отзывам у всех требования разные и универсального удобного инструмента здесь сделать не получится. Но как раз гугл в итоге и становится таким универсальным инструментом. Еще бы он позволял добавлять свой ответ на вопрос на который ответ не найден. И, например, сохранял бы его в аккаунте пользователя. И вообще никаких инструментов больше не надо было. А еще бы в этом же аккаунте хранить закладки и иметь возможность расставлять теги и разбивать на категории…
Обычно примеров исходников в документации по интересующей сфере более чем достаточно. Возможно новичкам было бы полезно такой вот сборник, но опять же встает вопрос качества этих кусков кода.
А вообще для новичков такого рода сервисы могут быть даже и опасны, перестанут думать…
А вообще для новичков такого рода сервисы могут быть даже и опасны, перестанут думать…
C точки зрения сервисов — коллекторов кода мне больше импонируют такие сервисы как phpclasses.org. В нём собраны не просто хаотичные куски программ, выдранные откуда ни возьмись, а оформленные в классы законченные функциональные модули, выполняющие конкретные задачи. Как правило они снабжены описаниями или example'ами. Можно скачать модуль себе, включить в свой код и ничего не исправлять внутри.
Начинание правильное, сервис мог бы быть полезным для меня, ЕСЛИ БЫ:
1. Была возможность интеграция в среду разработки. Без этого — проще пользоваться сторонними средствами.
2. Была возможность подстановки значений. Я использую сниппеты не столько как сокровенное знание об алгоритмахх, сколько уменьшение рутинной писанины. Часто случается, когда одну и ту же строчку нужно написать много раз(например название свойства — его использует геттер, сеттер и поле для хранения значения)
1. Была возможность интеграция в среду разработки. Без этого — проще пользоваться сторонними средствами.
2. Была возможность подстановки значений. Я использую сниппеты не столько как сокровенное знание об алгоритмахх, сколько уменьшение рутинной писанины. Часто случается, когда одну и ту же строчку нужно написать много раз(например название свойства — его использует геттер, сеттер и поле для хранения значения)
Подправьте обработку строки поиска. Вот резльтат на запрос «c++»:
A Database Error Occurred
Error Number: 1139
Got error 'repetition-operator operand invalid' from regexp
SELECT COUNT(*) AS `count` FROM `topics` WHERE (`topic_text` REGEXP 'c++' AND `topic_status` = 1 ) OR (`topic_title` REGEXP 'c++' AND `topic_status` = 1 )
Filename: /var/www/cdsnipp5841/data/www/snippets.su/modules/user/models/search_model.php
Line Number: 19
Sign up to leave a comment.
Мой велосипед для сниппетов