2020-12-12

Альтернативное IDE для Ардуино

Давно ищу замену для Arduino IDE которое очень примитивное и жутко неудобное.

Пробовал использовать для этого Атом и Eclipse но так и не смог их настроить для компиляции скетчей. Приходилось все равно использовать родное IDE но оно не умеет автобновлять содержимое файлов если их изменить в сторонней программе, поэтому скетч нужно постоянно закрывать и открывать заново, что жутко неудобно.

Оказалось что Visual Studio Code прекрасно умет почти из коробки запускать скетни Arduino. Просто ставится соответствующее расширение и ваши скетчи начинают волшебным образом компилироваться. При этом, как я понял, используются те же библиотеки, которые используются для компиляции скетчей в Arduino IDE.

Как же это здорово, когда можно пользоваться нормальной подсветкой синтаксиса и использовать автоподсказки. К хорошему быстро привыкаешь.

 

Оставить комментарий

 
  2020-12-06

Почему в npm так много плохих пакетов?

А просто любой школьник может создать новый пакет и опубликовать его!

И беда в том, что пакеты для использования нужно обязательно опубликовать, даже если ты его создаёшь исключительно для личного использования. Невозможно, скажем, указать git репозиторий как в composer и использовать его не публикуя.

Понадобилась мне на днях для одного маленького проекта библиотека cuba - такая маленькая утилита для вытягивания данных с google таблиц. Так оказалось, что библиотека перестала поддерживаться, а мне она очень нужна - уж больно удобная. Из-за маленького бага, табличка, которую я создал на Google Sheets никак не хотела импортироваться. При этом фикс простой, и Pull Request на гитхабе уже есть, но автор библиотеку давно не обновляет. Пришлось форкать репозиторий, и публиковать свою исправленную версию.

Встречайте - cuba-sheet. Теперь в npm одной плохой библиотекой больше!

 

Оставить комментарий

 
  2020-11-12

Коммитим в Git из Android

Задался вопросом - можно ли развернуть Git репозиторий на телефоне, редактировать файлы и коммитить изменения в проект? Оказалось, что можно, и оно отлично работает!

Установил Termux, Termux:Api, Termux:Widget. Важно чтобы все три приложения были установлены из одного магазина приложений - они есть в F-Droid и Android Play Market но последнее в Android Play стоит два доллара а в F-Droid - бесплатное.

Запускаем Termux и ставим необходимые пакеты, и разрешаем приложению доступ к файловой системой:


pkg install git openssh termux-api
termux-setup-storage

Cоздаем папку для проекта и инициализируем репозиторий:


mkdir /storage/emulated/0/Documents/work
cd /storage/emulated/0/Documents/work
git init
git remote add origin git@github.com:username/reponame.git
git config --global user.email "your@email.com"
git config --global user.name "Max"
nano readme.md
git add readme.md
git commit -am"first commit"
#cоздаем пару ключей для git репозитория:
ssh-keygen
cat /data/data/com.termux/files/home/.ssh/id_rsa.pub
#полученную строку копируем и вставляем в профайл гитхаба или другой системы которой вы пользуетесь.

Cоздаем папочку со скриптами:


mkdir -p $HOME/.shortcuts
mkdir -p /data/data/com.termux/files/home/.shortcuts/tasks
cd /data/data/com.termux/files/home/.shortcuts/
nano ./push.sh 
chmod +x push.sh

push.sh выглядит так:


#!/data/data/com.termux/files/usr/bin/bash
cd /storage/emulated/0/Documents/work
git add *
git commit -am"autocommit"
git push origin master
termux-toast "Changes successfully pushed" 

Аналогично создаем pull.sh:


#!/data/data/com.termux/files/usr/bin/bash
cd /storage/emulated/0/Documents/work
git pull origin master
termux-toast "Changes successfully pulled"

Осталось лишь добавить виджет на экран и вы можете делать pull и push с вашего телефона кликая на виджет!

Вуаля, теперь можно, например, редактировать заметки и сразу коммитить их в репозиторий, чтобы не потерять историю изменений!

 

Оставить комментарий

 
  2020-10-18

Занимательный факт о вычислениях с плавающей запятой

Подсмотрел в твиттере Раймонда Хеттингера пример для Питона.

В Javascript это тоже работает:

var x = 12345678901234567.0
console.log(x === x + 1); //true	

 

Оставить комментарий

 
  2020-04-20

Вычислить 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 тут значительно проигрывает.

 

Коментариев: 1

 
  2020-04-01

Отладка JavaScript в nodejs

Node.js умеет из коробки отлаживать JavaScript файлы. Для того чтобы зайти в режим отладки нужно запустить скрипт с коммандой inspect.

node inspect <filename.js>

При этом программа начнёт выполняться сразу в режиме отладки и остановится на первой строке.

Для перехода к следующей строке нажмите n[enter], для step into s[enter], для продолжения (Resume execution) с[enter].

Выход из приложения два раза ^C.

Записал коротенькое видео как это делается.

 

Оставить комментарий

 
  2020-01-07

Atom - IDE

В очередной раз решил попробовать Атом. Оказалось, что с того времени, как я его ставил последний раз технологии продвинулись вперед, и теперь им вполне можно пользоваться. Конечно это не phpStorm, но за свои деньги (а он, кстати, бесплатный) он оказался вполне сравнимым по возможностям. 

Главным критерием для меня было, чтобы можно было в одной среде работать с Java, С++ и PHP. Atom пока вполне с этой задачей справляется, конечно, не так хорошо как специализированные продукты, но, это от него и не требуется.

Из нужных расширений пока поставил goto-definition и terminal-tab. Сильно не хватает продвинутых возможностей статического анализа от phpStorm ну да без этого пока можно жить.

 

Оставить комментарий

 
  2018-12-03

Разработка под Андроид

 

Иногда резко возникает желание что-нибудь запилить под Android. Не то, чтобы я не любил разработку под Андроид. Нет, наоборот, мне это нравится, но, если это не то, чем ты занимаешься каждый день, а, скажем, запускаешь среду время от времени, то разработка превращается в скачивание время от времени гигабайт всякой фигни без всякого выхлопа.

Переехав на новый SSD встала необходимость доставить инструменты для разработки.

1. Установил Android Studio, которая сама по себе весит один гигабайт. Ну, ок, открываю проект. Оказывается, мой проект устарел - конвертируем в новый формат. Ок.

2. Не хватает gradle - скачиваем

3. Не хватает Android Platform 8 - скачиваем

4. Не хватает Build Tools - скачиваем

5. Компилируем еще раз, пока компилируется предлагают обновить gradle на новую версию - спасибо, не надо, мне бы поработать... Прошлый раз я сказал уже yes - пришлось час гуглить как починить проект для работы с новом gradle.

6. Для запуска давай, создавай виртуальный девайс - Скачиваем образ системы для виртуального девайса.

7. Теперь не хватает доступа к /dev/kvm - гуглим, чиним

Вуаля, виртуальный девайс заработал! Но хочется же и на физическом устройсте запустить. Тут запустилось почти сразу, правда пришлось еще скачать Android Platform 9 - для быстрой компиляции - ибо на устройстве стоит именно эта версия.

Ура! Можно программировать, управился с настройкой окружения за два дня!Программировать уже расхотелось, пойду посплю. В следуюущий раз, когда возникнет желание попрограммировать, история повторится.

 

Коментариев: 1

 
  2018-04-23

Зачем рeдактировать /etc/hosts для создания локального сайта?

Добавил новую DNS запись вида *.local на домен maxistar.ru ссылающуюся на 127.0.0.1 - теперь для локальной разработки не обязателно добавлять имя локального сайта в /etc/hosts - просто создаем локальный виртуальный домен, например newproject.local.maxistar.ru - и вуаля - я могу видеть его по этому адресу!

Кстали, в сети полно таких DNS записей более короткого вида - например fuf.me ссылается на локалхост, можно, например, сделать newproject.fuf.me.

Единственный недостаток такого метода - он не будет работать при отсутствии интернета - так что если вы работаете с ноутбука, старый добрый способ может оказаться надежнее.

 

Оставить комментарий

 
  2014-08-27

Arduino

Попробовал сабж, понял почему в народе оно так популярно - уровень вхождения - ноль, т.е. любой неподготовленный человек может поключить плату к компьютеру и начать программировать. Причем, готовое устройство можно получить сразу на макетной плате. Хочу реализовать кое-что из домашней автоматики Arduino Pro Mini - для моих нужд самое оно.

 

Оставить комментарий