teleren/devto huggingface dataset:
Selling my SaaS Platform
Tags: saas
Published: 2022-09-04 00:38:32

[https://presbot.com/](https://presbot.com/)


![Presbot Analytics](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bego2ni6sa2r0og3c6rc.gif)

Don’t have the time to work on it currently. Maybe someone here will find it interesting

**Tech Stack** - Django, Nginx, Mailgun, Stripe. Deployed on an AWS Lightsail instance

Pivoted from pure B2C Chatbot to a B2B/B2C lead generation focus a couple months back.

Contact [hello@presbot.com](mailto:hello@presbot.com) if you’d like to make an offer or know more
Useful Sources for Full Stack developer
Published: 2022-09-04 00:23:26

## YouTube Channels For DSA and Development

[Love Babbar](https://www.youtube.com/c/LoveBabbar1/featured)
[CodeHelp-byBabbar](https://www.youtube.com/channel/UCldyi11QYNXYXiLjVbyw5dA)
[Technical Suneja](https://www.youtube.com/c/TechnicalSunejaji/playlists)
[Fraz](https://www.youtube.com/c/FrazMohammad/videos)
[Akshay Saini](https://www.youtube.com/c/akshaymarch7/featured)
[codedamn](https://www.youtube.com/c/codedamn/videos)
[Programming with Mosh](https://www.youtube.com/c/programmingwithmosh/featured)
[Hitesh Choudhary](https://www.youtube.com/c/HiteshChoudharydotcom)

## YouTube Channels for WebSite Projects
[Code for Interview](https://www.youtube.com/channel/UCo9P-eIdR00Fn1gA_ylaHdQ)
[Sony sangha](https://www.youtube.com/c/SonnySangha/videos)
[Clever Programmer](https://www.youtube.com/c/CleverProgrammer/videos)
[JavaScript Mastery](https://www.youtube.com/c/JavaScriptMastery)
[CodeWithHarry](https://www.youtube.com/c/CodeWithHarry/featured)

## Websites for DSA and Development
[LearnCodeOnline](https://courses.learncodeonline.in/learn)


## Hekathon for Non-cs background person 
[findCoader](https://www.findcoder.io/)
[Google KickStart](https://codingcompetitions.withgoogle.com/kickstart/faq)


## English 
Writing practice with Grammarly
[grammerly](https://app.grammarly.com/ddocs/1718023769)
Daily Vocab and word by hinkhoj
[hinkhoj](https://hinkhojdictionary.com/word-of-the-day.php)

## YouTube Channels For interview prep fullstack , frontend
[RoadsideCoder](https://www.youtube.com/c/RoadsideCoder/videos)
[itsCodingDoctor](https://www.youtube.com/channel/UCnQkfv879sarKeKm7eMH_dg/playlists)
[Code Step By Step](https://www.youtube.com/c/phpstepbystep/videos)
[CodeWithHarry](https://www.youtube.com/c/CodeWithHarry/featured)
[JsCafe](https://www.youtube.com/channel/UCBze3Ba40cbK6TOmuv-q9eA)
[Rohan Prasad](https://www.youtube.com/c/RohanPrasadofficial/playlists)

#1:1 Mentorship
[microsoft](https://topmate.io/rishabhlakhera)(https://www.linkedin.com/in/rishabhlakhera939a68127/)
Commit daily
Tags: trunkbaseddevelopmen, continuousintegratio, pullrequests, smallbatches
Published: 2022-09-24 18:25:22

---
title: Commit daily
published: true
date: 2022-09-04 00:00:00 UTC
tags: trunkbaseddevelopmen,continuousintegratio,pullrequests,smallbatches
canonical_url: https://jhall.io/archive/2022/09/04/commit-daily/
---

One of the most common problems I see teams and individuals facing when trying to adopt [trunk-based development](https://jhall.io/glossary/#tbd), is the struggle to break the habit of long-lived feature branches.

Some things I commonly hear are:

“Yes, smaller PRs would be nice, but this feature is just too big for that.”

“I just don’t feel good about submitting an incomplete PR.”

“It’s not working yet.”

There are many strategies to make smaller PRs (or even eliminate the need for PRs entirely), but that’s not what I want to talk about right now.

Instead, I want to encourage anyone who’s struggling with this to make a personal commitment. Or if your team is struggling, form a team working agreement.

The commitment is simple:

**Commit daily.**

To elaborate, my suggestion is to _at minimum_, commit your work daily, push it to the server, and open a pull request. Keep it in WIP/Draft mode if you must.

But making your work _visible_ is half of the reason for [continuous integration](https://jhall.io/glossary/#ci) (CI) and trunk-based development (TBD).

This step alone isn’t enough to give you the benefits of TBD and CI. But if you’re struggling with the idea of sharing incomplete work, I know no better way to overcome that “shyness”, than to simply force yourself to share incomplete work.

Don’t let another day go by when you don’t commit _something_ to a PR, even when it’s incomplete.

* * *
_If you enjoyed this message, [subscribe](https://jhall.io/daily) to <u>The Daily Commit</u> to get future messages to your inbox._
Notion Bookmarks IOS Shortcut
Published: 2022-09-28 19:55:44

---
title: Notion Bookmarks IOS Shortcut
published: true
date: 2022-09-04 00:00:00 UTC
tags: 
canonical_url: https://blog.clark.today/notionbookmark-ios
---

<main><div></div>
<div>Notion is a powerful tool that is quickly taking over the life of students, developers, general note takers, project managers, and so many more lifestyles.</div>
<div>I’ve built out a quick and easy shortcut that relays on Notion and Nautomate. You can read more about it by clicking <a target="_blank" rel="noopener noreferrer" href="https://notionbookmark.wkmn.app/">here</a>.</div>
<div>Lets a peak at just how easy it is to get set up with a Notion Bookmark Gallery that looks like this:</div>
<p></p>
<div style="position:relative;display:flex;justify-content:center;align-self:center;width:384px;max-width:100%;flex-direction:column">![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/78prqyuh1v4m7lv4lcm0.jpg)</div>
<h2 data-id="b6656692fad64e20a7f1e9ad0c9e8b38"><span><div id="b6656692fad64e20a7f1e9ad0c9e8b38"></div>
<a href="#b6656692fad64e20a7f1e9ad0c9e8b38" title="The Steps"><svg viewbox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span>The Steps</span></span></h2>
<ol start="1"><li>Get the shortcut from the website <a target="_blank" rel="noopener noreferrer" href="https://notionbookmark.WKMN.app/">here</a>.</li></ol>
<ol start="2"><li>Set up the shortcut with your database ID from Notion.</li></ol>
<ol start="3"><li>Add your Nautomate integration to Notion.</li></ol>
<ol start="4"><li>Share a website from the share menu to your Notion Bookmark Shortcut.</li></ol>
<div>You’re all set!</div>
<div>For a more detailed tutorial please visit <a target="_blank" rel="noopener noreferrer" href="https://NotionBookmark.WKMN.app/">NotionBookmark.WKMN.app/</a>
</div></main>
Chrome插件开发 - Modify images on the page
Published: 2023-08-13 02:13:09

---
title: Chrome插件开发 - Modify images on the page
published: true
date: 2022-09-04 00:00:00 UTC
tags: 
canonical_url: https://manon.icu/blog/translate/build-chrome-extensions/modify-images-on-the-page
---

这篇文章将解释如何修改活动页面上的图片

<video
  autoPlay
  src="https://cdn.jsdelivr.net/gh/manonicu/pics@master/uPic/spoof-images_xjwqgo.webm"
></video>

修改`src/App.jsx`

```jsx
import React from 'react'

export default function ChangeImages() {
  // 获取活动页面所有图片
  const spoofImages = () => {
    const images = document.getElementsByTagName('img')
    for (const image of images) {
      image.removeAttribute('srcset') //去掉srcset，使srcset高质量图片失效
      image.src = 'http://placekitten.com/300'
    }
  }
  // 通过chrome钩子替换活动页面所有图片
  const imageSpoof = async () => {
    const [tab] = await chrome.tabs.query({active: true, currentWindow: true})
    chrome.scripting.executeScript({
      target: {tabId: tab.id},
      function: spoofImages
    })
  }
  return <button onClick={imageSpoof}>Change images</button>
}
```

## Source Code

[【Source Code】](https://github.com/rebelchris/popup-extension/tree/image-spoof)
Angular Child To Parent Communication - Simplified
Tags: angular, javascript, beginners, tutorial
Published: 2022-09-03 23:50:00

I don't know about you all, but as a young developer, having things broken down into simple steps makes my brain feel some sort of way. 

First off, let's talk about what makes a component a considered a parent or a child.  Yes, I know, easy--but bear with me.  I didn't get it at first, so maybe you are in the same boat I am.

Let's say you have two components, `<app-parent>` and `<app-child>`.

These _components_ are usually made up of an .html, spec.ts, .css, and .ts file.

A parent component holds a child's html selector in the parent's html file.


**parent.html**
```javascript
<h1>Hi this is the parent component, I hold the child component below.</h1>
<app-child></app-child>

```

OK, now that that's all sorted, let's pass some data.  


**STEP ONE** - Let's output our data from the child.

In the **child.ts** file,

```javascript
import { Output, EventEmitter } from '@angular/core'

@Output() variableEvent = new EventEmitter();

```
You can name it anything, but most people tag the word 'Event' to the end of their variable name. Don't forget to import @Output() and EventEmitter. Sometimes, if you auto import EventEmitter (and you aren't paying attention), it'll import from the wrong file, so make sure it's from @angular/core. 

**STEP TWO** - Let's trigger it.  You can trigger it on a (click) button function. Or when the component is initialized with onInit, or any number of ways you decide to trigger your function.

In the **child.ts** file,
```javascript
functionName() {
this.variableEvent.emit(value)
}
```
Value is whatever you need it to be. A number, variable, boolean, ect.

**STEP THREE**

In the **parent.ts** file,

```javascript
variable;

variableEvent($event) {
this.variable = $event;
}
```
You can name your function anything, but I like to keep it the same as the EventEmitter back in the child function.  This function is triggered by the child function calling to it. So don't put it inside of another function.

**STEP FOUR**

Let's connect them together now.

In the **parent.html** file,

```javascript
<app-child (variableEvent)="variableEvent($event)></app-child>
```

And there you go, you should have data passing from your child to your parent. Hope this helped another newbie like myself!  There is more in depth knowledge on this on the angular documentation. Make sure you check it out!
How To: run MobaXterm on Ubuntu (Linux) with Wine
Tags: tutorial, ubuntu, linux, howto
Published: 2022-09-03 23:39:22

## What is WIne?

**[Wine](https://www.winehq.org/)** (originally an acronym for `Wine Is Not an Emulator`) is a compatibility layer capable of running Windows applications on several POSIX-compliant operating systems, such as Linux, Mac OSX, & BSD. 
Instead of simulating internal Windows logic like a virtual machine or emulator, Wine translates Windows API calls into POSIX calls on-the-fly, eliminating the performance and memory penalties of other methods and allowing you to cleanly integrate Windows applications into your desktop.

## WIne Instalation:

1 - WIne: download & Install

- Enable 32 bit architecture (If your system is 64 bit):
```
sudo dpkg --add-architecture i386
```

- Download and add the repository key:
```
sudo wget -nc -O /usr/share/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
```
- Add the repository according to the codename of your version of Ubuntu
```
sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/$(lsb_release -sc)/winehq-$(lsb_release -sc).sources
```

- Update & Install package: chose winehq-devel | winehq-stable
```
sudo apt update
sudo apt install --install-recommends winehq-stable
```
- Wine Configuration:
```
winecfg
```

## MobaXtrem

2 - MobaXterm: Downloadn and Install

- Download the new MobaXterm features at: [Preview version](https://mobaxterm.mobatek.net/preview.html)

- Unzip the MobaXterm package  using the `unzip` command
- Open a terminal, cd to the directory where you unzipped MobaXterm program and type:
```
wine MobaXterm_Personal_22.2_Preview2.exe
```

![MobaXterm on ubuntu](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yqvb0fi1t0ir4pzf55kd.png)

3 - Add Application Shortcuts

- Download MobaXtrem icon and save it on MobaXtrem folder with name icon.jpg

- Create file .desktop

```
cd /usr/share/applications (Global) 
or
cd ~/.local/share/applications/ (Local)
vi mobaXtrem.desktop
```
and past the content:

```
[Desktop Entry]
Name=MobaXtrem 
Exec=env WINEPREFIX="/home/ysellami/.wine" wine /home/ysellami/path/to/MobaXterm/MobaXterm_Personal_22.2_Preview2.exe
Type=Application
Icon=/home/ysellami/path/to/MobaXterm/icon.jpg
StartupNotify=true
```

- Enjoy, now u can search Mobaxtrem and run it or add it in dockBar favorit

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/li14t1iis0p81647la9f.png)
Config Validation
Tags: devops
Published: 2022-09-03 21:28:32

You're trying out a new cli tool that solves a common problem you keep running into. Before you can start using it, you need to know how to configure it properly. Luckily the site has a ton of example configs. You copy one of the examples into your favorite editor and change out the values.

You finally found the perfect tool to solve a problem that would have taken weeks of unplanned work if you had to it build yourself. Back at the command prompt you run the tool, and it spits out a short error message. 

```shell
* ERR: unexpected argument (undefined) expected uint
```

That's strange. You probably mistyped something, so you go back to review the config. Nothing stands out as an issue, so you hop back over to the documentation. After a few minutes of reading and comparing the example with your config, you're stumped.

You run a search for the error in the github repo for the tool. No results in Issues. Either you can post a question in the repo's Issues, or dig through the source to see what you're doing wrong. You decide it would be quicker to peek at the source for the config loader.

Within five minutes you were able to trace the problem down to a recent commit. The change splits the host and port number out as separate required fields for the `remoteHost` config option. You add `remotePort` and try again. This time it starts up without issue. A little annoyed about the documentation being outdated, you're still grateful for the tool.

In this scenario, it took less than 15 minutes of troubleshooting to get back on track. It's not uncommon for people to spend upwards of several DAYS trying to get their configurations working. Especially for more complex systems supporting numerous configuration file formats, environment variable settings, command-line arguments, and dynamic configurations.

Application configuration should be treated the same as UI interactions. They should be validated before use, provide friendly error messages with context, and **catch additional unsupported or unknown properties** instead of ignoring them. In addition, a DEBUG or verbose logging option should be supported to view the final resolved configuration the app is running. There are few things more frustrating than having to recreate immutable config files in a staging environment over and over by guessing what could be wrong. Are the secrets being loaded? Is that environment variable taking precedence over the static config option? What is actually loaded?  

```shell
* ERR: config 'remoteHost' failed validation - unexpected characters ":9093"
* ERR: config 'remotePort' missing required property
``` 
This would have pointed the user in the right direction.

Instead of writing your own configuration validation, stick with a well established standard such as JSON Schema. Even if your app uses YAML, it is still a superset of JSON.

[JSON Schema Validators](https://json-schema.org/implementations.html#validators)
Mis utilidades en MacOS
Tags: macos, util
Published: 2022-09-03 23:04:51

¡Buenas! Os quería mostrar lo que son las utilidades instaladas que suelo tener en todo MacOS que caiga en mis manos...

## Alfred
Sustituto de Spotlight, bastante util para hacer busquedas

## Cakebrew
Aplicacion para gestionar de forma visual los paquetes instalados de Homebrew

## Homebrew
Es un sistema de gestion de paquetes, muy util para instalar otras aplicaciones. Otro dia escribiré un articulo sobre los programas que tengo instalados desde Homebrew, que son unos cuantos...

## iTerm
Desde que lo empece a usar no volvi a usar la terminar. Sobre todo lo mas util es poder dividir varias consolas en una ventana

## Lepton
Me sirve para guardar mis snippets o fragmentos de código, y así tenerlos mas actualizados

## Notion
Me ayuda a organizar la documentación de mis proyectos así como de mi vida diaria

## Raindrop
Muy útil para tener todos tus favoritos ordenados y sincronizados

## Rectangle
Viene muy bien para colocar ventanas mediante combinaciones de teclas

## Sourcetree
Viene genial para editar git de una forma gráfica, al final se puede hacer lioso usar tanto comando y esto lo simplifica bastante

## VS Code
Mi editor de código para todos los lenguajes de programación. Muy adaptable mediante extensiones. Podéis ver un articulo que escribí sobre los extensiones que uso. 
{% embed https://dev.to/josexs/extensiones-vs-code-2022-4i7p %}

Seguro que me dejo alguna utilidad, pero al menos, espero que a alguien le pueda servir de referencia.

Saludos
Day 147: The day of challenges
Published: 2022-09-03 22:14:07

Hi!
Today was all about challenges first I started with the Daily Ui challenge it was actually the first day that I decided to sit and complete a Daily Ui challenge and they are so time costing as they involves designing and a lot of trials but it went so well so I will be looking into Day 2 tomorrow or soon. I also looked into a Tailwind css challenge of a responsive design and I actually learned new stuff about responsive design and I finally saw the benefit of mobile first design implementations and in the night I did a Frontend mentor challenge.
whew that's alot of frontend work which is what I need now as I have I have level up with my CSS skills to feel comfortable approaching more frontend work 

Tomorrow is a break day but I may do like one thing maybe learning about Jenkins or any challenge which would be enough for the Day.

Signing off...
LeetCode Daily Problem - 967. Numbers With Same Consecutive Differences
Tags: leetcode, medium, java, algorithms
Published: 2022-09-03 22:05:33

## Problem

Return all non-negative integers of length n such that the absolute difference between every two consecutive digits is k.

Note that every number in the answer must not have leading zeros. For example, 01 has one leading zero and is invalid.

You may return the answer in any order.

## Idea

The way to solve this is to construct the number digit by digit. We can pick any digit `x` from 1 through 9 as the first digit. Once we have picked the digit we have at most two valid choices `x + k` and `x - k` i.e. they both lie in [0, 9]. The problem then reduces to solving a smaller problem with similar structure, i.e. with one less digit at every step. When n digits have been picked we can add the number to our answer array.

## Solution

```java
class Solution {
    public void dfs (int NumOfDigits, int currNum, int k, List<Integer> ans) {
        if (NumOfDigits == 0) {
            ans.add(currNum);
            return;
        }

        List<Integer> nextDigits = new ArrayList<>();

        int tailDigit = currNum % 10;
        nextDigits.add(tailDigit + k);
        if(k != 0) {
            nextDigits.add(tailDigit - k);
        }

        for(int nextDigit : nextDigits) {
            if(0 <= nextDigit && nextDigit < 10) {
                int num = currNum * 10 + nextDigit;
                dfs(NumOfDigits - 1, num, k, ans);
            }
        }
    }

    public int[] numsSameConsecDiff(int n, int k) {
        if (n == 1) {
            return new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
        }

        List<Integer> ans = new LinkedList<Integer>();

        for (int i = 1; i < 10; i++) {
            dfs(n - 1, i, k, ans);
        }

        return ans.stream().mapToInt(i -> i).toArray();

    }
}
```

Runtime: 9 ms, faster than 21.14% of Java online submissions for Numbers With Same Consecutive Differences.

Memory Usage: 44.2 MB, less than 6.62% of Java online submissions for Numbers With Same Consecutive Differences.

**Note** - The BFS solution of this problem will be much more memory efficient as the recursion stack will not have to be dealt with.
Kali vs Ubuntu
Tags: kalivsubuntu, kali, ubuntu, linux
Published: 2022-08-15 20:20:20

If you are an operating systems enthusiast, you would have heard of these two terms: Kali vs Ubuntu. Today we are going to discuss the difference between these two operating systems. Based on the discussion, you can choose whichever operating system fits you best.

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

Kali Linux
An open-source, Debian-based Linux system called Kali Linux is designed for different information security activities, including computer forensics, reverse engineering, and penetration testing.

There are several tools and utilities available on the Kali Linux penetration testing platform. Kali Linux enables security and IT experts to evaluate the security of their systems from data collection to final reporting.


Ubuntu
The contemporary Linux operating system for business servers, desktops, the cloud, and IoT is called Ubuntu.

Ubuntu is a Debian-based Linux distribution, primarily free and open-source software. The three official editions of Ubuntu are Desktop, Server, Core for robotics and Internet of Things gadgets. You may use a virtual machine or the PC alone to execute any versions. With support for OpenStack, Ubuntu is a well-liked operating system for cloud computing.

Read more at:
https://hecodesit.com/kali-vs-ubuntu/
Rock Paper Scissor Game in Python
Tags: python
Published: 2022-09-03 21:40:25


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


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


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


Revisiting basics :=


 

  



 

Read on Medium - Rock Paper Scissor Game in Python
https://lnkd.in/d6giHsr9

Read on WordPress
https://lnkd.in/d5JCft49 

Read on Quora
https://lnkd.in/dq8ApGFX
How to Call a Service from a ROS2 Launch File
Tags: ros2, robotics, tutorial
Published: 2022-09-03 21:06:46

This one is pretty straight forward, but took me a non-trivial amount of searching to find for myself. To call a ros2 service from a ros2 launch file, add the following to your launch file (see [the official docs](https://docs.ros.org/en/humble/Tutorials/Intermediate/Launch/Creating-Launch-Files.html) for more on launch files):

```python
from launch.substitutions import FindExecutable
from launch.actions import ExecuteProcess

...

ld.add_action(
    ExecuteProcess(
        cmd=[[
            FindExecutable(name='ros2'),
            " service call ",
            "/namespace/service_to_call ",
            "example_msgs/srv/ExampleMsg ",
            '"{param_1: True, param_2: 0.0}"',
        ]],
        shell=True
    )
)
```

Note the following:

* `ld` here is a variable containing an instance of `LaunchDescription`
* `/namespace/service_to_call` is replaced with the service you're looking to call (don't forget any appropriate namespaces) and can be found with `ros2 service list`
* `example_msgs/srv/ExampleMsg` is the message type used by that service, which you can get with `ros2 service info /namespace/service_to_call`
* `"{param_1: True, param_2: 0.0}"` is the dictionary defining the message data. To find the parameters you need to set, you may need to consult the `.srv` file or documentation.

Don't forget to include the `shell=True` argument, as the command will fail with a confusing "File not found" error without it.