2022-12-11

Третий Конкурс Смарт-Контрактов от TON

Ребята из TON Foundation опять устраивают конкурс в денежными призами и ценными подарками. На этот раз это соревнование по написанию смарт контрактов на языке Func. 

Хотя конкурс рассчитан на новичков, хочу честно признаться - я не могу даже приблизительно понять ЧТО нужно сделать, не говоря уже о том КАК.

Например в задании 4 нужно реализовать операцию по сложению двух эллиптических кривых Curve25519.

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

Ловлю себя на мысли, что мне нравится в этом копаться. Николай Дуров проделал колоссальную работу собирая вместе эту систему. Некоторые называют TON следующим Биткойном.

Пока у меня больше вопросов чем ответов. Например, Смарт Контракты TON можно модифицировать после публикации, как при этом можно защититься от скама? Или, например кошельки в сети TON это смарт контракты, при этом часть кошельков написана на Func а часть на Fift. На сайте утверждается, что они практически идентичны, тогда почему у кошельков второй версии нет кода на Func? Это все равно как привести две программы - одну на Си а вторую на Ассемблере и сказать что они практически идентичны...

Для того чтобы понять как это работает нужно прочитать сотни страниц спецификации. Документация вроде есть, но ее нужно прочитать, а это сотни страниц. Уже есть первые Step-by-step руководства, но они, как правило поломаны из-за изменений в коде системы, и чтобы понять как их пройти, все равно приходиться читать документацию.

Если кому-то нравятся головоломки, то смело могу порекомендовать этот конкурс. Первая фаза уже прошла, для тех кого это не смущает еще есть время до 23 декабря, чтобы разобраться в теме.

 

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

 
  2022-12-02

Запускаем приложение на Go в Kubernetes

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

Kubernetes -- это набор утилит позволяющих разворачивать облачные сервисы состоящии из множества контейнеров. Контейнеры это маленькие виртуальные машины в которых живут отдельные приложения. Эти приложения могут быть написаны на любом языке программирования в том числе и на Go.

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

Записал небольшую видеоинструкцию о том как запустить свое веб приложение написанное на Go в Minikube. 

Писал ночью, поэтому не удивляйтесь если видео больше похоже на ASRM ролик -- я говорю тихо и громко дышу. Надеюсь это не помешает восприятию.

Код приложения и инструкции для повторения можно найти в моем github.

 

 

 

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

 
  2022-10-28

Программирование на телефоне с Vim

Обнаружил, что vim прекрасно подходит для программирования на телефоне.

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

Запилил небольшое видео как выглядит мой процесс программирования:

 

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

 
  2022-08-03

На четвертый день Штирлиц заметил...

Букмарклет, который я сделал, чтобы скачивать аудиокнижки с сайтов, например c вот этого иногда не работает - создатели сайта немного меняют код плеера и мой скрипт не умеет корректно отрабатывать это изменение. Однако, вниметельно посмотрев на плеер на сайте, я заметил ссылочку .mp3 с соответствующей иконкой.

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

 

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

 
  2022-06-23

Hack-a-TON

А нет ли случайно среди читателей моего маленького блога желающих поучаствовать в хакатоне проводимым командой TON первого июля? Хакатон продлится 48 часов и стартует 12:00 UTC (кстати, кто знает, это полдень или полночь?).

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

Для участия понадобится только JavaScript и команда из четырёх (или менее) человек, а все необходимые SDK и готовые смарт-контракты будут предоставлены.

Хакатон будет проходить в режиме онлайн.

Если у вас вдруг есть пару свободных летних дней 1-го и 2-го июля, кажется это будут пятница и суббота следующей недели - дайте знать, должно быть весело!

 

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

 
  2022-05-28

Тридцать часов блокчейна

FreeCodeCamp.org запилили курс по блокчейну и смартконтрактам аж на тридцать часов. Я пока осилил только первый час, но уже понимаю, что курс мегаполезный.

 

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

 
  2021-02-21

Интервальное повторение

Реализовал в своем маленьком пет проекте superwords метод интервального повторения

Superwords это маленькое приложение под android, при помощи которого я изучаю иностранные языки. Что-то типа Anki но с возможностью учить синонимы и варианты переводов - когда я только начинал делать эту программу я был увлечен японским языком и мне нужно было запоминать не только смысл слова но и написание каной и канзи. 

Знание языков мне всегда очень помогало в путешествиях по Европе, в поиске работы и, сейчас, когда я живу в Германии, без них никуда. Хотя, признаюсь, иностранные языки мне всегда давались с большим трудом. Ну нет у меня к ним таланта!

Интервальное повторение - это повторение на основе кривой забывания Эббингауза. Кривая забывания или кривая Эббингауза была получена вследствие экспериментального изучения памяти немецким психологом Германом Эббингаузом в 1885 году.

Эббингауз был увлечён идеей изучения «чистой» памяти — запоминания, на которое не влияют процессы мышления. Для этого им был предложен метод заучивания бессмысленных слогов, состоящих из двух согласных и гласной между ними, не вызывающими никаких смысловых ассоциаций.

В ходе опытов было установлено, что после первого безошибочного повторения серии таких слогов забывание идёт вначале очень быстро. Уже в течение первого часа забывается до 60 % всей полученной информации, через 10 часов после заучивания в памяти остаётся 35 % от изученного. Далее процесс забывания идёт медленно, и через 6 дней в памяти остаётся около 20 % от общего числа первоначально выученных слогов, столько же остаётся в памяти и через месяц.

Для лучшего запоминания информации психологи советуют делать несколько повторений, через некоторые интервалы, величина которых зависит от того, который раз происходит данное конкретное повторение.

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

Первое повторение — через 30 минут, второе повторение — день после первого повторения, третье повторение — через неделю после второго, четвёртое повторение — через месяц после третьего, пятое повторение — через пол года после четвёртого повторения.

Штука оказалась абсолютно убойной, и почему я раньше это не реализовал... 

К сожалению, в GooglePlay приложение в настоящее время недоступно - сейчас новая версия ещё проходит ревью. Но можно установить apk вручную.

 

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

 
  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 с вашего телефона кликая на виджет!

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

 

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