LINUX.ORG.RU

Сообщения den73

 

яролит взад

 ,

Про Яролит хорошая тема получилась (и даже очень полезная, а такое не всегда получается). Теперь - внимание! Я придумал обратный транслит. Он служит для кодирования латиницы кириллицей:

a b c d e f g h i j k l m n o p q r s t u v w x y z
а б ц д е ф г ш и й к л м н о п ь р с т у в ю х ы з
Здесь по возможности пары подобраны так, чтобы совпадать с яролитом. Некоторые буквы кириллицы кодируются диграфами и для них это невозможно. Но если записать все констрейнты и решить их, то по сути выбора нет - задача решается однозначно. Например, в яролите й = jj. Очевидно, что в обратном яролите j = й. ш = sh, отсюда вытекает, что в обратном яролите h = ш. И т.п. Вот как надо писать:
линух.орг.ру
йошн леннон
гит цлоне шттпс://гитшуб.цом/алтоцмс
гит цшекоут -ф девелоп
мосцою
спутник
новицшок
ыандех тахи 

Для устранения неоднозначности в чатах можно в неочевидных слуаях писать:

Вставим ,енглисш ,аббревиатион ,ОС в русское предложение
ОС здесь неоднозначно, т.к. может быть ОС в русском и OS в английском, и даже значит одно и то же. Запятая перед словом является грамматической ошибкой, что позволяет использовать её для обозначения того, что следующее слово - английское, записанное транслитом.

Самое смешное, что на работе мы его уже используем в чате. Т.е. по сути уже есть одно внедрение. Правда, я пока не знаю, что думает про нас третий русскоязычный пользователь :)

Экономия на двух переключениях вполне ощутима, всё понятно, информацию можно передать точно и иногда можно поржать над тем, что получается (вплоть до упадения под стол), что делает работу веселее. Правда, мой коллега предлагает другой вариант:

h x 
Х Ш 
Интересно узнать ваше мнение - какой вариант лучше. Ну и присылайте свои смешные переводы.

den73
()

Новая версия Яролита (форк ГОСТ 16876-71, табл 2)

 , ,

Выпущена новая версия яролита. Она почти равна русскому подмножеству ГОСТ 16876-71 (ISO/R 9:1968) (так случайно получилось).

V chashhakh juga zhil by citrus? Da, no falqshivyjj ehkzempljar!

Отличия от ГОСТ:

ь = q (перевернули мягкий знак)
ъ = jq (твёрдый знак разрезали и перевернули)
† = j8224j // любой юникод тоже представим
// Переключение языка с помощью последовательности
Ajj da xesukin xrsyn
// Добавлены дореформенные буквы (но их выкину в пользу братских и "небратских")
http://программирование-по-русски.рф/яролит.яргт/

Дальше изучаем тему. Буду складывать сюда всё, что найду:

http://meganorm.ru/Data2/1/4294835/4294835719.pdf - ГОСТ (ныне упразднён)

https://www.iso.org/standard/3587.html - история

https://www.ub2000.de/ru/kachestvo-perevodov/zaverennye-perevody-soglasno-sta... - пример использования (некоторые организации в германии требуют перевод по этому стандарту)

http://userscripts-mirror.org/scripts/review/89883 - кодировщик на JS для 1968 - неправильный, т.к. в нём й = j, а должно быть jj.

den73
()

OpenBox/LXDE - как в диалоге открытия файла вводить имя файла с клавиатуры?

 , ,

В vs code для ручного ввода нужно сначала выбрать «введите расположение» мышью, а потом набирать полный путь, а не относительно изначально заданной директории. В leafpad вообще не видно поля ввода, но оно появляется, если нажать на домашнюю директорию (опять же, мышью). Есть ли способ нормально вводить с клавиатуры?

ОТВЕТ:

нажатие / показывает окошко прямого ввода имени файла.

ещё упоминалось Ctrl-H, но я не смог оживить.

den73
()

поднять зеркало «computer language benchmark game»

 

Известна игра «computer language benchmark game». У неё есть исхоники, например, git://github.com/kragen/shootout.git, https://stackoverflow.com/questions/6157153/how-can-i-get-the-source-codes-fo...

Предлагается желающим сделать следующее: 1. Установить где-нибудь на debian stretch 2. прогнать тесты и создать архив с результатами. 3. куда-нибудь выложить результаты (например, в виде таблички в формате LibreOffice, хотя бы уж в гитхаб). 4. Написать статью, описывающую, как всё это повторить, на русском языке, для чайников, и выложить её туда же на гитхаб.

Я в своё время начинал устанавливать эту игрушку, но не осилил.

Смысл в том, что сайт явно продался жавистам. Они выпилили luaJit, не приняли D, выкинули попарное сравнение. Некоторые тесты вызывают сомнения. В лиспе они выкинули тесты, которые генерируют код динамически. И т.п.

den73
()

альтернативы computer benchmark game

 

Всем привет! Я точно помню, что кто-то из форумчан делал свой проект с бенчмарками, сравнивающими разные ЯП. Напомните, пожалуйста, кто это был и где искать?

И вообще, нужна наконец какая-то альтернатива этому отвратительному продажному computer benchmark game, который очевидным образом пиарит жабу.

den73
()

Сколько времени собирается javascript v8?

 ,

Вдруг кто-нибудь пробовал? И насколько этот процесс муторный?

den73
()

как управлять попаданием js-библиотеки на сайт

 ,

У меня есть библиотека, к-рую я установил с помощью npm install. В ней есть некие скрипты, которые нужны на сайте. Они находятся, естественно, в node_modules. И есть директория js в корне сайта.

Можно ли автоматизировать процесс попадания библиотеки из node_modules в js?

Например, чтобы при апгрейде библиотеки туда попали новые версии js-скриптов, и чтобы они углифицировались? Чтобы не попадали те скрипты, которые на сайте не нужны. Я нахожу ряд статей «как начать пользоваться grunt/bower и т.п.», но как-то не попадается статься, где было бы описана именно эта ситуация.

Или это всё нужно делать руками?

den73
()

tcl как кроссплатформенная замена bash

 , ,

Подойдёт ли?

den73
()

LXDE, lubuntu-desktop - открывать приложение или переключаться в него по горячей клавише

 , , переключение приложений

Имеется debian 9 stretch LXDE. Открыта IDE, веб-браузер и терминал. Я хочу переключаться между ними не альт-табом, а по горячим клавишам. Я знаю, что это можно сделать с помощью рабочих столов, но у меня два монитора. Если раскидать приложения по рабочим столам, пространство экрана будет недоиспользовано.

В офтопике есть «закреплённые приложения» возле кнопки «Пуск». Когда нажимаем Win+1, Win-2 и т.п., запускается первое, второе и т.п. приложение . А если приложение уже запущено, то в него переключаюсь.

Можно ли так настроить LXDE? Или, может быть, есть какая-то ещё альтернатива?

РЕШЕНИЕ

# Установим программки...
> sudo apt-get install wmctrl wish xdg-utils
# Посмотрим, какие окошки у нас есть
> wmctrl -x -l 
0x03000046  0 sun-awt-X11-XFramePeer.jetbrains-phpstorm  deb8 rl [/y/rl] - ...ргт [rl] - PhpStorm
0x03600004  0 lxterminal.Lxterminal  deb8 den73@deb8: ~
0x03c00001  0 google-chrome.Google-chrome  deb8 Новая вкладка - Google Chrome
0x03c00014  0 google-chrome.Google-chrome  deb8 Developer Tools - https://www.google.ru/...
0x03800003  0 leafpad.Leafpad       deb8 (Без имени)
# Окошки можно искать по имени класса и по заголовку (man wmctrl).

Создадим скрипт для обработки горячих клавиш и запишем в файл ~/.config/горячие-клавиши-openbox.ш:

#!/bin/bash

function Диалог {
  echo "wm withdraw . 
  tk_messageBox -title {Помощник горячих клавиш} -message \"$0 сообщает:
[list $1]\"
  destroy ." | wish
}

command -v wmctrl || Диалог "Не установлена программа wmctrl"
case $1 in
  (W-1) 
   wmctrl -x -a Lxterminal \
   || xdg-open ~/Рабочий\ стол/lxterminal.desktop;;
  (W-2)
   wmctrl -x -a "Doublecmd" \
   || ~/doublecmd/doublecmd.sh;;
  (W-3) 
   wmctrl -a "- Google Chrome" \
   || google-chrome;;
  (W-4) 
   wmctrl -a "Developer Tools -" \
   || Диалог "$1 только активирует Chrome Developer Tools, но не запускает их";;
  (W-5) wmctrl -a "- Visual Studio Code" \
   || code;;
  ("") Диалог "В качестве параметра передай горячую клавишу, как она записана в OpenBox.";;
  (*) Диалог "Неизвестная горячая клавиша «$1»"
esac

# Сделаем файл исполняемым
> chmod u+x ~/.config/горячие-клавиши-openbox.ш
# Настроим конфигурацию LXDE
# Для LXDE
> leafpad ~/.config/openbox/lxde-rc.xml
# Для Lubuntu-desktop
> leafpad ~/.config/openbox/lubuntu-rc.xml

Добавляем в секцию keyboard:

    <keybind key="W-1"><action name="Execute">
       <command>~/.config/горячие-клавиши-openbox.ш W-1</command></action></keybind>
    <keybind key="W-2"><action name="Execute">
       <command>~/.config/горячие-клавиши-openbox.ш W-2</command></action></keybind>
    <keybind key="W-3"><action name="Execute">
       <command>~/.config/горячие-клавиши-openbox.ш W-3</command></action></keybind>
    <keybind key="W-4"><action name="Execute">
       <command>~/.config/горячие-клавиши-openbox.ш W-4</command></action></keybind>
    <keybind key="W-5"><action name="Execute">
       <command>~/.config/горячие-клавиши-openbox.ш W-5</command></action></keybind>

Применяем

> openbox --reconfigure

Сочетания Win+1 .. Win+5 теперь вроде работают.

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

P.S. работает также в Ubuntu 12.04; также проверено в Ubuntu 16.04 для рабочего стола lubuntu-desktop

den73
()

Выбираем грид для админки

 ,

Обзоры для отбора:

Текущий остаток

Первый круг требований

Изменяемая ширина колонок (хотя я уже теперь думаю - а нужна ли она?), постраничный просмотр, поддержка AJAX, маркер текущей записи, хождение по записям стрелками, доступность исходника.

Не прошли первый круг: tui.grid, jsGrid, Quickgrid, jqGrid, jexcel, https://github.com/paulopmx/Flexigrid (нет указателя текущей записи), http://www.evolutility.org/demo/demo_ToDo.aspx (нет указателя текущей записи), https://datatables.net/ (то же),

Идём на второй круг

Теперь должно выполняться следующее:

  • при любой навигации, кроме прокрутки за скроллбар, текущая запись видна на экране
  • кнопки pgup-pgdn позволяют листать запись
  • ctrl-f ищет в гриде, если грид фокусирован, и на всей странице, включая грид, если грид не фокусирован. Вообще это требование спорное, т.к. требует загрузки всего контента в страницу. Т.е., либо нужно перешибить Ctrl-f и листать страницы программно, либо не нужен скроллбар, а нужно явно показать, что на странице присутствует лишь часть данных.
  • не тормозит при хождении стрелками

Не прошли второй круг: w2ui.

https://paramquery.com/demos/readonly_cells - ctrl-f не листает по строкам.

https://dhtmlx.com/docs/products/dhtmlxGrid/ - указатель уходит за границы экрана.

Третий круг

Здесь мы выкидываем те гриды, которые не поддерживают фильтрацию на сервере.

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

Остаток требований:

  • грид находится в двух состояниях - фокусирован или нет. При щелчке вне грида грид не фокусирован
  • быстро показывает набор из 100 записей, находящихся в виде JSON на самой странице.

Итог Пока что выбрал SlickGrid, его хвалят за модульность и быстроту. У него сейчас одна основная ветка. Он используется в stackoverflow (data.stackexchange.com), pgAdmin4 (уж не знаю, хорошо это или наоборот), как модуль Drupal (500 сайтов).

den73
()

Использование пробела в качестве Alt_R в xkb и создание Яро-раскладки

 xcape, , , ,

Я доделал Яро-раскладку под офтопик на базе AutoHotkey, и она вроде работает. Теперь хочу такую же под Linux. У меня какой-то из довольно новых дебианов с Lxde, раскладка должна органично вписаться в эту среду, ну и вообще, быть совместимой.

Вот веб-версия: http://программирование-по-русски.рф/яроклава-js.яргт

Вот текущая версия для AutoHotkey (Win only).

;;;; Этот файл должен быть в кодировке utf-8 с BOM. 
;;;; Яро-раскладка
;;;; Общая идея такова:
;;;;  Пробел становится модификатором, который 
;;;;  позволяет, не выходя из русской раскладки  набивать латиницу и некоторые спец.значки
;;;;  При этом оставлен только один способ набивать
;;;;  знаки препинания .,:;/\, это позволяет меньше путаться.
;;;;  
;;;;  Проверено на AutoHotkey v1.1.29.01 (Unicode 64-bit), 
;;;;  под Windows 10.
;;;; 
;;;;  https://bitbucket.org/budden/iaroklava-js
;;;;  http://программирование-по-русски/яроклава-js.яргт
;;;;
;;;;  (C) Денис Будяк 2018, budden73@mail.ru
;;;;  Код распространяется по лицензии MIT 
;;;; 
;;;;  Установка: инсталлируйте программу AutoHotkey
;;;;  скопируйте этот файл в свою папку "документы" 
;;;;  и запустите AutoHotkey. 

#UseHook, On

; $vk41:: Print("{vk41}","{U+263C}") ; Space+A -> Sun

;;; Нижеследующий фрагмент генерируется так:
;;; - откройте пример.html в браузере
;;; - откройте консоль (F12)
;;; - вызовите ГенерируйКодДляAutoHotKey()
$vkc0:: Нажато("{vkc0}","~")
$+vkc0:: Нажато("+{vkc0}","`")
$vk31:: Нажато("{vk31}","☼")
$+vk31:: Нажато("+{vk31}","≠")
$vk32:: Нажато("{vk32}","@")
$+vk32:: Нажато("+{vk32}","@")
$vk33:: Нажато("{vk33}","#")
$+vk33:: Нажато("+{vk33}","§")
$vk34:: Нажато("{vk34}","$")
$+vk34:: Нажато("+{vk34}","†")
$vk35:: Нажато("{vk35}","°")
$+vk35:: Нажато("+{vk35}","<НЕТ>")
$vk36:: Нажато("{vk36}","^")
$+vk36:: Нажато("+{vk36}","☭")
$vk37:: Нажато("{vk37}","&")
$+vk37:: Нажато("+{vk37}","¿")
$vk38:: Нажато("{vk38}","<НЕТ>")
$+vk38:: Нажато("+{vk38}","<НЕТ>")
$vk39:: Нажато("{vk39}","<НЕТ>")
$+vk39:: Нажато("+{vk39}","<НЕТ>")
$vk30:: Нажато("{vk30}","<НЕТ>")
$+vk30:: Нажато("+{vk30}","<НЕТ>")
$vkbd:: Нажато("{vkbd}","<НЕТ>")
$+vkbd:: Нажато("+{vkbd}","<НЕТ>")
$vkbb:: Нажато("{vkbb}","≈")
$+vkbb:: Нажато("+{vkbb}","≡")
$vk51:: Нажато("{vk51}","q")
$+vk51:: Нажато("+{vk51}","Q")
$vk57:: Нажато("{vk57}","w")
$+vk57:: Нажато("+{vk57}","W")
$vk45:: Нажато("{vk45}","e")
$+vk45:: Нажато("+{vk45}","E")
$vk52:: Нажато("{vk52}","r")
$+vk52:: Нажато("+{vk52}","R")
$vk54:: Нажато("{vk54}","t")
$+vk54:: Нажато("+{vk54}","T")
$vk59:: Нажато("{vk59}","y")
$+vk59:: Нажато("+{vk59}","Y")
$vk55:: Нажато("{vk55}","u")
$+vk55:: Нажато("+{vk55}","U")
$vk49:: Нажато("{vk49}","i")
$+vk49:: Нажато("+{vk49}","I")
$vk4f:: Нажато("{vk4f}","o")
$+vk4f:: Нажато("+{vk4f}","O")
$vk50:: Нажато("{vk50}","p")
$+vk50:: Нажато("+{vk50}","P")
$vkdb:: Нажато("{vkdb}","[")
$+vkdb:: Нажато("+{vkdb}","{{}")
$vkdd:: Нажато("{vkdd}","]")
$+vkdd:: Нажато("+{vkdd}","{}}")
$vkdc:: Нажато("{vkdc}","|")
$+vkdc:: Нажато("+{vkdc}","<НЕТ>")
$vk41:: Нажато("{vk41}","a")
$+vk41:: Нажато("+{vk41}","A")
$vk53:: Нажато("{vk53}","s")
$+vk53:: Нажато("+{vk53}","S")
$vk44:: Нажато("{vk44}","d")
$+vk44:: Нажато("+{vk44}","D")
$vk46:: Нажато("{vk46}","f")
$+vk46:: Нажато("+{vk46}","F")
$vk47:: Нажато("{vk47}","g")
$+vk47:: Нажато("+{vk47}","G")
$vk48:: Нажато("{vk48}","h")
$+vk48:: Нажато("+{vk48}","H")
$vk4a:: Нажато("{vk4a}","j")
$+vk4a:: Нажато("+{vk4a}","J")
$vk4b:: Нажато("{vk4b}","k")
$+vk4b:: Нажато("+{vk4b}","K")
$vk4c:: Нажато("{vk4c}","l")
$+vk4c:: Нажато("+{vk4c}","L")
$vkba:: Нажато("{vkba}","<НЕТ>")
$+vkba:: Нажато("+{vkba}","<НЕТ>")
$vkde:: Нажато("{vkde}","'")
$+vkde:: Нажато("+{vkde}","<НЕТ>")
$vk5a:: Нажато("{vk5a}","z")
$+vk5a:: Нажато("+{vk5a}","Z")
$vk58:: Нажато("{vk58}","x")
$+vk58:: Нажато("+{vk58}","X")
$vk43:: Нажато("{vk43}","c")
$+vk43:: Нажато("+{vk43}","C")
$vk56:: Нажато("{vk56}","v")
$+vk56:: Нажато("+{vk56}","V")
$vk42:: Нажато("{vk42}","b")
$+vk42:: Нажато("+{vk42}","B")
$vk4e:: Нажато("{vk4e}","n")
$+vk4e:: Нажато("+{vk4e}","N")
$vk4d:: Нажато("{vk4d}","m")
$+vk4d:: Нажато("+{vk4d}","M")
$vkbc:: Нажато("{vkbc}","<")
$+vkbc:: Нажато("+{vkbc}","«")
$vkbe:: Нажато("{vkbe}",">")
$+vkbe:: Нажато("+{vkbe}","»")
;;; !!!! ИЗМЕНЕНО ВРУЧНУЮ, СМ. НИЖЕ! $vkbf:: Нажато("{vkbf}","<НЕТ>")
$+vkbf:: Нажато("+{vkbf}","♥")
;;; Конец сгенерированного фрагмента

;; дублируем пробел, как "пробел+буква справа от ю"
$vkbf:: Нажато("{vkbf}"," ")

ПробелУдерживается := 0
ДругаяКнопкаБылаНажатаВоВремяУдержанияПробелаЛи := 0

$Space::
  ; Critical
  ПробелУдерживается := 1
  ДругаяКнопкаБылаНажатаВоВремяУдержанияПробелаЛи := 0
  ; Critical off
  Return

$+Space::
  ; Critical
  ПробелУдерживается := 1
  ДругаяКнопкаБылаНажатаВоВремяУдержанияПробелаЛи := 0
  ; Critical off
  Return

$Space Up:: 
  ; Critical
  if (ДругаяКнопкаБылаНажатаВоВремяУдержанияПробелаЛи == 0) {
    ; Critical off
    Send, {Space}
  }
  ПробелУдерживается := 0
  ДругаяКнопкаБылаНажатаВоВремяУдержанияПробелаЛи := 0
  ; Critical off
  Return

$+Space Up:: 
  ; Critical
  if (ДругаяКнопкаБылаНажатаВоВремяУдержанияПробелаЛи == 0) {
    ; Critical off
    Send, +{Space}
  }
  ПробелУдерживается := 0
  ДругаяКнопкаБылаНажатаВоВремяУдержанияПробелаЛи := 0
  ; Critical off
  Return
 

Нажато(vk,s)
{
  Global
  if (ПробелУдерживается == 1) {
    ДругаяКнопкаБылаНажатаВоВремяУдержанияПробелаЛи := 1
    ; Critical off
    SendInput, %s%
  } Else {
    ; Critical off
    SendEvent, %vk%
  }
}

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

Теперь попробую воспроизвести под Linux

P.S. для тех, кто нагуглит эту тему подвожу итог: решение находится здесь (но, возможно, переедет на gitlab или github в связи с нестабильностью bitbucket): https://bitbucket.org/budden/iaroklava-js/src/master/linux/Яроклава-для-debia...

den73
()

Создание транспилятора в tcl?

 little-lang, ,

Посмотрел буквально в течение 30 минут, как работает tclsh. Парсер команды прибит гвоздями. В этом свете неясно, насколько успешным могло бы быть предложение сделать язык, компилирующий в байт-коды тикля, библиотекой. MKuznetsov, что думаешь насчёт транспилятора в tcl? Т.е. отдельного компилятора (написанного хоть на tcl), который на выходе даёт код tcl?

den73
()

Почему на tcl можно писать, будучи пьяным в дугу?

 , ,

Цитата с https://lurkmore.to/Tcl

Tcl (от англ. tickling — щекотание, тикль) — когда-то популярный среди бородатых дядек и тетек программируемый язык метапрограммирования, позволяющий запрограммировать все то, что можно напрограммировать на Си, находясь при этом в дугу пьяным.

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

den73
()

tcl vs rebol/red

 , , ,

Ваши мысли.

Вот мои: конечно, круто иметь компилятор в натив, но я так понял, что до лиспа они всё же не дотянули в этом плане. Но, допустим, тут они побеждают tcl.

С другой стороны, классно иметь множество типов, но формат даты типа 1-Jan-1990 не дают никакого шанса на локализацию. Да и вообще, после опыта лиспа сложность определения типа литерала выглядит явным путём не туда. ПРоблема здесь в том, что все форматы встроенных типов данных (насколько я понял), глобальны. Т.е. если я хочу свой DSL, я быстро могу вступить в конфликт. Даже и внутри самого языка такой конфликт есть. Например, 123.45 - это число, 123.45.6 - это tuple из 123.45.6 . А если я хочу tuple из двух чисел 123 и 45 ? Кривота получается.

С другой стороны, есть сходства: очень гибкий и простой синтаксис, батарейки, кросс-платформенность.

Соответственно, ваши мнения. Может быть, кому-нибудь пришлось на red/rebol что-то делать.

den73
()

а вам кажется странным поведение двойных кавычек в tcl?

 , ,

Принимая во внимание следующее:

  • списки в tcl не построены из консов
  • списки в tcl на печати изображаются с помощью фигурных скобок
  • при этом внешняя пара фигурных скобок при печати опускается
  • слова можно считать символами
  • {*} по смыслу есть ,@ (см. Википедию)

Получаем следующее:

# присвоим переменной v список из двух символов b и с
> set v {b c} 
b c 
; то же в лиспе
> (setq v '(b c))
(b c)

# построим двухэтажный список
> list a $v
a {b c}
; то же в лиспе 
> (list 'a v)
; то же в лиспе с помощью квазицитирования
> `(a ,v)

# вклеим содержимое v в список
> list a {*}$v
a b c
; то же в лиспе с помощью квазицитирования
> `(a ,@v)

# А вот это что и зачем? 
> puts "a $v"
a b c

# А так не работает:
> puts "a {*}$v"
a {*}b c

Здесь основной вопрос - зачем двойные кавычки ведут себя вот таким образом? Ведь, казалось бы, двойные кавычки по смыслу и являются аналогом квазицитирования, и поэтому должно быть так:

> "a $v"
a {b c}
> "a {*}$v"
a b c

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

den73
()

Можно ли использовать таблицы LibreOffice как аналог Google Sheets?

 google sheets,

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

den73
()

оживить gorillascript - разовая небольшая работа на node.js

 , ,

Существуют две версии gorillascript - обычный и gorillascript-community. Обе устанавливаются через npm, обе устарели (не понимаются сегодняшней нодой).

Там есть gruntfile, который описывает несколько задач, в т.ч. build, test, uglify, browser. По приложенной инструкции я не смог его запустить. Ни его, ни плагин grunt-gorilla.

Задача состоит в следующем:

1. Модернизировать grunt (если он протух, то переделать на webpack), так, чтобы он собирался. При этом необязательно, чтобы исходник был на горилле - подойдёт и обычный JS.

2. Собрать гориллу на современной ноде - 8.11 или что-то там. Это нетривиально. Например, использовался ключ --harmony, --harmony_collections. Похоже, что сейчас он не нужен.

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

4. Должна работать она и в браузере (нужно написать небольшое демо).

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

Темпы исполнения должны быть бодрыми, реакция на емейлы - в оговоренные сроки (для меня комфортабельно наличие рабочих часов с гарантированным ответом в течение часа). Перенос сроков на завтра, послезавтра и т.п. может служить причиной досрочного прекращения работ. Т.е. если у вас есть время - беритесь, если нет - не беритесь.

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

Честно говоря, я думаю, что человеку с хорошим опытом ноды здесь работы дня на два. ПОскольку она когда-то работала и лишь протухла. А значит, тому, кто знает эволюцию ноды, не должно составлять большого труда починить. Я могу и ошибаться, поэтому сумма с большим запасом.

Пишите: budden73@mail.ru

den73
()

Как apt не запутается после однократной устновки пакетов из backports?

 , ,

Всем привет! Устанавливал VirtualBox additions для дебиана- 9 (stretch) гостя. Stackoverflow предлагает использовать stretch-backports.

При этом подаётся команда

sudo apt install -t stretch-backports virtualbox-guest-dkms virtualbox-guest-x11 linux-headers-$(uname -r)

У меня в голове не укладывается, как это будет работать в будущем. По моему пониманию, получается как бы что часть пакетов идёт из одного релиза (без backport-ов), а потом добавляется часть из backport-ов.

Каким образом apt разберётся в этой ситуации, когда я в следующий раз подам apt update? Не заменит ли он пакеты из backport-ов на обычные? И если да, то почему?

КОроче, как понять общий смысл и идею apt-а?

den73
()

куда положить свой пакет npm

 

Всем привет! Я форкнул некую библиотеку, которая есть в npm. Где вести разработку? Туда, где npm её поставил? Т.е. в ~/my_project/node_modules/some_lib ? Прочитал уже 4 статьи о том, как делать свои пакеты, но нигде явно этого не написано. Если это так, то это неудобно, я стараюсь, чтобы мой код, с к-рым я работаю, лежал в директории с как можно более коротким именем. Нельзя так настроить?

den73
()

Яр для Js - есть ли смысл?

 

Ну вот, теперь стало ясно, что идею русскоязычного ЯП массы не подхватили. Т.е. конечно, Ланит-Терком пилит свой «РуСи» и, наверное, найдёт кому его запродать, а Нуралиев успешно продаёт реализации языка 1С, но это большие дяди, а я - пусть и дядя, но маленький, так что ресурсов впарить кому-то целый ЯП, да ещё и на уровне прототипа, у меня нет. Нет за спиной ни гугла, ни фейсбука.

И кроме того я не хочу лить воду на мельницу искусственного интеллекта. Я не исключаю, что лисп разбомбили именно из-за того, что он мог сделать людей слишком уж могущественными и это было осознано правителями мира (можете смеяться над моей паранойей и конспирологией - я на это отвечу - вы просто уткнулись носом в компьютер и ничего не видите дальше его экрана, а значит, являетесь клиентами иллюминатов. Мозг-то надо использовать по-назначению, а назначение мозга, способного понимать компьютер - в том, чтобы понимать мир. Компьютер слишком скучен, поверьте. Если он вам ещё не надоел, то через 10 лет точно надоест. Или, может быть, вы являетесь персонажем анекдота про курицу и мафию и отрицаете мировой заговор только по той причине, что сами в нём участвуете. Дальше я не буду касаться этого вопроса).

Так вот, я никоим образом не хочу помогать ни искусственному интеллекту, ни автономным боевым роботам. Вот когда америка, или, что более вероятно, Япония, сделает этих роботов, они засветятся в войнах и станет ясно, что они представляют явную угрозу России - тогда поговорим. А так - ну, слили Украину, Молдавию, Казахстан и вот Армения на очереди. Всё это ещё не повод делать автономных боевых роботов. Велика Россия, отступать есть куда.

И ещё конечно, меня подвело высказывание из книги «несвятые святые», о том, что телевидение - это лишь инструмент, а использовать его можно и во благо. Можно ли использовать во благо автономные боевые роботы? Ядерное оружие - можно. Автономных боевых роботов - сомневаюсь.

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

Например, взять ФПИ. Наверное, там сидят молодые придурки, которые делают автономных боевых роботов, хотя смотрели «Терминатор-3». Должно ли у меня было получиться с ними сотрудничать? Очевидно, не должно было.

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

Поэтому масштаб задач нужно снизить до сравнимых с масштабом моих ресурсов и ограничиться тем, что решает этичные задачи. Например, задачу повышения моего личного благосостояния :)

И приступим к делу. Вот например, JS. Я посмотрел на разные языки, которые транслируются в JS. И что-то мне ни один не понравился. Мне нужно совсем немного:

  • многострочные строковые литералы
  • необязательная статическая типизация
  • при этом «тип» может говорить о том, что «у объекта, к-рый придёт таким-то параметром, должны быть такие-то поля, и больше никаких». И при нарушении типа должна возникать ошибка во время компиляции (когда это возможно) или в рантайме (в противном случае)
  • нормальная числовая башня
  • вменяемые операции, а не 1+1=11
  • полная поддержка sourcemaps
  • работа в браузере и в ноде
  • вменяемые сигнатуры функций с именованными необязательными параметрами и значениями по умолчанию, а не такая помойка, как в JS. Естественно, с проверкой во время компиляции, когда это возможно
  • макросы хотя бы как в Си или m4
  • модули как в Паскале, но с возможностью асинхронной загрузки
  • естественно, лямбды, async и промисы должны быть доступны

Но я такого не встретил. Или плохо смотрел? Соответственно, два вопроса к ЛОРу:

  • что взять за основу такого языка?

Перемещено tailgunner из development

den73
()

RSS подписка на новые темы