~strahinja/strahinja.srht.site

386fa5e1063b89093868db573577805165146725 — Страхиња Радић a month ago 2850700 + 1fcd7e1
Merge branch 'master' of git.sr.ht:~strahinja/strahinja.srht.site
A blog/2021-10/20211008.gmi => blog/2021-10/20211008.gmi +11 -0
@@ 0,0 1,11 @@
# Artix

Недавно сам прихватио понуду да одржавам init систем 66 при дистрибуцији Artix Linux, па сам тренутно suite66 maintainer за ту дистрибуцију.

=> https://wiki.artixlinux.org/Main/Suite66	init систем 66

Ових дана сам и поставио AUR пакете неких мојих програма у Arch User Repository. Ово значи да се ти програми могу инсталирати преко AUR helper-а као што су yay, trizen или pikaur.

=> https://aur.archlinux.org/packages/?SeB=m&K=strajder	AUR пакете



A blog/2021-10/20211012.gmi => blog/2021-10/20211012.gmi +91 -0
@@ 0,0 1,91 @@
# Од текста до PDF-а

Понекад је корисно имати могућност  да се једноставна текстуална датотека претвори у PDF. Наравно, текст се може учитати у неки процесор текста као што је Libre Office Writer, али уз CUPS, постоји и далеко једноставније решење, које не захтева покретање спорих графичких апликација за тако једноставан посао.

CUPS између осталог садржи и CLI програм texttopdf, који се може употребити за „штампање“ у PDF. На пример, да бисмо претворили датотеку file.txt у file.pdf, можемо да покренемо:

```
$ CHARSET=utf-8 /usr/lib/cups/filter/texttopdf 1 1 1 1 1 \
		< file.txt > file.pdf
```

Међутим, овај програм дозвољава и да задамо произвољан фонт уз помоћ датотеке за задавање кодног распореда. Подразумевано, ове датотеке се налазе у директоријуму /usr/share/cups/charsets. Простим копирањем датотеке /usr/share/cups/charsets/pdf.utf-8.simple у датотеку у корисничком директоријуму, рецимо ~/.config/cups/charsets/pdf.utf-8.custom, и креирањем симболичке везе од те датотеке до pdf.utf-8 у истом директоријуму, можемо texttopdf-у задати произвољан фонт, ако поставимо променљиву CUPS_DATADIR.

```
$ CUPS_DATADIR=~/.config/cups CHARSET=utf-8 \
	/usr/lib/cups/filter/texttopdf 1 1 1 1 1 \
		< file.txt > file.pdf
```

Фонт се може задати на два начина: преко fontconfig-овог имена фонта, или преко апсолутне путање ка .ttf или .otf датотеци. Рецимо:

```
charset utf8
0000 04FF ltor single /usr/local/share/fonts/iosevkanf/Iosevka_Nerd_Font_Complete.ttf
0500 05FF rtol single /usr/local/share/fonts/iosevkanf/Iosevka_Nerd_Font_Complete.ttf
3000 9FFF ltor double ARPLUmingCN
```

поставља дати TTF фонт као фонт којим ће бити исписан текст у PDF датотеци.

Недостаци овог приступа су, ипак, што добијени PDF не може да се претражује и што се фонт уграђује у целости. Ово се може отклонити позивањем програма pdftocairo из пакета poppler:

=> https://poppler.freedesktop.org/	poppler

```
$ pdftocairo file.pdf -pdf file-optimized.pdf
```

Пошто програм texttopdf функционише као традиционални Уникс алати, односно чита податке са stdin-а и исписује их на stdout, овако се може креирати PDF датотека не само од постојеће текстуалне датотеке, већ и од произвољно добијеног текста послатог на stdin:

```
$ df -h | CUPS_DATADIR=~/.config/cups CHARSET=utf-8 \
	/usr/lib/cups/filter/texttopdf 1 1 1 1 1 \
		> df-listing.pdf
```

Рецимо, може се искористити мој програм table да се форматира CSV датотека и излаз конвертује у PDF. На пример, нека је датотека sales.csv:

=> https://strahinja.srht.site/table	мој програм table

```
"Item","Q1 2020","Q2 2020","Q3 2020","Q4 2020"
"Toothpick","15.2","12","","10"
"Teapot","1.2","","5","3.5"
```

Наредбама:

```
$ table -n sales.csv | CUPS_DATADIR=~/.config/cups CHARSET=utf-8 \
	/usr/lib/cups/filter/texttopdf 1 1 1 1 1 \
		> sales-unoptimized.pdf
$ pdftocairo sales-unoptimized.pdf -pdf sales.pdf
```

добијамо датотеку sales.pdf:

=> https://strahinja.org//doku/sales.pdf	sales.pdf

```
$ ls -l
-rw-r--r--   1 strajder strajder  191159 12. окт. у 20:24  sales-unoptimized.pdf
-rw-r--r--   1 strajder strajder   12459 12. окт. у 20:25  sales.pdf
```

Ако наредбу којом позивамо texttopdf „спакујемо“ у алијас, нпр:

```
alias txt2pdf='CUPS_DATADIR=~/.config/cups CHARSET=utf-8 \
	/usr/lib/cups/filter/texttopdf 1 1 1 1 1'
```

прва наредба добија далеко једноставнији облик:

```
$ table -n sales.csv | txt2pdf > sales-unoptimized.pdf
```

Наравно, мислим да не треба ни помињати да цео процес траје знатно брже од самог покретања неког процесора текста.



M blog/index.gmi => blog/index.gmi +5 -1
@@ 1,5 1,7 @@
# Блог Страхиње Радића

=> gemini://gemini.strahinja.org/blog/2021-10/20211012.gmi	2021-10-12 Од текста до PDF-а
=> gemini://gemini.strahinja.org/blog/2021-10/20211008.gmi	2021-10-08 Artix
=> gemini://gemini.strahinja.org/blog/2021-09/20210926.gmi	2021-09-26 Превод lftp-а
=> gemini://gemini.strahinja.org/blog/2021-08/20210812.gmi	2021-08-12 Кодни стандард
=> gemini://gemini.strahinja.org/blog/2021-08/20210809.gmi	2021-08-09 Освежавање GPG кључева


@@ 22,4 24,6 @@
=> gemini://gemini.strahinja.org/blog/2021-02/20210210.gmi	2021-02-10 Подешавање groff-а
=> gemini://gemini.strahinja.org/blog/2021-02/20210207.gmi	2021-02-07 Корак ка једноставном
=> gemini://gemini.strahinja.org/blog/2020-07/20200705.gmi	2020-07-05 Мој први npm пакет
=> gemini://gemini.strahinja.org/blog/2020-06/20200624.gmi	2020-06-24 Nuxtpress




M index.gmi => index.gmi +4 -0
@@ 21,6 21,8 @@

Ја сам програмер са широким опсегом програмерских вештина. Почео сам у Basic-у деведесетих. Тренутно сам заинтересован за: C и suckless програме.

Тренутно сам suite66 maintainer дистрибуције Artix Linux.

Занима ме и локализација софтвера. Учествовао сам у раним настојањима да се на српски локализује низ пакета слободног софтвера, и одговоран сам за координацију превода www.gnu.org-а на српски (иако га већ дуго нисам преводио). Међу програмима које сам превео или помогао у превођењу на српски су ГНУ-ов Поноћни наредник (GNU Midnight Commander), elinks, links, Јудит (Yudit), Џемини клијент Lagrange, мејл клијент Neomutt, RSS читач snownews, и у мањој мери делови окружења KDE и Гном (GNOME). Начинио сам своје незваничне преводе ГНУ-ове опште јавне лиценце (GNU General Public License, и в2 и в3) на српски.  

## In English


@@ 29,6 31,8 @@ My name is Strahinya Radich (Serbian cyrillic: Страхиња Радић).

I am a programmer with a wide programming skill set. I started with Basic in the 1990s. Currently interested in: C, suckless programs.

Currently, I'm suite66 maintainer for the Artix Linux distribution.

I am also interested in software localization. I participated in the early efforts to localize a number of Free Software packages to Serbian, and am responsible for coordinating the translation of www.gnu.org to Serbian (though I haven't actively translated it for some time now). Among the programs I translated or helped translate into Serbian are GNU Midnight Commander, elinks, links, Yudit, Gemini client Lagrange, mail client Neomutt, RSS reader snownews, and to a lesser extent parts of KDE and GNOME. I made my own unofficial translations of GNU General Public License (both v2 and v3) to Serbian.  

# Корисне везе / Useful links

M index.slw => index.slw +6 -0
@@ 16,6 16,8 @@ Gemini version of this page:
Ја сам програмер са широким опсегом програмерских вештина. Почео сам у Basic-у
деведесетих. Тренутно сам заинтересован за: C и suckless програме.

Тренутно сам _[suite66][suite66] maintainer_ дистрибуције _Artix Linux_.

Занима ме и локализација софтвера. Учествовао сам у раним настојањима да се на
српски локализује низ пакета слободног софтвера, и одговоран сам за координацију
превода www.gnu.org-а на српски (иако га већ дуго нисам преводио). Међу


@@ 32,6 34,9 @@ My name is [Strahinya Radich][strahinjaorg] (Serbian cyrillic: Страхиња 
I am a programmer with a wide programming skill set. I started with Basic in the
1990s. Currently interested in: C, suckless programs.

Currently, I'm _[suite66][suite66] maintainer_ for the _Artix Linux_
distribution.

I am also interested in software localization. I participated in the early
efforts to localize a number of Free Software packages to Serbian, and am
responsible for coordinating the translation of www.gnu.org to Serbian (though I


@@ 92,5 97,6 @@ Copyright © 1999-2021 Страхиња Радић (Strahinya Radich)
[slweb]: /slweb
[srhtprofile]: https://sr.ht/~strahinja
[strahinjaorg]: https://strahinja.org
[suite66]: https://wiki.artixlinux.org/Main/Suite66
[table]: /table
[ttools]: /text-tools

M poe/index.slw => poe/index.slw +11 -0
@@ 13,6 13,7 @@ meta: index-meta.csv

**poe** is a .po (GNU gettext) file editor with a terminal UI.


## Q&amp;A

{.qna}


@@ 58,6 59,7 @@ is less bloated than ncurses.{/.a}
[Screenshot 1][screen-0.5-01]  
[Screenshot 2][screen-0.5-02]


## Prerequisites

* C compiler (**GCC**-compatible) - `${POE_CC:-gcc}`


@@ 83,11 85,20 @@ if you don't:
# ./do install
```


## Install (Arch)

```
$ <aur_helper> -S poe
```


## Bugs and limitations

Bugs can be reported using the [ticket tracker][issue]. See the manpage (`man
poe`) after installing **poe** for more information.


## License

poe - .po file editor  

M slweb/index.gmi => slweb/index.gmi +10 -3
@@ 80,6 80,14 @@ $ SLWEB_CC=tcc redo -j10

In the case of tcc, the tradeoff is that the debug information is limited compared to gcc, but the compilation time is significantly shorter.


## Install (Arch)

```
$ <aur_helper> -S slweb
```


## Examples

See the examples/ directory in this repository.


@@ 88,7 96,6 @@ See the examples/ directory in this repository.

Given the file index.slw in the current directory:


```
---
site-name: Test website


@@ 105,14 112,12 @@ This is an _example_ of a statically generated HTML.

after using the command:


```
$ slweb index.slw > index.html
```

file `index.html` contains:


```
<!DOCTYPE html>
<html lang="en">


@@ 135,6 140,7 @@ file `index.html` contains:
</html>
```


## TODO (checklist)

See the file TODO for more information.


@@ 150,6 156,7 @@ Bugs can be reported using the slweb ticket tracker.

See the manpage (man slweb) after installing slweb for more information.


## License

slweb - Simple static website generator.  

M slweb/index.slw => slweb/index.slw +7 -0
@@ 90,6 90,13 @@ In the case of **tcc**, the tradeoff is that the debug information is limited
compared to **gcc**, but the compilation time is significantly shorter.


## Install (Arch)

```
$ <aur_helper> -S slweb
```


## Examples

See the [`examples/`][examp] directory in this repository.

M table/index.gmi => table/index.gmi +7 -0
@@ 44,6 44,13 @@ if you don't:
```


## Install (Arch)

```
$ <aur_helper> -S table
```


## Examples

Periodically display CPU load information in a single-line table

M table/index.slw => table/index.slw +8 -0
@@ 37,6 37,14 @@ if you don't:
# ./do install
```


## Install (Arch)

```
$ <aur_helper> -S table
```


## Examples

Periodically display CPU load information in a single-line table