Pull to refresh
135
0
Руслан Ющенко @yruslan

User

Send message

Разбираемся в С, изучая ассемблер

Reading time11 min
Views93K
Перевод статьи Дэвида Альберта — Understanding C by learning assembly.

В прошлый раз Аллан О’Доннелл рассказывал о том, как изучать С используя GDB. Сегодня же я хочу показать, как использование GDB может помочь в понимании ассемблера.

Уровни абстракции — отличные инструменты для создания вещей, но иногда они могут стать преградой на пути обучения. Цель этого поста — убедить вас, что для твердого понимания C нужно также хорошо понимать ассемблерный код, который генерирует компилятор. Я сделаю это на примере дизассемблирования и разбора простой программы на С с помощью GDB, а затем мы используем GDB и приобретенные знания ассемблера для изучения того, как устроены статические локальные переменные в С.
Читать дальше →

Чему я научился за 8 месяцев в Microsoft

Reading time4 min
Views170K
image

Моя стажировка в Microsoft Windows Azure началась ровно два года назад, сразу после колледжа, и проходила она в той же команде, с которой я проработал последние восемь месяцев.

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

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

Итак, поехали.
Читать дальше →

Функторы, аппликативные функторы и монады в картинках

Reading time5 min
Views195K
Вот некое простое значение:


И мы знаем, как к нему можно применить функцию:


Элементарно. Так что теперь усложним задание — пусть наше значение имеет контекст. Пока что вы можете думать о контексте просто как о ящике, куда можно положить значение:


Теперь, когда вы примените функцию к этому значению, результаты вы будете получать разные — в зависимости от контекста. Это основная идея, на которой базируются функторы, аппликативные функторы, монады, стрелки и т.п. Тип данных Maybe определяет два связанных контекста:


data Maybe a = Nothing | Just a

Позже мы увидим разницу в поведении функции для Just a против Nothing. Но сначала поговорим о функторах!
Читать дальше →

Снова «Морской бой». Считаем число возможных расположений кораблей

Reading time6 min
Views35K
Раз уж неделя «Морского боя» на Хабре продолжается, добавлю и я свои два цента.
При попытке найти оптимальную стратегию для игры за компьютер довольно быстро приходим к такому приближению:

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

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


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

На первый взгляд, задача кажется неподъёмной. Число конфигураций представляется порядка 1020 (на самом деле их несколько меньше — ближе к 1015), так что на полный перебор времени уйдёт слишком много. Перебирать раскраски поля и оставлять только допустимые — не лучше: всё равно нам каждую комбинацию придётся просмотреть.

Что же ещё попробовать? Любой олимпиадник тут же ответит — динамическое программирование. Но как его организовать?

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

Необыкновенный способ генерации лабиринтов

Reading time6 min
Views87K
В этой статье я расскажу об одном необычном подходе к генерации лабиринтов. Он основан на модели Амари́ нейронной активности коры головного мозга, являющейся непрерывным аналогом нейронных сетей. При определенных условиях она позволяет создавать красивые лабиринты очень сложной формы, подобные тому, что приведен на картинке.

Вас ждет много анализа и немного частных производных. Код прилагается.
Прошу под кат!

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

RiSCiSO — ещё одна группа сценеров, попавшая под удар ФБР

Reading time7 min
Views41K


29 июня 2005 года во время операции Site Down в числе других была атакована сцен-группа широкого профиля RiSCiSO, работавшая почти со всеми видами вареза: программами, играми и фильмами. Из числа участников группы 19 человек было арестовано.

Лидер группы, 27-летний австралиец Шон О'Тул, должен был явиться в суд Чикаго 22 февраля 2006 года. По требованию ФБР в его доме в городе Перт (Австралия), где он проживал с родителями, был произведен обыск и изъято многочисленное оборудование. Ему грозило до 5 лет тюрьмы, штраф в 250 тысяч и требование о возмещении убытков в миллион долларов. Однако, в назначенный день он не явился в суд, и, несмотря на объявленный международный розыск, так и не был найден.

В обвинительном акте, который и сегодня доступен на сайте Министерства юстиции США, можно прочитать подробности о личностях подозреваемых (большинство из них были IT-специалистами), их ролях в группе, топсайтах, которые они использовали, и даже о том, как их удалось раскрыть.
Читать дальше →

Про мнимые и реальные оптимизации в 10 раз, целительный SSE, и все такое

Reading time6 min
Views38K
По мотивам одного вчерашнего поста про оптимизацию условных переходов при расчете x=sign(a,b)*min(abs(a), abs(b)) якобы в 10 раз. Краткая сводка:

  • оптимизация налицо, но размер мнимый: не в 10 раз, а 2.5 раза;
  • бенчмарки надо делать правильно: не надо мерить CPU stalls, RAM bandwidth итп вместо исследуемой функции;
  • бенчмарки надо делать правильно: иначе могут дико дрожать;
  • выставлять только приоритет прикольно, но на коротких бенчмарках зря: +0.5% скорости, -15% дрожания;
  • нужно мерить исследуемую функцию и только ее, только так получаешь корректные данные;
  • нужно греть проц, нужно считать минимум из N прогонов/секунд, только так побеждаешь дрожание;
  • нужно пользовать SSE, с ним получилось 8.6 раз, причем код… читается.

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

Skype — Да, мы читаем все, что Вы пишете

Reading time4 min
Views202K
Вольный перевод статьи на тему приватности переписки в Skype.

Все, кто использует Skype, обязан согласится с пунктом, что компания может читать все, что там пишут (смотри Положение о конфиденциальности в Skype). Компания Heis, совместно с немецкими коллегами, выяснила путем простейшего эксперимента, что Microsoft активно использует эту возможность, но очень странным образом.

Практически сразу после отправки сообщения в Skype, в котором содержалась ссылка на некий https ресурс, данный ресурс был посещен с IP, принадлежащего Microsoft HQ в Редмонде, США.

UPD: Статья дополнена предположениями о возможной причине произошедшего. Опубликовано 17 Мая 2013 на The-H-Security.
Читать дальше →

Что делать айтишнику в российской армии

Reading time4 min
Views322K

«Делать ему там нечего» — ответите вы и будете абсолютно правы. Однако, согласно законодательству Российской Федерации, призыву в ряды Вооруженных Сил РФ подлежит практически всё половозрелое мужское население страны, так что многим айтишникам отслужить-таки придется, хотя и очень не хочется, да. Этой статьёй я хочу примерно обрисовать перспективы для тех, кому хочется (необходимо, придется, заставят — нужное подчеркнуть) отслужить, но желательно всё же поближе к компьютерам. Ну и просто любопытным.
Читать дальше →

История администратора трекера, посаженного за выкладывание одного фильма

Reading time5 min
Views65K


Варезная сцена всегда существовала как вещь в себе — релизы никогда не должны были покидать их замкнутой среды. По крайней мере так предполагалось. Но не все сценеры были с этим согласны, например, Скотт МакКауслэнд (Scott McCausland), который примерно 10 лет назад с группой друзей организовал торрент трекер EliteTorrents.

Трекер стал одним из самых известных, что оказалось весьма опасно, учитывая, что Скотт проживал в США и зарегистрировал домен на своё имя. В 2005 году на сайте трекера появилось объявление. В нем говорилось:
Этот сайт закрыт ФБР. Владельцы и все, кто им пользовался — под следствием. Распространять закопирайченный материал — незаконно, даже если вы делаете это бесплатно в интернете.

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

Под катом — перевод интервью с ним в июле 2007-го, когда его только выпустили, и коротко о том, как сложилась его дальнейшая судьба.
Читать дальше →

Фотографии насекомых в полёте, полученные с помощью старого HDD

Reading time2 min
Views157K


Фотограф Линден Гледхилл увлекается макросъёмкой мелких природных объектов — снежинок, цветов, насекомых. Один из самых технически сложных видов такой макросъемки — съемка насекомых в полёте. Для того, чтобы успеть «засечь» насекомое в нужный момент, недостаточно человеческой реакции — приходится использовать лазерные или инфракрасные детекторы, которые срабатывают, когда насекомое блокирует лучи лазеров, пересекающиеся в фокальной точке. Не хватает и скорости срабатывания затвора самого фотоаппарата, которая в лучшем случае составляет от 50 до 100 миллисекунд, поэтому фотографии делают только со вспышкой — в тёмном помещении, при постоянно открытом затворе, либо с помощью высокоскоростного внешнего затвора, который предотвращает засветку от окружающих источников света.

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

Первый украинский SSD диск или вторая жизнь швейцарского компьютера

Reading time8 min
Views197K
К сожалению, огромное количество предприятий в Украине работают на устаревшем промышленном оборудовании, изготовленном пару десятков и более лет назад. После развала Союза и распродажи на металл станков местной разработки оставшиеся на плаву предприятия начали приобретать на западе подержанные станки с числовым программным управлением: плазморезы, дерево-, металлообрабатывающие станки, гравировальное оборудование и т.п. Но относительно невысокая стоимость такого железа имеет и обратную сторону – простои из-за отказов, недоступности запчастей, полного отсутствия поддержки.
Этот пост о том, как простая замена винчестера в деревообрабатывающем станке потребовала создания собственного твердотельного диска, и с какими трудностями мы столкнулись при его разработке. Кому интересно, как создавался первый украинский «винчестер-SSD», прошу под кат.

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

OpenFOAM с точки зрения программиста-физика

Reading time11 min
Views41K

В компании Intel разрабатывается довольно много ПО для моделирования различных физических процессов. В некоторых из них мы используем пакет OpenFOAM, и в этом посте я постараюсь дать краткое описание его возможностей.
Что такое OpenFOAM? Это, пользуясь термином Википедии, открытая (GPL) платформа для численнного моделирования — в первую очередь для моделирования, связанного с решением уравнений в частных производных методом конечных объемов, и в самую первую очередь — для решения задач механики сплошных сред.
КПДВ: эволюция двух несмешивающихся жидкостей разной плотности, изначально разделенных тонкой перегородкой (пример «lockExchange» из стандартной поставки OpenFOAM). Переходные цвета обозначают ячейки сетки, где присутствует доля и той, и другой жидкости (более точно: при симуляции используется метод объёма жидкости).

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

Стивен Вольфрам провёл математический анализ социальных сетей

Reading time3 min
Views108K

Изменение места жительства пользователей Facebook

Математик и программист Стивен Вольфрам известен как автор программы Mathematica и научного поисковика Wolfram Alpha. Несмотря на большой объём текущей работы, Стивена всегда интересовал вопрос: можно ли математическими методами проанализировать траекторию жизни человека.
Читать дальше →

Взламываем шифры с Python

Reading time1 min
Views52K
Опубликованное неделю назад издание «Взламываем секретные шифры с Python» (Hacking Secret Ciphers with Python) — это учебник по Python для новичков. Авторы разумно рассудили, что учиться программированию нужно на конкретных практических задачах. А что может быть интереснее, чем взлом зашифрованных сообщений?

Книга включает в себя исходный код нескольких шифров и программы для взлома этих шифров. В числе программ на Python — шифр Цезаря, шифр перестановки, шифр простой замены, мультипликативный и аффинный шифры, шифр Виженера и программы для взлома каждого из них. В последней главе рассматривается современный шифр RSA и криптография с открытым ключом.

Книга лежит в открытом доступе, её можно бесплатно скачать в формате pdf (зеркало).
Читать дальше →

Захабренный договор на разработку сайта, дизайна, софта. Версия 1.1

Reading time18 min
Views246K
На сайте немало постов о том, какие условия нужно включать в договор на создание сайтов и программ (краткий список ниже), но нет договора в формате, который можно взять за основу для составления своего договора. Мы изучили условия из постов (спасибо авторам), подумали над ними, переработали и учли в предлагаемой на ваш суд форме договора. Так что договор пока можно считать частично «захабренным».


Договор авторского заказа

4 ошибки, которые я допустил как технический директор

Reading time6 min
Views148K
На самом деле, ошибок было, безусловно, больше, но сейчас, спустя два года после начала работы в должности технического директора одного крупного мобильного аутсорсера, именно эти 4 кажутся мне главными.

На позицию CTO я пришёл не через стандартный путь “Developer -> Senior -> Team lead -> CTO”, а через гуманитарный вариант – “PM -> Senior PM -> CTO”. В этом были как свои плюсы, так и минусы, и трудно сказать, чего больше, но персональных вызовов хватало всегда и техническое прошлое часто спасало, однако, сейчас не об этом.

4. Вынужденные оценки


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

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

Лексикон и пираты

Reading time15 min
Views61K
Легенда гласит, что прототип Лексикона — многооконный редактор Е-9 — был задуман молодым сотрудником ВЦ АН СССР Женей Веселовым в отпускные дни доперестроечного 84-го на крымском пляже, а с целью ускорения тестирования автор одно время выставлял обнаружившим ошибки пользователям по бутылке пива. Хотя метод оправдал себя и программа быстро стала работоспособна, с сожалением приходится отметить, что маркетинговая политика последующих правообладателей не столь свежа — пива больше не дают. Вскоре печатающий по-русски и понятный без изучения на специальных курсах Лексикон широко распространился по стране, став «русским народным текстовым редактором». Прошли и вновь грядут технические революции в области компьютеров, исчез СССР, а с разменявшим второй десяток лет Лексиконом для ДОС по российским и сопредельным городам и весям и сегодня работают тысячи людей.
Так рассказывает Григорий Шмерлинг, присоединившийся к разработке Лексикона несколько позже, и под конец бывший «Руководителем Проекта „Лексикон“».

Вне всякого сомнения, Лексикон — легендарный программный продукт. Но таким он стал не сразу; а и став, оставался им не слишком долго.



В 1990 Лексикон упоминается в числе «известных прикладных систем» наряду с Lettrix — резидентным драйвером американской разработки, который перехватывал вывод текста на принтер, и подменял его на графический вывод с применением пользовательских шрифтов. Название LEXICON в той статье набрано латиницей, и непонятно, осознавал ли её автор, что Лексикон создан его соотечественниками, а не «экспроприирован у буржуев» вместе с большей частью ПО того времени. Никакой организованной «модели распространения» у Лексикона тогда не было — каждый списывал его у соседа вместе с ворохом других «полезных программ», не задумываясь ни на минуту, откуда эти программы взялись и не ожидает ли их разработчик мзды за их использование.
Какой разработчик? Где? Где-то там за океаном? Ух, капиталисты зажравшиеся! (потрясает кулаком)

Статья "Как продавать программы в России, или Ягодки коммерческого директора" Ольги Усковой из Cognitive Technologies (в следующий раз я хочу выложить её статью целиком) относится к 1995 г., но начинается в подобном духе: «Полтора года назад в России бытовало представление, что программа — это такая штука, которую ученые чудаки или наивные инофирмы бесплатно предоставляют находчивым российским пользователям. Иметь лицензированную копию считалось так же стыдно, как покупать билет в общественном транспорте или соблюдать правила дорожного движения. Обсуждение психологических аспектов этой проблемы пришлось бы начинать со времен Ивана Грозного...»

Тем временем команда Веселова с Лексиконом кочевали в поисках финансирования от одного оптимистично настроенного кооператива к другому, и в итоге они заключили союз с советско-венгерским СП «Микроинформ», до той поры занимавшимся торговлей компьютерным оборудованием и проведением компьютерных курсов. Плодотворное сотрудничество программистов и бизнесменов увенчалось выпуском в 1992 г. нарядных коробок с Лексиконом версии 8.96, переименованной по этому поводу в Лексикон 1.0. Лишь с этого момента разработка Лексикона стала коммерческим предприятием, и нелегальное копирование начало беспокоить разработчиков (вернее, их спонсоров в Микроинформе). Изначально же мотивы Веселова были куда проще — «захотелось написать что-нибудь получше только для того, чтобы легче было вводить и редактировать собственные программы и статьи. Получился редактор Е-9, названный так потому, что в нем было девять окон, и он превратился потом в „Лексикон“ путем добавления десятого окна и меню в стиле Lotus 1-2-3.»
Читать дальше →

Берем под контроль криптографию в облачном хранилище MEGA

Reading time19 min
Views49K
После запуска в какой-то мере скандального сервиса MEGA разговоры о его защищенности немного побурлили и затихли. На сегодняшний день сервис живет своей жизнью и его никто даже не поломал. Из всех разговоров почему-то был упущен термин «User Controlled Encryption» (UCE, или Контролируемая пользователем криптография), которой кичится MEGA. Под словом «упущен» я подразумеваю тот факт, что мы не рассмотрели все возможности, которые дает нам криптографический движок, выполняющийся в JavaScript на стороне клиента.

Конечно, сам сервис MEGA под этим подразумевает всего лишь то, что ключи шифрования не хранятся на сервере, а вся их криптография выполняется в контексте браузера. При этом после запуска сервиса было много разговоров о том, что в нем используются нестойкие криптографические алгоритмы и что вообще все плохо и мы все умрем, а наши файлы прочитает ФСБ. Это подтолкнуло меня на мысль расширить понятие «UCE» и действительно взять криптографию под свой контроль, а именно — заменить или дополнить некоторые механизмы обеспечения безопасности сервиса.

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

СКС в серверной или сказ о том, как я впервые укладывал много кабеля

Reading time2 min
Views196K


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

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity