vak: (Default)
"Проект выходного дня" на будущее: сварганить декодер протокола для измерителя Digilent OpenScope к софтине Sigrock. Если кто-нибудь другой не сделает раньше.
vak: (Default)
Я давно мечтал найти простой способ делать документацию. Word и LibreOffice не устраивают: слишком трудоёмко, LaTeX - слишком сложно. Наконец нашёл приемлемый вариант. Процесс укладывается в четыре шага.

(1) Текст готовится в формате MarkDown. Это по сути простое текстовое представление с самоочевидными правилами разметки, вставки рисунков и подготовки таблиц.

(2) Рисунки делаются в формате SVG в редакторе Inkscape или из скрипта на Питоне. Затем рисунки конвертируются в формат EPS для вставки в документ.

(3) Исходный текст преобразуется в формат OpenDocument (он же ODT или *.odt) утилитой Pandoc. При этом стили форматирования подставляются из заранее заготовленного файла-шаблона. Формат ODT понимают LibreOffice, Word и многие другие wysiwyg-редакторы.

(4) Файл ODT преобразуется в PDF посредством LibreOffice.

Весь процесс легко автоматизируется посредством Makefile. Последовательность выглядит примерно так:
inkscape -z picture.svg -E picture.eps
pandoc -f markdown -t odt --reference-odt=my-style.odt input.md -o output.odt
soffice --convert-to pdf output.odt --headless
vak: (Default)
Обнаружил изумительный способ генерить диаграммы сигналов из текстового описания. Диаграмма описывается на языке WaveJSON и выглядит следующим образом:
{ "signal": [
  { "name": "activate.req", "wave": "01........0.",  "node": ".A.........." },
  { "name": "activate.ack", "wave": "0........1.0",  "node": ".........F.." },
  { "name": "out1.req",     "wave": "0.1.0.......",  "node": "..B........." },
  { "name": "out1.ack",     "wave": "0..1.0......",  "node": ".....D......" },
  { "name": "out2.req",     "wave": "0.1....0....",  "node": "..C........." },
  { "name": "out2.ack",     "wave": "0.....1.0...",  "node": "........E..." }
  ],
  "edge": [ "A~B", "A~C", "D~F", "E~F" ]
}
Утилита wavedrom преобразует этот формат в SVG, а дальше посредством inkscape можно делать PNG, EPS или PDF. Вышеприведённый текст превращается в рисунок:



Для интересующихся асинхронной логикой: сей примитив называется Concur и в асинхронном верилоге реализует блок fork...join.

vak: (Default)
Полезная информация для любителей командной строки типа меня. Утилиту mpg123 под Линуксом можно установить командой "sudo apt install mpg123".

BBC One
mpg123 http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio1_mf_p
BBC World
mpg123 http://bbcwssc.ic.llnwd.net/stream/bbcwssc_mp1_ws-einws
KQED
mpg123 http://50.31.186.115:80/kqedradio
KDFC
mpg123 http://16643.live.streamtheworld.com:80/KDFCFM_SC
KFOG
mpg123 http://19473.live.streamtheworld.com:80/KFOGFM_SC
Amber Radio
mpg123 http://amberradio.org:8000/mp3
Радио Аквариум
mpg123 http://ic2.101.ru:8000/c16_15
vak: (Default)
Красивые синтаксические диаграммы в стиле Паскаля можно делать утилитой ebnf2ps .



Установка на Ubuntu делается следующим образом.
$ git clone https://github.com/FranklinChen/Ebnf2ps.git
$ cd Ebnf2ps
$ sudo apt install cabal-install htmldoc-common
$ cabal update
$ cabal install old-time happy
$ cabal build
$ sudo cp dist/build/ebnf2ps/ebnf2ps /usr/local/bin
Для работы утилиты надо установить переменные:
$ export AFMPATH=/usr/share/htmldoc/fonts/
$ export RGBPATH=/usr/share/X11
Документация находится в файле doc.pdf.
vak: (Default)
C++ это еще цветочки, бывает веселее. Что напечатает следующая программа на языке Джаваскрипт?
[!+[]+!+[]+!+[]]+[+[]]
А напечатает она ровно то же самое, что и предыдущая:
$ nodejs
> [!+[]+!+[]+!+[]]+[+[]]
'30'
>
(объяснение здесь)
vak: (Default)
Что напечатает следующая программа? Компилируем посредством "clang++ -std=c++11 lol.cc -o lol".
#include <iostream>

using namespace std;

int main() {
int lol = 10;
int l​ol = 10;
int l​o​l = 10;
int l​​ol = lol + l​ol + l​o​l;
cout << l​​ol << endl;
return 0;
}
(отсюда)
vak: (Default)
Сервер 2xARM64 с операционной системой Ubuntu 16.04, память 2Гб, диск 50Гб, сетевой порт 200Мбит/с с неограниченным трафиком, и всё это за €3 в месяц. Подробности здесь: https://blog.online.net/2017/04/27/scaleway-disruptive-armv8-cloud-servers/

Отлично подходит для организации веб-сервера или персонального VPN.
vak: (Default)
Фирма Global Knowledge опубликовала результаты исследования зарплат программистов по всему миру за 2016 год.

http://images.globalknowledge.com/wwwimages/pdfs/2017_Global_Knowledge_SalaryReport.pdf

vak: (Default)
[personal profile] henry_flower предложил удобный способ вставлять в комментарии видео с Youtube.

К примеру, чтобы вставить ссылку с идентификатором HzavoVQhlOA, в комментарии пишем:
<a href="https://www.youtube.com/watch?v=HzavoVQhlOA" target="_blank">
<img src="http://img.youtube.com/vi/HzavoVQhlOA/0.jpg">
</a>
Получаем:


vak: (Default)
Your Test Results (Tested on 3/28/2017, 3:06:49 PM)
Download Speed: 28.9 Mbit/s (3612.5 kbyte/s transfer rate)
  Upload Speed: 4.88 Mbit/s (610 kbyte/s transfer rate)
       Latency: 23 ms