• Немного про повторное использование объектов

      Недавно я наткнулся на блог, который ведет Peter Lawrey. Там можно найти интересную информацию, которая касается производительности кода под JVM.

      Там я нашел непривычный подход, который состоит в повторном использовании объектов. Непривычен он по нескольким причинам:
      • Общепринятое мнение, что создание объектов сейчас настолько быстрое, что не стоит обращать на него внимание
      • Этот подход редко где используется, и на это должны быть причины.

      Читать дальше →
    • JetBrains показали исходные коды Kotlin

        В июле прошлого года JetBrains анонсировали новый язык программирования Kotlin. Сегодня, JetBrains выложили исходные коды этого языка программирования в Open Source. Теперь пощупать новинку могут все желающие.
        Читать дальше →
      • Перевод The Little Redis Book

          The Little Redis Book — это бесплатная книга про Redis.

          Книга была написана Karl Seguin, при поддержке Perry Neal. Karl Seguin является также автором книги The Little MongoDB Book, которую часто рекомендуют для быстрого старта с MongoDB. Первая версия повилась около недели назад.

          Сегодня я сделал первую версию перевода этой книги. Исходные тексты доступны в репозитории на GitHub. Там же можно найти и готовый PDF.

          Перевод выполнен с целью популяризации Redis среди русскоговорящих разработчиков. Книга является очень удобным и компактным руководством.

          Я благодарен следующим людям за помощь в переводе оригинального текста и вычитке результата:


          Я прошу все неточности и опечатки отправлять для коррекции перевода.
        • Объекты Java

            Под впечатлениями от habrahabr.ru/blogs/java/134102.

            Недавно мне приходилось немного поковыряться внутри JVM. Довольно интересный опыт. Текст в вышеупомянутом топике не совсем сходится с моим опытом, но я не считаю себя обладателем абсолютной истины. Ниже я поделюсь с читателями небольшой частью моих экспериментов, которые касаются непосредственно объектов Java.
            Читать дальше →
          • New day — new language!

              Xtend


              Xtend представляет собой статически типизированный язык программирования от команды Eclipse, который обладает тесной интеграцией и работает поверх JVM. Его корни лежат в языке программирования Java (кто бы мог подумать). Xtend обладает рядом концептуальных улучшений:
              • Выведение типов — нет необходимости постоянно указывать сигнатуры типов.
              • Полная поддержка Java Generics — включая все соответствия и правила приведения.
              • Замыкания — приятный синтаксис для анонимных классов.
              • Перегрузка операторов — позволяет писать более выразительный код.
              • Улучшенные switch выражения — на основе типов и приведения.
              • Каждое выражение имеет значение (en. «No statements — Everything is an expression»).
              • Шаблоны — с поддержкой пробелов.
              • Поддержка расширений — JSR-330.
              • Доступ к свойствам — синтаксический сахар над get/set.
              • Полиморфный вызов методов.
              • Транслируется в Java код, а не Bytecode — корректная работа с кодом, предназначенным для пратформ, таких как Android или GWT.

              У разработчиков не стоит цели заменить Java. Библиотека Xtend является тонким слоем над JDK и работает равносильно с Java и Xtend. Разумеется, разработчики предоставляют современную IDE на основе Eclipse.
            • Рециркуляционные нейронные сети

                Рециркуляционные нейронные сети представляют собой многослойные нейронные сети с обратным распространение информации. При этом обратное распространение информации происходит по двунаправленным связям, которые имеют в различных направлениях разные весовые коэффициенты. При обратном распространении сигналов, в таких сетях осуществляется преобразование их с целью восстановления входного образа. В случае прямого распространения сигналов происходит сжатие входных данных. Обучение рециркуляционных сетей производится без учителя.
                Читать дальше →
              • Spawnfest ↺ July 9-10, 2011

                  Spawnfest — ежегодное 48-часовое соревнование разработчиков на языке Erlang, где Вы можете посоревноваться с другими разработчиками в создавании самого лучшего приложения Erlang, библиотеки или чего-либо еще, что Вам нравится! Событие произойдет 9-ого и 10-ого июля.

                  Огранизаторы говорят, “Мы надеемся, что Spawnfest поможет сплотить сообщество разработчиков Erlang и заинтересовать людей нашим любимым языком программирования.”

                  Если Вы видели Rails Rumble минувших лет, Вы знаете, чего может достигнуть талантливая команда за выходные.

                  Спонсорами мероприятия являются Github, Erlang Solutions, Spawngrid, O'Reilly, Manning и другие компании.

                  В число судей входят Bob Ippolito и Ulf Wiger.
                • Потоки или события

                    Существует два способа обрабатывать параллельные запросы к серверу. Потоковые (threaded, синхронные) серверы используют множество одновременно выполняющихся потоков, каждый из которых обрабатывает один запрос. В это время событийные (evented, асинхронные) серверы выполняют единственной цикл событий, который обрабатывает все запросы.

                    Чтобы выбрать один из двух подходов, нужно определить профиль нагрузки на сервер.
                    Читать дальше →
                  • Основы Clojure Web Applications

                      Сегодня я попробую показать основы создания веб приложений на языке Clojure. Здесь не будет сложной логики и модных фреймворков. Будет использоваться ряд библиотек для работы с примитивами. По мере упоминания я попробую в двух словах объяснить, какой функционал они предоставляют.

                      Архитектура веб-приложений в примитивах состоит из веб-сервера, который направляет запросы на обработчики в зависимости от пути, параметров, метода. Обработчик выполняет определенный код, делает запросы к базе данных, работает с файловой системой. После обработки запроса, генерируется ответ и отсылается клиенту.

                      Наше приложение будет принимать через форму одно значение, брать из базы данных второе, складывать их, а результат отдавать клиенту. При этом введенное значение будет заменять старое в базе данных. Глупая, бесполезная и не интересная логика — я знаю.
                      Читать дальше →
                      • +16
                      • 8,9k
                      • 6
                    • Одержимость красивым кодом, синдромом рефакторинга

                        В последнее время распространилась одержимость рефакторингом. Доходит до того, что некоторые программисты ставят ему больший приоритет, чем более важным вещам, таким как:
                        • Корректность
                        • Надежность
                        • Отслеживаемость
                        • Поддерживаемость

                        Если это доходит до крайности, и все, о чем заботится программист, является красота кода, он может попасть под синдром рефакторинга.
                        Читать дальше →
                      • Erlang Web

                        • Перевод
                        Erlang Web — платформа с открытым исходным кодом для приложений, основанных на протоколе HTTP. В настоящий момент поддерживаются веб-серверы INETS и Yaws. Erlang Web разрабатывался в Erlang Training & Consulting Ltd. в течение прошлых трех лет и используется во многих коммерческих и открытых проектах.

                        Применение


                        Проекты, использующие Erlang Web:

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

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

                          Несколько дней назад Jose Valim опубликовал в своем репозитории проект языка, построенного поверх Erlang. Этот язык обладает простой объектной моделью и Ruby-подобным синтаксисом. Под катом выжимки из документации и видео, демонстрирующее простой пример.

                          disclaimer: %username%, прежде чем делать выводы насчет того, что умеет, а что не умеет elixir, просьба глазами пройтись хотя бы по readme.

                          Читать дальше →
                        • Logging. «Из коробки»

                            Ведение логов применяется в каждом программном продукте, дожившем до стадии продакшена. Erlang предоставляет программистам целую экосистему, которая включает и механизмы слежения за приложением. В этой части я рассмотрю именно функционал «из коробки».
                            Читать дальше →
                            • +22
                            • 4,6k
                            • 5
                          • Pythonic

                              Итак, что же это значит, когда кто-либо говорит, что foo выглядит как pythonic? Что значит, когда кто-либо смотрит в наш код и говорит, что он unpythonic? Давайте попробуем разобраться.

                              В Python-сообществе существует неологизм pythonic, который можно трактовать по разному, но в общем случае он характеризует стиль кода. Поэтому утверждение, что какой-либо код является pythonic, равносильно утверждению, что он написан в соответствии с идиома Python’a. Аналогично, такое утверждение в отношении интерфейса, или какой-либо функциональности, означает, что он (она) согласуется с идиомами Python’a и хорошо вписывается в экосистему.

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

                              Понятие Pythonicity плотно связано с минималистической концепцией Python’a и уходом от принципа «существует много способов сделать это». Нечитабельный код, или непонятные идиомы – все это unpythonic.

                              При переходе от одного языка к другому, некоторые вещи должны быть «разучены». Что мы знаем из других языков программирования, что не будет к месту в Python’e?
                              Читать дальше →
                            • Python Module Usage Stats – Feb 2011

                              • Перевод
                              Ниже список 30 наиболее используемых «базовых модулей», основанный на количестве скачиваний с проекта PyPI. Эти результаты основаны на 11,204 загруженных пакетах. Подробности ниже.
                              Читать дальше →
                            • Асинхронный RPC

                              • Перевод
                              В то время, как я закладываю основу новой клиентской библиотеки для работы с Datastore с поддержкой асинхронных запросов, я добавил кое-какой низкоуровневый функционал, который Вы можете использовать уже сегодня. Единственный API с документированной поддержкой асинхронных запросов – это urlfetch. И этот функционал может оказаться довольно полезным.
                              Читать дальше →
                            • Up the pool

                              • Перевод
                              Я программист. Поэтому, меня всегда потрясают вещи, которые «просто работают». Это чувство у меня было и когда я знакомился с Erlang Pool. Настройка требует некоторого внимания, но после, механизм оказывается «оскорбительно» простым.
                              Читать дальше →
                            • Устранение Хвостовой рекурсии

                              • Перевод
                              Я недавно написал в своем блоге Python History пост «The origins of Python's functional features» (перевод). Упоминание о том, что Python не поддерживает хвостовую рекурсию (TRE) сразу спровоцировало несколько комментариев о том, как жаль, что Python не поддерживает данную оптимизацию. Появились ссылки на недавние записи в других блогах о том, что TRE может быть добавлена в Python легко. Позвольте мне защитить свою позицию — я не хочу добавлять TRE в язык. Если Вы хотите короткий ответ, это просто unpythonic.

                              Вот длинный ответ.
                              Читать дальше →
                            • Откуда идут «функциональные» корни Python

                              • Перевод
                              Я никогда не полагал, что Python попадет под влияние функциональных языков, независимо от того что люди говорят или думают. Я знаком с императивными языками, такими как C и Algol68 и хотя я сделал функции объектами «первого класса», я не рассматривал Python как язык функционального программирования. Однако, было ясно, что пользователи хотят больше от списков и функций.
                              Читать дальше →
                            • Comet–приложение для Mochiweb c нагрузкой в 1 000 000 пользователей. Часть 3/3

                              • Перевод
                              Часть 1 и Часть 2 в этом цикле статей показали, как создать приложение, используя mochiweb, и как передавать сообщения подключенным пользователям. Мы уменьшили постребление памяти до 8 Кб для каждого подключения. Мы повторили c10k тест. Мы сделали графики. Это была забава, но теперь пора повторить все для 1 миллиона соединений.

                              Это статья покрывает следующее:
                              • Использование базы данных Mnesia;
                              • Генерация правдоподобного набора данных вида «friends» для миллиона пользователей;
                              • Настройка Mnesia и ввод наших данных;
                              • Открытие миллиона соединений с одной машины;
                              • Сравнительный тест с 1 миллионом пользователей;
                              • Libevent + Си для обработки соединений;
                              • Финальные выводы.
                              Читать дальше →