Мой предыдущий пост оправдал ожидания вызвал весьма оживленную дискуссию. Тема актуальная и интересная, поэтому стоит продолжать. И самое время заложить основы понимания и определиться с терминологией.Читать полностью »
Рубрика «ненормальное программирование» - 91
Терминология или раскладываем по полочкам
2014-01-13 в 22:49, admin, рубрики: биоинформатика, взлом мозга, искусственный интеллект, мозг, ненормальное программирование, метки: биоинформатика, взлом мозга, искусственный интеллект, МозгЛисп из Питона
2014-01-13 в 14:33, admin, рубрики: Лисп, ненормальное программирование, Питон, метки: Лисп, ПитонСчитается, что Питон — не очень пластичный язык. В нем нет макросов ни в одном из значений слова «макрос», нет красивых строковых миксинов, как в D, нельзя вводить свои операторы. Расширять язык можно только с помощью новых функций и классов. Фактически, программист на Питоне привязан к определенному синтаксису и, как следствие, определенному стилю решения проблем. «One way to do it». Таким образом, Питон располагает к написанию простого читаемого кода, что, естественно, очень даже хорошо. Но скучно.
К счастью, проявив некоторую фантазию, питоновский синтаксис тоже можно поломать. Например, можно сделать из Питона Лисп. Следующий пример — валидный питоновский код, который запускается интерпретатором без всякой дополнительной обработки и предсказуемо выводит в консоль "[24, 42]".
from fakelisp import *
# And now you can write Lisp
(BEGIN
(SET (F) (LAMBDA (X)
(IF (EQ (X) (1))
(1)
(MUL (X) (F (SUB (X) (1)))))))
(SET (X) (QUOTE (F (4)) (42))))
# Back to Python any time
print "x: ", X
Передача треков Google Analytics сторонним доменам без javascript
2014-01-13 в 14:02, admin, рубрики: google analytics, java, php, ненормальное программирование, метки: google analytics, java, PHP, никто не читает теги
О чем статья?
- О междоменном отслеживании
- О том, что если чего-то нет в официальной документации, то это не повод печалится, а повод добавить такую возможность.
Зачем передавать?
Чтобы не терять информацию о пользователе во время его перехода в платежную систему для совершения покупок, а также его походов по нашей экосистеме сайтов.
Почему без javascript?
- Если нужно выполнить редирект пользователя после обработки логики запроса на сервере.
- Google Analytics api и так хорошо документирован, а читать копипаст документации это не уровень хабра, не так ли?
Суть метода проста. Берем все куки вида __utm и передаем их, как параметры, в урле на другой домен. Ничего не происходит. Расходимся. Добавляем последним параметром __utmk, который является особым хешем всех остальных кук гугл аналитики. Поздравляю мы сделали, то что делаем функция _link в известном файле ga.js от Google Analytics.
И так если у вас переход на другие сайты обрабатывал контроллер, то вам не надо во все ссылки добавлять конструкцию вида:
onclick="_gaq.push(['_link', 'https://www.payment-system.com?contractId=example']); return false;"
Если нужны исходники формирования хеша для ключа utmk, прошу в github.
Далее история о процессе получения данного метода.
200 миллисекунд свободы
2014-01-12 в 20:32, admin, рубрики: Биотехнологии, взлом мозга, искусственный интеллект, мозг, ненормальное программирование, метки: биотехнологии, взлом мозга, искусственный интеллект, МозгВ 1979 году американский психолог Бенджамин Либет провел свой знаменитый эксперимент, который взбудоражил научное сообщество, но как-то прошел мимо широкой массы. А очень зря, ведь он показывает всю чудовищную правду о о нашей «свободной воле».Читать полностью »
Пара полезных исключений из правил по форматированию исходного кода
2014-01-11 в 19:06, admin, рубрики: ненормальное программирование, оформление кода, Программирование, Совершенный код, условные конструкции, метки: оформление кода, условные конструкции Плоский дизайн (flat design), это сейчас модно и красиво. Внесем же наш маленький вклад в общую тенденцию, применим немного flat-форматированного кода
Читать полностью »
Игра в 30 команд Ассемблера
2014-01-11 в 17:59, admin, рубрики: 30 строк, крестики-нолики, ненормальное программирование, метки: 30 строк, ассемблер, крестики-нолики В прошлом году были популярны темы, как написать программу за 30 строк кода. Все примеры были сделаны на JavaScript. Для запуска таких программ требуется не только веб страница, но и браузер, разные библиотеки, ядро ОС наконец. На самом деле работают не 30 строк кода, а десятки, сотни мегабайты программного кода, находящиеся в памяти компьютера.
А можно ли написать не полностью бесполезную программу за 30 строк ассемблера, без лишних библиотек и мегабайт ОС?
В этой статье я опишу, как можно сделать крестики-нолики за 30 строк ассемблера.
Читать полностью »
Победители 22-го конкурса IOCCC
2014-01-07 в 9:56, admin, рубрики: IOCCC, ocr, Демосцена, ненормальное программирование, метки: IOCCC, ocr
Опубликован исходный код программ-победителей 22-го конкурса программ с обфусцированным кодом на C. Участвовать в конкурсе могут готовые программы размером меньше 4096 байт, при этом количество значимых символов, без учёта пробелов, знаков табуляции и знаков; ( ), не должно превышать 2048. Впрочем, в этом году многие участники воспользовались эксплоитом для бага в модуле вычисления размера программы, так что в 2013 году на конкурс были представлены, пожалуй, самые продвинутые программы за все годы проведения соревнований.
Например, вызывает искреннее восхищение эмулятор 8086-компьютера размером 4043 байта (исходный код) с полным набором инструкций 8086/186, который поддерживает флоппи-диски и HDD и PC-спикер.
Читать полностью »
Melange — DSL для сетевых протоколов
2013-12-28 в 20:07, admin, рубрики: mpl, ocaml, qt, qt quick, Qt Software, spl, ненормальное программирование, сериализация, сетевые протоколы, функциональное программирование, метки: mpl, ocaml, Qt, qt quick, spl, сериализация, сетевые протоколыВсем программистам рано или поздно приходится передавать данные. Ни для кого не секрет, что библиотек сериализации в Java существует примерно >9000, а в C++ они вроде и есть, а вроде их и нет. К счастью для большинства, несколько лет назад появился Google Protobuf, который принёс достаточно удобный способ определять структуры данных и быстро завоевал всенародную любовь. Это была фактически первая, доступная широким массам библиотека, позволяющая гонять по сети готовые структуры данных, не связываясь при этом с чем-то вроде XML. На дворе был 2008 год.
Вернёмся немного назад. В 2006 году простой индийский программист (как бы подозрительно это ни звучало!) Анил Мадхавапедди, один из самых известных сейчас в мире OCaml-разработчиков и автор свежевышедшей книги Real World OCaml, защищал в Кембридже кандидатскую диссертацию. Именно о ней я сегодня вам и расскажу.
Анил сразу пошёл дальше, чем Google. Он сразу подумал, для чего люди обычно пересылают по сети какие-то формализованные структуры данных? Чтобы реализовать какой-то протокол. А что такое протокол? Это какой-то конечный автомат. А где мы можем взять хороший пример сложного, хорошо спроектированного и проверенного временем протокола? Да прямо в обычном сетевом стеке! Итак, были взяты набор сетевых структур данных и протоколов: Ethernet frame, IPv4, ICMP, TCP, UDP, SSH, DNS и DHCP и постановка задачи: большая часть этих протоколов (особенно SSH и DNS) реализуются, что называется «руками», а хочется, чтобы не было типичных для C переполнений буфера, все переходы совершались автоматически, это всё можно было верифицировать, и чтобы работало быстро, а не как обычно.
Поскольку никто не будет читать диссертацию, сразу скажу: это более чем удалось. По результатам работы были написаны референсные реализации DNS и SSH-сервера и произведено сравнение с BIND и OpenSSH. OCaml-реализации давали по сравнению с традиционными прирост производительности от незначительного, до почти двухкратного. Кроме того была найдена ошибка в RFC на SSH (рабочая группа была уведомлена и RFC исправлен). О том, что было сделано, и как с этим жить, читайте под катом. Читать полностью »
Portable Network Javascript
2013-12-26 в 17:53, admin, рубрики: PNG, Веб-разработка, компрессия, ненормальное программирование, обработка изображений, метки: PNG, компрессияПриукрасим забытое старое
Для начала — небольшая картинка в качестве эпиграфа. Продолжение — под катом.
С наступающим!
2013-12-24 в 6:51, admin, рубрики: arduino, LED, POV, ненормальное программирование, переводы, Разработка под android, метки: arduino, LED, POV, переводыДо нового года осталось меньше 2 недель, улицы засыпает снегом, даже в Африке, люди украшают новогодние ели, а у меня появилась волшебная палочка...Читать полностью »