суббота, 15 февраля 2014 г.

Access a local server on Android Emulator

The address 127.0.0.1 (localhost) on your development machine corresponds to the emulator's own loopback interface. If you want to access services running on your development machine's loopback interface (a.k.a. 127.0.0.1 on your machine), you should use the special address 10.0.2.2 instead.

четверг, 16 августа 2012 г.

NET C# - byte[] to string, string to byte[]

Если мы работаем, например, с кодировкой ASCII, то для таких преобразований нам понадобится абстрактный класс Encoding расположенный в пространстве имен System.Text.

Пример 1:
byte[] helloWord = new byte[] { 72, 101, 108, 108, 111, 33 };
Console.WriteLine(Encoding.ASCII.GetString(helloWord)); // -> Привет

Пример 2:
string helloWord = "Hello!";
byte[] helloWordBytes = Encoding.ASCII.GetBytes(helloWord);
helloWordBytes.ToList().ForEach(n => Console.WriteLine(n)); // -> 72 101 108 108 111 33

Путаница с host файлом в 64-ех разрядной системе


В повседневной жизни довольно часто приходиться править hosts файл. И все мы прекрасно осведомлены, что его месторасположение всегда находилось, находится и будет находиться (возможно) по следующему пути %systemroot%\system32\drivers\etc. Все прекрасно если дело касается 32-ух битных систем. Но если у вас 64-ех битная система (Vista, Windows 7), то тут возникает одна проблема. Дело в том, что в %systemroot% существует две папки system32: System32 и SysWOW64. В какой же из них будет находится "нужный" нам hosts? Быть может их и вовсе два, и какой же нам нужен? На самом деле, hosts файл существует только в одном единственном экземпляре и находится он всегда в папке System32. Стоп, а как насчет SysWOW64? Ведь по логике это должка быть 64-ех битная версия изначальной System32? На самом то деле, именно в папке System32 и находятся 64-ех битные версии исполняемых файлов! Таким образом название папки не изменилось для 64-ех битных систем. Это сделано специально для обратной совместимости. И да, в SysWOW64 находятся 32-ух битные версии исполняемых файлов (при запуске 32-ух битных приложений WoW64 перенаправляет их в папку SysWOW64).

Итак мы разобрались где находится нужный нам hosts файл. Но как же его отредактировать? Дело в том, что я пользуюсь Total Commander'ом и в %systemroot%\system32\drivers я не могу найти папку etc в которой расположен hosts (даже при включенном показе скрытых файлов). Насколько я понял, это связано с тем что 32-ух битные версии программ не могут видеть 64-ех битных "товарищей". Для Total Commander'а это решается просто. В нижнюю строку вводим %Windir%\System32\drivers\etc и оказываемся в папке с нужным нам файлом. Если не хочется вводить путь можно вручную "дойти" до папки drivers и затем ввести "cd etc".

Чтобы hosts сразу отредактировать в notepad или notepad++: нажимаем CTRL-O, вводим уже знакомый нам путь %Windir%\System32\drivers\etc и открываем файл.

PS Обратите внимание, что  %systemroot% и %Windir% указывают на C:\Windows. Можно проверить через консоль.

воскресенье, 5 августа 2012 г.

.NET C# - Особенность модификатора readonly

Каждому известно, что инициализация readonly полей класса может осуществляться только при помощи инициализатора поля или же в конструкторе.
class Person
{
    private readonly int _age;

    public Person()
    {
        _age = 10;
    }
}
А что если нам надо провести инициализацию например в каком-нибудь методе класса и вызвать его из конструктора? Например так
class Person
{
    private readonly int _age;

    public Person()
    {
        Init();
    }

    private void Init()
    {
        _age = 10;
    }
}
Компилятор нам этого сделать не позволит. Выход из данной ситуации есть и состоит он в применении ref и out модификаторов.
class Person
{
    private readonly int _age;

    public Person()
    {
        Init(out _age);
    }

    // Применяем out но можно и ref
    private void Init(out int age)
    {
        age = 10;
    }

}
И это сработает! На этот раз компилятор ругаться не будет. Вот такой вот небольшой обходной путь при инициализации readonly полей из методов класса.

среда, 1 августа 2012 г.

Переменные среды в Windows

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

пятница, 13 июля 2012 г.

Android - Gmail login failed

Недавно появилась проблема с логином на электронную почту на моем Андроид устройстве. После ввода стопроцентно-правильного пароля, приложение мне сообщало что-то наподобие этого "You have entered the wrong password or that your account has changed". В общем полный фуфел. В чем же суть?

Суть в том, что если у вас включена двух-этапная верификация аккаунта, то для мобильного телефона, пароль который подходит к почте, не подойдет к самому аппарату. Для него есть отдельный пароль, и называется он application-specific password. Вот ссылка для его получения.


среда, 6 июня 2012 г.

.NET C# - Typesafe Enum Pattern

Недавно понадобилось сделать перечисление со строками. Перечисления в .NET поддерживают только численные типы (byte, sbyte, short, ushort, int, uint, long, ulong) но к сожалению не поддерживают конструкцию типа
enum ImagePath : string
{
    BIcon = "Images/BIcon.jpg",
    PIcon = "Images/PIcon.jpg",
    GIcon = "Images/GIcon.jpg"
}
Но выход есть!