• Armory 1.2: Workspaces и переключение между проектами


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

      Переключение между проектам


      Intellij Idea, как известно, позволяет работать над несколькими проектами одновременно, открыв каждый из них в отдельном окне. При таком подходе переключение между проектами осуществляется с помощью стандартных для данной ОС средств навигации между окнами, что, по ряду причин, не самый удобный способ выбора проекта.
      Почему это неудобно?
      • Переключение между окнами происходит по-разному на разных ОС.
      • Пространство засоряется окнами других приложений.
      • Сложно отличить один проект от другого по preview окна (если используются preview).
      • Проекты имеют одинаковую иконку (если используются иконки).
      • Нельзя выбрать закрытый проект. Для закрытых проектов нужно идти в Recent Projects.
      • Нельзя отсортировать проекты по алфавиту.

      Поэтому мы сделали отдельное окно, в котором одновременно собраны и открытые, и недавние проекты, и которое доступно по горячей клавише из любого открытого окна Intellij Idea. Единый список всех проектов с разными режимами сортировки и функциями по открытию и закрытию (или удалению) элементов списка. Слева на скриншоте показано как выглядит это окно. Иконки генерируются по алгоритму как у GitHub из имени проекта в качестве seed.
      Читать дальше →
    • Armory — плагин для IntelliJ IDEA


        Здравствуйте дорогие читатели хабра! В этой статье я расскажу о теоретических предпосылках и существующей проблематике в области разработки интерфейса для IDE, а в конце предложу ознакомиться с результатом нашего труда в виде плагина для среды разработки Intellij IDEA.
        Читать дальше →
      • Железная дорога — реминисценция старой игры ShortLine

          Когда-то, давным-давно, во времена DOS, была такая замечательная игра ShortLine. Суть игры в том, чтобы поддерживать бесперебойную доставку грузов между городами до 2000-го года. Теперь вы можете поиграть в нее в новой аранжировке — на Вашем Android-устройстве. Представляем Вам игру Железная дорога.

          Разработчик: "Железная дрога" - реминисценция старой игры ShortLine
          Читать дальше →
        • Двуязычные книги в Wiki-формате

            Здравствуйте дорогие коллеги и жители Хабрахабра.

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

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

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

            I showed my masterpiece to the grown-ups [я показал свое творение взрослым: «show – showed» – показывать], and asked them whether the drawing frightened them [и спросил у них, не пугает ли рисунок их].
            
            Подробности
          • Сложности многоэтажного программирования

              Здравствуйте дорогие Хабрачитатели и программисты!

              Должен предупредить, что мой сегодняшний пост будет больше похожим на вопрос, чем на статью. Целью поста является поиск единомышленников, увлеченных азартом людей, желающих создавать качественные и конкурентоспособные приложения. Начну я из далека, налью немого воды, чтобы пост был похожим на что-то, что не сразу удаляют с хабра.

              Многие годы я мечтал и продолжаю мечтать до сих пор создавать качественные приложения. Каждый раз, когда я начинал писать свою новую программу, я был на 100% убежден, что это будет самая лучшая программа в своем роде. Начало любого приложения было воодушевляющим, восхитительным и внушающим надежды на большие перспективы. В такие дни я был погружен в работу с головой, забывая обо всем на свете. Каждый день появлялись новые функции, применялись и новые удачные решения, всё сулило небывалый прогресс и золотые горы, если бы все продолжалось в том же темпе. Хотелось мысленно продлить этот график роста, и казалось, ничего не могло ему помешать. Думаю у каждого из нас такое бывало.
              Читать дальше →
            • phpMyExcel — таблица с формулами на PHP

                Доброго времени суток, уважаемые читатели хабра!

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

                Дело в том, что по роду своей деятельности мне приходилось выводить всякого рода цифры из таблиц mysql и всячески следить за ними: сколько посетителей было, сколько уникальных ип адресов проверяло обновление, какой версией пользовалось сколько человек, всякие суммы, count(*) и т.п. Основные запросы я конечно помещал на специальную страницу статистики, а всякие любопытные, но не очень ценные выборки обычно делал в phpMyAdmin-e и мне было их лень коммитить на эту страницу. Да и не хотелось сильно нагружать страницу статистики всякими сомнительной необходимости цифрами. Эти запросы уходили в никуда, это огорчало, и я все время хотел сделать какой-то облегчающий создание отчетов инструмент, запоминающий мои последние запросы.
                Читать дальше →
              • История Orfo Switcher

                  Доброго времени суток, дорогие хаброжители!

                  Как-то давным давно, в августе 2006-ого года, будучи студентом, я загорелся идеей написать программу, которая бы перенесла клавиши перемещения курсора (стрелки) на клавиатуре из привычного места прямо на алфавитную клавиатуру. Идея фикс была в том, чтобы навигация по редактору, в котором я программировал происходила без отрыва рук от привычного положения «ФЫВА-ОЛДЖ». Достаточно было зажать Caps-Lock и клавиши I,J,K,L превращались в клавиши управление курсором. Это было здорово! Пришлось разобраться с хуками Windows, с особенностью перехвата и подделкой сообщений от клавиатуры, и, несмотря на то, что идея с упрощенной навигацией не прижилась даже у меня самого (сложно было заставить себя использовать новые клавиши), я был рад проделанной работе, потому что у меня уже было все необходимое чтобы создать свой переключатель клавиатуры, который бы заменил бестолковый (как мне тогда казалось) Punto Switcher.
                  Читать дальше →
                • Brainfucker-ы замечены среди разработчиков JavaScript

                    JavaScript PHP
                    // if ( 0 ) не выполнится 
                    // if ( 0 ) не выполнится 
                    if ( 2 ) выполнится 
                    if ( 2 ) выполнится 
                    if ( -1 ) выполнится 
                    if ( -1 ) выполнится 
                    if ( false == 0 ) выполнится 
                    if ( false == 0 ) выполнится 
                    if ( false == '0' ) выполнится 
                    if ( false == '0' ) выполнится 
                    if ( false == '00' ) выполнится 
                    // if ( false == '00' ) не выполнится 
                    if ( false == '0x0' ) выполнится 
                    // if ( false == '0x0' ) не выполнится 
                    — мы видим, что JavaScript парсит строку с числом более тщательно. Едем дальше
                    if ( 'bla bla bla' ) выполнится 
                    if ( 'bla bla bla' ) выполнится 
                    // if ( false == null ) не выполнится 
                    if ( false == null ) выполнится 
                    — поразительно, но в JavaScript false не равен null

                    Читать дальше →
                  • PHPLego: Горячие клавиши — атрибут hotkey

                      PHPLego: PHPLego: Горячие клавиши - атрибут hotkey

                      Дорогие друзья! Сегодня я хочу поделиться с Вами 138-мью строчками кода, которые позволяют ссылки <a> и кнопки <input type='submit'> расширить атрибутом hotkey.

                      Ведь иногда хочется, чтобы форма отправлялась по CTRL+Enter, а часто используемые пункты меню были доступны по какой-то своей хитрой комбинации клавиш.
                      А еще не хочется на эти мелкие удобства тратить время, ведь горячие клавиши — это далеко не для каждого. Хотя если к ним привыкнуть — отучиться просто невозможно.

                      Подключив файлик hotkeys.js, который будет описан ниже, появляется возможность задавать горячие клавиши любым ссылками и кнопкам отправки форм вот так:
                      <a href='...' hotkey="Ctrl + Shift + D">удалить</a>
                      или
                      <input type='submit' hotkey='Ctrl + Enter' value='Отправить'>
                      


                      Читать дальше →
                    • PHPLego: Плагины к сайту своими руками



                        Доброго утра, дорогие Хаброчитатели!

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

                        В этой статье я хочу поделиться скромным микровелосипедом, который помогает мне в нелегком деле сайтостроительства.

                        Наше первое знокомство с вами оказалось очень интересным, и я искренне признателен вам, за вашу конструктивную критику. Надеюсь продолжить в том же ключе.

                        Итак, для себя я сформулировал задачу по следующим криетриям:

                        1) Каждый модуль должен содержать все необходимое для работы в одной папке — и шаблоны, и модель, и контроллер. Дабы его легко можно было скопипастить, подправить — и вуаля — новый модуль.
                        2) Модуль ничего не должен знать о тех, кто его создает — все необходимые ему для работы данные он получает через конструктор. Это для того, чтобы модуль работал не только на моем сайте, но и на всех сайтах моих друзей и клиентов без всякого допиливания напильником.
                        3) Для того, чтобы пользоваться модулем его не должно быть нужно где-либо регистрировать или инклудить дополнительные файлы. Это тупо раздражает.
                        4) Модуль может состоять из модулей. Т.е. должна быть поддержка вложенных модулей.
                        5) Ссылки (a href=...) внутри шаблонов модулей должны быть относительными, не зависящими от того, на какой глубине вложенности находится модуль. Чтобы банально не править шаблоны, если мы перемещаем модуль из одного родительского модуля в другой.
                        6) Сам сайт тоже должен быть модулем, раз уж на то пошло. Дабы можно было купить у друга уже рабочий сайт, положить себе в папку и встроить весь его на какую-нибудь страницу без лишних переделок.

                        Ну вот, для одной статьи я думаю достаточно, приступим к реализации.
                        Читать дальше →
                      • PHPLego: Ненавязчивый AJAX



                          Здравствуйте дорогие хаброчитатели!

                          Думали ли Вы когда-нибудь о том, чтобы Ваш сайт одинаково хорошо работал с включенным JavaScript-ом и без JavaScript-а? Чтобы, если JavaScript включен, блоки сайта перегружались AJAX-сом, а если JavaScript-а нет, то происходил просто переход на новую страницу?

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

                          Для себя я сформулировал задачу, по следующим критериям:
                          • Переход по разделам сайта внутри и вне блоков должен осуществляться обычными ссылками, без каких бы то ни было onclick=”…”.
                          • При включенном JavaScript-е блоки сайта перегружают только свою область страницы (свой div). При выключенном JavaScript-е должен происходить обычный переход по ссылке.
                          • Должен существовать только один глобальный обработчик нажатия на ссылки $(“a”).click(…), который и делает всю работу по перегрузке нужных элементов страницы. Если же JavаScript отключен, то этот обработчик просто не срабатывает, и сайт продолжает работать в обычном режиме.
                          • Постинг форм при включенном JavaScript-е также обновляет только ту область, в которой находится эта форма. При отключенном – все работает как обычно.
                          • Должна быть возможность запретить AJAX-презагрузку некоторым областям страницы, например, поставив им какой-нибудь класс «noajax». Это если после перехода по ссылке меняется слишком много данных на странице, и они все в разных блоках. Тогда разумней перегрузить всю страницу целиком, чем обновлять каждый блочёк по отдельности. Оно и быстрее будет.
                          • Должна быть возможность указать ссылке блок, который она должна перегрузить. Допустим, если нам нужно перегрузить не только текущий блок, но и блок родитель.
                          • Если блок был загружен ранее, то он должен браться из кеша, дабы не гонять лишний трафик и не напрягать лишним запросом сервер.
                          • В случае, если блок загружен из КЭШа, пользователь должен как-то понимать что эта не самая актуальная информация, и иметь возможность обновить блок.
                          • Никакого JavaScript-a. Это конечно мое личное мнение, но я ненавижу писать на JavaScript-е. Поэтому я добавил еще один пункт. Смысл его в том, чтобы разрабатывая модули к сайту я не писал ни строчки JavaScript-а (ну максимум одну-две на модуль, и то для каких-нибудь чекбосов в форме). Не знаю, как ты, дорогой хаброчтец, но я, твою мать, лучше продам свою душу дьяволу, чем буду дебажить свой JavaScript во всех многообразиях браузеров!


                          Ну, вот собственно и все пожелания. Итак, приступим к реализации…
                          Читать дальше →