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

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

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

Даже в стельку пьяному по силам понять интерфейс чата «Фейсбука», и это позволяет понять, насколько хорош этот чат.
Читать полностью »

Небольшое лирическое отступление.
В далеком 2002-м году, когда само слово «хакатон» еще малоизвестным, в далеком приграничном городе Хабаровске, в студенческом городке Хабаровского Государственного Технического Университета было странное кирпичное здание. Здание двухэтажное, недостроенное. Туда часто приезжали машины, перекрашивались и менялись номера. Иногда туда приезжали сотрудники милиции, ели шашлыки, веселились, и от этого оно было еще страннее…

DVHack 2013. Было здорово! Или первый хакатон на дальнем востоке

Недавно же, там по ночам горел свет и в окнах мелькали странные силуэты! Если кому интересно узнать, что же теперь на этом самом месте — добро пожаловать под кат.
Читать полностью »

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

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

Здравствуйте, люди добрые!

Если мы зайдем на сайт говнокод.ру, то мы увидим, что количество постов с плохим кодом в разделе PHP более чем в 3 раза опережает ближайших конкурентов. Естественно, на это есть свои причины — низкий порог вхождения, простота языка, наличие готовых решений, позволяющих не юзать мозг облегчающих решение типичных задач и т.д… Иногда мне даже становится обидно за репутацию языка и остальных php-программистов.

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

Уважаемые читатели, прошу обратить внимание что это «ненормальное программирование» во избежании недопониманий.

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

В игре присутствуют следующие блоки:

  • Воздух
  • Земля
  • Огонь (с анимацией)
  • Вода
  • Любовь Лестница
  • Коренная порода

Возможности:

  • Вода растекается и тушит огонь
  • Огонь поджигает лестницы
  • Гравитация
  • Создание блоков
  • Разрушение блоков земли

Картинка для привлечения внимания:

Minecraft 2 на C# (20 строк кода)

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

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

Здесь недавно жаловались, что тема “промышленного программирования” раскрыта недостаточно. Попытаюсь это исправить.
Для наглядности разберем как написать классическую змейку для контроллера семейства Siemens s7-300.

image

Если стало интересно – добро пожаловать под кат.
Внимание – картинки и много кода на подобном ассемблеру языке!
Читать полностью »

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

Ущербный — имеющий изъян, неполноценный. Вредный, недостаточный.

Наследование

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

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

image
J – самый ненормальный и самый эффективный язык из известных мне языков. Он позволяет быстро разрабатывать, а также вызывать ненормативную лексику у людей, незнакомых с ним и смотрящих на код.

J слишком необычный. И сложный для изучения. У людей, сталкивающихся с J не хватает мотивации, чтобы его изучить. Синтаксис непривычный.
В этом посте я хотел помочь вам заглянуть дальше, что будет, если вы его изучите и чем он интересен. По своему опыту знаю, что преимущества этого языка сразу не очевидны. В посте я не собираюсь останавливаться на разборе конструкций. Только в обзоре. Предлагаю просто окунуться в примеры, попробовать ощутить мощь языка. Узнать, чем прекрасен язык, без изучения. Писать статьи, обучающие программированию на нем – дело сложное и думаю, не нужное. Он не так прост, чтобы это сделать кратко, а с обучающими материалами на официальном сайте нет никаких проблем. Главное – желание. Им и займемся.
Читать полностью »

В прошлом топике я рассказывал о том, как мы с другом решили ради развлечения написать свой встраиваемый язык программирования для платформы .NET. У первой версии был серьезный недостаток — парсер был реализован на F# с помощью сторонней библиотеки. Из-за этого требовалась куча зависимостей, парсер работал медленно, а поддержка его была крайне муторным занятием.

Очевидно, что парсер нужно было переписать на C#, но при мысли о написании парсера с нуля вдруг находилась дюжина других срочных дел. Таким образом таск перекидывался и откладывался практически полгода и казался непосильным, а в итоге был сделан за 4 дня. Под катом я расскажу об удобном способе, позволившим реализовать парсер достаточно сложной грамматики без использования сторонних библиотек и не тронуться умом, а также о том, как это позволило улучшить язык LENS.

Но обо всем по порядку.
Читать полностью »

Увидев на хабрахабре крутые реализации программ в 30, 24, 19 и даже 1 строчку, тоже решил поморать чистые страницы хабра чем-нибудь этаким. Тем более, что давно хочется инвайт выпала возможность поработать в новом для себя качестве.

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

Вообще в самом начале я честно погуглил на предмет наличия разных фреймворков для расширений. Нашел, например, Kango. Но мне не нужна была кроссбраузерность (расширение писалось только для Chrome), и не было желания заморачиваться изучением сторонних библиотек ради небольшого приложения, поэтому было решено написать свой велосипед.

Задачи, которые ставились перед контейнером:

  • Удобная работа с localStorage. Получаем и сохраняем любые данные, в том числе объекты и массивы.
  • Какая-нибудь валидация параметров (хотя бы в случае, если такого параметра в localStorage просто нет).
  • Возможность фасовать параметры по группам — плохо когда все свалено в одну кучу.
  • Подключение функциональности с разносом по отдельным компонентам, при этом вероятно будет необходима преинициализация некоторых параметров.

В принципе все удалось реализовать в небольшом контейнере, и для небольших приложений он меня устраивает на 100%.
Читать полностью »


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