Многие из нас ждут выхода Vue 3 и похоже, что он почти здесь (релиз запланирован на второй квартал 2020 года) и уже есть возможность взглянуть или даже поэкспериментировать с бета-версией.
ASP.NET: расширяем механизм путей SiteMapPath
При разработке на ASP.NET мы привыкли для стандартных задач использовать стандартные компоненты. Одной из таких стандартных задач является вывод на каждой странице сайта пути к ней от главной страницы — фрагмента карты сайта (sitemap path). Для этого используется контрол SiteMapPath, берущий данные о карте сайта от провайдера карты сайта (SiteMapProvider) по умолчанию, который, в свою очередь, берет их из конфигурационного файла Web.siteMap.
Поместив этот контрол на мастер-страницу сайта, и описав в конфигурационном файле карту сайта, мы тем самым обеспечиваем вывод пути на всех страницах.
Но ASP.NET — расширяемая среда, и позволяет замещать почти все стандартные модули, и провайдер карт сайта — не исключение. Мы рассмотрим, как создать свой провайдер для получения расширенной функциональности для карты сайта.
Поместив этот контрол на мастер-страницу сайта, и описав в конфигурационном файле карту сайта, мы тем самым обеспечиваем вывод пути на всех страницах.
Но ASP.NET — расширяемая среда, и позволяет замещать почти все стандартные модули, и провайдер карт сайта — не исключение. Мы рассмотрим, как создать свой провайдер для получения расширенной функциональности для карты сайта.
CAPTCHA для Вашего сайта

Для тех, кто не в курсе, CAPTCHA это автоматизированный тест Тьюринга для различения компьютеров и людей. Подробнее о том, что такое CAPTCHA можно почитать на википедии.
В данном примере я воспользовался бесплатным сервисом recaptcha.net. Вам придется пройти регистрацию, чтобы работать с ним, ибо понадобятся Public и Private ключи.
Программирование — миф или реальность?
Прочитав несколько топиков о том, что программистов не учат в высших учебных заведениях, о бразильской системе обучения кадров в компании занимающейся разработкой ПО, растерзав поиск хабра и гугла на темы как научится программировать, веб-программирование, разработка интернет-сайтов — я не нашёл ни одного источника, который внятно излагал бы базовые концепции программирования и на пальцах (а это очень важно для человека, который только начинает разбираться в теме) излагал бы базовые понятия и концепции. Я хочу спросить, почему я столкнулся с такой ситуацией и как можно её исправить.
Еще один способ защиты от спама отображаемых на сайте емейлов
Проблема защиты от спама емейлов, выложенных на сайте, уже наболевшая и давно затертая до дыр. Но я случайно нашел еще один способ борьбы.
Идеальный скриптовый язык для WEB.
Добрый день уважаемые Хабралюди! В данный момент занимаюсь проектированием нового скриптового языка (по типу PHP, Perl) и в связи с этим хотел бы написать не абстрактный и ни кому не нужный язык (задание к дипломному пректу), а язык который можно было бы использовать в реальных проектах. Хотел бы узнать мнение Хабраобщества, как вы представляете себе идеальный скриптовый язык для WEB, какие функции наиболее востребованны, какой синтаксис удобней всего (язык объектно-ориентированный), и насколько он востребован на сегодняшний день.
UPD: хотелось бы реальных предложений по синтаксису языка.
UPD: хотелось бы реальных предложений по синтаксису языка.
Data:URI CSS Sprites — современный подход к генерации CSS спрайтов
Мучения со стандартным подходом применения CSS спрайтов, а именно трудности модернизации и в некоторых случаях сложности оптимальной компоновки заставили искать альтернативный вариант оптимизации загрузки изображений. Очередной раз почитывая хабра-статьи, наткнулся на интересный подход реализации спрайтов с применением data:URI. В ходе дискуссий и умозаключений были определены слабые и сильные стороны данного подхода. Одним из значительных недостатков нового подхода является сложность сборки конечного CSS. Однако, при использовании data:URI имеет место возможность автоматизации процесса.
JavaFX — «пластилиновая ворона»
Как уже известно Java программистам (и не только) на днях состоялся официальный релиз JavaFX. Я периодически проявлял интерес к данному направлению. Пришло время конкретно пощупать что ж это за «зверь» такой с модными буквами FX. Программировать что попало (т.е. тренироваться на кошках) конечно не интересно. Соответственно с пользой для дела написал компонент для веб сервиса загрузки файлов
Интернет-магазин контактных линз «ЭКЗОЛИНЗА»

С чем пришлось бороться. Представление многих видов товаров в интернет-магазинах имеют свои особенности. Особенность контакных линз в том, что самих брендов всего несколько десятков, но каждая контактная линза имеет несколько параметров — возможные диоптрии, радиус кривизны, цвет и другие. Поэтому несколько десятков позиций в каталоге выливаются в несколько тысяч позиций на складе. Хороший интернет-магазин должен быть связан с остатками на складе, чтобы показать посетителю, что такая-то линза с диоптрией -2 есть в наличии, а с -3 может отсутствовать. Это небольшое предисловие — так, чтобы Вы имели небольшое представление о контактных линзах.
Реализация. Было решено реализовывать с помощью AJAX технологий. Цели: уменьшить объем загрузки второстепенной информации, сделать удобным добавление товара в корзину.
Результат — www.exolinza.ru. Хотелось бы услышать Ваше мнение. Кроме того, пригласить участвовать в уникальной реферальной партнерской программе нашего интернет-магазина (подробности здесь: www.exolinza.ru/partner.asp)
Чтобы полностью оценить удобства и недостатки, можете проделать весь путь с тестовым заказом. Для тестовых заказов — при оформлении в поле фамилия укажите «Тест». Буду весьма признателен за здоровую критику, замечания и предложения.
Капля, Унция и Ведро
Это суперски, что на Хабре есть обучающие статьи. Так сказать: изучаем по шагам: Ruby по каплям, Питон унциями и что-то (забыл что) вёдрами. А… Чуть не забыл — Java — чашками.
На будущее можно предложить следующие единицы измерения:
Можно, также, переключиться на скорость измерения: изучаем javascript со скоростью две функции в час, или разгоняем PHP до 50 строк в секунду.
Здорово, что есть учебные материалы, и странно, что так неоригинально придумывают названия. Видимо, чтобы взгляд цепляло? Но мне кажется, если человеку интересен Python то всё равно — каплями его выдавливают, или вёдрами льют :)
Было бы очень метко отмечать уроки в %, однако, все кто публикует (я так думаю) вряд ли имеют чёткий план изучения того или иного языка программирования. Поэтому для кого-то это будет 20%, а кто-то поймёт что язык стал понятен, а фунции — всегда можно будет глянуть в api документации.
У меня, по-крайней мере, на определённом этапе изучения «чего угодно» наступает момент «просветления», после которого любой учебный курс становится уже избыточным, а вопросы, которые возникают в ходе программирования находятся на грани возможностей языка (или, если быть точным, моих возможностей) — и почти с вероятностью 99% не раскрываются ни в каких учебных курсах, и что бывает совсем обидно — практически не предусмотрены во фреймворках.
Ну а что поделаешь? Типичные задачи решаются базовыми функциями, расширенные — приходится самому писать функции. Но самые интересные задачи — приходится ковыряться самому — от начала и до конца.
Кстати, как у вас — я не знаю, у меня в области веб-программирования, самое интересное начинается именно при построении запросов к базе данных. Именно хитрые выборки со всевозможными ускорениями и оптимизацией — вот что тонкое место. А всё остальное (я пишу на CakePHP) — в основном настолько тривиально, что без особых хлопот «портанётся» на любой другой язык или фреймворк. Мне так кажется.
А вам?
На будущее можно предложить следующие единицы измерения:
- карат
- грамм
- милилитр (не капля!)
- фунт (это для среднего уровня)
- пуд (это уже при изучении на уровне senior)
Можно, также, переключиться на скорость измерения: изучаем javascript со скоростью две функции в час, или разгоняем PHP до 50 строк в секунду.
Здорово, что есть учебные материалы, и странно, что так неоригинально придумывают названия. Видимо, чтобы взгляд цепляло? Но мне кажется, если человеку интересен Python то всё равно — каплями его выдавливают, или вёдрами льют :)
Было бы очень метко отмечать уроки в %, однако, все кто публикует (я так думаю) вряд ли имеют чёткий план изучения того или иного языка программирования. Поэтому для кого-то это будет 20%, а кто-то поймёт что язык стал понятен, а фунции — всегда можно будет глянуть в api документации.
У меня, по-крайней мере, на определённом этапе изучения «чего угодно» наступает момент «просветления», после которого любой учебный курс становится уже избыточным, а вопросы, которые возникают в ходе программирования находятся на грани возможностей языка (или, если быть точным, моих возможностей) — и почти с вероятностью 99% не раскрываются ни в каких учебных курсах, и что бывает совсем обидно — практически не предусмотрены во фреймворках.
Ну а что поделаешь? Типичные задачи решаются базовыми функциями, расширенные — приходится самому писать функции. Но самые интересные задачи — приходится ковыряться самому — от начала и до конца.
Кстати, как у вас — я не знаю, у меня в области веб-программирования, самое интересное начинается именно при построении запросов к базе данных. Именно хитрые выборки со всевозможными ускорениями и оптимизацией — вот что тонкое место. А всё остальное (я пишу на CakePHP) — в основном настолько тривиально, что без особых хлопот «портанётся» на любой другой язык или фреймворк. Мне так кажется.
А вам?
SharePoint – отличная платформа для веб-сайтов. Разве нет?
В России интернет сайтов на SharePoint пока немного (за рубежом их значительно больше), между тем эта платформа, широко используемая в интранет, выглядит очень привлекательной и в интернет/экстранет сценариях для заказчиков и для веб-разработчиков. Многие вообще не знают, что на SharePoint можно делать веб-сайты. А между тем, функционал платформы позволяет очень быстро создавать эффективные с точки зрения бизнеса веб-сайты, притом, что базовые Windows Sharepoint доступны бесплатно.
Давайте разберем довольно типовой сценарий и вы скажете — стоит ли использовать Sharepoint для веб, а если не стоит, то прошу прокомментировать — почему? Здесь еще дело в том, что в рамках семинаров TechDays я выступаю с демонстрацией создания такого сценария и вы можете скачать и презентацию и пошаговую инструкцию как ее сделать – можете попробовать и вы на своем компьютере. По этой причине, мне тем более интересны комментарии и отзывы.
Есть небольшая компания, пусть будет “Рога и копыта”, которой нужно сделать сайт для работы с поставщиками и партнерами.

Сценарий, который требуется отработать:
Давайте разберем довольно типовой сценарий и вы скажете — стоит ли использовать Sharepoint для веб, а если не стоит, то прошу прокомментировать — почему? Здесь еще дело в том, что в рамках семинаров TechDays я выступаю с демонстрацией создания такого сценария и вы можете скачать и презентацию и пошаговую инструкцию как ее сделать – можете попробовать и вы на своем компьютере. По этой причине, мне тем более интересны комментарии и отзывы.
Ситуация
Есть небольшая компания, пусть будет “Рога и копыта”, которой нужно сделать сайт для работы с поставщиками и партнерами.

Сценарий, который требуется отработать:
А как Вы делаете Pagination на своих сайтах
Часто встречаю сайты у которых пагинатор сделан следующим образом
Вариант №1
указывается интервал от и до
пример:
...?start=1&end=10
Вариант №2
указывается просто начальная позиция
...?start=10
А сам разработчик уже потом в запросах добавляет, сколько именно выбрать записей от данной позиции
Вариант №3
когда указывается просто номер страници а разработчик потом сам вычисляет с какой позиции и сколько нужно выбрать
Лично я использую третий вариант.
Относительно первого варианта, я думаю что это вообще зло.
Поскольку если есть куча данных и есть куча джойнов
то легко вписато самому ...?start=1&end=1000000
Ну я думаю что сами догадаетесь что может случиться с сервером.
Относительно второго варианта, в принципе в нем нет ничего плохого, но как по мне просто не эстетично.
Мне больше нравится видить, 1, 2, 3,… 11
Чем 10, 123, 153,…
А что Вы думаете по этому поводу?
Вариант №1
указывается интервал от и до
пример:
...?start=1&end=10
Вариант №2
указывается просто начальная позиция
...?start=10
А сам разработчик уже потом в запросах добавляет, сколько именно выбрать записей от данной позиции
Вариант №3
когда указывается просто номер страници а разработчик потом сам вычисляет с какой позиции и сколько нужно выбрать
Лично я использую третий вариант.
Относительно первого варианта, я думаю что это вообще зло.
Поскольку если есть куча данных и есть куча джойнов
то легко вписато самому ...?start=1&end=1000000
Ну я думаю что сами догадаетесь что может случиться с сервером.
Относительно второго варианта, в принципе в нем нет ничего плохого, но как по мне просто не эстетично.
Мне больше нравится видить, 1, 2, 3,… 11
Чем 10, 123, 153,…
А что Вы думаете по этому поводу?
Собираем среду разработки сайтов на Маке
Хотелось бы дать небольшую наводку маководам, как установить себе окружение для локальной разработки сайтов. В данном примере рассматривается установка с MacPorts набора Apache+PHP+MySQL+phpMyAdmin. Сразу скажу, что я данный топик не является детальным и отлаженным руководством по установке и у кого-то что-то может не получиться, поэтому сделаю ссылку на готовые и отработанные решения — продукт MAMP и руководство по установке, на которое ссылается php.net.
Среда в которой выполнялась установка: Mac Mini, OS X 10.4.
Итак, ставим среду разработки на Мак:
К сожалению автоматический запуск MySQL и Apache, как это обещал MacPorts у меня не заработал, поэтому запускаю ручками:
$ sudo /opt/local/apache2/bin/apachectl start
$ sudo /opt/local/libexec/mysqld -u root
Данная проблема с MacPorts уже описывалась на Хабре и были найдены какие-то решения.
Среда в которой выполнялась установка: Mac Mini, OS X 10.4.
Итак, ставим среду разработки на Мак:
- Устанавливаем MacPorts.
- Устанавливаем Apache.
Вводим в терминале:
sudo port install apache2
Пароль, который спросят — ваш маковский пароль
Первоначально я хотел поставить апач 1.3, но связать его с php5 с ходу не получилось, поэтому поставил второй.
Запускаем:
sudo /opt/local/apache2/bin/apachectl start
Проверка: смотрим в браузере localhost - Устанавливаем PHP с поддержкой MySQL:
sudo port install php5 +mysql5
sudo cp /opt/local/etc/php.ini-dist /opt/local/etc/php.ini - Добавляем модуль PHP в Apache
sudo /opt/local/apache2/bin/apxs -a -e -n «php5» /opt/local/apache2/modules/libphp5.so
Вставляем содержание /apache2/conf/extras-conf/mod_php.conf в /apache2/conf/httpd.conf ручками или инклудом в том же httpd.conf.
Добавляем index.php в индексные файлы.
Перезапускаем апач:
sudo /opt/local/apache2/bin/apachectl restart
Проверка: создаём test.php в /opt/local/apache2/htdocs/ с содержанием <?php phpinfo() ?> и проверяем его по адресу localhost/test.php - Устанавливаем MySQL:
sudo port install mysql5 +server
Даём права пользователю mysql на /opt/local/var/db/ и вложения в неё. Я делал через Finder, наверное можно и через терминал.
Устанавливаем БД:
sudo /opt/local/bin/mysql_install_db5 -user root
Запусаем демона:
sudo /opt/local/libexec/mysqld -u root - Устанавливаем phpmyadmin:
sudo port install phpmyadmin
Заходим на localhost/pma/setup/index.php
Устанавливаем новый сервер localhost без пароля
Заходим в phpmyadmin под root
К сожалению автоматический запуск MySQL и Apache, как это обещал MacPorts у меня не заработал, поэтому запускаю ручками:
$ sudo /opt/local/apache2/bin/apachectl start
$ sudo /opt/local/libexec/mysqld -u root
Данная проблема с MacPorts уже описывалась на Хабре и были найдены какие-то решения.
Релиз RichFaces 3.3.1 GA

Команда RichFaces с гордостью объявляет о выходе очередной версии библиотеки – 3.3.1 GA. Было также разработано специальное демонстрационное приложение Photo Album, которое доступно для скачивания. Приложение построено с использованием компонентов RichFaces.
Опыт применения КА (FSM) в веб-интерфейсе на Python
Введение
Недавно мне потребовалось приделать к одной программке веб-интерфейс.
Объектная база данных Eloquera 2.0
Релиз второй версии объектной базы данных Eloquera запланирован на следующий месяц. Ничего особенного, вроде бы — мало ли релизов случается еженедельно.
Но группа of crazy Russian programmers из Eloquera решила поставить небольшой эксперимент. После некоторыхспоров и ругани консультаций с руководством компании было решено дать доступ к отдельным билдам базы группе профессиональных программистов, не связанных с Eloquera. Зачем? На предмет «поругать»/«похвалить», а также доказать, что «свободные птицы» будут более эффективны в использовании базы и нахождению отдельных недочетов, чем штатная команда тестировщиков. Ну, и показать, что crazy Russians изобретательны до невозможности — что просто замечательно.:-)
Напомню, что Eloquera — клиент-серверная объектная база данных для .NET 2.0 и выше, со своим движком хранения данных и индексирования, поддерживающая запросы.
Но группа of crazy Russian programmers из Eloquera решила поставить небольшой эксперимент. После некоторых
Напомню, что Eloquera — клиент-серверная объектная база данных для .NET 2.0 и выше, со своим движком хранения данных и индексирования, поддерживающая запросы.
почти.там
Публикую по просьбе farcaller, т.к. у него не хватает кармы. Поэтому плюсы, пожалуйста, туда.
Я уже как-то писал про очень интересную и перспективную технологию по имени Cappuccino. Сегодня я хочу обратить ваше внимание на второй по качеству проработки проект на этом новом фреймворке — almost.at.
Дебютировавшем проектом на Cappuccino остается 280slides от авторов самого Objective-J и Cappucino. Almost.at показывает нам, что можно сделать даже более функциональный проект на зароджающемся фреймворке.
И так, что же такое — almost.at? Это сервис, который отслеживает интересные (с точки зрения администрации) темы в сети: на твиттере (в виде твитов и картинок) и просто по ключевым словам. Делает это он в красивом mac-like интерфейсе.

Я уже как-то писал про очень интересную и перспективную технологию по имени Cappuccino. Сегодня я хочу обратить ваше внимание на второй по качеству проработки проект на этом новом фреймворке — almost.at.
Дебютировавшем проектом на Cappuccino остается 280slides от авторов самого Objective-J и Cappucino. Almost.at показывает нам, что можно сделать даже более функциональный проект на зароджающемся фреймворке.
И так, что же такое — almost.at? Это сервис, который отслеживает интересные (с точки зрения администрации) темы в сети: на твиттере (в виде твитов и картинок) и просто по ключевым словам. Делает это он в красивом mac-like интерфейсе.

Делаем поиск детских садов и школ по-настоящему удобным. Прикладное использование Яндекс Карт
Последние несколько месяцев мы работали над проектом Osvita.com.ua — образование в Украине. Среди прочих разделов 2 были посвящены дошкольному и школьному образованию — «Школы» и «Детские сады», выбор которых для большинства обусловлен территориальным расположением — чем ближе к дому, тем лучше. При этом все каталоги сделаны по принципу: вот вам 500 садиков с адресами и телефонами — ищите. Делать очередной бестолковый клон совсем не хотелось.
Хотелось так: ввести адрес и найти все сады в нужном радиусе от дома, да ещё и отсортированные по удаленности, да ещё и увидеть на карте.
И все оказалось вполне реальным. Вот что получилось: (тестовый адрес: г. Киев, ул. Луначарского, 1/2).

Как получилось под хабракатом
Хотелось так: ввести адрес и найти все сады в нужном радиусе от дома, да ещё и отсортированные по удаленности, да ещё и увидеть на карте.
И все оказалось вполне реальным. Вот что получилось: (тестовый адрес: г. Киев, ул. Луначарского, 1/2).

Как получилось под хабракатом
DaBase — не очередная ORM для PHP

Прошла первые боевые испытания и теперь представляется на милость хабрасообщества.
Что почитать по веб-разработке
Топик Много книг, хороших и разных навёл на мысль сделать похожий каталог наиболее удачных и интересных книг по веб разработке.
Поэтому предлагаю здесь собрать и структурировать такие книги с небольшим описанием, вашим рейтингом и просто пообсуждать их.
update: Теперь есть электронные версии книг!
Начнём…
Поэтому предлагаю здесь собрать и структурировать такие книги с небольшим описанием, вашим рейтингом и просто пообсуждать их.
update: Теперь есть электронные версии книг!
Начнём…