• Возможности метатаблиц в Lua на примере реализации классов

    • Tutorial
    В Lua ООП нет. И оно, в общем-то и не нужно: удобной модульности и функций первого класса достаточно для реализации многих вещей. На этом можно было бы и закончить, но пост не про это. В данном случае я распишу работу с метатаблицами, где в качестве примера шаг за шагом будет реализовываться системка по работе с классами в несколько таком python-стиле. Для понимания нужен хотя бы основной базис языка: таблицы, upvalues.

    Больше Lua на Хабре!
    • +22
    • 21,9k
    • 6
  • Как собрать электробайк за семь дней

    • Tutorial
    Уже очень давно и часто на канале меня просили показать, как же собрать «такую штуку» самому. Особенно после публикации "На электричестве до Крыма". Поэтому, при постройке нового проекта, было принято волевое решение заснять всё на камеру и потом предоставить страждущим в цивильном виде. Волевое, потому что руки всего две, глаз тоже всего пара, и уследить за тем, куда смотрит камера, а куда уже убежала дрель в рабочем процессе очень сложно. Так же это увеличило временные затраты, особенно после. Ролики я фактически собирал даже дольше, чем сам ебайк. Ну да ладно, все тяготы уже позади, встречайте:

    День первый: крафтим раму из полуконструктора

    Читать дальше →
  • Алгоритм Диффи — Хеллмана

      Одна из фундаментальных проблем криптографии – безопасное общение по прослушиваемому каналу. Сообщения нужно зашифровывать и расшифровывать, но для этого обеим сторонам нужно иметь общий ключ. Если этот ключ передавать по тому же каналу, то прослушивающая сторона тоже получит его, и смысл шифрования исчезнет.

      Алгоритм Диффи — Хеллмана позволяет двум сторонам получить общий секретный ключ, используя незащищенный от прослушивания, но защищённый от подмены канал связи. Полученный ключ можно использовать для обмена сообщениями с помощью симметричного шифрования.

      Предлагаю ознакомиться с принципом работы алгоритма Диффи – Хеллмана в замечательном видео от Art of the Problem в моем переводе.

    • Wi-Fi сети: проникновение и защита. 1) Матчасть



        Синоптики предсказывают, что к 2016 году наступит второй ледниковый период трафик в беспроводных сетях на 10% превзойдёт трафик в проводном Ethernet. При этом от года в год частных точек доступа становится примерно на 20% больше.

        При таком тренде не может не радовать то, что 80% владельцев сетей не меняют пароли доступа по умолчанию. В их число входят и сети компаний.

        Этим циклом статей я хочу собрать воедино описания существующих технологии защит, их проблемы и способы обхода, таким образом, что в конце читатель сам сможет сказать, как сделать свою сеть непробиваемой, и даже наглядно продемонстрировать проблемы на примере незадачливого соседа (do not try this at home, kids). Практическая сторона взлома будет освещена с помощью Kali Linux (бывший Backtrack 5) в следующих частях.

        Статья по мере написания выросла с 5 страниц до 40, поэтому я решил разбить её на части. Этот цикл — не просто инструкция, как нужно и не нужно делать, а подробное объяснение причин для этого. Ну, а кто хочет инструкций — они такие:
        Используйте WPA2-PSK-CCMP с паролем от 12 символов a-z (2000+ лет перебора на ATI-кластере). Измените имя сети по умолчанию на нечто уникальное (защита от rainbow-таблиц). Отключите WPS (достаточно перебрать 10000 комбинаций PIN). Не полагайтесь на MAC-фильтрацию и скрытие SSID.

        Оглавление:
        1) Матчасть
        2) Kali. Скрытие SSID. MAC-фильтрация. WPS
        3) WPA. OpenCL/CUDA. Статистика подбора
        Как работают WEP, WPA и WPS
      • Инверсная кинематика: простой и быстрый алгоритм

        Что такое «Инверсная кинематика»?

        Задачей инверсной кинематики является поиск такого набора конфигураций сочленений, который обеспечил бы максимально мягкое, быстрое и точное движение к заданным точкам. Однако, множество существующих ныне методов страдают от таких недостатков как высокая вычислительная сложность и неестественность результирующих поз. В этой статье описан новый (вероятно, на момент написания статьи — 2010 г.) эвристический метод под названием «Метод прямого и обратного следования» ( Forward and Backward Reaching Inverse Kinematics, далее просто FABRIK),
        FABRIK избегает использования вращений и матриц в пользу непосредственного получения точки на прямой. Благораря этому, дело обходится всего несколькими итерациями, имеет низкую стоимость вычислений и визуально естественную позу в результате. FABRIK так-же без проблем справляется с наложением ограничений а так-же использованием нескольких цепей и/или конечных точек. Именно об этом методе этот пост.
        Читать дальше →
      • Мобильные приложения для путешествий


          Сезон отпусков начнётся в ближайшие недели. Продажи всевозможных гаджетов, полезных в путешествиях, неуклонно растут. Фотоаппараты, планшеты, смартфоны, ридеры, плееры закупаются в предвкушении моря, пляжей, исторических достопримечательностей, джунглей, гор и множества других прекрасных мест на нашей планете. Но при этом многие счастливые обладатели планшетов и смартфонов упускают такой немаловажный момент, как полезные и удобные приложения, способные существенно облегчить, или украсить, или дополнить новыми впечатлениями ваш отпуск. Поэтому мы решили предложить вашему вниманию подборку ряда приложения для путешественников.
          Читать дальше →
        • Умная инвалидная коляска-трансформер

            Привет Хабр!

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


            Читать дальше →
          • Не соблаговолите ли больше не нарушать, сэр (мэм)?

              Примерно неделю назад Vasyutka опубликовал пост про распознавание номеров и обещал, что мы выложим софт, который можно будет опробовать. Мы немножко схитрили, не рассказав все подробнее. Ну, а то бы никакой интриги не было! Ядро алгоритма распознавания мы сделали с полгода назад, но тот проект, для которого оно было сделано, не двинулся. Он остановился где-то на альфа-версии. Подумав, и посовещавшись с заказчиком, мы решили, что это нехорошо, когда такой алгоритм пылится на полке и не приносит пользу обществу. С другой стороны выкладывать все исходники распознающей части не хотелось. Тогда и родилась идея, о которой пойдёт речь в этой статье.
              image
              Решили мы, собственно, сделать открытый сервер, который бы распознавал номера, приходящие http-запросами. Так как вся идея некоммерческая, то сервер, конечно, слабенький, но на то, чтобы народ игрался, надеюсь, его хватит.
              А вот тут крутой поворот сюжета. Пост этот не про протокол обращения к серверу. Об этом будет следующий пост. Этот пост о программе, которую мы начали делать как пример работы с сервером, но которая вылилась в интересную на наш взгляд концепцию. В статье будет рассказано про Android-приложение, которым можно сфотографировать номер автомобиля… И обругать владельца бранным словом! Ну, или посмотреть статистику того, сколько раз сего автомобилиста обругали.
              Те, кому невтерпёж, смогут расковырять работу с сервером из исходников в конце статьи. Остальных подержим пару дней в напряжении, а потом выложим законченный мануал.
              Заинтриговал?
            • Reedy – Скорочтение, которое действительно можно использовать

                Reedy – продвинутая реализация технологии скоростного чтения

                В последнее время наблюдается рост интереса к скорочтению на основе технологии RSVP. Однако большинство приложений и расширений на эту тему, при более близком знакомстве, увы, оказываются не очень удобны для ежедневного использования. А ведь в потенциале они могу помочь значительно экономить время и быстрее получать информацию. Мой друг OlegCherr решил доработать технологию, создав реализацию пригодную для постоянного использования, а я ему в этом помогаю. После двух месяцев постоянной практики чтения, тестирования, исследований и улучшений решил написать статью с разбором того, что получилось в результате, потому что результат, смею считать, будет интересен и другим. На текущий момент всё выполнено в виде расширения к браузеру Chrome и названо Reedy. Приложение под Android на подходе.
                Подробности
              • Модульный браслет Bond

                  Мы уже писали, что 23 мая в Москве пройдет наша третья международная мобильная конференция #MBLT14. Там будет более 30 зарубежных и российских докладчиков, среди которых Крис Дрессель — партнер и COO компании Kwamecorp. Продукт Криса показался нам настолько интересным, что мы решили посвятить ему отдельный пост на Хабре.

                  «Опять браслет? Да сколько можно» — подумали вы. И мы также подумали, пока не прочитали описание. Команда Криса делает браслет с модульной системой, где каждый модуль отвечает за определенную функцию, будь то часы, счетчик шагов, ключи от машины, дополнительная батарея, перечислять можно очень долго потому что… Ну не все сразу.



                  Черный объект в центре — это и есть модуль, а сам браслет выглядит следующим образом:



                  Если успели заинтересовать, то просим под кат.

                  Читать дальше →
                • Высшая школа экономики открывает программу «Менеджмент игровых интернет-проектов»

                    image

                    Высшая школа экономики (ВШЭ) совместно с Высшей школой бизнес-информатики (ВШБИ) запустила программу профессиональной переподготовки «менеджмент игровых интернет-проектов» — первую в России программу профессиональной переподготовки в сфере управления интернет-проектами по разработке компьютерных игр, созданную экспертами-практиками.
                    Читать дальше →
                  • Как я писал кастомный локер



                    Привет хабрастарожилам от хабрановичка. Ровно год назад я решил написать кастомный локер (экран блокировки) для моего старичка Samsung Galaxy Gio в стиле популярного тогда Samsung Galaxy s3. Какие причины заставили меня это сделать, писать не буду, но добавлю лишь то, что в Google Play я программу не собирался выкладывать и каким-либо другим способом заработать на ней не планировал. Данный пост посвящен последствиям моего решения.
                    Читать дальше →
                    • +31
                    • 31k
                    • 8
                  • Оптимизация Ubuntu (и прочих Linux-ов) под SSD

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

                      Можно ли закодировать звук в виде изображения, которое считывается камерой и проигрывается в реальном времени?

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

                      Что, если кодировать звук не в цифровом, а в аналоговом формате? То есть, допустить возможность больших потерь информации с сохранением основных «очертаний» звукового послания. Например, такие потери возникнут при плохом освещении, плохой камере, маленькой картинке, мятой или рваной бумаге с кодом. Пусть со страшными артефактами, но картинка должна звучать.


                      Читать дальше →
                    • Создание standalone библиотеки под android

                      В этой статье я расскажу как создать библиотеку, которая использует другие библиотеки и при этом уместить всё в одном jar.

                      Допустим мы пишем библиотеку, она использует другие библиотеки и, в частности, для примера, support library. Если бы мы использовали maven, то в pom файле просто прописали зависимости и не парились. Но что если нашу библиотеку будут использовать люди, которые не пользуются системами сборок или пользуются ant' ом?

                      Мы можем положить зависимости рядом с нашим jar. Но тогда неизбежны конфликты библиотек разных версий, например, если мы используем одну версию support library, а в самом приложении другая. Тогда придется руками одну из них удалять.

                      Можно пойти другим путем, вспомним что jar это обычный zip файл. Мы распакуем все зависимости, получим байт-код в виде .class файлов, далее компилируем код нашей библиотеки, кладем все .class файлы в одно место и собираем из них jar. Но если в приложении используются те же библиотеки что и у нас, то получим ошибку что в проекте два одинаковых класса.
                      Читать дальше →
                    • Строим motion simulator из палок и синей изоленты



                      Обычно первый комментарий к статье про какую-то неведомую технологию выглядит так: «Вы бы перед тем как углубляться сначала рассказали что это и зачем нужно». Итак, сия чуднАя периферия призвана при игре в автомобильные симуляторы имитировать воздействие перегрузок на игрока. В данном случае это обеспечивается наклоном кресла по двум осям, следовательно получился симулятор движения с двумя степенями свободы.
                      Возьмем в руки напильник и попробуем запилить?
                    • Еще раз про стрелочные индикаторы (и совсем без МК)

                        Всем привет!
                        Мне сразу очень понравилась статья про стрелочную индикацию загрузки процессора и памяти. Бывает нужно глянуть, сколько осталось свободной памяти, запуская третий-четвертый экземпляр тяжелой программы/игры (не хочется доводить до ситуации, кода предыдущие экземпляры свопятся). Или с загрузкой процессора — раньше я думал, что современные Crysis, Call of Duty, Mass Effect и т.д. грузят и видеокарту, и проц. Теперь я знаю, что даже когда картинка подтормаживает — проц загружен не больше 30-40%. Ну или с ходу оценить, все ли ядра использует рендеринг. А какое удовольствие глазу доставляют дергающиеся стрелочки.
                        Вторая реализация хоть и так же наглядна, но в душу не запала — нет той зрелищности.
                        Поэтому я решил — когда-нибудь непременно повторю со стрелками.
                        Единственная проблема, из-за которой я не сделал это сразу — это лень отсутствие индикаторов конечно. И вот, разбирая старый-старый хлам в старом-старом шкафу, я нашел ИХ.


                        Читать дальше →
                      • Particles System в моделировании толпы

                        многие идеи, которые приходят ко мне, уже кто-то реализовал или скоро реализует (цитата с просторов интернета)


                        В далеком 2001 году меня, любителя стратегий реального времени, поразила игра “Казаки”. Поразила ГИГАНТСКИМИ толпами, бродящими по карте. Поразило то, что эти толпы довольно резво бегали на тогдашних маломощных компьютерах. Но в то время я работал на скорой помощи, был далек от программирования, потому восхищением дело это тогда и ограничилось.

                        Уже в наше время захотелось сделать игрушку с примерно подобным количеством подвижных юнитов — чтоб “эпик” просто зашкаливал(!). И чтоб эти юниты не просто двигались, а двигались внешне(!) осмысленно. И чтоб (главное), все это великолепие работало на слабеньких мобильных платформах.

                        Встал вопрос — как? С графикой вопросов нет — на любой современной платформе есть разные по-произодительности графические библиотеки, которые займутся выводом толпы на экраны. Главный вопрос — как программно реализовать осмысленное (ну или бессмысленное) нечто, что игроком воспринималось бы однозначно — это подчиняющаяся каким-то стимулам толпа, а не просто набор мельтешащих фигурок.

                        Уверен, существует куча рекомендаций, литературы, и даже реализаций. Но меня интересовало что-то “простенькое”, что можно применить в незатейливой игрушке для “мобилы” и собрать “на коленке”. Т.е. дешево и сердито, а главное — понятно для меня(!).

                        Кратко опишу рождение своего варианта идеи.
                      • Инструментарий гейм-мастера



                          Для создания простого игрового модуля необходимо совсем немного: немного бумаги, ручка и собственная фантазия. Многим умелым мастерам этого хватает и для больших модулей на несколько игровых дней или даже целых линеек. Несмотря на это существует разнообразное количество различных инструментов, помогающих существенно упростить работу Гейм мастера и дать ему возможность сосредоточиться на главном. В данной статье я постарался собрать самые полезные программы и он-лайн сервисы облегчающие нашу жизнь.
                          Читать дальше →