может она в Windows хотела их использовать, подключив volume с локального диска? Тут сложно сказать, но одна из возможных причин - обучение новой технологии на практике (за неимением более подходящих примеров). Такой подход тоже имеет право на существование
да, это всего лишь инструмент. Не стоит его ни недооценивать ни переоценивать, и при выборе руководствоваться здравым смыслом. В нашей сфере такие перегибы часто встречаются: если технология в тренде (как сейчас модно говорить), то ее пытаются использовать везде где только можно.
про иски не слышал, честно говоря. Думаю, что если они и были, то единичного характера — у такой огромной конторы всякое случается. Ну а про сокрытие их информации, это опять же их дело. Я ниразу не адвокат ms, но все это не тянет на попытку уничтожения open source.
> Microsoft, который ранее пытался уничтожить движение open source
Интересно, как и когда они пытались это сделать? Тем, что до недавнего времени не открывали исходников своих фреймворков? Ну так это их дело. Из того что я вижу, они последовательно продвигают open source в .Net стеке (из того, что сразу приходит на ум, Codeplex для хостинга open source проектов, EF, MVC, Orchard). Естественно тут без личного интереса не обходится (прилив поднимает все лодки), но это тоже нормально.
я выбирал между Umbraco и Orchard, остановился на последнем, как на более перспективном. Umbraco в свое время представляла из себя смесь из xslt и web forms, и ни то ни другое мне не нравилось (и сейчас не нравится). Как там сейчас обстоит дело не знаю, вроде они в сторону mvc тоже двигаются.
Статья в целом полезная, хотя и немного странная. Не хватает информации, которая логически бы связывала ее части друг с другом. Например, в самом начале вы пишите:
> Orchard не предусматривает прямого доступа к NHibernate по умолчанию
хотя зачем это может понадобится из информации во введении непонятно. К тому же позже как раз показано, как конфигурировать NH напрямую. Так что тут либо следовало написать, что подразумевается под «по умолчанию», либо использовать другую формулировку.
Первая часть начинается вроде бы стройно: показаны проблемы при использовании типов содержимого (это более распространненный перевод для content type, чем контентный тип). После этого в результатах применения подхода с типами содержимого написано:
> Orchard.CMS базируется на контентных частях и контентных типах. Текстовые разделы, блоги, html части и так далее – в большинстве случаев контентные типы или контентные части. Смешивание данные представления и доменной модели приложения – грубое нарушение инкапсуляции.
Это звучит как 3 несвязанных друг с другом предложений. Orchard.CMS — это прежде всего CMS, как бы смешно это ни звучало, и указанные сущности (текстовые разделы, блоги, html части) являются скорее ее моделью, а не представлением. С последним предложением в целом можно согласится (хотя часто в представлениях можно использовать модель напрямую, напр. когда это не требует изменений модели в простых views и не влечет проблем с производительностью), но как это связано с предыдущими двумя предложениями, непонятно.
> Перенести доменную модель и бизнес логику, выполненные в контексте Orchard, на другую CMS или чистый MVC – это огромная работа.
Возможно это и огромная работа, но как это относится к результатам применения подхода к построению модели с помощью типов содержимого, под которым эти пункты сгруппированы? Т.е. если до этого были указаны скорее минусы подхода, то это уже скорее плюс, т.к. использование типов содержимого позволяет сэкономить время, которое будет потрачено для других указанных подходов.
> Тестирование, его придется выполнять в рамках Orchard контекста.
Имеется ввиду юнит-тестирование? Если да, то какие проблемы это влечет? Orchard построен на интерфейсах и очень гибок в этом смысле. Да придется потратить больше времени на создание mock-ов для Orchard-овских сущностей, но его также придется потратить и при использовании других подходов. Т.е. опять недостаточно информации.
После этого вскользь упоминается паттерн Record и начинается вторая часть об использовании NH напрямую. Как вторая часть связана со второй? Какой подход вы в итоге использовали? Проанализировав код конфигурации NH можно сделать вывод, что вы скорее всего используете собственную модель, вместо типов содержимого:
> cfg.Mappings(x => x.FluentMappings.AddFromAssemblyOf());
но это все неявно. Нужно было более детально описать используемый для статьи тестовый сценарий, тогда бы она выглядела как цельная статья. Сейчас она больше похожа на несколько статей из справочной документации.
Не относитесь к этой критике негативно. Чем больше будет статей про Orchard, тем лучше, на мой взгляд. Это хорошая, хотя и своеобразная CMS, написанная и поддерживаемая грамотными людьми. Поэтому в целом я считаю инвестиции в нее оправданными и все последние свои проекты делаю на Orchard-е. Те, кто работал с Orchard-ом скорее всего поймут посыл статьи, но хотелось бы также, чтобы и новички не испугались ее использовать после прочтения. Для этого я и добавил сюда этот комментарий.
Упростить модель разработки и сделать как в FF или Chrome: убрать все режимы эмуляции IE7,8,9,10 и оставить лишь текущую последнюю версию. Рано или поздно это все равно придется сделать, потому что писать код специально с багами, чтобы работало как в эмулируемой версии — это тупик. Вообще надо им отказаться от номера версии и жить спокойно.
Такой трюк — просто кладезь для библиотеки прототипирования, используемой в unit тестировании. Тот же TypeMock может успешно подменять только несколько классов из mscorlib (DateTime, File и FileStream), а тут потенциал вообще безграничный. Если довести до ума, может получится продукт, не имеющий аналогов. С библиотекой, которая умеет заменять заглушками любой системный вызов, можно будет писать такие тесты, о которых сейчас можно только мечтать. Автор, советую не бросать наработки и продолжать в этом направлении.
> А какое исключение генерируется при отправке на 465 порт? На порту для ssl всё же точно должно работать.
timeout exception. Работать-то через 465 порт оно может и должно, но не работает.
> Возможно в первом случае вы пытаетесь использовать STARTTLS под уже включенным ssl-соединением, и клиенту становится плохо:)
скорее всего так и есть, однако SmtpClient скрывает низкоуровневые детали протокола, поэтому напрямую команды SMTP посылать серверу через него нельзя. Так что этот комментарий относится скорее к тому, что происходит внутри класса. Статья была именно про то, как отправлять почту через сервер Яндекса, используя доступный интерфейса SmtpClient.
Вообще идея про то, что что-то не так с 465 портом пришла ко мне после попыток подключится к smtp.yandex.ru через telnet: o smtp.yandex.ru 465
вызывало непонятные глюки. Ошибки соединения не было, но консоль сходила с ума: каретка переводилась вначало окна и символы при печати накладывались на уже выведенный ранее текст. Сами символы команд и результатов выполнения при этом были невидимые. Хотя с 25 портом подключение было успешным: o smtp.yandex.ru 25
Все это натолкнуло меня на идею попробовать код, который в итоге заработал и который я привел в статье.
лучше поздно чем никогда :) Отвечу сейчас, возможно кому-нибудь пригодится:
эта функциональность появилась с версией 2.0. Называется «Dynamic Filtering Conditions»: Camlex.NET 2.0 for Windows SharePoint Services (методы WhereAll и WhereAny).
не видно преимуществ, чтобы использовать этот метод на практике (преимуществ, которые бы перевесили необходимость загрязнять инфраструктурными элементами модель, использование многословного xslt, за которым теряется сама вьюшка). Скорость трансформации тоже под вопросом.
Возможно его можно использовать для отдельных action-ов (напр. для генернации отчетов по шаблонам), но не для view. Да и в качестве движка шаблонов я не вижу преимуществ xslt по сравнению напр. с NVelocity, на котором шаблоны выглядят гораздо читабельнее и понятней.
Open API имеет интересную особенность — после того, как пользователь аутентифицировался на вашем сайте, он становится аутентифицированным и ВКонтакте. Причем куки ВКонтакте являются persistent — т.е. пользователь остается залогиненным ВКонтакт, даже если переоткроет браузер. Это является проблемой безопасности — т.к. если пользователь зайдет на ваш сайт с чужого компьютера, он сам того не подозревая, может оставить свою сессию ВКонтакте пользователям, которые будут работать на компьютере после него. Кстати так же работает сайт durov.at.
Можно повесить обработчик на кнопку Выйти на свое сайте, который вызывает VK.auth.logout(), но пользователь может закрыть бразуер и не нажимая ее. Я сделал по-другому: logout идет сразу после login, когда все необходимые данные о пользователе импортированы из контакта
Information
Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
может она в Windows хотела их использовать, подключив volume с локального диска? Тут сложно сказать, но одна из возможных причин - обучение новой технологии на практике (за неимением более подходящих примеров). Такой подход тоже имеет право на существование
да, это всего лишь инструмент. Не стоит его ни недооценивать ни переоценивать, и при выборе руководствоваться здравым смыслом. В нашей сфере такие перегибы часто встречаются: если технология в тренде (как сейчас модно говорить), то ее пытаются использовать везде где только можно.
Спасибо за инструкцию. С GUI собрать под CentOS7 тоже особых проблем не было. Для этого указываем DUSEWX=yes в cmake (без python собирал):
cmake -DUSEWX=yes -DCMAKE_BUILD_TYPE=Release ..
make
Далее идем в подпапку /install и запускаем far2l
Интересно, как и когда они пытались это сделать? Тем, что до недавнего времени не открывали исходников своих фреймворков? Ну так это их дело. Из того что я вижу, они последовательно продвигают open source в .Net стеке (из того, что сразу приходит на ум, Codeplex для хостинга open source проектов, EF, MVC, Orchard). Естественно тут без личного интереса не обходится (прилив поднимает все лодки), но это тоже нормально.
> Orchard не предусматривает прямого доступа к NHibernate по умолчанию
хотя зачем это может понадобится из информации во введении непонятно. К тому же позже как раз показано, как конфигурировать NH напрямую. Так что тут либо следовало написать, что подразумевается под «по умолчанию», либо использовать другую формулировку.
Первая часть начинается вроде бы стройно: показаны проблемы при использовании типов содержимого (это более распространненный перевод для content type, чем контентный тип). После этого в результатах применения подхода с типами содержимого написано:
> Orchard.CMS базируется на контентных частях и контентных типах. Текстовые разделы, блоги, html части и так далее – в большинстве случаев контентные типы или контентные части. Смешивание данные представления и доменной модели приложения – грубое нарушение инкапсуляции.
Это звучит как 3 несвязанных друг с другом предложений. Orchard.CMS — это прежде всего CMS, как бы смешно это ни звучало, и указанные сущности (текстовые разделы, блоги, html части) являются скорее ее моделью, а не представлением. С последним предложением в целом можно согласится (хотя часто в представлениях можно использовать модель напрямую, напр. когда это не требует изменений модели в простых views и не влечет проблем с производительностью), но как это связано с предыдущими двумя предложениями, непонятно.
> Перенести доменную модель и бизнес логику, выполненные в контексте Orchard, на другую CMS или чистый MVC – это огромная работа.
Возможно это и огромная работа, но как это относится к результатам применения подхода к построению модели с помощью типов содержимого, под которым эти пункты сгруппированы? Т.е. если до этого были указаны скорее минусы подхода, то это уже скорее плюс, т.к. использование типов содержимого позволяет сэкономить время, которое будет потрачено для других указанных подходов.
> Тестирование, его придется выполнять в рамках Orchard контекста.
Имеется ввиду юнит-тестирование? Если да, то какие проблемы это влечет? Orchard построен на интерфейсах и очень гибок в этом смысле. Да придется потратить больше времени на создание mock-ов для Orchard-овских сущностей, но его также придется потратить и при использовании других подходов. Т.е. опять недостаточно информации.
После этого вскользь упоминается паттерн Record и начинается вторая часть об использовании NH напрямую. Как вторая часть связана со второй? Какой подход вы в итоге использовали? Проанализировав код конфигурации NH можно сделать вывод, что вы скорее всего используете собственную модель, вместо типов содержимого:
> cfg.Mappings(x => x.FluentMappings.AddFromAssemblyOf());
но это все неявно. Нужно было более детально описать используемый для статьи тестовый сценарий, тогда бы она выглядела как цельная статья. Сейчас она больше похожа на несколько статей из справочной документации.
Не относитесь к этой критике негативно. Чем больше будет статей про Orchard, тем лучше, на мой взгляд. Это хорошая, хотя и своеобразная CMS, написанная и поддерживаемая грамотными людьми. Поэтому в целом я считаю инвестиции в нее оправданными и все последние свои проекты делаю на Orchard-е. Те, кто работал с Orchard-ом скорее всего поймут посыл статьи, но хотелось бы также, чтобы и новички не испугались ее использовать после прочтения. Для этого я и добавил сюда этот комментарий.
> Кидаю на форму…
эх, ностальгия
timeout exception. Работать-то через 465 порт оно может и должно, но не работает.
> Возможно в первом случае вы пытаетесь использовать STARTTLS под уже включенным ssl-соединением, и клиенту становится плохо:)
скорее всего так и есть, однако SmtpClient скрывает низкоуровневые детали протокола, поэтому напрямую команды SMTP посылать серверу через него нельзя. Так что этот комментарий относится скорее к тому, что происходит внутри класса. Статья была именно про то, как отправлять почту через сервер Яндекса, используя доступный интерфейса SmtpClient.
Вообще идея про то, что что-то не так с 465 портом пришла ко мне после попыток подключится к smtp.yandex.ru через telnet:
o smtp.yandex.ru 465
вызывало непонятные глюки. Ошибки соединения не было, но консоль сходила с ума: каретка переводилась вначало окна и символы при печати накладывались на уже выведенный ранее текст. Сами символы команд и результатов выполнения при этом были невидимые. Хотя с 25 портом подключение было успешным:
o smtp.yandex.ru 25
Все это натолкнуло меня на идею попробовать код, который в итоге заработал и который я привел в статье.
эта функциональность появилась с версией 2.0. Называется «Dynamic Filtering Conditions»: Camlex.NET 2.0 for Windows SharePoint Services (методы WhereAll и WhereAny).
Возможно его можно использовать для отдельных action-ов (напр. для генернации отчетов по шаблонам), но не для view. Да и в качестве движка шаблонов я не вижу преимуществ xslt по сравнению напр. с NVelocity, на котором шаблоны выглядят гораздо читабельнее и понятней.
Можно повесить обработчик на кнопку Выйти на свое сайте, который вызывает VK.auth.logout(), но пользователь может закрыть бразуер и не нажимая ее. Я сделал по-другому: logout идет сразу после login, когда все необходимые данные о пользователе импортированы из контакта