Вычислить n знаков числа Пи
В Твиттере Раймонда Хеттингера был интересный твит - вычисление n знаков числа Пи - на Питоне.
Стало интересно как записать это на JavaScript. Сказано - сделано:
function pi(places) {
const extra = 8;
const pow = function(number, power) {
result = number;
for(let i = 0; i < power; i++) {
result *= number;
}
return result;
}
const one = pow(BigInt(10), places + extra)
let t = BigInt(3) * one;
let c = BigInt(3) * one;
let n = BigInt(1);
let na = BigInt(0);
let d = BigInt(0);
let da = BigInt(24);
while (t > 1) {
n = n + na;
na = na + BigInt(8);
d = d + da;
da = da + BigInt(32);
t = (t * n / d);
c += t;
}
return (c / pow(BigInt(10), extra))
}
console.log(pi(100)) //3141592653589793238462643383279502884197169399375105820974944592307816406
//2862089986280348253421170679
Занятно было посмотреть как работают вычисления в BigInt - если результатом деления двух Int в JavaScript будет Float то результатом деления двух BigInt будет тоже BigInt. При этом нельзя использовать Math.pow для возведения в степень - результатом Math.pow оказывается Number и точность вычислений заметно теряется. Поэтому пришлось делать свою функцию pow c n умножений. Как сделать лучше пока не придумал.
Как мы видим работать с int64 на Питоне значительно проще - Javascript тут значительно проигрывает.
Amazfit Stratos 2
Уже давно купил себе новый девайс на смену умершему Pebble. Первые впечатления оказались очень хорошими - выглядит круто, работает долго, Андроид на борту - а значит можно ставить Андроидные приложения.
Одно расстраивало - не вибрирует когда приходит входящий звонок. Не показывает уведомления. Не вибрирует. Вобщем самые главные функции не работают.
И вот что оказалось - оказывается был включен режим "не беспокоить (DND) в настройках часов.
Зашел в настройки, отключил DND и вуаля - теперь все работает. Как так получилось, то ли это я его включил случайно, то ли изначально он был включен?
Главное сейчас всё работает.
Новый клиент Эфириума
Интересно следить за тем как развиваются сейчас криптовалюты. Еще недавно чтобы поиграться, скажем, с Эфиром нужно было ставить софт, ждать дни и даже недели пока скачается блокчейн на локальльный диск, после этого можно было попробовать что-то куда-то перевести и еще не факт что получится. Сейчас же, поставить клиент - это дело трех секунд. Создать кошелек, вообще просто. Непонятно, правда, почему нет такого же легкого клиента под десктоп - только под мобильные платформы. Это и Биткоина, кстати, касается, официальный легкий клиент есть только под Андроид, под десктоп - тормозной монстр, который съест все свободное пространство вашего жесткого диска и не подавится.
При этом методы, которые я использовал несколько лет назад признаны устаревшими, а полную ноду вообще на локальный компьютер ставить не рекомендуется.
Зато теперь, пользоваться эфиром может кто угодно, где угодно и как угодно. Все это вселяет оптимизм и надежду что, когда нибудь эти технологии все же дорастут до массового потребителя.
Как сконфигугировать FreePBX на Raspberry Pi
Сделал небольшую статейку про то как сконфигурировать Free PBX для работы в качестве мини-АТС - вдруг кому-то будет интересно...
Статейка пока сырая, дополнения и исправления будут позже.