Home Blog Page 324

18 Python Programming Books for Beginners and Veterans

Who knew there were so many helpful books out there for Python programmers? This curated list is just a drop in the bucket. As you may know, Python is soaring in popularity.

Let’s just say, it might be a good idea to get started learning more about Python soon or buffing up on your Python skills. So, I asked our writer community to share their top recommendations. Surprisingly, I only received one duplicate out of nineteen responses.

I didn’t break this list down into beginner books and advanced books because I recently listened to an insightful podcast about how the more experienced in a task or subject we become the more likely we are to believe we know everything about it. Yet, refreshing ourselves on the basics and performing simple acts like running through a checklist is important for all of us, for the beginner and advanced user alike.

Or, maybe you prefer to start out in the deep end. Either way, let’s dive in.

Read more at OpenSource.com

Create and View Custom Trace Data in User Node.js Code

Tracing is a convenient way for developers to monitor and analyze application performance at runtime. Node.js offers a few options to generate and diagnose custom trace data in JavaScript applications.

The built-in trace mechanism supports centralized tracing for not only V8 and Node.js core, but also userspace code. For the userspace tracing, Node provides the async_hooks and embedder API to trace async resources. Additionally the developers can produce trace data for their own code segments which is not formally documented.

In this tutorial, follow the steps to define a new trace category, generate custom trace data into the standard Node trace log file, and visualize trace data for centralized performance analysis.

Learning objectives

After completing this guide you will know how to:

  • Define, enable, and disable a trace category in a Node application.
  • Add custom trace events and parameters into a Node application.
  • View the custom trace data generated by a Node application.

Read more at IBM Developer

A Hitchhiker’s Guide to Deploying Hyperledger Fabric on Kubernetes

Deploying a multi-component system like Hyperledger Fabric to production is challenging. Join us Wednesday, September 26, 2018 9:00 a.m. Pacific for an introductory webinar, presented by Alejandro (Sasha) Vicente Grabovetsky and Nicola Paoli of AID:Tech.

Why should you care?

Hyperledger Fabric is rather awesome, but deploying a distributed network has been known to give headaches and even migraines. In this talk, we will not be providing you with a guillotine that forever gets rid of these headaches, but instead we will talk you through some tools that can help you deploy a functioning, production-ready Hyperledger Fabric network on a Kubernetes cluster.

Who should attend?

Ideally, you are a Dev, an Ops or a DevOps interested in learning more about how to deploy Hyperledger Fabric to Kubernetes.

You might know a little bit about Hyperledger Fabric and about Docker containers and Kubernetes. We assume limited knowledge and will do our best to as possible and explain and demystify all the components along the way.

Read more at The Linux Foundation

 

Support for a LoRaWAN Subsystem

Sometimes kernel developers find themselves competing with each other to get their version of a particular feature into the kernel. But sometimes developers discover they’ve been working along very similar lines, and the only reason they hadn’t been working together was that they just didn’t know each other existed.

Recently, Jian-Hong Pan asked if there was any interest in a LoRaWAN subsystem he’d been working on. LoRaWAN is a commercial networking protocol implementing a low-power wide-area network (LPWAN) allowing relatively slow communications between things, generally phone sensors and other internet of things devices. Jian-Hong posted a link to the work he’d done so far:https://github.com/starnight/LoRa/tree/lorawan-ndo/LoRaWAN.

He specifically wanted to know “should we add the definitions into corresponding kernel header files now, if LoRaWAN will be accepted as a subsystem in Linux?” The reason he was asking was that each definition had its own number. Adding them into the kernel would mean the numbers associated with any future LoRaWAN subsystem would stay the same during development.

However, Marcel Holtmann explained the process:

Read more at Linux Journal

Agile Project Management: A Comprehensive Guide

Geared toward continuous improvement, the agile methodology can greatly increase your project’s prospects for success. Here is everything you need to know about agile project management, from certification to training to software and more.

What is agile?

Agile is a project management methodology that uses short development cycles called “sprints” to focus on continuous improvement in the development of a product or service.

Although incremental software development methods go as far back as 1957, agile was first discussed in depth in the 1970s by William Royce who published a paper on the development of large software systems. Later in 2001, the Agile Manifesto, a “formal proclamation of four key values and 12 principles to guide an iterative and people-centric approach to software development,” was published by 17 software developers. These developers gathered together to discuss lightweight development methods based on their combined experience.

Read more at CIO.com

2 Ways to Re-Run Last Executed Commands in Linux

One of the greatest features of Bash is the command history, which stores all commands a user runs, in a history file within his/her home directory (typically /home/$USER/.bash_history). This allows the user to easily recall, edit and rerun previous commands.

In this article, we will demonstrate how to re-execute a specific command from the history of commands entered to a shell. This is useful to avoid typing the same commands over and over again.

Normally, to get a command you recently run, you can use the Up arrow keys to retrieve a previous command. Pressing it constantly takes you through multiple commands in history, so you can find the one you want. Use the Down arrow to move in the reverse direction.

However, the history file may contain a lot of entries, to re-execute a specific command from the history of commands, you can run the history command.

Read more at Tecmint

Know Your Storage: Block, File & Object

Dealing with the tremendous amount of data generated today presents a big challenge for companies who create or consume such data. It’s a challenge for tech companies that are dealing with related storage issues.

“Data is growing exponentially each year, and we find that the majority of data growth is due to increased consumption and industries adopting transformational projects to expand value. Certainly, the Internet of Things (IoT) has contributed greatly to data growth, but the key challenge for software-defined storage is how to address the use cases associated with data growth,” said Michael St. Jean, principal product marketing manager, Red Hat Storage.

Every challenge is an opportunity. “The deluge of data being generated by old and new sources today is certainly presenting us with opportunities to meet our customers escalating needs in the areas of scale, performance, resiliency, and governance,” said Tad Brockway, General Manager for Azure Storage, Media and Edge.

Trinity of modern software-defined storage

There are three different kinds of storage solutions — block, file, and object — each serving a different purpose while working with the others.

Block storage is the oldest form of data storage, where data is stored in fixed-length blocks or chunks of data. Block storage is used in enterprise storage environments and usually is accessed using Fibre Channel or iSCSI interface. “Block storage requires an application to map where the data is stored on the storage device,” according to SUSE’s Larry Morris, Sr. Product Manager, Software Defined Storage.

Block storage is virtualized in storage area network and software defined storage systems, which are abstracted logical devices that reside on a shared hardware infrastructure and are created and presented to the host operating system of a server, virtual server, or hypervisor via protocols like SCSI, SATA, SAS, FCP, FCoE, or iSCSI.

“Block storage splits a single storage volume (like a virtual or cloud storage node, or a good old fashioned hard disk) into individual instances known as blocks,” said St. Jean.

Each block exists independently and can be formatted with its own data transfer protocol and operating system — giving users complete configuration autonomy. Because block storage systems aren’t burdened with the same investigative file-finding duties as the file storage systems, block storage is a faster storage system. Pairing that speed with configuration flexibility makes block storage ideal for raw server storage or rich media databases.

Block storage can be used to host operating systems, applications, databases, entire virtual machines and containers. Traditionally, block storage can only be accessed by individual machine, or machines in a cluster, to which it has been presented.

File-based storage

File-based storage uses a filesystem to map where the data is stored on the storage device. It’s a dominant technology used on direct- and networked-attached storage system, and it takes care of two things: organizing data and representing it to users. “With file storage, data is arranged on the server side in the exact same format as the clients see it. This allows the user to request a file by some unique identifier — like a name, location, or URL — which is communicated to the storage system using specific data transfer protocols,” said St. Jean.

The result is a type of hierarchical file structure that can be navigated from top to bottom. File storage is layered on top of block storage, allowing users to see and access data as files and folders, but restricting access to the blocks that stand up those files and folders.

“File storage is typically represented by shared filesystems like NFS and CIFS/SMB that can be accessed by many servers over an IP network. Access can be controlled at a file, directory, and export level via user and group permissions. File storage can be used to store files needed by multiple users and machines, application binaries, databases, virtual machines, and can be used by containers,” explained Brockway.

Object storage

Object storage is the newest form of data storage, and it provides a repository for unstructured data which separates the content from the indexing and allows the concatenation of multiple files into an object. An object is a piece of data paired with any associated metadata that provides context about the bytes contained within the object (things like how old or big the data is). Those two things together — the data and metadata — make an object.

One advantage of object storage is the unique identifier associated with each piece of data. Accessing the data involves using the unique identifier and does not require the application or user to know where the data is actually stored. Object data is accessed through APIs.

“The data stored in objects is uncompressed and unencrypted, and the objects themselves are arranged in object stores (a central repository filled with many other objects) or containers (a package that contains all of the files an application needs to run). Objects, object stores, and containers are very flat in nature — compared to the hierarchical structure of file storage systems — which allow them to be accessed very quickly at huge scale,” explained St. Jean.

Object stores can scale to many petabytes to accommodate the largest datasets and are a great choice for images, audio, video, logs, backups, and data used by analytics services.

Conclusion

Now you know about the various types of storage and how they are used. Stay tuned to learn more about software-defined storage as we examine the topic in the future.

Join us at Open Source Summit + Embedded Linux Conference Europe in Edinburgh, UK on October 22-24, 2018, for 100+ sessions on Linux, Cloud, Containers, AI, Community, and more.

5 Things You Should Be Monitoring

Whether you’re a developer building websites or internal applications, or an administrator building the infrastructure to back them, your job doesn’t stop once they’re up and running. Machine failure, releases containing bugs, and growth in usage can all lead to problems that need to be dealt with. To detect them, you need monitoring.

But monitoring can do more than just send you alerts about the things that are going wrong. It can also help you debug those problems and prevent them in the future. So what things should you be monitoring?

1. Latency

Faster web pages lead to happier users. The opposite is also true: increased latency leads to user dissatisfaction and could also be the first warning sign that your system is strained. Launching resource-intensive features often means more user requests being served. As servers die, latency can increase. In fact, latency tends to increase nonlinearly in response to load due to increased contention. Small latency increases today could indicate bigger latency increases in the future; early awareness gives you some time to fix any issues.

Latency is generally measured from two perspectives: your users and your system.

Read more at O’Reilly

Distributed Tracing Infrastructure with Jaeger on Kubernetes

Kubernetes has become the de-facto orchestrator for microservices infrastructure and deployment. The ecosystem is extremely rich and one of the fastest growing in the open-source community. A monitoring infrastructure with Prometheus, ElasticSearch, Grafana, Envoy/Consul, Jaeger/Zipkin make up a solid foundation to enable metrics, logging, dashboards, service-discovery and distributed tracing across the stack.

Distributed Tracing

Distributed tracing enables capturing requests and building a view of the entire chain of calls made all the way from user requests to interactions between hundreds of services. It also enables instrumentation of application latency (how long each request took), tracking the lifecycle of network calls (HTTP, RPC, etc) and also identify performance issues by getting visibility on bottlenecks.

The following sections go over enabling distributed tracing with Jaeger for gRPC services in a Kubernetes setup. Jaeger Github Org has dedicated repo for various deployment configurations of Jaeger in Kubernetes. These are excellent examples to build on, and I will try to break down each Jaeger component and its Kubernetes deployment.

Read more at Medium

Mozilla Identifies 10 Open Source Personas: What You Need to Know

Participating in open source communities—or in any open organization, for that matter—means collaborating with others who might not operate the same way you do. Their motivations may differ. Their governance models might seem foreign. Their goals might not immediately speak to you. So if you’re going to work together, you’ll need to develop a clear sense of what makes the project tick—and decide quickly whether working together is best for your team and your business.

Similarly, if you’re instigating an open source project, you should ask yourself, “what kind of community do I want to attract?” Then you can plan for and signal that accordingly.

Earlier this year, Mozilla and Open Tech Strategies released the first version of a tool we hope will help with this. Our recent report, “Open Source Archetypes,”identifies 10 general types (or “archetypes”) of open communities in their strategic contexts. The report offers narratives describing these archetypes, explains what motivate them, and outlines the strategic benefits of working with them. We also cite some examples of each archetype and offer insights into various licensing models, governance models and community standards that comprise them.

Read more at OpenSource.com