• Запросы к Twitter API на синтаксисе SQL

      Язык запросов TweeQL сделан по образцу SQL-синтаксиса и позволяет работать с базой твитов так же просто, как с реляционной базой данных.

      TweeQL имеет следующий синтаксис:

      SELECT field1, field2 FROM streams WHERE filter_conditions GROUP BY field3, field4 WINDOW x seconds
      Читать дальше →
    • «Мир полон интересных вещей»

      • Translation

      Так обозначили слайдшоу, созданное усилиями Google's Creative Labs. В этом длиннющем слайдшоу вы найдете множество интересных приложений, созданных на чистом HTML5, различные инструменты визуализации, впечатляющие 3D проекты, красивые художественные проекты, креативные YouTube ролики, краудсорсинг сервисы, iPhone приложения и многое другое.



      Один из сайтов, который презентуется в слайдах, Goollery  — интересная коллекция Google проектов от людей со всего мира. К примеру, клавиатура только для пользователей Gmail, уже ставший известным на западе Newsmap, стильная обертка для Google Reader и другие.



      Читать дальше →
    • Приплыли: поправки к ст. 1273 ГК РФ приняты в третьем чтении

        Госдума приняла поправки к закону, разрешающие воспроизводить любые произведения, на которые распространяется авторское право, в личных целях только «при необходимости». Критериев наличия или отсутствия «необходимости» закон при этом не уточняет.

        biz.cnews.ru/news/top/index.shtml?2010/09/24/409828#top_static

        Остаётся, видимо, надеяться только на то, что Медведев этот законопроект не подпишет. Я, правда, ломаного гроша на это не поставлю.
      • Установка Windows 8 Developer Preview для ленивых

          Задача: поставить Windows 8 Developer Preview поиграться.

          Условия: старая винда должна выжить, привода DVD нет, большой флешки на десять гигов тоже.

          Классические решения:

          1. Поставить в виртуалку. Это медленно, нужен дополнительный софт и без хардварной виртуализации ничего не заработает.
          2. Поставить на другой жёсткий диск. Увы, в ноутбук второй винт не вставишь, да и нету его у меня.
          3. Выделить отдельный раздел на винте. А это ставить лишний софт, танцевать с бубнами вокруг разделов… Лениво!

          К тому же последние два варианта обычно требуют физический DVD, которого нет. Выход? VHD!

          Кроме ISO образа Windows 8 нам также понадобится установленная Windows 7 — более ранние версии не умеют работать с VHD. А из под Linux мы не сможем так просто запустить инсталлятор.

          Читать дальше →
        • Заставляем ProgressBar крутиться пока идет http-запрос

            Все началось с того, что мне вдруг очень захотелось сделать что-нибудь под андроид. И все это несмотря на то, что java — не мой родной язык.
            В процессе создания своего приложения я столкнулся с несколькими трудностями, о решении которых и хочу поведать. Думаю, они будут полезны, таким же как я, новичкам, и буду благодарен за советы и более красивые примеры от гуру.
            Но главное подтверждение работоспособности примеров — это то что приложение работает, можете проверить.
            Читать дальше →
          • Хранение данных в Android

              В прошлом своем посте я писал о создании всплывающих менюшек, сегодня же мы поговорим о более важной теме такой, как хранение данных. В android есть несколько способов хранения данных: общие настройки, бд и тд. В этом посте я расскажу о том как хранить данные в БД.
              Читать дальше →
            • Multithreading in practice

                Нашел как-то на stack overflow вопрос (link).
                Need to create java CLI programm that searchs for specific files matched some pattern. Need to use multi-threading approach without using util.concurrent package and to provide good performance on parallel controllers.
                Перевод
                Нужно написать консольную программу, которая ищет файлы по какому-то паттерну. Программа должна быть многопоточная, но нельзя использовать пакет util.concurrent. Требуется добиться максимальной производительности.


                В общем идея в принципе была не сложная. Т.к. по условию нельзя использовать util.concurrent, то надо реализовать свой пул потоков, плюс написать какие-то таски, которые в этом пуле потоков будут крутиться.
                Так же я не был уверен в том, что при многопоточном использовании IO будет увеличение производительности.
                Читать дальше →
              • Высокопроизводительный NIO-сервер на Netty

                Преамбула

                Здравствуйте. Я являюсь главным разработчиком крупнейшего в СНГ сервера Minecraft (не буду рекламировать, кому надо, те знают). Уже почти год мы пишем свою реализацию сервера, рассчитанную на больше чем 40 человек (мы хотим видеть цифру в 500 хотя бы). Пока всё было удачно, но последнее время система начала упираться в то, что из-за не самой удачной реализации сети (1 поток на ввод, 1 на вывод + 1 на обработку), при 300 игроках онлайн работает более 980 потоков (+ системные), что в сочетании с производительностью дефолтного io Явы даёт огромное падение производительности, и уже при 100 игроках сервер в основном занимается тем, что пишет/читает в/из сети.

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

                Здесь я постараюсь расписать серверную часть работы с сетью через Netty, может быть это кому-то будет полезно.
                Читать дальше →
              • Высокопроизводительный GWT. Часть 1

                  image
                  Данный пост является началом серии статей про оптимизацию и улучшение производительности GWT-приложений. Поскольку материала у меня накопилось достаточно много, решил разбить его на 2-3 части.
                  Приступим к описанию того, что нас ждёт в первой статье.
                  Читать дальше →
                  • +34
                  • 10.4k
                  • 2
                • Fork/Join Framework в Java 7

                  • Tutorial
                  Какое-то время назад я делал обзор нововведений в Java 7, и, среди прочего, грозился по некоторым из новшеств пройтись более конкретно. Прошло довольно много времени, в Java 7 успели даже найти серьёзный дефект, но наконец настал тот момент, когда уже пора выполнить своё обещание. Потому под катом вы можете найти описание и пример использования новой реализации ExecutorService под названием ForkJoinPool. Эта реализация разработана специально для упрощения распараллеливания рекурсивных задач и решает проблему с тем, что пока выполняется под-задача, поток, который её породил, не может быть использован.
                  Читать дальше →
                • Обратная маска

                  Существующая маска для IP адреса выросла из классового деления адресов, на заре эпохи IP:
                  Класс A: 8 бит для номера сети 24 бита для номера хоста
                  Класс B: 16 бит на сеть и 16 бит на хост
                  Класс C: 24 бита на сеть 8 бит на хост

                  Когда стало слишком расточительным делить адреса подобным образом появилась маска, представляющая собой 32-х битное (из стольких же бит состоит и IP адрес) поле из подряд идущих единиц с начала поля, и после подряд идущих нулей. Единицы определяют те биты в IP адресе которые формируют номер сети, нули те биты в адресе которые формируют номер хоста.
                  IP адрес, десятичное:     10.      10.       0.       1
                  IP адрес, двоичное: 00001010.00001010.00000000.00000001
                  Маска, двоичное:    11111111.11111111.11111100.00000000
                  Маска, десятичное:       255.     255.     252.       0

                  Представление маски подобным образом, вполне, соотносится с термином битовой маски, т.е. единицы и нули определяют действия над конкретными битами в исходном числе, но плохо соотносится с форматом IP адреса – номер сети всегда определяется битами вначале, номер хоста битами в конце. Поэтому представление маски в виде 32-х битного поля является избыточным. Для однозначного определения маски можно определить только количество подряд идущих единиц с начала IP адреса от 0 до 32 – префиксное обозначение, обычно записывается через дробь после IP адреса: для примера выше 10.10.0.1/22 – 22 бита номер сети и 32-22=10 бит номер хоста. Если говорит про IPv6 адрес, то там определяется только префиксная запись маски/адреса – 2001:d8:a15e::1/48
                  Читать дальше →
                • Трёхмерные транзисторы. 22нм

                       На днях компания Intel совершила очередной прорыв в процессоростроении, а точнее, в эволюции транзисторов — логических элементах современных процессоров. Если последние 50 лет в электронике использовались исключительно планарные структуры, то отныне в массовом производстве применяемая структура станет трехмерной. Технология, позволившая и дальше следовать закону Мура, получила название Tri-Gate. По значимости этот шаг сопоставим, разве что, с изобретением интегральной схемы транзисторов.

                    image

                    Читать дальше →
                  • Объединяем twitter.com и vkontakte.ru

                      Пользуетесь ли вы twitter’ом? Если ответом является «Да», то милости просим под кат, где будет рассказано про способ автоматического репостинга сообщений из twitter’а в статус сообщения на сайте vkontakte.ru используя python.
                      Мне интересно
                    • Три парадигмы F#

                        Введение


                        Все, кто так или иначе связан с .NET программированием знает, что уже в следующую версию Visual Studio будет встроен новый язык программирования — F#, который позиционируется как функциональный, чем сразу, так уж повелось, вызывает подозрения в бесполезности. Для того, чтобы показать, что F# — куда больше, чем просто ФЯП (хотя и просто ФЯП — это очень немало), я и написал все нижеследующее.
                        Эта статья, несмотря на изрядную длину, не претендует на то, чтобы полностью описать всю функциональность языка. Это всего лишь краткий обзор, призванный продемонстрировать широкий спектр возможностей, каждая из которых заслуживает отдельной статьи, и даже не одной.
                        Кроме того, написав такой пространный пост, я хотел сделать задел на будущее, чтобы в дальнейшем мне не отвлекаться на незначительные вещи базового уровня. Конечно, сразу головой в пруд — это действенно, но и какой-никакой фундамент не помешает.
                        А уже в следующий раз я приведу пример на волнующую тему пригодности F# для обычной профессиональной программистской деятельности.
                        И еще раз, под катом действительно МНОГО текста. И не говорите потом, что я вас не предупреждал. =)
                        Читать дальше →
                      • Создание QuickAction диалогов в Android

                        • Tutorial
                        О том как написать Хеллоу Ворлд в интернете полным полно, так что я решил рассказать о более интересных вещах. Официальное приложение Twitter для Android использует паттерны и возможности графического интерфейса появившиеся в последних версиях sdk, такие как Dashboard, Search Bar, QuickAction и Action Bar. Диалог QuickAction является одной из самых интересных новинок, он отображает контекстное действия для данного элемента ListView. Этот диалог используется также в приложении контактов, начиная с версии 2.0
                        Читать дальше →
                      • Декодирование JPEG для чайников

                        • Tutorial

                        [FF D8]


                        Вам когда-нибудь хотелось узнать как устроен jpg-файл? Сейчас разберемся! Прогревайте ваш любимый компилятор и hex-редактор, будем декодировать это:


                        Jpeg file in hex editor


                        Специально взял рисунок поменьше. Это знакомый, но сильно пережатый favicon Гугла: Google favicon


                        Последующее описание упрощено, и приведенная информация не полная, но зато потом будет легко понять спецификацию.


                        Даже не зная, как происходит кодирование, мы уже можем кое-что извлечь из файла.


                        [FF D8] — маркер начала. Он всегда находится в начале всех jpg-файлов.


                        Следом идут байты [FF FE]. Это маркер, означающий начало секции с комментарием. Следующие 2 байта [00 04] — длина секции (включая эти 2 байта). Значит в следующих двух [3A 29] — сам комментарий. Это коды символов ":" и ")", т.е. обычного смайлика. Вы можете увидеть его в первой строке правой части hex-редактора.

                        Читать дальше →
                      • Диалоговое окно Android с «иконифицированным» меню

                          Некоторое время назад меня увлекла идея разработки приложений под платформу Android. Дабы не заниматься изучением платформы на простых hello-world программках решил сделать что-то такое, что позволило бы освоиться с UI частью фреймворка, работой с БД, сетью и социальными сервисами.
                          Идея была придумана до одурения простая и я бы даже сказал, тупая. И вот когда я начал что-то делать то тут резко захотелось мне сделать красивое диалоговое окно с выбором пункта меню с иконками. Такой диалог присутствует в стандартном Андроиде, например, долгий тап на рабочем столе открывает диалог выбора добавляемого контента (виджет, обоины и т.д.). Итак, добро пожаловать под кат…
                          Читать дальше →
                        • Список команд чата Skype

                            ...Skype — это дьявольски хитрая программа, написанная бесспорно талантливыми людьми...Крис Касперски

                            Доброго времени суток!

                            Skype сейчас я встречаю чаще на компьютерах чем другие IM клиенты, мне он практически заменил icq, вся рабочая переписка ведется в skype, но речь пойдет не о том, что лучше или популярней. Часто бывает так, что участвуешь сразу в нескольких чатах где количество участников превышает 10, что собственно и приводит к тому, что на рабочем столе и в трее постоянно обновляется количество новых сообщений, а также уведомления в виде всплывающих сообщений, а теперь представьте что у вас 3 окна чата с друзьями, 1 с вашим боссом, другой с девушкой — все это в сумме начинает запутывать, отвлекать и порой раздражать. Хотелось бы расставить приоритеты…

                            Раньше я чаще всего настраивал «политику» уведомлений только через глобальные настройки программы
                            Случилось так, что я узнал, что в каждом окне чата skype возможно использование команд, например /alertsoff отключит уведомления для конкретного окна чата, соответственно /alertson включит их обратно.
                            Поискав немного я наткнулся на некое how-to, оказывается у skype чата довольно много текстовых команд, подобие IRC команд. Далее я постарался попробовать все возможные из них на двух имеющихся у меня платформах, как оказалось не все и не везде работает… Прошу под кат.

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