LINUX.ORG.RU

Сообщения BattleCoder

 

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

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

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

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

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

 ,

BattleCoder
()

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

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

В общем, сейчас у меня стоит 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 - начало конца?

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

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

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

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

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

Спасибо.

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

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

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

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

BattleCoder
()

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

Где вы берёте библиотеки для рутинных задач в 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

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

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

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

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

Есть два компьютера - большой и ноутбук. На обоих 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
()

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

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

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

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

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

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

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

 , , ,

BattleCoder
()

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

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

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

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

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

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

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

 , ,

BattleCoder
()

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

До этого пользовался на 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

Задача: сделать аутентификацию при помощи сервлета через БД (использую 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, амперсанды

Немного запутался с 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
()

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

Есть, значит, база данных. 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?

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

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

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

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

 , ,

BattleCoder
()

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

Привет, лор.

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

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

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

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

 , ,

BattleCoder
()

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

Всем привет.

Есть программа (уже писал в соседних тредах, но выведу в новый тред, так как новый вопрос ближе к 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

Сразу к делу.

Есть сервер. Сначала думал над тем, как вручную реализовать, потом наткнулся на 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
()

json-rpc на python

Нужно написать клиент-серверное приложение именно на 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
()

Редактирование ODF для android

Посоветуйте программу (таблетка, 10", android-4.0) для просмотра и редактирования офисных документов. Главное требование - поддержка ODF (odt,ods, и т.п.). Офисных пакетов - тьма, с doc/xls/ppt и даже docx/xlsx/pptx работают практически все (да только они мне нафик не сдались, нужен ODF) - хоть бы один найти который с ODF работал.

Можно платный (хотя и нежелательно), или с рекламой (уж если так), но хороший.

Вообще странно - формат открытый - и хоть бы один офисный пакет, а для doc/xls/ppt офисных пакетов под android наверное больше чем под венду и линукс вместе взятые (вопрос - зачем? почему нет например официального ms office и ничего кроме него?)

google docs не подходит - нужно чтобы работал при отсутствии интернетов.

 ,

BattleCoder
()

Встреча LUG из Воронежской области пройдёт 29 сентября

Размещаю здесь так как на новость не тянет... и не знаю, какой раздел лучше подойдёт. (если что, перенесите)

Следующая встреча Воронежского LUG состоится 29 сентября, в субботу.

Место сбора: Театр Оперы и Балета, памятник Пушкину.

Время сбора: 17.00-17.30

В общем, приходите.

Подробнее

Обсуждение

Просили продублировать на лоре (напомнить), cast dexpl, не знаю, может если ещё кто из Воронежа, и кто хотел - позовите их сюда =) я просто всех имён не знаю.

 , ,

BattleCoder
()

Offline карты для Android

Есть телефон на android (SE Xperia mini pro).

Собираюсь поехать в Испанию на недельки полторы, близ Барселоны. Хочу пользоваться для навигации картами.

google maps и yandex карты за глаза хватают по функциональности, но они жрут трафик. Роуминг в Европе, понятное дело, дорогущий (на «привет» денег не хватит, что уж у gprs/edge/3g говорить). Поэтому нужны offline карты. Желательно бесплатная программа. :) По функциональности google/yandex, всякие плюшки типа говорящего навигатора не нужны... просто карта + поиск улицы города, не более того.

В google вроде появилась возможность offline, но она не работает, просто пишет «невозможно сохранить область» для абсолютно любого квадрата (даже в родном Воронеже не пашет).

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

Кто подскажет/посоветует программу? В маркете их что-то ОЧЕНЬ много, не знаю что выбирать.

 , ,

BattleCoder
()

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