Search
Write a publication
Pull to refresh
0
0
bobic @bobic

User

Send message

Легальный взлом как разминка для ума

Reading time5 min
Views15K
IT-шники часто придумывают себе упражнения для ума, пытливый ум постоянно требует разминки. Хочу рассказать об одном из самых жестких и спорных способах – взлом специально защищенных программ-головоломок (Часто их называют crackme).

Одно из мест, где такие головоломки собраны — crackmes.de.

Здесь находятся много интересных программ, на которых можно испробовать свои силы по взлому. Никакого криминала – программы специально написаны для этой цели (так называемые crackme и reverseme);

Часто любят говорить «Все защиты можно взломать». Поковыряв некоторые из crackme вы возможно измените своё мнение.
Читать дальше →

Особенности настройки git под windows

Reading time3 min
Views109K
Проблемы с русскими символами в git

Когда вы начнете работать с версией git под windows в командной строке, вы столкнётесь со следующей проблемой — все сообщения git, в которых фигурируют русские символы будут нечитаемы. Имена файлов, на русском языке, будут выглядеть так — "\362\345\361\362", а тексты коммитов примерно так — <C8><ED><E8><F6><E8><E0><EB><E8><E7><E0><F6><E8><FF> <EF><F0><EE><E5><EA><F2><E0>. Т.е. исходная строка преобразуется в utf8 в соответствии с кодировкой latin1.

далее...

Установка SVN практически на любой хостинг (static svn)

Reading time1 min
Views4.5K
0. Интро

Практически всегда хостинг не предусматривает поддержку svn для конечного пользователя или эта возможность идет в качестве дополнительной платной опции, а обновлять проект с большим количеством файлов — занятие не из легких. Тем более, когда изменения затронули много связанных между собой файлов. Старый вариант через фтп или закачка архива с последующей его распаковкой не особо подходит, так как влечет за собой вероятность возникновения ошибок. Будь-то недокачка какого-то файла (ftp) либо неверные права на папки\файлы (архивом). Все это для примера. Но есть более удобный способ решить эту проблему. Установить svn на хостинг.
Читать дальше →

Добавление скриптинга в программу с помощью Lua

Reading time6 min
Views20K

Lua это мощный, быстрый, легкий, встраиваемый язык сценариев. С его помощью можно легко и быстро добавить поддержку скриптинга в вашу программу.
Это может понадобиться в тех случаях, когда вы хотите дать возможность пользователям производить самостоятельную донастройку (кастомизацию) вашей программы, когда вы не хотите перекомпилировать весь проект, при внесении каких-либо изменений в логику работы программы, либо хотите разделить работу над движком и работу над логикой между разработчиками (например, при написании игр).

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

Примеров программ, которые используют Lua достаточно много. Далеко не полный список программ, использующих Lua, можно посмотреть здесь Lua Wiki и здесь Wikipedia
Читать дальше →

Делаем правильную платформу или Как повторить Google

Reading time5 min
Views2.7K
Введение
Сегодня я расскажу о проектировании высоко-нагруженных отказоустойчивых систем. Акцент будет поставлен практическую разработку и жареные факты, а не на сухую теорию. После прочтения вы не испугаетесь разработки сервиса с миллиардом пользователей, если у вас будет достаточное количество серверов. Тема весьма обширна, но я постараюсь быть кратким и лаконичным.
Читать дальше →

Системы коллективного комментирования в отладке сайтов

Reading time6 min
Views3.2K
В этом обзоре мы проанализировали несколько систем коллективного комментирования веб-страниц и постарались найти идеальный инструмент для удаленного обсуждения и отладки work-in-progress сайтов с заказчиком и другими участниками работы.

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

Игра для программистов — Быки и коровы

Reading time14 min
Views24K
Привет Хабралюди. Я расскажу вам, как на Питоне написать движок и примерный бот игры для программистов. Игры для программистов — это такие игры, в которые играют не люди, а программы.

Научиться писать игры для программистов

О монадических технологиях

Reading time6 min
Views3.5K
Кирпичёв правильно пишет про небрежность интуитивного понимания императивных языков: http://antilamer.livejournal.com/300607.html.

Однако, мне кажется, что важно было бы озвучить, что всё то, что сейчас скрывается под именем «монада» — само по себе достаточно спутанно в плане педагогики и евангелизма.  Классическая шутка SPJ/Вадлера звучит как «нам следовало назвать ЭТО warm fuzzy things, чтобы не пугать людей теоркатом».  Шутка поразительно недальновидная.   Проблема лежит в той же плоскости, что и называние стоящих перед тобой задач словом «stuff» (это то, с чем борется Аллен в своём GTD).  
Монады в настоящий момент являются миру как сложный ком из исторически обусловленных причин, проблем, решений, технических возможностей и теоретических основ (как алгебраических, так и аспектов теории вычислений). 
Все эти наслоения можно (и нужно) расщепить в первом приближении так (порядок приблизительно случайный):
  • стремление к экспликации эффектов (чистое внедрение императивно-подобных моментов в вычисление), (см. труды Вадлера);  здесь мы включаем ввод-вывод, STM, параллельные вычисления и проч.)
  • удобный механизм для материализации базовых микро-стратегий вычисления — вызов функции (call-by-name/call-by-value), многозначность, смена состояния (присваивания!), обработка исключений, останов при неудаче, continuations, бэктрекинг;
  • typeclasses как механизм внесения монад в язык, и как следствие — удобный механизм для мета-перехвата вычисления (невероятно удобно для domain-specific embedded languages);
  • строгая проверка типов, проистекающая из использования typeclasses, и позволяющая механически проверять корректность использования объектов;
  • существование монадических законов, в которые укладываются монады, что позволяет материализовывать абстрактные комбинаторы; это позволяет находить порой неожиданные изоморфизмы между различными предметными областями, а также помогает при оптимизации и верификации программ;
  • проработанная теоретическая основа (теория категорий), на которой базируются монады; это облегчает жизнь создателям базовых библиотек, на которых потом базируется всё реальное программирование;
  • монады — лишь один из классов в длинной цепочке интересных алгебраически обусловленных классов, некоторые из которых слабее монад, а некоторые — сильнее: Functor, Applicative, Monoid, Traversable, Foldable, Monad со товарищи, Arrow со товарищи;
  • стремление к материализации некоторых видов вычислений в алгебраическую структуру (моноидальные вычисления); это открывает широкий простор для оптимизаций, верификации программ, создания абстрактных комбинаторов, а также устранение unbounded recursion — по мощности результатов это похоже на то, как когда-то ввод-вывод был надежно изолирован в IO Monad;

Потратим по паре абзацев на каждый пункт.
Читать дальше →

Добавление возможности скриптинга своим приложениям с помощью Active scripting

Reading time10 min
Views4.7K
Последнее время я заметил некоторый интерес хабралюдей к такой теме как скриптинг. Были статьи про Lua, про V8 (JavaScript движок Google Chrome). Я же хотел бы рассказать об использовании технологии Active Scripting (она же ActiveX Scripting) от Microsoft.
Это технология, используемая для реализации поддержки скриптов в приложениях. Именно так работает движок JavaScript всеми любимого браузера IE ;) Однако, не спешите с выводами. Да, тот же движок V8 работает в разы быстрее, но и у данной технологии есть свои преимущества и возможные области применения, о которых я тоже расскажу.
Читать дальше...

Почему с нами остаются 90% клиентов

Reading time2 min
Views18K
Это не шутка. 90% от числа позвонивших в нашу компанию остаются с нами и пользуются услугами нашей компании как минимум еще один раз. Я решил не мудрить с теорией и изложить основное тезисами. Уверен, кому-нибудь пригодится. Наш бизнес — такси, однако большинство «ноу-хау» применимы совершенно в любом бизнесе.
Читать дальше →

Видео-трансляция лекций. Реализация

Reading time2 min
Views9.3K
imageПривет.

Давеча у меня был разговор с моим научным руководителем, Петросяном Леоном Аганесовичем — деканом факультета ПМ-ПУ Санкт-Петербургского Государственного Университета.

Я предложил ему организовать видеозапись лекций факультета и сделать возможным для студентов просматривать эти лекции в интернете.
Читать дальше →

MongoDB или как разлюбить SQL

Reading time6 min
Views67K
Введение

Коллеги, при разработке приложений, мы каждый день сталкиваемся с потребностью в гибком хранении информации (обновлении, поиске по ней, и т.д.). Класс продуктов, которые решают этот круг задач, как все мы знаем — Базы данных. Но что это такое в нашем понимании? У многих «база данных» твердо ассоциируется с MySQL, таблицами и SQL-запросами. И это устраивает до определенного момента. Действительно, реляционные базы данных дают массу преимуществ в работе: поскольку данные имеют сильную связанность, не нужно контролировать целостность базы данных. Используя простой под-запрос можно выбрать количество комментариев к каждому посту в блоге. Используя JOIN нетрудно делать сложные связанные выборки и получать данные сразу о нескольких сущностях.
Читать дальше →

Расширяем ReSharper — Context Actions

Reading time8 min
Views1.8K
В комментариях к одному из предыдущих постов я обещал рассказать про то, как писать расширения к Решарперу. Рассказать хочу потому, что сам периодически пишу расширения которые упрощают работу в моей конкретной области. Тут же я покажу вкратце мой подход к написанию расширений типа context action.

Если интересно...

NotCaptcha is not a captcha

Reading time3 min
Views3K
Недавно в топике habrahabr.ru/blogs/spam/74007 было рассказано о новом виде капчи.

Капча конечно интересная, хоть и спорная, что вызвало много комментариев о том, насколько это удобно для пользователя, и насколько её легко сломать теоретически.

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

Мы ♥ Иконки

Reading time1 min
Views1.2K

Коротко о ясном


В интернете есть множество сайтов где выкладываются разного рода иконки, но по настоящему хороших сайтов мало. Но я нашел такой сайт. Иконки высшего качества собранные воедино совершенно бесплатно распространяются на сайте weloveicons.com. Иконки предоставляются в форматах для Mac OS, Windows и в .PNG

Каждый найдет себе то, что ищет


image image image

Быстрое чтение и ширина экрана

Reading time1 min
Views6.8K
img_4703.jpgХочу поделиться одним наблюдением, которое я сделал в процессе тренировки скорочтения (таким и таким способом).

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

Привычка разворачивать окно на весь экран идет, видимо, со времен первых мониторов с разрешением 640x480, где умещалось очень мало текста. Сейчас делать так совсем не обязательно. Причем и на стандартных 3:4 экранах, думаю, тоже можно ограничить ширину окна.

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

Создание расширения FireFox для начинающих

Reading time8 min
Views49K
В данной статье представлена пошаговая инструкция по разработке простейшего расширения для FireFox.
Это частичный перевод оригинальной статьи.

Это не моя статья, а моего друга (его мыльце: templar8@gmail.com). Он очень хочет попасть на Хабр. У меня самого не хватает кармы для инвайта.
Текст статьи

Information

Rating
Does not participate
Location
Россия
Registered
Activity