Category: it

Category was added automatically. Read all entries about "it".

Mikail

(no subject)

Новый интерфейс mm-vis-js. И примеры карт кода. Целиком код репозиториев (.c, .h, .cc, .py и т. п. файлы) Chromium, Firefox, ядра Линукс, Apache httpd, bash, Python, Emacs, gcc, texlive, vim, Visual Studio, Ruby, JDK, ghc, git, Hbase, Julia, mysql-server, neo4j, sbcl, Spark, spring-framework, Tomcat, vis-network, mm-vis-js. Список ссылок на карты в схеме «Карты программного кода».

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

В современных IDE очень не хватает возможности редактировать блоки кода в таком виде на холсте.

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

https://sushilshik.github.io — уменьшите масштаб, чтобы увидеть другие разделы.

2019-11-01_mm-vis-js

Пример карты 500 файлов кода chromium:

mm-vis-js_chromium_1

mm-vis-js_chromium_2

mm-vis-js_chromium_3
Mikail

(no subject)

http://www.nkbtr.org/down/mm-vis-js/code_examples/vis-network/vis-network_2019-10-30_19-13-59/vis-network.index.html
Пример карты кода.
Файл большой, поэтому может загружаться секунд 20.
Теперь можно в ссылке задать координаты на холсте, чтобы сразу открыть нужную точку. Это параметры scale, x и y в конце ссылки. Чтобы сохранить ссылку на текущий вид на холст в браузере, нужно нажать «updateMenuFromScheme» в правом меню, промотать его вниз и скопировать соответствующие параметры в ссылку. Работает без серверной части.

vis-network_project_code_map
Mikail

(no subject)

16 числа Столлман подал в отставку с поста президента Фонда СПО. Из-за в самом деле плохих слов о 14 лет. Если вся эта новость не большой розыгрыш, конечно. Всякое бывает.

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

Я это интуитивно ощущал, и на уровне «так принято в культуре», и плюс к этому появилось объяснение.

Часто вспоминаю об этом объяснении и потому заметил, что уже, наверное, лет 5 я вообще не встречал его нигде вокруг. И раньше встречал очень редко.

И масса людей этой идеи может не знать. И Столлман технически мог никогда не встречаться с объяснением. Да и кто какой кусок знаний о реальности получил? По какой цепочке? И нет работы над ошибками, например, в IT-сообществе после истории с Столлманом.

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

Очень неприятно — если бы мне эти тексты по этой идее не встретились? (Тексты, в которых не только логика, но и «так принято» свое есть) Что бы я мог тогда сказать без знаний (а я и говорю постоянно... и вопросы задаю. А как иначе?)?

И опять никто никому ничего не стал объяснять. Никаких ссылок, статей, книг. Впечатление, что выгодно, чтобы в этическом плане не было развития. Вот это воспитание общества.

Может быть есть и некая гипотетическая патерналистская иерархия заботы в обществе? Вдруг. Но и коммерцию ведь тоже отсюда не выкинуть.
Mikail

Tabs Outliner

Для тех, кто открывает десятки вкладок в Google Chrome, выстраивающихся неразличимым рядом зубчиков наверху в панели заголовков и дико тормозят компьютер — есть замечательный плагин Tabs Outliner. Это как управление закладками, только вместо закладок табы браузера. Табы синхронизированы с деревом Tabs Outliner. Можно деактивировать таб — он закроется в хроме, но останется в дереве плагина. Активируется двойным кликом. Перетаскивая пункты в дереве — перемещаете табы в хроме и наоборот.

Очень удобно, чтобы составлять себе рабочие места для определенной работы. Например, дерево «Работа в соц.сетях» или «Доки для программирования текущего проекта». Или сохранять ссылки по дням, если каждый день начинать работу в новой ветке дерева с датой.

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

UgwzDbh

sangkrit.net-how-to-easily-manage-lots-of-tabs-from-a-central-place-in-google-chrome1
Mikail

Lisp code trees with versioning

Давно хотел посмотреть, как будет работать версионированный вывод кода Lisp в форме деревьев. C Lisp идея сама напрашивается. Получился очень быстрый прототипчик, но идею он передает и уже помогает разбираться с кодом.
Плюс хотел поэкспериментировать с захватом экрана с помощью простого ffmpeg.

Интересно посмотреть в разных кобинациях, как происходит «перевод» кода на язык схем. А затем, с помощью комментариев к веткам схем, сразу перевод на привычный язык, объяснения своими словами. То есть видим код сразу на трех языках и с трех точек зрения.

И очень удобно, что можно делать древесные комментарии буквально к каждому слову. Вникать в самые мелкие детали. И места на холсте предостаточно. Поместится столько текста комментариев, что можно подробно расписать и понять сложные проблемы кода.

Mikail

VUE + Ruby

В VUE очень просто подключить jRuby. Будет как JavaScript в браузере. Также можно управлять элементами на холсте. Версия «на коленке».

1. git clone https://github.com/VUE/VUE.git
2. cd VUE/
3. git checkout tags/3.2.2
4. git checkout -b 3.2.2-work
5. wget http://nkbtr.org/down/jruby.patch
6. git apply jruby.patch
7. wget http://central.maven.org/maven2/org/jruby/jruby-complete/1.7.16/jruby-complete-1.7.16.jar
8. mv jruby-complete-1.7.16.jar VUE2/lib/
9. VUE2/src
10. ant compile
11. ant jar
12. java -jar VUE2/src/build/VUE.jar

Файл с примером кода и инструкцией: http://nkbtr.org/down/vue_scripting.vpk

Если файл в VUE не открылся сразу, откройте еще раз (повторите операцию).

Еще в 90-е появились приставки Visual в именах языков программирования. Например, Visual C++. И, помню, переговаривались на кружке программирования «а где же там этот Visual?». Только плечами пожимали. А представлялось что-то красивое.
Так вот этот самый Visual =) Ruby в программе для концептуального моделирования!

И можно ведь массу других языков подключить, для которых есть JVM-версии.

Всегда казалось, что чего-то не хватает графическому интерфейсу с нодами иконок на рабочем столе и в директориях. Так осталось же их только стрелками связей соединить =)

vue_script_example

vue_scripting
Mikail

Ansible

C наступающим! =)

Начал пользоваться Ansible — системой автоматизации сисадминских задач. И прочитал книгу «Ansible: From Beginner to Pro». Идея Ansible в том, что админские задачи, которые обычно приходится выполнять вручную на каждом компьютере (ставить и удалять программы, изменять конфиги, настраивать сеть, настраивать процессы и т. п.), можно записать в форме инструкций (playbook) на внутреннем языке Ansible и выполнять их, например, одновременно на нескольких удаленных компьютерах. Ansible подключается к целевым компьютерам по ssh и не требует держать на них специальные процессы-слушатели.

На https://galaxy.ansible.com/explore/ репозиторий с массой готовых инструкций. Многие из них ставят и настраивают «под ключ» замысловатые комплексы сервисов. Инструкции можно скачать и отредактировать под себя.

Книгу выбрал еще и потому, что большая часть примеров в ней выполняется в виртуальных машинах Vagrant. И, соответственно, Vagrant описан довольно подробно. Получилось удачно — сразу после книги о Docker. Vagrant и Docker похожи интерфейсами и стилем использования. Различие в том, что Docker запускает свои контейнеры быстрее и экономнее использует ресурсы, но специализируется только на Линукс, а Vagrant работает со всеми ОС, которые поддерживает как минимум VirtualBox. То есть под Docker подразумевается virtual environment, под Vagrant — обычно virtual machines.

Еще из интересного у Ansible — система тестирования инструкций. Test Kitchen в сочетании с ServerSpec. Test Kitchen — инструмент для создания контейнера, выполнения в нем тестируемой инструкции и запуска тестов (ServerSpec), которые проверяют результат исполнения инструкций. ServerSpec — механизм тестов, которые, собственно, проверяют исполнени инструкций, то есть проверяют итоговое содержимое собранного контейнера.

Думаю, в будущем комбинации инструментов вроде Ansible+Docker/Vagrant будут активнее использовать в документации и образовательных материалах как минимум IT-сферы.

Книга: https://goo.gl/qKocmz

Ansible_From_Beginner_to_Pro

ansible
Mikail

Достижения современной эргономики

Как только в июне написал пост о языке «Дракон», так сразу решил составить обзор его редакторов.

Меня радует сам факт существования этого языка, соединяющего достижения 70-80-х и наши дни. Радуют редакторы языка. Вдохновляют программисты-авторы его редакторов.

Я был рад самой мысли о том, что я напишу этот обзор.

Так вот одновременно меня что-то с огромной силой останавливало.

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

И давно бы уже на одном дыхании родился текст.

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

Я списывал этот факт на лень непонятного мне происхождения — ведь я уже много сделал для обзора.

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

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

Так я думал. И потому не понимал, что же мне мешает начать? Почему не хочу? Что мне не нравится? Почему избегаю старта?

К концу месяца хотелось почти что биться лбом об стенку =)

Я даже завел маленький дневничок для более организованной работы над текстом.

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

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

И я не ждал, что найду что-то новое.

Так вот — я успел расписать предложений 5-6 и тут меня осенило! =)

Одна из главных особенностей и достоинств языка «Дракон» в том, что он был специально оптимизирован с точки зрения эргономики работы с информацией.

Под эргономикой я подразумеваю науку эргономику. См. определение: «наука о приспособлении ... объектов труда, .... для наиболее ... эффективного труда работника, исходя из ... психических особенностей человеческого организма». В данном случае будем считать, что одним из объектов труда работника является визуальный язык «Дракон».

И с 80-х годов язык «Дракон» не был усовершенствован с учетом новых достижений в эргономике 90-х, нулевых и уже наших десятых годов. Не оптимизирован с учетом современных открытий в сфере «психических особенностей человеческого организма».

А мы живем в эпоху широкого развития нейронаук, в эпоху активной практической работы над нейроинтерфейсами. Вроде бы =)

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

Но обвинять тут некого, потому что мне, например, вообще не встречаются тексты по оценке современных IT-инструментов с точки зрения современной эргономики.

Например, «отраслевые» обсуждения вращаются вокруг отступов, подстветки синтаксиса, синтаксического «сахара» и т. п. В IT изданиях и форумах я не встречал материалов о системной, основательной работе над языками программирования и сопутствующими инструментами с точки зрения эргономики. Я представляю себе такие статьи полные таблиц, графиков, описаний принципов современной эргономики, прототипов кода отвечающего ее требованиям.

Например, языки Java и C# - продукты крупных корпораций. Но тем не менее и там не видно активной публичной работы по внедрению разработок из сферы современной эргономики в эти языки, в окружающую их инфраструктуру.

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

Получается, что хоть эргономические апгрейды языка «Дракон» родом из 80-х, но популярные отраслевые языки в плане принципов эргономики все еще, думаю, находятся на уровне 60-70-х. И «Дракон» все равно оказывается впереди.

В целом, у языка «Дракон» и его редакторов, уверен, большие перспективы и запас развития. Уверен, интеграция в них новых разработок из эргономики будет очень плодотворной.
Mikail

UML

С начала января от вечера к вечеру прочитал «UML. Основы» Мартина Фаулера. И впечатление — не очень. Слишком поверхностно. На диаграммы классов всего 40 страниц отведено. Например, такая важная тема как ассоциации дана так, что ощущения ясности у меня так и не возникло.

Но все же дочитал книгу до конца, чтобы уж от корки до корки и увидеть общую картину UML.

На втором подходе к снаряду выбрал книгу заметно более объемную — «UML 2.0 Объектно-ориентированное моделирование и разработка» Дж. Рамбо, М. Блаха. Прочитал там сразу главы о диаграммах классов. 80 страниц, гораздо подробнее и более что ли строгий текст. Может переводчик аккуратнее? В общем в диаграммах классов теперь ориентируюсь. Мечту выполнил, галочку поставил =)

cd88b07a915b1ccfab378ab44afec9ce

e7fc64caa13f046d2778bca6605ae20f
Mikail

(no subject)

Насмотрелся в ютубе роликов с лекциями о функциональном программировании и подумалось:

Ехал лямбда через лямбду
Видит лямбда в реке лямбда
Сунул лямбда лямбду в лямбду,
В лямбду, в лямбду, в лямбду, в лямбду.

(копирую из фейсбука)

2