Skip to content

Instantly share code, notes, and snippets.

View DmitriyVlasov's full-sized avatar

Dima Vlasov DmitriyVlasov

View GitHub Profile
@DmitriyVlasov
DmitriyVlasov / The next ten Fridays 13.fs
Last active August 29, 2015 14:16
The next ten Fridays 13
let ``Next N Friday 13`` n =
Seq.initInfinite (fun i -> i |> float |> System.DateTime.Now.AddDays)
|> Seq.filter (fun date -> date.Day = 13 && date.DayOfWeek = System.DayOfWeek.Friday)
|> Seq.map (fun date -> date.ToShortDateString())
|> Seq.take n
|> Seq.toList
// Output:
// val ( Next N Friday 13 ) : n:int -> string list
// val it : string list =
@DmitriyVlasov
DmitriyVlasov / EventLogExample.fs
Last active August 29, 2015 14:22
Пример работы с логом событий на F#
open System.Diagnostics
let sizeEventLog (el : EventLog) =
Microsoft.Win32.Registry.LocalMachine.OpenSubKey( @"System\CurrentControlSet\Services\EventLog\" + el.Log )
|> Option.ofNull
|> Option.bind ( fun registryKey -> registryKey.GetValue("FIle") |> Some )
|> Option.bind Option.ofNull
|> Option.bind ( fun x -> x.ToString() |> Some )
|> Option.bind ( fun filePath -> new FileInfo(filePath) |> Some )
|> Option.bind ( fun fi -> fi.Name |> Some )
@DmitriyVlasov
DmitriyVlasov / sample-regex-provider.fsx
Last active August 29, 2015 14:24
Примеры использования FSharp.Text.RegexProvider
(** # Примеры использования FSharp.Text.RegexProvider*)
(** ## Проверка ссылок на F#*)
(** Следующий скрипт выводит информацию о ссылках в html-коде, хранящемся в переменной html.
Скрипт портирован из примера в книге Д. Фридл, Регулярные выражения стр. 257 *)
open System.Text.RegularExpressions
open FSharp.Text.RegexProvider
[<Literal>]
let aTagPattern =
#r "System.DirectoryServices.AccountManagement.dll"
open System.DirectoryServices.AccountManagement
let testSearch fullName =
let ctx = new PrincipalContext(ContextType.Domain)
let u = new UserPrincipal(ctx)
u.Surname <- fullName
use ps = new PrincipalSearcher(u)
ps.FindAll()
|> Seq.cast<System.DirectoryServices.AccountManagement.UserPrincipal>
@DmitriyVlasov
DmitriyVlasov / UpdatePowerShellHelpOverProxy.ps1
Created August 6, 2015 17:07
Обновление справки Powershell через прокси сервер
$webclient = New-Object System.Net.WebClient
$creds = Get-Credential
$webclient.Proxy.Credentials = $creds
Update-Help -Credential $creds
@DmitriyVlasov
DmitriyVlasov / ExampleExportCsv.ps1
Created August 18, 2015 07:08
Корректный экспорт данных в CSV русскоязычных букв.
# Выгружает в формате csv без вставки в заголовок файла описание типа, в кодировке Юникод.
export-csv -Path C:\temp\export.csv -Delimiter ';' -NoTypeInformation -Encoding Unicode
@DmitriyVlasov
DmitriyVlasov / Excel4.fs
Created October 2, 2015 06:38 — forked from mndrake/Excel4.fs
A F# wrapper class for the Excel4/Excel12 methods contained in Excel-DNA to mimic basic methods of the COM object model
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
namespace Utility
@DmitriyVlasov
DmitriyVlasov / ianaMediaTypeTable.fs
Created November 1, 2015 21:29
Пример использования провайдера типа CsvProvider из библиотеки FSharp.Data на примере получения таблицы медиа типов официально предоставляемых консорциумом IANA.
#I @"../../packages/FSharp.Data/lib/net40"
#r @"FSharp.Data.dll"
open FSharp.Data
[<Literal>]
let ianaCsvSample = "Name,Template,Reference
1d-interleaved-parityfec,application/1d-interleaved-parityfec,[RFC6015]"
@DmitriyVlasov
DmitriyVlasov / paket-from-fsharp-repl.fsx
Last active November 7, 2015 13:26
Использование paket из интерактивной сессии F#
// Делаем текущий каталог рабочей директорией
System.Environment.CurrentDirectory <- __SOURCE_DIRECTORY__
// Если файл paket.exe не существует загружаем его
if not (System.IO.File.Exists "paket.exe") then
let url = "http://fsprojects.github.io/Paket/stable"
use wc = new System.Net.WebClient()
let tmp = System.IO.Path.GetTempFileName()
let stable = wc.DownloadString(url)
wc.DownloadFile(stable,tmp)
@DmitriyVlasov
DmitriyVlasov / gist:bd6ca0f08229af368116
Last active November 17, 2015 10:08 — forked from forki/gist:08d36d1e79603ef12c25
Get Paket download counts
//------------------------------------------
// Step 0. Boilerplate to get the paket.exe tool
open System
open System.IO
Environment.CurrentDirectory <- __SOURCE_DIRECTORY__
if not (File.Exists "paket.exe") then
let url = "http://fsprojects.github.io/Paket/stable"