Archive

Archive for December, 2018

Image recognition using #Azure Computer Vision with C#

December 17, 2018 Leave a comment

car1

Assuming you have an Azure account, if you open up a Computer vision service under Cognitive Services, and grab an API key, you can use Azure to recognise the content of images. – Great for tagging images in blogs, or making sure nobody uploads a nude pic as their profile image on your website – For which you should check out AvatarApi.com for this!

So, lets see some code – I’m using C#, and Newtonsoft to parse the Json;

const string strUrl = “https://westeurope.api.cognitive.microsoft.com/vision/v1.0/analyze?visualFeatures=Tags”;
var wc = new WebClient();
wc.Headers[“Ocp-Apim-Subscription-Key”] = “xxxxxxx”;
var jPost = new { url = Url };
var strPost = JsonConvert.SerializeObject(jPost, Formatting.Indented);
var strJson = wc.UploadString(strUrl, “POST”, strPost);
var jResult = JObject.Parse(strJson);

Depending on your image of course, this will return JSON similar to the following;

{
  "tags": [
    {
      "name": "car",
      "confidence": 0.99999725818634
    },
    {
      "name": "outdoor",
      "confidence": 0.99585741758347
    },
    {
      "name": "transport",
      "confidence": 0.82641708850861
    },
    {
      "name": "blue",
      "confidence": 0.51219713687897
    },
    {
      "name": "roof",
      "confidence": 0.091790720820427
    },
    {
      "name": "automotive",
      "confidence": 0.01434036432286
    },
    {
      "name": "summer",
      "confidence": 0.0078773201327271
    }
  ],
  "requestId": "e0010f8b-189f-4481-ad02-5b71b3ac2b2b",
  "metadata": {
    "width": 1600,
    "height": 1200,
    "format": "Jpeg"
  }
}

 

Advertisements
Categories: Uncategorized

Simple #UDP/IP client/server in C#

December 13, 2018 Leave a comment

udp

TL;DR;

You can grab the code for this demo here https://github.com/infiniteloopltd/udp

Internet traffic can be thought of as layers, normally the stack for viewing a website is IP at the bottom, TCP/IP in the middle, and HTTP at the top.

IP just gets data from A to B , TCP/IP makes sure that data doesn’t get jumbled or dropped in between, and HTTP does things specific to serving websites, like HTTP redirects, HTTP error messages etc.

But, instead of TCP/IP you can also use UDP/IP or simply “UDP”, which is TCP’s messy little brother. It still has the concept of ports like TCP has, but offers no guarantee of jumbled or dropped data.

For this reason, UDP is only used in situations where low latency is much more important than data integrity, like audio / video streaming or gaming. It’s terrible for file transfer.

One other key use of UDP is it’s lower bandwidth usage, which makes it useful for IOT applications over expensive mobile data networks.

If you want to read more about Network programming, check out my book- which you can Buy at Amazon US or Buy at Amazon UK

 

Categories: Uncategorized

‘Promise’ is undefined #IE11

December 10, 2018 Leave a comment

1_Bf17KrH3fJo09LTKHRYJcw

Javascript promises are a key feature of modern asyncronous javascript, but, if you’re developing a mass-market website, cross-browser support may trump the syntactical sugar, especially if you’re facing down business-types, rather than other developers.

Specifically, IE11 does not support Javascript promises, and if you are looking to support a wide range of browsers, then there is a polyfill available from Taylor Hakes, that can get round that error message, that simply says “‘Promise’ is undefined” in IE11

So, working with an example from SMTPJS v3 – which now uses promises, and arrow functions, you need include the following script tags;

https://cdn.jsdelivr.net/npm/promise-polyfill@8/dist/polyfill.min.js
https://smtpjs.com/v3/smtp.js

Then adjust the code to use an inline function instead of an arrow function:

Email.send({
Host : “email-smtp.eu-west-1.amazonaws.com”,
Username : “******”,
Password : “*****”,
To : ‘them@gmail.com’,
From : “you@website.com”,
Subject : “This is the subject”,
Body : “My useragent is ” + navigator.userAgent
}).then(
function(message) { alert(message) } // FOR IE
);

Categories: Uncategorized

#SMTPJS now supports multiple attachments, ReplyTo and sender name

December 7, 2018 1 comment

smtpjs

In case you’ve missed it, SMTPJS.com has just released the V3 Library, this offers a cleaner object model, promises, and new features, such as multiple attachments, Reply-to, and sender name

Here’s an example on how to send multiple attachments:

Email.send({
SecureToken : “XXXXX-XXXX-XXXX-XXXX-XXXXXXX”,
To : “recipient@website.com”,
From : “sender@website.com”,
FromName: “Joe Sender”,
ReplyAddress: “noreply@website.com”,
Subject : “This is the subject”,
Body : “This is the body”,
Attachments : [
{
name : “padlock.png”,
path : “https://www.smtpjs.com/img/ipad.png”
},
{
name : “spam.png”,
path : “https://www.smtpjs.com/img/iphone.png”
}
]
}).then(
message => alert(message)
);

Obviously, you need to change the secureToken property above, or pass in naked SMTP credentials.

Here’s another example, imagine you want to offer an upload form, so people can upload a file to be sent to you – without putting the file on your server.

First, here’s the required line of HTML:

<input type=”fileid=”fileuploadonchange=”uploadFileToServer()” />

Then here’s the uploadFileToServer() method;

function uploadFileToServer() {
var file = event.srcElement.files[0];
var reader = new FileReader();
reader.readAsBinaryString(file);
reader.onload = function () {
var datauri = “data:” + file.type + “;base64,” + btoa(reader.result);
Email.send({
SecureToken : “XXXX-XXXX-XXXX-XXXX-XXXX”,
To : “recipient@website.com”,
From : “sender@isp.com”,
Subject : “The subject”,
Body : “See file attached”,
Attachments : [
{
name : file.name,
data : datauri
}
]
}).then(
message => alert(message)
);
};
reader.onerror = function() {
console.log(‘there are some problems’);
};
}

Categories: Uncategorized

Support for #Motorcycle registration lookups in #Spain via #API

December 5, 2018 Leave a comment

1501179276-bosch-2wp-motorcycle-stabiliy-control-008

Need to find vehicle details of a motorcycle registered in Spain via an API?, this new addition to our suite lets you do this; you should use an alternative API endpoint, as follows;

http://www.matriculaapi.com/api/bespokeapi.asmx?op=CheckMotorBikeSpain

Which returns data in the following format:

{

 “Description”: “SUZUKI DL 650 V-STROM”,

 “CarMake”: {

   “CurrentTextValue”: “SUZUKI”

 },

 “CarModel”: {

   “CurrentTextValue”: “DL 650”

 },

 “MakeDescription”: {

   “CurrentTextValue”: “SUZUKI”

 },

 “ModelDescription”: {

   “CurrentTextValue”: “DL 650”

 },

 “EngineSize”: “645”,

 “VehicleIdentificationNumber”: “”,

 “RegistrationYear”: “2003”,

 “RegistrationDate”: “01/11/2003”,

 “Variation”: “V-STROM”,

 “Seats”: 1,

 “VariantType”: “”,

 “VehicleType”: “MOTOCICLETA”,

 “Fuel”: “GASOLINA”,

 “IndicativePrice”: “7909.79”,

 “Doors”: 0,

 “AllTerain”: 0,

 “KType”: 0,

 “ImageUrl”: “http://matriculaapi.com/image.aspx/@U1VaVUtJIERMIDY1MHxtb3RvcmN5Y2xl&#8221;,

 “Transmission”: “MANUAL”,

 “DynamicPower”: “68”,

 “Stolen”: null

}

Categories: Uncategorized