Озадачившись сокращением кол-ва строк кода нашёл что способ перечисления действий в строку через двоеточие приведённый в примере использования single line "if then else"оператора работает в любом месте кода:
bad memory
vb.net, active directory, администрирование, автоматизация рутинных задач администрирования, быдлокодинг, волнующее железо. Блог завёл чтобы самому не забывать часто используемые конструкции.
24 сент. 2014 г.
11 июн. 2014 г.
Использование функций SQL сервера в EntityDatasource commandtext
Мне, например, это понадобилось для дого чтобы выбрать из таблицы все события между датами выбранными в контролах спущенных к командтекст в параметрах @StartDate и @FinishDate.
Проблема в том что дата выбранная в календаре для параметра @FinishDate попадает в текст команды в формате 'дата 00:00'. Соотв. события этой даты в выборку не попадут (... it.[DateTime] < @FinishDate ...). Для того чтобы это победить надо попользоваться, например, SQL функцией "DATEADD", добавить к @FinishDate 1 день и сравнивать it.[DateTime] уже с этим значением. В commandtext это делается так: it.[DateTime] < SqlServer.DATEADD ('day' , 1 ,@FinishDate).
Проблема в том что дата выбранная в календаре для параметра @FinishDate попадает в текст команды в формате 'дата 00:00'. Соотв. события этой даты в выборку не попадут (... it.[DateTime] < @FinishDate ...). Для того чтобы это победить надо попользоваться, например, SQL функцией "DATEADD", добавить к @FinishDate 1 день и сравнивать it.[DateTime] уже с этим значением. В commandtext это делается так: it.[DateTime] < SqlServer.DATEADD ('day' , 1 ,@FinishDate).
30 мая 2014 г.
порнография с EWS:
По простецки поковыряться в календаре пользователя Exchange можно так:
Dim ES As ExchangeService = New ExchangeService(ExchangeVersion.Exchange2010_SP2)
ES.Credentials = New WebCredentials("логин_пользователя_у_которого_полно_прав_на_чужие_ящики@домен", "пароль")
ES.Url = New Uri("https://доменноеимяпочтовогосервера/EWS/Exchange.asmx")
ES.AutodiscoverUrl("логин_календарь_которого_нам_нужен@домен")
Dim CalendarFolderId As New FolderId(WellKnownFolderName.Calendar, CalMail)
Dim iv As CalendarView = New CalendarView(Today, Today.AddMonths(1))
For Each i As Appointment In ES.FindAppointments(CalendarFolderId, iv)
........
Next
Дык оказывается при таком использовании приложение не получает от сервера некоторые свойства событий (например списки участников встреч). Т.е. список участников как будто бы будет, но с нулевым составом, и соотв. толку никакого. Одна путаница. Лучше бы говорил "не могу показать этого свойства потому что...".
Если Вы хотите получить эти свойства, то красную строчку надо поменять на вот это:
Dim t = ES.FindAppointments(CalendarFolderId, iv)
ES.LoadPropertiesForItems(t, PropertySet.FirstClassProperties)
For Each i As Appointment In t
Т.е. явным способом указать что Вам нужно вытряхнуть из эксча побольше свойств (ES.LoadPropertiesForItems(t, PropertySet.FirstClassProperties)).
По простецки поковыряться в календаре пользователя Exchange можно так:
Dim ES As ExchangeService = New ExchangeService(ExchangeVersion.Exchange2010_SP2)
ES.Credentials = New WebCredentials("логин_пользователя_у_которого_полно_прав_на_чужие_ящики@домен", "пароль")
ES.Url = New Uri("https://доменноеимяпочтовогосервера/EWS/Exchange.asmx")
ES.AutodiscoverUrl("логин_календарь_которого_нам_нужен@домен")
Dim CalendarFolderId As New FolderId(WellKnownFolderName.Calendar, CalMail)
Dim iv As CalendarView = New CalendarView(Today, Today.AddMonths(1))
For Each i As Appointment In ES.FindAppointments(CalendarFolderId, iv)
........
Next
Дык оказывается при таком использовании приложение не получает от сервера некоторые свойства событий (например списки участников встреч). Т.е. список участников как будто бы будет, но с нулевым составом, и соотв. толку никакого. Одна путаница. Лучше бы говорил "не могу показать этого свойства потому что...".
Если Вы хотите получить эти свойства, то красную строчку надо поменять на вот это:
Dim t = ES.FindAppointments(CalendarFolderId, iv)
ES.LoadPropertiesForItems(t, PropertySet.FirstClassProperties)
For Each i As Appointment In t
Т.е. явным способом указать что Вам нужно вытряхнуть из эксча побольше свойств (ES.LoadPropertiesForItems(t, PropertySet.FirstClassProperties)).
20 мар. 2014 г.
Имейте в виду, ребята: если вы в конце своей spf записи в DNS написали "~all", то вреда от неё будет большем чем пользы. Механизм SPF записей был создан для того чтобы сократить возможность фальсификации почты от имени Вашего домена. Если Вы пишете в конце записи содержащей информацию о том откуда может прийти Ваша почта "и ещё моя почта может приходить хрен знает откуда", в чём тогда польза этой записи? Всё валящееся "хрен знает откуда" (не прописанное в строгой части записи) будет на принимающем сервере определено антиспам защитой как softfail spf и, с большой долей вероятности, пойдёт в мусор. Лучше сразу пишите "всё что приходит не с этих адресов - в мусор" (-all). И, конечно, не забывайте поддерживать актуальность spf записи. В случае -all потерявшуюся актуальность, кстати, будет намного проще обнаружить.
19 мар. 2014 г.
Из-за того что кое-кто (не будем показывать пальцем, но это была компания Майкрософт) не озаботился созданием удобств для работы кухарок с exif свойствами фотографий в .NET, доставать GPS координаты из них приходится вот таким способом:
Dim theImage As Image = New Bitmap("C:\Users\a.scherbakov\Documents\WP_000336.JPG")
Dim LatDegrees = BitConverter.ToUInt32(theImage.GetPropertyItem(2).Value(), 0) / CSng(BitConverter.ToUInt32(theImage.GetPropertyItem(2).Value(), 4))
Dim LatMinutes = BitConverter.ToUInt32(theImage.GetPropertyItem(2).Value(), 8) / CSng(BitConverter.ToUInt32(theImage.GetPropertyItem(2).Value(), 12))
Dim LatSeconds
If Not BitConverter.ToUInt32(theImage.GetPropertyItem(2).Value(), 16) / CSng(BitConverter.ToUInt32(theImage.GetPropertyItem(2).Value(), 20)) = 0 Then
LatSeconds = BitConverter.ToUInt32(theImage.GetPropertyItem(2).Value(), 16) / CSng(BitConverter.ToUInt32(theImage.GetPropertyItem(2).Value(), 20))
Else
LatSeconds = (LatMinutes - Int(LatMinutes)) * 60
End If
Dim Latitude = LatDegrees & "° " & Int(LatMinutes) & "' " & LatSeconds
Dim LongDegrees = BitConverter.ToUInt32(theImage.GetPropertyItem(4).Value(), 0) / CSng(BitConverter.ToUInt32(theImage.GetPropertyItem(4).Value(), 4))
Dim LongMinutes = BitConverter.ToUInt32(theImage.GetPropertyItem(4).Value(), 8) / CSng(BitConverter.ToUInt32(theImage.GetPropertyItem(4).Value(), 12))
Dim LongSeconds
If Not BitConverter.ToUInt32(theImage.GetPropertyItem(4).Value(), 16) / CSng(BitConverter.ToUInt32(theImage.GetPropertyItem(4).Value(), 20)) = 0 Then
LongSeconds = BitConverter.ToUInt32(theImage.GetPropertyItem(4).Value(), 16) / CSng(BitConverter.ToUInt32(theImage.GetPropertyItem(4).Value(), 20))
Else
LongSeconds = (LongMinutes - Int(LongMinutes)) * 60
End If
Dim Longtitude = LongDegrees & "° " & Int(LongMinutes) & "' " & LongSeconds
Dim theImage As Image = New Bitmap("C:\Users\a.scherbakov\Documents\WP_000336.JPG")
Dim LatDegrees = BitConverter.ToUInt32(theImage.GetPropertyItem(2).Value(), 0) / CSng(BitConverter.ToUInt32(theImage.GetPropertyItem(2).Value(), 4))
Dim LatMinutes = BitConverter.ToUInt32(theImage.GetPropertyItem(2).Value(), 8) / CSng(BitConverter.ToUInt32(theImage.GetPropertyItem(2).Value(), 12))
Dim LatSeconds
If Not BitConverter.ToUInt32(theImage.GetPropertyItem(2).Value(), 16) / CSng(BitConverter.ToUInt32(theImage.GetPropertyItem(2).Value(), 20)) = 0 Then
LatSeconds = BitConverter.ToUInt32(theImage.GetPropertyItem(2).Value(), 16) / CSng(BitConverter.ToUInt32(theImage.GetPropertyItem(2).Value(), 20))
Else
LatSeconds = (LatMinutes - Int(LatMinutes)) * 60
End If
Dim Latitude = LatDegrees & "° " & Int(LatMinutes) & "' " & LatSeconds
Dim LongDegrees = BitConverter.ToUInt32(theImage.GetPropertyItem(4).Value(), 0) / CSng(BitConverter.ToUInt32(theImage.GetPropertyItem(4).Value(), 4))
Dim LongMinutes = BitConverter.ToUInt32(theImage.GetPropertyItem(4).Value(), 8) / CSng(BitConverter.ToUInt32(theImage.GetPropertyItem(4).Value(), 12))
Dim LongSeconds
If Not BitConverter.ToUInt32(theImage.GetPropertyItem(4).Value(), 16) / CSng(BitConverter.ToUInt32(theImage.GetPropertyItem(4).Value(), 20)) = 0 Then
LongSeconds = BitConverter.ToUInt32(theImage.GetPropertyItem(4).Value(), 16) / CSng(BitConverter.ToUInt32(theImage.GetPropertyItem(4).Value(), 20))
Else
LongSeconds = (LongMinutes - Int(LongMinutes)) * 60
End If
Dim Longtitude = LongDegrees & "° " & Int(LongMinutes) & "' " & LongSeconds
14 дек. 2012 г.
Хорошая статья попалась на тему восстановления доверительных отношений между рабочими станциями и контроллерами домена:
http://implbits.com/About/Blog/tabid/78/post/don-t-rejoin-to-fix-the-trust-relationship-between-this-workstation-and-the-primary-domain-failed/Default.aspx
Оказывается, в случае поломки доверия перезаводить машину не обязательно. Для успешного выполнения процедуры на машине должен быть установлен RSAT или серверные оснастки включающие в себя утилиту netdom.exe
http://implbits.com/About/Blog/tabid/78/post/don-t-rejoin-to-fix-the-trust-relationship-between-this-workstation-and-the-primary-domain-failed/Default.aspx
Оказывается, в случае поломки доверия перезаводить машину не обязательно. Для успешного выполнения процедуры на машине должен быть установлен RSAT или серверные оснастки включающие в себя утилиту netdom.exe
23 окт. 2012 г.
Планшеты и таблеты на Core i5 и i7 выходящие в свет в конце октября - начале ноября (Здравствуй, Windows 8!)
Мои любимые классы устройств (ноутбуки-трансформеры и планшеты X86). C ними и поваляться на диване можно, и за столом поработать, и в транспорте, и вообще практически где угодно:
1) Acer W700 - http://www.youtube.com/watch?v=VlrwLoJ8Q1I
1) Acer W700 - http://www.youtube.com/watch?v=VlrwLoJ8Q1I
2) Samsung ATIV SmartPC Pro - http://www.youtube.com/watch?v=qN4tb8OwoG0
3) Sony Vaio Tap 20 - http://www.youtube.com/watch?v=m2avEhzCJ1Y
4) Fujitsu Stylistic QH77 - http://www.ixbt.com/news/hard/index.shtml?16/21/69
5) Lenovo Ideapad Yoga - http://www.youtube.com/watch?v=qZbmCR45GQ0
6) Sony Vaio Duo 11 - http://www.cnet.com/laptops/sony-vaio-duo-11/4505-3121_7-35477656.html
6) Sony Vaio Duo 11 - http://www.cnet.com/laptops/sony-vaio-duo-11/4505-3121_7-35477656.html
7) Microsoft Surface Windows 8 Pro - http://www.microsoft.com/Surface/en-US/surface-with-windows-8-pro/specifications
8) Toshiba Satellite U925t - http://www.3dnews.ru/news/634491
8) Toshiba Satellite U925t - http://www.3dnews.ru/news/634491
Подсказывайте если чего-то здесь нет - довнесу.
Подписаться на:
Сообщения (Atom)
