Блог

ASCII символ под номером 307

Сейчас занимаюсь тем, что пишу код загрузки файлов из банка. Они прислали спецификацию, в которой написано, что файл должен быть в ASCII формате и разделителем колонок должен быть символ под номером 307. Если мне не изменяет память (а в данном случае она не должна изменять мне), то ASCII файлы байтовые и каждый символ может измеряться от полного нуля до 255. Я долго ломал голову, что же тогда может быть за символ под номером 307. Я попробовал ввести с клавиатуры код символа, но как бы не крутил, у меня получалась число 3, но ведь при вводе с клавы я получаю Unicode символ.

Нашел в спецификации пример файла и увидел, что этот символ должен выглядеть как С, но с загогулиной внизу - Ç. Полез на сайт с таблицей ASCII символов и нашел его там, но оказалось, что у него код 199. Непонятки капитальные. Нашел другую таблицу, там та же самая песня. И только в третей таблице, которую я нашел, я понял, что имел ввиду банк - 307 - это код в 8-ми ричной системе исчисления. Впервые вижу, чтобы в официальных документах коды символы обозначали 8-миричной системой. В основном 10 или 16.

Прятать подсвеченные строки

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

Вот я сижу сейчас перед двумя мониторами и на одном мониторе у меня открыт документ Excel, в котором список из 20 учетных записей нашей базы, а на другом мониторе у меня SQL Management Studio. Я иду по списку и проверяю с помощью SQL базу, что там случилось с этими учетными записями, что они немного некорретно отображают баланс. Когда я проверял первые три записи, все было нормально, но когда ты спускашеся в середину, то при переходе взгляда с SQL Management Studio на Excel я должен каждый раз искать нужную мне строку глазами, потому что какой-то кретин придумал прятать выделение.

Как узнать настройки Proxy

Мне понадобилось определить текущие настройки сети, и параметры прокси соединения, если они есть. Лезу в MSDN и вижу такой прекрасный пример:

// Create a new request to the mentioned URL.				
WebRequest myWebRequest=WebRequest.Create("http://www.contoso.com");

WebProxy myProxy=new WebProxy();
// Obtain the Proxy Prperty of the  Default browser.  
myProxy=(WebProxy)myWebRequest.Proxy;

У меня сразу же вкралось серьезное подозрение на счет работоспособности примера и компилировали ли его в Microsoft. Дело в том, что инициализировать переменную myProxy, и тут же перезаписывать ее не имеет смысла. Но это мелочи жизни, я решил попробовать его.

Уровень вложенности скобочек

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

Вот я образно накидал фигню, которую я видел:

foreach (MyMegaObject o in objects)
{
  if (o != null) 
  {
    foreach (Object1 n in o.GetNames())
    {
      if (s != null)
      {
         if (s != " Something ")
         {
           Действия
         }
      }
    }
  }
}

Приложения для андроида опасны

Когда я увидел новость о том, что тысячи приложений для андроида опасны, я сначала просто улыбнулся. Ну и что? Для этой платформы существует наверно миллионы приложений, она открыта и писать может кто угодно. Глупо представлять себе, что на этой платформе не будет мусора. И даже линуксовые корни не помогут, особенно против приложений, которые крадут информацию и прослушивают наши действия.

Но когда я начала читать новость полностью, я задумался (бывает такое иногда) над цифрами. Оказывается, анализировалось всего около 48 тысяч приложений. Просмотреть 50 тысяч программ и найти даже 1 вредоностных, это около 2 процентов и это наверно много.

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

Представление модель и контроллер

Те, кто программирует на C подобных языках больше склонны к тому, чтобы разделять представление модель и контроллер и это дает свои плоды при программировании больших проектов. Я видел достаточно много проектов и хочу показать одну ошибку, которую делают программисты ASP.NET. У ASP.NET есть громадное преимущество, потому что даже в языке по умолчанию контроллер уже отделен от представления. Контроллеры располагаются в cs файлах, а представления в aspx. Да, MVC круче, но сейчас остановимся на том, что есть по умолчанию и рассмотрим только этот вариант.

Однажды я видел проект, в котором было представление в виде aspx файлов, контроллеры в виде cs файлов, а так же отдельная библиотека контроллера и отдельная библиотека модели. Я не знаю зачем, но был создан промежуточный уровень контроллера, который выполнял роль передаста. В большинстве случаев, он банально представлял из себя ту же структуру, что и библиотека модели, с теми же классами, но при этом не обращался реально к данным. Все методы в классах библиотеки контроллера занимались передастизмом, а именно, просто получали на вход данные и банально передавали их модели.

Имеет ли смысл создавать библиотеки передасты без особого смысла? Я смысла не понял.

Будущее Java

Я говорил, что для развития какого-то продукта, ему нужен хозяин. У Java вновь появился хозяин и судя по агрессивным действиям Oracle (подали в суд на Google), они заинтересованы в java, и хотят зарабатывать на ней. Вот это как раз и страшно - они хотят зарабатывать на Java. Oracle зарабатывает на всем и им не интересны убыточные проекты. Так что я уже давно сказал, что Java - это труп и данное событие только доказывает, что это труп разлогающийся очень быстро.

После этого суда компании будут боятся использовать Java, потому что Oracle слишком влиятельная компания и очень богатая, чтобы судиться с ней. Да, Oracle не будет судиться с мелкими производителями, но как только она почувствует запах денег (как она сделала это в случае с Google), Oracle тут же будет зарабатывать их, даже через суд. Когда я узнал, что покупателем будет именно Oracle, я понял, что у Java нет шансов. Только IBM могли стать спасительной ниточкой, на которой еще можно было повисеть.

Непредсказуемый IIS

За год плотной работы с IIS (а я работаю с ним в среднем по 10 часов в день) я натерпелся его непредсказуемости, что уже ничему не удивляюсь. Сначала я понял, что iisreset фигня и практически не помогает в случаях с обновлением кода. Остановка и запуск процесса не помогает еще реже. Я начал сначала убивать процесс. Сервис построен так, что он автоматически стартует. Его убъешь, а он падла тут как тут и уже 3 мегабайта памяти.

Убийство aspnet_wp.exe реально спасает в 99,9 процентов случаев. Но был у меня тут случай, когда примитивный запрос из под IIS не работал. Мистическим образом, мой сценарий постоянно говорил, что индекс испорчен и не давал вставить запись в базу данных. Хотя тут же беру этот запрос и выполняю из под SQL Server Management Studio и он работает прекрасно.

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

Web программирование или класика

Недавно задали вопрос, что для меня лучше, Web программирование или программирование на C#. На самом деле для меня лучше программирование на C#. Но ведь для Web тоже можно писать на C#, по крайней мере логику, которая спрятана за кулисами сайта. А вот передний план приходится оформлять другими технологиями, такими как HTML, JavaScript, Silverlight, Flash и т.д.

Если сравнивать C# программирование для Web и классические десктоп приложения, то десктоп приложения мне нравятся конечно же больше. Там руки более развязаны и я могу делать все, что угодно. Когда делаешь сайт, то сильно ограничен браузером и его технологиями и системой безопасности. Когда пишешь простые вещи, то это еще нормально, но когда пишешь что-то серьезное и крупное, то это бесит.

Задолбала разница в браузерах

Реально задолбала разница в браузерах. Сегодня выяснил, что IE не передает referer, если изменять текущую страницу с помощью JavaScript (document.location = 'http://www.funniestworld.com' - не передаст ). Какого уродства он это делает, я понятия не имею. Выход банален, устанавливаем a тег с id и с name, ищем его по имени или id, изменяем href на нужный и программно кликаем. Долбанутый хак, но что делать:

<a id="redirecturl" style="display:none;" />

<script>
 document.getElementById('redirecturl').href= нужный url; 
 document.getElementById('redirecturl').click();
</script>

Теперь ie передает referer, но счастье длиться не долго. Падла FF не содержит функции click у тега a.

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне