LINUX.ORG.RU

Сообщения 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 ()

Как регуляркой обрезать юникод за пределами U+FFFF (или починить его)

Форум — General

Всякие символы типа
🌨 🌡️ 🌬️→
Надо или вырезать целиком или починить, чтобы символы отображались в терминале. Минт 17.3 в браузере все работает.

 , ,

crutch_master ()

Инвалидация кеша в РСУБД

Форум — Development

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

 , , ,

crutch_master ()

Java ссылки в строковых параметрах аннотаций

Форум — Development

Есть такой код (myBatis)

package my.crutches;

@Mapper
public interface someMapper {
    public static final String FIELDS = "id, a, b, c";
    public static final String WHERE "id = #{id}";
    @Select({
         "select ${@my.crutches.someMapper@FIELDS ",
         "from my.table where ",
         "${@my.crutches.someMapper@WHERE}"
    })
    List<Abc> getAbcById(Integer id);
}
Это интерфейс маппер, который скармливается myBatis'у, который делает по нему запрос к бд и заворачивает результаты в класс. Вот эти две ссылки:
${@my.crutches.someMapper@WHERE}
#{id}
Это фича myBatis'а и спринга или любой строковой аннотации java? Где про это написано и как оно называется?
Нашел вот тут:
https://stackoverflow.com/questions/11948115/access-public-static-final-strin...

 

crutch_master ()

Запустить процесс, а потом его найти и убить

Форум — Admin

Суть описана в заголовке. Проблема, как вы уже догадались, в том, что процесс может успешно сдохнуть сам. Сейчас я просто беру pid процесса и засовываю его в файл. Потом делаю kill. И это - ужасно. Демона из него делать не нужно. По идее надо просто чистить файл с pid, если процесс сдох. Но как это сделать, я что-то не догоняю. Если вынести процесс в отдельный скрипт (в котором чистить файл после завершения) то при запуске получишь pid скрипта, а он - не нужен.
Пример

#run.sh
mycoolprocess &
PID=$!
echo $PID > my.pid

#stop.sh
kill $(cat my.pid)
>my.pid

upd: решено через еще один скрипт и убийство этого самого скрипта с потомками.

 

crutch_master ()

Раздел с техническим ЖЖ

Форум — Linux-org-ru

А давайте сделаем раздел жж, куда можно будет постить всякие истории про то, как кто что к чему прикостылил. Типа записная книжка/обмен опытом/обогащение индекса поисковиков. А то я сегодня сделал, завтра всё забуду, а после завтра пойду гуглить и найду свой жж тред тут. Да и знающие люди потроллят по делу.
# cast maxcom

 , ,

crutch_master ()

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