PARA Versatile Pythagorean Laser Measurer » Gadget Flow
von Satoshi Nakamoto

Efficiently measure just about anything with the PARA Versatile Pythagorean Laser Measurer. Utilizing two lasers and an angle encoder, this useful gadget allows you to make measurements without even moving. PARA works by measuring the distance between two laser points. You can also attach the measurer to a tripod for more precision, eliminating the need for a ladder. Similarly, the roller function makes it easy to measures curves by dragging the device. To use PARA, start by holding it in your hand. Then point the two lasers to your target and press the trigger. Likewise, you can put PARA on the desired surface and use the wheel to drag it until you reach your goal. Once you measure the length using the Laser or Wheel mode, the data automatically transfers to your smartphone via Bluetooth. Simply press save to keep track of your measurements.
jQuery(document).ready(function ()
if ( gfl_gdpr_accepted === "yes" )
!function (f, b, e, v, n, t, s)
if (f.fbq) return;
n = f.fbq = function ()
n.callMethod ?
n.callMethod.apply(n, arguments) : n.queue.push(arguments)
;
if (!f._fbq) f._fbq = n;
n.push = n;
n.loaded = !0;
n.version = '2.0';
n.queue = ;
t = b.createElement(e);
t.async = !0;
t.src = v;
s = b.getElementsByTagName(e);
s.parentNode.insertBefore(t, s)
(window,
document, 'script', 'https://connect.facebook.net/en_US/fbevents.js');
fbq('init', '1940948709566142',
em: ''
);
fbq('track', 'PageView');
);
window.fbl_started = false;
function fbl_init()
try
window.FB.init(
appId : '230738483735176',
cookie : true,
xfbml : true,
status : false,
autoLogAppEvents : true,
version : 'v2.10'
);
window.FB.Event.subscribe('xfbml.render', function()
FBL.renderFinish();
);
window.fbl_started = true;
catch (e)
window.fbAsyncInit = function()
if( ! window.fbl_started )
fbl_init()
;
var fbl_interval = window.setInterval(function()
if(window.fbl_started)
clearInterval(fbl_interval);
if( !window.fbl_started)
fbl_init();
,100);
(function(d, s, id)
var js, fjs = d.getElementsByTagName(s);
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "http://connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
(document, 'script', 'facebook-jssdk'));
var $ = jQuery.noConflict();
$(document).ready(function() {
if ( gfl_gdpr_accepted === "yes" ) {
window.fbAsyncInit = function ()
FB.init(
appId: '230738483735176',
cookie: true, // enable cookies to allow the server to access
xfbml: true, // parse social plugins on this page
version: 'v2.2' // use version 2.2
);
;
// Load the SDK asynchronously
(function (d, s, id)
var js, fjs = d.getElementsByTagName(s);
if (d.getElementById(id)) return;
js = d.createElement(s);
js.id = id;
js.src = "http://connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
(document, 'script', 'facebook-jssdk'));
// Thanks to Zane === zM Ajax Login & Register === for this bit
$('.js-fbl').on('click', function (e)
e.preventDefault();
window.fbl_button = $(this);
window.fbl_button.addClass('fbl-loading');
$('.fbl_error').remove();
if (navigator.userAgent.match('CriOS'))
$('
' + fbl.l18n.chrome_ios_alert + '
').insertAfter(window.fbl_button);FB.getLoginStatus(handleResponse);
else
try
FB.login(handleResponse,
scope: fbl.scopes,
return_scopes: true,
auth_type: 'rerequest'
);
catch (err)
window.fbl_button.removeClass('fbl-loading');
alert('Facebook Init is not loaded. Check that you are not running any blocking software or that you have tracking protection turned off if you use Firefox');
);
var handleResponse = function (response) {
var $form_obj = window.fbl_button.parents('form') || false,
$redirect_to = $form_obj.find('input').val() || window.fbl_button.data('redirect');
/**
* If we get a successful authorization response we handle it
*/
if (response.status == 'connected') {
var fb_response = response;
/**
* Send the obtained token to server side for extra checks and user data retrieval
*/
$.ajax(
data:
action: "fbl_facebook_login",
fb_response: fb_response,
security: window.fbl_button.data('fb_nonce')
,
global: false,
type: "POST",
url: fbl.ajaxurl,
success: function (data)
if (data && data.success)
if (data.redirect && data.redirect.length)
location.href = data.redirect;
else if ($redirect_to.length)
location.href = $redirect_to;
else
location.href = fbl.site_url;
else if (data && data.error)
window.fbl_button.removeClass('fbl-loading');
if ($form_obj.length)
$form_obj.append('
' + data.error + '
');else
// we just have a button
$('
' + data.error + '
').insertAfter(window.fbl_button);,
error: function (data)
window.fbl_button.removeClass('fbl-loading');
$form_obj.append('
' + data + '
'););
} else
window.fbl_button.removeClass('fbl-loading');
if (navigator.userAgent.match('CriOS'))
window.open('https://www.facebook.com/dialog/oauth?client_id=' + fbl.appId + '&redirect_uri=' + document.location.href + '&scope=email,public_profile', '', null);
};
}
});
Source link
Read the full article
Satoshi Nakamoto
Keine Verbindung
Verbindung wird wiederhergestellt
Etwas ist schiefgelaufen
Wir sind gleich wieder da