Обновить
147.13

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

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

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

Пятничный мини-CTF

Время на прочтение1 мин
Охват и читатели3.5K
Приветствую всех хабрачитателей. Я очень люблю поразмять свои мозги разными задачками — это могут быть какие-то математические задачи, интересные головоломки, связанные с программированием, или какие-то ctf-таски.

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

XT_CTF_01

XT_TASK_101

Ссылка на таск: xt_task_101.zip
Формат флага: XTGFLAG{…}
SHA1 флага: 6980D76C3C5246A101820A77031CA0EBE84A4A0E

XT_TASK_102

Ссылка на таск: xt_task_102.zip
Формат флага: XT{…}
SHA1 флага: 16448BF22750DE7E575A5A86E739FA9018ACFE52

XT_QUEST_103

Ссылка на таск: xt_quest_103.zip
Количество уровней: 15 + бонус
Читать дальше →

Снова про дырявые абстракции (или про непредсказуемое окружение)

Время на прочтение3 мин
Охват и читатели4.6K
Итак, довольно простая часть программы под Windows. Есть файл, содержащий несколько записей. И их надо определенным образом отфильтровать.

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

Пока все работает, повода об этом писать и правда нет. Но потом вдруг однажды «все падает», т.к. переименовывание не происходит из-за ошибки «Access denied». Случается это очень редко, но все же гораздо чаще, чтобы заподозрить космические лучи.
Читать дальше →

Компилируемая конфигурация распределённой системы

Время на прочтение18 мин
Охват и читатели3.3K

Хотелось бы рассказать один интересный механизм работы с конфигурацией распределённой системы. Конфигурация представлена напрямую в компилируемом языке (Scala) с использованием безопасных типов. В этом посте разобран пример такой конфигурации и рассмотрены различные аспекты внедрения компилируемой конфигурации в общий процесс разработки.


Жизненный цикл конфигурации


(english)

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

Предбольничный хотфикс или “Эй, Swagger! А где мои ошибки”?

Время на прочтение6 мин
Охват и читатели5.1K
Случалось ли вам налажать во время хотфикса в мастер? Нет?! А вот мне удалось!

Эта история о том, как я забыл обновить документацию. Как в итоге, написал плагин для Swagger (со второго раза). И как увлекся этим так, что забыл про свой больничный и пошел на поправку!


А еще немного про Optional не из Java 8.
История провала и успеха

Реализация голосового справочника на базе YandexSpeechKit

Время на прочтение14 мин
Охват и читатели4.8K

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


Примечание: я не являюсь профессиональным программистом, и, возможно, некоторые решения могут показаться вам дикими. Некоторые приемы могут быть устаревшими. Я готов принять критику и исправить систему к лучшему.


Краткое описание возможностей:


Пользователь попадает в IVR, произносит свой запрос и, в большинстве случаев, попадает туда, куда ему надо. К системе также прикручена статистика с записью в таблицу mysql.
Коротко о компании и сети, в которой развернута данная система:
~1000 телефонов, около 50 отделов

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

Автоматизация загрузки логов из Kibana в Redmine

Время на прочтение7 мин
Охват и читатели3.9K
Типичный юзкейс для Kibana — смотрим логи, видим ошибки, создаем тикеты по ним. Логов у нас довольно много, места для их хранения мало. Поэтому просто вставить ссылку на документ из Elasticsearch/Kibana недостаточно, особенно для низкоприоритетных задач: пока доберемся до нее, индекс с логом может быть уже удален. Соответственно, приходится документ сохранять в файл и прикреплять к тикету.

Если один раз это делать, то это еще куда ни шло, но создавать уже десять тикетов подряд будет тупо лень, поэтому я решил это «быстренько» (ха-ха) автоматизировать.


Под катом: статья для пятницы, экспериментальная фича javascript, пара грязных хаков, небольшая регулярка с галочками, reverse proxy, проигрыш безопасности удобству, костыли и очевидная картинка из xkcd.
Поехали!

Объединяем Websockets, Lisp и функциональное программирование

Время на прочтение10 мин
Охват и читатели6.8K

Alt text


Объединяем Websockets, Lisp и функциональное программирование. Но как?

Читаем

Как скрестить ежа с ужом. Используем GridView из Yii 2 в проекте на Laravel

Время на прочтение18 мин
Охват и читатели14K
Недавно была статья про Yii, где в комментариях обсуждали специфичные для Yii компоненты, в частности GridView и ActiveForm, и фреймворк Laravel. Я подумал, а почему бы и нет.

composer create-project laravel/laravel
...
composer require yiisoft/yii2

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

Разделяем интерфейс и реализацию в функциональном стиле на С++

Время на прочтение5 мин
Охват и читатели22K
Разделяем интерфейс и реализацию в функциональном стиле на С++


В языке С++ для разделения объявлений структур данных (классов) используются заголовочные файлы. В них определяется полная структура класса, включая приватные поля.
Причины подобного поведения описаны в замечательной книге «Дизайн и эволюция C++» Б.Страуструпа.

Мы получаем внешне парадоксальную ситуацию: изменения в закрытых приватных полях класса требует перекомпиляции всех единиц трансляции (.cpp файлов), использующих лишь внешний интерфейс класса. Конечно, причина этого кроется в необходимости знать размер объекта при инстанцировании, но знание причины проблемы не решает саму проблему.

Попытаемся использовать мощь современного С++, чтобы побороть этот недостаток. Заинтереснванных прошу под кат.
Читать дальше →

Что такое OT?

Время на прочтение6 мин
Охват и читатели8.6K

Неделя самописных языков разметки на Хабрахабре. Статья про AXON напомнила мне про мой проектик o.t — object template language. В нём я соединил интересные идеи из XML, YAML и прочих.


Что, ещё один?


Велосипеды бывают разные. Мне, например, было интересно попробовать создать именно язык описания данных и в какой-то степени язык разметки.

что из этого получилось

Фишки XAML-разработчика: композитные конвертеры

Время на прочтение3 мин
Охват и читатели6.3K
Статья будет посвящена простому, но эффективному паттерну — Composite Converter [составной конвертер].
image
Читать дальше →

Шорткаты в JavaScript

Время на прочтение4 мин
Охват и читатели26K


Изучая любой язык программирования, полезно знать о его особенностях и уметь эффективно использовать языковые конструкции. Хочу поделиться с вами шорткатами для JS. Эти сокращения в некоторых случаях могут облегчить чтение кода, а также существенно уменьшить его количество. Однако следует помнить, что они могут сыграть с вами злую шутку и, если использовать их повсеместно, ваш код перестанет быть читаемым и поддерживаемым.
Читать дальше →

Самомодифицирующийся код

Время на прочтение12 мин
Охват и читатели32K
В статье подробно рассказано о самомодифицирующимся коде (СМК), и о том, как его использовать в своих программах. Примеры написаны на C++ с использованием встроенного ассемблера. Ещё я расскажу о том, как выполнять код на стеке, что является существенным козырем при написании и выполнении СМК.



1. Вступление


Ну что ж, поехали. Статья обещает быть длинной, так как мне хочется написать её такой, чтобы у вас не возникло никаких вопросов. На тему СМК уже существует миллион статей, но здесь представлено моё видение проблемы – после сотен часов написания СМК… Я попытаюсь впихнуть все свои труды сюда. Всё, хватайте томатный сок (или что вы там предпочитаете пить), делайте музыку громче и готовьтесь узнать, как избавить своё приложение от начинающих кракеров! Попутно, я расскажу вам о памяти Windows и некоторых других вещах, о которых вы даже и не подозреваете.
Читать дальше →

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

Как мы сделали из JSON язык программирования

Время на прочтение4 мин
Охват и читатели22K
Спустя месяцы напряжённой работы мы наконец выпустили приложение для iOS Relevant. С ним мы ломаем существующие устои взаимодействия с сервисами и контентом в сети, благодаря чему пользователь тратит куда меньше времени на привычные вещи. Достигается это путём представления приложений и веб-сервисов в виде карточек (подробнее здесь).

Карточки, как независимые интерактивные единицы, показывают, каким будет будущее мобильных интерфейсов.
image
Читать дальше →

Калькулятор на чистом CSS3

Время на прочтение8 мин
Охват и читатели27K
Это был довольно интересный проект. Я пытался создать арифметический калькулятор чисто на CSS3 (а не JavaScript). Используя такие элементы, как calc(), attr(), counter() и пр. это казалось не таким уж сложным заданием, но все оказалось не так просто.

Прежде чем я начну, хотелось бы отметить, что обоснованных причин создавать калькулятор, используя только CSS, нет. Я сделал это просто ради интереса.

Стабильно работает только в Firefox 4 и IE 9

Одним из ключевых компонентов любого калькулятора является возможность преобразовывать ввод. Используя только CSS, мы имеем очень ограниченные варианты фиксации ввода. Таким образом, для регистрации всех вводов используются чекбоксы. Для применения изменений к другим элементам можно использовать состояние «:checked» и селектор «~», а так как они довольно прямолинейны, я не буду вдаваться в подробности, а вместо этого акцентирую внимание на логике вычисления значений.
Читать дальше →

Больше стихов в коде — Code Poetry Slam 1.1

Время на прочтение3 мин
Охват и читатели10K


27 февраля в Стэнфорде состоялся второй по счету конкурс поэтов, пишущих стихи на различных языках программирования — Code Poetry Slam 1.1. В отличии от стихотворений, упоминавшихся в прошлой заметке, конкурс не зацикливается на стихах в общепринятом смысле этого слова, во главу угла ставится само выступление автора, то, как он преподносит свою историю.
Читать дальше →

Простоквашино на Хабре или письмо Дяди Федора

Время на прочтение3 мин
Охват и читатели13K
Практически все дети (бывшие и нет) знают про деревню Простоквашино и помнят письмо Дяди Федора.

Нечто подобное, когда любой человек присоединяется к тексту письма, можно сделать на Хабре, где нет кота Матроскина и пса Шарика, но обитает много других замечательных персонажей с прекрасным чувством юмора, тактом и расстановкой.

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

В топиках на Хабре авторский пост четко отделен от комментариев. Иногда, уже после публикации, автор по своему желанию добавляет комментарии некоторых пользователей в свой пост.
Но все можно кардинально изменить…

Идея реализации коллективного поста

Автор поста придумывает название: “Тема письма и адрес послания”, при желании пишет краткую вступительную часть, ставит Habracut
Читать дальше →

Code Retreat на факультете информатики

Время на прочтение6 мин
Охват и читатели4.1K
Вдохновившись этой статьей от СКБ Контур, решили провести Code Retreat у себя на факультете (Томский государственный университет, факультет информатики). Правда у нас целью было не обучение каким-то конкретным технологиям, а скорее просто знакомство (половина участников с 1-2 курсов), фан и немного ненормального программирования.
Читать дальше →

ЯОФ – язык отчетных форм

Время на прочтение6 мин
Охват и читатели11K
image

Тринадцать лет назад я изобрел ЯОФ – язык отчетных форм, и даже включил его в качестве главы в свой бухгалтерский учебник.

Нет-нет, я не намерен смешить уважаемых хабравчан образцами «кода», благо сразу после своего рождения ЯОФ благополучно скончался, никому не интересный и не нужный, даже его изобретателю. Язык скончался, но проблема, которую он пытался решить, – в силу того, что ей мало кто занимался и сейчас не занимается, – осталась не решенной. Решение данной проблемы может представлять определенный интерес не только для бухгалтеров, но и для программистов.

Сейчас я попытаюсь объяснить, в чем дело.

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

Приводить здесь изобретенный мной «код» не рискну по причине его полной беспомощности, однако от логики, которая двигала мной в тот далекий момент, я не отказался по сей день. Возможно, мои рассуждения натолкнут кого-нибудь из айтишников на дельные мысли. Короче, информация к размышлению.
Читать дальше →

Олимпиада по программированию Летней школы МФТИ по прикладным математике и физике

Время на прочтение1 мин
Охват и читатели5.2K
В настоящее время для абитуриентов МФТИ проводится школа по прикладным математике и физике (подробнее о ней можно прочитать на официальном сайте). В её рамках на сайте http://judge.mipt.ru/index_school.html проходит заочная олимпиада по программированию. Она проводится по кировской системе (то есть баллы приносит
даже решение, которое проходит только часть тестов) на Ejudge. Результаты этой олимпиады будут учтены на собеседовании в МФТИ и при распределении первокурсников по группам по информатике. Будут задачи разного уровня от самых простых до совсем сложных, так что интересно будет всем, а победители получат призы и сувениры от спонсоров. Часть задач доступна уже сейчас, остальные будут добавляться по мере работы Школы. Награждение победителей планируется 9 июля, вместе с награждением победителей олимпиады по физике и математике Летней школы.

UPD.
По просьбам добавляю в пост ссылку на инструкцию по проверяющей системе. Если есть какие-то вопросы, задавайте их в комментариях, с удовольствием отвечу.
Читать дальше →

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