teleren/devto huggingface dataset:
Find files by name in Linux
Tags: linux, beginners, cloud, cloudskills
Published: 2022-12-17 12:09:18

{% embed https://www.howtouselinux.com/post/find-file-by-name-in-linux %}
Linux find command is a powerful tool that can be used to locate and manage files and directories based on a wide range of search criteria. 

This means that we can provide it with a set of directories (or files) or filters, and it will apply appropriate actions to them and also to any directories and files within them.

In this post, we will use the find command to find files in a directory tree by file name. 

The syntax is very straightforward. Give the name of the directory tree to search through, and use the `-name' option followed by the name you want to find.

Here are more examples of [finding files by file name in Linux](https://www.howtouselinux.com/post/find-file-by-name-in-linux).

To list all files on the system whose file name is top, type:

    $ find / -name top

This command will search all directories on the system to which you have access; if you don't have execute permission for a directory, find will report that permission is denied to search the directory.

The -name option is case sensitive; use the similar `-iname' option to find name regardless of case.

To list all files on the system whose file name is  top, regardless of case, type:

    $ find / -iname top

This command would match any files whose name consisted of the letters  top, regardless of case -- including  Top,  top, and TOP.

Use file expansion characters to find files whose names match a pattern. Give these file name patterns between single quotes.

To list all files on the system whose names begin with the characters top, type:

    $ find / -name 'top*' 

To list all files whose names begin with the three characters  top followed by exactly three more characters, type:

    $ find / -name 'top???' 

To list all files whose names begin with the three characters top followed by five or more characters, type:

    $ find / -name 'top?????*' 

To list all files in your home directory tree that end in  .tex', regardless of case, type:

    $ find ~ -iname '*.tex' 

To list all files in the /usr/share' directory tree with the text farm' somewhere in their name, type:

    $ find /usr/share -name '*farm*' 

Use -regex in place of -name to search for files whose names match a [regular expression](https://www.redhat.com/sysadmin/getting-started-regular-expressions-example), or a pattern describing a set of strings 

To list all files in the current directory tree whose names have either the string net or comm' anywhere in their file names, type:

    $ find . -regex '.*\(net\|comm\).*' 

NOTE: The `-regex' option matches the whole path name, relative to the directory tree you specify, and not just file names.
Configure seu ambiente java em poucos passos com sdkman
Tags: java, tutorial, productivity
Published: 2022-12-17 12:08:42

Todo Dev java já passou pela experiência de configurar seu ambiente de trabalho mexendo em variável de ambiente e outras configurações que os frameworks e as ferramentas necessitam. Pensando neste cenário e nos ambientes na nuvem, a ferramenta [sdkman](https://sdkman.io/) foi criada para facilitar estas configurações.

## Instalação 

A instalação neste guia é feita no ambiente Linux usando a distribuição ubuntu para instalar em outros ambientes recomendo este guia de instalação [guia de instalação](https://sdkman.io/install) 

Abra o terminal e execute os comandos abaixo:
```sh
curl -s "https://get.sdkman.io" | bash
```

Depois de instalado, será necessário executar as instruções abaixo para tornar as novas alterações válidas sem sair do terminal e verificar a versão da ferramenta:
```sh
source "/home/robson/.sdkman/bin/sdkman-init.sh"
sdk version
```

## Listando as versões do java

Depois de executar os passos anteriores, será possível conferir a lista de versões do java disponíveis para instalação, podemos executar o seguinte comando:
```sh
sdk list java
```

Na saída do terminal será listada todas as versões do java disponível no sdkman:
![Terminal com tema escuro listando todas as versões do java disponiveis no sdkman](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e01zpknbxyw5uysk5h3j.JPG)


## Instalando o Java

Escolha a versão que deseja instalar, irei instalar as versões 17 e 19 distribuídas pelos projetos [GraalVM](https://www.graalvm.org/) e [Amazon Correto](https://aws.amazon.com/corretto/?filtered-posts.sort-by=item.additionalFields.createdDate&filtered-posts.sort-order=desc) .

Utilize o **Identifier** da versão escolhida:
```sh
sdk install java 17.0.5-amzn
sdk install java 22.3.r19-grl
```

Para conferir se o java está disponível na versão escolhida, executamos o comando:
```sh
java -version 
```

**Obs:** A versão atual em seu ambiente será a última instalada.
 
## Alternando entre as versões

Podemos alternar entre as versões em nosso ambiente, primeiro iremos verificar todas as versões instaladas:

```sh
ls -l ~/.sdkman/candidates/java
```

Para alterar entre as versões basta utilizar a instrução abaixo mais o identificador da versão: 
```
sdk use java 17.0.5-amzn
```

## Conclusão
Neste ponto seu ambiente com múltiplas versões do java está disponível e prontinho para você escrever os seus códigos. Uma das vantagens de utiliza esta ferramenta é a flexibilidade de mudar seu ambiente de acordo com sua necessidade. Na documentação do projeto é possível encontrar diversos SDKs. Espero que esta publicação tenha lhe ajudado a melhorar seu ambiente de desenvolvimento Java.

## Referências
1. https://sdkman.io/
2. https://www.graalvm.org/
3. https://aws.amazon.com/corretto/?filtered-posts.sort-by=item.additionalFields.createdDate&filtered-posts.sort-order=desc
✨MiroTalk - WebRTC - C2C - Simple, Secure, Fast, Real-Time, Cam2Cam Video Conferences
Tags: javascript, opensource, webdev, news
Published: 2022-12-17 11:53:38

**Demo**: [https://c2c.mirotalk.com](https://c2c.mirotalk.com)
**GitHub**: [https://github.com/miroslavpejic85/mirotalkc2c](https://github.com/miroslavpejic85/mirotalkc2c)
I created SaaS lead generation as an open-source project.
Tags: opensource, laravel, vue, webdev
Published: 2022-12-17 11:49:27

If you are using Snov.io or Hunter.io in your own company, you may want to switch to a better and 100% free tool. Decentralization!

Open-Source LeadBrowser has been launched: https://github.com/LeadBrowser/app

How to use LeadBrowser?
1) You can go to the "Database" tab on the search page and select/buy a ready-made result that someone else has already found.
2) You can go to the "Live Search" tab on the search page and start searching for new companies, by phrases and specific parameters.

I am a fan of decentralization, so the whole thing will be kept open-source, and the only form of support for our project will be, by: https://opencollective.com/leadbrowser

Video: https://www.youtube.com/watch?

PS. The site leadbrowser.co is only, a demo. There you cannot search for new data.
AnyObject, Any, any: Any.
Tags: swift, programming, ios, mobile
Published: 2022-12-17 11:35:23

Any can represent an instance of any type at all, including function types:
```swift
let arrayOfAny: [Any] = [
    0,
    "string",
    { (message: String) -> Void in print(message) }
]
```
To me, the same rules apply to **Any** compared to AnyObject meaning that you should always seek to use concrete types instead. **Any** is more flexible by allowing you to cast instances of any type, making code harder to predict compared to using concrete types.

Next Article: [any](https://dev.to/sergeyleschev/anyobject-any-any-any-fa1)

---

**Contacts**
I have a clear focus on time-to-market and don't prioritize technical debt. And I took part in the Pre-Sale/RFX activity as a System Architect, assessment efforts for Mobile (iOS-Swift, Android-Kotlin), Frontend (React-TypeScript) and Backend (NodeJS-.NET-PHP-Kafka-SQL-NoSQL). And I also formed the work of Pre-Sale as a CTO from Opportunity to Proposal via knowledge transfer to Successful Delivery.

🛩️ #startups #management #cto #swift #typescript #database
📧 Email: sergey.leschev@gmail.com
👋 LinkedIn: https://linkedin.com/in/sergeyleschev/
👋 LeetCode: https://leetcode.com/sergeyleschev/
👋 Twitter: https://twitter.com/sergeyleschev
👋 Github: https://github.com/sergeyleschev
🌎 Website: https://sergeyleschev.github.io
🌎 Reddit: https://reddit.com/user/sergeyleschev
🌎 Quora: https://quora.com/sergey-leschev
🌎 Medium: https://medium.com/@sergeyleschev
🖨️ PDF Design Patterns: [Download](https://sergeyleschev.github.io/sergeyleschev-design-patterns.pdf)
10 Essential Developer Tools for Productivity
Tags: webdev, beginners, programming, productivity
Published: 2022-12-17 11:24:01

As a developer, it's important to have a set of tools that help you work efficiently and stay productive. Here are 10 essential tools that every developer should have in their toolkit:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t1ikhmhjcwgc5tw5d4pj.png)

**Text Editor**: A good text editor is essential for writing code and editing files. Some popular options include Sublime Text, Atom, and Visual Studio Code.

**Integrated Development Environment (IDE)**: An IDE is a software application that provides a comprehensive set of tools for software development. Some popular IDEs include Eclipse, IntelliJ IDEA, and Visual Studio.

**Version Control System (VCS)**: A VCS allows developers to track changes to their codebase and collaborate with other team members. Some popular VCSs include Git, Mercurial, and Subversion.

**Debugger**: A debugger is a tool that helps developers find and fix errors in their code. Many IDEs come with built-in debuggers, but standalone options such as GDB and LLDB are also popular.

**Code Profiler**: A code profiler helps developers identify performance issues and optimize their code. Some popular profilers include Valgrind and Xdebug.

Task Manager: A task manager helps developers keep track of their to-do list and prioritize their work. Options include Trello, Asana, and [Notion](https://tecroxy.com/medium-alternatives).

**Documentation Tool**: A documentation tool helps developers create and maintain documentation for their projects. Some popular options include Doxygen, Sphinx, and JSDoc.

**Test Runner**: A test runner helps developers automate and manage their testing process. Some popular test runners include JUnit, NUnit, and Mocha.

**Build Tool**: A build tool helps developers automate the process of building, testing, and deploying their code. Some popular build tools include Gradle, Maven, and Ant.

**Collaboration Tool**: A collaboration tool helps developers communicate and collaborate with team members and stakeholders. Some popular options include [Airtable](https://tecroxy.com/open-source-airtable-alternatives), Microsoft Teams, and Google Meet.

Having a strong set of developer tools is essential for productivity. By using the right tools for the job, you can save time, improve your workflow, and deliver high-quality software.
Libraries, Frameworks, Packages.
Tags: swift, programming, ios, mobile
Published: 2022-12-17 11:22:57

In this article, we will talk about options to support modular codebase in iOS Swift-based project with:

- [Libraries](https://dev.to/sergeyleschev/libraries-frameworks-packages-libraries-3d7f).
- [Frameworks](https://dev.to/sergeyleschev/libraries-frameworks-packages-frameworks-2l5j) (including XCFramework bundle type).
- [Swift packages](https://dev.to/sergeyleschev/libraries-frameworks-packages-swift-package-m73).

The concept of code organization and access control in Swift based on **Modules**. The module represented as a single unit of code distribution. Frameworks, libraries, swift packages and build targets treated in Xcode as a separate module. Each with its namespace and access controls. Module, usually, solves a particular problem. It can be reused in different situations.

**Bundle** is a file directory with subdirectories inside. On iOS, bundles serve to conveniently ship related files together in one package — for instance, images, nibs, or compiled code. The system treats it as one file and you can access bundle resources without knowing its internal structure. Dylib that cannot be linked, only opened in runtime with dlopen()

**Source file** is single Swift source code file within a module.

**Executable** — main binary for application.

**Object file** — An object file is a file containing object code, meaning relocatable format machine code that is usually not directly executable. An object file may also work like a shared library.

**Object code** — In computing, object code or object module is the product of a compiler. In a general sense object code is a sequence of statements or instructions in a computer language, usually a machine code language (i.e., binary or an intermediate language such as register transfer language).

Next Article: [Libraries](https://dev.to/sergeyleschev/libraries-frameworks-packages-libraries-3d7f).

---

**Contacts**
I have a clear focus on time-to-market and don't prioritize technical debt. And I took part in the Pre-Sale/RFX activity as a System Architect, assessment efforts for Mobile (iOS-Swift, Android-Kotlin), Frontend (React-TypeScript) and Backend (NodeJS-.NET-PHP-Kafka-SQL-NoSQL). And I also formed the work of Pre-Sale as a CTO from Opportunity to Proposal via knowledge transfer to Successful Delivery.

🛩️ #startups #management #cto #swift #typescript #database
📧 Email: sergey.leschev@gmail.com
👋 LinkedIn: https://linkedin.com/in/sergeyleschev/
👋 LeetCode: https://leetcode.com/sergeyleschev/
👋 Twitter: https://twitter.com/sergeyleschev
👋 Github: https://github.com/sergeyleschev
🌎 Website: https://sergeyleschev.github.io
🌎 Reddit: https://reddit.com/user/sergeyleschev
🌎 Quora: https://quora.com/sergey-leschev
🌎 Medium: https://medium.com/@sergeyleschev
🖨️ PDF Design Patterns: [Download](https://sergeyleschev.github.io/sergeyleschev-design-patterns.pdf)
🤓 The Many Facets of Developers' Personalities 🧑‍💼
Tags: webdev, programming
Published: 2022-12-17 11:15:37

As with any profession, developers come in all shapes and sizes, with a wide range of personality types 💁‍♀️💁‍♂️. While it's not fair to stereotype or make broad generalizations about any group of people 🙅‍♀️🙅‍♂️, it can be helpful to understand the different personalities that developers might have and how they might approach their work 🤔. Here are a few common personality types that you might encounter among developers:

1. The perfectionist 🧐: These developers take great pride in their work 💪 and are always striving to produce the best possible code 💻. They are detail-oriented 🧐 and may spend a lot of time fine-tuning their code to ensure that it meets their high standards 🔍. Perfectionist developers might have a background in computer science or engineering 🤓.

2. The creative problem-solver 🤯: These developers enjoy tackling complex problems 🤔 and coming up with innovative solutions 💡. They are often drawn to projects that involve a lot of brainstorming 🤔 and creativity 🎨. Creative problem-solvers might have a background in design or liberal arts 🎓.

3. The team player 🤝: These developers are great collaborators 🤝 and enjoy working with others to get things done 💪. They are often willing to lend a helping hand 🤝 to their colleagues and are good at coordinating efforts within a team 💪. Team players might have a background in project management or communication 🗣.

4. The independent contributor 🙌: These developers prefer to work on their own 🙌 and may be more comfortable taking on solo projects 🤷‍♀️🤷‍♂️. They may prefer to work at their own pace 💆‍♀️💆‍♂️ and may be less interested in team-oriented projects 🤝. Independent contributors might have a background in entrepreneurship or self-study 📚.

5. The mentor 🧑‍🏫: These developers are experienced and knowledgeable 🧑‍🏫, and they enjoy sharing their expertise with others 🤓. They may be drawn to mentorship or teaching roles 🧑‍🏫, or they may simply enjoy helping their colleagues learn and grow 🌱. Mentors might have a background in education or career development 🧑‍🏫.

Ultimately, no one personality type is better than any other 🙅‍♀️🙅‍♂️, and it's important to recognize that developers (like all people) are complex and multifaceted 🤯. By understanding the different personalities that developers might have 🤔, however, you can better communicate and collaborate with them 🤝, and find the best ways to work together effectively 💪.
Nanotechnology
Published: 2022-12-15 14:08:13

Nanotechnology is the term given to those areas of science and engineering where phenomena that take place at dimensions in the nanometer scale are utilized in the design, characterization, production and application of materials, structures, devices and systems.

There are different opinions around nanotechnology where scientists and engineers believe nanotechnology can be used to benefit human health now and in the future through applications such as better filters for improving water purification, more effective methods of delivering drugs in medicine and new ways of repairing damaged tissues and organs.

However, Improved control over materials does not just mean better products. As with any new technology, there are concerns about unknown effects – and perhaps some extra ones, simply because nanotechnologies are so incredibly small.
This is not just because they seem insidious due to their invisibility. The properties of materials are influenced by different effects at very small scales, where quantum mechanical laws trump classical physics. And biological systems, in particular, may respond to nanomaterials in ways we don’t like.

Many areas in which nanotechnology can be applied and be beneficial has been identified, such as

- Future Transportation Benefits
- Environmental Remediation
- Energy Applications
- Medical and Healthcare Applications 
- Electronics and IT Applications
- Everyday Materials and Processes

Nanotechnology will help improve in different areas as mentioned above, Although it has some pros and cons. Some of the pros are:  It offers the potential for new and faster kinds of computers, more efficient power sources and life-saving medical treatments, there are Invisible particles that fight cancer cells, faster microprocessors that consume less energy, batteries that last 10 times longer or solar panels that yield twice as much energy. But the disadvantage of it is that those Nanoparticles can get into the body through the skin, lungs and digestive system. This may help create 'free radicals' which can cause cell damage and damage to the DNA.

To sum up, In the future, nanotechnology might help us make electrical lines, solar cells, and biofuels more efficient, and make nuclear reactors safer. Nanotechnology might lead to huge advances in health care, improving methods for detecting and treating diseases like cancer.

While there are many nanotech uses, three areas of nanotech are paving the way to our future: Materials Science, Nanomedicine and Device Engineering.
How to Get Started in Software Development in 2023
Tags: beginners, webdev, softwaredevelopment, programming
Published: 2022-12-17 10:59:18

Software development is a field that is constantly evolving, and it can be overwhelming to know where to start. However, with the right knowledge and resources, anyone can learn how to become a software developer. Here are some steps you can follow to get started in software development in 2023:

Choose a programming language: The first step in getting started in software development is to choose a programming language to learn. There are many programming languages to choose from, and the best one for you will depend on your goals and interests. Some popular programming languages include Python, Java, and C++.

Learn the basics: Once you have chosen a programming language, it's time to start learning the basics. This will typically involve learning about programming concepts such as variables, loops, and data types. You can find many resources online to help you learn, including tutorials, online courses, and books.

Practice, practice, practice: The best way to become a proficient software developer is to practice coding as much as possible. You can do this by working through coding challenges and exercises, and by building small projects of your own.

Join a community: As you start to learn more about software development, it can be helpful to join a community of other developers. This can be a great way to get feedback on your work, ask questions, and find resources to help you learn. You can find communities online or in person through meetups or hackathons.

Build a portfolio: As you start to build your skills and experience, it can be helpful to create a portfolio of your work. This can include projects you have completed, code samples, and any relevant coursework. A portfolio can be a valuable asset when you are looking for job opportunities or trying to showcase your skills to potential employers.

In conclusion, getting started in software development in 2023 is a process that involves choosing a programming language, learning the basics, practicing your skills, joining a community, and building a portfolio. With the right resources and dedication, anyone can learn how to become a software developer.
Asynchronous JavaScript: An Introduction to Handling Async Tasks
Tags: javascript, tutorial, beginners, programming
Published: 2022-12-17 10:57:43

_Originally Published on [Octobreak.me](https://octobreak.me/asynchronous-javascript-an-introduction-to-handling-async-tasks/)_

Asynchronous programming is a key concept in JavaScript that allows your code to run without being blocked by long-running tasks. This is especially important when working with external APIs or databases, as these can take some time to respond. Without asynchronous programming, your code would have to wait for a response before moving on to the next task, which could lead to slow and unresponsive applications.

There are several ways to handle asynchronous tasks in JavaScript, including using the event loop, promises, and async/await. Let's take a closer look at each of these approaches.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gjti6ojg66373mh333tq.jpg)

The event loop is a mechanism in JavaScript that executes code asynchronously. It works by adding tasks to a queue and processing them one by one in the order they were received. You can use the event loop to handle asynchronous tasks by using callback functions, which are functions that are called after a task is complete.

Promises are another way to handle asynchronous tasks in JavaScript. A promise is an object that represents the result of an asynchronous operation, and it can either be fulfilled (successful) or rejected (failed). You can use promises to write cleaner and more readable code by chaining asynchronous tasks together and using the then method to specify what should happen when a promise is fulfilled or rejected.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z6vfpjy3fels7wv59b33.jpg)
Async/await is a more recent addition to JavaScript that makes it easier to work with asynchronous tasks. It allows you to use the await keyword to pause the execution of your code until a promise is fulfilled or rejected. This can make your code look more like synchronous code, which can be easier to read and understand.

In summary, asynchronous programming is an important concept in JavaScript that allows you to write code that is efficient and responsive. By using the event loop, promises, or async/await, you can handle asynchronous tasks in a way that is both reliable and easy to read.