• Valentina Studio — бесплатная программа для работы с СУБД

      image Очень многие разработчики считают что лучший интерфейс для работы с базами данных — текстовый интерфейс консольного. Я лично еще не достиг подобного просветления, поэтому больше доверяю GUI-инструментам. Хорошо, если у СУБД как у Postgres есть своя, утилита для работы с БД, а что делать если нет? Или если надо работать с различными базами данных одновременно? Под Windows альтернативных клиентов к различным СУБД — море разливанное. С другими ОС (я в данный момент работаю в OS X) все не так радужно, хотя есть программы разной степени пригодности и удобства. Раньше я использовал Navicat, но недавно нашел еще одно интересное решение, о котором и хочу рассказать: Valentina Studio.

      Сразу скажу — я общался с разработчиками, и мне очень импонирует их концепция, то что они делают и как, поэтому я решил просто написать обзор о хорошем инструменте, о котором мало кто знает, поскольку публичный релиз программы состоялся очень недавно. До этого она долгое время разрабатывалась для Valentina DB и только в феврале вышла версия с поддержкой известных популярных баз данных. При этом разработчики приняли достаточно разумное решение — базовая версия совершенно бесплатна, а деньги берут только за несколько мощных «особо профессиональных» функций без которых чаще всего можно обойтись.
      Читать дальше →
    • Вышла версия 1.0 фреймворка Tornado

        image

        Популярный проект, по созданию неблокирующего web-сервера и «сопутствующего» фреймворка на языке Python, объявил о релизе версии 1.0.

        Скачать новую версию можно тут: github.com/downloads/facebook/tornado/tornado-1.0.tar.gz

        По сравнению с последним релизом версии 0.2, было добавлено множество новшеств,

        — возможность запуска WSGI-приложений, под управлением сервера Tornado (например приложения Django и CherryPy)
        — улучшенная производительность в MacOS X (с использованием kqueue) и экспериментальная поддержка win32
        — переписан класс AsyncHTTPClient
        — поддержка .mo файлов в модуле локализации
        — поддержка пре-форкинга для запуска нескольких процессов Tornado
        — поддержка SSL и gzip в HTTP-сервере

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

          Нереальный, фееричный перфоманс с использованием LISP и OpenGL.
          Поначалу ничего непонятно, но все завораживающее действо начинается с 5 минуты где-то. Может быть это и есть один из видов искусства будущего?


          Уже представляю себе «выступает заслуженный LISP-ист России, лауреат международных премий Иван Лямбдин»
        • Основы Python — кратко. Часть 6. Расширенное определение функций.

            Продолжение, начало см. тут.

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

            Параметры по-умолчанию


            Для всех параметров функций можно указывать значения по-умолчанию, это дает возможность вызвать функцию с меньшим числом параметров. Например, у нас есть функция для авторизации пользователя на сайте:
            def login(username="anonymous", password=None):
                """Тут какие-то действия"""
                pass
            
            # вызвать эу функцию мы можем одним 
            # из нижеприведенных способов
            login("root", "ujdyzysqgfhjkm")
            login("guest")
            login()
            # мы можем указать какой из параметров мы передаем, 
            # указав его имя в явном виде
            login(password="nobody@mail.com") 
            

            Читать дальше →
          • Webbynode — VPS для разработчиков

              Я с интеренсом наблюдаю за развитием проекта webbynode. Разработчики обещают создать «cloud computing решение для разработчиков».
              Вот только некоторые из «приятных особенностей» данного проекта:
              • VPS хостинг на основе Xen.
              • Ориентация на хостинг приложений и оптимизированный под это интерфейс управления.
              • Технология «ReadyStack», позволяющая быстро развертывать готовые решения для популярных фреймворков. Прямо сейчас есть решения для RoR, Django, и LAMP.
              • Высокая доступность, благодаря использованию многих датацентров.

              Я зарегестрировался в программе для бета-тестеров, и вскоре мне пришло приглашение со всей необходимой для входа информацией.
              После логина открылась удобная web-консоль для управления развернутым VPS.

              Немного скриншотов и коментариев
            • Ja.NET — Java для .NET

                image Как скрестить ужа с ежом? Эту, казалось бы, анекдотичную задачу довольно неплохо решили разработчики проекта Ja.NET. В результате их кропотливого труда на свет появилось уникальное творение — JVM, работающая под Microsoft .NET Framework. Разработчики заявляют о частичной совместимости с Java SE 1.5.

                На этом месте разработчики со стажем, поморщившись, вспомнят про полумертвенький J#, впоследствии практически заброшенный «родителями». Но Жанетт — в отличие от той поделки — девушка серьезная, и подход демонстрирует более вдумчивый. В ее родителях числятся именитые проекты: Eclipse JDT compiler, Mono's Cecil, и Apache Harmony. В отличие от своих аналогов, Ja.NET представляет из себя полноценную виртуальную ява-машину, работающую на основе .NET. Кроме того, компилятор генерирует родной код MSIL, что положительно сказалось на производительности.

                Пример кода
              • Titanium — новая RIA платформа

                  Appcelerator, Inc, известные своим SDK для разработыки «rich web pages» представили новую, полностью открытую платформу для построения RIA под названием Titanium.
                  Платформа базируется на ряде популярных продуктов:
                  • WebKit
                  • Chromium
                  • Gears
                  • GTK+
                  • JQuery
                  • Appcelerator SDK
                  • NSIS
                  • Ruby

                  3 имеющиеся в наличии демки выглядят достаточно приятно.

                  Под катом — официальное релиз-видео.

                  Читать дальше →
                • Python плагин для IntelliJ IDEA

                    С неделю назад прочитал приятную новость про «размораживание» разработки Python плагина для IDEA. Памятуя про позитивные чувства, которые вызвало общение с IDEA 6 версии в роли Java-IDE, решил попробовать этот плагин, благо новая сборка уже доступна для загрузки и регулярно обновляется.

                    В общем, смею вам доложить — впечатления положительные. Очень рекомендую попробовать всем, так или иначе связанным с Python-разработкой.
                    Читать дальше →
                  • Основы Python — кратко. Часть 5. Определение функций, основы.

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

                      Функции в Пайтоне объявляются не просто, а очень просто. Вот пример самой простой:

                      def empty_func():
                          pass

                      Начинается объявление с ключевого слова def, что как не сложно догадаться является сокращением от define. После него идет имя функции. После имени в круглых скобках задается список параметров, в данном случае отсутствующих.
                      Читать дальше →
                    • Основы Python — кратко. Часть 4. Генераторы списков

                        List comprehensions

                        Продолжим наш цикл уроков. Добрый день.

                        Генерация списков

                        Генерация списков (не знаю как адекватно перевести на русский list comprehensions) — яркий пример «синтаксического сахара». То есть конструкции, без которой легко можно обойтись, но с ней намного лучше :) Генераторы списков, как это не странно, предназначены для удобной обработки списков, к которой можно отнести и создание новых списков, и модификацию существующих.
                        Допустим, нам необходимо получить список нечетных чисел, не превышающих 25.
                        В принципе, только познакомившись с работой команды xrange решить эту проблему несложно.

                        >>> res = []
                        >>> for x in xrange(1, 25, 2):
                        ...     res.append(x)
                        ...
                        >>> print res 

                        В общем-то, полученный результат — целиком нас устраивает всем, кроме длинной записи. тут-то на помощь и придет наш «сахарок». В самом простом виде, он обычно
                        выглядит так: