Misspelling

Недавно пришлось поколупаться в исходном коде класса
SendKeys
. Его отвратительное качество меня просто поразило.
Но самый больший ахуй случился когда я там наткнулся на следующий WTF:
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")] private static void LoadSendMethodFromConfig() { if (!sendMethod.HasValue) { sendMethod = SendMethodTypes.Default; try { // read SendKeys value from config file, not case sensitive string value = System.Configuration.ConfigurationManager.AppSettings.Get("SendKeys"); if (value.Equals("JournalHook", StringComparison.OrdinalIgnoreCase)) sendMethod = SendMethodTypes.JournalHook; else if (value.Equals("SendInput", StringComparison.OrdinalIgnoreCase)) sendMethod = SendMethodTypes.SendInput; } catch {} // ignore any exceptions to keep existing SendKeys behavior } }
Если в файле конфигурации приложения отсутствует настройка SendKeys
- value.Equals
вываливает NullReferenceException
, который
успешно тушится блоком catch {}
. Это пиздец, господа. Класс писал студент
в качестве тестового задания для Microsoft? Не удивительно, что во фреймворке столько
говнокода, ведь студента видимо приняли.
Меня сегодня спросили, какие языки я знаю. Я ответил: английский и немного немецкий. А ожидалось, что в ответе будет присутствовать C#, C++, SQL. Вопрос: WTF with me? [:)]
У меня в машине в дверном отсеке лежит 2 бутылки Моршинской. Одна зеленая 0,5 литра и другая белая 0,75 литра (бутылочка с соской). Я заметил, что вода в зеленой бутылке замерзла, а в белой не замерзла при -7. Больше белую не пью!
Как многим, наверное, известно, при получении фокуса элемент управления EDIT
выделяет весь текст и выполняет скроллиорвание таким образом, что на экране обязательно виден конец выделения. Если почитать внимательно документацию по сообщению EM_SETSEL
, можно сделать вывод, что это происходит по следующей причине: The control displays a flashing caret at the end position regardless of the relative values of start and end
. А что делать, если я хочу показать начало строки, а не ее конец? И зачем вообще по умолчанию показывать хвост длинной строки? Тем более, что убить это чертово умолчание
не так то просто...
Гугл, как обычно, ничего полезного в качестве решения не предложил. Везде написано, что это технически невозможно и т.д. А я для себя решение нашел.
// Set caret to the end, clear the selection Edit_SetSel(pFocusedWnd->m_hWnd, INT_MAX, INT_MAX); // Send Shift+Home or just Home if Shift is at pressed state INPUT inputs[4] = { 0 }; BOOST_FOREACH(INPUT &input, inputs) { input.type = INPUT_KEYBOARD; } // {SHIFT inputs[0].ki.wVk = VK_SHIFT; // {HOME inputs[1].ki.wVk = VK_HOME; // HOME} inputs[2].ki.wVk = VK_HOME; inputs[2].ki.dwFlags = KEYEVENTF_KEYUP; // SHIFT} inputs[3].ki.wVk = VK_SHIFT; inputs[3].ki.dwFlags = KEYEVENTF_KEYUP; bool shiftPressed = (GetKeyState(VK_SHIFT) < 0); SendInput(_countof(inputs) - int(shiftPressed) * 2, &inputs[int(shiftPressed)], sizeof(INPUT));
Этот код нужно выполнить сразу после получения элементом управления фокуса. Логика простая - переместить каретку в конец строки и выделить ее нажатием комбинации клавиш Shift+Home
. Только так можно выделить весь текст и поставить каретку в его начало! Здесь есть маленький нюанс - перемещение фокуса может осуществляться в обратном порядке и при этом клавиша Shift
находится в нажатом состоянии. Поэтому нужно делать проверку и не нажимать ее программно.
catch (Exception ex) { ... ex.Data.Add(ex, ex.Message); ... }
Известно, что С++ позволяет объявлять переменную в условии блока if
:
if (SomeType st = SomeType(...)) { ... }
Удивило, что использовать другой стиль инициализации невозможно:
if (SomeType st(...)) { ... }
А почему?
Посвящается всем, кто возжелал получить загранпаспорт...
Не перестаю поражаться повседневному долбоебизму в нашей замечательной стране. Все знают, что такое паспортный стол. Он всегда был полным пиздецом, а сейчас этот пиздец стал еще большим пиздецом.
Итак, организации, оказывающие помощь в получении заграничного паспорта прекратили свою деятельность. Спасибо тебе, Маша, что уговорила сделать нам загранки летом. Теперь единственный легальный способ получить этот документ - паспортный стол. Я не буду говорить о работниках паспортных столов, все и так знают, что это хамовитые лентяи, получающие наслаждение от сжигания нервов здорового населения. Расскажу, что придумало это уже не очень здоровое население...
Очередь. Она отражена в списке. Список поддерживается людьми, которые находятся в его начале. Активный размер списка - 500 и более человек. Каждый день в 18:30 выполняется перекличка по всему списку! Кого нет - вычеркивают. В помещение, понятное дело, пускают строго по списку.
Мне даже тяжело сказать, кого следует расстрелять в первую очередь - трудяг в паспортном столе или отчаянных людей, придумавших этот цирк.
Простите за ненормативную лексику, но это просто пиздец.
Firefox 2. Похоже, проблемы целлюлита, месячных и плохих зубов уже не актуальны. Google знает!
public DBEngine(String p_connectionString) { _connectionString = p_connectionString; _dbConnection = new SqlConnection(p_connectionString); _dbConnection.Open(); //Рябченко : Еще раз эту строку кто-то закоментирует - руки оборву CheckDatabaseVersion(); }
DBReportSchemeObject rptObj = new DBReportSchemeObject(); Random random = new Random(); rptObj.Id = random.Next() * -1; //--случайный отриц.айди нужен для грида связей, когда объекты ещё не сохранены rptObj.Ao_id = ao.Id; rptObj.Rs_id = data.Id; rptObj.AO = ao; rptObj.EntityState = DBEntity.State.New;