diff options
| Commit | eb7c632ebf2b1dc5770e56ae62b7b00245bf1ffa (patch) | |
|---|---|---|
| Author | 2025-08-19 17:31:34 +0300 | |
| Committer | 2025-08-19 17:31:34 +0300 | |
| Files | 4a7070debc762138fb8485febadf79da683fcaa8 /src/blog | |
| syndamia.com-eb7c632ebf2b1dc5770e56ae62b7b00245bf1ffa.tar syndamia.com-eb7c632ebf2b1dc5770e56ae62b7b00245bf1ffa.tar.gz syndamia.com-eb7c632ebf2b1dc5770e56ae62b7b00245bf1ffa.zip | ||
| Parent | 5c65345ac0086e7b3d952e119ee8c1c788486410 (diff) | |
feat!: Merge tutorials into blog
A good amount of tutorial pages are more akin to blog posts than
tutorials. And even for the ones that are very much a "quick how-to", I
feel many blogs would include them as blog posts.
153 files changed, 2150 insertions, 4 deletions
diff --git a/src/blog/connect-to-mysql-in-dotnet-ef/img/about-workbench.png b/src/blog/connect-to-mysql-in-dotnet-ef/img/about-workbench.png Binary files differnew file mode 100644 index 0000000..067d8ce --- /dev/null +++ b/src/blog/connect-to-mysql-in-dotnet-ef/img/about-workbench.png diff --git a/src/blog/connect-to-mysql-in-dotnet-ef/img/connections.png b/src/blog/connect-to-mysql-in-dotnet-ef/img/connections.png Binary files differnew file mode 100644 index 0000000..aa7b408 --- /dev/null +++ b/src/blog/connect-to-mysql-in-dotnet-ef/img/connections.png diff --git a/src/blog/connect-to-mysql-in-dotnet-ef/img/workbench-version.png b/src/blog/connect-to-mysql-in-dotnet-ef/img/workbench-version.png Binary files differnew file mode 100644 index 0000000..bf5081d --- /dev/null +++ b/src/blog/connect-to-mysql-in-dotnet-ef/img/workbench-version.png diff --git a/src/blog/connect-to-mysql-in-dotnet-ef/index.du b/src/blog/connect-to-mysql-in-dotnet-ef/index.du new file mode 100644 index 0000000..5f0e968 --- /dev/null +++ b/src/blog/connect-to-mysql-in-dotnet-ef/index.du @@ -0,0 +1,78 @@ +# Connect to MySql in .NET and Entity Framework + +'define expected-reading 3 min +'define created 21 May 2020 +'define edited 19 June 2021 +[$pagenav] + +:contents +.numbered +1. [url #nuget-packages NuGet packages] +2. [url #connection-string Connection string] +3. [url #connecting Connecting] + .numbered + 1. [url #asp.net-startup ASP.NET Startup] + 2. [url #dbcontext-child-class DBContext child class] + + +I have found that connecting a `[.NET]` application to a `[MySql]` database (with Entity Framework) can be tricky. Here is what works for me. + +Also, [url https://www.nuget.org/packages/MySql.Data.EntityFrameworkCore/ MySql.Data.EntityFrameworkCore] has been =[depricated]= since *[October 2020]*. If you need setup instructions with it, read [url https://gitlab.com/Syndamia/syndamiadotcom/-/blob/0510e29526c6d7681587fff4c98a339e8c69e9b5/src/blog/connect-to-mysql-in-csharp-ef/article.md this]. + +## NuGet packages + +You'll need to install [url https://www.nuget.org/packages/Pomelo.EntityFrameworkCore.MySql/ Pomelo.EntityFrameworkCore.MySql]. It provides the stuff necessary for connecting and using a `[MySql]` database. + +## Connection string + +There are [url https://www.connectionstrings.com/mysql/ a lot] of ways to setup the connection string but I've found that this one works the best: + +``` +"server=localhost; port=YOUR-PORT; user id=YOUR-USER-ID; password=YOUR-PASSWORD; database=NAME-OF-DATABASE; SslMode=none" + +If you are using `[MySQL Workbench]` and you don't know your port and id, you can look at the server information from the `[MySQL Connections]` page. + +[image ./img/connections.png MyServer root 127.0.0.1:3306] In this example, the user id is _root_ and the port is _3306_. + +## Connecting + +To connect, you'll need to call the `[UseMySql]` method, either in [url #asp.net-startup ASP.NET Startup] or in a [url #dbcontext-child-class DBContext child class]. + +The method requires at least two arguments: connection string and `[MySql]` server version. The latter you can find, by going to the `[Help/About Workbench]` window inside `[MySQL Workbench]`. + +[image ./img/about-workbench.png] +[image ./img/workbench-version.png] + +For the server version argument, create a new object of type `[MySqlServerVersion]` and give it's constructor a new object of type `[Version]`, to which you give the version numbers. The result should look something like this: + +```c# +.UseMySql(CONNECTION_STRING, new MySqlServerVersion(new System.Version(8, 0, 21))) + +Where `[CONNECTION_STRING]` is a (constant) variable that contains your connection string, and 8, 0, 21 are the version numbers. + +### ASP.NET Startup + +For `[ASP.NET]` applications, the connection must be put inside the `[ConfigureServices]` method of the `[Startup.cs]` file. If you already have a `[.UseSQL]` method call in there, just replace it with your `[.UseMySql]` method and arguments. + +The result should look something along the lines of: + +```c# +// This method gets called by the runtime. Use this method to add services to the container. +public void ConfigureServices(IServiceCollection services) +{ + ... + services.AddDbContext<AppDbContext>(opt => + { + opt.UseMySql(...); + }); +} + +### DBContext child class + +Another way to connect is via a `[DBContext]` child class (so, inside your own DB context). Just, override the `[OnConfiguring]` method and call the `[.UseMySql]` method from the `[optionsBuilder]` parameter. + +```c# +protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) +{ + optionsBuilder.UseMySql(...); +} diff --git a/src/blog/disable-sticky-keys-popup/img/windows-make-keyboard-highlighted.png b/src/blog/disable-sticky-keys-popup/img/windows-make-keyboard-highlighted.png Binary files differnew file mode 100644 index 0000000..8a962ed --- /dev/null +++ b/src/blog/disable-sticky-keys-popup/img/windows-make-keyboard-highlighted.png diff --git a/src/blog/disable-sticky-keys-popup/img/windows-run-control-access.png b/src/blog/disable-sticky-keys-popup/img/windows-run-control-access.png Binary files differnew file mode 100644 index 0000000..60061c8 --- /dev/null +++ b/src/blog/disable-sticky-keys-popup/img/windows-run-control-access.png diff --git a/src/blog/disable-sticky-keys-popup/img/windows-sticky-keys-disable.png b/src/blog/disable-sticky-keys-popup/img/windows-sticky-keys-disable.png Binary files differnew file mode 100644 index 0000000..b5a2497 --- /dev/null +++ b/src/blog/disable-sticky-keys-popup/img/windows-sticky-keys-disable.png diff --git a/src/blog/disable-sticky-keys-popup/img/windows-sticky-keys-highlighted.png b/src/blog/disable-sticky-keys-popup/img/windows-sticky-keys-highlighted.png Binary files differnew file mode 100644 index 0000000..14c69b7 --- /dev/null +++ b/src/blog/disable-sticky-keys-popup/img/windows-sticky-keys-highlighted.png diff --git a/src/blog/disable-sticky-keys-popup/img/windows-sticky-keys-prompt.png b/src/blog/disable-sticky-keys-popup/img/windows-sticky-keys-prompt.png Binary files differnew file mode 100644 index 0000000..bb94caf --- /dev/null +++ b/src/blog/disable-sticky-keys-popup/img/windows-sticky-keys-prompt.png diff --git a/src/blog/disable-sticky-keys-popup/index.du b/src/blog/disable-sticky-keys-popup/index.du new file mode 100644 index 0000000..4826ea7 --- /dev/null +++ b/src/blog/disable-sticky-keys-popup/index.du @@ -0,0 +1,31 @@ +# How to disable Sticky Keys prompt + +'define expected-reading 1 min +'define created 01 November 2021 +'define edited 01 November 2021 +[$pagenav] + +We've all been there: you're playing a game and after pressing `[Shift]` multiple times, you get a popup about "Sticky Keys", similar to this one: + +[image ./img/windows-sticky-keys-prompt.png] + +This is how to stop the popup from showing up ever again: + +:ordered +1. Press =[Windows key + R]=, type in `[control access.cpl]`, and then press =[OK]= + + [image ./img/windows-run-control-access.png] + +2. Inside the opened up window, press =[Make the keyboard easier to use]= + + [image ./img/windows-make-keyboard-highlighted.png] + +3. After that, press =[Set up Sticky Keys]= + + [image ./img/windows-sticky-keys-highlighted.png] + +4. Uncheck the =[Turn on Sticky Keys when SHIFT is pressed five times]= + + [image ./img/windows-sticky-keys-disable.png] + +5. Finally, press =[OK]= and close the window diff --git a/src/blog/encrypted-email/index.du b/src/blog/encrypted-email/index.du index 8102dcf..8051eb5 100644 --- a/src/blog/encrypted-email/index.du +++ b/src/blog/encrypted-email/index.du @@ -27,7 +27,7 @@ When you try and look around for articles, regarding encrypted emails, all you'll find is people complaining about it's difficulties and shortcomings. But, no one actually explains what to do if you, nevertheless, want to encrypt your emails! At best most articles will just [url https://www.virtru.com/blog/arent-people-using-email-encryption shove some product up your face]. -That's why, after a fairly lengthy research process, I've decided to do just that. These are the more common ways to encrypt your email with their strengths and weaknesses. I also wrote a (somewhat rough) [url /tutorials/how-to-encrypt-email tutorial on how to setup] [url #openpgp OpenPGP] or [url #smime S/MIME] in practice. +That's why, after a fairly lengthy research process, I've decided to do just that. These are the more common ways to encrypt your email with their strengths and weaknesses. I also wrote a (somewhat rough) [url /blog/how-to-encrypt-email tutorial on how to setup] [url #openpgp OpenPGP] or [url #smime S/MIME] in practice. *[Note:]* What I'm referring to is end-to-end encryption, where you send an encrypted email, and the recipient decrypts it. Encryption between you and a mail server is practically a given and is setup by the mail server administrator. diff --git a/src/blog/export-skype/img/archived-conversations-skype-default.png b/src/blog/export-skype/img/archived-conversations-skype-default.png Binary files differnew file mode 100644 index 0000000..7b301fa --- /dev/null +++ b/src/blog/export-skype/img/archived-conversations-skype-default.png diff --git a/src/blog/export-skype/img/available-exports.png b/src/blog/export-skype/img/available-exports.png Binary files differnew file mode 100644 index 0000000..601231e --- /dev/null +++ b/src/blog/export-skype/img/available-exports.png diff --git a/src/blog/export-skype/img/choose-file.png b/src/blog/export-skype/img/choose-file.png Binary files differnew file mode 100644 index 0000000..79838d5 --- /dev/null +++ b/src/blog/export-skype/img/choose-file.png diff --git a/src/blog/export-skype/img/default-skype-parser-index.png b/src/blog/export-skype/img/default-skype-parser-index.png Binary files differnew file mode 100644 index 0000000..bff4501 --- /dev/null +++ b/src/blog/export-skype/img/default-skype-parser-index.png diff --git a/src/blog/export-skype/img/download-button.png b/src/blog/export-skype/img/download-button.png Binary files differnew file mode 100644 index 0000000..aea6358 --- /dev/null +++ b/src/blog/export-skype/img/download-button.png diff --git a/src/blog/export-skype/img/export-prepared.png b/src/blog/export-skype/img/export-prepared.png Binary files differnew file mode 100644 index 0000000..626aca2 --- /dev/null +++ b/src/blog/export-skype/img/export-prepared.png diff --git a/src/blog/export-skype/img/github-skype-parser-download.png b/src/blog/export-skype/img/github-skype-parser-download.png Binary files differnew file mode 100644 index 0000000..6a99f0b --- /dev/null +++ b/src/blog/export-skype/img/github-skype-parser-download.png diff --git a/src/blog/export-skype/img/initial-screen.png b/src/blog/export-skype/img/initial-screen.png Binary files differnew file mode 100644 index 0000000..d5cf5ff --- /dev/null +++ b/src/blog/export-skype/img/initial-screen.png diff --git a/src/blog/export-skype/index.du b/src/blog/export-skype/index.du new file mode 100644 index 0000000..b9046b2 --- /dev/null +++ b/src/blog/export-skype/index.du @@ -0,0 +1,88 @@ +# How to export Skype data + +'define expected-reading 3 min +'define created 03 October 2021 +'define edited 03 October 2021 +[$pagenav] + +:contents +.numbered +1. [url #downloading-files Downloading files] +2. [url #viewing-your-export-official-tool Viewing your export - Official Tool] +3. [url #viewing-your-export-artemveremienko-fork Viewing your export - ArtemVeremienko Fork] + + +Skype has always allowed to export your chat history (and files), but it's not as straight forward as it should. +Continue reading for the required steps on doing it. + +## Downloading files + +:ordered +1. Open [url https://secure.skype.com/en/data-export secure.skype.com/en/data-export] + + .unordered + - You could be asked to sign in. + After signing in you'll need to *[open the link again]*, since you would be redirected to the wrong place. + +2. After opening the link you should be greeted by something like this. + Check the two checkboxes next to =[Conversations]= and =[Files]= *[(pointed to by the red arrows)]*. + + [image ./img/initial-screen.png] + +3. Press =[Submit request]=. + After being greeted by this screen, press =[Continue]=. + + [image ./img/export-prepared.png] + + .bulleted + - You should now see an =[Available exports]= section near the top of the page. + The status will be =[Pending]=. + .p [image ./img/available-exports.png] + +5. Reload the page after a bit of time. When your export is ready, you'll find a =[Download]= button next to it, click it. + + [image ./img/download-button.png] + + +Your export will be downloaded as a `[.tar]` archive file. +You'll need an archiver utility to extract the files, something like [url https://www.rarlab.com/download.htm WinRAR] or [url https://www.7-zip.org/ 7-Zip] *[(I personally recommend 7-Zip, it is completely free (no need to worry about your [url https://youtu.be/fTgZRVVr3_Y infinite trial]) and works faster)]*. + +## Viewing your export - Official Tool + +:ordered +1. Extract your archive + +2. Open the [url https://go.skype.com/skype-parser Skype Parser Download], which will prompt you to save `[skype-parser.zip]` + +3. Extract `[skype-parser.zip]` + +4. Inside the `[skype-parser]` folder, open `[index.html]` (it might be named just `[index]`). You'll be greeted by this page in your browser: + [image ./img/default-skype-parser-index.png] + +5. Click the `[Choose File]` option and select the `[messages.json]` (it might be named just `[messages]`) file from your export. + [image ./img/choose-file.png] + +6. Press the `[Load]` button right below, and you're done. + On the left side you have your conversations, and when opening one, your messages will be displayed to the right (just like in Skype itself) + [image ./img/archived-conversations-skype-default.png] + + +There is only one issue with this method - the official tool is somewhat broken. +Images and links are shown as formatting codes, but you can't actually look at them as you would in Skype itself. + +The fix is using an alternative to the official tool. + +## Viewing your export - ArtemVeremienko Fork + +[url https://github.com/ArtemVeremienko ArtemVeremienko] is a GitHub user that took the official parser and fixed it. +Their source code can be found over at [url https://github.com/ArtemVeremienko/skype-parser github.com/ArtemVeremienko/skype-parser]. + +:ordered +1. Go to the [url https://github.com/ArtemVeremienko/skype-parser/releases/latest latest release of his skype-parser] and download `[skype-parser.zip]` + + [image ./img/github-skype-parser-download.png] + +2. Extract all of the files. + They'll be in the same folder as the `[skype-parser.zip]` file, so find the `[index.html]` file and open it. + +3. Continue from step 5 onward of the [url #viewing-your-export-official-tool Viewing your export - Official Tool] section diff --git a/src/blog/fix-network-brother-printers/index.du b/src/blog/fix-network-brother-printers/index.du new file mode 100644 index 0000000..c6ac699 --- /dev/null +++ b/src/blog/fix-network-brother-printers/index.du @@ -0,0 +1,85 @@ +# Fix networked Brother printers not working in Linux + +'define expected-reading 4 min +'define created 28 June 2023 +'define edited 28 June 2023 +[$pagenav] + +Before we start, make sure you have CUPS and avahi installed and running. + +## Make sure CUPS recognises it + +Go to [url https://localhost:631/printers/ localhost:631/printers] and make sure your printer is listed there. +If =[not]=, go to `[Administration/Add Printer]` and select your printer. +If it's =[not]= listed even there, then you have some other network connectivity issue. + +Otherwise [url #try-to-print-a-test-page try to print a test page]. + +### Check if it =[is]= recognised on the network. + +Execute in the command line: + +```bash +avahi-browse --all -t -r + +There will be a lot of output, but scroll down until you find something *[like]*: + +``` += enp0s25 IPv4 Brother HL-L2350DW series _pdl-datastream._tcp local +hostname = [BRW9C305B9EC83D.local] +address = [192.168.0.110] + +The exact values aren't important, just make sure the part after IPv4 is the model of your printer. +`[address]` is the local printer address, ping it. +In this example, the command would be: + +```bash +ping 192.168.0.110 + +.bulleted +- If the ping is successful, you might also want to put that IP address in your browser. + With the example, you would open the link `[http://192.168.0.110]`. + Your printer =[may]= or =[may not]= support Web Based Management, which would allow you to edit it's setting from the browser. + If the page isn't available, don't worry about it. + +If output is =[not]= something like `[64 bytes from ...]` (so, if it is `[Destination Host Unreachable]` or ping just hangs, without output), then it's an issue with your network or printer network configuration. +Make sure the printer is properly connected to the network.\n + +Otherwise, this shows that your computer has network access to the printer, and all problems are local. + +### Check if your printer is supported by Linux. + +Go to [url https://www.openprinting.org/printers www.openprinting.org/printers] and enter your model. +If it isn't listed then it doesn't work for sure. +Alternatively, if it is and the rating [url https://wiki.linuxfoundation.org/openprinting/database/databaseintro#about_the_data isn't "Perfectly"], then read the whole page, in case networking is listed as nonfunctional. +If it =[is]= supported, then: + +### Check if there are drivers available + +Run in the command line: + +```bash +lpinfo -v + +If you only get entries like `[network WORD]`, without anything which looks like a URL (URI), then you may not have a working driver. +Make sure you have installed any or tried all of the drivers listed in the printer's [url https://www.openprinting.org/printers www.openprinting.org] page. + +## Try to print a test page + +If it is recognised, click on it on the "Queue Name" column, then press "Maintenance" and select "Print test page". +Go back and you should find an entry under "Active jobs listed in processing order", at the bottom of the page. +After a little while, the "State" should change from "pending" to "processing" (make sure to refresh the page). + +### Unable to locate printer "SOMETHING.local" + +If you also have the error "Unable to locate printer "SOMETHING.local"." (obviously SOMETHING is the exact value you get), then that means the printer is accessed via the domain name "SOMETHING.local". +`[.local]` domains require a special DNS server to be resolved, so inside `[/etc/nsswitch.conf]`, on the line that starts with `[hosts]`, add to it's end the value `[mdns_minimal]`. +It should look something like: + +``` +hosts: files dns mdns_minimal + +After saving your changes, your printer should pretty quickly start printing the test page, no need to restart anything. + +.bulleted +- if your printer supports Web Based Management, then you should be able to go open the page `[http://SOMETHING.local]` in your browser and edit your printer settings from there. diff --git a/src/blog/fix-no-frame-buffer-plan9/img/boot-prompt-monitor.png b/src/blog/fix-no-frame-buffer-plan9/img/boot-prompt-monitor.png Binary files differnew file mode 100644 index 0000000..788e872 --- /dev/null +++ b/src/blog/fix-no-frame-buffer-plan9/img/boot-prompt-monitor.png diff --git a/src/blog/fix-no-frame-buffer-plan9/img/boot-prompt-no-frame-buffer-error.png b/src/blog/fix-no-frame-buffer-plan9/img/boot-prompt-no-frame-buffer-error.png Binary files differnew file mode 100644 index 0000000..442fa4b --- /dev/null +++ b/src/blog/fix-no-frame-buffer-plan9/img/boot-prompt-no-frame-buffer-error.png diff --git a/src/blog/fix-no-frame-buffer-plan9/img/manual-prompt.png b/src/blog/fix-no-frame-buffer-plan9/img/manual-prompt.png Binary files differnew file mode 100644 index 0000000..4b3d0c8 --- /dev/null +++ b/src/blog/fix-no-frame-buffer-plan9/img/manual-prompt.png diff --git a/src/blog/fix-no-frame-buffer-plan9/img/manual-rio.png b/src/blog/fix-no-frame-buffer-plan9/img/manual-rio.png Binary files differnew file mode 100644 index 0000000..64aab43 --- /dev/null +++ b/src/blog/fix-no-frame-buffer-plan9/img/manual-rio.png diff --git a/src/blog/fix-no-frame-buffer-plan9/img/rio-9fat-commands.png b/src/blog/fix-no-frame-buffer-plan9/img/rio-9fat-commands.png Binary files differnew file mode 100644 index 0000000..2609c11 --- /dev/null +++ b/src/blog/fix-no-frame-buffer-plan9/img/rio-9fat-commands.png diff --git a/src/blog/fix-no-frame-buffer-plan9/img/rio-default-login.png b/src/blog/fix-no-frame-buffer-plan9/img/rio-default-login.png Binary files differnew file mode 100644 index 0000000..7367503 --- /dev/null +++ b/src/blog/fix-no-frame-buffer-plan9/img/rio-default-login.png diff --git a/src/blog/fix-no-frame-buffer-plan9/img/rio-plan9ini-cat.png b/src/blog/fix-no-frame-buffer-plan9/img/rio-plan9ini-cat.png Binary files differnew file mode 100644 index 0000000..02e9034 --- /dev/null +++ b/src/blog/fix-no-frame-buffer-plan9/img/rio-plan9ini-cat.png diff --git a/src/blog/fix-no-frame-buffer-plan9/index.du b/src/blog/fix-no-frame-buffer-plan9/index.du new file mode 100644 index 0000000..4e9c877 --- /dev/null +++ b/src/blog/fix-no-frame-buffer-plan9/index.du @@ -0,0 +1,90 @@ +# Fix "No frame buffer" error in Plan 9 + +'define expected-reading 3 min +'define created 30 July 2022 +'define edited 30 July 2022 +[$pagenav] + +Let's say you installed [url https://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs Plan 9 by Bell Labs] on a QEMU/KVM virtual machine by just following the prompts and entering defaults. In certain cases, you might find your install booting to a shell with the errors: + +``` +aux/vga: inportl(0xc100): permission denied +rio: can't open display: initdisplay: /dev/draw/new: no frame buffer +init: rc exit status: rio 31: display open + +[image ./img/boot-prompt-no-frame-buffer-error.png] + +For some reason, on certain configurations, the `[xga]` (`[vga]`) monitor type does not work when booting into Plan 9, even though it works fine during install. The fix is to adjust monitor settings to `[vesa]`: + +:ordered +1. In the shell prompt enter + + ``` +aux/vga -m vesa -l + + You should get a cursor and a cleared prompt. + + [image ./img/manual-prompt.png] + +2. In this "new" shell prompt, enter + + ``` +rio + + You should now get a grey background with the cursor in it. + + [image ./img/manual-rio.png] + + .bulleted + - You are now in a graphical environment, so technically you can stop here. The other steps are for configuring it so you wont ever have that problem again. + +3. Create a new window (refer to the bullet point for instructions). Enter + + ``` +9fat: + + and afterwards + + ``` +sam /n/9fat/plan9.ini + + this is the configuration file we will be changing. + + [image ./img/rio-9fat-commands.png] + + .bulleted + - How to make a window: right click, hold, hover over "New" and release the right click. Now right click somewhere in the top left, hold, drag to somewhere in bottom right, release. + +4. Now we will be editing the config file with sam, a line editor. Click the green-backgrounded box, the cursor should appear. + First select our file: + + ``` +b /n/9fat/plan9.ini + + and click the green-backgrounded box. + Then replace `[xga]` with `[vesa]`: + + ``` +, x/xga/ s/xga/vesa + + and click the green-backgrounded box again. We're almost done here, enter `[w]`, wait a bit, and finally enter `[q]`. + + :unordered + - If you want to check whether the file was properly saved, feel free to run + + ``` +cat /n/9fat/plan9.ini + + and check that monitor is equal to vesa (you can scroll with the arrow keys, or with left and right mouse buttons, acting as up and down). + + [image ./img/rio-plan9ini-cat.png] + + - The first command opens the `[plan9.ini]` file for editing, and the second command, finds every line that contains `[xga]` (there should probably be only one) and on each matching line replaces `[xga]` with `[vesa]`. Refer to the [url https://p9f.org/sys/doc/sam/sam.html docs] for more information. + + +5. That's it, all we have to do is halt our file system with `[fshalt]` (or type out the command in the [url https://9p.io/wiki/plan9/Installing_Plan_9_on_Qemu/ Qemu installation guide]) and Force Reset the virtual machine. + + +The next time you boot into Plan 9 and into your user, the graphical environment should load fine. Enjoy Plan 9! + +[image ./img/rio-default-login.png] diff --git a/src/blog/fix-qc-timeout/index.du b/src/blog/fix-qc-timeout/index.du new file mode 100644 index 0000000..d36383d --- /dev/null +++ b/src/blog/fix-qc-timeout/index.du @@ -0,0 +1,62 @@ +# Fix "qc timeout" kernel log error + +'define expected-reading 4 min +'define created 16 December 2023 +'define edited 16 December 2023 +[$pagenav] + +Depending on your harddrive, you may get a 15 second delay on boot. +Looking at the kernel logs (with `[dmesg]`), you may find the following errors: + +``` +kernel: ata1.00: qc timeout after 15000 msecs (cmd 0x47) +kernel: ata1.00: Read log 0x00 page 0x00 failed, Emask 0x40 +kernel: ata1.00: NCQ Send/Recv Log not supported +kernel: ata1.00: Read log 0x00 page 0x00 failed, Emask 0x40 +kernel: ata1.00: ATA Identify Device Log not supported + +## Solution + +Add a kernel parameter which tells Linux that the drive doesn't support DMA logs.\n +Meaning, add the following parameter: + +``` +libata.force=1.00:nodmalog + +where `[1.00]` is the thing between "ata" and ":". + +So, if your logs were + +``` +kernel: ata3.01: qc timeout after 15000 msecs (cmd 0x47) +... + +then the parameter would be: + +``` +libata.force=3.01:nodmalog + +## Explanation + +.important +The following is how I understand the issue, but I did not find definitive proof thats exactly what happens.\n +Take this section with a grain of salt. + +A harddrive can support [url https://en.wikipedia.org/wiki/Direct_memory_access dma transfers], normally the CPU would handle data transfer from the harddrive to the system memory (RAM), meaning it asks for a bit of data, waits, when the data comes, puts it in memory, then asks for next bit and so on. +With DMA, the CPU could ask the drive for everythng it wants (not a tiny bit), and then the DMA controller (DMAC) on the drive will handle the actual data transfer from the drive to the memory (when the transfer is done, the drive will tell the CPU). +The benefit is that the CPU can do other work while the transfer is going on, greatly improving efficiency, but the downside is that the harddrive has to support it (have a DMAC chip on it). + +Normally it would be useful for the DMAC to keep logs in a special place on the drive. +This is where the issue comes from: your harddrive supports DMA but does not support logs for it. +However, the Linux kernel has no good way of knowing that, there is no "property" on the drive which tells us this. +The only way is to try and read from that log: if it succeeds, then there is support, if it fails, then there isn't. + +But what does it mean to fail? +The simplest definition would be for the drive to return an error singal, but in our case, the drive would just not return anything, ignoring our request. +In that case, how would we know if the drive just doesn't know how to respond (meaning it doesn't support the logs) or if it's just very slow? +Well, we can't, so we put a time limit, if it doesn't respond in 15 seconds, then it probably doesn't support it. + +That's what the error is saying: `[qc]` is short for [url https://docs.kernel.org/driver-api/libata.html#origins-of-commands "queued command"], it's used to represent a (S)ATA command (hence the `[cmd]` at the end, telling us which command it's referring to). +So, the kernel is telling us "The hard drive (ATA) command to read (DMA) logs timed out after 15 seconds" (it first says a command timed out, then it says which one). + +By adding that kernel parameter, we're telling Linux that the drive doesn't support DMA logs, therefore the kernel doesn't need to do this "wait 15 seconds for response if support exists" routine. diff --git a/src/blog/gns3-initsh-no-such-file/index.du b/src/blog/gns3-initsh-no-such-file/index.du new file mode 100644 index 0000000..2b6f908 --- /dev/null +++ b/src/blog/gns3-initsh-no-such-file/index.du @@ -0,0 +1,27 @@ +# Fix "exec /gns3/init.sh: no such file or directory" + +'define expected-reading 1 min +'define created 14 June 2023 +'define edited 14 June 2023 +[$pagenav] + +This problem can easily occur on new installations and can be hard to figure out. +In a [url https://github.com/GNS3/gns3-server/issues/2069#issuecomment-1296741195 GitHub issue], the solution that fixed it for me was using Debian's busybox: + +:ordered +0. Get into a temporary folder + + ```bash +cd /tmp + +1. Get and extract the Debian binary + + ```bash +wget -q http://launchpadlibrarian.net/471755664/busybox-static_1.30.1-4ubuntu6_amd64.deb +ar x busybox-static_1.30.1-4ubuntu6_amd64.deb +tar -xf data.tar.xz + +2. Move it to the proper location, your path may differ slightly + + ```bash +sudo mv ./bin/busybox /usr/lib/python3.11/site-packages/gns3server/compute/docker/resources/bin/busybox diff --git a/src/blog/how-to-encrypt-email/index.du b/src/blog/how-to-encrypt-email/index.du new file mode 100644 index 0000000..403bde9 --- /dev/null +++ b/src/blog/how-to-encrypt-email/index.du @@ -0,0 +1,263 @@ +# How to encrypt email + +'define expected-reading 5 min +'define created 16 September 2022 +'define edited 16 November 2022 +[$pagenav] + +:contents +:numbered +1. [url #getting-keys Getting keys] + :numbered + 1. [url #pgp PGP] + .numbered + 1. [url #pgptool.org pgptool.org] + 2. [url #gnu-privacy-guard GNU Privacy Guard] + + 2. [url #smime S/MIME] + + +2. [url #exchanging-keys Exchanging keys] +3. [url #configuring-clients Configuring clients] + + + +In [url /blog/encrypted-email this] blog post I shared the most common technologies for email encryption and a bit of how they work. PGP and S/MIME are the most popular schemes, with support from a lot of clients. + +These are all the steps required to go from having no encryption, to encrypting all of your future emails. + +## Getting keys + +PGP and S/MIME are both built upon [url https://en.wikipedia.org/wiki/Public-key_cryptography public-key cryptography] so you and all of your recipients need to have a pair of public and private keys. + +### PGP + +As [url /blog/encrypted-email/#pgp discussed], PGP relies on a [url https://en.wikipedia.org/wiki/Web_of_trust web of trust], meaning you can generate your keys by yourself. + +#### pgptool.org + +By far, the easiest way to do this is via the website [url https://pgptool.org/ pgptool.org]. Just open the link, fill out your details, select the recommended values (select never as your expiration time) and wait a couple minutes. After they are done, you can click the two red buttons to download your public and private keys. + +#### GNU Privacy Guard + +As an alternative, you can use a desktop program. The most popular one is [url https://www.gnupg.org/ GNU Privacy Guard] (GPG for short). It is [url https://gnupg.org/download/#binary available] on most desktop operating systems, including [url https://gpg4win.org/download.html Windows] and [url https://gpgtools.org/ MacOS]. + +The *[Windows]* version comes with a graphical user interface, so it's easiest to use that: + +:ordered +1. Open the application "Kleopatra" + +2. Click on `[File]` -> `[New Certificate]` + +3. Input your details and press `[OK]` + .bulleted + - Feel free to click on `[Advanced Settings]` and look if if the value for `[RSA]` is `[4096 bit]`, the value for `[+ RSA]` is enabled and is `[4096 bits]`, and finally both `[Signing]` and `[Authentication]` are selected + +4. On the next screen, press `[Create]` + +5. You'll be asked for a password. Make one up, and enter it, but do not forget it! + .bulleted + - The password is used for your private key. If anyone gets ahold if it, they =[will]= be able to impersonate you. A password makes sure that doesn't happen, at least until you tell everyone that your key was leaked. + +6. On the final screen, click `[Finish]` + +7. To help with the next chapter, we'll extract your public key. In "Kleopatra" you should see a line, containing your name and email. Right-click on it, and select `[Export Certificate]`. + + +On *[Linux]* and *[MacOS]*, you can use the command line: + +:ordered +1. Enter this command in your favorite terminal + + ```bash +gpg --full-generate-key + +2. Follow the prompt on the screen (sample pictures available in [url https://www.encryptionconsulting.com/how-to-generate-pgp-key-pair/ encryptionconsulting.com]) + +3. Export your public key (of course, change me@email.com and the location to the one you want, but don't forget the .asc extension) + + ```bash +gpg --armor --export me@email.com > ~/Documents/me-email.com-publickey.asc + + +### S/MIME + +Contrary to PGP, S/MIME relies on a certificate authority, meaning you'll have to buy your keys from someone. Any provider from [url https://support.google.com/a/answer/7448393?hl=en&ref_topic=9061730 Google]'s list of trusted CAs will work. + +Currently, the only one that provides free certificates is [url https://www.actalis.com/s-mime-certificates.aspx Actalis]. Their process is pretty straight forward, just follow the instructions (shown in [url https://www.dannyguo.com/blog/how-to-get-a-free-s-mime-certificate/ this] article). + +## Exchanging keys + +You should now have a text file with your public key in it. When you want to send an encrypted email to someone, ask them for their public key, and meanwhile send them your public key. It doesn't matter how you do that, even if it's with unencrypted emails. + +Remember, =[never]= send your =[private]= key to anyone! + +## Configuring clients + +Now we need to configure your email application to automatically encrypt and decrypt messages. There are a lot of email clients, so I have compiled the most used ones and linked resources on how to set them up. + +When writing a message, don't forget to check if encryption is turned on for this email! On most clients, in the compose window, you'll have to select an option to enable encryption, but others do that automatically. + +*[Freemium means it has a free and a paid tier. Premium means you have to pay for it. FOSS means it's free and open source. FreemiumOSS means it is free and open source, but also has paid tiers.]* + +:table +|= Client =||= Type =||= Platform =||= PGP/Inline =||= PGP/MIME =||= S/MIME =| + +|= Web =||::||::||::||::||::| + +|:Gmail:| + |:Freemium:| + |:Web:| + |:[url https://flowcrypt.com/ Yes]^[[url #1 1]]^:| + |:[url https://flowcrypt.com/ Yes]^[[url #1 1]]^:| + |:[url https://support.google.com/a/answer/6374496?hl=en&ref_topic=9061730 Yes]^[[url #2 2]]^:| + +|:Outlook:| + |:Freemium:| + |:Web:| + |:No:| + |:No:| + |:[url https:://support.microsoft.com/en-us/office/encrypt-email-messages-373339cb-bf1a-4509-b296-802a39d801dc#bkmk_encryptwithsmime Yes]^[[url #2 2]]^:| + +|:iCloud mail:| + |:Freemium:| + |:Web:| + |:[url https://support.apple.com/en-us/HT201214 Yes]:| + |:[url https://support.apple.com/en-us/HT201214 Yes]:| + |:[url https://support.apple.com/en-us/HT202345 Yes]:| + +|:Yahoo!:| + |:Freemium:| + |:Web:| + |:No:| + |:No:| + |:No:| + +|:Protonmail:| + |:Freemium:| + |:Web:| + |:[url https://proton.me/support/how-to-use-pgp Yes]:| + |:[url https://proton.me/support/how-to-use-pgp Yes]:| + |:No:| + +|:Roundcube:| + |:Self-hosted:| + |:Web:| + |:[url https://github.com/roundcube/roundcubemail/tree/master/plugins/enigma Yes]^[[url #1 1]]^:| + |:[url https://github.com/roundcube/roundcubemail/tree/master/plugins/enigma Yes]^[[url #1 1]]^:| + |:[url https://github.com/roundcube/roundcubemail/issues/4977 No]:| + +|:Rainloop:| + |:Self-hosted:| + |:Web:| + |:Yes:| + |:[url https://github.com/RainLoop/rainloop-webmail/issues/1798 No]:| + |:No:| + +|= Desktop =||::||::||::||::||::| + +|:Thunderbird:| + |:FOSS:| + |:Windows, MacOS, Linux:| + |:[url https://support.mozilla.org/en-US/kb/openpgp-thunderbird-howto-and-faq#w_i-have-never-used-openpgp-with-thunderbird-before-how-do-i-setup-openpgp Yes]:| + |:[url https://support.mozilla.org/en-US/kb/openpgp-thunderbird-howto-and-faq#w_i-have-never-used-openpgp-with-thunderbird-before-how-do-i-setup-openpgp Yes]:| + |:[url https://support.mozilla.org/en-US/kb/openpgp-thunderbird-howto-and-faq Yes]:| + +|:Outlook:| + |:Premium:| + |:Windows, MacOS:| + |:No:| + |:No:| + |:[url https://support.microsoft.com/en-us/office/encrypt-email-messages-373339cb-bf1a-4509-b296-802a39d801dc#bkmk_encryptwithsmime Yes]:| + +|:Mailbird:| + |:Premium:| + |:Windows:| + |:[url https://mailbird.featureupvote.com/suggestions/74494/pgp-encryption-support No]:| + |:[url https://mailbird.featureupvote.com/suggestions/74494/pgp-encryption-support No]:| + |:[url https://mailbird.featureupvote.com/suggestions/160861/smime-support No]:| + +|:Evolution:| + |:FOSS:| + |:Linux:| + |:[url https://help.gnome.org/users/evolution/stable/mail-encryption-gpg-set-up.html.en Yes]:| + |:[url https://help.gnome.org/users/evolution/stable/mail-encryption-gpg-set-up.html.en Yes]:| + |:[url https://help.gnome.org/users/evolution/stable/mail-encryption-s-mime-manage.html.en Yes]:| + +|:Sylpheed:| + |:FOSS:| + |:Windows, MacOS, Linux:| + |:[url https://sylpheed.sraoss.jp/doc/manual/en/sylpheed-8.html#ss8.2 Yes]:| + |:[url https://sylpheed.sraoss.jp/doc/manual/en/sylpheed-8.html#ss8.2 Yes]:| + |:[url https://www.sraoss.jp/pipermail/sylpheed/2011-May/004551.html No]:| + +|:Claws-mail:| + |:FOSS:| + |:Windows, Linux:| + |:[url https://claws-mail.org/plugin.:php?plugin=gpg Yes]^[[url #1 1]]^:| + |:[url https://claws-mail.org/plugin.php?plugin=gpg Yes]^[[url #1 1]]^:| + |:[url https://claws-mail.org/plugins.php Yes]^[[url #1 1]]^:| + +|= Mobile =||::||::||::||::||::| + +|:Gmail:| + |:Free:| + |:Android, iOS:| + |:No:| + |:No:| + |:Yes^[[url #3: 3]]^:| + +|:Outlook:| + |:Free:| + |:Android, iOS:| + |:No:| + |:No:| + |:Yes^[[url #3: 3]]^:| + +|:Apple Mail :| + |:Free:| + |:iOS:| + |:Yes:| + |:Yes:| + |:Yes:| + +|:Yahoo!:| + |:Free:| + |:Android, iOS:| + |:No:| + |:No:| + |:No:| + +|:Edison:| + |:Free:| + |:Android, iOS:| + |:No:| + |:No:| + |:No:| + +|:Protonmail:| + |:Free:| + |:Android, iOS:| + |:[url https://proton.me/support/how-to-use-pgp Yes]:| + |:[url https://proton.me/support/how-to-use-pgp Yes]:| + |:No:| + +|:K-9 Mail:| + |:FOSS:| + |:Android:| + |:[url https://docs.k9mail.app/en/current/security/pgp/ Yes]:| + |:[url https://docs.k9mail.app/en/current/security/pgp/ Yes]:| + |:[url https://docs.k9mail.app/en/current/security/overview/#end-to-end-encryption No]:| + +|:FairEmail:| + |:FreemiumOSS:| + |:Android:| + |:[url https://github.com/M66B/FairEmail/blob/master/FAQ.md Yes]:| + |:[url https://github.com/M66B/FairEmail/blob/master/FAQ.md Yes]:| + |:[url https://github.com/M66B/FairEmail/blob/master/FAQ.md Yes]^[[url #* *]]^:| + + +<sup id="1">1</sup> Available with an extension/plugin\n +<sup id="2">2</sup> Available in a paid version of the software (assuming the software is Freemium; this is true for all Premium software)\n +<sup id="3">3</sup> Available with a Premium account (even if the software is Free)\n +<sup id="*">*</sup> You can read S/MIME messages, but signing and encrypting is a pro feature diff --git a/src/blog/how-to-use-jira/bug.du b/src/blog/how-to-use-jira/bug.du new file mode 100644 index 0000000..fcd51e3 --- /dev/null +++ b/src/blog/how-to-use-jira/bug.du @@ -0,0 +1,21 @@ +# Bug tracking template - How to use Jira + +'define expected-reading 1 min +'define created 24 July 2020 +'define edited 16 September 2020 +[$pagenav] + +'define start_link ./ +'define prev_link ./scrum.html Scrum template +'define next_link ./releases.html Releases +[$pagination_middle] + +The Bug Tracking template is completely different from the [url ./scrum.html Scrum] and [url ./kanban.html Kanban] templates, because it =[offers only issue tracking]=. + +=[There are no boards, no cards, no backlog]=. All issues are accessed from the `[Issues]` page from the sidebar. + +[image ./img/issues-sidebar.png] + +That's why this template is =[available only when creating a project]=. + +Of course, =[you can add boards at any time]=, but this project template doesn't add any by itself. diff --git a/src/blog/how-to-use-jira/cards.du b/src/blog/how-to-use-jira/cards.du new file mode 100644 index 0000000..03d0ed4 --- /dev/null +++ b/src/blog/how-to-use-jira/cards.du @@ -0,0 +1,161 @@ +# Cards - How to use Jira + +'define expected-reading 4 min +'define created 24 July 2020 +'define edited 03 June 2021 +[$pagenav] + +'define start_link ./ +'define prev_link ./filters.html Filters +'define next_link ./projects.html Projects +[$pagination_middle] + +.contents +.numbered +1. [url #properties Properties] +2. [url #creating Creating] +3. [url #viewing Viewing] +4. [url #how-to-use How to use] + .numbered + 1. [url #right-side Right side] + 2. [url #work-log Work log] + 3. [url #issue-flagging Issue flagging] + 4. [url #basic-issue-information Basic issue information] + +=[Each issue is represented as an object with properties]=. More specifically, these objects are called 'cards'. + +[image ./img/kanban-cards.png] + +## Properties + +Each card has the following properties: + +[image ./img/fields-cards.png] + +:unordered +- =[Project]= - the [url ./projects.html project] this card is stored in + + [image ./img/project-create-card.png] + +- =[Issue type]= - the basic purpose of an issue (Improvement, Bug, ...) + + [image ./img/issue-types.png] + + :bulleted + - [image ./img/story-type.png Story] - functionality or feature expressed as a goal, something like "As a user, I want to be able to pay for my order via PayPal" + + - [image ./img/bug-type.png Bug] - a problem/error + + - [image ./img/epic-type.png Epic] - a collection of issues, issues are linked through 'Epic link' (see below) + + - [image ./img/task-type.png Task] - a small piece of work + + - [image ./img/sub-task-type.png Sub-task] - an issue that is directly connected to another issue. This is used for when a given issue needs to be broken down into separate even smaller issues. + + +- =[Summary]= - a (required) brief explanation of the issue + + [image ./img/summary-create-card.png] + +- =[Description]= - detailed explanation of the issue + + [image ./img/description-create-card.png] + +- =[Reporter]= - person who created the issue + + [image ./img/reporter-create-card.png] + +- =[Assignee]= - person who will work on the issue + + [image ./img/assignee-create-card.png] + +- =[Labels]= - tags with which you can organise even more the issue + + [image ./img/label-create-card.png] + +- =[Epic link]= - link of issue with type Epic + + [image ./img/epic-link-create-card.png] + + +## Creating + +To create a card yourself, you need to =[press the `[Create]` button on the top bar]=. + +[image ./img/create-header.png] + +## Viewing + +=[All]= cards (issues) can be viewed from a [url ./projects.html project]'s side menu, under 'Issues'. + +[image ./img/issues-sidebar.png] + +Of course, they can also be viewed through =[[url ./filters.html filters]]= and a =[[url ./projects.html project]'s board]=. + +## How to use + +By default, opening a card presents, at the top, it's =[key]= (think of it as an ID), + +[image ./img/card-key.png] + +it's =[summary]= below it, + +[image ./img/card-summary.png] + +options for adding =[attachments]=, =[subtasks]=, =[linking issues]= and =[adding more apps]= (think of apps like extensions), + +[image ./img/card-attach-subtask.png] + +following are the =[description]=, =[actual attachments]=, =[subtasks]=, =[linked issues]=, etc., + +[image ./img/desc-att-sub-link.png] + +and at the bottom you have the =[activity]=, consisting of =[comments]= on the issue, + +[image ./img/activity-comments.png] + +=[history]= of things that have happened to that issue, + +[image ./img/activity-history.png] + +and =[work logs]= (a bit later we talk about them in more detail). + +[image ./img/activity-work-log.png] + +### Right side + +To the right side, you have all of the different =[properties]= (some fields without a value will be hidden). + +[image ./img/card-right-side.png] + +On the top right you can change =[watch options]= ([url https://www.idalko.com/jira-watch-issues/ watching an issue] means you get notified by all changes done to it), you can =[share]= the card and do =[actions]= (the three dots). + +[image ./img/card-top-right.png] + +=[Actions]= are things you can do to the whole card, like moving or deleting it. + +[image ./img/card-actions.png] + +The most notable options are `[[url https://confluence.atlassian.com/jirasoftwarecloud/logging-work-on-issues-902499028.html Log work]]` and `[Add flag]`. + +### Work log + +In Jira, you can =[estimate how long an issue will take for it to be resolved]=. This is done through =[logging work]=. + +In the `[Log work]` screen, you'll be met with a `[Time spent]` and `[Time remaining]` fields, that you'll need to fill with the appropriate information. + +[image ./img/time-tracking.png] + +The time remaining takes a =[default]= value from the =[previous time log]=, so you don't need to specify it every time. + +### Issue flagging + +A =[flagged issue]= is an issue that is very important. Flagged issues are displayed in yellow to signify their needed attention. + +[image ./img/flagged-card.png] + +### Basic issue information + +On the bottom right you can see =[when the issue was created]= and =[when it was last updated]=. You can also access the field configuration menu from the `[Configure]` button. It won't be covered in this tutorial, you can read about it [url https://confluence.atlassian.com/adminjiracloud/changing-a-field-configuration-844500798.html here]. + +[image ./img/time-and-configure.png] diff --git a/src/blog/how-to-use-jira/components.du b/src/blog/how-to-use-jira/components.du new file mode 100644 index 0000000..c696e62 --- /dev/null +++ b/src/blog/how-to-use-jira/components.du @@ -0,0 +1,50 @@ +# Components - How to use Jira + +'define expected-reading 2 min +'define created 24 July 2020 +'define edited 03 June 2021 +[$pagenav] + +'define start_link ./ +'define prev_link ./pages.html Pages +'define next_link ./dashboards.html Dashboards +[$pagination_middle] + +.contents +.numbered +1. [url #creating-and-editing Creating and editing] +2. [url #adding-issues Adding issues] + +Components are =[yet another way to group issues together]=. They don't have any specific meaning like versions, their usage depends on the project's organisation. + +## Creating and editing + +Creating and editing them is done from the =[`[Components]` menu in the sidebar]=. + +[image ./img/components-sidebar.png] + +Creating one is done through the button on the top right (in the center if you don't have any components) by the name of `[Create component]`. + +[image ./img/create-component-empty.png] + +[image ./img/create-component-full.png] + +Clicking on it presents you with a screen where you input it's information. + +[image ./img/create-component-page.png] + +=[A name is the only requirement]=. You can also add a =[description]=, =[a lead(er) for the component]= and =[person who gets assigned to an issue by default]=. + +## Adding issues + +Adding an issue to a component can be done either =[when creating it]= or =[when viewing it]=. + +=[Right under the summary]=, there is a place for indicating a component, named `[Components]`. + +[image ./img/components-create-card.png] + +When viewing an issue, you can add one from the `[Components]` field to the right (you might need to first click on `[Show more fields]`). + +[image ./img/show-fields.png] + +[image ./img/components-field.png] diff --git a/src/blog/how-to-use-jira/dashboards.du b/src/blog/how-to-use-jira/dashboards.du new file mode 100644 index 0000000..ab46ac0 --- /dev/null +++ b/src/blog/how-to-use-jira/dashboards.du @@ -0,0 +1,65 @@ +# Dashboards - How to use Jira + +'define expected-reading 2 min +'define created 24 July 2020 +'define edited 03 June 2021 +[$pagenav] + +'define start_link ./ +'define prev_link ./components.html Components +[$pagination_end] + +.contents +.numbered +1. [url #adding-a-dashboard Adding a dashboard] +2. [url #adding-gadgets Adding gadgets] + +Dashboards are a =[place where you can view a lot of information]=. + +[image ./img/default-dashboard.png] + +Dashboards are composed of =[gadgets]=. + +[image ./img/gadgets.png] + +Gadgets have functionality for =[displaying certain information]=, like `[Average Age Chart]` or `[Issues in progress]`. Each gadget can be setup to =[take information from one or more projects and/or saved filters]=. + +## Adding a dashboard + +Dashboard can be added from the top bar, under `[Create dashboard]` in the `[Dashboards]` menu + +[image ./img/create-dashboard-top.png] + +or, if you are already in a dashboard, from `[Create dashboard]` in the three dots menu. + +[image ./img/create-dashboard-dots.png] + +## Adding gadgets + +=[Note]=: you cannot add gadgets to the default dashboard. + +You can add gadgets either =[through the `[Add gadget]` button in the top right]= + +[image ./img/add-gadget-top.png] + +or, =[if you don't have any gadets]=, =[from the `[add a new gadget]` message(s)]=. + +[image ./img/add-a-gadget.png] + +After that, you are greeted by a window that =[shows all of the avalable ones]= (you might need to =[press `[Load all gadgets]`]=). + +[image ./img/load-all.png] + +[image ./img/add-gadget.png] + +Adding a gadget is as simple as clicking the button `[Add gadget]` next to the name of the gadget you want to add. + +[image ./img/introduction-add.png] + +After it is added, you'll =[need to configure it]=, usually a gadget =[requires atleast a filter/project]=. + +[image ./img/bubble.png] + +Options for different gadgets can be found on =[their top right corner, in the three dots menu]=. + +[image ./img/bubble-dots.png] diff --git a/src/blog/how-to-use-jira/filters.du b/src/blog/how-to-use-jira/filters.du new file mode 100644 index 0000000..0ec6a9d --- /dev/null +++ b/src/blog/how-to-use-jira/filters.du @@ -0,0 +1,44 @@ +# Filters - How to use Jira + +'define expected-reading 1 min +'define created 24 July 2020 +'define edited 03 June 2021 +[$pagenav] + +'define prev_link ./ Introduction +'define next_link ./cards.html Cards +[$pagination_second] + +.contents +.numbered +1. [url #criteria Criteria] +2. [url #jql JQL] + +=[Filters work like an advanced issue search that you can save]=. With filters you filter issues from chosen project(s) by their properties (status, type, start date, etc.). + +Making filters is done through the `[Advanced issue search]` page, from the `[Filters]` menu. + +[image ./img/filters-advanced-issue-search.png] + +## Criteria + +From here you can see some criteria: `[Project]`, `[Type]`, `[Status]`, `[Assignee]`. + +[image ./img/criteria-advanced-issue-search.png] + +Clicking on the criteria will reveal what options you can choose for it. Access to more criteria can be obtained via the `[+ More]` menu. + +[image ./img/plus-more-advanced-issue-search.png] + +After configuring your desired options, you can =[save the filter]= and use it later. To do so, simply click on `[Save as]` and enter a name for it. + +[image ./img/save-as-advanced-issue-search.png] +[image ./img/save-filter-filters-advanced-issue-search.png] + +You can view all of your filters from the conveniently named `[View all filters]` option in the `[Filters]` menu. + +[image ./img/view-all-filters-advanced-issue-search.png] + +## JQL + +You can do =[more advanced search]= through `[JQL]` (Jira Query Language), but we won't be covering this topic. I can recommend [url https://www.atlassian.com/blog/jira-software/jql-the-most-flexible-way-to-search-jira-14 this article] on the subject. diff --git a/src/blog/how-to-use-jira/img/SOD.png b/src/blog/how-to-use-jira/img/SOD.png Binary files differnew file mode 100644 index 0000000..0f6ee3c --- /dev/null +++ b/src/blog/how-to-use-jira/img/SOD.png diff --git a/src/blog/how-to-use-jira/img/active-sprints.png b/src/blog/how-to-use-jira/img/active-sprints.png Binary files differnew file mode 100644 index 0000000..90e8711 --- /dev/null +++ b/src/blog/how-to-use-jira/img/active-sprints.png diff --git a/src/blog/how-to-use-jira/img/activity-comments.png b/src/blog/how-to-use-jira/img/activity-comments.png Binary files differnew file mode 100644 index 0000000..59bc420 --- /dev/null +++ b/src/blog/how-to-use-jira/img/activity-comments.png diff --git a/src/blog/how-to-use-jira/img/activity-history.png b/src/blog/how-to-use-jira/img/activity-history.png Binary files differnew file mode 100644 index 0000000..5f5f7fc --- /dev/null +++ b/src/blog/how-to-use-jira/img/activity-history.png diff --git a/src/blog/how-to-use-jira/img/activity-work-log.png b/src/blog/how-to-use-jira/img/activity-work-log.png Binary files differnew file mode 100644 index 0000000..4340e6e --- /dev/null +++ b/src/blog/how-to-use-jira/img/activity-work-log.png diff --git a/src/blog/how-to-use-jira/img/add-a-gadget.png b/src/blog/how-to-use-jira/img/add-a-gadget.png Binary files differnew file mode 100644 index 0000000..21de4ec --- /dev/null +++ b/src/blog/how-to-use-jira/img/add-a-gadget.png diff --git a/src/blog/how-to-use-jira/img/add-gadget-top.png b/src/blog/how-to-use-jira/img/add-gadget-top.png Binary files differnew file mode 100644 index 0000000..5fdd5c2 --- /dev/null +++ b/src/blog/how-to-use-jira/img/add-gadget-top.png diff --git a/src/blog/how-to-use-jira/img/add-gadget.png b/src/blog/how-to-use-jira/img/add-gadget.png Binary files differnew file mode 100644 index 0000000..365b62a --- /dev/null +++ b/src/blog/how-to-use-jira/img/add-gadget.png diff --git a/src/blog/how-to-use-jira/img/add-item-kanban.png b/src/blog/how-to-use-jira/img/add-item-kanban.png Binary files differnew file mode 100644 index 0000000..ebb667c --- /dev/null +++ b/src/blog/how-to-use-jira/img/add-item-kanban.png diff --git a/src/blog/how-to-use-jira/img/add-item-to-project.png b/src/blog/how-to-use-jira/img/add-item-to-project.png Binary files differnew file mode 100644 index 0000000..fda2714 --- /dev/null +++ b/src/blog/how-to-use-jira/img/add-item-to-project.png diff --git a/src/blog/how-to-use-jira/img/add-shortcut.png b/src/blog/how-to-use-jira/img/add-shortcut.png Binary files differnew file mode 100644 index 0000000..1e401c8 --- /dev/null +++ b/src/blog/how-to-use-jira/img/add-shortcut.png diff --git a/src/blog/how-to-use-jira/img/added-site.png b/src/blog/how-to-use-jira/img/added-site.png Binary files differnew file mode 100644 index 0000000..48fea3d --- /dev/null +++ b/src/blog/how-to-use-jira/img/added-site.png diff --git a/src/blog/how-to-use-jira/img/assignee-create-card.png b/src/blog/how-to-use-jira/img/assignee-create-card.png Binary files differnew file mode 100644 index 0000000..fe17cf2 --- /dev/null +++ b/src/blog/how-to-use-jira/img/assignee-create-card.png diff --git a/src/blog/how-to-use-jira/img/backlog-kanban.png b/src/blog/how-to-use-jira/img/backlog-kanban.png Binary files differnew file mode 100644 index 0000000..cc2b3b5 --- /dev/null +++ b/src/blog/how-to-use-jira/img/backlog-kanban.png diff --git a/src/blog/how-to-use-jira/img/board-from.png b/src/blog/how-to-use-jira/img/board-from.png Binary files differnew file mode 100644 index 0000000..c918953 --- /dev/null +++ b/src/blog/how-to-use-jira/img/board-from.png diff --git a/src/blog/how-to-use-jira/img/board-settings.png b/src/blog/how-to-use-jira/img/board-settings.png Binary files differnew file mode 100644 index 0000000..0e516b6 --- /dev/null +++ b/src/blog/how-to-use-jira/img/board-settings.png diff --git a/src/blog/how-to-use-jira/img/bubble-dots.png b/src/blog/how-to-use-jira/img/bubble-dots.png Binary files differnew file mode 100644 index 0000000..ead1ad5 --- /dev/null +++ b/src/blog/how-to-use-jira/img/bubble-dots.png diff --git a/src/blog/how-to-use-jira/img/bubble.png b/src/blog/how-to-use-jira/img/bubble.png Binary files differnew file mode 100644 index 0000000..4e4d671 --- /dev/null +++ b/src/blog/how-to-use-jira/img/bubble.png diff --git a/src/blog/how-to-use-jira/img/bug-type.png b/src/blog/how-to-use-jira/img/bug-type.png Binary files differnew file mode 100644 index 0000000..49dbbf9 --- /dev/null +++ b/src/blog/how-to-use-jira/img/bug-type.png diff --git a/src/blog/how-to-use-jira/img/card-actions.png b/src/blog/how-to-use-jira/img/card-actions.png Binary files differnew file mode 100644 index 0000000..6d418f3 --- /dev/null +++ b/src/blog/how-to-use-jira/img/card-actions.png diff --git a/src/blog/how-to-use-jira/img/card-attach-subtask.png b/src/blog/how-to-use-jira/img/card-attach-subtask.png Binary files differnew file mode 100644 index 0000000..732b643 --- /dev/null +++ b/src/blog/how-to-use-jira/img/card-attach-subtask.png diff --git a/src/blog/how-to-use-jira/img/card-key.png b/src/blog/how-to-use-jira/img/card-key.png Binary files differnew file mode 100644 index 0000000..2159950 --- /dev/null +++ b/src/blog/how-to-use-jira/img/card-key.png diff --git a/src/blog/how-to-use-jira/img/card-right-side.png b/src/blog/how-to-use-jira/img/card-right-side.png Binary files differnew file mode 100644 index 0000000..589a995 --- /dev/null +++ b/src/blog/how-to-use-jira/img/card-right-side.png diff --git a/src/blog/how-to-use-jira/img/card-summary.png b/src/blog/how-to-use-jira/img/card-summary.png Binary files differnew file mode 100644 index 0000000..1a37887 --- /dev/null +++ b/src/blog/how-to-use-jira/img/card-summary.png diff --git a/src/blog/how-to-use-jira/img/card-top-right.png b/src/blog/how-to-use-jira/img/card-top-right.png Binary files differnew file mode 100644 index 0000000..bb04eb7 --- /dev/null +++ b/src/blog/how-to-use-jira/img/card-top-right.png diff --git a/src/blog/how-to-use-jira/img/choose-classic-template.png b/src/blog/how-to-use-jira/img/choose-classic-template.png Binary files differnew file mode 100644 index 0000000..bdefb2c --- /dev/null +++ b/src/blog/how-to-use-jira/img/choose-classic-template.png diff --git a/src/blog/how-to-use-jira/img/choose-project-type.png b/src/blog/how-to-use-jira/img/choose-project-type.png Binary files differnew file mode 100644 index 0000000..d85ff3a --- /dev/null +++ b/src/blog/how-to-use-jira/img/choose-project-type.png diff --git a/src/blog/how-to-use-jira/img/columns-edit.png b/src/blog/how-to-use-jira/img/columns-edit.png Binary files differnew file mode 100644 index 0000000..5aeb62c --- /dev/null +++ b/src/blog/how-to-use-jira/img/columns-edit.png diff --git a/src/blog/how-to-use-jira/img/components-create-card.png b/src/blog/how-to-use-jira/img/components-create-card.png Binary files differnew file mode 100644 index 0000000..cc6aefb --- /dev/null +++ b/src/blog/how-to-use-jira/img/components-create-card.png diff --git a/src/blog/how-to-use-jira/img/components-field.png b/src/blog/how-to-use-jira/img/components-field.png Binary files differnew file mode 100644 index 0000000..e60c0c2 --- /dev/null +++ b/src/blog/how-to-use-jira/img/components-field.png diff --git a/src/blog/how-to-use-jira/img/components-sidebar.png b/src/blog/how-to-use-jira/img/components-sidebar.png Binary files differnew file mode 100644 index 0000000..49f2912 --- /dev/null +++ b/src/blog/how-to-use-jira/img/components-sidebar.png diff --git a/src/blog/how-to-use-jira/img/create-board.png b/src/blog/how-to-use-jira/img/create-board.png Binary files differnew file mode 100644 index 0000000..bb09056 --- /dev/null +++ b/src/blog/how-to-use-jira/img/create-board.png diff --git a/src/blog/how-to-use-jira/img/create-component-empty.png b/src/blog/how-to-use-jira/img/create-component-empty.png Binary files differnew file mode 100644 index 0000000..90ba465 --- /dev/null +++ b/src/blog/how-to-use-jira/img/create-component-empty.png diff --git a/src/blog/how-to-use-jira/img/create-component-full.png b/src/blog/how-to-use-jira/img/create-component-full.png Binary files differnew file mode 100644 index 0000000..6f74c42 --- /dev/null +++ b/src/blog/how-to-use-jira/img/create-component-full.png diff --git a/src/blog/how-to-use-jira/img/create-component-page.png b/src/blog/how-to-use-jira/img/create-component-page.png Binary files differnew file mode 100644 index 0000000..b7542e0 --- /dev/null +++ b/src/blog/how-to-use-jira/img/create-component-page.png diff --git a/src/blog/how-to-use-jira/img/create-dashboard-dots.png b/src/blog/how-to-use-jira/img/create-dashboard-dots.png Binary files differnew file mode 100644 index 0000000..a2bd4fc --- /dev/null +++ b/src/blog/how-to-use-jira/img/create-dashboard-dots.png diff --git a/src/blog/how-to-use-jira/img/create-dashboard-top.png b/src/blog/how-to-use-jira/img/create-dashboard-top.png Binary files differnew file mode 100644 index 0000000..867c4a9 --- /dev/null +++ b/src/blog/how-to-use-jira/img/create-dashboard-top.png diff --git a/src/blog/how-to-use-jira/img/create-header.png b/src/blog/how-to-use-jira/img/create-header.png Binary files differnew file mode 100644 index 0000000..6bb3b63 --- /dev/null +++ b/src/blog/how-to-use-jira/img/create-header.png diff --git a/src/blog/how-to-use-jira/img/create-project-new.png b/src/blog/how-to-use-jira/img/create-project-new.png Binary files differnew file mode 100644 index 0000000..f319105 --- /dev/null +++ b/src/blog/how-to-use-jira/img/create-project-new.png diff --git a/src/blog/how-to-use-jira/img/create-project-top.png b/src/blog/how-to-use-jira/img/create-project-top.png Binary files differnew file mode 100644 index 0000000..e832e66 --- /dev/null +++ b/src/blog/how-to-use-jira/img/create-project-top.png diff --git a/src/blog/how-to-use-jira/img/create-project.png b/src/blog/how-to-use-jira/img/create-project.png Binary files differnew file mode 100644 index 0000000..d7e7893 --- /dev/null +++ b/src/blog/how-to-use-jira/img/create-project.png diff --git a/src/blog/how-to-use-jira/img/criteria-advanced-issue-search.png b/src/blog/how-to-use-jira/img/criteria-advanced-issue-search.png Binary files differnew file mode 100644 index 0000000..f224446 --- /dev/null +++ b/src/blog/how-to-use-jira/img/criteria-advanced-issue-search.png diff --git a/src/blog/how-to-use-jira/img/default-dashboard.png b/src/blog/how-to-use-jira/img/default-dashboard.png Binary files differnew file mode 100644 index 0000000..e9e4a09 --- /dev/null +++ b/src/blog/how-to-use-jira/img/default-dashboard.png diff --git a/src/blog/how-to-use-jira/img/desc-att-sub-link.png b/src/blog/how-to-use-jira/img/desc-att-sub-link.png Binary files differnew file mode 100644 index 0000000..90eb3c6 --- /dev/null +++ b/src/blog/how-to-use-jira/img/desc-att-sub-link.png diff --git a/src/blog/how-to-use-jira/img/description-create-card.png b/src/blog/how-to-use-jira/img/description-create-card.png Binary files differnew file mode 100644 index 0000000..f321a6f --- /dev/null +++ b/src/blog/how-to-use-jira/img/description-create-card.png diff --git a/src/blog/how-to-use-jira/img/epic-link-create-card.png b/src/blog/how-to-use-jira/img/epic-link-create-card.png Binary files differnew file mode 100644 index 0000000..9e1e708 --- /dev/null +++ b/src/blog/how-to-use-jira/img/epic-link-create-card.png diff --git a/src/blog/how-to-use-jira/img/epic-type.png b/src/blog/how-to-use-jira/img/epic-type.png Binary files differnew file mode 100644 index 0000000..feb24d5 --- /dev/null +++ b/src/blog/how-to-use-jira/img/epic-type.png diff --git a/src/blog/how-to-use-jira/img/fields-cards.png b/src/blog/how-to-use-jira/img/fields-cards.png Binary files differnew file mode 100644 index 0000000..fbb63ba --- /dev/null +++ b/src/blog/how-to-use-jira/img/fields-cards.png diff --git a/src/blog/how-to-use-jira/img/filters-advanced-issue-search.png b/src/blog/how-to-use-jira/img/filters-advanced-issue-search.png Binary files differnew file mode 100644 index 0000000..19c6d30 --- /dev/null +++ b/src/blog/how-to-use-jira/img/filters-advanced-issue-search.png diff --git a/src/blog/how-to-use-jira/img/fix-versions.png b/src/blog/how-to-use-jira/img/fix-versions.png Binary files differnew file mode 100644 index 0000000..a71eb9e --- /dev/null +++ b/src/blog/how-to-use-jira/img/fix-versions.png diff --git a/src/blog/how-to-use-jira/img/flagged-card.png b/src/blog/how-to-use-jira/img/flagged-card.png Binary files differnew file mode 100644 index 0000000..873e6a9 --- /dev/null +++ b/src/blog/how-to-use-jira/img/flagged-card.png diff --git a/src/blog/how-to-use-jira/img/gadgets.png b/src/blog/how-to-use-jira/img/gadgets.png Binary files differnew file mode 100644 index 0000000..77b1597 --- /dev/null +++ b/src/blog/how-to-use-jira/img/gadgets.png diff --git a/src/blog/how-to-use-jira/img/introduction-add.png b/src/blog/how-to-use-jira/img/introduction-add.png Binary files differnew file mode 100644 index 0000000..f259bde --- /dev/null +++ b/src/blog/how-to-use-jira/img/introduction-add.png diff --git a/src/blog/how-to-use-jira/img/issue-types.png b/src/blog/how-to-use-jira/img/issue-types.png Binary files differnew file mode 100644 index 0000000..ec1ec55 --- /dev/null +++ b/src/blog/how-to-use-jira/img/issue-types.png diff --git a/src/blog/how-to-use-jira/img/issues-sidebar.png b/src/blog/how-to-use-jira/img/issues-sidebar.png Binary files differnew file mode 100644 index 0000000..53e21cb --- /dev/null +++ b/src/blog/how-to-use-jira/img/issues-sidebar.png diff --git a/src/blog/how-to-use-jira/img/kanban-cards.png b/src/blog/how-to-use-jira/img/kanban-cards.png Binary files differnew file mode 100644 index 0000000..84c435f --- /dev/null +++ b/src/blog/how-to-use-jira/img/kanban-cards.png diff --git a/src/blog/how-to-use-jira/img/label-create-card.png b/src/blog/how-to-use-jira/img/label-create-card.png Binary files differnew file mode 100644 index 0000000..f99a447 --- /dev/null +++ b/src/blog/how-to-use-jira/img/label-create-card.png diff --git a/src/blog/how-to-use-jira/img/load-all.png b/src/blog/how-to-use-jira/img/load-all.png Binary files differnew file mode 100644 index 0000000..cd15350 --- /dev/null +++ b/src/blog/how-to-use-jira/img/load-all.png diff --git a/src/blog/how-to-use-jira/img/npb.png b/src/blog/how-to-use-jira/img/npb.png Binary files differnew file mode 100644 index 0000000..8d8c4e0 --- /dev/null +++ b/src/blog/how-to-use-jira/img/npb.png diff --git a/src/blog/how-to-use-jira/img/ntb-filter.png b/src/blog/how-to-use-jira/img/ntb-filter.png Binary files differnew file mode 100644 index 0000000..f894855 --- /dev/null +++ b/src/blog/how-to-use-jira/img/ntb-filter.png diff --git a/src/blog/how-to-use-jira/img/ntb.png b/src/blog/how-to-use-jira/img/ntb.png Binary files differnew file mode 100644 index 0000000..f69e4f9 --- /dev/null +++ b/src/blog/how-to-use-jira/img/ntb.png diff --git a/src/blog/how-to-use-jira/img/plus-more-advanced-issue-search.png b/src/blog/how-to-use-jira/img/plus-more-advanced-issue-search.png Binary files differnew file mode 100644 index 0000000..64234c3 --- /dev/null +++ b/src/blog/how-to-use-jira/img/plus-more-advanced-issue-search.png diff --git a/src/blog/how-to-use-jira/img/project-create-card.png b/src/blog/how-to-use-jira/img/project-create-card.png Binary files differnew file mode 100644 index 0000000..d0ffe8d --- /dev/null +++ b/src/blog/how-to-use-jira/img/project-create-card.png diff --git a/src/blog/how-to-use-jira/img/projects.png b/src/blog/how-to-use-jira/img/projects.png Binary files differnew file mode 100644 index 0000000..45e47c3 --- /dev/null +++ b/src/blog/how-to-use-jira/img/projects.png diff --git a/src/blog/how-to-use-jira/img/reporter-create-card.png b/src/blog/how-to-use-jira/img/reporter-create-card.png Binary files differnew file mode 100644 index 0000000..5d4b397 --- /dev/null +++ b/src/blog/how-to-use-jira/img/reporter-create-card.png diff --git a/src/blog/how-to-use-jira/img/sample-scrum-backlog.png b/src/blog/how-to-use-jira/img/sample-scrum-backlog.png Binary files differnew file mode 100644 index 0000000..b32ce33 --- /dev/null +++ b/src/blog/how-to-use-jira/img/sample-scrum-backlog.png diff --git a/src/blog/how-to-use-jira/img/sample-sprint.png b/src/blog/how-to-use-jira/img/sample-sprint.png Binary files differnew file mode 100644 index 0000000..21fccff --- /dev/null +++ b/src/blog/how-to-use-jira/img/sample-sprint.png diff --git a/src/blog/how-to-use-jira/img/save-as-advanced-issue-search.png b/src/blog/how-to-use-jira/img/save-as-advanced-issue-search.png Binary files differnew file mode 100644 index 0000000..b39a173 --- /dev/null +++ b/src/blog/how-to-use-jira/img/save-as-advanced-issue-search.png diff --git a/src/blog/how-to-use-jira/img/save-filter-filters-advanced-issue-search.png b/src/blog/how-to-use-jira/img/save-filter-filters-advanced-issue-search.png Binary files differnew file mode 100644 index 0000000..0108430 --- /dev/null +++ b/src/blog/how-to-use-jira/img/save-filter-filters-advanced-issue-search.png diff --git a/src/blog/how-to-use-jira/img/scrum-backlog.png b/src/blog/how-to-use-jira/img/scrum-backlog.png Binary files differnew file mode 100644 index 0000000..6ea23f6 --- /dev/null +++ b/src/blog/how-to-use-jira/img/scrum-backlog.png diff --git a/src/blog/how-to-use-jira/img/scrum-kanban-board.png b/src/blog/how-to-use-jira/img/scrum-kanban-board.png Binary files differnew file mode 100644 index 0000000..87513b0 --- /dev/null +++ b/src/blog/how-to-use-jira/img/scrum-kanban-board.png diff --git a/src/blog/how-to-use-jira/img/show-fields.png b/src/blog/how-to-use-jira/img/show-fields.png Binary files differnew file mode 100644 index 0000000..a274791 --- /dev/null +++ b/src/blog/how-to-use-jira/img/show-fields.png diff --git a/src/blog/how-to-use-jira/img/sidebar-create-board.png b/src/blog/how-to-use-jira/img/sidebar-create-board.png Binary files differnew file mode 100644 index 0000000..9e5918d --- /dev/null +++ b/src/blog/how-to-use-jira/img/sidebar-create-board.png diff --git a/src/blog/how-to-use-jira/img/story-type.png b/src/blog/how-to-use-jira/img/story-type.png Binary files differnew file mode 100644 index 0000000..33b76fa --- /dev/null +++ b/src/blog/how-to-use-jira/img/story-type.png diff --git a/src/blog/how-to-use-jira/img/sub-task-type.png b/src/blog/how-to-use-jira/img/sub-task-type.png Binary files differnew file mode 100644 index 0000000..65fb485 --- /dev/null +++ b/src/blog/how-to-use-jira/img/sub-task-type.png diff --git a/src/blog/how-to-use-jira/img/summary-create-card.png b/src/blog/how-to-use-jira/img/summary-create-card.png Binary files differnew file mode 100644 index 0000000..cfdedbc --- /dev/null +++ b/src/blog/how-to-use-jira/img/summary-create-card.png diff --git a/src/blog/how-to-use-jira/img/task-type.png b/src/blog/how-to-use-jira/img/task-type.png Binary files differnew file mode 100644 index 0000000..b7c8b02 --- /dev/null +++ b/src/blog/how-to-use-jira/img/task-type.png diff --git a/src/blog/how-to-use-jira/img/test-page.png b/src/blog/how-to-use-jira/img/test-page.png Binary files differnew file mode 100644 index 0000000..0aa804c --- /dev/null +++ b/src/blog/how-to-use-jira/img/test-page.png diff --git a/src/blog/how-to-use-jira/img/test-repo-sidebar.png b/src/blog/how-to-use-jira/img/test-repo-sidebar.png Binary files differnew file mode 100644 index 0000000..67cea89 --- /dev/null +++ b/src/blog/how-to-use-jira/img/test-repo-sidebar.png diff --git a/src/blog/how-to-use-jira/img/test-repo.png b/src/blog/how-to-use-jira/img/test-repo.png Binary files differnew file mode 100644 index 0000000..3f98520 --- /dev/null +++ b/src/blog/how-to-use-jira/img/test-repo.png diff --git a/src/blog/how-to-use-jira/img/time-and-configure.png b/src/blog/how-to-use-jira/img/time-and-configure.png Binary files differnew file mode 100644 index 0000000..ef587df --- /dev/null +++ b/src/blog/how-to-use-jira/img/time-and-configure.png diff --git a/src/blog/how-to-use-jira/img/time-tracking.png b/src/blog/how-to-use-jira/img/time-tracking.png Binary files differnew file mode 100644 index 0000000..69b2252 --- /dev/null +++ b/src/blog/how-to-use-jira/img/time-tracking.png diff --git a/src/blog/how-to-use-jira/img/todo-doing-done.png b/src/blog/how-to-use-jira/img/todo-doing-done.png Binary files differnew file mode 100644 index 0000000..8eab797 --- /dev/null +++ b/src/blog/how-to-use-jira/img/todo-doing-done.png diff --git a/src/blog/how-to-use-jira/img/versions-and-epics.png b/src/blog/how-to-use-jira/img/versions-and-epics.png Binary files differnew file mode 100644 index 0000000..def629a --- /dev/null +++ b/src/blog/how-to-use-jira/img/versions-and-epics.png diff --git a/src/blog/how-to-use-jira/img/view-all-filters-advanced-issue-search.png b/src/blog/how-to-use-jira/img/view-all-filters-advanced-issue-search.png Binary files differnew file mode 100644 index 0000000..130b1e5 --- /dev/null +++ b/src/blog/how-to-use-jira/img/view-all-filters-advanced-issue-search.png diff --git a/src/blog/how-to-use-jira/img/view-all-projects-top.png b/src/blog/how-to-use-jira/img/view-all-projects-top.png Binary files differnew file mode 100644 index 0000000..77dd9f0 --- /dev/null +++ b/src/blog/how-to-use-jira/img/view-all-projects-top.png diff --git a/src/blog/how-to-use-jira/index.du b/src/blog/how-to-use-jira/index.du new file mode 100644 index 0000000..a1b3b0f --- /dev/null +++ b/src/blog/how-to-use-jira/index.du @@ -0,0 +1,75 @@ +# Introduction - How to use Jira + +'define expected-reading 19 min +'define created 24 July 2020 +'define edited 03 June 2021 +[$pagenav] + +'define next_link ./filters.html Filters +[$pagination_start] + +:contents +:numbered +1. [url ./filters.html Filters] + .numbered + 1. [url ./filters.html#criteria Criteria] + 2. [url ./filters.html#jql JQL] + +2. [url ./cards.html Cards] + .numbered + 1. [url ./cards.html#properties Properties] + 2. [url ./cards.html#creating Creating] + 3. [url ./cards.html#viewing Viewing] + 4. [url ./cards.html#how-to-use How to use] + .numbered + 1. [url ./cards.html#right-side Right side] + 2. [url ./cards.html#work-log Work log] + 3. [url ./cards.html#issue-flagging Issue flagging] + 4. [url ./cards.html#basic-issue-information Basic issue information] + +3. [url ./projects.html Projects] + :numbered + 1. [url ./projects.html#creating-a-project Creating a project] + 2. [url ./projects.html#boards Boards] + .numbered + 1. [url ./projects.html#columns Columns] + 2. [url ./projects.html#adding-more-boards-to-a-project Adding more boards to a project] + + 3. [url ./projects.html#backlog Backlog] + 4. [url ./projects.html#add-item Add item] + + +4. [url ./kanban.html Kanban template] + .numbered + 1. [url ./kanban.html#create-board Create board] + 2. [url ./kanban.html#backlog Backlog] + +5. [url ./scrum.html Scrum template] + .numbered + 1. [url ./scrum.html#backlog Backlog] + 2. [url ./scrum.html#boards-and-issues Boards and Issues] + 3. [url ./scrum.html#create-board Create board] + +6. [url ./bug.html Bug tracking template] + +7. [url ./releases.html Releases] + +8. [url ./pages.html Pages] + +9. [url ./components.html Components] + .numbered + 1. [url ./components.html#creating-and-editing Creating and editing] + 2. [url ./components.html#adding-issues Adding issues] + +10. [url ./dashboards.html Dashboards] + .numbered + 1. [url ./dashboards.html#adding-a-dashboard Adding a dashboard] + 2. [url ./dashboards.html#adding-gadgets Adding gadgets] + + + +[url https://www.atlassian.com/software/jira Jira] is one of the most used project management and issue tracking products out there. + +It has a lot of features that can be quite overwhelming for new comers, especially these who are new to project management software. That's why I'm writing this tutorial. + +=[Note]=: certain actions can be done only from a project administrator diff --git a/src/blog/how-to-use-jira/kanban.du b/src/blog/how-to-use-jira/kanban.du new file mode 100644 index 0000000..5e5eb00 --- /dev/null +++ b/src/blog/how-to-use-jira/kanban.du @@ -0,0 +1,38 @@ +# Kanban template - How to use Jira + +'define expected-reading 1 min +'define created 24 July 2020 +'define edited 03 June 2021 +[$pagenav] + +'define start_link ./ +'define prev_link ./projects.html Projects +'define next_link ./scrum.html Scrum template +[$pagination_middle] + +.contents +.numbered +1. [url #create-board Create board] +2. [url #backlog Backlog] + +Kanban is a =[way for visually organising work items]= (issues in our case). Kanban consists of =[columns]= and =[cards]=, where cards are the work items and are =[moved from one column to another]= depending on the situation. This should sound =[familiar]=, because that is how [url ./projects.md Boards] work. + +In a projects that uses the kanban template, boards can access directly all of the available issues. + +This tutorial focuses on the basics, but you can find a lot of information in [url https://www.atlassian.com/agile/kanban these sets of articles] from Atlassian. + +## Create board + +This template can be chosen when =[creating a project]= + +[image ./img/choose-classic-template.png] + +and =[from the `[Create board]` screen]=. + +[image ./img/scrum-kanban-board.png] + +## Backlog + +In kanban, =[the backlog is just another column in your board(s)]=. It can be removed entirely. + +[image ./img/backlog-kanban.png] diff --git a/src/blog/how-to-use-jira/pages.du b/src/blog/how-to-use-jira/pages.du new file mode 100644 index 0000000..b2e0466 --- /dev/null +++ b/src/blog/how-to-use-jira/pages.du @@ -0,0 +1,22 @@ +# Pages - How to use Jira + +'define expected-reading 1 min +'define created 24 July 2020 +'define edited 16 September 2020 +[$pagenav] + +'define start_link ./ +'define prev_link ./releases.html Releases +'define next_link ./components.html Components +[$pagination_middle] + +=[Pages are a place for documents for your team]=. The goal is to have a centralised location where everyone in your team can share knowledge. + +[image ./img/test-page.png] + +Pages are powered by another Atlasian product, named `[Confluence]`. It is a =[subscription-based software]=, but it does also offer a free 30-day trial. + +=[All documents]= (pages) that you write are =[organised into `[Spaces]`]=. When creating a page you can choose one of many templates or just start off with a blank one. + +=[Confluence won't be covered in this tutorial]=. You can read more about it [url https://www.atlassian.com/software/confluence/guides/get-started/set-up here]. + diff --git a/src/blog/how-to-use-jira/projects.du b/src/blog/how-to-use-jira/projects.du new file mode 100644 index 0000000..ecf5fe9 --- /dev/null +++ b/src/blog/how-to-use-jira/projects.du @@ -0,0 +1,158 @@ +# Projects - How to use Jira + +'define expected-reading 4 min +'define created 24 July 2020 +'define edited 03 June 2021 +[$pagenav] + +'define start_link ./ +'define prev_link ./cards.html Cards +'define next_link ./kanban.html Kanban template +[$pagination_middle] + +:contents +:numbered +1. [url #creating-a-project Creating a project] +2. [url #boards Boards] + .numbered + 1. [url #columns Columns] + 2. [url #adding-more-boards-to-a-project Adding more boards to a project] + +3. [url #backlog Backlog] +4. [url #add-item Add item] + + + +In short, =[projects are a collection of issues]= with added functionality for =[organising them, getting statistics, etc]=. + +[image ./img/projects.png] + +## Creating a project + +To create a project, either =[click on `[Create project]` from the menu `[Projects]` in the top bar]=, + +[image ./img/create-project-top.png] + +or =[click on the `[Create project]` button in the `[View all projects]` page]=. + +[image ./img/view-all-projects-top.png] + +[image ./img/create-project.png] + +=[Note]=: when you =[have created your account]= the first thing you'll see is the `[Create project]` page. + +You'll be met by the `[Choose project type]` screen. From here choose `[Classic project]`, in this tutorial the `[Next-gen project]` types =[won't be covered]=. + +[image ./img/choose-project-type.png] + +After that you'll need to put a =[name]= for your project, set a =[key]= (used as an ID for issues ; it is automatically generated, but you can change it if you want) and select a =[template]=. + +[image ./img/create-project-new.png] + +This tutorial covers =[only]= the three classic software templates: =[[url ./kanban.html Kanban]]=, =[[url ./scrum.html Scrum]]= and =[[url ./bug.html Bug tracking]]=. + +[image ./img/choose-classic-template.png] + +In a nutshell, =[templates]= govern how =[boards and issues should work together]=. Later in the tutorial we cover the differences between these templates. + +Projects also have [url ./releases.html Releases], [url ./pages.html Pages] and [url ./components.html Components], that are also explored. + +## Boards + +Each project contains, amongst many other things, boards. =[Boards are a way to better organise results from [url ./filters.html filters]]=. By default every project gets a board with a filter for all of the project's issues. + +### Columns + +=[Boards are divided into columns]= that contain the cards (issues). A card can move =[freely]= from one column to another. + +[image ./img/SOD.png] + +To illustrate how this could be useful, let's say we have three columns: `[TO DO]`, `[DOING]` and `[DONE]`. + +[image ./img/todo-doing-done.png] + +When you create an issue you initially put it in the `[TO DO]` column. After someone has started working on it, they put the issue in the `[DOING]` column. Finally, when the issue is resolved, it is put in the `[DONE]` column. + +Of course, the name, quantity and purpose of different columns =[depend on the project's organisation]=. + +Adding and removing columns can be done from the `[Columns]` tab in the `[Board settings]` menu (three dots on the top right of a board). + +[image ./img/board-settings.png] + +[image ./img/columns-edit.png] + +### Adding more boards to a project + +You can also add to a project as many =[[url ./scrum.html Scrum]]= and =[[url ./kanban.html Kanban]]= templated boards as you want. + +This can be done, either while in a board, from =[clicking the three dots and choosing `[Create board]`]= + +[image ./img/create-board.png] + +or =[in the sidebar, from the `[Board]` menu]=. + +[image ./img/sidebar-create-board.png] + +After that, you are met with the `[Create a board]` window, where you can choose your template. + +[image ./img/scrum-kanban-board.png] + +Once you've made your choice, you will be met with three options: + +[image ./img/board-from.png] + +:unordered +- =[Board created with new Software project]= - creates a new project with a new board (has the name of the project). + + [image ./img/npb.png] + +- =[Board from existing project]= - creates a board that gets the filter from another project + + [image ./img/ntb.png] + +- =[Board from an existing Saved Filter]= - as it says, you add to the project (indicated in the `[Location]` field) a board based on a saved filter + + [image ./img/ntb-filter.png] + + +## Backlog + +=[The backlog is a place for issues that outline a general task/feature]=. + +Depending on your project template, the backlog will either be a =[separate window ([url ./scrum.html Scrum])]=, + +[image ./img/scrum-backlog.png] + +=[just a column in a board ([url ./kanban.html Kanban])]=, + +[image ./img/backlog-kanban.png] + +or =[nonexistent ([url ./bug.md bug tracking])]=. + +The purpose of the backlog depends on the template and it is described in the page of each template. + +## Add item + +=[You can also add some resources to the sidebar of your project]= for everyone to use. That is done through the `[Add Item]` menu. + +[image ./img/add-item-kanban.png] + +From here you can =[add a website shortcut]=, simply by putting the web address and giving it a name. + +[image ./img/add-item-to-project.png] + +[image ./img/add-shortcut.png] + +The name is used for showing the shortcut on the sidebar. + +[image ./img/added-site.png] + +You can also add a `[Bitbucket]` or `[GitHub]` repository which you can =[leave]= only as a =[shortcut]=, or you can =[integrate]= it so that =[issues are transferred to Jira]=. + +[image ./img/test-repo.png] + +[image ./img/test-repo-sidebar.png] + +=[Integration won't be covered in this tutorial]=, but I can recommend [url https://www.idalko.com/jira-github-integration/ this] article for `[GitHub]` integration and [url https://www.idalko.com/jira-bitbucket-integration/ this] one for `[Bitbucket]` integration. + +From the `[Add Item]` menu you can also =[toggle the shortcut to [url ./pages.html Pages]]=. diff --git a/src/blog/how-to-use-jira/releases.du b/src/blog/how-to-use-jira/releases.du new file mode 100644 index 0000000..430de92 --- /dev/null +++ b/src/blog/how-to-use-jira/releases.du @@ -0,0 +1,21 @@ +# Releases - How to use Jira + +'define expected-reading 1 min +'define created 24 July 2020 +'define edited 16 September 2020 +[$pagenav] + +'define start_link ./ +'define prev_link ./bug.html Bug tracking template +'define next_link ./pages.html Pages +[$pagination_middle] + +The `[Releases]` page in a project shows =[versions]=, the ones in development and the ones that are completed. + +=[Versions are just a big collection of issues]= and the =[goal of a released version]= is for =[all of it's issues to be resolved]=. It serves as a point in time for the development of a project. + +## Adding issues to a version + +When creating an issue, you can specify a version in the `[Fix versions]` property. + +[image ./img/fix-versions.png] diff --git a/src/blog/how-to-use-jira/scrum.du b/src/blog/how-to-use-jira/scrum.du new file mode 100644 index 0000000..37ca494 --- /dev/null +++ b/src/blog/how-to-use-jira/scrum.du @@ -0,0 +1,55 @@ +# Scrum template - How to use Jira + +'define expected-reading 2 min +'define created 24 July 2020 +'define edited 03 June 2021 +[$pagenav] + +'define start_link ./ +'define prev_link ./kanban.html Kanban template +'define next_link ./bug.html Bug tracking template +[$pagination_middle] + +.contents +.numbered +1. [url #backlog Backlog] +2. [url #boards-and-issues Boards and Issues] +3. [url #create-board Create board] + +The scrum template is very similar to the kanban template, with one big difference: =[sprints]=. + +=[All issues]= are put into the =[backlog]= (which is now a =[separate page]=). From there, they are organised into =[sprints]=. + +In general [url https://www.atlassian.com/agile agile software development], a =[sprint is a small duration of time]= (one to four weeks) where the team focuses on a =[set of tasks]= and at the end everyone =[evaluates the results]= and plans the next sprint. + +Your =[boards only work on the issues of the currently active sprint]=. + +## Backlog + +As we've discussed, the =[backlog]= is used for organising =[all issues]= into =[sprints]=. + +[image ./img/sample-scrum-backlog.png] + +From here you can also organise =[Versions]= (refer to [url ./releases.html Releases]) and =[Epics]= (refer to [url ./cards.html Cards]). An important note is that Epics in this context don't need to have their linked issues in only one sprint. + +[image ./img/versions-and-epics.png] + +Creating a sprint is done from the conveniently named `[Create sprint]` button. It shows a box on top where you can either move issues from the backlog to the sprint or create entirely new issues. + +[image ./img/sample-sprint.png] + +## Boards and Issues + +As previously mentioned, boards have access only to the issues in the active sprint. This is also reflected in the user interface. After selecting a board from the sidebar, you view it from the `[Active sprints]` page. + +[image ./img/active-sprints.png] + +## Create board + +This template can be chosen when =[creating a project]= + +[image ./img/choose-classic-template.png] + +and =[from the `[Create board]` screen]=. + +[image ./img/scrum-kanban-board.png] diff --git a/src/blog/index.du b/src/blog/index.du index c10655d..3ee201c 100644 --- a/src/blog/index.du +++ b/src/blog/index.du @@ -4,6 +4,8 @@ Articles detailing personal experiences or exploration of certain topics. \n +#### *[2024]* + :defs ; [$bg] 18 Nov   [url /blog/switchut-izgorq Суичът изгоря!] : `[Shallow dive]` | `[Story]` | `[Networking]` `[Switch]` `[NetworkPartner]` @@ -18,27 +20,45 @@ Articles detailing personal experiences or exploration of certain topics. #### *[2023]* :defs +; [$gb] 16 Dec   [url /blog/fix-qc-timeout Fix "qc timeout" kernel log error] +: `[Linux]` | `[kernel]` | `[libata]` `[qc]` `[logs]` `[DMA]` + ; [$gb] 30 Aug   [url /blog/thinkpad-x270-my-favorite-machine ThinkPad X270 - my favorite machine] : `[Medium dive]` | `[Review]` | `[Lenovo]` `[ThinkPad]` `[Yoga]` -; [$gb] 19 July   [url /blog/icon-fonts-arent-evil-you-just-have-to-care Icon fonts aren't evil, you just have to care] +; [$gb] 19 Jul   [url /blog/icon-fonts-arent-evil-you-just-have-to-care Icon fonts aren't evil, you just have to care] : `[Shallow dive]` | `[Web development]` | `[Icon font]` `[SVG]` `[Accessibility]` `[FontForge]` -; [$bg] 14 July   [url /blog/fmi-i-vissheto-obrazovanie-v-programistkata-industriq ФМИ и висшето образование в програмистката индустрия] +; [$bg] 14 Jul   [url /blog/fmi-i-vissheto-obrazovanie-v-programistkata-industriq ФМИ и висшето образование в програмистката индустрия] : `[Deep dive]` | `[University]` | `[FMI]` `[Education]` -; [$gb] 07 June   [url /blog/friendship-ended-with-funtoo-now-gentoo-is-my-best-friend Friendship ended with Funtoo, now Gentoo is my best friend] +; [$gb] 28 Jun   [url /blog/fix-network-brother-printers Fix networked Brother printers not working in Linux] +: `[Linux]` | `[CUPS]` | `[Printers]` `[Brother]` `[Network]` `[avahi]` + +; [$gb] 14 Jun   [url /blog/gns3-initsh-no-such-file Fix "exec /gns3/init.sh: no such file or directory"] +: `[Linux]` | `[GNS3]` | `[Docker]` `[busybox]` + +; [$gb] 07 Jun   [url /blog/friendship-ended-with-funtoo-now-gentoo-is-my-best-friend Friendship ended with Funtoo, now Gentoo is my best friend] : `[Shallow dive]` | `[Linux]` | `[Funtoo]` `[Gentoo]` `[portage]` `[packages]` `[emerge]` `[ebuild]` ; [$gb] 01 May   [url /blog/bash-is-weird BASH is weird] : `[Shallow dive]` | `[bash]` | `[Linux]` `[scripting]` +; [$gb] 26 Apr   [url /blog/install-drivers-for-epson-scanners Install drivers for Epson scanners] +: `[Linux]` | `[SANE]` | `[Scanners]` `[Epson]` `[epkowa]` `[iscan]` + +; [$gb] 25 Apr   [url /blog/managing-apps-with-adb-without-root Managing Android apps with ADB (and without root)] +: `[Android]` | `[ADB]` | `[Apps]` `[Linux]` `[Windows]` + ; [$gb] 18 Apr   [url /blog/sane-explanation-of-compilers/part-1.html Sane explanation of compilers: Part 1] : `[Deep dive]` | `[Compilers]` | `[C]` `[yacc]` `[bison]` `[math]` `[Trees]` `[Regex]` `[Grammar]` `[Languages]` ; [$gb] 13 Jan   [url /blog/plan9-in-linux-mouse-menus Plan 9 in Linux: Mouse menus] : `[Medium dive]` | `[Linux]` | `[Plan 9]` `[mouse]` `[bash]` `[script]` `[X11]` `[openbox]` `[jgmenu]` `[plumber]` +; [$gb] 01 Jan   [url /blog/virt-manager-freeze-on-browse virt-manager freezing up when clicking Browse in any window] +: `[Linux]` | `[virt-manager]` | `[QEMU/KVM]` `[libvirt]` `[Linux]` `[GTK]` + #### *[2022]* @@ -52,12 +72,42 @@ Articles detailing personal experiences or exploration of certain topics. ; [$gb] 04 Dec   [url /blog/taming-the-fun-too Taming The Fun-too] : `[Story]` | `[Funtoo]` | `[Linux]` `[Gentoo]` `[packages]` +; [$gb] 01 Nov   [url /blog/turn-off-notifications-windows How to turn off notifications on Windows] +: `[Windows 10]` | `[Settings]` | `[Notifications]` + +; [$gb] 01 Nov   [url /blog/disable-sticky-keys-popup How to disable Sticky Keys prompt] +: `[Windows]` | `[Settings]` | `[Sticky Keys]` + +; [$gb] 26 Oct   [url /blog/remove-weather-widget How to remove Windows Weather Widget] +: `[Windows 10]` | `[Settings]` | `[Taskbar]` `[Weather Widget]` + +; [$gb] 04 Oct   [url /blog/windows-run-dialog Windows Run dialog] +: `[Windows]` | `[Commands]` | `[Run]` `[Settings]` + +; [$gb] 03 Oct   [url /blog/export-skype How to export Skype data] +: `[Skype]` | `[Export]` | `[Archive]` `[skype-parser]` + +; [$gb] 16 Sep   [url /blog/how-to-encrypt-email How to encrypt email] +: `[All]` | `[Email]` | `[PGP]` `[S/MIME]` `[Email Client]` `[Gmail]` `[Outlook]` `[Protonmail]` + ; [$gb] 10 Sep   [url /blog/encrypted-email Encrypted email] : `[Medium dive]` | `[Email]` | `[Encryption]` `[Security]` `[PGP]` `[S/MIME]` `[Protonmail]` `[Tutanota]` +; [$gb] 30 Jul   [url /blog/fix-no-frame-buffer-plan9 Fix "No frame buffer" error in <span class="no-wrap">Plan 9</span>] +: `[Plan 9]` | `[Configuration]` | `[QEMU/KVM]` `[Linux]` `[monitor]` + +; [$gb] 30 Jul   [url /blog/install-plan9-with-virt-manager Install <span class="no-wrap">Plan 9</span> with virt-manager] +: `[Plan 9]` | `[Installation]` | `[Setup]` `[QEMU/KVM]` `[virt-manager]` `[Linux]` + #### *[2020]* :defs +; [$gb] 24 Jul   [url /blog/how-to-use-jira How to use Jira] +: `[Project Management]` | `[Jira]` | `[Agile]` `[Issue tracking]` `[Bug tracking]` `[Kanban]` `[Atlassian]` + +; [$gb] 21 May   [url /blog/connect-to-mysql-in-dotnet-ef Connect to Mysql in .NET and Entity Framework] +: `[ASP.Net]` | `[MySQL]` | `[Entity Framework]` `[Pomelo]` + ; [$gb] 20 May   [url /blog/mundus-first-shot-at-gamedev Mundus: My first shot at game development] : `[Deep dive]` | `[Gamedev]` | `[2D]` `[Sandbox]` `[Crafting]` `[Building]` `[Fighting]` `[GtkSharp 2.0]` `[C#]` diff --git a/src/blog/install-drivers-for-epson-scanners/index.du b/src/blog/install-drivers-for-epson-scanners/index.du new file mode 100644 index 0000000..faba80e --- /dev/null +++ b/src/blog/install-drivers-for-epson-scanners/index.du @@ -0,0 +1,62 @@ +# Install drivers for Epson scanners + +'define expected-reading 3 min +'define created 26 April 2023 +'define edited 26 April 2023 +[$pagenav] + +'footnote gentoo-sane On Gentoo the package is `[sane-backends]`, as per the [url https://wiki.gentoo.org/wiki/SANE wiki]. + +Sometimes your Epson scanner might work out of the box, and sometimes it might not. +First, make sure you have [url http://sane-project.org/ SANE] installed on your machine[$gentoo-sane]. +Second look through [url http://www.sane-project.org/sane-mfgs.html#Z-EPSON the website], most scanners are supported out of the box, but about 15% of them either aren't supported or are untested. + +## Complete or Good + +'footnote openrc-sane For OpenRC: `[rc-service saned status]` + +If your scanner falls into the first category, labeled "Complete" or "Good", you probably have an issue with SANE. +Make sure the `[saned]` service is running without errors[$openrc-sane]: + +```bash +systemctl status saned.service + +and make sure the [url http://www.sane-project.org/man/sane-epson2.5.html sane-epson2] (or [url http://www.sane-project.org/man/sane-epson.5.html sane-epson]) back-end is enabled, you should have `[epson2]` (or `[epson]`) without a leading `[#]` inside `[/etc/sane.d/dll.conf]`. + +## epkowa plus non-free interpreter + +If it's unsupported and there is a note + +.quote supported by the epkowa backend plus non-free interpreter + +you can still make it work. +You'll have to get the =[non-free]= (free as in [url https://en.wikipedia.org/wiki/Free_software_movement publicly available source code], you don't have to pay for anything) Epson Scan 2 software. + +It can be downloaded from [url https://support.epson.net/linux/en/epsonscan2.php the support site] as a `[deb]` or `[rpm]` package. +If your system doesn't natively work with any of those (i.e. it isn't listed under "Distribution" and isn't some sort of derivative of those), you can still try the `[rpm]` package. + +:ordered +1. Install `[rpm]` with your package manager + +2. Download the 32 or 64 bit =[[ rpm ]]= package + +3. Extract it + + ```bash +tar -xf epsonscan2-bundle-SOMETHING.rpm.tar.gz + +4. Install the core application and non-free plugins with rpm + + ```bash +sudo rpm -Uvh --nodeps ./epsonscan2-bundle-SOMETHING.rpm/core/epsonscan2-SOMETHING.rpm ./epsonscan2-bundle-SOMETHING.rpm/plugins/epsonscan2-non-free-plugin-SOMETHING.rpm + + +Alternatively, you can install the `[deb]` package with `[dpkg]` or build and install it from [url https://download.ebz.epson.net/man/linux/epsonscan2_e.html#sec5-1-4 source] (source file is available at the bottom of the [url https://support.epson.net/linux/en/epsonscan2.php support site]). + +'footnote gentoo-epkowa Surprisingly enough, on my Gentoo installation everything works fine without the package. Either something else is helping me or [url http://www.catb.org/jargon/html/magic-story.html something is in the "more magic" position]... + +You will need[$gentoo-epkowa] to install `[iscan]`, which usually provides the aforementioned `[epkowa]` backend. +Also make sure you have `[epkowa]` inside `[/etc/sane.d/dll.conf]` without a leading `[#]`. + +Finally, only for the very first time after connecting your powered-on scanner, start "Epson Scan 2", select it and press "Next". +The drivers should automatically be installed and you can close the window and use your own scanning software of choice afterwards. diff --git a/src/blog/install-plan9-with-virt-manager/img/boot-screen.png b/src/blog/install-plan9-with-virt-manager/img/boot-screen.png Binary files differnew file mode 100644 index 0000000..20bf0e3 --- /dev/null +++ b/src/blog/install-plan9-with-virt-manager/img/boot-screen.png diff --git a/src/blog/install-plan9-with-virt-manager/img/bootsetup-boot-method.png b/src/blog/install-plan9-with-virt-manager/img/bootsetup-boot-method.png Binary files differnew file mode 100644 index 0000000..a05f4f2 --- /dev/null +++ b/src/blog/install-plan9-with-virt-manager/img/bootsetup-boot-method.png diff --git a/src/blog/install-plan9-with-virt-manager/img/mountdist-browse.png b/src/blog/install-plan9-with-virt-manager/img/mountdist-browse.png Binary files differnew file mode 100644 index 0000000..2f92154 --- /dev/null +++ b/src/blog/install-plan9-with-virt-manager/img/mountdist-browse.png diff --git a/src/blog/install-plan9-with-virt-manager/img/mountdist-distribution-disk.png b/src/blog/install-plan9-with-virt-manager/img/mountdist-distribution-disk.png Binary files differnew file mode 100644 index 0000000..8f59aaa --- /dev/null +++ b/src/blog/install-plan9-with-virt-manager/img/mountdist-distribution-disk.png diff --git a/src/blog/install-plan9-with-virt-manager/img/partdisk-fdisk.png b/src/blog/install-plan9-with-virt-manager/img/partdisk-fdisk.png Binary files differnew file mode 100644 index 0000000..217a26b --- /dev/null +++ b/src/blog/install-plan9-with-virt-manager/img/partdisk-fdisk.png diff --git a/src/blog/install-plan9-with-virt-manager/img/partdisk-mbr.png b/src/blog/install-plan9-with-virt-manager/img/partdisk-mbr.png Binary files differnew file mode 100644 index 0000000..7ef2d14 --- /dev/null +++ b/src/blog/install-plan9-with-virt-manager/img/partdisk-mbr.png diff --git a/src/blog/install-plan9-with-virt-manager/img/partdisk-partition.png b/src/blog/install-plan9-with-virt-manager/img/partdisk-partition.png Binary files differnew file mode 100644 index 0000000..3b34bbb --- /dev/null +++ b/src/blog/install-plan9-with-virt-manager/img/partdisk-partition.png diff --git a/src/blog/install-plan9-with-virt-manager/img/prepdisk-prep.png b/src/blog/install-plan9-with-virt-manager/img/prepdisk-prep.png Binary files differnew file mode 100644 index 0000000..28907de --- /dev/null +++ b/src/blog/install-plan9-with-virt-manager/img/prepdisk-prep.png diff --git a/src/blog/install-plan9-with-virt-manager/img/vga-size.png b/src/blog/install-plan9-with-virt-manager/img/vga-size.png Binary files differnew file mode 100644 index 0000000..6888548 --- /dev/null +++ b/src/blog/install-plan9-with-virt-manager/img/vga-size.png diff --git a/src/blog/install-plan9-with-virt-manager/index.du b/src/blog/install-plan9-with-virt-manager/index.du new file mode 100644 index 0000000..f16c997 --- /dev/null +++ b/src/blog/install-plan9-with-virt-manager/index.du @@ -0,0 +1,91 @@ +# Install Plan 9 with virt-manager + +'define expected-reading 4 min +'define created 30 July 2022 +'define edited 30 July 2022 +[$pagenav] + +.contents +.numbered +1. [url #creating-the-virtual-machine Creating the virtual machine] +2. [url #installing-plan-9-itself Installing Plan 9 itself] + +Installing [url https://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs Plan 9 by Bell Labs] with `[qemu]` itself isn't difficult and there are [url https://9p.io/wiki/plan9/Installing_Plan_9_on_Qemu/ official instructions]. However, when using `[virt-manager]`, there are certain uncertainties that might worry a first-timer and certain issues that arise. + +## Creating the virtual machine + +We'll be installing Plan 9 with a CD (ISO) image. You can download the latest version (compiled every night) from [url https://9p.io/plan9/download.html here]. For a compressed version and checksums, refer to [url https://9p.io/wiki/plan9/Download/index.html this page]. + +:ordered +1. Press the *["Create a new virtual machine"]* and select *["Local install media (ISO image or CDROM)"]* + +2. For the install media select the extracted `[.iso]` CD image of Plan 9 and for operating system chose *["Generic or unknown OS (generic)"]* + +3. For memory select 512 MiB (the default 1024 MiB is also fine) and 1 CPU + + .unordered + - Plan 9 is stupid lightweight and according to [url https://9p.io/wiki/plan9/Installation_instructions/index.html the installation instructions] you need 16-32 MB of memory, but I still prefer to give it a little more, just in case I decide to do something extreme. + - You can also increase these values as much as you like, Plan 9 should be able to handle the more resources + +4. If you plan to only test the OS out, choose *["Create a disk image for the virtual machine"]* and enter 2 GiB of size. If you plan more serious use, you might want to follow [url https://9p.io/wiki/plan9/Installing_Plan_9_on_Qemu/ the qemu instructions] and create a larger disk in the `[.raw]` format. + +5. Finally click finish. + + +## Installing Plan 9 itself + +If everything worked correctly, on boot you should see the screen in step 1. +From here on out, it's dead simple, and I even recommend just going through [url https://www.youtube.com/watch?v=NNWFTq0ZwLE Hatty Hacker's "Basic Plan 9 Installation" YouTube video]. +I'll show a more abridged version of what you need to do. + +:ordered +1. On the boot screen press 1 and enter + + [image ./img/boot-screen.png] + +2. On the questions "use DMA for ide drive" and "mouseport is" press enter + +3. On "vgasize" press enter, or set up a higher (standard) resolution with 24 colors. Examples: `[1920x1080x24]`, `[1280x720x24]` + + .unordered + - A very incomplete list can be found [url https://9p.io/wiki/plan9/setting_the_right_monitor_size/index.html here] + +4. =[Very important!]= On "monitor" enter `[vesa]`. `[xga]` (or `[vga]`) will work during installation but seem to break when booting the installed OS. + + .unordered + - If you mistakenly leave it at `[xga]`, refer to [url /blog/fix-no-frame-buffer-plan9 this tutorial]. + + +From here on out, you press enter at most of the prompts. The following list enumerates all cases where you need to do something else than press enter. + +:ordered +1. On "Disk partiton" question, enter `[sdC0]` (the option that says Hard Disk on it) + + [image ./img/partdisk-partition.png] + +2. On "Install mbr" question, enter `[y]` + + [image ./img/partdisk-mbr.png] + +3. When you get ">>>" before the cursor, press w, then enter, then q and finally enter. This should happen twice, when in `[disk/fdisk]` and `[disk/prep]` + + [image ./img/partdisk-fdisk.png] + + [image ./img/prepdisk-prep.png] + +4. On "Distribution disk" type out the one that ends with `[data]` (and potentially has `[cdrom]` besides it). This is most commonly `[/dev/sdC1/data]` + + [image ./img/mountdist-distribution-disk.png] + +5. When you get "/%" before cursor (during mountdisk task) just enter `[exit]` + + [image ./img/mountdist-browse.png] + +6. On "Enable boot method" enter `[plan9]` + + [image ./img/bootsetup-boot-method.png] + + +After finishing the installation and seeing the message "Feel free to shutdown your computer", Force Off the virtual machine and then power it on again. + +On boot, on the first prompt press enter, and on the second enter `[glenda]`. Enjoy Plan 9! diff --git a/src/blog/managing-apps-with-adb-without-root/index.du b/src/blog/managing-apps-with-adb-without-root/index.du new file mode 100644 index 0000000..eee78d4 --- /dev/null +++ b/src/blog/managing-apps-with-adb-without-root/index.du @@ -0,0 +1,315 @@ +# Managing apps with ADB (and without root) + +'define expected-reading 8 min +'define created 25 February 2023 +'define edited 25 February 2023 +[$pagenav] + +.contents +.numbered +1. [url #installing Installing] +2. [url #opening-a-shell-and-connecting-to-your-device Opening a shell and connecting to your device] +3. [url #managing-applications Managing applications] +4. [url #what-to-remove What to remove] + +Often new phones, especially Samsung ones, come with a whole lot of bloatware, which usually cannot be uninstalled from within the phone. +This could be circumvated by rooting your phone, essentially gaining full administrative control over the device, however this process can be somewhat involved and could [url https://www.xda-developers.com/samsung-galaxy-z-fold-3-unlock-bootloader-broken-camera/ cause issues]. + +A better solution is using the Android Debug Bridge (ADB), a developer tool with which you can more fluently control your device. +Of course, you still won't get full control, but it is as close as it gets, without requiring any permanent and involved configurations. + +If you're having trouble, [url https://www.xda-developers.com/install-adb-windows-macos-linux/ XDA's article], as well as [url https://www.maketecheasier.com/uninstall-system-apps-without-root-android/ these] [url https://www.maketecheasier.com/get-started-with-android-debug-bridge-adb/ maketecheasier] [url https://www.maketecheasier.com/enable-developer-options-in-android-42/ articles] go into more detail and show pictures. + +## Installing + +Windows: + +.numbered +1. Download the official platform tools from [url https://dl.google.com/android/repository/platform-tools-latest-windows.zip here] +2. Extract the files in a folder and navigate to it + +Linux (or MacOS): + +.bulleted +- With your package manager, it should be called `[android-tools]`, `[android-tools-adb]` or `[android-platform-tools]` +- Worst case scenario, download and extract it from [url https://dl.google.com/android/repository/platform-tools-latest-linux.zip here] for Linux, and [url https://dl.google.com/android/repository/platform-tools-latest-darwin.zip here] for MacOS. + +## Opening a shell and connecting to your device + +ADB is very powerfull, so by default phones don't allow you to connect to the device with it. +First, we'll allow such a connection: + +.numbered +1. Go to `[Settings/About phone]` (depending on your Android skin, this might be located in a slightly different place) +2. Tap "Build number" 7 times, until a message says you're done +3. Navigate to the Developer options, which is often in `[Settings/Developer options]`, but could also be inside the `[Settings/System]` menu +4. Enable the "USB debugging option" (if a popup appears, click OK) + +ADB is a command-line only tool, so first open a terminal inside the platform-tools directory: + +.bulleted +- On Window, Right-click in the directory and press "Open PowerShell window here" or "Open command window here" or "Open in Terminal" (different OS versions show a different option) +- On Linux (and MacOS), open a terminal window and `[cd]` to the platform-tools directory + +Connect your phone to the computer with a USB cable, change the transfer mode to "File transfer" and in the terminal enter: + +```shell +adb devices + +On your phone you should get a poppup asking "Allow USB debugging?", press OK. +You should get a "List of devices attached", and it should have one entry (a line below it, with some number and letters and then the word "device"). + +'footnote interactive-shell You could just run every command like `[adb shell COMMAND]`, which wouldn't give you an interactive shell, so it is less convinient + +Now, we'll open a shell[$interactive-shell], a program with which to directly enter commands that the device understands: + +```shell +adb shell + +## Managing applications + +There are 3 general commands that you would want to use: + +```shell +pm list packages + +Which prints the internal names of all applications that are installed on the device. +All of the other commands use those names (without the leading "package:", if it exists) for referring to applications. + +```shell +pm uninstall -k --user 0 PACKAGE + +Where PACKAGE is an aforementioned application name. +This command just uninstalls the app for the normal user, meaning it will be brought back on factory reset. + +```shell +pm disable --user 0 PACKAGE + +Disabled PACKAGE, so it wouldn't work but you wouldn't need to reinstall it (just enable it). +Beware that, if it shows some sort of error (anything that isn't "Success"), you'll probably need to use `[disable-user]`, rather than just `[disable]`. + +After you're done, you can pretty much just unplug your device, but remember to =[turn back off the "USB debugging" option!]= + +## What to remove + +This is a lost of commands, which remove a whole lot of arguably unnecessary apps. +Use =[AT YOUR OWN RISK!]= +Although they shouldn't, they might cause problems =[FOR WHICH I'M NOT RESPONSIBLE!]= + +:unordered +- Facebook + +```shell +pm uninstall -k --user 0 package:com.facebook.services +pm uninstall -k --user 0 package:com.facebook.katana +pm uninstall -k --user 0 package:com.facebook.system +pm uninstall -k --user 0 package:com.facebook.appmanager + +- Netflix + +```shell +pm uninstall -k --user 0 com.netflix.partner.activation +pm uninstall -k --user 0 com.netflix.mediaclient + +- Microsoft apps + +```shell +pm uninstall -k --user 0 com.microsoft.skydrive +pm uninstall -k --user 0 com.skype.raider +pm uninstall -k --user 0 com.microsoft.office.excel +pm uninstall -k --user 0 com.microsoft.office.word +pm uninstall -k --user 0 com.microsoft.office.powerpoint + +- Google apps + +```shell +pm uninstall -k --user 0 com.google.android.googlequicksearchbox +pm uninstall -k --user 0 com.google.android.gm +pm uninstall -k --user 0 com.google.android.apps.tachyon +pm uninstall -k --user 0 com.google.android.music +pm uninstall -k --user 0 com.google.android.apps.docs +pm uninstall -k --user 0 com.google.android.apps.maps +pm uninstall -k --user 0 com.android.chrome +pm uninstall -k --user 0 com.google.android.apps.photos +pm uninstall -k --user 0 com.google.vr.vrcore +pm uninstall -k --user 0 com.google.android.youtube +pm uninstall -k --user 0 com.google.android.videos +pm uninstall -k --user 0 com.google.android.talk +pm uninstall -k --user 0 com.google.android.apps.books +pm uninstall -k --user 0 com.google.android.apps.magazines +pm uninstall -k --user 0 com.google.android.apps.plus + +- Windows 10 Phone comanion + +```shell +pm uninstall -k --user 0 com.microsoft.appmanager + +- AR Emoji + +```shell +pm uninstall -k --user 0 com.samsung.android.aremoji + +- Bixby + +```shell +pm uninstall -k --user 0 com.samsung.android.bixby.agent +pm uninstall -k --user 0 com.samsung.android.bixby.es.globalaction +pm uninstall -k --user 0 com.samsung.android.bixbyvision.framework +pm uninstall -k --user 0 com.samsung.android.bixby.wakeup +pm uninstall -k --user 0 com.samsung.android.bixby.plmsync +pm uninstall -k --user 0 com.samsung.android.bixby.voiceinput +pm uninstall -k --user 0 com.samsung.systemui.bixby +pm uninstall -k --user 0 com.samsung.android.bixby.agent.dummy +pm uninstall -k --user 0 com.samsung.android.app.settings.bixby +pm uninstall -k --user 0 com.samsung.systemui.bixby2 +pm uninstall -k --user 0 com.samsung.android.bixby.service +pm uninstall -k --user 0 com.samsung.android.app.routines +pm uninstall -k --user 0 com.samsung.android.visionintelligence +pm uninstall -k --user 0 com.samsung.android.app.spage + +- Samsung Pass/Pay + +```shell +pm uninstall -k --user 0 com.samsung.android.samsungpassautofill +pm uninstall -k --user 0 com.samsung.android.authfw +pm uninstall -k --user 0 com.samsung.android.samsungpass +pm uninstall -k --user 0 com.samsung.android.spay +pm uninstall -k --user 0 com.samsung.android.spayfw + +- Samsung Kids + +```shell +pm uninstall -k --user 0 com.samsung.android.kidsinstaller +pm uninstall -k --user 0 com.samsung.android.app.camera.sticker.facearavatar.preload + +- Samsung Game Launcher + +```shell +pm uninstall -k --user 0 com.samsung.android.game.gamehome +pm uninstall -k --user 0 com.enhance.gameservice +pm uninstall -k --user 0 com.samsung.android.game.gametools +pm uninstall -k --user 0 com.samsung.android.game.gos + +- Galaxy Friends + +```shell +pm uninstall -k --user 0 com.samsung.android.mateagent + +- Samsung Smartthings + +```shell +pm uninstall -k --user 0 com.samsung.android.easysetup +pm uninstall -k --user 0 com.samsung.android.beaconmanager +pm uninstall -k --user 0 com.samsung.android.oneconnect + +- Carmode + +```shell +pm uninstall -k --user 0 com.samsung.android.drivelink.stub + +- Stickers + +```shell +pm uninstall -k --user 0 com.sec.android.mimage.avatarstickers + +- Samsung Global Goals + +```shell +pm uninstall -k --user 0 com.samsung.sree + +- Samsung Members + +```shell +pm uninstall -k --user 0 com.samsung.android.voc + +- Samsung LED cover + +```shell +pm uninstall -k --user 0 com.samsung.android.app.ledbackcover +pm uninstall -k --user 0 com.sec.android.cover.ledcover + +- Samsung TV + +```shell +pm uninstall -k --user 0 com.sec.android.app.withtv + +- Knox + +```shell +pm uninstall -k --user 0 com.samsung.knox.securefolder +pm uninstall -k --user 0 com.knox.vpn.proxyhandler +pm uninstall -k --user 0 com.samsung.knox.keychain +pm uninstall -k --user 0 com.sec.enterprise.knox.cloudmdm.smdms +pm uninstall -k --user 0 com.samsung.android.knox.analytics.uploader +pm uninstall -k --user 0 com.sec.enterprise.knox.attestation +pm uninstall -k --user 0 com.samsung.android.knox.containercore + +- Samsung DEX + +```shell +pm uninstall -k --user 0 com.sec.android.desktopmode.uiservice +pm uninstall -k --user 0 com.samsung.desktopsystemui +pm uninstall -k --user 0 com.sec.android.app.desktoplauncher + +- Samsung Browser + +```shell +pm uninstall -k --user 0 com.sec.android.app.sbrowser +pm uninstall -k --user 0 com.samsung.android.app.sbrowseredge + +- Samsung Email + +```shell +pm uninstall -k --user 0 com.samsung.android.email.provider +pm uninstall -k --user 0 com.wsomacp + +- Samsung Smartthings + +```shell +pm uninstall -k --user 0 com.samsung.android.easysetup +pm uninstall -k --user 0 com.samsung.android.beaconmanager +pm uninstall -k --user 0 com.samsung.android.oneconnect + +- Gear VR + +```shell +pm uninstall -k --user 0 com.samsung.android.hmt.vrsvc +pm uninstall -k --user 0 com.samsung.android.app.vrsetupwizardstub +pm uninstall -k --user 0 com.samsung.android.hmt.vrshell +pm uninstall -k --user 0 com.google.vr.vrcore + +- Printings + +```shell +pm uninstall -k --user 0 com.android.bips +pm uninstall -k --user 0 com.google.android.printservice.recommendation +pm uninstall -k --user 0 com.android.printspooler + +- Upday news + +```shell +pm uninstall -k --user 0 de.axelspringer.yana.zeropage + +- Verizon + +```shell +pm uninstall -k --user 0 com.vcast.mediamanager +pm uninstall -k --user 0 com.samsung.vmmhux +pm uninstall -k --user 0 com.vzw.hss.myverizon +pm uninstall -k --user 0 com.asurion.android.verizon.vms +pm uninstall -k --user 0 com.motricity.verizon.ssodownloadable +pm uninstall -k --user 0 com.vzw.hs.android.modlite +pm uninstall -k --user 0 com.samsung.vvm +pm uninstall -k --user 0 com.vznavigator.[You_Model_Here] + +- T-mobile + +```shell +pm uninstall -k --user 0 com.mobitv.client.tmobiletvhd +pm uninstall -k --user 0 us.com.dt.iq.appsource.tmobile + + +\n + +More information on available package commands can be shown with `[pm help]`. +You can learn more about the adb tool from [url https://developer.android.com/studio/command-line/adb developer.android.com]. diff --git a/src/blog/remove-weather-widget/img/remove-newsweather-windows10.png b/src/blog/remove-weather-widget/img/remove-newsweather-windows10.png Binary files differnew file mode 100644 index 0000000..02ef734 --- /dev/null +++ b/src/blog/remove-weather-widget/img/remove-newsweather-windows10.png diff --git a/src/blog/remove-weather-widget/img/windows10-taskbar.png b/src/blog/remove-weather-widget/img/windows10-taskbar.png Binary files differnew file mode 100644 index 0000000..84f62aa --- /dev/null +++ b/src/blog/remove-weather-widget/img/windows10-taskbar.png diff --git a/src/blog/remove-weather-widget/index.du b/src/blog/remove-weather-widget/index.du new file mode 100644 index 0000000..b8193fc --- /dev/null +++ b/src/blog/remove-weather-widget/index.du @@ -0,0 +1,19 @@ +# How to remove Windows Weather Widget + +'define expected-reading 1 min +'define created 26 October 2021 +'define edited 26 October 2021 +[$pagenav] + +From June 2021 Microsoft introduced the `[Weather Widget]` on Windows 10. Given that it takes up space on the taskbar [url https://www.howtogeek.com/734461/windows-10s-weather-widget-is-a-mess.-is-windows-11-next/ and is a huge mess], you might want to remove it. + +This is how: + +:ordered +1. Right-click on an empty spot in the taskbar + + [image ./img/windows10-taskbar.png] + +2. Go up to *[News and interests]*, and then click *[Turn off]* in the popped up window + + [image ./img/remove-newsweather-windows10.png] diff --git a/src/blog/turn-off-notifications-windows/img/windows-search-notifications.png b/src/blog/turn-off-notifications-windows/img/windows-search-notifications.png Binary files differnew file mode 100644 index 0000000..6ffee88 --- /dev/null +++ b/src/blog/turn-off-notifications-windows/img/windows-search-notifications.png diff --git a/src/blog/turn-off-notifications-windows/img/windows-settings-notifications-application.png b/src/blog/turn-off-notifications-windows/img/windows-settings-notifications-application.png Binary files differnew file mode 100644 index 0000000..c1f2727 --- /dev/null +++ b/src/blog/turn-off-notifications-windows/img/windows-settings-notifications-application.png diff --git a/src/blog/turn-off-notifications-windows/img/windows-settings-notifications-off.png b/src/blog/turn-off-notifications-windows/img/windows-settings-notifications-off.png Binary files differnew file mode 100644 index 0000000..6c4fbb3 --- /dev/null +++ b/src/blog/turn-off-notifications-windows/img/windows-settings-notifications-off.png diff --git a/src/blog/turn-off-notifications-windows/index.du b/src/blog/turn-off-notifications-windows/index.du new file mode 100644 index 0000000..cf60632 --- /dev/null +++ b/src/blog/turn-off-notifications-windows/index.du @@ -0,0 +1,27 @@ +# How to turn off notifications on Windows + +'define expected-reading 1 min +'define created 01 November 2021 +'define edited 01 November 2021 +[$pagenav] + +What if you need to concentrate on some work, and you don't want to have your notifications show up while doing so? Or, what if some apps just put out notifications too often? Well, this is how to disable notifications: + +:ordered +1. In the *[Search bar]* type in =[Notification]=. The =[Notification & actions settings]= option should show up, click it + + [image ./img/windows-search-notifications.png] + +2. If you want to turn off all notifications, switch the =[Get notifications from apps and other senders]= to the *[Off]* position + + [image ./img/windows-settings-notifications-off.png] + + .p + *[Note: "Suggest best ways", "Welcome Experience" and "Tips and tricks" will still show up, you'll have to uncheck those individually]* + + .p + If you want to turn off notifications for specific apps, scroll down to the =[Get notifications from these senders]=, find the applications you want to turn off notifications for and flick the switch + + [image ./img/windows-settings-notifications-application.png] + +3. Finally, you can simply close the window diff --git a/src/blog/virt-manager-freeze-on-browse/index.du b/src/blog/virt-manager-freeze-on-browse/index.du new file mode 100644 index 0000000..067c86d --- /dev/null +++ b/src/blog/virt-manager-freeze-on-browse/index.du @@ -0,0 +1,23 @@ +# virt-manager freezing up when clicking Browse in any window + +'define expected-reading 1 min +'define created 01 January 2023 +'define edited 01 January 2023 +[$pagenav] + +The title explains what the problem is. +You might've also noticed that it spikes a CPU core's utilization to 100%. +Furthermore everything works if you enter a file location manually in the corresponding input field, it's just that darn button. + +'footnote storage-pools The storage pool is just a folder with files that store what locations can be used by virtual machines (more info [url https://libvirt.org/storage.html here]). In the case of virt-manager, pretty much every time you select any folder or file, a folder entry gets added there. + +This issue is caused by some sort of problem with the storage pools[$storage-pools] when it tries to load them. +I was able to fix it by pretty much deleting that folder, but you really should just rename it: + +```shell +sudo mv /etc/libvirt/storage /etc/libvirt/storage-broken + +libvirt automagically regenerates the original folder, so you might need to restart it: + +```shell +sudo systemctl restart libvirtd diff --git a/src/blog/windows-run-dialog/img/open-run-windows-menu.png b/src/blog/windows-run-dialog/img/open-run-windows-menu.png Binary files differnew file mode 100644 index 0000000..0d279fe --- /dev/null +++ b/src/blog/windows-run-dialog/img/open-run-windows-menu.png diff --git a/src/blog/windows-run-dialog/img/run-dialog.png b/src/blog/windows-run-dialog/img/run-dialog.png Binary files differnew file mode 100644 index 0000000..4722074 --- /dev/null +++ b/src/blog/windows-run-dialog/img/run-dialog.png diff --git a/src/blog/windows-run-dialog/index.du b/src/blog/windows-run-dialog/index.du new file mode 100644 index 0000000..5f54169 --- /dev/null +++ b/src/blog/windows-run-dialog/index.du @@ -0,0 +1,125 @@ +# Windows Run dialog + +'define expected-reading 3 min +'define created 04 October 2021 +'define edited 31 October 2021 +[$pagenav] + +:contents +:numbered +1. [url #opening-the-run-dialog Opening the Run dialog] + +2. [url #commands Commands] + .numbered + 1. [url #folders Folders] + 2. [url #programs Programs] + 3. [url #windows-settings Windows settings] + +3. [url #for-more For more] + + + +On Windows, most often you run an application by finding and double-clicking it's `[.exe]` file. What a lot of people don't realise is that you can launch any application or open any file you want by typing a single command. That can be achieved inside the =[Run dialog]=. + +## Opening the Run dialog + +To open the Run dialog, you can either: + +*[A)]* Press `[Win + R]` key combination + +or + +*[B)]* Right click on the Windows menu, and then press `[Run]` + +[image ./img/open-run-windows-menu.png] + +## Commands + +[image ./img/run-dialog.png] + +### Folders + +You can open any folder by typing in it's =[full path]=. So, if you have a folder named `[Work]` inside your `[Documents]` folder, the full path will be something like `[C:\Users\John\Documents\Work\\]`. + +If your desired folder is directly in your account folder, so `[Desktop]`, `[Documents]`, `[Pictures]`, etc. you can just type in the name of the folder. For example, if you want to open your `[Pictures]` folder, just type in `[pictures]` and it will be opened. + +There are, of course, some more special location, some of which are: + +.table +|=Command=||=Location=| +|:`[%ProgramFiles%]`:||:Program Files Folder:| +|:`[%AppData%]`:||:User's App Data Folder:| + +=[Bonus]=: `[%appdata%\Microsoft\Windows\Start Menu]` will open the Start Menu folder, from which you can edit what goes inside your start menu. + +### Programs + +You can always run any application by typing in it's full path. So, to launch something like FireFox, you'll need to type in `[C:\Program Files\Mozilla Firefox\firefox.exe]`. + +But, whats more important is that you can more easily launch some Windows apps, like Calculator or Control Panel. Here is a list of commands and the application they launch: + +.table +|=Command=||=Application=| +|:`[calc]`:||:Calculator:| +|:`[mspaint]`:||:Microsoft Paint:| +|:`[snippingtool]`:||:Snipping Tool:| +|:`[notepad]`:||:Notepad:| +|:`[sndvol]`:||:Volume Mixer:| +|:`[soundrecroder]`:||:Sound Recorder:| +|:`[wuapp]`:||:Windows Updates:| +|:`[shutdown]`\*:||:Shutdown or restart computer:| +|::||::| +|:`[cmd]`:||:Command Prompt:| +|:`[powershell]`:||:Windows PowerShell:| +|:`[control]`:||:Control Panel:| +|:`[taskmgr]`:||:Task Manager:| +|:`[msinfo32]`:||:System Information:| +|:`[winver]`:||:Windows Version Window:| +|:`[cleanmgr]`:||:Disk Cleanup:| +|:`[dfrgui]`:||:Disk Cleanup (defragmentation):| +|:`[mstsc]`:||:Remote Desktop Connection:| +|::||::| +|:`[regedit]`:||:Registry Editor:| +|:`[msconfig]`:||:System Configuration Settings:| +|:`[dcomcnfg]`:||:Component Services:| +|:`[sigverif]`:||:File Signature Verification Tool:| + +\*: The `[shutdown]` command [url https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/shutdown requires parameters]: + +.bulleted +- `[/s]` will shutdown in one minute +- `[/r]` will restart in one minute +- `[/t]` specifies after what amount of time to shutdown or restart (a number needs to be entered afterwards, so `[/t 0]` for immediate execution) +- `[/f]` forces running applications to close (might result in data loss!) + +### Windows settings + +There are also many "shortcuts" to different Windows settings windows. Those include: + +.table +|=Command=||=Setting=| +|:`[mmsys.cpl]`:||:Sound Properties:| +|:`[powercfg.cpl]`:||:Power Options:| +|:`[timedate.cpl]`:||:Time and Date Options:| +|:`[ncpa.cpl]`:||:Network Connections:| +|::||::| +|:`[inetcpl.cpl]`:||:Internet Properties:| +|:`[compmgmt.msc]`:||:Computer Manager:| +|:`[devmgmt.msc]`:||:Device Manager:| +|:`[diskmgmt.msc]`:||:Disk Management:| +|:`[firewall.cpl]`:||:Windows Firewall:| +|::||::| +|:`[sysdm.cpl]`:||:System Properties:| +|:`[services.msc]`:||:Services:| +|:`[comexp.msc]`:||:Component Services:| +|:`[gpedit.msc]`:||:Group Policy Editor:| +|:`[lusrmgr.msc]`:||:Local Users and Groups:| +|:`[certmgr.msc]`:||:Certificate Manager:| +|:`[taskschd.msc]`:||:Task Scheduler:| +|:`[fsmgmt.msc]`:||:Shared Folders:| + +=[Note]=: `[cpl]` stands for *[Control Panel Item]* and `[msc]` stands for *[Microsoft System Configuration]*. + +## For more + +For more commands, check out [url https://windowsruncommands.com/ windowsruncommands.com]. They have a much bigger list of commands and shortcuts you can use. |