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 pakketje en vind je een ring die je aan je dochter geeft. Tientallen jaren later is zij degene die een wormgat kan gebruiken om objecten terug in de tijd te sturen. Dit doet ze met de ring die je haar ooit hebt gegeven, verpakt in een pakketje dat ze aan jou adresseert. De vraag is: waar komt de ring vandaan?

.­.­.

CI met GitHub-acties

Als alternatief voor het zeer gewaardeerde Travis CI is sinds enige tijd ook GitHub Actions beschikbaar, als continuous integration tool zeer goed geïntegreerd op het GitHub code platform en inmiddels zeer stabiel. GitHub-acties zijn gebaseerd op YAML-configuratiebestanden die zijn geplaatst in de repository waar de werkstroom 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\) ).

.­.­.

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.

.­.­.

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

tl;dr: Handmatig ingestelde waarde 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: 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

Zoals bekend bestaat het Duitse IBAN uit de landcode (DE), een tweecijferig controlecijfer (volgens ISO 7064 ), de bankcode (8 cijfers) en het rekeningnummer (inclusief subrekeningnummer, 10 -cijfer, ontbrekende cijfers worden opgevuld met voorloopnullen) en is daarom 22 -cijferig. Om het controlecijfer te berekenen, worden zowel de zogenaamde BBAN (bankcode en rekeningnummer) als de numerieke landcode \(1314\) voor Duitsland en het controlecijfer \(00\) ) gevormd.

.­.­.

Wiskunde in het spel Dobble

Op de laatste familieavond werd het spel Dobble (in de Harry Potter Editie) enthousiast door de kinderen op tafel gebracht. Na de 5e verloren ronde (zonder zichtbare hit van mijn kaart met de speelkaart) kreeg ik tot mijn verbazing te horen dat elke speler in elke ronde altijd een hit kan vinden. Maar mijn ongeloof werd pas erkend met nog meer verloren ronden - 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).

.­.­.

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.

.­.­.

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 er responsive webdesign is, vragen ontwikkelaars naar de mogelijkheid om DOM-elementen te ontwerpen op basis van hun werkelijke grootte en niet op de grootte van de viewport in de browser (met behulp van mediaquery's ). In feite zijn containerquery's (aanvankelijk elementquery's) waarschijnlijk de meest gevraagde CSS-functie die browsers nog steeds niet hebben .

.­.­.

Git-geschiedenis opschonen

Gevoelige gegevens zoals wachtwoorden moeten in .env-bestanden staan ​​en, indien mogelijk, niet in Git-repositories terechtkomen. Maar het is ons waarschijnlijk wel een keer per ongeluk overkomen: we hebben snel een mooi Google Maps JS API-script op GitHub Gists gepubliceerd (als "openbaar") zonder per ongeluk onze eigen persoonlijke Maps API-sleutel te verhullen .

.­.­.

Knip SVG's uit afbeeldingen met clip-path

Als u een afbeelding wilt uitknippen met behulp van een SVG, wordt het gebruik van de CSS-eigenschap clip-path aanbevolen. Het volgende script veroorzaakt hobbelige barrières: De SVG kan worden opgeslagen met behulp van Illustrator, u kunt de (relatieve of absolute) URL van een SVG specificeren (Chrome ondersteunt tot nu toe alleen inline SVG) en de halslijn is ook volledig responsive.

.­.­.

Snelle tip: WP_Query & velden met meerdere regels

Met behulp van het meta_query attribuut in de krachtige WordPress WP_Query class kunnen posts worden gefilterd die bepaalde waarden in hun metavelden hebben. Als je een metaveld met meerdere regels hebt gemaakt (bijvoorbeeld met behulp van Advanced Custom Fields ) en alleen berichten wilt vinden die een bepaalde waarde in dit veld bevatten, gescheiden door regeleinden, is de REGEX-wereld van MySQL aan te bevelen.

.­.­.

Integreer native Adobe Animate-animaties

In een vorig artikel heb ik beschreven hoe je eenvoudig animaties uit Adobe Animate kunt integreren in een website via de omweg van een APNG-export. Er is ook de native manier via de HTML5 canvas export , maar iedereen die er al mee heeft gewerkt zal merken dat het in alle hoeken en gaten vastloopt (onvoldoende responsieve ondersteuning, omslachtige integratie in een bestaande website, geen verschillende framesnelheden per animatie, enz.) .). De bibliotheek adobe-animate-embed biedt hier 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

De browserondersteuning voor geanimeerde PNG-bestanden is nu zo goed dat animaties die zijn gemaakt met Animate CC eenvoudig kunnen worden geëxporteerd naar APNG en vervolgens in een website kunnen worden opgenomen in een eenvoudige <img> -tag. Dit is een eenvoudig en kwalitatief goed alternatief voor de publicatiemethode in Animate CC, die JavaScript genereert. De te nemen stappen worden hieronder beschreven.

.­.­.

Vouw WordPress zoeken uit

Wil je de native WordPress-zoekactie uitbreiden met bijvoorbeeld metavelden, dan is het aan te raden om de geactiveerde filters eens te bekijken . De posts_search hook wordt aanbevolen zodat de paginering blijft werken en toekomstige verbeteringen in de zoekopdracht niet teniet worden gedaan . Met behulp van de functies REGEXP en ExtractValue , breidt de volgende code deze zoekopdracht uit met berichten die een van de zoekwoorden bevatten die in alle metavelden zijn ingevoerd.

.­.­.

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 gegevensbescherming is WhatsApp nog steeds de favoriete Duitse messenger-app. Naast de speciale WhatsApp Business App heeft Facebook ook een officiële interface gemaakt, de WhatsApp Business API, om het voor bedrijven interessanter te maken. Als u WhatsApp-berichten programmatisch wilt verzenden vanuit uw webtoepassing, zijn er ook andere manieren.

.­.­.

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

U hoeft geen krachtige tool zoals Google Optimize te gebruiken voor eenvoudige URL-splitsingstests, u kunt de Apache ook oplossen via .htaccess. Het volgende codefragment verdeelt zijn bezoekers gelijkmatig over beide versies voor de twee pagina's https://vielhuber.de/test1.php (variant 1) en https://vielhuber.de/test2.php (variant 2). 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

Als je Github aan Composer koppelt , moet een versienummer worden toegewezen via git tag . De volgende opdrachtregelopdracht bepaalt de huidige dag en verhoogt deze (volgens SemVer ) met een versienummer. Versie 1.1.0 volgt bijvoorbeeld na 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 deze woestijn van symbolen.

8cd852c96ec1e60e8a5ac1f3614b2397

.­.­.

Bewerk MySQL-trigger

Helaas biedt MySQL niet de ALTER TRIGGER-functie. Om een ​​bestaande trigger te bewerken, moet u deze eerst verwijderen en vervolgens opnieuw genereren. De instructie CREATE TRIGGER kan indirect worden uitgelezen via het information_schema . Hierdoor kunnen we triggers wijzigen via een omweg. Om dit te doen, brengt u uw wijzigingen aan in het resultaat van de volgende SELECT-opdracht (wijzig de database en triggernaam vooraf) 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 uw eigen scripts of scripts van derden kan nauwkeurig worden gecontroleerd met behulp van PHP en JavaScript. Hoewel dit geen voldoende oplossing is voor de implementatie van cookie-oplossingen na de uitspraak van de rechtbank tegen Planet49 (hierbij is het cruciaal dat trackingtools zoals Google Analytics niet eens volgen en dus ook geen cookies plaatsen), kan het logisch zijn zijn om cookies in het algemeen op de witte / zwarte lijst te zetten.

.­.­.

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.

.­.­.

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 opwindende programmeerproblemen, vaak met een wiskundige achtergrond. De problemen worden vaak zo gesteld dat geavanceerde algoritmen ontwikkeld moeten worden om het doel binnen een redelijke tijd te bereiken. Vandaag lossen we probleem 15 op: Roosterpaden , waarvoor u de oplossing kunt vinden met eenvoudige combinatorische middelen.

.­.­.

Automatische WordPress-updates

WordPress heeft native achtergrondupdates geïmplementeerd sinds versie 3.7 en deze automatisch geactiveerd voor kleine releases. Met behulp van filters kun je het gedrag preciezer sturen, wat er precies automatisch wordt bijgewerkt. Een permanente, volledig automatische installatie van alle kleine, grote, plug-in, thema- en vertaalupdates is niet de bedoeling, maar kan anders eenvoudig worden gedaan.

.­.­.

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 .

.­.­.

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 Flower of Life is een bekend, bloemachtig, geometrisch patroon dat al duizenden jaren in tempels, manuscripten en al duizenden jaren in de popcultuur wordt aangetroffen. Het patroon speelt ook een rol bij esoterie. We negeren dit allemaal op dit punt en concentreren ons op de eenvoudige constructie van de geometrische vorm, die is samengesteld 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

Wanneer u met Google Spreadsheets werkt , kunnen fijne, op gebruikers gebaseerde regels voor het bewerken van werkbladen, kolommen en rijen binnen een spreadsheet worden gedefinieerd. Helaas is er geen manier om leesrechten te beperken. Dit zou echter in veel scenario's zeer nuttig zijn. U laat uw klanten dus alleen die tickets zien die hen aangaan of de medewerkers alleen de projecten waaraan ze werken.

.­.­.

Garen plug'n'play

npm is de standaard pakketbeheerder voor Node.js. Facebook heeft al lang een alternatieve oplossing voor pakketbeheer ontwikkeld, genaamd Yarn . Garen lijkt langzaam te verdwijnen uit de Github readmes als de standaardoplossing en de statistieken op de officiële site laten zien dat slechts een fractie van de pakketten door Yarn wordt uitgevoerd. Toch is het de moeite waard om buiten de kaders te denken.

.­.­.

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 gedragen zowel de Facebook- als de Instagram-in-app-browsers (vanaf vandaag) zich niet correct als een uploadveld binnen een geadverteerde of gekoppelde bestemmingspagina het acceptkenmerk specificeert. De knop was dus zonder functie. Als je de pagina opent in de externe, normale browser buiten de Facebook-app, is alles in orde. Dit is vervelend (vooral omdat het al lang is gemeld), maar kan met een tijdelijke oplossing worden opgelost.

.­.­.

Chrome Devtools: verplaats DOM-elementen

De ontwikkelaarstools van Google Chrome behoren tot de krachtigste op de browsermarkt. Elke maand komen er nieuwe functies binnen, die Google in gecomprimeerde vorm op YouTube presenteert. Maar vaak zijn het de kleine dingen in het leven die genieten. Als je DOM-elementen in Google Chrome wilt verwijderen, kun je dit doen met de delete-toets. Maar pas vandaag merkte ik dat DOM-elementen ook gemakkelijk te verplaatsen zijn met drag & drop:

.­.­.

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 complete oplossingen zoals XAMPP , WAMP en MAMP , native installatie met de hand en virtualisatie-oplossingen zoals Vagrant ( Scotch Box ) en Docker ( Devilbox , Laradock ). Maar vanwege mijn vereisten, zoals vrije configureerbaarheid, echte wildcard SSL-certificaten, toegang vanaf alle eindapparaten in het lokale netwerk en hoge stabiliteit en prestaties, faalden alle oplossingen, behalve één.

.­.­.

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

Versiebeheer Git is nu standaard in bijna elk webproject en in elke omgeving (inclusief productie). Git maakt altijd de submap .git aan en als deze zich op het niveau van de openbare map van de website bevindt, kun je publiekelijk toegang krijgen tot gevoelige bestanden (bijvoorbeeld: /.git/logs/HEAD aanroepen toont de laatste commits) . Het legt in detail uit hoe je een Git-repository van een derde partij (!) Kunt klonen 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 brengt een verbinding tot stand met een server via SSH, voert enkele commando's uit (bijvoorbeeld, verandert naar een subdirectory en stuurt een git-status ) en laat de shell open. Het .bashrc-bestand wordt geladen, waardoor gekleurde subshells mogelijk zijn. De truc is om een ​​tijdelijk bestand / tmp / initfile op te slaan met de gewenste commando's, om een ​​subshell te starten (in ons geval bash) met het commando --init-file. Binnen dit initfile wordt hetzelfde bestand onmiddellijk weer verwijderd om geen sporen na te laten.

.­.­.

Netwerkstation als beheerder

Als u een netwerkstation in Windows Verkenner integreert, geldt dit niet systeembreed maar alleen voor het huidige gebruikersaccount. Dit betekent dat u geen toegang heeft tot deze netwerkschijf in een applicatie die met administratorrechten draait. U kunt dat eenvoudig wijzigen: Maak een nieuwe DWORD (32 bit) genaamd EnableLinkedConnections met de waarde 1 in het register onder HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System en start opnieuw. Geïntegreerde netwerkschijven zijn dan 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 de getallenlijn en jij probeert hem te vangen. Springen en vangen wisselen elkaar altijd 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 hetzelfde voor elke sprong. Snappen bestaat uit het specificeren van een gehele positie. Men kent noch \(z\) noch \(s\) . We laten zien dat er altijd een manier is om de kikker te vangen.

.­.­.

Lange bestandsnamen op Windows 10

Het is niet alleen wanneer u npm onder Windows gebruikt dat u een limiet tegenkomt die nu bijna 30 jaar oud is, waardoor paden naar mappen en bestanden worden beperkt tot maximaal 255 tekens. Dit is niet de schuld van NTFS, maar LFN . Dit leidt tot vervelende bugs en incompatibiliteit tussen besturingssystemen. In tijden van WSL is dit een betreurenswaardige aandoening, die je jezelf gelukkig enige tijd in het register kunt vastleggen.

.­.­.

Laravel wachtrijen op localhost

In het PHP-framework Laravel zorgen binnen productieve omgevingen, workers en supervisors ervoor dat de jobs die zijn opgeslagen in bijvoorbeeld Redis , worden verwerkt. Als u hier volledig onafhankelijk van wilt zijn op localhost, gebruikt u ofwel het synchronisatiestuurprogramma om de taken altijd onmiddellijk uit te voeren. Dit heeft als nadeel dat het huidige PHP-proces wordt geblokkeerd en het verzoek blijft hangen totdat de taak is verwerkt.

.­.­.

Snelle tip: bundel doelen in Google Analytics

Met behulp van de JavaScript-bibliotheek analytics.js van Google Analytics kunnen gebeurtenissen op websites worden gevolgd. Deze evenementen zijn bijvoorbeeld een exacte meting van de verblijfsduur, de maximale scrolldiepte van de bezoekers of andere individuele acties zoals het indienen van formulieren. Als u bijvoorbeeld reclamecampagnes wilt evalueren of later A / B-tests wilt uitvoeren, creëert u zogenaamde doelprojecten.

.­.­.

Pragmatische cache-ongeldigverklaring

Server-side rendering maakt nu deel uit van het standaardrepertoire van websites en applicaties. Browsers zoals Google Chrome hebben ook de neiging om zoveel mogelijk te cachen om de laadtijden van verdere oproepen te minimaliseren. De cache-invalidatie van CSS / JS / image-bestanden kan worden opgelost met behulp van mod_pagespeed , Expires / Cache control header, een cache-manifest of heel pragmatisch en direct via individuele parameters achter de bestandsnaam.

.­.­.

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 tools van Sysinternals van Mark Russinovich mogen op geen enkele Windows-computer ontbreken. Wil je altijd de laatste versie bij de hand hebben, dan kan je deze als netwerkschijf integreren. Het commando net use s: \\ live.sysinternals.com \ DavWWWRoot op de commandoregel is voldoende (als een normale gebruiker). Dan zijn leuke tools zoals PsList, PsKill of de Process Explorer draagbaar op de schijf 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 nu standaard. Zelfs met lokale ontwikkeling zijn SSL-certificaten onmisbaar geworden (bijvoorbeeld, navigator.geolocation vereist lokaal SSL-codering). Sinds versie 58 van Chrome is de ondersteuning voor CN (Common Name) stopgezet en is SAN (Subject Alternative Name) verplicht gesteld. Als gevolg hiervan accepteert Chrome ineens niet meer alle conventioneel aangemaakte SSL-certificaten.

.­.­.

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 nu standaard. Maar ook jokertekens of uitgebreide certificaten met bijzonder betrouwbare eigenaarsvalidatie zijn vaak vereist. De provider DomainFactory biedt goedkope SSL-certificaten aan die ook extern kunnen worden gebruikt. De setup op een huidige IIS lukt zonder CSR met behulp van OpenSSL . Hieronder zal ik kort laten zien welke stappen hiervoor nodig zijn.

.­.­.

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-sjablonen in Laravel 5. * krijg je vaak zinloze foutmeldingen die verwijzen naar cachegeheugens. In het verleden was iedereen beter: de foutopsporingsweergave in versie 4 bevatte meer nuttige functies en was ook visueel mooier. Met een paar regels code kun je deze functionaliteit terug krijgen met behulp van oeps ("PHP-fouten voor coole kinderen").

.­.­.

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

Op SQL gebaseerde relationele databasebeheersystemen zijn alleen voorwaardelijk geschikt voor hiërarchische of recursieve zoekopdrachten. Andere systemen zoals ArangoDB zijn hier beter (er was een goed gesprek hierover op GOTO 2016 ). U kunt ook recursieve query's in SQL maken met behulp van algemene tabelexpressies en zo klassieke bovenliggende / onderliggende tabellen opvragen 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 staan ​​URL's vaak niet altijd van tevoren vast en worden daarom niet vooraf statisch aangemaakt (als bijdrage of menu-item), maar adresobjecten uit de database. Net als bij WordPress ( zoals hier beschreven ) is het in Joomla ook mogelijk om dynamische URL-structuren te bouwen (onafhankelijk van het interne alias-systeem). Ofwel JRouter kan hier worden gebruikt - of u kunt een oneliner gebruiken in de .htaccess.

.­.­.

JavaScript PasteJacking

Met behulp van JavaScript kunnen moderne browsers het klembord van de gebruiker lezen en ernaar schrijven, dat wil zeggen dat ze het ook kunnen manipuleren. De onderliggende technologie is oud, maar pas sinds kort circuleren er steeds meer aanvallen (onder de naam "PasteJacking") op het netwerk die profiteren van deze mogelijkheid voor de onervaren gebruiker. Een implementatie in JavaScript is banaal.

.­.­.

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

Als je in WordPress met hiërarchische categorieën (taxonomieën) werkt, zul je merken dat enerzijds de weergave van de aangevinkte categorieën in de backend verwarrend is en anderzijds dat posts niet automatisch in de bovenliggende categorie terechtkomen als ze in de kindcategorie worden geplaatst. Beide kunnen met slechts een paar regels code worden rechtgetrokken met behulp van het krachtige haaksysteem (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 denken dat bij het openen van hyperlinks vanuit een Word / Excel-document de standaardbrowser wordt gestart met de gewenste URL. Vreemd genoeg is dit niet het geval - wat tot onaangename bijwerkingen leidt en koppelingen naar op sessie / cookies gebaseerde login-beveiligde pagina's in de genoemde kantoorprogramma's onmogelijk maakt.

.­.­.

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 vervolgkeuzemenu's loopt men vaak tegen het probleem aan dat per ongeluk verkeerde submenu's worden geopend of dat het gewenste submenu per ongeluk wordt gesloten. Dit effect treedt op wanneer de muisaanwijzer het corresponderende menu op het hoogste niveau verlaat terwijl hij naar een reeds 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

De volgende constellatie heeft altijd een vervelende bijwerking: Als u uw site met htaccess / htpasswd beveiligt en tegelijkertijd een SSL-verbinding afdwingt, moet u altijd hetzelfde wachtwoord twee keer invoeren (een keer voor http en opnieuw na een succesvolle invoer voor https). Met behulp van de configuratiesecties die in Apache 2.4 zijn geïntroduceerd, kan het probleem gemakkelijk worden opgelost.

.­.­.

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. Met name Google beïnvloedt een hele branche met concepten als above the fold - en geeft ook strikte maar nuttige richtlijnen voor beeldcompressie en caching. Maar het kan gebeuren dat Google op eigen benen gaat staan.

.­.­.

Welkom JavaScript 2.0

JavaScript domineert het web en ECMAScript, de kern van de taal wordt volwassen. De nieuwe specificatie (ES6 of JS2), die medio dit jaar wordt verwacht, brengt tal van innovaties met zich mee die nu al kunnen worden uitgeprobeerd. Firefox heeft momenteel de beste ondersteuning , maar polyfills via zogenaamde transpilers zoals Google Traceur behoren ook tot de mogelijkheden. Het volgende is 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 zijn (niet "dit is een afbeelding.jpg"), zonder umlauts of speciale tekens (niet "football.jpg"), zonder backslashes (niet "Arbeit \ Auto.jpg") en in kleine letters (niet "" test.JPG "). Onlangs moest ik echter een groot aantal bestanden met elke bestandsnaam openen en verwerken voor een klantproject.

.­.­.

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 kwam zojuist een leuke optie tegen in MySQL om het bestandssysteem aan te boren en waardevolle informatie te verkrijgen, bijvoorbeeld over het bestaan ​​van bestanden en mappen of hun inhoud. Dit kan erg handig zijn als alternatief voor de php-functie file_exists , aangezien de informatie over het bestaan ​​van de bestanden nog steeds 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 schaam je je vaak om met HTML-elementen te werken die op zichzelf - in tegenstelling tot bijvoorbeeld het img-element - noch een vaste grootte, noch een vaste aspectverhouding hebben. Vaak wilt u bereiken dat deze objecten zich responsief gedragen, maar de verhouding tussen breedte en hoogte blijft behouden. CSS biedt hier standaard geen intuïtieve oplossing. Maar met behulp van de eigenschap verticale opvulling kunt u uw doel bereiken.

.­.­.

Gerechtelijke uitspraak over het gebruik van stockfoto's

Nadat de regionale rechtbank van Keulen vorige week terug roeide in het RedTube-schandaal en nooit de vrijgave van de controversiële IP-adressen mocht goedkeuren, komt het weer een zeer controversieel en twijfelachtig oordeel uit met de beslissing 14 O 427/13: De auteur van Stock Foto's van een bepaald fotobureau moeten ook een naam krijgen via de directe toegang tot de foto's via hun URL.

.­.­.

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 als IIS op Windows-systemen loggen HTTP-verzoeken out-of-the-box in bestandsvorm. Verzoeken aan uw eigen website moeten niet alleen regelmatig worden geëvalueerd en geanalyseerd, handmatig en automatisch (bijv. Door logfile-analysers zoals AWStats ) om u te beschermen tegen hackaanvallen. De paden van de relevante logbestanden in veelgebruikte 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 meer speciale directoryrechten nodig heeft voor alle bestanden die via PHP worden geüpload (bijvoorbeeld voor SSH of FTP), kunt u deze ook instellen voor de map C: \ Windows \ Temp \. Als u een bestand uploadt via PHP, kopieert PHP dit bestand eerst naar het tijdelijke en vervolgens naar het laatste pad. Als het bestand in de tijdelijke map is beland, erft het zijn rechten en behoudt het deze na verplaatsing naar de laatste map.

.­.­.

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 discount-fitnessketen McFIT heeft zichzelf een make-over gegeven. Terwijl een felgele mascotte in de vorm van een banaan de blauwe letters sierde, wordt nu een gele strik op een antracietkleurige achtergrond vakkundig in elkaar gelust en vormt zo een abstracte structuur. De FDP-kleuren blauw en geel maken niet alleen plaats voor het logo, maar ook voor alle andere McFIT-merkprints.

.­.­.

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

Als u uw eigen website optimaliseert voor mobiele apparaten, moet u niet alleen letten op verschillende schermformaten, geoptimaliseerde laadtijden en speciale functies in gebruik (zoals hover-effecten), maar ook op de speciale mogelijkheden van de apparaten. Dit omvat ook het voeren van telefoongesprekken (sommige mensen zijn het misschien vergeten).

.­.­.

Dubbele inhoud op blogs

Dezelfde inhoud op verschillende websites wordt in veel gevallen door Google gestraft - niettemin is het Google-algoritme intelligent en herkent het of de elementen in de kop- en voettekst hetzelfde blijven of dat hele testpassages tweemaal onder verschillende URL's kunnen worden bereikt. De spannende vraag is hoe Google omgaat met overzichtspagina's van blogartikelen.

.­.­.

Verhoog de WordPress-beveiliging

De beveiliging van het momenteel meest populaire contentmanagementsysteem WordPress kan aanzienlijk worden verhoogd door twee kleine schroeven te draaien. Het duurt slechts 5 minuten en twee regels code. Hoewel het probleem kan worden opgelost met een verscheidenheid aan plug-ins, beperk ik me bewust tot plug-in-vrije oplossingen.

.­.­.