teleren/devto huggingface dataset:
How to install Apache Tomcat 9 on Ubuntu 20.04 LTS
Tags: tutorial, tomcat, beginners, ubuntu
Published: 2021-11-18 20:21:19

## About This Article

This article is about how to install Apache Tomcat 9 using 'tar.gz' on Ubuntu 20.04 LTS. Hope you will learn something. Cheers!

&nbsp;
## Prerequisite

You need to have Java 8 installed on your machine. 
Tomcat 9 works on only Java 8. [More Information](https://tomcat.apache.org/whichversion.html).

You can confirm the java version with the following command.

```console
java -version
```
&nbsp;
## Let's install Apache Tomcat 9

1. Visit [Apache Tomcat Site](https://tomcat.apache.org/download-90.cgi).
2. Download Apache Tomcat 9.
   - Download `tar.gz (pgp, sha512)`  the Core Binary Distributions of the Apache Tomcat.

3. Open up your terminal and `cd` into the directory where you have downloaded the Apache Tomcat `tar.gz` file.

**Tip:** You can open up the terminal by pressing Ctrl + Alt + T on your keyboard.

```console
cd /home/<type-username-here>/Downloads
```

4. Extract the `tar.gz` file to `/opt` directory with the following command.


```console
sudo tar -xf apache-tomcat-9.0.55.tar.gz -C /opt
```
&nbsp;


### Setting up the Catalina environment variable.

1. Let's cd into the Tomcat directory.

```console
cd /opt/apache-tomcat-9.0.55/
```
2. You can see the current directory by running the following command. Copy the path of the current directory. This is the path of the tomcat 9.
```console
pwd
```
3. Now open up the terminal and type the following command to get the root access. You will need to provide the password if needed.

```console
sudo su
```
4. Open up the ~/.bashrc file using gedit and the Catalina environment variable.

```console
gedit ~/.bashrc
```
5. Scroll down to the end of the document and set the Catalina environment variable. `/opt/apache-tomcat-9.0.55` is the path of the tomcat which you copied earlier.

```text
export CATALINA_HOME=/opt/apache-tomcat-9.0.55
```
6. Save the `~/.bashrc` file and close gedit window.

&nbsp;

### Run Tomcat 9

1. You can run Tomcat 9 by running the following command.
   
```console
sh startup.sh
```

2. Now you can open up a web browser and navigate to the tomcat URL. If you can see the Tomcat initial page. Then you have successfully installed and the tomcat 9 server is up and running.

```text
http://localhost:8080/
```

3. If you want to shut down the Tomcat server, you can do so by running the following command.

```console
sh shutdown.sh
```
&nbsp;
Below you can find a screenshot of my terminal.

![Screenshot of the terminal](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ybgmr0ntn6hlcifc6hs8.png)
Lab 9 - GitHub Actions Workflow
Tags: opensource
Published: 2021-11-18 20:14:29

## Intro
For my ninth lab, I have to set up GitHub Action for my text ssg project. Then pick another student that has GitHub Actions setup and create a PR to his repo.
In my previous I had a bit of experience with GitHub Action, I had a chance to set up with my mentor a GitHub Action to enable e2e testing with Cypress on the new build application when a PR is created, to have continuous integration. 


## Setup GitHub Action
First of all, I create a folder called `.github/workflows`, this folder contains the file for setup for GitHub Action.

I created a file called `ci_workflow.yml` and put
```yml
name: CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:

    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [16.x]

    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v2
      with:
        node-version: ${{ matrix.node-version }}
        cache: 'npm'
    - name: npm install and test
      run: |
        npm install
        npm run test-silent
```
To make it simple, this file means, on push to main or create PR to be pushed to main will run this workflow.
The job of this workflow is to run a node-version 16.x on a ubuntu-latest system, and install all my application dependencies and run a test. 
If test fails it will return -1, if pass it will return 0.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gyoiz0nj3n9brggwzs6m.png)

## Add more test cases to another student repo

I pick Andre [repo](https://github.com/AndreWillomitzer/textToHTML_V2), I created an issue stating, to separate generate HTML into a function, then add test case for that function.
After finishing my fix. I created a PR, I see that the workflow Andre setup is working correctly.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0cqovdmoth1rtn2q60px.png)

## Conclusion
GitHub action is a powerful tool, it enables developers to shift some manual work into automation. Yet I still have a lot to learn of GitHub Actions.
The JavaScript event loop execution order, summarized in a simple manner
Tags: javascript, webdev, beginners, programming
Published: 2021-11-18 19:50:08

## The simplified order
1. Everything in sync
2. Microtask queue
3. Task queue

## Real-world examples
### Tasks
`setTimeout`, `setInterval`, `setImmediate`, ...

### Microtasks
Promises, `queueMicrotask`, `MutationObserver`, ...

## Everything combined
```javascript
// Schedules a new microtask
queueMicrotask(() => console.log("microtask"));

// Schedules a new task
setTimeout(() => console.log("task"), 0);

console.log("main");
// Output order: main, microtask, task
```

*Please note that this describes a really, really simplified perfect-world case. If you would like to find out more, I can highly recommend [Jake Archibald's blog post](https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/) on this topic.*
Welcome to DL Merlin Voice Productions
Tags: dlmerlinnarration
Published: 2021-11-18 19:29:33

The world is a big place and I love to explore it. From my years in the  Air Force as a jet mechanic to my years in the classroom shaping young minds, I have continued to add to my treasure trove of stories of adventures. As I pass my own stories along, I would love to tell your story, whether it’s a few words or a manuscript, let me bring the magic to your story. ~D  DL Merlin <a href="https://dlmerlin.com"> dlmerlin Voice Over </a>
Legacy Integration Server Pre-Upgrade Analyzer
Tags: webmethods, integration, esb, upgrade
Published: 2021-11-23 13:33:58

---
title: Legacy Integration Server Pre-Upgrade Analyzer
published: true
date: 2021-11-18 19:24:09 UTC
tags: #webmethods,#integration, #esb, #upgrade
canonical_url: https://tech.forums.softwareag.com/t/legacy-integration-server-pre-upgrade-analyzer/246055
---

The Pre-Upgrade Analyzer analyzes your old Integration Server installation, compares it to the new release, and generates reports that list the following:

- Custom services using built-in services that were deprecated, removed, or changed in a later release. Full details about each deprecation, removal, or change is available in the Integration Server readme.
- Custom packages using custom services or documents that do not exist.
- Custom assets that are not used by any of your existing integrations.
- Custom services using Integration Server debug services (pub.flow:debugLog, pub.flow:savePipelineToFile).

**Supported Product Versions**

Integration Server - 6.0 → 10.7

**Supported Operating Systems**

AIX, Linux ,macOS, Solaris, Windows

**Download and Installation**

To use the analyzer:

Follow the instructions in Upgrading Software AG Products to install the new Integration Server and prepare the old installation.  
If you install the new Integration Server on a new machine, preparation will include copying ZIP files containing the packages from the old installation to the new machine.  
Download the analyzer into any directory on that machine and unzip the archive.  
Go to the wxanalyze-project.properties file, open it in a text editor, and set the user-defined properties.  
Make sure you have write access to the temp directory set on the wx.analyzer.tempdir property (by default, ./temp/).  
Go to the directory into which you unzipped the archive and run the command bat [wxanalyze.log].  
By default, the Pre-Upgrade Analyzer outputs activity messages to the console. The wxanalyze.log options lets you persist the activity messages instead.

By default, the analyzer logs activity messages at the INFO log level to standard out/console. If the analyzer experiences any failures, it logs entries starting with WARN or ERROR. If you want to change the log level to DEBUG or TRACE, create a new file named log4j.properties in the same directory as the run.bat script and insert the content below.

```
log4j.logger.com.softwareag.wx_analyze={DEBUG | TRACE}, analyzer
log4j_appender_analyzer=org.apache.log4j.ConsoleAppender
log4j_appender_analyzer.layout=org.apache.log4j.PatternLayout
log4j_appender_analyzer.layout.ConversionPattern=%-5p $d{dd-MMM-yyyy HH:mm:ss} - %c{1}: %m%n

```

**Remark:** The analyzer might not support analysis of very large installations.

**Disclaimer**

This tool is provided by Software AG as-is and without warranty or support. It does not constitute part of the Software AG product suite.  
[Pre-UpgradeAnalyzer\_2021-02-05.zip (21.7 MB)](https://tech.forums.softwareag.com/uploads/short-url/dPHUhmikjz8Zgs2UOdHbnerUCKV.zip)


[Read full topic](https://tech.forums.softwareag.com/t/legacy-integration-server-pre-upgrade-analyzer/246055)
Learning Workflows: Using the Text Card to Work with Strings
Tags: nocode, workflows
Published: 2022-02-16 23:11:50

---
title: Learning Workflows: Using the Text Card to Work with Strings
published: true
date: 2021-11-18 19:13:18 UTC
tags: NoCode,Workflows
canonical_url: https://maxkatz.org/2021/11/18/learning-workflows-using-the-text-card-to-work-with-strings/
---

This video shows how use the Workflows Text card to manipulate text and strings in a workflow.

[![Using Text card to manipulate text and strings](https://katzmax.files.wordpress.com/2021/11/learningworkflows_using_text_card.png?w=1024)](https://katzmax.files.wordpress.com/2021/11/learningworkflows_using_text_card.png)

{% youtube K0CvLcxWXLU %}


Want to learn more? Watch other videos in the [Learning Workflows series](https://www.youtube.com/playlist?list=PLSAWywyhniCM6CKkp5vIiD0-pxSbdX71y).
Motivation
Tags: beginners
Published: 2021-11-18 19:05:38

Well...I am 37 years old dude, who wants to change is life, i started to learn html with Brad Traversy html course(By the way very explicit), well i know i have a long road to get to a level were i can feel pro efficient...at this moment i  feel a bit lost and de-motivated lol i work by shifts in a factory, night shift is the worst to learn..i would like to know your advice for a total beginner, in motivation in pathways (Front end dev is my Goal) to achieve faster my goal; if anyone also want gives mentorship that would be great to not loose time in trial and error...Thank you very much for your content!
Contribution to course curriculum
Tags: opensource
Published: 2021-11-18 18:07:28

## Introduction

Finally, I made it through Hacktoberfest! And, I also got myself a fancy new T-shirt! Celebration aside, I still have a lot of work to do. Working in open-source means you always have to be ready to look for new issues, find ways to contribute to the community of developers, and always set yourself up for new challenges. And this week, I had a chance to contribute to my school's course curriculum.

## The project

The IPC144 course curriculum renewal is a project that aims to update the original course note to a brand new one using Docusaurus. As mentioned before in [one](https://dev.to/mqnguyen/prototype-markdown-and-static-assets-support-for-ssg-547e) of my blogs, Docusaurus is a static-site generator for building, deploying, and maintaining documentation websites. Most of the notes have already been changed to use Docusaurus, but the project needs contributions to review each converted section, add new features, or fix existing bugs. 

## The issue

After looking at all the available issues, I decided to go with [adding static analysis tooling](https://github.com/Seneca-ICTOER/IPC144/issues/24), specifically, installing and configuring Prettier as the source code formatter.

## Working on the issue

Working on the issue was not too difficult, and I already have a different [blog](https://dev.to/mqnguyen/static-analysis-tooling-n55) where I walk through how I setup Prettier, but here is an overview of what I did:

- Installed Prettier using [npm](https://www.npmjs.com/package/prettier).
- Added a `.prettierrc` file to configure all the options and a `.prettierignore` file to skip the ones that don't need formatting.
- Added the necessary scripts to run Prettier in `package.json`.

## Submitting the PR

Once I was satisfied with my work, I created a [pull request](https://github.com/Seneca-ICTOER/IPC144/pull/50) and explained what I had done. Getting in touch with the project's maintainers was quick, as I could reach them through Slack. However, during the reviewing process, my professor (one of the maintainers) noticed an issue when Prettier formatted the Markdown files. Per my professor's request, I decided to alert other students working on auditing and fixing the documentation about this problem by filing a new issue. I made sure to write down a detailed explanation of how and why it happened while providing Prettier configurations so that other contributors could test their changes or replicate the issue if needed.

## Conclusion

At the moment, the pull request was waiting to be merged. I will constantly keep track of any notifications and add changes if needed.

Happy coding! 💻
Create a PR to automatically fix code linting errors
Tags: actionshackathon21, github, opensource, javascript
Published: 2021-11-18 18:36:51

---
title: Create a PR to automatically fix code linting errors
published: true
description: Automatically improve your code style with this GibHub Workflow.
tags: actionshackathon21, github, opensource, javascript
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t5y68o08rpghly3s81zd.jpg
---

This Github workflow aims to automatically fix as many lint errors as possible.

In particular, it executes eslint with `--fix` argument, so that we report and fix lint errors. Note that not all lint errors can be fixed automatically.

If any errors were fixed by `eslint`, a new PR is created including the changes made. The base is always the current branch while the assignee is the PR author. 

This allows the PR author to review the changes and if needed merge them into the initial PR.

On top of that, the PR is marked with the label `autofix`.

### My Workflow

The repository can be found [here](https://github.com/softius/actions-auto-improve-code-style/).

On purpose there is a lint error in `index.js` and you can review the PR created [here](https://github.com/softius/actions-auto-improve-code-style/pull/5) to fix this. .

### Submission Category: 

Maintainer Must-Haves

### Yaml File or Link to Code

{% github https://github.com/softius/actions-auto-improve-code-style/ %}

### Additional Resources / Info

While this workflow uses eslint, the same approach can be used with phpcs/phpcbf and other linters.

To customize the workflow further, you can refer to this [action](https://github.com/peter-evans/create-pull-request).

Make sure to follow me on [dev.to](https://dev.to/iacons), [Medium](https://medium.com/@softius) or [Twitter](https://twitter.com/iacons) to read more about PHP, Docker and other dev topics.

Photo by [Ken Suarez](https://unsplash.com/@kensuarez?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/s/photos/fix?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)
React SketchBoard DevLog #1 - Drawing with mouse, color and width selection and panning.
Tags: react, javascript, typescript, webdev
Published: 2021-11-18 18:01:11

Recently I started developing a react library for drawing in a browser. It turned out that it's not as trivial as it seemed and there is a lot of cool stuff and interesting problems there. So I decided to do a DevLog and share those thing with you.

I hope you'll enjoy!

{% youtube aoPAq-hC0J8 %}
Beyond Compliance: Fable’s Mission to Improve Digital Accessibility
Tags: devops, techtalks, inclusion, podcast
Published: 2021-11-18 17:58:08

{% spotify spotify:episode:7IQ1IE06x2p2X65atJ9NJx %}

It's time we recognize that the way we build digital products is broken. That's because the products we use today represent the people who build them more than the people who use them.

There is a digital divide between the experiences of people with disabilities and people who are able-bodied. Bridging this divide is about more than compliance or checking a box.

Fable is helping companies practice accessibility at scale with the goal of operationalizing accessibility in the same way we already do for things like DesignOps and DevOps.

Listen as Fable's CEO and Co-founder, Alwar Pillai, and Fable's Engineering Manager, Perry Trinier, talk about the importance of inclusive design, the need for digital accessibility and how to integrate accessibility into the development process.

## Episode Highlights Include:
* Fable's founding story and mission
* The need and importance of inclusive design
* How engineering orgs can improve accessibility
* Making your tech stack more accessible
* Why everyone benefits from inclusive design

## Check out the full episode on our YouTube channel:
{% youtube CWxatwjSvqs %}

## Join the Dev Interrupted Community
With over 2000 members, the Dev Interrupted Discord Community is the best place for Engineering Leaders to engage in daily conversation. No sales people allowed. [Join the community >>](https://discord.com/invite/devinterrupted)

![https://discord.com/invite/devinterrupted](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w088uiz5p6ekz7arxfvi.png)

***Full transcription available at [DevInterrupted.com](https://devinterrupted.com/podcast/beyond-compliance-fables-mission-to-improve-digital-accessibility/)***
Mesmerizing animation using only CSS rotations 🧘‍♀️
Tags: css, html, webdev, watercooler
Published: 2021-11-18 17:30:35

I created an oddly satisfying CSS animation on codepen, using only rotations. It turns out it went a little bit viral on Reddit so I decided to share how I did it here :)


{% codepen https://codepen.io/TheAngularGuy/pen/oNedJQW editors=1100 default-tab=result %}


## Step 1
Let's skip the intro that no one ever read and jump right into it. The first step is to create a yin yang using CSS. 
Because a picture is worth a thousand words, take a look at the illustration below:
![animation 1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r32rpvjsa5a3ab7kpj5m.gif)

We have the main circle which is a `div` and the two small circles are the `::before` and `::after` pseudo-elements of the `div`. The three elements have a `border-radius` of 50% to be circles.

The main div has a `background-image` set to this `linear-gradient`: `(to left, #fff, #fff 50%, #000 50%, #000)`. With this, the div should be half white half black.

For the two other circles, they have a big `border-width`, and their `border-color` is the opposite of their background color (eg. white circle with black border). That way we don't need too many html elements and it's easier to place them in the center (one on top of the other).


> With this, it could be a good exercise to try to do the rest of the animation on your own. You can come back here to compare the implementations ;)


## Step 2
Next, we need a container `div` (also half black half white) and another yin yang (the two should be placed one on top of the other). Have a look:
![animation 2](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zhu59q0iymdnopzq3gzk.gif)


## Step 3
At this point we are almost done, all we have to do is to animate the yin yangs in the opposite direction of the container `div`. For that we can use the `animation-direction` CSS property and set it to `reverse`.

The CSS animation looks like this:
```css
@keyframes roll {
  from {
    transform:rotate(0deg);
  }
  to {
    transform:rotate(-360deg);
  }
}
```

![animation 3](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y4xyi1iz7wdglpu5lxge.gif)


Here is the final code:
{% codepen https://codepen.io/TheAngularGuy/pen/oNedJQW editors=1100 default-tab=css %}

<br>
That's it for this post. I hope you liked it. If you did, please share it with your friends & colleagues and follow me on Twitter at [@theAngularGuy](https://twitter.com/TheAngularGuy) where I tweet about web development and computer science.

Have a nice day!

---

### What to read next?


{% link https://dev.to/mustapha/i-made-a-working-gameboy-css-art-try-it-out-4m1j %}
Spark Big Data Processing - Common Problems and Mitigation
Tags: tutorial, help
Published: 2021-11-18 17:26:37

Based on my experiences, I have started writing a blog series on common spark performance problems. The series will cover 5 most common spark performance problem and their mitigation strategies.

The initial 3 blogs are up and live with other blogs in pipeline. If someone want's to understand how we can process TB's of data efficiently using spark. Please do checkout the blog series. I am pretty much sure you will find some interesting concepts.

Link to the blog series👇.

https://madityasahu.medium.com/5-most-common-spark-performance-problems-9924b863421f
1 line of code: How to get the sum of an array of numbers
Tags: javascript, webdev, performance, codequality
Published: 2021-11-18 17:17:14

```javascript
const sum = arr => arr.reduce((a, b) => a + b, 0);
```
Returns the sum of all items in a numerical array. 
Beware of JavaScripts Automatic Type Conversion if your `Array` contains something else than `Numbers`.
---

## The repository & npm package

You can find the all the utility functions from this series at [github.com/martinkr/onelinecode](https://github.com/martinkr/onelinecode)
The library is also published to [npm as @onelinecode](https://www.npmjs.com/package/@onelinecode/onelinecode) for your convenience.

The code and the npm package will be updated every time I publish a new article.

---
Follow me on [Twitter: @martinkr](http://twitter.com/_martinkr) and consider to [buy me a coffee](https://www.buymeacoffee.com/martinkr)

Photo by [zoo_monkey](https://unsplash.com/@zoo_monkey) on [Unsplash](https://unsplash.com/s/photos/fuji)

---