-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathindex.xml
More file actions
1486 lines (1306 loc) · 98.5 KB
/
index.xml
File metadata and controls
1486 lines (1306 loc) · 98.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>the fØund4ŧ¹°n</title>
<link>https://the-foundation.is-a-p.ro.eu.org/</link>
<description>Recent content on the fØund4ŧ¹°n</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<lastBuildDate>Wed, 22 Mar 2023 00:00:00 +0000</lastBuildDate>
<atom:link href="https://the-foundation.is-a-p.ro.eu.org/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Exporting all layers of docker images with one command</title>
<link>https://the-foundation.is-a-p.ro.eu.org/posts/2023_03_22_exporting_all_layers_of_docker_images_with_one_command/</link>
<pubDate>Wed, 22 Mar 2023 00:00:00 +0000</pubDate>
<guid>https://the-foundation.is-a-p.ro.eu.org/posts/2023_03_22_exporting_all_layers_of_docker_images_with_one_command/</guid>
<description><h2 id="creation-of-docker-images-from-a-filefolder">Creation of Docker images from a file/folder</h2>
<p>It seemed to be an easy task to just use Docker Images as file archives,
since you could simply create an image with a command like</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo tar cv buildcache_persist <span class="p">|</span>docker import - <span class="s2">&#34;</span><span class="si">${</span><span class="nv">CICACHETAG</span><span class="si">}</span><span class="s2">&#34;</span> <span class="o">&amp;&amp;</span> docker push <span class="s2">&#34;</span><span class="si">${</span><span class="nv">CICACHETAG</span><span class="si">}</span><span class="s2">&#34;</span>
</span></span></code></pre></div><p>( in our examples we assume that we want to save/restore the folder <code>buildcache_persist</code> )</p>
<h3 id="extraction--and-the-trouble-">Extraction ( and the trouble )</h3>
<p>But the extraction was a bit more complicated,
dealing with tar archives should be not too complicated ,
but it did&rsquo;t instantly work on all machines..</p>
<p>( Do not use below code , it worked only on 1 out of 3 systems)</p>
<pre tabindex="0"><code> echo &#34;REMOVING AND GETTING ${CICACHETAG} AGAIN ( MERGE )&#34;
docker rmi ${CICACHETAG}
docker pull ${CICACHETAG} &amp;&amp; (
cd /tmp/;docker save ${CICACHETAG} &gt; /tmp/.importCI ;
tar xvf /tmp/.importCI --to-stdout $(tar tf /tmp/.importCI|grep layer.tar) |tar xv
rm /tmp/.importCI
)
echo &#34;SAVING ${CICACHETAG}&#34;
</code></pre><hr>
<p>In fact Murphys Law kicked in &ldquo;again&rdquo;,
since everything went well in &ldquo;real machines&rdquo; but CI-Runners failed with &ldquo;famous&rdquo; error:</p>
<pre tabindex="0"><code>tar: invalid tar header checksum
</code></pre><h2 id="the-internetz--or-better-stack-overflow-aka-crap-overloadposts2023_02_02_shittification_of_the_internetz-the_toxic_thingy_stack_overflow_became_and_why_it_is_so_annoying_to_even_ask_on_crap_overload--had-some-half-knowledge--false-positive-answer-again">The internetz , or better <a class="link" href="https://the-foundation.is-a-p.ro.eu.org/posts/2023_02_02_shittification_of_the_internetz-the_toxic_thingy_stack_overflow_became_and_why_it_is_so_annoying_to_even_ask_on_crap_overload/" >Stack Overflow a.k.a. Crap Overload</a> had some half-knowledge + false-positive answer again</h2>
<p>Once more the <a class="link" href="https://stackoverflow.com/questions/52272666/docker-how-to-extract-the-docker-image-into-local-system" target="_blank" rel="noopener"
>Stackoverflow thread</a>
was merely helpful ,</p>
<p>since <a class="link" href="https://stackoverflow.com/a/69469657/18068312" target="_blank" rel="noopener"
>the answer closest to the simplest solution is lowest-voted, AND STILL FULL OF FAILS </a> ( that could be easily checked on a command line instead of sh*tloading half-knowledge)</p>
<p>But just for the lulz ( and not being downvoted on <a class="link" href="https://the-foundation.is-a-p.ro.eu.org/posts/2023_02_02_shittification_of_the_internetz-the_toxic_thingy_stack_overflow_became_and_why_it_is_so_annoying_to_even_ask_on_crap_overload/" >swag overload</a> ) ,</p>
<p>here&rsquo;s the wipe-*ss part for that answer line-by-line:</p>
<table>
<thead>
<tr>
<th>StackOverflow answer of <a class="link" href="https://stackoverflow.com/users/1531945/konstantin-pelepelin" target="_blank" rel="noopener"
>Konstantin P.</a></th>
<th>Truth</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>id=$(docker create image:tag)</code></td>
<td>does not work without command set for e.g. <code>FROM scratch</code> containers</td>
</tr>
<tr>
<td><code>docker export $id -o image.tar</code></td>
<td>docker export accepts only ONE argument (&hellip;)</td>
</tr>
<tr>
<td><code>docker rm $id</code></td>
<td>better quote <code>&quot;$id&quot;</code> or curly-bracket <code>${id}</code></td>
</tr>
<tr>
<td>UNMENTIONED</td>
<td>The suggested solution extracts EVERYTHING including <code>/etc/</code> <code>/dev/</code> and so on ..</td>
</tr>
</tbody>
</table>
<h2 id="the-one-line--solution--extraction-of-specific-files-of-a-docker-container-without-single-layer-extraction">The one-line Solution : extraction of specific files of a docker container without single layer extraction</h2>
<p>To narrow it down :</p>
<ul>
<li>only extraction of specific files is possible ( here only <code>buildcache_persist</code>)</li>
<li>there is no need to bloat up the filesystem with temporary <code>tar</code> files</li>
</ul>
<p>Here we go :</p>
<pre tabindex="0"><code> docker export $(docker create --name cicache docker.io/my-org/my-cicache-image:example-tag /bin/false ) |tar xv buildcache_persist ;docker rm cicache
</code></pre><p>This command wil extract only the folder <code>buildcache_persist</code> into the current directory</p>
<hr>
<p>Happy Coding&hellip;</p>
</description>
</item>
<item>
<title>Github Actions could not parse as YAML: mapping values are not allowed in this context</title>
<link>https://the-foundation.is-a-p.ro.eu.org/posts/2023_03_04_github_actions_could_not_parse_as_yaml_mapping_values_are_not_allowed_in_this_context/</link>
<pubDate>Sat, 04 Mar 2023 00:00:00 +0000</pubDate>
<guid>https://the-foundation.is-a-p.ro.eu.org/posts/2023_03_04_github_actions_could_not_parse_as_yaml_mapping_values_are_not_allowed_in_this_context/</guid>
<description><p>===</p>
<h2 id="github-actions-may-be-a-source-of-luck-and-fun-or-pain">Github actions may be a source of luck and fun or pain.</h2>
<p>The moments <strong>when it does not accept your workflow file</strong>
are the the worst amongs them.</p>
<h2 id="help-is-on-the-way">Help is on the way</h2>
<p>Firstly , there is <a class="link" href="https://rhysd.github.io/actionlint/" target="_blank" rel="noopener"
>GitHub Action-LINT</a> ,
so there is no more push-check-push-check necessary anymore as it works instant in your browser.
<img src="https://the-foundation.is-a-p.ro.eu.org/posts/2023_03_04_github_actions_could_not_parse_as_yaml_mapping_values_are_not_allowed_in_this_context/imgs/github-actionlint.png"
width="978"
height="518"
loading="lazy"
alt="GitHub Action LINT with mapping values are not allowed error"
class="gallery-image"
data-flex-grow="188"
data-flex-basis="453px"
></p>
<p>In the current case, the indent of <strong>the beging of the words</strong> need to be matched , so here is a line-by-line comparison</p>
<table>
<thead>
<tr>
<th>Wrong</th>
<th>Correct</th>
</tr>
</thead>
<tbody>
<tr>
<td><img src="https://the-foundation.is-a-p.ro.eu.org/posts/2023_03_04_github_actions_could_not_parse_as_yaml_mapping_values_are_not_allowed_in_this_context/imgs/gh-lint-fail-mapping-values.png"
width="476"
height="71"
loading="lazy"
alt="Failed Gitlab CI Indentation"
class="gallery-image"
data-flex-grow="670"
data-flex-basis="1609px"
></td>
<td><img src="https://the-foundation.is-a-p.ro.eu.org/posts/2023_03_04_github_actions_could_not_parse_as_yaml_mapping_values_are_not_allowed_in_this_context/imgs/gh-lint-pass-mapping-values.png"
width="459"
height="80"
loading="lazy"
alt="Working Gitlab CI Indentation"
class="gallery-image"
data-flex-grow="573"
data-flex-basis="1377px"
></td>
</tr>
<tr>
<td>Action-LINT shows a dot next to the line ,<!-- raw HTML omitted --> since <code>run:</code> is errnously placed one whitespace too much to the right. <!-- raw HTML omitted -->This often happens when the colons ( <code>:</code> ) are placed directly over each other</td>
<td>Action LINT does not complain<!-- raw HTML omitted --> when <code>run:</code> and <code>name:</code> have the proper indentation and the <strong>first characters</strong> are directly above each other</td>
</tr>
</tbody>
</table>
<h2 id="you-are-using-gitlab-">You are using gitlab ?</h2>
<p>Cool for you ,</p>
<ul>
<li><a class="link" href="https://docs.gitlab.com/ee/ci/pipeline_editor/index.html" target="_blank" rel="noopener"
>there is a GitLab-CI LINTER </a></li>
<li>and even a <a class="link" href="https://marketplace.visualstudio.com/items?itemName=cstuder.gitlab-ci-validator" target="_blank" rel="noopener"
>VS-Code Gitlab-CI Validator</a></li>
</ul>
<p>Happy Coding</p>
</description>
</item>
<item>
<title>MYSQL records of previous month</title>
<link>https://the-foundation.is-a-p.ro.eu.org/posts/2023_02_03_mysql_records_of_previous_month/</link>
<pubDate>Fri, 03 Feb 2023 00:00:00 +0000</pubDate>
<guid>https://the-foundation.is-a-p.ro.eu.org/posts/2023_02_03_mysql_records_of_previous_month/</guid>
<description><h2 id="the-question-how-to-get-mysql-rows-of-last-month-">The Question: <code>how to get MYSQL rows of last month ?</code></h2>
<p>The &ldquo;simple&rdquo; question &ldquo;how do i get MySQL records of previous month&rdquo;
unfolded many threads ,
sometimes even giving false positive answers like:</p>
<blockquote>
<p>take the difference between now and now-1 month (DO NOT !)</p>
</blockquote>
<h2 id="the-solution-two-mysql-timestamps-with-interval-calculated">The Solution: Two MYSQL timestamps with INTERVAL calculated</h2>
<p>Ok, not only sometimes false postives are recommended ,
in fact very often.. ,
so here we go with a proper example:</p>
<pre tabindex="0"><code>SELECT o.row_a , o.row_b,
WHERE row.something = `foo`
AND (o.`date_add` &gt;= DATE_FORMAT( CURRENT_DATE - INTERVAL 2 MONTH, &#39;%Y/%m/01&#39; ) )
AND (o.`date_add` &lt; DATE_FORMAT( CURRENT_DATE - INTERVAL 1 MONTH, &#39;%Y/%m/01&#39; ) )
</code></pre><p>( only the part from <code>AND</code> on is important to us )</p>
<p>To get other months ( or days or years), just modify the <code>INTERVAL 1 MONTH</code> and the second <code>AND</code> statement</p>
<h2 id="addendum-current-month">ADDENDUM: current month</h2>
<p>to have &ldquo;nearly the same&rdquo; query for the current month, do</p>
<pre tabindex="0"><code>AND (o.`date_add` &gt;= DATE_FORMAT( CURRENT_DATE, &#39;%Y/%m/01&#39; ) )
AND (o.`date_add` &lt; DATE_FORMAT( CURRENT_DATE + INTERVAL 1 MONTH, &#39;%Y/%m/01&#39; ) )
</code></pre><p><img src="https://the-foundation.is-a-p.ro.eu.org/posts/2023_02_03_mysql_records_of_previous_month/imgs/sql-last-month.png"
width="1037"
height="228"
loading="lazy"
alt=" /etc/docker/daemon.json contents of custom setup "
class="gallery-image"
data-flex-grow="454"
data-flex-basis="1091px"
></p>
</description>
</item>
<item>
<title>Enshittification of the internetz - The toxic thingy Stack Overflow became and why it is so annoying to even ask on Crap Overload</title>
<link>https://the-foundation.is-a-p.ro.eu.org/posts/2023_02_02_enshittification_of_the_internetz-the_toxic_thingy_stack_overflow_became_and_why_it_is_so_annoying_to_even_ask_on_crap_overload/</link>
<pubDate>Thu, 02 Feb 2023 00:00:00 +0000</pubDate>
<guid>https://the-foundation.is-a-p.ro.eu.org/posts/2023_02_02_enshittification_of_the_internetz-the_toxic_thingy_stack_overflow_became_and_why_it_is_so_annoying_to_even_ask_on_crap_overload/</guid>
<description><h2 id="stackoverflow----you-want-help--you-get-downvotes"><code>Stackoverflow</code> - you want help ? you get downvotes</h2>
<p>Somehow people might be attracted by Stack Overflow ,</p>
<ul>
<li>maybe because it&rsquo;s mostly top-ranked by Search Engines,</li>
<li>maybe because sometimes it really helps ,</li>
<li>maybe it keeps people in business that should better do stuff without brain-usage or something where they cannot harm people.</li>
</ul>
<p>But over the years it has become a dirt-pool <strong>that is quicker in instant-downvoting and duplicate-flagging</strong> than answering.</p>
<p><img src="https://the-foundation.is-a-p.ro.eu.org/posts/2023_02_02_enshittification_of_the_internetz-the_toxic_thingy_stack_overflow_became_and_why_it_is_so_annoying_to_even_ask_on_crap_overload/imgs/so_keyboard_Nisarg_Shah.twitter.Nisarg259.png"
width="662"
height="463"
loading="lazy"
alt="Stack Overflow Keyboard Screenshot from Twitter timeline of Nisarg259"
class="gallery-image"
data-flex-grow="142"
data-flex-basis="343px"
></p>
<p>Maybe that is what happens when platforms tend to be &ldquo;up/down-vote&rdquo;-style places full of Mr./Mrs.-always-right &hellip;</p>
<ul>
<li>
<p>people that post and are downvoted just because of &ldquo;how the answer was &quot; just leave or don&rsquo;t post anymore, leaving the self-confirming &ldquo;crowd&rdquo; to play their toxic games</p>
</li>
<li>
<p><a class="link" href="https://uniquebusinessmodels.substack.com/p/31-how-does-stack-overflow-make-money" target="_blank" rel="noopener"
>in fact the knowledge collected is turned into $$$ by StackOverflow</a></p>
</li>
<li>
<p><a class="link" href="https://www.youtube.com/watch?v=I_ZK0t9-llo" target="_blank" rel="noopener"
>There is a youtube Video that has some painful examples of what is going on over there</a> , stories where people are <strong>rewarded to remove their questions</strong> (WTF!)</p>
<p>In the description there is a <strong>very</strong> true statement:</p>
<blockquote>
<p>The Stack Overflow culture <strong>needs to be fixed</strong>. The overall <strong>gatekeeping &amp; elitism</strong> in computer science &amp; programming - as a whole - needs to be fixed. <strong>I just see it more on Stack Overflow than anywhere else</strong> .</p>
</blockquote>
</li>
<li>
<p>the internet is full of threads that ask why a bunch of bullies is dominating on SO</p>
<p>And to sum it up <a class="link" href="https://www.reddit.com/r/AskProgramming/comments/9pgc1a/why_is_asking_on_stackoverflow_so_horrible/" target="_blank" rel="noopener"
>there is a reddit that says it all </a>, so here are some quotes ( of more than 1 user ) from that thread:</p>
<blockquote>
<p>In return for my technical question, I get what <strong>amounts to a colonoscopy, by what appear to be 14 year old &ldquo;engineers&rdquo;, who racked up internet points asserting wrong information with brazen confidence</strong>.</p>
</blockquote>
<blockquote>
<p>Why is everyone <strong>responding in underhanded, condescending tone, under a thin veil of technical clarification?</strong></p>
</blockquote>
<blockquote>
<p>Why is it that people <strong>who don&rsquo;t know the answer, nor care to even understand the question, need to comment, then upvote their incorrect comments, all meanwhile downvoting my question?</strong></p>
</blockquote>
<blockquote>
<p>.. <strong>asking a question on SO is equivalent to giving up whatever dignity you have, or be downvoted</strong> for <em>no logical reason</em>.</p>
</blockquote>
<blockquote>
<p>SO has always had a problem with toxicity. I think the <strong>main reason for this is that it&rsquo;s not actually a Q&amp;A platform. It&rsquo;s a wiki under the guise of a Q&amp;A platform</strong>. This explains why people can edit your posts and why ++SO explicitly encourages users to post questions that they already have the answer to**.</p>
</blockquote>
<blockquote>
<p><strong>SO doesn&rsquo;t want people to post questions asking for help. They want people to create Q&amp;A-style wiki pages to add to their curated collection of knowledge. If your question doesn&rsquo;t have a good answer of general use to the populous, then it&rsquo;ll be downvoted and closed because it&rsquo;s not useful to them</strong>.</p>
</blockquote>
<blockquote>
<p><strong>Unfortunately, people innocently try to get help on the site and are subsequently berated and their questions torn apart</strong>. SO has tried to address this issue, but it seems that they haven&rsquo;t made any progress.
<strong>The first rule of SO is NEVER EVER ask questions on it. It&rsquo;ll get down voted and marked as duplicate immediately.</strong>
<strong>It&rsquo;s a great reference. Absolutely terrible source of help.</strong></p>
</blockquote>
</li>
<li>
<p><a class="link" href="https://www.reddit.com/r/csharp/comments/tf7ec3/stackoverflow_has_too_many_selfrighteous/" target="_blank" rel="noopener"
>A reddit has some user-horror-stories and a lot of criticism</a> about the self-righteous moderators and that they act as if they were the north-korean authorities, here are some excerpts:</p>
<blockquote>
<p>Stackoverflow lives from the contribution of thousands contributors, <strong>but is controlled by a small band of moderators who have dictatorship like powers</strong> &hellip; Of course, it is good that Stackoverflow tries to enforce a certain level of quality for its content, but having this &ldquo;police&rdquo; punishing others leads to the same problem like any other police has: <strong>They feel they are omnipotent and always right, even if they are wrong</strong>. I wish Stackoverflow would be more supporting of their content provider and help them to improve their contribution <strong>instead of removing content with wrong justifications and no easy way to challenge that</strong> .</p>
</blockquote>
<blockquote>
<p>One tool these <strong>moderators like to use to suppress a discussion</strong> is to <strong>mark a question as duplicate, which means the question/answers get closed, no further discussion is possible</strong>. They <strong>just pretend that a many year old question sounds similar</strong> . The worst example I have seen: A question asked why he gets a null reference in a specific WPF situation. The <strong>question got marked as duplicate</strong>, because someone had posted 100 reasons why a null reference can happen, <strong>but with zero relevance for WPF</strong>. There was a good reason why the null reference exception happened in this particular situation, <strong>but it was no longer possible to add an answer</strong> explaining why the problem happen. And <strong>normal mortals have no chance to overturn the duplicate decision</strong>, for that you need to have a tons of points on Stackoverflow.</p>
</blockquote>
<blockquote>
<p>.. problem started when my answer got deleted with the reason &quot; Code plagiarised without attribution&rdquo;, which was wrong in my opinion . Since my original answer got deleted, you cannot see in that link, that&rsquo;s how censorship works on Stackoverflow. I wrote all the content myself, except at the very end where I pasted some WPF source code. I made it clear that this was not my code and where it is coming from&hellip; <strong>clearly stated that I could not write this code and that it is WPF source code</strong>. How can this be plagiarism ?</p>
</blockquote>
<blockquote>
<p>I am using Stackoverflow since many years but I really could not figure out how to appeal this decision. So I tried to raise the issue on Meta: <a class="link" href="https://meta.stackoverflow.com/questions/416605/how-to-get-an-answer-deleted-by-a-moderator-because-of-code-plagiarized-withou" target="_blank" rel="noopener"
>https://meta.stackoverflow.com/questions/416605/how-to-get-an-answer-deleted-by-a-moderator-because-of-code-plagiarized-withou</a>. I did this reluctantly due to my earlier experience with self-righteous moderators, who usually react aggressively when anyone dares to mention that there was a problem on Stackoverflow. I wonder if they feel personally questioned and go into defense/attack mode automatically &hellip; got there comments like &ldquo;You don&rsquo;t know how to quote and cite your sources when writing any professional document? I find that hard to believe.&rdquo; Well, the truth is that I have never written a professional document citing sources. As it is common on Meta, <strong>many commenters do not consider if the case presented has any merit</strong> (i.e. I did write in my answer that it is not my code and where I got it from). Instead they like to <strong>attack the person who dares to question their actions</strong>&hellip; To <strong>suppress any further discussion</strong>, the <strong>moderators</strong> used their preferred weapon and <strong>marked my Meta post as duplicate, even the other question had completely different circumstances</strong>.</p>
</blockquote>
<blockquote>
<p>Since they didn&rsquo;t like me raising my question on Meta, <strong>they also marked my original question as duplicate</strong>. Please note that my <strong>question had gone already through a review process and was accepted as proper. Only after I raised it on Meta my original question was closed</strong> because of &ldquo;This question needs details or clarity&rdquo;. Again, <strong>no easy option to appeal the decision</strong>. The <strong>only action they allow is that I change my question</strong>.</p>
</blockquote>
<p>In the replies, users have <strong>more horrific stories</strong>:</p>
<blockquote>
<p>.. once asked a question <strong>that took hours to write and referenced 5 different approaches to the problem</strong>, and all I got was a <strong>downvote without explanation</strong>.</p>
</blockquote>
<blockquote>
<p>stack overflow has at this point <strong>deleted as much useful content as it currently contains</strong>&hellip; there were always attitude issues amongst the power users, I wouldn&rsquo;t expect anything less, <strong>but when they started getting militant about the definition of subjective and combining loosely related topics as duplicate</strong> then later *<strong>deleting the question the defined as the original as low quality</strong> it started to go downhill pretty fast</p>
</blockquote>
<blockquote>
<p>SO has become a place where dictatorship is rife, people are unfriendly and there is too much moderation going on.</p>
</blockquote>
<blockquote>
<p>StackOverflow has become a slightly less spammy version of Experts Exchange. <strong>It&rsquo;s woefully out of date on most things, gives bad and/or conflicting advice on everything else</strong>, and generally has become a useless pile of junk. And most of the reason is what you&rsquo;ve described here. The <strong>moderator fiefdoms result in petty turf wars and bad comments rise to the top because of political reasons</strong> rather than technical ones.</p>
</blockquote>
<blockquote>
<p>&ldquo;Someone read your answer&rdquo;, no they did not read it, they <strong>just posted competitive answer and after they realized they need a little bit more reputation</strong> (for what?!) and my answer is already upvoted (more important to them then to me), they <strong>started plagiarism story</strong>. Couple hour later, <strong>moderator that also did not check ANYTHING (answer, profile, links&hellip;) deleted my post</strong>. There is no reason for any kind of &ldquo;we are just trying to protect our company&rdquo; action, but on the contrary: people are decreasing SO reputation because they need just to distinguish themselves, not to help people.</p>
</blockquote>
<blockquote>
<p>Fyi Stack overflow is really old &hellip; Is <strong>still uses Windows Server and MSSQL</strong></p>
</blockquote>
</li>
<li>
<p><a class="link" href="https://www.quora.com/What-is-bad-about-Stack-Overflow" target="_blank" rel="noopener"
>On Quora .. different place , same story</a></p>
<p>To also cite the &ldquo;highlights&rdquo;(dark spots) of SO from there:</p>
<blockquote>
<p><strong>It’s the dumbest web-site I’ve ever seen. They should help people but they kept closing my questions for no reason, even banned me from asking more.</strong> I am asking BECAUSE I am not a pro. I always tried to be concise and clear, <strong>their stupid bots just closed many of my questions</strong>.</p>
</blockquote>
<blockquote>
<p>the <strong>voting system on Stack Overflow is that it penalizes users</strong>. It only takes <strong>a few negative votes to get you banned from asking questions</strong>, taking part on the platform. In my experience, <strong>rarely do downvotes get removed</strong> from questions that have been improved through editing. <strong>Even &ldquo;deleting&rdquo; questions will not remove their negative score on one&rsquo;s account.</strong> &hellip; ** the strict gamification** of Stackoverflow, <strong>turning users into winners and losers</strong>, creates an <strong>overall unwelcoming, precarious attitude towards beginner programmers</strong></p>
</blockquote>
<blockquote>
<p><strong>it’s sh*t</strong>, and I will use the word <strong>totalitarian</strong>, Stack Overflow (regarding its coding forums side) <strong>is a totalitarian place</strong>, the totalitarianism is <strong>first handled by the people who run SO</strong>.</p>
</blockquote>
</li>
<li>
<p><a class="link" href="https://www.quora.com/What-is-bad-about-Stack-Overflow" target="_blank" rel="noopener"
>In the mentioned Quora thread</a> &hellip;.</p>
<p>the <a class="link" href="https://www.quora.com/profile/Quora-Question-Details-Bot" target="_blank" rel="noopener"
> <code>Quora Question Details Bot</code></a> seems to have a good sense of humour, since it replies to the Question</p>
<p><code>What is bad about Stack Overflow?</code></p>
<p>with the balls-of-steel answer</p>
<p><code>...if you're using their service.</code></p>
</li>
</ul>
<p><img src="https://the-foundation.is-a-p.ro.eu.org/posts/2023_02_02_enshittification_of_the_internetz-the_toxic_thingy_stack_overflow_became_and_why_it_is_so_annoying_to_even_ask_on_crap_overload/imgs/quora-bot-hates-stack-overflow.png"
width="819"
height="179"
loading="lazy"
alt="Stack-overflow-fake-programmers image by industan.com "
class="gallery-image"
data-flex-grow="457"
data-flex-basis="1098px"
></p>
<h2 id="final-statement">Final statement</h2>
<ul>
<li><a class="link" href="https://meta.stackexchange.com/questions/223176/how-to-exit-stack-overflow" target="_blank" rel="noopener"
>In the end there is no need to delete your Crap-Overload account, just don&rsquo;t ask if you don&rsquo;t want to loose your dignity , there is even an answer how to log out :D</a></li>
</ul>
<p>But to be honest : <strong>Windows Server and MSSQL Stack</strong> in 2022 ?</p>
<p>They could just ask on their platform why and how to not do that ..
Basically when reading CVE&rsquo;s on a regular basis , nobody should put personal data there&hellip;</p>
<p><img src="https://the-foundation.is-a-p.ro.eu.org/posts/2023_02_02_enshittification_of_the_internetz-the_toxic_thingy_stack_overflow_became_and_why_it_is_so_annoying_to_even_ask_on_crap_overload/imgs/so_fake_programmer-techindustan.com.png"
width="651"
height="347"
loading="lazy"
alt="Stack-overflow-fake-programmers image by industan.com "
class="gallery-image"
data-flex-grow="187"
data-flex-basis="450px"
></p>
</description>
</item>
<item>
<title>apt-get update fails with Unknown error executing apt-key</title>
<link>https://the-foundation.is-a-p.ro.eu.org/posts/2022_04_29_apt-get_update_fails_with_unknown_error_executing_apt-key/</link>
<pubDate>Fri, 29 Apr 2022 00:00:00 +0000</pubDate>
<guid>https://the-foundation.is-a-p.ro.eu.org/posts/2022_04_29_apt-get_update_fails_with_unknown_error_executing_apt-key/</guid>
<description><h2 id="note">Note</h2>
<p>In &ldquo;earlier&rdquo; days you could easily add missing GPG keys with a command like:</p>
<p><code>apt-key adv --keyserver keyserver.ubuntu.com --recv-keys D68FA50FEA312927</code></p>
<p><strong>BUT</strong> most modern distributions will tell you</p>
<pre><code>apt-key is deprecated. manage keyring files in trusted.gpg.d instead
</code></pre>
<p>So you should stop using it and use gpg directly ,</p>
<ul>
<li>
<p>you might export the old keys by issuing
<code>apt-key list</code>
and then using the last 8 characters like this</p>
<p><code>sudo apt-key export 3A798D29 | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/mysql-key.gpg</code></p>
</li>
<li>
<p>For external GPG Pubkeys ( new repos e.g. ) from now on add them like this :</p>
<pre tabindex="0"><code>KEYRING=/usr/share/keyrings/yourpackagename.gpg
curl -fsSL https://server.lan/key-path-to-download | gpg --dearmor | sudo tee &#34;$KEYRING&#34; &gt;/dev/null
</code></pre></li>
</ul>
<h2 id="error-indicators">Error indicators</h2>
<p>Obviously apt/apt-get update will output</p>
<p><code>apt-get update fails with Unknown error executing apt-key</code> ,</p>
<p>Errors you might face when trying to manually run <code>apt-key</code> look like:</p>
<pre tabindex="0"><code> /usr/bin/apt-key: 710: touch: Too many levels of symbolic links
</code></pre><h2 id="solutions-for-failing-apt-key">Solutions for failing apt-key</h2>
<h5 id="hint-if-your-system-or-package-registry-is-heavily-damaged--you-might-manually-search-for-the-deb-packages-and-install-them">Hint: if your system or package registry is heavily damaged , you might manually search for the <code>.deb</code> packages and install them</h5>
<h3 id="solution-1--coreutils-reinstallation">Solution 1: Coreutils reinstallation</h3>
<p>If you see <code>/usr/bin/touch</code> exists but not <code>/bin/touch</code>,</p>
<p>Installing the latter using <code>sudo apt-get install --reinstall coreutils</code> might help.</p>
<h3 id="solution-2-gpg-reinstallation">Solution 2: GPG reinstallation</h3>
<p>Your GPG installation might be updated or outdated</p>
<pre tabindex="0"><code>sudo apt reinstall gpg
sudo ldconfig $(which /usr/bin/gpg)
</code></pre><h3 id="references">References</h3>
<table>
<thead>
<tr>
<th>info</th>
<th>resource</th>
</tr>
</thead>
<tbody>
<tr>
<td>2022-04-28 @ stackoverflow.com →</td>
<td><a class="link" href="https://stackoverflow.com/questions/72037705/w-gpg-error-unknown-error-executing-apt-key" target="_blank" rel="noopener"
> gnupg - W: GPG error: Unknown error executing apt-key - Stack Overflow</a></td>
</tr>
<tr>
<td>2022-03-17 @ unix.stackexchange.com →</td>
<td><a class="link" href="https://unix.stackexchange.com/questions/694788/apt-get-gpg-error-when-i-try-to-update" target="_blank" rel="noopener"
> linux - apt-get gpg error when i try to update - Unix &amp; Linux Stack Exchange</a></td>
</tr>
<tr>
<td>2021-11-15 @ unix.stackexchange.com →</td>
<td><a class="link" href="https://unix.stackexchange.com/questions/677666/i-am-suddenly-getting-unknown-error-executing-apt-key-when-attempting-to-upda" target="_blank" rel="noopener"
> apt key - I am suddenly getting &quot; Unknown error executing apt-key&quot; when attempting to update my system - Unix &amp; Linux Stack Exchange</a></td>
</tr>
</tbody>
</table>
<p><img src="https://the-foundation.is-a-p.ro.eu.org/posts/2022_04_29_apt-get_update_fails_with_unknown_error_executing_apt-key/imgs/apt-key-deprecated.jpg"
width="1093"
height="130"
loading="lazy"
alt="apt-key deprecation screenshot"
class="gallery-image"
data-flex-grow="840"
data-flex-basis="2017px"
></p>
</description>
</item>
<item>
<title>Oh OctoberCMS and the leading slash again</title>
<link>https://the-foundation.is-a-p.ro.eu.org/posts/2022_01_21_oh_octobercms_and_the_leading_slash_again/</link>
<pubDate>Thu, 20 Jan 2022 00:00:00 +0000</pubDate>
<guid>https://the-foundation.is-a-p.ro.eu.org/posts/2022_01_21_oh_octobercms_and_the_leading_slash_again/</guid>
<description><h2 id="failed-code-500-again--ocotobercms-refuses-to-load-and-you-might-be-out-of-guesees-again">//failed: Code 500 again .. Ocotobercms refuses to load and you might be out of guesees again</h2>
<p>Let&rsquo;s first review the possible Problems known:</p>
<table>
<thead>
<tr>
<th>Problem</th>
<th>Measure</th>
</tr>
</thead>
<tbody>
<tr>
<td>cache and config not reloaded during deployment</td>
<td>issue <code>php artisan config:cache;php artisan cache:clear</code> first when working on pages</td>
</tr>
<tr>
<td>resources include begin with <code>/</code></td>
<td>you changed all the asset includes under <code>themes/YOURTHEME/partials</code> to <strong>NOT</strong> begin with slashes like <code>/ storage</code> since that confuses many webservers , especially <code>chroot()</code>-ed ones like Plesk</td>
</tr>
<tr>
<td><code>resources/views</code> missing</td>
<td>you created the empty folder <code>resources/views</code> since it might lead to the open_basedir message</td>
</tr>
<tr>
<td><code>.htaccess woes</code></td>
<td>you checked your <code>.htaccess</code> to have a proper <code>RewriteBase</code> and the correct webroot if you set it fixed</td>
</tr>
</tbody>
</table>
<h2 id="but-the-almost-beloved--open_basedir-restriction--message-pops-up-again">But the almost &ldquo;beloved&rdquo; <code>open_basedir restriction </code> message pops up again</h2>
<p>Dowtime hurts and if you did not setup some monitoring you not notice since may be cleared <code>randomly</code> ..</p>
<blockquote>
<h3 id="it-is-always-a-good-idea-to-check-storagelogssystemlog">it is always a good idea to check <code>storage/logs/system.log</code></h3>
</blockquote>
<p>since your webserver-log does not tell everything and it&rsquo;s log might be cut due to php-fpm, check the file logs or maybe the database as well for potential errors</p>
<h3 id="fixed"><code>//fixed</code></h3>
<p><img src="https://the-foundation.is-a-p.ro.eu.org/posts/2022_01_21_oh_octobercms_and_the_leading_slash_again/imgs/octoslash-fix.png"
width="885"
height="334"
loading="lazy"
alt="No slash for OctoberCMS favicon partial &hellip; pain arises again"
class="gallery-image"
data-flex-grow="264"
data-flex-basis="635px"
></p>
</description>
</item>
<item>
<title>Restoring lost data from Docker volumes</title>
<link>https://the-foundation.is-a-p.ro.eu.org/posts/2022_01_19_restoring_lost_data_from_docker_volumes/</link>
<pubDate>Tue, 18 Jan 2022 00:00:00 +0000</pubDate>
<guid>https://the-foundation.is-a-p.ro.eu.org/posts/2022_01_19_restoring_lost_data_from_docker_volumes/</guid>
<description><blockquote>
<p>Many things might have gone wrong</p>
</blockquote>
<ul>
<li>failed Synology update</li>
<li>upgraded openWRT/friendlywrt changed the place</li>
<li>disk restoration from failed root</li>
</ul>
<p>unless you did start your container with &ldquo;<code>--rm</code>&rdquo; and delete it , <strong>there is hope</strong>
( and even if not you may pull the brake, power off and engage e.g. testdisk )</p>
<table>
<thead>
<tr>
<th>SETUP</th>
<th>approx. Date</th>
<th>Place</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong><em>old</em></strong>-friendlyWRT(openwrt)</td>
<td>2020</td>
<td><code>/opt/volumes</code></td>
</tr>
<tr>
<td><strong>new</strong>-friendlyWRT(openwrt)</td>
<td>2020</td>
<td><code>/opt/docker/volumes/</code></td>
</tr>
<tr>
<td><strong>standard deployment</strong></td>
<td>2021</td>
<td><code>/var/lib/docker/volumes/</code></td>
</tr>
<tr>
<td>synology VOLUME</td>
<td>2022</td>
<td><code>/volume1/\@docker/volumes/</code></td>
</tr>
<tr>
<td>synology BTRFS</td>
<td>2020</td>
<td><code>/opt/</code></td>
</tr>
<tr>
<td>custom setup</td>
<td>****</td>
<td>refer to <code>/etc/docker/daemon.json</code></td>
</tr>
</tbody>
</table>
<p><img src="https://the-foundation.is-a-p.ro.eu.org/posts/2022_01_19_restoring_lost_data_from_docker_volumes/imgs/daemon.json-red.png"
width="1286"
height="416"
loading="lazy"
alt=" /etc/docker/daemon.json contents of custom setup "
class="gallery-image"
data-flex-grow="309"
data-flex-basis="741px"
></p>
</description>
</item>
<item>
<title>Synology DSM changes calDAV port</title>
<link>https://the-foundation.is-a-p.ro.eu.org/posts/2022_01_10_synology_dsm_changes_caldav_port/</link>
<pubDate>Mon, 10 Jan 2022 00:00:00 +0000</pubDate>
<guid>https://the-foundation.is-a-p.ro.eu.org/posts/2022_01_10_synology_dsm_changes_caldav_port/</guid>
<description><p>So your previous config might have looked like:</p>
<pre tabindex="0"><code>###### CARDDAV
upstream syno_carddav {
# The keepalive parameter sets the maximum number of idle keepalive connections
# to upstream servers that are preserved in the cache of each worker process. When
# this number is exceeded, the least recently used connections are closed.
keepalive 50;
server w.x.y.z:5008;
}
</code></pre><blockquote>
<h2 id="the-newer-dsm-70-has-the-caldav-endpoint-httpswxyz5001well-knowncarddav">The newer DSM-7.0 has the calDAV endpoint <code>https://w.x.y.z:5001/.well-known/carddav</code></h2>
</blockquote>
<h3 id="however-this-is-not-the-full-story">However this is not the full story</h3>
<blockquote>
<h2 id="the-well-known-will-redirect-to-carddavweb">the <code>/.well-known</code> will redirect to <code>/carddav/.web</code></h2>
</blockquote>
<h2 id="when-you-call-it-in-the-webinterface-you-will-see-">When you call it in the Webinterface you will see :</h2>
<blockquote>
<pre tabindex="0"><code></code></pre></blockquote>
<p>Radicale works!</p>
<pre tabindex="0"><code>
</code></pre></description>
</item>
<item>
<title>Creating a GDPR compliant google fonts or CDN proxy</title>
<link>https://the-foundation.is-a-p.ro.eu.org/posts/2022_01_01_creating_a_gdpr_compliant_google_fonts_proxy/</link>
<pubDate>Sat, 01 Jan 2022 00:00:00 +0000</pubDate>
<guid>https://the-foundation.is-a-p.ro.eu.org/posts/2022_01_01_creating_a_gdpr_compliant_google_fonts_proxy/</guid>
<description><h1 id="it-is-time-to-build-your-fonts-proxy---now-">It is time to build your fonts proxy - now !</h1>
<p>Your may ask why ..</p>
<ul>
<li>Since Google does not even cache the fonts anymore</li>
<li>and it is not GDPR-compliant</li>
<li>also because google may track your users at least on the level of a matomo-instance.</li>
</ul>
<p>you can do better.</p>
<p>With the simple nuster-nginx combination ( tested on aarch64 and x86_64 ) ,
one can</p>
<ul>
<li>anonymize the IP-Adress</li>
<li>anonymize the User-Agent</li>
<li>serve custom 404 pages that are also anoymously passed
for all requests through that instance.</li>
</ul>
<ul>
<li>
<p>get the nuster-cache-proxy files:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git clone <span class="p">;</span> <span class="nb">cd</span>
</span></span></code></pre></div></li>
<li>
<p><strong>create a .env-File</strong> ( like below, <strong>change</strong> at least the <strong>domain and the letsencrypt mai</strong>l address)</p>
</li>
</ul>
<pre tabindex="0"><code>echo &#39;
VIRTUAL_PORT=80
VIRTUAL_PROTO=http
VIRTUAL_HOST=fonts.your-domain.lan
LETSENCRYPT_EMAIL=no@body.lan
LETSENCRYPT_HOST=fonts.your-domain.lan
CACHED_PATH=/
CACHED_HOST=fonts.gstatic.com
COMPOSE_POJECT_NAME=myservicename
RETURN_UNAUTH=false
ACCESS_LOG=false
##optional
REDIRECT_FAVICON=false
CACHEMB=512
CACHETIME=90d
TIMEOUT=15s
HIDECLIENT=true
EXPIREHEADER=7d
LOCALPORT=65080
NGINX_NETWORK=nginx-proxy
CUSTOMFOUROFOUR=https://statuspages.gitlab.io/404
CUSTOMENDPOINTS=/css:fonts.googleapis.com
REPLACESTRING=fonts.gstatic.com:fonts.your-domain.lan,fonts.googleapis.com:fonts.fonts.your-domain.lan
&#39; &gt; .env
</code></pre><ul>
<li><strong>create the named network ( <code>docker network create nginx-proxy</code> ) or adjust <code>.env</code></strong></li>
<li><strong>run <code>docker-compose up -d</code></strong></li>
<li><strong>replace the domains <code>fonts.googleapis.com</code> and <code>fonts.gstatic.com</code> to your domain ( in example here fonts.your-domain.lan ) in all your webpages and themes, example result:</strong></li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-html" data-lang="html"><span class="line"><span class="cl"> <span class="p">&lt;</span><span class="nt">link</span> <span class="na">rel</span><span class="o">=</span><span class="s">&#34;shortcut icon&#34;</span> <span class="na">href</span><span class="o">=</span><span class="s">&#34;favicon.ico&#34;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl"> <span class="p">&lt;</span><span class="nt">link</span> <span class="na">href</span><span class="o">=</span><span class="s">&#39;//fonts.mydomain.lan/css?family=Open+Sans:300,400,600,700&#39;</span> <span class="na">rel</span><span class="o">=</span><span class="s">&#39;stylesheet&#39;</span> <span class="na">type</span><span class="o">=</span><span class="s">&#39;text/css&#39;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="cl"> <span class="c">&lt;!-- Global CSS --&gt;</span>
</span></span></code></pre></div><hr>
<h1 id="use-the-font-proxy-in-your-firefox-or-chrome--with-any-domain-when-sufing-the-web">Use the font-proxy in your Firefox or Chrome with any domain when sufing the web</h1>
<ul>
<li>install a header/request changing Plugin ( in ths Example <a class="link" href="https://github.com/jiacai2050/gooreplacer" target="_blank" rel="noopener"
>GooReplacer</a> )</li>
</ul>
<table>
<thead>
<tr>
<th><a class="link" href="https://chrome.google.com/webstore/detail/gooreplacer/jnlkjeecojckkigmchmfoigphmgkgbip" target="_blank" rel="noopener"
>Chrome</a></th>
<th><a class="link" href="https://addons.mozilla.org/firefox/addon/gooreplacer/" target="_blank" rel="noopener"
>Firefox</a></th>
</tr>
</thead>
</table>
<ul>
<li>( if the gooreplacer does not load <a class="link" href="/assets/at_alicdn_com/t/font_148784_v4ggb6wrjmkotj4i.woff" target="_blank" rel="noopener"
>/assets/at_alicdn_com/t/font_148784_v4ggb6wrjmkotj4i.woff</a> from the settings page , you may rewrite it as well )</li>
<li>setup a replacement like below (there is a trailing slash at the target url )
<img src="https://the-foundation.is-a-p.ro.eu.org/posts/2022_01_01_creating_a_gdpr_compliant_google_fonts_proxy/imgs/gooreplacer-fonts.jpg"
width="1593"
height="340"
loading="lazy"
alt="Gooreplacer FontsProxy"
class="gallery-image"
data-flex-grow="468"
data-flex-basis="1124px"
></li>
</ul>
</description>
</item>
<item>
<title>Synology synoshare create Error: share create failed.[0x0D00 share_is_acl_share.c:49]</title>
<link>https://the-foundation.is-a-p.ro.eu.org/posts/2021_08_23_synology_synoshare_create_error_share_create_failed_0x0d00_share_is_acl_share/</link>
<pubDate>Mon, 23 Aug 2021 13:37:42 +0000</pubDate>
<guid>https://the-foundation.is-a-p.ro.eu.org/posts/2021_08_23_synology_synoshare_create_error_share_create_failed_0x0d00_share_is_acl_share/</guid>
<description><h2 id="oh-no--synology-share-creation-failed-">Oh no, synology share creation failed ..</h2>
<h3 id="trying-to-create-a-share--here-with-no-users-directly-on-the-top-of-your-volume-with-eg">Trying to create a share ( here with no users) DIRECTLY on the top of your volume with e.g.</h3>
<blockquote>
<p><code>/usr/syno/sbin/synoshare --add docker-volumes &quot;Docker volumes on diskstation&quot; /volume1/ &quot;&quot; &quot;&quot; &quot;&quot; 1 0</code></p>
</blockquote>
<h3 id="will-yield-the-following-error">Will yield the following error,</h3>
<blockquote>
<p><code>Error: share create failed.[0x0D00 share_is_acl_share.c:49]</code></p>
</blockquote>
<h2 id="but-why-">but why ?</h2>
<blockquote>
<h2 id="you-cannot-create-shared-volumes-that-are-the-volume-itself--just-append-another-directory-name-to-your-path--usrsynosbinsynoshare---add-docker-volumes-docker-volumes-on-diskstation-volume1-myvolume---1-0">You cannot create shared volumes that are the Volume itself , just append another directory name to your path <code>/usr/syno/sbin/synoshare --add docker-volumes &quot;Docker volumes on diskstation&quot; /volume1/ &quot;myvolume&quot; &quot;&quot; &quot;&quot; 1 0</code></h2>
</blockquote>
</description>
</item>
<item>
<title>Deleting old restic snapshots</title>
<link>https://the-foundation.is-a-p.ro.eu.org/posts/2021_08_13_deleting_old_restic_entries/</link>
<pubDate>Fri, 13 Aug 2021 00:00:00 +0000</pubDate>
<guid>https://the-foundation.is-a-p.ro.eu.org/posts/2021_08_13_deleting_old_restic_entries/</guid>
<description><blockquote>
<h2 id="sometimes-restic-does-not-correctly-apply-the-forget-policy">Sometimes restic does not correctly apply the forget policy</h2>
</blockquote>
<p>And that might waste</p>
<ul>
<li>tons of space ..</li>
<li>computation time during backup &hellip;</li>
<li>clarity since terminal goes a bit crazy with 3000+ lines</li>
</ul>
<blockquote>
<h2 id="the-fix-is-not-so-easy">The fix is not so easy&hellip;</h2>
</blockquote>
<pre tabindex="0"><code>forgetlist=&#34;&#34;;restic unlock;
restic snapshots|grep &#34;[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]&#34;|sed &#39;s/ \+/ /g&#39;|cut -d&#34; &#34; -f1-3|while read line;do
id=${line/ *};
shotdate=$(echo &#34;$line&#34;|cut -d&#34; &#34; -f2,3) ;
shotepoch=$(date -u -d &#34;$shotdate&#34; +%s) ;
shotagesec=$(($(date -u +%s )-$shotepoch));
echo -n &#34;SNAP: $shotdate ( $shotagesec ) &#34;;
[[ $shotagesec -ge $((86400*90)) ]] &amp;&amp; { echo -n &#34;forget $id |&#34; ;forgetlist=&#34;$forgetlist $id&#34; ; echo &#34;$forgetlist&#34; &gt; /dev/shm/.restic_forget_list ; } ;
[[ $(echo $forgetlist|wc -w ) -ge 30 ]] &amp;&amp; { restic forget $forgetlist |sed &#39;s/$/|/g&#39; |tr -d &#39;\n&#39; ;forgetlist=&#34;&#34; ; } ;
echo;done;
restic forget $forgetlist |sed &#39;s/$/|/g&#39; |tr -d &#39;\n&#39; ;forgetlist=&#34;&#34; ;time restic prune
</code></pre><blockquote>
<p>Oh wow ..</p>
</blockquote>
<p><img src="https://the-foundation.is-a-p.ro.eu.org/posts/2021_08_13_deleting_old_restic_entries/imgs/resticprune.png"
width="1901"
height="1023"
loading="lazy"
alt=" sequental restic prune for 90 days "
class="gallery-image"
data-flex-grow="185"
data-flex-basis="445px"
></p>
</description>
</item>
<item>
<title>The Google Blackhole: Forced renewal of certificates with nginx-letsencrypt-docker</title>
<link>https://the-foundation.is-a-p.ro.eu.org/posts/2021_03_21_docker_nginx_force_renew_letsencrypt/</link>
<pubDate>Thu, 11 Mar 2021 00:00:00 +0000</pubDate>
<guid>https://the-foundation.is-a-p.ro.eu.org/posts/2021_03_21_docker_nginx_force_renew_letsencrypt/</guid>
<description><p>So when somebody believes his or her favourite scam site,</p>
<blockquote>
<p>e.g <!-- raw HTML omitted -->LinkedIn.___ does not index my page<!-- raw HTML omitted --></p>
</blockquote>
<p>and they ask op to renew a certificate &hellip; but the only thing known
is that docker-nginx-letsencrypt (jwilder) does a renewal for all &ldquo;due&rdquo; certificates ( 21 days or less left )</p>
<p>it is one of this &ldquo;0 hits on google.com&rdquo; days ..</p>
<p>until now &hellip;</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">docker <span class="nb">exec</span> -it nginx-letsencrypt /bin/bash /app/force_renew
</span></span></code></pre></div><p>is your friend in that case ;)</p>
</description>
</item>
<item>
<title>[HowTo] send Uptime-Robot notifications to Telegram groups or how to GET-request anything via Telegram</title>
<link>https://the-foundation.is-a-p.ro.eu.org/posts/2021_02_12_send_uptime_robot_notifications_to_telegram_groups_or_howo_to_get_request_anything_via_tg/</link>
<pubDate>Fri, 12 Feb 2021 13:37:42 +0000</pubDate>
<guid>https://the-foundation.is-a-p.ro.eu.org/posts/2021_02_12_send_uptime_robot_notifications_to_telegram_groups_or_howo_to_get_request_anything_via_tg/</guid>
<description><p>Since there was no chance , not even adding uptime-robot&rsquo;s TG bot to a a group and sed the start token.</p>
<p>And it came in handy , you could monitor everything also from node.js or other languages.</p>
<p>With this method you could basically let everything send Messages to telegram ( although you should not hand out your bot credentials and use some intermediate Message-Router , you can even use node-red or n8n )</p>
<h1 id="sample-setup">Sample Setup</h1>
<ul>
<li>
<p>Create a new contact ( here we use Alerts since the time is not given in DOWN messages)</p>
<p><img src="https://the-foundation.is-a-p.ro.eu.org/posts/2021_02_12_send_uptime_robot_notifications_to_telegram_groups_or_howo_to_get_request_anything_via_tg/imgs/uptime_alerts.png"
width="717"
height="188"
loading="lazy"
alt="Alert contacts for UptimeRobot to Telegram"
class="gallery-image"
data-flex-grow="381"
data-flex-basis="915px"
></p>
</li>
</ul>
<blockquote>
<h2 id="the-up-notification--you-can-use-this-for-both-up--down-events-"><strong>The UP notification</strong> ( you can use this for both <code>UP</code> &amp; <code>DOWN</code> events )</h2>
</blockquote>
<table>
<thead>
<tr>
<th>Setting</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>URL</td>
<td><code>https://api.telegram.org/bot1234:BOTTOKEN/sendMessage?chat_id=-987654321&amp;</code></td>
</tr>
<tr>
<td>Message</td>
<td><code>{&quot;chat_id&quot;:-987654321,&quot;text&quot;:&quot; &lt;u&gt;&lt;b&gt;UpTimeRbot:&lt;/b&gt;&lt;/u&gt; &lt;a href=\&quot;*monitorURL*\&quot;&gt; *monitorFriendlyName* &lt;/a&gt; I status: &lt;b&gt; *alertTypeFriendlyName* &lt;/b&gt; I detail: &lt;code&gt;*alertDetails*&lt;/code&gt; I changed after: *alertDuration* s &quot;,&quot;disable_web_page_preview&quot;:true,&quot;parse_mode&quot;:&quot;HTML&quot;}</code></td>
</tr>
</tbody>
</table>
<blockquote>
<h2 id="the-down-notification"><strong>The DOWN notification</strong></h2>
</blockquote>
<table>
<thead>
<tr>
<th>Setting</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>URL</td>
<td><code>https://api.telegram.org/bot1234:BOTTOKEN/sendMessage?chat_id=-987654321&amp;</code></td>
</tr>
<tr>
<td>Message</td>
<td><code>{&quot;chat_id&quot;:-987654321,&quot;text&quot;:&quot; &lt;u&gt;&lt;b&gt;UpTimeRbot:&lt;/b&gt;&lt;/u&gt; &lt;a href=\&quot;*monitorURL*\&quot;&gt; *monitorFriendlyName* &lt;/a&gt; I status: &lt;b&gt; *alertTypeFriendlyName* &lt;/b&gt; I detail: &lt;code&gt;*alertDetails*&lt;/code&gt; I &quot;,&quot;disable_web_page_preview&quot;:true,&quot;parse_mode&quot;:&quot;HTML&quot;}</code></td>
</tr>
</tbody>
</table>
<p><img src="https://the-foundation.is-a-p.ro.eu.org/posts/2021_02_12_send_uptime_robot_notifications_to_telegram_groups_or_howo_to_get_request_anything_via_tg/imgs/uptime_groups.png"
width="1437"
height="538"
loading="lazy"
alt="Alert contacts for UptimeRobot to Telegram"
class="gallery-image"
data-flex-grow="267"
data-flex-basis="641px"
></p>
</description>
</item>
<item>
<title>Running a dockerproxy only accesible via specific reverse hosts or subnets</title>
<link>https://the-foundation.is-a-p.ro.eu.org/posts/2020_05_12_running_a_dockerproxy_only_accesible_via_specific_reverse_hosts_or_subnet/</link>
<pubDate>Tue, 12 May 2020 00:00:00 +0000</pubDate>
<guid>https://the-foundation.is-a-p.ro.eu.org/posts/2020_05_12_running_a_dockerproxy_only_accesible_via_specific_reverse_hosts_or_subnet/</guid>
<description><p>Since Registry consumes a lot of data and may be rate limited in the future , you might run your own proxy ,
but you should secure it properly..</p>
<p>Example docker-compose.yml</p>
<pre tabindex="0"><code>version: &#39;3&#39;
services:
dockerproxy:
build: .
container_name: ${APP_URL}
hostname: ${APP_URL}
restart: unless-stopped
networks:
- default
- dockerproxy
volumes:
- ./apache-block.conf:/etc/apache2/conf.d/apache-block.conf
# - ./store.php:/var/www/html/store.php:consistent
# - ./wiki/:/var/www/html:consistent
ports:
- 5000:80
environment:
- LETSENCRYPT_EMAIL=${MAIL_ADMINISTRATOR}
- LETSENCRYPT_HOST=${APP_URL}
- VIRTUAL_HOST=${APP_URL}
- VIRTUAL_PORT=80
- VIRTUAL_PROTO=http
dockerproxyregistry:
image: registry:2.6.2
##UNCOMMENT THE ABOVE WHEN NO CLIENT SENDS /v1/ anymore
# image: registry:2
# build:
# context: ./build
# dockerfile: Dockerfile-tiddlywiki-php7-nginx-alpine
container_name: dockerregistryproxy
hostname: dockerregistryproxy
restart: unless-stopped
networks:
- dockerproxy
volumes:
- /storage_global/machine.hq.mydomain.systems/dockerproxy:/var/lib/registry
environment:
- GITURL
- GITNAME
- GITEMAIL
- BASICUSER
- BASICPASS
- REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io
- REGISTRY_PROXY_USERNAME=${UPSTREAM_USER}
- REGISTRY_PROXY_PASSWORD=${UPSTREAM_PASS}
# - REGISTRY_HTTP_SECRET=${HTTPSECRET}
networks:
dockerproxy:
default:
external:
name: nginx-proxy
</code></pre><p>Example Dockerfile:</p>
<pre tabindex="0"><code>FROM alpine
RUN apk add apache2 apache2-proxy bash
RUN sed &#39;s/#LoadModule remoteip_module/LoadModule remoteip_module/g&#39; /etc/apache2/httpd.conf -i
EXPOSE 80
CMD /usr/sbin/httpd -DFOREGROUND
#cmd /bin/bash -c &#34;which apachectl ;which apache ;which apache2 ;sleep 6000&#34;
</code></pre><p>Example Apache-block.conf</p>
<pre tabindex="0"><code>&lt;VirtualHost *:80 &gt;
ServerName _default
ServerAlias &#34;*&#34;
#RemoteIPHeader X-Forwarded-For
#RemoteIPHeader X-Client-IP
RemoteIPHeader X-Real-IP