• Генерация ландшафта как в MineCraft

    image

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

    Конечно мне стало интересно, а как же такое вообще работает, на каких именно алгоритмах и все в этом духе. Долго ковыряясь с самой игрой, а так же облазив многие сайт с модами я узнал не так много, как хотелось бы, но позже нашел статью в блоге разработчиков о там как они раньше создавали свой ландшафт. Естественно я тоже решил попробовать создать свою версию ландшафта. Скажу честно, даже после прочтения той статьи пришлось долго искать на предмет других алгоритмов генерации ландшафтов, эрозии, биомов и сглаживания.
    Читать дальше →
  • Реалистичный пейзаж в Ogre 3D

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

      Ferm — это низкоуровневая надстройка над iptables, позволяющая организовывать своего рода циклы по спискам параметров iptables. Это оказывается особенно полезно при настройке сложных правил файрвола, для написания которых с использованием одного только iptables приходится повторять до умопомрачения -t filter -A INPUT -p tcp --state NEW ..., потом делать аналогичное для -p udp, в общем кто плавал — знает.

      Ferm прекрасен тем, что, сохраняя всю гибкость iptables, позволяет добиваться тех же эффектов меньшими усилиями. Так, например, разрешить новые соединения на порты ftp, ssh и http и запретить все остальное (кроме связанных), можно написать вот такой конфиг:
      chain INPUT {
      policy DROP;
      mod state state (RELATED ESTABLISHED) ACCEPT;
      proto tcp dport (http ftp ssh) ACCEPT;
      }


      Удивительно дело, поиск дает по запросу ferm только одну статью, которая к собственно ferm никакого отношения не имеет. То ли все уже все знают и всем очевидно, то ли наоборот. Исходя из последнего, я решил написать этот топик.

      Читать дальше →
    • Поддержка мышки в Midnight Commander запущенного из под tmux/screen

        в топике про tmux был поднят вопрос о неработоспособность мыши в случае когда mc запущен в сессии tmux либо screen.

        После небольшого исследования функции init_xterm_support, выяснилось что включить поддержку мыши, не прибегая к пересборке mc, можно прямо сейчас, достаточно «правильно» (как того ожидает mc) установить переменную COLORTERM.

        image

        Таким образом, если вам необходимо чтобы мышь работала в обычном режиме, поместите следующие строки в файл ~/.profile

        if [ $TERM = "screen" ]; then
            export TERM=xterm
        fi
        if [ -n "$TMUX" ]; then
            export COLORTERM=rxvt
        fi
        


        Так же отследить решение проблемы можно будет в соответствующем тикете вот тут www.midnight-commander.org/ticket/2479

        PS: Буду рад если кому то данная информация пригодится…

        UPD: забыл добавить что желательно добавить в ~/.tmux.conf
        следующую строку.
        setw -g xterm-keys on
        


        если этого не сделать то сочетание shift-стрелки, shift-Fx работать не будут…
      • Читаем QR код

        • Tutorial
        Иногда возникают такие ситуации, когда нужно прочитать QR код, а смартфона под рукой нет. Что же делать? В голову приходит лишь попробовать прочитать вручную. Если кто-нибудь сталкивался с такими ситуациями или кому просто интересно как же читается QR код машинами, то данная статья поможет вам разобраться в этой проблеме.

        В статье рассмотрены базовые особенности QR кодов и методика дешифрирования информации без использования вычислительных машин.

        Иллюстраций: 14, символов: 8 510.
        Читать дальше →
      • Создаём шрифт, имитирующий ваш рукописный почерк

        Учащимся старших классов и студентам ВУЗов, зачастую, делая домашнюю работу, приходится выполнять большое количество письменных упражнений. Например, наш преподаватель по обществознанию каждый урок задает нам ДЗ, заключающееся в том, чтобы мы нашли материал в библиотеке или Интернете, и написали его от руки (только за это можно получить оценку «отлично»), даже если найденный материал будет верным, но распечатанный на компьютере, выше четвёрки не жди…

        Исходя из всего вышесказанного, я пришёл к выводу: нужно сделать шрифт для компьютера, дублирующий мой почерк. На мой взгляд, сделал я его успешно. Родная мать не отличит, где я писал от руки, а где напечатал компьютер. Многим моим знакомым понравилась эта затея, и они стали расспрашивать меня, как я это всё сделал. И чтобы каждому по сто раз не объяснять, я решил написать эту статью – план выполнения работы с подробными комментариями.

        Итак, в этой статье я расскажу вам, как сделать шрифт, имитирующий ваш почерк.
        Читать дальше →
      • Произносим правильно

          Из знакомых мне айтишников очень немногие стараются правильно произносить английские слова. Конечно, привычнее произносить C++ как «си-плюс-плюс», а не «си-плас-плас» или «опен-бэ-эс-дэ», а не «оупэн-би-эс-ди».
          Но когда «echo $value;» читают как «ечо валуй» — это уже не смешно. Другой человек вас может просто не понять, особенно иностранец.

          В топике представлен небольшой список «сложных» слов, которые часто произносят неправильно.
          Ориентироваться лучше не на мою (весьма приблизительную) транскрипцию, а на аудио.

          ♫ — прослушать произношение в словаре
          ► — прослушать произношение на youtube

          Начнем с названий:
          ABBYY аби
          Adobe эдоуби [əˈdəʋbɪ]
          Apache эпэчи [əˈpætʃiː] от «a-patchy»
          Asus офиц. э́сус
          амер. э́йсус

           
          BenQ бенкью
          Cisco сискоу [ˈsɪskoʊ]
          EBay ибэй
          Eee PC и писи
          Ethernet изэрнэт [ˈiθərˌnɛt]
          Itanium айтэйниум [aɪˈteɪniəm]
          Juniper джу́нэпэр [ˈdʒunəpər]
          LaTeX лэйтех
          лэйтек
          латех
          латек
          [ˈleɪtɛk]
          ['leɪtɛx]
          [ˈlɑːtɛx]
          [ˈlɑːtɛk]
          Linux офиц. линэкс
          вар. линукс
          [ˈlɪnəks]
          [ˈlɪnʊks]

           
          Mac OS X мэк оу-эс тэн
          MySQL офиц. май-эс-кью-эл
          вар. май-сиквел
          как «My Ess Que Ell», см. оф. сайт
          nginx энджин-икс (от engine-x)
          PuTTY пати [ˈpʌtɪ] см. оф. сайт
          Qt кьют [kyut] см.
          TeX тех
          тек
          [ˈtɛx]
          [tɛk]
          не «текс»
          XBox 360 экс-бокс фри сискти
          Xen зен [ˈzɛn]
          Xeon зион
          Xerox зирокс [ˈzɪərɒks]
          Xilinx зайлинкс [ˌzaɪliːŋks]
          ZyXel рус. зайксел
          амер. зайзел
          см.


          Аббревиатуры:
          GNU гну вар. гню
          GWT гвит [ˈɡwɪt]
          ICANN айкэн
          IEEE ай-трипл-и как «I triple E»
          ISO айсо
          PNG пинг [ˈpɪŋ] как «ping», см. спецификацию
          PXE пикси [ˈpɪksi]
          RUP рап
          SCSI скази ['skʌzi]
          SOAP соуп [soʊp]
          SQL эс-кью-эл [ˈɛsˈkjuˈɛl] неофиц. «сикуел»
          SWF свиф [ˈswɪf] см. спецификацию
          WYSIWYG визивиг [ˈwɪziˌwɪg]
          XAML зэмл [ˈzæməl]
          XUL зул [ˈzuːl]
          Yii длинное «и» [ji:]

          Обычно аббревиатуры произносятся по правилам английского языка: API — эй-пи-ай, PCMCIA — пи-си-эм-си-ай-эй, OpenBSD — оупен-би-эс-ди и т.д.

          Обычные слова дальше
        • О ненависти к С++

          • Translation
          С++ or not C++, C++ или Java/Python/Ruby? Как часто вы задаёте или слышите подобные вопросы? Не хотелось бы поднимать очередной холивар — по моему мнению, умные люди давно должны были бы прийти к выводу, что при выборе языка нет той серебряной пули, которая бы поставила окончательную точку, — у каждого языка есть свои плюсы и минусы и чаще всего проблемы в прокладке между клавиатурой и стулом.

          Читать дальше →
        • 10 способов улучшить свои навыки программирования

          • Translation

          1. Выучить новый язык программирования


          Изучение нового языка программирования разовьет новые способы мышления, особенно если новый язык программирования использует парадигмы, с которыми Вы еще не знакомы. Многие из приобретенных способов мышления могут быть применены к языкам, которые уже знаете. Возможно, вы даже полюбите новый для Вас язык программирования настолько, что начнёте использовать его для серьёзных проектов.

          Среди языков программирования отличный познавательный эффект и наверстывание опыта дают: Lisp (или Scheme), Форт, PostScript или Factor (стековые языки программирования), Haskell (строго типизированный, чистый функциональный язык) либо OCaml (объектно-ориентированный язык функционального программирования), Пролог (логическое программирование), Erlang (отличные паралельные вычисления).

          Читать дальше →
          • +215
          • 73.6k
          • 96
        • EchoPrint — открытая система распознавания музыки

            Наверняка многие из вас слышали и знают про системы идентификации музыки вроде TrackID, Shazam, MusicBrainz или онлайновой Audiotag.info, позволяющие по записанному отрывку песни узнать ее название. Все они в достаточной степени хороши, но имеют общий недостаток — закрытый код и, соответственно, ограниченную сферу применения. TrackID вы можете использовать только на телефонах Sony Ericsson, Shazam — тоже только на телефонах, хотя и на более обширном списке платформ, а Music Brainz вообще неясно, работает ли вообще.

            Ребята же из компании Echo Nest, решили, что распознавание музыки должно быть таким же доступным миру явлением, как электронная почта или DNS :), и выпустили своё детище полностью под MIT License. А детище, надо сказать, у них очень серьёзное — еще бы, если основателями компании являются доктора наук из MIT Media Lab .

            Тот зверьфункционал, который они выпустили на свободу, не ограничивается только распознаванием музыки по записанному отрывку, но и позволяет делать такие вещи, как поиски дубликатов музыки, массовое распознавание и заполнение тэгов в музыкальных коллекциях, проверка аудио/видео на содержание того или иного материала, синхронизация коллекций из различных музыкальных пространств (iTunes <-> Last.fm <-> Spotify, например) и много чего еще.

            Подробнее
          • Опасности обучения на Java

            • Translation
            «Вы счастливчики. Мы по три месяца жили в мешках из дерюги в грязных сараях. Мы вставали в шесть утра, стирали мешки, съедали по корке чёрствого хлеба и шли работать на мельницу, по 14 часов в день, с понедельника и до воскресенья, и когда мы возвращались домой, наш папа порол нас своим ремнем»
            — Летающий цирк Монти Пайтона, Четыре йоркширца


            Ленивая молодёжь.

            Что может быть хорошего в тяжёлой работе?

            Верный признак моего старения — моё ворчание и жалобы о «современной молодёжи» и о том, как не хотят или не могут больше делать ничего сложного.
            Читать дальше →
          • SRP-6: аутентификация без передачи пароля

            • Tutorial
            Как и было обещано в соседней теме, где рассказывался велосипед, выкладываю описание алгоритма SRP RFC2945 — способе регистрации и аутентификации пользователей безопасным образом по небезопасному каналу. Вот только в процессе подготовки статьи я обнаружил более свежую версию протокола, SRP-6, вместе с реализацией, в связи с чем решил выбросить свои архаичные наработки по SRP-3, и просто дать ссылки на имплементацию новой версии.
            Читать дальше →
          • Lamport hash chain – страховка от кражи базы паролей клиентов

              Весьма интересный пост, опубликованный недавно на Хабре, и особенно комментарии к нему подтолкнули меня к описанию, пожалуй, единственной симметричной схемы, действительно обеспечивающей страховку от кражи базы паролей с сервера – схемы Лэмпорта («Lamport hash chain»). Алгоритм на самом деле чрезвычайно прост и предложен автором (L.Lamport) еще в 1981 году. Более того, схема в большинстве учебников уже упоминается как «устаревшая», т.к. целью ее разработки была в первую очередь защита от перехвата пароля на этапе передачи, а появившиеся позднее схемы семейства «challenge-handshake» (CHAP, CRAM) решают эту задачу гораздо более эффективно. А вот о втором интересном свойстве схемы Лэмпорта уже потихоньку забыли – она не требует конфиденциальности аутентификационных данных пользователей, хранимых на серверной стороне (свойство, обычно присущее только асимметричным схемам с сертификатам клиентов). Посмотрим, как можно достичь этого свойства с помощью одной только криптостойкой хеш-функции.
              Читать дальше →
            • Cross-domain «ajax» — простое решение

                В очередном проекте я столкнулся с необходимостью активно работать с кросс доменными запросами на ajax, тема, как я вижу на хабре особо не поднималась и не освещалась, вот и решил поделиться с читателями свои опытом.
                Читать статью
              • Автоматический анализ текста без модераторов

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

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



                  Судя по тому, насколько популярен блог DIY, многие из нас любят изобретать. Наверное, каждый встречал человека, который способен сутками что-нибудь паять, программировать, отлаживать, не замечая ничего вокруг. Вот совсем свежие примеры.

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

                  Речь пойдет про устройства NetPing. Эта российская разработка периодически упоминается на хабре, но детального рассказа я не встречал. Пусть эта статья будет продолжением серии «Оборудование российского производства». Мне достался самый универсальный прибор линейки – UniPing RS-232. Основная сфера его применения – удаленный мониторинг и управление множеством устройств в квартире, доме, офисе. Конечно, давно существует понятие «умный дом», но, как правило, это преподносится как вариант для состоятельных людей, хотя получают они черный ящик с жестко заданным, пусть и большим, набором функций. Однако, можно ведь все собрать и запрограммировать самому!

                  Интересно?
                • Открываем внутренний API сервиса SMS24X7 для разработчиков

                    сервис sms-рассылок sms24x7Давать доступ во «внутреннюю кухню» сервисов становится хорошим трендом: Гугл, Яндекс, Mailchimp и многие другие открывают API для работы даже с «внутренними» функциями своих сервисов. Спустя месяц после запуска SMS24X7.RU мы гордостью представляем Вам полное API к нашему сервису. Наша компания всегда старалась быть немного впереди игроков на рынке смс-рассылок и поэтому первые создали API, включающее СМС-шлюз и все функции для работы с настройками, адресной книгой и СМС-рассылками. Одним словом — абсолютно со всем!

                    Надо отметить, что архитектурное решение по введению API в качестве backend'а для нашего WEB-сервиса СМС-рассылок доставило нам небольшую головную боль. Зато позволило естественным образом отделить процесс разработки WEB-интерфейса. Таким образом, всё, что есть в сервисе оказалось доступно через API.

                    Допустим, что рассказывать о том, зачем нужен СМС-шлюз никому не надо. Все эти СМС-напоминания, СМС-уведомления и СМС-информирование изрядно утомляют, когда заставляют, в основном, не по делу звенеть и дергаться Ваш телефон. Но как быть, если надо разместить форму сбора мобильных номеров на сайте, интегрировать СМС-рассылки к заказчику в личный кабинет или отобразить у себя статистики по использованию СМС-шлюза? Ответ простой — используйте наше API.

                    Далее про API, создание документации на Doxygen и уникальное предложение по смс-шлюзу
                  • Разработка мобильных приложений на PhoneGap и jQuery Mobile



                      PhoneGap — это OpenSource платформа, позволяющая разрабатывать мобильные приложения на HTML, JavaScript и CSS под различные платформы (практически без изменения кода приложения) в их число входят: iOS, Android, Blackberry, WebOS, Symbian и Windows Mobile на подходе. Прелесть его в том, что он не требует навыков разработки под конкретную платформу. Вы пишете свое приложение на JavaScript, используете HTML и CSS для разметки. Вы пишете мобильное приложение как обычный сайт или веб-сервис.
                      Движок PhoneGap расширяет API браузера и добавляет следующие возможности: доступ к акселометру, доступ к камере (пока только фото), доступ к компасу, доступ к списку контактов, запись и прослушивание аудио файлов, предоставляет доступ к файловой системе, позволяет работать с разными HTML5 хранилищами localStorage, Web SQL и т.п а также позволяет безболезненно обращаться к любому кросс-доменному адресу.
                      Кроме платформы PhoneGap имеет, пока бесплатный, билдер приложений под все устройства в один клик.

                      jQuery Mobile


                      Думаю все знают, но напомню ещё раз. jQuery Mobile — это надстройка над jQuery, позволяющая безо всяких проблем разрабатывать мобильные веб сайты и мобильные веб приложения.

                      Если вы знаете HTML, JavaScript, CSS, jQuery и испытываете проблемы с Java, Objective-C и другими, но желаете попробовать свои силы в мобильной разработке, то эта статья для вас.
                      Читать дальше →
                    • Популярные вопросы на собеседовании по C++ и ответы на них

                        Здравствуйте!

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

                        О том, что спрашивают на собеседовании у C++ программистов, а также об ответах на эти вопросы и пойдет речь в данном посте.
                        Читать дальше →