Страницы

Поиск по вопросам

вторник, 14 мая 2019 г.

Координаты областей РФ

Заметил у Гугла очень нужную штуку - он знает координаты границ практически всех областей/городов РФ. Но, увы, выдрать оттуда их нельзя - границы рисуюися прям на картинках, а времени (да и желания) парсить картинки нет. Скажите, есть ли какое-то общедоступный справочник полигонов областей-городов РФ?


Ответ

Вот тут гляньте: Свободные данные по границам субъектов РФ и тут: Данные OpenStreetMap в форматах XML и PBF - если вы умеете работать с *.osm файлами, то для вас не составит труда вытащить нужные отношения. Подробная информация... UPD: Вот ещё есть глобальная база данных по границам. Там данные различного уровня детализации по административным и государственным границам в разных форматах (включая Google Earth kml).

Занести массивы в многомерный массив на JavaScript

Добрый день, как в JavaScript заносить массив в многомерный массив, без обертывания в кавычки? Т.е. есть массив - в него нужно засунуть еще 3 массива с 3мя елементами в каждом. В конечном счете мне нужно получить многомерный массив такого вида: var big_array= [[2, 5, 7], [3, 1, 4], [6, 8, 9]]; Я пытался добавлять массивы через push и якобы эмулировать массивы... big_array.push("["+var1+","+var2+","+var3+"]"); //это пример добавления первого массива с данными (2,5,7)
Но результат получается вот такой, с кавычками:
["[2,5,7]"] //это big_array Когда должен быть: [[2,5,7]] Как это можно сделать?


Ответ

big_array.push("["+var1+","+var2+","+var3+"]"); // LOL
big_array.push([var1, var2 ,var3]);// не?.. Вы запихиваете строку и удивляетесь тому, что в массив добавляется именно строка? О_О

Java, Scala, Groovy и проч. что выбрать для разработки десктопа? [закрыт]

Есть запрос на написание десктопного мультиплатформенного приложения. Условие язык должен быть на платформе Java. Писать надо быстро, так что надо чтобы язык имел приличную гуйную библиотеку. Что посоветуете? По C/C++/Perl и проч. просьба не умничать. У приложения есть довольно большой набор Java библиотек с бизнес-логикой, так что платформа строго Java - вариантов нет.


Ответ

Сами по себе Scala и Groovy пока не содержат в себе отдельных production-ready решений для GUI, кроме оберток над swing. При этом вариантов, вообще говоря, два - SwingBuilder для Groovy и scala.swing для Scala Если вы хорошо знакомы с Groovy / Scala (и если вы не единственный из команды, кто может этим похвастаться), то можете воспользоваться одним из этих подходов. При этом, очевидно, стоит учитывать время на необходимость разобраться в деталях соответствующих оберток и возможные риски из-за их непродуманности или недоделанности. Очень обидно будет нарваться на UnsupportedOperationException("Not yet implemented") в конце спринта. Если нет, а выбор между vanilla Java / Scala / Groovy появился только благодаря "модности" последних, то работайте через них с java.swing, либо вообще остановитесь на просто Java Лично я, не будь у меня как минимум года работы со Scala / Groovy / Clojure / Kotlin, не стал браться за разработку бизнес-решения на их базе.

Как сделать “галочку” в главном меню приложения WinForms?

Собственно, хочу в WinForms приложении сделать переключаемую галочку в главном меню. Скажите, можно ли (и если можно, то каким образом) сделать это встроенными средствами Visual Studio (2008 редакция). Чтобы было понятнее, привожу скриншот желаемого результата на примере программы uTorrent.


Ответ

private void toolStripMenuItem2_Click(object sender, EventArgs e) { if (showIcon == false) { toolStripMenuItem2.Image = Bitmap.FromFile("d:\\pic.bmp");//рисовать галочку showIcon = true; //сделать действие } else { toolStripMenuItem2.Image = null; showIcon = false; //сделать действие } } pic.bmp (или .ico, .jpg)- картинка с галочкой. При нажатии пункта меню рисуем галочку и делаем какое-то действие (например, изменяем нужный параметр на 1). При повторном нажатии убираем галочку и делаем другое действие (например, изменяем нужный параметр на 0). "По просьбе трудящихся" вместо быдлокодерского варианта предлагается кошерный вариант :) private void toolStripMenuItem2_Click(object sender, EventArgs e) { if (toolStripMenuItem2.CheckState == CheckState.Unchecked) { toolStripMenuItem2.CheckState = CheckState.Checked; } else { toolStripMenuItem2.CheckState = CheckState.Unchecked; } }

Форматированый ввод в андроид

Необходимо организовать проверку ввода в текстовое поле по фильтру. +Х(ХХХ) ХХХ-ХХХХ Идеальный сценарий таков. Изначально текст ввода выглядит так: +_ ( _ _ _ ) _ _ _-_ _ _ _ . Пользователь вводит только цифры и они встают на свои места. Т.е. после первой цифры будет так: +7 ( _ _ _ ) _ _ _-_ _ _ _ Второй: +7 (4 _ _ ) _ _ _-_ _ _ _ и т.п. Помогите с реализацией, примеры идеи... Сам нашел это: using a mask with EditText, но до ума довести не получается. package my.dfedorenko;
import android.app.Activity; import android.os.Bundle; import android.widget.EditText;
public class TestPhoneparserActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EditText phone = (EditText)findViewById(R.id.phone); phone.addTextChangedListener(new MaskedWatcher("(###) ###-##-##")); setContentView(R.layout.main); }}


Ответ

Самое простое, что приходит в голову, - нарезать текст .substring(), дальше надо смотреть, как у тебя вообще реализован ввод, через какие виджеты? Или просто в строку... import android.app.Activity; import android.os.Bundle; import android.widget.EditText;
public class TestPhoneparserActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); EditText phone = (EditText)findViewById(R.id.phone); phone.addTextChangedListener(new MaskedWatcher("(###) ###-##-##"));
}}

Перегрузка двойной индексации C++

Пусть имеется класс Matrix: class matrix { public:
int row; int col; double **M;
matrix (int i, int j) { row = i; col = j; M = new double*[row];
for (int i = 0; i < row; i++) { M[i] = new double[col]; for (int j = 0; j < col; j++) { M[i][j] = 0; } } }; }; Нужно реализовать перегрузку двойной индексации на чтение и на запись элемента матрицы. Ход моих мыслей: Сделаю сначала на чтение, это легко => double* operator [] (int i, int j){ return M[i][j]; } Угу... много параметров... => friend double* operator [] (int i, int j){ return M[i][j]; } operator[] must be a member function ...хм...блин... Вопрос: В чем проблема? Как исправить? =)


Ответ

Так не получится. Индексация в С++ всегда одинарная. Запись M[x][y] означает (M[x])[y] Просто M[x] должен возвращать строку, а далее к строке применяется её индексация. double* operator [] (int i){return M[i];}

Запись вызова метода в лог

Есть такой код: public class Foo { [Log("Calling bar")] public void Bar() { } } Как сделать, чтобы при вызове метода Bar что-то писалось в лог? Хотелось бы какое-нибудь событие типа OnCall


Ответ

Аспектно-ориентированное программирование Ведение лога и обработка ошибок — типичные примеры сквозной функциональности. PostSharp - одна из лучших библиотек АОП для c# Вот пример аспекта: public class LogAttribute : PostSharp.Aspects.OnMethodBoundaryAspect { // Выполняется перед входом в метод. public override void OnEntry(MethodExecutionArgs args) { Console.WriteLine("Входим в метод {0} класса {1}", args.Method.Name, args.Method.DeclaringType.FullName);
}
// Выполняется при успешном завершении работы метода public override void OnExit(MethodExecutionArgs args) { Console.WriteLine("Метод {0} класса {1} успешно отработал", args.Method.Name, args.Method.DeclaringType.FullName); } } Быстрый старт PostSharp. Решение задач логгирования и аудита Несколько полезных аспектов для PostSharp