Afrondingsfouten tijdens de overgang

In Beieren is een gemiddeld cijfer van \(2{,}33\) voldoende voor toelating tot het gymnasium \(2{,}34\) dat niet is. Bij deze scherpe grens kan de volgorde van twee afrondingsbewerkingen bepalen aan welke kant een kind valt. Günther Felbinger bespreekt de mogelijke gevolgen van dit afrondingseffect in een blogpost . Uit pure interesse heb ik de effecten zelf berekend voor alle mogelijke cijfercombinaties die in het model zijn toegestaan.

.­.­.

Facebook 2FA opnieuw instellen

Door een foutje werden alle geëxporteerde codes verwijderd tijdens het exportproces in Google Authenticator ; ik had de herstelcodes voor alle accounts opgeslagen, behalve die van Facebook . Ik had er geen haast mee, want ik had het sociale netwerk al jaren niet meer gebruikt, maar ik wilde kijken of ik op de een of andere manier weer toegang kon krijgen. Het begin van een lange zoektocht.

.­.­.

Wie kent dat nou?

Soms is één enkele vraag in het programma van de vroege avond (in dit geval van de gewaardeerde presentator Kai Pflaume) genoeg om een onschuldige quizfinale te veranderen in een klein optimalisatieprobleem. Dat is precies wat er gebeurt bij "Wie weet wat?". Hoofdvraag: De categorie is bekend, het antwoord nog niet – maar de inzet bepaalt al welke uitkomsten nog steeds goed zijn.

.­.­.

Correct of incorrect inkorten

Basiskennis over breuken: Het vereenvoudigen van gelijke factoren is toegestaan. Het vereenvoudigen van gelijke cijfers is niet toegestaan. En toch zijn er breuken waarbij deze verboden vereenvoudiging lijkt te werken. Het is de moeite waard om een bijzonder eenvoudige familie van breuken eens nader te bekijken: breuken waarbij hetzelfde cijfer aan het einde van de teller en aan het begin van de noemer voorkomt.

.­.­.

Stille Trein

Vermakelijke schaakpuzzels maken het leven leuker. De puzzel van vandaag: Wit aan zet, schaakmat in twee zetten. De positie stamt uit 1926 van Erich Brunner – en is juist interessant omdat het helemaal geen typische tweezettenpositie lijkt. Je probeert directe schaakzetten, bekijkt torenzetten, zoekt naar mogelijkheden om de dame te slaan, en na een paar minuten besef je: de voor de hand liggende ideeën zijn niet de oplossing.

.­.­.

Let's Encrypt DomainFactory

Sommige shared hostingpakketten met cPanel bieden geen AutoSSL aan, of alleen in de duurdere abonnementen. Hierdoor kunt u geen gratis Let's Encrypt-certificaat aanvragen via de cPanel-interface en blijven alle domeinen verbonden aan een zelfondertekend certificaat. De browser geeft de pagina dan weer als 'niet beveiligd'. De oplossing: verkrijg zelf het certificaat met acme.sh en installeer het via de cPanel UAPI – automatisch verlengend, volledig zonder AutoSSL.

.­.­.

Deelbaarheid

In de recente aflevering van "Wie wil miljonair worden ?" was er een slimme vraag waar Günther Jauch duidelijk even over na moest denken: "Een getal is altijd deelbaar door \(4\) zonder rest als het getal gevormd door de laatste twee cijfers gelijk is aan...?" – en dit is precies waar je even wiskundig moet nadenken, in plaats van je te laten afleiden door de mooie details. Want hoewel antwoorden zoals "is even", "bevat een \(0\) of "de som van de cijfers is \(4\) " op het eerste gezicht plausibel klinken, ligt het juiste antwoord in een simpele eigenschap van ons decimale stelsel.

.­.­.

AI versus Erdős

Sommige wiskundige problemen zijn zo eenvoudig geformuleerd dat ze aan een kind uitgelegd kunnen worden, maar tegelijkertijd zo complex dat ze generaties wiskundigen bezighouden. Een voorbeeld hiervan is het zogenaamde eenheidsafstandsprobleem: plaats \(n\) punten in het vlak. Hoeveel paren punten kunnen dan een afstand van precies \(1\) hebben? Het probleem stamt uit de tijd van Paul Erdős en wordt sinds 1946 bestudeerd. OpenAI heeft nu gepubliceerd dat een intern model een lang bestaande veronderstelling over dit probleem heeft weerlegd.

.­.­.

Codeer met priemgetallen

In oktober 1999 bracht een groep onder leiding van de toen 16-jarige Noor Jon Lech Johansen het DeCSS- programma uit om de Content Scramble System (CSS)-beveiliging voor dvd-weergave te omzeilen. CSS gebruikte 40-bits encryptie, waarvan de sleutels werden verspreid onder gelicentieerde fabrikanten, om dvd-weergave te beperken. Omdat de verspreiding van de code onder de Amerikaanse DMCA viel en wettelijk verboden was, zochten activisten naar manieren om de code te vermommen als een wiskundige entiteit.

.­.­.

ℚ is niet compleet

De rationale getallen \(\mathbb{Q}\) lijken op het eerste gezicht een continu geheel te vormen: tussen twee willekeurige breuken ligt er altijd een andere. Maar deze indruk is bedrieglijk: er zijn verzamelingen rationale getallen die wel degelijk begrensd zijn, maar waarvan het supremum of infimum simpelweg niet bestaat in \(\mathbb{Q}\) . De reden hiervoor ligt in het bestaan van irrationale getallen zoals \(\sqrt{2}\) , die in zekere zin onzichtbare gaten in de getallenlijn van de rationale getallen creëren.

.­.­.

Minecraft Boss Bars

PaperMC biedt een eenvoudige basis voor het uitbreiden van Minecraft aan de serverzijde met kleine plugins, zonder dat clients iets hoeven te installeren. Bij het ontwikkelen van plugins rijst de vraag hoe dynamische informatie aan de speler kan worden getoond. Het antwoord ligt in een vaak over het hoofd geziene standaardfunctie van Minecraft: de boss bar . Oorspronkelijk bedoeld voor eindbazen, kan de boss bar worden hergebruikt als een minimalistische HUD.

.­.­.

IPv6

Het Internet Protocol (IP) vormt de basis van alle internettoepassingen. Andere protocollen, zoals TCP en UDP, bouwen hierop voort en verzorgen op hun beurt diensten zoals HTTP(S), e-mail, telefonie en DNS. IPv6 vervangt het oudere IPv4-protocol omdat de relatief kleine adresruimte van ongeveer 4 miljard adressen al lang is uitgeput. IPv6 is nu bijna alomtegenwoordig en nuttiger dan veel mensen beseffen.

.­.­.

Git zonder SSH

Wie heeft dit niet meegemaakt: je moet snel iets downloaden op een goedkoop shared hostingpakket (bijvoorbeeld van IONOS). git pull U wilt wellicht een programma uitvoeren of een database gebruiken, maar uw hostingprovider biedt geen SSH-toegang – of alleen in duurdere abonnementen. Vaak is de enige overgebleven optie het omslachtige proces van het handmatig uploaden van bestanden via FTP, wat implementaties onnodig ingewikkeld en foutgevoelig maakt.

.­.­.

Amazon en btw

Amazon is het perfecte winkelkanaal voor freelancers: snel, betaalbaar en alles op één plek. Amazon is er nu in geslaagd om consistent tijdige en direct beschikbare facturen te leveren die gedownload kunnen worden (zelfs voor aankopen op de Marketplace). Of het nu gaat om een nieuwe laptop, een bureaustoel of gewoon een snelle bestelling printerpapier – de goederen kunnen met een paar klikken besteld worden, meestal via het persoonlijke account dat je al jaren hebt.

.­.­.

git-status 2.0

Wie het eerst 's ochtends is git status Iedereen die typt en dan koffie drinkt, zal dol zijn op dit kleine hulpmiddel. Vooral bij het parallel ontwikkelen van veel webprojecten is een compact overzicht onmisbaar: waar is de werkboom schoon, waar zijn er niet-samengevoegde wijzigingen en waar is een pull/push in behandeling? Een kleine shell-tool is alles wat je nodig hebt – zolang deze maar robuust omgaat met spaties/Unicode in paden en niet vastloopt op vastgelopen remotes.

.­.­.

Taal en logica

Er is een prachtig nummer van Cali Rose genaamd "It Is What It Is and It Ain't What Is Ain't ". Dit kan worden vereenvoudigd tot "Het is wat het is en het is niet wat het niet is". Met slechts een paar woorden kunnen hele werelden van waarheid worden verkend. Door de twee helften te variëren en te combineren, ontstaat een kleine speeltuin voor logica. Nu kun je deze zin gebruiken en andere interessante voorbeelden vinden.

.­.­.

Thunderbird-automatisering

Thunderbird heeft sinds 2022 een opmerkelijke heropleving doorgemaakt. Na jaren van stagnatie investeert de Mozilla Foundation weer actief in de ontwikkeling ervan. Het Supernova-initiatief (Thunderbird 115+) bracht fundamentele moderniseringen met zich mee, zoals Rust-integratie voor prestatiekritieke componenten, een gemoderniseerde gebruikersinterface gebaseerd op Web Components en native Exchange-ondersteuning via de EWS/Microsoft Graph API.

.­.­.

Walrus-operator in PHP

In oktober 2019 introduceerde Python 3.8 de Walrus-operator (:=) via PEP 572 – en daarmee ontketende hij een van de grootste controverses in de geschiedenis van de programmeertaal. Het debat was zo fel dat de uitvinder van Python Guido van Rossum in juli 2018 – nog vóór de release – zijn positie als BDFL (Welwillende dictator voor het levenSinds begin 2019 wordt Python bestuurd door een gekozen stuurraad.

.­.­.

Van Celsius en Fahrenheit

Je belt met een vriend in de VS op een ijskoude winterdag. "Het is hier min \(40\) graden!" roepen jullie tegelijk. Normaal gesproken zou dit een kwestie zijn van duidelijk maken wie Celsius bedoelt en wie Fahrenheit, maar niet bij deze specifieke temperatuur. Waarom is dat zo? Dit is de enige temperatuur waarbij de Celsius- en Fahrenheit-schalen overeenkomen!

.­.­.

Verwarring in de natuurlijke sorteervolgorde

De meeste grafische bestandsbeheerders sorteren niet strikt lexicografisch, maar gebruiken "natuurlijke" sortering. Cijferblokken in de naam worden geïnterpreteerd als getallen – het grotere blok wint, zelfs als het omgekeerde alfabetisch zou gelden. Het idee achter natuurlijke sortering: wat mensen meestal willen is "9 voor 10", "Hoofdstuk 2 voor Hoofdstuk 10" – zonder dat er voorloopnullen hoeven te worden toegevoegd.

.­.­.

Prioriteit in Windows Taakplanner

Iedereen die taken uitvoert in de Windows Taakplanner, zal vroeg of laat onverklaarbare runtimeverschillen tegenkomen. Een PHP-script dat op de opdrachtregel in 5 minuten wordt uitgevoerd, duurt plotseling 20 minuten wanneer het via de Windows Taakplanner wordt uitgevoerd. Dezelfde gebruiker, dezelfde rechten, dezelfde code – vier keer de uitvoeringstijd. Wat was er aan de hand?

.­.­.

De ARC-AGI-benchmark

De voortdurende daling van de prijs van rekenkracht – twee ordes van grootte per decennium – heeft deep learning-modellen sinds 2010 enorm gestimuleerd. Grotere netwerken en meer data leken steeds hogere scores te leveren op gangbare benchmarks – en voedden de hoop dat schaalvergroting op zichzelf onvermijdelijk tot AGI zou leiden. Al in 2019 introduceerde François Chollet de ARC-AGI- benchmark. om intelligentie te meten.

.­.­.

E-mailadres van afzender weergeven in Outlook

Het e-mailadres van de afzender blijft een goede indicator of een e-mail spam is of niet. Standaard is het in Microsoft Outlook Desktop niet intuïtief om een kolom toe te voegen die het daadwerkelijke e-mailadres in plaats van de naam weergeeft. Microsoft heeft deze functie tot nu toe niet als een eenvoudige optie geïmplementeerd, maar het kan wel worden toegevoegd aan de klassieke Windows-versie van Outlook met behulp van ingebouwde tools.

.­.­.

SSL in lokale ontwikkelomgeving

In een tijd waarin browsers alleen HTTPS ondersteunen, SameSite-cookies worden gebruikt en de ontwikkelingsomstandigheden realistisch zijn, is het belangrijk om lokaal te werken met echte SSL-certificaten. Let's Encrypt heeft hier baanbrekend werk verricht: met behulp van certbot en Cloudflare is het aanmaken en vernieuwen van wildcardcertificaten snel en eenvoudig. Hiermee kunt u op elk apparaat (smartphone, VM, ...) in het lokale netwerk of via VPN versleuteld toegang krijgen tot uw webprojecten.

.­.­.

Bouw uw eigen grote taalmodel

"Een machine kan een groot geheugen hebben, maar kan niet denken - tenzij we het leren." – Alan Turing. Moderne AI-modellen zoals GPT-4 of Llama zijn gebaseerd op enorme datasets en complexe wiskundige structuren. Maar wat zit er nu eigenlijk achter? In dit artikel bespreken we de belangrijkste onderdelen die nodig zijn om een taalmodel vanaf nul op te bouwen.

.­.­.

Host OpenStreetMap zelf

OpenStreetMap (OSM) is een gratis wereldkaart die gezamenlijk door mensen over de hele wereld is gemaakt – gratis, open en onafhankelijk. Terwijl Google Maps als marktleider vaak de eerste keuze is voor digitale kaarten, is OSM gebaseerd op een heel ander principe: een samenwerkende community die geografische gegevens verzamelt, verbetert en gratis beschikbaar stelt.

.­.­.

Toegang met PHP tot Exchange/Office 365

Lang aangekondigd - nu realiteit : Microsoft heeft authenticatie met wachtwoord voor bepaalde protocollen in Exchange Online vanaf september 2022 uitgeschakeld ten gunste van oAuth2. De GitHub-uitgaven van veel bibliotheken en back-upscripts maken duidelijk dat de omschakeling veel beheerders verraste. Hieronder laten we zien hoe je met behulp van oAuth2 via PHP en IMAP toegang kunt blijven krijgen tot de inhoud van je Exchange mailbox.

.­.­.

Verzend e-mails vertraagd

Tijd niet goed? E-mail te vroeg verzonden? Het uitstellen van e-mails kan in veel situaties nuttig zijn: of u uzelf de tijd geeft om de e-mails te beoordelen of uw eigen werklast effectief te beheren: timing kan van cruciaal belang zijn. Hier zijn drie manieren waarop u het verzenden van e-mails kunt uitstellen en uw eigen communicatie kunt optimaliseren.

.­.­.

Beheer browsers met AI

Browserautomatisering speelt een grote rol op gebieden zoals webscraping, geautomatiseerd testen en interactie met webapplicaties. Tot nu toe wordt hiervoor bijvoorbeeld Puppeteer gebruikt. Met de komst van AI openen zich nu nieuwe mogelijkheden om browserautomatisering intuïtiever en minder onderhoudsintensief te maken - maak het podium vrij voor Stagehand .

.­.­.

Debuggen in PHP met Xdebug

Xdebug is een krachtige tool voor het debuggen en profileren van PHP, waarmee we PHP-applicaties kunnen analyseren en optimaliseren. Het ondersteunt functies zoals stapsgewijze debugging, prestatiemeting en stack tracing, wat het oplossen van problemen aanzienlijk vereenvoudigt en een beter inzicht in de code biedt. Hieronder volgt een korte installatiehandleiding voor het gebruik ervan in VS Code.

.­.­.

Over vloeistoffen

Stel je twee identieke kopjes voor - één gevuld met koffie en het andere met melk, beide op hetzelfde niveau. Een theelepel koffie wordt nu uit het koffiekopje in het melkkopje geschept en geroerd. Een theelepel van het mengsel uit het melkkopje wordt dan terug in het koffiekopje gegoten. Welk kopje bevat dan meer vreemde vloeistof?

.­.­.

Git commit berichten met ChatGPT

Commitberichten in Git worden vaak over het hoofd gezien. Velen beschouwen ze slechts als een noodzakelijk kwaad om wijzigingen op te slaan. Betekenisvolle commitberichten zijn echter cruciaal voor het succes van een project: ze zorgen voor een goede traceerbaarheid van wijzigingen, efficiënte samenwerking binnen het team en snellere bugfixes. Reden genoeg om commitberichten automatisch te laten genereren met behulp van AI.

.­.­.

De rechthoekige februari

Februari neemt soms een ongewoon aantrekkelijke vorm aan op de kalender. Zo zou je in februari 2021 een "perfect rechthoekige februari" kunnen meemaken. Dit zeldzame effect treedt op wanneer februari precies \(28\) dagen telt en 1 februari op een maandag valt. Maar hoe vaak gebeurt dit eigenlijk, en hoe lang moeten we wachten tot de volgende keer?

.­.­.

Verticaal centreren in CSS

CSS is nog steeds verwarrend voor de meesten van ons: het heeft honderden slecht benoemde eigenschappen, die elk het resultaat op onintuïtieve manieren kunnen beïnvloeden. Verticale positionering van elementen in webontwikkeling is lastig en was in het verleden vaak een bron van hoofdpijn, maar die dagen zijn gelukkig voorbij.

.­.­.

animeer hoogte: 0 naar hoogte: auto met CSS

CSS-overgangen zijn een goede manier om interactiviteit te creëren., transition naar de begintoestand van een element en de browser animeert de overgang tussen de twee toestanden. Overgangen voor intrinsieke elementvariabelen zoals auto zijn al tientallen jaren een probleem voor webontwikkelaars en de enige optie was om de hoogte dynamisch te berekenen met JavaScript.

.­.­.

Er is geen geheel getal tussen 0 en 1

Er is geen ¨n in ¨mathbb{Z}^+¨), zodat ¨0 < n < 1¨.

.­.­.

De liftparadox

In 1950 merkten de natuurkundigen George Gamow en Marvin Stern een interessant fenomeen op: Gamow, die een kantoor had op de eerste verdieping van een gebouw met zes verdiepingen, merkte op dat vijf van de zes keer de volgende lift naar beneden ging, ook al ging hij omhoog. Stern, die op de vijfde verdieping werkte, merkte het tegenovergestelde op.

.­.­.

Quine

Een quine programma, of quine, is een programma dat zijn eigen broncode afdrukt wanneer het wordt uitgevoerd. Een quine mag niet "buiten zichzelf treden", bijvoorbeeld door de inhoud van het bestand waarin het staat af te drukken of door introspectieve mogelijkheden te gebruiken om zijn eigen representatie af te drukken. In plaats daarvan moet het zijn eigen broncode berekenen.

.­.­.

Bestandsrotatie met bash script

Krachtige tools zoals logrotate maken het veel eenvoudiger om log- of back-upbestanden te roteren. De bestanden worden geroteerd na een bepaalde periode of wanneer ze een bepaalde grootte bereiken. Als je deze tool niet beschikbaar hebt op een externe server en alleen SSH-commando's op afstand kunt uitvoeren, kun je jezelf helpen met een klein bash-script dat oude bestanden verwijdert en slechts één verzoek verstuurt.

.­.­.

De wet van Benford

In de wereld van getallen komen we vaak verrassende patronen tegen die zowel intrigerend als verhelderend kunnen zijn. Eén zo'n curiositeit is de wet van Benford, ook wel bekend als de wet van het eerste cijfer. Dit wiskundige fenomeen beschrijft de frequentieverdeling van de eerste cijfers in veel datasets uit de echte wereld en biedt interessante inzichten in de aard van getallen zoals die voorkomen in onze omgeving.

.­.­.

Paradoxale kansberekening

Ik heb twee kinderen, een zoon die op een donderdag is geboren. Wat is de kans dat ik een dochter krijg? Laten we de dagen van de week aanduiden met de getallen \(1, 2, … , 7\) waarbij \(1\ =\) maandag, \(2 =\) dinsdag, enzovoort. Nu kunnen we de gebeurtenis "Op dag \(n\) is een jongen geboren" definiëren als \(B_n\) en op analoge wijze voor \(G_n\) .

.­.­.

Het doemsdagargument

Ervan uitgaande dat het aantal mensen dat ooit geboren is en ooit geboren zal worden beperkt is, laat dan \ (x) jouw absolute positie zijn vanaf het begin van de lijst. Dan is \ (0 < \frac{x}{Y} \leq 1. We kunnen nu met een waarschijnlijkheid van \ (95%) zeggen dat je bij de laatste \ (95%) van alle mensen hoort die ooit geboren zijn, dus \ (0.05 < \frac{x}{Y} \leq 1} en dus \ (Y < \frac{x}{0.05} = \frac{100 \dot x}{5} = 20 \dot x}).

.­.­.

Drinker paradox

De volgende zin staat bekend als de "drinkersparadox": "Er is iemand in de kroeg zodat als hij of zij drinkt, iedereen in de kroeg drinkt." Het maakt niet uit of die ene persoon anderen aanmoedigt om te drinken of dat er een andere achterdeur bestaat, zoals we zo meteen zullen zien. Het is een mooi voorbeeld van wiskundige eerste orde logica.

.­.­.

Aantal raden

Een jongen bedenkt een getal dat \(1\) , \(2\) of \(3\) is en een meisje mag dan maar één vraag over dat getal stellen. De jongen kan alleen antwoorden met " Ja ", " Nee ", of " Ik weet het niet" . Door een slimme ondervraging weet het meisje het juiste nummer te noemen waar de jongen aan dacht nadat de jongen haar heeft geantwoord. Wat is je vraag?

.­.­.

Voorwerp zonder oorsprong

Stel je voor dat je op een dag een mysterieus pakket ontvangt, zonder afzender. Nieuwsgierig open je het en vind je een ring, die je aan je dochter geeft. Tientallen jaren later is zij degene die objecten naar het verleden kan sturen met behulp van een wormgat. Ze doet dat met de ring die ze ooit van jou kreeg, verpakt in een pakket geadresseerd aan jou. De vraag is: waar kwam die ring vandaan?

.­.­.

CI met GitHub-acties

Als alternatief voor het veelgeprezen Travis CI is GitHub Actions al enige tijd beschikbaar. Als tool voor continue integratie is het zeer goed geïntegreerd in het GitHub-codeplatform en draait het nu zeer stabiel. GitHub Actions is gebaseerd op YAML-configuratiebestanden die worden opgeslagen in de repository waar de workflow moet worden uitgevoerd.

.­.­.

Steins paradox

In 1961 publiceerden James en Stein het artikel Estimation with Quadratic Loss . Neem normaal verdeelde gegevens met een onbekend gemiddelde \(\mu\) en variantie \(1\) . Als je nu uit deze gegevens een willekeurige waarde \(x\) kiest en op basis daarvan het gemiddelde \(\mu\) moet schatten, is intuïtief \(x\) een redelijke schatting voor \(\mu\) (aangezien er een normale verdeling aanwezig is, ligt de willekeurig gekozen \(x\) waarschijnlijk in de buurt van \(\mu\) ).

.­.­.

UUID's in databases

UUID's (Universeel unieke ID -entifiers) ​​zijn 128-bits waarden die onder andere in databases worden gebruikt om tabelgegevens op unieke wijze te identificeren. Ze worden weergegeven als een hexadecimale reeks verdeeld in vijf groepen gescheiden door koppeltekens (Voorbeeld:: 09fe49b3-4d2b-471c-ac04-36c9e706b85f). Er bestaat talrijk Discussies over de voor- en nadelen van UUID's in databases - ze zijn onmisbaar in gedistribueerde systemen.

.­.­.

Ruim Git-geschiedenis op deel 2

Gevoelige gegevens of te veel geheugengebruik: er zijn goede redenen om de Git-geschiedenis te willen wijzigen. In deze blogpost heb ik uitgelegd hoe je met BFG bestanden uit de Git-geschiedenis kunt opschonen. Een zwak punt van BFG is het gebrek aan ondersteuning voor directe paden , waardoor je niet specifiek bestanden of mappen in submappen uit de geschiedenis kunt verwijderen. Daarmee is het tijd om naar alternatieve oplossingen te kijken.

.­.­.

Geheugenlimiet in WordPress

Kort samengevat: Handmatig ingestelde waarden of de standaardwaarden van WP_MEMORY_LIMIT/WP_MAX_MEMORY_LIMIT geen effect hebben als WP_MEMORY_LIMIT/WP_MAX_MEMORY_LIMIT kleiner dan of gelijk aan de geheugenlimiet van PHP (hierna aangeduid als memory_limit genoemd) is. Ze worden gebruikt om te lage waarden van in te stellen memory_limit dynamisch tot een aanbevolen minimum.

.­.­.

Snelle tip: Iframe wijzigen

Als je een iframe van een derde partij insluit (zoals een widget), heb je geen toegang tot de inhoud ervan met CSS of JavaScript (vanwege het zogenaamde same-origin-beleid ). Er is echter een heel eenvoudige procedure om elke code te wijzigen (ook in andere bestanden die opnieuw worden geladen in het iframe). Om dit te doen, leidt u de URL door uw eigen PHP-proxy en past u de inhoud naar wens aan.

.­.­.

Munten in de ANTON-app

ANTON is een van de meest populaire leer-apps voor studenten in de klassen 1-10. Klas. Op het eerste gezicht lijkt het gamification-aspect van het verwerven van munten ("munten") misschien vreemd voor volwassenen - maar het vergroot merkbaar de motivatie, niet alleen van mijn kinderen. Het bespaart zelfs een klein "kussentje" munten dat u niet aanraakt.

.­.­.

Over de robuustheid van de IBAN

Het Duitse IBAN bestaat uit de landcode (DE), een tweecijferig controlecijfer (volgens ISO 7064 ), de bankcode (8 cijfers) en het rekeningnummer (inclusief subrekeningnummer, 10 cijfers, ontbrekende cijfers aangevuld met voorloopnullen), waardoor het 22 tekens lang is. Om het controlecijfer te berekenen, wordt eerst een reeks gevormd uit het zogenaamde BBAN (bankcode en rekeningnummer), de numerieke landcode \(1314\) voor Duitsland en het controlecijfer \(00\) .

.­.­.

Wiskunde in het spel Dobble

Tijdens onze laatste spelletjesavond met het gezin haalden de kinderen enthousiast het spel Dobble (de Harry Potter-editie) tevoorschijn. Nadat ik vijf rondes had verloren (zonder dat mijn kaart ook maar enigszins overeenkwam met de speelkaart), was ik verbaasd te ontdekken dat elke speler in elke ronde een passende kaart kan vinden. Mijn ongeloof werd echter alleen maar gevolgd door nog meer verloren rondes – de kinderen waren gewoon sneller.

.­.­.

Bitcoin-bloktijd

Je weet wel: de verwachte tijd tussen twee Bitcoin-blokken is gemiddeld \(10\) minuten. Nu doe je een belangrijke Bitcoin-transactie en wacht je gretig af om te zien of en wanneer deze in het volgende blok verschijnt:

e50bfacc95975a4e7545d83d8954645f

.­.­.

Corona wiskunde

In het RKI-weekrapport van 11.11.2021 staat op blz. 22 vermeld dat \(36\%\) de ruim 60-jarige coronapatiënten op de intensive care al volledig gevaccineerd was. In deze leeftijdsgroep waren \(87\%\) op dat moment volledig gevaccineerd (zie p. 18).

.­.­.

Decimale breuken

Eindige decimale getallen worden decimale breuken genoemd, omdat ze een andere representatie zijn voor breuken met machten van tien in de noemer. Zo is:

$$\frac{z}{n} = \frac{q_1}{1} + \frac{q_2}{10} + \dots + \frac{q_k}{10^k}$$

met \(k \in \mathbb{N}\) en \(q_k\) de \(k-1\) -de plaats rechts na de komma.

.­.­.

Snelle tip: verander automatisch de node-versie

Het gebruik van nvm wordt aanbevolen voor snelle installatie en wijziging van knooppuntversies. Als je expliciet de vereiste node-versie in een project wilt specificeren, plaats je een bestand met de naam .nvmrc met het exacte versienummer (bijvoorbeeld "12.10.0") in dezelfde map waarin package.json zich bevindt. Als u nu naar de map gaat, voert de volgende extensie van het bestand ~ / .bash_profile voor bash de opdracht nvm use uit , die deze versie automatisch instelt:

fe497e1c7f9f1547263eb3bffe15f9f6

.­.­.

Gebruik vandaag nog containerquery's

Sinds de opkomst van responsive webdesign vragen ontwikkelaars om de mogelijkheid om DOM-elementen te stylen op basis van hun werkelijke grootte in plaats van de grootte van het browservenster (met behulp van mediaqueries ). Sterker nog, containerqueries (oorspronkelijk elementqueries) zijn waarschijnlijk de meest gevraagde CSS-functie die browsers nog steeds missen .

.­.­.

Git-geschiedenis opschonen

Gevoelige gegevens zoals wachtwoorden moeten worden opgeslagen in .env-bestanden en, indien mogelijk, niet in Git-repositories. Het is ons echter waarschijnlijk allemaal wel eens per ongeluk overkomen: snel een mooi Google Maps JS API-script publiceren op GitHub Gists (als "openbaar") en daarbij onbedoeld vergeten onze eigen privésleutel voor de Maps API te verbergen.

.­.­.

Knip SVG's uit afbeeldingen met clip-path

Als je een afbeelding wilt uitsnijden met behulp van een SVG-bestand, is het aan te raden de CSS-eigenschap `clip-path` te gebruiken. Het volgende script neemt een aantal obstakels weg: SVG's kunnen worden opgeslagen met Illustrator, je kunt de (relatieve of absolute) URL van een SVG opgeven (Chrome ondersteunt momenteel alleen inline SVG's), en de uitsnijding is bovendien volledig responsief.

.­.­.

Snelle tip: WP_Query & velden met meerdere regels

Met behulp van het `meta_query`- attribuut in de krachtige WordPress-klasse `WP_Query` kunt u berichten filteren die specifieke waarden in hun meta-velden bevatten. Als u een meta-veld met meerdere regels hebt aangemaakt (bijvoorbeeld met behulp van Advanced Custom Fields ) en alleen berichten wilt vinden die een specifieke waarde in dit door regels gescheiden veld bevatten, is de REGEX-wereld van MySQL aan te raden.

.­.­.

Integreer native Adobe Animate-animaties

In een eerder artikel beschreef ik hoe je eenvoudig animaties van Adobe Animate in een website kunt integreren met behulp van een APNG-export. Er is ook de native methode via HTML5 Canvas-export , maar iedereen die daarmee heeft gewerkt, weet dat die vol problemen zit (onvoldoende responsieve ondersteuning, omslachtige integratie in bestaande websites, geen verschillende framesnelheden voor elke animatie, enz.). De adobe-animate-embed- bibliotheek biedt een oplossing.

.­.­.

Google Maps zonder API-sleutel

Normaal gesproken werk je bij het integreren van Google Maps met de Maps JavaScript API , waarvoor een API-sleutel nodig is en bij hogere toegangsnummers kosten kunnen ontstaan ​​die niet mogen worden onderschat. Er zijn geweldige alternatieven zoals mapbox of OpenStreetMap , maar die bieden nog niet de verscheidenheid aan functies die Google biedt. Google biedt zelf ook een manier aan zonder API-sleutel via de deelfunctie, die we voor onze doeleinden kunnen gebruiken.

.­.­.

Adobe Animate APNG-export

Browserondersteuning voor geanimeerde PNG-bestanden is nu zo geavanceerd dat animaties gemaakt met Animate CC eenvoudig als APNG kunnen worden geëxporteerd en vervolgens in een webpagina kunnen worden ingesloten met een simpele `<img>`-tag. Dit biedt een eenvoudig en kwalitatief alternatief voor de publicatiemethode in Animate CC, die JavaScript genereert. De benodigde stappen worden hieronder beschreven.

.­.­.

Vouw WordPress zoeken uit

Als je de standaard WordPress-zoekfunctie wilt uitbreiden met bijvoorbeeld meta-velden, is het raadzaam om de gebruikte filters te bekijken. Om ervoor te zorgen dat paginering blijft werken en dat toekomstige verbeteringen aan de zoekfunctie niet in gevaar komen, wordt de `posts_search`- hook aanbevolen. De volgende code, die gebruikmaakt van de functies REGEXP en ExtractValue , breidt deze zoekopdracht uit naar berichten die een van de ingevoerde zoektermen in alle meta-velden bevatten.

.­.­.

Berekening van de SISTRIX-zichtbaarheidsindex

Samen met Xovi is de SISTRIX- tool het meest gebruikte analyseprogramma in Duitsland op het gebied van SEO. De zichtbaarheidsindex heeft zichzelf gevestigd als een quasi-standaard voor de zichtbaarheid van een pagina in Google Zoeken. De parameters die in de berekening worden meegenomen, worden bijvoorbeeld hier en hier en hier en hier en hier uitgelegd, maar een exacte berekeningsformule wordt officieel niet gepubliceerd. De volgende zijn de resultaten van mijn persoonlijke onderzoek van zes maanden, die niet beweren volledig of correct te zijn.

.­.­.

Godels meesterwerk

Toen Kurt Gödel in 1931 zijn beroemde Incompleteness Theorems publiceerde, schudde dat de grondslagen van de wiskundige logica: hij weerlegde dat alle axioma's die als mogelijke basis kunnen worden opgezet onvermijdelijk onvolledig zijn om alle uitspraken over getallen te bewijzen - en vernietigde dat Hilbert's droom om de consistentie van wiskundige theorie te bewijzen.

.­.­.

Gebruik WhatsApp via API

Ondanks alle zorgen over gegevensprivacy blijft WhatsApp de populairste berichtenapp in Duitsland. Naast de speciale WhatsApp Business-app heeft Facebook ook een officiële interface ontwikkeld, de WhatsApp Business API, om de app aantrekkelijker te maken voor bedrijven. Als je echter programmatisch WhatsApp-berichten wilt versturen vanuit je webapplicatie, zijn er andere opties beschikbaar.

.­.­.

Vervaag de pagina achter de overlay met CSS

Als je elementen zoals overlays gebruikt (wat de regel is in tijden van GDPR-actionisme) en bijvoorbeeld het gebied achter de overlay wilt verzachten, kom je vaak het probleem van de stapelcontext tegen . Als u bijvoorbeeld elementen absoluut of in een vaste positie heeft gepositioneerd, worden ze ineens anders weergegeven dan zonder filter. Maar er is een remedie.

.­.­.

Snelle tip: splitstests met Apache

Voor eenvoudige URL-splittests heb je geen krachtige tool zoals Google Optimize nodig; je kunt ook een splittest uitvoeren met Apache via .htaccess. Het volgende codefragment verdeelt bezoekers van de twee pagina's https://vielhuber.de/test1.php (Variant 1) en https://vielhuber.de/test2.php (Variant 2) gelijkmatig over beide versies. De randomisatie is gebaseerd op de huidige servertijd.

.­.­.

Over de notatie van vertakte functies

Accolades worden gebruikt in de notatie van functiedefinities met onderscheid tussen hoofdletters en kleine letters. We zoeken de simpele vraag of deze representatie ook kan worden geëlimineerd en de functie kan worden teruggebracht tot een notatie die het zonder kan. Bijvoorbeeld de functie

$$f: \mathbb{R} \to \mathbb{R}, f(x) = \left\{\begin{matrix} 42, & \text{falls } x = 0 \\ x, & \text{sonst} \end{matrix}\right.$$

met behulp van de vier rekenkundige basisbewerkingen met een term van één regel?

.­.­.

Datumreeks in Google Spreadsheets

Bij het visualiseren van gegevens in Google Spreadsheets stuit men op het probleem dat de \(x\) -as voor tekstwaarden (zoals kalenderweken) de ontbrekende hiaten niet automatisch kan opvullen. Om het probleem op te lossen, genereert men een doorlopende reeks datums, telt de cellen die voorkomen en visualiseert vervolgens de cumulatieve sommen.

.­.­.

Snelle tip: PHP clearstatcache

Zoek de fout:

72aaa2dbd201d49fc2ee429ebf68f15b

.­.­.

Google-vertaal-API Hacking

Als onderdeel van de Google Cloud biedt Google de Google Translation API met een op gebruik gebaseerde kostenstructuur . Er is ook een niet- gedocumenteerde API die zonder sleutel kan worden gebruikt, maar die weigert te werken na slechts een paar verzoeken. Bij gebruik van de websitevertaalfunctie van Google Chrome valt op dat pagina's zonder merkbare beperking in zeer goede kwaliteit kunnen worden vertaald.

.­.­.

Snelle tip: Git autotagging

Bij het koppelen van GitHub aan Composer is het toewijzen van een versienummer via `git tag` verplicht. De volgende opdrachtregel bepaalt de huidige tag en verhoogt deze (volgens SemVer ) met één versienummer. Versie 1.1.0 volgt bijvoorbeeld op 1.0.9. Als er geen tag is toegewezen, wordt de versie automatisch getagd met 1.0.0. Tools zoals flimsy of ` git hooks` verkorten dit tijdrovende tagproces.

8cd852c96ec1e60e8a5ac1f3614b2397

.­.­.

Bewerk MySQL-trigger

Helaas biedt MySQL geen ALTER TRIGGER-functie. Om een bestaande trigger te bewerken, moet u deze eerst verwijderen en vervolgens opnieuw genereren. De CREATE TRIGGER-instructie kan indirect worden benaderd via de information_schema . Dit stelt ons in staat triggers indirect te wijzigen. Om dit te doen, brengt u uw wijzigingen aan in het resultaat van de volgende SELECT-opdracht (nadat u de database- en triggernamen hebt gewijzigd) en voert u de query uit.

.­.­.

Activeer wijzigingsgebeurtenissen in VanillaJS

VanillaJS staat sinds ES6 op bijna alle gebieden op één lijn met de veteraan jQuery en is nu veel beter. Het loont dus om de verouderde code geleidelijk uit jQuery te migreren. U moet echter voorzichtig zijn bij het activeren van handmatige wijzigingsgebeurtenissen. Document.addEventListener wordt bijvoorbeeld niet geactiveerd op jQuery.change () . Het volgende overzicht geeft een overzicht van de bijzondere kenmerken.

.­.­.

Beheer cookies met PHP en JS

Het plaatsen van cookies door aangepaste of externe scripts kan nauwkeurig worden beheerd met behulp van zowel PHP als JavaScript. Hoewel dit geen afdoende oplossing is voor het implementeren van cookieoplossingen na de rechterlijke uitspraak tegen Planet49 (waarbij het cruciaal is dat trackingtools zoals Google Analytics überhaupt geen gegevens verzamelen en dus geen cookies plaatsen), kan het nuttig zijn om cookies in het algemeen op een witte of zwarte lijst te plaatsen.

.­.­.

Deactiveer apparaten via script in Windows

Om elektriciteit te besparen of uw eigen bewakingsparanoia te verminderen, is het raadzaam om apparaten die niet in gebruik zijn op uw eigen computer volledig los te koppelen. Apparaten zoals klankkasten of webcams kunnen op de klassieke manier worden gedeactiveerd / geactiveerd via de apparaatbeheerder. Het hele ding werkt ook via script. De standaardmanier om dit te doen was devcon . Windows 10 biedt nu een gemakkelijkere manier om dit te doen via PowerShell .

.­.­.

Skype-achtergrondvervaging

Skype heeft een leuke, ietwat verborgen functie: in het geval van video-uitzendingen kan de achtergrond automatisch vervagen door op de videoknop te klikken en de functie " Mijn achtergrond vervagen " te gebruiken. Met behulp van kunstmatige intelligentie werkt dit met elke camera, zelfs zonder diepte-informatie. Het geheel ziet er dan professioneler uit en verbergt privé- of onbelangrijke zaken op de achtergrond.

.­.­.

OPcache PHP opstartoptimalisatie

Voor websites die zijn gebaseerd op bijvoorbeeld WordPress , Joomla of Laravel en geen gebruikersspecifieke inhoud hebben, is het raadzaam om alle pagina's in een statische HTML-cache te houden en de cache alleen handmatig (of automatisch) opnieuw te genereren wanneer er wijzigingen in de backend worden aangebracht. Als de pagina echter dynamische inhoud bevat die afhankelijk is van sessies en cookies of ook van taal en locatie, is OPcache geschikt .

.­.­.

SVG-export vanuit Illustrator

SVG's spelen een centrale rol op het internet van vandaag. Ze hebben niet alleen pictogramlettertypen vervangen, maar bieden ook de mogelijkheid tot manipulatie via CSS of JavaScript. Als u een vectorafbeelding voor het web van Adobe Illustrator als SVG wilt opslaan, moet u enkele instellingen maken om valkuilen te vermijden en laadtijden te verkorten, die ik in het volgende artikel zal presenteren.

.­.­.

Project Euler: Lattice-paden

Project Euler is een reeks boeiende programmeerproblemen, vaak met een wiskundige achtergrond. De problemen zijn vaak zo ontworpen dat er geavanceerde algoritmen ontwikkeld moeten worden om het doel binnen een redelijke tijd te bereiken. Vandaag lossen we probleem 15 op: Roosterpaden , dat opgelost kan worden met behulp van eenvoudige combinatorische methoden.

.­.­.

Automatische WordPress-updates

Sinds versie 3.7 heeft WordPress ingebouwde achtergrondupdates en schakelt deze automatisch in voor kleine releases. Met filters kunt u nauwkeuriger bepalen wat er automatisch wordt bijgewerkt. Een permanente, volledig geautomatiseerde installatie van alle kleine, grote, plugin-, thema- en vertaalupdates wordt niet ondersteund, maar kan eenvoudig op andere manieren worden gerealiseerd.

.­.­.

Google Spreadsheets: formules uitbreiden

Om formules uit te breiden naar hele kolommen in Google Spreadsheets, raden we aan de handige ARRAYFORMULA- functie te gebruiken. Helaas werkt dit niet in combinatie met enkele andere belangrijke functies zoals QUERY of INDIRECT , daarom is er een volledige individuele programmering van de logica met behulp van Google Apps Script of, als alternatief, handmatig kopiëren van de formule tot op de laatste regel.

.­.­.

De Simpson-paradox

De paradox van de Simpson is een van de gemakkelijk te begrijpen en tegelijkertijd verbazingwekkende fenomenen in de statistiek. Het treedt op wanneer groepen gegevens een bepaalde trend laten zien, maar die trend wordt omgekeerd wanneer de groepen worden gecombineerd. Met behulp van een eenvoudig voorbeeld kan de paradox onmiddellijk worden begrepen.

.­.­.

Snelle tip: Google Tag Manager

De Google Tag Manager heeft zichzelf bewezen als de de facto standaard voor de integratie van trackingscripts. Op deze manier worden enerzijds de verantwoordelijkheden (online marketing vs. programmeren) netjes gescheiden en anderzijds kun je via een bijkomend inzetkanaal snel tracking opzetten en aanpassen. Hier zijn twee kleine tips voor het instellen van triggers.

.­.­.

Snelle tip: FRITZ! Box WLAN-hotspot

Vanaf FRITZ! OS 07.10 kan de FRITZ! Box bij uitval van internet tijdelijk de draadloze hotspot van een mobiele telefoon als fallback gebruiken. De functie is verborgen onder Internet> Toegangsgegevens> Internetprovider> Bestaande toegang via WLAN . De FRITZ! Box werkt dan zelf als router en stelt een netwerk met een eigen adresbereik ter beschikking. Als het internet weer beschikbaar is, reset je eenvoudig de instelling. Ik moest ook de opties WLAN> Radionetwerk> 2,4 GHz-frequentieband actief en Internet> Toegangsgegevens > IPv6> IPv6-ondersteuning actief aanvinken.

.­.­.

Bloem van het leven

De Levensbloem is een bekend, bloemachtig, geometrisch patroon dat al duizenden jaren voorkomt in tempels, manuscripten en, meer recentelijk, in de populaire cultuur. Het patroon speelt ook een rol in de esoterie. We zullen dat hier echter buiten beschouwing laten en ons concentreren op de eenvoudige constructie van de geometrische vorm, die bestaat uit verschillende gelijkmatig verdeelde, overlappende cirkels.

.­.­.

E-mailvertraging in Outlook

Ondanks alle onheilsprofetieën rond Slack en Discord, is het asynchrone communicatiemedium e-mail het dominante communicatiemedium in het bedrijfsleven wereldwijd. Naast Inbox Zero van Merlin Mann zijn er tal van andere strategieën om met de dagelijkse stroom aan e-mails om te gaan, waaronder zogenaamde e-mailvertraging, d.w.z. de vertraagde bezorging van e-mails.

.­.­.

Een spiraal van cijfers

De afgelopen dagen heb ik de volgende vraag op StackExchange over een spiraal van gehele getallen bestudeerd . We zoeken een gesloten formule voor de coördinaten van het \(n\) -de element in de volgende integer-spiraal, die zich uitbreidt van de oorsprong naar buiten en steeds verder in het oneindige:

..  9 10 11 12
23  8  1  2 13
22  7  0  3 14
21  6  5  4 15
20 19 18 17 16
.­.­.

Leesrechten in Google Spreadsheets

Bij het werken met Google Sheets kun je gedetailleerde, gebruikersspecifieke regels definiëren voor het bewerken van werkbladen, kolommen en rijen binnen een spreadsheet. Helaas is er geen manier om leesrechten te beperken. Dit zou in veel situaties erg handig zijn, bijvoorbeeld om je klanten alleen de tickets te tonen die voor hen relevant zijn, of je medewerkers alleen de projecten waaraan ze werken.

.­.­.

Garen plug'n'play

npm is de standaard pakketbeheerder voor Node.js. Facebook ontwikkelt echter al enige tijd een alternatieve pakketbeheeroplossing genaamd Yarn . Yarn lijkt langzaam te verdwijnen uit de README van GitHub als standaardoplossing, en de statistieken op de officiële website laten zien dat slechts een fractie van de pakketinstallaties met Yarn wordt uitgevoerd. Desondanks is het de moeite waard om verder te kijken dan de voor de hand liggende mogelijkheden.

.­.­.

Converteer PDF naar LaTeX


Het zetsysteem \(\TeX\) werd in 1977 ontwikkeld door de legendarische Donald E. Knuth . Het softwarepakket \(\LaTeX\) maakt nog steeds deel uit van het standaardrepertoire bij het maken van wetenschappelijke artikelen. Met de volgende twee tools kunnen reeds gegenereerde pdf's en handgeschreven notities volledig automatisch worden omgezet in TeX. De resultaten zijn veelbelovend.

.­.­.

Het simulatie-argument

Het simulatieargument van Nick Bostrom is indrukwekkend eenvoudig en duidelijk. Het probeert niet te bewijzen dat we in een simulatie leven, maar formuleert in plaats daarvan op elegante wijze drie mogelijkheden, waarvan er één waar moet zijn. Elon Musk pleit ook voor een soortgelijk proefschrift, waardoor het idee bij een breed publiek bekend werd. De officiële krant is meer dan 14 jaar oud en evenveel pagina's zijn kort. De centrale verklaring is gemakkelijk te begrijpen en compact.

.­.­.

Kritieke bug bij gebruik van WPML + ACF

De krachtige WPML- plug-ins voor meertaligheid en Advanced Custom Fields voor uw eigen velden zijn standaarduitrusting in veel installaties. Vervelend is het wanneer storingen en gegevensverlies in combinatie voorkomen. De bugrapporten over dit onderwerp zijn een paar jaar oud en onbeantwoord ( hier en hier en hier en hier en hier ). Ik heb zojuist het probleem nader bekeken.

.­.­.

Upload bestanden in de Facebook In App Browser

Op sommige Android-telefoons functioneren de ingebouwde browsers van Facebook en Instagram (vanaf vandaag) niet goed wanneer een uploadveld op een gepromote of gekoppelde landingspagina het attribuut "accept" heeft. Hierdoor werkt de knop niet. Het openen van de pagina in een gewone, externe browser buiten de Facebook-app lost het probleem op. Dit is frustrerend (vooral omdat het probleem al langer bekend is ), maar er is een tijdelijke oplossing beschikbaar.

.­.­.

Chrome Devtools: verplaats DOM-elementen

De ontwikkelaarstools van Google Chrome behoren tot de krachtigste op de browsermarkt. Er worden maandelijks nieuwe functies toegevoegd, die Google in een beknopte vorm presenteert op YouTube . Maar vaak zijn het de kleine dingen in het leven die vreugde brengen. Als je DOM-elementen in Google Chrome wilt verwijderen, kun je dat doen met de Delete-toets. Maar pas vandaag realiseerde ik me dat je DOM-elementen ook gewoon kunt verplaatsen door ze te slepen.:

.­.­.

Snelle tip: git status --r

Een gouden regel in het git-universum is: "Commit vroeg en vaak". Als de nacht wat langer was, of als je gewoon een overzicht van de huidige situatie op je eigen computer wilt, dan brengt het commando je

d8a38f92d0baa14f9d4568826c13ad46

een "git status" voor alle repositories die in de huidige map of in een submap staan ​​en verzamelt de waarden in een mooi overzicht:

.­.­.

LAMP-stack in het Windows-subsysteem voor Linux

Bij het zoeken naar de optimale ontwikkelomgeving biedt Windows 10 naast complete oplossingen zoals XAMPP , WAMP en MAMP , en handmatige native installaties , ook een scala aan opties, evenals virtualisatieoplossingen zoals Vagrant ( ScotchBox ) en Docker ( DevilBox , Laradock ). Echter, geen van deze oplossingen voldeed aan mijn eisen – zoals vrije configureerbaarheid, echte wildcard SSL-certificaten, toegang vanaf alle apparaten in het lokale netwerk en hoge stabiliteit en prestaties – op één na.

.­.­.

Trucs voor Laravel Eloquent Relationships

Een van Laravel's sterke punten is de elegante syntaxis. Als je veel modellen en relaties in Laravel hebt (vanwege veel tabellen in de database), kan traversing vaak eindigen in minder elegante code. In de loop van de tijd hebben zich voor mij drie kleine uitbreidingen bewezen, die ik hieronder kort wil introduceren. We gebruiken alleen wat overerving, magische methoden en aangepaste verzamelingen.

.­.­.

Voorkom openbare toegang tot .git

Git -versiebeheer is tegenwoordig standaard in vrijwel elk webproject en elke webomgeving (inclusief productie). Git maakt altijd een subdirectory aan met de naam `.git` , en als deze zich op hetzelfde niveau bevindt als de publieke directory van de website, kunnen gevoelige bestanden publiekelijk worden benaderd (bijvoorbeeld door `/.git/logs /HEAD` te openen, worden de meest recente commits weergegeven). Deze handleiding legt gedetailleerd uit hoe je een andere Git-repository kunt klonen, zelfs zonder een directorylijst.

.­.­.

Node.js / npm / Composer zonder root

In een oudere blogpost heb ik beschreven hoe je Node.js gratis kunt hosten met Heroku . Nu zal ik je een manier laten zien hoe je Node.js , npm en Composer op elke andere gedeelde host kunt installeren zonder rootrechten met een paar regels code. Hiermee kunt u pakketten installeren, Vue.js-applicaties implementeren of gewoon een Express.js-server starten. We werken altijd in de gebruikersdirectory en gebruiken nvm - de Node Package Manager.

.­.­.

Bug in associatieve arrays in PHP <7.2

In PHP <7.2 kun je arrays maken die niet meer goed toegankelijk zijn:

91367d1c4636fd753b381406024e303c

Je kunt er wat dingen mee doen.

.­.­.

Voer opdrachten uit direct na SSH-verbinding

Het volgende commando legt een SSH-verbinding met een server tot stand, voert verschillende commando's uit (bijvoorbeeld het wisselen naar een subdirectory en het uitvoeren van `git status` ) en laat de shell open. Dit laadt het `.bashrc`-bestand, waarmee gekleurde subshells mogelijk worden. De truc is om een tijdelijk bestand `/tmp/initfile` op te slaan met de gewenste commando's en een subshell (in ons geval `bash`) te starten met het commando `--init-file`. Binnen dit `initfile`-bestand wordt hetzelfde bestand direct verwijderd om geen sporen achter te laten.

.­.­.

Netwerkstation als beheerder

Wanneer u een netwerkstation toewijst in Windows Verkenner, geldt dit niet voor het hele systeem, maar alleen voor het huidige gebruikersaccount. Dit betekent dat een toepassing die met beheerdersrechten wordt uitgevoerd, geen toegang heeft tot dit netwerkstation. U kunt dit eenvoudig wijzigen: maak een nieuwe DWORD-waarde (32-bits) met de naam EnableLinkedConnections en de waarde 1 aan in het register onder HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System en herstart uw computer. Daarna zijn toegewezen netwerkstations overal zichtbaar.

.­.­.

Snelle tip: voeg een map toe als station

Als u snel een lokale map onder Windows wilt bereiken die u keer op keer gebruikt, kunt u hier eenvoudig uw eigen stationsletter aan toewijzen. Er is alleen een omweg via "Connect network drive" omdat je bijvoorbeeld niet het pad C: \ Users \ David \ Downloads kunt specificeren. Voer als oplossing het zogenaamde administratieve deel van de schijf in, dat standaard voor elke map bestaat: In het bovenstaande voorbeeld zou dit \\ localhost \ c $ \ Users \ David \ Downloads zijn .

.­.­.

Vang kikkers

Een kikker springt rond op een getallenlijn en het doel is om hem te vangen. Springen en vangen wisselen elkaar af. De kikker begint op positie \(s \in \mathbb{Z}\) en springt bij elke beweging een afstand van \(z \in \mathbb{Z}\) (als \(z>0\) , springt hij naar rechts; anders naar links). \(z\) is bij elke sprong hetzelfde. Om de kikker te vangen, moet een integerpositie worden opgegeven. Noch \(z\) noch \(s\) is bekend. We zullen aantonen dat er een procedure bestaat waarmee we de kikker altijd kunnen vangen.

.­.­.

Lange bestandsnamen op Windows 10

Niet alleen bij het gebruik van npm onder Windows stuit men op een bijna 30 jaar oude beperking die paden naar mappen en bestanden beperkt tot maximaal 255 tekens. Dit komt niet door NTFS, maar door LFN . Dit leidt tot vervelende bugs en incompatibiliteit tussen besturingssystemen. In het WSL- tijdperk is dit een betreurenswaardige situatie, die gelukkig nu in het register kan worden verholpen.

.­.­.

Laravel wachtrijen op localhost

In het PHP-framework Laravel zorgen workers zoals de supervisor ervoor dat taken die bijvoorbeeld in Redis zijn opgeslagen, in productieomgevingen worden uitgevoerd. Als je hier op localhost volledig onafhankelijk van wilt zijn, kun je de sync- driver gebruiken om taken direct uit te voeren. Dit heeft echter als nadeel dat het huidige PHP-proces wordt geblokkeerd en het verzoek blijft hangen totdat de taak is voltooid.

.­.­.

Snelle tip: bundel doelen in Google Analytics

Met behulp van de JavaScript-bibliotheek analytics.js van Google Analytics kunnen alle gebeurtenissen op websites worden bijgehouden. Deze gebeurtenissen omvatten bijvoorbeeld nauwkeurige metingen van de verblijftijd, de maximale scrolldiepte van bezoekers of andere individuele acties zoals het invullen van formulieren. Als u later advertentiecampagnes wilt evalueren of A/B-tests wilt uitvoeren, maakt u zogenaamde doelen aan.

.­.­.

Pragmatische cache-ongeldigverklaring

Server-side rendering is tegenwoordig standaard voor websites en applicaties. Browsers zoals Google Chrome proberen ook zoveel mogelijk te cachen om de laadtijden voor volgende verzoeken te minimaliseren. Het ongeldig maken van de cache voor CSS-, JS- en afbeeldingsbestanden kan worden bereikt met behulp van `mod_pagespeed` , de `Expires` / `Cache`-controlheader , een cachemanifest of, pragmatischer en directer, door aangepaste parameters aan de bestandsnaam toe te voegen.

.­.­.

Bitbucket- en SSH-sleutels

De provider Bitbucket biedt niet (zelfs niet in de betaalde Standard- en Premium- tarieven ) de mogelijkheid om SSH-sleutels met schrijfrechten op repository-niveau op te slaan. Het opslaan van uw persoonlijke SSH-sleutel op de productieserver is geen optie, anders heeft u van daaruit toegang tot alle andere projecten waar u momenteel aan werkt. Er zijn zogenaamde toegangssleutels , maar deze geven alleen leesrechten.

.­.­.

Windows Sysinternals via netwerkstation

De Sysinternals- tools van Mark Russinovich zijn essentieel voor elke Windows-computer. Om altijd de nieuwste versie bij de hand te hebben, kunt u deze als netwerkstation koppelen. Voer hiervoor eenvoudigweg de opdracht `net use s: \\live.sysinternals.com\DavWWWRoot` uit in de opdrachtregel (als gewone gebruiker). Dit biedt u vervolgens draagbare toegang tot handige tools zoals PsList, PsKill en Process Explorer op station S.

.­.­.

Snelle tip: Google-spreadsheets en kalenderweken

Bij het uitvoeren van kalenderweken op een bepaalde datum moet je opletten in Google Sheets (net als in Microsoft Excel). De functie = CALENDAR WEEK (TODAY ()) rekent met de Amerikaanse standaard, waarbij de eerste dag van het jaar altijd aan kalenderweek 1 wordt toegewezen. In Duitsland wordt dit anders gedefinieerd : hier is de eerste kalenderweek de week waarvan minimaal 4 dagen in het nieuwe jaar vallen. In Google Spreadsheets kun je het probleem oplossen (samen met andere spannende alternatieven zoals = SHORTEN ((TODAY () - DATE (YEAR (TODAY () - REST (TODAY () - 2; 7) +3); 1; REST (TODAY ( ) -2; 7) -9)) / 7) en de gewijzigde = CALENDAR WEEK (TODAY (); 21) ) eenvoudig met de speciaal ontworpen functie = ISOWEEKNUM (TODAY ()) .

.­.­.

Zelfondertekende SSL-certificaten in Chrome 58

Sinds Let's Encrypt zijn versleutelde websites de standaard geworden. SSL-certificaten zijn ook vrijwel onmisbaar bij lokale ontwikkeling ( navigator.geolocation vereist bijvoorbeeld lokale SSL-versleuteling). Sinds Chrome versie 58 is de ondersteuning voor CN (Common Name) komen te vervallen en is SAN (Subject Alternative Name) verplicht. Hierdoor accepteert Chrome geen SSL-certificaten meer die op traditionele wijze zijn aangemaakt.

.­.­.

Tweemaal de leeftijd van twee personen

Beschouw twee mensen \(A\) en \(B\) die niet op dezelfde dag geboren zijn en \(A\) jonger dan \(B\) . Show: Er zijn precies twee leeftijdsopstellingen \(a,b \in \mathbb{N}\) , waarvoor geldt: \(2\cdot a = b\) . We stellen eerst \(d \in \mathbb{R}^+\) als het leeftijdsverschil tussen \(A\) en \(B\) bij de geboorte van \(A\) met \( d = d_0 + d_1 \) , \( d_0 \in \mathbb{N}_0, d_1 \in \mathbb{R}, d_1 \in [0;1[\) . We beschouwen nu een willekeurig tijdstip \(x \in \mathbb{R}^+\) na de geboorte van \(A\) met \(x = x_0 + x_1\) , \(x_0 \in \mathbb{N}_0, x_1 \in \mathbb{R}, x_1 \in [0;1[\) .

.­.­.

Git en lege mappen

Aangezien Git geen mappen kent, alleen bestanden, komen lege mapstructuren niet in de repository terecht. Omdat veel kaders en projecten ze echter absoluut nodig hebben, zouden ze daar moeten eindigen. Een gangbare praktijk is het maken van zogenaamde placeholder-bestanden (vaak .gitkeep genoemd), die impliciet de mapstructuur specificeren. Deze bestanden zijn eenvoudig aan te maken en zorgen er desgewenst ook voor dat andere bestanden in de mappen worden genegeerd.

.­.­.

Gratis Node.js-hosting bij Heroku

Hosting voor Node.js is nog steeds niet erg wijdverbreid, vooral in Duitstalige landen. Het Amerikaanse cloudbedrijf Heroku biedt hier een oplossing - en zelfs gratis . Je merkt altijd het paradigma "Apps bouwen ... geen infrastructuur" en kent nog steeds nauwelijks beperkingen. Als voorbeeld implementeren we een kleine cron-taak op basis van PhantomJS , die elke dag een website schrapt en de paginatitel per e-mail verstuurt.

.­.­.

De koppelingsfunctie van Cantor

Naast de diagonale argumenten ontwikkelde Georg Cantor ook de Cantor-koppelingsfunctie \(\mathbb{N}^2 \to \mathbb{W}, \quad c(x,y) = \binom{x+y+1}{2}+x = z\) , dat twee willekeurige getallen \(x,y \in \mathbb{N}\) codeert in een nieuw getal \(z \in \mathbb{N}\) . Bijvoorbeeld: \(c(3,4)=\binom{3+4+1}{2}+3 = \binom{8}{2}+3=\frac{8!}{6!\cdot 2!} +3 = 31 = z\) een unieke codering van de cijfers \(3\) en \(4\) in het getal \(31\) . Weergeven: de reeks waarden \(\mathbb{W} = \mathbb{N}\) , dwz \(z\) veronderstelt alle natuurlijke getallen.

.­.­.

De aarde en de erwt

\(r_1 = 6370km\) naar de aarde (als bol met \(r_1 = 6370km\) ) en een erwt (als bol met \(r_2 = 2mm\) ) en \(r_2 = 2mm\) een touw over de evenaar zodat het strak op het oppervlak ligt. Nu verleng je beide touwen met elk een meter. Beide touwen zouden nu weer volledig uitgestrekt over de evenaar moeten liggen - ze liggen niet langer volledig op het oppervlak, maar zweven boven de evenaar. Hoe hoog boven het oppervlak zweeft het touw boven de aarde, hoe hoog boven de erwt?

.­.­.

Waarschijnlijkheden op de analoge klok

In welk percentage van de tijd van een dag bevinden alle drie de wijzers van een analoge klok zich in de rechter helft van de wijzerplaat? Kijk eerst naar de uurwijzer, die elke 12 of 24 uur aan de rechterkant staat (50%). Vanaf dit moment staat de minutenwijzer over 6 van 12 uur (25%) aan de rechterkant. Van deze 6 uur staat de secondewijzer 3 uur aan de rechterkant (12,5%).

.­.­.

Laravel: Werken met welsprekende relaties

Laravel maakt de communicatie met de database een stuk eenvoudiger met Eloquent. Wanneer u met Welsprekende relaties werkt en dynamische variabelen aanroept (met behulp van de magische methoden van PHP), moet u zich ervan bewust zijn dat de instanties van de modellen geen nieuwe wijzigingen weerspiegelen, maar permanent worden opgeslagen wanneer ze voor het eerst worden aangeroepen.

.­.­.

Bitbucket: map verwijderen uit Git-geschiedenis

Bij het hosten van Git op Bitbucket, is er een harde limiet van 2 GB - als dit wordt overschreden, heb je alleen-lezen toegang tot de repository. Om dit te voorkomen kun je bijvoorbeeld met terugwerkende kracht grote mappen of bestanden uit je commits verwijderen. Maar ook in andere gevallen (als toegangsgegevens in de geschiedenis zijn gekomen of node_modules zijn teruggegleden naar de master), moet je de geschiedenis van Git achteraf manipuleren, in tegenstelling tot zijn aard.

.­.­.

Integreer SSL-certificaat van DomainFactory op IIS

In het tijdperk van Let's Encrypt zijn versleutelde websites de standaard geworden. Vaak zijn echter ook wildcard- of uitgebreide certificaten met een bijzonder betrouwbare eigenaarsvalidatie vereist. DomainFactory biedt kosteneffectieve SSL-certificaten die ook extern gebruikt kunnen worden. Installatie op een bestaande IIS-server is mogelijk zonder CSR met behulp van OpenSSL . Hieronder beschrijf ik kort de benodigde stappen.

.­.­.

Paradoxale winnende strategie bij het raden van getallen

Thomas M. Cover stelde in 1987 de volgende verbazingwekkende vraag in "Open problemen in communicatie en computergebruik": Speler \(X\) schrijft twee verschillende en willekeurig gekozen natuurlijke getallen \(A\) en \(B\) naar twee verschillende Stuk papier en leg het met de afbeelding naar beneden op een tafel. Speler \(Y\) selecteert nu willekeurig een van deze stukjes papier, ziet het nummer en moet nu beslissen of dit nummer kleiner of groter is dan het andere nummer dat nog steeds met de afbeelding naar beneden op tafel ligt.

.­.­.

Voetbal en lineaire algebra

Wanneer een voetbalwedstrijd begint, ligt de bal in het midden van het veld en wordt vervolgens gedurende 45 minuten over het veld verplaatst door te verschuiven en te draaien. Aan het begin van de tweede helft staat de bal weer in het midden van het veld. We laten met eenvoudige middelen van lineaire algebra zien dat óf een oneindig aantal punten op het oppervlak zich altijd op exact dezelfde positie bevindt als in de oorspronkelijke staat, óf precies 2.

.­.­.

Laravel: foutopsporing in Blade Template

Bij het debuggen van Blade-templates in Laravel 5.* krijg je vaak onduidelijke foutmeldingen die verwijzen naar gecachede views. Vroeger was dat beter: de debug-weergave in versie 4 bood meer nuttige functies en was bovendien visueel aantrekkelijk. Met slechts een paar regels code kun je deze functionaliteit herstellen met behulp van whoops ("PHP-fouten voor coole kids").

.­.­.

Harmonische weergave van logo's met JavaScript

Of het nu gaat om referenties, partners of klanten - er zijn veel gevallen waarin u meerdere logo's harmonieus naast elkaar wilt weergeven. De verhoudingen van de logo's zijn meestal inconsistent. Vaak volg je je onderbuikgevoel voor de maatweergave in het ontwerp, maar er is ook een exacte berekeningsmethode voor een visueel aantrekkelijke weergave door de gebieden van de logo's gelijk te stellen. In het volgende voorbeeld kunt u dit doen met slechts een paar regels JavaScript.

.­.­.

Controleer variabelen in PHP / JS op bestaan

Wanneer je dagelijks met variabelen in PHP en JavaScript werkt, kom je vaak de vraag tegen of een variabele leeg is. Het is de moeite waard om de native functies en hun verschillen te kennen voor controledoeleinden. Vervelend is dat er geen gemakkelijke manier is om intuïtief te controleren of een variabele aanwezig is of niet. Onderstaande matrix maakt duidelijk wat hiermee bedoeld wordt. Wat u wilt, kan echter achteraf worden aangebracht met behulp van kleine hulpfuncties.

.­.­.

Enorme telefoontjes met sipgate.io

Met sipgate.io heeft Sipgate een opwindende cloud-API gecreëerd waarmee men een veelvoud aan opties heeft voor internettelefonie. Een account is gratis en er is ook de mogelijkheid om gratis een gratis afzendernummer in de Feature Store in te stellen. De documentatie van sipgate.io is nog steeds uitbreidbaar, maar met een beetje inlezen in de officiële Sipgate API kun je snel spannende dingen realiseren.

.­.­.

Recursie in SQL

Relationele databasesystemen gebaseerd op SQL zijn slechts gedeeltelijk geschikt voor hiërarchische of recursieve query's. Andere systemen, zoals ArangoDB, zijn hier beter geschikt voor (hierover werd een uitstekende presentatie gegeven op GOTO 2016 ). Het is echter ook mogelijk om recursieve query's in SQL te maken met behulp van Common Table Expressions ( CTE's), waardoor je bijvoorbeeld klassieke ouder/kind-tabellen kunt bevragen voor alle voorouders en afstammelingen.

.­.­.

WordPress: deactiveer archiefpagina's

Volgens w3techs.com wordt momenteel ongeveer 27,4% van alle websites wereldwijd beheerd met behulp van WordPress. In veel gevallen zijn dit geen blogs. WordPress genereert automatisch talloze, vaak ongebruikte URL's en produceert zoveel links die door Google zijn geïndexeerd dat de websitebeheerder niet eens op het scherm stond. Dit alles kan worden gedeactiveerd met een eenvoudig commando.

.­.­.

Wijzig de naam van PDF-formuliervelden in bulk

Als u, net als ik, de moeite krijgt om duizenden formulierveldnamen te hernoemen, is de JavaScript-console in Acrobat ideaal. Hierin kunt u niet alleen elke JavaScript-code uitvoeren, maar ook toegang krijgen tot alle inhoud in de PDF (inclusief formuliervelden). Aangezien er geen native functie is voor het hernoemen in de JS API, worden de formuliervelden met al hun eigenschappen gekopieerd en krijgen ze een nieuwe naam.

.­.­.

Shopware: variantwijzigingen repareren

In Shopware 5 is een bekend probleem nog steeds niet opgelost: Als je een artikel aanmaakt met onderling afhankelijke varianten met elkaar uitsluitende configuratie-opties, kan het voorkomen dat sommige combinaties in de frontend niet geselecteerd kunnen worden en dus niet besteld kunnen worden. Met behulp van een plug-in kan het probleem op dit moment eenvoudig worden opgelost.

.­.­.

Een regel voor de oneindigheid van priemgetallen

Er zijn talloze bewijzen van de oneindigheid van priemgetallen - de bekende stelling van Euclides uit het Book of Elements ontbreekt in geen enkele basiscursus getaltheorie. In de American Mathematical Monthly (Issue 122) publiceerde Sam Northshield in 2015 een niet minder elegant bewijs van tegenspraak in de vorm van een éénregel, die ik je niet wil onthouden (met korte commentaren).

.­.­.

Fleur de Windows-opdrachtregel op

De saaie Windows-opdrachtprompt kan in een paar eenvoudige stappen visueel worden geüpgraded. U kunt dus niet alleen de kleur en grootte van de opdrachtregel aanpassen, maar deze ook functioneel uitbreiden (de buffer vergroten, een grote set UNIX-tools installeren). Hoewel de opdrachtprompt niet in de buurt komt van PowerShell 6.0 of de nieuwe Windows 10 Bash Shell , hoeft deze zich niet te verbergen voor alledaagse taken.

.­.­.

Dynamische URL's in Joomla

In contentmanagementsystemen zijn URL's vaak niet vooraf bepaald en worden ze dus niet statisch aangemaakt (zoals berichten of menu-items), maar benaderen ze objecten uit de database. Net als in WordPress ( zoals hier beschreven ) is het ook in Joomla mogelijk om dynamische URL-structuren te creëren (onafhankelijk van het interne alias-systeem). Dit kan met JRouter of met een enkele regel code in het .htaccess-bestand.

.­.­.

JavaScript PasteJacking

Moderne browsers kunnen JavaScript gebruiken om toegang te krijgen tot het klembord van de gebruiker en dit te manipuleren, zowel om te lezen als te schrijven. De onderliggende technologie is niet nieuw, maar pas recent zijn er steeds meer aanvallen (bekend als "pastejacking") online opgedoken die deze mogelijkheid misbruiken ten nadele van nietsvermoedende gebruikers. Het implementeren hiervan in JavaScript is vrij eenvoudig.

.­.­.

Wissel kolommen in PostgreSQL

Het omwisselen van SQL-tabelkolommen maakt deel uit van het standaardrepertoire met MySQL - dit wordt (nog) niet ondersteund met PostgreSQL. Hoewel de officiële wiki zijn eigen artikel aan het probleem wijdt, toont het geen werkbare oplossing die ook standpunten, indices en triggers ondersteunt. De volgende klasse doet deze taak (voor zowel MySQL als PostgreSQL) ofwel op de opdrachtregel - of als alternatief rechtstreeks in Laravel 5.

.­.­.

Snelle tip voor Windows Verkenner

Als u snel de opdrachtprompt in een map in Windows Verkenner wilt openen, klikt u (een niveau hoger) met de rechtermuisknop, houdt u de Shift-toets op de map ingedrukt en selecteert u "Open opdrachtprompt hier" in het contextmenu. Ik heb zojuist een andere, snellere methode ontdekt als je in de map bent: hier klik je in het huidige mappad, typ "cmd" en bevestig met Enter.

.­.­.

WordPress Categorieën: Tree View / Inheritance

Bij het werken met hiërarchische categorieën (taxonomieën) in WordPress zul je merken dat de weergave van geselecteerde categorieën in de backend verwarrend kan zijn en dat berichten niet automatisch in hun bovenliggende categorie terechtkomen wanneer ze naar een subcategorie worden verplaatst. Beide problemen kunnen eenvoudig worden opgelost met slechts een paar regels code met behulp van het krachtige hook-systeem (in de vorm van een actie en een filter).

.­.­.

PHP 7 en de ruimteschipoperator

Naast nieuwe functies zoals typehinting voor scalaire gegevenstypen of geoptimaliseerde prestaties , brengt PHP 7 ook veel nieuwe, nuttige taaluitbreidingen met zich mee. De "Spaceship Operator" is eindelijk in de wereld van PHP terechtgekomen (Ruby- en Perl-programmeurs kennen het al een hele tijd). \($a <=> $b\) geeft \(0\) als en alleen als beide operanden gelijk zijn, \(1\) als de linker groter is en \(-1\) anders.

.­.­.

Time-out voor IIS 7.5 PHP FastCGI

Als u PHP via FastCGI integreert op IIS 7.5, wordt elk script standaard na 600 seconden (d.w.z. 10 minuten) afgebroken. Een wijziging van de bekende variabele "max_execution_time" in de php.ini heeft hier geen invloed op, je moet (ook) de FastCGI instellingen aanpassen. Hiervoor biedt het IIS een comfortabele interface voor het beheren van de relevante variabelen.

.­.­.

Paradox van stochastiek

De voorwaardelijke kansrekening brengt mooie opgaven met contra-intuïtieve oplossingen met zich mee. Naast het bekende broer / zusprobleem ga ik nu kort in op een ander voorbeeld: "Ik heb nu twee kinderen. Een van hen is een jongen en is op donderdag geboren. Hoe groot is de kans dat het andere kind ook een jongen is?"

.­.­.

Git, Shopware en lege mappen

Het versiebeheersysteem van Git-bestanden is slank, snel en draagbaar. Git behandelt altijd objecten, namelijk bestanden. Mappen worden alleen aangemaakt als er bestanden in staan, anders zal Git ze niet eens opnemen. Dit heeft bij sommige projecten vervelende bijwerkingen. Het Shopware-winkelsysteem is bijvoorbeeld afhankelijk van strikte naleving van de mappenstructuur om te kunnen functioneren.

.­.­.

Shopware: individuele verzendkosten

Shopware heeft een krachtige verzendkostenmodule waarmee u gericht kunt ingrijpen in de berekening. In ons geval willen we het volgende scenario implementeren: De verzendkosten per artikel worden in eerste instantie bepaald aan de hand van het gewicht van het artikel (de gewichtslimieten zijn gespecificeerd). Alleen voor speciale uitzonderingen zou het mogelijk moeten zijn om voor elk artikel vaste verzendkosten in te stellen.

.­.­.

Dynamische permalinks in WordPress

Het WordPress permalink-systeem is met behulp van structuurtags heel goed aan te passen aan je eigen wensen. De instelling% postname% is waarschijnlijk de meest gebruikelijke en praktische oplossing. Wil je echter echte dynamische koppelingen implementeren, dan moet je eerst het systeem uitbreiden met je eigen code.

.­.­.

Corrupte hyperlinks in Word en Excel

Je zou verwachten dat het openen van hyperlinks vanuit een Word- of Excel-document de standaardbrowser zou openen met de gewenste URL. Vreemd genoeg is dit niet het geval, wat leidt tot ongewenste neveneffecten en het onmogelijk maakt om in deze Office-programma's links te openen naar pagina's die beveiligd zijn met een sessie- of cookie-account.

.­.­.

Een paradox voor Vaderdag

Voor de Vaderdag van vandaag geeft een dochter haar vader een foto die ze zelf heeft geschilderd en waarnaar haar vader had verlangd. De dochter zegt: "Ik zal je de foto geven die je hebt gewenst en mijn cadeau zal een verrassing zijn". De vader pauzeert en denkt na over de waarheid van deze verklaring.

.­.­.

Integreer dynamische scripts met en zonder HTTPS

Als u niet-versleutelde scripts opneemt in het <head> -gebied en een pagina oproept met een bestaand SSL-certificaat versleuteld, worden deze scripts geblokkeerd en daarom niet uitgevoerd. Als u het protocol gewoon weglaat, worden alle scripts automatisch in gecodeerde vorm opgeroepen als de website wordt benaderd via https: // - anders niet-gecodeerd.

.­.­.

Bruikbaarheid in vervolgkeuzemenu's

Bij het werken met multidimensionale dropdownmenu's kom je vaak het probleem tegen dat je per ongeluk het verkeerde submenu opent of het gewenste submenu sluit. Dit gebeurt wanneer de muiscursor het bijbehorende menu op het hoogste niveau verlaat terwijl je naar een al uitgevouwen submenu navigeert.

.­.­.

Shopware: varianten automatisch deactiveren

In Shopware wordt het hele artikel gedeactiveerd bij een echte bestelling als alle varianten een voorraadniveau hebben kleiner dan of gelijk aan 0. Om dit op een variantbasis te implementeren, heb ik een kleine plug-in geprogrammeerd, waarvan ik Bootstrap.php hieronder geef.

.­.­.

Dubbele wachtwoordopvraag met SSL

Het volgende scenario leidt altijd tot een ongewenst neveneffect: als u uw site beveiligt met htaccess/htpasswd en tegelijkertijd een SSL-verbinding afdwingt, moet u altijd hetzelfde wachtwoord twee keer invoeren (eenmaal voor http en nogmaals voor https na succesvolle invoer). Dit probleem kan eenvoudig worden opgelost met behulp van de configuratie-instellingen die zijn geïntroduceerd in Apache 2.4.

.­.­.

Meerregelige tekenreeksen in JavaScript

Bij het programmeren met JavaScript struikelt men vaak over het onvermogen om meerregelige strings te realiseren door ze ook in meerdere regels in de code in te voeren. Hoewel de taak in andere talen, zoals PHP of Ruby, geen probleem is, kun je met JavaScript in eerste instantie alleen omzeilen met tijdelijke oplossingen, waarvan het gebruik wordt bepaald door persoonlijke smaak of browserondersteuning.

.­.­.

mail () in PHP met UTF-8 en umlauts

Het versturen van e-mails met PHP kan het beste worden geïmplementeerd met krachtige klassen zoals PHPMailer . Handige wrapper-functies maken het mogelijk om inhoud in UTF-8 te gebruiken, afbeeldingen in te sluiten en gecodeerde bijlagen te verzenden met slechts een paar regels code. Als je jezelf de overhead wilt besparen en, in tegenstelling tot de aanbeveling, de PHP-functie mail () wilt gebruiken , zul je problemen tegenkomen bij het gebruik van umlauts en uiterlijk UTF-8.

.­.­.

Google PageSpeed ​​Insights vs. Google Analytics

Validatietools zoals de W3C Markup Validation Service of Google PageSpeed Insights zijn nuttig voor het objectief evalueren van de code en prestaties van een website. Google, in het bijzonder, beïnvloedt een hele branche met concepten zoals 'above the fold' en stelt ook strikte maar nuttige richtlijnen op met betrekking tot beeldcompressie en caching. Daarbij kan Google zichzelf echter soms in de problemen brengen.

.­.­.

Welkom JavaScript 2.0

JavaScript domineert het web – en ECMAScript, de kern van de taal, wordt steeds volwassener. De nieuwe specificatie (ES6 of JS2), die naar verwachting halverwege het jaar verschijnt, brengt talrijke innovaties met zich mee die nu al getest kunnen worden. Firefox biedt momenteel de beste ondersteuning , maar polyfills via transpilers zoals Google Traceur zijn ook mogelijk. Hieronder volgt een kort overzicht van de nieuwe functies van ES6.

.­.­.

0,99999... = 1?

Of het nu op school of op de universiteit is: een interessante vraag die \( 0,99999... = 1 \) en dan \( 0,99999... = 1 \) is de vraag of de volgende vergelijking waar is: \( 0,99999... = 1 \) . Hoewel de oneindigheid in het linkerdeel van de vergelijking \(0,99999... = A\) , geven we het een naam: \(0,99999... = A\) . Na vermenigvuldiging met de factor \(10\) en eenvoudige algebraïsche transformaties krijgen we een eerste verbazingwekkend inzicht.

.­.­.

SQL: slechte prestaties ondanks index

Ik werd zojuist geconfronteerd met het volgende prestatieprobleem van een SQL-database: in een SQL-tabel met de naam "gebruikers" met ~ 1.000.000 vermeldingen duurde het vandaag onaanvaardbaar 28 seconden om het aantal registraties te bepalen. De tijden van de registraties werden opgeslagen in het "Ymd H: i: s" formaat in de "aangemaakte" kolom.

.­.­.

Klein schaakprobleem

Naast het bekende ridderprobleem en koninginprobleem, zijn er nog vele andere spannende vragen in de schaakwereld. Ik heb in een vorige blogpost twee kleine curiositeiten aangeroerd . Als je wiskundig met schaakproblemen omgaat, zul je snel ontdekken dat wiskunde heel eenvoudige en verhelderende antwoorden geeft op veel vragen.

.­.­.

Bestanden online beschikbaar met OneDrive

Als Een schijf, Dropbox, Google Drive, OwnCloud, Box.net: Ongeacht de doos waarin u uw bestanden opslaat, de services zijn bijna hetzelfde. De clients die beschikbaar zijn voor alle desktop- en mobiele systemen, de standaard niet-versleutelde bestanden en de opties voor delen verschillen slechts marginaal. Maar de OneDrive, die sinds Windows 8.1 in het systeem is geïntegreerd, heeft een speciale functie: alleen bestanden die online beschikbaar zijn.

.­.­.

PHP: bestandstoegang met umlauts onder Windows

Bestanden op webservers moeten altijd zonder spaties (dus niet "dit is een afbeelding.jpg"), zonder umlauten of speciale tekens (dus niet "voetbal.jpg"), zonder backslashes (dus niet "werk\auto.jpg") en in kleine letters (dus niet "test.JPG") worden opgeslagen. Onlangs moest ik echter voor een klantproject een groot aantal vooraf gedefinieerde bestanden met willekeurige bestandsnamen openen en verwerken.

.­.­.

SQL-query om een ​​ranglijst te bepalen

Vandaag kwam ik de volgende taak tegen tijdens het werken aan een klantproject: Neem een ​​SQL-tabel "user" met de kolommen "id" en "score" en bepaal een rangorde van alle gebruikers op basis van "score" waarin gebruikers met de dezelfde ranking krijgen met dezelfde score. Deze taak kan intuïtief en gemakkelijk worden opgelost door gebruik te maken van door de gebruiker gedefinieerde variabelen .

.­.­.

Facebook SDK: controleer tokens aan de serverzijde

Bij het werken met de Facebook SDK (meer bepaald bij het implementeren van een Facebook-inlogfunctie binnen een REST-interface), moet het token dat de klant van Facebook heeft ontvangen eerst op geldigheid worden gecontroleerd door de server voordat verdere bewerkingen worden uitgevoerd .

.­.­.

Chrome DevTools: adressering van DOM-elementen

Of het nu gaat om Chrome, Firefox, Opera, Safari of zelfs Internet Explorer: hoewel goed ontworpen ontwikkelaarstools tot een paar jaar geleden een uniek verkoopargument waren van Firefox en de populaire Firebug- plug-in, maken krachtige ontwikkelaarstools nu deel uit van het standaardbereik van elke browser waarin veel te ontdekken valt geeft.

.­.­.

Toegang tot het bestandssysteem met behulp van SQL

Ik ben onlangs op een handige manier gestuit om toegang te krijgen tot het bestandssysteem en waardevolle informatie op te halen, zoals het bestaan van bestanden en mappen of hun inhoud. Dit kan erg nuttig zijn als alternatief voor de PHP-functie ` file_exists` , omdat de informatie over het bestaan van de bestanden kan worden gebruikt in de query voor verdere sorteer- en aggregatiefuncties.

.­.­.

Geanimeerde achtergronden met canvas

Geanimeerde vectorachtergronden kunnen variatie toevoegen aan een weblandschap dat wordt gekenmerkt door foto's en video's op volledig scherm. Het zou mooi zijn als dit hand in hand zou gaan met laadtijden en brede hardware en software ondersteuning. Een oplossing is: canvas. Het HTML-element dat wordt bestuurd door JavaScript wordt ondersteund door alle huidige browsers en wordt met hoge prestaties gereproduceerd op mobiele apparaten.

.­.­.

Vaste aspectverhouding voor HTML-elementen

Als webontwikkelaar werk je vaak met HTML-elementen die, in tegenstelling tot het `img`-element, geen vaste grootte of beeldverhouding hebben. Vaak wil je dat deze objecten zich responsief gedragen, terwijl de verhouding tussen breedte en hoogte behouden blijft. CSS biedt standaard geen intuïtieve oplossing. De eigenschap `vertical padding` kan dit echter wel bereiken.

.­.­.

Gerechtelijke uitspraak over het gebruik van stockfoto's

Nadat de rechtbank van Keulen vorige week in het RedTube-schandaal terugkwam op haar eerdere uitspraak en de vrijgave van de omstreden IP-adressen nooit had mogen goedkeuren, heeft zij nu een andere zeer controversiële en twijfelachtige uitspraak gedaan in besluit 14 O 427/13: De auteur van stockfoto's van een specifiek fotobureau moet ook worden genoemd wanneer zijn afbeeldingen rechtstreeks via hun URL worden benaderd.

.­.­.

Vaarwel Block & Inline - Welkom HTML5

De innovaties van de HTML5-specificatie zijn talrijk en veel ervan worden al ondersteund door het grootste deel van het browserlandschap - hieronder wil ik een interessante wijziging van de regels voor het nesten van elementen benadrukken. HTML heeft altijd onderscheid gemaakt tussen blok- en inline-elementen. De documenttypedefinitie van HTML4 noemt bijvoorbeeld h1, p en div als blokelementen en a, span, img als inline-elementen.

.­.­.

HTTP-logboekregistratie op IIS en Apache

Zowel Apache op Unix-systemen als IIS op Windows-systemen loggen HTTP-verzoeken standaard naar bestanden. Verzoeken aan uw eigen website moeten regelmatig worden geëvalueerd en geanalyseerd, zowel handmatig als automatisch (bijvoorbeeld met behulp van loganalyseprogramma's zoals AWStats ), niet alleen ter bescherming tegen hackaanvallen. De paden naar de relevante logbestanden in gangbare configuraties zijn bijvoorbeeld als volgt.:

  • /var/log/apache2/access.log (Voorbeeld: Ubuntu 12.04, Apache 2.2)
  • C:\inetpub\logs\LogFiles\W3SVC1\u_ex<YYMMDD>.log (Voorbeeld: Windows Server 2012 R2, IIS 8.5)
.­.­.

Joomla, IIS en de directoryrechten

Bij het integreren van Joomla 3.2 op een Windows Server 2008 R2 met IIS 7.5 ontstaan ​​vaak problemen met directoryrechten, die vaak onvoldoende worden opgelost met instellingen die te genereus zijn gekozen. De volgende oplossing is veilig en volledig functioneel:

  • De groep IIS_IUSRS heeft de rechten nodig voor C: \ inetpub \ wwwroot \: read & execute, mapinhoud weergeven, lezen, schrijven
  • De IIS_IUSRS-groep heeft de rechten nodig voor C: \ Windows \ Temp \: Read & Execute, Mapinhoud weergeven, Read, Write
  • De gebruiker-IUSR moet zich in de IIS_IUSRS-groep bevinden (Computerbeheer> Lokale gebruikers en groepen> Groepen)

Als u extra maprechten nodig hebt voor alle bestanden die via PHP worden geüpload (bijvoorbeeld voor SSH of FTP), stelt u deze ook in voor de map C:\Windows\Temp\. Wanneer u een bestand via PHP uploadt, kopieert PHP het eerst naar de tijdelijke map en vervolgens naar het uiteindelijke pad. Zodra het bestand zich in de tijdelijke map bevindt, erft het de bijbehorende rechten en behoudt het deze nadat het naar de uiteindelijke map is verplaatst.

.­.­.

Anoniem online: onmogelijk?

In tijden van het NSA-schandaal vragen niet alleen netwerkbewuste gebruikers zich af of en hoe men anoniem door het netwerk kan navigeren om te ontsnappen aan de waanzin van de gegevensverzameling van de autoriteiten en geheime diensten. Dit leidt echter vaak tot fouten en onjuiste aannames. Een centrale misvatting is de reductie van anonimiteit tot verduistering van het IP-adres.

.­.­.

McFIT - nieuw logo, nieuwe afbeelding

De fitnessketen McFIT ondergaat een metamorfose. Waar voorheen een felgele, banaanvormige mascotte de blauwe letters sierde, kronkelt nu een geel lint vakkundig over een antracietkleurige achtergrond en vormt zo een abstracte figuur. De kleuren blauw en geel van de FDP verdwijnen niet alleen uit het logo, maar ook uit al het andere drukwerk met het McFIT-merk.

.­.­.

Photoshop: reis terug in de tijd

Toen de broers Thomas en John Knoll in 1987 begonnen met het ontwikkelen van Adobe Photoshop, was ik nog niet geboren. Vandaag, anno 2013, is de software een van de meest populaire programma's in het algemeen en de onbetwiste marktleider op het gebied van beeldverwerking. Dankzij Adobe en het Computer History Museum wordt de software nu in een heel bijzondere vorm voor het nageslacht bewaard.

.­.­.

Curiosa in het spel der koningen

Schaken heeft mensen eeuwenlang gefascineerd - de regels zijn gemakkelijk te leren en de ongelooflijke diepte ervan is alleen toegankelijk voor ervaren spelers (helaas ben ik niet een van hen). In het volgende zal ik twee korte vragen behandelen: Is het mogelijk om, door middel van een juiste reeks zetten, een positie te bereiken waarin de zwarte koning wordt aangevallen door twee witte vrouwen tegelijk? Is dit ook mogelijk met twee witte torens?

.­.­.

Docu-soap in plaats van blockbuster: 48fps

Films worden gewoonlijk opgenomen en afgespeeld met 24 frames per seconde, maar het bijna 100 jaar oude standaardformaat "24p" lijkt te wiebelen. Om de onooglijke neveneffecten (bv. Het sterke schokken bij middelhoge camerapans) van de 24fps-projectie te voorkomen, wordt er lang gewerkt aan een verdubbeling van de framesnelheid naar 48 frames per seconde en meer.

.­.­.

Controleer de spelling op websites

Geautomatiseerde spelling- en grammaticacontrole zijn nu standaarduitrusting in tekstverwerkingsprogramma's, maar het automatisch controleren van de spelling van een website was tot nu toe relatief omslachtig. Google Chrome zet een eerste stap in deze richting met een geïntegreerde check in meerregelige invoervelden (textarea). Nu is er een dienst die dit voor hele websites mogelijk maakt.

.­.­.

Telefoonnummers in links - een beveiligingsrisico?

Een paar weken geleden heb ik gerapporteerd hoe u uw bezoekers in staat kunt stellen de telefoon-app op mobiele apparaten te openen door op een telefoonnummer te tikken. Nu is er een mogelijkheid ontstaan ​​om de simkaart onherroepelijk te blokkeren of het toestel terug te zetten naar de fabrieksinstellingen zonder tussenkomst van de gebruiker.

.­.­.

Interessante e-mailcuriosa

Moeten domeinnamen en e-mailadressen altijd in kleine letters zijn om er zeker van te zijn dat u komt waar u heen wilt? Of is dit helemaal niet relevant? De mailservers van Google hebben bijvoorbeeld merkwaardige instellingen met interessante effecten, die ik in het volgende artikel kort zal introduceren.

.­.­.

Ontwerp van de beurskoersen in de dagelijkse onderwerpen

Ik volg de vormgeving van verschillende programma's op de Duitse televisie op de voet. Vrijwel geen enkele opleiding behoudt permanent haar huisstijl. Het avondritueel van de bijeenkomst voor het tv-scherm om 22.15 uur over de onderwerpen van de dag bezorgt me de laatste tijd buikpijn: sinds enkele maanden wordt er voor een totaal verwarrend kleurenschema gekozen voor de presentatie van de huidige beurskoersen.

.­.­.

Koppel telefoonnummers correct

Bij het optimaliseren van je website voor mobiele apparaten moet je je niet alleen richten op verschillende schermformaten, geoptimaliseerde laadtijden en speciale functies (zoals hover-effecten), maar ook rekening houden met de specifieke mogelijkheden van de apparaten. Dit omvat (sommigen zijn het misschien vergeten) ook bellen.

.­.­.

Dubbele inhoud op blogs

Google bestraft vaak identieke content op meerdere websites. Het Google-algoritme is echter intelligent en herkent of de elementen in de header en footer consistent zijn of dat complete tekstpassages twee keer toegankelijk zijn onder verschillende URL's. De vraag hoe Google omgaat met overzichtspagina's van blogartikelen is bijzonder interessant.

.­.­.

Verhoog de WordPress-beveiliging

De beveiliging van WordPress, momenteel het populairste contentmanagementsysteem, kan aanzienlijk worden verbeterd door twee kleine instellingen aan te passen. Dit kost slechts 5 minuten en twee regels code. Hoewel het probleem ook met diverse plugins kan worden opgelost, beperk ik me hier bewust tot oplossingen zonder plugins.

.­.­.