26 дек. 2011 г.

Очередные перлы работодателей

Вот. Пришла рассылка от work.com.ua. И еще одна потрясающая вакансия "Программист по Delfi, С++" для "Требуеться програмист для написания макроса для программы The Bat.". Прошу заметить - объявление от бюро переводов.

23 дек. 2011 г.

Перлы из спама

Пришло сегодня рекламное письмецо. Правда гугель его не отфильтровал, но предполагаю для того лишь, чтобы читатель улыбнулся лишний раз.
Сообщение от АН "Альфа Нерухом" ("Альфа Недвижим" по-русски). Предлагают заглянуть на свой сайт an-alfa.at.ua. Зашел на их сайт только из любопытства - что же там за АНАЛфа творится!? Сайт более напоминает содержимое того же АНАЛфа, но домен порадовал.

13 дек. 2011 г.

GIMP. Продолжение

С удивлением узнал, что GIMP имеет версии старше 2.6. Но на сайте ссылку для скачивания так и не нашел. Точнее, там есть ссылка на версию 2.7.4 в исходниках. Но для Windows есть только 2.6 stable. Ан оказывается, что энтузиасты собирают новые версии GIMP и для Windows. Они не официальные, но по внешнему виду и не отличишь. Вот тут имеется свежая - 2.7.4 - версия для Windows. Там же есть и portable-сборка.

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

26 нояб. 2011 г.

Coffee Owl

Ай как актуально! :)))))

4 нояб. 2011 г.

Религия

Вот. Картиночка на тему религий.

3 нояб. 2011 г.

Мысль

При рассмотрении предложений работодателей (в частности айтишных компаний) у нас, как у рядовых сотрудников есть довольно уникальный шанс получения обьективной информации о возможном работодателе - прошедший (верю и надеюсь) кризис показал кто как себя повел в критической ситуации. Кто-то сокращал рабочие места, кто-то урезал зарплату. Кто-то пытался компенсировать трудности какими-то бонусами. И эта информация дает нам возможность строить свои ожидания и планировать взаимоотношение с работодателем.
Еще одно докозательство того, что чем больше инь, тем бльше ян. Если судьба приподносит тебе лимон, сделай из него лимонад!

24 окт. 2011 г.

Апплет управления Java отсутствует в Control Panel Windows x64

После установки Java 1.6 решил проконтролировать процесс установки автообновлений. На сайте написано, что корректировка свойств Java должна производиться через апплет панели управения системы. Но в Control Panel я этого апплета не нашел. Поиск по инету сазал, что не я один задался этим вопросом. Бага была замечена еще в 2008 году и до сих пор не пофикшена. Воспроизводится на 64-разрядных Windows-системах.
Однако решение есть. Панель управления Java открывается с помощью файлика
"c:\Program Files (x86)\Java\jre6\bin\javacpl.exe"

14 окт. 2011 г.

Держалка для чтения книг

По-моему очень удачное и полезное изобретение.

5 окт. 2011 г.

Очередной online-конвертер документации

Возникла необходимость сконвертировать под макосью DJVU в PDF. Ставить ради двух файликов отдельную софтину для просмотра DJVU не хотелось. Недолгие поиски привели к онлайн-конвертору всего-во-всё DocsPal. Сервис прост, удобен и кросплатформенен. Рекомендую.

UPD: Сегодня конвертнул через этот сервис доковский файл со вставленными уравнениями от MS Equation. Сконвертировал!

17 сент. 2011 г.

Маленький бадабум :)

В копилку бадабумов. Маленький такой.

Objectice C. iOS. Cчитать содержимое текстового файла из ресурсов

Понадобилось считать содержимое текстового файла из ресурсов в проекта для iOS. 2 дня потратил. Весь интернет полон примерами типа

NSString* filePath = [[NSBundle mainBundle] pathForResource: ofType:];
NSString *str = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:NULL];
[someView setText:str];


И, блин, ни одна свол... ни один автор не додумывается написать, что это не то, что XCode пишет в свойствах файла, помещенного в ресурсы. А на самом деле это расширение файла. То бишь, = @"readme", а = @"txt"! Ну кто бы мог подумать, что XCode не может сама разложить (хотя зачем ей это нужно?! - ума не приложу) имя файла на, собсна, имя и расширение.

Я зол.

25 авг. 2011 г.

Ловушка в C++

Вот, наткнулся на такую ловушку:

for (int i = array.getSize()-1; i >= 0; --i)
{
//do something
}


Такая конструкция в отличие от

for (int i = 0; i < array.getSize()-1; ++i)


позволяет не "дергать" постоянно массив на предмет его размера. Оптимизатор возможно запомнит это значение при первом обращении, но не факт.
Однако ежели вместо int i = 0; по неосмотрительности возникнет uint i = 0;, то цикл превратится в вечный. i никогда не станет меньше 0.

19 авг. 2011 г.

Очередной бадабум

Вот. В копилку бадабумов.

17 авг. 2011 г.

Шутка от Оперы

Обновил Opera. Зашел в "About". Только 1-ю букву дорисовал к tfo

5 авг. 2011 г.

ГуглоСловварь - аминь!

Вот такой холи щит случился только что... Вероломно, без объявления, без новостей взяли и закрыли Словарь Гугла. А я его пользовал по сто раз на дню.

Сразу мысль. А ведь с почтой и G+ может случиться ровно так же!

31 июл. 2011 г.

Apple. Опять Apple.

Это фотка конвертика из комплекта iPad. Отдельное ушко для скобочки, чтобы достать симку из девайса. Я - у захватi! Интересно, сколько они потратили на эту идею? И как же, блин, приятно, что такие мелочи продумывают, чтобы юзверю было удобно!
А ведь раньше такую булавку приходилось где-то класть так, чтобы ее никуда не смахнуть, не провалить, не погнуть...

14 июл. 2011 г.

Индусы

Если меня спросят за что я не люблю индусских программеров и почему у них такая большая текучка кадров, я дам ссылку на этот пост.
В частности - из-за вот этой выдержки из 10-строчного мануала по использованию C++ класса:


setValues(nProgName : int, nIntName : int, nInt : int) : void

The nInt is the parameter which contains the ID of which value selected for settings. It can be calsified as given below.
//0 High
//1 Hard


И такой стиль - во всех проектах. Слава Богу, что ни Торвальдс, ни авторы Posix-compatible операционок небыли индусами. Думаю, что Windows процентов на 90 писалась именно там.

12 июл. 2011 г.

Автообновления

Apple:
О! Окошко какое-то висит. Хм. Автообновления. Уже готово к установке. Ладно, ставься.

Windows:
О! Всё повисло. Шо такое? Ctrl-Shift-Esc. Pause. Ctrl-Shift-Esc. Pause. Ctrl-Shift-Esc. Ctrl-Shift-Esc. Ctrl-Shift-Esc. Ctrl-Alt-Delete. Бля. Click, click. Клац, бум. Ё! wuauclt.exe - 90% процессора жрет. Шо за нафиг? А! Это ж идет проверка автообновлений... Сорри. Пошел варить суп.

16 июн. 2011 г.

Типографика

В одном из журналов при чтении статьи обратил внимание на странность выбранной гарнитуры. Всмотрелся и понял в чем ошибка (или прихоть) шрифтового дизайнера. Выявил еще одно правило типографики (вообще-то их дофига и они особо не скрываются, но при повседневном использовании шрифтов как-то не задумываешься о том, что в наборах букв и цифирь тоже есть свои довольно жесткие правила): верхние выносные элементы строчных символов должны выноситься на высоту прописных (больших) символов.
Вот скрин со страницы журнала (предполагаю, что это гарнитура из семейства Garamond, хотя я такого варианта еще не встречал):


А вот тот же абзац, набранный старым добрым Times New Roman:


Сразу бросается в глаза различие по высоте выносных элементов строчных букв, стоящих рядом со прописными. Вот слово Classic из журнала:


А вот - Таймсом:


В первом случае буква l по высоте выше строчных, но ниже прописной C. Во втором варианте C и l имеют одинаковую высоту. И первый вариант сильно режет по глазам. Отвлекает от самого текста. А этого быть не должно.
Дальнейшее размышление о причине говорит о том, что нарушено одно из базовых правил дизайна вообще - "Обоснуй!". Высота верхнего выносного элемента строчного символа не обоснована. Она не имеет общей линии ни со строчными, ни с прописными символами. Глаз ожидает увидеть обоснование этой высоты и не может. И обижается.

5 июн. 2011 г.

iShashlik and Droidbeer от Provectus-IT

В субботу 04/06/2011 в офисе компании Provectus-IT прошла небольшая встреча разработчиков софта для платформ iOS и Android. Небольшая, потому что кворум был около 20 человек. Рассказали про несколько продуктов от i-Free, про различия в платформах с точки зрения разработчика, про разработку UI для этих платформ.

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

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

После официальной части на террасе был развернут шведский стол, таки-да с шашлыками и таки-да с пивом. Шашлык был очень хорош. Пиво я не пробовал.

В общем, впечатления приятные. Надеюсь встреча станет регулярной.

Приятно удивило, что при довольно небольшом офисе выделена площадка на террасе и помещение для теннисного стола на первом этаже. Конечно, это всё до тех пор, пока не начнется рост штата, но всё равно приятно.

Несколько фотографий со встречи.
iShashlik & Droidbeer

2 июн. 2011 г.

Девушки, аднака...

А теперь поговорим о девушках...


Генетика женская видать мзменяется постепенно.

Тормоза Windows по причине Hardware Interrupts

Намедни начались у меня на домашнем ноуте в винде дикие тормоза. Основные симптомы - дергание мыши, звука, загрузка системы в течение минут 10. Process Explorer показал, что виртуальный процесс Interrupts отжирает до 90% процессорного времени. Началась борьба с драйверами, устройствами, ошибками на диске, антивирусами... Ничего не помогло.
Причина оказалась проста. Контроллер жесткого диска с какой-то радости переключился в режим PIO вместо DMA. Вылечилось удалением устройства Primary IDE Channel и последующей перезагрузкой системы для обновления драйвера.
Хто бы знал?!

PS: На скриншоте - уже исправленный режим работы драйвера.

24 мая 2011 г.

Перст божий?

Вот такое с неба высветило... К чему бы это?

22 мая 2011 г.

You've been a bad, bad sysadmin!

Не удержалсо. Спёр на 9gag.com :)

21 мая 2011 г.

Побей HR-щика фейсом об тейбл

На сайтике небольшой рекрутинговой конторы Parallel HR на титульной страничке прикольная каруселька нарисована. Когда по ней водишь мышкой, фотографии сотрудников прикольно так переворачиваются, как буд-то бьются фейсом об тейбл. Пару приятных минут можно провести, гоняя мышкой по карусели и хлопая неизвестных дяденек и тётенек :)

16 мая 2011 г.

WinScreener обновился до верси 1.0.0.6


WinScreener обновился до верси 1.0.0.6. Основная добавка - параметры командной строки:
/noscrolls - скрыть полосы прокрутки при старте программы
/nobottoms - скрыть нижние контролы.

Кроме этого добавил в инсталляторе создание ярлыка для запуска приложения в компактном редиме.

12 мая 2011 г.

Освоение MacBook

Застал благоверную свою за изучением подозрительных материалов на маке.

10 мая 2011 г.

Android: Inception

Обнаружил первоисточник логотипа Андроида.


P.S: Мультик зовется "Веселый цыпленок"

9 мая 2011 г.

Apple: переходник с американской вилки на европейскую

Иногда появляются вещи (или решения), о которых я жалею, что не я придумал это. Или не увидел. Или не понял.
Появилась у мну возможность приобщиться к яблочной субкультуре в виде Macbook Pro. Однако эти архаровцы не додумались на ряду с русскими наклейками на клавиши (кстати, я не у верен, что там наклейки, а не трафаретные отверстия) положить в комплект переходник с американской розетки, представляющей собой два плоских штырька, переходник на европейско-советскую. Small investigation showed that we have several variants - можно купить простой переходник за 5 гривень (шото около 80 центов), навороченный унивесальный переходник за 12 гривень (около 1.5 у.е.), китайский яблочный переходник за 60 грн (около 7.5 у.е.) или фирменный - за 25 у.е. от самого Apple. И именно не я увидел, что удлинитель к блоку питания к этому самому яблоку одним из своих концов как 1.5 яблока напоминает старый советский шнур к бритвам, магнитофонам и еще Бог знает каким старым устройствам. Этим ясновидящим оказался Хрофт (дай пруфлинк, чтобы я поставил...). И, блин, работает же...
Воистину, все новое - хорошо забытое старое. И я забыл об этом!

4 мая 2011 г.

Nightmare Park Sourcecodes

Нашел исходники культовой игрули Nightmare Park :)

26 апр. 2011 г.

Злой на мелкософт

21 век на дворе.
4 ядра на процессоре.
4ГБ памяти.
x64 винда.

Что еще нужно, чтобы аутлук не вис на минуту-две при одиночном клике на аттачменте неизвестного ему типа перед тем как сообщить "This file cannot be previewed because there is no previewer installed for it"?!

22 апр. 2011 г.

Windows: установка новых шрифтов

Як ото кажуть москалi: "Я хренею, дорогая редакция!" Диалог установки шрифтов в Windows победно шествует из Windows 3.1 до, как минимум, Windows Vista. Семерки нет под рукой, чтобы проверить, но предполагаю, что там история та же. За сто тыш мильёнов лет корпорация не удосужилась как-то модифицировать этот диаложек. Сумлеваюсь, что я один от этого в восторге.


Работать-то оно работает... Но мне удобнее вбить путь руками, чем прыгать по дереву диска мышкой. Ан нет!

WinScreener: version update

WinScreener обновился до версии 1.0.0.5. Новыя фишки:
  1. Компактный режим формы. В нем только видны канва отрисовки целевого окна, кнопка включения отображения спрятанных контролов и мини-мишень.
  2. Возможность сокрытия полос прокрутки.
  3. Иконка активного окна WinScreener-а в системном лотке обрамляется красным квадратом.


So, welcome to download and donate :)

Ленин заDDOSил википедию

Решил сегодня посмотреть инфу по случаю ДР вождя мирового пролитариата. Ессно залез на википедию. А там - такое...
"Извините, сейчас серверы перегружены.

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

Истекло время ожидания блокировки "

Кажися, не я один про Ленина вспомнил сегодня :) Это радует.

Кста, подумалось, что ежели б КПСС дожило до наших дней, сайт wikilenin.ru, скорее всего, был бы самым пропагандируемым.

19 апр. 2011 г.

Тюнингованная ВАЗ 2102

Тюнинг ВАЗ-2102

Видел на днях тюнингованную ВАЗ-2102. Позитивно.

16 апр. 2011 г.

Рабочие материалы с курса скорочтения

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

7 апр. 2011 г.

Весенние обновления

Обновил свои утилитки WinScreener и MKEF.
Про WinScreener я писал тут. Кратко напомню, что основная задача программы - отображение выбранного участка определенного окна, даже если это окно закрыто другими окнами. В новой версии (1.0.0.4) я поменял немного интерфейс, добавил возможность скроллирования содержимого отслеживаемого окна, возможность изменения прозрачности окна программы. Так же избавился от кнопки на панели задач - она там совсем не нужна. Вместо нее появилась пиктограмма в системном лотке (возле часиков), по клику на которую окно программы прячется или появляется. Помимо этого добавил индикацию событий, происходящих в программе. Ежели целевое окно стало недоступно, в левом верхнем окне WinScreener-а отображается пиктограммка ошибки. Если целевое приложение подвисло, - песочные часы.

Про MKEF я писал тут. Задача программы - создание пустого файла на указанном носителе с целью занять все, или указанный объем свободного пространства. Например, чтобы не дать записаться на флешку вирусу. В новой версии я добавил возможность указывать процент от свободного пространства, который будет отобран создаваемым файлом (-u %). И добавил ключ -l, который говорит о том, что указанный объем - это то, сколько нужно оставить свободного места, а не занять. Ну, и добавил возврат различных кодов завершения работы.

Где-то так. Предложения и замечания принимаются.

5 апр. 2011 г.

Друг спас жизнь друга

Есть у меня наладонник - Asus a639. Года полтора назад после транспортировки в сумке его экран стал белесо голубым. То бышь, ярко-ярко голубым. Сёрфинг форумов показал, что виновата убитая матрица экрана. В сервис-центре сказали, что доставка матрицы будет стоить 80 у.е. И еще - работа сверху. Был кризис, денег было мало, ремонт отложил.
Недавно набрел на интернет-магазин GSMSERVER.com.ua, в котором и приобрел новую матрицу за 30 у.е. (+10 грн за доставку в Одессу из Киева). Тратиться на сервис-центр, правда, пожадничал. Разобрал машинку сам по инструкции с сайта PDACenter.Ru, повозился с открывающимися защелками контактных шин, пару раз собрал наладонник... И в конце концов оживил его. Чему и был несказанно рад.

Про самоё наладонник могу сказать следующее. На момент приобретения (а это было уж года 4 назад) 1 ГБ флеш-диска было немало. Сейчас это более чем обычно, но от этого не менее удобно. Оперативка и процессор (не смотря на то, что аффтар и админом был, и программером был и есть) меня не шибко интересуют, т.к. компилять на нем программы я не собирался. Звук в динамике слабенький (а что еще ожидать от пищалки размером с 25 копеек?!), но это ж не медиацентр - там дырка для наушников есть. Для слушания в дороге их вполне достаточно. Использовал я его, в основном, как читалку (AlReader), шедулер (Iambic Agendus), записнушку (Tree Notes, Daily Notes). Из достатков - крупный (не по пикселам, а по дюймам - там всё те же 320x240) экран, 3,5" разъем под наушники, GPS, BT, WiFi. Остальное - стандартный набор. Windows Mobile, весь возможный набор под нее.
Прикольная фишка - GPS-антенна. Помимо функции антенны она чудно выполняет роль подставки, ежели руки заняты едой, например. :) Реальной пользы от ее использования в качестве антенны я не вижу, т.к. вне строений спутники и так нормально ловятся, а в здании и антенна не спасает. Но как подставка она себя отрабатывает :)

Игры разума

Пришел отчет от Mail.Ru о действиях друзей. Там такая вот пиктограммка. При беглом чтении, когда глаз вылавливает только первую и последнюю буквы слова иначе как "МАНДА ЛОША" сие имя не читается. Хотя может оно так и задумывалось.

31 мар. 2011 г.

Урра! Я выиграл $50 000. Кому отсыпать? :)

Просто прелесть. Так незатейливо, не напрягаясь регистрацией доменов, почт, хотя бы минимальным дизайном... Дааа. Мельчает с(п|к)аммер.

P.S. Гмыльный спамфильтр на высоте.

27 мар. 2011 г.

Конференция Req Labs 25.03.2011

Req Lab. Киев. 25.03.2011
25 марта посетил конференцию Req Labs, проходившую в Киеве и организованную тренинговым центром Люксофта, в котором на данный момент я работаю. Поездка практически полностью оплачивалась компанией, за что ей большое спасибо.
Сама конференция имела тематикой работу с требованиями в сфере ПО. Некоторые доклады были откровенно притянуты за уши к этой тематике. Некоторые напрямую касались этой темы. В общем и целом, из 9 докладов, на которых я присутствовал, 1 был откровенной пургой, и 1, состоявший из двух частей (про психологическую составляющую комндной работы) мог бы занять раза в 3 меньше времени. Остальные доклады были вполне полезные и интересные.
Организация конференции понравилась. Всё вовремя, продуманы перерывы, перекусы, перепивы...
Очередной раз удивился (хотя уж пора бы и привыкнуть) быдлости некоторых товарищей. Этому вот нужно припереться на первый ряд, достать ноги из-под юбки, чтобы заслонить ими докладчика, открыть ноут и с гламурно непосредственным выражением лица свистеть в аське. Или порадовали товарищи, которые положили на стулья свои вещи (мол занято), а сами съе#лись пить шаровый кофе, в то время, как народу пришлось тащить стулья с другого этажа, чтобы послушать интересный доклад.
Да и про необходимость выключения звука у мобилки мало кто из высокообразованных и гламурных гиков знает. А хуле?! Мне тут корешь должен звонить!
Но это так - накипело.

Порадовало оформление анонса одного из докладов. Фото тётеньки как раз для рассказов о юзабилити и интерфейсах.

Несколько докладов было про Agile. Тренд. Ничего не поделаешь. Модно.

В общем и целом - полезная поездка.

18 мар. 2011 г.

IE6 has been the victim... (IE6 стал жертвой...)

Сайтик Saveie6.com агитирует за спасение небезызвестного обозревателя страниц Интернета Microsoft Internet Explorer версии 6. Авторы сетуют, что существующие программы-обозреватели изобилуют множеством ненужных функций, отображают контент страниц медленно, плохо и вразнобой, в то время как IE6 был много лет отлаженным и продуманным инструментом. "I don't know what all this buzz is about that Firefork website viewer thing, or that Oprah browser. I knew she did a talk show and all but web browsers? Get off my interwebs!" ("Я не знаю, что за шумиха вокруг этого Огненнойпромежности, или вокруг броузера Опрах. Я уверен, что они делают ток-шоу и много других вещей, за исключением веб-броузинга! Прочь от моего интернета!") вопиит однин из абзацев на титульной странице.

Порадовала табличка сравнения IE6 с остальными популярными обозревателями. Особенно первый пункт:
Размещает на рабочем столе иконку интернета (голубая E) - эту функцию удалось реализовать только авторам IE6 и IE7. (долго смеялсо)
Примерно туда же относится пункт "Поддержка ActiveX".

Порадовал так же один из пунктов таблички раздела "Почему ты должен пользовать IE6?":
The most aesthetically pleasing web browser logo. (Самый эстетически приятный логотип программы).

P.S. Судя по надписи "A site from the geeks at Pingdom." в подошве сайта тут не обошлось без скрытой рекламы того самого Pingdom. А может всё и делается для этого...

17 мар. 2011 г.

Copypast: Плюс 100 к защите: Круговая оборона Linux десктопа

Копипаст статьи "Плюс 100 к защите: Круговая оборона Linux десктопа" с сайта Xakep.ru.Fdnjh - Евгений Зобнин. Ничего супернового, но как напоминалка - хорошая статейка. Имхо.

Плюс 100 к защите: Круговая оборона Linux десктопа

Открытые UNIX-системы всегда славились своей безопасностью. Постоянный аудит кода, молниеносные выходы багфиксов, хорошо продуманная политика разграничения прав доступа – все это сделало их очень привлекательным продуктом, которому можно доверить хранение даже самой конфиденциальной информации. Но значит ли это, что мы можем полностью положиться на разработчиков и не должны «допиливать» свою систему самостоятельно? Нет, каждый случай установки ОС уникален и требует подкручивания винтиков.

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

  1. Человек – существо общественно-зависимое. В любой сфере жизни нас окружают люди. Дом, место учебы, работа – везде и всегда мы находимся в обществе других людей, не все из них чисты на руку, бескорыстны и холодны к чужим секретам. Поэтому первая линия обороны – это, конечно же, обеспечение защиты от физического доступа к машине во время нашего отсутствия.
  2. Интернет полон придурков, кул-хацкеров и просто любопытных людей. Никто из нас не хочет подвергнуться взлому со стороны одного из них (или всех сразу). Поэтому вторая линия обороны – это защита сетевых рубежей от вторжения.
  3. Взломав машину, те самые придурки, кул-хацкеры и просто любопытные люди захотят получить доступ к нашим важным данным, включая пароли, сертификаты, кукисы и архивы баз данных, которые мы стащили, взломав чужую машину. Поэтому третья линия обороны – защита конфиденциальных данных от посторонних глаз с помощью сокрытия информации или шифрования.
  4. Получив желаемое, ПКЛ (придурки, кул-хацкеры, любопытные) захотят оставить на твоей машине черный ход, который в будущем будут использовать для регулярного обновления своего архива твоими данными, а также для рассылки спама или проведения DDoS. Четвертая линия обороны – проверка системы на наличие руткитов и прочей дряни.
  5. Даже если ПКЛ не засунут в недра машины свой бэкдор или DOS-бота, они все равно захотят уйти в чисто английской манере, не оставив после себя не только нежного «Тебя поимели, пупсик» (хотя первые два представителя тройки это, скорее всего, сделают), но и логов и другого доказательства своей вины и контактных данных. Во избежание их безнаказанности следует использовать пятую (и окончательную) линию обороны под названием аудитинг.

Это и есть пять основных рубежей, грамотно организовав защиту каждого из которых, ты сведешь вероятность быть поломанным к цифре, маячащей где-то далеко позади 0,1%.

От машины руки прочь!

Методы защиты от физического проникновения на твою машину весьма просты. Достаточно представить себя на месте подлеца, и все становится предельно ясно. Во-первых, мы можем просто продолжить работу с системой, потому как многие даже не удосуживаются заблокировать экран во время своего ухода. Правило первое: всегда блокируй экран (в большинстве сред ). Во-вторых, мы можем попробовать подобрать пароль, который нередко бывает равен комбинациям вроде «qwerty» или «123». Правило второе: используй сложные и надежные пароли (о том, как их придумать, читай в боковом выносе INFO). Мы можем перезагрузить компьютер и с помощью GRUB загрузить ОС в однопользовательском режиме, получив полный контроль над системой. Правило третье: установи пароль на GRUB (об этом во врезке).

Увидев, что GRUB запаролен, мы можем войти в меню BIOS, установить в качестве первого загрузочного устройства CD-ROM и загрузиться с LiveCD, получив полный доступ к содержимому жесткого диска. Правило четвертое: настрой загрузку только с жесткого диска и поставь пароль на BIOS. Но это нас не остановит: мы снимем крышку с корпуса и сбросим настройки CMOS вместе с паролем, просто вынув батарейку на несколько секунд. Правило пятое: покупай корпус с замком. Увидев замок на корпусе, мы забираем весь системник с собой и разбираем его на ближайшей свалке. Правило шестое: всегда пристегивай системник к батарее с помощью цепи.

Последнее правило, конечно же, шутка, но и в ней есть доля правды: эффективность защиты от физического доступа падает прямо пропорционально росту наглости взломщика. Кстати, есть еще одна рекомендация, связанная с запираемыми на замок системниками. Большинство из них имеют переднюю крышку, которая также обеспечивает некоторую защиту CD-привода, USB-разъемов и кнопок включения/сброса. Однако мы всегда можем зажать на клавиатуре для перезагрузки машины. Но комбинация не сработает, если открыть файл /etc/inittab, закомментировать строку «ca::ctrlaltdel:/sbin/shutdown -t3 -r now» и выполнить команду «/sbin/init q».

Угроза извне

Те, кто пролезает на машину жертвы из Сети, обычно используют несколько простых и проверенных приемов. Самое простое, что может сделать злоумышленник – просканировать твою машину на открытые порты и попытаться найти уязвимый сетевой сервис. В борьбе с такими экземплярами фауны кул-хацкеров поможет отключение ненужных демонов, своевременные обновления дистрибутива и чтение моей статьи «Огненная дуга», посвященной правильной настройке брандмауэра (см. ][ от 06.2010). Обломавшись на этом пути, хацкер может попытаться подсунуть тебе троян под видом легальной программы или использовать дыру в браузере. В этом случае все просто: ставь софт из официальных репозиториев дистрибутива, используй правильные браузеры свежей версии.

Поняв безуспешность своих попыток проникновения, взломщик может попробовать провести DoS/DDoS. От хорошей распределенной атаки ты, скорее всего, не спасешься, а вот небольшую волну вполне сможешь выдержать, если будешь следовать рекомендациям, описанным в статье «Устоять любой ценой» (][ от 09.2009).

Хорошей практикой в борьбе с дырами является настройка автоматического обновления ОС, благодаря которому система всегда будет оставаться в свежайшем состоянии. Такие дистрибутивы, как Ubuntu, Fedora, OpenSuSE, уже имеют в своем составе графические напоминалки, которые время от времени выскакивают из трея и сообщают об очередном обновлении. Это удобно, но быстро надоедает, гораздо эффективнее сделать так, чтобы система сама производила обновления в фоне, не отвлекая пользователя от работы. В Ubuntu это делается через графический интерфейс (System -> Administration -> Software Sources -> Updates -> Automatic updates, Install security updates without confirmation) или с помощью модификации файла /etc/apt/apt.conf.d/10periodic:

$ sudo vi /etc/apt/apt.conf.d/10periodic

APT::Periodic::Enable "1";
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "5";
APT::Periodic::Unattended-Upgrade "1";

Замечу, что это относится только к обновлениям безопасности, простой апдейт софта придется производить руками. От возможных дыр в софте также очень эффективны такие системы, как SELinux или AppArmor (уже интегрированные в Ubuntu, OpenSuSE и Fedora), которые просто не позволят уязвимому сервису выполнить код, подсунутый взломщиком (мы не раз писали о настройке популярных расширений безопасности для ОС Linux, подними архив ][).

Свой личный бастион

После проникновения в машину через уязвимый сервис взломщик скорее всего будет иметь очень ограниченные права и возможности (почти все сетевые сервисы в UNIX работают от какого-либо специального пользователя, не имеющего серьезных полномочий в системе), поэтому первое, что он попытается сделать – повысить свои права до root. Наша задача – приложить все силы для того, чтобы помешать ему это сделать, иначе машина окажется полностью в чужих руках. Ниже мы рассмотрим типичные приемы злоумышленников, направленные на получение root, и методы защиты от них.

1. Первым делом хацкер попытается выполнить команду su в надежде на то, что пароль root окажется пустым или настолько простым, что он сможет его подобрать. Мы обезопасим систему, просто добавив в файл /etc/pam.d/su строку «auth required pam_wheel.so» сразу после строки «auth sufficient pam_rootok.so». Теперь право использовать su будет только у пользователей, состоящих в группе wheel (естественно, ты должен себя в нее добавить).

2. Потерпев неудачу в получении прав root обычными методами, взломщик попытается залить на твою машину эксплойт, чтобы добыть права root'а через локальные дыры в безопасности. Но так как его права сильно ограничены, он сможет использовать всего несколько мест для заливки вредоносного кода: общедоступный каталог /tmp и приватный каталог взломанного сервиса (например, корневой каталог веб-сервера или FTP-сервера). Защититься довольно просто, достаточно вынести эти каталоги на отдельные разделы и подключить с опциями noexec (а для верности и nosuid,nodev). Например:

/dev/sda5 /tmp ext2 nosuid,noexec,nodev 0 0

Так взломщик не сможет выполнить свой эксплойт в указанном каталоге. Но не все так просто – знающий человек запустит программу с помощью динамического линковщика и легко обойдет данное ограничение:

$ /lib/ld-linux.so.2 /tmp/exploit

К сожалению, в стандартном ядре Linux защиты от данного вида атак нет, но она есть в патче RSBAC (www.rsbac.org), который в любом случае рекомендуется к установке.

3. Если каким-либо образом взломщику удастся обойти проблему запуска эксплойта, он сможет направить его действие всего в две стороны: ядро ОС или программы, имеющие SUID-бит. Только эти два компонента ОС могут дать ему заветный root-доступ. Но если с ядром все ясно (уязвимость либо есть, либо ее нет), то с SUID-софтом все немного сложнее. Даже если в одной из них будет найдена уязвимость, взлома можно легко избежать, просто сняв SUID-бит с программы. Для этого получи список SUID-софта с помощью find:

$ sudo find / -type f \( -perm -04000 -o \
-perm -02000 \) \-exec ls {} \;

А затем лиши некоторые из программ привилегий исполнения с правами root:

$ sudo chmod a-s /путь/к/бинарнику

Будь осторожным – оставив без прав важные системные программы, ты можешь обрушить всю систему. Как всегда, man в помощь.

4. Один из способов проползти в систему находится в области человеческой безалаберности. Чтобы заставить прочитать свои данные какие-либо важные системные утилиты и таким образом привести их в желаемое состояние, взломщик может найти открытые для всеобщей записи файлы и вставить в них какой-либо код (например, добавить в опции сетевого сервиса возможность входа без пароля или записать в файл код, который сорвет стек утилите, прочитавшей ее). Чтобы избежать такой ситуации, достаточно найти все общедоступные файлы и снять бит записи для всех:

# find /dir -xdev -type d \( -perm -0002 -a \
! -perm -1000 \) -print

5. Потерпев фиаско в борьбе за права суперпользователя, взломщик попытается разнюхать побольше информации о системе и утащить важные данные. В первую очередь это касается данных взломанного сервиса, например, файлов, выложенных на FTP-сервер, или страниц веб-сайта. Фактически защититься от этого можно только вовремя распознав атаку и запретив все подключения с помощью файера (либо просто вытащив кабель из сетевой карты). Второе – это данные о самом сервере, маршрутизация, ближайшие машины и т.д. Обычно их тоже невозможно скрыть без нарушения работоспособности системы. Третье – личные данные пользователей. В большинстве дистрибутивов файлы, создаваемые в домашнем каталоге пользователя, остаются видимыми всем подряд (маска 022), поэтому даже не имея каких-либо серьезных прав в системе, взломщик сможет их прочитать (кроме архиважных файлов с паролями различных программ, которые при создании защищают файл от посторонних). В борьбе с этим поможет одна коротенькая строчка, записанная в файл ~/.profile:

umask 077

Теперь все вновь создаваемые файлы пользователя будут защищены от посторонних глаз. Вообще, по-настоящему безопасная домашняя машина не должна иметь на своем борту никаких сетевых сервисов, кроме совсем важных и необходимых (OpenSSH, например), а если уж припрет выложить в локальную сеть свой файловый архив или сайт, воспользуйся системой виртуализации уровня ОС, такой как FreeBSD Jail или Linux VServer (обе они уже были подробно описаны на страницах журнала).

Кроме сетевых сервисов не исключена возможность подцепить заразу прямо через дыру в веб-браузере или каком-нибудь pidgin. Если такое произойдет – пиши пропало. Взломщик унесет все, включая пароли, сохраненные браузером, личную переписку и всю прочую конфиденциальщину (о методах получения root в этом случае я вообще молчу, их сотни). Даже если твои пароли будут зашифрованы, никто не помешает хацкеру унести все настройки того же Firefox, положить их на свою машину и броузить интернет от твоего имени. Единственное, что можно порекомендовать для защиты от такой ситуации – хранить все конфиденциальные данные на виртуальном разделе и подключать его к системе только по мере необходимости (полное шифрование /home не спасет, потому что взломщик окажется на уже расшифрованном разделе).

Хорошей идеей будет установка модуля Linux-ядра Yama (http://lkml.org/lkml/2010/6/23/25), созданного разработчиками из Canonical. Yama по умолчанию включен в дистрибутив Ubuntu и позволяет защитить систему от некоторых видов локальных атак:

  • Атака через подстановку символьной ссылки в общедоступном каталоге. Некоторые приложения создают во время своей работы символьные ссылки, создаваемые в каталоге /tmp или /var/tmp. В некоторых ситуациях взломщик может подменить эту ссылку, заставив программу обратиться к поддельному файлу. После установки Yama следовать по ссылкам, созданным в таких каталогах, можно будет только в том случае, если UID процесса, открывающего ссылку, и UID владельца ссылки совпадают.
  • Атака с использованием жестких ссылок. Само по себе создание жестких ссылок пользователем, не имеющим доступ к оригинальному файлу, не является проблемой, так как ссылка будет иметь те же права доступа. Однако через создание жесткой ссылки взломщик может подсунуть исходный файл другому привилегированному приложению и раскрыть содержащиеся в нем данные. Yama запрещает создание жестких ссылок пользователям, не имеющим доступа к оригинальному файлу.
  • Атака с использованием системного вызова ptrace. По умолчанию любой процесс может выполнить отладку другого процесса с помощью ptrace, если UID отлаживаемого процесса равен UID, вызвавшего ptrace. Это может привести к тому, что при взломе одного из пользовательских приложений взломщик сможет раскрыть состояние и конфиденциальную информацию другого приложения этого пользователя. Yama разрешает использовать системный вызов ptrace только для отладки процессов-потомков.

Истребляем нечисть

Что ж, мы защитили систему снаружи и внутри, но как обезопасить себя в том случае, если все это не поможет, и взломщик таки проникнет в систему? Попробуем разобраться.

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

Бэкдоры, трояны, боты и все остальные «нелегалы» могут быть как совсем простыми, так и весьма изощренными, выполненными в виде отдельной программы/скрипта, внедренными в легальные программы или же подключенными к ядру с помощью модуля. Однако это не имеет никакого значения, потому как любой нелегал может быть отловлен через анализ системы на модификации (никакой код не может быть внедрен в ОС на любом уровне без модификации окружения исполнения). А главное, что такой анализ легко провести через заблаговременную установку специальных систем, называемых HIDS (Локальные системы обнаружения вторжений).

Одна из самых популярных HIDS, доступных в UNIX-системах, носит имя Tripwire, однако в последнее время она потеряла свои позиции в пользу более открытого аналога под названием AIDE (Advanced Intrusion Detection Environment – продвинутая система обнаружения вторжений). Как и Tripwire, AIDE основана на простом предположении: если какие-то файлы в системе изменились без предупреждения – значит, произошло вторжение. На деле это выглядит еще проще: при первом запуске AIDE создает базу с контрольными суммами всех сколько-нибудь значимых для взломщика системных файлов и периодически сверяет ее состояние с актуальным состоянием системы. Если что-то изменилось, на предварительно указанный e-mail отправляется письмо с предупреждением и деталями изменения.

AIDE доступна в виде прекомпилированных пакетов для любого дистрибутива и может быть установлена с помощью стандартного пакетного менеджера:

$ sudo apt-get install aide

Конфигурация AIDE располагается в двух конфигурационных файлах:

  • /etc/default/aide – главный конфигурационный файл
  • /etc/aide/aide.conf – правила

Первый хранит основную конфигурацию AIDE и обычно даже не требует правки. Единственная опция, которую имеет смысл изменять, носит имя MAILTO и содержит адрес электронной почты, на который будут отправлены все отчеты об изменениях в файлах (по умолчанию – root). Второй хранит список правил, на основании которых ведется анализ состояния системы (права доступа, контрольные суммы и т.д.) В нем же задано место хранения базы данных, хранящей предыдущее согласованное состояние системы (/var/lib/aide/aide.db). Популярные дистрибутивы уже содержат список необходимых правил (которые могут быть вынесены в отдельные файлы каталога /etc/aide/aide.conf.d), поэтому мы не будем что-либо в них менять.
Чтобы инициализировать новую базу AIDE, воспользуемся командой aideinit:

$ sudo aideinit

После окончания ее работы в каталоге /var/lib/aide будет создана новая база с именем aide.db.new. Чтобы сделать ее базой согласованного состояния системы, произведем переименование:

$ sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

После этого можно произвести первую проверку системы:

$ sudo aide -c /etc/aide/aide.conf --check

При установке AIDE помещает себя в список заданий cron, поэтому проверки будут происходить каждый день. Однако не следует полностью полагаться на систему. Если взломщик сможет модифицировать системные файлы для установки бэкдора, он также сможет модифицировать и сам AIDE, включая базы данные и бинарные файлы, поэтому лучший способ использования AIDE заключается в помещении ее на USB-флешку и ручной запуск в случае необходимости (не забыв исправить путь поиска баз данных в файле aide.conf):

# cp /var/lib/aide/aide.db* /usr/bin/aide \
/etc/aide/aide.conf /etc/aide/aide.conf.d/* /media/флешка

Конечно же, после каждого намеренного изменения состояния системы (установка пакетов, изменение конфигов и т.д.) базу придется пересоздавать. Такова уж расплата за гарантию безопасности.

Кроме HIDS общего назначения для UNIX-систем разработано несколько утилит, специализирующихся исключительно на руткитах. Программы chkrootkit и rkhunter используют базу сигнатур для поиска и обнаружения вредоносного ПО (rkhunter также проверяет целостность исполняемых файлов, загрузочных скриптов и анализирует сетевые интерфейсы на предмет прослушиваемых портов). Обычно их используют совместно с AIDE для создания дополнительного слоя безопасности. Доступны в любом дистрибутиве. Использовать предельно просто:

$ sudo chkrootkit
$ sudo rkhunter --check

На экране появится информация о проверяемых бинарниках, файлах доступа, проверки на известные типы руткитов и т.д. Обе программы написаны на языке shell, поэтому используют стандартные утилиты командной строки (awk, cat, grep, …) для выполнения проверок. Если ты не уверен в целостности этих утилит, помести их заведомо «чистые» версии на флешку и вызывай программы следующим образом:

$ sudo chkrootkit -p /media/флешка
$ sudo rkhunter --check --bindir /media/флешка

Выводы

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

Пароль на GRUB

Для установки пароля на GRUB необходимо сделать две вещи:

  1. Запустить команду /sbin/grub и набрать в ее интерактивной оболочке команду md5crypt. После этого программа запросит пароль и выведет на экран его md5-хеш.
  2. Открыть файл /boot/grub/grub.conf и добавить в него опцию «password --md5 хеш-пароля».

Tiger – анализатор локальной безопасности

Tiger – это пакет, состоящий из коллекции shell-скриптов, бинарных файлов и файлов данных, используемый для поиска проблем безопасности UNIX-систем. Он производит сканирование конфигурационных файлов, файловых систем, конфигурационных файлов пользователя и генерирует отчеты. В своей работе использует chkrootkit и John the ripper.

Zeppoo – поиск руткитов на уровне ядра

Zeppoo позволяет найти Linux руткиты, скрытые процессы и сетевые соединения, новые системные вызовы и многое другое, используя прямой доступ к памяти ядра с помощью файлов /dev/kmem и /dev/mem. Исходный код доступен на сайте проекта: http://sourceforge.net/projects/zeppoo.

INFO

Если с придумыванием сложных паролей туго, воспользуйся утилитой APG, которая поможет сгенерировать весьма сложный, но притом вполне читаемый пароль.

Поиск suid/sgid-файлов с несколькими ссылками:

$ find / -type f \( -perm -004000 -o -perm -002000 \) -links +1 -ls

3 мар. 2011 г.

25 цитат о программировании

Ниже привожу вольный перевод заметки "My 25 Favorite Programming Quotes that are Funny too" с сайта JournalDev от автора Pankaj.


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

Вот 25 из них (в рандомном порядке):

Самая приятность в булевом типе данных состоит в том, что даже ежели ты ошибся, то всего лишь на один бит (bit в аглицком переводится, в том числе, как "небольшой кусочек"). Анонимус.

Без толково описанных требований и дизайна программирование превращается в искусство добавления багов в пустой текстовый файл. (Louis Srygley)

До того, как софт станет многократно используемым, он сперва должен стать используемым. (Ralph Johnson)

Самый лучший способ разгона компа разгоняет его с ускорением 9.8 м/сек2. (Anonymous)

Предполагаю, что Мелкософт назвали .Net .Net-ом для того, чтобы его небыло видно при листинге директорий в Unix. (Oktal)

Ежели б строители строили строения така же как программисты программируют программы, от первого же дятла цивилизация бы рухнула. (Gerald Weinberg)

Существует два метода написания программ без ошибок. Но работает только третий. (Alan J. Perlis)

Тофсь! Цельсь! Пли! - быстрый подход к программированию.
Тофсь! Цельсь, цельсь, цельсь, цельсь, цельсь, цельсь... - медленный подход к программированию. (Anonymous)

Это не бага - это фича. (Anonymous)

Кому "дерьмовый софт", а кому и полная занятость на работе. (Jessica Gaston)

Хороший программер всегда смотрит в обе стороны, когда переходит дорогу с односторонним движением. (Doug Linder)

Пиши свой код так, как будто хлопец, который будет его сопровождать, - психопат-насильник, который знает где тебя найти. (Martin Golding)

Программирование похоже на секс. Одна ошибка, и тебе придется поддерживать эту хрень всю оставшуюся жизнь. (Michael Sinz)

Удаленный код - надежный код. (Jeff Sickel)

Гулять по воде и писать софт по спецификации очень легко. Ежели и то, и то заморожено. (Edward V Berard)

Ежели отладка - это процесс вылавливания багов из кода, то кодирование, должно быть, процесс внесения багов в программу. (Edsger Dijkstra)

Обычно софт проходит этап бета-тестирования перед редизом. Beta по латински значит "все еще не работает". (Anonymous)

Программирование сегодня - это состязание между программерами, пытающимися создавать все более удобные идиото-ориентированные программы, и Вселенной, создающей все более тупых идиотов. Пока что Вселенная ведет. (Rick Cook)

Любопытное замечание про нашу индустрию. Мы не только не учимся на своих ошибках, мы еще и не хотим учиться на собственном успехе! (Keith Braithwaite)

Есть только два типа языков программирования: те, на которые все жалуются, и те, которые никто не пользует. (Bjarne Stroustrup)

Чтобы понять, что такое рекурсия, сначала нужно понять что такое рекурсия. (Anonymous)

Самый недорогой, наибыстрейший и наиудобнейший из компонентов не существует. (Gordon Bell)

Самое лучшее увеличение производительности - это перевод из состояния неработоспособности в рабочее состояние. (J. Osterhout)

Одна из проблем с программистами состоит в том, что никогда не можешь сказать, чем же программер занимался до тех пор, пока не стало слишком поздно. (Seymour Cray)

Не беспокойся, если оно не работает правильно. В противном случае у тебя небыло бы работы. (Mosher’s Law of Software Engineering)



И еще несколько высказываний из комментариев:

Говорить, что Java - хороший язык из-за того, что он работает на разных платформах, примерно то же самое, что говорить, что анальный секс хорош, потому что он не зависит от пола.

Единственный способ делать меньше багов - писать меньше кода.

"А вы слышали про самый быстрый мегасуперпупер компьютер? Он из вечного цикла возвращается через 6 секунд!"

Некоторые люди встречая проблему думают: "Я знаю. Я заюзаю регулярки." Теперь у них две проблемы.


Сколько программеров нужно, чтобы поменять лампочку? Ни одного. Это хардварная проблема.

Есть два метода конструирования софта. Первый: делать софт таким простым, что в нем не будет явных дефектов. Второй: делать софт настолько сложным, чтобы в нем небыло явных дефектов. (C.A.R. Hoare)

26 февр. 2011 г.

Бигборды Одессы. Социальные и не совсем.

Два бигборда, сфотографированные в Одессе. Качество не ахти - фотографировалось мобилкой. Но оно тут особо и не важно. Итак:


Агитация против абортов. Для чего-то дезигнер решил поставить фотку куклы. Сумлеваюсь, что такие "малыши" гибнут от абортов.

И еще один. Такой нехилый некролог новопредставленному рабу божиему. А фигли?! В стране кризис. Мобильная связь дорогая. Скоро будем СМС-ки на бигбордах пересылать...

Живой писсуар


Вот такй феномен встретил в офисе. :) Писсуар, который дышит.

Заклеили его за то, что у него небыло кнопки слива.

А объясняется всё, в принципе, просто. Когда вода сливается, она создает разряженную атмосферу в канлзации. Кулёк втягиваеся туда. Затем по трубе начинает подниматься теплый воздух из канализации, и кулёк опять надувается. Выглядит прикольно.

19 февр. 2011 г.

Школа, аднака.

Малый делает уроки (2-й класс). Русский язык. В дневнике написано "стр. 130. Упражнение такое-то". Открываем учебник. Страницы 130 нет. Учебник заканчивается на стр 110. То есть, вообще заканчивается - на этой странице содержание. Хммм. Малый звонит однокласснице, пытается выяснить наличие "в русском страницы 130". Кое-как выясняет, что страница 130 в ее учебнике имеется.
- А как учебник называется?
- "Русский язык" 2-я часть.
- Прикольно, у нас тоже...
Малый пошел взял погонять учебник. Таки да, там есть страница 130. И еще в добавок штук 40 в противоложность нашему. Обложки одинаковые, названия - одинаковые: "Русский язык. Часть 2." О как! Разница только в годе выпуска. Наш - укороченный выпуск - 2008 года. Одноклассницы - 2002.
Малый говорит, в классе у кого-то есть эти страницы, а у кого-то нет...

Ладно. Потом выясним. Давай делать задание. Читаем задание. "Свободный диктант после упражнения 225". Тыц! А в учебнике (там где есть страница 130) упражнения появляются начиная с номера 266.
Занавес.

14 февр. 2011 г.

"Мы" Евгения Замятина

Прочитал недавно роман "Мы" Евгения Замятина. Роман был писан в 1920 году в Советском Союзе. Википедия говорит, что роман послужил источником вдохновения для Орвэла при написании "1984" (29 лет спустя). Вполне возможно. Однако это совсем не значит, что произведения похожи. Совершенно разные по стилю, идее, сюжету... Ну, только то, что действия происходят в тоталитарном государстве, небезуспешно пытающемся контролировать разум его граждан.

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

Стиль мне немного напомнил стиль прозы Маяковского. Он такой же дерзкий, неоднозначный, оставляющий место для догадок и предположений и в тоже время простой и понятный.

Перед этим я читал "Белая Гвардия" Булгакова. Несколько мест (например, описание тифозного бреда Алексея Турбина) мне показались такими же сильными. Хотя сравнивать этих писателей, конечно же, смысла нет - они совершенно разные. Однако, возможно примерно общий период времени написания произведений наложил свой отпечаток.

В общем, времени, ушедшего на прочтение книги совсем не жаль.

И к стати о "Белой Гвардии" и "Мы", авторов которых недолюбливала советская власть. Когда читал "Белую Гвардию" Булгакова, а за ней - статьи по поводу ее вариантов типа "Дней Турбиных", вычитал, что это произведение стало, в том числе, причиной гонений автора со стороны советской власти. Ему не давали публиковаться, работать, критиковали в самых нелестных выражениях... В общем, все было плохо.

Но я вот что думаю. Предполагаю, что в те годы (24-26, емнип), такое поведение правительства было вполне понятно и оправдано. Основу нового Советского государства составляли простые, необразованные, темные люди, с помощью (и надеюсь, что для) которых Ленин сотоварищи делали Революцию. А необразованный человек легко все принимает на веру, т.к. знаний на проверку и собственное мнение у него нет. И одна из основных задач КПСС было поддержание в этой темной массе определенного направления мысли и движения - стремление к светлому будущему, которое не может иметь что-то общее с темным прошлым.

И вот в то время, как эта масса народа пытается идти практически на ощупь в указанном Лениным направлении, просто веря, что было плохо, а будет хорошо, появляется "Белая Гвардия", в которой говорится, что не все, кто был по ту сторону баррикад - однозначное зло. Это были такие же люди со своими ожиданиями, верой, понятиями о чести, субординации, Боге, власти... Они так же напивались, боялись, болели, любили... Всё то же самое! Да и Петлюра, оказывается, не убийца и враг, а человек, пытавшийся освободить Украину от Немцев с Царской властью.

А что будет, если слепому с двух сторон будут кричать, что ему нужно идти в разных направлениях? Он или встанет на месте, или... Встанет на месте. И вполне понятно, что нельзя было допустить расшатывания и так еще не твердо стоящего на ногах общества.

А что до личности Булгакова, Замятина и других гонимых писателей, то их эго не должно ставиться в один ранг с судьбой целого народа (а в случае СССР - 15 наций).

Имхо.

Cats raised guy

Вольный перевод комикса отсюда. Не лишено правдивости :).

11 февр. 2011 г.

Facebook через HTTPS

Facebook добавил возможность серфить их сайт полностью через HTTPS-протокол (для тех, кто не знает - значительно более безопасный и секурный протокол, нежели HTTP). Этого давно не хватало. Гугл даже поиск пустил через HTTPS! А фейсбук до сих пор этого не делал. Предполагаю, из-за того, что это значительно бОльшая нагрузка на сервера - математика там довольно замученная в HTTPS. Но это новшество не может не радовать параноиков типа меня. :)

Чтобы включить эту опцию, нужно зайти в "Account Settings"/"Account Security"/"Browse Facebook on a secure connection (https) whenever possible".

А еще побочным эффектом оного, я так думаю, станет реализация этой опции в ВКонтакте. :)

1 февр. 2011 г.

Art Project

Попал на сайт Art Project. Гугл в сотрудничестве с рядом музеев искусства на основе технологии Street View организовали онлайн-просмотр галереи картин в гигапиксельномо разрешении. Как по мне - это то, ради чего можно было создавать интернет и Гугл. По крайней мере. На картинах можно рассмотреть мельчайшие трещинки на полотнах. Потрясающе.

Рекомендую по каждой рассматриваемой картине найти информацию в интернете. Уверен, что ее там предостаточно. Эта информация поможет картине превратиться из просто картинки в действительно осознанное и более или менее понятное произведение искусства.

30 янв. 2011 г.

Facebook: messages + email

Facebook добавил возможность обмена сообщениями через e-mail. Пользователю выделяется адрес @facebook.com. На него можно отправлять электронные письма. Интерфейс почтового ящика не такой навороченный, как у GMail, но, имхо, оно там и не надо.
При написании сообщения теперь (раньше не проверял, правда) можно указать любой другой e-mail. Сообщение будет доставлено на него. К письмам можно прицеплять фотки и другие прицепы.
Насколько я понимаю, это очередная попытка объединения быстрых сообщений и электронной почты. Точнее, превращение электронки в те же быстрые сообщения. НАсколько попытка будет тщетной - покажет время. Как по мне - электронная почта это одно, а IM - совсем другое. Но время покажет.

Выгодя для Facebook-а очевидна. Это еще один источник (и довольно лакомый), информации о пользователях. А использование этой информации - дело фантазии ее обладателя :)

P.S. Отправка писем на @fb.com и @thefacebook.com (которые тоже являются доменами Facebook) прошла удачно, но в мою учетку они не попали. Может потом попадут (после ручной модерации :) ), а может и нет.

25 янв. 2011 г.

WinScreener

Давно вынашивал идею, которую наконец реализовал. Идея состоит в том, чтобы в отдельном окошке, которое лежит поверх остальных окон, просматривать часть другого окна, даже если оно скрыто другими окнами. Идея родилась при использовании одного монитора, когда в Visual Studio (или других бильдерах) идет долгий билд, есть время заняться другими делами. Выкидывать на самый верх цельное окно студии смысла нет, т.к. оно закроет значительную часть экрана. А вывести на верхний уровень кусочек окна - очень даже удобно. Фактически, это та же экранная лупа, только отображающая определенное окна, а не весь экран.
Результатом раздумий и кодирования стал WinScreener. Программа делает именно это - выводит на экран кусочек указанного окна.
Из дополнительных бонусов получилась фишка отображения последнего активного "родственного" указанному окна. Родственность определяется по одинаковому заголовку окна или имени класса окна. Например все консольные окна в Windows имеют именем класса строку "ConsoleWindowClass". Если есть несколько консольных окошек, которые нужно попеременно мониторить, можно в WinScreener выделить опцию Find: "First - same class". Последнее активное консольное окно будет мониториться WinScreener-ом.

Интерфейс программы не сложный. Пиктограммкой "Мишень" выбирается нужное окно. Кнопкой Start/Stop активируется процесс мониторинга. По причине того, что интересующее окно может находиться в центре родительского, я сделал так, чтобы выводилось именно выделенное окно, даже если оно является дочерним контролом диалога. Если нужно мониторить всё окно, мишень можно навести на заголовок главного окна.

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

В программе есть что доделывать. И по интерфейсу, и по функциям. Замечания и предложения принимаются.

Текущая версия - 1.0.0.0 b.