dbCF.de

rerun.exe automatisch beim Start von Windows beenden

Ich habe mir vor einigen Monaten einen Laptop aus dem Hause TUXEDO Computers zugelegt. Auf dem Rechner läuft Windows 10 und manchmal auch eine rerun.exe, welche die CPU bis zu 30% auslastet. Da mich das ziemlich nervt, habe ich ein winziges Programm geschrieben, das beim Start von Windows mit gestartet wird und schaut, ob die rerun.exe mal wieder aktiv ist. Wenn dem so ist, dann wird sie beendet und die Suche hat ein Ende. Nach spätestens einer Minute wird die Suche so oder so beendet.

Die rerun.exe gehört übrigens zu dem Control Center, welches man installieren kann. TUXEDO nimmt als Grundlage die Laptops von Clevo. Das heißt, das gleiche Problem mit der rerun.exe kann auch bei den Laptops von Schenker Technologies auftreten.

using System;
using System.Diagnostics;
using System.Threading;

namespace killrerun
{
    class Program
    {
        static void Main(string[] args)
        {
            var exitOn = DateTime.Now.AddMinutes(1);
            while (DateTime.Now < exitOn)
            {
                try
                {
                    foreach (var process in Process.GetProcessesByName("rerun"))
                    {
                        process.Kill();
                        Process.GetCurrentProcess().Kill();
                    }
                }
                catch
                {
                    // Who cares...
                }

                Thread.Sleep(100);
            }
        }
    }
}

Wer keinen .NET Compiler zur Hand hat, der kann sich das Programm auch hier herunterladen. “Getestet” habe ich es mit .NET SDK 4.7 auf einem Windows 10 Pro 64 Bit.

Posted in Dev

Bilder in Piwigo-Galerie neu nummerieren

Als Galerie und für die Verwaltung meiner Bilder nutze ich Piwigo. Mir gelingt es leider immer wieder, dass ich vergesse die Dateien vor dem Hochladen durchzunummerieren. Oder ich habe sie umbenannt und lösche im Nachhinein welche, womit sich Lücken ergeben.

Die einfachste Lösung das zu beheben (geht man davon aus, dass die originalen Dateinamen alphabetisch sind), ist das nachfolgende SQL-Query anzupassen und abzuschicken. Es wird davon ausgegangen, dass die Tabellen alle den Prefix “piwigo_” haben (wurde bei der Installation festgelegt). Nun muss man nur noch in Zeile 11 die ID der Kategorie angeben, diese findet sich in der URL zur Kategorie, siehe Beispiel. Zusätzlich sollte man sich noch für eine fixe (Zeile 16) oder variable (Zeile 15) Länge der Nummerierung entscheiden. Bei der variablen Länge kann noch definiert werden, wie lang die Zahl denn sein soll. Abschließend den Query ausführen und über die saubere Nummerierung freuen.

Hier nun das kurze Query:

SET @rownum=0;
UPDATE
  `piwigo_images` t,
  (
    SELECT @rownum:=@rownum+1 rownum, `piwigo_images`.`id`
    FROM `piwigo_images`
    WHERE `id`
      IN (
        SELECT `image_id`
        FROM `piwigo_image_category`
        WHERE `category_id` = XXX -- Siehe URL, z. B. https://dbCF.de/gallery/index.php?/category/13
      )
    ORDER BY `file` ASC
  ) r
SET t.`name` = LPAD(r.rownum, 3, '0') -- Die 3 setzt die Länge der Zahl, z B. "008, 009, 010".
-- SET t.`name` = r.rownum -- Für variable Länge nutzen z. B. "8, 9, 10".
WHERE t.`id` = r.`id`;
Posted in Dev

Pagination demo

Here you can see some possible combinations, realisable with the script for paging.

To show you how many things you can adjust, some values will be set to a random value.

Links for first page, previous page, first three pages, page before and behind current, last three pages, next and last page
[1]>2<>3<>16<>17<>18< Next Last

".str_replace('<', '&lt;', $pagination=new Pagination(0, 54);
$pagination->setLinkHref('https://dbCF.de/blog/pagination-demo/?page=');
$pagination->setDelimiter1(' ');
$pagination->setDelimiter2(' ');
$pagination->setLinkActiveMore(' style="font-size:23px;"');
$pagination->setLinkBracket('>', '<');
$pagination->setLinkNextPrevMore(' style="color:green; font-weight:bold;"');
echo $pagination->create();)."

Links for previous page, first three pages, page before and behind current, last three pages and next page
[1]>2<>3< ___ >16<>17<>18<Next

".str_replace('<', '&lt;', $pagination=new Pagination(0, 54);
$pagination->setLinkHref('https://dbCF.de/blog/pagination-demo/?page=');
$pagination->setDelimiter4(' ___ ');
$pagination->setLinkBracket('>', '<');
$pagination->setShowFirstLast(false);
echo $pagination->create();)."

Links for first page, first three pages, page before and behind current, last three pages and last page
{1}{2}{3} ___ {16}{17}{18}Nothin too see here but the last page

".str_replace('<', '&lt;', $pagination=new Pagination(0, 54);
$pagination->setLinkHref('https://dbCF.de/blog/pagination-demo/?page=');
$pagination->setDelimiter1(' -- ');
$pagination->setDelimiter4(' ___ ');
$pagination->setLinkActiveBracket(' {', '} ');
$pagination->setLinkActiveMore(' style="font-size:23px;"');
$pagination->setLinkBracket(' {', '} ');
$pagination->setLinkFirstLastText('Secret information on page one!!', 'Nothin too see here but the last page');
$pagination->setShowNextPrev(false);
echo $pagination->create();)."

Links for first three pages, page before and behind current and last three pages
>1<{2}{3}{16}{17}{18}

".str_replace('<', '&lt;', $pagination=new Pagination(0, 54);
$pagination->setLinkHref('https://dbCF.de/blog/pagination-demo/?page=');
$pagination->setDelimiter2(' ');
$pagination->setDelimiter3(' - ');
$pagination->setLinkActiveBracket('>', '<');
$pagination->setLinkActiveMore(' style="font-size:23px;"');
$pagination->setLinkBracket(' {', '} ');
$pagination->setLinkMore(' style="font-size:23px;"');
$pagination->setLinkNextPrevMore(' style="color:green; font-weight:bold;"');
$pagination->setLinkFirstLastText('First', 'Last');
$pagination->setShowFirstLast(false);
$pagination->setShowNextPrev(false);
echo $pagination->create();)."

Links for first page, previous page, page before and behind current, next and last page
[1][2][3]Next Nothin too see here but the last page

".str_replace('<', '&lt;', $pagination=new Pagination(0, 54);
$pagination->setLinkHref('https://dbCF.de/blog/pagination-demo/?page=');
$pagination->setDelimiter1(' ');
$pagination->setDelimiter2(' ');
$pagination->setLinkActiveMore(' style="font-size:23px;"');
$pagination->setLinkBracket(' [', '] ');
$pagination->setLinkNextPrevText('Next', 'Previous');
$pagination->setLinkFirstLastText('Secret information on page one!!', 'Nothin too see here but the last page');
$pagination->setShowOuter(false);
echo $pagination->create();)."

Links for previous page, page before and behind current and next last page
[1]{2}{3}Next

".str_replace('<', '&lt;', $pagination=new Pagination(0, 54);
$pagination->setLinkHref('https://dbCF.de/blog/pagination-demo/?page=');
$pagination->setDelimiter1(' ');
$pagination->setLinkActiveMore(' style="font-size:23px;"');
$pagination->setLinkBracket(' {', '} ');
$pagination->setLinkMore(' style="font-size:23px;"');
$pagination->setLinkNextPrevMore(' style="color:green; font-weight:bold;"');
$pagination->setLinkFirstLastText('Secret information on page one!!', 'Nothin too see here but the last page');
$pagination->setShowActiveLink('false');
$pagination->setShowOuter(false);
$pagination->setShowFirstLast(false);
echo $pagination->create();)."

Links for first page, page before and behind current and last page
[1]{2}{3}Last

".str_replace('<', '&lt;', $pagination=new Pagination(0, 54);
$pagination->setLinkHref('https://dbCF.de/blog/pagination-demo/?page=');
$pagination->setDelimiter1(' ');
$pagination->setDelimiter2(' -- ');
$pagination->setLinkBracket(' {', '} ');
$pagination->setLinkNextPrevText('Next', 'Previous');
$pagination->setLinkFirstLastText('First', 'Last');
$pagination->setShowOuter(false);
$pagination->setShowNextPrev(false);
echo $pagination->create();)."

Links for page before and behind current
[1]>2<>3<

".str_replace('<', '&lt;', $pagination=new Pagination(0, 54);
$pagination->setLinkHref('https://dbCF.de/blog/pagination-demo/?page=');
$pagination->setDelimiter2(' ');
$pagination->setLinkBracket('>', '<');
$pagination->setLinkNextPrevText('Next', 'Previous');
$pagination->setLinkFirstLastText('Secret information on page one!!', 'Nothin too see here but the last page');
$pagination->setShowOuter(false);
$pagination->setShowFirstLast(false);
$pagination->setShowNextPrev(false);
echo $pagination->create();)."

Links for first page, previous page, jede Seite einzeln, next and last page
[1]23456789101112131415161718NextLast

".str_replace('<', '&lt;', $pagination=new Pagination(0, 54);
$pagination->setLinkHref('https://dbCF.de/blog/pagination-demo/?page=');
$pagination->setDelimiter4(' ___ ');
$pagination->setLinkActiveBracket(' [', '] ');
$pagination->setLinkNextPrevText('Next', 'Previous');
$pagination->setLinkNextPrevMore(' style="color:green; font-weight:bold;"');
$pagination->setLinkFirstLastText('First', 'Last');
$pagination->setShowContinuous(true);
echo $pagination->create();)."

Links for previous page, every single page and next page
{1}23456789101112131415161718Next

".str_replace('<', '&lt;', $pagination=new Pagination(0, 54);
$pagination->setLinkHref('https://dbCF.de/blog/pagination-demo/?page=');
$pagination->setDelimiter1(' -- ');
$pagination->setDelimiter4(' ... ');
$pagination->setLinkActiveBracket(' {', '} ');
$pagination->setLinkActiveMore(' style="font-size:23px;"');
$pagination->setLinkMore(' style="font-size:23px;"');
$pagination->setShowActiveLink('false');
$pagination->setShowContinuous(true);
$pagination->setShowFirstLast(false);
echo $pagination->create();)."

Links for erste Seite, every single page and last page
>1<, [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18] Last

".str_replace('<', '&lt;', $pagination=new Pagination(0, 54);
$pagination->setLinkHref('https://dbCF.de/blog/pagination-demo/?page=');
$pagination->setDelimiter1(' ');
$pagination->setDelimiter2(' -- ');
$pagination->setDelimiter3(', ');
$pagination->setDelimiter4(' ___ ');
$pagination->setLinkActiveBracket('>', '<');
$pagination->setLinkBracket(' [', '] ');
$pagination->setLinkMore(' style="font-size:23px;"');
$pagination->setShowContinuous(true);
$pagination->setShowNextPrev(false);
echo $pagination->create();)."

Links for every single page
[1]23456789101112131415161718

".str_replace('<', '&lt;', $pagination=new Pagination(0, 54);
$pagination->setLinkHref('https://dbCF.de/blog/pagination-demo/?page=');
$pagination->setDelimiter2(' -- ');
$pagination->setDelimiter4(' ... ');
$pagination->setLinkActiveMore(' style="font-size:23px;"');
$pagination->setShowContinuous(true);
$pagination->setShowFirstLast(false);
$pagination->setShowNextPrev(false);
echo $pagination->create();)."
Posted in Dev

Blättern demo

Hier sind einige der möglichen Varianten aufgezeigt, die mit dem Skript zum Blättern realisiert werden können.

Um zu zeigen, was noch so alles eingestellt werden kann, werden einige Einstellungen per Zufall ausgewählt und auf die jeweilige Anzeige angewandt.

Links für erste Seite, vorige Seite, erste drei Seiten, Seite vor und hinter aktueller, letzten drei Seiten, nächste Seite und letzte Seite
[1], 2, 3 ___ 16, 17, 18WeiterMachst Du Seite ganz hinten

".str_replace('<', '&lt;', $blaettern=new Blaettern(0, 54);
$blaettern->setLinkHref('https://dbCF.de/blog/blaettern-demo/?page=');
$blaettern->setDelimiter1(' -- ');
$blaettern->setDelimiter3(', ');
$blaettern->setDelimiter4(' ___ ');
$blaettern->setLinkActiveMore(' style="font-size:23px;"');
$blaettern->setLinkMore(' style="font-size:23px;"');
$blaettern->setLinkNextPrevText('Weiter', 'Zurück');
$blaettern->setLinkNextPrevMore(' style="color:green; font-weight:bold;"');
$blaettern->setLinkFirstLastText('Machst Du Seite 1', 'Machst Du Seite ganz hinten');
$blaettern->setShowActiveLink('false');
echo $blaettern->create();)."

Links für vorige Seite, erste drei Seiten, Seite vor und hinter aktueller, letzten drei Seiten und nächste Seite
[1][2][3][16][17][18]Weiter

".str_replace('<', '&lt;', $blaettern=new Blaettern(0, 54);
$blaettern->setLinkHref('https://dbCF.de/blog/blaettern-demo/?page=');
$blaettern->setDelimiter1(' ');
$blaettern->setDelimiter2(' -- ');
$blaettern->setDelimiter3(' - ');
$blaettern->setLinkBracket(' [', '] ');
$blaettern->setLinkNextPrevMore(' style="color:green; font-weight:bold;"');
$blaettern->setShowFirstLast(false);
echo $blaettern->create();)."

Links für erste Seite und Seite vor und hinter aktueller sowie letzte Seite
{1}{2}{3}{16}{17}{18}Machst Du Seite ganz hinten

".str_replace('<', '&lt;', $blaettern=new Blaettern(0, 54);
$blaettern->setLinkHref('https://dbCF.de/blog/blaettern-demo/?page=');
$blaettern->setDelimiter4(' ... ');
$blaettern->setLinkActiveBracket(' {', '} ');
$blaettern->setLinkActiveMore(' style="font-size:23px;"');
$blaettern->setLinkBracket(' {', '} ');
$blaettern->setLinkNextPrevText('Weiter', 'Zurück');
$blaettern->setLinkFirstLastText('Machst Du Seite 1', 'Machst Du Seite ganz hinten');
$blaettern->setShowActiveLink('false');
$blaettern->setShowNextPrev(false);
echo $blaettern->create();)."

Links für Seite vor und hinter aktueller
{1}23161718

".str_replace('<', '&lt;', $blaettern=new Blaettern(0, 54);
$blaettern->setLinkHref('https://dbCF.de/blog/blaettern-demo/?page=');
$blaettern->setDelimiter1(' -- ');
$blaettern->setDelimiter3(' - ');
$blaettern->setLinkActiveBracket(' {', '} ');
$blaettern->setLinkNextPrevMore(' style="color:green; font-weight:bold;"');
$blaettern->setShowFirstLast(false);
$blaettern->setShowNextPrev(false);
echo $blaettern->create();)."

Links für erste Seite, vorige Seite, Seite vor und hinter aktueller, nächste Seite und letzte Seite
>1<, {2}, {3} ___ WeiterEnde

".str_replace('<', '&lt;', $blaettern=new Blaettern(0, 54);
$blaettern->setLinkHref('https://dbCF.de/blog/blaettern-demo/?page=');
$blaettern->setDelimiter2(' -- ');
$blaettern->setDelimiter3(', ');
$blaettern->setDelimiter4(' ___ ');
$blaettern->setLinkActiveBracket('>', '<');
$blaettern->setLinkBracket(' {', '} ');
$blaettern->setShowActiveLink('false');
$blaettern->setShowOuter(false);
echo $blaettern->create();)."

Links für vorige Seite, Seite vor und hinter aktueller sowie nächste Seite
[1]{2}{3}Machst Du Seite weiter!

".str_replace('<', '&lt;', $blaettern=new Blaettern(0, 54);
$blaettern->setLinkHref('https://dbCF.de/blog/blaettern-demo/?page=');
$blaettern->setDelimiter1(' ');
$blaettern->setDelimiter2(' -- ');
$blaettern->setLinkActiveBracket(' [', '] ');
$blaettern->setLinkBracket(' {', '} ');
$blaettern->setLinkNextPrevText('Machst Du Seite weiter!', 'Machst Du Seite rückwärts!');
$blaettern->setLinkNextPrevMore(' style="color:green; font-weight:bold;"');
$blaettern->setLinkFirstLastText('Machst Du Seite 1', 'Machst Du Seite ganz hinten');
$blaettern->setShowActiveLink('false');
$blaettern->setShowOuter(false);
$blaettern->setShowFirstLast(false);
echo $blaettern->create();)."

Links für erste Seite, Seite vor und hinter aktueller sowie letzte Seite
[1]23 ___ – Ende

".str_replace('<', '&lt;', $blaettern=new Blaettern(0, 54);
$blaettern->setLinkHref('https://dbCF.de/blog/blaettern-demo/?page=');
$blaettern->setDelimiter2(' -- ');
$blaettern->setDelimiter3(' - ');
$blaettern->setDelimiter4(' ___ ');
$blaettern->setLinkMore(' style="font-size:23px;"');
$blaettern->setLinkNextPrevText('Weiter', 'Zurück');
$blaettern->setShowActiveLink('false');
$blaettern->setShowOuter(false);
$blaettern->setShowNextPrev(false);
echo $blaettern->create();)."

Links für Seite vor und hinter aktueller
[1]23 ___

".str_replace('<', '&lt;', $blaettern=new Blaettern(0, 54);
$blaettern->setLinkHref('https://dbCF.de/blog/blaettern-demo/?page=');
$blaettern->setDelimiter3(' - ');
$blaettern->setDelimiter4(' ___ ');
$blaettern->setLinkActiveMore(' style="font-size:23px;"');
$blaettern->setLinkNextPrevText('Weiter', 'Zurück');
$blaettern->setShowOuter(false);
$blaettern->setShowFirstLast(false);
$blaettern->setShowNextPrev(false);
echo $blaettern->create();)."

Links für erste Seite, vorige Seite, jede Seite einzeln, nächste Seite und letzte Seite
[1]23456789101112131415161718 WeiterEnde

".str_replace('<', '&lt;', $blaettern=new Blaettern(0, 54);
$blaettern->setLinkHref('https://dbCF.de/blog/blaettern-demo/?page=');
$blaettern->setDelimiter2(' ');
$blaettern->setDelimiter3(' - ');
$blaettern->setDelimiter4(' ___ ');
$blaettern->setLinkActiveMore(' style="font-size:23px;"');
$blaettern->setLinkMore(' style="font-size:23px;"');
$blaettern->setShowActiveLink('false');
$blaettern->setShowContinuous(true);
echo $blaettern->create();)."

Links für vorige Seite, jede Seite einzeln sowie nächste Seite
[1]23456789101112131415161718 Machst Du Seite weiter!

".str_replace('<', '&lt;', $blaettern=new Blaettern(0, 54);
$blaettern->setLinkHref('https://dbCF.de/blog/blaettern-demo/?page=');
$blaettern->setDelimiter1(' -- ');
$blaettern->setDelimiter2(' ');
$blaettern->setLinkMore(' style="font-size:23px;"');
$blaettern->setLinkNextPrevText('Machst Du Seite weiter!', 'Machst Du Seite rückwärts!');
$blaettern->setShowContinuous(true);
$blaettern->setShowFirstLast(false);
echo $blaettern->create();)."

Links für erste Seite, jede Seite einzeln sowie letzte Seite
{1}23456789101112131415161718 Ende

".str_replace('<', '&lt;', $blaettern=new Blaettern(0, 54);
$blaettern->setLinkHref('https://dbCF.de/blog/blaettern-demo/?page=');
$blaettern->setDelimiter1(' ');
$blaettern->setLinkActiveBracket(' {', '} ');
$blaettern->setLinkNextPrevText('Machst Du Seite weiter!', 'Machst Du Seite rückwärts!');
$blaettern->setLinkNextPrevMore(' style="color:green; font-weight:bold;"');
$blaettern->setShowContinuous(true);
$blaettern->setShowNextPrev(false);
echo $blaettern->create();)."

Links für jede einzelne Seite
{1}>2<>3<>4<>5<>6<>7<>8<>9<>10<>11<>12<>13<>14<>15<>16<>17<>18<

".str_replace('<', '&lt;', $blaettern=new Blaettern(0, 54);
$blaettern->setLinkHref('https://dbCF.de/blog/blaettern-demo/?page=');
$blaettern->setLinkActiveBracket(' {', '} ');
$blaettern->setLinkActiveMore(' style="font-size:23px;"');
$blaettern->setLinkBracket('>', '<');
$blaettern->setShowContinuous(true);
$blaettern->setShowFirstLast(false);
$blaettern->setShowNextPrev(false);
echo $blaettern->create();)."
Posted in Dev

How to use visural-wicket’s BeautyTipBehavior and dots in the component id

When we started to use visural-wicket (version 0.6.5) we experienced some problems with some tool tips. For whatever reason, the JavaScript behavior was not attached to some components. So all you got was the tool tip given from title attribute and that’s it.

The problem was that some ids contain a dot. jQuery interprets the ids as regular expression, so ids like userKey.username were not found.

The solution was to overwrite a method in our own ToolTip class and provide the super call with a component that has an escaped id.

public class ToolTip extends BeautyTipBehavior {
    private static final long serialVersionUID = 1L;

    public ToolTip(IModel<String> tipModel) {
        super(tipModel);
    }

    /*
     * (non-Javadoc)
     *
     * @see com.visural.wicket.behavior.beautytips.BeautyTipBehavior#bind(org.apache.wicket.Component)
     */
    @Override
    public void bind(Component component) {
        final String fakeComponentId = component.getId().replace(".", "\\\\.");
        final Component fakeComponent = new Component(fakeComponentId) {
            private static final long serialVersionUID = 1L;

            @Override
            protected void onRender(MarkupStream markupStream) {}
        };
        fakeComponent.setMarkupId(fakeComponentId);

        super.bind(fakeComponent);
    }
}
Posted in Dev
Scroll To Top