Рубрика «ненормальное программирование» - 96

После серии постов про реализацию простеньких игрушек на JavaScript в 30 строчек, решил попробовать себя в этом «соревновании». Посидев вечер, получилось создать «полноценную» Roguelike/RPG (я не слишком разбираюсь в жанрах, но вышло что-то в этом направлении). Заодно поизучал JavaScript (до этого на нем никогда не писал, как-то все C++ балуюсь).

image

Особенности:

  • Случайно генерируемый мир
  • Прокачка персонажа
  • 3 вида врагов и финальный босс
  • Инвентарь с бутылочками зелья и магазин для их пополнения

Читать полностью »

В последнее время Хабр просто пестрит «30-строчными постами»:

Гоночка на JavaScript (30 строк кода)
Крошечный арканоид на JavaScript (30 строк кода)
Крошечный Excel на чистом JavaScript (30 строк кода)
Крошечная змейка на JavaScript (30 строк кода)
Tetris на javascript (в 30+ строк)

Одержимый желанием следовать моде, я тоже решил что-нибудь написать. Но так как с JS у меня отношения сложные, я решил писать на C++ с использованием API, которое так любезно предоставила мне ОС Windows (в народе именуемом WinAPI).

Итак, ближе к телу делу:
Читать полностью »

20 и 1 примочка Javascript, которые я никак не могу запомнитьСтатья описывает особенности Javascript ES3, которые имеют свойство забываться. Одни из них — странности языка, а другие просто свойства, которые, по-моему, труднозапоминаемы. Я постарался собрать здесь не те из них, по которым можно дать просто ссылку на описание языка (как по различиям между apply и call), а о которых мало сказано в руководствах.

Прежде чем начать, хочу уточнить 3 момента, которые я не стараюсь доказать этой статьёй:

1. Я не говорю, что эти особенности забываются всеми или что они такие по сути. Я их нахожу трудными лично для меня (например, забываются детали, если их не освежать в памяти). Они могут быть лёгкими для вас. Тем не менее, думаю, что этот сборник может быть полезен не только мне.
Читать полностью »

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

Я тоже решил принять участие в этой специальной спонтанной олимпиаде кодерского мастерства, и вспомнил фразу одной моей подруги-музыканта: «Если уж играть, то на пианино». И решил: да будет так. Вместо игры напишу пианино. И написал.

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

Итак, начнем.

Клавиатура классического фортепиано состоит из 88 клавиш, покрывающих диапазон от A0 (Ля суб-контр-октавы, частота звучания 27.5 Гц) до C8 (До пятой октавы, частота 4186 Гц). Каждая октава на клавиатуре состоит из двенадцати нот:
До, До-диез, Ре, Ре-диез, Ми, Фа, Фа-диез, Соль, Соль-диез, Ля, Ля-диез/Си-бемоль, Си. Жирным выделены клавиши верхнего ряда, они на клавиатуре обычно бывают черного цвета.

Собственно, вот так выглядит одна октава:

image

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

Nx = N1 × 2x-1, где:

  • N – название ноты;
  • x — номер октавы (от 0 до 8);
  • Nx, соответственно, частота звука, соответствующая ноте N октавы x;

В формуле фигурирует N1 вместо N0 лишь потому, что часть нот суб-контр-октавы (N0) имеет частоту звучания ниже порога слышимости человеческим ухом (< 20 Hz).

Чтобы ноты получались чистыми, нам нужны достаточно точные значения частот нот контроктавы, от которой мы начинаем считать. Собственно, вот они:
Читать полностью »

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

Гоночка на JavaScript (30 строк кода)

Ссылка на fiddle.
Читать полностью »

Наблюдая за тем, как люди в 30 строк джаваскрипта умещают excel и змейку, я решил не отставать от прогресса, и создать что-нибудь подобное.
Итак, дамы и господа — 30ти строчный арканоид на чистом JS.

Крошечный арканоид на JavaScript (30 строк кода)
Читать полностью »

Это НЕ очередная статья о том что такое P/Invoke.

Итак, допустим в сферическом C# проекте необходимо использовать какую-либо технологию, отсутствующую в .NET, и все что у нас есть это Windows SDK 8.1 в котором имеется лишь набор заголовочных файлов для C/С++. Придется объявлять кучу типов, проверять корректность выравнивания структур и писать различные обертки. Это большое количество рутинной работы, и риск допустить ошибку. Можно конечно написать парсер заголовочных файлов… Тут просто и понятно все кроме количества требуемых на это человекочасов. Поэтому этот вариант отбрасываем и постараемся как либо иначе свести к минимуму количество необходимых действий для взаимодействия с unmanaged кодом.

Кроме того, полученный в результате код не будет зависеть от разрядности процесса, будет сохранена строгая типизация, будет применено автоматическое тестирование.
Читать полностью »

Сегодня я хочу рассказать об одной интересной сложности декодирования/дизассемблирования IA-32 инструкций.

Перед прочтением этой статьи рекомендую обратиться в статье «Префиксы в системе команд IA-32», описывающей общую структуру IA-32 команды и существующие префиксы. В этой статье я подробнее расскажу про обязательные префиксы (англ. mandatory prefixes) и некоторые нюансы, связанные с ними.
Читать полностью »

Столкнулся с проблемой: при просмотре некоторых роликов на youtube звук идет только на левый спикер. При прослушивании через наушники это доставляет некоторые неудобства. Существует простое и достаточно эффективное решение: вставить коннектор в гнездо не полностью. Но это решение не подошло и пришлось искать другое.

Предлагаю решение проблемы для Windows 7 с использованием powershell и библиотеки для работы со звуком NAudio:
Читать полностью »

Читатели, добрый день!

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

Немного про меня. Мою жизнь сделала одна книга, которую как-то мне подарили на десятый или одиннадцатый мой день рождения. Это был замечательный комикс выпущенный латышами — «Как Петя Бейсиков Тоню Соображалкину программированию учил».

image

Может есть еще люди, которые как-то с нею сталкивались? Но она меня окунула в невероятный мир алгоритмов, блок -схем. Я до сих пор помню как их рисовал на уроках по истории на последних страницах тетрадки. От блок схемы «Как завести хомячка» до «как познакомиться с девушкой». Потом был Basic, Pascal, Cobol, Prolog ,Delphi, C++ Builder, PHP. С некоторыми из них у меня было шапочное знакомство, другие даже выдерживали мой быдлокодинг, а с некоторыми вообще не сложилось.

Меня трудно назвать как-то, кроме быдлокодер. Да, у меня есть проекты, они приносят деньги. Их не один и не два. Живы и здоровы более 6-7 лет. Я не забивал себе голову рефакторингом (ну почти), ставил костыли и работал быстро. Оглядываясь назад мне ничуть не стыдно, хотя, те ребята, которые работают сейчас под моим началом, бывает, ворчат. Сейчас веду отдел программистов одной достаточно крупной компании, ко всему имею маленький онлайн-бизнес, который капает.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js