Wow, about 20 attendees!!! I really did not expect such a rush.
Thank you everyone, who joined us today! Welcome all of you at the next F# Minsk meetup.
These are the slides from our talks:
Father. Husband. Developer. Microsoft MVP. Likes #fsharp 🦔, #rust 🦀 and OSS.
Wow, about 20 attendees!!! I really did not expect such a rush.
Thank you everyone, who joined us today! Welcome all of you at the next F# Minsk meetup.
These are the slides from our talks:
![]() |
![]() |
Welcome to F# Weekly,
A roundup of F# content from this past week:
News
Video/Presentations
Blogs
Isaac Abraham wrote “Trying F# – are you a developer or a mouse?“.
That’s all for now. Have a great week. Previous F# Weekly edition – #40
![]() |
![]() |
Welcome to F# Weekly,
A roundup of F# content from this past week:
News
Blogs
That’s all for now. Have a great week. Previous F# Weekly edition – #39
![]() |
![]() |
![]() |
Welcome to F# Weekly,
A roundup of F# content from this past week:
News
Videos/Presentations
Blogs
That’s all for now. Have a great week.
Previous F# Weekly edition – #38
Some days ago, I was faced with the task of developing Dropbox connector that should be able to enumerate and download files from Dropbox. The ideal case for me is a wrapper library for .NET 3.5 with an ability to authorize in Dropbox without user interaction. This is a list of .NET libraries/components that are currently available:
Sprint.NET and Xamarin component are not my options for now. DropNet also does not fit my needs, because it is .NET 4+ only. But if your application is for .NET 4+, then DropNet should be the best choice for you. I chose SharpBox, it looks like a dead project – no commits since 2011, but nevertheless the latest version is available on NuGet.
At the beginning, you need to go to Dropbox App Console and create a new app. Click on “Create app” button and answer to the questions like in the picture below.
When you finish all these steps, you will get an App key and App secret, please copy them somewhere – you will need them in future. Now we are ready to create our application. Let’s create a new F# project and add AppLimit.CloudComputing.SharpBox package from NuGet.
After package is downloaded, go to packages\AppLimit.CloudComputing.SharpBox.1.2.0.542\lib\net40-full folder, find and start DropBoxTokenIssuer.exe application.
Fill Application Key and Application Secret with values that you received during app creation, fill Output-File path with c:\token.txt and click “Authorize”. Wait some seconds(depends on your Internet connection) and follow the steps that will appear in browser control on the form – you will need to authorize in Dropbox with your Dropbox account and grant access to your files for your app. When file with your token will be created, you can click on “Test Token” button to make sure that it is correct.
Using token file, you are able to work with Dropbox files without direct user interaction, as shown in the sample below:
open System.IO
open AppLimit.CloudComputing.SharpBox
[<EntryPoint>]
let main argv =
let dropBoxStorage = new CloudStorage()
let dropBoxConfig = CloudStorage.GetCloudConfigurationEasy(nSupportedCloudConfigurations.DropBox)
// load a valid security token from file
use fs = File.Open(@"C:\token.txt", FileMode.Open, FileAccess.Read, FileShare.None)
let accessToken = dropBoxStorage.DeserializeSecurityToken(fs)
// open the connection
let storageToken = dropBoxStorage.Open(dropBoxConfig, accessToken);
for folder in dropBoxStorage.GetRoot() do
printfn "%s" (folder.Name)
dropBoxStorage.Close()
0
Welcome to F# Weekly,
A roundup of F# content from this past week:
News
Videos/Presentations
Blogs
That’s all for now. Have a great week.
Previous F# Weekly edition – #37
![]() |
![]() |
Welcome to F# Weekly,
A roundup of F# content from this past week:
News
Blogs
That’s all for now. Have a great week.
Previous F# Weekly edition – #36
Update (2014, January 3): Links and/or samples in this post might be outdated. The latest version of samples are available on new Stanford.NLP.NET site.
Tokenization of raw text is a standard pre-processing step for many NLP tasks. For English, tokenization usually involves punctuation splitting and separation of some affixes like possessives. Other languages require more extensive token pre-processing, which is usually called segmentation.
The Stanford Word Segmenter currently supports Arabic and Chinese. The provided segmentation schemes have been found to work well for a variety of applications.
One more tool from Stanford NLP Software Package become ready on NuGet today. It is a Stanford Word Segmenter. This is a fourth one Stanford NuGet package published by me, previous ones were a “Stanford Parser“, “Stanford Named Entity Recognizer (NER)” and “Stanford Log-linear Part-Of-Speech Tagger“. Please follow next steps to get started:
For more details see source code on GitHub.
open java.util
open edu.stanford.nlp.ie.crf
[<EntryPoint>]
let main argv =
if (argv.Length <> 1) then
printf "usage: StanfordSegmenter.Csharp.Samples.exe filename"
else
let props = Properties();
props.setProperty("sighanCorporaDict", @"..\..\..\..\temp\stanford-segmenter-2013-06-20\data") |> ignore
props.setProperty("serDictionary", @"..\..\..\..\temp\stanford-segmenter-2013-06-20\data\dict-chris6.ser.gz") |> ignore
props.setProperty("testFile", argv.[0]) |> ignore
props.setProperty("inputEncoding", "UTF-8") |> ignore
props.setProperty("sighanPostProcessing", "true") |> ignore
let segmenter = CRFClassifier(props)
segmenter.loadClassifierNoExceptions(@"..\..\..\..\temp\stanford-segmenter-2013-06-20\data\ctb.gz", props)
segmenter.classifyAndWriteAnswers(argv.[0])
0
For more details see source code on GitHub.
using java.util;
using edu.stanford.nlp.ie.crf;
namespace StanfordSegmenter.Csharp.Samples
{
class Program
{
static void Main(string[] args)
{
if (args.Length != 1)
{
System.Console.WriteLine("usage: StanfordSegmenter.Csharp.Samples.exe filename");
return;
}
var props = new Properties();
props.setProperty("sighanCorporaDict", @"..\..\..\..\temp\stanford-segmenter-2013-06-20\data");
props.setProperty("serDictionary", @"..\..\..\..\temp\stanford-segmenter-2013-06-20\data\dict-chris6.ser.gz");
props.setProperty("testFile", args[0]);
props.setProperty("inputEncoding", "UTF-8");
props.setProperty("sighanPostProcessing", "true");
var segmenter = new CRFClassifier(props);
segmenter.loadClassifierNoExceptions(@"..\..\..\..\temp\stanford-segmenter-2013-06-20\data\ctb.gz", props);
segmenter.classifyAndWriteAnswers(args[0]);
}
}
}
![]() |
![]() |
Welcome to F# Weekly,
A roundup of F# content from this past week:
News
Videos/Presentations
Blogs
That’s all for now. Have a great week.
Previous F# Weekly edition – #35