Еще когда появился Linq, я назвал эту технологию прикольной, но не рекомендовал к использованию. И я сам не использовал его вплоть до ноября прошлого года. В ноябре на работе дали небольшой проект, в котором мы не могли использовать внутренние наработки, потому что весь исходный код мы должны были передать клиенту и сайт хостится на стороне клиента.
Перед началом работы над сайтом я спросил парня, с которым мы делали сайт, что он хочет использовать и он предложил Entity Framework в связке с Linq, потому что он уже имел опыт работы с этими технологиями. Ну и фиг с ним, я учусь мега быстро, поэтому согласился. Ну что я могу сказать. . . , Microsoft уже придумало дофига различных технологий и фреймворков доступа к данным и поверьте мне, Entity Framework – не последний, потому что ничего особенного там нет, только неудобства.
Я с громадным шоком узнал, что операция .OrderBy(string) возможна далеко не всегда. У нас есть правило, что если мы строим какую-то таблицу данных на странице, то таблица должна сортироваться по любой колонке, которую захочет пользователь. Во внутренне корпоративном фреймворке это решается банально:
Писал запрос для банковской базы с классическими транзакциями кредита – дебита. Прибыл кредит, его можно потратить. Дебитовая транзакция связывается с кредитовой, чтобы было видно, какая кредитовая транзакция была потрачена. Запрос выглядит примерно так:
select credit.TxnID, credit.Expiry, debit.Transacted, debit.Amount from credit inner join creditdebit on . . . inner join debit on . . . where debit.Transacred > '2012.01.01' and debit.Transacted < ''2012.01.02
Меня просто невероятно бесят предупреждения во время компиляции. Я на работе задолбался уже подчищать предупреждения и просить не оставлять их в коде. Один парень регулярно объявляет неиспользуемые переменные и оставляет их, особенно в блоках try:
try { . . . . . . } catch (Exception e) { }
Сегодня написал метод, который выглядел примерно так:
public methodName(int id) { int i = id + 1; ... ... }
У меня программы зависают не так часто, и в большинстве случаев падаем ModoDevelop, XCode, MAMP или Word. Как видишь большинство из этого относится к программированию. О зависании Microsoft Word я уже писал, у него есть прямо болезнь какая-то при вставке текста. Я в Word очень часто пишу тексты для заметок, а потом с помощью Command+V расставляю теги типа <p>. Проблема в том, что при выполнении Command+V иногда Word зависает. Его убивать достаточно просто, достаточно нажать Option+Command+Esc (почти аналог Ctrl+Alt+Del), появляется окно выбора программы, выбираем Word и нажимаем Force Quit.
Среды разработки – ModoDevelop и XCode, просто падают. Они не зависают, а вылетают с ошибкой. Так что их убивать не приходится. Ну а MAMP иногда зависает при перезагрузке компьютера. Это бесит, потому что это останавливает процесс перезагрузки и никаких предупреждений. Просто перезагрузка не идет. В первый раз я начал методом тыка убивать программы и после того, как убил MAMP, перезагрузка пошла без проблем.
Как изменить параметр в Request в C#? Проблема в том, что MS сделала этот параметр только для чтения.
Интересно, а нафига Microsoft сделала параметры Request только для чтения. Вот реально не вижу смысла защищать их от изменения пользователям. В PHP перед выполнением сценария я могу пройтись по всем значениям $_GET, $_POST и $_COOKIES и экранировать их так, чтобы никакая зараза не проникла в мои сценарии.
У меня в каждом сценарии вызывается функции подключения к базе данных. В этой же функции я экранирую все, что может вызывать опасность. Например, $_GET параметры экранируются так:
foreach ($_GET as $inx => $val) { $_GET[$inx] = htmlspecialchars($_GET[$inx]); $_GET[$inx] = ini_get(magic_quotes_gpc)?$_GET[$inx]:addslashes($_GET[$inx]); }
Продолжаем читать бесплатные главы книги Transact-SQL в подлиннике:
Сейчас переделываю свои Windows сайты на Microsoft MVC и первым под раздачу попал www.canada-area.com. Вчера быстренько произвел миграцию кода под новый вид и немного изменил дизайн. Хотя нет, дизайн я изменил капитально. Сейчас сайт бегает и большинство работает, но над сайтом еще работаю. В ближайшие время придется заняться рефакторингом, потому что на данный момент в принципе у сайта код все тот же Web Forms, просто все это крутится на движке MVC. В общем работы еще дофига.
Но я не об этом хотел сегодня рассказать. Не знаю когда это произошло, но у меня сейчас на сервере две директории bin. У одно из них первая буква большая, а у другой маленькая, вот и вся разница. Самое интересное, удалить не могу ни одну из них. Хотя нет, директорию Bin удаляю, если остановить сайт, но сайт перестает работать, а вот bin (с маленькой b) удалить не могу даже тогда, когда сайт остановлен.
Содержимое директорий удаляется без проблем. Но самое интересное, что сайт работает корректно, только если в обе директории я закачаю файл Canada.dll – скомпилированный код сайта. Если я удалю этот файл хотя бы из одной из директорий, сайт падает. По ходу сервер использует обе из них. Кто-нибудь встречался с подобной фигней?
На работе делали говорящую каптчу. Ее код хранится в сессии (мне не нравится это, но так уж сделано). Когда народ кликает по ссылке проигрывания звука, происходит запрос на сервер, который загружает аудиофайл и проигрываем его в браузере. Все просто и все работает, пока мы не решили попробовать Safari.
В Safari для воспроизведения звука используется QuickTime и именно это чудо природы отправляет запрос на сервер. Причем он создает свою собственную сессию, поэтому сохраненные в сессии браузера данные прочитать не удается. Если уж создается отдельное приложение, то сессию могли бы хотя бы разделить, ведь QuickTime получается работает в контексте браузера.
Только что в комментариях к заметке Актуальный язык программирования увидел следующую кучку вопросов: А как насчёт Питона?? Разве не хакерский язык?? Или у тебя на него идиосинкразия?? Почему?? . Решил вынести в отдельную тему, потому что тут есть что сказать, и возможно кому-то пообсуждать. Этот комментарий был к заметке про актуальный язык программирования и видимо его автор не понял меня или я плохо высказывался в заметке.
Никакой реакции на питон у меня нет. Просто у меня есть PHP и C#, с помощью которых я могу делать все, что мне нужно. Переходить на питон или какой-то другой язык только потому, что где-то написано, что он круче, не собираюсь. Не язык красит программиста, а программист красит язык. Во как офигенно сказанул. От того, что кто-то пишет на супер пупер языке, супер пупер программистами они не становятся.