• SOAP, генерация прокси класса

      Преамбула:

      SOAP — протокол обмена структурированными сообщениями в распределённой вычислительной среде. Первоначально SOAP предназначался, в основном, для реализации удалённого вызова процедур (RPC), а название было аббревиатурой: Simple Object Access Protocol — простой протокол доступа к объектам. Сейчас протокол используется для обмена произвольными сообщениями в формате XML, а не только для вызова процедур. Официальная спецификация последней версии 1.2 протокола никак не расшифровывает название SOAP. SOAP является расширением протокола XML-RPC.


      Итак, делаем proxy-class
      Читать дальше →
    • Мини-обзор музыкального ПО под nix-системы

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

          image
          Существует много способов выделиться среди конкурентов.
          Самым простым и самым правильным способом будет сделать что-то уникальное и удивляющее. Такое точно не забудется.
          Читать дальше →
        • 10 приемов, разрушающих хрупкую красоту кода

            Статья приводится в сокращении из-за ограничения на объем материала.

            Для меня программирование — это не только технология, но и, во многом — искусство. И, поэтому, большое значение имеет красота кода.

            Последние несколько лет я собирал приемы программирования, разрушающие в программном коде его утонченную красоту:
            1. Объявление всех переменных в начале программы;
            2. Возврат результата функции через ее параметр;
            3. Отсутствие локальных функций;
            4. Отсутствие else if;
            5. Использование параллельных массивов;
            6. Хранение размера массива в отдельной переменной;
            7. Доступ к свойствам объекта через obj.getProperty() и obj.setProperty(value);
            8. Использование рекурсии для вычисления факториалов и Чисел Фибоначчи;
            9. Отсутствие именованных параметров функции;
            10. Невозможность объявления объектов «на лету».
            Наверняка, в некоторых местах вы будете со мной несогласны — ведь чувство красоты у всех разное.


            Объявление всех переменных в начале программы


            В двух словах:

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


            Читать дальше →
          • Научный поисковик от Вольфрама — запуск сегодня ночью!

              Сегодня в 19.00 CST (4:00 МСК) состоится запуск поисковой системы WolframAlpha, которую называют одним из самых ожидаемых веб-продуктов нынешнего года. Вокруг этой загадочной новинки ходит много разговоров, а попробовавшие систему в действии просто восхищены той работой, которую проделали сам гениальный м-р Вольфрам (он же создатель программы Mathematica, а до этого в 15 лет он написал свою первую научную работу по физике частиц) и 100 научных сотрудников, в течение нескольких лет отбиравших факты для работы математического движка системы WolframAlpha.

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

              Публикуем под хабракатом десяток скриншотов, снятых во время предварительного показа альфа-версии системы, проведённого для журналистов неделю назад. Обратите внимание, как поисковик обрабатывает поисковые запросы и какую гору информации, графиков выдаёт в ответ. Плюс ко всему, Alpha API изначально будет интегрирован с программой Mathematica.


              Читать дальше →
            • Moose(X). Продолжение

                В продолжение топика Use Moose; Современное ООП в Perl, я хочу рассказать про некоторые интересные возможности, которые предоставляет Moose и его расширения.
                Из упомянутого выше топика можно понять, что с Moose вам не придется тратить время на реализацию объектной модели. Но кроме автоматического создания аксесоров/мутаторов и конструктора, есть еще куча всяких полезностей и интересностей. А уж с помощью расширений, так вообще можно преобразить Perl до неузнаваемости (в хорошую, естественно, сторону).

                Примеры кода я буду приводить из своего модуля, который я пробую переписать в стиле modern perl.
                Читать дальше →
              • Палка о двух концах или ещё раз о хрупкости кода

                  Я пишу этот топик, как ответ на недавнюю статью «10 приемов, разрушающих хрупкую красоту кода», в которой разгорелось множество споров.

                  Многое уже написано в комментариях, многое не написано. Я лишь хочу здесь показать реальные примеры, что есть множество ситуаций, где Автор не прав, где предлагаеммые им решения будут мешать.

                  Автор во многом прав, но он слишком категоричен в убеждениях. Профессия программиста заключается в том, чтобы думать и описывать решение задачи оптимальным способом. Как и в любом искусстве, если программист будет решать все задачи «подставляя лишь шаблоны», то все его решения — будут полнейшей ерундой. Программист — человек умеющий думать, а языки программирования предоставляют охрененно гибкий интерфейс для реализаций алгоритмов решений. По этому не стоит отказываться от особенностей языка — потому что в шаблоне написано не пользоваться — уж разработчики языков за вас уже продумали всё 100 раз, чтобы оставить эти методы и уверен, что в документации вы можете найти наиболее подходящие методы использования.

                  То, что Автор рассказал, хорошие советы. Но он показал лишь одну сторону медали. Я сейчас покажу другую.
                  Темная сторона силы
                • Zipper — производная от типа

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

                      Если вы боитесь кейлоггеров и способны не задумываясь сказать, какая буква в вашем пароле стоит на N-м месте, для вас есть оригинальный способ ввода паролей, который поможет немного увеличить их безопасность.
                      Читать дальше →
                    • Безопасные конструкторы

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

                        A::A(int x) : b(x) {}

                        Или хранить их по ссылке:

                        A::A(int x) { b = new B(x); }

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

                        Читать дальше →
                      • Python для системных администраторов

                        • Перевод
                        Автор перевода messerr, просто с кармой ему не повезло.

                        Введение

                         
                        Как системный администратор, вы сталкиваетесь с многочисленными проблемами. Управление пользователями, дисковым пространством, процессами, устройствами и бэкапами могут стать причиной потери волос, юмора или вменяемости у многих администраторов. Shell скрипты могут выручить, но они зачастую имеют множество ограничений. В этом случае полнофункциональный скриптовый язык, такой как Python, способен превратить утомительную задачу в легкую и, смею сказать, веселую.
                        Примеры в этой статье демонстрируют различные возможности Python, которые вы можете использовать на практике. Если Вы работаете с помощью них — вы на правильном пути к пониманию силы Python.
                         
                        Читать дальше →
                      • Processing.js

                          Данный язык уже был на хабре, однако пост был посвещен самому Processing, думаю многим будет интерессно почитать и про Processing.js.
                          Processing.js — это открытый язык программирования для визуализации в вебе который представляет собой портированный Processing на JavaScript. Processing.js использует Js для анимации и тег canvas для работы с изображением. Сразу же можно заметить некоторый минус данного подхода, он не особо дружен с IE, причем по заявлениям Microsoft поддерживать тег canvas они и в дальнейшем не собираются. Во всяком случае 8 работать отказался. Синтаксис реализации очень похож на синтаксис Java.
                          Читать дальше →
                        • Вкусный CSS: Sass + Compass

                            Что такое Haml/Sass?


                            Haml (xHTML Abstraction Markup Language) это язык разметки для упрощённой генерации xHTML. В свою очередь эквивалент Haml для css — это Sass (Syntactically Awesome StyleSheets).

                            В данной статье я расскажу чем примечателен Sass. И с помощью чего sass-файл можно скомпилировать в css.
                            Читать дальше →
                          • Курс молодого бойца: тонкости настроек маршрутизаторов и коммутаторов

                              Будем считать, что вы уже активно осваиваете хитрости настройки через консоль. Пришло время рассказать ещё несколько тонкостей. О чём имеет смысл подумать при настройке маршрутизаторов и коммутаторов cisco.

                              Тонкость 1. Аккуратность.
                              Часто возникает задача что-нибудь добавить в текущую конфигурацию. Наверняка вы знаете, что многие элементы пишутся отдельно, а отдельно применяются (на интерфейс, ко всей железке и т.д.). Будьте крайне осторожны, изменяя настройки таких технологий, как PBR (route-map), QoS (policy-map), IPSec (crypto map), NAT. Лучше всего сначала снять их с использования, потом изменить, потом повесить снова. Связано это с тем, что все изменения вы вносите сразу же в состояние железки. Иногда то, что уже работает (например, подгружено в оперативку) конфликтует с новым конфигом. Не редки ситуации, когда железка уходит в перезагрузку после попытки изменения конфига.

                              Пример: пусть у нас есть route-map, примененный на интерфейс. Пусть нам надо его изменить. Наиболее «чистый» способ такой:

                              Читать дальше →
                            • Огнелис — твики и фишки

                                Многие мои друзья пользуются Firefox и задают мне вопрос — а почему я пользуюсь Flock? Я им отвечаю — мне нравится, когда у меня в браузере без всяких телодвижений есть доступ до всего, что нужно. Тем не менее, «это все» поедает достаточный объем ОЗУ, не всегда юзабельно и требует «доводки». Как раз про доводку и пойдет речь ниже. Сразу же скажу, про pipeline писать не буду. Остальных опций хватает из about:config.

                                Читать дальше →
                              • Хелперы. Полезные манипуляции со строками

                                • Перевод
                                CakePHP поставляется с кучей полезных хелперов и компонентов, которые обеспечивают удобные инструменты для обработки и манипулирования данными. Эти хелперы значимы не только для пользователя фреймворка, но и могут оказать большую помощь кому-нибудь кто пишет PHP приложения не используя CakePHP.
                                далее...
                              • Многоликий const

                                  Ключевое слово const — одно из самых многозначных в C++. Правильно использование const позволяет организовать множество проверок ещё на этапе компиляции и избежать многих ошибок из числа тех, которые бывает трудно найти при помощи отладчиков и/или анализа кода.

                                  Первая половина заметки рассчитана скорее на начинающих (надеюсь мнемоническое правило поможет вам запомнить, где и для чего используется const), но, возможно, и опытные программисты смогут почерпнуть интересную информацию о перегрузке методов по const.

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