teleren/devto huggingface dataset:
Blockchain technology
Published: 2022-02-11 07:35:51

Blockchain is a distributed database that is shared among the nodes of a computer network. And its store information in digital format. The innovation with a blockchain is that it guarantees the fidelity and security of a record of data and generates trust without the need for a trusted third party.

## Blockchain vs typical database

A database usually structures its data into tables, whereas a blockchain, like its name implies, structures its data into chunks (blocks) that are strung together. This data structure inherently makes an irreversible timeline of data when implemented in a decentralized nature. When a block is filled, it is set in stone and becomes a part of this timeline. Each block in the chain is given an exact timestamp when it is added to the chain.
A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compiled into a newly formed block that will then also be added to the chain once filled.

## The most common types of blockchain

**Public blockchain**
Public blockchain allows anyone to join so they are permissionless in nature. In a public blockchain, all nodes have equal rights to access the blockchain. Public blockchains are primarily used for mining and exchanging cryptocurrency. 
Example: Bitcoin, Ethereum, Litecoin
**Private blockchain**
Private blockchains are permissioned blockchains controlled by a single organization. In a private blockchain, the central authority determines who can be a node. it operates like a public blockchain network in the sense that it uses peer-to-peer connections and decentralization, this type of blockchain is on a much smaller scale. Instead of just anyone being able to join and provide computing power, private blockchains typically are operated on a small network inside a company or organization.
Examples of private blockchains are; Multichain and Hyperledger projects (Fabric, Sawtooth), Corda, etc.
**Hybrid blockchain**
A hybrid blockchain is a combination of the private and public blockchain. It uses the features of both types of blockchains that is one can have a private permission-based system as well as a public permission-less system. A transaction in a private network of a hybrid blockchain is usually verified within that network. But users can also release it in the public blockchain to get verified. The public blockchains increase the hashing and involve more nodes for verification. This enhances the security and transparency of the blockchain network.
An example of a hybrid blockchain is Dragonchain.
Powerful E-Ink Reader
Tags: opensource, lua, tooling, github
Published: 2022-02-11 07:11:10

## [koreader](https://github.com/koreader/koreader)
<span><strong><i class="fa fa-star">Star 9.9k</i> <i class="fa fa-eye">Watch 299</i> <i class="fa fa-code-fork">Fork 971</i></strong></span>

KOReader is a document viewer primarily aimed at e-ink readers.

## Main features
- **portable**: runs on embedded devices (Cervantes, Kindle, Kobo, PocketBook, reMarkable), Android and Linux computers. Developers can run a KOReader emulator in Linux and MacOS.

- **multi-format documents**: supports fixed page formats (PDF, DjVu, CBT, CBZ) and reflowable e-book formats (EPUB, FB2, Mobi, DOC, CHM, TXT). Scanned PDF/DjVu documents can also be reflowed with the built-in K2pdfopt library.

- **full-featured reading**: multi-lingual user interface with a highly customizable reader view and many typesetting options. You can set arbitrary page margins, override line spacing and choose external fonts and styles. It has multi-lingual hyphenation dictionaries bundled into the application.

- **integrated** with calibre (search metadata, receive ebooks wirelessly, browse library via OPDS), Wallabag, Wikipedia, Google Translate and other content providers.

- **optimized for e-ink devices**: custom UI without animation, with paginated menus, adjustable text contrast, and easy zoom to fit content or page in paged media.

- **extensible**: via plugins

- **fast**: on some older devices, it has been measured to have less than half the page-turn delay as the built in reading software.

and much more: look up words with StarDict dictionaries / Wikipedia, add your own online OPDS catalogs and RSS feeds, over-the-air software updates, an FTP client, an SSH server, …

## Screenshots

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

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

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

## License
AGPL-3.0
List Of Components/Tools Used In SPFx Development
Tags: sharepoint, spfx
Published: 2022-02-11 07:09:59

SharePoint Framework is also termed as SPFx. SharePoint Framework uses a modern open-source toolchain, Node-based development, TypeScript, and so on, that are used in SharePoint on-premise and Office 365 (SharePoint Online) development.

Following is a similar image showing the comparison between server-side and modern toolchain:

We can see that as compared to previous server-side toolchains like IIS Express, NuGet packages, MS Build, C#, and so on, we will use their client-side open-source toolchain like node JS, npm packages, Gulp, Typescript, and Yeoman for the same purposes. To set up your development environment, node JS, Typescript, and an editor (like Visual Studio code) are the primary tools that need to be installed on your machine.

Here’s an explanation of the modern toolchain required for development in the SharePoint Framework.

**Node.js**
Node.js is an open-source JavaScript runtime.

- It is lightweight and efficient.
- SPFx supports the latest LTS (Long Term Support) version

**NPM**
‘NPM’ stands for the node package manager.

- Required as a centralized package registry for SPFx.
- Installs modules and dependencies.
- Packages can be installed globally (using -g) or locally. - - Locally installed packages go in the node_modules subfolder.

**Gulp**
Gulp is used to automate SPFx development and deployment tasks.
- Gulp can be used to automate repetitive build processes
- It is used as the task runner to handle build process tasks.
- Compiles SASS files to CSS
- Compiles TypeScript files to JavaScript
- Ability to compile, bundle, and copy files to deployment directories.

**Yeoman**
Yeoman is used as a SharePoint web part generator.
- Yeoman builds out the project structure required; that is, Yeoman is the scaffolding tool for modern web apps.
- Yeoman relies on NPM and Gulp.
- yo is the Yeoman command line utility allowing the creation of projects.

**Typescript**
Typescript is a strongly typed language.
- Can catch and resolve syntax errors before run time. (Typescript adds compile-time syntax and types checking to JavaScript)
- It also supports writing classes and interfaces as required.

**Visual Studio Code**
Visual Studio code can be used for working with client-side web part projects.
- Fast and lightweight IDE, which shows the file and folder structure of the project.
- Visual Studio code is not the same as Visual Studio IDE
- It is available on Windows, Linux, and Mac OS

This was the list of toolchain comparison and modern open-source toolchains, which will be used in the SharePoint Framework development.

Hope this was helpful to you!
iOS Jailbreaking: Explained
Tags: ios, security, cybersecurity
Published: 2022-02-11 07:04:44

To put it in the simplest terms, ‘Jailbreaking’ an iPhone is similar to ‘rooting’ your Android phone, but the motivations and scope of these actions are very different. In both cases, you (somewhat illegitimately) gain complete control over your phones but both actions can also render your phone vulnerable to malicious actions. The act of jailbreaking usually involves exploiting vulnerability — either in the operating system code or within the device hardware — to gain privileges as an administrative account or ‘root’ on the device.

Jailbreaking has several advantages from the end-user perspective:

- Third-party apps: Apps that are unavailable through the official App Store can be installed on jailbroken devices. This may include apps that have been banned, removed, deleted, rejected, or generally censored by the official App Store.

- Tweaks: Several unofficial tweaks and customizations are made by third-party developers, which can drastically alter the interface of your iPhone.

- Unlocking: Carrier-locked and region-locked iPhones can be unlocked and used with other carriers and in other regions.

- Privacy: Control the uploading of telemetry and usage statistics to Apple servers.

However, from a security perspective, jailbreaking can introduce some serious vulnerabilities on your iPhone:

- Piracy: The most common reason for jailbreaking iPhones is to circumvent the official App Store and install pirated apps.

- Malware: Malicious actors often install malware and tracking software on jailbroken devices.

- Worm: An insecure SSH service on jailbroken devices can allow an attacker to gain entry onto your device and compromise your device usage.

Since users with jailbroken iPhones are more vulnerable than regular iPhone users and more likely to install pirated apps, it is in Apple’s interest to proactively patch any vulnerabilities that can be used to jailbreak iPhones. Therefore, Apple actively releases various software patches for iOS to close down any and all jail-break vulnerabilities that are found. This is why most jailbreaking software ends up disabling OTA updates to ensure that users don’t accidentally install these patches released by Apple. However, if there happens to be a bootroom exploit, that is, an exploit found in the hardware of the device, it cannot be patched, unless you upgrade to a newer handset

However, if there happens to be a bootroom exploit, that is, an exploit found in the hardware of the device, it cannot be patched, unless you upgrade to a newer handset with newer hardware that does not contain the exploit. For instance, in September 2019, a bootroom exploit called checkm8[4] (pronounced: checkmate) was discovered that affected all iPhone models up to and including iPhone X.

Hope this was helpful.
CSSBattle Target#2
Tags: webdev, css, beginners, cssbattle
Published: 2022-02-11 07:02:46

Hey everyone,
 This article is over the [Target#2](https://cssbattle.dev/play/2) on [CSSBattle](https://cssbattle.dev/)

![The Target2 of CSSBattle](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jvpp3izodej0oi0ia5tb.png)


####The first approach I could come up with uses linear gradient to produce the required result.

```css
<style>
  *{background:#62374e}
body{margin:50;
background:linear-gradient(
  to right,
  #fdc57b00 50px,#62374e 50px,
  #62374e 250px,#fdc57b00 250px),
linear-gradient(
  to bottom,
  #fdc57b 50px,#62374e 50px,
  #62374e 150px,#fdc57b 150px)
```
This condenses down to **220 characters** after removing white spaces.
If you want to learn more about linear gradients, you can refer to [MDN over here.](https://developer.mozilla.org/en-US/docs/Web/CSS/gradient/linear-gradient())

####The next approach is stated below

```css
<p></p>
<p id="a">
</p><p style="right:0">
</p><p style="bottom:0"></p>
<style> 
*{margin:0;background:#62374e}
#a{right:0;bottom:0} 
p{margin:50;
width:50;height:50;
background:#fdc57b;
position:fixed
```
This one was by far, my shortest solution condensing to **192 characters.**
The code is quite self explanatory.

**Although the top solution was just 69 characters**, I wonder how they were able to do it in such small amount of code!

Comment down your way of doing the same.
Stay Tuned for daily updates regarding all the challenges on CSSBattle.


###Want to connect?
[You can connect with me here](https://linktr.ee/prakhartandon)
Linux VR Desktop
Tags: linux, opensource, tooling, haskell
Published: 2022-02-11 07:00:16

## [Simula](https://github.com/SimulaVR/Simula)
<span><strong><i class="fa fa-star">Star 29.3k</i> <i class="fa fa-eye">Watch 357</i> <i class="fa fa-code-fork">Fork 1.7k</i></strong></span>

Simula is a VR window manager for Linux that runs on top of Godot. It takes less than 1 minute to install.

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

**Compatibility**: Simula is officially compatible with SteamVR headsets equipped with Linux drivers (e.g. HTC Vive, HTC Vive Pro, & Valve Index). We have also added experimental support to OpenXR headsets that have Monado drivers (e.g. North Star, OSVR HDK, and PSVR). Some people have gotten the Oculus Rift S to run Simula via OpenHMD, though we have not officially tested this ourselves.

**Mission**: Facilitate a Linux future for VR & AR Desktop. In the short-run, this means allowing people to run 2D Linux apps with current generation headsets. In the long-run, this means allowing people to run Linux in standalone AR & VR HMDs.

**Simula One Headset**: We are also in the process of developing a (limited number of) portable VR headsets for sale which come with SimulaVR mounted on them by default.

**Origins**: Simula is a reimplementation fork of motorcar.

## Text Quality
A common objection to the viability of VR Desktop is that it exhibits poor text quality; however, with our low pass filter, Simula has taken special care to make text quality as clear as possible:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/phc1ywbn79bmeojnf8h2.gif)
The left image is a VR terminal without our filter applied; the right is the same image with our filter applied. Compared to other VR Desktops, Simula allows for significantly longer sessions without uncomfortable eye strain.

## License
MIT
A light library for pipe style programming
Tags: typescript, functional, ramda, lib
Published: 2022-02-11 06:55:44

# A light library for pipe style programming

Pipe style programming is a powerful tool for dealing with data processing.

[Ramda](https://ramdajs.com/) is the most popular library for that.

And [fp-ts](https://github.com/gcanti/fp-ts) also excels at that and provides many useful ADT(Algebraic Data Types).

However, they may also introduce other things you don't want.

## The price of Ramda

*Complex type definition.*

Due to the dynamic nature of Ramda, TypeScript needs to work very hard to describe it and end up with a complex type definition.

How many times have we needed to dig into the source type definition to find out
why does type inference not work, even knowing that the logic of the code is correct?

To me, TypeScript is more of an enemy than an assistant when I use Ramda.

Ramda type definitions are fragile for several reasons:

- `pipe` function is designed to accept data as the last argument. That makes type inference difficult, especially when combined with overloaded functions.
- Currying. You can pass arguments in any way you like in Haskell. It's sweet but makes type description difficult.
- Function overload. Almost every function in Ramda is overloaded. TypeScript has difficulty choosing the right overload in the `pipe` function.

## The price of fp-ts

fp-ts is great but introduces many functional programming concepts that many teams are unfamiliar with.

That makes team collaboration may require too much learning cost.

## pipeable-es-fns maybe another choice

[pipeable-es-fns](https://github.com/jituanlin/pipeable-es-fns) proposes another solution:

- Embrace pipe style programming.
- Simple type definition is easy to understand and debug.
- It just ports ES6+ functions to curried version, that's all.

The idea of pipeable-es-fns is to introduce minimal things for adopting pipe style programming.

Instead of selling *point free style* or *Monad* to the team, it should be easier to convince a team to use the curried ES6+ function.

### Design philosophy

pipeable-es-fns adopts a few design philosophies to make type and usage smooth:

0. Just curried the ES6+ functions and try to keep others untouched.
1. Just use the TypeScript official type definitions of ES6+ functions.
2. Just delegate the implementation to the native ES6+ functions for avoiding runtime.
3. Unlike Ramda, the pipe function accepts data as its first argument for better type inference.
4. Organize the functions in a namespace rather than function overload for better type inference.
5. Doesn't support deprecated methods intentionally.
6. Encourage to specify the optional arguments implicitly.
7. Encourage to use one function in one way only.
Read stderr from python subprocess.Popen
Tags: python
Published: 2022-02-10 21:46:10

---
canonical_url: https://waylonwalker.com/til/popen-stderr/
published: true
tags:
- python
series: til
title: Read stderr from python subprocess.Popen
---

I often run shell commands from python with Popen, but not often enough do I set up error handline for these subprocesses.  It's not too hard, but it can be a bit awkward if you don't do it enough.

## Using Popen


``` python
import subprocess from subprocess import Popen

# this will run the shell command `cat me` and capture stdout and stderr
proc = Popen(["cat", "me"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)

# this will wait for the process to finish.
proc.wait()
```

## reading from stderr

To get the stderr we must get it from the proc, read it, and decode the bystring.  Note that we can only get the stderr object once, so if you want to do more than just read it you will need to store a copy of it.

``` python
proc.stderr.read().decode()
```

## Better Exception

Now that we can read the `stderr` we can make better error tracking for the user so they can see what to do to resolve the issue rather than blindly failing.

``` python
err_message = proc.stderr.read().decode() if proc.returncode != 0:
    # the process was not successful

    if "No such file" in err_message:
        raise FileNotFoundError('No such file "me"')
```
Open Source Modern Terminal
Tags: opensource, linux, typescript, github
Published: 2022-02-11 06:47:41

## [tabby](https://github.com/Eugeny/tabby)
<span><strong><i class="fa fa-star">Star 29.3k</i> <i class="fa fa-eye">Watch 357</i> <i class="fa fa-code-fork">Fork 1.7k</i></strong></span>

Tabby (formerly Terminus) is a highly configurable terminal emulator, SSH and serial client for Windows, macOS and Linux

- Integrated SSH and Telnet client and connection manager
- Integrated serial terminal
- Theming and color schemes
- Fully configurable shortcuts and multi-chord shortcuts
- Split panes
- Remembers your tabs
- PowerShell (and PS Core), WSL, Git-Bash, Cygwin, MSYS2, Cmder and CMD support
- Direct file transfer from/to SSH sessions via Zmodem
- Full Unicode support including double-width characters
- Doesn't choke on fast-flowing outputs
- Proper shell experience on Windows including tab completion (via Clink)
- Integrated encrypted container for SSH secrets and configuration
- SSH, SFTP and Telnet client available as a web app (also self-hosted).

## What Tabby is and isn't
Tabby is an alternative to Windows' standard terminal (conhost), PowerShell ISE, PuTTY, macOS Terminal.app and iTerm

Tabby is not a new shell or a MinGW or Cygwin replacement. Neither is it lightweight - if RAM usage is of importance, consider Conemu or Alacritty

## Terminal features

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

- A V220 terminal + various extensions
- Multiple nested split panes
- Tabs on any side of the window
- Optional dockable window with a global spawn hotkey ("Quake console")
- Progress detection
- Notification on process completion
- Bracketed paste, multiline paste warnings
- Font ligatures
- Custom shell profiles
- Optional RMB paste and copy-on select (PuTTY style)

## SSH Client

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/762tn38jgzoq1xatk3jv.png)
- SSH2 client with a connection manager
- X11 and port forwarding
- Automatic jump host management
- Agent forwarding (incl. Pageant and Windows native OpenSSH Agent)
- Login scripts

## Serial Terminal
- Saved connections
- Readline input support
- Optional hex byte-by-byte input and hexdump output
- Newline conversion
- Automatic reconnection

## Portable
Tabby will run as a portable app on Windows, if you create a data folder in the same location where Tabby.exe lives.

## License
MIT
Como um usuário pode usar o conversor de pdf para jpg?
Published: 2022-02-11 06:40:23

conversor de pdf para jpg

Os usuários podem facilmente usar esta ferramenta de conversão de pdf para jpg para realizar a conversão dos arquivos pdf para o formato jpg. Este conversor de pdf para jpg é um aplicativo testado profissionalmente e ajuda todos os usuários a realizar a conversão dos arquivos pdf facilmente. Os usuários podem usar esta ferramenta de conversão de pdf para jpg em qualquer um dos sistemas operacionais Windows sem nenhum obstáculo. Abaixo estão as etapas fornecidas para usar este conversor de pdf para jpg:

1. Passo 1- Em primeiro lugar, navegue até o local onde o arquivo pdf está salvo
2. passo 2- Agora, selecione a opção jpg
3. passo 3- Clique no botão converter pdf em imagem

Esses passos podem ser seguidos por qualquer usuário sem nenhum tipo de obstáculo.

Referir:[http://www.pdfchamp.com/pdf-to-image.html
](http://www.pdfchamp.com/pdf-to-image.html)