Как стать автором
Поиск
Написать публикацию
Обновить
26
0
Mikhail Kulincev @kulinich

Пользователь

Отправить сообщение

Отладка драйверов под Windows: VirtualBox+WinDbg

Время на прочтение3 мин
Количество просмотров23K

Предисловие


Однажды мне понадобилось написать драйвер под Windows XP SP2. Сразу встал вопрос отладки. Уж очень не хотелось использовать мудреный SoftIce, ребутиться при кадждой ошибке или делать откаты. Поэтому было решено использовать виртуалку VirtualBox, которой я частенько пользуюсь и характеристиками которой вполне доволен, и отладчиком Windows Debugger от Microsoft. Через несколько часов в окошке WinDbg радостно замаячили строчки на Си, и было решено сделать «напоминалку», которая получилась неплохим «HowTo». Итак, начнем…
Читать дальше →

Несколько слов о мотивации, времени, целях и людях

Время на прочтение4 мин
Количество просмотров21K
image

Первая вещь, которую необходимо знать. Существует два типа целей.


Первый – это те, которые надо достигать. Надо зарабатывать деньги, чтобы не умереть от голода, надо развиваться, чтобы быть востребованным и прочее. Это очевидно и мало у кого вызывает вопросы, такие цели нельзя не достигать.

Второй – это то, что хочется. Это и есть мотивация.

Если вам интересно, как получить максимальный результат в самый короткий срок, конкретные советы по обретению мотивации и опыт, как лично мой, так и известных людей – добро пожаловать
Читать дальше →

17 простых советов для повышения продуктивности

Время на прочтение3 мин
Количество просмотров33K
Эти советы — не очередная компиляция из книг и блогов, посвященных продуктивности. Каждый совет основан на моём личном опыте. На каждый совет я мог бы дать гарантию, если бы гарантия на советы была возможна в принципе.

Вступление окончено, переходим к советам!
Читать дальше →

Организация памяти

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

И так, чтобы понять организацию памяти от вас потребуется знания некоторых базовых понятий, таких как регистры, стек и тд. Я по ходу попробую объяснить и это на пальцах, но очень кратко потому что это не тема для этой статьи. Итак начнем.
Читать дальше →

Скромное руководство по прохождению интервью: часть 1

Время на прочтение5 мин
Количество просмотров30K
Пост подготовлен с целью помочь программистам при подготовке к собеседованиям по программированию. Здесь рассматриваются все основные темы, которые, как минимум, желательно знать перед собеседованием. Использован собственный опыт, опыт и рассказы коллег, специализированная литература.
Некоторые рассмотренные здесь темы могут вообще не пригодиться некоторым программистам, а могут и быть обязательными, решать вам. Мой совет – старайтесь как можно больше изучать темы/разделы/аспекты указанные здесь.
И так, в качестве обязательных знаний:
  • Структуры данных
  • Алгоритмы и «концепции»
  • Язык программирования

Читать дальше →

Свой инструмент нужно знать в лицо: обзор наиболее часто используемых структур данных

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

Вопрос: Почему поиск в python dict на больших объемах данных быстрее чем итерация по индексированному массиву?

Ответ: В dict хранятся хэши от ключей. Каждый раз, когда мы ищем в dict значение по ключу, мы сначала вычисляем его хэш, а потом (внезапно), выполняем бинарный поиск. Таким образом, сложность составляет O(lg(N))!

На самом деле никакого бинарного поиска тут нет. И сложность алгоритма не O(lg(N)), а Amort. O(1) — так как в основе dict питона лежит структура под названием Hash Table.

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

Бесплатные книги

Время на прочтение3 мин
Количество просмотров60K
Несколько книг по разным темам, которые находятся в открытом доступе.

Основы программирования
Читать дальше →

Знакомимся с PayPal API

Время на прочтение13 мин
Количество просмотров87K
На данный момент, PayPal — это самая популярная платформа электронных платежей. Именно то, насколько легко можно открыть счет и начать получать на него средства, по сравнению с традиционными способами получения платежей, и является причиной #1 его запредельной популярности. Второй причиной, многие со мной согласятся, является мощный API, предоставляемый PayPal. В этом топике я по порядку разложу все способы и трюки, связанные с работой PayPal API, чтобы вы избежали проблем с его интеграцией.
Читать дальше →

Вводный видеокурс по информационной безопасности

Время на прочтение3 мин
Количество просмотров22K
Год назад сотрудники факультета ВМК МГУ имени М. В. Ломоносова и компании Яндекс начали читать спецкурс по информационной безопасности, который растянулся на целый учебный год, и разбит на два тематических раздела: «Введение в информационную безопасность» и «Практические аспекты сетевой безопасности».

В порядке эксперимента курс сопровождала аудио- и видеозапись лекций, а также вики для размещения материалов по курсу. Закончив за лето обработку видеоматериалов, предлагаем получившийся видеокурс широкой публике, то есть вам. Все материалы опубликованы под лицензией CC-BY-SA 3.0.

Я.Видео: первая часть, вторая часть.
Читать дальше →

Расширение функциональности не имея исходного кода

Время на прочтение4 мин
Количество просмотров3.3K
Думаю, у каждого из вас было ощущение, что в той, или иной программе не хватает какой-нибудь must have фичи. Если программа идет с исходным кодом, то проблем не возникает. Любой желающий может дописать нужную функциональность. А что если программа закрытая? Не стоит отчаиваться, это не пропащий случай. Сейчас расскажу, как можно дописать за автора то, чего не хватает.
Читать дальше →

Сборка Mingw в Windows своими руками

Время на прочтение8 мин
Количество просмотров71K
В сети можно найти много описаний сборки mingw и GNU утилит под ним. Я тоже решил написать свой вариант, так как во-первых он на русском. Во-вторых используются последние стабильные исходники (по состоянию на 27.01.2011). В третьих добавлена оптимизация циклов (graphite loop optimizations). В четвертых я описываю причины выбора тех или иных опций конфигурации исходников. В пятых, чтобы не забыть.
Читать дальше →

Кто такие Anonymous

Время на прочтение3 мин
Количество просмотров36K

В последнее время на Хабре все чаще проскакивает название Anonymous. Однако, практически во всех случаях наблюдается неправильное понимание идеологии, структуры и методов работы «Анонимусов». Я попытаюсь разъяснить некоторые элементарные вещи.
Читать дальше →

Как поднять свой уровень в искусстве программирования. План из шести шагов

Время на прочтение2 мин
Количество просмотров21K

Вольный перевод списка из довольно удачных способов для повышения своего уровня, как программиста.
Читать дальше →

Как мотивировать себя, когда кончился энтузиазм

Время на прочтение3 мин
Количество просмотров17K
Прочитал один из вопросов в разделе q&a и решил перевести статью на эту тему. Кто знает, может эти советы помогут человеку

Вас когда-нибудь переполнял энтузиазм и вдохновение для новых достижений?

Допустим, вы почувствовали такое в начале большого дела. К примеру, вы определились, что хотите наконец похудеть, или в этом году вы задумали открыть небольшой бизнес, о котором вы мечтали.

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

Opensource-проект с нуля

Время на прочтение2 мин
Количество просмотров22K
Долгое время боялся создавать этот топик, но всё же решился. Надеюсь, что не зря. Периодически на хабре и не только на нём появляются вопросы о том, к какому бы opensource-проекту присоединиться (1, 2, 3, 4, ...etc), ответов на которые к моему удивлению не много. У меня периодически появляется свободное время и хочется поучаствовать в одном из таких проектов. И я пытался, слал pull request'ы в некоторые проекты на гитхабе, их принимали, начинал какие-то свои проекты и так и не доводил их до конца. Но это всё не то…

… Хочется собрать несколько человек, обсудить и создать какой-то интересный проект, пусть без революционной идеи, пусть без новизны, пусть без профита, но свой. Чтобы видеть зарождение с нуля, видеть новые коммиты, добавляющие функциональность, читать чужой код и чужие комментарии, учась чему-то новому, получать опыт, обсуждать, спорить. Хочется потом иметь возможность указать в резюме ссылку на проект, в создании которого я участвовал.
Я пытался искать «opensource проекту требуется разработчик» и ничего актуального не нашёл. То есть нашёл полуразработанные проекты на java, php, но это, опять же, не то. Мои интересы: Python, C/C++, (Boost, LLVM, Qt...).

Наверняка я не один такой, поэтому надеюсь на отклики / идеи / ссылки на интересные проекты в очень зачаточном состоянии. Может быть соберём это всё в одном топике и он будет полезен не только мне.
Читать дальше →

Вычисление простых чисел на шаблонах C++

Время на прочтение4 мин
Количество просмотров23K
В этом посте я расскажу как сделать совершенно бесполезную вещь — вычислять простые числа при помощи шаблонов C++.

Алгоритмы проиллюстрированы кодом на Scheme, поэтому осторожно: скобочки!

Читать дальше →

Многопоточность, общие данные и мьютексы

Время на прочтение5 мин
Количество просмотров58K

Введение


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

Для блокировки общих данных от одновременного доступа необходимо использовать объекты синхронизации.

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

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

Ниже рассматривается работа с мютексами в Windows и Unix, подобная идея может быть использована при работе с другими объектами синхронизации.

Эта идея является частным случаем методики «Выделение ресурса — есть инициализация (RAII)».

Далее

10 способов улучшить свои навыки программирования

Время на прочтение4 мин
Количество просмотров89K

1. Выучить новый язык программирования


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

Среди языков программирования отличный познавательный эффект и наверстывание опыта дают: Lisp (или Scheme), Форт, PostScript или Factor (стековые языки программирования), Haskell (строго типизированный, чистый функциональный язык) либо OCaml (объектно-ориентированный язык функционального программирования), Пролог (логическое программирование), Erlang (отличные паралельные вычисления).

Читать дальше →

Результаты зарплатного опроса

Время на прочтение2 мин
Количество просмотров2.8K
Какое-то время назад я проводил анкетирование на тему зарплат разработчиков. Пришло время рассказать о полученных результатах.

Всего было заполнено около 1900 анкет разработчиками из более чем 300 городов, преимущественно из России и Украины.

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

Читать дальше →

Пишем игру для Android c помощью AndEngine. Часть 1

Время на прочтение4 мин
Количество просмотров55K
Всем привет.
Сегодня я расскажу вам как с помощью AndEngine написать небольшую игру. Стаья получилась довольно большая и, чтобы не утомлять читателя, пока мы остановимся на первой ее части. Все что нужно от читателя — это знание java, ООП и умение обращаться с Eclipse и Android SDK. Забегая вперед, у нас получится что то похожее на Mirrors Maze либо Laser Logic.
Вторая часть статьи.
Третья часть статьи.
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность