|
Sidharth Sagar Oodles

Sidharth Sagar (Backend-Sr. Associate Consultant L2 - Development)

Experience:3+ yrs

Sidharth is an exceptionally efficient backend developer with an impressive track record of working on enterprise-level applications. He has worked on various notable projects which includes Therapy Beyond (a medical scheduling application), Teacher Scheduling, and Slick Payroll. He possesses a diverse skill set, excelling in technologies such as Java, Spring, Spring Boot, Optaplanner, Redis, Microservices, and various databases. His creativity and strong analytical skills enable him to quickly grasp new technologies and concepts. His passion for learning is evident in his commitment to staying updated with the latest industry trends through avid reading. His continuous pursuit of knowledge ensures that he can provide innovative solutions and insights in his work.

Sidharth Sagar Oodles
Sidharth Sagar
(Sr. Associate Consultant L2 - Development)

Sidharth is an exceptionally efficient backend developer with an impressive track record of working on enterprise-level applications. He has worked on various notable projects which includes Therapy Beyond (a medical scheduling application), Teacher Scheduling, and Slick Payroll. He possesses a diverse skill set, excelling in technologies such as Java, Spring, Spring Boot, Optaplanner, Redis, Microservices, and various databases. His creativity and strong analytical skills enable him to quickly grasp new technologies and concepts. His passion for learning is evident in his commitment to staying updated with the latest industry trends through avid reading. His continuous pursuit of knowledge ensures that he can provide innovative solutions and insights in his work.

LanguageLanguages

DotENGLISH

Conversational

DotHINDI

Fluent

Skills
Skills

DotWebhooks

60%

DotTimefold

60%

DotDatabase Management

60%

DotPostgres

80%

DotStripe API

60%

DotRoute Optimization

60%

DotNode Js

60%

DotOSM

60%

DotJavascript

80%

DotHTML, CSS

60%

DotCloud Platforms

60%

DotGraphHopper

60%

DotMySQL

80%

DotLogistics API

60%

DotSpring Boot

80%

DotJava

80%

DotNo SQL/Mongo DB

80%

DotEDI

60%

DotPython

60%

DotOptaplanner

60%
ExpWork Experience / Trainings / Internship

Oct 2021-Present

Senior Associate Consultant - Development

Gurugram


Oodles Technologies

Gurugram

Oct 2021-Present

EducationEducation

2019-2021

Dot

GURU GOBIND SINGH INDRAPRASTHA UNIVERSITY

MASTER OF COMPUTER APPLICATION-IT

Top Blog Posts
Stripe Payment Gateway Integration In Java

Stripe Payment Gateway Integration in Java

Stripe is a type of payment gateway that accept credit and debit cards for transactions. Stripe payments are very suitable for that type of business that makes their sales online. Stripe allows an individual to accept different types of cards such as Mastercard, visa, China UnionPay, American Express, Diners Club, etc. Stripe also provides some advanced features like buy now, accept payments from e-wallets and pay later services. Stripe also accepts payments in different types of currencies. It also provides various types of additional services such as sales tax automation, invoicing, and billing.

 

Also, Read Sorting With Lambdas In Java

 


Steps To Integrate Stripe Payment Gateway In Java 

Step 1: First of all you have to add a stripe dependency in your pom.xml file

<dependency>
    <groupId>com.stripe</groupId>
    <artifactId>stripe-java</artifactId>
    <version>21.9.0</version>
</dependency>


Step 2: After that mention the currency and secret key of stripe in your application.properties file. For getting a secret key you have to create an account or already have an account on stripe is mandatory

stripe.currency=usd
stripe.secretKey=sk_test_54naj..........


Step 3: Now create a function to add a customer on stripe

import com.stripe.model.Customer;
import java.util.*;

Map<String, Object> customerParameter = new HashMap<String, Object>();
customerParameter.put("name", "abc");
customerParameter.put("email", "[email protected]");

Map<String, Object> address = new HashMap<>();
address.put("line1", addressLine1);
address.put("line2", addressLine2);    
address.put("city", city);
address.put("state", state);
address.put("postal_code", zipcode);
address.put("country", country);

customerParameter.put("address", address);
        
For adding a customer on stripe you should use Stripe customer class function i.e. Customer.create()       
        
Customer customer = Customer.create(customerParameter);       


For getting a customer from stripe you should use retrive() function of stripe customer class

Customer cus = Customer.retrieve(customerId);

 

Also, Read The Important Features In Java 8

 


Step 4: After adding a customer now you should add a card on stripe for a customer

Map<String, Object> retrieveParams =new HashMap<>();
List<String> expandList = new ArrayList<>();
expandList.add("sources");
retrieveParams.put("expand", expandList);
Customer customer = Customer.retrieve(customerId,retrieveParams,null);

Map<String, Object> params = new HashMap<>();
params.put("source", "tok_visa");

Card card = (Card) customer.getSources().create(params);


step 5: After adding customer and card, now you can processing a payment

Map<String, Object> params = new HashMap<>();
params.put("amount", amount);
params.put("confirm", true);
params.put("off_session", true);
params.put("customer", customer != null ? customer.getId() : null);
params.put("currency", currency);
params.put("description",description);

PaymentIntent paymentIntent = PaymentIntent.create(params);

Note: if the paymentIntent.getStatus() is equal to "succeeded" that means your payment is successful, otherwise your payment has failed.

Apache Kafka In Spring Boot

Apache Kafka is a type of technology that is used to publish and subscribe the messages based on the fault-tolerant messaging system. Kafka was originally developed by LinkedIn and after some time it open-sourced as a project under the Apache Software Foundation. It is used by many companies to build fault-tolerant, scalable data pipelines for streaming data. Kafka is specially designed to handle big amounts of data in real-time and that's why it is used for data-intensive applications. It is simply a publisher-subscriber model where producers publish the data on a topic and consumers subscribe to the topic to consume the data.

 

Advantages of Apache Kafka

1. Easily accessible: one of the advantages of using Kafka is that all our data gets stored in Kafka, very easily accessible to anyone.

2. Real-Time Handling: It is able to handle real-time data pipelines. Apache Kafka builds a real-time data pipeline that includes storage, processors, analytics, etc.

3. Low Latency: It offers a low latency value of up to 10 milliseconds. The reason behind this is that it decouples the message which lets the consumer consume the message at any time.

4. High Throughput: Because of low latency, it handles many messages of high velocity and volume. 
It can support thousands of messages within a second. That's why most companies use Kafka to load a high volume of data.

5. Fault tolerance: It has an essential feature to provide resistance to node or machine failure within the cluster.

6. Reduces the need for multiple integrations: One of the advantages of using Kafka is that the data written by the producer easily go through Kafka we only need to make one integration with Kafka and it automatically integrates us with every consuming and producing system.


Disadvantages of Apache Kafka

1. Do not have a complete set of monitoring tools: The new enterprises and startups are fear to work with the technology named Kafka. Because it doesn't contain a complete set of managing tools.

2. Message tweaking issues: For delivering the messages to the consumer Kafka broker uses system calls. So if the message needs tweaking the performance of this technology gets reduced. So we can say it does not work properly if the message needs to be changed.

3. wildcard topic selection not supported by Kafka: This technology does not support wildcard topic selection. Instead of this, it matches only the correct topic name. The reason behind this is that selecting wildcard topics makes it incapable to address certain use cases.

4. Clumsy Behaviour: If the number of queues increases in the Kafka cluster then it behaves clumsy.

5. Some message paradigms missing: Some message paradigms are missing in Kafka such as point-to-point queues, request or reply, etc.
 
6. Reduces Performance: By compressing-decompressing the data flow, brokers and consumers reduced the performance of Kafka.

 

We, at Oodles ERP, provide end-to-end enterprise web development services to help enterprises steer clear of their operational complexities. Contact us at [email protected] to learn more about our custom ERP development services. 

An Introduction To HashMap In Java

In Java, HashMap is a way to store the data in the form of key and value pair, where the key must be unique and if anyone inserts the duplicate key then it will replace the element of the corresponding key.
Updation and deletion types of operations are very easy to perform by using the key index. HashMap class exists in java.util package. HashMap implements the Map interface and inherits the AbstractMap class. It should allow us to store only one null key.


HashMap Constructors:
In Java, there are 4 types of HashMap constructors

1). HashMap<K, V> hm = new HashMap<K, V>();

2). HashMap<K, V> hm = new HashMap<K, V>(int initialCapacity);

3). HashMap<K, V> hm = new HashMap<K, V>(int initialCapacity, float loadFactor);

4). HashMap<K, V> hm = new HashMap<K, V>(Map map);


 

Advantages of HashMap:
1). Easy to use: In Java, it is very easy to implement HashMaps in our code. 

2). Flexibility: HashMap is very flexible because it allows us to store key-value pairs of any data type.

3). Fast retrieval: It provides constant time access to elements, which means that the insertion and retrieval of elements are very fast.

4). Efficient storage: It uses a hashing function to map keys to indices in an array. So in this way, it allows efficient storage of data.

5). Suitable for large data sets: It is very suitable for a large type of data because it can handle this without slowing down.

 


Disadvantages of HashMap:
1). Not a thread-safe: if multiple threads access the same hashmap simultaneously, it can increase data inconsistencies. So, due to 
    For this reason, we can say hashmaps are not thread-safe.

2). Unordered: one of the disadvantages of using hashmap is that it is not ordered means the order in which we added the elements in it, is 
    not preserved.

3). Performance can degrade: if the load factor is high or the hashing function is not implemented properly then the performance can 
    degrade.

4). More complex than arrays or lists: For beginners, it is very difficult to understand and use this in comparison with lists or arrays.

5). Higher memory usage: In comparison with other data structures like lists or arrays, it uses more memory.

 

Operations on HashMap

1). Adding element:

import java.io.*;
import java.util.*;
class AddingElements {
    public static void main(String args[])
    {
        HashMap<Integer, String> coursesMap = new HashMap<>();
        coursesMap.put(1, "Java");
        coursesMap.put(2, "Python");
        coursesMap.put(3, "NodeJS");
        
        System.out.println("Courses : "+ coursesMap);
    }
}

Output : 
  Courses : {1=Java, 2=Python, 3=NodeJS}
  

 

2). Changing Elements:

import java.io.*;
import java.util.*;
class ChangingElements {
    public static void main(String args[])
    {
        HashMap<Integer, String> coursesMap = new HashMap<Integer, String>();
        coursesMap.put(1, "Python");
        coursesMap.put(2, "Java");
        coursesMap.put(3, "AWS");
        
        System.out.println("Before Changes : " + coursesMap);
        
        coursesMap.put(3, "NodeJS");
        
        System.out.println("After Changes : " + coursesMap);
    }
}

 

Output :
   Before Changes : {1=Python, 2=Java, 3=AWS}
   After Changes : {1=Python, 2=Java, 3=NodeJS}
   

 

3). Removing Element:

import java.io.*;
import java.util.*;
class RemovingElement {
    public static void main(String args[])
    {
        HashMap<Integer, String> coursesMap = new HashMap<Integer, String>();
        coursesMap.put(1, "Java");
        coursesMap.put(2, "Python");
        coursesMap.put(3, "NodeJS");
        coursesMap.put(4, "Ruby");
 
        System.out.println("Before Removing : "+ coursesMap);
 
        coursesMap.remove(4);
 
        System.out.println("After Removing : "+ coursesMap);
    }
}

 

Output :
   Before Removing :  {1=Java, 2=Python, 3=NodeJS, 4=Ruby}
   After Removing  :  {1=Java, 2=Python, 3=NodeJS}
   

 

4). Traversal of HashMap: 

import java.util.HashMap;
import java.util.Map;
 
public class TraversalHashMap {
    public static void main(String[] args)
    {
        HashMap<String, Integer> studentScoreMap = new HashMap<>();
        studentScoreMap.put("Nitin", 25);
        studentScoreMap.put("Ajit", 30);
        studentScoreMap.put("Bobby", 20);
 
        for (Map.Entry<String, Integer> st : studentScoreMap.entrySet()) {
            System.out.println("Student's Name: " + st.getKey() + " Student's Score: " + st.getValue());
        }    
    }
}

 

Output :
Student's Name: Nitin Student's Score: 25
Student's Name: Bobby Student's Score: 20
Student's Name: Ajit Student's Score: 30

 

At Oodles ERP, we provide custom enterprise software solutions to help enterprises steer clear of their routine operational challenges. Contact us at [email protected] to learn more about our custom ERP development services. 

The Basic Annotations In OptaPlanner

In this blog post, we shall talk about some basic annotations in OptaPlanner including @PlanningVariable, @PlanningEntity, and @PlanningSolution.

 

@PlanningVariable :
A planning variable is a property of JavaBean. 
This type of variable is annotated with @PlanningVariable annotation and it needs a non-empty valueRangeProviderRefs property. A planning variable needs to be a member of a class that is annotated by @PlanningEntity annotation. These variables are ignored if the parent or child class is not annotated by @PlanningEntity annotation. Simply we can say, a planning variable is a variable that we want to assign to any planning entity class.

Example :

@PlanningVariable(valueRangeProviderRefs = "teacherRange", nullable = true)
private OptaTeacher teacher;

 

@PlanningEntity :
A planning entity is a JavaBean in which changes occur during solving. We can identify a class as a planning entity class if it is annotated by @PlanningEntity annotation. A planning entity class has one or more genuine or shadows type planning variables. Simply we can say, a planning entity is an entity to which we want to assign one or more planning variables.

Example :


@PlanningEntity
public class OptaModule {
    @PlanningVariable(valueRangeProviderRefs = "teacherRange", nullable = true)
    private OptaTeacher teacher;
}


@PlanningSolution :
Any class which is annotated by @PlanningSolution annotation is referred to by the planning solution. These types of classes contain planning entities, problem facts, and a score variable.


Example :

@PlanningSolution
public class OptaSolution {

    @PlanningEntityCollectionProperty
    private List<Vehicle> vehicles;

    @ProblemFactCollectionProperty
    @ValueRangeProvider(id = "driver")
    private List<Driver> drivers;

    @PlanningScore
    private HardMediumSoftLongScore score = null;
}


@PlanningScore :
Any field in the @PlanningSolution class that is annotated by the @PlanningScore annotation is referred to by the planning score. Before calculating the score, the score field is set to null. The score value depends on the planning solution result.


@PlanningPin :
Any boolean field in the @PlanningEntity class that is annotated by the @PlanningPin annotation is referred to by the planning pin. If the value of this variable is set to true then during planning the pinned planning entity is not changed. For example, if you want to assign a shift to any specific employee then you must set the PlanningPin field to true. So, during planning solver does not change the employee for this shift. 


Chained Planning Variable :
These types of variables are used to implement the Chained by Time pattern. It allows the planning entities to form a chain by pointing to each other. By adopting the problem as a set of chains heavily reduced the search space.

This type of planning variable either:

- Directly points to a planning entity or a problem fact, known as an anchor.

- Targeting any other planning entity with the similar type of planning variable, which recursively points to an anchor.  


Shadow variable :
These are also planning variables whose correct value can be decided from the state of the genuine planning variables. If a class contains any shadow variable then this class is known as a planning entity class even if it does not contain any genuine planning variable. For a genuine planning entity, class is mandatory to contain a minimum of one genuine planning variable. For a shadow planning entity class is not mandatory to contain any genuine planning variable but it's mandatory to contain a minimum of one shadow planning variable.

Build-In Shadow Variables
1). @InverseRelationShadowVariable : These types of variables are also known as Bi-directional variables. If two variables are targeted at each other then these variables are called Bi-directional variables.

Example :

@PlanningEntity
public class CloudComputer {

    @InverseRelationShadowVariable(sourceVariableName = "computer")
    public List<CloudProcess> getProcessList() {
        return processList;
    }
}

2). @AnchorShadowVariable : It is the anchor of a chained variable.

Example :

@PlanningEntity
public class Customer {

    @AnchorShadowVariable(sourceVariableName = "previousStandstill")
    public Vehicle getVehicle() {...}
    public void setVehicle(Vehicle vehicle) {...}

}

We, at Oodles, provide 360-degree OptaPlanner development and implementation services to help enterprises efficiently plan and execute routine operational tasks. Contact us at [email protected] to learn more about our OptaPlanner development services

Category: ERP Solutions
An Introduction To Stream In Java 8

Stream In Java 8

Java 8 provides a new package which is called java.util.stream. Basically, it is used to process collections of objects. It consists of various types of classes, enums, and interfaces to perform operations on different elements. It is like a sequence of objects which supports different types of methods that are pipelined together to produce results. A stream can be used by importing the package java.util.stream.

 

Features of Java Stream
Below are the features of java stream:
- It does not store any element. It simply takes elements from a source like I/0 channel, data structure, or array, using a pipeline of 
  different types of operations.

- It is lazily executed any operation and performs any evaluation on code when required.

- In nature, the stream is functional and any operation performed on it does not change its source.


Types of Stream
Basically, there are two types of stream
1. Stream
2. Parallel Stream

 

Operations On Stream
Below are the operations which we can perform on a stream:


Intermediate Operations:

1). map: It is used to map stream elements to their corresponding result.

example:- List<String> languages = Arrays.asList("java", "angular", "nodejs", "python");
                  List<String> data = languages.stream().map(String::toUpperCase).collect(Collectors.toList());
                 System.out.println(data);

output:-  [JAVA, ANGULAR, NODEJS, PYTHON]
           

2). filter: It is used to test elements for a condition and generate a filtered result.

example :- List<Integer> numberList = Arrays.asList(45, 4, 6, 12, 20);
           List<Integer> numbers = numberList.stream()
                                        .filter(number -> number % 5 == 0)
                                        .collect(Collectors.toList());
           System.out.println(numbers);  

output:-  [45,20]

3). sorted: It is used to sort stream elements.

example :- List<Integer> numberList = Arrays.asList(-19, -29, 0, 5, 4);
                  List<Integer> numbers = numberList.stream().sorted().collect(Collectors.toList());
                  System.out.println(numbers);  
           
output:-  [-29, -19, 0, 4, 5]           

Terminal Operations:

1). forEach: It can be used to perform an iteration over the stream. Generally, it is used in place of the iterator.

example:- List<String> list = Arrays.asList("java", "python", "nodejs", "angular");
                  list.stream().forEach(System.out::println);

output:-  Java
               Python
               Nodejs 
               Angular         

2). collect: It is used to return the desired result of the operations performed on the stream.

example :-  List<Integer> number = Arrays.asList(8,3,6,5,3);
                   Set<Integer> square = number.stream().map(x->x*x).collect(Collectors.toSet());
                   System.out.println(square);
            
output :-   [64,9,36,25]            


3). reduce: It is used to perform reduction on elements of the stream.
           //for getting the product of all the elements in the given range excluding the rightmost element
example :- int result = IntStream.range(2, 7)
                           .reduce((num1, num2) -> num1 * num2)
                           .orElse(-1);

                 System.out.println(result);                           
          
output:-  720                  

 

We, at Oodles ERP, provide custom ERP application development services to solve complex business problems of our clients and customers. Our team uses the latest tech stack and agile methodologies to build custom enterprise solutions from the ground-up. Contact us at [email protected] to learn more about our enterprise web app development services

A Brief Overview of Operators In Python

Operators In Python

In Python, operators are the special symbols that are responsible for the operation between two operands. We can also say that it is like a pillar of any program on which the logic is built in any programming language.

OPERATORS- Operators are special symbols like '-', '+' , '*' , '/', '=' etc.
OPERAND- Operand is a value on which the operator is applied.

The following are the operators available in python:

1). Arithmetic Operators
    These operators are used to perform mathematical operations between two operands. This type of operator is used with numeric values 
    to perform mathematical operations. In Python version 3.x, the division result is a floating-point number while in Python version 
    2.x, the division result of 2 integers was also an integer and if you want to obtain a result in integer type in Python version 3.x 
    floored (// integer) is used. The following are the arithmetic operators:
    
    a). Addition Operator (+): This operator is used to add two operands.
        Syntax: X + Y
        Example: a=5;
                         b=7;
                         print(a+b);
        Output: 12
        
    b). Subtraction Operator (-): This operator is used to subtract one operand from another.
        Syntax: X - Y
        Example: a=7;
                        b=5;
                        print(a-b);
        Output: 2   
        
    c). Multiplication Operator (*): This operator is used to multiply one operand with the other operand.    
        Syntax: X * Y
        Example: a=7;
                         b=5;
                         print(a*b);
        Output: 35
          
    d). Division Operator (/): This operator is used to divide the first operand by the second operand. 
        Syntax: X / Y
        Example: a=7;
                         b=5;
                         print(a/b);
        Output: 1.4
        
    e). Reminder Operator (%): This operator returns the remainder when dividing the first operand by the second operand.    
        Syntax: X % Y
        Example: a=7;
                        b=5;
                        print(a%b);
        Output: 2
        
    f). Exponent Operator (**): This operator calculates the first operand power to the second operand.
        Syntax: X ** Y
        Example: a=3;
                        b=2;
                        print(3**2);
        Output: 2    
    
    g). Floor Division Operator (//): This operator gives the floor value of the quotient generated by dividing the two operands.
        Syntax: X // Y
        Example: a=7;
                        b=5;
                        print(a//b);
        Output: 1

2). Comparison Operators
    These operators are used to compare the first operand value to the second operand value. It returns a boolean value such as true or 
    false. It is also known as Relational operators. Following are the Comparison operators:
    
    a). Equal Operator (==): This operator returns true if the values of two operands are equal otherwise it returns false.
        Syntax: X == Y
        Example: a=7;
                        b=5;
                        print(a==b);
        Output: False
        
    b). Not Equal Operator (!=): This operator returns true if the values of two operands are not equal otherwise it returns false.    
        Syntax: X != Y
        Example: a=7;
                        b=5;
                        print(a!=b);
        Output: True
        
    c). Less Than Operator (<): This operator returns true if the values of the first operand are less than the second 
                                                    the operand, otherwise it returns false.
        Syntax: X < Y
        Example: a=7;
                        b=5;
                        print(a<b);
        Output: false
   
    d). Greater Than Operator (>): This operator returns true if the values of the first operand are greater than the second 
                                                          the operand, otherwise it returns false.         
        Syntax: X > Y
        Example: a=7;
                        b=5;
                        print(a>b);
        Output: True
        
    e). Less Than or Equal to Operator (<=): This operator returns true if the values of the first operand are less than or equal to the 
                                                                           the second operand, otherwise it returns false.
        Syntax: X <= Y
        Example: a=7;
                        b=5;
                        print(a<=b);
        Output: false      
        
    f). Greater Than or Equal to Operator (>=): This operator returns true if the values of the first operand are greater than or equal to 
                                                                                the second operand, otherwise it returns false.         
        Syntax: X >= Y
        Example: a=7;
                        b=5;
                        print(a>=b);
        Output: True          


3). Assignment Operators
    This type of operator is used to assign values to the variables. The following are the Assignment operators:

    a). Equal To Operator (=): This operator assigns the value of the right side of the expression to the left side operand.
        Syntax: X = Y + Z
        Example: a=7;
                        b=5;
                        c= a+b;
                        print(c);
        Output: 12 
    
    b). Add AND (+=): This operator adds the right operand to the left operand and assigns the result to the left operand.
        Syntax: X = X + Y or X+=Y
        Example: a=7;
                        b=5;
                        a= a+b;
                        print(a);
        Output: 12

    c). Subtract AND (-=): This operator subtracts the right operand from the left operand and assigns the result to the left operand.
        Syntax: X = X - Y or X-=Y
        Example: a=7;
                         b=5;
                         a= a-b;
                         print(a);
        Output: 2
        
    d). Multiply AND (*=): This operator multiplies the right operand with the left operand and assigns the result to the left operand.    
        Syntax: X = X * Y or X*=Y
        Example: a=7;
                        b=5;
                        a= a*b;
                        print(a);
        Output: 35
        
    e). Divide AND (/=): This operator divides the left operand with the right operand and assigns the result to the left operand.    
        Syntax: X = X / Y or X/=Y
        Example: a=7;
                         b=5;
                         a= a/b;
                         print(a);
        Output: 1.4
        
    f). Modulus AND (%=): This operator divides the left operand by the right operand and assigns the remainder back to the left operand.    
        Syntax: X = X % Y or X%=Y
        Example: a=7;
                        b=5;
                        a= a%b;
                        print(a);
        Output: 2
        
    g). Exponent AND (**=): This operator calculates the exponent value using operands and assigns the value to the left operand.    
        Syntax: X = X ** Y or X**=Y
        Example: a=3;
                 b=2;
                 a= a**b;
                 print(a);
        Output: 9
        
    h). Floor Division AND (//=): This operator divides the left operand by the right operand and then assigns the floor value to left 
                                                     operand.    
        Syntax: X = X // Y or X//=Y
        Example: a=7;
                        b=5;
                        a= a//b;
                        print(a);
        Output: 1
        

 

4). Bitwise Operators    
    This type of operator is generally used to work on bits and performs bit-by-bit operations on the values of the two operands. 
    These operators are commonly used to operate on binary numbers. Following are the Bitwise operators:


    
    a). Binary AND (&): If the bits of the left operand and right operand at the same place are 1, then 1 is copied to the result. Otherwise, 
                                       0 is copied.
        Syntax: X & Y
        Example: a=10;
                        b=4;
                         print(a&b);
        Output: 0


        
    b). Binary OR (|): If both the bits are zero then the resulting bit will be 0 otherwise, the resulting bit will be 1.    
        Syntax: X | Y
        Example: a=10;
                         b=4;
                         print(a|b);
        Output: 14


    
    c). Binary Ones Complement (~): This operator calculates the negation of each bit of the operand means if the bit is 0 then the 
                                                             the resulting bit is 1 or vice versa.
        Syntax: ~X
        Example: a=10;
                         print(~a);
        Output: -11


        
    d). Binary XOR (^): If both the bits are different then the resulting bit will be 1 otherwise, the resulting bit will be 0.    
        Syntax: X ^ Y
        Example: a=10;
                         b=4;
                         print(a^b);
        Output: 14


        
    e). Binary Left Shift (<<): The left operand value is moved left by the number of bits specified by the right operand.    
        Syntax: X << Y
        Example: a=10;
                         b=2;
                         print(a<<b);
        Output: 40


        
    f). Binary Right Shift (>>): The right operand value is moved right by the number of bits specified by the right operand.    
        Syntax: X >> Y
        Example: a=10;
                         b=2;
                         print(a>>b);
        Output: 2


        
5). Logical Operators
    These types of operators are used to combine conditional statements. The following are the Logical operators:
    
    a). Logical AND (and): If both the operands are true, then the condition will be true otherwise false.
        Syntax: X < 2 and  X < 4
        Example: a=1;
                        print(a<2 and a<4);
        Output: true


        
    b). Logical OR (or):   If any of the two operands are true, then the condition will be true otherwise false.
        Syntax: X > 2 or  X > 4
        Example: a=3;
                        print(a>2 or a>4);
        Output: true


        
    c). Logical NOT (not): This operator reverses the result, and returns true if the result is false.
        Syntax: not(X < 2 and X < 4)
        Example: a=1;
                        print(not(a<2 and a<4));
        Output: false
        
   

At Oodles ERP, we provide full-scale Enterprise app development services to solve complex business problems and strengthen your brand's online presence. Our development team specializes in using Python along with web frameworks like Django and Flask to build custom web applications that are easy to scale. Contact us at [email protected] to learn more about our enterprise web app development services

An Introduction To Python and Its Features

 

 

Introduction To Python

Python is an interpreted, high-level, and general purpose programming language. It follows OOPS (Object Oriented Programming) concept to build applications. It was developed to make easier readability of code and helps the developer to build up applications in fewer lines of code. Python is very simplest language in comparison of C, C++ or Java programming language. 

 

History of Python

In 1991, python was discovered by Guido van Rossum at CWI, Netherland. The fact behind the name "Python" is that Mr. Rossum was a fan of one comedy show whoose name is "Monty Python's Flying Circus" from here he picked this name for his newly programming language. The idea of this language has taken from the ABC programming language. We can say that python is a successor of ABC programming language.

 

Careers With Python

In python, following are the career options

- Data scientist

- Web designer

- Game developer

- DevOps engineer

- Machine learning engineer

- Full-stack developer

- and many more other roles

 

Features of Python

1). Easy to Use and Simple to Learn: It is easy to learn in comparison of C, C++ or Java programming language.  Its syntax is same as the 

     English language and very straightforward. Now a days, this is very popular language for beginners. In python, no use of braces or 

     semicolon.

2). Expressive Language: In Python, you can make complex programs in few lines of code. In Java or C when we make hello world program it 

     takes multiple lines but in python you can ptint this in one line e.g.- print("Hello World").

    

3). Free and Open Source: Python is open source and free for everyone. Anyone can download python from its official website 

     www.python.org. Python has a large community in all over the world and they are dedicatedly working towards make new python functions 

     and modules and functions. The open-source means, "anyone can download its source code at free of cost". 

    

4). Object-Oriented Language: It supports OOPS concepts i.e. rules of classes and objects. It supports polymorphism, data hiding, 

     abstraction, encapsulation, and inheritace. The OOPS (Object Oriented Programming) concept helps

     the developer to write reusable code.

    

5). Platform Independent Language: Platform independent means you can run pyhton on different platforms such as Windows, Linux, UNIX, 

     and Macintosh, etc. So, it is also a portable language. with the help of this feature, developer write the code once and run this on I

     different platforms.

6). Interpreted Language: It is an interpreted language which means a program is executed one line at a time. The advantage of 

     this feature is that, it makes debugging very easy.

 

Uses/Application of Python Programming

- Build a website

- Develop Artificial Intelligence Application

- Audio or Video-based Applications

- Develop a Game

- Able to Perform Scientific Computations

- In Robotics

 

Limitations For Python

- Not the fastest language

-  Mobile Development 

 

Variables In Python

It is an identifier whoose value can change. In python, we can use assignment operator to create or assign a value to a variable. It should be unique in a program, value of a variable can be a number, string or an alphanumeric character.

 

Rules to write the variable names:

- A variable name must start with an underscore or an alphabet(either capital or small).

- A variable name can consist of alphabet, digit, and underscore, no other character is allowed.

- In a variable name, Spaces not allowed.

- A keyword "python" can not be used as a variable name.


 

We, at Oodles, provide end-to-end ERP application development services with a focus on automating complex repetitive tasks. To learn more about our custom ERP software development services, reach out at [email protected].

 


 

Banner

Don't just hire talent,
But build your dream team

Our experience in providing the best talents in accordance with diverse industry demands sets us apart from the rest. Hire a dedicated team of experts to build & scale your project, achieve delivery excellence, and maximize your returns. Rest assured, we will help you start and launch your project, your way – with full trust and transparency!