Как стать автором
Обновить
0
0

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

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

Segmentation Fault (распределение памяти компьютера)

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


Когда я делаю ошибку в коде, то обычно это приводит к появлению сообщения “segmentation fault”, зачастую сокращённого до “segfault”. И тут же мои коллеги и руководство приходят ко мне: «Ха! У нас тут для тебя есть segfault для исправления!» — «Ну да, виноват», — обычно отвечаю я. Но многие ли из вас знают, что на самом деле означает ошибка “segmentation fault”?

Чтобы ответить на этот вопрос, нам нужно вернуться в далёкие 1960-е. Я хочу объяснить, как работает компьютер, а точнее — как в современных компьютерах осуществляется доступ к памяти. Это поможет понять, откуда же берётся это странное сообщение об ошибке.

Вся представленная ниже информация — основы компьютерной архитектуры. И без нужды я не буду сильно углубляться в эту область. Также я буду применять всем известную терминологию, так что мой пост будет понятен всем, кто не совсем на «вы» с вычислительной техникой. Если же вы захотите изучить вопрос работы с памятью подробнее, то можете обратиться к многочисленной доступной литературе. А заодно не забудьте покопаться в исходном коде ядра какой-нибудь ОС, например, Linux. Я не буду излагать здесь историю вычислительной техники, некоторые вещи не будут освещаться, а некоторые сильно упрощены.
Читать дальше →
Всего голосов 74: ↑71 и ↓3 +68
Комментарии 10

Здравствуйте, я Meklon и я кофеин-зависимый

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


Другие статьи цикла:
Хроники лаборатории: как мы молотый кофе считали софтом для анализа клеточных структур
Компот из кофейных сухофруктов. Знакомимся с каскарой — лучшим другом велосипедиста

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

На Хабре/Гиктаймсе уже не раз обсуждался кофе и все, что с ним связано. Я решил написать пост, посвященный этому напитку и различным эффектам кофеина с медицинской точки зрения. Если хватит времени — возможно это будет цикл статей с экспериментами над людьми, computer vision и прочим непотребством. Увидим. А пока, товарищи кофеиноманы и им сочувствующие, добро пожаловать под кат.
Получить свою порцию кофеина
Всего голосов 97: ↑95 и ↓2 +93
Комментарии 335

Гаджеты для бега: от простого к очень простому

Время на прочтение 6 мин
Количество просмотров 203K
На Хабре уже не раз и не два обращались к теме поддержания физической формы, для такой профессии как айтишник, админ и тому подобные властители неведомого серверного оборудования.
Были темы и просто о пользе бега, со стандартной теоретической подготовкой, и о маленьком, но хитром специальном устройстве от Nike, украшающем беговой процесс. Однако нас, как людей технических до мозга костей, интересует иное: можно ли в процессе беговой тренировки, использовать всю мощь технического прогресса для достижения максимальных результатов?
Поэтому данная статья больше перекликается с давним описанием: нескольких беговых девайсов, с учетом прошедших лет и текущего положения дел в области приборов для спорта и бега.
Все, что описано в статье, испытано на собственном опыте, все скриншоты и результаты взяты из личных данных.

Исходные данные: один условный «айтишник», перешагнувший рубеж 30 лет, и 90 кг.
Необходимо: заинтересовать техногика простыми тренировками, помогающими сохранить физическую форму, сбросить вес и укрепить сердце.


А теперь встали и пошли на тренировку!
Всего голосов 55: ↑52 и ↓3 +49
Комментарии 179

Нейробиология и искусственный интеллект: часть первая — ликбез

Время на прочтение 6 мин
Количество просмотров 126K
Так уж получилось, что я уже давненько читаю Хабр и особенно раздел про искусственный интеллект, однако до сих пор так и не отважился внести свою лепту в общий уровень энтропии.

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

В данной статье я в сжатой форме попытаюсь дать ответы на следующие вопросы:
— что же такое нейрон, как он устроен и работает?
— что происходит в синапсах, когда нейроны общаются друг с другом?

А в следующей (-щих):
— как интеллект и сознание связаны с активностью нейронов? (здесь же про то, как информация обрабатывается мозгом, нейропластичность, квантовую теорию сознания, сон и т.д.)
Читать дальше →
Всего голосов 68: ↑64 и ↓4 +60
Комментарии 43

«Плотность времени» (с) Н.А.Козырев

Время на прочтение 9 мин
Количество просмотров 165K
Эпиграф:
— А чем вам не нравится Второй Закон Термодинамики?
— Ну, хотя бы тем, что Больцман повесился. И сын Циолковского тоже.
ответ приписывают Н.Козыреву

Кто такой Николай Александрович Козырев?
— обладатель «алмазной звезды» Международной Академии Астронавтики (МАА) — высочайшей награды среди астрономов (только двое советских граждан имели такую награду — Ю.Гагарин и Н.Козырев).
— автор теории протяженных звёздных атмосфер
— автор теории солнечных пятен
— создатель «Несимметричной причинной механики» одной из интереснейших научных теорий о свойствах времени.

О последнем пункте и пойдет речь.
Читать дальше →
Всего голосов 142: ↑109 и ↓33 +76
Комментарии 148

Отладка Java приложения, которое нельзя остановить. Ловим экзотику выполнения самыми доступными средствами — BTrace подход

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

Java приложения — значит в современном Java мире возможность встретить такое процентов на 90%, а то и больше (рассматриваем самые распространённые окружения, HotSpot based JVM версии от 1.6)
которое нельзя остановить — приложение работает, и перезапускать его по тем или иным причинам категорически нельзя
экзотика — нечто такое этакое, что не каждый день в голову взбредёт поймать (определённая последовательность вызова методов, диковинные комбинации значений параметров, ...)
доступными средствами — бесплатно, работоспособно, эффективно, легко, просто и т.д и т.п. В данной статье рассмотрен замечательный инструмент BTrace kenai.com/projects/btrace

И само собой в код Java приложения заранее ничего специально не добавлено касательно средств дебага…

Как же это ?...
Всего голосов 31: ↑29 и ↓2 +27
Комментарии 22

Полевые испытания астротрекера

Время на прочтение 4 мин
Количество просмотров 99K
В предыдущем посте я рассказал как можно сделать астротрекер за два вечера. Настало время проверить его работу и сделать первые выводы.

Вот пример фото, сделанного с его помощью:


Ну а теперь подробности
Всего голосов 161: ↑159 и ↓2 +157
Комментарии 59

Внутренняя USB зарядка

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


У каждого из нас есть несколько девейсов с USB зарядкой. Рядом с кроватью у меня удлинитель с 5 розетками, 3 розетки заняты под USB зарядки. Такой вариант зарядки телефонов мне давно не нравился из за своих габаритов и не эстетичного вида, хотелось гармонии.
Озадачившись этой проблемой я стал искать внутренние USB розетки. У Gira и Legrand есть варианты с 1 USB розеткой и блоком питания на 1 А и с 2 USB розетками и блоком питания на 1.5 А, но с 4 USB розетками нет ни у кого. Поняв, что это все мне не подходит, да и цены на внутренние USB розетки конские, я решил сам изготовить розетку с 4 USB портами и блоком питания. В качестве блока питания использовал зарядку от iPad 2.4 А как самую компактную и мощную.
Читать дальше →
Всего голосов 100: ↑91 и ↓9 +82
Комментарии 107

Последствия OpenSSL HeartBleed

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

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

Что произошло?

1 января 2012 года, Robin Seggelmann отправил, а steve проверил commit, который добавлял HeartBeat в OpenSSL. Именно этот коммит и привнес уязвимость, которую назвали HeartBleed.

Насколько она опасна?
Эта уязвимость позволяет читать оперативую память кусками размером до 64КБ. Причем уязвимость двусторонняя, это значит, что не только вы можете читать данные с уязвимого сервера, но и сервер злоумышленника может получить часть вашей оперативной памяти, если вы используете уязвимую версию OpenSSL.

Злоумышленник может подключиться к, предположим, уязвимому интернет-банку, получить приватный SSL-ключ из оперативной памяти и выполнить MITM-атаку на вас, а ваш браузер будет вести себя так, будто бы ничего и не произошло, ведь сертификат-то верный. Или просто может получить ваш логин и пароль.

Каков масштаб трагедии?

По моим оценкам, примерно ⅔ вебсайтов используют OpenSSL для HTTPS-соединений, и примерно ⅓ из них были уязвимы до сегодняшнего дня.

Уязвимость была/есть, как минимум, у:
  • 10 банков
  • 2 платежных систем
  • 8 VPN-провайдеров
  • mail.yandex.ru
  • mail.yahoo.com


Используя уязвимость, с mail.yandex.ru можно было получить письма пользователей вместе с HTTP-заголовками (и, подставив cookie, зайти под этим пользователем), а, например, в АльфаБанке получать незашифрованные POST-данные с логином и паролем от Альфа-Клик (интернет-банкинг).
Читать дальше →
Всего голосов 201: ↑194 и ↓7 +187
Комментарии 194

JPHP — Как он работает. История создания

Время на прочтение 16 мин
Количество просмотров 30K
В этой статье я расскажу более подробно об истории проекта JPHP и каким образом он был разработан с технической стороны. Текст будет интересен как простым разработчикам PHP, так и любителям компиляторов. Я постарался описать все на простом языке.

image

JPHP это компилятор языка PHP для Java VM. Две недели назад я писал статью о проекте. Похожие проекты — JRuby для ruby, Jython для python. После публикации первой статьи о JPHP, проект за два дня набрал 500 звёзд на гитхабе и успел засветиться не только в РУнете, но и на зарубежных ресурсах, успел побывать на первом месте в рейтинге гитхаба.
Читать дальше →
Всего голосов 125: ↑115 и ↓10 +105
Комментарии 45

Десятка лучших консольных команд

Время на прочтение 2 мин
Количество просмотров 197K
imageВ данном посте я расскажу о наиболее интересных командах, которые могут быть очень полезны при работе в консоли. Однозначных критериев определения какая команда лучше другой — нет, каждый сам для своих условий выбирает лучшее. Я решил построить список команд на основе наиболее рейтинговых приемов работы с консолью от commandlinefu.com, кладовой консольных команд. Результат выполнения одной из таких команд под Linux приведен на картинке. Если заинтересовало, прошу под кат.
Узнать больше
Всего голосов 382: ↑346 и ↓36 +310
Комментарии 215

Искусство понимать с полуслова. Расширение запроса в Яндексе

Время на прочтение 20 мин
Количество просмотров 30K
Сегодня мы расскажем о механизме, который позволяет поиску Яндекса находить именно то, что имел в виду пользователь, как бы кратко и небрежно он ни сформулировал свой запрос.

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

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

image
Почему нельзя просто так взять и расширить запрос.
Читать дальше →
Всего голосов 78: ↑75 и ↓3 +72
Комментарии 28

Путешествие через вычислительный конвейер процессора

Время на прочтение 16 мин
Количество просмотров 132K
Так как карьера программиста тесно связана с процессором, неплохо бы знать как он работает.

Что происходит внутри процессора? Сколько времени уходит на исполнение одной инструкции? Что значит, когда новый процессор имеет 12, или 18, или даже 31-уровневый конвейер?

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

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

Эта статья рассказывает, как устроен вычислительный конвейер x86 процессора.
Читать дальше →
Всего голосов 160: ↑159 и ↓1 +158
Комментарии 43

Оптимальная параллелизация юнит-тестов или 17000 тестов за 4 минуты

Время на прочтение 10 мин
Количество просмотров 27K
Сегодня мы поговорим про разработанную нами утилиту, которая оптимизирует тестирование PHP-кода с помощью PHPUnit и TeamCity. При этом нужно понимать, что наш проект — это не только веб-сайт, но и мобильные приложения, wap-сайт, Facebook-приложение и много чего ещё, а разработка ведется не только на PHP, но и на C, C++, HTML5 и т.д.

Методы, которые мы описываем, прекрасно адаптируются под любой язык, любую систему тестирования и любое окружение. Поэтому наш опыт может оказаться полезным не только разработчикам веб-сайтов на PHP, но и представителям других областей разработки. Кроме того, в ближайшем будущем мы планируем перевести нашу систему в Open Source ― без обязательной привязки к TeamCity и PHPUnit ― наверняка она кому-нибудь пригодится.
Читать далее
Всего голосов 66: ↑58 и ↓8 +50
Комментарии 31

Ранжирование в Яндексе: как поставить машинное обучение на поток (пост #1)

Время на прочтение 6 мин
Количество просмотров 51K
Сегодня мы начинаем публиковать серию постов о машинном обучении и его месте в Яндексе, а также инструментах, которые избавили разработчиков поисковой системы от рутинных действий и помогли сфокусироваться на главном — изобретении новых подходов к улучшению поиска. Основное внимание мы уделим применению этих средств для улучшения формулы релевантности, и более широко — для качества ранжирования.

image
Читать дальше →
Всего голосов 63: ↑56 и ↓7 +49
Комментарии 53

Тонкости оператора switch

Время на прочтение 6 мин
Количество просмотров 88K
Да, это целая статья по самому обычному switch в JDK 7. Бывает так, что накопленный материал кажется интересным и малоизвестным, а потом оказывается, что любая бабка у подъезда уже 50 лет знает об особенностях реализации switch. Но я попробую. Для затравки, предлагаю 3 вопроса:

  1. (Простой) Каков результат работы этого кода?
    switch(5){
    default: System.out.print(0);
    case 1: System.out.print(1); break;
    case 4: System.out.print(4);
    case 2: System.out.print(2);
    }

  2. Следующие 2 варианта практически одинаковы. Немного отличаются литералами.
    //Вариант 1
    switch("BBBBBB"){
    case "AaAaAa": break; 
    case "AaAaBB": break;
    case "AaBBAa": break;
    case "AaBBBB": break;
    case "BBAaAa": break;
    case "BBAaBB": break;
    case "BBBBAa": break;
    case "BBBBBB": break;
    }
    //Вариант 2
    switch("BBBBBB_8"){
    case "AaAaAa_1": break;
    case "AaAaBB_2": break;
    case "AaBBAa_3": break;
    case "AaBBBB_4": break;
    case "BBAaAa_5": break;
    case "BBAaBB_6": break;
    case "BBBBAa_7": break;
    case "BBBBBB_8": break;
    }
    Почему первый switch выполняется в несколько раз медленнее, по крайней мере, с отключенным JIT (-Djava.compiler=NONE)? Сами проверьте в цикле! JIT таким кодом не проведешь, но если немного пошаманить, то небольшая разница будет заметна.
  3. Какова вычислительная сложность алгоритма нахождения совпадающего значения среди n case-ов (по крайней мере, в JDK 7)?
Читать ответы и статью
Всего голосов 80: ↑68 и ↓12 +56
Комментарии 19

Таинственный FrontCache

Время на прочтение 4 мин
Количество просмотров 16K
Всё началось с того, что я в очередной раз ковырял в Eclipse Memory Analyzer дамп памяти Java-приложения и увидел такую интересную вещь:

С кодом HashMap я знаком весьма неплохо, но вложенного класса FrontCache никогда там не видел. Может, с последним обновлением JDK мне прислали обновлённый HashMap? Я заглянул в исходники, но слова «front» там не обнаружилось. Стало интересно, откуда же этот класс берётся и что он делает.
Читать дальше →
Всего голосов 81: ↑77 и ↓4 +73
Комментарии 23

О развитии IT в современной Северной Корее

Время на прочтение 3 мин
Количество просмотров 66K
Несколько дней назад ребята из The Pirate Bay распространили заявление о переезде своих серверов в довольно неожиданное место – Серверную Северную Корею. Спустя какое-то время выяснилось, что речь идёт об обычной шутке, но бурное обсуждение состояния IT-инфраструктуры в сегодняшней КНДР уже было не остановить. Ввиду того, что мне довелось бывать в этой стране, у нас незаслуженно имеющей репутацию «самой закрытой», я не мог не возразить авторам комментариев в стиле «да у них дюжина компов на всю страну». Ответом на мои высказывания явились просьбы поделиться собственными наблюдениями за уровнем технического развития корейских учреждений – что, собственно, я и сделаю в этом посте.
Читать дальше →
Всего голосов 180: ↑160 и ↓20 +140
Комментарии 153

Яндекс обогнал Microsoft в мировом поиске

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


Microsoft уступил Яндексу четвертое место в мировом поиске по числу поисковых запросов. По статистике ComScore, Microsoft переместился на пятое место, пропустив вперед поисковик из России. В Microsoft речь идет не только о поисковике Bing. В статистику входят также и другие сайты и сервисы, такие как microsoft.com, Windows Live и др. В Яндексе же учитывался не только поиск, но и другие сервисы, такие как карты, пробки, авто и др. Первая тройка выглядит без изменений. Это Google, Baidu и Yahoo!
Читать дальше →
Всего голосов 157: ↑139 и ↓18 +121
Комментарии 78

Статистические тесты в R. Часть 1: Бинарная классификация

Время на прочтение 5 мин
Количество просмотров 24K
Доброго времени суток. Хочу поделиться своими знаниями о работе со статистикой в R.
Многим из нас приходится сталкиваться с различными данными на работе и в повседневной жизни. Качественно и правильно их обработать и проанализировать не так сложно. В этой серии статей я покажу применения некоторых статистических тестов.

Заинтересовались? Добро пожаловать под кат.
Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 11
1

Информация

В рейтинге
Не участвует
Откуда
Sydney, New South Wales, Австралия
Работает в
Зарегистрирован
Активность