HI WELCOME TO SIRIS

tips for career growth

Leave a Comment

Politics - You should promote yourself. Take initiative and move forward . take advantage and   make use of opportunities and move ahead of everyone. To take yourself to a position so that your friends would praise you for your qualification and Your enemies fear you. You should keep an eye on friends and understand the weakness of the enemies and loyalty of friends. You should destroy their strength by making them fight one another. You should sometimes present suffering and scarcity even during the period of happiness and abundance. You should understand the geography and history properly. No if or buts. Be on level with time. 

Let your enemy make mistakes, do not provoke or angry the enemy. Always keep friends away from enemies. Don't break the hearts of the friends.don't be afraid of the wealthy people dont scare poor people, don't spare cruel people, don't harass the  innocent. Take care of the rights of the people. flattery always pleases famous people. Try to please ten as much as you can. When they ask you what you need, your desire. Keep your eyes open and mouth shut so you can understand other ideas.

Shortcut keys for double click, left click, and right click without a mouse in Windows 10

Leave a Comment

 The o key Opens the selected shortcut when right clicking and the the p displays the Properties.

Have you selected the option to Underline the keyboard shortcuts and access keys?

1. Press the WinKey + X to display the system menu and select Control Panel.

2. Click the Ease of Access Center.

 select mouse turm on control you mouse with keyboard

3. Select the Make the Keyboard easier to use link.

4. In the Make it easier to use keyboard shortcuts section, place a check mark in the Underline Keyboard Shortcuts and Access Keys option.

 Shortcut keys for mouse in number lock 

left click is  press  / +5

right click is  press  -+5

double click is  press  +


Outbound IP address from Azure WebJobs or WebSite

Leave a Comment

 I need to find the outbound IP address of an Azure Website so that I can whitelist this IP address in a service I wish to call. However there are concerns with this practice as I will explain.

Azure WebJobs are completely awesome and they should be used more. I have project however that I am using to pre-process a large amount of data. As part of this process, my Web Job will need to call a third party web service that operates an IP whitelist. So to call it successfully I need to find the IP address of my Azure WebJob.

That is simple enough, I confirmed the IP address using two sources, one is a given list of IP's as documented by Microsoft. Details on how to find yours are here: Azure Outbound IP restrictions. I also wrote a little code to make sure this matches from a WebJob like so:

public async static Task ProcessQueueMessage(
    [QueueTrigger("iptest")] string message,
    TextWriter log)
{
    using (var client = new HttpClient())
    {
        var response = await client.GetAsync("http://ip.appspot.com/");
        var ip = await response.Content.ReadAsStringAsync();
        await log.WriteAsync(ip);
    }
}

Popping something in the "iptest" queue kicked off the job and checking the logs confirmed the WebJobs are in fact consistent with the IP ranges documented.

There is a problem however, if you read that link you will discover that although it is roughly static it is not unique. You will share your outbound IP with other users of Azure WebSites that are hosted in the same region as you and the same scale unit as you. What is a scale unit? Who cares but there are 15 of them in the North Europe data centre for example so not a lot. Now how secure do you think IP whitelisting a shared IP is? Not very!

Workaround

Don't give up hope! The work arounds I can see are to ask the service provider to not rely on only IP whitelisting, have another form of authentication, an API key over SSL would work for example. Have it as well as IP Whitelisting if it makes them happy.

If they can't be controlled you can do your own magic. There are proxy providers out there that will provide your calls with a unique static IP address. Try QuotaGuard. Or make your own - if you already have a Cloud Service running in Azure you can proxy the service via that as they can have static and unique outbound IP addresses.

Upgrading Azure Storage Client Library to v2.0 from 1.7

Leave a Comment

 I upgraded Azure Storage to version 2.0 from 1.7 and I've found a number of differences when using storage. I thought how I'd document how I upgraded these more awkward bits of Azure Storage in version 2.0.

DownloadByteArray has gone missing

For whatever reason DownloadByteArray has been taken from me. So has DownloadToFile, DownloadText, UploadFromFile, UploadByteArray, and UploadText

Without too much whinging I'm just going to get on and fix it. This is what was working PERFECTLY FINE in v1.7:

public byte[] GetBytes(string fileName)
{
    var blob = Container.GetBlobReference(fileName);
    return blob.DownloadByteArray();
}

And here is the code modified to account for the face that DownloadByteArray no longer exists in Azure Storage v2.0:

public byte[] GetBytes(string fileName)
{
    var blob = Container.GetBlockBlobReference(fileName);
    using (var ms = new MemoryStream())
    {
        blob.DownloadToStream(ms);
        ms.Position = 0;
        return ms.ToArray();
    }
}

How to get your CloudStorageAccount

Another apparently random change is that you can't get your storage account info in the same way as you used to. You used to be able to get it like this in Storage Client v1.7:

var storageAccountInfo = CloudStorageAccount.FromConfigurationSetting(configSetting);
var tableStorage = storageAccountInfo.CreateCloudTableClient();

But in Azure Storage v2.0 you must get it like this:

var storageAccountInfo = CloudStorageAccount.Parse(
            CloudConfigurationManager.GetSetting(configSetting));
var tableStorage = storageAccountInfo.CreateCloudTableClient();

Why?.. not sure. I have had problems with getting storage account information before so maybe this resolve that.

What happened to CreateTableIfNotExist?

Again, it's disappeared but who cares.. Oh you do? Right well let's fix that up. So, in Azure Storage Client v1.7 you did this:

var tableStorage = storageAccountInfo.CreateCloudTableClient();
tableStorage.CreateTableIfNotExist(tableName);

But now in Azure Storage Client Library v2.0 you must do this:

var tableStorage = storageAccountInfo.CreateCloudTableClient();
var table = tableStorage.GetTableReference(tableName);
table.CreateIfNotExists();

Attributes seem to have disappeared and LastModifiedUtc has gone

Another random change that possibly doesn't achieve anything other than making you refactor your code. This was my old code from Storage Library Client v1.7:

var blob = BlobService.FetchAttributes(FileName);
if (blob == null || blob.Attributes.Properties.LastModifiedUtc < DateTime.UtcNow.AddHours(-1))
{
    ...
}

But now it should read like this because thought it looks prettier (which it does in fairness).

var blob = BlobService.FetchAttributes(FileName);
if (blob == null || blob.Properties.LastModified < DateTimeOffset.UtcNow.AddHours(-1))
{
    ...
}

Change your development storage connection string

This is just a straight bug so that's excellent. I was getting a useless exception stating "The given key was not present in the dictionary" when trying to create a CloudStorageAccount reference. To resolve this change your development environment connection string from UseDevelopmentStorage=true to UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://127.0.0.1 then it will magically work.

Bitch and moan

Apologies for the whingy nature of this post, I'm quite a fan of Azure but I have wasted about 3-4 hours with this "upgrade" from Azure Storage Client Library 1.7 to 2.0. It's been incredibly frustrating particularly since there seems to be no obvious reason why these changes were made. I just can't believe the amount of breaking changes when I haven't really written that much Azure storage code.

Randomly taking out nice methods like DownloadByteArray and DownloadText is surely a step backwards no? Or randomly renaming CreateIfNotExist() to CreateIfNotExists()... what is the point in that?!

I remember when upgrading to ASP.NET 4 from 3.5, I spent very little time working through breaking changes and I have 100 times more .NET code than I do Azure Storage code. As well as that, I was well aware of the many improvements with that .NET version update, with this Azure Storage update I have no idea what I'm getting. No matter the improvements, it is just an Azure storage API and this number of breaking changes, often for the benefit of syntax niceties is just unnacceptable.

Oh, if you are still in pain doing this I have found a complete list of breaking changes in this update along with minimal explanations here.

How to run Crystal Reports on Azure

Leave a Comment

 Here is a step by step guide on how to make an ASP.NET project that uses Crystal Reports run successfully on Azure. If you try to run a Crystal Report in your ASP.NET site without the Crystal Reports runtime installed you will receive a "System.Runtime.InteropServices.COMException" with description "The Report Application Server failed".

The problem is that you need to install the Crystal Reports runtime. This isn't a problem with regular hosting since you can just install Crystal Reports on each of your servers and off you go.

With Azure, though, if you remote into the machine and install it, it will work fine until your deployment is redistributed to another machine which it will do at some point due to the nature of cloud computing.

How to install Crystal Reports on your Azure web role

Fortunately it is still easy with Azure. Easy when you know how anyway. Here are the steps you will need to take:

First of all you will need to download the SAP Crystal Reports runtime engine for .NET Framework 4 (64-bit). This should extract as a msi file called CRRuntime_64bit_13_0_2.msi.

In your web application in Visual Studio you should paste this msi file at the route of your web project and include it in the project. Right click it in the Solution Explorer and set its 'Build Action' to 'None' and also set its 'Copy to Output Directory' to 'Always Copy'.

Next you will create a command file to execute this msi file. Create a new text file, call it StartUp.cmd and then save it in the root of your web project (next to the msi). In that file write the following:

@ECHO off

ECHO "Starting CrystalReports Installation" >> log.txt
msiexec.exe /I "CRRuntime_64bit_13_0_2.msi" /qn
ECHO "Completed CrystalReports Installation" >> log.txt

Set the properties of StartUp.cmd to 'Build Action' = 'None' and 'Copy to Output Directory' = 'Always Copy'.

Now in your ServiceDefinition.csdef make this cmd file a start up task by adding the following lines:

<WebRole name="Web" vmsize="Small">
  ...
  <Startup>
    <Task commandLine="StartUp.cmd" executionContext="elevated" taskType="background" />
  </Startup>
</WebRole>

You are now instructing each instance that starts up with your package to run the Crystal Reports msi file that installs the runtime on the instance ready for its use in Azure.

A few Crystal Reports on Azure tips

I ran into a few bits and bobs which caused me unnecessary pain along the seemingly clean process outlined above. I will share them with you in case you do too in no particular order.

  • Make sure your .rpt Crystal Report files are set to Build Action: Content and Copy to Output Directory: Copy always.
  • Don't be alarmed with how long it takes to deploy. It will take much longer to upload than usual because you are now uploading an extra 77MB of installation files. It took me an hour to deploy on my home connection!
  • Ignore all the warnings about how your web project is dependent on various Crystal Report assemblies since Azure will have them just as soon as your installation file runs.
  • Configure a remote desktop connection when you do your deployments since it will be invaluable should anything go wrong and at an hour per deployment you don't want to be messing about.
  • Visual Studio may have added a load of random assemblies in your web.config you are not aware of and don't need and may even cause problems like log4net.

That is all. Good luck - it's very satisfying when you get it going.

23 Websites To Find Remote Tech Jobs

Leave a Comment

 

1. Toptal

Toptal is an exclusive network of the top freelance software developers, designers, finance experts, product managers and project managers in the world.

Top companies hire Toptal freelancers for their projects.

2. X-Team

X-Team is a community for developers where you can get long-term remote jobs with leading brands.

3. Turing

Find remote software jobs with companies based in the US on Turing. Join a network of the world's best developers & get full-time, long-term remote software jobs with better compensation and career growth.

4. Gun.io

Gun.io helps you find freelance and salaried jobs for tech professionals.

5. Lemon.io

Lemon.io is the perfect place for english speaking professionals who have three or more years of experience with a particular technology.

6. Freeup

Find remote job openings on Freeup.

7. Dribbble

Dribbble's project board is an exclusive resource for contract graphic design work. It's perfect for freelancers, agencies and moonlighters.

Dribbble also has a remote job board and a full-time job board.

8. Women Who Code

Women Who Code has a job board which has listings for roles of all experiences and you can find remote jobs there as well!

9. No Desk

Find remote jobs on NoDesk and connect with companies that offer you freedom to work remotely from home or places around the world.

10. Remoters

Find your dream remote based job on Remoters and start working from home.

11. Just Remote

Discover remote jobs from around the world on JustRemote. Give up the commute, work remotely and do what you love, daily, from anywhere.

12. LinkedIn

Did you know that you can set the location filter to remote and find remote based jobs on LinkedIn as well?

13. React-Jobs

React-Jobs help you find remote ReactJS jobs and work remotely with React, React Native, GraphQL and more.

14. Remote In Tech

RemoteInTech is a list of semi to fully remote-friendly companies in or around tech.

15. Remote.co

Discover the best remote developer jobs. Whether you're a front end programmer or a back end engineer, you can find developer job opportunities on Remote.co that allow remote work.

16. Remote OK

Remote OK is a remote job board that connects employers with flexible job seekers. Their audience reach is more than 1 million, granting employers access to a large global community or remote professionals.

17. Wellfound (formerly AngelList Talent)

Find startup jobs near you as well as remote jobs around the world on Wellfound.

18. We Work Remotely

We Work Remotely is the largest remote work community in the world. With over 3 million visitors, WWR is the number one destination to find and list incredible remote jobs.

19. JS Remotely

Find new remote JavaScript, Node.js, Angular, React, Vue or Electron jobs from 200+ posted jobs on JS Remotely.

20. Stack Overflow

Stack Overflow's job board has no fake job listings and will never send you recruiter spam.

21. G2i

G2i is a hiring platform created by developers that connects you to a high-quality remote jobs focused on React, React Native and Node.js.

22. Remotive

Remotive helps you find your dream remote job without the hassle.

23. Lancerlist

Lancerlist is a diectory of freelancers that aims to search and connect businesses and individuals to freelance professionals in their city.