Pull to refresh
16
0
Вячеслав Мезенцев @ViacheslavMezentsev

Инженер-программист

Send message

Сайт GameTutorials сделал все свои 350 уроков по программированию игр бесплатными

Reading time1 min
Views71K
image

Сайт GameTutorials, известный своими уроками по C/C++/Win32/OpenGL/Direct3D/C#/Java, открыл все свои материалы для свободного изучения. Все уроки проверены на совместимость с Visual Studio 2013, в самом ближайшем будущем ожидаются уроки по Unreal Engine и Unity Engine, кроме того, будут обновлены устаревшие уроки по OpenGL и DirectX (сейчас на сайте описана версия DirectX 9).

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

Для просмотра и скачивания уроков потребуется зарегистрироваться.
Total votes 90: ↑85 and ↓5+80
Comments12

Что такое grep и с чем его едят

Reading time6 min
Views659K
Эта заметка навеяна мелькавшими последнее время на хабре постами двух тематик — «интересные команды unix» и «как я подбирал программиста». И описываемые там команды, конечно, местами интересные, но редко практически полезные, а выясняется, что реально полезным инструментарием мы пользоваться и не умеем.
Небольшое лирическое отступление:
Года три назад меня попросили провести собеседование с претендентами на должность unix-сисадмина. На двух крупнейших на тот момент фриланс-биржах на вакансию откликнулись восемь претендентов, двое из которых входили в ТОП-5 рейтинга этих бирж. Я никогда не требую от админов знания наизусть конфигов и считаю, что нужный софт всегда освоится, если есть желание читать, логика в действиях и умение правильно пользоваться инструментарием системы. Посему для начала претендентам были даны две задачки, примерно такого плана:
— поместить задание в крон, которое будет выполняться в каждый чётный час и в 3 часа;
— распечатать из файла /var/run/dmesg.boot информацию о процессоре.

К моему удивлению никто из претендентов с обоими вопросами не справился. Двое, в принципе, не знали о существовании grep.

image

Поэтому… Лето… Пятница… Перед шашлыками немного поговорим о grep.
Читать дальше →
Total votes 188: ↑174 and ↓14+160
Comments144

Обзор нового образовательного набора по электронике от Амперки (Матрешка Z)

Reading time3 min
Views358K


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

Я знал про них давно, но как-то скептически относился к бизнесу на базе Ардуино, когда рядом находится Китай, e-bay, таобао — где можно напрямую и достаточно недорого заказать Ардуино и другие комплектующие.

Но вот к нам в хакспейс попал новый набор «Матрешка Z», и я понял, что Амперка не просто продаёт Ардуино — они делают качественные образовательные наборы по электронике для начинающих.

Что же внутри?
Читать дальше →
Total votes 225: ↑214 and ↓11+203
Comments185

Кош на комплексной плоскости

Reading time6 min
Views65K
В какой-то из весенних дней этого года я ехал в троллейбусе и листал комикс о Коше. В одном из выпусков была такая фраза «НО! Её можно понять, она же фракталами в горизонт перетекает, я бы тоже замешкался...». После этого я посмотрел в окно и понял, что если мы возьмём два подходящих дробно-линейных преобразования комплексной плоскости a(z) и b(z), и рассмотрим систему итерированных функций для a(z), b(z), a−1(z), b−1(z), взяв в качестве начального множества картинку с Кошем, то Кош будет перетекать фракталами в горизонт!

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

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



Читать дальше →
Total votes 214: ↑206 and ↓8+198
Comments26

Обзор IPython Notebook 2.0

Reading time2 min
Views55K
Здравствуйте, уважаемые читатели.
3 апреля 2014 вышел долгожданный релиз IPython под номером 2.0.
Для тех кто не знает, IPython это интерактивная оболочка для языка программирования Python, которая предоставляет расширенную интроспекцию, дополнительный командный синтаксис, а также подсветку и автоматическое дополнение кода.
Далее я постараюсь описать наиболее значимые изменения по сравнению с предыдущей версией. Основные изменения в ней претерпела среда IPython Notebook, о нововведениях которой я напишу ниже.

Читать дальше →
Total votes 12: ↑9 and ↓3+6
Comments8

Обзор 7 онлайн-сервисов для локализации ПО

Reading time18 min
Views29K
Наверное каждый продукт, интерфейс которого имеет более одного языка, сталкивался с проблемой организации процесса локализации.

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

В данном обзоре я опишу свои впечатления от тестирования 7 онлайн-сервисов для локализации ПО и сравню их по основным показателям (см. таблицу в конце статьи).
Читать дальше →
Total votes 32: ↑32 and ↓0+32
Comments29

Как мы собирали Робоголову

Reading time3 min
Views50K
image

Мы живём в удивительное время, ещё 10 лет назад робототехника была чем-то фантастически недоступным. Сейчас же на базе Ардуино, набора серво-двигателей, лазерной резки и 3д печати можно сделать разнообразные проекты — и это будет вполне доступно по финансам и по навыкам (собрать может школьник).

Примером одного из таких проектов является — Робоголова.

Этот проект был найден среди kickstarter проектов. Плюсом является то, что разработчики выложили все инструкции по сборке в OpenSource.

Для создания потребуется:
  • лазерная резка (фанера)
  • 3д печать (элементы глаз)
  • Ардуино (микроконтроллер)
  • серво-двигатели
  • крепежные элементы

Начнём.
Читать дальше →
Total votes 48: ↑44 and ↓4+40
Comments20

Открылся хакспейс (клуб технического творчества) в Нижневартовске

Reading time3 min
Views30K


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

Хакспейс — это физическое место, где есть возможность поработать над своей идеей в комфортной рабочей зоне с различными станками и прочим оборудованием, которое можно использовать для работы над проектами.

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

Узнаем подробнее про доступное оборудование, условия доступа и проекты участников клуба:
Читать дальше →
Total votes 47: ↑47 and ↓0+47
Comments8

C++/CLI — «клейкий» язык

Reading time5 min
Views40K
В этом топике я расскажу про C++/CLI — промежуточный язык для склеивания кода на C/C++ и .NET

Это довольно распространённая задача, ведь на C/C++ написаны тонны проверенного временем высокопроизводительного кода, который невозможно переписать на управляемые языки.

Наша задача — обеспечить .NET-интерфейс к этим библиотекам. Но как это сделать, если они написаны на C/C++?

Microsoft предлагает два варианта решения проблемы.
 
Читать дальше →
Total votes 46: ↑43 and ↓3+40
Comments17

Нисходящий парсер с операторным предшествованием

Reading time17 min
Views13K
Дуглас Крокфорд

2007-02-21

Введение


В 1973 году на первом ежегодном симпозиуме «Принципы языков программирования» (Principles of Programming Languages Symposium) Вон Пратт представил статью «Нисходящий парсер с операторным предшествованием» (Top Down Operator Precedence). В этой статье Пратт описал метод синтаксического разбора, который объединяет лучшие стороны рекурсивного спуска и метода операторного предшествования Флойда. Метод Пратта очень похож на рекурсивный спуск, но требует меньше кода и работает гораздо быстрее. Пратт заявил, что его метод прост в освоении, реализации и использовании, необычайно эффективен и очень гибок. Благодаря своей динамичности он может использоваться для расширяемых языков.

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

Есть и другое объяснение: этот метод наиболее эффективен для динамических, функциональных языков программирования и использовать его в статическом, процедурном языке куда сложнее. Свою статью Пратт иллюстрирует на примере Lisp и играючи строит синтаксические деревья по потоку лексем. Но методы синтаксического разбора не особо ценятся в сообществе Lisp-программистов, которые проповедуют спартанский отказ от синтаксиса. С момента создания Lisp предпринималось немало попыток придать этому языку богатый синтаксис в стиле ALGOL: CGOL Пратта, Lisp-2, MLISP, Dylan, Interlisp's Clisp, оригинальные М-выражения Маккарти и так далее. Но все они провалились. Для Lisp-сообщества согласованность программ и данных оказалась важнее выразительного синтаксиса. С другой стороны, подавляющее большинство программистов любит синтаксис, поэтому сам Lisp так и не стал популярен. Методу Пратта нужен динамический язык, но сообщество динамических языков исторически не пользовалось синтаксисом, который так удобно реализуется методом Пратта.
Читать дальше →
Total votes 30: ↑28 and ↓2+26
Comments7

Строим DSL на C# при помощи парсер-комбинаторов

Reading time9 min
Views13K

Перевод статьи Николаса Блумхардта, известного .NET разработчика, автора IoC/DI контейнера Autofac. В этой статье Николас показывает на реальном примере как с наименьшими усилиями написать парсер предметно-ориентированного языка программирования с помощью Sprache, библиотеки парсер-комбинаторов.


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

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

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

Читать дальше →
Total votes 50: ↑44 and ↓6+38
Comments11

Как я по кампусу ходил: заметки стороннего наблюдателя

Reading time12 min
Views36K
Navigator Campus лично в моей жизни не занимает ровно никакого места. Я там не работаю, у меня нет никаких интересов, кроме праздных, да и вообще, кроме описываемого раза я в этом здании ни разу не был и с людьми знаком шапочно.



По своей прямой профессии я журналист. Причем не обычный, который в нестоличных городах пишет обо всем на свете с видом профессионала, а узкоспециализированный, автомобильный.
Читать дальше →
Total votes 50: ↑40 and ↓10+30
Comments10

Вытесняющая многозадачность на ассемблере Z80

Reading time8 min
Views29K
Медленный процессор и маленький объем ОЗУ — это еще не значит, что на такой платформе нельзя реализовать вытесняющую многозадачность. Более того, главный смысл организации многозадачной среды — это эффективное использование процессорного времени, чтобы процессор не простаивал, пока одни программы ждут какого-либо события, а использовался другими программами. Даже на таких платформах, как ZX Spectrum (Z80 3.5МГц, 48-128кБ ОЗУ), или 8-битные микроконтроллеры AVR, организация вытесняющей многозадачности имеет большой смысл.

Предлагаю вашему вниманию собственную реализацию многозадачного диспетчера на ассемблере Z80 (ZX Spectrum), который не является частью какой-либо ОС, а может использоваться отдельно. В нем нет ничего лишнего — только организация исполнения потоков и синхронизации между ними. Диспетчер можно использовать как составную часть программного проекта, как основу для создания более серьезного диспетчера для ОС, или как обучающий материал.
Читать дальше →
Total votes 66: ↑64 and ↓2+62
Comments32

Наследование грамматик в Sprache (или еще один настраиваемый калькулятор выражений для .NET)

Reading time13 min
Views12K
Статья демонстрирует технику создания парсеров с использованием наследования грамматик. Наследование позволяет описывать новые грамматики на основе уже существующих путем добавления новых правил или переопределения унаследованных, что существенно упрощает реализацию новых парсеров. Изменения в базовой грамматике автоматически становятся доступными во всех порожденных грамматиках. Основная область применения такой техники — поддержка нескольких диалектов или версий языков.
Читать дальше →
Total votes 19: ↑18 and ↓1+17
Comments2

Астротрекер за два вечера

Reading time5 min
Views170K
После прочтения статьи про любительскую астрономию я загорелся идеей поснимать звезды с помощью обычной камеры без телескопа. Статья подсказала идею про астротрекеры — устройства для компенсации вращения звездного неба на длительных выдержках.



Погуглив, я обнаружил что их легко можно купить. Но вот цена кусалась. Например, самый дешевый Vixin Ploarie Star Tracker стоит от $400 + доставка. Да и грузоподъемность его вызывала сомнения. В перспективе я планировал от широкоугольного объектива перейти и к 70-200/2.8 который вместе с камерой весят под полтора кг.

В процессе поиска оказалось что люди делают себе так называемые Barn Door трекеры: раз, два и другие. Попросту говоря — дверь от сарая. Принцип действия прост — две доски соединенных дверным навесом. Одна из них поворачивается с такой же скоростью как и земля вокруг своей оси. Ось навеса направляетя на Полярную звезду. Нижняя доска ставится на штатив, а на подвижную половинку ставится штативная голова с камерой.

Под катом много картинок.
Читать дальше →
Total votes 117: ↑115 and ↓2+113
Comments57

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

Reading time4 min
Views99K
В предыдущем посте я рассказал как можно сделать астротрекер за два вечера. Настало время проверить его работу и сделать первые выводы.

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


Ну а теперь подробности
Total votes 161: ↑159 and ↓2+157
Comments59

Раздача научного софта. Бесплатно

Reading time6 min
Views67K

Так уж получилось, что до того, как стать физиком, я хотел быть программистом. Не сложилось, но тяга писать программки не прошла. Как результат — за 15 лет работы в науке, было написано приличное количество разнообразного прикладного софта. Конечно, большая часть была совершенно одноразовой, и мотивацией для ее написания была фраза из мультика — «лучше день потерять, потом за пять минут долететь». Но некоторые вещи оказались долгоиграющими, пошли «в народ», кое-что даже продается. Для продажи этого «кое-чего» даже был создан сайт, ориентированный на «заграницу», но это было сделано больше ради эксперимента, а не с целью заработать какие-то реальные деньги, тем более что софт по большей части очень специфический, и спрос на него не велик. Но хватит о коммерции.

Я бы хотел совершенно безвозмездно поделиться частью своих наработок (тем, что не очень стыдно показать) с хабрасообществом, в надежде, что они могут оказаться полезными для молодых (и не очень) ученых, аспирантов и студентов, и кто-то сможет использовать их в своей работе. Вашему вниманию предлагается следующее (в порядке возрастания специфичности):
  • SciRef — менеджер цитирований.
  • AFM Vision — удобная визуализация данных атомно-силовой микроскопии.
  • Raman 2D — построение карты распределения интенсивности Рамановского излучения.
  • X-Ray Calc — симуляция рентгеновской дифракции тонких пленок.

Подробное описание возможностей, скриншоты (много) и ссылки — под катом.
Читать дальше
Total votes 147: ↑146 and ↓1+145
Comments36

Безопасность магазина в рознице: основные атаки

Reading time7 min
Views112K


Вынос товара


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

DDoS-атака на магазин с воровством


Представьте, в магазин внезапно заходит человек 15. Например, цыганский табор. Уследить за товаром просто физически невозможно. Мера — сначала напоказ нажимается тревожная кнопка (ещё на момент входа). Иногда такую атаку пытаются предпринять школьники, заваливаясь целым классом, но их-то найти по школам довольно просто (лица есть на видеонаблюдении).
Читать дальше →
Total votes 179: ↑173 and ↓6+167
Comments315

OllyDbg 2.01

Reading time15 min
Views111K
image

Релиз OllyDbg 2.01 прошел незаметно и не был освещен на Хабре. Вместе с 2 версией автор выпустил дизассемблер по лицензии GPL v3. В конце октября была анонсирована будущая поддержка х64.
Читать дальше →
Total votes 110: ↑110 and ↓0+110
Comments28

Разрабатываем компилятор для учебного языка Cool на языке C# под .NET (Часть 2 + Бонусы)

Reading time16 min
Views11K
Привет, Хабрахабр!

Введение


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

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

Читать дальше →
Total votes 33: ↑27 and ↓6+21
Comments6

Information

Rating
Does not participate
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity