Как стать автором
Обновить
201.33
Рейтинг

Ненормальное программирование *

Извращения с кодом

Сначала показывать
Порог рейтинга

Неформальный Эксель: OpenGL, игры на GDI+ и инфографика теперь и в VBA

Ненормальное программирование *Визуализация данных *CGI (графика) *Инфографика Visual Basic for Applications *


На Хабре уже было довольно много интересных публикаций с неформальным использованием Экселя (списочек под катом). Этой статьёй мне хочется поделиться с сообществом красивыми результатами нашего французского коллеги. Автор, Тьерри Гасперм (Thierry Gasperment), создаёт подобную красоту на VBA под Excel / Access / Word и VB6. Увы, сайт на французском, а материалы, хоть и свободны для использования, но для просмотра и скачивания зачастую требуют регистрации. По этой причине я поместил наиболее интересные примеры на свой GitHub. Для тех, кто захочет "выйти за пределы шахматной доски", советую всё же потратить пару минут своего драгоценного времени и зарегистрироваться на сайте. Оно того стоит, так как количество и качество информации на сайте Тьерри заслуживают того. Для регистрации и просмотра рекомендую Chrome: автоматический перевод Edge порождает "гуртовщиков мыши" и прочие химеры вроде "glutMouseРазумный" и "Силовая установка" (PowerPoint).


Читать дальше →
Всего голосов 15: ↑15 и ↓0 +15
Просмотры 3.2K
Комментарии 4

Новости

Rust должен умереть, МГУ сделал замеры

Ненормальное программирование *Assembler *C *Rust *

В предыдущих сериях:



Медленно, но верно Раст проникает не только в умы сотрудников больших корпораций, но и в умы школьников и студентов. В этот раз мы поговорим о статье от студента МГУ: https://rustmustdie.com/.


Её репостнул Андрей Викторович Столяров, доцент кафедры алгоритмических языков факультета ВМК МГУ им. М. В. Ломоносова и по совместительству научрук студента-автора статьи.


Я бы сказал, что тут дело даже не в том, что он "неинтуитивный". Дело скорее в том, что компилятор раста сам решает, когда владение "должно" (с его, компилятора, точки зрения) перейти от одного игрока к другому. А решать это вообще-то должен программист, а не компилятор. Ну и начинается пляска вида "как заставить тупой компайлер сделать то, чего я хочу".
Бред это всё.

— А. В. Столяров
Кощунство!
Всего голосов 335: ↑318 и ↓17 +301
Просмотры 68K
Комментарии 191

Pump Station Framework для ПЛК ОВЕН 110-32м2

Ненормальное программирование *DIY или Сделай сам Инженерные системы *
Из песочницы

Привет, Хабр! Это мой первый опыт написания здесь, если что, уж сильно не пинайте). Сам я программист самоучка. Новый язык Structured Text и среду разработки Codesys разбирал по мануалу и стандарту МЭК-61131-3. В статье будет рассматриваться легкий самописный фреймворк для быстрой сборки насосной станции реализованной на ПЛК 110-32м2 фирмы ОВЕН.

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 1.9K
Комментарии 20

Игрушечный ЯП — Cockroach

Ненормальное программирование *

Всем привет.

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

Авторы курса сделали только exe-шник под Windows. Когда младший сын начал требовать "Папа научи программировать" принял волевое решение - сделать свою имплементацию. И сделал.

Читать далее
Всего голосов 51: ↑51 и ↓0 +51
Просмотры 8.8K
Комментарии 25

FizzBuzz по-взрослому

Высокая производительность *Ненормальное программирование *C *

Тема эта стала неинтересной, всё то же и так же из раза в раз

Сеньоры начинают и проигрывают пенсионерам.

Это уже третий раз и должны уже наверно свыкнуться. ))

FizzBuzz по-сениорски

FizzBuzz по-пенсионерски

Продолжаем разгонять FizzBuzz

FizzBuzz по-македонски

Немного лирики. Хабр из места, где пишут в стиле "смотрите коллеги, можно и так ..." превратился в место хвастовства и рекламы. Пенсионеры хорошо знают, что невозможно написать код, который нельзя улучшить. И реальные сеньоры только рады, когда им пишешь про то, как можно улучшить их код. Я проверял ))

Читать далее
Всего голосов 15: ↑8 и ↓7 +1
Просмотры 3K
Комментарии 6

Почему аспирантура — это деньги и ̶в̶р̶е̶м̶я̶

Ненормальное программирование *
Recovery mode
Из песочницы

Раз уж начали за упокой за аспирантуру и продолжили делиться своим мнением в ответных статьях, то есть смысл высказаться и мне, чтобы помочь читателю, ознакомившемуся с предыдущими двумя материалами, решить вопрос: "Как совместить такой реликт советского образования, как аспирантура, с работой в IT и преподаванием?".

Найти время для этого
Всего голосов 21: ↑15 и ↓6 +9
Просмотры 14K
Комментарии 14

Используем телетайп Consul 254 вместо клавиатуры для Arduino

Ненормальное программирование *Реверс-инжиниринг *Разработка под Arduino *Старое железо Электроника для начинающих

Из документации:

Электрифицированная пишущая машина Consul 254 предназначена:

а) для ввода алфавитно-цифровой информации в ЭВМ при печатании оператора на клавиатуре машины

б) для вывода алфавитно-цифровой информации в порядке печати на лист или рулон бумаги по сигналам, посылаемым от ЭВМ

в) для применения в устройствах подготовки данных или в других устройствах, параметры которых соответствуют параметрам указанной машины

Сегодня мы займёмся пунктом "а" - будем читать данные с клавиатуры с помощью ЭВМ Arduino Uno.

Читать далее
Всего голосов 37: ↑37 и ↓0 +37
Просмотры 3K
Комментарии 12

http://http://http://@http://http://?http://#http://

Ненормальное программирование *IT-стандарты *Браузеры
Перевод

Я опубликовал этот твит пару дней назад. И теперь, после огромного количества комментов и ретвитов, мне кажется, что я должен остановиться на этом подробнее. Правда ли это валидный URL? Как его распарсить?

Да что вообще такое этот ваш URL?
Всего голосов 62: ↑59 и ↓3 +56
Просмотры 22K
Комментарии 19

Какие у нас есть клавиши в клавиатуре или как непрограммист язык разрабатывал

Ненормальное программирование *Open source *Программирование *ERP-системы *CRM-системы *

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

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

Возник выбор — прикручивать JS и SQL (как это делают нормальные люди) или разрабатывать собственный синтаксис. Я недолго подумал и решил, что собственный синтаксис лучше.

Хочу рассказать про некоторые моменты, которые стали понятны в этом процессе — может, вы передумаете делать свой DSL 😅

Читать далее
Всего голосов 10: ↑9 и ↓1 +8
Просмотры 3.4K
Комментарии 32

Ферритовый ROM для самых маленьких

Ненормальное программирование *Разработка под Arduino *DIY или Сделай сам

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

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

Итак, мы рассмотрим память на ферритовых кольцах, причем, даже не RAM, а ROM.

Читать далее
Всего голосов 75: ↑75 и ↓0 +75
Просмотры 10K
Комментарии 54

Примеры кошмарного программирования вокруг нас. Выученная беспомощность

Блог компании RUVDS.com Ненормальное программирование *Программирование *Системное программирование *Разработка под Windows *

Нет в мире совершенства. Куда ни глянь — всюду костыли и компромиссы. Вроде каждый в отдельности хочет сделать как лучше, но чем больше участников — тем сильнее хаос…

Возьмём классический пример — реестр Windows. Этот странный артефакт инженерной мысли представляет некое подобие иерархической БД для хранения абсолютно всех настроек — и системных, и приложений, и драйверов. Центральное бинарное хранилище заменило массу файлов .ini, разбросанных по всей системе и должно было упростить жизнь. Но вышло наоборот. И глядя на монструозный тормозящий конструкт, возникает только один вопрос: как это исправить? Ответ тоже простой: «Если вкратце, то никак». И так во всём. Мы создаём монстров, а потом не можем от них избавиться.
Читать дальше →
Всего голосов 101: ↑84 и ↓17 +67
Просмотры 36K
Комментарии 184

Подключение WIFI-ретромодема к компьютеру Z80-MBC2

Ненормальное программирование *DIY или Сделай сам
Из песочницы

Здравствуйте, дорогие мои любители программных археологических раскопок и аппаратных копролитов, утонувших во мраке веков.

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

Погрузиться далее
Всего голосов 36: ↑36 и ↓0 +36
Просмотры 5.3K
Комментарии 11

FizzBuzz по-македонски

Высокая производительность *Ненормальное программирование *C *

Long story short

Сеньоры начинают и проигрывают

Тут как на олимпийских играх - быстрее, короче, изящней.

В продолжение увлекательной дискуссии

FizzBuzz по-сениорски

FizzBuzz по-пенсионерски

Продолжаем разгонять FizzBuzz

Читать далее
Всего голосов 24: ↑16 и ↓8 +8
Просмотры 3.5K
Комментарии 4

ESM. Выходим за рамки

Ненормальное программирование *Разработка веб-сайтов *JavaScript *Программирование *Node.JS *
Tutorial

Итак, работая над... ну не знаю... каким-нибудь замечательным генератором статики, вы, возможно, захотите импортировать в свой код зависимости напрямую из текстовых файлов, таких как: HTML, MD, CSS, SVG или JSON. Конечно, можно использовать бандлер с соответствующим лоадером. Но, допустим, ваш кодекс самурая велит вам - никаких лишних npm install xxx и промежуточных билдов! Только хардкор! Что делать? Выход есть.

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 1.5K
Комментарии 0

Можно, но лучше не стоит: разбираемся в связях между объектами, функциями, генераторами и сопрограммами

Ненормальное программирование *Занимательные задачки Python *Кодобред Лайфхаки для гиков
Из песочницы
Перевод

Давайте проведём исследование некоторых взаимосвязей функций, объектов, генераторов и корутин в Python.

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

Предупреждаю: мы рассмотрим рабочие, но очень странные примеры кода; я не советую вам применять их в реальных проектах!

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 7.3K
Комментарии 0

Мечтают ли разработчики о декларативных тестах — 2. Особое мнение

Ненормальное программирование *.NET *C# *

По непроверенным данным, половина несчастных случаев происходит после слов "смотри, как я умею", другая же половина — после "ерунда, смотри, как надо".

Тут один приятель, увидев фокус с тестами без тестов с использованием обобщенных аттрибутов из preview версии C# и особенностей экосистемы NUnit, отметил, что все сделано транс-ректально, а сам бы он применил Fody, и вышло бы гораздо лучше. Демонстрировать, к сожалению, ничего не стал. А мне вспомнился комментарий к описанию другого преодоления концептуального ограничения языка. Тогда руки не дошли попробовать, а сейчас вот решил глянуть, что это за птица, и проверить, поможет ли она написать более элегантное решение.

Читать далее
Всего голосов 2: ↑0 и ↓2 -2
Просмотры 995
Комментарии 3

Нормальные алгоритмы Маркова как основание языка программирования

Ненормальное программирование *Программирование *Функциональное программирование *

В этой статье хотелось бы поделиться мыслями о применении Нормальных Алгоритмов Маркова (далее по тексту: НАМ) в качестве основания для языка программирования.

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

Читать далее
Всего голосов 11: ↑11 и ↓0 +11
Просмотры 12K
Комментарии 27

Подбираем скины в Counter-Strike: Global Offensive в цвет сумочки

Блог компании Selectel Ненормальное программирование *Python *Игры и игровые консоли

Многопользовательская Counter-Strike: Global Offensive наполнена различными раскрасками для оружия разной степени редкости и привлекательности. Некоторые игроки гонятся за уникальными скинами, а другие выбирают на основе субъективного вкуса. Помимо официальной торговой площадки Steam, скины можно купить на сторонних ресурсах, доверие к которым невелико. Но в обоих случаях нет фильтра по цвету.

Вручную перебирать все варианты раскраски для всех видов вооружений очень долго. К счастью, проблему можно автоматизировать. В статье я покажу, как извлечь необходимые ресурсы из игры, и еще раз поговорю про сложность определения схожести цветов.
Читать дальше →
Всего голосов 49: ↑46 и ↓3 +43
Просмотры 4.7K
Комментарии 9

Мечтают ли разработчики о декларативных тестах

Ненормальное программирование *.NET *C# *
image
Завершение работы над прошлой публикацией (читать которую для понимания этой совсем не обязательно) принесло мне не мир, но меч мечту о мире. Мире, в котором можно писать более выразительные строго типизированные тесты и вместо

[TestCase(typeof(Impl), "command")]
public void Test(Type impl, string cmd) =>
    ((I)Activator.CreateInstance(impl)).Do(cmd);

использовать

[TestCase<Impl>("command")]
public void Test<TImpl>(string cmd) where TImpl : I, new() =>
    new TImpl().Do(cmd);

И он оказался ближе, чем я мог подумать. А дальше пошло-поехало…
Читать дальше →
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 2.3K
Комментарии 0

Атака на String.hashCode: прообразы и коллизии

Ненормальное программирование *Программирование *Java *
Recovery mode
☕️ Cезон Java
Дюк прощупывает сезон Java

Как-то раз мне понадобилось несколько наборов строк с коллизией по хеш-коду. То есть таких, чтобы значение String::hashCode() совпадало для всех строк в наборе.

Блуждание по интернету не дало результатов, примеров было мало и все они довольно однообразны. Поиск по словарям подарил забавную пару "javascript's".hashCode() == "monocle".hashCode(), но практической пользы не принёс. Полный перебор не рассматривался в виду скорой тепловой смерти вселенной.

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

Читать дальше →
Всего голосов 62: ↑62 и ↓0 +62
Просмотры 6.9K
Комментарии 23

Вклад авторов