LINUX.ORG.RU

Сообщения BattleCoder

 

Может ли соседский wifi создавать помехи?

Форум — Linux-hardware

Ситуация такая. Дома ADSL2+ модем, он же одновременно является точкой доступа, раздавая интернет по wifi.

Буквально вчера всё работало. Сегодня никого не трогал, не могу подключиться. Точки просто нет в списке доступных сетей, ни телефон. ни ноутбук её не видит. Используется шифрование wpa2-psk, если что...

Зато в списке появились аж две другие сети (может и раньше были, я за ними не следил), которые явно не мои. Одна из них даже открытая (вторая тоже wpa2-psk, если не ошибаюсь).

Названия SSID разные 100%, может ли получаться так, что одна сеть создаёт помехи для другой? Если так, то как этого избежать? Ходить по соседям и говорить - «какого вы мне тут помехи создаёте» мне кажется неэффективным. :( что делать? и кто виноват?

 

BattleCoder
()

Перестал выключаться компьютер

Форум — Desktop

Перестал выключаться компьютер с недавних пор (после какого-то обновления). Что именно я обновил - отследить тяжело... вроде бы сам lvm и ядро не обновлялись.

Проблема именно такая - выключаю компьютер - все демоны останавливаются корректно, только последняя строка - что-то вроде «не могу освободить lvm, какая-то партиция используется». Раньше, я так понимаю, она точно также использовалась (так как, например, корневой раздел у меня тоже на LVM, всё кроме boot на LVM) - но игнорировалась и спокойно выключалась. sysrq+S+U+O спасает ситуацию, но я же не могу каждый раз их нажимать.

В чём может быть проблема, ни у кого не возникало?

p.s. чуть позже напишу полное сообщение об ошибке. просто для этого надо снова компьютер выключить и его записать :)

 ,

BattleCoder
()

Представлена БД Apache Cassandra 1.2

Новости — Кластеры
Группа Кластеры

После десяти месяцев разработки увидел свет релиз распределённой БД Apache Cassandra 1.2.0, относящейся к классу noSQL-систем и рассчитанной на создание высокомасштабируемых и надёжных хранилищ огромных массивов данных, хранимых в форме ассоциативного массива (хэша). Код проекта написан на языке Java и распространяется в рамках лицензии Apache 2.0.

Основные изменения:

  • Поддержка виртуальных узлов (vnode)
  • Переход на финальную версию языка запросов CQL 3.0 (Cassandra Query Language)
  • Поддержка выполнения пакетных операций (BATCH, аналог SQL ACID транзакций) в атомарном режиме
  • Поддержка трассировки запросов
  • Серия оптимизаций производительности
  • Новый бинарный протокол для CQL3
  • Расширенные опции конфигурации
  • Поддержка обработки сбоя отдельного диска без остановки всего узла.

Подробнее на opennet - http://www.opennet.ru/opennews/art.shtml?num=35749

Первоисточник - http://www.mail-archive.com/user@cassandra.apache.org/msg26759.html

Подробнее об изменениях - https://git-wip-us.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=NEWS.t...

P.S. Как-то проглядел я отсутствие этого копипаста с опеннета. Хотя «новости» уже неделя.

>>> Подробности

 , ,

BattleCoder
()

Монитора выбора тред

Форум — Linux-hardware

Очередной монитора выбора тред (знаю, что их тут итак куча, перечитал некоторые из них, но на мой вопрос они всё равно не отвечают, так как предпочтения у всех разные.

В общем, сейчас у меня стоит 17" монитор LG Flatron L1732P. Всем устраивает. Только в особенно морозную погоду изображение «дрожит» при включении, но когда он прогревается, всё становится снова нормально. Глаза не устают (если в меру сидеть, если не в меру, то и не глаза, а всё остальное тоже устанет). В общем, всем устраивает, но хочу побольше, ибо 1280x1024 для меня уже маловато.

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

Подумываю о том, чтобы пользоваться сразу ДВУМЯ мониторами (то есть старый 17" оставить), ибо так тоже будет удобнее.

1) Рассматриваю приобретение или 21,5 или 23, или 24 дюйма (я так понимаю, «золотой середины» нет), с разрешением либо 1920x1080, либо 1920x1200.

2) поверхность чтобы ни в коем случае не глянцевая, желательно матовая или антибликовая, не знаю, чем они отличаются.

3) IPS мне наверное не нужен, они дороже, лучше TN. бюджет где-то от 5000 до 10000 (дешевле 5000 наверное только шлак).

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

 ,

BattleCoder
()

adblock - начало конца?

Форум — Talks

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

Глубокоуважаемый посетитель сайта ????,

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

К сожалению, расширение «Ad Block», установленное в данном браузере, удаляет размещенную на НАШЕМ сайте рекламу без НАШЕГО согласия. Если Вы хотите продолжать пользоваться нашим сайтом, пожалуйста, отключите в браузере расширение «Ad Block» для нашего сайта, используя соответствующие настройки.

Искренне надеемся на Ваше понимание.

Спасибо.

С уважением, команда ?????

По ходу они начали как-то определять то, что я использую adblock и бороться с этим. Вообще говоря, я ВКЛЮЧИЛ в адблоке показ НЕНАВЯЗЧИВОЙ рекламы (когда такая функциональность там появилась). что им ещё надо? Я, конечно, понимаю, что они на рекламе зарабатывают, но зачем настолько навязчиво это делать?

Скоро все остальные сайты подтянутся и будет выбор - либо смотреть всё с рекламой, либо смотреть вот такие надписи.

p.s. пруфа не будет, пруф удалил

BattleCoder
()

OpenCL - где брать «батарейки»?

Форум — Development

Где вы берёте библиотеки для рутинных задач в OpenCL? Конечно, при желании (и наличии времени) можно написать всё самому, но если есть что-то готовое и проверенное - проще взять это и использовать.

CUDA поставляется с «батарейками» - cublas (матричные операции), curand (генераторы случайных чисел), cusparse (операции с разрежёнными матрицами), cufft (преобразование Фурье), npp - (пока не понял что, какие-то performance primitives).

Вот мне, например, нужны случайные числа для моделирования случайного процесса. Удобнее было бы генерировать их на device, чем на host, чтобы снизить задержку на копирование (возможно на практике это миллисекунды и я рано думаю об «оптимизации», но всё-таки).

К сожалению, в стандарте OpenCL ничего такого не описано, что плохо. Есть наверное куча библиотек - но где гарантия, что они заведутся как под CUDA OpenCL, так и под AMD APP OpenCL? и есть ещё Intel OpenCL...

Писать свой генератор - это уже крайняя мера =) (скорее уж обойдусь java.util.Random или rand из stdlib.h), тем более думать о том как это делать параллельно...

 , ,

BattleCoder
()

ktorrent-4.3.0

Форум — Desktop

Ни у кого не было такой же баги? Появляется окошко с надписью «Один или несколько дисков не смонтированы. Чтобы запустить данный торрент, их надо смонтировать.», и ничего не качается.

Все диски, разумеется, смонтированы.

Нашёл на эту тему

https://bugs.kde.org/show_bug.cgi?id=306825 Решения там так и нет.

На http://www.gentoo.ru/node/26239?destination=node/26239 советовали сделать странный запуск chmod, он тоже не помог =)

Драматизма добавляет то, что ktorrent-4.3.0 - единственная версия в portage, и она же стабильная (не тестовая).

p.s. как наткнулся на этот баг, понять не могу, ибо недавно делал upgrade x86 => amd64, заодно обновил вообще ВСЁ, поэтому тяжело судить... но явно ведь не от перехода на amd64 баг возник.

BattleCoder
()

Локальное мини-зеркало Gentoo

Форум — Admin

Есть два компьютера - большой и ноутбук. На обоих Gentoo.

Большой компьютер, понятно, никуда не девается, стоит на месте, а ноутбук мобильный - я часто его туда-сюда таскаю.

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

Раньше для этой цели использовал vsftpd, и расшаривал каталог portage/distfiles, а на ноутбуке просто указывал:

GENTOO_MIRRORS="ftp://192.168.1.2/portage <следующие зеркала>"

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

http://en.gentoo-wiki.com/wiki/Sharing_Portage_over_NFS нашёл такой вариант.. но это больше для «статичной» локальной сети, без ноутбуков, где компьютеры никуда не деваются =) то есть вариант, например, монтировать при запуске системы (возможно и недоступный каталог) не подходит... тем более ноутбук редко перезагружаю, чаще усыпляю.

 distfiles, , ,

BattleCoder
()

Указал неправильный адрес доставки

Форум — Talks

Заказал, значит, в интернете книжку (если поконкретнее, то на artima shop http://www.artima.com/shop/catalog )

Заказал ещё чуть ли не месяц назад уже (11 ноября), но только сегодня очухался. Решил перечитать почту и обнаружил, что указал неправильный адрес. o_O А время то уже утекло...

Проблема в том, что feedback-email на сайте этого магазина найти не могу (если кто ткнёт носом, буду благодарен, ибо сам туплю небось жутко). И связаться с ними не знаю как...

Если конкретнее, в чём ошибка - указал правильный индекс, правильный город, правильную улицу, но НЕПРАВИЛЬНЫЙ номер дома. Ошибся в одной цифре. Драматизма в ситуацию добавляет то, что (если верить яндекс-картам) такого дома то и не существует. с таким номером (174 указал вместо 171, опечатался). Что вообще на почте делают с такими посылками, когда приходят - посылают обратно? Реально ли что-то поправить?

Жду советов, что делать в таких случаях и как получить свою посылку хотя бы через отдалённое время (всё-таки ССЗБ, надо было бы внимательнее, хотя итак 10 раз всё перепроверял, не понимаю я себя). всё-таки деньги уплочены. Тут вроде часто покупки через интернет делают люди (неужели я один такой лопух, что ошибки делаю?)

P.S. линукс тут при том, что книжка по scala, а на этом ЯП может писать и под линукс.

 , , ,

BattleCoder
()

В каком разрешении хранить фото

Форум — Talks

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

Мы живём в век когда цифромыльницы нет только у ленивого, а кто-то и вовсе всё подряд фоткает на фотозеркалку. Когда-то плёнки были по 24-36 кадров (с тоской вспоминаю эти времена), плёнки были дорогие. И каждый кадр берегли. Фоткали только то, что действительно было важно...

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

Вот и сейчас... передо мной громадный каталог (гигабайт на 10) фоток в разрешении аж 5184x3456 (~18 МП). Сам обычно не фоткаю больше чем 10МП, и то считаю, что это многовато, раньше хватало 5МП. На глаз распознать разницу для меня очень трудно. Хочется всё это хозяйство сжать. Какие-то фотки конечно можно и поудалять... но сидеть рассматривать прямо сейчас мне не хочется и у меня нет времени %) да и жалко удалять, может потом посмотреть захочется.

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

В каком приемлемом разрешении фото хранить, чтобы они не потеряли качества (чисто визуально, на глаз). Формат, я так понимаю, только JPG (всякие TIFF - это для профессионалов). Склоняюсь к мысли, что до 5МП ужать - вполне достаточно будет. Есть другие мысли?

 , ,

BattleCoder
()

JSON парсер - зачем столько?

Форум — Development

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

Встала похожая задача на java - хочется взять json-строку (или даже точнее InputStream, да не суть), и получить на выход многоуровневый Map<String<Map<String,.....>>> - как-то так. ну и немного подправить его. В Java SE, к сожалению, вроде как таких средств нет.

Захожу на http://json.org и вижу этот УЖАС (внизу страницы). Для каждого ЯП 100500 библиотек-парсеров, и Java тут тоже «отличилась»:

org.json.

org.json.me.

Jackson JSON Processor.

Json-lib.

JSON Tools.

Stringtree.

SOJO.

Jettison.

json-taglib.

XStream.

Flexjson.

JON tools.

Argo.

jsonij.

fastjson.

mjson.

jjson.

json-simple.

json-io.

JsonMarshaller.

google-gson.

Json-smart.

FOSS Nova JSON.

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

Updated: использую jackson, задачу свою выполнил, вполне удобный и гибкий.

 ,

BattleCoder
()

Аутентификация с Java Servlet API

Форум — Development

Задача: сделать аутентификацию при помощи сервлета через БД (использую JDBC, postgreSQL в качестве СУБД). создал таблицу, содержащие имена и пароли (пока открытым текстом, хотя по совести надо хеш-сумму там хранить вроде как). И создал класс User с полями name + password.

Схема такая. Сделал фильтр (называл AuthFilter), который просматривает url-pattern и проверяет, содержится ли в request.getSession().getAttibute(«user»). Если нет - перенаправляет на страницу логина.

На странице логина (примерно также на странице регистрации с небольшими изменениями) - пользователь вводит имя и пароль в форму, отправляет POST-запрос... его обрабатывает LoginServlet, и если всё плохо - пишет ошибку. Если всё хорошо - добавляет request.getSession().setAttribute(«user»,user) (или вместо целиком user можно просто username, разницы особой думаю нет. Всё работает как надо.

А теперь проблемы:

1) если tomcat перезапускать, httpSession пропадает и пользователю приходится заново логиниться (даже если он браузер не перезапускал). Можно это как-то пофиксить? я предполагаю, хранить сессию в БД? целиком объект request.getSession() туда пихать, или как-то проще?

2) открытым текстом не есть гуд, как мне проще всего реализовать хранение, например, подсоленной md5/sha-суммы? какой библиотекой воспользоваться, где взять этот алгоритм md5/sha1/sha256?

P.S. В Spring security всё это есть и работает замечательно, и очень просто делается =) в том числе можно выбирать алгоритм хеш-суммы. Но мне надо разобраться, как это сделать, используя только Servlets + JSP(JSTL) + JDBC

P.P.S. Если несмотря на то, что «всё работает», я допустил какую-то логическую ошибку в алгоритме - буду благодарен, если кто на неё укажет. :)

Спасибо.

 , ,

BattleCoder
()

SAX xml parser, амперсанды

Форум — Development

Немного запутался с xml-парсером. ЯП - Java, использую SAX-парсер.

Есть довольно сложный и запутанный xml-файл (если точнее, это RSS-лента). Основная сложность в том, что он содержит такие теги (для примера сильно упростил):

<tag1>value1</tag1>
<tag2>value2</tag2>
....
<bigtag>&lt;b&gt;Bold Text&lt;/b&gt;
&lt;a href="http://google.com"&gt;
&lt;img src="http://example.com/image.png"&gt;
</bigtag>

В общем, по сути внутри xml-тега целая html-страница (ну не страница, но код в разметке html, естественно с кучей угловых скобок. они экранированы (&lt, &gt).

Проблема в том, что SAX-parser (по умолчанию в Java) «не берёт» всё содержимое тега, а «откусывает» только до первого амперсанда. (речь о методе handler.characters())

Использовал примерно такой простой рецепт (изменил под себя) http://www.mkyong.com/java/how-to-read-xml-file-in-java-sax-parser/

Какой наиболее безболезненный способ эту проблему решить?

(задача вообще в чём - xml имеет вполне определённую структуру - мне надо его распарсить и сохранить в простой Plain old java object (все поля обычные String), ну и потом сохранить в базу данных, это уже тонкости. То есть этот html код тоже сохранить в виде строки (потом подумаю, как его использовать, пока это не важно), или в неизменном виде, или заменить все &lt и &gt на < и > соответственно.

 , ,

BattleCoder
()

Вставка порции данных в таблицу

Форум — Development

Есть, значит, база данных. PostgreSQL (если имеет значение).

Обращаюсь туда посредством JDBC, для удобства использую commons-dbutils (никаких ORM, для меня в данной задаче просто ни к чему).

Есть задача вставлять данные порциями в таблицу. Для определённости предположим, что таблица users с полями name и password. Есть массив или список users длины пусть 100. Самый банальный способ вставки:

QueryRunner run = new QueryRunner(dataSource);
for (User user: users) {
    run.update("INSERT INTO users (name,password) VALUES (?,?)",user.getName(), user.getPassword())
}

Но ведь этот вариант неэффективен?? выполняется 100 запросов. А ведь можно в один:

INSERT INTO users (name,password) VALUES ('name1',pass1'), ('name2','pass2'), ....

Как реализовать такой запрос средствами JDBC и java?

 , ,

BattleCoder
()

mplayer2 куда подевался mencoder?

Форум — Multimedia

Не помню сколько месяцев назал обновился до mplayer2, по факту mplayer стал не нужен, и я его снёс (в дереве он ещё остался, и, я так понимаю, ещё долго будет актуален, да).

Но каково же было моё удивление, когда я обнаружил, что в mplayer2 нет никакого mencoder. Куда они его убрали??? а главное зачем? Может он теперь типа RIP, и ему есть замена?

В чём прикол, кто подскажет?

p.s. да, криокамера протекла, знаю.

 , ,

BattleCoder
()

Преобразовать pdf в ppt

Форум — Desktop

Привет, лор.

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

Не посоветует ли кто что?

Нужно отконвертить pdf (презентация) в ppt или pptx. Результат интересует примерно такой, «чтобы выглядело одинаково». Всякие там ссылки/текст/ и т.п. не волнуют, редактировать это потом не планирую - хоть чтобы каждый слайд был в виде одной картинки. Можно так сделать?

Можно руками, но руками долго и муторно %) может есть средства автоматизации? кто что посоветует?

 , ,

BattleCoder
()

Замещение главного окна в tkinter

Форум — Development

Всем привет.

Есть программа (уже писал в соседних тредах, но выведу в новый тред, так как новый вопрос ближе к tkinter всё-таки). Чат клиент-серверный. Хочу написать GUI к клиенту. (желательно использовать именно tkinter, но если так и не разберусь, плюну и буду пытаться освоить pyqt4). Ну да не в тему.

В общем, хочу, чтобы самое первое окно при запуске программы спрашивало адрес сервера + порт сервера - с единственной кнопочкой connect. После нажатия на которую (в случае успешного соединения, ошибку разберусь как лучше обработать) - старое окно как бы удалялось, и замещалось новым - где уже требовалось бы ввести login/password. После авторизации надо чтобы второе окно тоже пропадало - и уже появлялось окно собственно чата (список комнат), и уже оно становилось бы главным.

Как такое реализовать (и можно ли)? Мне нужен TopLevel() или что-то другое?

Главное окно создаю примерно так:

root = tkinter.Tk()
root.title('blah-blah-blah')
# много кода для всяких виджетов + обработка нажатия на кнопку
# в качестве родителя указываю root
root.mainloop()

Собственно метод нажатия на кнопку (частично)

newroot = tkinter.TopLevel()
#опять куча виджетов, теперь у них родитель newroot

Собственно, создаётся новое окно, а старое не убирается... и старое остаётся главным (если закрыть первое, закроется и второе). Сделать второе главным? (а после успешного логина сделать третьё)?..

 , ,

BattleCoder
()

Очереди и многопоточность в python

Форум — Development

Сразу к делу.

Есть сервер. Сначала думал над тем, как вручную реализовать, потом наткнулся на http://docs.python.org/py3k/library/socketserver.html и решил, что это то, что мне надо.

Собственно, вся реализация сервера:

class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
    pass

Обрабатывает все запросы некий класс

class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):

    def handle(self):
        data = str(self.request.recv(1024), 'ascii')
        cur_thread = threading.current_thread()
        response = bytes("{}: {}".format(cur_thread.name, data), 'ascii')
        self.request.sendall(response)

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

Но sqlite нельзя использовать из множества потоков!! Решить проблему можно так - выбрать один поток, который и будет писать в базу данных и выполнять все операции. Можно, например взять очередь http://docs.python.org/py3k/library/queue

сделал примерно так, создаю очередь и делаю её полем класса:

tasks = queue.Queue()
ThreadedTCPRequestHandler.tasks = tasks

Также передаю в специальный класс обработчик, которую запускаю в отдельном потоке (и этот поток всегда одинаковый, запускаю его ОДИН раз)

worker = Worker(tasks)

Ну реализация примерно такая

class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):

    def handle(self):
        data = str(self.request.recv(1024), 'ascii')
        ThreadedTCPRequestHandler.tasks.put(data)
        # что посылать в ответ??
        self.request.sendall(???)

class Worker:

    def __init__(self, tasks):
        self.tasks = tasks

    def do(self):
        while True:
            item = q.get()
            # делаю тут что-то, например, работаю с базой данных sqlite
            q.task_done()

Собственно, мне нужно узнать результат выполнения, выполнена ли команда успешно или вообще не выполнена... и вернуть результат клиент (через sock.sendall(b'что-то'). Как это сделать? %) мне создать ещё одну очередь? такой вариант наверное не прокатит...

Я пробовал просто отправлять в очередь tasks = queue.Queue() экземпляры сокетов (и делать sock.recv/sock.send уже из класса Worker) - но такой вариант вообще не работает, сокет становится закрытым... то есть с сокетом можно получается работать только из того потока, который обслуживает клиента.

Что делать? %)

 , ,

BattleCoder
()

Конференция Java Day Воронеж 2012

Новости — Java
Группа Java

27 октября, в конференц-зале отеля «Бенефит Плаза Конгресс Отель» состоится конференция для разработчиков Java Day. В программе конференции интересные доклады от инженеров Oracle, DataArt, JetBrains, других компаний и представителей сообщества Java-разработчиков.

Генеральный спонсор: корпорация Oracle.

Организатор: DataArt.

Участие в конференции бесплатное, требуется предварительная регистрация. Количество мест ограничено.

( читать дальше... )

>>> Регистрация

 , , ,

BattleCoder
()

json-rpc на python

Форум — Development

Нужно написать клиент-серверное приложение именно на python.

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

В стандартной библиотеке есть модуль json - если ему передать json-строку по типу:

 {"jsonrpc": "2.0", "method": "subtract", "params": [42, 23], "id": 1}

То на выходе получается словарь jsondict:

{'params': [42, 23], 'jsonrpc': '2.0', 'method': 'subtract', 'id': 1}

То есть даже парсить его вручную не надо... есть стандартный библиотечный модуль. Удобно. Я получаю jsondict['method'] - строка, содержащая имя метода, jsondict['params'] - список параметров, ну и соответственно jsondict['id']

Вопрос - как мне этот метод _безопасно_ запустить? Ну например предыстория такая... через socket s клиент соединился с сервером, отправляет ему s.send(somejsonstring.encode('ascii')), например... сервер получает эту строку и парсит, получает словарь.

Я могу, например, использовать:

eval(methodstring + '(' + param1 + ',' + param2 + .... + paramN + ')'

Но eval использовать как-то боязно. :) Вдруг кто подкинет строчку в названии метода 'import os; os.system(«rm -rf /*»)' ?

Как сделать это безопасно?.. запустить метод (если он существует), зная его имя в виде строки и список параметров...?

 , ,

BattleCoder
()

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