Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Обязательное ли использование ORM для работы с SQLite?

Лучший ответ:
если вы пишите для веба то скорее да чем нет,  ORM  при работе с бд хорошая практика, как минимум вы не можете гарантировать что в процессе развития проекта вам не придется сменить бд .. если вы используете ORM  то этот процесс пройдет менее болезненно, кроме того в вебе гораздо чаще приходится писать динамичные запросы, да и в целом работы с бд намного больше, поэтому ORM давно стали стандартом 
что касается sqlite то это в первую очередь бд для приложений (не только мобильных)
ну а теперь про android - тут дело вкуса, лично мне не нравятся существующие ORM  для android, я бы с куда большим удовольствием использовал какой то билдер для запросов к ContentProvider (парочка есть но когда последний раз смотрел было сыро)
из моей практики  как то писал приложение с кучей настроек, полей ввода, чекбоксов, спинеров и тд, любое изменение настроек должно было быть показано пользователю сразу - ContentProvider справился отлично, но участок кода отвечающий за генерацию запроса был ужасен,  дело было давно, сегодня бы для этой задачи наверное использовал бы какой то orm и rxjava
из orm для android наиболее приятен в плане функционала ormlite но он давно не обновлялся и достаточно медлителен
realm.io -ни разу не sqlite а самый настоящий nosql, за счет этого прилично выигрывает в скорости, на этом его плюсы для меня и заканчиваются, не рекомендую, хотя это только мое имхо, никак не навязываю, кому то даже нравится, но большая часть людей  кто с ней работал чуть больше чем запустить hello world со мной солидарны (опять же мое имхо у кого то может быть иная статистика  ) )
зы присматриваюсь к этой штуке https://github.com/square/sqlbrite но все нет случая попробовать

Худший ответ:
Если хочется разобраться в вопросе, возьмите чистый JDBC и поработайте через него. Затем уже можно переползать на ORM. Тем более, что SQLite не супер навороченная СУБД. А вот если вы за СУБД возьмете какой-нибудь H2, HSQL или JavaDB, то выбор ORM расширяется до Hibernate, Mybatis и прочих
Вопрос: Какими программами вы пользуетесь для верстки сайта?

Лучший ответ:
PhpStorm - для студентов есть бесплатная лицензия. WebStorm не имеет смысла, так как всё, что есть в нем, есть и в phpStorm'e.
Для быстрых правок - notepad++.
sftp - FileZilla
локальный сервер - xampp(ибо сижу на win7)
git - git bash
Сборка js/css - gulp
Особенно доставляет gulp-livereload - настроил и теперь при изменении не надо страницу ручками обновлять, она сама это делает.

Худший ответ:
Brackets, иногда WebStorm/PhpStorm.
По большому счету абсолютно малиново.Можно писать в обычном блокноте или NotePad++ - для подсветки синтаксиса. А больше от редактора особо ничего и не надо.
Вопрос: Как работает Timer в WPF?

Лучший ответ:
Для общей справки в дополнение к первому ответу, есть грубо говоря 2 основных разновидности таймеров:
1. System.Threading.Timer - Ставит задачу в пул потоков, поэтому подходит для тех, случаев, когда задача выполняется по таймеру в фоновом режиме. Например ваш объект изменяет параметр Х, но на форме этого не видно.
2. System.Windows.Forms.Timer (для WinForms) / System.Windows.Threading.DispatcherTimer (WPF и Silvelight)  и System.UI.XAML.DispatcherTimer для приложений Win Store еще есть - это все аналоги, которые вызывают исполнение метода в том же потоке, что и был вызван. Благодаря этому, обеспечивается доступ к элементам графического интерфейса, но при этом сюда лучше не помещать сложную вычислительную логику

Худший ответ:
Подниму старую тему, что б не создавать новую.
Если в WPF должен вызываться какой то метод работающий с сетью (вычислительная логика не большая, но длительная), после своей работы он должен изменить элемент интерфейса. Какой класс таймеров лучше использовать?
Вопрос: Конвертировать svm-изображение (StarView Metafile) в png?

Лучший ответ:
Нашел решение.
Оказывается есть статья на хабре про конвертацию скриптом python через установленный openoffice: http://habrahabr.ru/post/97637/
Сразу до конца не дочитал в результате чего имел кучу вопросов, как все-таки запустить под OSX данный скрипт. 
В итоге приведу небольшое решение проблем, может кому поможет. 
Скачиваем отсюда файл DocumentConverter.py.

В итоге получаются следующие ошибки в порядке их исправления:
ImportError: No module named uno. 
/Applications/LibreOffice.app/Contents/MacOS/pyuno.so: mach-o, but wrong architecture
ERROR! Binary URP bridge disposed during call

Ошибка в связи с неверными путями, теперь создаем скрипт convert.sh для его запуска:
#!/bin/bash


export PATH=/Applications/LibreOffice.app/Contents/MacOS:$PATH

export URE_BOOTSTRAP=vnd.sun.star.pathname:/Applications/LibreOffice.app/Contents/MacOS/fundamentalrc
export UNO_PATH=/Applications/LibreOffice.app/Contents/MacOS
export LD_LIBRARY_PATH=/Applications/LibreOffice.app/Contents/MacOS:/Applications/LibreOffice.app/Contents/ure-link/lib/
export PYTHONPATH=/Applications/LibreOffice.app/Contents/MacOS:$PYTHONPATH
PYTHON="/Applications/LibreOffice.app/Contents/MacOS/OOoPython.framework/Versions/Current/bin/python"

OFFICE="/Applications/LibreOffice.app/Contents/MacOS/soffice"


$OFFICE --norestore --nofirststartwizard --nologo --headless "--accept=socket,host=localhost,port=2002;urp;StarOffice.ServiceManager" &

sleep 5s

$PYTHON DocumentConverter.py $1 $2


Теперь можно конвертировать, просто написав ./convert.sh file1.odt file2.html

Картинки svm будут лежать рядом в формате gif. 
Но я пошел дальше и дочитал статью на хабре до конца, где говорилось про другую скрипт-обертку unoconv. Скачиваем исходники отсюда http://dag.wieers.com/home-made/unoconv/#download, в них python-скрипт unoconv. 
Теперь можно конвертировать даже просто картинки svm командой 
unoconv -f png mypath/*.svm


Худший ответ:
А я вот с большим запозданием скину ссыль (по долгу работы пришлось написать тулзу), плагин-конвертер для Node.js
https://www.npmjs.com/package/svmconv
^_^
Вопрос: Где найти фрилансеров из Индии?

Лучший ответ:
На odesk много людей из Индии. Просто в самом объявлении пишите сразу цену.

Худший ответ:
odesk.com
elance.com
нету в индии толковых бирж, так как большинство  заказчиков из сша, европы и австралии.
Вопрос: Как внутри функции isset запустить функцию function{}?

Лучший ответ:
function doThings(){
      if($curl = curl_init()){
        curl_setopt($curl,CURLOPT_URL, "http://diesel.elcat.kg/index.php?showtopic=134877653");
        curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
        $out = curl_exec($curl);
        curl_close($curl);

        $tmp = substr($out,strpos($out,'<title>'),666);
        var_dump($tmp);
        }
    }
if(isset($_POST["send"])){
      doThings();
    }
А у вас помесь и php прослеживается, и js с jquery в частности, и что-то ещё. Это всё-таки разные  вещи, различайте их :)

Худший ответ:
Во-первый isset() не функция, я языковая конструкция.
Во-вторых - поставьте себе нормальную IDE, чтобы жести вроде $(f); и function($f){ не было, рекомендую PhpStorm.но такой шаманизм у меня не получился
В таких случаях обычно пишут что именно не работает и показывают логи веб-сервера, хотя у вас должна быть просто белая страница, ибо у вас вообще синтаксическая ошибка.
И да, логи сервера почитайте, там всё написано.
Вопрос: Защита от отправки POST запроса со стороннего сайта

Лучший ответ:
Я так понимаю, что вам надо запретить отправку POST'ом данных из всех форм, кроме расположенной у вас на сайте.
@SpaceBike выше почти правильно вам указал, что сделайте скрытое поле, значение которого будет генерироваться PHP в зависимости от пришедших параметров пользователя (HTTP-заголовки, Cookie, User-Agent и т.д.). Туда же можно добавить некую "соль" - случайно сгенерированный параметр, но его надо будет хранить, чтобы использовать потом.
В форму:<input
	type='hidden'
	name='security'
	value='<?php
		echo md5(
			$_SERVER['REMOTE_ADDR'] .
			$_SERVER['HTTP_USER_AGENT']
		);
	?>'
/>
В обработчике POST-запросов:<?php
	$valid = md5(
			$_SERVER['REMOTE_ADDR'] .
			$_SERVER['HTTP_USER_AGENT']
		);
	if($POST['security'] == $valid) {
		// хороший
	} else {
		// плохой
	};
?>
Таким образом, чтобы отправить POST-запрос с внешнего сайта или автоматическим скриптом, им надо будет эмулировать браузер: скачать страницу с вашего сайта, взять скрытые параметры (их может быть несколько) и отправлять свои запросы с ними. На моей практике 95% автоматических скриптов этого не делают. Понятно, что это не идеальная панацея. Можно добавить некий скрытый параметр через Javascript, тоже каким-нибудь мудрёным алгоритмом. Автоматика вряд ли будет исполнять js в момент скачивания, а если будет, то защищаться надо будет другой проверкой на робота.

Худший ответ:
Вот у вас есть форма<html>
<form>
блаблабла...
<input type = 'hidden' name 'security' value = '<?php echo md5('site.ru'.$config->securitykey) ?>' />
блаблабла
</form>
</html>
А потом проверяешь:<?php
if($POST['security'] == md5('site.ru'.$config->securitykey)) {
 echo 'Всё норм:)';
} else die('Всё плохо:C');
?>
Вопрос: Китай, РосТелеком, Huawei — как они это делают?

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

Худший ответ:
А почему именно их Ont? У вас есть их голова, но нет абонентских устройств?
Есть и другие варианты пона :)
Вопрос: Что с watch.do?

Лучший ответ:
проблемы с доменом. Запустили временный домен watch-do.com

Худший ответ:
На днях ни один фильм не мог с него посмотреть, хотя сам сайт работал, мож какие проблемы у них.
Вопрос: Ведется разработка в git репозитории, как поддерживать sql структура в актуальном варианте?

Лучший ответ:
Миграции. Каждое изменение базы данных - делаете миграцию. Никакого изменения структуры базы вручную, написали миграцию, написали up/down оной и вперед накатывать и если что откатывать. Так же первоначальный дамп базы можно сделать как первую версию. То есть база с нуля должна разворачиваться миграциями.
https://github.com/robmorgan/phinx - советую вот эту реализацию.
Так же стоит реализовывать изменения БД так, что бы новая версия не ломала старую. Не нужно просто так удалять поля из базы, или таблицы. Только если без этого вот никак. Это позволит вам потом автоматизировать и процесс деплоя с откаткой изменений, но вам придется начать думать при проектировании БД.

Худший ответ:
у вас получается файлы в формате *.sql? если да, то в них вроде в текстовом варианте запросы на создание таблиц и вставку данных. что мешает размещать его в репозитории и менять строки по опрелеленной договоренности?
Вопрос: Правильное обращение к методам из других классов?

Лучший ответ:
Вы как-то неправильно понимаете суть ООП. Классы служат не для группировки методов (в которых вы видите только процедуры), для этого существую модули. В ООП классы служат цели инкапсуляции данных. Но если вы используете класс как кучу процедур, то создание экземпляра такого класса не имеет смысла, лучше объявить все методы как статические и вызывать их из самого класса без создания экземпляра. Только такой подход не имеет ничего общего с ООП.

Худший ответ:
nirvimel вам говорит правильно, нужно определиться для чего вы используете классы, т.е. подтянуть "матчасть" :) 
Если вам просто нужны "группировки" методов, то нужно делать классы вроде AddressUtils - т.е. вспомогательный класс, в котором будут статические методы, которые будут делать какие то определённые действия.
Т.е. есть у вас, например, класс Address :public class Address {
        String street;
        String house;
        String flat;
        // getters
        // setters
}
И вы хотите чтобы при передаче экземпляра этого класса в ваш вспомогательный метод выводилась бы, например, человекочитаемая форма адреса :public class AddressUtils {
        public static String getAddressString(Address address) {
            if (address == null) {
                return "";
            }
            StringBuilder sb = new StringBuilder("");
            sb = sb.append(address.getStreet() == null || address.getStreet().isEmpty() ? "" : address.getStreet());
            sb = sb.append(address.getHouse() == null || address.getHouse().isEmpty() ? "" : address.getHouse());
            sb = sb.append(address.getFlat() == null || address.getFlat().isEmpty() ? "" : address.getFlat());
            return sb.toString();
        }
    }
Вопрос: Что нужно знать JS стажеру?

Лучший ответ:
А такие есть? Мне кажется JS программистов берут в купе с HTML, CSS как минимум. 
P.S. знать ООП, JQuery, ну и уметь кодить!
Хотя для стажировки наверное только последнего достаточно))

Худший ответ:
Когда я начинал работать стажером (год назад), у меня были знания только в html/css. JS совершенно не знал, знаний в области ООП практически не было. Разве что в универе рассказывали про Pascal, но это не считается. Поэтому для стажера самое главное - это умение быстро обучаться, схватывать на лету. 
Когда пришла пора заниматься проектом написанным только на JS, то первое что сделал - прочитал книгу Фленагана  Javascript.
А если вы проходите стажировку (не собеседование), то желательно иметь базовые знания ооп, функционального программирования. Большим плюсом будут какие то собственные скрипты, наработки, выложенные на гитхабе.
Вопрос: Как правильно указывать href для телефонов, чтобы воспринималось всеми устройствами?

Лучший ответ:
Использую такой способ:<a href="tel:999-999-9999">999-999-9999</a>Причина
Работает для всех стран, т.к. все страны руководствуются мировыми стандартами и языками разметки (html и тд.)

Худший ответ:
это одно и тоже что спросить работает ли тег p в Африке... Это часть спецификации и она работает в зависимости от поддержки и устройства, а не от страны. И для телефонов лучше выводит  tel:
Вопрос: Посоветуйте решение для раздачи Wi-Fi в большом здании

Лучший ответ:
Катушка коаксиального кабеля, несколько крабиков, несколько антенн, bnc коннекторы, перфоратор, один хороший маршрутизатор с точкой доступа и bnc коннектором, к которому привинчивается вся сеть по типу звезды. Маршрутизатора можно заменить сервером с вафлекарточкой, в качестве сервера подойдёт почти любой нормальный неттоп, если мощность не нужна большая. Ну или если нужна — я предпочитаю супермикро, но выбор серверного железа богат и без моих советов и предпочтений.

Развести такое чудо не сложней (технически), чем коллективную антенну по квартирам в жилом доме.
Сама такие сети разводила и развожу в Москве и Замкадье уже несколько лет, все довольны.

Советы про несколько роутеров — глупости, только лишние проблемы с настройкой и организацией. И главная глупость — всё равно придётся брать перфоратор и тянуть кабели, только кроме витой пары понадобится ещё и электричество.

И исходя из теории вероятностей — чем больше есть вещей, которые могут сломаться — тем скорее что-нибудь сломается. Кокс и антенны ломаются крайне сложно, а если найдётся витая пара дешевле кокса и маршрутизаторы дешевле антенн и системный администратор дешевле монтажника…

Худший ответ:
Если ВСЕ стены больше полуметра: кабеля в кабинеты, в кабинетах точки доступа.
Вопрос: Как быстро выучить азы objective-с?

Лучший ответ:
1) Курсы Stanford в iTunes.                                Теория + Практика.
2) Курсы Алексея Скутаренко ВК + youTube.    Теория + Практика.
3) Документация Apple.                                      Примеры разработки приложений.
на iOS традиционно hello World-2 - это запилить клон чего-либо, либо приложение, которое, к примеру, выводит список most liked фото твоих друзей из instagram.

Худший ответ:
Может лучше Swift? За ним будущее на IOS/OSX.
Вопрос: Как обработать двоичный файл в с++?

Лучший ответ:
Проблема в том что в режиме "a+" запись всегда происходит в конец файла. 
Цитата из man fopen:a+     Open for reading and appending (writing at end of file). The file is created if it does not exist. The initial file position for reading is at the beginning of the file, but output is always appended to the end of the file. 
Вопрос по теме на SO:
stackoverflow.com/questions/3645123/opening-a-file...
Стандартные средства языка С не предоставляют возможности писать в  произвольное место в файле. Вам нужно изменить алгоритм, либо пользоваться ками-то более низкоуровневыми и платформо специфичными средствами.

Худший ответ:
Для того, чтобы изменять файл в произвольном месте без уничтожения содержимого, нужно применять режим "r+" при открытии
Вопрос: Как реализовать тень как у логотипа харба на CSS?

Лучший ответ:
я обычно пользуюсь генератором длинных теней

Худший ответ:
Например не генерировать каждый раз на JavaScript, а сгенерировать 1 раз и запихнуть в .css файл и все.
Вопрос: Есть ли подобная программа для android?

Лучший ответ:
В принципе такую программу реализовать не сложно, средства все есть, только вот лично у меня программа распознавания штрих кодов распознает только процентов 30 кодов, не больше, может конечно из-за относительно слабой камеры…
Все упирается в одно — время… Может Если не появится подобной программы в ближайшее врем и напишу, просто пока несколько другие проектов в разработке.

Худший ответ:
А вот это не подходит market.android.com/details?id=com.mightypocket.grocery?
Вопрос: Как разобраться в UIKit Framework?

Лучший ответ:
Это не просто. Я начал с https://www.codeschool.com/paths/ios. Чисто по фану посмотрел и порешал уроки. Небольшое представление о том как оно работает получил.
После этого практиковался в создании небольших приложений, 90% времени пропадал в гугле и на stackoverflow. Сейчас у меня есть представление как с этим работать и могу нормально разрабатывать свой проект.
Кроме codeschool рекомендую вам
nsscreencast.com
Это как Railscast но для iOS разработки. Там много материала, от элементарных вещей до очень сложных.
В любом случае вам нужно мыслить в других категориях. Не "Как разобраться в UIKit Framework", а как сделать фичу. Например вывести таблицу и заполнить ее данными.

Худший ответ:
Нашел курс.  
Eliot Arntz - The Complete iOS8 Course with Swift
12 часовой курс. Очень подробный и с объяснениями "что куда зачем и почему"
Есть на рутрекере.
Вопрос: Есть ли где ресурс с запросами разработки ПО под линукс?

Лучший ответ:
За любой пункт из этого списка www.fsf.org/campaigns/priority-projects/ тебе скажут спасибо.

Худший ответ:
Если хотите еще на этом и денег подзаработать, то oDesk.com
Вопрос: Как сделать так, чтобы граница стыка двух блоков оказалась посередине (в горизонтальной плоскости) родительского блока, при переменной ширине блоков?

Лучший ответ:
Например так jsfiddle.net/DelphinPRO/uzmkyfr8/2

Худший ответ:
Первый вам уже предложили
Вот второй: jsfiddle.net/t2ra6a2x
Вариант третий: убрать float и поднять их при помощи margin а потом уже выровнять по краям
Вариант четвертый: завернуть еще в один уровень.
Вопрос: Преимущества Андроида и iOS в плане стороннего ПО и дополнительных фич

Лучший ответ:
iOS:
— как уже было упомянуто, такие красивые игры как Infinity Blade 2
— iMessages и FaceTime, из коробки. Так же радует привязка к номеру, помимо Apple ID
— интересная читалка новостей, Flipboard
— Tweetbot, офигенный твиттер-клиент. Одно из самых лучших приложений на iOS, на андроиде ничего похожего с таким же отличным user experience не видел
— ИМО в целом лучшая экосистема приложений
— FreeMyApps, скачиваем бесплатные приложения, зарабатываем кредиты, и меняем на промо-коды от качественных приложений (у меня так появились Infinity Blade II, Tweetbot, и всякие другие штуки)


Андроид:
…
— Goggles

Позвольте, он и на iOS есть. Сразу встроен в приложение Google Search.

… Flash…

Немного субъективно, но, по-моему, это спорный момент. Именно отсутствие флеша на iOS устройствах заставило множество разработчиков понять, что жизнь без него есть, и что с html5 они прекрасна.

Худший ответ:
iOS - это прежде всего экосистема. 
Приложения в целом кажутся более оптимизированными, так как вариаций устройств несравнимо меньше.
Ну и жизненный цикл девайс - очень немаловажная вещь.
И, кстати, iOS тоже очень хорошо кастомизируется и имет много возможностей, просто они обычно не для всех очевидны.
Недавно я начал вести telegram канал, где рассказываю о таких скрытых возможностях, если интересно - велкам https://t.me/iossecrets
Вопрос: Использование переменных в конфиге nginx'а. Почему $server_name не работает в error_log и некоторых других директивах? Какие еще варианты?

Лучший ответ:
Всё просто. Директива error_log не поддерживает переменные в путях к файлу.https://forum.nginx.org/read.php?2,178665,178680#m...There is no variables support in error_log directive (and it's
unlikely to appear), so "...error_log" file is expected.UPD:
В момент когда нужна запись в error_log это должно быть сделано быстро и с минимальными затратами. Интреполяция переменных это лишнее действие. К тому же, если имя файла известно заранее, то он открывается на запись мастер-процессом в момент (ре-)старта приложения, а если бы его приходилось вычислять на основании значений каких-то переменных, то и открывать пришлось бы уже в воркере и прямо перед записью, а это ни разу не быстро и, к тому же, у воркера обычно меньше прав и неплохие шансы, что он просто не сможет открыть файл.
Если у вас реально есть потребность в большом количестве разных серверов, то никто не мешает вам взять любой из существующих шаблонизаторов (или написать свой велосипед) и сгенерить хоть тысячи однотипных файлов конфигов.

Худший ответ:
Где поискать красивые конфиги nginx или как сделать красивым мой?
VBart изменилось ли мнение комманды на счет данного вопроса?
Вопрос: В чем причина загрузки VDS? Как разгрузить?

Лучший ответ:
скорее всего не хватает IOPS, посмотрите что там у вас с нагрузкой на дисковую подсистему

Худший ответ:
Положите все на ссд
Вопрос: Как сделать update в flask sqlalchemy?

Лучший ответ:
Через filter или filter_by можно получить нужные строки - filter и filter_by. Затем можно уже в цикле обойти все записи и записать нужное значение.
НО! это не самый лучший подход, точнее это плохой подход! В SQLAlchemy есть один хороший метод - update. В итоге можно сделать всё примерно так:u_id = get_userid()
rows = Stat.query.filter_by(user_id = u_id).update({'user_id': 1})
db.session.commit()
А вообще не нужно ничего гуглить, всё есть в официальной документации.

Худший ответ:
Можно написать самому миграцию. Если что пойдёт не так - откатишься. 
Для фласка есть плагин (который есть обёртка над alembic)
Вопрос: DPI в Android. Drawable-ресурсы. Что посоветуете?

Лучший ответ:
Вы сделали приложение немного быстрее и заставили потреблять меньше драгоценной оперативки. Размер apk конечно увеличился, но сейчас это никого не волнует.

Худший ответ:
Лучше и почти все советуют делать resize картинок самостоятельно. А какие пропорции картинок вы делаете и под какие разрешения? Сам сейчас делаю игру и интересны именно resize для больших размеров экрана... Заранее спасибо!
Вопрос: Как имитировать клик по элементу на JQuery?

Лучший ответ:
trigger("click") на самом деле просто стреляет клик-эвент.
Используйте .click().$('#new a')[0].click();

Худший ответ:
.click()
А если надо по ссылке перейти, то используйте location
Вопрос: Как получить список пакетов установленных в centos?

Лучший ответ:
а чем rpm -qa не подходит??
rpm -qa > rpm.list
Установить 
yum install `cat rpm.list`

Худший ответ:
У меня получилось решить задачу таким способом:yum list installed | grep -oP "[\w\.\-\+]*x86_64|[\w\.\-\+]*i686|[\w\.\-\+]*noarch" > packagelist
Получаем список установленных пакетов без версий под перечисленные архитектуры.
Не эксперт по регулярным выражениям, сильно не пинайте.
Руслан Федосеев выше подсказал правильный вариантrpm -qa --qf "%{NAME}\n"
Вопрос: Вопрос про jQuery. Почему не возможно манипулировать с селектором?

Лучший ответ:
Например: jsfiddle.net/ccxkLbw9$("div[id='2.5']").remove();

Худший ответ:
<div id='2.5'></div>
а превратить в более человеко-читаемое не вариант?
Да хоть например так:  <div id="selector" data-someAttr='2.5'></div>
Вопрос: Оффлайн карта Праги?

Лучший ответ:
В Google maps можно сохранить участок карты в оффлайн.

Худший ответ:
В приложении MapsWithMe, должна быть