вторник, 13 декабря 2016 г.

MS SQL Server Рекурсия в триггерах (Transcat SQL)

Окружение:

MS SQL Server 2014, Transact SQL

Ситуация

Триггер должен менять поля в других записях этой же таблицы

Вопросы

Работая над этим вопросом столкнулся с проблемой рекурсивных вызовов.
Если триггер апдейтит другие записи, то он может и не вызываться (у меня не вызывался).

За это поведение на уровне БД отвечает настройка рекурсивного вызова триггеров.
Вот скрипт изменения этой настройки.

ALTER DATABASE databasename
SET RECURSIVE_TRIGGERS ON OFF


Посмотреть текущее состояние - можно в свойствах БД.

Также в коде можно проверять уровень вложенности триггеров

IF ((SELECT TRIGGER_NESTLEVEL()) > )RETURN

Обратите внимание, если Вы реите работать с рекурсивными триггерами, то курсоры вам нужно делать обязательно локальные

DECLARE cursor_name CURSOR LOCAL ...

Материалы по теме


How do I prevent a database trigger from recursing?
http://stackoverflow.com/questions/1529412/how-do-i-prevent-a-database-trigger-from-recursing

SQL SERVER – 2005 Understanding Trigger Recursion and Nesting with examples
http://blog.sqlauthority.com/2007/05/18/sql-server-2005-understanding-trigger-recursion-and-nesting-with-examples/

ALTER DATABASE SET Options (Transact-SQL)
https://msdn.microsoft.com/en-us/library/bb522682.aspx

Database Properties (Options Page)
https://msdn.microsoft.com/en-us/library/ms188124.aspx

Turning Recursive and Nested Triggers On and Off
http://www.devx.com/tips/Tip/30031

TRIGGER_NESTLEVEL (Transact-SQL)
https://msdn.microsoft.com/en-us/library/ms182737%28v=sql.105%29.aspx

DECLARE CURSOR (Transact-SQL)
https://msdn.microsoft.com/en-us/library/ms180169.aspx

четверг, 8 декабря 2016 г.

Битрикс: настройка проверки наличия товара

как система проверяет наличие товара?
как система определяет товары недоступные для покупки?

Для ответа на вопросы рекомендую материалы:

https://dev.1c-bitrix.ru/user_help/content/iblock/components_2/catalog/catalog.php
и
https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=42&LESSON_ID=5298

Битрикс ошибка при удалении типа инфоблока: "Ошибка удаления. Возможно есть ссылающиеся объекты."

Ситуация

Битрикс, пытаюсь удалить тип инфоблока - получаю ошибку:

"Ошибка удаления. Возможно есть ссылающиеся объекты."

Решение

Захожу в редактирование типа инфоблока.
Переключаюсь на вкладку "Торговый каталог"
Снимаю галочки "Является торговым каталогом" и "Инфоблок имеет торговые предложения".

После этого получилось удалить тип инфоблока.

Источник

Помогла тема форума
http://dev.1c-bitrix.ru/support/forum/forum26/topic35556/1

суббота, 19 ноября 2016 г.

ASP.NET error The compiler failed with error code -1073741502

Problem


Suddenly I Receive such error on remote ASP.NET hosting after publishing site.

Server Error in '/' Application.

Compilation Error

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: The compiler failed with error code -1073741502.




Solution

Solution is described here
http://stackoverflow.com/questions/6817870/asp-net-strange-compilation-error

пятница, 28 октября 2016 г.

Как сделать скриншот веб страницы


Задача

сделать скриншот целой веб-страницы

Быстрое решение


помогла онлайн-версия https://snapito.com

Есть еще масса решений. собрал их в разделе Статьи по теме

Статьи по теме


Как сделать скриншот целой веб-страницы
https://lifehacker.ru/2012/09/15/kak-sdelat-skrinshot-celojj-veb-stranicy/

Как сделать скриншот всей страницы в браузере?
http://www.opera.com/blogs/russia/2016/05/skrinshot-vsey-stranicy-v-brauzere/

Скриншот всей страницы сайта в Google Chrome
http://goodquestion.ru/screenshot-google-chrome/

среда, 26 октября 2016 г.

Entity Framework + Linq группировка по nullable-полю

Окружение

Entity Framework, Linq, C#


Задача

сделать Linq-запрос для Entity Framework с группировкой по навигационному полю, которое может содержать пустые значения (null-значения)


Решение

Идея решения: приведите нуллабле поле к несуществующему значению в рамках таблицы

пример

GroupBy(o => o.Order==null?null:o.Order.ClientId)

или

GroupBy(x => x.Programa == null ? -1 : x.Programa.Id)

Материал по теме

Решение отсюда
http://stackoverflow.com/questions/5782915/groupby-with-id-of-possible-null-object

четверг, 22 сентября 2016 г.

ASP.NET MVC ошибка Index was outside the bounds of the array

Окружение

Visual Studio 2015, проект на ASP.NET MVC со сломанными референсами. Референсы перестраивал.

Проблема

при запуске проекта

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

Английский вариант
Index was outside the bounds of the array

красная строка:
@Styles.Render("[имя бандла стилей]")


Решение

Помогло обновление через NuGet библиотеки WebGrease

Люди пишут, что иногда нужно обновлять и Microsoft ASP.NET Web Optimization Framework

См. также

Еще варианты описаны в статье

четверг, 1 сентября 2016 г.

PSPad подключение к SFTP-сайту

Работаю c PSPad -редактором
Пытаюсь подключиться к сайту через SFTP

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

Погуглил: оказывается PSPad не работает с SFTP

Варианты решения

1. полкючить PSPAD редактором по умолчанию для ftp-клиента
2. тунелирование: использовать специальную программу для проброса SFTP->FTP

Подробно эти варианты описаны тут
http://webhosting.platon.org/article.php?support::pspad

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

FTP SSL/TLS problem
http://forum.pspad.com/read.php?2,59190
SFTP solution via free tunneler
http://forum.pspad.com/read.php?2,64784,65417#msg-65417


воскресенье, 21 августа 2016 г.

Joomla - создание компонента - подборка статей

Когда-то интересовался темой создания компонентов в Joomla.

Запрос джумла 3 - создание компонента
https://www.google.com.ua/search?q=%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5+%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D0%B0+%D0%B2+joomla&sourceid=ie7&rls=com.microsoft:en-US:IE-Address&ie=&oe=&gfe_rd=cr&ei=T2W1VMn7KMuG8QeVqIDABQ&gws_rd=ssl#rls=com.microsoft:en-US:IE-Address&q=joomla+3+%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5+%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D0%B0


Мануал как создать компонент на joomla 3.х
http://joomla-umnik.ru/manual-kak-sozdat-komponent-na-joomla-3-kh


Разработка расширения для Joomla! 3.0 – начинаем разработку
http://joomlablog.ru/razrabotka/360-razrabotka-rasshireniya-dlya-joomla-3-0-nachinaem-razrabotku


Создание компонента для Joomla 2.5
http://joomlablog.ru/dokumentatsiya/dlya-razrabotchika/sozdanie-komponenta-dlya-joomla-2-5

Cоздание компонента для Joomla 2.5
http://joomla-code.ru/great-component-joomla16

Создание компонента для Joomla 1.5
http://joomla-code.ru/great-component

Создание компонента Joomla с нуля. Часть 1
http://xdan.ru/sozdanie-komponenta-Joomla-s-nulja-part-1.html

пятница, 19 августа 2016 г.

EntittyFramework.Core сгенерировать модели из БД

Пробую .Net Core, EF.Core, ASp.Net core

Фокус на EF.Core

Задача: хочу сделать реверс-инжиниринг БД в библиотеке классов (class library)

Решение в лоб из сайта доков не помогло

https://docs.efproject.net/en/latest/platforms/aspnetcore/existing-db.html

Помогло решение со страницы

http://stackoverflow.com/questions/38872545/database-first-error-entity-framework-net-core

если нет нужных шаблонов проектов - проверить установлені ли необходиміе компоненті студии по этой странице
https://www.microsoft.com/net/core#windows

Материалы по теме


Документация по EF Core
https://docs.efproject.net

Announcing Entity Framework Core 1.0
https://blogs.msdn.microsoft.com/dotnet/2016/06/27/entity-framework-core-1-0-0-available/

Roadmap
https://github.com/aspnet/EntityFramework/wiki/Roadmap

вторник, 2 августа 2016 г.

Бизнес-процессы (workflow) в .NET анализ ситуации на рынке

Ситуация

В одном из текущих развивающихся .NET проектов начали напрашиваться Бизнес процессы

Раньше был опыт реализации бизнес процессов (Workflow) на различных движках. Но это было давно, поэтому решил подойти к вопросу с "чистого листа" и изучить текущую ситуацию на рынке.

Ниже опишу найденные движки и приведу материалы по теме.
Вопрос пока открыт так что комментарии приветствуются.


суббота, 30 июля 2016 г.

Visual Studio 2015 Ошибка The "TransformXml" task could not be loaded from the assembly ....\Microsoft.Web.Publishing.Tasks.dll

Ситуация


в Visual studio 2015 получаю ошибку при билде проекта (после переустановки студии)

The "TransformXml" task could not be loaded from the assembly C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll. 

Could not load file or assembly 'file:///C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll' or one of its dependencies. The system cannot find the file specified. 

Confirm that the declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask.


Решение


Выгрузил проект (Unload Project из контекстного меню проекта)

Открыл окно редактирования файла проекта (Edit (project name).proj из контекстного меню проекта)

в файле проекта нашел строчку

Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.targets" />

заменил на

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.targets" />

суть замены выделил.

перезагрузил проект (из контексного меню проекта)

Для других версий студии решение тоже должно помочь но в строчках посика и в тексте ошибки версия студии модет отличаться.

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

TransformXml task could not be loaded from Microsoft.Web.Publishing.Tasks.dll
http://stackoverflow.com/questions/20358747/transformxml-task-could-not-be-loaded-from-microsoft-web-publishing-tasks-dll

четверг, 28 июля 2016 г.

Outlook 2016 Перемещение файла данных на другой диск

Ситуация

На ноутбуке с первым небольшим SSD винтом захотел переместить файл данных аутлука на другой большой диск (чтобы освободить больше места на SSD)


Задача

Перенести файл данных Outlook 2016 на другой диск (в общем случае в другое место)


Что не сработало

грубое перемещение файла и перезапуск Outlook не помогло. Outlook 2016 пересоздает свой файл в старом месте.


Что сработало

решение для Windows 10

Создание символьной ссылки

Логика:

1. закрываем Outlook
2. перемещаем файл данных .ost (он обычно хранится C:\Users\(user)\AppData\Local\Microsoft\Outlook\)
3. Делаем символьную ссылку

mklink "C:\Users\(user)\AppData\Local\Microsoft\Outlook\(filename).ost" "D:\Outlook\(filename).ost"

не забудьте заменить
(user) и (filename) на реальные значения


См. также

Outlook 2016 удалить профили пользователей


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

Moving the ost-file or pst-file of an Outlook.com or IMAP account
(тут есть про создание символьных ссылок)
https://www.howto-outlook.com/howto/movingostpstoutlookcomimap.htm


Move the ost-file to another disk or folder location
https://www.msoutlook.info/question/463
тут сказано, что для Outlook 2016 метод перемещения файла не работает

Outlook 2016 удалить профили пользователей

Задача: 

Очистить профили всех пользователей Outlook 2016


Предыстория: 

по ошибке удалил файл данных Outlook и аутлук перестал запускаться.

сразу скажу: переустановка Outlook не помогла


Решение для русской Windows 10 

(скорее всего сработает и для других систем, но команды будут чуть отличаться)

Пуск/вводим "Панель управления" - находим её в списке и запускаем

там в поле поиска вводим "Почта"

щелкаем на найденном значке

открывается окно настройки почты

Область "Конфигурации" кнопка "Показать"

открывается окно конфигураций, в котором удаляем конфигурацию.

См. также

Outlook 2016 Перемещение файла данных на другой диск


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

Outlook 2016 Office Pro - How to delete Data Files
http://answers.microsoft.com/en-us/office/forum/office_2016-outlook/outlook-2016-office-pro-how-to-delete-data-files/b7fa63a7-e3c1-4072-acb8-15adc9503b93

вторник, 26 июля 2016 г.

Windows Server 2008 отменить сложные пароли (Пароли должны отвечать требованиям сложности)

Проблема


Столкнулся с проблемой,что Windows Server 2008 требует установки сложного пароля.

А в моем случаехотелось бы датьпользователям простые пароли.

Поиск в интернете дал результаты - ссылки - ниже.

Краткое решение

Пуск/Панель Управления/Система и безопасность/Администрирование/ищем среди ярлыков и запускаем "Локальная политика безопасности"

там ищем ветку дерева
Параметры Безопасности/Политики учетных записей/Политика пароля

отключаем параметр "Пароль должен отвечать требованиям сложности"

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


Изменение политики паролей в Windows Server 2008 R2
http://tavalik.ru/izmenenie-politiki-paroley-v-windows-server-2008/


Пароли должны отвечать требованиям сложности
https://msdn.microsoft.com/ru-ru/library/cc786468(v=ws.10).aspx

Применение или изменение политики паролей
https://msdn.microsoft.com/ru-ru/library/cc781633(v=ws.10).aspx


четверг, 21 июля 2016 г.

Очистка места Windows Server - проблеманя папка c:\windows\winsxs

идея: делаем линк (джунктион)

примерно как в статье
http://superuser.com/questions/455853/can-i-delete-the-the-folder-c-programdata-package-cache

также должна помочь статья, но я её еще не воспользовался.т.к. места не зватает даже чтобы загрузить апдейты
How to Clean up the WinSxS Directory and Free Up Disk Space on Windows Server 2008 R2 with New Update
https://blogs.technet.microsoft.com/askpfeplat/2014/05/13/how-to-clean-up-the-winsxs-directory-and-free-up-disk-space-on-windows-server-2008-r2-with-new-update/


еще статьи по теме
How to address disk space issues that are caused by a large Windows component store (WinSxS) directory
https://support.microsoft.com/en-us/kb/2795190


Cleanup Windows Server Side By Side Folder (WINSXS)
https://www.linkedin.com/pulse/cleanup-windows-server-side-folder-winsxs-jeremy-cooke

суббота, 21 мая 2016 г.

Рассылка СМС для Украины через API

Задача рассылать смс из программы

Для одного проекта понадобилась автоматизировать рассылку смс.

Требование: минимальные издержки, реализация без покупки доп оборудования

изучал такие варианты

Прямая работа через операторов


1. Киевстар

менеджеры не предоставили варианта отправки через API  - только веб-интерфейс, который мен в приницпе не подходил

2. Водафон (МТС)

Вариант отправки через апи есть, смс-ки стоятдешевле чем в сервисах смс-рассылок
но нужно еще платить абонплату за альфа имя и пользование сервисом


Использование сервисов смс-рассылок

в них преимущество - отстуствие абонплат и плат за использование альфа имени. но чуть более дорогая стоимость смс по сравнеию с подключением через оператора

1. Турбосмс
https://turbosms.ua

вроде все нормально но тестовые результаты очень расстроили: смс-ки отправляются порядка 5 минут

2. Sms-fly
https://sms-fly.com

стоимость чуть дешевле чем в турбосмс и тестовая рассылка приходила в течение 3-5 секунд.
Пока этот вариант оставил за базовый

апи - через http-протокол

Материалы по теме

СМС-сервисы

http://www.infobip.com/
http://sms-fly.com/
https://letsads.com
https://turbosms.ua

Отправка смс через шлюз Openvox VoxStack
https://habrahabr.ru/post/254383/

пятница, 22 апреля 2016 г.

gmail - очистка места, удаление старых писем

Ситуация: Забился ящик гугл-почты (почта заняла все выделенное простарнство)

Нужно было срочно избавиться от старых писем.

Принял решение: избавиться от всех писем старше 2-х лет

В Microsoft Outlook клиенте не смог это сделать адекватно: веду сложную проектную структуру папок - пришлось бы проверять сотни папок и подпапок.

Помог веб интерфейс gmail

в двух словах в строке поиска веб-интерфейса ввел

older_than:2y

и гугл отобрал письма из всех подпапок старше 2-х лет. Дельше уже дело техники: перенес в корзину, а из корзины - полностью удалил.

Фактически помогла статья

5 способов освободить место в Gmail
http://lifehacker.ru/2014/07/30/svobodu-gmail/

Там есть еще несколько способов, но мне хватило и этого.

см.также

10 фишек почты Gmail, о которых вы ничего не знаете
http://shperk.ru/fishki/10-gmail-tips.html

четверг, 10 марта 2016 г.

Windows Server 2008 - очистка места

Задача: Очистить место на Windows Server 2008

Чтобы очиститместо стандартными средствами виндовс нужно доставить фичу (feature) "Desktop Experience".

Заходим в Server Manager, раздел Features (Компоненты), в списке меню выбираем "Desktop Experience" (Возможности рабочего стола) (Пункт модет прятаться в меню "Возможности интерфейса и инфраструктура")

После установки и перезагрузки выбираем нужный диск - контекстное меню - Properties(Свойства) и под круговой диаграммой использования пространства появяется кнопка Очистки "Cleanup"


источиник информации
https://social.technet.microsoft.com/Forums/office/en-US/c85b9dc7-5ae2-497f-b28a-80d0f648417f/where-is-cleanmgrexe-aka-disk-cleanup-tool-missing-in-windows-server-2008?forum=winservergen


Еще помогла статья

Freeing Disk Space on C:\ Windows Server 2008
http://blog.willbeattie.net/2013/06/freeing-disk-space-on-c-windows-server.html

четверг, 3 марта 2016 г.

Настройка почты на виртуальной машине Битрикс

Появилась задача
Настройка почты на Виртуальной машине Битрикс

Помогла статья

Настройка почты на VMBitrix
https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=41&LESSON_ID=2946

см. также
Настройка почты
https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=48&CHAPTER_ID=04796

Для информации:
конфигурация по умолчанию:

account default
logfile /var/log/msmtp.log
host localhost
port 25
from admin@vavilon-shop.com.ua
keepbcc on
auth off


четверг, 21 января 2016 г.

FastReport формат числа с ведущими нулями (FastReport VCL)

Ситуация

Есть прилодение на Delphi 7 с FastReport 4. Клиент запросил, чтобы в печтаной форме документа выводились ведущие нули.
Задача словами клиента: Номер документа должен быть шестизначным.

Решение

Использовать внутри FastReport функцию формат в стиле Delphi

Пример Delphi 

str := Format('%.*d',[length, number]);
str := Format('%.*d',[3, 7]);
//str is '007'


Пример FastReport

[Format('%.*d',[6,<frxDBDataset1Order."NUMBER">])]

FastReport Number Format with Leading Zeros (FastReport VCL)

Problem


Delphi 7 Application with FastReport 4. I need field "document number" to be with leading zero in FastReport report.

Solution

Use FastReport Format Function in Delphi-style manner.

Delphi Example

str := Format('%.*d',[length, number]);
str := Format('%.*d',[3, 7]);
//str is '007'


FastReport Example

[Format('%.*d',[6,<frxDBDataset1Order."NUMBER">])]


понедельник, 11 января 2016 г.

Microsoft BizSpark

Искал материалы по теме.
Оставлю здесь ссылки для Украины и России

Microsoft BizSpark Украина
https://www.microsoft.com/ukraine/bizspark/default.mspx

Microsoft BizSpark Россия
http://special.habrahabr.ru/hello_startup/bizspark/

Шаблон учетной системы: основные виды объектов

В общем случае учетные системы состоят из минимум 2-х видов объектов: Справочники и Документы.

Справочники 

Относительно устойчивая информация. Сказать что она постоянная - нельзя. иногда данные справочников меняются, но изменения/добавления в них происходят обычно реже чем в документах (см. далее)

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

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

В общем случаем минимально необходимый реквизит для справочников - "Название"

Документы

обычно отражают деятельность организации.
относительно часто добавляемая информация

для документов в общем случаем минимально необходимые реквизиты: дата операции и номер

пятница, 1 января 2016 г.

C# parsing Excel-file without installed Excel

Problem:
Parse Excel-file using C#.

Solution must be used in web application on server, so, it must work without installed Excel.

What Helps?

I use Excel Data Reader library

Main idea: with this library you can import excel file into ADO.NET dataset, then you canwork in .NET dataset terms with rows or cols.

Source code

FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read);

//1. Reading from a binary Excel file ('97-2003 format; *.xls)
IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
//...
//2. Reading from a OpenXml Excel file (2007 format; *.xlsx)
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
//...
//3. DataSet - The result of each spreadsheet will be created in the result.Tables
DataSet result = excelReader.AsDataSet();


Download link

https://exceldatareader.codeplex.com/

See also


ExcelDataReader
http://exceldatareader.codeplex.com/


Work with Excel on C# without installed Microsoft Office
http://it-student.com.ua/c/tips/rabota-s-excel-v-c-bez-ustanovlennogo-microsoft-office.html

NPOI Lib
http://www.leniel.net/2014/01/npoi-2.0-major-features-enhancements-series-of-posts-scheduled.html#sthash.mzVboJsi.dpbs

NPOI - download link and examples
http://npoi.codeplex.com/releases

NPOI examples
http://stackoverflow.com/questions/5855813/npoi-how-to-read-file-using-npoi



Work with Excel through Com Server
http://wladm.narod.ru/C_Sharp/comexcel.html#7

Excel object model from the .NET developer point of view
http://www.ishodniki.ru/art/art_progr/net/474.html


Excel with C#
http://petrachuk.ru/excel-by-csharp/

C# How To Read .xlsx Excel File With 3 Lines of Code
http://www.codeproject.com/Tips/801032/Csharp-How-To-Read-xlsx-Excel-File-With-Lines-of

Excel reading or writing using OpenXML
http://habrahabr.ru/post/203522/

Koogra Excel BIFF/XLSX Reader Library
http://sourceforge.net/projects/koogra/