LINUX.ORG.RU

Сообщения AntonI

 

Замена узлов AST дерева и конвертация дерева в код?

Сабж. Есть некоторый фрагмент питоньего кода (строка), есть словарь замен. Надо в строке кода некоторые переменные поменять согласно словарю на то что в словаре и получить код после преобразования.

Словарь имеет вид

table = {'A':1.2, 'B':3.14, 'X':'Y'}
подразумевается что переменная X должна быть заменена на переменную Y и т.д.

Вроде я могу при помощи модуля ast конвертнуть код в дерево и провести в нем замены. Но как мне обратно собрать код? Все что я попытался сделать с codegen, sourcecodegen пока не работает.

Код для теста

#!/usr/bin/python
import ast, sourcecodegen

table = {'A':123, 'X':'Y'}

class Repl(ast.NodeTransformer):
    def visit_Name(self, node):
        if node.id in table: return ast.parse(str(table[node.id]))

E = 'sin(X)*A'

P = ast.parse(E, 'eval')
R = Repl().visit(P)

#print astor.codegen.to_source(R)
print sourcecodegen.generate_code(R)

ЗЫ Хотелось бы что бы решение было на основе стандартных модулей, не требующих установки чего то дополнительного

 

AntonI ()

Посоветуйте библиотеку где есть дилогарифм (Li_2)?

Можно его конечно в виде ряда самому сделать, ряд правда не очень быстро сходится - может кто то уже это сделал по людски?

 , ,

AntonI ()

Не взлетает встроенный сотовый модем на ноуте

Сабж. Точнее взлетает, но редко и через пень колоду. Раньше взлетал чаще, сейчас даже перезагрузка не помогает.

Система lubuntu 16.04, ноут Lenovo Carbon X1 gen4, железяка (если верить Modem Manager GUI) Huawei Technologies Co., Ltd. ME906s-158 (ttyUSB0). ОпСоС билайн.

Менеджер говорит «модем не готов».

 

AntonI ()

foreach с предоставлением информации об элементах?

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

for(auto I=arr.begin(); I!=arr.end(); ++I){ ... }
и внутри этого цикла знать не только сам элемент но и доп. информацию (позиция в контейнере и всяко разно - все что итератор может рассказать).

Могу сделать foreach

for(T& x:arr){ ... }
и тут я буду знать только значения элемента.

Но я могу ведь сделать такую штуку

class Arr{
...
   struct Cell{ 
      T& operator *(){...}
      T* operator ->(){...}
      ... // всякие методы рассказывающие об элементе контейнера
   };
   struct iterator: public Cell{ 
       Cell& operator *(){ return *this; }
       ... 
   };
};
и тогда
for(auto& x:arr){ ... }
мне позволит получить доступ не только к элементу но и к информации об элементе.

Из бонусов - меньше букв писать при организации цикла. Из плохого - это как то наверное не очевидно для пользователя?

Вопрос - насколько это вообще плохое решение и почему.

 , ,

AntonI ()

Как понять в базовом классе что виртуальная функция была перегружена в наследнике?

struct A{
	virtual void f(){}
	bool check(){ return ... } 
};
struct B: public A{
	void f(){}
};
struct C: public A{
};

Чего бы такого написать в A::check() что бы при вызове B().check() получать true а при вызове C().check() получать false?

Ввести в A флаг и изменять его значение неспортивно;-)

 

AntonI ()

Гонка данных - тонкие тонкости?

Вот есть переменная типа uint64_t в которой лежит какая то чиселка а. Первый поток в нее пишет чиселку b, а второй поток ее этот момент читает. Вопрос - какие именно чиселки может получить второй поток при чтении? Только чиселки a, b или вообще что угодно?

 ,

AntonI ()

Носимая микроэлектростанция для гор?

Сабж. Основное назначение - питание фотоаппарата снимающего тайм-лэпс. Фотоаппарат жрет примерно 15-20Ач из powerbank-а в сутки (на самом деле по 7-10Ач из двух банок соединенных последовательно, поскольку ему надо 9В).

Сейчас приходится таскать 4 банки по 10Ач + солнечную батарею на 15Вт. Проблема в том, что солнца может и не быть (дожди/облачность, это же горы) и батарея не успевает набивать пару банок пока вторая пара работает. В итоге общий заряд всей конструкции падает, но в идеале хватает дня на 3-4, при том что весит вся конструкция под 1.4кг (банки по 200+гр + батарея 430гр).

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

Я вижу следующие варианты:

1) сменить камеру на более экономичную (сложно и дорого, сейчас хорошая камера с хорошей оптикой)

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

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

У кого то был такой опыт? Может еще есть варианты?

 

AntonI ()

Читалка PDF для гуманитариев, с возможностью делать закладки и сразу их эспортировать в какой то документ (а-ля реферат)?

Сабж. Жена тут серьезно ударилась в историю, и много работает с источниками в формате pdf на планшете. Нужна какая то софтина, что бы можно было выделить фрагмент pdf-ки, выставить его в свой текст и сразу там же получить ссылку на эту pdf-ку (вместе со страницей) + добавить закладку в pdf. В идеале в один клик.

 , ,

AntonI ()

Автоматический импорт комментариев при биндинге C++ кода в python через SWIG

Есть некий код на C++

struct A{
    ...
    double x;  //@ это координата
    double v;  //@ а это скорость 
    ...
};
Комментарии в плюсах нужны, что бы самому не запутаться (таких параметров как x десятки). Код импортируется в python через swig, и дальше
from mymodule import *
a = A()
a.x = 1 #@ это координата заданная в питон
...
Не все параметры из плюсов явно задаются в python.

Комментарии в питоне нужны что бы опять таки самому не запутаться + при запуске питоньего скрипта с параметром -h можно поглядеть какие в нем вообще есть параметры задаваемые для плюсов. Сейчас это сделано тупо, выводятся строки содержащие '#@'.

Хотелки: 1) приходится дублировать комментарии в питоне, которые уже однажды были написаны в плюсах, хочется от этого избавится но совершенно непонятно как. Видимо никак, поскольку питоний скрипт пишется руками, хотя можно сделать утилитку которая делает для него заготовку выдернув из плюсов строки с '//@'.

2) более важно - эти комментарии хочется собирать и сохранять отдельно в виде таблички 'имя параметра': 'описание (комментарий)'. Комментарии из питона выдергиваются довольно просто, за счет перегрузки A.__setattr__. Как выдергивать комментарии из плюсов совершенно непонятно, в документации swig я ничего по этому поводу не нашел. Пока что в голову приходит завести в плюсах отдельную строковую переменную с описанием всех параметров, но это еще одно дублирование.

Ну или макрос сделать

#define PARAM(T, K, H) T K; const char * K##_autodoc = #H;

struct A{
    ...
    PARAM(double, x, это координата);
    PARAM(double, v, а это скорость); 
    ...
};
но че то выглядит мерзко...

У кого какие идеи будут?;-)

 , ,

AntonI ()

Оконный интерфейс в терминале в Python малой кровью и относительно стандартными методами?

Сабж.

Смотрел curses, он стандартный но он низкоуровневый и там адищенски много кода получается.

Есть какой то urwid, там вроде уровень повыше, но какой то развесистый пакет.

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

 ,

AntonI ()

Как влияет на качество радиосвязи размещение антенны вплотную к телу?

Сабж, диапазон 400 с фигульками МГц (PMR), мощность 4Вт.

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

 

AntonI ()

Прикрутить список к элементам уже содержащим ссылки на соседей?

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

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

Пока что в голову приходит только совать соответствующую лямбда-функцию в аргумент конструктора (точнее несколько - ну там для доступа к ссылке вперед/назад и для получения самого элемента). Но как то не Ъ выглядит... Кто что посоветует?

 , ,

AntonI ()

Как задать пустой тип (нулевой длины) в качестве параметра шаблона что бы на поле соотв. типа не тратилась память?

Сабж. Вот есть такой класс

template <typename T> class A{
   T p[256];
   ...
public:
   T get(int i) const { return p[i]; }
   vois set(int i, T x){ p[i] = x; }
};

В некоторых случаях поле p не нужно. Что передать в качестве параметра что бы на него не уходила память, но при этом все компилировалось? Спецификацию шаблона делать не хочется, будет много букв.

Ну или как нечто подобное сделать без спецификации?

 , ,

AntonI ()

Dropbox лагает;-(

Скидываю файл с планшета на ноут через dropbox. Файл уходит в облако мгновенно, на других устройствах его видно сразу. На ноуте его видно после дождичка в четверг - иногда через 5 минут, иногда через полчаса, изредка сразу...

Что то можно с этим сделать?

PS dropbox stop/start помогает, но это извращение.

 , ,

AntonI ()

Нормальный софт для набора текстов с формулами под android?

Есть планшет samsung tab S3, 10", перо - все вроде зашибись. Удобно читать книжки и черкать красным в pdf-ках, вопросов нет. Легкий, тонкий (такой что аж гнездо под перо не поместилось), прямо вот продукт инопланетных технологий.

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

Встроенная софтина от самсунга для заметок - все вроде ничего, пишешь как в блокноте (получается картинка) - но нет изменения масштaба, и прокрутка только выверх-вниз. Если че то не влезло в строчку - извини, типа лист кончился. Оно конечно заменяет обычный бумажный блокнот, и даже чуть удобнее (есть копипаст) - но хочется же распознавания, да?

Единственная софтина которая как то распознает рукописный ввод формул - myscript nebo. Правда с распознанным нельзя ничего сделать, можно только вставить как картинку. Анонсированный экспорт в latex не работает вообще от слова совсем. Стоит сие поделие 700 руб.

Есть несколько вариантов latex-редакторов. Они были бы условно неплохи для ноутбука/ПК, но совершенно не предназначены для плашета. На планшете нифига не удобно топтать длинные простыни кода, на планшете хочется визивига и писать от руки. Я не смог найти ничего приличного, то что нашел - компиляет документ в пдф и КАЖДЫЙ РАЗ открывает его во внешнем pdf-ридере.

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

Резюме - сейчас подобный софт для работы под андроидом катастрофически отстает от железа. То ли разработчики страдают косорукостью, то ли это направление просто считается тупиком для гиков. Хотя казалось бы естественнонаучных сотрудников пруд пруди... В гугл плей 100500 рисовалочек и блокнотиков, и ни одной мало-мальски годной среды для работы с научными текстами. Печаль...

 , ,

AntonI ()

Редактор кода/IDE с возможностью цеплять картинки в качестве комментариев?

Сабж. Для каких то сложных кусков приходится либо рисовать схемки на доске/бумажке и долго думать (а потом схемка теряется и через месяц ты понять не можешь что к чему), либо явно пихать в код схемки в ASCII-графике типа

bool FullEdge::try_rotate(FrontTracer *ftracer, BlockQueue<Edge> &queue){
...
/*
.      / a1 b1 \                 / a1 \
. 0   / / | | \ \   3       0  a2 /  \ eA  3
.   a2 /  |t|  \ b2            / / tA \ \
.   / /   |h|   \ \          eA /~~~~~~\ a2
. eA ( tA |i| tB ) eB  ===>       this 
.   \ \   |s|   / /          b1 \~~~~~~/ eB
.    a1\  | |  / b1            \ \ tB / /
. 1   \ \ | | / /   2       1  eB \  / b1  2
.      \ a2 b2 /                 \ b2 /
*/
...

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

Идея не моя а коллеги, но кажется очень здравой. Есть ли что нить подобное (в идеале в виде плагина к виму/имаксу)?

 , ,

AntonI ()

WYSIWYG/Drag-and-drop система компьютерной алгербы?

Регулярно приходится проводить математические выкладки, в основном делаю это в LaTeX - набираешь выражение, копипастишь, копию преобразуешь и т.д. В принципе вариант годный (за счет копипаста удобнее чем на бумаге), но много времени уходит на тупую механическую работу - привести подобные, раскрыть скобки, продифференцировать и пр.

Всякая maxima по скромному личному опыту ограничено пригодна, хотя возможно я не умею ей пользоваться. Обычно юзаю либо для решения СЛАУ, либо для проверки цепочки сложных преобразований. Основная проблема - очень сложно объяснить в каком виде нужен результат (где что сгруппировать, что развернуть, что вынести за скобки и пр).

Хочется такую CAS, в которой видишь красивое выражение (как LaTeX выдает), и что бы можно было мышкой ухватить за какой то член и вытащить его за скобки (или наоборот внести), выделить кусок выражения и че нить адресно с ним сделать и т.д. Речь именно о CAS (НЕ О РЕДАКТОРЕ!), т.е. если в выражении

(a+b+c)*x
я хватаю мышой за b и вытаскиваю его за скобки, то получаю автоматом
(a+c)*x+b*x
а не
(a+c)*x+b
как вышло бы в редакторе.

Есть ли что то подобное? Если нету, то возникла дурная мысль сваять что то похожее на питоне, правда времени катастрофически нету... ;-(

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

 

AntonI ()

Редактор с поддержкой рукописного ввода формул и экспортом в LaTeX?

А посоветуйте сабж? В samsung note 2 была такая шняга (стандартные заметки), позволяла вводить простые формулы и даже посылать их в вольфрам альфу, но потом сломалась при обновлении.

Хочется с удобством набирать многостраничные тексты, и что бы формулы были произвольной сложности. Планшет samsung tab 3 10" с пером.

 ,

AntonI ()

Легкий выносной сенсорный экран со стилусом для работы с документами?

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

Есть планшеты, но они с одной стороны тоже тяжелые (по сравнению с листом бумаги), с другой стороны батарея у них садится и стоят (если что то приличное) как самолет.

Всякие варианты типа sony digital paper тоже не айс - стоят дороже планшета, пусть и легче (и батарея дольше держит), но ч/б, без подсветки и все еще лагают. Да и по сравнению с листом бумаги все еще тяжеловаты .

Идея простая - берем экран от планшета с диагональю 10-13 + минимально необходимая обвязка, клеим его на достаточно жесткое шасси и цепляем проводочком по USB к ноутбуку в рюкзаке (если в метро) или к десктопу (если в комнате). Проблем с батареей, производительностью и функциональностью нет - все вопросы к устройству к которому он подключен. Весит и стоит эта штука меньше планшета (там только экран + обвязка + корпус). Профит!

А если хочется совсем мобильности, можно наверное к смартфону прицепить. Только вот не делают таких пока... ;-(

 

AntonI ()

PDF ридер с возможностью редактирвания стилусом для планшета?

Сабж. Приходится регулярно вычитывать pdf-ки (с кучей формул и графиков), делаю это по старинке - черкаю по распечатке красной ручкой поверх текста/на полях.

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

 

AntonI ()

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