Get Программист о программировании delivered by email
View Feed XML
FeedBurner makes it easy to receive content updates in My Yahoo!, Newsgator, Bloglines, and other news readers.
Learn more about syndication and FeedBurner...
Считали ли вы когда-нибудь, сколько часов в неделю вы можете программировать? Не читать документацию, не сидеть на митингах или обсуждать что-то с коллегами, а именно сидеть и кодить\дебажить в редакторе?
Я помню времена, когда я именно программировал и дебажил по 40-50 часов в неделю. Часов по 5-6 не вставая и не отрываясь. Для этого приходилось проводить на работе 60-80 часов в неделю - по 10-11 часов в день плюс выходные. И это был офигительный, незабываемый фан. Мы делали игры, и само по себе это было даже важнее, чем зарплата или признание (тем более, что за переработки никто не платил, но мы все равно их делали ).
Со временем я стал замечать, что все меньше времени провожу в редакторе кода.
А теперь далеко не каждую неделю у меня получается провести хотя бы 15-20 часов в неделю, программируя. А иногда это число бывает равно нулю.
Конечно, за 10 часов сейчас я могу сделать в несколько раз больше, чем за 10 часов 5 лет назад. Но ведь за 40 часов я смог бы сделать еще в 4 раза больше!
Не то, чтобы это сильно меня напрягало, но тенденция пугающая.
Итак, задумайтесь - сколько часов в неделю вы сейчас “программируете”? А сколько вы “программировали” 5 или 10 лет назад и какова тенденция?
И вообще - проблема ли это? Или это нормальное развитие - программист постепенно из кодера превращается в Senior Programmer?
Что было бы, если бы браузеры были средствами передвижения:
Как разные люди видят своих коллег (забавны первый и второй столбец с железячниками и IT. И про middle-management и CEO все правда ):
Похожие записи:
Самый простой способ изучить C++ за 21 день
Гики - двигатель прогресса
7 причин почему Windows популярнее, чем Linux
Хотите примерить на себя работу программиста из NVidia?
Сможете всего за 10 секунд найти и исправить баг в программе на C++? А если их много?
Если да, тогда игра Hero Programmer Quest для вас - нажимайте на картинку и начинайте (игра эмбежена в пост, но может быть не видна в RSS):
В MSDN опубликовали список фич C++0x, которые поддерживает выходящая скоро Visual Studio 2010.
Вот этот список:
C++0x Core Language Features |
Proposal |
VC9 |
VC10 |
Rvalue references |
N2118 |
No |
v2 |
Rvalue references v2 |
N2844 |
No |
v2 |
Rvalue references for *this |
N2439 |
No |
No |
Initialization of class objects by rvalues |
N1610 |
Yes |
Yes |
static_assert |
N1720 |
No |
Yes |
auto |
N1984 |
No |
Yes |
Multi-declarator auto |
N1737 |
No |
Yes |
Removing old auto |
N2546 |
No |
Yes |
Trailing return types |
N2541 |
No |
Yes |
Lambdas |
N2927 |
No |
v1.0 |
decltype |
N2343 |
No |
Yes |
Right angle brackets |
N1757 |
Yes |
Yes |
Extern templates |
N1987 |
Yes |
Yes |
nullptr |
N2431 |
No |
Yes |
Strongly typed enums |
N2347 |
Partial |
Partial |
Forward declared enums |
N2764 |
Partial |
Partial |
Extended friend declarations |
N1791 |
Partial |
Partial |
Local and unnamed types as template arguments |
N2657 |
Yes |
Yes |
C++0x Core Language Features: Concurrency |
|||
exception_ptr |
N2179 |
No |
Yes |
Thread-local storage |
N2659 |
Partial |
Partial |
C++0x Core Language Features: C99 |
|||
__func__ |
N2340 |
Partial |
Partial |
C99 preprocessor |
N1653 |
Partial |
Partial |
long long |
N1811 |
Yes |
Yes |
Практически всё поддерживается полностью. “Partial” значит, что фича реализована не полностью или по-другому, не по стандарту. Например, __func__ не реализована, но __FUNCTION__ в Visual C уже давно работает.
Из моих любимых фич, которые реально упрощают и ускоряют работу - auto и лямбды.
А Rvalue references - еще более офигительная фича. Всё руки не доходят сделать тесты и написать статью со сравнением скорости работы STL контейнеров в VS9 и VS10 - разница будет в разы. При этом код менять не надо - просто перекомпилировать другим компилятором.
Программисты и другие айтишники обычно любят фантастику, так что эта запись может прийтись вам по вкусу.
Я написал небольшой рассказ Новый старый мир - про телепорты, виртуальную реальность и светлое будущее, в котором не последнюю роль сыграл русский программист. Вроде получилось неплохо.
Читайте и комментируйте, если есть желание.
Отличное видео, показывающее пошагово, как “хакеры” применяют методы социальной инженерии для взлома аккаунтов. В данном случае взломан аккаунт админа группы security.vkontakte.ru. Всего несколько минут, несколько грамотных вопросов и человек сам отдает свой аккаунт, а заодно и все свои емейлы (а значит и все остальные аккаунты на других сайтах)…
Не пожалейте 4-х минут, чтобы ознакомиться с этим видео:
Взлом security.vkontakte.ru from socialware on Vimeo.
Стандартный совет, как с этим бороться - уберите “секретный” вопрос на всех своих емейлах. Секретный вопрос - это самая дурацкая анти секьюрная фича. Именно так был взломан и ящик кандидата в вице-президенты США Сары Пэйлин пару лет назад.
Вот прямо сейчас зайдите в настройки своих емейлов и удалите там секретный вопрос или, если это невозможно, то введите случайный набор букв и цифр в ответ.
Антивирусная индустрия давно уже пытается бороться с проблемой числа новых вирусов, растущего в геометрической прогрессии. Всего 20 лет назад, в 1990 году, было известно не более 500 вирусов. В 1992 году их было уже до 2300. В 1994 - до 7500. В 1996 - больше 10000. В 1998 - 20000, а в 2000 году их было уже больше 50000. 2 года назад, в 2008 году, число вирусов превысило 1 миллион! Сейчас их уже несколько миллионов.
Любому технически подкованному человеку, глядя на эти цифры и прогрессию, становится понятно, что битва для “классических” антивирусов проиграна - в какой-то момент число вирусов станет просто слишком большим и станет невозможно хранить их сигнатуры в памяти. Например, даже если сигнатура одного вируса занимает всего 20 байт, то 3 млн вирусов - это уже 60 мегабайт. А через пару лет их будет 10млн - уже 200 мегабайт. А через 5 лет - гигабайт? Только для антивируса? Слишком много.
А еще надо учесть, что антивирусные базы приходят каждый день несколько раз из интернета - разве кто-то захочет скачивать каждый день десятки и сотни мегабайт новых антивирусных баз? Слишком много.
А ведь сигнатуры надо не просто хранить, но еще и сканировать их для каждого нового файла и находить - вирус это или нет. Сканировать базу из 5-10млн. вирусов на не очень мощной машине? Слишком долго и будет съедать слишком много CPU.
Так что, битва проиграна?
Конечно же нет.
Сначала появились всяческие проактивные защиты, поведенческие анализаторы и песочницы (фактически скрытые виртуальные машины, в которых запускался файл и проверялось, что он делал), системы предотвращения вторжений (HIPS) и другое.
Но проблема всех этих методов была в том, что они не давали хорошего процента обнаружения вирусов. В основном они защищали от какого-то процента Zero-hour вирусов (новые вирусы, которые только-только появились и еще не добавлены в базу сигнатур), но основная защита все равно возлагалась на базу с сигнатурами вирусов - надежнее этого нет ничего.
В итоге антивирусы становились все сложнее и сложнее и содержат сейчас в себе множество фич - базы сигнатур, HIPS-ы, песочницы и т.п. Все это, естественно, плохо сказывается на производительности компьютера. А пользователи жуть как не любят тормоза…
К тому же даже вся эта комплексная защита не дает возможности защищаться от вирусов мгновенно - если ты ловишь Zero-hour вирус, то с достаточно большой вероятностью он тебя заразит, т.к. его еще может не быть в базе сигнатур, а HIPS-ами и т.п. вирусы далеко не всегда ловятся.
Нужно что-то, что позволит защитить пользователя мгновенно - уже через минуту после появления нового вируса. И при этом не будет тормозить. И не будет занимать много памяти и других ресурсов компьютера.
И такое решение есть - это “облачные” антивирусы. Идея очень проста и все антивирусные компании ведут работы в этом направлении. Кто-то уже что-то зарелизил, кто-то тестирует, а кто-то дописывает. Но в конце этого - начале следующего года уже все антивирусные компании будут иметь свой вариант “облачного” антивируса.
“Облачный” антивирус состоит из двух частей: клиентская часть и серверная часть.
Клиентская часть устанавливается на компьютеры пользователей, когда они устанавливают антивирус. Она очень маленькая и не имеет никаких баз сигнатур вирусов или HIPS, или чего угодно. Задача клиентской части - посылать хэш неизвестных файлов на сервер и получать от сервера ответ - вирус это или нет. Если не вирус - все ок. Если вирус, то сервер также пришлет инструкции по удалению этого вируса (скрипт). Клиент просто запустит этот скрипт и все вычистится. Это если вирус уже установлен. Если же это заново скачанный и еще не запущенный файл, то он просто удалится или заблокируется. Понятно, что такой клиент будет очень небольшим и высокопроизводительным.
Вся сложность на стороне сервера. Именно сервер хранит все базы сигнатур вирусов. Сервер принимает от клиентов хэши файлов, ищет их в базе сигнатур вирусов и высылает ответ - вирус или нет. В случае, когда клиент присылает новый файл - именно сервер его анализирует, прогоняет через все HIPS-ы, продвинутые анализаторы и т.п. и в случае, если это вирус - мгновенно добавляет его в базу сигнатур. В итоге второй клиент, приславший точно такой же файл, сразу получит ответ, что это вирус. Для сложных файлов, которые не пойманы автоматически, существуют лаборатории анализа вирусов - они берут такие файлы, анализируют их “вручную” и решают - вирус или нет. Если вирус - добавляют в базу, и уже через секунду все клиенты знают, что это вирус. Клиенту не надо никаких баз для этого обновлять.
Плюсы “облачного” антивируса:
- Очень “легкий” клиент. Никакого оверхеда на компьютер пользователя. К тому же меньше кода - меньше багов.
- Не нужно скачивать несколько раз в день антивирусные базы на компьютер каждого пользователя.
- Очень быстрая защита - менее минуты в среднем между обнаружением нового вируса и добавлением его в базу.
Минусы “облачного” антивируса:
- Нужен постоянный доступ в интернет. Без интернета шанс обнаружения нового вируса у чисто “облачного” антивируса равен нулю.
- Медленный интернет с большими пингами тоже может создать некоторые замедления. По крайней мере вначале, пока все системные файлы не будут проанализированы.
- В некоторых компаниях может быть запрещена отсылка файлов в интернет. Например, если вы разрабатываете что-то и билдите exe файлы, то вы можете не захотеть их постоянно отсылать на проверку.
Плюсы безусловно побеждают минусы, по крайней мере для домашних юзеров. И в то же время нельзя сказать, что все вдруг кинутся и будут ставить только “облачные” антивирусы.
Нет - и старые антивирусы и “облачные” будут жить еще много лет бок о бок.
А что будет через 5 лет в этой индустрии предсказать не может никто - слишком быстро всё меняется…
Похожие статьи:
Новый червь Downadup
Поддельные антивирусы
Сделай свой интернет безопасным
Страшилки: зачем нужен антивирус?
Уже несколько дней безуспешно пытаюсь соединить C++ и Flash Media Server через RTMP протокол. Задача простая - проиграть live звуковой поток с сервера с помощью C++ или C#. Но Adobe сделала всё, чтобы усложнить эту задачу - официальная документация по RTMP ужасна, а в логах сервера нет ничего полезного.
То, что в Action Script делается в несколько строк кода - практически невозможно сделать в других языках, так как нет рабочих готовых библиотек для RTMP.
Как бы то ни было, но RTMP я осилил и с сервером соединяюсь успешно, а вот аудио поток никак не покоряется…
Но написать я хотел не про это. Для тестирования я пишу этот проект с помощью Visual Studio 2010.
Из хорошего в ней - новые фичи.
Наконец-то Visual Studio научилась компилировать проекты на лету, прямо когда ты набираешь код. Сразу подчеркивает ошибки и при наведении на них пишет подсказки. Прямо, как Eclipse и Java.
Другая полезная фича - поддержка нового стандарта C++0x, но про это я еще напишу отдельный пост.
Но и багов в новой студии предостаточно:
Эти ошибки уже пугают, учитывая, что я ничего сложного сделать не пытался и проекты мои очень маленькие.
В продакшене VS2010 я не порекоммендовал бы использовать пока что.
Люди по всему миру одинаковы в одном параметре - они используют слишком простые пароли в интернете.
Не думаю, что те, кто меня читают, подвержены этой проблеме - все же люди из IT индустрии,так что должны использовать серьезные пароли.
Но тем интереснее вам будет прочитать про то, насколько глупо поступает остальное большинство.
Два дня назад финский геймерский сайт Älypää был взломан и хакеры заимели пароли от 127000 аккаунтов (для Финляндии с 5млн населения это очень много - примерно как 4млн аккаунтов для России).
Какие самые популярные пароли на этом сайте? Вот топ-7 паролей (цифра - число таких паролей):
1. 449 - salasana
2. 328 - 123456
3. 206 - Älypää
4. 144 - kissa
5. 137 - johanna
6. 119 - perkelle
7. 113 - 54321
Несложно догадаться, что salasana - это “пароль” по-фински. На втором месте самый распространенный пароль в мире - 123456!
Да-да, именно этот незамысловатый пароль встречается чаще всего.
Третье место - название сайта.
Четвертое переводится, как “кот”.
Пятое - имя. Особо глупо ставить свое имя или имя своей возлюбленной в качестве пароля - надеюсь не надо объяснять почему.
6 место - самое любимое финское ругательство “перкелле”.
Эти 7 паролей в сумме встретились около 1500 раз в выборке из 127000 паролей.
А значит, по теории вероятностей, хакеру достаточно попробовать их на любом другом финском сайте, чтобы получить доступ к примерно 1% аккаунтов! А если взять все пароли из топ-50, то вероятность поднимается уже до 5-10%!
Вдумайтесь - хакер может легко получить доступ к 5-10% аккаунтов просто попробовав 50 одинаковых паролей для каждого аккаунта! Причем это может быть сделано очень быстро с помощью простого скрипта.
Думаете это только финская проблема?
Ничего подобного.
Вот вам топ-20 самых популярных паролей вконтакте с процентами:
123456 134 0,34%
123456789 85 0,21%
qwerty 85 0,21%
111111 51 0,13%
1234567890 41 0,10%
7777777 39 0,10%
123321 34 0,09%
666666 33 0,08%
1234567 31 0,08%
123123 29 0,07%
12345678 26 0,07%
qwertyuiop 26 0,07%
qazwsxedc 25 0,06%
000000 23 0,06%
любовь 23 0,06%
555555 22 0,06%
zxcvbnm 22 0,06%
654321 19 0,05%
gfhjkm 19 0,05%
1q2w3e4r 18 0,05%
Русские гораздо более ленивы - используют в основном цифры
Получается, что имея всего лишь 20 этих паролей любой хакер можете взломать 2-3% аккаунтов вконтакте, просто попробовав ввести все их для каждого аккаунта.
Конечно, можно сказать, что так оно и надо тем, кто использует такие пароли.
Но ведь люди же могут и не догадываться чем это грозит.
А вот топ-20 самых популярных паролей в англоязычном мире ():
Популярность Пароль Найдено штук
1 123456 290731
2 12345 79078
3 123456789 76790
4 Password 61958
5 iloveyou 51622
6 princess 35231
7 rockyou 22588
8 1234567 21726
9 12345678 20553
10 abc123 17542
11 Nicole 17168
12 Daniel 16409
13 babygirl 16094
14 monkey 15294
15 Jessica 15162
16 Lovely 14950
17 michael 14898
18 Ashley 14329
19 654321 13984
20 Qwerty 13856
У пользователей англоязычного интернета явно выдумка лучше работает, чем у тех, кто сидит вконтакте. Хотя опять же - слишком много паролей с именем и разными вариациями цифр 123456. И в целом уровень защищенности ненамного выше.
Имея список из 5000 популярных паролей шанс на успешный взлом аккаунта достигает 20%. 20%! Каждый пятый аккаунт может быть взломан простейшим скриптом, по очереди посылающем 5000 паролей!
В интернете явно что-то надо менять и заставлять пользователей вводить сложные пароли.
И тут возникает обратная сторона проблемы - пользователи не любят и нехотят вводить сложные пароли! Им проще отказаться заходить на сайт, который требует от них ввести как минимум 6 разных символов в пароле, включая цифры, буквы и знаки препинания.
В итоге получается, что сайты заведомо подвергают своих пользователей риску, разрешая им вводить любой примитивный пароль, зато никого не отталкивают сложностью.
Как же можно решить эту проблему не отпугнув пользователей, но в то же время защитив их аккаунты? Есть идеи?
Похожие статьи:
Сделай свой интернет безопасным
Поддельные антивирусы
Страшилки: зачем нужен антивирус?
Новый червь Downadup
По мотивам сегодняшнего обсуждения, где меня не раз спрашивали про мое отношение к гикам, родился комикс.
Это комикс про отличие между обычными людьми и гиками:
Не судите строго. Я программист и это мой первый созданный рисунок
И несколько слов про мое отношение к гикам (учитывая, что я и сам - гик). Я ни в коей мере не считаю, что гики - это плохо. Гики - это меньшинство. Непонятное меньшинство. Меньшинство, готовое тратить свое время на ненужные большинству вещи - будь то ковыряние в компьютерах или научные исследования.
И именно это меньшинство сейчас двигает человечество вперед семимильными шагами. Ибо если не будет гиков - развитие остановится, т.к. большинство людей не хочет и не готово тратить свое драгоценное время на улучшение чего-то или на создание нового. И только гики готовы.
Если гик один, то он ничего не сможет улучшить. Но когда гиков миллионы, как сейчас, то они способны сделать что угодно и изменить жизнь всех окружающих.
Это мы сейчас и видим - вся современная компьютерная индустрия и интернет были созданы классическими гиками.
Так что как бы большинство людей не относилось к нам, гикам, но именно благодаря нам у них есть то, что они так любят - автомобили (ведь и Генри Форд - это Гик с большой буквы), фэйсбук и вконтакте, email-ы, цифровые фотоаппараты, сотовые телефоны и т.п. - всё создано гиками.
Гики - двигатель прогресса!