Обновить
149.99

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

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

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

Код на php внутри ваших bat файлов

Время на прочтение1 мин
Количество просмотров3.4K
Довольно часто пишу для себя мелкие скрипты на пхп, но каждый раз запускать их из командной строки надоело, а ассоциировать на запуск по двойному клику нехотелось, так как уже привык что в этом случае файл открывается в редакторе. Можно писать батники, с единственной строчкой внутри, для запуска, но в этом случае на каждый простой скрипт будет уже два файла, вот эти то файлы я и решил скрестить.

То что получилось
Создаем файл, называем его например p.bat и пишем в него следующий код

rem <?/*
"путь до интерпретатора пхп" p.bat
exit
rem */ echo "\r \r";

//тут код на пхп

Пояснить наверно надо только строку 4, вызов echo нужен чтобы затереть в выводе слово rem

О некоторых особенностях написания дистрибутивных пакетов на NSIS для х64 систем

Время на прочтение1 мин
Количество просмотров3.4K
Столкнулся с неожиданным (для меня) поведением NSIS инсталлеров для 64 битных систем.

Речь идет об обращении к реестру Windows. Долгое время не мог понять почему некоторые значения из реестра я могу получить стандартными инструментами NSIS, а некоторые другие — не могу.
Читать дальше →

Результаты конкурса на лучшую #codejoke

Время на прочтение3 мин
Количество просмотров701
Больше месяца назад Microsoft User Group Винница объявила конкурс, суть которого была в том, чтобы рассказать анекдот или историю с помощью программного кода. Призы были более чем стимулирующими — это Windows 7 Ultimate.

Время шло и накопилось достаточно много шуток-прибауток, спасибо всем участникам. Сегодня MSUG объявляет результаты конкурса.
Читать дальше →

Реверси на TCL в 64 строки

Время на прочтение4 мин
Количество просмотров4.4K
На хабре уже есть топики про написание игры Реверси (Отелло) на Python, Silverlight.
Изобретем велосипед на Tcl/Tk. Кроссплатформенно (работает даже на Windows Mobile при небольшой модификации), всего в 64 строки.

image

Код, небольшое описание и скрин с WinMobile под хабракатом.
Читать дальше →

~~Две тильды

Время на прочтение1 мин
Количество просмотров10K
Внезапно встретил такой JS-код:
var a = ~~b;
Сразу вспомнил, что ~ — это битовое дополнение, показалось, что написано просто
var a = b;
Однако битовые операции применимы только к целым числам, поэтому тут ещё неявное приведение типа. Самый короткий способ написать var a = Math.floor(b);?

Но не ведитесь на короткую крутую запись: Math.floor() работает вдвое быстрее (проверил в FF3.6).

~~$x для округления работает и в Перле, причём по времени столько же, сколько int($x). Интересно, что в других языках? В Питоне, наверно, тоже сработает? Upd: не сработало.

Все знают что "++i + ++i" — плохо, но что-же за ширмой?

Время на прочтение3 мин
Количество просмотров30K
Баг, выглядывающий из-за ширмы на вас о_ОНесомненно, все программисты знают что использование выражений, подобных тому что приведено в заглавии поста, не то что нежелательно, а строго противопоказано. Такие конструкции, поведение компилятора в которых не определено, могут принести множество трудноуловимых ошибок и нежелательных последствий. Но уверен, многим начинающим программистам хотелось бы по глубже понять эту проблему и, заглянув за ширму компилятора, узнать что же именно происходит в таких случаях. Изучению одного из примеров подобного кода я и посвящаю этот пост. Добро пожаловать под кат :)
Читать дальше →

Шуточный конкурс с дельными призами

Время на прочтение1 мин
Количество просмотров1.1K
Сообщество MSUG объявило о веселом конкурсе. Вы придумываете и присылаете анекдоты или шутки в формате программного кода или сказки, притчи и басни на ИТ тематику. Это могут быть видео и аудио варианты вашего творчества или стихотворения в стиле Крылова — выбор за вами!

Публиковать свои произведения альтернативного искусства можно в твиттере: анекдот-код с тегом #codejoke, басни/притчи — #itfairytale, на форуме или прямо в комментариях.

Нет никаких ограничение в выборе языка программирования для #codejoke. Для затравки:

image

Авторы лучших #codejoke и #itfairytale получат лицензированную Windows 7 Ultimate!

Кроме того, мы разыграем купоны со скидками для сдачи сертифицированных экзаменов, предоставим участникам доступ к оригинальным электронным книгам по последним технологиям Microsoft.
Читать дальше →

STDIO плагины или как совместить несовместимое

Время на прочтение1 мин
Количество просмотров750
Идея проста — подключаем к программе внешний модуль через pipe (STDIO или TCP/IP).
Обмен текстовыми командами в формате командной строки: <команда> [параметр [параметр [...]]]<CR/LF>
В качестве параметров могут быть любые сериализованные данные. Как в протоколах POP3/SMTP.
image
Таким образом, можно подключать к программе, например, проверку синтаксиса или переводчик, который реально находится где-то в интернете. Можно подключать плагины, написанные на любых скриптовых языках (батники, например) и платформах. Можно даже подключить программу саму к себе. =)

Весь нюанс в том, чтобы использовать пайпы как API для плагинов (вместо прямого вызова кода), а не для фильтров. Идея далеко не нова, но почему-то очень редко используется.
Читать дальше →

Море волнуется раз ..., или Капча 4D

Время на прочтение2 мин
Количество просмотров4.1K
Как то я уже писал топик про каптчу 3D
Дай карму! :)
А вчера решил слегка переделать, добавить рюшечек и еще одно измерение.
Долго сказка пишется, да быстро дело делается, рушил сделал и вот наваял гиперкуб Капчу 4D.
А посмотреть что получилось можно здесь

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

Время на прочтение4 мин
Количество просмотров9.7K
Когда-то, когда деревья были большими, а мобильники — ещё совсем дикими, и не существовало единых стандартов и Винды для телефонов, я был счастливым обладателем Siemens C72 — одного из немногих телефонов, позволяющих полноценно работать с файловой системой (на других телефонах в то время доступ к ФС был либо сильно ограничен, либо полностью отсутствовал).

Так уж вышло, что ПК к тому времени у меня ещё не было, а окунуться в увлекательный мир программирования уже хотелось. Так я поставил и родилась идея — начать кодить на мобильнике. Жесть, скажете вы? Оренбургские программисты настолько суровы, что мы пишут мобильные приложения на самих мобильных. Да, именно так, и я решил написать свою первую статью на Хабр, основываясь на своём опыте, т.к. в рунете подобные темы ещё не поднимались.

Итак, с чего все начиналось?

Читать дальше →

No Canvas

Время на прочтение7 мин
Количество просмотров2.6K
Возможно, это лучше перенести в «Я пиарюсь» или «JavaScript» (принимаются предложения). А может, стоит оставить всё как есть. Тем не менее...

3D с z-buffer-ом, субпиксельной точностью и освещением по Гуро на javascript? Да кто угодно сможет это сделать, используя canvas!

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

Так чем же?

Ближайшие события

Лепестки роз на bash

Время на прочтение1 мин
Количество просмотров3K
Два года тому назад я вступил в братство хранителей тайны лепестков розы. Потратил на это два вечера и решил, что потратить еще один для написания игры на баше, будет не менее увлекательным занятием.

image

Для тех, кто не знаком с этой загадкой советую почитать историю о том, как вступал в братство Бил Гейтс
Читать дальше →

Сетевой морской бой на bash

Время на прочтение2 мин
Количество просмотров9K
Недавно с целью изучения bash написал на нем игру в «морской бой» для игры по сети. Игра получила название «Sink 'em all».

image

Из внешних программ используются только nc (для организации взаимодействия по TCP), stty (для выключения эха при нажатии клавиши) и clear (для очистки терминала).
Читать дальше →

Свои судоку на своих батниках

Время на прочтение2 мин
Количество просмотров5.2K
image
С предыдущего хабратопика я понял, что хабражителям очень понравился сапер на своих батниках и поэтому рискнул написать еще одну игру, а именно — Судоку. И опять же, на своих батниках.
Как и Minesweeper, Sudoku for cmd.exe имеет ряд следующих преимуществ:
  • Оригинальное лого
  • Двухцветный текстовой графический интерфейс (фон — чёрный, текст — серый)
  • Возможность воспроизведения программы практически на любом компьютере
В общем, это Судоку для настоящих мужчин. И скачать эту замечательную игру вы можете прямо сейчас, воспользовавшись этими ссылками: Plain Text | Google Docs
Читать дальше →

Работа с массивами в bat

Время на прочтение6 мин
Количество просмотров58K
Прочитав пост Свой сапер на своих батниках и пробежавшись по коду, наткнулся на комментарий, что в батниках нет массивов (кстати, в последней версии Сапера, о котором идёт речь в том посте, нет этого комментария). Так вот, если в батнике необходимо использовать некоторый набор значений, то логично объявить такое кол-во переменных, которое требуется и работать с ними. Собственно данный сценарий эту задачу помогает решить проще. Вот несколько примеров:

echo Создание массива А:
call :array new A "'one','two','three','foo','bar'"
echo Получение третьего элемента в result:
call :array get A 3 result
echo %result%
echo Изменение нулевого элемента
call :array set A 0 "первый элемент"

подробнее

Программируем «на уровне операционной системы»

Время на прочтение2 мин
Количество просмотров7.6K
b.s Сразу отбросим вопросы производительности, безопасности и оптимальности. Для данной зарисовки они не важны.

Последние топики про программирование на языке bat файлов напомнили вот такую концепцию. Оно конечно написано в шутку, но почему бы и нет. Может у кого-то в голове что-то и перевернет. ;)

Не претендую на авторство — наверняка такая идея уже кем-то была придумана ранее.

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

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

А не вывернуть ли все это наружу? На уровень доступный пользователю ОС. На уровень файловой системы. :)
Читать дальше →

Цепной квайн произвольного порядка на Python

Время на прочтение3 мин
Количество просмотров1.8K
   Впечатленный цепным полиглотным квайном японца, приведенным в этом хабратопике, я, ранее уже встречавшийся с программами-квайнами, решил познакомиться с ними плотнее. После беглого гугления и непродолжительного чтения вики/блогов/сайтов по теме, у меня зачесались руки и захотелось написать свой квайн. Квайн был написан, даже в нескольких вариантах, но этого мне показалось мало. Позже я даже написал двойной квайн (код на python генерирует код на prolog а код на prolog в свою очередь первоначальный python-код).

   Однако, тут возник вопрос. А можно ли написать квайн любого порядка (т.е. тот, который будет переходить сам в себя после N запусков)? Как оказалось, это вполне возможно. Результатом изысканий явился следующий код:

# xonix
L=19;B,Q,N,q,n=map(chr,(36,81,78,39,10))
X='import sys;sys.stdout.write(%s%s%s.replace(chr(36)+chr(81)+chr(36),chr(39)).replace(chr(36)+chr(81),chr(36)).replace(chr(36)+chr(78)+chr(36),chr(10)).replace(chr(36)+chr(78),chr(36)))'
Y='# xonix%sL=%s;B,Q,N,q,n=map(chr,(36,81,78,39,10))%sX=%s%s%s%sY=%s%s%s%sE="""%s""";exec E%simport sys;sys.stdout.write(b())'
E="""def b(l=L):
  if l==L: Ql=q
  else: Ql=B+Q*(L-l)+B;Nl=B+N*(L-l)+B
  if l>0: return X%(Ql,b(l-1),Ql)
  else: return Y%(Nl,str(L),Nl,Ql,X,Ql,Nl,Ql,Y,Ql,Nl,E.replace(n,Nl),Nl)"
"";exec E
import sys;sys.stdout.write(b())


Читать дальше →

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