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

Что, если можно бы было в тот момент, когда сталкиваешься с какой-то сложной задачей, которую уже достаточно долго не можешь решить самостоятельно (хоть и посмотрел всё, что можно было найти в Гугле на этот счёт), зайти на специальный сайт и попросить кого-нибудь посмотреть и помочь?

Речь идёт про теоретическую возможность сделать сайт для поиска напарников для парного программирования.

Бэндэр и Фрай

Когда кому-то нужна помощь, он заходит на сайт, нажимает на кнопку «Нужна помощь» и описывает суть проблемы.

Например:

Всем привет, меня зовут Антон, мне 12. Дело такое: друг написал сайт, но у него по-дурацки реализована защита от накрутки в форме голосования. Хочу продемонстрировать ему проблему в действии, но я никак не могу понять, как в Python правильно использовать CookieJar с urllib2 — серьёзно, какое-то запутанное API. Так в остальном у меня почти всё готово, осталось как раз вот поддержку cookies прикрутить. Буду рад, если поможете!

Время на реализацию (приблизительно): 30 минут
Время для связи: любой день недели, с 3 p.m. до 12 a.m.

python, cj, cookiejar, urllib2

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

Классы типов на C++
Уже было описано как реализовать монады на C++ без классов типов. Я же хочу показать, как можно реализовать классы типов, использую в качестве примера монады.
Этот прием широко применяется в языке Scala, но может быть использован и в C++. Кратко я его описал в качестве иллюстрации трудностей унифицированного описания библиотек, сейчас же продемонстрирую его реализацию.
Нужно отметить что классы типов применяются не только в декларативных языках, как Haskell и Mercurry, но о нашли свое отражение в достаточно классических Go и Rust.
Этот прием так же подходит для реализации мультиметодов из Common Lisp и Clojure.

C++ я не брал в руки уже лет шесть, так что код может быть не идеоматичным и не использовать новые (полезные) фичи.
Кроме того, я полностью игнорирую проблему управления памятью — практикующие C++ справятся с этим лучше меня.
Работоспособность кода проверялась на gcc 4.7.3.

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

Хотя неделя 30-строчников закончилась, рискну привести ещё один пример сверхлаконичного кода JavaScript. Встречайте четырёхпанельный редактор HTML/CSS/JS, с превью в реальном времени, код которого умещается в 230 символов:

<x id=e><script>for(i=4;i--;)e.innerHTML+=(i?'<textarea id=t'+i:'<iframe')+' style=width:49%;height:48% oninput='e.lastChild.src="data:text/html;base64,"+btoa(t3[v="value"]+"<script>"+t1[v]+"</script><style>"+t2[v])'>'</script>

Посмотреть демо можно по этой ссылке. А можно просто вставить вот этот текст с кодом в адресную строку браузера:

data:text/html,%20<x%20id=e><script>for(i=4;i--;)e.innerHTML+=(i?'<textarea%20id=t'+i:'<iframe')+'%20style=width:49%;height:48%%20oninput='e.lastChild.src="data:text/html;base64,"+btoa(t3[v="value"]+"<script>"+t1[v]+"</script><style>"+t2[v])'>'</script>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

image

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

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

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

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

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

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


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