Error outputting keys and certificates

Gerade versucht eine PFX auf einem Mac zu öffnen und den Privat key und das Certificate in Text Form zu bekommen.

Nach gängigen Methoden im Netz ist es erst mal:

openssl pkcs12 -in [yourfile.pfx] -nocerts -out [drlive.key] (bei ibm.com gefunden)

Leider bekam ich da immer nur eine Fehlermeldung:

Error outputting keys and certificates
409C66E001000000:error:0308010C:digital envelope routines:inner_evp_generic_fetch:unsupported:crypto/evp/evp_fetch.c:355:Global default library context, Algorithm (RC2-40-CBC : 0), Properties ()

Den entscheidenden Hinweis habe ich dann hier bei stackoverflow gefunden.
Mein OpenSSL war zu „neu“, mit openssl musste ich bei den Zertifkate noch

-legacy

ergänzen. mein Aufruf der mich dann zum erfolg führte war folgender:

openssl pkcs12 -in example.pfx -info -legacy -nomacver

Truncating Multiple Line Text

Wird wieder einmal benötigt wenn, auf einer Webseite der Text zu lange ist und es dann einen „mehr lesen“ Knopp geben soll. Fällt son bisschen in die Kategorie, „Dinge die die Welt nicht braucht“ ….

Aber na ja, manchmal gibt es Kunden die das benötigten und das hier ist der Recherche Ergebnis, so als Gedankenstütze, wenn ich das in 10min nicht mehr brauch und daher getrost vergessen kann.

Über die normale CSS Eigenschaft text-flow, für Einzeiler bin ich dann über kurz oder lang bei Css-tricks.com gelandet und habe da die für mich neue CSS Eigenschaft „line-clamp“ kennengelernt. Allerdings soll es noch einen Button am Ende geben, mit dem man das ganze öffnen und schliessen kann, das verlinkte JS war leider schon 10 Jahre alt… Schreckt erstmal ab.
Zudem soll dann natürlich auch noch eine kleine Animation beim öffnen und schliessen erfolgen.. da bin ich dann bei Derek Morash und seinem großartigen Artikel CSS line-clamp animation gelandet, von Mai 2023 🙂

Wirklich sehr schöner Artikel, direkt mit CodePen Beispiel: https://codepen.io/derekmorash/pen/abRjbpp

Und für den Fall das es mal offline gehen sollte, hier eine Kopie des Codes

HTML:
<div class="truncate truncate--line-clamped">
  <div class="truncate__inner">
    <h2>Click to expand</h2>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin ac magna tellus. Curabitur sed faucibus leo. Vivamus id elit nec nisi ultrices rutrum. Sed ornare metus sit amet arcu pulvinar feugiat. Phasellus eleifend, dolor vitae malesuada dignissim, diam ligula semper purus, id pulvinar magna nibh nec neque. Ut auctor sodales dictum. Cras erat tortor, vestibulum et porttitor vitae, consequat et erat. Nullam ullamcorper tempor leo in fermentum. Curabitur ultrices tempus pulvinar. Proin a finibus odio. Pellentesque nec urna id ex facilisis dictum. Proin elementum cursus dolor, in molestie sem fermentum eget.</p>

    <p>In rutrum id eros sed tincidunt. Vivamus lobortis orci id orci elementum, eget molestie ante varius. Pellentesque imperdiet accumsan ipsum, vitae auctor lacus. Praesent sit amet imperdiet neque. Integer in orci ligula. Nulla finibus interdum sapien tincidunt vestibulum. Cras id risus eu nisl scelerisque faucibus. Donec tellus nibh, convallis eu nisi a, tempus sollicitudin elit. Cras lorem mauris, ullamcorper ac arcu a, sodales accumsan ex. Aliquam luctus lacinia nisi, id tincidunt tortor aliquam vestibulum. Fusce faucibus, felis id consectetur tempor, felis nunc bibendum nunc, sit amet porttitor erat ex quis tortor. Nulla mattis eros interdum dictum aliquet.</p>

    <p>Nunc at nisi ac dolor egestas tempus. Aenean ornare nibh risus. Nulla tristique eu tellus sed interdum. Duis eu ligula sed orci venenatis elementum. Nullam ullamcorper tellus a ultrices sollicitudin. Maecenas lacinia augue velit, a sodales libero feugiat sed. Sed mauris nisl, dignissim at placerat sed, aliquet vel dolor. Aliquam erat volutpat.</p>
  </div>
</div>
CSS:
*, :after, :before {
  box-sizing: border-box;
}

.truncate {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  max-height: var(--truncate-height, auto);
  max-width: 550px;
  margin: 0 auto;
  overflow: hidden;
  transition: max-height 0.3s ease;
}

.truncate--line-clamped {
  -webkit-line-clamp: 3;
}

.truncate--expanded {
  max-height: var(--truncate-height-expanded, auto);
}


JS:
const truncateEl = document.querySelector('.truncate');
const truncateInnerEl = document.querySelector('.truncate__inner');
const truncateRect = truncateEl.getBoundingClientRect();
let truncateInnerRect = truncateInnerEl.getBoundingClientRect();

truncateEl.style.setProperty("--truncate-height", `${truncateRect.height}px`);

truncateEl.addEventListener('click', () => {
  if (truncateEl.classList.contains('truncate--expanded')) {
    close();
  } else {
    open();
  }
});

function open() {
  truncateEl.classList.remove('truncate--line-clamped');
  window.requestAnimationFrame(() => {
    truncateInnerRect = truncateInnerEl.getBoundingClientRect();
    truncateEl.style.setProperty("--truncate-height-expanded", `${truncateInnerRect.height}px`);
    truncateEl.classList.add('truncate--expanded');
  });
}

function close() {
  truncateEl.classList.remove('truncate--expanded');
  setTimeout(() => {
    truncateEl.classList.add('truncate--line-clamped');
  }, 300);
}

Remove lines matching pattern

dieses mal hier einen super Tipp gefunden https://vimtricks.com/p/vimtrick-remove-lines-matching-pattern/

Using Vim’s powerful “global” command, :g for short. To remove lines matching a pattern, simply use the /d flag to the command. Here are some examples:

:g/pattern/d – Remove lines matching pattern
:g!/pattern/d – Remove lines that do NOT match the pattern

DNS/MX Einträge von Domains abfragen

Immer wieder kommt es vor, das man sich DNS Einträge von Domains einsehen bzw kontrollieren muss. Bisher bin ich immer über google und habe was wie mx record online/ dns checker online oder ähnlich Kram gegoogelt und bin zum Teil auf sehr dubiosen Seiten gelandet. Ab und an noch ein Captcha ausfüllen, CookieBanner wegklicken, nein ich möchte kein Newsletter anklicken, nein ich möchte keine Website Benachrichtigungen 😩😩😩 NUR die Information bitte …. NEIN, diese Services interessieren mich auch nicht *wegklicken* 🤬🤬🤬 ….
Ihr kennt es wahrscheinlich auch …

Zur Rettung kommt wie so oft, das Terminal/CMD/ITerm2 ….
die CommandLine:

In diesem Fall ist es das Tool „host – DNS lookup utility

Beispiel:

host -t TXT blue-side.de

The -t option is used to select the query type. type can be any recognized query type: CNAME, NS, SOA, SIG, KEY, AXFR, etc. When no query type is specified, host automatically selects an appropriate query type. By default, it looks for A, AAAA, and MX records, but if the -C option was given, queries will be made for SOA records, and if name is a dotted-decimal IPv4 address or colon-delimited IPv6 address, host will query for PTR records. If a query type of IXFR is chosen the starting serial number can be specified by appending an equal followed by the starting serial number (e.g. -t IXFR=12345678).

Ausgabe Beispiel

Ein kleines simples Tool, but it made my day:

PHP Warning: gzuncompress(): need dictionary in /var/www/html/public/typo3/sysext/core/Classes/Cache/Backend/Typo3DatabaseBackend.php line 158

Auch Ich bin über dieses Problem im Zusammenhang mit TYPO3 und ddev 1.19 gestossen und habe dann den Artikel von Sven Wappler gefunden, in dem Stefan Frömken die Lösung in den Kommentaren erläutert. Vielen Dank an euch beide 🙂

In der von ddev erstellten AdditionalConfiguration.php muss folgendes ergänzt werden:

            'DB' => [
                'Connections' => [
                    'Default' => [
                        ....
                        'charset' => 'utf8mb4',
                         ...
                    ],
                ],
            ],

Danach caches leeren und es läuft wieder.

PhpStorm und automatischer Upload von generierten CSS Dateien

PhpStorm ist so eingestellt, das alle Dateien automatisch nach dem ändern hochgeladen werden, es sollen auch die Files hochgeladen werden die durch „Externe Tools“ verändert wurden.

In meiner Installation werden CSS Dateien durch gulp aus SCSS Dateien kompiliert. Innerhalb von PhpStorm mit der rechten Maustaste auf die gulpfile.js klicken und dann „Show Gulp Tasks“ und hier dann den watch Task starten. So weit so gut.

In letzter Zeit war es aber so, das die neue CSS zwar erstellt wurde, aber nicht mehr automatisch hochgeladen wurde. Ein Focus Wechsel von PhpStorm zu einem anderen Tool und zurück hat meist geholfen und der Upload wurde gestartet… jedoch sehr nervig.

Einen WorkAround habe ich nun im Bugtracker von jetbrains selbst gefunden.

Elena Pogorelova hat dann das gepostet:
works fine if nodejs.console.use.terminal is off

Wenn man also in „Help -> Edit Custom Properties“ diese Zeile einträgt und dann PhpStrom neu startet, klappt es auch endlich wieder mit dem AutoUpload.

🎉🎉🎉

php Transpose an array

oder anders ausgedrückt, „rotate a multidimensional array“

Das hier fällt in die Kategorie TIL.

In einem großartigen Beitrag von Adam Wathan habe ich gelernt das man PHP Arrays relativ einfach rotieren kann. Darüber bin ich dann über einen StackOverflow Beitrag gestolpert, der es nochmals sehr vereinfacht hat.

Dazu ein sehr einfaches Beispiel, etwas nützlicheres bei Adam.


$before = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
];

function transpose($array) {
    return array_map(null, ...$array);
}

$after = transpose($before);

//  $after = [
//      [1, 4, 7],
//      [2, 5, 8],
//      [3, 6, 9],
//  ];

print_r($before);
print_r($after);