среда, 25 июня 2014 г.

Angular ошибка Uncaught object в строке 36

Ситуация
Начинаю изучать Angular по мануалам. как только добавляю конфигурацию роутинга (даже пустую)

var myApp = angular.module("myApp", [])
    .config(function ($routeProvider, $locationProvider) {
})
;

- получаю ошибку

Uncaught object (строка 36)

Решение
Проблема в устаревшей документации. С версии 1.2* в Angular роутинг вінесен в отдельній файл, соответсвенно, надо добавлять его в скрипты
<script src='bower_components/angular/angular.js'></script>
<script src='bower_components/angular/angular-route.js'></script>
и в определении приложения - тоже добавлять ссылку на него

var myApp = angular.module('myApp', ['ngRoute']);

Cсылка по теме
http://stackoverflow.com/questions/23898348/angular-application-config-uncaught-object-error-ngroute

Еще одна точка проверки

Добился что пустой config не вызывает ошибку. Но когда добавляю маршрут - опять получаю ту же ошибку

Uncaught object (строка 36)

Тут уже оказалась моя неосторожность.
Имя контроллера должно быть в кавычках, а я написал без кавычек.

$routeProvider.when('/catalogcountry/', {
            templateUrl: '/templates/country/country-list.html',
            controller: 'CountriesController'
        });

четверг, 12 июня 2014 г.

Visual Studio исключить папки и файлы из Web-публикации (Web Publish)

Ситуация
Разрабатываю сайт на ASP.NET MVC
Уосновная часть сайта уже разработана, доделываю некоторые модули + поддержка.
По большей части скрипты и контент сформированы и не меняются (сюда же относится и фреймворки типа bootstrap и библиотеки типа jQuery, knockoutjs)
Но каждый раз публикация сайта занимает долгое время из- за перевыгрузки файлов с этими папками.

Задача
Исключить некторые папки из публикации веб-проекта на ASP.NET MVC

Решение
По простому - нужно внести некоторые папки как исключение в конфигурационный файл проекта.

Но сделать это оказалось не просто, особенно, если вы новичок в студии.
задача разбилась на 3 поздадачи, которые я тут и опишу.

1. Подготовить новую конфигурацию.

На солюшене (именно на солюшене, а не на проекте) выбираете "Configuration Manager ..." из контекстного меню.

Откроется окно менеджера конфигурации

В дропдауне "Active Solution Configuration" есть пункт "New". Выбираем и создаем новую конфигурацию с произвольным именем.

Для удобства есть возможности скопировать настройки с уже существующей конфигурации.

ок. КОнфигурация есть. Назовем её "Custom"


2. Настроить конфигурацию в проекте.

теперь наша задача внести изменения в .cproj файл для этого
2.1. Выгружаем проект. Выбираем "Unload project" из контекстного меню над проектом.
2.2. Открываем файл проекта. Для этого над выгруженным проектом выбираем "Edit [имя проекта].cproj"
2.2. Изменяем .cproj файл:
Ищем раздел
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == '[Имя вашей конфигурации]|AnyCPU'">
и добавлем в него строчки типа
<ExcludeFilesFromDeployment>File1.aspx;File2.aspx</ExcludeFilesFromDeployment>
<
ExcludeFoldersFromDeployment>Folder1;Folder2</ExcludeFoldersFromDeployment

в конце концов секция должна выглядеть примерно так
<PropertyGroup Condition='$(Configuration)|$(Platform)' == '[Имя вашей конфигурации]|AnyCPU' ">
  ... 

  <
ExcludeFilesFromDeployment>File1.aspx;File2.aspx</ExcludeFilesFromDeployment>
  <
ExcludeFoldersFromDeployment>Folder1;Folder2</ExcludeFoldersFromDeployment>
</
PropertyGroup>

2.3. Сохраняем .cproj файл
2.4. Загружаем проект в студию ("Reload project" из контектсного меню над проектом)

3. Указываем нужную конфигурацию для публикации.

Над проектом выбираем "Publish"
В окне публикации переходим в раздел "Settings" и выбираем нашу конфигурацию.

4. Собственно выполняем публикацию.


Ссылки по теме

Using Web.config Transformation in Web Site Projects
http://andrewtwest.com/2010/02/25/using-web-config-transformations-in-web-site-projects/

How to: Edit Project Files
http://msdn.microsoft.com/en-us/library/ms171487(v=vs.90).aspx

среда, 11 июня 2014 г.

ASP.MVC работа с nullable decimal (decimal?)

Окружение: ASP.NET MVC, VS 2013

Проблема

Столкнулся с проблемой, что nullable decimal не разбираются

Решение

сделал кастомный биндер
код взял из статьи
http://icanmakethiswork.blogspot.com/2013/03/decimalmodelbinder-for-nullable-decimals.html

и потом зарегистрировал биндер в global.asax

ModelBinders.Binders.Add(typeof(decimal), new DecimalModelBinder());
ModelBinders.Binders.Add(typeof(decimal?), new DecimalModelBinder());

вторник, 3 июня 2014 г.

gmail Ошибка Please log in via your web browser and then try again

Attention! For your convenience this material is available in English



Ситуация


делаю отправку через веб-сайт емейлов от имени gmail-аккаунта (задаю логин/пароль/SMTP сервер/порт)

Ошибка

При отладке приложения на локальном сервере - все ок.
Как только загружаю на хостинг - выдает ошибку

534-5.7.14 Please log in via your web browser and then try again. 534-5.7.14 Learn more at 534 5.7.14 https://support.google.com/mail/bin/answer.py?answer=78754 18sm42904851wju.15 - gsmtp 


Исследование

погуглил. помог один из ответов отсюда
http://stackoverflow.com/questions/20337040/gmail-smtp-debug-error-please-log-in-via-your-web-browser

Решение

Суть проблемы в моем случае
Gmail блокирует почту с незнакомых IP-адресов
Естественно выполнить с IP-адреса хостинга пожелание гугла залогиниться в веб-почту ("Please log in via your web browser") я не смог.

Соответственно нужно было отключить блокировку незнакомых адресов через эту ссылку
https://accounts.google.com/DisplayUnlockCaptcha

UPD
также разрешил ненадежные приложения через
https://myaccount.google.com/lesssecureapps

См. также

Gmail SMTP debug: error “please log in via your web browser”
http://stackoverflow.com/questions/20337040/gmail-smtp-debug-error-please-log-in-via-your-web-browser