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

Здравствуйте.

Сегодня я хотел бы показать вам небольшой timelapse кодинг на Wct (1023 байта).
Накодил я Nyan cat-a с музыкой в 1023 байта.

Ссылка на GitHub:
github.com/Mihip/Wct

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

В прошлом, найдя интересное решение при написании демки, я тихо его использовал или же хвастался узкому кругу друзей на демосцене. Но теперь мои возможности достигнуть чего-либо на демосцене подошли к концу, а турниры по минималистскому программированию не проводятся, поэтому я решил написать в блог о своём достижении: генераторе лабиринтов объёмом всего в 13 байт машинного кода x86.

Чтобы понять суть достижения, вам надо знать о команде 10 PRINT. Это строчка кода Commodore 64 BASIC, которая при запуске создаёт бесконечный лабиринт. Конечно, её вывод – это не настоящий лабиринт, входа и выхода там нет, и полно закрытых помещений и тупиков. Но выглядит он как лабиринт. Поражает то, как простая команда выдаёт бесконечно сложный шаблон.
Читать полностью »

Наша компания занимается созданием Интернет-магазинов запчастей на собственной SaaS-платформе (ABCP.RU), а также у нас есть несколько связанных проектов, например, сервис поиска запчастей 4MyCar.ru.
Как и многие другие веб-проекты, мы в своё время пришли к пониманию необходимости геолокации по IP-адресу. Например, сейчас она используется на 4MyCar.ru для определения региона (при первом входе на сайт регион автоматически устанавливается именно так).

Сага о геолокации и как сделать гео-вебсервис без движка базы данных и без программирования - 1

Аналогично производится выбор ближайшего к клиенту филиала магазина на сайтах клиентов платформы ABCP.

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

Вдохновлённый постом «Простой диспетчер задач с веб-интерфейсом, написанный на языке GO для Unix-систем включая Android», языком Go и утилитой simple status, я решил написать в качестве забавного эксперимента чат-бота для социальной сети Vkontakte со схожим функционалом.

Почему выбор пал на чат-бота и социальную сеть? Кроме очевидного just for fun имеются и практические выкладки:

  • Не нужны дополнительные телодвижения для доступа к приложению, запущенном на компьютере с динамическим ip или находящимся за роутером.
  • Доступ к Вконтактике есть практически везде – достаточно иметь при себе телефон с доступом в интернет.
  • Вопрос о реализации аутентификации на уровне конечного приложения практически отпадает.

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

Привет всем программистам. Особенно любителям поломать свою голову. Хочу поведать вам о такой штуке, как Wct.

Что такое Wct?

Wct — система счисления, которая состоит полностью из букв и предназначена, в общем, для «взрыва» своих мозгов. В Wct всего 16 символов, а именно:

A, B, C, D, E, F, G, H, I, J, K, L, M, N, P, O

(идентична HEX, но полностью состоит из букв).
Да-да, всё верно, O идёт после P (что тоже значительно усложняет процесс написания программ в некоторых случаях, особенно, если вы новичок).
Читать полностью »

image
На самом деле все происходит не так...

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

Начитавшись статей про [все что угодно] на JavaScript в 30 строк кода, я подумал: чем я хуже? Не найдя в перечне своих недостатков пункт «написание плохого кода», решил сделать что-нибудь интересное.

Лабиринты всегда веяли в мою сторону некоторой магией и загадками, поэтому поиск «чего-нибудь интересного» закончился достаточно быстро. К сожалению, создание игры затянулось на долгие часы экспериментов над консолью и моими нервами.

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

Для сторонников принципа «меньше знаешь — крепче спишь» предлагается cсылка на JSFiddle (управление стрелочками).
Читать полностью »

Программы можно писать структурой папок или изречениями персонажа Вина Дизеля

Эзотерические языки программирования Folders и Groot - 1Эзотерические языки программирования — это нечто среднее между шуткой в индустрии программного обеспечения, искусством и исследованием пределов знаний человечества. Как правило, вне узких кругов гиков известны не образцы, являющиеся математическими доказательствами, а Brainfuck и что-нибудь популярное, к примеру, ArdnoldC. Новые примеры эзотерических языков появляются достаточно часто.

Дэниел Темкин создал эзотерический язык программирования Folders. Это первый язык, созданный специально для его блога esoteric.codes. Как следует из названия, программирование в этом языке не требует файлов, нужно лишь дерево папок файловой системы, структура которого и определяет код. Пример Hello World на языке Folders представлен слева.
Читать полностью »

Сидел вечером дома, думал чем бы заняться. А: у Python есть отладчик, но в нём совершенно некрасивое приглашение ко вводу. Дай‐ка я впилю туда powerline. Дело казалось бы совершенно плёвое: нужно просто создать свой подкласс pdb.Pdb со своим свойством, да?

def use_powerline_prompt(cls):
    '''Decorator that installs powerline prompt to the class
    '''
    @property
    def prompt(self):
        try:
            powerline = self.powerline
        except AttributeError:
            powerline = PDBPowerline()
            powerline.setup(self)
            self.powerline = powerline
        return powerline.render(side='left')

    @prompt.setter
    def prompt(self, _):
        pass

    cls.prompt = prompt

    return cls

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

Когда идентификатор не идентификатор (Атака монгольского разделителя гласных) - 1

Примечания переводчика

В переводе я позволил себе использовать некоторые англицизмы, такие как «валидный», «нативный» и «бинарник». Надеюсь с ними вопросов не возникнет.

Идентификаторы (identifiers) – специальный термин спецификации C# отожествляющий собой всё к чему можно обратиться по имени, как например название класса, имя переменной и т.д.

Roslyn – компилятор C# кода, написанный на C#. Был создан взамен существующего csc.exe. Я обычно опускаю слово компилятор в данном тексте.

Для начала несколько вещей о которых вы могли не слышать:

  • Идентификаторы в C# могут включать в себя escape-последовательности Unicode символов (как например u1234).
  • Идентификаторы в C# могут включать в себя Unicode символы категории Cf (other, format), но при сравнении идентификаторов на идентичность эти символы игнорируются.
  • Символ «Монгольский разделитель гласных» (U+180E) в зависимости от версии Unicode принадлежит либо категории Cf (other, format), либо категории Zs (separator, space).
  • В .NET хранится свой собственный список Unicode категорий, независимый от оных в Win32.
  • Roslyn является .NET приложением, и поэтому использует Unicode категории, прописанные в файлах .NET. Нативный компилятор (csc.exe) использует либо системные (Win32) категории, либо хранит в себе копию таблиц Unicode.
  • Никакая из таблиц Unicode символов (ни .NET, ни Win32) точно следует какой-либо из версий стандарта Unicode.
  • Компиляторы могут иметь баги.

Из всего этого вытекают некоторые проблемы…

Во всём виноват Владимир

Все началось с обсуждения на собрании технической группы ECMA на прошлой неделе. Мы рассматривали «нормативные ссылки», и в частности какую версию стандарта Unicode мы будем использовать. На тот момент спецификация ECMA-335 (4-ое издание) использует Unicode 4.0, а спецификация C# 5 от Microsoft использует Unicode 3.0. Я точно не знаю, учитывают ли разработчики компиляторов такие особенности. На мой взгляд было бы лучше, если ECMA и Microsoft не указывали конкретную версию Unicode в своих спецификациях. Пусть разработчики компиляторов используют самую свежую версию Unicode, доступную на текущий момент. Однако тогда компиляторы должны будут поставляться со своей личной копией таблицы Unicode, что немного странно, на мой взгляд.
Читать полностью »


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