Просматривал исходники одного проекта, зарубежный портал с возможностью публикации аудио-видео и т.д., не суть важно. И вот так там реализована регистрация пользователей, вернее — получение id пользователя при его регистрации.
JavaScript
1 min
1.7KСегодня на работе встретил в коде на JS довольно забавный кусок:
obj_.checked=(obj_.checked==true)?false:true;
obj_.checked=(obj_.checked==true)?false:true;
Причины и следствия
3 min
1.1KЗдесь я хочу поделиться с вами тремя примерами неадекватного кода. И в то же время постараюсь разобрать и классифицировать каждый случай. Тем самым расскажу не только «что такое плохо?», но и «почему?»
Перебор, бессмысленный и беспощадный
1 min
461Этот кусок AS1-кода задаёт поведение нескольких кнопок. Орфография и пунктуация сохранены. Я уж прямо не знаю, смеяться или плакать — мне такого кода выдали пару десятков тысяч строк и сказали доделать…
onMouseDown = function() {;
if (btn_right._visible && btn_right.enabled) {;
if(btn_right.hitTest(_xmouse, _ymouse, 0)){;
btn_right_release();
};
};
if (ready._visible && ready.enabled) {;
if(ready.hitTest(_xmouse, _ymouse, 0)){;
ready_release();
};
};
if (ready2._visible && ready2.enabled) {;
if(ready2.hitTest(_xmouse, _ymouse, 0)){;
ready2_release();
};
};
if (yesno.no._visible && yesno.no.enabled) {;
if(yesno.no.hitTest(_xmouse, _ymouse, 0)){;
no_release();
};
};
if (yesno2.no._visible && yesno2.no.enabled) {;
if(yesno2.no.hitTest(_xmouse, _ymouse, 0)){;
no2_release();
};
};
};
Хабрапоиск + Визуальный поиск в IE8
3 min
584Категорически приветствую тебя %username%.
Не знаю как у Вас, а у меня ночью наступает «творческий порыв», о чем я обычно утром очень сильно жалею. Но не будем сейчас о плохом, т.к. пока не утро, то я еще успею поделиться одним из
Не знаю как у Вас, а у меня ночью наступает «творческий порыв», о чем я обычно утром очень сильно жалею. Но не будем сейчас о плохом, т.к. пока не утро, то я еще успею поделиться одним из
Дыры в форуме NetCat
1 min
2.6KВы наверное уже слышали о CMS Netcat и даже видели кое-какие примеры кода этой CMS.
С тех пор ребята пообещали исправится и, кроме прочего, год назад пообещали выпустить новый форум через пол года. Воз и ныне там.
Более того, уже как год был найден баг, позволяющий очень просто писать на их форуме от имени любого пользователя. И этот баг до сих пор не был исправлен ни в версиях, что компания продает, не на сайте самой компании.
Вот я и решил поделиться этим багом.
1) Заходим в любую ветку форума, пусть для определенности будет эта.
1,5) Если вы залогинены, нужно выйти
2) Нажимаем Ответ
3) Вводим в поле «Имя пользователя» число.
Все!
Число, которое мы ввели и будет айдишником пользователя, от чьего имени появится сообщение.
Можно представить, какой бардак творится в коде у системы.
UPD. Сейчас форум на сайте компании закрыли. Если в ближайшее время появится патч, можно считать что я добился того, что хотел, публикуя эту статью.
С тех пор ребята пообещали исправится и, кроме прочего, год назад пообещали выпустить новый форум через пол года. Воз и ныне там.
Более того, уже как год был найден баг, позволяющий очень просто писать на их форуме от имени любого пользователя. И этот баг до сих пор не был исправлен ни в версиях, что компания продает, не на сайте самой компании.
Вот я и решил поделиться этим багом.
1) Заходим в любую ветку форума, пусть для определенности будет эта.
1,5) Если вы залогинены, нужно выйти
2) Нажимаем Ответ
3) Вводим в поле «Имя пользователя» число.
Все!
Число, которое мы ввели и будет айдишником пользователя, от чьего имени появится сообщение.
Можно представить, какой бардак творится в коде у системы.
UPD. Сейчас форум на сайте компании закрыли. Если в ближайшее время появится патч, можно считать что я добился того, что хотел, публикуя эту статью.
Феерические архитектурные подходы или Javascript наше всё
4 min
1.6KМоё кунфу сильнее, сказал Вася и продолжил дописывать замечательный сайт.
Malbolge: Programming from Hell
2 min
26KДоброе время суток, Хабраобщество.
Страдал я в свое время ерундой, отслеживая появление разных эзотерических языков программирования и попался мне небезызвестный всем нам Malbolge. Вот собственно о нем я и хочу поведать. Ну, начнем-с.
Страдал я в свое время ерундой, отслеживая появление разных эзотерических языков программирования и попался мне небезызвестный всем нам Malbolge. Вот собственно о нем я и хочу поведать. Ну, начнем-с.
Вычисление факториала на числах Чёрча
5 min
25KДоброго дня, друзья!
Тема функционального программирования раскрыта на Хабре весьма неплохо, есть целая куча статей посвященных λ-исчислению, числам Чёрча и подобным темам, так что ничего нового я не открою, зато мы напишем одну бесполезную и крайне неэффективную программу.
Для того, чтоб жизнь мёдом не казалась, ограничим себя небольшим подмножеством языка JavaScript, а именно, будем использовать только анонимные функции от одного аргумента. Больше нам ничего не потребуется (ну почти).
Начнем с определения факториала, и посмотрим, что нам понадобится в процессе решения задачи:
Итак, нам потребуются функции, логические значения (для результата операции сравнения с нулем), условный оператор, операции умножения и вычитания единицы, кроме того нужно будет реализовать рекурсивный вызов функции.
Готовы?
Тема функционального программирования раскрыта на Хабре весьма неплохо, есть целая куча статей посвященных λ-исчислению, числам Чёрча и подобным темам, так что ничего нового я не открою, зато мы напишем одну бесполезную и крайне неэффективную программу.
Для того, чтоб жизнь мёдом не казалась, ограничим себя небольшим подмножеством языка JavaScript, а именно, будем использовать только анонимные функции от одного аргумента. Больше нам ничего не потребуется (ну почти).
Начнем с определения факториала, и посмотрим, что нам понадобится в процессе решения задачи:
var fact = function (n) {
if (n === 0) return 1;
return n * fact(n - 1);
};
Итак, нам потребуются функции, логические значения (для результата операции сравнения с нулем), условный оператор, операции умножения и вычитания единицы, кроме того нужно будет реализовать рекурсивный вызов функции.
Готовы?
Несмешная первоапрельская шутка от разработчиков Magic Lantern
4 min
78KMagic Lantern (ML) — неофициальная прошивка для фотоаппаратов Canon, которая обеспечивает повышенную функциональность (например, dual-iso, стекинг по фокусу, raw-видео, тонкая настройка параметров съемки и многое другое). Прошивка устанавливается непосредственно на flash-карту, что позволяет безболезненно удалить ее или обновить простой заменой файлов.
На хабре уже были публикации по данной прошивке, поэтому подробно расписывать преимущества и порядок установки я не буду. Расскажу, как попался на неявную и несмешную первоапрельскую шутку от разработчиков данной прошивки.
Все описанные действия производились с использованием камеры Canon 650D со стоковой (1.01) прошивкой.
28 марта. Началось все тогда, когда жажда исследования чего-то нового накопилась до критической массы и в сети была случайно обнаружена информация о возможности автоматической съемки фокус-стека на моем фотоаппарате. Но данные возможности требовали установки неофициальной прошивки Magic Lantern.
Быстрый поиск показал, что:
После чего фотоаппарат был успешно перепрошит на последнюю официальную версию для Canon 650D 1.04. И строго по инструкции, со сбросом всех настроек и полным форматированием карты, был установлен последний ночной билд Magic Lantern (от 28 марта).
На хабре уже были публикации по данной прошивке, поэтому подробно расписывать преимущества и порядок установки я не буду. Расскажу, как попался на неявную и несмешную первоапрельскую шутку от разработчиков данной прошивки.
Все описанные действия производились с использованием камеры Canon 650D со стоковой (1.01) прошивкой.
28 марта. Началось все тогда, когда жажда исследования чего-то нового накопилась до критической массы и в сети была случайно обнаружена информация о возможности автоматической съемки фокус-стека на моем фотоаппарате. Но данные возможности требовали установки неофициальной прошивки Magic Lantern.
Быстрый поиск показал, что:
- текущая прошивка фотоаппарата не поддерживает текущие сборки ML;
- для модели 650D нет стабильной сборки, есть только ночные билды;
- некоторые функции ML в 650D не работают/работают криво;
- авторы предупреждают, что можно закирпичить фотоаппарат неверными действиями по прошивке.
После чего фотоаппарат был успешно перепрошит на последнюю официальную версию для Canon 650D 1.04. И строго по инструкции, со сбросом всех настроек и полным форматированием карты, был установлен последний ночной билд Magic Lantern (от 28 марта).
Коллекционирую вредные советы для С++ программистов
2 min
22K
Я пишу статьи, посвященные написанию качественного кода и про поиск ошибок с помощью инструментов статического анализа. Однообразие наскучивает, хочется пошалить. А давайте все вместе напишем статью "100 вредных советов для С++ программиста". Я начну, а вы подхватите.
Еще одна вариация Brainfuck
4 min
2.5K