Help
RSS
API
Feed
Maltego
Contact
Domain > buradanoraya.com
×
Welcome!
Right click nodes and scroll the mouse to navigate the graph.
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2014-11-11
93.104.208.119
(
ClassC
)
2025-01-31
157.173.97.171
(
ClassC
)
Port 80
HTTP/1.1 200 OKDate: Fri, 31 Jan 2025 13:51:36 GMTServer: ApacheLink: https://markandruth.co.uk/wp-json/>; relhttps://api.w.org/Access-Control-Allow-Origin: *Access-Control-Allow-Headers: content-type, originAccess-Control-Allow-Methods: GET, POST, OPTIONSUpgrade: h2Connection: UpgradeVary: Accept-EncodingTransfer-Encoding: chunkedContent-Type: text/html; charsetUTF-8 !DOCTYPE html>!--if IE 7>html classie ie7 langen-US prefixog: https://ogp.me/ns# fb: https://ogp.me/ns/fb# website: https://ogp.me/ns/website#>!endif-->!--if IE 8>html classie ie8 langen-US prefixog: https://ogp.me/ns# fb: https://ogp.me/ns/fb# website: https://ogp.me/ns/website#>!endif-->!--if !(IE 7) & !(IE 8)>!-->html langen-US prefixog: https://ogp.me/ns# fb: https://ogp.me/ns/fb# website: https://ogp.me/ns/website#>!--!endif-->head> meta charsetUTF-8> meta nameviewport contentwidthdevice-width> title>Mark's blog | High-performance Linux optimization and development./title> link relprofile hrefhttps://gmpg.org/xfn/11> link relpingback hrefhttp://markandruth.co.uk/xmlrpc.php> !--if lt IE 9> script srchttp://markandruth.co.uk/wp-content/themes/twentyfourteen/js/html5.js?ver3.7.0>/script> !endif--> link reldns-prefetch href//markandruth.co.uk />link reldns-prefetch href//fonts.googleapis.com />link reldns-prefetch href//s.w.org />link hrefhttps://fonts.gstatic.com crossorigin relpreconnect />link relalternate typeapplication/rss+xml titleMark's blog » Feed hrefhttps://markandruth.co.uk/feed />link relalternate typeapplication/rss+xml titleMark's blog » Comments Feed hrefhttps://markandruth.co.uk/comments/feed /> !-- This site uses the Google Analytics by ExactMetrics plugin v6.7.0 - Using Analytics tracking - https://www.exactmetrics.com/ --> script src//www.googletagmanager.com/gtag/js?idUA-58692765-1 typetext/javascript data-cfasyncfalse>/script> script typetext/javascript data-cfasyncfalse> var em_version 6.7.0; var em_track_user true; var em_no_track_reason ; var disableStr ga-disable-UA-58692765-1; /* Function to detect opted out users */ function __gtagTrackerIsOptedOut() { return document.cookie.indexOf( disableStr + true ) > - 1; } /* Disable tracking if the opt-out cookie exists. */ if ( __gtagTrackerIsOptedOut() ) { windowdisableStr true; } /* Opt-out function */ function __gtagTrackerOptout() { document.cookie disableStr + true; expiresThu, 31 Dec 2099 23:59:59 UTC; path/; windowdisableStr true; } if ( undefined typeof gaOptout ) { function gaOptout() { __gtagTrackerOptout(); } } window.dataLayer window.dataLayer || ; if ( em_track_user ) { function __gtagTracker() {dataLayer.push( arguments );} __gtagTracker( js, new Date() ); __gtagTracker( set, { developer_id.dNDMyYj : true, }); __gtagTracker( config, UA-58692765-1, { forceSSL:true, } ); window.gtag __gtagTracker; ( function () { /* https://developers.google.com/analytics/devguides/collection/analyticsjs/ */ /* ga and __gaTracker compatibility shim. */ var noopfn function () { return null; }; var newtracker function () { return new Tracker(); }; var Tracker function () { return null; }; var p Tracker.prototype; p.get noopfn; p.set noopfn; p.send function (){ var args Array.prototype.slice.call(arguments); args.unshift( send ); __gaTracker.apply(null, args); }; var __gaTracker function () { var len arguments.length; if ( len 0 ) { return; } var f argumentslen - 1; if ( typeof f ! object || f null || typeof f.hitCallback ! function ) { if ( send arguments0 ) { var hitConverted, hitObject false, action; if ( event arguments1 ) { if ( undefined ! typeof arguments3 ) { hitObject { eventAction: arguments3, eventCategory: arguments2, eventLabel: arguments4, value: arguments5 ? arguments5 : 1, } } } if ( typeof arguments2 object ) { hitObject arguments2; } if ( typeof arguments5 object ) { Object.assign( hitObject, arguments5 ); } if ( undefined ! typeof ( arguments1.hitType ) ) { hitObject arguments1; } if ( hitObject ) { action timing arguments1.hitType ? timing_complete : hitObject.eventAction; hitConverted mapArgs( hitObject ); __gtagTracker( event, action, hitConverted ); } } return; } function mapArgs( args ) { var gaKey, hit {}; var gaMap { eventCategory: event_category, eventAction: event_action, eventLabel: event_label, eventValue: event_value, nonInteraction: non_interaction, timingCategory: event_category, timingVar: name, timingValue: value, timingLabel: event_label, }; for ( gaKey in gaMap ) { if ( undefined ! typeof argsgaKey ) { hitgaMapgaKey argsgaKey; } } return hit; } try { f.hitCallback(); } catch ( ex ) { } }; __gaTracker.create newtracker; __gaTracker.getByName newtracker; __gaTracker.getAll function () { return ; }; __gaTracker.remove noopfn; __gaTracker.loaded true; window__gaTracker __gaTracker; } )(); } else { console.log( ); ( function () { function __gtagTracker() { return null; } window__gtagTracker __gtagTracker; windowgtag __gtagTracker; } )(); } /script> !-- / Google Analytics by ExactMetrics --> script> window._wpemojiSettings {baseUrl:https:\/\/s.w.org\/images\/core\/emoji\/13.0.1\/72x72\/,ext:.png,svgUrl:https:\/\/s.w.org\/images\/core\/emoji\/13.0.1\/svg\/,svgExt:.svg,source:{concatemoji:http:\/\/markandruth.co.uk\/wp-includes\/js\/wp-emoji-release.min.js?ver5.6.14}}; !function(e,a,t){var n,r,o,ia.createElement(canvas),pi.getContext&&i.getContext(2d);function s(e,t){var aString.fromCharCode;p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,e),0,0);ei.toDataURL();return p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,t),0,0),ei.toDataURL()}function c(e){var ta.createElement(script);t.srce,t.defert.typetext/javascript,a.getElementsByTagName(head)0.appendChild(t)}for(oArray(flag,emoji),t.supports{everything:!0,everythingExceptFlag:!0},r0;ro.length;r++)t.supportsorfunction(e){if(!p||!p.fillText)return!1;switch(p.textBaselinetop,p.font600 32px Arial,e){caseflag:return s(127987,65039,8205,9895,65039,127987,65039,8203,9895,65039)?!1:!s(55356,56826,55356,56819,55356,56826,8203,55356,56819)&&!s(55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447,55356,57332,8203,56128,56423,8203,56128,56418,8203,56128,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447);caseemoji:return!s(55357,56424,8205,55356,57212,55357,56424,8203,55356,57212)}return!1}(or),t.supports.everythingt.supports.everything&&t.supportsor,flag!or&&(t.supports.everythingExceptFlagt.supports.everythingExceptFlag&&t.supportsor);t.supports.everythingExceptFlagt.supports.everythingExceptFlag&&!t.supports.flag,t.DOMReady!1,t.readyCallbackfunction(){t.DOMReady!0},t.supports.everything||(nfunction(){t.readyCallback()},a.addEventListener?(a.addEventListener(DOMContentLoaded,n,!1),e.addEventListener(load,n,!1)):(e.attachEvent(onload,n),a.attachEvent(onreadystatechange,function(){completea.readyState&&t.readyCallback()})),(nt.source||{}).concatemoji?c(n.concatemoji):n.wpemoji&&n.twemoji&&(c(n.twemoji),c(n.wpemoji)))}(window,document,window._wpemojiSettings); /script> style>img.wp-smiley,img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 .07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important;}/style> link relstylesheet idtwentyfourteen-jetpack-css hrefhttp://markandruth.co.uk/wp-content/plugins/jetpack/modules/theme-tools/compat/twentyfourteen.css?ver9.5.5 mediaall />link relstylesheet idwp-block-library-css hrefhttp://markandruth.co.uk/wp-includes/css/dist/block-library/style.min.css?ver5.6.14 mediaall />style idwp-block-library-inline-css>.has-text-align-justify{text-align:justify;}/style>link relstylesheet idwp-block-library-theme-css hrefhttp://markandruth.co.uk/wp-includes/css/dist/block-library/theme.min.css?ver5.6.14 mediaall />link relstylesheet idtwentyfourteen-lato-css hrefhttps://fonts.googleapis.com/css?familyLato%3A300%2C400%2C700%2C900%2C300italic%2C400italic%2C700italic&subsetlatin%2Clatin-ext&displayfallback mediaall />link relstylesheet idgenericons-css hrefhttp://markandruth.co.uk/wp-content/plugins/jetpack/_inc/genericons/genericons/genericons.css?ver3.1 mediaall />link relstylesheet idtwentyfourteen-style-css hrefhttp://markandruth.co.uk/wp-content/themes/twentyfourteen/style.css?ver20190507 mediaall />link relstylesheet idtwentyfourteen-block-style-css hrefhttp://markandruth.co.uk/wp-content/themes/twentyfourteen/css/blocks.css?ver20190102 mediaall />!--if lt IE 9>link relstylesheet idtwentyfourteen-ie-css hrefhttp://markandruth.co.uk/wp-content/themes/twentyfourteen/css/ie.css?ver20140701 mediaall />!endif-->link relstylesheet idinfinity-twentyfourteen-css hrefhttp://markandruth.co.uk/wp-content/plugins/jetpack/modules/infinite-scroll/themes/twentyfourteen.css?ver20131118 mediaall />link relstylesheet idenlighterjs-css hrefhttp://markandruth.co.uk/wp-content/plugins/enlighter/cache/enlighterjs.min.css?verjmYbxdJM32JbGuM mediaall />link relstylesheet idjetpack_css-css hrefhttp://markandruth.co.uk/wp-content/plugins/jetpack/css/jetpack.css?ver9.5.5 mediaall />script idexactmetrics-frontend-script-js-extra>var exactmetrics_frontend {js_events_tracking:true,download_extensions:zip,mp3,mpeg,pdf,docx,pptx,xlsx,rar,inbound_paths:{\path\:\\\\/go\\\/\,\label\:\affiliate\},{\path\:\\\\/recommend\\\/\,\label\:\affiliate\},home_url:https:\/\/markandruth.co.uk,hash_tracking:false,ua:UA-58692765-1};/script>script srchttp://markandruth.co.uk/wp-content/plugins/google-analytics-dashboard-for-wp/assets/js/frontend-gtag.min.js?ver6.7.0 idexactmetrics-frontend-script-js>/script>script srchttp://markandruth.co.uk/wp-includes/js/jquery/jquery.min.js?ver3.5.1 idjquery-core-js>/script>script srchttp://markandruth.co.uk/wp-includes/js/jquery/jquery-migrate.min.js?ver3.3.2 idjquery-migrate-js>/script>script idpirate-forms-custom-spam-js-extra>var pf {spam:{label:Im human!,value:c23e710fa9}};/script>script srchttp://markandruth.co.uk/wp-content/plugins/pirate-forms/public/js/custom-spam.js?ver5.6.14 idpirate-forms-custom-spam-js>/script>link relhttps://api.w.org/ hrefhttps://markandruth.co.uk/wp-json/ />link relEditURI typeapplication/rsd+xml titleRSD hrefhttps://markandruth.co.uk/xmlrpc.php?rsd />link relwlwmanifest typeapplication/wlwmanifest+xml hrefhttp://markandruth.co.uk/wp-includes/wlwmanifest.xml /> meta namegenerator contentWordPress 5.6.14 />link idMediaRSS relalternate typeapplication/rss+xml titleNextGEN Gallery RSS Feed hrefhttp://markandruth.co.uk/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/xml/media-rss.php />style typetext/css>img#wpstats{display:none}/style>!-- social and search optimization by WPSSO Core v8.24.0 - https://wpsso.com/ -->!-- wpsso meta tags begin -->meta namewpsso:mark:begin contentwpsso meta tags begin/>!-- generator:1 -->meta namegenerator contentWPSSO Core 8.24.0/S/>meta propertyog:type contentwebsite/>meta propertyog:url contenthttps://markandruth.co.uk/>meta propertyog:locale contenten_US/>meta propertyog:site_name contentMark's Thoughts/>meta propertyog:title contentMark's Thoughts/>meta propertyog:description contentHigh-performance Linux optimization and development./>!-- og:image:1 -->meta propertyog:image contenthttps://markandruth.co.uk/wp-content/uploads/2015/01/mark-square-800x800-cropped.jpg/>!-- og:image:1 -->meta propertyog:image:width content800/>!-- og:image:1 -->meta propertyog:image:height content800/>meta nametwitter:domain contentmarkandruth.co.uk/>meta nametwitter:title contentMark's Thoughts/>meta nametwitter:description contentHigh-performance Linux optimization and development./>meta nametwitter:card contentsummary/>meta nametwitter:image contenthttps://markandruth.co.uk/wp-content/uploads/2015/01/mark-square-200x200-cropped.jpg/>link itempropurl hrefhttps://markandruth.co.uk/>meta itempropname contentMark's Thoughts/>meta itempropdescription contentHigh-performance Linux optimization and development./>link itempropthumbnailurl hrefhttps://markandruth.co.uk/wp-content/uploads/2015/01/mark-square-600x315-cropped.jpg/>meta namedescription contentHigh-performance Linux optimization and development./>meta namethumbnail contenthttps://markandruth.co.uk/wp-content/uploads/2015/01/mark-square-600x315-cropped.jpg/>meta namerobots contentfollow, index, max-snippet:-1, max-image-preview:large, max-video-preview:-1/>script typeapplication/ld+json>{ @context: https://schema.org, @graph: { @id: #sso/organization/site/org_logo_url, @context: https://schema.org, @type: Organization, url: https://markandruth.co.uk, name: Mark's Thoughts, description: High-performance Linux optimization and development. }, { @id: #sso/website, @context: https://schema.org, @type: WebSite, url: https://markandruth.co.uk, name: Mark's Thoughts, description: High-performance Linux optimization and development., potentialAction: { @context: https://schema.org, @type: SearchAction, target: https://markandruth.co.uk?s{search_term_string}, query-input: required namesearch_term_string } } }/script>meta namewpsso:mark:end contentwpsso meta tags end/>!-- wpsso meta tags end -->!-- added on 2025-01-31T13:51:36+00:00 in 0.002027 secs from https://markandruth.co.uk -->script typetext/javascript srchttp://markandruth.co.uk/wp-content/plugins/wp-spamshield/js/jscripts.php>/script> /head>body classhome blog wp-embed-responsive group-blog masthead-fixed list-view full-width grid>div idpage classhfeed site> header idmasthead classsite-header rolebanner> div classheader-main> h1 classsite-title>a hrefhttps://markandruth.co.uk/ relhome>Mark's blog/a>/h1> div classsearch-toggle> a href#search-container classscreen-reader-text aria-expandedfalse aria-controlssearch-container>Search/a> /div> nav idprimary-navigation classsite-navigation primary-navigation rolenavigation> button classmenu-toggle>Primary Menu/button> a classscreen-reader-text skip-link href#content>Skip to content/a> div classmenu-main-container>ul idprimary-menu classnav-menu>li idmenu-item-380 classmenu-item menu-item-type-custom menu-item-object-custom menu-item-380>a hrefhttp://mark.zealey.org/>Home/a>/li>li idmenu-item-571 classmenu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-571>a hrefhttps://markandruth.co.uk/about-projects>About/a>ul classsub-menu> li idmenu-item-1064 classmenu-item menu-item-type-post_type menu-item-object-page menu-item-1064>a hrefhttps://markandruth.co.uk/contact>Contact/a>/li>/ul>/li>li idmenu-item-760 classmenu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-760>a hrefhttps://mark.zealey.org>Technical/a>ul classsub-menu> li idmenu-item-396 classmenu-item menu-item-type-taxonomy menu-item-object-category menu-item-396>a hrefhttps://markandruth.co.uk/category/angularjs>AngularJS/a>/li> li idmenu-item-395 classmenu-item menu-item-type-taxonomy menu-item-object-category menu-item-395>a hrefhttps://markandruth.co.uk/category/linux>Linux/a>/li> li idmenu-item-624 classmenu-item menu-item-type-taxonomy menu-item-object-category menu-item-624>a hrefhttps://markandruth.co.uk/category/perl>perl/a>/li>/ul>/li>li idmenu-item-761 classmenu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-761>a hrefhttp://mark.zealey.org>Turkish/a>ul classsub-menu> li idmenu-item-759 classmenu-item menu-item-type-custom menu-item-object-custom menu-item-759>a hrefhttps://mark.zealey.org/dli_books/>DLI Books/a>/li>/ul>/li>li idmenu-item-382 classmenu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-382>a hrefhttps://markandruth.co.uk/projects>Biblical Studies/a>ul classsub-menu> li idmenu-item-383 classmenu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-383>a hrefhttps://markandruth.co.uk/projects/marks_gospel>Essays on Mark/a> ul classsub-menu> li idmenu-item-384 classmenu-item menu-item-type-post_type menu-item-object-page menu-item-384>a hrefhttps://markandruth.co.uk/projects/marks_gospel/authorship-location-and-date-of-marks-gospel>Authorship, Location and Date of Mark’s gospel/a>/li> li idmenu-item-385 classmenu-item menu-item-type-post_type menu-item-object-page menu-item-385>a hrefhttps://markandruth.co.uk/projects/marks_gospel/mark1>Mark 1:4-15/a>/li> li idmenu-item-386 classmenu-item menu-item-type-post_type menu-item-object-page menu-item-386>a hrefhttps://markandruth.co.uk/projects/marks_gospel/storm>Mark 4:35-41 – the Stilling of the Storm/a>/li> li idmenu-item-387 classmenu-item menu-item-type-post_type menu-item-object-page menu-item-387>a hrefhttps://markandruth.co.uk/projects/marks_gospel/mk-92-10-transfiguration>Mark 9:2-10 – Transfiguration/a>/li> li idmenu-item-388 classmenu-item menu-item-type-post_type menu-item-object-page menu-item-388>a hrefhttps://markandruth.co.uk/projects/marks_gospel/mark-1533-39-crucifixion>Mark 15:33-39 – Crucifixion/a>/li> /ul>/li> li idmenu-item-389 classmenu-item menu-item-type-post_type menu-item-object-page menu-item-389>a hrefhttps://markandruth.co.uk/projects/greek-influence-upon-jewish-views-of-resurrection-and-immortality>Greek Influence upon Jewish Views of Resurrection and Immortality/a>/li> li idmenu-item-390 classmenu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-390>a hrefhttps://markandruth.co.uk/projects/jesus-and-christology>Jesus and Christology/a> ul classsub-menu> li idmenu-item-391 classmenu-item menu-item-type-post_type menu-item-object-page menu-item-391>a hrefhttps://markandruth.co.uk/projects/jesus-and-christology/did-jesus-attribute-any-importance-to-his-death>Did Jesus attribute any importance to his death?/a>/li> li idmenu-item-392 classmenu-item menu-item-type-post_type menu-item-object-page menu-item-392>a hrefhttps://markandruth.co.uk/projects/jesus-and-christology/should-jesus-be-seen-as-a-first-century-palestinian-prophet>Should Jesus be seen as a first-century Palestinian prophet?/a>/li> li idmenu-item-393 classmenu-item menu-item-type-post_type menu-item-object-page menu-item-393>a hrefhttps://markandruth.co.uk/projects/jesus-and-christology/what-difference-did-belief-in-the-resurrection-of-jesus-make-for-the-development-of-early-christology>What difference did belief in the resurrection of Jesus make for the development of early Christology?/a>/li> /ul>/li> li idmenu-item-394 classmenu-item menu-item-type-post_type menu-item-object-page menu-item-394>a hrefhttps://markandruth.co.uk/projects/psalms-of-solomon>Psalms of Solomon/a>/li>/ul>/li>/ul>/div> /nav> /div> div idsearch-container classsearch-box-wrapper hide> div classsearch-box> form rolesearch methodget classsearch-form actionhttps://markandruth.co.uk/> label> span classscreen-reader-text>Search for:/span> input typesearch classsearch-field placeholderSearch … value names /> /label> input typesubmit classsearch-submit valueSearch /> /form> /div> /div> /header>!-- #masthead --> div idmain classsite-main>div idmain-content classmain-content> div idprimary classcontent-area> div idcontent classsite-content rolemain> article idpost-1332 classpost-1332 post type-post status-publish format-standard hentry category-random> header classentry-header> div classentry-meta> span classcat-links>a hrefhttps://markandruth.co.uk/category/random relcategory tag>Random/a>/span> /div> h1 classentry-title>a hrefhttps://markandruth.co.uk/2024/09/08/running-musescore-from-within-a-docker-container relbookmark>Running musescore from within a docker container/a>/h1> div classentry-meta> span classentry-date>a hrefhttps://markandruth.co.uk/2024/09/08/running-musescore-from-within-a-docker-container relbookmark>time classentry-date datetime2024-09-08T21:01:32+00:00>Sunday, September 8, 2024/time>/a>/span> span classbyline>span classauthor vcard>a classurl fn n hrefhttps://markandruth.co.uk/author/mark relauthor>Mark/a>/span>/span> span classcomments-link>a hrefhttps://markandruth.co.uk/2024/09/08/running-musescore-from-within-a-docker-container#comments>2 Comments/a>/span> /div>!-- .entry-meta --> /header>!-- .entry-header --> div classentry-content> !-- wpsso pinterest pin it image added on 2025-01-31T13:51:36+00:00 -->div classwpsso-pinterest-pin-it-image styledisplay:none !important;> img srchttps://markandruth.co.uk/wp-content/uploads/2015/01/mark-square.jpg width0 height0 classskip-lazy stylewidth:0;height:0; alt data-pin-descriptionFor a project, I'm wanting to run the excellent musescore from the CLI to bulk convert .mscz files into MusicXML, PDF renders and even instrumental MP3s in bulk. However because the user content is from modern versions of musescore, and the server is very old, I'm having to use docker to run a... />/div>!-- .wpsso-pinterest-pin-it-image -->p>For a project, I’m wanting to run the excellent a relnoreferrer noopener hrefhttps://musescore.org/ data-typeURL data-idhttps://musescore.org/ target_blank>musescore/a> from the CLI to bulk convert .mscz files into MusicXML, PDF renders and even instrumental MP3s in bulk. However because the user content is from modern versions of musescore, and the server is very old, I’m having to use docker to run a modernish version of ubuntu that supports version 4 of musescore. Also when running musescore from a CLI it is very painful because it’s unfortunately built to be a GUI application. The following Dockerfile allows us to run it:/p>pre classEnlighterJSRAW data-enlighter-languagedockerfile data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>FROM ubuntu:22.04RUN apt update && \ DEBIAN_FRONTENDnoninteractive apt install -y --no-install-suggests xvfb wget libopengl0 musescore ca-certificates && \ wget -O musescore.appimage https://cdn.jsdelivr.net/musescore/v4.4.1/MuseScore-Studio-4.4.1.242490810-x86_64.AppImage && \ chmod +x musescore.appimage && \ apt remove -y wget musescore && \ ./musescore.appimage --appimage-extract && \ rm musescore.appimageENTRYPOINT \ # Hangs with the error in the GUI if there was an issue so force it to stop at some point /usr/bin/timeout, 10, \ # Fake X server xvfb-run, -s, -screen 0 640x480x24 -ac +extension GLX +render -noreset, \ # Run the actual command squashfs-root/bin/mscore4portable \ /pre>p>For some reason the appimage itself doesn’t pass stuff through correctly so we have to extract it and run the app directly from the filesystem. We can then run it like:/p>pre classEnlighterJSRAW data-enlighter-languageshell data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>docker run --rm -v $PWD:/data -it musescore /data/001.mscz -o /data/out.xml/pre>p>to convert a file./p> /div>!-- .entry-content --> /article>!-- #post-1332 -->article idpost-1316 classpost-1316 post type-post status-publish format-standard hentry category-random> header classentry-header> div classentry-meta> span classcat-links>a hrefhttps://markandruth.co.uk/category/random relcategory tag>Random/a>/span> /div> h1 classentry-title>a hrefhttps://markandruth.co.uk/2023/11/06/adding-a-primary-key-to-a-partitioned-table-in-postgres-with-zero-downtime-or-locks relbookmark>Adding a primary key to a partitioned table in postgres with zero downtime or locks/a>/h1> div classentry-meta> span classentry-date>a hrefhttps://markandruth.co.uk/2023/11/06/adding-a-primary-key-to-a-partitioned-table-in-postgres-with-zero-downtime-or-locks relbookmark>time classentry-date datetime2023-11-06T18:25:36+00:00>Monday, November 6, 2023/time>/a>/span> span classbyline>span classauthor vcard>a classurl fn n hrefhttps://markandruth.co.uk/author/mark relauthor>Mark/a>/span>/span> span classcomments-link>a hrefhttps://markandruth.co.uk/2023/11/06/adding-a-primary-key-to-a-partitioned-table-in-postgres-with-zero-downtime-or-locks#respond>Leave a comment/a>/span> /div>!-- .entry-meta --> /header>!-- .entry-header --> div classentry-content> !-- wpsso pinterest pin it image added on 2025-01-31T13:51:36+00:00 -->div classwpsso-pinterest-pin-it-image styledisplay:none !important;> img srchttps://markandruth.co.uk/wp-content/uploads/2015/01/mark-square.jpg width0 height0 classskip-lazy stylewidth:0;height:0; alt data-pin-descriptionIn postgres (14), we have a table pubsub_node_option which looks like: Partitioned table "public.pubsub_node_option" Column │ Type │ Collation │ Nullable │ Default ────────┼────────┼───────────┼──────────┼───────── nodeid │ bigint │ │ │ name │ text │ │ not null │ val │ text │ │ not null │... />/div>!-- .wpsso-pinterest-pin-it-image -->p>In postgres (14), we have a table code>pubsub_node_option/code> which looks like:/p>pre classEnlighterJSRAW data-enlighter-languagegeneric data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group> Partitioned table public.pubsub_node_option Column │ Type │ Collation │ Nullable │ Default ────────┼────────┼───────────┼──────────┼───────── nodeid │ bigint │ │ │ name │ text │ │ not null │ val │ text │ │ not null │ Partition key: HASH (nodeid)Indexes: partitioner btree (nodeid)Number of partitions: 64 (Use \d+ to list them.)/pre>p>The 64 partitions are named like code>pubsub_node_option_p0/code> to code>_p63/code>. It has a few hundred Gb of data and we want to add a primary key to it with no downtime or locks (perhaps 1s is acceptable). The standard code>ADD PRIMARY KEY/code> etc commands will lock the table for the duration of the process which means we can’t use them./p>p>In Postgres a primary key is just a unique index over a set of non-null columns. The documentation says that whilst the code>SET NOT NULL/code> command requires a full table scan (with exclusive lock), code>ADD PRIMARY KEY/code> has another option which takes an already-existing index, and strong>if/strong> there is also code>NOT NULL/code> strong>or/strong> a similar code>CHECK/code> constraint on all of the columns it can do it without needing any locks./p>p>So the basic process looks like:/p>ol>li>Add a CHECK constraint on code>nodeid/code>/li>li>Create a unique index over code>(nodeid, name)/code>/li>li>use code>ALTER TABLE ... ADD PRIMARY KEY USING INDEX .../code> to set the PK./li>/ol>p>Lets start with (1). If we just add a code>CHECK/code> constraint directly, postgres will take out an exclusive lock on the table which will freeze all updates for the duration. However there is a code>NOT VALID/code> setting which allows us to later run a validator in the background. So we can do:/p>pre classEnlighterJSRAW data-enlighter-languagegeneric data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>ALTER TABLE pubsub_node_option ADD CONSTRAINT pubsub_node_option_nodeid_not_null CHECK (nodeid is not null) NOT VALID;/pre>p>Then we can try to run the validator which shouldn’t take any locks:/p>pre classEnlighterJSRAW data-enlighter-languagegeneric data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>ALTER TABLE pubsub_node_option VALIDATE CONSTRAINT pubsub_node_option_nodeid_not_null;/pre>p>Unfortunately, at this point the database locks up. Presumably because this is a partitioned table./p>p>So, what I figured out (I’m not sure it’s actually documented anywhere) is that you can run the validator on all partitions, and then it will run instantly without locking on the parent:/p>pre classEnlighterJSRAW data-enlighter-languagegeneric data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>ALTER TABLE only pubsub_node_option_p0 VALIDATE CONSTRAINT pubsub_node_option_nodeid_not_null;...ALTER TABLE only pubsub_node_option_p63 VALIDATE CONSTRAINT pubsub_node_option_nodeid_not_null;ALTER TABLE pubsub_node_option VALIDATE CONSTRAINT pubsub_node_option_nodeid_not_null;/pre>p>So (1) is solved – we’ve shown postgres that we don’t have any code>NULL/code>s in that column./p>p>Time for (2) the code>UNIQUE KEY/code>. An index can be created code>CONCURRENTLY/code> however this doesn’t work on partitioned tables. So we have to create it on each partition and then hook it in to the main table./p>p>Firstly, we create the index on the main table:/p>pre classEnlighterJSRAW data-enlighter-languagegeneric data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>create unique index pubsub_node_option_pkey on only pubsub_node_option (nodeid, name);/pre>p>The code>ON ONLY/code> means it doesn’t happen on the child tables./p>p>Then we create a new index in each of the children, but code>CONCURRENTLY/code> so no locking:/p>pre classEnlighterJSRAW data-enlighter-languagegeneric data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>create unique index concurrently pubsub_node_option_p0_pkey on pubsub_node_option_p0 (nodeid, name);...create unique index concurrently pubsub_node_option_p63_pkey on pubsub_node_option_p63 (nodeid, name);/pre>p>Now this is done we can attach each of them in to the main primary key:/p>pre classEnlighterJSRAW data-enlighter-languagegeneric data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>alter index pubsub_node_option_pkey attach partition pubsub_node_option_p0_pkey;...alter index pubsub_node_option_pkey attach partition pubsub_node_option_p63_pkey;/pre>p>Perfect./p>p>Then, we should be able to do the final step of the process to convert the index + check constraint to a primary key (which is really only a bit of semantics for Postgres):/p>pre classEnlighterJSRAW data-enlighter-languagegeneric data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>> alter table pubsub_node_option add primary key using index pubsub_node_option_pkey;ERROR: ALTER TABLE / ADD CONSTRAINT USING INDEX is not supported on partitioned tables/pre>p>D’oh. But at least we can add to all of the individual tables:/p>pre classEnlighterJSRAW data-enlighter-languagegeneric data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>alter table pubsub_node_option_p0 add primary key using index pubsub_node_option_p0_pkey;...alter table pubsub_node_option_p63 add primary key using index pubsub_node_option_p63_pkey;.../pre>p>I still can’t see a way to add it to the main table though, even code>ALTER TABLE ONLY pubsub_node_option/code> comes up with the same error./p>p>I’m not really sure where to go from here, however the reason for wanting a code>PRIMARY KEY/code> is because we want to use code>pglogical/code> to replicate data, and this requires “a PRIMARY KEY or other valid replica identity such as using an index, which must be unique, not partial, not deferrable, and include only columns marked NOT NULL”. So I em>think/em> we should be OK with how far we have gotten for now./p>p>Please leave a comment if you know how to complete the process!/p> /div>!-- .entry-content --> /article>!-- #post-1316 -->article idpost-1312 classpost-1312 post type-post status-publish format-standard hentry category-random> header classentry-header> div classentry-meta> span classcat-links>a hrefhttps://markandruth.co.uk/category/random relcategory tag>Random/a>/span> /div> h1 classentry-title>a hrefhttps://markandruth.co.uk/2023/11/04/easily-running-unison-on-different-ubuntu-versions relbookmark>Easily running unison on different Ubuntu versions/a>/h1> div classentry-meta> span classentry-date>a hrefhttps://markandruth.co.uk/2023/11/04/easily-running-unison-on-different-ubuntu-versions relbookmark>time classentry-date datetime2023-11-04T17:37:38+00:00>Saturday, November 4, 2023/time>/a>/span> span classbyline>span classauthor vcard>a classurl fn n hrefhttps://markandruth.co.uk/author/mark relauthor>Mark/a>/span>/span> span classcomments-link>a hrefhttps://markandruth.co.uk/2023/11/04/easily-running-unison-on-different-ubuntu-versions#respond>Leave a comment/a>/span> /div>!-- .entry-meta --> /header>!-- .entry-header --> div classentry-content> !-- wpsso pinterest pin it image added on 2025-01-31T13:51:36+00:00 -->div classwpsso-pinterest-pin-it-image styledisplay:none !important;> img srchttps://markandruth.co.uk/wp-content/uploads/2015/01/mark-square.jpg width0 height0 classskip-lazy stylewidth:0;height:0; alt data-pin-descriptionUnison is a great file-synchronization tool, but it's highly dependent on both the unison version and the OCAML version being the same between client and server to enable syncing. I've wasted much time over the years trying to backport versions to ubuntu as I upgrade a laptop but not the server... />/div>!-- .wpsso-pinterest-pin-it-image -->p>Unison is a great file-synchronization tool, but it’s highly dependent on both the unison version and the OCAML version being the same between client and server to enable syncing. I’ve wasted much time over the years trying to backport versions to ubuntu as I upgrade a laptop but not the server it backs up to or vice-versa./p>p>This seems like a great problem to solve with containers, and fortunately it seems like it’s quite easy./p>p>Create a new unison container on the server – Dockerfile should look like:/p>pre classEnlighterJSRAW data-enlighter-languagedockerfile data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>FROM ubuntu:22.04RUN apt update && apt -y install unison/pre>p>Then, build it:/p>pre classEnlighterJSRAW data-enlighter-languagegeneric data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>docker build --network host -t unison ./pre>p>And create code>/usr/bin/unison/code> looking like:/p>pre classEnlighterJSRAW data-enlighter-languagegeneric data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>#!/bin/bashEXTRAfor g in $(id -G); do EXTRA$EXTRA --group-add $gdoneexec docker run --rm \ -v /home/:/home/ \ -e USER$USER -e HOME$HOME \ -u $(id -u):$(id -g) \ $EXTRA \ -v /etc/passwd:/etc/passwd:ro \ -v /etc/group:/etc/group:ro \ --network host \ -i \ unison \ unison $@/pre>p>It’s necessary to run on host network so it picks up the server’s hostname as unison is highly dependent on this, and the environment variables that are passed in./p>p>Then it seems to work just fine. Happy days!/p> /div>!-- .entry-content --> /article>!-- #post-1312 -->article idpost-1307 classpost-1307 post type-post status-publish format-standard hentry category-random> header classentry-header> div classentry-meta> span classcat-links>a hrefhttps://markandruth.co.uk/category/random relcategory tag>Random/a>/span> /div> h1 classentry-title>a hrefhttps://markandruth.co.uk/2023/08/21/easily-dumping-all-aws-ssm-details relbookmark>Easily dumping all AWS SSM details/a>/h1> div classentry-meta> span classentry-date>a hrefhttps://markandruth.co.uk/2023/08/21/easily-dumping-all-aws-ssm-details relbookmark>time classentry-date datetime2023-08-21T11:37:22+00:00>Monday, August 21, 2023/time>/a>/span> span classbyline>span classauthor vcard>a classurl fn n hrefhttps://markandruth.co.uk/author/mark relauthor>Mark/a>/span>/span> span classcomments-link>a hrefhttps://markandruth.co.uk/2023/08/21/easily-dumping-all-aws-ssm-details#respond>Leave a comment/a>/span> /div>!-- .entry-meta --> /header>!-- .entry-header --> div classentry-content> !-- wpsso pinterest pin it image added on 2025-01-31T13:51:36+00:00 -->div classwpsso-pinterest-pin-it-image styledisplay:none !important;> img srchttps://markandruth.co.uk/wp-content/uploads/2015/01/mark-square.jpg width0 height0 classskip-lazy stylewidth:0;height:0; alt data-pin-descriptionWe have a lot of credentials and config mixed up in AWS SSM/Parameter Store over many different regions and profiles. We want to export all of these to a spreadsheet to allow some more junior team members to convert the non-secret ones into standard parameters which can be stored in our... />/div>!-- .wpsso-pinterest-pin-it-image -->p>We have a lot of credentials and config mixed up in AWS SSM/Parameter Store over many different regions and profiles. We want to export all of these to a spreadsheet to allow some more junior team members to convert the non-secret ones into standard parameters which can be stored in our kubernetes git config (on a per-environment basis). The following script does this:/p>pre classEnlighterJSRAW data-enlighter-languageshell data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>#!/bin/bashfor profile in x y z; do awsv2 --profile $profile ssm get-parameters-by-path --path / --with-decryption > paramstore-$profile.jsondonecat *.json | jq -r .Parameters | select(.Name+.Value |test(pass|private|secret|token|://.*:|certificate|pwd|cookie|key; i)|not) | .Name, .Value | @csv > out.csv/pre> /div>!-- .entry-content --> /article>!-- #post-1307 -->article idpost-1299 classpost-1299 post type-post status-publish format-standard hentry category-random> header classentry-header> div classentry-meta> span classcat-links>a hrefhttps://markandruth.co.uk/category/random relcategory tag>Random/a>/span> /div> h1 classentry-title>a hrefhttps://markandruth.co.uk/2022/12/20/using-postgres-notify-with-placeholders relbookmark>Using Postgres NOTIFY with placeholders/a>/h1> div classentry-meta> span classentry-date>a hrefhttps://markandruth.co.uk/2022/12/20/using-postgres-notify-with-placeholders relbookmark>time classentry-date datetime2022-12-20T17:36:37+00:00>Tuesday, December 20, 2022/time>/a>/span> span classbyline>span classauthor vcard>a classurl fn n hrefhttps://markandruth.co.uk/author/mark relauthor>Mark/a>/span>/span> span classcomments-link>a hrefhttps://markandruth.co.uk/2022/12/20/using-postgres-notify-with-placeholders#respond>Leave a comment/a>/span> /div>!-- .entry-meta --> /header>!-- .entry-header --> div classentry-content> !-- wpsso pinterest pin it image added on 2025-01-31T13:51:36+00:00 -->div classwpsso-pinterest-pin-it-image styledisplay:none !important;> img srchttps://markandruth.co.uk/wp-content/uploads/2015/01/mark-square.jpg width0 height0 classskip-lazy stylewidth:0;height:0; alt data-pin-descriptionWhen writing SQL you always want to use placeholders rather than trying to escape text yourself and risk an SQL injection attack. Postgres provides great functionality for this such as: SELECT * FROM table WHERE username $1 Today I was trying to send arbitrary text to a channel via the very... />/div>!-- .wpsso-pinterest-pin-it-image -->p>When writing SQL you always want to use placeholders rather than trying to escape text yourself and risk an SQL injection attack./p>p>Postgres provides great functionality for this such as:/p>pre classEnlighterJSRAW data-enlighter-languagesql data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>SELECT * FROM table WHERE username $1/pre>p>Today I was trying to send arbitrary text to a channel via the very powerful code>NOTIFY/code> command. However every time I tried to use placeholders I was getting errors (from python’s code>asyncpg/code> driver, which is pulling it directly from postgres error code code>42601/code>)./p>p>Eventually, looking through the docs I found a hrefhttps://www.postgresql.org/docs/current/sql-notify.html#id-1.9.3.158.7.5.2 target_blank relnoreferrer noopener>this quote/a>:/p>blockquote classwp-block-quote>p>To send a notification you can also use the function code>pg_notify(text, text)/code>. The function takes the channel name as the first argument and the payload as the second. The function is much easier to use than the code>NOTIFY/code> command if you need to work with non-constant channel names and payloads./p>/blockquote>p>So, after wasting an hour trying all sorts of different quoting strategies, I was able to change code>NOTIFY $1, $2/code> into code>SELECT pg_notify($1, $2)/code> and resolve the issue./p>p>I’m using SQLAlchemy by the way so it looks something like:/p>pre classEnlighterJSRAW data-enlighter-languagesql data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>from sqlalchemy import text await session.execute( text(SELECT pg_notify(:channel, :data)) .bindparams(channelchannel, datamy text))/pre>p>Perfect!/p> /div>!-- .entry-content --> /article>!-- #post-1299 -->article idpost-1296 classpost-1296 post type-post status-publish format-standard hentry category-random> header classentry-header> div classentry-meta> span classcat-links>a hrefhttps://markandruth.co.uk/category/random relcategory tag>Random/a>/span> /div> h1 classentry-title>a hrefhttps://markandruth.co.uk/2022/11/14/hacking-elasticsearch-python-client-to-work-with-aws-opensearch relbookmark>Hacking ElasticSearch python client to work with AWS OpenSearch/a>/h1> div classentry-meta> span classentry-date>a hrefhttps://markandruth.co.uk/2022/11/14/hacking-elasticsearch-python-client-to-work-with-aws-opensearch relbookmark>time classentry-date datetime2022-11-14T11:09:56+00:00>Monday, November 14, 2022/time>/a>/span> span classbyline>span classauthor vcard>a classurl fn n hrefhttps://markandruth.co.uk/author/mark relauthor>Mark/a>/span>/span> span classcomments-link>a hrefhttps://markandruth.co.uk/2022/11/14/hacking-elasticsearch-python-client-to-work-with-aws-opensearch#respond>Leave a comment/a>/span> /div>!-- .entry-meta --> /header>!-- .entry-header --> div classentry-content> !-- wpsso pinterest pin it image added on 2025-01-31T13:51:37+00:00 -->div classwpsso-pinterest-pin-it-image styledisplay:none !important;> img srchttps://markandruth.co.uk/wp-content/uploads/2015/01/mark-square.jpg width0 height0 classskip-lazy stylewidth:0;height:0; alt data-pin-descriptionBecause of various disagreements between AWS and ElasticSearch, AWS released a fork called OpenSearch but and Elastic updated their clients to throw errors if you try to use them with this product. This is obviously really annoying if you are using 3rd party software which uses the Elastic... />/div>!-- .wpsso-pinterest-pin-it-image -->p>Because of various disagreements between AWS and ElasticSearch, AWS released a fork called OpenSearch but and Elastic updated their clients to throw errors if you try to use them with this product./p>p>This is obviously really annoying if you are using 3rd party software which uses the Elastic libraries, but trying to run them against AWS managed services. The following hack fixes this for Python elasticsearch v7.17 at least, by disabling the unnecessary version check:/p>pre classEnlighterJSRAW data-enlighter-languagepython data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group># Hack elasticsearch to work with AWSfrom elasticsearch import TransportTransport._do_verify_elasticsearch lambda self, headers, timeout: None/pre>p>/p> /div>!-- .entry-content --> /article>!-- #post-1296 -->article idpost-1291 classpost-1291 post type-post status-publish format-standard hentry category-random> header classentry-header> div classentry-meta> span classcat-links>a hrefhttps://markandruth.co.uk/category/random relcategory tag>Random/a>/span> /div> h1 classentry-title>a hrefhttps://markandruth.co.uk/2022/03/18/screen-corruption-on-kde-with-ubuntu-20-04 relbookmark>Screen corruption on KDE with Ubuntu 20.04/a>/h1> div classentry-meta> span classentry-date>a hrefhttps://markandruth.co.uk/2022/03/18/screen-corruption-on-kde-with-ubuntu-20-04 relbookmark>time classentry-date datetime2022-03-18T17:34:30+00:00>Friday, March 18, 2022/time>/a>/span> span classbyline>span classauthor vcard>a classurl fn n hrefhttps://markandruth.co.uk/author/mark relauthor>Mark/a>/span>/span> span classcomments-link>a hrefhttps://markandruth.co.uk/2022/03/18/screen-corruption-on-kde-with-ubuntu-20-04#respond>Leave a comment/a>/span> /div>!-- .entry-meta --> /header>!-- .entry-header --> div classentry-content> !-- wpsso pinterest pin it image added on 2025-01-31T13:51:37+00:00 -->div classwpsso-pinterest-pin-it-image styledisplay:none !important;> img srchttps://markandruth.co.uk/wp-content/uploads/2015/01/mark-square.jpg width0 height0 classskip-lazy stylewidth:0;height:0; alt data-pin-descriptionAt some point in the past couple of weeks I guess my laptop updated libraries or something, because when I had to reboot my laptop yesterday I started seeing massive screen corruption in some applications. It manifested itself in horizontal white/black lines remaining especially when selecting... />/div>!-- .wpsso-pinterest-pin-it-image -->p>At some point in the past couple of weeks I guess my laptop updated libraries or something, because when I had to reboot my laptop yesterday I started seeing massive screen corruption in some applications. It manifested itself in horizontal white/black lines remaining especially when selecting text. This was especially visible in konsole. I couldn’t see any package in particular which had updated recently and I tried looking at a few different Xorg or kernel options but to no avail.br />br />Eventually I looked at the KDE compositor settings. I noticed that the “Rendering Backend” was set to XRender, which as far as I understand it is very old. Updating it to ‘OpenGL 3.1 instantly fixed the issue.br />br />I’m leaving this mostly as a note to myself for if it happens again in the future, but at the same time perhaps it is a wider regression in the ubuntu 20.04 KDE packages so it would help someone else./p> /div>!-- .entry-content --> /article>!-- #post-1291 -->article idpost-1283 classpost-1283 post type-post status-publish format-standard hentry category-random> header classentry-header> div classentry-meta> span classcat-links>a hrefhttps://markandruth.co.uk/category/random relcategory tag>Random/a>/span> /div> h1 classentry-title>a hrefhttps://markandruth.co.uk/2022/01/28/best-wordle-starter-words relbookmark>Best wordle starter words/a>/h1> div classentry-meta> span classentry-date>a hrefhttps://markandruth.co.uk/2022/01/28/best-wordle-starter-words relbookmark>time classentry-date datetime2022-01-28T11:25:18+00:00>Friday, January 28, 2022/time>/a>/span> span classbyline>span classauthor vcard>a classurl fn n hrefhttps://markandruth.co.uk/author/mark relauthor>Mark/a>/span>/span> span classcomments-link>a hrefhttps://markandruth.co.uk/2022/01/28/best-wordle-starter-words#respond>Leave a comment/a>/span> /div>!-- .entry-meta --> /header>!-- .entry-header --> div classentry-content> !-- wpsso pinterest pin it image added on 2025-01-31T13:51:37+00:00 -->div classwpsso-pinterest-pin-it-image styledisplay:none !important;> img srchttps://markandruth.co.uk/wp-content/uploads/2015/01/mark-square.jpg width0 height0 classskip-lazy stylewidth:0;height:0; alt data-pin-descriptionI recently, like pretty much everyone else got into Wordle. One of the most important things in getting the correct answer is to find the best first word or two to start with which will help guide you to the correct answer. The ideal first word(s) should use one each of the most common letters... />/div>!-- .wpsso-pinterest-pin-it-image -->p>I recently, like pretty much everyone else got into a relnoreferrer noopener hrefhttps://www.powerlanguage.co.uk/wordle/ data-typeURL data-idhttps://www.powerlanguage.co.uk/wordle/ target_blank>Wordle/a>. One of the most important things in getting the correct answer is to find the best first word or two to start with which will help guide you to the correct answer. The ideal first word(s) should use one each of the most common letters so for example in the first 2 guesses you can test the top 10 characters./p>p>My first (relatively uneducated) guesses based on what I vaguely remembered about letter frequency in English were ‘spear’ and ‘mount’ – 4 vowels and some of the most common consonants. However it’s pretty much a random guess so I was wondering if we could figure out a better approach./p>p>It’s pretty straight forward to look at the source code of Wordle, which contains two word lists. The first one contains 2315 5-letter words which can be the answer, the second contains a further 10,000 of all possible 5 letter words in English./p>p>So, I wrote a small script to analyse the frequency of letters in the list of possible answers, and then based on that filter the possible words to find the best starting (and subsequent) guesses which would work./p>p>I’ve put the simple python script I used at the bottom of the article, but the output is:/p>p>Matching 5 new letters (39%) are: ‘arose’br />Matching 5 new letters (66%) are: ‘unlit’, ‘until’br />Matching 4 new letters (81%) are: ‘duchy’br />Matching 3 new letters (89%) are: ‘pygmy’/p>p>What this means is that if you start with the word ‘arose’, and then ‘until’ (or ‘unlit’), even though it’s only 10 unique letters (38% of the alphabet) because they are the most frequent ones they will cover 2/3 (66%) of the possible words./p>p>In terms of letter frequency overall we get the following ordered detail:/p>p>(‘e’, 1233), (‘a’, 979), (‘r’, 899), (‘o’, 754), (‘t’, 729), (‘l’, 719), (‘i’, 671), (‘s’, 669), (‘n’, 575), (‘c’, 477), (‘u’, 467), (‘y’, 425), (‘d’, 393), (‘h’, 389),br />(‘p’, 367), (‘m’, 316), (‘g’, 311), (‘b’, 281), (‘f’, 230), (‘k’, 210), (‘w’, 195), (‘v’, 153), (‘z’, 40), (‘x’, 37), (‘q’, 29), (‘j’, 27)/p>p>The script I wrote is not perfect but it’s at least a start at finding some optimum words/p>pre classEnlighterJSRAW data-enlighter-languagepython data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>import syswith open(sys.argv1) as fh: words l.strip() for l in fhchars {}for char in .join(words): charschar chars.get(char, 0) + 1frequency sorted(chars.keys(), keylambda c: -charsc)print(sorted(chars.items(), keylambda c: -c1))total_freq 0while len(frequency) > 5: matching words letters for char in frequency: new_matching w for w in matching if char in w if new_matching: matching new_matching letters.append(char) if len(letters) 5: break total_freq + sum(charsc for c in letters) print(Matching %d new letters (%d%%) are: %r % (len(letters), total_freq / sum(chars.values()) * 100, matching)) frequency c for c in frequency if c not in letters/pre>p>/p> /div>!-- .entry-content --> /article>!-- #post-1283 -->article idpost-1247 classpost-1247 post type-post status-publish format-standard hentry category-dns category-iptables category-linux category-security> header classentry-header> div classentry-meta> span classcat-links>a hrefhttps://markandruth.co.uk/category/dns relcategory tag>DNS/a>, a hrefhttps://markandruth.co.uk/category/iptables relcategory tag>IPTables/a>, a hrefhttps://markandruth.co.uk/category/linux relcategory tag>Linux/a>, a hrefhttps://markandruth.co.uk/category/security relcategory tag>Security/a>/span> /div> h1 classentry-title>a hrefhttps://markandruth.co.uk/2020/11/13/simple-mitigation-for-the-new-dns-cache-poisoning-attack relbookmark>Simple mitigation for the new DNS cache poisoning attack/a>/h1> div classentry-meta> span classentry-date>a hrefhttps://markandruth.co.uk/2020/11/13/simple-mitigation-for-the-new-dns-cache-poisoning-attack relbookmark>time classentry-date datetime2020-11-13T11:37:02+00:00>Friday, November 13, 2020/time>/a>/span> span classbyline>span classauthor vcard>a classurl fn n hrefhttps://markandruth.co.uk/author/mark relauthor>Mark/a>/span>/span> span classcomments-link>a hrefhttps://markandruth.co.uk/2020/11/13/simple-mitigation-for-the-new-dns-cache-poisoning-attack#respond>Leave a comment/a>/span> /div>!-- .entry-meta --> /header>!-- .entry-header --> div classentry-content> !-- wpsso pinterest pin it image added on 2025-01-31T13:51:37+00:00 -->div classwpsso-pinterest-pin-it-image styledisplay:none !important;> img srchttps://markandruth.co.uk/wp-content/uploads/2015/01/mark-square.jpg width0 height0 classskip-lazy stylewidth:0;height:0; alt data-pin-descriptionAs reported in many places, a new attack has been presented which can allow an attacker to poison caching and forwarding DNS server entries. The PDF is an interesting read and contains many different ideas which chained together can lead to this attack. I believe the following firewall rule... />/div>!-- .wpsso-pinterest-pin-it-image -->p>As reported in a hrefhttps://arstechnica.com/information-technology/2020/11/researchers-find-way-to-revive-kaminskys-2008-dns-cache-poisoning-attack/ target_blank relnoopener noreferrer>many places/a>, a new attack has been presented which can allow an attacker to poison caching and forwarding DNS server entries. a hrefhttps://dl.acm.org/doi/pdf/10.1145/3372297.3417280 target_blank relnoopener noreferrer>The PDF is an interesting read/a> and contains many different ideas which chained together can lead to this attack. I believe the following firewall rule should defend against the attack on caching servers with very little side effect by preventing sending of ICMP messages saying that the given UDP port was unreachable:/p>pre classEnlighterJSRAW data-enlighter-languageshell data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>iptables -I OUTPUT -p icmp --icmp-type port-unreachable -m u32 --u32 34 & 0xFF 17 -j DROP/pre> /div>!-- .entry-content --> /article>!-- #post-1247 -->article idpost-1229 classpost-1229 post type-post status-publish format-standard hentry category-centos category-docker category-linux> header classentry-header> div classentry-meta> span classcat-links>a hrefhttps://markandruth.co.uk/category/centos relcategory tag>Centos/a>, a hrefhttps://markandruth.co.uk/category/docker relcategory tag>Docker/a>, a hrefhttps://markandruth.co.uk/category/linux relcategory tag>Linux/a>/span> /div> h1 classentry-title>a hrefhttps://markandruth.co.uk/2020/10/10/running-systemd-inside-a-centos-8-docker-container relbookmark>Running systemd inside a Centos 8 Docker container/a>/h1> div classentry-meta> span classentry-date>a hrefhttps://markandruth.co.uk/2020/10/10/running-systemd-inside-a-centos-8-docker-container relbookmark>time classentry-date datetime2020-10-10T08:24:58+00:00>Saturday, October 10, 2020/time>/a>/span> span classbyline>span classauthor vcard>a classurl fn n hrefhttps://markandruth.co.uk/author/mark relauthor>Mark/a>/span>/span> span classcomments-link>a hrefhttps://markandruth.co.uk/2020/10/10/running-systemd-inside-a-centos-8-docker-container#respond>Leave a comment/a>/span> /div>!-- .entry-meta --> /header>!-- .entry-header --> div classentry-content> !-- wpsso pinterest pin it image added on 2025-01-31T13:51:37+00:00 -->div classwpsso-pinterest-pin-it-image styledisplay:none !important;> img srchttps://markandruth.co.uk/wp-content/uploads/2015/01/mark-square.jpg width0 height0 classskip-lazy stylewidth:0;height:0; alt data-pin-descriptionSupport for systemd in Docker has improved a lot since this 2016 article, but it's still not obvious quite how to make it work. Why would you want this? Mostly for testing full-server deploys (for example we test ansible deployments against various docker containers to ensure there are no bugs)... />/div>!-- .wpsso-pinterest-pin-it-image -->Support for systemd in Docker has improved a lot since a hrefhttps://developers.redhat.com/blog/2016/09/13/running-systemd-in-a-non-privileged-container/>this 2016 article/a>, but it’s still not obvious quite how to make it work. Why would you want this? Mostly for testing full-server deploys (for example we test ansible deployments against various docker containers to ensure there are no bugs).Here’s a systemd-based centos 8 Dockerfile that also includes an ssh server: pre classEnlighterJSRAW data-enlighter-languagesh data-enlighter-title>FROM centos:8# Set up base packages that are expectedRUN dnf -y install openssh-server crontabs NetworkManager firewalld selinux-policyRUN systemctl mask dev-mqueue.mount dev-hugepages.mount \ systemd-remount-fs.service sys-kernel-config.mount \ sys-kernel-debug.mount sys-fs-fuse-connections.mount \ graphical.target systemd-logind.service \ NetworkManager.service systemd-hostnamed.serviceSTOPSIGNAL SIGRTMIN+3# SSHd setupEXPOSE 22COPY docker.pub /root/.ssh/authorized_keysRUN chmod 600 /etc/ssh/ssh_host* /root/.ssh/authorized_keysCMD "/sbin/init"/pre> You can then launch this like: pre classEnlighterJSRAW data-enlighter-languagesh data-enlighter-title>docker run -v /sys/fs/cgroup:/sys/fs/cgroup:ro --tmpfs /run container-name/pre> For the latest centos 7 you can use the following Dockerfile: pre classEnlighterJSRAW data-enlighter-languagesh data-enlighter-title>FROM centos:7RUN yum -y install openssh-server NetworkManager firewalld && \ systemctl disable NetworkManager && systemctl enable sshdEXPOSE 22COPY docker.pub /root/.ssh/authorized_keysRUN chmod 600 /etc/ssh/ssh_host* /root/.ssh/authorized_keysSTOPSIGNAL SIGRTMIN+3CMD "/sbin/init"/pre> /div>!-- .entry-content --> /article>!-- #post-1229 --> nav classnavigation paging-navigation rolenavigation> h1 classscreen-reader-text>Posts navigation/h1> div classpagination loop-pagination> span aria-currentpage classpage-numbers current>1/span>a classpage-numbers hrefhttps://markandruth.co.uk/page/2>2/a>span classpage-numbers dots>…/span>a classpage-numbers hrefhttps://markandruth.co.uk/page/26>26/a>a classnext page-numbers hrefhttps://markandruth.co.uk/page/2>Next →/a> /div>!-- .pagination --> /nav>!-- .navigation --> /div>!-- #content --> /div>!-- #primary --> /div>!-- #main-content -->div idsecondary> h2 classsite-description>High-performance Linux optimization and development./h2> div idprimary-sidebar classprimary-sidebar widget-area rolecomplementary> aside idblog_subscription-2 classwidget widget_blog_subscription jetpack_subscription_widget>h1 classwidget-title>Subscribe to Blog via Email/h1> form action# methodpost accept-charsetutf-8 idsubscribe-blog-blog_subscription-2> div idsubscribe-text>p>Enter your email address to subscribe to this blog and receive notifications of new posts by email./p>/div> p idsubscribe-email> label idjetpack-subscribe-label classscreen-reader-text forsubscribe-field-blog_subscription-2> Email Address /label> input typeemail nameemail requiredrequired value idsubscribe-field-blog_subscription-2 placeholderEmail Address /> /p> p idsubscribe-submit> input typehidden nameaction valuesubscribe/> input typehidden namesource valuehttp://buradanoraya.com//> input typehidden namesub-type valuewidget/> input typehidden nameredirect_fragment valueblog_subscription-2/> button typesubmit namejetpack_subscriptions_widget > Subscribe /button> /p> /form> /aside>aside idcalendar-3 classwidget widget_calendar>div idcalendar_wrap classcalendar_wrap>table idwp-calendar classwp-calendar-table> caption>January 2025/caption> thead> tr> th scopecol titleMonday>M/th> th scopecol titleTuesday>T/th> th scopecol titleWednesday>W/th> th scopecol titleThursday>T/th> th scopecol titleFriday>F/th> th scopecol titleSaturday>S/th> th scopecol titleSunday>S/th> /tr> /thead> tbody> tr> td colspan2 classpad> /td>td>1/td>td>2/td>td>3/td>td>4/td>td>5/td> /tr> tr> td>6/td>td>7/td>td>8/td>td>9/td>td>10/td>td>11/td>td>12/td> /tr> tr> td>13/td>td>14/td>td>15/td>td>16/td>td>17/td>td>18/td>td>19/td> /tr> tr> td>20/td>td>21/td>td>22/td>td>23/td>td>24/td>td>25/td>td>26/td> /tr> tr> td>27/td>td>28/td>td>29/td>td>30/td>td idtoday>31/td> td classpad colspan2> /td> /tr> /tbody> /table>nav aria-labelPrevious and next months classwp-calendar-nav> span classwp-calendar-nav-prev>a hrefhttps://markandruth.co.uk/2024/09>« Sep/a>/span> span classpad> /span> span classwp-calendar-nav-next> /span> /nav>/div>/aside>aside idarchives-3 classwidget widget_archive>h1 classwidget-title>Archives/h1>nav rolenavigation aria-labelArchives> ul> li>a hrefhttps://markandruth.co.uk/2024/09>September 2024/a>/li> li>a hrefhttps://markandruth.co.uk/2023/11>November 2023/a>/li> li>a hrefhttps://markandruth.co.uk/2023/08>August 2023/a>/li> li>a hrefhttps://markandruth.co.uk/2022/12>December 2022/a>/li> li>a hrefhttps://markandruth.co.uk/2022/11>November 2022/a>/li> li>a hrefhttps://markandruth.co.uk/2022/03>March 2022/a>/li> li>a hrefhttps://markandruth.co.uk/2022/01>January 2022/a>/li> li>a hrefhttps://markandruth.co.uk/2020/11>November 2020/a>/li> li>a hrefhttps://markandruth.co.uk/2020/10>October 2020/a>/li> li>a hrefhttps://markandruth.co.uk/2020/05>May 2020/a>/li> li>a hrefhttps://markandruth.co.uk/2019/09>September 2019/a>/li> li>a hrefhttps://markandruth.co.uk/2019/08>August 2019/a>/li> li>a hrefhttps://markandruth.co.uk/2019/06>June 2019/a>/li> li>a hrefhttps://markandruth.co.uk/2019/05>May 2019/a>/li> li>a hrefhttps://markandruth.co.uk/2019/04>April 2019/a>/li> li>a hrefhttps://markandruth.co.uk/2019/03>March 2019/a>/li> li>a hrefhttps://markandruth.co.uk/2018/12>December 2018/a>/li> li>a hrefhttps://markandruth.co.uk/2018/02>February 2018/a>/li> li>a hrefhttps://markandruth.co.uk/2017/12>December 2017/a>/li> li>a hrefhttps://markandruth.co.uk/2017/11>November 2017/a>/li> li>a hrefhttps://markandruth.co.uk/2017/10>October 2017/a>/li> li>a hrefhttps://markandruth.co.uk/2017/09>September 2017/a>/li> li>a hrefhttps://markandruth.co.uk/2017/06>June 2017/a>/li> li>a hrefhttps://markandruth.co.uk/2017/05>May 2017/a>/li> li>a hrefhttps://markandruth.co.uk/2016/12>December 2016/a>/li> li>a hrefhttps://markandruth.co.uk/2016/08>August 2016/a>/li> li>a hrefhttps://markandruth.co.uk/2016/07>July 2016/a>/li> li>a hrefhttps://markandruth.co.uk/2016/06>June 2016/a>/li> li>a hrefhttps://markandruth.co.uk/2016/05>May 2016/a>/li> li>a hrefhttps://markandruth.co.uk/2016/03>March 2016/a>/li> li>a hrefhttps://markandruth.co.uk/2016/02>February 2016/a>/li> li>a hrefhttps://markandruth.co.uk/2016/01>January 2016/a>/li> li>a hrefhttps://markandruth.co.uk/2015/12>December 2015/a>/li> li>a hrefhttps://markandruth.co.uk/2015/08>August 2015/a>/li> li>a hrefhttps://markandruth.co.uk/2015/07>July 2015/a>/li> li>a hrefhttps://markandruth.co.uk/2015/06>June 2015/a>/li> li>a hrefhttps://markandruth.co.uk/2015/05>May 2015/a>/li> li>a hrefhttps://markandruth.co.uk/2015/04>April 2015/a>/li> li>a hrefhttps://markandruth.co.uk/2015/03>March 2015/a>/li> li>a hrefhttps://markandruth.co.uk/2015/02>February 2015/a>/li> li>a hrefhttps://markandruth.co.uk/2015/01>January 2015/a>/li> li>a hrefhttps://markandruth.co.uk/2014/12>December 2014/a>/li> li>a hrefhttps://markandruth.co.uk/2014/11>November 2014/a>/li> li>a hrefhttps://markandruth.co.uk/2011/06>June 2011/a>/li> li>a hrefhttps://markandruth.co.uk/2010/07>July 2010/a>/li> li>a hrefhttps://markandruth.co.uk/2010/06>June 2010/a>/li> li>a hrefhttps://markandruth.co.uk/2007/07>July 2007/a>/li> li>a hrefhttps://markandruth.co.uk/2006/08>August 2006/a>/li> li>a hrefhttps://markandruth.co.uk/2006/07>July 2006/a>/li> li>a hrefhttps://markandruth.co.uk/2006/06>June 2006/a>/li> li>a hrefhttps://markandruth.co.uk/2006/02>February 2006/a>/li> li>a hrefhttps://markandruth.co.uk/2006/01>January 2006/a>/li> li>a hrefhttps://markandruth.co.uk/2005/12>December 2005/a>/li> li>a hrefhttps://markandruth.co.uk/2005/11>November 2005/a>/li> li>a hrefhttps://markandruth.co.uk/2005/10>October 2005/a>/li> li>a hrefhttps://markandruth.co.uk/2005/09>September 2005/a>/li> li>a hrefhttps://markandruth.co.uk/2005/08>August 2005/a>/li> li>a hrefhttps://markandruth.co.uk/2005/07>July 2005/a>/li> li>a hrefhttps://markandruth.co.uk/2005/06>June 2005/a>/li> li>a hrefhttps://markandruth.co.uk/2005/05>May 2005/a>/li> /ul> /nav>/aside> /div>!-- #primary-sidebar --> /div>!-- #secondary --> /div>!-- #main --> footer idcolophon classsite-footer rolecontentinfo> div classsite-info> a hrefhttps://wordpress.org/ classimprint> Proudly powered by WordPress /a> /div>!-- .site-info --> /footer>!-- #colophon --> /div>!-- #page --> !-- ngg_resource_manager_marker -->script srchttp://markandruth.co.uk/wp-content/plugins/jetpack/_inc/build/infinite-scroll/infinity.min.js?ver9.5.5-is5.0.1 idthe-neverending-homepage-js>/script>script srchttp://markandruth.co.uk/wp-content/themes/twentyfourteen/js/functions.js?ver20171218 idtwentyfourteen-script-js>/script>script srchttp://markandruth.co.uk/wp-content/plugins/enlighter/cache/enlighterjs.min.js?verjmYbxdJM32JbGuM idenlighterjs-js>/script>script idenlighterjs-js-after>!function(e,n){if(undefined!typeof EnlighterJS){var o{selectors:{block:pre.EnlighterJSRAW,inline:code.EnlighterJSRAW},options:{indent:4,ampersandCleanup:true,linehover:true,rawcodeDbclick:false,textOverflow:break,linenumbers:true,theme:enlighter,language:generic,retainCssClasses:false,collapse:false,toolbarOuter:,toolbarTop:{BTN_RAW}{BTN_COPY}{BTN_WINDOW}{BTN_WEBSITE},toolbarBottom:}};(e.EnlighterJSINITfunction(){EnlighterJS.init(o.selectors.block,o.selectors.inline,o.options)})()}else{(n&&(n.error||n.log)||function(){})(Error: EnlighterJS resources not loaded yet!)}}(window,console);/script>script srchttp://markandruth.co.uk/wp-content/plugins/wp-spamshield/js/jscripts-ftr-min.js idwpss-jscripts-ftr-js>/script>script srchttp://markandruth.co.uk/wp-includes/js/wp-embed.min.js?ver5.6.14 idwp-embed-js>/script> script typetext/javascript> //!CDATA var infiniteScroll JSON.parse( decodeURIComponent( %7B%22settings%22%3A%7B%22id%22%3A%22content%22%2C%22ajaxurl%22%3A%22http%3A%5C%2F%5C%2Fmarkandruth.co.uk%5C%2F%3Finfinity%3Dscrolling%22%2C%22type%22%3A%22scroll%22%2C%22wrapper%22%3Atrue%2C%22wrapper_class%22%3A%22infinite-wrap%22%2C%22footer%22%3A%22page%22%2C%22click_handle%22%3A%221%22%2C%22text%22%3A%22Older%20posts%22%2C%22totop%22%3A%22Scroll%20back%20to%20top%22%2C%22currentday%22%3A%2210.10.20%22%2C%22order%22%3A%22DESC%22%2C%22scripts%22%3A%5B%5D%2C%22styles%22%3A%5B%5D%2C%22google_analytics%22%3Afalse%2C%22offset%22%3A1%2C%22history%22%3A%7B%22host%22%3A%22markandruth.co.uk%22%2C%22path%22%3A%22%5C%2Fpage%5C%2F%25d%22%2C%22use_trailing_slashes%22%3Afalse%2C%22parameters%22%3A%22%22%7D%2C%22query_args%22%3A%7B%22error%22%3A%22%22%2C%22m%22%3A%22%22%2C%22p%22%3A0%2C%22post_parent%22%3A%22%22%2C%22subpost%22%3A%22%22%2C%22subpost_id%22%3A%22%22%2C%22attachment%22%3A%22%22%2C%22attachment_id%22%3A0%2C%22name%22%3A%22%22%2C%22pagename%22%3A%22%22%2C%22page_id%22%3A0%2C%22second%22%3A%22%22%2C%22minute%22%3A%22%22%2C%22hour%22%3A%22%22%2C%22day%22%3A0%2C%22monthnum%22%3A0%2C%22year%22%3A0%2C%22w%22%3A0%2C%22category_name%22%3A%22%22%2C%22tag%22%3A%22%22%2C%22cat%22%3A%22%22%2C%22tag_id%22%3A%22%22%2C%22author%22%3A%22%22%2C%22author_name%22%3A%22%22%2C%22feed%22%3A%22%22%2C%22tb%22%3A%22%22%2C%22paged%22%3A0%2C%22meta_key%22%3A%22%22%2C%22meta_value%22%3A%22%22%2C%22preview%22%3A%22%22%2C%22s%22%3A%22%22%2C%22sentence%22%3A%22%22%2C%22title%22%3A%22%22%2C%22fields%22%3A%22%22%2C%22menu_order%22%3A%22%22%2C%22embed%22%3A%22%22%2C%22category__in%22%3A%5B%5D%2C%22category__not_in%22%3A%5B%5D%2C%22category__and%22%3A%5B%5D%2C%22post__in%22%3A%5B%5D%2C%22post__not_in%22%3A%5B%5D%2C%22post_name__in%22%3A%5B%5D%2C%22tag__in%22%3A%5B%5D%2C%22tag__not_in%22%3A%5B%5D%2C%22tag__and%22%3A%5B%5D%2C%22tag_slug__in%22%3A%5B%5D%2C%22tag_slug__and%22%3A%5B%5D%2C%22post_parent__in%22%3A%5B%5D%2C%22post_parent__not_in%22%3A%5B%5D%2C%22author__in%22%3A%5B%5D%2C%22author__not_in%22%3A%5B%5D%2C%22posts_per_page%22%3A10%2C%22ignore_sticky_posts%22%3Afalse%2C%22suppress_filters%22%3Afalse%2C%22cache_results%22%3Atrue%2C%22update_post_term_cache%22%3Atrue%2C%22lazy_load_term_meta%22%3Atrue%2C%22update_post_meta_cache%22%3Atrue%2C%22post_type%22%3A%22%22%2C%22nopaging%22%3Afalse%2C%22comments_per_page%22%3A%2250%22%2C%22no_found_rows%22%3Afalse%2C%22order%22%3A%22DESC%22%7D%2C%22query_before%22%3A%222025-01-31%2013%3A51%3A37%22%2C%22last_post_date%22%3A%222020-10-10%2008%3A24%3A58%22%2C%22body_class%22%3A%22infinite-scroll%20neverending%22%2C%22loading_text%22%3A%22Loading%20new%20page%22%2C%22stats%22%3A%22blog%3D83225229%26host%3Dmarkandruth.co.uk%26v%3Dext%26j%3D1%3A9.5.5%26x_pagetype%3Dinfinite-jetpack%22%7D%7D ) ); //> /script> script typetext/javascript>/* !CDATA */r3f5x9JSescape(documentreferrer);hf4N9c3b3a70705da2c4bb68b456c56836ad;hf4Ve570817a6bd6477977d594717b7d8f1c;jQuery(document).ready(function($){var e#commentform, .comment-respond form, .comment-form, #lostpasswordform, #registerform, #loginform, #login_form, #wpss_contact_form;$(e).submit(function(){$(input>).attr(type,hidden).attr(name,r3f5x9JS).attr(value,r3f5x9JS).appendTo(e);$(input>).attr(type,hidden).attr(name,hf4N).attr(value,hf4V).appendTo(e);return true;});$(#comment).attr({minlength:15,maxlength:15360})});/* > *//script> div idinfinite-footer> div classcontainer> div classblog-info> a idinfinity-blog-title hrefhttps://markandruth.co.uk/ relhome> Mark's blog /a> /div> div classblog-credits> a hrefhttps://wordpress.org/ relnoopener noreferrer target_blank relgenerator>Proudly powered by WordPress/a> Theme: Twenty Fourteen. /div> /div> /div>!-- #infinite-footer --> script typetext/javascript> (function() { var extend function(out) { out out || {}; for (var i 1; i arguments.length; i++) { if (!argumentsi) continue; for (var key in argumentsi) { if (argumentsi.hasOwnProperty(key)) outkey argumentsikey; } } return out; }; extend( window.infiniteScroll.settings.scripts, exactmetrics-frontend-script,jquery-core,jquery-migrate,jquery,pirate-forms-custom-spam,the-neverending-homepage,twentyfourteen-script,enlighterjs,wpss-jscripts-ftr,wp-embed ); extend( window.infiniteScroll.settings.styles, twentyfourteen-jetpack,the-neverending-homepage,wp-block-library,wp-block-library-theme,twentyfourteen-lato,genericons,twentyfourteen-style,twentyfourteen-block-style,twentyfourteen-ie,jetpack-subscriptions,infinity-twentyfourteen,enlighterjs,jetpack_css ); })(); /script> span idinfinite-aria aria-livepolite>/span> script srchttps://stats.wp.com/e-202505.js defer>/script>script> _stq window._stq || ; _stq.push( view, {v:ext,j:1:9.5.5,blog:83225229,post:0,tz:0,srv:markandruth.co.uk} ); _stq.push( clickTrackerInit, 83225229, 0 );/script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]