https://www.aptgetlife.co.uk/

已提交的 URL:
https://aptgetlife.co.uk/已重新導向
報告完成時間:

連結 · 找到 1 個

從頁面中識別的傳出連結

連結Text
http://aptgetlife.co.uk/apt get life

JavaScript 變數 · 找到 12 個

在頁面的視窗物件上載入的全域 JavaScript 變數是在函數外部宣告的變數,可從目前範圍內程式碼中的任何位置存取

名稱類型
onbeforetoggleobject
documentPictureInPictureobject
onscrollendobject
_wpemojiSettingsobject
EnlighterJSobject
EnlighterJSINITfunction
st_gofunction
linktracker_initfunction
wpcomobject
_stqobject

主控台記錄訊息 · 找到 0 條

記錄到 Web 主控台的訊息

HTML

頁面的原始 HTML 主體

<!DOCTYPE html><html lang="en-GB"><head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1">
	<style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style>
	
	<!-- This site is optimized with the Yoast SEO plugin v24.0 - https://yoast.com/wordpress/plugins/seo/ -->
	<title>apt get life - Life around technology</title>
	<meta name="description" content="Life around technology">
	<link rel="canonical" href="https://www.aptgetlife.co.uk/">
	<link rel="next" href="https://www.aptgetlife.co.uk/page/2/">
	<meta property="og:locale" content="en_GB">
	<meta property="og:type" content="website">
	<meta property="og:title" content="apt get life">
	<meta property="og:description" content="Life around technology">
	<meta property="og:url" content="https://www.aptgetlife.co.uk/">
	<meta property="og:site_name" content="apt get life">
	<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"CollectionPage","@id":"https://www.aptgetlife.co.uk/","url":"https://www.aptgetlife.co.uk/","name":"apt get life - Life around technology","isPartOf":{"@id":"https://www.aptgetlife.co.uk/#website"},"description":"Life around technology","breadcrumb":{"@id":"https://www.aptgetlife.co.uk/#breadcrumb"},"inLanguage":"en-GB"},{"@type":"BreadcrumbList","@id":"https://www.aptgetlife.co.uk/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home"}]},{"@type":"WebSite","@id":"https://www.aptgetlife.co.uk/#website","url":"https://www.aptgetlife.co.uk/","name":"apt get life","description":"Life around technology","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.aptgetlife.co.uk/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"}]}</script>
	<!-- / Yoast SEO plugin. -->


<link rel="dns-prefetch" href="//www.aptgetlife.co.uk">
<link rel="dns-prefetch" href="//stats.wp.com">
<link rel="dns-prefetch" href="//fonts.googleapis.com">
<link rel="dns-prefetch" href="//v0.wordpress.com">
<link rel="dns-prefetch" href="//jetpack.wordpress.com">
<link rel="dns-prefetch" href="//s0.wp.com">
<link rel="dns-prefetch" href="//public-api.wordpress.com">
<link rel="dns-prefetch" href="//0.gravatar.com">
<link rel="dns-prefetch" href="//1.gravatar.com">
<link rel="dns-prefetch" href="//2.gravatar.com">
<link rel="preconnect" href="//i0.wp.com">
<link rel="alternate" type="application/rss+xml" title="apt get life » Feed" href="https://www.aptgetlife.co.uk/feed/">
<link rel="alternate" type="application/rss+xml" title="apt get life » Comments Feed" href="https://www.aptgetlife.co.uk/comments/feed/">
<script type="text/javascript">
/* <![CDATA[ */
window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/www.aptgetlife.co.uk\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.7.1"}};
/*! This file is auto-generated */
!function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings);
/* ]]> */
</script>
<link rel="stylesheet" id="genesis-sample-theme-css" href="https://www.aptgetlife.co.uk/wp-content/themes/genesis-sample/style.css?ver=2.1.2" type="text/css" media="all">
<style id="wp-emoji-styles-inline-css" type="text/css">

	img.wp-smiley, img.emoji {
		display: inline !important;
		border: none !important;
		box-shadow: none !important;
		height: 1em !important;
		width: 1em !important;
		margin: 0 0.07em !important;
		vertical-align: -0.1em !important;
		background: none !important;
		padding: 0 !important;
	}
</style>
<link rel="stylesheet" id="wp-block-library-css" href="https://www.aptgetlife.co.uk/wp-includes/css/dist/block-library/style.min.css?ver=6.7.1" type="text/css" media="all">
<link rel="stylesheet" id="mediaelement-css" href="https://www.aptgetlife.co.uk/wp-includes/js/mediaelement/mediaelementplayer-legacy.min.css?ver=4.2.17" type="text/css" media="all">
<link rel="stylesheet" id="wp-mediaelement-css" href="https://www.aptgetlife.co.uk/wp-includes/js/mediaelement/wp-mediaelement.min.css?ver=6.7.1" type="text/css" media="all">
<style id="jetpack-sharing-buttons-style-inline-css" type="text/css">
.jetpack-sharing-buttons__services-list{display:flex;flex-direction:row;flex-wrap:wrap;gap:0;list-style-type:none;margin:5px;padding:0}.jetpack-sharing-buttons__services-list.has-small-icon-size{font-size:12px}.jetpack-sharing-buttons__services-list.has-normal-icon-size{font-size:16px}.jetpack-sharing-buttons__services-list.has-large-icon-size{font-size:24px}.jetpack-sharing-buttons__services-list.has-huge-icon-size{font-size:36px}@media print{.jetpack-sharing-buttons__services-list{display:none!important}}.editor-styles-wrapper .wp-block-jetpack-sharing-buttons{gap:0;padding-inline-start:0}ul.jetpack-sharing-buttons__services-list.has-background{padding:1.25em 2.375em}
</style>
<style id="classic-theme-styles-inline-css" type="text/css">
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<style id="global-styles-inline-css" type="text/css">
:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}
</style>
<link rel="stylesheet" id="google-fonts-css" href="//fonts.googleapis.com/css?family=Lato%3A300%2C400%2C700&amp;ver=2.1.2" type="text/css" media="all">
<link rel="stylesheet" id="enlighterjs-css" href="https://www.aptgetlife.co.uk/wp-content/plugins/enlighter/cache/enlighterjs.min.css?ver=c4++w8UYz8bi9bk" type="text/css" media="all">
<link rel="https://api.w.org/" href="https://www.aptgetlife.co.uk/wp-json/"><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.aptgetlife.co.uk/xmlrpc.php?rsd">
<meta name="generator" content="WordPress 6.7.1">
<link rel="shortlink" href="https://wp.me/4QhHG">
	<style>img#wpstats{display:none}</style>
		<link rel="icon" href="https://i0.wp.com/www.aptgetlife.co.uk/wp-content/uploads/2016/02/cropped-agptgetlifefacvicon.png?fit=32%2C32&amp;ssl=1" sizes="32x32">
<link rel="icon" href="https://i0.wp.com/www.aptgetlife.co.uk/wp-content/uploads/2016/02/cropped-agptgetlifefacvicon.png?fit=192%2C192&amp;ssl=1" sizes="192x192">
<link rel="apple-touch-icon" href="https://i0.wp.com/www.aptgetlife.co.uk/wp-content/uploads/2016/02/cropped-agptgetlifefacvicon.png?fit=180%2C180&amp;ssl=1">
<meta name="msapplication-TileImage" content="https://i0.wp.com/www.aptgetlife.co.uk/wp-content/uploads/2016/02/cropped-agptgetlifefacvicon.png?fit=270%2C270&amp;ssl=1">
<script src="https://www.aptgetlife.co.uk/wp-includes/js/wp-emoji-release.min.js?ver=6.7.1" defer=""></script></head>
<body class="home blog content-sidebar genesis-breadcrumbs-visible genesis-footer-widgets-hidden"><div class="site-container"><header class="site-header"><div class="wrap"><div class="title-area"><h1 class="site-title"><a href="https://www.aptgetlife.co.uk/">apt get life</a></h1><p class="site-description">Life around technology</p></div><div class="widget-area header-widget-area"><section id="search-2" class="widget widget_search"><div class="widget-wrap"><form class="search-form" method="get" action="https://www.aptgetlife.co.uk/" role="search"><input class="search-form-input" type="search" name="s" id="searchform-1" placeholder="Search this website"><input class="search-form-submit" type="submit" value="Search"><meta content="https://www.aptgetlife.co.uk/?s={s}"></form></div></section>
</div></div></header><nav class="nav-primary" aria-label="Main"><div class="wrap"><ul id="menu-main-menu" class="menu genesis-nav-menu menu-primary"><li id="menu-item-96" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-96"><a href="https://www.aptgetlife.co.uk/category/tech/"><span>Technology</span></a>
<ul class="sub-menu">
	<li id="menu-item-107" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-107"><a href="https://www.aptgetlife.co.uk/category/tech/guides/"><span>Guides</span></a></li>
	<li id="menu-item-97" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-97"><a href="https://www.aptgetlife.co.uk/category/tech/linux/"><span>Linux</span></a></li>
	<li id="menu-item-98" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-98"><a href="https://www.aptgetlife.co.uk/category/tech/development/"><span>Development</span></a>
	<ul class="sub-menu">
		<li id="menu-item-335" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-335"><a href="https://www.aptgetlife.co.uk/category/tech/development/laravel/"><span>Laravel</span></a></li>
	</ul>
</li>
	<li id="menu-item-336" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-336"><a href="https://www.aptgetlife.co.uk/category/tech/misc/"><span>Misc</span></a></li>
	<li id="menu-item-337" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-337"><a href="https://www.aptgetlife.co.uk/category/tech/raspberry-pi/"><span>Raspberry Pi</span></a></li>
</ul>
</li>
<li id="menu-item-135" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-135"><a href="https://www.aptgetlife.co.uk/category/writing/"><span>Writing</span></a></li>
<li id="menu-item-99" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-99"><a href="https://www.aptgetlife.co.uk/category/crafts/"><span>Crafts</span></a>
<ul class="sub-menu">
	<li id="menu-item-100" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-100"><a href="https://www.aptgetlife.co.uk/category/crafts/crochet/"><span>Crochet</span></a></li>
	<li id="menu-item-332" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-332"><a href="https://www.aptgetlife.co.uk/category/crafts/model-making/"><span>Model Making</span></a></li>
	<li id="menu-item-333" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-333"><a href="https://www.aptgetlife.co.uk/category/crafts/painting/"><span>Painting</span></a></li>
</ul>
</li>
<li id="menu-item-408" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-privacy-policy menu-item-408"><a rel="privacy-policy" href="https://www.aptgetlife.co.uk/privacy-policy/"><span>Privacy Policy</span></a></li>
</ul></div></nav><div class="site-inner"><div class="content-sidebar-wrap"><div class="breadcrumb">You are here: Home <span aria-label="breadcrumb separator">/</span> Home</div><main class="content"><article class="post-608 post type-post status-publish format-standard category-guides category-tech entry" aria-label="Remove domains from Let’s Encrypt using Certbot"><header class="entry-header"><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.aptgetlife.co.uk/remove-domains-from-lets-encrypt-using-certbot/">Remove domains from Let’s Encrypt using Certbot</a></h2>
<p class="entry-meta"><time class="entry-time">2024/07/22</time> by <span class="entry-author"><a href="https://www.aptgetlife.co.uk/author/sirnet/" class="entry-author-link" rel="author"><span class="entry-author-name">sudo</span></a></span> <span class="entry-comments-link"><a href="https://www.aptgetlife.co.uk/remove-domains-from-lets-encrypt-using-certbot/#respond">Leave a Comment</a></span> </p></header><div class="entry-content"><p>When decomissioning sites on a server hosting multiple domains and Let’s Encrypt for SSL certificate renewals, it’s necissary to remove the domains from both the virtual hosts file(s) and Let’s Encrypts configuration using certbot. If the domain is not removed from certbot, the remaining domains hosted on the server can encounter SSL certificate errors on renewal.</p>
<p>If old domains are present during the renewal request, it’s likely an error will appear in <code>/var/log/letsencrypt/letsencrypt.log</code>:</p>
<pre><code>ERROR:certbot._internal.log:1 renew failure(s), 0 parse failure(s)
</code></pre>
<p>This summary line may also appear:</p>
<pre><code>The Certificate Authority failed to verify the temporary nginx configuration changes made by Certbot. Ensure the listed domains point to this nginx server and that it is accessible from the internet.
</code></pre>
<p>To ensure that only the domains that still require SSL certificates are part of the certbot renewal request, the following steps need be followed:</p>
<ol>
<li>List Installed Certificates:<br>
Run the following command to list all installed certificates and their associated domains:</li>
</ol>
<pre><code>certbot certificates
</code></pre>
<p>You should be able to see the <code>Certificate Name</code> as well as the <code>Domains</code> included in the output.</p>
<ol>
<li>Update Certificate Renewal Configuration:<br>
Use the following command to update the renewal configuration, specifying only the domains that should be included in the renewal:</li>
</ol>
<pre><code>certbot certonly --cert-name example_cert_name -d example.com -d example.org
</code></pre>
<p>Replace example_cert_name with the name of the certificate to be updated. Include only the domains that should be renewed (e.g., example.com and example.org).</p>
<p>Let’s Encrypt should now have renewed the certificate for just the domains specified, removing any domains not listed from the renewal request. It is possible to test this by running the <code>certbot certificates</code> command again and checking the output.</p>
</div><footer class="entry-footer"><p class="entry-meta"><span class="entry-categories">Filed Under: <a href="https://www.aptgetlife.co.uk/category/tech/guides/" rel="category tag">Guides</a>, <a href="https://www.aptgetlife.co.uk/category/tech/" rel="category tag">Technology</a></span> </p></footer></article><article class="post-590 post type-post status-publish format-standard category-guides category-tech tag-dev-tools tag-development-2 tag-linux tag-ubuntu tag-ubuntu-22-04 entry" aria-label="Install Jetbrains Toolbox on Ubuntu 22.04"><header class="entry-header"><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.aptgetlife.co.uk/install-jetbrains-toolbox-on-ubuntu-22-04/">Install Jetbrains Toolbox on Ubuntu 22.04</a></h2>
<p class="entry-meta"><time class="entry-time">2023/02/17</time> by <span class="entry-author"><a href="https://www.aptgetlife.co.uk/author/sirnet/" class="entry-author-link" rel="author"><span class="entry-author-name">sudo</span></a></span> <span class="entry-comments-link"><a href="https://www.aptgetlife.co.uk/install-jetbrains-toolbox-on-ubuntu-22-04/#respond">Leave a Comment</a></span> </p></header><div class="entry-content">
<p>If you have access to more than one of the JetBrains products I have found using the toolbox to install and manage them can be more convenient than the snap packages in Ubuntu itself.  I often find it quite interesting to load up JetBrains Toolbox and see what new applications are available (since i don’t get email updates from them).</p>



<p>To install the JetBrains Toolbox on Ubuntu 22.04, first the following package will need to be installed:</p>



<pre class="wp-block-code"><code>sudo apt install libfuse2</code></pre>



<p>Now download the JetBrains Toolbox from their website: https://www.jetbrains.com/toolbox-app/</p>



<p>Once downloaded extract the zip/tar.gz changing the version number as appropriate</p>



<pre class="wp-block-code"><code>tar xvzf ~/Downloads/jetbrains-toolbox-1.27.2.13801.tar.gz</code></pre>



<p> run it either via command line <code>./jetbrains-toolbox</code> or via the UI. It should install the toolbox and it should appear in the system tray.</p>
</div><footer class="entry-footer"><p class="entry-meta"><span class="entry-categories">Filed Under: <a href="https://www.aptgetlife.co.uk/category/tech/guides/" rel="category tag">Guides</a>, <a href="https://www.aptgetlife.co.uk/category/tech/" rel="category tag">Technology</a></span> <span class="entry-tags">Tagged With: <a href="https://www.aptgetlife.co.uk/tag/dev-tools/" rel="tag">dev tools</a>, <a href="https://www.aptgetlife.co.uk/tag/development-2/" rel="tag">development</a>, <a href="https://www.aptgetlife.co.uk/tag/linux/" rel="tag">Linux</a>, <a href="https://www.aptgetlife.co.uk/tag/ubuntu/" rel="tag">ubuntu</a>, <a href="https://www.aptgetlife.co.uk/tag/ubuntu-22-04/" rel="tag">ubuntu 22.04</a></span></p></footer></article><article class="post-588 post type-post status-publish format-standard category-guides category-tech tag-nvidia-issues tag-ubuntu tag-ubuntu-22-04 entry" aria-label="Fixing Ubuntu black screen with blinking cursor"><header class="entry-header"><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.aptgetlife.co.uk/fixing-ubuntu-black-screen-with-blinking-cursor/">Fixing Ubuntu black screen with blinking cursor</a></h2>
<p class="entry-meta"><time class="entry-time">2023/02/16</time> by <span class="entry-author"><a href="https://www.aptgetlife.co.uk/author/sirnet/" class="entry-author-link" rel="author"><span class="entry-author-name">sudo</span></a></span> <span class="entry-comments-link"><a href="https://www.aptgetlife.co.uk/fixing-ubuntu-black-screen-with-blinking-cursor/#comments">5 Comments</a></span> </p></header><div class="entry-content">
<p>After doing a system update, my Ubuntu 22.04 desktop would not present a login screen. Instead it displayed a black screen with a white blinking cursor at the top. Resetting the PC didn’t fix the issue. The following outlines steps I took to solve the problem.</p>



<p>The first thing to do is drop into a terminal using <code>ctrl</code> + <code>alt</code> + <code>F4</code> This should present you with a command line login screen. Since in my case the cursor appears before the login screen it’s probably that there’s an issue with a graphics driver or gnome display manager. Running <code>sudo systemctl restart gdm</code> may yield a result if you then return to the original session using <code>ctrl</code> + <code>alt</code> + <code>F1</code> however if you still see the blinking cursor return to the terminal session on <code>F4</code>.</p>



<p>Knowing my issue occurred after an update, I decided the next best thing to do would be purge the nvidia drivers from the system. They’ve caused me problems in the past and splatting them has fixed the issue before. To remove all references to the nvidia drivers on the system run the following commands one after the other (note that they do prompt in their current state and the first one may take some time to complete):</p>



<pre class="wp-block-code"><code>sudo apt pruge ~nvidia
sudo apt autoremove
sudo apt clean
</code></pre>



<p>Once that’s done, I ran the following update and upgrade commands to make sure the system was as up to date as it could be:</p>



<pre class="wp-block-code"><code>sudo apt update
sudo apt full-upgrade</code></pre>



<p>finally I rebooted the system</p>



<pre class="wp-block-code"><code>sudo reboot</code></pre>



<p>This brought up the login prompt – all be it in the wrong resolution, which given that the display drivers have been stripped from the system is to be expected. I was able to login and then I could use the <code>additional drivers</code> tool to select a new set of nvida drivers. After installing those and rebooting again the system resolution was restored to default and the login was still working.</p>
</div><footer class="entry-footer"><p class="entry-meta"><span class="entry-categories">Filed Under: <a href="https://www.aptgetlife.co.uk/category/tech/guides/" rel="category tag">Guides</a>, <a href="https://www.aptgetlife.co.uk/category/tech/" rel="category tag">Technology</a></span> <span class="entry-tags">Tagged With: <a href="https://www.aptgetlife.co.uk/tag/nvidia-issues/" rel="tag">nvidia issues</a>, <a href="https://www.aptgetlife.co.uk/tag/ubuntu/" rel="tag">ubuntu</a>, <a href="https://www.aptgetlife.co.uk/tag/ubuntu-22-04/" rel="tag">ubuntu 22.04</a></span></p></footer></article><article class="post-579 post type-post status-publish format-standard category-review category-tech category-uncategorized tag-keyboards tag-raspberry-pi tag-review entry" aria-label="Raspberry Pi Keyboard Mini Review"><header class="entry-header"><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.aptgetlife.co.uk/raspberry-pi-keyboard-mini-review/">Raspberry Pi Keyboard Mini Review</a></h2>
<p class="entry-meta"><time class="entry-time">2022/09/10</time> by <span class="entry-author"><a href="https://www.aptgetlife.co.uk/author/sirnet/" class="entry-author-link" rel="author"><span class="entry-author-name">sudo</span></a></span> <span class="entry-comments-link"><a href="https://www.aptgetlife.co.uk/raspberry-pi-keyboard-mini-review/#respond">Leave a Comment</a></span> </p></header><div class="entry-content">
<p>The raspberry pi keyboard is small and compact, perfect for traveling with if you have a phone or tablet but want a physical qwerty keyboard that you can connect with a cable. The cable connection saves significant battery power compared to Bluetooth keyboards. The key spacing of the keyboard is reasonable, but it does feel somewhat cheap when compared to premium keyboards like he MX keys. It’s got a very plasticy feel to it and there’s some sloppy key movement which might put off some more professional typists. For small pieces of work or ones that don’t require significant speed it is tenable as a keyboard, but if you’re in it for typing speed and accuracy there’s just something about it that seems to slow you down.</p>



<p>The keyboard itself requires a reasonable amount of force to trigger key presses and it makes quite a lot of noise for a low profile keyboard. I was quite surprised by this and I’m not sure what about the mechanics and construction make it work in this way. Coming from an IBM model M you might feel quite at home with the stompy key presses but from something like the MX Keys as a more modern low profile example I would say my preferences lead towards the more premium keyboard. You can soft type with the keyboard but something about it, either the construction quality or key travel distance really makes me want to hard-press instead of gently touch each key.</p>



<p>The integrated USB hub makes the device slightly more interesting than most run of the mill keyboards. It has been quite useful when the keyboard is setup on a desktop PC or with a laptop with few USB ports It’s allowed quick insertion of USB drives and even the wireless dongle for my mouse. I would not say it is a killer feature though.</p>



<p>I’ve been able to use the Pi keyboard, using a micro-USB to USB-C shim with both my phone (Google Pixel) and tablet (Samsung s6 lite). It has worked well with Google Docs in particular, although the keyboard did need changed from English US to English GB layout to work with quote marks, etc.</p>



<p>Overall I’d rate the Raspberry pi keyboard with half marks, 5 out of 10. It’s not unpleasant to work on and entirely serviceable but it does leave me longing for a better keyboard when writing longer pieces and it does get a little bit tiring to type on with the key stomp. Good for it’s price range but nothing to write home about.</p>
</div><footer class="entry-footer"><p class="entry-meta"><span class="entry-categories">Filed Under: <a href="https://www.aptgetlife.co.uk/category/tech/review/" rel="category tag">Review</a>, <a href="https://www.aptgetlife.co.uk/category/tech/" rel="category tag">Technology</a>, <a href="https://www.aptgetlife.co.uk/category/uncategorized/" rel="category tag">Uncategorized</a></span> <span class="entry-tags">Tagged With: <a href="https://www.aptgetlife.co.uk/tag/keyboards/" rel="tag">keyboards</a>, <a href="https://www.aptgetlife.co.uk/tag/raspberry-pi/" rel="tag">raspberry pi</a>, <a href="https://www.aptgetlife.co.uk/tag/review/" rel="tag">review</a></span></p></footer></article><article class="post-571 post type-post status-publish format-standard category-arduino category-tech tag-bme280 tag-environmental-monitoring tag-wemos-d1-mini entry" aria-label="Alternative GPIO pins for Wemos D1 Mini BME280 sensor"><header class="entry-header"><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.aptgetlife.co.uk/alternative-gpio-pins-for-wemos-d1-mini-bme280-sensor/">Alternative GPIO pins for Wemos D1 Mini BME280 sensor</a></h2>
<p class="entry-meta"><time class="entry-time">2021/12/07</time> by <span class="entry-author"><a href="https://www.aptgetlife.co.uk/author/sirnet/" class="entry-author-link" rel="author"><span class="entry-author-name">sudo</span></a></span> <span class="entry-comments-link"><a href="https://www.aptgetlife.co.uk/alternative-gpio-pins-for-wemos-d1-mini-bme280-sensor/#respond">Leave a Comment</a></span> </p></header><div class="entry-content">
<p>The Adafruit BME280 sensor library supports passing in alternative GPIO pins from the default D2 (GPIO 4) and D1 (GPIO 5) for SDA and SCL respectively for the Wemos D1 Mini. Since the I2C is software driven on the D1 Mini, it is reasonably straight forwards to assign different ports. Ports D6 and D7 line up well with the particular BME280 carrier board I’m using, which allows me to directly attach the BME280 over the D1 Mini, attaching SDA to D6, SCL to D7 and VIN to 3v.</p>



<p>In order to change ports, include the Wire library and define the ports:</p>



<div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-l-generic enlighter-hover enlighter-linenumbers "><div class="enlighter-toolbar-top enlighter-toolbar"><div class="enlighter-btn enlighter-btn-raw"><div class="enlighter-tooltip">Plain text</div></div><div class="enlighter-btn enlighter-btn-copy"><div class="enlighter-tooltip">Copy to clipboard</div></div><div class="enlighter-btn enlighter-btn-window"><div class="enlighter-tooltip">Open code in new window</div></div><div class="enlighter-btn enlighter-btn-website"><div class="enlighter-tooltip">EnlighterJS 3 Syntax Highlighter</div></div></div><div class="enlighter-code"><div class="enlighter" style=""><div class=""><div><span class="enlighter-c0">#include &lt;Wire.h&gt;</span><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text"></span><span class="enlighter-c0">#define SDA_1 12</span><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text"></span><span class="enlighter-c0">#define SCL_1 13</span></div></div></div><div class="enlighter-raw">#include &lt;Wire.h&gt;

#define SDA_1 12
#define SCL_1 13</div></div><div class="enlighter-toolbar-bottom enlighter-toolbar"></div></div><pre class="EnlighterJSRAW enlighter-origin" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#include &lt;Wire.h&gt;

#define SDA_1 12
#define SCL_1 13</pre>



<p>Then call <code>Wire.begin</code> to initialise the ports, passing in the default sensor address space <code>0x76</code> and the wire object into the bme call.</p>



<div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-l-generic enlighter-hover enlighter-linenumbers "><div class="enlighter-toolbar-top enlighter-toolbar"><div class="enlighter-btn enlighter-btn-raw"><div class="enlighter-tooltip">Plain text</div></div><div class="enlighter-btn enlighter-btn-copy"><div class="enlighter-tooltip">Copy to clipboard</div></div><div class="enlighter-btn enlighter-btn-window"><div class="enlighter-tooltip">Open code in new window</div></div><div class="enlighter-btn enlighter-btn-website"><div class="enlighter-tooltip">EnlighterJS 3 Syntax Highlighter</div></div></div><div class="enlighter-code"><div class="enlighter" style=""><div class=""><div><span class="enlighter-text">Wire.</span><span class="enlighter-m3">begin</span><span class="enlighter-g1">(</span><span class="enlighter-text">SDA, SCL</span><span class="enlighter-g1">)</span><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text">unsigned status;</span></div></div><div class=""><div><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text">status = bme.</span><span class="enlighter-m3">begin</span><span class="enlighter-g1">(</span><span class="enlighter-n2">0x76</span><span class="enlighter-text">, &amp;Wire</span><span class="enlighter-g1">)</span><span class="enlighter-text">;</span></div></div></div><div class="enlighter-raw">Wire.begin(SDA, SCL)

unsigned status;

status = bme.begin(0x76, &amp;Wire);</div></div><div class="enlighter-toolbar-bottom enlighter-toolbar"></div></div><pre class="EnlighterJSRAW enlighter-origin" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Wire.begin(SDA, SCL)

unsigned status;

status = bme.begin(0x76, &amp;Wire);</pre>



<p>The complete sample code looks like this:</p>



<div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-l-generic enlighter-hover enlighter-linenumbers "><div class="enlighter-toolbar-top enlighter-toolbar"><div class="enlighter-btn enlighter-btn-raw"><div class="enlighter-tooltip">Plain text</div></div><div class="enlighter-btn enlighter-btn-copy"><div class="enlighter-tooltip">Copy to clipboard</div></div><div class="enlighter-btn enlighter-btn-window"><div class="enlighter-tooltip">Open code in new window</div></div><div class="enlighter-btn enlighter-btn-website"><div class="enlighter-tooltip">EnlighterJS 3 Syntax Highlighter</div></div></div><div class="enlighter-code"><div class="enlighter" style=""><div class=""><div><span class="enlighter-c1">/***************************************************************************</span></div></div><div class=""><div><span class="enlighter-c1">  This is a library for the BME280 humidity, temperature &amp; pressure sensor</span></div></div><div class=""><div><span class="enlighter-c1"></span></div></div><div class=""><div><span class="enlighter-c1">  Designed specifically to work with the Adafruit BME280 Breakout</span></div></div><div class=""><div><span class="enlighter-c1">  ----&gt; http://www.adafruit.com/products/2650</span></div></div><div class=""><div><span class="enlighter-c1"></span></div></div><div class=""><div><span class="enlighter-c1">  These sensors use I2C or SPI to communicate, 2 or 4 pins are required</span></div></div><div class=""><div><span class="enlighter-c1">  to interface. The device's I2C address is either 0x76 or 0x77.</span></div></div><div class=""><div><span class="enlighter-c1"></span></div></div><div class=""><div><span class="enlighter-c1">  Adafruit invests time and resources providing this open source code,</span></div></div><div class=""><div><span class="enlighter-c1">  please support Adafruit andopen-source hardware by purchasing products</span></div></div><div class=""><div><span class="enlighter-c1">  from Adafruit!</span></div></div><div class=""><div><span class="enlighter-c1"></span></div></div><div class=""><div><span class="enlighter-c1">  Written by Limor Fried &amp; Kevin Townsend for Adafruit Industries.</span></div></div><div class=""><div><span class="enlighter-c1">  BSD license, all text above must be included in any redistribution</span></div></div><div class=""><div><span class="enlighter-c1">  See the LICENSE file for details.</span></div></div><div class=""><div><span class="enlighter-c1"> ***************************************************************************/</span><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text"></span><span class="enlighter-c0">#include &lt;Wire.h&gt;</span><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text"></span><span class="enlighter-c0">#include &lt;SPI.h&gt;</span><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text"></span><span class="enlighter-c0">#include &lt;Adafruit_Sensor.h&gt;</span><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text"></span><span class="enlighter-c0">#include &lt;Adafruit_BME280.h&gt;</span><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text"></span><span class="enlighter-c0">#define SDA_1 12</span><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text"></span><span class="enlighter-c0">#define SCL_1 13</span><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text"></span><span class="enlighter-c0">#define SEALEVELPRESSURE_HPA (1013.25)</span><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text">Adafruit_BME280 bme; </span><span class="enlighter-c0">// I2C</span><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text">unsigned long delayTime;</span></div></div><div class=""><div><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text"></span><span class="enlighter-k1">void</span><span class="enlighter-text"> </span><span class="enlighter-m0">setup</span><span class="enlighter-g1">()</span><span class="enlighter-text"> </span><span class="enlighter-g1">{</span><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text">    Serial.</span><span class="enlighter-m3">begin</span><span class="enlighter-g1">(</span><span class="enlighter-n1">9600</span><span class="enlighter-g1">)</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text">    </span><span class="enlighter-k1">while</span><span class="enlighter-g1">(</span><span class="enlighter-text">!Serial</span><span class="enlighter-g1">)</span><span class="enlighter-text">;    </span><span class="enlighter-c0">// time to get serial running</span><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text">    Serial.</span><span class="enlighter-m3">println</span><span class="enlighter-g1">(</span><span class="enlighter-m0">F</span><span class="enlighter-g1">(</span><span class="enlighter-s0">"BME280 test"</span><span class="enlighter-g1">))</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text">    </span><span class="enlighter-c0">// Init the ports for BME280</span><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text">    Wire.</span><span class="enlighter-m3">begin</span><span class="enlighter-g1">(</span><span class="enlighter-text">SDA_1, SCL_1</span><span class="enlighter-g1">)</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text">    </span><span class="enlighter-c0">// Capture the BME init status, passing in custom Wire GPIO pins</span><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text">    unsigned status;</span></div></div><div class=""><div><span class="enlighter-text">    status = bme.</span><span class="enlighter-m3">begin</span><span class="enlighter-g1">(</span><span class="enlighter-n2">0x76</span><span class="enlighter-text">, &amp;Wire</span><span class="enlighter-g1">)</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text">    </span><span class="enlighter-k1">if</span><span class="enlighter-text"> </span><span class="enlighter-g1">(</span><span class="enlighter-text">!status</span><span class="enlighter-g1">)</span><span class="enlighter-text"> </span><span class="enlighter-g1">{</span><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text">        Serial.</span><span class="enlighter-m3">println</span><span class="enlighter-g1">(</span><span class="enlighter-s0">"Could not find a valid BME280 sensor, check wiring, address, sensor ID!"</span><span class="enlighter-g1">)</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text">        Serial.</span><span class="enlighter-m3">print</span><span class="enlighter-g1">(</span><span class="enlighter-s0">"SensorID was: 0x"</span><span class="enlighter-g1">)</span><span class="enlighter-text">; Serial.</span><span class="enlighter-m3">println</span><span class="enlighter-g1">(</span><span class="enlighter-text">bme.</span><span class="enlighter-m3">sensorID</span><span class="enlighter-g1">()</span><span class="enlighter-text">,</span><span class="enlighter-n1">16</span><span class="enlighter-g1">)</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text">        Serial.</span><span class="enlighter-m3">print</span><span class="enlighter-g1">(</span><span class="enlighter-s0">"        ID of 0xFF probably means a bad address, a BMP 180 or BMP 085\n"</span><span class="enlighter-g1">)</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text">        Serial.</span><span class="enlighter-m3">print</span><span class="enlighter-g1">(</span><span class="enlighter-s0">"   ID of 0x56-0x58 represents a BMP 280,\n"</span><span class="enlighter-g1">)</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text">        Serial.</span><span class="enlighter-m3">print</span><span class="enlighter-g1">(</span><span class="enlighter-s0">"        ID of 0x60 represents a BME 280.\n"</span><span class="enlighter-g1">)</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text">        Serial.</span><span class="enlighter-m3">print</span><span class="enlighter-g1">(</span><span class="enlighter-s0">"        ID of 0x61 represents a BME 680.\n"</span><span class="enlighter-g1">)</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text">        </span><span class="enlighter-k1">while</span><span class="enlighter-text"> </span><span class="enlighter-g1">(</span><span class="enlighter-n1">1</span><span class="enlighter-g1">)</span><span class="enlighter-text"> </span><span class="enlighter-m0">delay</span><span class="enlighter-g1">(</span><span class="enlighter-n1">10</span><span class="enlighter-g1">)</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text">    </span><span class="enlighter-g1">}</span><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text">    Serial.</span><span class="enlighter-m3">println</span><span class="enlighter-g1">(</span><span class="enlighter-s0">"-- Default Test --"</span><span class="enlighter-g1">)</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text">    delayTime = </span><span class="enlighter-n1">1000</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text">    Serial.</span><span class="enlighter-m3">println</span><span class="enlighter-g1">()</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text"></span><span class="enlighter-g1">}</span><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text"></span><span class="enlighter-k1">void</span><span class="enlighter-text"> </span><span class="enlighter-m0">loop</span><span class="enlighter-g1">()</span><span class="enlighter-text"> </span><span class="enlighter-g1">{</span><span class="enlighter-text"> </span></div></div><div class=""><div><span class="enlighter-text">    </span><span class="enlighter-m0">printValues</span><span class="enlighter-g1">()</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text">    </span><span class="enlighter-m0">delay</span><span class="enlighter-g1">(</span><span class="enlighter-text">delayTime</span><span class="enlighter-g1">)</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text"></span><span class="enlighter-g1">}</span><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text"></span><span class="enlighter-k1">void</span><span class="enlighter-text"> </span><span class="enlighter-m0">printValues</span><span class="enlighter-g1">()</span><span class="enlighter-text"> </span><span class="enlighter-g1">{</span><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text">    Serial.</span><span class="enlighter-m3">print</span><span class="enlighter-g1">(</span><span class="enlighter-s0">"Temperature = "</span><span class="enlighter-g1">)</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text">    Serial.</span><span class="enlighter-m3">print</span><span class="enlighter-g1">(</span><span class="enlighter-text">bme.</span><span class="enlighter-m3">readTemperature</span><span class="enlighter-g1">())</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text">    Serial.</span><span class="enlighter-m3">println</span><span class="enlighter-g1">(</span><span class="enlighter-s0">" °C"</span><span class="enlighter-g1">)</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text">    Serial.</span><span class="enlighter-m3">print</span><span class="enlighter-g1">(</span><span class="enlighter-s0">"Pressure = "</span><span class="enlighter-g1">)</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text">    Serial.</span><span class="enlighter-m3">print</span><span class="enlighter-g1">(</span><span class="enlighter-text">bme.</span><span class="enlighter-m3">readPressure</span><span class="enlighter-g1">()</span><span class="enlighter-text"> / </span><span class="enlighter-n0">100.0</span><span class="enlighter-text">F</span><span class="enlighter-g1">)</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text">    Serial.</span><span class="enlighter-m3">println</span><span class="enlighter-g1">(</span><span class="enlighter-s0">" hPa"</span><span class="enlighter-g1">)</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text">    Serial.</span><span class="enlighter-m3">print</span><span class="enlighter-g1">(</span><span class="enlighter-s0">"Approx. Altitude = "</span><span class="enlighter-g1">)</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text">    Serial.</span><span class="enlighter-m3">print</span><span class="enlighter-g1">(</span><span class="enlighter-text">bme.</span><span class="enlighter-m3">readAltitude</span><span class="enlighter-g1">(</span><span class="enlighter-text">SEALEVELPRESSURE_HPA</span><span class="enlighter-g1">))</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text">    Serial.</span><span class="enlighter-m3">println</span><span class="enlighter-g1">(</span><span class="enlighter-s0">" m"</span><span class="enlighter-g1">)</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text">    Serial.</span><span class="enlighter-m3">print</span><span class="enlighter-g1">(</span><span class="enlighter-s0">"Humidity = "</span><span class="enlighter-g1">)</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text">    Serial.</span><span class="enlighter-m3">print</span><span class="enlighter-g1">(</span><span class="enlighter-text">bme.</span><span class="enlighter-m3">readHumidity</span><span class="enlighter-g1">())</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text">    Serial.</span><span class="enlighter-m3">println</span><span class="enlighter-g1">(</span><span class="enlighter-s0">" %"</span><span class="enlighter-g1">)</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text"></span></div></div><div class=""><div><span class="enlighter-text">    Serial.</span><span class="enlighter-m3">println</span><span class="enlighter-g1">()</span><span class="enlighter-text">;</span></div></div><div class=""><div><span class="enlighter-text"></span><span class="enlighter-g1">}</span></div></div></div><div class="enlighter-raw">/***************************************************************************
  This is a library for the BME280 humidity, temperature &amp; pressure sensor

  Designed specifically to work with the Adafruit BME280 Breakout
  ----&gt; http://www.adafruit.com/products/2650

  These sensors use I2C or SPI to communicate, 2 or 4 pins are required
  to interface. The device's I2C address is either 0x76 or 0x77.

  Adafruit invests time and resources providing this open source code,
  please support Adafruit andopen-source hardware by purchasing products
  from Adafruit!

  Written by Limor Fried &amp; Kevin Townsend for Adafruit Industries.
  BSD license, all text above must be included in any redistribution
  See the LICENSE file for details.
 ***************************************************************************/

#include &lt;Wire.h&gt;
#include &lt;SPI.h&gt;
#include &lt;Adafruit_Sensor.h&gt;
#include &lt;Adafruit_BME280.h&gt;

#define SDA_1 12
#define SCL_1 13

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme; // I2C

unsigned long delayTime;

void setup() {
    Serial.begin(9600);
    while(!Serial);    // time to get serial running
    Serial.println(F("BME280 test"));

    // Init the ports for BME280
    Wire.begin(SDA_1, SCL_1);

    // Capture the BME init status, passing in custom Wire GPIO pins
    unsigned status;
    status = bme.begin(0x76, &amp;Wire);

    if (!status) {
        Serial.println("Could not find a valid BME280 sensor, check wiring, address, sensor ID!");
        Serial.print("SensorID was: 0x"); Serial.println(bme.sensorID(),16);
        Serial.print("        ID of 0xFF probably means a bad address, a BMP 180 or BMP 085\n");
        Serial.print("   ID of 0x56-0x58 represents a BMP 280,\n");
        Serial.print("        ID of 0x60 represents a BME 280.\n");
        Serial.print("        ID of 0x61 represents a BME 680.\n");
        while (1) delay(10);
    }

    Serial.println("-- Default Test --");
    delayTime = 1000;

    Serial.println();
}


void loop() { 
    printValues();
    delay(delayTime);
}


void printValues() {
    Serial.print("Temperature = ");
    Serial.print(bme.readTemperature());
    Serial.println(" °C");

    Serial.print("Pressure = ");

    Serial.print(bme.readPressure() / 100.0F);
    Serial.println(" hPa");

    Serial.print("Approx. Altitude = ");
    Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
    Serial.println(" m");

    Serial.print("Humidity = ");
    Serial.print(bme.readHumidity());
    Serial.println(" %");

    Serial.println();
}</div></div><div class="enlighter-toolbar-bottom enlighter-toolbar"></div></div><pre class="EnlighterJSRAW enlighter-origin" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">/***************************************************************************
  This is a library for the BME280 humidity, temperature &amp; pressure sensor

  Designed specifically to work with the Adafruit BME280 Breakout
  ----&gt; http://www.adafruit.com/products/2650

  These sensors use I2C or SPI to communicate, 2 or 4 pins are required
  to interface. The device's I2C address is either 0x76 or 0x77.

  Adafruit invests time and resources providing this open source code,
  please support Adafruit andopen-source hardware by purchasing products
  from Adafruit!

  Written by Limor Fried &amp; Kevin Townsend for Adafruit Industries.
  BSD license, all text above must be included in any redistribution
  See the LICENSE file for details.
 ***************************************************************************/

#include &lt;Wire.h&gt;
#include &lt;SPI.h&gt;
#include &lt;Adafruit_Sensor.h&gt;
#include &lt;Adafruit_BME280.h&gt;

#define SDA_1 12
#define SCL_1 13

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme; // I2C

unsigned long delayTime;

void setup() {
    Serial.begin(9600);
    while(!Serial);    // time to get serial running
    Serial.println(F("BME280 test"));

    // Init the ports for BME280
    Wire.begin(SDA_1, SCL_1);

    // Capture the BME init status, passing in custom Wire GPIO pins
    unsigned status;
    status = bme.begin(0x76, &amp;Wire);

    if (!status) {
        Serial.println("Could not find a valid BME280 sensor, check wiring, address, sensor ID!");
        Serial.print("SensorID was: 0x"); Serial.println(bme.sensorID(),16);
        Serial.print("        ID of 0xFF probably means a bad address, a BMP 180 or BMP 085\n");
        Serial.print("   ID of 0x56-0x58 represents a BMP 280,\n");
        Serial.print("        ID of 0x60 represents a BME 280.\n");
        Serial.print("        ID of 0x61 represents a BME 680.\n");
        while (1) delay(10);
    }

    Serial.println("-- Default Test --");
    delayTime = 1000;

    Serial.println();
}


void loop() { 
    printValues();
    delay(delayTime);
}


void printValues() {
    Serial.print("Temperature = ");
    Serial.print(bme.readTemperature());
    Serial.println(" °C");

    Serial.print("Pressure = ");

    Serial.print(bme.readPressure() / 100.0F);
    Serial.println(" hPa");

    Serial.print("Approx. Altitude = ");
    Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
    Serial.println(" m");

    Serial.print("Humidity = ");
    Serial.print(bme.readHumidity());
    Serial.println(" %");

    Serial.println();
}</pre>
</div><footer class="entry-footer"><p class="entry-meta"><span class="entry-categories">Filed Under: <a href="https://www.aptgetlife.co.uk/category/tech/arduino/" rel="category tag">Arduino</a>, <a href="https://www.aptgetlife.co.uk/category/tech/" rel="category tag">Technology</a></span> <span class="entry-tags">Tagged With: <a href="https://www.aptgetlife.co.uk/tag/bme280/" rel="tag">bme280</a>, <a href="https://www.aptgetlife.co.uk/tag/environmental-monitoring/" rel="tag">Environmental monitoring</a>, <a href="https://www.aptgetlife.co.uk/tag/wemos-d1-mini/" rel="tag">Wemos D1 Mini</a></span></p></footer></article><div class="archive-pagination pagination"><ul><li class="active"><a href="https://www.aptgetlife.co.uk/" aria-current="page">1</a></li>
<li><a href="https://www.aptgetlife.co.uk/page/2/">2</a></li>
<li><a href="https://www.aptgetlife.co.uk/page/3/">3</a></li>
<li class="pagination-omission">…</li> 
<li><a href="https://www.aptgetlife.co.uk/page/14/">14</a></li>
<li class="pagination-next"><a href="https://www.aptgetlife.co.uk/page/2/">Next Page »</a></li>
</ul></div>
</main><aside class="sidebar sidebar-primary widget-area" role="complementary" aria-label="Primary Sidebar">
		<section id="recent-posts-3" class="widget widget_recent_entries"><div class="widget-wrap">
		<h4 class="widget-title widgettitle">Recent Posts</h4>

		<ul>
											<li>
					<a href="https://www.aptgetlife.co.uk/remove-domains-from-lets-encrypt-using-certbot/">Remove domains from Let’s Encrypt using Certbot</a>
									</li>
											<li>
					<a href="https://www.aptgetlife.co.uk/install-jetbrains-toolbox-on-ubuntu-22-04/">Install Jetbrains Toolbox on Ubuntu 22.04</a>
									</li>
											<li>
					<a href="https://www.aptgetlife.co.uk/fixing-ubuntu-black-screen-with-blinking-cursor/">Fixing Ubuntu black screen with blinking cursor</a>
									</li>
											<li>
					<a href="https://www.aptgetlife.co.uk/raspberry-pi-keyboard-mini-review/">Raspberry Pi Keyboard Mini Review</a>
									</li>
											<li>
					<a href="https://www.aptgetlife.co.uk/alternative-gpio-pins-for-wemos-d1-mini-bme280-sensor/">Alternative GPIO pins for Wemos D1 Mini BME280 sensor</a>
									</li>
					</ul>

		</div></section>
<section id="tag_cloud-2" class="widget widget_tag_cloud"><div class="widget-wrap"><h4 class="widget-title widgettitle">Tags</h4>
<div class="tagcloud"><a href="https://www.aptgetlife.co.uk/tag/api/" class="tag-cloud-link tag-link-93 tag-link-position-1" style="font-size: 15.905882352941pt;" aria-label="API (5 items)">API</a>
<a href="https://www.aptgetlife.co.uk/tag/auditing/" class="tag-cloud-link tag-link-31 tag-link-position-2" style="font-size: 8pt;" aria-label="auditing (1 item)">auditing</a>
<a href="https://www.aptgetlife.co.uk/tag/crochet-2/" class="tag-cloud-link tag-link-26 tag-link-position-3" style="font-size: 8pt;" aria-label="crochet (1 item)">crochet</a>
<a href="https://www.aptgetlife.co.uk/tag/data-recovery/" class="tag-cloud-link tag-link-23 tag-link-position-4" style="font-size: 8pt;" aria-label="data recovery (1 item)">data recovery</a>
<a href="https://www.aptgetlife.co.uk/tag/debian/" class="tag-cloud-link tag-link-8 tag-link-position-5" style="font-size: 10.964705882353pt;" aria-label="debian (2 items)">debian</a>
<a href="https://www.aptgetlife.co.uk/tag/debudding/" class="tag-cloud-link tag-link-18 tag-link-position-6" style="font-size: 8pt;" aria-label="debudding (1 item)">debudding</a>
<a href="https://www.aptgetlife.co.uk/tag/development-2/" class="tag-cloud-link tag-link-16 tag-link-position-7" style="font-size: 14.588235294118pt;" aria-label="development (4 items)">development</a>
<a href="https://www.aptgetlife.co.uk/tag/dingo-api/" class="tag-cloud-link tag-link-94 tag-link-position-8" style="font-size: 14.588235294118pt;" aria-label="Dingo API (4 items)">Dingo API</a>
<a href="https://www.aptgetlife.co.uk/tag/docker/" class="tag-cloud-link tag-link-76 tag-link-position-9" style="font-size: 15.905882352941pt;" aria-label="docker (5 items)">docker</a>
<a href="https://www.aptgetlife.co.uk/tag/email/" class="tag-cloud-link tag-link-30 tag-link-position-10" style="font-size: 12.941176470588pt;" aria-label="email (3 items)">email</a>
<a href="https://www.aptgetlife.co.uk/tag/getting-started-with-laravel-5-dingo-api/" class="tag-cloud-link tag-link-96 tag-link-position-11" style="font-size: 14.588235294118pt;" aria-label="Getting started with Laravel 5 &amp; Dingo API (4 items)">Getting started with Laravel 5 &amp; Dingo API</a>
<a href="https://www.aptgetlife.co.uk/tag/hard-drive-health/" class="tag-cloud-link tag-link-9 tag-link-position-12" style="font-size: 8pt;" aria-label="hard drive health (1 item)">hard drive health</a>
<a href="https://www.aptgetlife.co.uk/tag/kvm/" class="tag-cloud-link tag-link-113 tag-link-position-13" style="font-size: 12.941176470588pt;" aria-label="KVM (3 items)">KVM</a>
<a href="https://www.aptgetlife.co.uk/tag/laravel/" class="tag-cloud-link tag-link-79 tag-link-position-14" style="font-size: 17.058823529412pt;" aria-label="Laravel (6 items)">Laravel</a>
<a href="https://www.aptgetlife.co.uk/tag/larvel-5/" class="tag-cloud-link tag-link-92 tag-link-position-15" style="font-size: 14.588235294118pt;" aria-label="larvel 5 (4 items)">larvel 5</a>
<a href="https://www.aptgetlife.co.uk/tag/lenovo/" class="tag-cloud-link tag-link-74 tag-link-position-16" style="font-size: 10.964705882353pt;" aria-label="lenovo (2 items)">lenovo</a>
<a href="https://www.aptgetlife.co.uk/tag/linux/" class="tag-cloud-link tag-link-72 tag-link-position-17" style="font-size: 22pt;" aria-label="Linux (13 items)">Linux</a>
<a href="https://www.aptgetlife.co.uk/tag/minion/" class="tag-cloud-link tag-link-25 tag-link-position-18" style="font-size: 8pt;" aria-label="Minion (1 item)">Minion</a>
<a href="https://www.aptgetlife.co.uk/tag/mint/" class="tag-cloud-link tag-link-7 tag-link-position-19" style="font-size: 8pt;" aria-label="mint (1 item)">mint</a>
<a href="https://www.aptgetlife.co.uk/tag/netgear-nas/" class="tag-cloud-link tag-link-22 tag-link-position-20" style="font-size: 8pt;" aria-label="netgear nas (1 item)">netgear nas</a>
<a href="https://www.aptgetlife.co.uk/tag/networking/" class="tag-cloud-link tag-link-122 tag-link-position-21" style="font-size: 14.588235294118pt;" aria-label="networking (4 items)">networking</a>
<a href="https://www.aptgetlife.co.uk/tag/network-shares/" class="tag-cloud-link tag-link-32 tag-link-position-22" style="font-size: 8pt;" aria-label="network shares (1 item)">network shares</a>
<a href="https://www.aptgetlife.co.uk/tag/php/" class="tag-cloud-link tag-link-15 tag-link-position-23" style="font-size: 15.905882352941pt;" aria-label="php (5 items)">php</a>
<a href="https://www.aptgetlife.co.uk/tag/php-development/" class="tag-cloud-link tag-link-95 tag-link-position-24" style="font-size: 10.964705882353pt;" aria-label="PHP development (2 items)">PHP development</a>
<a href="https://www.aptgetlife.co.uk/tag/postfix/" class="tag-cloud-link tag-link-29 tag-link-position-25" style="font-size: 10.964705882353pt;" aria-label="Postfix (2 items)">Postfix</a>
<a href="https://www.aptgetlife.co.uk/tag/raspberry-pi/" class="tag-cloud-link tag-link-70 tag-link-position-26" style="font-size: 10.964705882353pt;" aria-label="raspberry pi (2 items)">raspberry pi</a>
<a href="https://www.aptgetlife.co.uk/tag/review/" class="tag-cloud-link tag-link-138 tag-link-position-27" style="font-size: 10.964705882353pt;" aria-label="review (2 items)">review</a>
<a href="https://www.aptgetlife.co.uk/tag/samba/" class="tag-cloud-link tag-link-33 tag-link-position-28" style="font-size: 8pt;" aria-label="samba (1 item)">samba</a>
<a href="https://www.aptgetlife.co.uk/tag/security/" class="tag-cloud-link tag-link-111 tag-link-position-29" style="font-size: 10.964705882353pt;" aria-label="security (2 items)">security</a>
<a href="https://www.aptgetlife.co.uk/tag/smart/" class="tag-cloud-link tag-link-12 tag-link-position-30" style="font-size: 8pt;" aria-label="SMART (1 item)">SMART</a>
<a href="https://www.aptgetlife.co.uk/tag/smartctl/" class="tag-cloud-link tag-link-11 tag-link-position-31" style="font-size: 8pt;" aria-label="smartctl (1 item)">smartctl</a>
<a href="https://www.aptgetlife.co.uk/tag/smartmontools/" class="tag-cloud-link tag-link-10 tag-link-position-32" style="font-size: 8pt;" aria-label="smartmontools (1 item)">smartmontools</a>
<a href="https://www.aptgetlife.co.uk/tag/smb/" class="tag-cloud-link tag-link-34 tag-link-position-33" style="font-size: 8pt;" aria-label="smb (1 item)">smb</a>
<a href="https://www.aptgetlife.co.uk/tag/smbfs/" class="tag-cloud-link tag-link-36 tag-link-position-34" style="font-size: 8pt;" aria-label="smbfs (1 item)">smbfs</a>
<a href="https://www.aptgetlife.co.uk/tag/testing/" class="tag-cloud-link tag-link-21 tag-link-position-35" style="font-size: 8pt;" aria-label="testing (1 item)">testing</a>
<a href="https://www.aptgetlife.co.uk/tag/traefik/" class="tag-cloud-link tag-link-134 tag-link-position-36" style="font-size: 10.964705882353pt;" aria-label="traefik (2 items)">traefik</a>
<a href="https://www.aptgetlife.co.uk/tag/ubuntu/" class="tag-cloud-link tag-link-6 tag-link-position-37" style="font-size: 17.058823529412pt;" aria-label="ubuntu (6 items)">ubuntu</a>
<a href="https://www.aptgetlife.co.uk/tag/ubuntu-18-04/" class="tag-cloud-link tag-link-123 tag-link-position-38" style="font-size: 14.588235294118pt;" aria-label="ubuntu 18.04 (4 items)">ubuntu 18.04</a>
<a href="https://www.aptgetlife.co.uk/tag/ubuntu-20-04/" class="tag-cloud-link tag-link-140 tag-link-position-39" style="font-size: 12.941176470588pt;" aria-label="ubuntu 20.04 (3 items)">ubuntu 20.04</a>
<a href="https://www.aptgetlife.co.uk/tag/ubuntu-22-04/" class="tag-cloud-link tag-link-154 tag-link-position-40" style="font-size: 10.964705882353pt;" aria-label="ubuntu 22.04 (2 items)">ubuntu 22.04</a>
<a href="https://www.aptgetlife.co.uk/tag/ubuntu-server/" class="tag-cloud-link tag-link-112 tag-link-position-41" style="font-size: 19.529411764706pt;" aria-label="ubuntu server (9 items)">ubuntu server</a>
<a href="https://www.aptgetlife.co.uk/tag/vagrant/" class="tag-cloud-link tag-link-20 tag-link-position-42" style="font-size: 8pt;" aria-label="vagrant (1 item)">vagrant</a>
<a href="https://www.aptgetlife.co.uk/tag/virtual-machines/" class="tag-cloud-link tag-link-19 tag-link-position-43" style="font-size: 8pt;" aria-label="Virtual machines (1 item)">Virtual machines</a>
<a href="https://www.aptgetlife.co.uk/tag/xdebug/" class="tag-cloud-link tag-link-17 tag-link-position-44" style="font-size: 8pt;" aria-label="xdebug (1 item)">xdebug</a>
<a href="https://www.aptgetlife.co.uk/tag/xubuntu/" class="tag-cloud-link tag-link-35 tag-link-position-45" style="font-size: 8pt;" aria-label="xubuntu (1 item)">xubuntu</a></div>
</div></section>
</aside></div></div><footer class="site-footer"><div class="wrap">    <p>© Copyright 2015 <a href="http://aptgetlife.co.uk/">apt get life</a></p>
    </div></footer></div><script type="text/javascript" src="https://www.aptgetlife.co.uk/wp-content/plugins/enlighter/cache/enlighterjs.min.js?ver=c4++w8UYz8bi9bk" id="enlighterjs-js"></script>
<script type="text/javascript" id="enlighterjs-js-after">
/* <![CDATA[ */
!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.EnlighterJSINIT=function(){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 type="text/javascript" src="https://stats.wp.com/e-202450.js" id="jetpack-stats-js" data-wp-strategy="defer"></script>
<script type="text/javascript" id="jetpack-stats-js-after">
/* <![CDATA[ */
_stq = window._stq || [];
_stq.push([ "view", JSON.parse("{\"v\":\"ext\",\"blog\":\"71566456\",\"post\":\"0\",\"tz\":\"0\",\"srv\":\"www.aptgetlife.co.uk\",\"j\":\"1:14.1\"}") ]);
_stq.push([ "clickTrackerInit", "71566456", "0" ]);
/* ]]> */
</script><img src="https://pixel.wp.com/g.gif?v=ext&amp;blog=71566456&amp;post=0&amp;tz=0&amp;srv=www.aptgetlife.co.uk&amp;j=1%3A14.1&amp;host=www.aptgetlife.co.uk&amp;ref=&amp;fcp=1583&amp;rand=0.11541575295883555" alt="" width="6" height="5" id="wpstats">

</body></html>