Noah  Rowe

Noah Rowe

1597847820

SystemOps -Preparing Adaptive Workflows Resilient to Change

There is no doubt that technology is advancing towards a much brighter future, one being the advent of – cloud computing. Slowly, new terms were introduced in clouding, the most popular ones being SysOps (System operations) and DevOps (Development operations).

The invention of cloud computing, made a lot of IT operations work a cakewalk, estimates trust that about 20 percent of the DBA’s task, 80 percent of the network engineer’s task and 50 percent of system admin’s task has become a lot easier, credit to cloud computing. This tectonic shift has bought a big shift in the work of system admins. What started to help out the development team to build software or applications bought DevOps into life.

The two most used areas of cloud computing – DevOps and SysOps brings together developers and operations team to perform the tasks and eliminate bugs which assist to achieve the Enterprise IT goals efficiently.

The Growth of SystemOps

When cloud computing was not into play, the traditional tools like source code control system, vendor package management and concurrent version system, were widely used by the administrators to fulfil the goals of developer activities. However, with DevOps, these activities are simplified with the help of open-source or cross-platform tools which include Puppet and Chef.

Pacing today, the system admin’s uses code infrastructure as the main cypher to mechanize the process of infrastructure building. Continuous deployment done simultaneously is the process undertaken by developers with the help of automated tools used in the building process.

#cloud computing #latest news #cloud

What is GEEK

Buddha Community

SystemOps -Preparing Adaptive Workflows Resilient to Change
Fredy  Larson

Fredy Larson

1604020611

Monitoring & Orchestrating Your Microservices Landscape using Workflow Automation

On Wednesday, March 11, 2020, I conducted the webinar titled “Monitoring & Orchestrating Your Microservices Landscape using Workflow Automation”. Not only was I overwhelmed by the number of attendees, but we also got a huge list of interesting questions before and especially during the webinar. Some of them were answered, but a lot of them were not. I want to answer all open questions in this series of seven blog posts. Today I am posting the final two in the series.

Note that we also started to experiment with the Camunda’s question corner and discuss to make this more frequent, so keep an eye to our community for more opportunities to ask anything (especially as in-person events are canceled for some time).

Part 1: BPMN & modeling related questions (6 answers)

Part 2: Architecture related questions (12)

Part 3: Stack & technology questions (6)

Part 4: Camunda product-related questions (5)

Part 5: Camunda Optimize specific questions (3)

Part 6: Questions about best practices (5)

Part 7: Questions around project layout, journey and value proposition (3)

Questions about best practices

Q: Business data versus workflow data: if you cannot tear them apart, how can you keep them consistent? Are the eventual/transactional consistency problems simpler or more complex with Camunda BPM in the equation?

This is quite a complex question, as it depends on the exact architecture and technology you want to use.

Example 1: You use Camunda embedded as a library, probably using the Spring Boot starter. In this case, your business data could live in the same database as the workflow context. In this case you can join one ACID transaction and everything will be strongly consistent.

Example 2: You leverage Camunda Cloud and code your service in Node.JS, storing data in some database. Now you have no shared transaction. No you start living in the eventual consistent world, and need to rely on “at-least-once” semantics. This is not a problem per se, but at least requires some thinking about the situations that can arise. I should probably write an own piece about that, but I had used this picture in the past to explain the problem (and this very basic blog post might help also):

So you can end up with money charged on the credit card, but the workflow not knowing about it. But in this case you leverage the retry capabilities and will be fine soon (=eventually).

#microservices #monitoring-microservices #microservices-or #workflow-automation #process-automation #bpmn #workflow #developers-workflow

Tamale  Moses

Tamale Moses

1669003576

Exploring Mutable and Immutable in Python

In this Python article, let's learn about Mutable and Immutable in Python. 

Mutable and Immutable in Python

Mutable is a fancy way of saying that the internal state of the object is changed/mutated. So, the simplest definition is: An object whose internal state can be changed is mutable. On the other hand, immutable doesn’t allow any change in the object once it has been created.

Both of these states are integral to Python data structure. If you want to become more knowledgeable in the entire Python Data Structure, take this free course which covers multiple data structures in Python including tuple data structure which is immutable. You will also receive a certificate on completion which is sure to add value to your portfolio.

Mutable Definition

Mutable is when something is changeable or has the ability to change. In Python, ‘mutable’ is the ability of objects to change their values. These are often the objects that store a collection of data.

Immutable Definition

Immutable is the when no change is possible over time. In Python, if the value of an object cannot be changed over time, then it is known as immutable. Once created, the value of these objects is permanent.

List of Mutable and Immutable objects

Objects of built-in type that are mutable are:

  • Lists
  • Sets
  • Dictionaries
  • User-Defined Classes (It purely depends upon the user to define the characteristics) 

Objects of built-in type that are immutable are:

  • Numbers (Integer, Rational, Float, Decimal, Complex & Booleans)
  • Strings
  • Tuples
  • Frozen Sets
  • User-Defined Classes (It purely depends upon the user to define the characteristics)

Object mutability is one of the characteristics that makes Python a dynamically typed language. Though Mutable and Immutable in Python is a very basic concept, it can at times be a little confusing due to the intransitive nature of immutability.

Objects in Python

In Python, everything is treated as an object. Every object has these three attributes:

  • Identity – This refers to the address that the object refers to in the computer’s memory.
  • Type – This refers to the kind of object that is created. For example- integer, list, string etc. 
  • Value – This refers to the value stored by the object. For example – List=[1,2,3] would hold the numbers 1,2 and 3

While ID and Type cannot be changed once it’s created, values can be changed for Mutable objects.

Check out this free python certificate course to get started with Python.

Mutable Objects in Python

I believe, rather than diving deep into the theory aspects of mutable and immutable in Python, a simple code would be the best way to depict what it means in Python. Hence, let us discuss the below code step-by-step:

#Creating a list which contains name of Indian cities  

cities = [‘Delhi’, ‘Mumbai’, ‘Kolkata’]

# Printing the elements from the list cities, separated by a comma & space

for city in cities:
		print(city, end=’, ’)

Output [1]: Delhi, Mumbai, Kolkata

#Printing the location of the object created in the memory address in hexadecimal format

print(hex(id(cities)))

Output [2]: 0x1691d7de8c8

#Adding a new city to the list cities

cities.append(‘Chennai’)

#Printing the elements from the list cities, separated by a comma & space 

for city in cities:
	print(city, end=’, ’)

Output [3]: Delhi, Mumbai, Kolkata, Chennai

#Printing the location of the object created in the memory address in hexadecimal format

print(hex(id(cities)))

Output [4]: 0x1691d7de8c8

The above example shows us that we were able to change the internal state of the object ‘cities’ by adding one more city ‘Chennai’ to it, yet, the memory address of the object did not change. This confirms that we did not create a new object, rather, the same object was changed or mutated. Hence, we can say that the object which is a type of list with reference variable name ‘cities’ is a MUTABLE OBJECT.

Let us now discuss the term IMMUTABLE. Considering that we understood what mutable stands for, it is obvious that the definition of immutable will have ‘NOT’ included in it. Here is the simplest definition of immutable– An object whose internal state can NOT be changed is IMMUTABLE.

Again, if you try and concentrate on different error messages, you have encountered, thrown by the respective IDE; you use you would be able to identify the immutable objects in Python. For instance, consider the below code & associated error message with it, while trying to change the value of a Tuple at index 0. 

#Creating a Tuple with variable name ‘foo’

foo = (1, 2)

#Changing the index[0] value from 1 to 3

foo[0] = 3
	
TypeError: 'tuple' object does not support item assignment 

Immutable Objects in Python

Once again, a simple code would be the best way to depict what immutable stands for. Hence, let us discuss the below code step-by-step:

#Creating a Tuple which contains English name of weekdays

weekdays = ‘Sunday’, ‘Monday’, ‘Tuesday’, ‘Wednesday’, ‘Thursday’, ‘Friday’, ‘Saturday’

# Printing the elements of tuple weekdays

print(weekdays)

Output [1]:  (‘Sunday’, ‘Monday’, ‘Tuesday’, ‘Wednesday’, ‘Thursday’, ‘Friday’, ‘Saturday’)

#Printing the location of the object created in the memory address in hexadecimal format

print(hex(id(weekdays)))

Output [2]: 0x1691cc35090

#tuples are immutable, so you cannot add new elements, hence, using merge of tuples with the # + operator to add a new imaginary day in the tuple ‘weekdays’

weekdays  +=  ‘Pythonday’,

#Printing the elements of tuple weekdays

print(weekdays)

Output [3]: (‘Sunday’, ‘Monday’, ‘Tuesday’, ‘Wednesday’, ‘Thursday’, ‘Friday’, ‘Saturday’, ‘Pythonday’)

#Printing the location of the object created in the memory address in hexadecimal format

print(hex(id(weekdays)))

Output [4]: 0x1691cc8ad68

This above example shows that we were able to use the same variable name that is referencing an object which is a type of tuple with seven elements in it. However, the ID or the memory location of the old & new tuple is not the same. We were not able to change the internal state of the object ‘weekdays’. The Python program manager created a new object in the memory address and the variable name ‘weekdays’ started referencing the new object with eight elements in it.  Hence, we can say that the object which is a type of tuple with reference variable name ‘weekdays’ is an IMMUTABLE OBJECT.

Also Read: Understanding the Exploratory Data Analysis (EDA) in Python

Where can you use mutable and immutable objects:

Mutable objects can be used where you want to allow for any updates. For example, you have a list of employee names in your organizations, and that needs to be updated every time a new member is hired. You can create a mutable list, and it can be updated easily.

Immutability offers a lot of useful applications to different sensitive tasks we do in a network centred environment where we allow for parallel processing. By creating immutable objects, you seal the values and ensure that no threads can invoke overwrite/update to your data. This is also useful in situations where you would like to write a piece of code that cannot be modified. For example, a debug code that attempts to find the value of an immutable object.

Watch outs:  Non transitive nature of Immutability:

OK! Now we do understand what mutable & immutable objects in Python are. Let’s go ahead and discuss the combination of these two and explore the possibilities. Let’s discuss, as to how will it behave if you have an immutable object which contains the mutable object(s)? Or vice versa? Let us again use a code to understand this behaviour–

#creating a tuple (immutable object) which contains 2 lists(mutable) as it’s elements

#The elements (lists) contains the name, age & gender 

person = (['Ayaan', 5, 'Male'], ['Aaradhya', 8, 'Female'])

#printing the tuple

print(person)

Output [1]: (['Ayaan', 5, 'Male'], ['Aaradhya', 8, 'Female'])

#printing the location of the object created in the memory address in hexadecimal format

print(hex(id(person)))

Output [2]: 0x1691ef47f88

#Changing the age for the 1st element. Selecting 1st element of tuple by using indexing [0] then 2nd element of the list by using indexing [1] and assigning a new value for age as 4

person[0][1] = 4

#printing the updated tuple

print(person)

Output [3]: (['Ayaan', 4, 'Male'], ['Aaradhya', 8, 'Female'])

#printing the location of the object created in the memory address in hexadecimal format

print(hex(id(person)))

Output [4]: 0x1691ef47f88

In the above code, you can see that the object ‘person’ is immutable since it is a type of tuple. However, it has two lists as it’s elements, and we can change the state of lists (lists being mutable). So, here we did not change the object reference inside the Tuple, but the referenced object was mutated.

Also Read: Real-Time Object Detection Using TensorFlow

Same way, let’s explore how it will behave if you have a mutable object which contains an immutable object? Let us again use a code to understand the behaviour–

#creating a list (mutable object) which contains tuples(immutable) as it’s elements

list1 = [(1, 2, 3), (4, 5, 6)]

#printing the list

print(list1)

Output [1]: [(1, 2, 3), (4, 5, 6)]

#printing the location of the object created in the memory address in hexadecimal format

print(hex(id(list1)))

Output [2]: 0x1691d5b13c8	

#changing object reference at index 0

list1[0] = (7, 8, 9)

#printing the list

Output [3]: [(7, 8, 9), (4, 5, 6)]

#printing the location of the object created in the memory address in hexadecimal format

print(hex(id(list1)))

Output [4]: 0x1691d5b13c8

As an individual, it completely depends upon you and your requirements as to what kind of data structure you would like to create with a combination of mutable & immutable objects. I hope that this information will help you while deciding the type of object you would like to select going forward.

Before I end our discussion on IMMUTABILITY, allow me to use the word ‘CAVITE’ when we discuss the String and Integers. There is an exception, and you may see some surprising results while checking the truthiness for immutability. For instance:
#creating an object of integer type with value 10 and reference variable name ‘x’ 

x = 10
 

#printing the value of ‘x’

print(x)

Output [1]: 10

#Printing the location of the object created in the memory address in hexadecimal format

print(hex(id(x)))

Output [2]: 0x538fb560

#creating an object of integer type with value 10 and reference variable name ‘y’

y = 10

#printing the value of ‘y’

print(y)

Output [3]: 10

#Printing the location of the object created in the memory address in hexadecimal format

print(hex(id(y)))

Output [4]: 0x538fb560

As per our discussion and understanding, so far, the memory address for x & y should have been different, since, 10 is an instance of Integer class which is immutable. However, as shown in the above code, it has the same memory address. This is not something that we expected. It seems that what we have understood and discussed, has an exception as well.

Quick checkPython Data Structures

Immutability of Tuple

Tuples are immutable and hence cannot have any changes in them once they are created in Python. This is because they support the same sequence operations as strings. We all know that strings are immutable. The index operator will select an element from a tuple just like in a string. Hence, they are immutable.

Exceptions in immutability

Like all, there are exceptions in the immutability in python too. Not all immutable objects are really mutable. This will lead to a lot of doubts in your mind. Let us just take an example to understand this.

Consider a tuple ‘tup’.

Now, if we consider tuple tup = (‘GreatLearning’,[4,3,1,2]) ;

We see that the tuple has elements of different data types. The first element here is a string which as we all know is immutable in nature. The second element is a list which we all know is mutable. Now, we all know that the tuple itself is an immutable data type. It cannot change its contents. But, the list inside it can change its contents. So, the value of the Immutable objects cannot be changed but its constituent objects can. change its value.

FAQs

1. Difference between mutable vs immutable in Python?

Mutable ObjectImmutable Object
State of the object can be modified after it is created.State of the object can’t be modified once it is created.
They are not thread safe.They are thread safe
Mutable classes are not final.It is important to make the class final before creating an immutable object.

2. What are the mutable and immutable data types in Python?

  • Some mutable data types in Python are:

list, dictionary, set, user-defined classes.

  • Some immutable data types are: 

int, float, decimal, bool, string, tuple, range.

3. Are lists mutable in Python?

Lists in Python are mutable data types as the elements of the list can be modified, individual elements can be replaced, and the order of elements can be changed even after the list has been created.
(Examples related to lists have been discussed earlier in this blog.)

4. Why are tuples called immutable types?

Tuple and list data structures are very similar, but one big difference between the data types is that lists are mutable, whereas tuples are immutable. The reason for the tuple’s immutability is that once the elements are added to the tuple and the tuple has been created; it remains unchanged.

A programmer would always prefer building a code that can be reused instead of making the whole data object again. Still, even though tuples are immutable, like lists, they can contain any Python object, including mutable objects.

5. Are sets mutable in Python?

A set is an iterable unordered collection of data type which can be used to perform mathematical operations (like union, intersection, difference etc.). Every element in a set is unique and immutable, i.e. no duplicate values should be there, and the values can’t be changed. However, we can add or remove items from the set as the set itself is mutable.

6. Are strings mutable in Python?

Strings are not mutable in Python. Strings are a immutable data types which means that its value cannot be updated.

Join Great Learning Academy’s free online courses and upgrade your skills today.


Original article source at: https://www.mygreatlearning.com

#python 

Adapting Resilient and Scalable IT for Stable Business Growth

Today, Information technology has become a foundation of anything that is created for business or ease of life. Whether you want to explore better ways for business workflows, engage your clients, or boost the company’s growth, ensuring that you have a resilient foundation confirms that you are to unveil fruitful opportunities and capturing potential business values.

It is for the above-mentioned reasons, more and more entrepreneurs now invest in resiliency, scalable information technology solutions to adapt to the ongoing and ever-growing demands of clients.

Today, Information technology has become a foundation of anything that is created for business or ease of life. Whether you want to explore better ways for business workflows, engage your clients, or boost the company’s growth, ensuring that you have a resilient foundation confirms that you are to unveil fruitful opportunities and capturing potential business values.

It is for the above-mentioned reasons, more and more entrepreneurs now invest in resiliency, scalable information technology solutions to adapt to the ongoing and ever-growing demands of clients.

Critical business service operating model
Based on industry-standard business operating practices, a common model can be developed.

Critical business service operating model

Today’s market and customers – volatile, transforming, and fragile

The market volatility today has been coupled with business and technology disruption that ultimately becomes challenging in catering to client’s fast-changing demands and workforce stability. The organizations, for this very reason, look for resilient information technology solutions. In other words, enterprises today have their sleeves up for unforeseen scenarios because they have anticipated and prepared to respond to challenges swiftly and with agility.

Businesses with no resilient strategies in place thrash about operational and managerial performance impediments, which, in turn, bring in disruptions. According to a survey, more than 90% of IT leaders opine that they have felt such a scenario.

Lately, it has been observed that enterprises have started to actively invest in making their software up-to-date by transforming their obsolete systems. They also invest in making their workforce adaptive to take up the challenges in the usage and integration of the newer systems which are innovation-inspired.

Resilient Information Technology
The model can be augmented with a specially designed multi-tiered lifecycle management system so that any-size enterprise can quickly respond to technology or market hurdles. When the workforce is adaptive, accessing, and detailing business analysis and insights become feasible. Such a transformation can strengthen the infrastructure of the company and amalgamate its goals with emerging business dynamics.

How businesses can achieve optimum resiliency?
Enterprises should opt for calculated risk and step forward carefully. Here are a few steps observed and advised by industry gurus to reach an optimum level of resiliency.

Today’s market and customers – volatile, transforming, and fragile

Focus: focusing on processing, designing, and operating the industry-standard best practices would render an improvement in stability, capability, and availability.

Identify: identifying the root causes and alleviate the risky factors to curb recurrent systemic challenges would help you improve overall performance.

Expertise: having expertise at the helm of improving and restructuring business strategies is a sure shot to achieve resilience. AI/ML-powered tools and technologies come as a great rescue.

How to make the workforce adaptive to change?
It is paramount to any organization that the workforce is adaptive and flexible in getting in sync with big transformations, the complexity of projects, and unforeseen scenarios including unusual escalations. According to a report, over 75% of enterprises don’t find the expertise easily. Experts in AI, ML, AR, VR, network operations, and cyber securities are in great demand; furthermore, these experts should be employed to have instant help in critical cases.

Domain experts can regularly conduct a workshop to enhance the rest of the staff in their cognition and hold on to the subject. Such experts can also help the company in data-driven methodologies and can analyze whether or not your IT models are scalable, at risk, broken, or require drastic amendment.

Forrester, a well-known research and stats company, says that organizations with great adaptability can witness thrice the pace in revenue growth as compared to stubborn companies with obsolete systems resisting the change.

Transformation in IT is the only solution to the constant change
A well-known case study of the University of Maryland Medical System demonstrates that transformative information technology is the only solution to the fast-paced change in market or customer demands. The university sought an instant, though temporary, set up to connect all of its field hospitals to handle a huge flow in hospital admissions. In less than a week, they had a renowned IT company at the helm of the project and connected nearly 30000 employees across over a dozen hospitals and thousands of houses. The system they used were powerful networking technology, integrated network security, and deployment guidance.

The transformation in IT infrastructure helps organizations drive through difficult and challenging times such as constant market change, unforeseen downturn, unprecedented pandemic, and many more industrial impediments. Having the right talent and expertise at right time at the right place can help you create and capture newer opportunities by curbing all the hassles you face in running businesses.

Technology – As a helping hand
In such situations having a professional IT service providing company as your partner can be a blessing. We have helped many enterprises transform into better resiliency by enhancing adaptability through contemporary tools and technologies. Multi-tiered solutions that are tailored to your business objectives can do wonders and make your business foolproof and challenge-resistant in coming years of cutthroat competition and market uncertainty.

#resilient #business-growth #resilient-strategies #innovation

Roberta  Ward

Roberta Ward

1601359981

Monitoring & Orchestrating Your Microservices Landscape using Workflow Automation

On Wednesday, March 11, 2020, I conducted the webinar titled “Monitoring & Orchestrating Your Microservices Landscape using Workflow Automation”. Not only was I overwhelmed by the number of attendees, but we also got a huge list of interesting questions before and especially during the webinar. Some of them were answered, but a lot of them were not. I want to answer all open questions in this series of seven blog posts.

Part 1: BPMN & modeling related questions (6 answers)

Part 2: Architecture related questions (12)

Part 3: Stack & technology questions (6)

Part 4: Camunda product-related questions (5)

Part 5: Camunda Optimize specific questions (3)

Part 6: Questions about best practices (5)

Part 7: Questions around project layout, journey and value proposition (3)

Note that we also started to experiment with the Camunda’s question corner and discuss to make this more frequent, so keep an eye to our community for more opportunities to ask anything (especially as in-person events are canceled for some time).

Camunda product-related questions

Q: What is the difference between Camunda BPM and Zeebe?

Or different forms of asking the same question: How do you position Camunda BPM vs Zeebe in relation to this presentation? Is Camunda BPM still the best/most reliable solution for microservice architecture with orchestration flows? Or is Zeebe the recommended route for such a new project?

To get everybody on the same page first, within Camunda we have two open-source workflow engine projects:

Camunda BPM: A BPMN workflow engine, that persists state via a relational database. The engine itself is stateless, and if you cluster the engine all nodes meet in the database.Zeebe: A BPMN workflow engine, that persists state on its own (kind of event sourcing). Zeebe forms an own distributed system and replicates its state to other nodes using a RAFT protocol. If you want to learn more about if check out Zeebe.io — a horizontally scalable distributed workflow engine.

#microservices #workflow-autom #microservices-or #monitoring-micro #bpmn-workflow #workflow-modeling #camunda #zeebe

Change AOL Password - How To Change AOL Password In Chrome Browser

This is image title
If you can’t sign into an AOL email account, simply because you’ve forgotten the password? and Do you want to know How To Change AOL Password In Chrome Browser? you’re at the right place to seek out the instructions for reset aol password.

If you’ve cleared the cache in your Chrome Browser browser, but still experiencing issues, you’ll have to restore its original settings. this will remove adware, get obviate extensions you didn’t install, and improve overall performance. Restoring your browser’s default settings also will reset chrome browser security settings. A reset may delete other saved info like bookmarks, stored passwords, and your homepage. Confirm what info your chrome browser will eliminate before resetting and confirm to save lots of any info you do not want to lose.

In this article, I’m going to share all the methods for Change AOL Email Password. you ought to try one among them to Reset AOL Password In Chrome Browser by yourself.

How to Solve Forgot AOL Mail Password?

Steps for Change AOL Mail Password-
Before I will be able to share any instructions about the way to Change AOL Mail Password, I want to inform you, you ought to have access to a minimum of one recovery option. So you’ll plow ahead and reset your AOL password.

  • Open an internet browser on your computer like- internet explorer, google chrome, or Mozilla Firefox.
  • Go to aol.com
  • Now click on check-in.
  • Below the username and password box, you’ll see the forget password option. So click thereon.
  • Now, this may ask you for your email address. So you would like to type your email address and click on the continue button.
  • Here you would like to prove that you simply aren’t a robot. So simply accept the captcha code and click on continue again.
  • After proving you’re not the robot, you’ll reach the subsequent screen. Here it’ll invite account verification.

For verifying the account ownership, you’ll plow ahead and choose anybody’s verification method, like- phone, security questions, etc. and verify the account ownership.

Be careful once you are verifying your account. One wrong step can also block your account.

  1. Phone Verification – if you’ll choose phone verification for verifying the account ownership, you’ll get a code on your phone via call or SMS. that you simply need to enter into your computer.

  2. Security questions- this is often the very easy method to verify the account ownership. All you would like to try to just answer the safety questions. Whatever you’ve got found out.

If you’ll verify the account ownership successfully, then you’ll reach the new password window. So you’ll create your password now. But whenever you’re creating the password, confirm you’re making a posh password.

After resetting the password, you’ll plow ahead and check out to login to your AOL account with a replacement password.

Furthermore, if you would like a moment solution for any AOL mail-related all query, you’ll contact our email customer care team. The professionals will assist you with the flowchart to vary your password or add a replacement account. you’re liberal to connect with us 24*7. Share your problem and obtain a reliable solution within a couple of seconds. Are you the one trying to attach AOL Customer Service? Contact us at +1-888-857-5157 and you can also visit our website.

Source: https://sites.google.com/view/recover-change-aol-key/blogs/how-to-change-aol-password-in-chrome-browser

#change aol password in chrome browser #change aol email password in chrome browser #change aol mail password in chrome browser