Hungry Mind , Blog about everything in IT - C#, Java, C++, .NET, Windows, WinAPI, ...

Показаны сообщения с ярлыком WTF. Показать все сообщения
Показаны сообщения с ярлыком WTF. Показать все сообщения

Misspelling

Portal 2 installer

SendKeys suck

Недавно пришлось поколупаться в исходном коде класса 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? Не удивительно, что во фреймворке столько говнокода, ведь студента видимо приняли.

Firefox is a PANDA!!!

Оказалось, Firefox - это не горящая лисица, а красная панда!

Red Panda

Wierd answer to standart question

Меня сегодня спросили, какие языки я знаю. Я ответил: английский и немного немецкий. А ожидалось, что в ответе будет присутствовать C#, C++, SQL. Вопрос: WTF with me? [:)]

Copy paste shame

Не думал, что можно настолько тупо копипастить.

Morshins'ka

У меня в машине в дверном отсеке лежит 2 бутылки Моршинской. Одна зеленая 0,5 литра и другая белая 0,75 литра (бутылочка с соской). Я заметил, что вода в зеленой бутылке замерзла, а в белой не замерзла при -7. Больше белую не пью!

Set caret to the beginning of EDIT control when focused

Как многим, наверное, известно, при получении фокуса элемент управления 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 находится в нажатом состоянии. Поэтому нужно делать проверку и не нажимать ее программно.

Too much exception detalization

В коде нашел:
catch (Exception ex)
{
   ...
   ex.Data.Add(ex, ex.Message);
   ...
}

if block and variable declaration

Известно, что С++ позволяет объявлять переменную в условии блока if:

if (SomeType st = SomeType(...)) {
   ...
}

Удивило, что использовать другой стиль инициализации невозможно:

if (SomeType st(...)) {
   ...
}

А почему?

Как получить загранпаспорт в Украине (с матами)

Посвящается всем, кто возжелал получить загранпаспорт...

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

Итак, организации, оказывающие помощь в получении заграничного паспорта прекратили свою деятельность. Спасибо тебе, Маша, что уговорила сделать нам загранки летом. Теперь единственный легальный способ получить этот документ - паспортный стол. Я не буду говорить о работниках паспортных столов, все и так знают, что это хамовитые лентяи, получающие наслаждение от сжигания нервов здорового населения. Расскажу, что придумало это уже не очень здоровое население...

Очередь. Она отражена в списке. Список поддерживается людьми, которые находятся в его начале. Активный размер списка - 500 и более человек. Каждый день в 18:30 выполняется перекличка по всему списку! Кого нет - вычеркивают. В помещение, понятное дело, пускают строго по списку.

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

Простите за ненормативную лексику, но это просто пиздец.

Google KAK

Firefox 2. Похоже, проблемы целлюлита, месячных и плохих зубов уже не актуальны. Google знает!

как заткнуть эту ебучую телегу

  • как завязать галстук
  • как разрушить свой моск
  • как похудеть
  • как встречать 2008 год
  • как убивали спартак
  • как правильно целоваться

Еще раз эту строку кто-то закоментирует - руки оборву

вот нашёл в коде: )))
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;
Copyright 2007-2011 Chabster