Сайт для программистов

пятница, 22 января 2016 г.

Как не нужно задавать вопросы

Мне на почту приходят вопросы. Ещё на мой форум приходят вопросы. Иногда я читаю вопросы на других русскоязычных форумах о разработке под Android. И часто наблюдаю ситуацию, когда вопрошающий не может толком сформировать свою мысль. Ему кажется, что он всё обстоятельно объяснил, но на самом деле это не так. Вопрос понятен только ему одному, а для других это выглядит как поток незамутненного сознания. Читаешь такой вопрос и думаешь, а что сказать-то хотел? Вывод - учитесь формировать свои мысли. Иначе ответа не дождётесь. Порой даже не хочется переспрашивать и задавать наводящие вопросы, понимая, что переписка затянется надолго.

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

Третья часть считает меня экстрасенсом. Приходит такое письмо: "Я всё делал по описанию на вашем сайте, а у меня ничего не работает. Почему?" К сожалению, после окончания Хогвартса с отличием, я дал обязательство не использовать полученные знания на территории России и не могу использовать свои волшебные способности для ответа на ваш вопрос. Теперь я буду удалять подобные вопросы с форума, а письма удалять с почтового сервера.

В общем, моё состояние после получения подобных вопросов похоже на одного кота-мема. Обычно, этот мем сопровождается текстом, который начинается со слов: "Честно сказать я ...". Продолжать не буду, гугл вам в помощь.

среда, 4 ноября 2015 г.

Активность или активити?

В рунете термину activity не повезло. На русский язык слово переводится, как "активность", большинство разработчиков под Android игнорируют нормальное русское слово и использует кальку с английского - "активити". Попробуем разобраться.
Начнём с простого. Есть термин Class - повезло, в русском языке есть слово Класс. Менять ничего не будем.
Есть термин Form (например, в Visual Studio) - термин Форм не очень удобен для выговаривания, благо есть похожее слово Форма. Будем говорить по-русски.
Есть тип String - неужели, стринги? о_О
Нет, конечно. Мы этот тип назовём строковым. Строка, она и в Африке строка.
А теперь (барабанная дробь) - Activity. Люди испугались нового термина. Какая ещё активность? Не понятно. А раз непонятно, давайте назовём непонятную фигню непонятным словом, чтобы всех запутать. Может уважать будут, "яжпрограммист".
Откроем страницу документации для android-разработчика https://developers.google.com/android/reference/com/google/android/gms/location/ActivityRecognitionApi, в которой рассказывается об ActivityRecognitionApi. В тексте много раз встречается слово Activity - 31 раз. Если вчитаться в текст, то будет понятно, что речь идёт о физической активности - бег, езда на велосипеде и т.д. Вы можете себе представить фразу в разговоре - физическая активити?  
Как видите, американцы не видят разницы между физической активностью и активностью на экране, называя это всё одним словом. И только у русскоговорящих свой особый путь.
Вот почему на моём сайте вы нигде не увидите этого уродца. Активность и только активность. Я слишком сильно уважаю свой родной русский язык.


Upd. Мне тут оперативно подсказали, что на сайте developer.android.com локализовали часть статей и Activity перевели, вы не поверите, как операция. Операция, Карл!
Подозреваю, что наняли студентов-филологов. Сразу вспоминается фраза - Не читайте советских газет...

пятница, 2 октября 2015 г.

Покой нам только снится

Первая версия статьи Hello World была написана ещё в 2012 году, когда все пользовались устройствами Android 2.3 и средой разработки Eclipse.
Затем статья много раз переписывалась. Менялся внешний вид экранов приложения, шаблоны, код, версии устройств. Приходилось делать новые скриншоты и делать новые пояснения по коду. После пришла очередь Androd Studio - и всё по новой.
Но и студия не стояла на месте. Постоянно в новых версиях появлялись и исчезали различные прибамбасы.
Буквально вчера я запустил новый проект под версией Android Studio 1.4. И опять многое поменялось. Появились новые шаблоны с использованием Material Design. Кстати, простейший шаблон теперь называется Empty Activity и вдобавок из него убрали код для меню.
А в шаблоне с старым названием Blank Activity теперь используется плавающая кнопка Floating Action Button из библиотеки Android Design Support Library.
Вот так и живём. Сегодня очередной раз отредактировал урок Hello World.
В ближайшие дни надо пробежаться по другим статьям и посмотреть, нужно ли что-то там менять. А то новички завалят письмами, почему у них выходит совсем другое.

Воскрешение

Меняемся...
Раньше блог имел название Русский .NET Framework
показывая моё старое увлечение .Net-платформой.
Блог четыре года назад был заброшен, 
так как я полностью перешёл на разработку под Android.
Соответственно, поменял адрес сайта (раньше был rusnetframework.blogspot.com)
 и его описание.
Здесь я буду выкладывать небольшие заметки, размышления и прочие мысли, 
которые не подходят по формату для сайта Освой программирование играючи


среда, 12 октября 2011 г.

SetComputerName

Добавил в справочник по функциям Windows API описание для функции SetComputerName. Кстати, я не нашел, как можно эту операцию сделать с помощью управляемого кода. Кто-нибудь знает?

[DllImport("kernel32.dll")]
static extern bool SetComputerName(string lpComputerName);

SetComputerName устанавливает новое имя компьютера пользователя. Имя помещено в строковую переменную lpComputerName. Чтобы изменения вступили в силу, требуется перезагрузка компьютера. Имя компьютера можно изменить также с помощью компонента Панели управления Система.

Параметры

lpComputerName
Строка, достаточно большая для хранения имени компьютера

Пример

' Устанавливаем новое имя компьютера
bool done = SetComputerName("NewName");

if (done)
{
MessageBox.Show("Перезагрузите компьютер, чтобы изменения вступили в силу");
}

Зарегистрированные пользователи скоро получат новую версию электронного справочника.

воскресенье, 3 апреля 2011 г.

ClipCursor

Недавно редактировал страницы описаний функций Windows API для Visual Basic 6.0 (http://rusproject.narod.ru/api/winapi.htm) и обратил внимание, что не написал аналога функции ClipCursor для другого Справочника по функциям Windows API для .NET Framework. Решил восполнить пробел. Сама функция интересна тем, что с ее помощью можно запереть курсор мыши в замкнутом пространстве. Это дает простор для создания различных шуток и розыгрышей (эх, 1 апреля пропустил). Только учтите, что даже при закрытии приложения мышь будет метаться в заданном вами прямоугольнике! Поэтому необходимо предусмотреть возможность восстановить работоспособность бедной мышки. По секрету скажу, что комбинации клавиш Ctrl+Alt+Del или Alt+Tab позволяют освободить мышь из плена. Теперь сам пример.

// Временно ограничим перемещения курсора областью формы Form1
[DllImport("user32.dll")]
static extern bool ClipCursor(ref RECT lpRect);

[DllImport("user32.dll")]
public static extern int GetWindowRect(IntPtr hwnd, ref RECT lpRect);

[DllImport("user32.dll", EntryPoint = "GetDesktopWindow")]
public static extern IntPtr GetDesktopWindow();

[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
public int left;
public int top;
public int right;
public int bottom;
}

private void button1_Click(object sender, EventArgs e)
{
RECT rc = new RECT(); // прямоугольник ограничения
GetWindowRect(this.Handle, ref rc); // помещаем координаты окна в прямоугольник
ClipCursor(ref rc); // ограничиваем перемещения курсора
}

private void button2_Click(object sender, EventArgs e)
{
//код для "освобождения" курсора.
RECT rc = new RECT(); // прямоугольник ограничения
IntPtr hWind = GetDesktopWindow(); // получаем описатель рабочего стола
GetWindowRect(hWind, ref rc); // помещаем координаты рабочего стола в прямоугольник
ClipCursor(ref rc); // "ограничиваем" курсор целым экраном
}

воскресенье, 13 февраля 2011 г.

Microsoft+Nokia: В одну кучку гоп!

В последние дни очень активно обсуждается тема будущего совместного сотрудничества между компаниями Nokia и Microsoft. Мнения по этому поводу разделились диаметрально противоположным образом. Я тоже решил высказать здесь свое мнение, чтобы спустя некоторое время проверить, насколько был прав.
Во-первых, для меня очевидно, что и Nokia и Microsoft переживают трудные времена в области мобильных телефонов. Рынок телефонов сейчас является лакомым кусочком для многих компаний, и поэтому таким гигантам очень обидно проигрывать на этом участке, учитывая их амбиции.
Примечательно, что сами компании вслух отрицают, что дела у них плохо. И стараются делать хорошую мину при плохой игре. Например, просто замалчивают результаты своих продаж, или составляют статистику немного хитрым образом. Но независимые аналитики доказывают, что доля Nokia и Microsoft на рынке падает. А потребитель выбирает iPhone и телефоны на базе Android.
В конце концов Nokia сдалась и призналась, что они стали аутсайдерами в гонке. Это признание сделал новый главный руководитель Nokia в закрытом письме для сотрудников. Позже он подтвердил свое авторство письма, когда оно стало достоянием общественности.
Microsoft пока держится и не делает никаких признаний. Но косвенные улики указывают на плачевное состояние дел. Во-первых, компания упорно не раскрывает статистику продаж. Особенно смешно это выглядит на фоне парадных рапортов о рекордных продажах Windows 7, MS Office, Kinect. Далее стали просачиваться осторожные высказывания некоторых партнеров MS, которые сетуют на то, что они рассчитывали на более высокие продажи, но при этом быстро добавляли, что сама система им очень-очень нравится (правда, правда). Видимо, чтобы не вызвать праведного гнева корпорации.
Я долго ждал, кто же первым произнесет слово Провал в отношении Windows Phone 7. И, наконец-то, дождался. Первым смельчаком оказался известный аналитик Эльдар Муртазин.
Так что же нам ждать от объединения Nokia и Microsoft? А никто не знает. Во-первых, было произнесено слишком много общих слов. Во-вторых, две компании с богатыми потенциальными возможностями не всегда могут составить идеальную пару, даже став союзниками. Лично я скептически отношусь к новообразованному союзу. И вот почему. Nokia собирается переходить на систему Windows Phone 7, которая и так уже ничем не удивила пользователя. Да, число владельцев Windows Phone 7 увеличится, но оно увеличится только за счет уменьшения доли Symbian. А часть поклонников Nokia также перейдут на Android и iPhone.
Но на самом деле, для меня не так важно, какую часть рынка займут телефоны Windows Phone 7. Например, несмотря на растущую популярность Android и iPhone, я до сих пор пользуюсь Windows Mobile 6.5. Причина моего выбора была проста - я мог писать программы для себя на Visual Studio 2008. Но Microsoft сама обрубила сук, на котором сидела. Во-первых, она прекратила без объяснения причин поддержку Windows Mobile в Visual Studio 2010. Во-вторых, она решила полностью скопировать поведение Apple и ввела систему членства и ограничений. Теперь, чтобы написать программу и поделиться с другом, нужно заплатить 99 долларов в год и разместить ее в MarketPlace. Объединение с Nokia ничего не изменит в этой политике. Естественно, на фоне этих событий мне придется переходить на Android с ее более демократичным подходом.
Это очень обидно, так как программировать в Visual Studio для Windows Phone 7 гораздо приятнее, чем в Eclipse для Android. Например, приступая к изучению основ программирования под Windows Phone 7, совершенно не знал Silverlight и XNA. Но вхождение в новые технологии было очень простым и понятным. Для Android все немного сложнее и запутаннее.
Остается маленькая надежда, что в Microsoft будут сделаны кадровые перестановки и придет очень хороший руководитель, который сможет убедить руководство изменить систему в лучшую сторону. То, что мы видим сейчас - это, простите, убожество. Чем дальше я смотрю на дизайн Windows Phone, тем больше в нем разочаровываюсь. Уже все знают о черной полоске со стрелкой на главном окне телефона и несимметричном расположении плиток. Но меня также удивляет и стиль Metro, который выдают за оригинальное дизайнерское решение. Я не дизайнер, и поэтому принимал данное утверждение на веру. А теперь выскажу свое скромное мнение. Посмотрим на эту ситуацию с такой стороны. На сегодняшний день все продающиеся телефоны с Windows Phone 7 можно отнести к дорогой ценовой категории от 500 долларов и выше. А теперь представьте, подобный телефон покупает состоятельный человек, который видит простенький интерфейс Metro без градиентов, округлостей, теней. Но состоятельный человек на метро не катается, зачем ему убогий интерфейс, если он привык к красивым блестящим машинам, ноутбукам, хрустальным бокалам и так далее. Красивые сайты в стиле Web 2.0 тоже еще не потеряли своей привлекательности. Сюда же можно добавить победное распространение HTML5 и CCS3, которые позволяют делать очень симпатичные вещи. На этом фоне интерфейс Windows Phone 7 выглядит шагом назад, а его функциональные возможности сравнимы с первыми моделями iPhone.
Таким образом, мой прогноз относительно будущего Windows Phone 7: в 2011 году будет полный провал по всем фронтам. Далее возможны варианты. Microsoft признает свое поражение и начнет кардинально улучшать систему. Либо компания упорно будет гнуть свою линию и делать косметические изменения, накапливая силы на другой проект, чтобы выстрелить в 2012 году.
Тем не менее, альянсу хочется пожелать удачи. Во-первых, это заставит шевелиться конкурентов, во-вторых у пользователя будет больше выбора, в-третьих, это просто интересно, что получится если скрестить ежа с колючей проволокой (шутка).