Thursday, May 28, 2020

How to automate AWS SES E-mail Template Update

Amazon Web Service Simple Email Service ( SES ) is a popular and considerably cheap service to send out bulk transactional & personalized promotional emails. However, when it comes to the Template-based emails which help to bind values and send HTML email, the most frustrating part is updating the template and testing them.

Problems:

1. Creating a valid JSON file by escaping the HTML Email Text property
2. Updating the templated HTML file ( manual command-line task )
3. Testing the templated emails

How to automate AWS SES E-mail Template Update
How to automate AWS SES E-mail Template Update


Solution:


I've come up with a normal update script written in Nodejs language with the help of AWS SDK that can help in scaling email template updates faster.


Usage:

> node template-creater.js emailtemplate.html emailtemplate.json false emailtemplate-unique-name "Subject for the email"

This will automatically accept the templated HTML file and creates a valid JSON file and tries updating/creating templates in the AWS SES console based on configuration or command-line argument values.

 1st Argument => Templated HTML File
 2nd Argument => Name of the auto-generated template json file
 3rd Argument => Update or Create template ( boolean )
 4th Argument => Unique template name
 5th Argument => Subject of the email

Final Words:


Feel free to use the script ( No license Restrictions for personal/commercial projects and No Warranty from Author ) and for bugs/hugs do comment below. Share is care.

Monday, May 25, 2020

Hashing with Bcrypt in Nodejs

Publishing tutorials on nodejs after a long time 😀😀 and additionally, quarantine made me productive to learn more about Nodejs core concepts and implementing server-side code.

Background:


Learning cryptography is tricky and requires more patience to master those areas. Additionally, If you want to learn more about Bcrypt Algorithm and implementation, check out the link here.

Hashing with Bcrypt in Nodejs
Hashing with Bcrypt in Nodejs


Simple Steps to implement Bcrypt in Nodejs

Installation:

1. npm install bcrypt --save 

Start installing the bcrypt package into your nodejs apps which helps to implement the hashing function.

Hashing Function ( Sync and Async ):


Hashing function with Salt Generation ( Sync )

const salt = bcrypt.genSaltSync(saltRounds);
const hash = bcrypt.hashSync(myPlaintextPassword, salt);
Hashing function with Salt Generation ( Async )

bcrypt.genSalt(saltRounds, function(err, salt) {
    bcrypt.hash(plainText, salt, function(err, hash) {
        // Store hash in your password DB.
    });
});

Verify Function ( Sync and Async ):


Hash verification function ( Sync )

bcrypt.compareSync(myPlaintextPassword, hash); // true/false

Hash verification function ( Async )

bcrypt.compare(myPlaintextPassword, hash, function(err, result) {
    // result == true/false
});

Final note:

Bcrypt is safe as of now from timing attacks and other cryptographic reverse engineering or cryptanalysis. If you would like to check more about implementing using Async and Promises for Bcrypt Module, please check out the documentation of the bcrypt npm module.

Finally, for Hugs/Bugs do comment below. Share is care.


Sunday, March 22, 2020

Hassle free Appointment Scheduling Software for Business

Last month while traveling to the SaaS conference, one of the business owners I used to do contract work for asked for a small recommendation of software tools that can be used to optimize and automate the business task. So, quickly I got into the requirements and suggested a bunch of tools from Zoho, Shopify, Google to automate tasks that included Google Calendar for GSuite that helps in scheduling, reminding events. But now the requirement came differently to allow clients to prebook appointments and getting paid online to prevent spam signups by which Google calendar is not the right solution for scheduling needs. Stepping back little I googled for potential solutions and recommendations for Online Appointment Scheduling software by searching to Capterra, G2Crowd, FinanceOnline and even more. Fortunately, I met Guru from GoSchedule who attended the event and when introduced to each other with current work and he was so much happy to invite me for Contract works related to Android. Meanwhile, to my surprise, he pitched his company and motive behind his product that was an astonishing way about online appointment scheduling space where a lot of apps are behind lag and in need of a leader.

Online Appointment Scheduling for Business - GoSchedule
Online Appointment Scheduling for Business

Signup | Pricing | Help Docs | Support | Free Appointment Scheduling Software

Why GoSchedule?

Prior to trying out GoSchedule, I've been trying out calendly, Acuity Scheduling, Zoho Bookings, and even more calendar-based scheduling apps. But every app I used and started customizing for the requirements, I literally found limitations in the product side or the lag in UI/UX and integrations with the other business application. Keeping that in mind, I have tried out GoSchedule and most of the business requirements were satisfied and the team was super flexible to support customization that can be generalized for all customers.

Integrations

GoSchedule has extra-ordinary support for native integrations and zapier support to make the workflow easy for all types of business from SMB to Enterprise organizations. So that made our life easy to trigger workflows within the application based on realtime booking stats from the API and Zapier. Checkout zapier for GoSchedule which is available in private beta. Apart from Zapier, Microsoft calendar ( office 365 ), GSuite Calendar and zoom integrations are available in realtime that happens when the booking is done from GoSchedule apps.

Payment Integrations

Additionally, We could collect online payments via integrated payment hosted solution pages such as Stripe, Square Checkout, Razorpay, Paytm and even more. Payments are additionally tracked within the GoSchedule reports to checkout for revenue, sales and booking reports from the dashboard.

Tech Support

The team from GoSchedule is really enthusiastic working from remote while facing customers and tech support is super fast. They do support phone, chat, and email support and check out the options here

Now that this product has excellent traction and minimal features, this can be a good start for any business organization to have an appointment scheduling application instead of hitting excel sheets or maintaining a separate calendar with Google or Microsoft. Let me add more features to this blog post once trying out different types of appointments and use cases that GoSchedule tries to solve for business organizations and professionals.

Feel free to comment below. Share is care.



Sunday, July 08, 2018

DesignEvo Review- One of the Best Online Logo Maker for You

Essential elements of a successful business:


Attraction & Uniqueness


A business needs something attractive to catch the clients’ eyes, and the most suitable thing is the logo. A logo plays a vital role in the business world, and it is important to have a unique one to distinguish between you and others. Although there are many professional designers to help you create logos, you know that no one can understand your business than yourself. On the other hand, if you run a small business, you may have the budget problem to hire a designer. Thus, the best logo should be designed by yourself with the help of DesignEvo logo maker.

DesignEvo Review- One of the Best Online Logo Maker for You


DesignEvo logo maker is devoted to helping people create professional logos without spending much time or effort. Even you know nothing about design, you can use abundant resources of DesignEvo to create unique logos with a professional appearance in minutes.

Handy & Resourceful

First, there is no registration or download requirement.  

Second, DesignEvo logo maker has prepared 5000+ well-designed logo templates to help you design. They cover many kinds of themes, such as animal & pet logos, photography logos, hipster logos and so on. Besides, all of them are fully customizable. If you have no idea how to make a logo, you can select a preferred template and adjust the elements to custom a unique logo at will.
DesignEvo Review- One of the Best Online Logo Maker for You

Third, there are millions of icons, various shapes, and stylish fonts. In order to make it comfortable to meet users’ needs, DesignEvo allows you to search millions of icons with any themes and styles to create logos. All of them are vector graphics and will enable you to adjust the size without worrying about the sharpness. You can also choose right shapes and fonts to perfect your custom logo.

Powerful

DesignEvo offers you full edit features: change background and colors, rotate, adjust the effect, layout, layer, and duplicate, etc. When you have finished editing, preview it before saving and downloading. It shows six occasions of your logo, on a business card, on a book cover, on a wall, on a T-shirt and so on. When you ensure that everything is well done, then download it. There are three options for you, free package, basic package and plus package. The latter two are paid options but with many more features to meet your needs, so please feel free to select the suitable one to download your logo.
DesignEvo Review- One of the Best Online Logo Maker for You

Final words

Whether you need logos for your business or not, only if you want to try to create logos online by yourself, you can come to use DesignEvo to help you. It is born to help people who need logos. With all the brilliant features, you can design professional logos in minutes easily even if you are a newbie. By the way, all of the features are free to use. DesignEvo is waiting for serving you.

Feel free to comment below. If you would like to share your Guest/sponsored post in our blog, kindly write to my inbox/Google+ Hangout. Share is care.

Monday, July 10, 2017

Gitlab Shared Runner CI with Docker Tutorial - Complete Guide on Building Android Studio Project in Gitlab

After a long break, writing a new post on building Android Studio Gradle project on Gitlab Pipelines with Docker without hassling about server charges or build time. Gitlab Pipelines and Registry is a boon for developers who need CI for their apps and additionally, Gitlab provides private repo. Today let's look at creating a pipeline with an environment where our app is built within Docker when you commit to Gitlab repository.


Gitlab Shared Runner CI with Docker Tutorial - Build Android Studio Project in Gitlab

One of the most hassling things is building the project and moving into production phase by testing the app on several devices. The thing is maintaining a private server to build your production ready apps will cost you high like Travis CI, Circle CI. For startup companies, Gitlab shared runner is more than enough for building the application and delivering it with artifacts on regular basis.


Getting Started:

If you're familiar with Docker basics, It would be fine to continue with this tutorial. If not you can just learn about Docker basics here. Docker is an awesome environment where you virtualize your environment from the Host environment and run your specific test, build, commands. Since you virtualize your docker environment you won't be affected by external dependencies or prone to vulnerabilities while shipping your application. If you don't have Gitlab Account, signup now. It's completely free for individual developers.
  1. Create Gitlab Repo 
  2. Commit your Android Studio project in master branch

Enabling Shared Runner and Pipeline in Gitlab:

After creating the project, visit Settings -> Pipelines in your project repo and make sure Shared Runner is Enabled. You may get up to 4 Shared instance to build your project. Fortunately, Gitlab has collaborated with DigitialOcean to maintain servers for running such builds, test for users. so, you need not worry about scaling, downsizing the server size. 

Gitlab Shared Runner CI with Docker Tutorial - Complete Guide on Building Android Studio Project in Gitlab
Enable Shared Runner for this Project

Build Configuration File

In order to trigger our build, we need to write some configuration file. First, let's build our Docker image using Dockerfile. Gitlab too provides private docker registry for users, where you can build the Docker image in the pipeline and upload it to Gitlab registry. So, this will reduce our build time in halfway because installing our build tools ( Android SDK ) and other tools earlier will reduce the time and concentrate on compiling the source code into APKs.

Our Docker file looks like given below, it's just series of Linux commands where you process it and save it as Docker image. Whenever need you can deploy it as a container and make your desired process run inside the Docker container.

Prerequisites :

  • Create a new branch from existing master branch, remove all your application code. 
  • Create new file named as Dockerfile
  • Checkout docker file snippet below
  • Create new file named .gitlab-ci.yml 
  • Checkout Gitlab-ci file below, customize it as per your repository name
  • Commit all your files, this will automatically trigger a build to create new Docker Image and upload it to Docker registry.
Dockerfile for creating Android environment image is given below,




gitlab-ci.yml file for instructing the pipeline to perform the job is also given below, kindly replace with your own repository registry name, branch name or else build won't be triggered.


once you commit your code, Gitlab automatically triggers an Image Build in the pipeline. if everything goes smooth, your docker image will be uploaded to your Gitlab Docker registry. You can use the Docker image for further building the project without any hassle. Whenever you need to refresh or update your SDK tools, you can simply change and commit it, that will trigger an image building process and it'll be uploaded to your Gitlab Docker registry.

Gitlab Shared Runner CI with Docker Tutorial - Complete Guide on Building Android Studio Project in Gitlab
Building process after each commit

Build your Application:

Switch to your master branch, start writing similar gitlab-ci.yml file to instruct the build machine in order to trigger build and building the artifacts. It's going to be normal Gradle commands to build your application project and generate your APKs, AAR files and even more out of it. you can sign your application here with confidence by adding your Keystore file as Environment variable.

Let's look at our configuration file for building the application,



So, in before script, we added execution permission for gradlew executable file in user level (normally root/guest in terms of Docker). In build script, we simply added our Gradle command to build our application project. Since it's a sample I haven't added release build script here. After building process is over, you can specify your artifact folder, so that Gitlab can detect that folder and make it available for downloading. Normally it contains your project APK files, logs, Gradle profile report and even more if you have used custom tasks in Gradle.

So, commit this code and Gitlab will automatically trigger a build. Now, Docker is launched in a shared runner and then your Gradle scripts will be running to produce APK. It's up to you to have some integration with Gitlab to deliver your APK artifacts into team e-mails, slack channel, chat or even more.

Gitlab Shared Runner CI with Docker Tutorial - Complete Guide on Building Android Studio Project in Gitlab
Application building in Docker Container

Skip triggering build for each commit

you can skip the triggering build by adding an extra commit message, such as [skip ci] or [ci skip]. This will be automatically understood by Gitlab and it won't be triggering build automatically.

I hope this was an awesome tool for Developers who don't need to write the script for building, launch Build server and run, test, build your source code into release files. You don't need to worry about infrastructure, deliver and testing it seamlessly.


Gitlab Shared Runner CI with Docker Tutorial - Complete Guide on Building Android Studio Project in Gitlab
pipeline containing previous Docker Image Build and Artifact build


If you've any doubts, comment below or chat with me in Google+/Fb. Share is care.

Tuesday, May 16, 2017

Google launches new Tools to help the developers for producing high performance Daydream Apps

Daydream Apps will be striking feature in the Android Nougat release. Building this VR experience is mission critical task for all the developers involved. Because it’s like explaining the entire game of thrones story in an hour. There are lots of possibilities and corner cases.
Building this VR apps process must be scalable, that is the apps developed must not consume the entire resource or the device must not get overheated.
Google launches new Tools to help the developers for producing high performance Daydream Apps

So to help the developers who are working on this Google has announced brand new tools for producing high performance Daydream apps. So to begin with, let's have a look on Daydream Renderer.

Rendering is an important aspect when it comes for
developing VR apps. Because Rendering is the thing which makes the user to feel the impact. To produce the impact of rendering the secret is the art of producing light and shadows in the visuals at appropriate places. As per Google, this Daydream Renderer is a set of optimized tools that allows the user to produce dynamic lighting and shadowing in the visuals that gives an authentic impact to the users.


 
Developers who are constructing the games for the daydream platforms will be getting more benefitted from this Daydream Renderer. As the lighting and shadowing is very essential for making the user to stay intact with the game. This Tool will do that for sure as per the Google. Speaking about the VR for Games, Actually Roulette in Casino is my favourite Game, I used to play online roulette at casino.com. Roulette is an game in casino that actually stimulates one's brain to choose the exact option among the various possibilities.

Then moving on to next, Instant Preview

Normally a Developer writing a mobile application follows the process of writing a code, then compile and upload the change to a mobile device and test whether the change works for it. So at the end of the day a developer will spend several minutes idle during the entire process.  

But the Instant Preview now introduced by Google ensures that this process could be completed in seconds therefore saving the time of a developer increasing the productivity. It also ensures Quality allowing developers to do more iterations in less time.


Google has also introduced performance monitoring tools like GAPID and PerfHUD
 
Though the VR Apps looks just great, it will reach wide range of users only when it performs in an optimized way. The device on which the VR apps runs must not get overheated and the VR apps must run with no dependence upon the device or the environmental condition.

gapid permits the developers to perform deep GPU profiling providing ideas upon how the hardware and software interacts to drives performance. It also allows the developer to search for any other corner case that could bring the entire performance down.

PerfHUD is an another extraordinary tool which helps the developers to rightly plot which areas of the games and apps push the hardware of the device too hard.

So, looking through the future VR is going to be next big game changer for Game Industry and enables the user to use virtual reality from their smart phone devices.

How to build an iOS App with the Xcode 8 and Swift 3

Hello developers, In this tutorial I'm gonna show you how to build an iOS App with Xcode.


What is Xcode and Swift ?

     Xcode is a integrated development environment which is developed by apple for developing iOS, macOS, watchOS and tvOS Apps. It comes with iOS SDK, compilers, debugging tools and simulators etc. Install the Xcode app from the Mac App Store itself or download it from here. Note: To install Xcode, you need to have Mac machine.

     Swift is a new programming language developed by Apple Inc and it's release by Chris Lattner in 2010. Swift comes with Playground to write swift program and the outputs are displayed in right pane. It shows the results very fast and you no need to click any run buttons to execute the program. It is very interesting know ? Swift has a lot of features and it has a huge libraries too. The extension of swift program is .swift 

     Okay now let's create our new project and start to build our first iOS App in Xcode.

Creating a Project

  • Open Xcode and Create a new project from the file menu.
  • Select Single View Application template and click Next.
  • Give name to product, organization and organization identifier. See below image for reference.

Adding Views 

  • Click the Main.Storyboard file.
  • Drag and drop the Label and Button from the Object Library into the View. Do like below image.


  • Now open the Assistant Editor in Xcode. Click the double circled icon in top right corner(See the image below) or Click CMD + OPTION + ENTER shortcut.


  • Then drag and drop the label and button into the view controller(viewcontroller.swift file)





  • Then it'll show you one tiny window, in that you've to change the connections and click connect. For button, change the connection from Outlet into Action. For Label, set the connection as Outlets(By default, it's Outlet only) 





View Controller Code

import UIKit

class ViewController: UIViewController {

    @IBOutlet var helloWorldLabel: UILabel!
    
   
    @IBAction func clickMeBtnPressed(_ sender: Any) {
        
        //Setting hello world label into Welcome to iOS World
        helloWorldLabel.text = "Welcome to iOS World"
        
        
    }
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        print("viewDidLoad function is called")
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

Run the App

      Now build the project and run it. Then the app will open in Simulator.




Boom!!! Just click the "Click Me" button then the label will changed from "Hello World" to "Welcome to iOS World". We've completed our first hello world iOS app in Xcode using Swift 3. I hope you guys understand and if you've any doubts in this tutorial then just drop your comments. See you in the next tutorial...

Friday, April 28, 2017

Working with Pdf JS - Render PDF natively in Browser Tutorial

Posting Web tutorial after a long time with a lot of energy and possibilities. There would be few things in life which would be life changing and support you even in worst times, yes of course, my blog and readers are my supporters who support me throughout my journey. 

Working with Pdf JS - Render PDF natively in Browser Tutorial - i-visionblog


Download 

Why Pdf.js? 

Pdf Js is awesome javascript library supported by Mozilla and Individual contributors to make the web a beautiful place to visit and get work done. So, Every browser is capable of viewing Pdf files and what is so special about the pdf.js library is you can control the pdf with Javascript code rendering, switching pages and even more. So, Developer has the ultimate power to control the pdf loaded from the server and rendering part in the client. PDF are awesome documents that are daily shared between business for invoices and business payment processing documents, official agreements, documentations even more possibilities.

Use cases:

When you're building an application that heavily depends on the pdf view to the customer and need to render as a part of the application, pdf js is right choice to go with it. Where you can control the contents of the pdfs with session maintenance (premium and free customers ), personalized pdf rendering.

Getting Started:

Integrating pdf.js into your web/mobile web application is straightway easy but requires knowledge about javascript promises. To write clean and remove callback-style code, Promises are introduced.

Integration:

Either you can use pre-build version or you can clone the source code from GitHub and try to build with gulp command. I prefer to build the Javascript library from source. If you want to use it directly you can refer pastebin reference code.

building process commands:
Make sure you have node.js installed in your system with sudo access. Open the shell and try to execute the commands. First of all clone the GitHub repo.
 > cd <Pdf.js repo>
 > npm install  
 > gulp generic 

By running above commands, you can successfully build the source code into distribution code (dist) in the build directory. You can use this as javascript library importing it as a script.

Importing:

You can simply include the pdf.js in your script tag along with the pdf.worker.js file. Once it has been setup you need to write application logic based on your web application.


<head>

<title>Pdf.js Example Application | i-visionblog</title>
<script src="build/pdf.js"></script>
<script src="build/pdf.worker.js"></script>
<script src="js/app.js"></script>
</head>

So, this will import the whole pdf.js and its recommended to go for minified version while moving into production mode.

PDF.js API to render pdf:

pdf.js uses Ajax feature to load the pdf from the server. It reduces the memory footprint by loading the pdf by pagewise instead of loading all at a time. In fact, that's bad practice to load all pdf content at a time unless it is too important. PDF.js also uses a separate worker to download and render the content to Html DOM (document object model). We could getPage(index) method to load the page and use render() function to render the page in the Html DOM. It also uses Context to instruct the height, width, scale and element container to load. But it all works with promises to reduce the callback-style of coding. Here is sample javascript snippet to load all the pages into the canvas.



Final Words:

You can download the whole application project from here. The above code simply loads the pdf from the local server and then renders all pages into Html DOM as canvas images. It's up to you to devise your own event click listeners to load next and previous pages as per your application logic.

Hope you've liked this article. Subscribe for more tutorials and follow me in Google+/Facebook for updates. If you have any doubts chat with me or drop me a mail. Feel free to comment below. Share is care.