joplin-notes/Export-9fad9947-5bd5-4195-952b-6512c5a4beb1/Web development 83dd4e6675f04ba782a6865a434a0598/Extras 52e0285b6a994018ba3a68c7c33ca3de.md
2026-11-04 00:33:23 +05:30

1345 lines
No EOL
46 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Extras
- debug in mobile browser
https://github.com/liriliri/eruda
Add this as bookmark and give name ‘Eruda Devtool’
```html
javascript:(function () { var script = document.createElement('script'); script.src="//cdn.jsdelivr.net/npm/eruda"; document.body.appendChild(script); script.onload = function () { eruda.init() } })();
```
[API](../../Export-9fad9947-5bd5-4195-952b-6512c5a4beb1/Web%20development%2083dd4e6675f04ba782a6865a434a0598/Extras%2052e0285b6a994018ba3a68c7c33ca3de/API%200f105a3694eb438f81f8f5406a27ad13.md)
- character to ascii values and vice versa in py
```python
>>> chr(65)
'A'
>>> chr(120)
'x'
>>> chr(ord('S') + 1)
'T'
```
- ASCII table
```
Dec Char Dec Char Dec Char Dec Char
--------- --------- --------- ----------
0 NUL (null) 32 SPACE 64 @ 96 `
1 SOH (start of heading) 33 ! 65 A 97 a
2 STX (start of text) 34 " 66 B 98 b
3 ETX (end of text) 35 # 67 C 99 c
4 EOT (end of transmission) 36 $ 68 D 100 d
5 ENQ (enquiry) 37 % 69 E 101 e
6 ACK (acknowledge) 38 & 70 F 102 f
7 BEL (bell) 39 ' 71 G 103 g
8 BS (backspace) 40 ( 72 H 104 h
9 TAB (horizontal tab) 41 ) 73 I 105 i
10 LF (NL line feed, new line) 42 * 74 J 106 j
11 VT (vertical tab) 43 + 75 K 107 k
12 FF (NP form feed, new page) 44 , 76 L 108 l
13 CR (carriage return) 45 - 77 M 109 m
14 SO (shift out) 46 . 78 N 110 n
15 SI (shift in) 47 / 79 O 111 o
16 DLE (data link escape) 48 0 80 P 112 p
17 DC1 (device control 1) 49 1 81 Q 113 q
18 DC2 (device control 2) 50 2 82 R 114 r
19 DC3 (device control 3) 51 3 83 S 115 s
20 DC4 (device control 4) 52 4 84 T 116 t
21 NAK (negative acknowledge) 53 5 85 U 117 u
22 SYN (synchronous idle) 54 6 86 V 118 v
23 ETB (end of trans. block) 55 7 87 W 119 w
24 CAN (cancel) 56 8 88 X 120 x
25 EM (end of medium) 57 9 89 Y 121 y
26 SUB (substitute) 58 : 90 Z 122 z
27 ESC (escape) 59 ; 91 [ 123 {
28 FS (file separator) 60 < 92 \ 124 |
29 GS (group separator) 61 = 93 ] 125 }
30 RS (record separator) 62 > 94 ^ 126 ~
31 US (unit separator) 63 ? 95 _ 127 DEL
```
- Transfer files from pc to emulator
[adb push C:\\MyFiles\\fileName.txt /sdcard/fileName.txt](https://i.stack.imgur.com/NBFto.png)
- Spotify playlist
https://developer.spotify.com/documentation/web-api/reference/#/operations/get-playlist
video: [https://www.youtube.com/watch?v=0dmS0He\_czs](https://www.youtube.com/watch?v=0dmS0He_czs)
https://www.sohamkamani.com/nodejs/rsa-encryption/
- Non microsoft vscode ie VsCodium
C:\\Users\\h.vscode\\extensions : contains extensions for vs code
C:\\Users\\h.vscode-oss\\extensions: contains extension for vscodium
here h is username
Not all extensions are available so just transfer extensions from vs code to vscodium manually.
use package manager to install vscodium.
for windows use:
`winget install vscodium`
- comments
[@Existentialist](https://www.youtube.com/channel/UC_TYtMoJqI6gNOXIaVFfjtg) 
There is a trick for that. I have both vscode and vscodium installed. If desired extension is not avaiable in vscodium extension store then i download it from vscode store and copy its folder from .vscode/extensions to .vscode-oss/extensions.
- Multiple vs code
https://stackoverflow.com/questions/68047117/how-to-install-two-vs-code
changing extension directory:
https://stackoverflow.com/questions/40080793/is-there-a-way-to-change-the-extensions-folder-location-for-visual-studio-code
What I did - after installing Visual Studio Code for the first time, I checked the documentation and added at the end of 'Target' field of editor's shortcut the following (there's a space before the two dashes):
```bash
--extensions-dir="DRIVELETTER:\VSCODE\extensions"
--user-data-dir="DRIVELETTER:\VSCODE\settings"
```
where DRIVERLETTER and VSCODE are the corresponding drive and directory where Visual Studio Code is installed. So mine looks like this:
```bash
"D:\Microsoft VS Code\Code.exe" --extensions-dir="D:\Microsoft VS Code\extensions"
```
Here is for the user data directory:
```bash
"D:\Microsoft VS Code\Code.exe" --user-data-dir="D:\Microsoft VS Code\settings"
```
Accessing the 'Target' field is done by right-clicking the shortcut and choosing 'Properties'
Anyway, there's a simpler solution to that problem - just use the portable version of Visual Studio Code. It works under Windows, Linux, and macOS:
for windows:
```powershell
@START codium --extensions-dir="C:\Users\hp\Videos\imp\web\extensions" --user-data-dir="C:\Users\hp\Videos\imp\web\User"
```
- Chromium archive builds
https://src.chromium.org/viewvc/chrome/releases/1.0.154.53/src/
older executable: https://vikyd.github.io/download-chromium-history-version/#/
- Cloud Storage APIs
[https://www.reddit.com/r/Python/comments/gm3irp/did\_anyone\_upload\_files\_to\_degoo\_cloud\_via/](https://www.reddit.com/r/Python/comments/gm3irp/did_anyone_upload_files_to_degoo_cloud_via/)
LBRY: video streaming based on blockchain
- Enable usb debugging on android
\*\*\*\*Go to the Setting tab
**Step 2:** Go to About Phone
**Step 3:** Click several times on Build number
**Step 4:** You will then get a pop-up message that reads "You are under developer mode"
**Step 5:** Go back to Settings
**Step 6:** Click on Developer options
**Step 7:** Then check "USB debugging"
- Permanent deletion of files in android
With the increasing cases of identity theft and data breaches, it is certainly important to know the right way to dispose our data. Well, if you want to permanently delete your photos and videos from your phone, then I would recommend the following solutions.
**Delete media files manually**
Well, the easiest solution would be deleting your photos and videos manually from your device. Just go to the Gallery app and select what you wish to get rid of. Afterward, make sure that you visit the “Recently Deleted” album where your photos are saved temporarily. Now, delete your photos from here as well to remove them permanently.
**Factory Reset your Device**
If you want to permanently delete everything from your phone, then consider performing a factory reset. If you have an iPhone, then just go to its Settings > General > Reset for this while Android users can find it in Settings > Reset as well. This will erase not just photos, but all the saved content and stored settings from your phone.
**Use a Professional Data Eraser**
If you just factory reset or manually delete your photos, then anyone can extract them using a data recovery tool. Therefore, if you are concerned about your privacy, then consider using dr.fone – Data Eraser. There are dedicated applications for both iOS and Android that you can try. Using them, you can connect your device, and follow a simple click-through process to completely wipe your data. This will erase all your photos and videos beyond the scope of recovery.
- Block installation
0
MacroDroid [here](https://play.google.com/store/apps/details?id=com.arlosoft.macrodroid) can save u: Let's be simple;
1. Download and install MacroDroid
2. Press Add Macro
3. Select Trigger to be Application Launched
4. Check non-launchable apps
5. Locate Package installer and select it
6. Go to Actions tab
7. Select Launch Home Screen
8. Go to constraints and chose any other thing you want it to consider before executing that action you configured above or just leave it blank
9. Give your Macro a name and save it
10. You're ready to go
Note: *give macrodroid all permissions possible as requested. The macro will look as below*
![https://i.stack.imgur.com/sbe5S.jpg](https://i.stack.imgur.com/sbe5S.jpg)
- Google search hacks
https://news.ycombinator.com/item?id=25371017
- better third party upload api
https://app.uploadcare.com/
- ytdl core nodejs
https://medium.com/@Moorad/how-i-made-my-own-youtube-downloader-using-javascript-and-node-js-160b172f6e10
- Merge audio nd video in browser
https://www.youtube.com/watch?v=UXxv8-xtwNc
- Create custom video downloader
https://javascript.plainenglish.io/make-your-own-youtube-downloader-626133572429
- Stream downloads
https://philna.sh/blog/2020/08/06/how-to-stream-file-downloads-in-Node-js-with-got/
- remote url download like google drive
pcloud
https://gofile.io/ have api option too
fileLu : closed file system upload
[fileLu](../../Export-9fad9947-5bd5-4195-952b-6512c5a4beb1/Web%20development%2083dd4e6675f04ba782a6865a434a0598/Extras%2052e0285b6a994018ba3a68c7c33ca3de/fileLu%206e31d221398d43638829e010f1ae9272.md)
filebin.net: open file system upload
- Moralis IPFS
https://docs.moralis.io/web3-data-api/evm/reference/upload-folder
https://moralis.io/pricing/#0
Internet archive
https://www.sitelike.org/similar/gofile.io/
https://workupload.com/
[macros](../../Export-9fad9947-5bd5-4195-952b-6512c5a4beb1/Web%20development%2083dd4e6675f04ba782a6865a434a0598/Extras%2052e0285b6a994018ba3a68c7c33ca3de/macros%20bca37d848db740deab4c5801bd1eef18.md)
[youtube stream itags](../../Export-9fad9947-5bd5-4195-952b-6512c5a4beb1/Web%20development%2083dd4e6675f04ba782a6865a434a0598/Extras%2052e0285b6a994018ba3a68c7c33ca3de/youtube%20stream%20itags%20be99980f6ca34db5abde5ac77495b.md)
- redis caching nodejs
https://www.digitalocean.com/community/tutorials/how-to-implement-caching-in-node-js-using-redis
https://www.sitepoint.com/using-redis-node-js/
&nbsp;
- CORS proxy
proxy.cors.sh
whateverorigin.org
```jsx
fetch("https://proxy.cors.sh/https://acme.com", {
headers: {
"x-cors-api-key": "temp_6ed182fc89f2d7dc756368139fed3299",
},
});
const proxy = "https://proxy.cors.sh";
const key = "temp_6ed182fc89f2d7dc756368139fed3299";
const res = await fetch(
`http://www.whateverorigin.org/get?url=http://www.google.com`
);
```
- github api
https://api.github.com/users/kroeckx: for getting user info from username
https://api.github.com/search/users?q=kurt@roeckx.be : getting username from email address if public
- Script to copy project excluding node\_modules
```jsx
const fs=require('fs')
const path=require('path')
const copyFiles=(folder,folderPath)=>
{
const fileregex=/.+\..+/
const files=fs.readdirSync(folderPath)
console.log('files: ',files)
for(let file of files)
{
const filePath=`${folderPath}/${file}`
const destinationFilePath=filePath.replace(__dirname,`${__dirname}_copy`)
const destinationFolderPath=folderPath.replace(__dirname,`${__dirname}_copy`)
if(file==='node_modules'||file==='audios'||file==='songs')
{
continue;
}
if(fs.lstatSync(filePath).isDirectory() )
{
copyFiles(file,filePath)
}
console.log(filePath,destinationFilePath)
fs.mkdirSync(destinationFolderPath,{recursive: true})
if(!fs.lstatSync(filePath).isDirectory() )
{
const dataFile=fs.readFileSync(filePath)
fs.writeFileSync(destinationFilePath,dataFile)
}
}
}
copyFiles(__dirname,`${__dirname}`)
```
- Cheerio features
loop over elements:
```jsx
import fetch from 'node-fetch';
import { load } from 'cheerio';
const url = 'http://webcode.me/countries.html'
const response = await fetch(url);
const body = await response.text();
let $ = load(body);
$('tr').each((_, e) => {
let row = $(e).text().replace(/(\s+)/g, ' ');
console.log(`${row}`);
});
```
- Extracting youtube id
`let regex=/watch\?v=([a-zA-Z0-9_-]+)[&]?/`
- deta features
![Untitled](../../_resources/Untitled-7.png)
- yt download Links
https://x2download.app/en48
https://wave.video/convert/youtube-to-mp4
https://ssyoutube.youtubemini.com/#url=https://www.youtube.com/watch?v=X3jw1JVNdPE
- New way to download audio from youtube after throttling
```jsx
const getAudioLink = async (url) => {
const info = await ytdl.getInfo(url);
const { formats } = info;
const title = info.videoDetails.title;
const getDownloadLinkByItag = (formats, itag) => {
const formatObj = formats.find((format) => format.itag === Number(itag));
if (formatObj.itag === 140) {
return { url: formatObj.url, cL: formatObj.contentLength };
}
return formatObj.url;
};
const itag = "140";
let dobj = getDownloadLinkByItag(formats, itag);
let dURL = dobj.url;
const end = dobj.cL;
dURL = dURL + `&title=${encodeURIComponent(title)}&range=0-${end}`;
console.log("audio durl: ", dURL);
const urlDown = await tiny.shorten(dURL);
// const urlDown = dURL;
return { urlDown, title };
// const format2 = ytdl.chooseFormat(info.formats, { quality: `140` });
// console.log("🚀 ~ file: app.js ~ line 54 ~ app.post ~ format2", format2);
// try {
// // ytdl.downloadFromInfo(format).pipe(fs.createWriteStream("video.mp4"));
// const audio = ytdl(url, {
// filter: (format) => {
// // format1.container === "mp4" && format1.hasAudio === true,
// // console.log("🚀 ~ file: app.js ~ line 33 ~ app.post ~ format1", format1);
// return isEqual(format, format2);
// },
// });
// return audio;
// } catch (err) {
// console.log(err);
// throw new Error(err.toString());
// }
};
```
- Logger for js
https://stackoverflow.com/questions/41232578/node-js-console-log-in-txt-file
https://www.npmjs.com/package/log4js
```jsx
var log4js = require("log4js");
var logger = log4js.getLogger();
logger.level = "debug";
logger.debug("Some debug messages");
```
- upload file to ipfs nodejs
https://portal.thirdweb.com/api-keys?ref=blog.thirdweb.com
```jsx
const { ThirdwebStorage } = require("@thirdweb-dev/storage");
const fs = require("fs");
const storage = new ThirdwebStorage({
secretKey: "YOUR_SECRET_KEY", // You can get one from dashboard settings
});
const ipFsUpload = async (titles) => {
// const upload = await storage.upload({
// metadata: { name: "ghu.mp3" },
// alwaysUpload: true,
// });
const buffers = titles.map((title) => fs.readFileSync(`music/${title}.mp3`));
// const uploads = await storage.uploadBatch([
// fs.readFileSync("Holiday_Boulevard_of_Broken_Dreams.mp3"),
// fs.readFileSync("test.txt"),
// ]);
const uploads = await storage.uploadBatch(buffers);
// const upload = await storage.upload({
// name: "gh.mp3",
// file: fs.readFileSync("test.txt"),
// });
// const gatewayURLS = uploads.map((upload) => storage.resolveScheme(upload));
const gatewayURLS = [];
for (let i = 0; i < uploads.length; i++) {
const upload = uploads[i];
const title = titles[i];
const gatewayURL = storage.resolveScheme(upload);
const obj = { url: gatewayURL, title };
gatewayURLS.push(obj);
}
console.log("gateway urls: ", gatewayURLS);
return gatewayURLS;
// console.log(`Gateway URL - ${storage.resolveScheme(upload[0])}`);
};
module.exports = { ipFsUpload };
```
- Clarifai api march 2023
```jsx
const raw = JSON.stringify({
"user_app_id": {
"user_id": "clarifai",
"app_id": "main"
},
"inputs": [
{
"data": {
"image": {
"url": "IMAGE_URL",
"base64": "base64_string"
}
}
}
]
});
const requestOptions = {
method: 'POST',
headers: {
'Accept': 'application/json',
'Authorization': 'Key ' + 'your key'
},
body: raw
};
// NOTE: MODEL_VERSION_ID is optional, you can also call prediction with the MODEL_ID only
// https://api.clarifai.com/v2/models/{YOUR_MODEL_ID}/outputs
// this will default to the latest version_id
fetch(`https://api.clarifai.com/v2/models/face-detection/versions/6dc7e46bc9124c5c8824be4822abe105/outputs`, requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
```
https://www.markdowntutorial.com/
- youtube search without api
https://www.npmjs.com/package/scrape-youtube
- Remove constant popup of winrar for free
[WinRAR crack.rar](../../_resources/WinRAR_crack.rar)
just add a rarreg.key file in winrar folder
- insert html at caret in contenteditable element
```jsx
function pasteHtmlAtCaret(html) {
var sel, range;
if (window.getSelection) {
// IE9 and non-IE
sel = window.getSelection();
if (sel.getRangeAt && sel.rangeCount) {
// get selected area details
range = sel.getRangeAt(0);
//deleting the selected region
range.deleteContents();
// Range.createContextualFragment() would be useful here but is
// non-standard and not supported in all browsers (IE9, for one)
var el = document.createElement("div");
el.innerHTML = html;
// offscreen dom tree creation as inserted between instead of last
var frag = document.createDocumentFragment(),
node,
lastNode;
// extract elements from div container and appending it to document fragment
while ((node = el.firstChild)) {
lastNode = frag.appendChild(node);
}
range.insertNode(frag);
// Preserve the selection
if (lastNode) {
// range = range.cloneRange();
// to unselect and push caret to last
range.setStartAfter(lastNode);
range.collapse(true);
// if not removed then cursor wont be at last
sel.removeAllRanges();
sel.addRange(range);
}
}
} else if (document.selection && document.selection.type != "Control") {
// IE < 9
document.selection.createRange().pasteHTML(html);
}
}
```
- Fix com surrogate high memory usage
https://www.youtube.com/watch?v=YXhB3eNk9I8
https://small.fileditchstuff.me/s5/qIZWhbEWyHBvWUgpdrLO.mp4
- onchange event attribute in html
```jsx
function create_comboA(your_Object) {
var my_value = your_Object.my_value;
console.log(my_value);
}
<select id="create_comboA" onchange="create_comboA(this)">
<option value="">Choose the combo</option>
<option value="First Option">Apple</option>
<option value="Second Option">Orange</option>
<option value="Third Option">Banana</option>
</select>
```
here this is equivalent to e.target
event is equivalent to e
- Simple connection
```html
<!DOCTYPE html>
<html lang="en">
<head>
<style>
input {
width: 200px;
height: 2rem;
}
</style>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<input type="text" oninput="handleChange(this)" autofocus />
<script src="script.js"></script>
</body>
</html>
```
```jsx
const handleChange = (e) => {
let str = e.value;
console.log("str: ", str);
fetch("/send", {
method: "post",
body: JSON.stringify({ text: str }),
headers: {
"content-type": "application/json",
// accept: "Application/octet-stream",
},
});
};
```
```jsx
const express = require("express");
const app = express();
app.use(express.static(__dirname + "/public"));
app.use(express.json());
app.post("/send", (req, res) => {
const { text } = req.body;
console.log(text);
});
app.listen(3000, () => {
console.log("listening");
});
```
- Sublime Text Palenight theme missing fix
The Palenight theme is not included in the Midnight theme package. You need to install the Palenight theme separately. You can do this by following these steps:
1. Open Sublime Text and go to **Preferences > Browse Packages**.
2. In the Packages directory, create a new folder called `Palenight`.
3. Clone the Palenight theme repository: https://github.com/jbrooksuk/palenight-sublime-text into the `Palenight` folder.
4. Restart Sublime Text.
The Palenight theme should now be available in the **Color Scheme** menu.
Here are some additional troubleshooting steps you can try if the Palenight theme is still not available:
- Make sure that you have installed the latest version of the Palenight theme.
- Verify that the `Palenight` folder is located in the `Packages` directory.
- Restart Sublime Text multiple times.
- Clear your Sublime Text settings.
- Docker
https://medium.com/swlh/containerize-your-personal-projects-with-docker-fe62ca391db8
![Untitled](../../_resources/Untitled%201-4.png)
Dockerfile saved with name ‘Dockerfile’ no extension
```docker
FROM node:12
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
ENV PORT=8080
EXPOSE 8080
CMD [ "npm","start" ]
```
just like .gitignore there is a file name .dockerignore to exclude mentioned files or folder
```docker
node_modules
```
building image:
`docker build -t username/first_app:1.0`
it will produce an output and will produce image starting with sha……
To run the image use:
`docker run <image_name/code>`
Now if we try to run it with port(here in eg port is 8080) then it wont run because by default its not accessible outside container so to expose it we can use port forwarding.
`docker run -p 5000:8080 <image_name/code>`
port 8080 of container is forwarded to port 5000 of outside container. 5000:8080 is mapping
- For publishing
Now login through the CLI by executing:
```
docker login
```
Push your Docker Image to the Docker Hub repository with the following command:
```
docker image push <repository>/<image>:<tag>
```
Example:
```
docker image push dhanushkamath/dockerize-node:1.0.0
```
You’ve successfully published your first image to the world!
Running this container on a different computer that has Docker only requires a single command:
```
docker run dhanushkamath/dockerize-node:1.0.0
```
- RSA
https://www.geeksforgeeks.org/rsa-algorithm-cryptography/
Note: If your public key's n (modulo) is 4096 bits, then your message can't exceed 4096 bits (realistically even less because of padding)
```
Select two prime no's. Suppose
P = 53 and Q = 59.
Now First part of the Public key : n = P*Q = 3127.
```
```
But e Must be An integer.Not be a factor of Φ(n). 1 < e <Φ(n)
Φ(n) = (P-1)(Q-1)
so, Φ(n) = 3016
Eg: For e=3, Φ(n)%e !=0 so e is not factor of Φ(n).
```
```
Now calculate Private Key,d
d = (k*Φ(n) + 1) / e for some integer k
or
D*e mod φ (n) = 1
at k=2,
(2*3016+1)/3 =( 6032+1)/3=6033/3= 2011
d=2011
```
Public Key= &lt;e,n&gt; = &lt;3,3127&gt;
Private Key=&lt;d,n&gt; &lt;2011,3127&gt;
Encryption:
(m^e)mod(n) here a mod b = a%b ⇒ mod is modulus operator
m=3
(3^3)%3127=27%3127=27
c=27
Decryption:
**(c^d)mod n**
27^2011 % 3127
- Complex calculation
https://www.youtube.com/watch?v=EiZGCSsKtfM
https://stackoverflow.com/questions/45381402/rsa-exponent-size
- Stack overflow
Let's say `M` is the modulus. So YES, you could first perform `intermediate = 65^e`, and finally compute `intermediate mod M`. And of course, `intermediate` would be a very very very very big integer (if `e` equals 65537, the decimal representation of `intermediate` contains 118813 digits!).
BUT, **thanks to a very basic modular arithmetic theorem**,
```
(65^e) mod M = ((((65 mod M) * 65) mod M) * 65) mod M [...] (e times)
```
(*the theorem states that in a quotient ring, the n-th power of the class of an element is the class of the n-th power of the element*)
As you can see, this does not need any very big integer library, since after each arithmetic product, you use `mod M` that returns an integer between `0` and `M-1`. So, you only have to compute arithmetic products of integers less than M.
As an example, here is a simple shell script (bash) that computes 65^65537 mod 991\*997. **As you can see, no need to get a big number library:**
```
#!/bin/bash
# set RSA parameters
m=65 # message to encode
M=$((991*997)) # modulus (both 991 and 997 are prime numbers)
e=65537 # public exponent (coprime with 990*996, thus compliant with RSA algorithm)
# compute (m^e) mod M
ret=1
for i in {1..$e}
do
ret=$(((ret*m)%M))
done
# display the result
echo $ret
```
It immediately returns `784933`, thus `65^65537 mod 991*997 = 784933`
The biggest integer computed with your method of calculus has 118813 digits, but the biggest integer handled with this shell script only has 12 or less digits (`(M-1)^2` is made of 12 digits).
**According to these explanations, we can now answer your question:**
> My question is then, for the working RSA algorithm, what size (number of digits) number does that algorithm pick?
With the above explanations, you can see that the maximum number of digits in the decimal representation of integers you have to manipulate is `1+log10((M-1)^2)`, because you will, at most, compute a product of two integers between `0` and `M-1`.
Note that `1+log10((M-1)^2) = 1+2.log10(M-1) < 2+2.log10(M) = 2.(1+log10(M))`. Also note that `1+log10(M)` is the number of digits of M.
Therefore, as a conclusion, this proves that **the number of digits your library has to handle correctly is twice the number of digits of the modulus** (if you are computing the exponentiation using integer multiplications the way explained here).
**Calculate Large Exponents**
Calculating large exponents and modular arithmetic can be complex. For such calculations, you can use a calculator or programming language with built-in support for handling large numbers and modular arithmetic. In this case, you're looking to calculate 56^{2346} \\mod 564562346mod564.
If you want to do this using a programming language like Python, you can use the **`pow()`** function along with the modulus operator **`%`**:
`pythonCopy coderesult = pow(56, 2346, 564) print(result)`
If you don't have access to programming tools, you might need to use a calculator that supports large number calculations and modular arithmetic. Many scientific calculators and online calculator tools have this capability. Just make sure to enter the values and operations correctly.
Keep in mind that the result will be a large number, so ensure you're using tools that can handle such calculations accurately.I mean arent there any mathematical properties to handle thisChatGPT
Yes, there are mathematical properties that can help simplify and handle calculations involving large exponents and modular arithmetic. One property that's particularly useful is the **modular exponentiation** property. This property states that for any positive integers a*a*, b*b*, and m*m*, you can compute a^b \\mod m*ab*mod*m* efficiently without actually calculating the huge exponentiation.
Here's the general idea:
1. Start with a result variable initialized to 1.
2. Iterate through the binary representation of b*b*, from the least significant bit to the most significant bit.
3. For each bit, if it's 1, multiply the result by a*a* and take the result modulo m*m*.
4. Square a*a* and take the result modulo m*m* in each iteration.
5. The final result will be a^b \\mod m*ab*mod*m*.
This method significantly reduces the number of multiplications and calculations required compared to naively calculating a^b*ab* and then taking the modulus.
For example, to calculate 56^{2346} \\mod 564562346mod564, you would apply the above steps using a = 56*a*\=56, b = 2346*b*\=2346, and m = 564*m*\=564.
However, this approach still involves some complex calculations. If you're not comfortable performing these calculations manually, it's best to use a programming language or calculator with built-in support for modular exponentiation.Ok so use these steps to solve this ChatGPT
* * *
Main:
Certainly! Let's use the modular exponentiation property to calculate 56^{2346} \\mod 564562346mod564:
1. Start with the result variable res = 1*res*\=1.
2. Convert the exponent 2346 to binary: 2346\_{10} = 100100101010\_{2}234610=1001001010102.
3. Iterate through the binary representation of the exponent:
◦ First bit: 00. Square 56 and take the result modulo 564.
◦ Second bit: 11. Multiply 56 by 56, take the result modulo 564, and then square the result.
◦ Third bit: 00. Square the result again.
◦ ...
4. After iterating through all bits, the final result will be res = 56^{2346} mod 564
Using the steps above, you can perform the calculations iteratively:
5. res = 1
6. res = 56^2 mod 564 = 3136 mod 564 = 220
7. res = 220 \* 56^2 mod 564 = 220 \* 3136 mod 564 = 4476 mod 564 = 348
8. ... (continue squaring and multiplying as per the binary representation of the exponent)
After completing all the steps, the final result res will be the value of 56^{2346} mod 564
* * *
Taking another example:
2^9 mod 100
9=1001 in binary form
res=1
If bit is:
1: multiply by base which is 2 here ⇒ res\*2
0: square it ⇒ res^2
from right to left:
First significant bit(rightmost) ie 1: res=res\*2 mod 100=2 mod 100 = 2
2nd bit ie 0: res=res^2=4 mod 100 = 4
3rd bit ie 0. res=res^2= 4\*4=16 mod 100 = 16
- YouTube alternative
Invidious
libreddit
- To learn
Non free js/ librejs
Floorp Firefox engine browser like vivaldi
Midori
- Cons of matlab
1: index starts at 1.
2: % is not recognized as modulus. rem function has to be used.
3; Ambiguous syntax
https://www.rath.org/matlab-is-a-terrible-programming-language.html
- Browsers
Librewolf
Mullwad : tor without tor network
waterfox
Falkon
midori
- Email
https://eylenburg.github.io/cloud_comparison.htm
skiff (2021-2024)
disroot : https://disroot.org/en/services/email
tutanota(now called tuta) (since 2016) (6 months of inactivity)
https://www.reddit.com/r/PrivacyGuides/comments/v2v6rw/email_provider_recommendations_free_imappop/
abv bg : bulgariian email service
https://www.fsf.org/resources/webmail-systems : free emails
https://veilmail.io/ : generate alias for email
https://app.simplelogin.io/ : to create alias for proton mail (upto 10 alias)
https://app.addy.io/register : upto 10
firefox relay (alias service) : cant generate custom alias though
https://www.techradar.com/pro/free-email-accounts-listed-and-compared
like vielmail there are Blur and 33mail
zoho : (since 2008) (needs phone number)
proton (since 2014)
gmail (since 2004)
riseup(since 1999)
mail.com(need usa or europe IP, also need valid phone number)
ctemplar(2019-2022)
aol(needs local phone number), similarly Daum Mail , naver mail and yandex mail
mailfence(7 months of inactivity)
onmail : (since 2020 -2025)
rmail (since 2022)
mailo
aster mail (since apr 2026)
atomic mail (subce 2024)
autistici/inventi (2001-2026)
adminforge
infomaniak (need phone number verification by reverse calling)
https://keepitfree.ai/it/announcements/a/i-chiude-restare-umani/
[A_I Closes Stay Human · Keep the Internet free (15_9_2026 12:00:45 pm).html](../../_resources/A_I%20Closes%20Stay%20Human%20·%20Keep%20the%20Internet%20free%20%2815.html)
&nbsp;
email client:
thunderbird
fairemail: for android
&nbsp;
smtp providers
https://mailtrap.io/blog/free-smtp-servers/
mailgun (to 5 users only, 5k/month)
sendgrid (1k/month)
brevo(need phone number and cant be verified with temp ones,also address)
smtp2go(1k/month, need private domain)
sendpulse(12k/month)
blogmail : requires domain
mailtrap : requires domain(3k/month)
mailsend(1k/month) (provides u with your temporary domain)
elastic email (100/day)
https://elasticemail.com/developers/api-documentation/rest-api#section/Authentication
- Search engine
duckduckgo
startpage : [https://www.startpage.com](https://www.startpage.com/)
qwant.com (not availble in india though)
brave search
ecosia (google and bing result) : does tracked by google though
https://altpower.app
searxing : https://priv.au (instance), https://www.gruble.de/
https://degoog.org/
- Mirrors
https://github.com/mendel5/alternative-front-ends
https://mike.sg/2022/07/10/how-to-use-libredirect-on-android/
libreddit https://libreddit.northboot.xyz/ : read-only
Teddit
whoogle: https://whoogle-search--replitcomreside.repl.co/, google
searx, weird one : for unbiased search result : https://searx.work/
https://github.com/benbusby/whoogle-search#public-instances
Nitter: read only for twitter
https://github.com/libreddit/libreddit-instances/blob/master/instances.md
invidous: yewtu.be
simple translate, lingwa translate
libremd: imdb mirror
quetre : quora mirror
rimgo: imgur mirror https://rimgo.kling.gg/
- VPN
hide me
windscribe
https://www.vpngate.net/en
riseup : need invite codes for email but for vpn it needs snapd
atlas
cloudfare dns
- Download page
singlefile extension
- chrome
[SingleFile.zip](../../_resources/SingleFile.zip)
[SingleFile.crx](../../_resources/SingleFile.crx)
- firefox
[green day - Invidious (8\_26\_2023 7\_11\_16 AM).html](../../Export-9fad9947-5bd5-4195-952b-6512c5a4beb1/Web%20development%2083dd4e6675f04ba782a6865a434a0598/Extras%2052e0285b6a994018ba3a68c7c33ca3de/green_day_-_Invidious_%288_26_2023_7_11_16_AM%29.html)
[single\_file-1.21.62.rar](../../_resources/single_file-1.21.62.rar)
- Coral
https://coral-sim.zybooks.com/
it shows execution for code in animation and draws flowchart itself
- spotify recorder
spy-spotify : spytify software
- Virtual box resolution fixing
![Untitled](../../_resources/Untitled%202-3.png)
```bash
xrandr --newmode "1920x1080" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
xrandr --addmode Virtual1 1920x1080
xrandr --output Virtual1 --mode 1920x1080
```
- Mobile browser with extension support
Lemur browser : chromium based closed source
kiwi : chromium based closed source
firefox : open source
yandex : russian chromiium based
- Video/image upload
| name | allows variety | anon uploads | direct links | galleries | gifs | mp4s | popups | upload limit |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| catbox.moe | yes | yes | yes | yes | yes | yes | yes | 200 mb, (Gif 20 mb) |
| freeimage.host | yes | yes | yes | yes | yes | no | no | 64 mb |
| imgbox.com | yes | yes | yes | yes | yes | no | yes | 10 mb |
| imgchest.com | yes | yes | yes | yes | yes | no | no | 20 mb |
| lensdump.com | yes | no | yes | yes | yes | no | no | 100 mb |
| pixhost.to | yes | yes | yes | yes | yes | no | no | 10 mb |
| postimages.org | yes | yes | yes | yes | yes | no | no | 24 mb |
| redgifs.com | yes | no | no | yes | yes | yes | yes | 1 gb |
| steamysnap.com | yes | no | yes | yes | yes | no | no | 20MB |
| sdrive.app | yes | yes | yes | coming | yes | yes | yes | 50MB |
![4b21323fadde3da88a58fa1efe8b2074.png](../../_resources/4b21323fadde3da88a58fa1efe8b2074.png)
https://sendvid.com/
https://rapidshare.io/
https://easyupload.io/
filebin : deletes after 6 days
https://fastupload.io/en
goFile : file deletes if no one download it
goFile unofficial download: https://gist.github.com/shawnli87/d416b7c9030293cabfcf4c225cdc5a15
skiff drive : https://app.skiff.com/drive/folder : no longer exist
pcloud
filen.io : if not login in 3 months, file may get deleted
fileLU : file may get deleted later
idrive : with file sync cross platform : no longer free
dropbox : with file sync cross platform
sync : with file sync cross platform except linux
https://buzzheavier.com/ (unlimited, forever, no ddl link by default)
jottacloud : 5GB
https://drime.cloud/ : 20 gb free eu hosting
filegarden : https://filegarden.com/ : 100mb file limit, 2gb total limit, ddl link
https://mobidrive.com : 20gb free storage
filespayout : 10gb free but with 10s wait for download
blackbaze : 10gb s3 like cloud storage https://www.backblaze.com : no public link without credit card
cloudfare r2 : s3 like, requires credit card
https://filebase.com/pricing/ : 5gb storage with 5gb bandwidth
koofr : 10gb (share link expire after 14 days)
opendrive (5 GB | 100 MB Max File Size | 1 GB/Day Bandwidth 1 User | 200 KB/s Speed) (Supports DDL)
box : with file sync cross platform except linux
https://workupload.com/
https://www.cbackup.com (10gb, 1gb/day)
for file sharing: https://0x0.st/, code: https://git.0x0.st/mia/0x0
https://www.lifewire.com/free-cloud-storage-1356638 : free cloud storages
https://bytesbin.com/file-hosting-direct-download-link/ : free cloud storages with direct downloadable link
https://ddownload.eu : 5tb with 30 days validity
https://www.zotero.org/support/kb/webdav_services
4shared : (15 gb, 3GB daily limit, 30GB monthly limit, need to sign i to download files)
scramble.cloud : 100 gb storage encrypted(some IP block it)
https://vgy.me/ : for image
https://fileditch.com/ : 15gb/file perma storage
filen : 10gb vloud storage end to end encyption : will get 10 gb for inviting friends (3 months of inactivity)
dropbox : 500mb per referral
deegoo : 20gb
1filchier : 1tb temp storage
yandex disk : 5gb
mega 20gb (since 2013)
mediafire : 10gb(1 gb for every friend invite)(since 2006)
bestfile(unlimited space, 5gb/file)(for unregistered, 1gb/file, 6months file validity)
uploadnow(100 gb, cant signin)(file deletes if no one download it)
blomp(20 gb to 200gb)
uloz.to : (1gb, no way to make files public/sharable) : reduced from 50gb to 25gb to 1gb
- Google DRM Dangers
1. What will happen basically that google will decide that which browser, which OS, which extension u can use also forcing to use Cam and microphone
2. So u can no longer block ads, extension to save our system from virus thus stealing your information and selling it.
Internet will no longer be open anymore.
3. Get commerce sites, banks, and digital content providers to widely adopt WEI for security benefits.
4. Require use of TPM signed OS to access said sites "securely".
5. Only sign systems with locked down execution environment to ensure integrity of system.
6. Censorship, spying, marketing and who knows what else.
7. malicious websites can then filter out traffic they don't want, and instead focus entirely on their specified victims.
8. search engine scrapers being unable to gather data. so no new search engine will ever develop.
9. this may affect dissidents and journalists that use secure software (TAILS, tor, etc) to communicate sensitive information. said secure software would probably not succeed a WEI test, and could thus make their work even more difficult than it is
Asking the user if they’d like to receive notifications the instant they visit a site is so dumb. As soon as the user hits no, that’s it, they’ve now been indefinitely banned from requesting that permission moving forward. Regardless of if the user might actually want it some day later on.
Safetynet will detect rooted device and block its access for banking apps
1, don't worry this is just an idea
2, don't worry this is just some personal project
3, don't worry this is just an internal discussion
4, don't worry this is just a closed test
5, yaaaaaa you have to update or you'll die, byyyyy
- chat
It's a DRM to be launched by google giving websites access to our device information.
https://m.youtube.com/watch?v=5joNRJ3C5ho&pp=ygUZU29tZW9yZGluYXJ5Z2FtaW5nIGdvb2dsZQ%3D%3D
https://github.com/RupertBenWiser/Web-Environment-Integrity/blob/main/explainer.md
ability for websites to detect your environment so that u can be trusted
- Open source note taking
https://www.youtube.com/watch?v=P8accXNcwjs
qownnotes
appflowy for notion
anytype for notion
joplin
zimnotes : have option of exporting html but only for pc
markor : for android
nextcloud for office 365
mattermost for teams
litexl for sublime text
https://www.youtube.com/@VideosByDefault/about
- Open source project
Lime text : foss alternative of sublime text
https://www.youtube.com/watch?v=oLrwk07zZ0Y
vaultwarden : password manager
padloc : password manager (stores data in `~/.local/share/app.padloc`)
https://github.com/k0gen/agora-wrapper : fileHosting
podman : docker alternative
libretube : youtube mirror
peer tube : youtube alternative . its french
syncting : airdroid alternative
https://blog.space-cloud.io/posts/top-5-opensource-heroku-alternatives/
- toggle list in markdown
```html
<details><summary>Click me</summary>
### Heading
1. Foo
2. Bar
- Baz
3. [Window Tiling in XFCE.mp4](:/b1511aa80cad4d8398847045a03c96be)
### Some Javascript
```js
function logSomething(something) {
console.log('Something', something);
}
```
</details>
```
- Joplin
https://github.com/laurent22/joplin/blob/dev/BUILD.md