LINUX.ORG.RU

Сообщения crutch_master

 

Драйвера на руст

Форум — Development

http://www.opennet.ru/opennews/art.shtml?num=51475
Ну что, си можно выбрасывать на помойку? Или нет?
Ъ:соревнования по написанию сетевых драйверов на разных яп. У rust и си +- одинаковая производительность на картинке.
Ссылки на сорцы тут в README.md => https://github.com/ixy-languages/ixy-languages

 , ,

crutch_master ()

Game of life на биологическом

Форум — Talks

Студенту биофака дали задачу за 2 дня сделать для game of life колонию из 20 клеток, которая через 10 циклов вернётся к исходному значению. Не долго думая на нарыл 24P10. Никогда особо не интересовался это темой и внезапно открыл для себя, что тут всё очень серьёзно, с распределённым поиском структур на куче тачек. Скину 24p10 скажет, что меньше не смогла, троечку поставят.

 , ,

crutch_master ()

Есть ли альернатива клавиатуре для PC?

Форум — General

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

 ,

crutch_master ()

QuickJS

Форум — Development

Как всем уже известно по новости с опеннета, разработчик ffmpeg и qemu выкатил javascript движок поддерживающий почти всё ES2019 + запили туда перегрузку операторов и библиотеку для математики с bigint и bigfloat. Всё это работает быстрее и лучше duktape и также легко встраивается в сишный код. Можно собирать самодостаточный бинарник прямо из js скрипта. x86 поддерживается, заявляется небольшая стоимость вызова нативного кода из js.
Итак, теперь js можно встраивать почти везде. В Duktape есть только ES5 + несколько фич ES6, нода жирновата и только под x64, остальные движки тоже или заброшены или кто куда.

 ,

crutch_master ()

Node REPL, vim и костыли

Форум — Development

Короче, я опять упоросля и приделал repl ноды к vim.
Суть такая: на одном мониторе код с редактором, на втором нода с repl. Код из редактора по хоткею отправляется в ноду, там что-то происходит и результат вываливается в терминал. Из ноды можно забирать данные по автодополнению для всяких структур и прочего. Нужно это мне для всякого кодинга «на горячую» - дёргать запросы, ворошить данные, структуры, тут же смотреть результат, что-то переписывать и т.д. Все работает на прекрасных и надёждый костылях - двух FIFO
Итак, поделка:

//node repl server
//repl.js
const repl = require("repl");
const fs = require("fs");
const outFifo = "/path/to/output_fifo";

var replServer = repl.start( { useGlobal : true });

replServer.context.useAC = function(str) {
    replServer.completer(str, (err, v) => {
        let ret = v[0].toString().replace(/,/g,"\n");
        let out = fs.createWriteStream(outFifo);
        out.end(ret);
    });
}
Конфиг вим:
func Js_run()
    execute ":yank"
    execute "'[,']w! >>/path/to/input_fifo"
endfunction

func AC_node(s, b)
    if a:s
        let line = getline('.')
        let cmd = "void useAC('".line."')"
        new
        setlocal buftype=nofile bufhidden=hide noswapfile nobuflisted
        put=cmd
        execute "w >>/path/to/input_fifo"
        q
        return line
    else
        let ret = []
        let s:lines = readfile("/path/to/output_fifo")
        for s:line in s:lines
            call add(ret, s:line)
        endfor
        return ret
    endif
endfun
set completefunc=AC_node

fun Js_runall()
    execute "w! >>/path/to/input_fifo"
endfunction
map <F2> :call Js_run()<CR>
map <F5> :call Js_runall()<CR>
inoremap <C-@> <C-X><C-U>
inoremap <F2> <ESC>:call Js_run()<CR>i
Запуск ноды:
$ tail -f /path/to/input_fifo | node repl.js
Ну и, собственно, нужно сделать эти 2 fifo. Функция отправки из vim должна отправлять выделение или строку, но она какая-то кривая, я в vimscript полное днище.

inb4: atom, sublimetext и пр электроноподелки.
Жирно. Не люблю. Мой велик - норм.

 , , ,

crutch_master ()

IDE для javascript/json

Форум — Development

Ищу ide для js, но не совсем обычное. Нужно что-то типа repl, но с гуем, редактором кода, просмотром json, сохранением и применением нашлёпанных функций, выполнение запросов.
Суть работы следующая : получаешь кусок данных откуда-нибудь (сеть,фс,копипаст,csv,etc), пишешь функцию которая его обрабатывает, смотришь результат, повторяешь до достижения удовлетворения, сохраняешь данные и функцию.
Нужно для обработки данных и быстрого кодошлёпства. Сейчас использую repl ноды с костылями, подумываю запилить, если не найду.

 , ,

crutch_master ()

Минималистичные установщики убунту/минт

Форум — Linux-install

Есть что-нибудь такое, чтобы можно было сказать

$ install_linux /mnt/new_system_root
И оно поставилось, настроило сеть, fstab, grub спросило пароль и tz? Debootstrap не справился, качать 2 гб iso и «прожигать» его на флешку в 2к19 лень.

 ,

crutch_master ()

Боты выносят людишек в dota 2

Форум — Talks

Просто насилуют (почти) всех в прямом эфире.. 99.6% побед ии (600+ матчей). Была статистика на https://arena.openai.com/#/results но она лежит. Хорошее завершение недели.
СР/УВЧ. Хоть говаривали, что нейросетка совсем простая, но народ из openai молодцы.
inb4. Нет у ботов мапхака, что не скажешь о подлых людишках.

 , ,

crutch_master ()

Json schema/validator

Форум — Development

Поскольку json-schema - говно я с горя упоролся и наваял свою правильную схему/валидатор

var config = {
    meta : {
        desc : "Bicycle validator example",
        keywords : {
            any : "^ANY",
            or : "_or_",
            notRequired : "^_",
            comment : " - .*$"
        }
    },
    types : {},
    schema : {
        ANY : {
             id : "number - required parameter",
             _name : "string - not required, but can be",
             a_or_b_or_c : "string - need one of them",
             e_or_d : "string - or them",
             _list : ["string","number","string - list with types in this order"],
             _list_etc : ["string","number - repeated list with spectype ...", "..."],
             _st : "anything - any field",
             _anyobj : {ANY : "anything - object with any content"}
        }
    }

}
Фичи/как работает:

  • Отдельно метаданные, отдельно схема, отдельно типы
  • Сама схема записывается так, как будто это объект. Структуры (объект, массив) пишутся как есть, типы пишутся строкой. И никаких сраных "type" : "string" везде и прочей не нужной писанины.
  • Требуемые поля объекта пишутся как есть. Необязательные поля должны соответствовать регулярке notRequired в meta.
  • Если допустимы произвольные наборы полей, то поле должно соответствовать регулярке any в meta
  • Если нужно одно из полей, но не все сразу или некоторые из них, то названия разделяются регуляркой or в meta
  • Из описания типа регуляркой вырезается шаблон комментария
  • Типы должны проверяться. Встроенные - int (целое), number, string. (Еще не тестил)
  • Массивы с типами, последовательностью типов (повтор - спецтип "...", хардкод)
  • Хардкодный тип anything для чего угодно, в т.ч. структур.
  • Можно делать свои типы добавляя функции в types. Функция получает значение, возвращает true - если всё нормально и что угодно другое, если всё плохо. При этом возвращаемое запишется в выдаваемый объект
  • На выходе выдаётся структура подобная входной с пожеланиями для автора в проблемных местах

Планируется

  • Схема в типах
  • Причесать код
  • Протестить работу с типами
  • Сделать тесты для всего
  • Ссылки и вложенные структуры
  • Вызов валидатора типов с параметрами (например intRng 1 100, для целых от 1 до 100 или цепочки типа int rng 1 100)

Говнокод сей поделки там -> https://github.com/Crutchmaster/bvalid-js
Приветствуются предложения, пожелания, проклятия.

Для затравки. Это самая охрененая схема/валидатор. Вы видели json-schema? Дико многословное говно без возможностей которое без костылей невозможно использовать в принципе.

 , , ,

crutch_master ()

Команда роботов сразится с командой человечества в Dota 2

Форум — Talks

Завтра в 18.30 по Гринвичу (если я ничего не путаю) пройдёт матч между командой ботов OpenAI и командой человечества по Dota 2.
OpenAI - это некоммерческая организация созданная при участии Илона Маска для проведения исследований в области искусственного интеллекта. На The International 2018 боты OpenAI обыграли команду бывших профессиональных игроков, но команда действующих профессионалов оказалась роботам не по зубам. Тем ни менее в режиме 1vs1, only mid, mirror match ботам OpenAI нет равных уже сейчас.

Держим кулачки за роботов! Дотеры не нужны! 8/64! СР! УВЧ! Регайте Бендеров на Твиче! Зафлудите им чат!

Твич OpenAI

Подробности

 , , ,

crutch_master ()

gnu parallel выдаёт странное

Форум — General
Academic tradition requires you to cite works you base your article on.
When using programs that use GNU Parallel to process data for publication
please cite:

  O. Tange (2011): GNU Parallel - The Command-Line Power Tool,
  ;login: The USENIX Magazine, February 2011:42-47.

This helps funding further development; AND IT WON'T COST YOU A CENT.
If you pay 10000 EUR you should feel free to use GNU Parallel without citing.

To silence this citation notice: run 'parallel --citation'.

Сегодня выдал вот такое. Раньше всё работало нормально. Что ему надо, я читать не умею.

 

crutch_master ()

Массовая генерация PDF true linux way

Форум — Development

Есть данные о начислениях по квартплате для 300к человек в БД. Надо сделать из них платёжку на 1-3 листа А4 в pdf. Чем кошерно будет это сделать? Сейчас всё работает на fastreports в дельфи и jasperreports, но один документ делается 2+ секунд и занимает это около суток да и стрёмно всё это как-то.
Хочется следующего: данные из бд перегоняются в пригодный вид, дальше скармливаются шаблонизатору, тот делает tex/md/etc документ из которого делается pdf. Хочется, чтобы всё, кроме бд занимало <50 мс. Есть истории успеха?

 , , ,

crutch_master ()

Где сейчас можно выставить PATH в Debian 9?

Форум — Admin

Пишут, что в /etc/login.defs. Добавляю в ENV_SUPATH, ENV_PATH но работает только для рута. Раньше всё писалось в /etc/environment, но сейчас он пустой. Из https://wiki.debian.org/EnvironmentVariables ясно, что он его тупо перепишет на то, что там есть, а это, как я понимаю, не вариант. В bashrc ставить тоже не вариант. Куда его теперь можно ставить?

 ,

crutch_master ()

Интерактивный js редактор из vim

Форум — Development

Хочу js редактор с встроенным eval выделенного куска кода, перезагрузкой/выбором контекста и автодополнением по содержимому контекста ноды.
Например, я пишу

var Foo = {
   var func = ["a","b","c"];
   for (var i = 0, c = func.length; i < c; i++) {
       this[func[i]] = function() {/*... */}
   }
}
var foo = new Foo();
Выделяю всё это, делаю eval, потом пишу foo. и редактор мне предлагает a,b,c
Можно ли vim довести до такого и каким образом? Есть ли готовые ide, не жирные.

inb4: зачем это не нужно? Чтобы реактивно писать repl-говнокод и тестить прямо в редакторе.

UPD: короче, мне надо пробросить nodejs repl в vim и обратно.

 , , ,

crutch_master ()

Новый день, новая дыра

Форум — Talks

https://www.securitylab.ru/news/498218.php
Интел, спекулятивное выполнение, чтение данных по анализу времени задержек или что-то около того. На АМД всё норм.
Ну что, режем javascript, пацаны.

 , , ,

crutch_master ()

Тест java vs nodejs по жору памяти

Форум — Development

java:

package test_java;

import java.util.HashMap;
import java.util.Scanner;

public class Main {

    class Table {
        Long x2;
        Long x3;
        String str;
        public Table(Long i) {
            x2 = i*2;
            x3 = i*3;
            str = x3.toString();
        }
    }
    private HashMap<Long, Table> hash = new HashMap<Long, Table>();

    public Main() {
    
    }

    private void log(String s) {
        System.out.println(s);
    }

    public void test() {
        for (long i = 0; i < 1000L*1000L; i++) {
            hash.put(i, new Table(i));
        }
        log("Generated");
        Scanner scan = new Scanner(System.in);
        scan.nextInt();
    }

    public static void main(String[] args) {
       Main m = new Main();
       m.test();
    }
}

Nodejs:
h = {}
for (i=0; i < 1000*1000; i++) h[i] = {x2:i*2, x3:i*3, str : (i*3)+""}
Жор памяти с htop после нескольких минут простоя: https://i.imgur.com/6VY2zqfl.png

Ъ: 267мб - ява, 127 нода (было ~180 сразу после запуска)

И что получается? Ява сосуна по памяти больше чем в 2 раза? (и во много раз по коду, лол) Как дальше жить? Что я не так сделал?

$ java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

$ node --version
v10.14.2

 , , ,

crutch_master ()

Vim. Поднять строчку кода

Форум — General

Есть

    a = 
    123;
надо
    a = 123;
Одной кнопкой из normal mode. Сейчас, как и раньше, долблю i-space-del-esc-dw как идиот.

 

crutch_master ()

Допускаете ли вы такой стиль кода?

Форум — Development

Что лучше и правильнее?

public void foo   (Double a)            {fn(0, 0, a,  "foo");   }
public void foo   (Double a, Integer b) {fn(0, b, a,  "foo");   }
public void bar   (Double a)            {fn(a, 0, 0d, "bar");   }
public void bar   (Double a, Integer b) {fn(a, b, 0d, "bar");   }
public void foobar(Double a, Integer b) {fn(a, b, a,  "foobar");}

или

public void foo(Double a) 
{
    fn(0, 0, a, "foo");  
}
public void foo(Double a, Integer b) 
{
    fn(0, b, a,  "foo");
}
public void bar(Double a) 
{
    fn(a, 0, 0d, "bar");
}
public void bar(Double a, Integer b) 
{
    fn(a, b, 0d, "bar");   
}
public void foobar(Double a, Integer b) 
{
    fn(a, b, a,  "foobar");
}

 , ,

crutch_master ()

Лучший рэп про программистов

Форум — Talks

https://www.youtube.com/watch?v=wjFgOckkVYM
Я извиняюсь, но это - шедевр.
Вот эти ребята : http://vk.com/nii_rap
Inb4: слоупок, баян. Не все такие быстрые.

 ,

crutch_master ()

Как разогреть лед в пластиковой трубе 50мм

Форум — Talks

Перемёрз слив. Доступ к ледяной пробке есть, но сколько её еще там дальше хз. Может быть метров 5. Можно, конечно, лить кипяток и дуть феном, но не долго. Надо какой-то девайс, который можно засунуть туда глубоко. Подошел бы обычный кипятильник прикреплённый к дощечке, если бы это была труба на 100мм. Хорошо шел кусок арматуры разогретый в печке, но туда-сюда не набегаешься. Гугл советует сделать кипятильник из лезвия, но это - конченный вариант, кмк. Если не найду мелкий тен, засуну паяльник в медную трубу, приварив к ней жало свинцом, замажу точку входа провода силиконовым герметиком и буду молиться, чтобы не попала вода и не замкнуло.

Я пришел с этой проблемой сюда, потому что, куда еще идти за советами, как сделать что-то из говна и палок?

 , ,

crutch_master ()

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