www.blogspot.com
white-knight-is-alive
Заметки Белого Рыцаря
1	http://feedproxy.google.com/~r/white-knight-is-alive/~3/gz-ozToy09k/blog-post.html	Цитата: Купер	2013-08-23T18:11:35.271+04:00	tag: цитаты endoftag tag: программирование endoftag tag: ссылки endoftag tag: юзабилити endoftag 	 Примечательная статья на Хабре про то, как дети не умеют пользоваться компьютерами, и про то, что это (почему-то) должно нас беспокоить. Это крик души человека, которого достали тупые пользователи, не умеющие настроить браузер для работы через прокси-сервер, а он один тут в белой тунике стоит. Напоминает анекдот про сантехника &mdash; "Учись! А то так и будешь всю жизнь ключи подавать." Всё бы ничего, да только комментарии и количество народа, заплюсовавшего статью, наводят на мысли о том, что автор далеко не одинок, и да! в этом мире полно людей, желающих сделать мир лучше... Ну что ж, удачи им всем! Главное &mdash; не бояться тунику запачкать. Программисты вовсе не злодеи. Они много работают, чтобы сделать свои программы легкими в использовании. К сожалению, судят они по себе, так что программы получаются легкими в использовании лишь для других разработчиков программного обеспечения, но не для обычных людей. Алан Купер, "Психбольница в руках пациентов"  
2	http://feedproxy.google.com/~r/white-knight-is-alive/~3/ejJfAvU7Pb8/ubuntu-virtualbox.html	Оптимизация Ubuntu под VirtualBox	2013-08-14T15:13:28.619+04:00	tag: ссылки endoftag tag: virtualbox endoftag tag: ubuntu endoftag 	 Статья на askubuntu.com о том, как повысить производительность Ubuntu при работе в VirtualBox.  How to improve performance of VirtualBox when UNITY_LOW_GFX_MODE is not working?  
3	http://feedproxy.google.com/~r/white-knight-is-alive/~3/eljoQpm09QQ/c11.html	Десять очень полезных возможностей C++11	2013-06-11T13:29:21.073+04:00	tag: программирование endoftag tag: ссылки endoftag tag: C/C++ endoftag 	 Хорошая статья на Хабре: Десять возможностей C++11, которые должен использовать каждый C++ разработчик. Название, правда, слегка преувеличенное, хотя менее полезной статья от этого не становится. В статье обсуждаются такие возможности как:  auto nullptr range-based циклы override и final строго-типизированный enum интеллектуальные указатели лямбды non-member begin() и end() static_assert и классы свойств семантика перемещения  Сам лично я стал постоянно иcпользовать auto, лямбды, static_assert и begin/end. Скажу честно, не понимаю, как жил без них раньше. 
4	http://feedproxy.google.com/~r/white-knight-is-alive/~3/j8I9x59Utng/rpiownerscounter.html	++RPi_Owners_Counter	2013-04-03T09:06:51.972+04:00	tag: всякое разное endoftag tag: xbmc endoftag tag: raspberry pi endoftag 	Ну вот, и я стал одним из счастливых обладателей маленького компьютера с малинкой. Ждать пришлось долго, и я уже даже начал терять надежду, когда он (она/оно) всё-таки пришёл. Так что теперь радости моей нет конца :) Вот он, мой Raspberry Pi Model B 512MB:     В фирменном глянцевом чёрном корпусе он смотрится очень круто:   Я специально заказывал Raspberry Pi, чтобы сделать из него медиаплеер. Уже установил на него OpenELEC с помощью BerryBoot. Смотрю фильмы и фотографии, слушаю музыку... :)  Из минусов - мой Toshiba Regza отказался работать с библиотекой libCEC, максимум, что позволяет - это включать себя и автоматически переключаться на вход HDMI при включении Raspberry Pi. Но я особо не горюю, потому что для Android и iOS есть классные приложения XBMC Official Remote, у которых функциональность получше будет, чем у обычного пульта ДУ от телевизора.  Откорректировал свои наполеоновские планы по захвату мира - собираюсь адаптировать свое приложение Вконтакте, чтобы интегрировать его в XBMC как обычный плагин. Откуда теперь взять свободное время, вот вопрос?  ЗЫ. Про credit-card-size - это, конечно, враньё. Чуть побольше будет. ЗЫ2. Кстати, сразу профит. С первого апреля провайдер dom.ru перестал транслировать телеканал Дождь по своим кабельным сетям. А для XBMC есть плагин, который тянет канал из интернета - у меня в телевизоре Дождь всё ещё идёт.
5	http://feedproxy.google.com/~r/white-knight-is-alive/~3/d56yJ2P6BQk/string-similarity.html	String Similarity	2012-06-06T15:21:38.209+04:00	tag: программирование endoftag tag: задачи endoftag tag: алгоритмы endoftag 	Очень долго долбался с задачей "String Similarity" с сайта InterviewStreet. И так, и эдак ковырял, но удавалось уложиться только в 8 тестов из 10.   А на самом деле оказалось, что нужно просто применить Z-функцию. Мда, пошел читать букварь... Кстати, не могу найти английское название Z-функции. Если кто знает, напишите, плз.  З.Ы. На Хабре можно почитать хороший разбор алгоритмов поиска подстрок.
6	http://feedproxy.google.com/~r/white-knight-is-alive/~3/XBY_6HkaDfo/blog-post_23.html	Цитата: Линдхольм	2012-04-23T21:07:01.134+04:00	tag: цитаты endoftag tag: юзабилити endoftag 	Взято отсюда. На языке оригинала цитата звучит лучше, чем в переводе, поэтому оставляю как есть.  Most companies (including web startups) are looking to “wow” with their products, when in reality what they should be looking for is an ‘of course’ reaction from their users. Christian Lindholm, Chief Innovation Officer at Fjord  В двух словах смысл следующий: хорошо спроектированный продукт в первую очередь должен вызывать у пользователя чувство, что он знает, как пользоваться  продуктом, а уже потом чувство восхищения формами.
7	http://feedproxy.google.com/~r/white-knight-is-alive/~3/g6qhI8zv7EA/visual-studio-googletest.html	Visual Studio и googletest	2012-04-17T14:31:11.835+04:00	tag: visual studio endoftag tag: тестирование endoftag tag: программирование endoftag tag: googletest endoftag 	В инете довольно много вопросов типа "как перенаправить вывод googletest с консоли в окно VS Output" от людей, которые пытаются подружить Visual Studio и googletest. Советы им дают самые разные, например, использовать PostBuildEvent или установить какой-нибудь плагин к Студии.  Хотя на мой взгляд самый удобный (гибкий, масштабируемый, переносимый) способ - это создать свою реализацию класса Printer и подключить её к фреймворку параллельно с остальными принтерами. Такой подход описан в примере №9 док-ции по GoogleTest Framework.  Сначала реализовать класс принтера, наследованный от EmptyTestEventListener:  // Provides alternative output mode which produces minimal amount of // information about tests. class TersePrinter : public EmptyTestEventListener {   void outDebugStringA (const char *format, ...)   {         va_list args;         va_start( args, format );         int len = _vscprintf( format, args ) + 1;         char *str = new char[len * sizeof(char)];         vsprintf(str, format, args );         OutputDebugStringA(str);         delete [] str;   }    // Called after all test activities have ended.   virtual void OnTestProgramEnd(const UnitTest&amp; unit_test) {     outDebugStringA("TEST %s\n", unit_test.Passed() ? "PASSED" : "FAILED");   }    // Called before a test starts.   virtual void OnTestStart(const TestInfo&amp; test_info) {     outDebugStringA(             "*** Test %s.%s starting.\n",             test_info.test_case_name(),             test_info.name());   }    // Called after a failed assertion or a SUCCEED() invocation.   virtual void OnTestPartResult(const TestPartResult&amp; test_part_result) {     outDebugStringA(             "%s in %s:%d\n%s\n",             test_part_result.failed() ? "*** Failure" : "Success",             test_part_result.file_name(),             test_part_result.line_number(),             test_part_result.summary());   }    // Called after a test ends.   virtual void OnTestEnd(const TestInfo&amp; test_info) {     outDebugStringA(             "*** Test %s.%s ending.\n",             test_info.test_case_name(),             test_info.name());   } };  // class TersePrinter   Теперь подключить к юнит тестам вместе с другими принтерами:  UnitTest& unit_test = *UnitTest::GetInstance(); TestEventListeners& listeners = unit_test.listeners(); listeners.Append(new TersePrinter);   Всё. Теперь результаты  будут выводиться без проблем и в окно Output, и в консоль, и куда-то еще, если подключены дополнительные принтеры. Формат вывода можно изменять по своему вкусу. Кроме этого, по клику в окне Output можно будет "прыгать" на код "свалившегося" теста.
8	http://feedproxy.google.com/~r/white-knight-is-alive/~3/NVFPF3Gtn2o/blog-post.html	Задачи на собеседованиях: оптимизация	2012-04-06T18:29:59.925+04:00	tag: оптимизация endoftag tag: задачи endoftag tag: собеседования endoftag 	Часто встречающаяся задача на оптимизацию.  Есть два шарика и небоскрёб в 100 этажей. Если бросать шарики из окон небоскрёба, то начиная с какого-то этажа они будут разбиваться вдребезги (и после этого разбившийся шарик уже нельзя будет использовать). Нужно предложить алгоритм, который поможет найти этот роковой этаж за оптимальное число итераций. Шарики не обязательно сохранять целыми к концу алгоритма.
9	http://feedproxy.google.com/~r/white-knight-is-alive/~3/96Fkw-gOr6w/mutex.html	Проблемы переносимости: mutex	2012-03-26T16:27:46.673+04:00	tag: программирование endoftag tag: posix endoftag tag: windows endoftag tag: mutex endoftag 	О проблемах переносимости приложений с использованием мьютексов. Мьютексы есть и в Windows и в POSIX, только работают они по-разному.   В Windows мьютексы позволяют выполнять рекурсивные локи из одного и того же потока без каких-либо deadlock'ов. В этом случае просто инкрементируется счетчик рекурсивных локов. Соответственно, чтобы освободить мьютекс для других потоков нужно будет столько же раз выполнить unlock(). Это их стандартное поведение, которое никак не изменить. Нужно просто учитывать это при дизайне алгоритмов приложения.  В POSIX мьютексы по-умолчанию не позволяют выполнять рекурсивные локи (т.е. второй вызов лока переведет поток в состояние ожидания), однако такое поведение может быть изменено путем изменения типа мьютекса. Возможно три варианта: 1) рекурсивные локи возможны (PTHREAD_MUTEX_RECURSIVE); 2) рекурсивные локи невозможны (PTHREAD_MUTEX_NORMAL); 3) режим errorcheck - рекурсивные локи невозможны, но вместо ожидания функция lock() возвращает ошибку (PTHREAD_MUTEX_ERRORCHECK).  Получается, что при необходимости портирования приложения с одной платформы на другую возможны некоторые проблемы. Например, при переходе с POSIX на Windows поведение PTHREAD_MUTEX_NORMAL невозможно, если не предусмотрено архитектурой. Как вариант, нужно будет заменить "родной" Windows-мьютекс на искусственный - можно использовать для этого семафор со значением 1, либо использовать какую-то стороннюю реализацию мьютекса, например из библиотеки Boost.
10	http://feedproxy.google.com/~r/white-knight-is-alive/~3/T4oOLqsJMus/blog-post_19.html	Цитата: Фридман	2012-03-19T22:21:00.379+04:00	tag: цитаты endoftag 	Девочки, когда мне было столько лет, сколько вам, мои родители говорили: "Том, доедай свой завтрак - люди в Китае и Индии умирают с голоду". А сегодня я говорю вам: "Девочки, доделывайте ваше домашнее задание &mdash; люди в Китае и Индии умирают от желания получить вашу работу". В современном Китае Билл Гейтс &mdash; это Бритни Спирс. В современной Америке Бритни Спирс &mdash; это Бритни Спирс. Вот, в чем наша проблема. Томас Фридман, "Плоский мир: краткая история XXI века"
11	http://feedproxy.google.com/~r/white-knight-is-alive/~3/TLldOli3Q0Q/valgrind-windows.html	Бесплатная альтернатива valgrind под Windows	2012-03-15T16:24:24.850+04:00	tag: valgrind endoftag tag: memcheck endoftag tag: программирование endoftag 	Бесплатная утилита с функциональностью memcheck &mdash; Dr.Memory. Я давно такую искал, наконец-то она появилась.  Работает под Windows и Linux. Запускается из консоли, довольно легко настраивается (например, на отсеивание ненужных срабатываний). Отслеживает утечки памяти, неправильное освобожение, чтение/запись в "неправильные" области и т.п.   При этом позиционируется как самый быстрый, уверяют, что обгоняет даже valgrind. Думаю, что коммерческим инструментам он всё же будет проигрывать, но пользоваться им вполне можно &mdash; пробовал сам под Windows, рекомендую.  Вообще хороший список таких альтернатив: http://stackoverflow.com/questions/413477/is-there-a-good-valgrind-substitute-for-windows
12	http://feedproxy.google.com/~r/white-knight-is-alive/~3/jIlniIimmrQ/blog-post.html	Шовинизм от Майкрософт	2012-04-26T16:15:21.673+04:00	tag: visual studio endoftag tag: грабли endoftag tag: VC++ endoftag 	Помню давным-давно в далекой далекой галактике в MS Visual C++ 6 был пункт меню "Generate Makefile", который делал возможным сборку C++-проектов без запуска IDE. Правда, Makefile использовал какие-то свои правила только частично похожие на обычные posixсовые, и вместо make был NMAKE. Но это мелочи. Недавно обнаружил, что MS на этом не остановилась. Сейчас в VC++ 2010 еще пока есть NMAKE, но пункта генерирования makefile уже нет. Если хочется использовать makefile, то его нужно писать руками. Если есть нужда автоматизировать сборку проектов, то нужно пользоваться утилитой msbuild, которая идет в комплекте .Net Framework. Отдельная утилита сбоки есть - и на том спасибо, как говорится. Да вот беда - чтобы собрать проект VC++ 7.0 при установленном .Net Framework 4, нужно либо открывать проект в IDE для конвертирования файла проекта в более новый формат, либо устанавливать более старый .Net Framework. Другого способа, кажется, нет. Учитывая "нововведения" в последних версиях MSVS, то IDE скоро будет нужен только для сборки проекта.  UPD. В дополнение к .Net Framework еще нужно установить Microsoft Windows SDK с выбранными ".NET Development"->"Tools", "Visual C++ compilers" и "Intellisense and Reference Assemblies". Иначе проекты Visual C++ 2010 собираться скорее всего не будут.
13	http://feedproxy.google.com/~r/white-knight-is-alive/~3/JS6ck0mRh7c/blog-post.html	Как получить системную строку форматирования времени	2011-12-26T18:31:54.416+04:00	tag: программирование endoftag 	Получение системной строки форматирования даты и/или времени:  В Linux:  char *nl_langinfo(nl_item item);  в параметре item задать значения D_T_FMT, D_FMT или T_FMT.  В Windows:  int GetLocaleInfo(   __in   LCID Locale,   __in   LCTYPE LCType,   __out  LPTSTR lpLCData,   __in   int cchData);  в параметре LCType задать значения LOCALE_SSHORTDATE, LOCALE_SSHORTDATE или LOCALE_SSHORTTIME.   P.S. Про кастомный парсер строки формата можно почитать здесь.
14	http://feedproxy.google.com/~r/white-knight-is-alive/~3/s73WU10sAss/code-c-find-sum-of-elements-in-array.html	Code @ C++: Find sum of elements in the array	2011-12-20T13:52:58.686+04:00	tag: задачи endoftag tag: яндекс endoftag tag: собеседования endoftag 	Code @ C++: Find sum of elements in the array: Наткнулся на задачу, которую предлагают в Yandex на собеседовании:  Ниже приведены три варианта суммирования чисел с плавающей точкой (предполагается, что числа в массиве только положительные)...
15	http://feedproxy.google.com/~r/white-knight-is-alive/~3/HCOlckMNYN0/gnome-classic-ubuntu-1110.html	Как вернуться к интерфейсу Gnome Classic в Ubuntu 11.10	2011-10-21T09:30:14.753+04:00	tag: ubuntu endoftag 	Новый интерфейс Ubuntu мне очень нравится, и он даже работает в режиме интеграции дисплея на VirtualBox. Но всё же на VirtualBox новый интерфейс подтормаживает, поэтому я вынужден вернуться на старый добрый Gnome Classic:  Установить пакет gnome-session-fallback: sudo apt-get install gnome-session-fallback Выйти из текущей сессии (log out) На экране ввода пароля нужно в Настройках выбрать тип оболочки Gnome Classic   Ввести пароль и выполнить вход. Теперь Ubuntu будет использовать Gnome Classic по умолчанию.  Источник: http://www.upubuntu.com/2011/10/how-to-use-gnome-classic-on-ubuntu-1110.html
16	http://feedproxy.google.com/~r/white-knight-is-alive/~3/9rcAylxjyX0/openssl-098.html	Выключение компрессии в OpenSSL 0.9.8	2011-09-19T11:59:00.596+04:00	tag: программирование endoftag tag: openssl endoftag tag: грабли endoftag 	В OpenSSL реализована встроенная поддержка zlib и по умолчанию включена компрессия пересылаемых пакетов данных. Причем при сжатии очередного пакета используется информация об уже сжатых и отосланых пакетах. Например, если вы отсылаете три одинаковых пакета по 400 байт, и первый пакет сжимается до 275 байт, то второй и третий пакеты в сжатом виде займут всего по 12 байт. Такой подход очень экономит трафик, но применим только к протоколу TLS, потому что он гарантирует доставку пакетов и сохраняет последовательность, в которой пакеты были отосланы. Понятно, что для протоколов с негарантированной доставкой такой подход к сжатию не может быть применён. Это подтверждает RFC 3749 "TLS Compression Methods", в котором написано следующее:  Some compression methods have the ability to maintain state/history    information when compressing and decompressing packet payloads.  The    compression history allows a higher compression ratio to be achieved    on a stream as compared to per-packet compression, but maintaining a    history across packets implies that a packet might contain data    needed to completely decompress data contained in a different packet.    History maintenance thus requires both a reliable link and sequenced    packet delivery.   Протокол DTLS, выбранный для нашего проекта, был разработан специально для UDP и не гарантирует доставку пакетов. Но большей частью он основан на TLS, и по идее реализация протокола DTLS должна учитывать требования RFC 3749.  К сожалению, в OpenSSL этот момент не учитывается и в DTLS сжатие используется точно также, как и в TLS. Совершенно очевидно, что при потере одного из пакетов вся передача будет нарушена, и даже если этот пакет придет позже, то восстановить исходную последовательность принимающая сторона уже не сможет. Такой неприятный момент должен решаться простым отключением компрессии при использовании DTLS, однако в OpenSSL 0.9.8 это превращается в проблему, потому что в API просто нет функции отключающей компрессию. Вот цитата из документации на метод SSL_COMP_add_compression_method:  An OpenSSL server will match the identifiers listed by a client against its own compression methods and will unconditionally activate compression when a matching identifier is found. There is no way to restrict the list of compression methods supported on a per connection basis.    Начиная с OpenSSL 1.0.0 добавлена опция SSL_OP_NO_COMPRESSION, которая делает то, что мне нужно, но в версии 0.9.8 ее нет. В поисках решения я порылся в сети, но ничего внятного, кроме вот этого не нашел: void disable_openssl_compression() {   STACK_OF(SSL_COMP)* comp_methods = SSL_COMP_get_compression_methods();   sk_SSL_COMP_zero(comp_methods); } Этот хак помогает решить проблему с отключением компрессии, но приносит другую &mdash; утечку памяти. Пользоваться таким сомнительным методом не нужно.  Между тем, изучив исходный код OpenSSL, я обнаружил, что информация о доступных компрессорах хранится в простом списке, в который можно добавлять свои компрессоры с помощью функции SSL_COMP_add_compression_method. А раз можно добавлять, то значит должен быть способ и удалять элементы списка. Такой функции в OpenSSL API нет, но после изучения исходников функции SSL_COMP_add_compression_method можно написать свою, не пользуясь хаками, а только предоставленным API: void disable_openssl_compression (void) {   int n = sk_SSL_COMP_num(SSL_COMP_get_compression_methods());   for (int j = 0; j    {     SSL_COMP *comp = sk_SSL_COMP_pop(SSL_COMP_get_compression_methods());     OPENSSL_free(comp);   } }
17	http://feedproxy.google.com/~r/white-knight-is-alive/~3/m_OgFj618Mk/securityerror-flex-3.html	Этот загадочный SecurityError (Flex 3)	2011-09-12T09:57:00.624+04:00	tag: flex endoftag tag: программирование endoftag tag: грабли endoftag 	После очередной порции изменений моё Flash-приложение, загруженное на сервер, перестало работать. То есть не совсем перестало, потому что по click-событиям выполнялось то, что нужно, но визуальные элементы вообще перестали хоть как-то отображаться &mdash; кнопки не хайлайтились, текст не скроллился, картинки не отображались... Сложилось такое ощущение, что перестали обрабатываться сообщения, отвечающие за отображение компонентов.   Из-за того, что часть приложения продолжала функционировать, я даже не сразу заметил проблему. При этом локально всё замечательно продолжало работать. Я довольно долго тупил, думая, что это проблемы совместимости установленных Flash-плееров в браузерах и в системе. Но через какое-то время понял, что такое различие в поведении локального приложения и приложения на сервере может вызвать SecurityError. Только где? (Тут я в очередной раз порадовался своей привычке делать маленькие, логически законченные коммиты. Локализовывать баг при таком подходе одно удовольствие и всего лишь вопрос времени.)  Причина обнаружилась в установленном smoothBitmapContent="true" для одного из тегов mx:Image.  Так как картинка для тега загружалась не с сервера приложения, то контент по определению считался небезопасным. Доступ к битовым данным в этом случае вызовет SecurityError, а smoothBitmapContent="true" как раз требует такого доступа. Это изменение попало в репозиторий совершенно случайно, в результате неудавшихся экспериментов, но оказалось фатальным для приложения.   Для меня остается загадкой, почему SecurityError вызвал именно такое поведение, когда одна половина приложения работает, а другая половина &mdash; нет.
18	http://feedproxy.google.com/~r/white-knight-is-alive/~3/-BUmWCShL4A/dtls.html	Выбор реализации DTLS	2011-09-05T11:56:36.790+04:00	tag: безопасность endoftag 	Как мне удалось выяснить, использование протокола DTLS для защиты UDP трафика требует минимальных трудозатрат при максимальной эффективности. К тому же еще и является платформонезависимым. В общем, встал вопрос о выборе существующей реализации этого протокола для использования в проекте.   К сожалению, удалось найти только три библиотеки, поддерживающие DTLS, и это при том, что протокол TSL, предназначенный для TCP, поддерживают около десятка некоммерческих библиотек, не говоря уже о коммерческих реализациях. Но как бы там ни было, выбирать приходится из того, что есть.   CyaSSL. С момента появления поддержки DTLS в библиотеке CyaSSL прошло уже два с половиной года, но текущая версия (2.0.0 RC2) поддерживает DTLS всё ещё в экспериментальном режиме, а значит CyaSSL не может быть рассмотрена как постоянное решение для более-менее серьёзных продуктов. OpenSSL. Несмотря на то, что стандарт DTLS был опубликован в 2006 году, поддержка этого протокола в OpenSSL появилась ещё в  версии 0.9.8 (2005 год). Версия 0.9.8 входит во многие дистрибутивы Linux, много раз фиксилась, и по всей видимости является стабильной. Хотя и имеет довольно уродский API. GnuTLS. Поддерживает DTLS начиная с версии 3.0.0, вышедшей в марте 2011 года. К сожалению, я не нашел дистрибутива Linux, в который была бы включена эта версия GnuTLS. Более того, похоже, что прежде, чем она будет куда-то включена, пройдет немало времени. Например, в последнюю версию Ubuntu (11.04) включена GnuTLS 2.8.6, а в будущей Ubuntu 11.10, будет использоваться GnuTLS 2.10.5. Когда будет поддержка 3.0.0 &mdash; неизвестно. Многие скажут, мол, собрать библиотеку из исходников не представляет никаких проблем, но на деле GnuTLS тянет за собой ряд библиотек, для которых также нет нативной поддержки в существующих дистрибутивах Linux, а значит они тоже должны быть собраны самостоятельно со всеми вытекающими. Дело вкуса.   Что касается переносимости, то OpenSSL и CyaSSL поддерживают Win/Linux/Mac, GnuTLS поддерживет Windows и "most Unix platforms", поэтому проблем с переходом на другую платформу быть не должно.  Как это не печально, выбор очевиден (по крайней мере для меня) &mdash; OpenSSL является самой стабильной и широко распространенной реализацией DTLS, с использованием этой реализации не должно возникнуть серьёзных проблем. Хотя лично я предпочел бы интерфейс GnuTLS, он какой-то более уютный что ли...
19	http://feedproxy.google.com/~r/white-knight-is-alive/~3/YKBm6LM7vNs/blog-post_25.html	Наши герои	2011-08-25T16:07:29.174+04:00	tag: программирование endoftag tag: C/C++ endoftag 	Мейерс, Александреску и Саттер дают интервью Channel 9. Рассуждают на тему C++, D, международных стандартов и вообще о программировании.  ЗЫ. Что-то я не смог вставить сюда HTML5, так что вот iframe.  
20	http://feedproxy.google.com/~r/white-knight-is-alive/~3/wkw_ne9B820/udp.html	Безопасность UDP трафика	2011-08-23T11:00:27.311+04:00	tag: безопасность endoftag 	Столкнулся с проблемой защиты UDP трафика в приложении. Оказалось, что  вариантов не так уж много.  1) Ipsec. Не нужно делать никаких изменений в коде. Вся настройка происходит на уровне операционой системы и маршрутизаторов. Недостатки: Вероятные проблемы с установкой и настройкой IPsec в системе. Нужен админ, который бы всё время администрировал IPsec на обоих концах. Кроме этого, IPsec скорее всего не пройдет через NAT-шлюзы.  2) DTLS. Не зависит от настроек операционной системы, только от возможностей приложения на обоих концах соединения. Недостатки: Работает на уровне приложения, а значит придется делать изменения в коде. Существующие реализации можно пересчитать по пальцам одной руки.  3) Сделать защиту самостоятельно. Достоинств почти нет, недостатки - изобретение велосипеда со всеми вытекающими.
21	http://feedproxy.google.com/~r/white-knight-is-alive/~3/rYKcZ2cuFBs/blog-post_13.html	Саттер рапортует: Стандарт одобрен!	2011-08-13T12:05:50.599+04:00	tag: C/C++ endoftag 	Как сообщил Саттер новый Стандарт C++ был принят единогласно, и теперь он является полноценным Международным Стандартом. Если никаких проволочек не будет, мы имеем все шансы до конца года получить C++11. Ура, товарищи! :)
22	http://feedproxy.google.com/~r/white-knight-is-alive/~3/BVhjGogWAlU/blog-post.html	Цитаты: Берра	2011-08-08T15:29:00.656+04:00	tag: цитаты endoftag 	В теории нет различия между теорией и практикой. На практике есть.Йоги Берра
23	http://feedproxy.google.com/~r/white-knight-is-alive/~3/3T2HM3PbnSY/m4.html	M4. Дорога на юг. Два года спустя.	2011-07-29T12:35:21.683+04:00	tag: всякое разное endoftag 	За прошедшие два года стало лучше. Трассу всё еще ремонтируют, но во многих местах она теперь шире и ровнее. Если будут продолжать в том же духе к 14-му году реально сделают. Главное, чтобы то, что уже сделали, не развалилось.  ДПСники продолжают апгрейдиться, как сказал один ДПСник, "они теперь умные стали", имея в виду радары :) Радары теперь умеют стрелять в спину, устанавливаются обычно ЗА знаками ограничения скорости. Поэтому въезжая под знак 70 со скоростью 130, нужно помнить, что за спиной может быть радар, а километров через 10 вас встретит ДПС с фотографией вашего заднего номера.  Однако две настоящие ж..ы на трассе всё же есть. Одна между Воронежем и платной трассой. Там идет ремонт дороги длиной километров в десять. Соответственно, пробка. Некоторые счастливцы еще умудряются устраивать в ней ДТП, чем только усугубляют.   Вторая - всё там же, в Ельце. Ее можно объехать, проехав через город: красным - дорога через город на юг; синим - дорога через город на север; зеленым - объездная "федералка", на которой всё время пробка. (взято отсюда) Как я понял, строят новую объездную, но что-то они там задерживают. То есть дорога вроде есть, но она перекрыта, хотя ее должны были сдать прошлой осенью.  Или можно ехать ночью - скорее всего этих пробок не будет. Зато могут быть другие. Вот от таких случаев никто не застрахован, а их на трассе, к сожалению, хватает:  ЗЫ. Если кто из Питера/в Питер едет, то регулярный коллапс на Лениградке можно объехать по А108 (Клин-Серпухов). Там дорога узкая, но ровная. Это лучше, чем стоять в Химках. А если ехать в выходные дни, то там практически никого нет. Проверено на себе.
24	http://feedproxy.google.com/~r/white-knight-is-alive/~3/qONcd2GOhOw/autodesk.html	Интересно в Autodesk'е девки пляшут	2011-04-11T15:57:16.674+04:00	tag: всякое разное endoftag 	Предыстория такая: На человека завели уголовное дело по ст.146 ч.3 УК РФ за то, что он установил нелицензионную версию Austodesk Alias Design (стоимость одной лицензии около 300 тыс. руб.). Пока собирали информацию для защиты выяснилось, что Alias Design (и многие другие программы Autodesk'а) можно скачать бесплатно прямо с сайта Autodesk'а &mdash; либо демо-версию, либо, зарегистрировавшись как студент, полнофукциональную с лицензией на три года. На этом они сейчас и пытаются построить защиту. Лично я к этому человеку никакого отношения не имею, но за развитием событий слежу. И вот как события развиваются (цитата отсюда): "...Я послала запрос в российское представительсво Аутодеск на тему: можно ли с их сайта скачать демо или даже лицензию для домашнего использования. На след день перезвонил молодой человек, сказал , что нет, нельзя. Что можно обратиться к их дистрибьютору, взять у него демку, а если понравится прога, купить у них же. Я спрашиваю: как же так, что в русской, что в английской версии сайта, можно , пройдя регистрацию в студенческом сообществе, скачать демку+лицензию на 3 года . Он долго мял яйца, в итоге признался и ...готовимся...просил никому не говорить !!! В объяснительной следствию представитель компании написал, что есть студенческая версия, есть лицензионная!, есть демо-лицензия. Но их нельзя скачать с сайта!..."   Цитата с www.internet-law.ruВиноват-не виноват человек &mdash; не суть. Я не понимаю, как можно официально ответить "нельзя", если официально можно. Вот, можно скачать прямо отсюда: http://www.autodesk.ru/adsk/servlet/download/item?siteID=871736&amp;id=14851256. Это такая недокументированная возможность сайта по скачиванию продуктов? Или еще хуже &mdash; "дыра"?  Получается, что Autodesk своих потенциальных пользователей просто подставляет &mdash; любезно предлагает скачать свои продукты, а потом, когда дело доходит до драки, проще сказать "мы тут не причем". А в суде никто не будет лезть в интернеты, там будут читать бумажки. Грубо говоря, при таком подходе любой скачавший с их сайта демку или студент-продукт, автоматически попадает под ст.272 "Неправомерный доступ к информации" и под ст.146 "Нарушение авторских прав". Интересно, это такой продуманный ход или просто в русском Autodesk'е кто-то плохо выполняет свои обязанности?
25	http://feedproxy.google.com/~r/white-knight-is-alive/~3/w3shuDw2NHA/gcc-460.html	Вышел GCC 4.6.0	2011-04-07T10:40:14.853+04:00	tag: gcc endoftag 	Вышел первый стабильный резиз GCC 4.6.  Помимо улучшений в оптимизаторе еще примечательны следующие изменения: Появилась поддержка языка Go Появилать новая опция предупреждений -Wsuggest-attribute, которая сообщает, что добавление к функциям атрибутов pure, const или noreturn может улучшить кодогенерацию Новая прагма #pragma GCC diagnostic упрощает управление предупреждениями компилятора прямо из кода Ну и в случае, когда какой-то идентификатор не найден в коде, g++ теперь предлагает свои варианты, которые на его взгляд кажутся наиболее подходяшимиПолный список изменений и нововведений можно почитать здесь: http://gcc.gnu.org/gcc-4.6/changes.html
