• Правильная утилизация батареек

      Привет, друзья!

      Каждый из нас наверняка пользовался в своей жизни батарейками. Пульты, часы, игрушки, телефоны, масса других вещей — в доме всегда есть что-то, что работает на батарейках. А они имеют свойство вырабатывать свой ресурс. Однако все ли знают, что делать с отработавшими батарейками? Выбросить в мусорное ведро вместе с остальным домашним мусором? Это неправильно!

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

      Но что такого вредного или опасного в батарейках?
      Узнать
    • CountDown — Обратный отсчет на HTML5

        Те, кто был участником конференции Google I/O 2011, наверняка, обратили внимание на заставку на экране, где показывалась занятная сцена обратного отсчета. Я наблюдал за трасляцией конференции в московском офисе Гугла, но забыл спросить у устроителей, где можно скачать эту демонстрацию. Впрочем, я не уверен, что получил бы ответ. И совсем недавно неожиданно наткнулся на страницу Chrome Experiments, где и было краткое описание заставки.
        К сожалению, скриншоты не дадут полного впечатления от красоты демонстрации, поэтому предлагаю посмотреть ее в действии по адресу http://www.weareinstrument.com/countdown/.
        Вы увидите укороченный вариант обратного отсчета на 20 секунд. В реальности, я приехал в офис минут на 40 раньше до трансляции, и эта заставка уже крутилась на экране. И она совершенно не надоела — меня мучал вопрос, чем закончится сценка, когда часы достигнут отметки 00:00:00.
        На мой взгляд такую демонстрацию вполне можно использовать как экранную заставку на компьютерах. А вам нравится?
      • SATA-контроллер, смазанная фотография и конкурс

          Несколько дней назад, на форуме KolibriOS зарегистрировался англоязычный пользователь с ником mdickie, и пожаловался, что в его ноутбуке Dell Latitude C640 не работает мышь: board.kolibrios.org/viewtopic.php?f=4&t=2389. Так как недавно у нас появилась поддержка USB (в частности, USB-мышей), то наш основатель Mario_Z логично предположил, что mdickie использует какую-то старую версию, и посоветовал ему скачать последнюю ночную сборку и проверить на ней.

          Предположение Mario_Z оказалось верным — в ночной сборке мышь заработала, но сломалось что-то другое:
          It works with the latest build,
          Thanks
          EDIT: It freezes slower.
          К сожалению, пользователь был немногословен (либо английский — не его родной язык), поэтому некоторое время мы выясняли, что же именно не так, задавая наводящие вопросы, пока картина не прояснилась:
          I mean it needs a little more time to freeze the mouse.
          Oh yes, the whole system freezes. The Keyboard and the clock aren't working.
          Здесь уже я догадался, что причиной зависания, скорее всего, является драйвер SATA IDE, который в настоящий момент разрабатывает Mario_Z. На данный момент, в KolibriOS есть родной драйвер только для контроллера PATA, а поддержка контроллера SATA в режиме IDE осуществляется только через BIOS, что вносит 2 ограничения:
          1. Доступ к дискам через «костыль» BIOS очень медленный, поэтому фильм с такого диска в KolibriOS не посмотришь — будет идти рывками. Скорость копирования файлов тоже неприемлемая — можно пообедать, пока копируется большой файл.
          2. Некоторые диски без драйвера вообще никак не видны в системе.

          Ввиду этого, на сегодняшний момент у нас пишутся 2 драйвера SATA (параллельно):

          Оба драйвера имеют одну неприятную особенность — наглухо подвешивать систему в случае любой нештатной ситуации — и тогда требуются логи, чтобы увидеть конфигурацию дисков и попытаться узнать причину зависания. Именно это и произошло у mdickie, и поэтому я попросил его приложить логи. Естественно, при зависании всей системы скопировать логи прямо из KolibriOS в текстовый файл не получится, и в таких случаях мы просим сфотографировать лог с экрана монитора на смартфон или фотоаппарат, и выложить фото на нашем форуме. И здесь мы переходим ко второй части статьи.
          Вторая часть
        • Мониторинг «на коленке» – использование Cacti для контроля Jаva приложений

          В статье описывается решение для мониторинга с использованием Cacti на примере задачи анализа и контроля потребления ресурсов большого Java-приложения.

          Передо мной стояла задача – в краткие сроки предложить меры по стабилизации большого трехзвенного Java-приложения, имеющего проблемы с потреблением памяти и производительностью. Времени, как обычно, мало: 1-2 недели на все. На фирме отсутствовала подходящая инфраструктура мониторинга приложений, и в мою задачу не входило ее создавать. Вариант с использованием JConsole не подходил из-за необходимости анализировать потребление за продолжительное время и смотреть его после возможных внезапных перезагрузок приложений.

          В одной из фирм, где я работал, было реализовано впечатляющее по удобству и простоте решение для мониторинга Java-приложений на основе RRD Tool. Состояло оно из несложной надстройки на perl-скриптах, обеспечивающих сбор и отображение данных через HTTP и ряда доработок-агентов сбора данных в самом приложении. Для меня это стало идеей решения, однако, времени на написание обвязки над RRD у меня не было.

          После аккуратного поиска нашелся бесплатный инструмент, реализующий необходимую мне надстройку – Cacti. Cacti это приложение, написанное в инфраструктуре Apache-PHP-MySql, позволяющее настраивать сбор и отображение данных мониторинга на основе веб-интерфейса. Разобраться с ним оказалось несложно, пару дней для подъема инфраструктуры, затем настройка и дописывание агентов сбора данных и все.

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

          Дальше...
        • Книги, которые должен прочитать Java программист: от новичка до профессионала

          • Translation

          Книги, которые должен прочитать Java программист: от новичка до профессионала


          [Примечание переводчика: термины градации «профессионализма» оставлены англоязычные в связи с трудностью их адекватного перевода на русский и несовпадением с привычными Junior-Middle-Senior-Lead. Перевод достаточно вольный — если знаний языка хватает, то лучше читать оригинал, как и советует автор. Оба языка для меня не родные, так что про ошибки сообщайте в личку — исправим. Здесь и далее в квадратных скобках примечания переводчика]

          Я заметил, что в последние месяцы я рекомендую одни и те же книги как новичкам, так и опытным разработчикам. Поэтому я решил составить список этих книг. Они составили мне неплохую компанию в процессе моего роста от новичка до сегодняшнего уровня (какой-бы он не был :) )
          Читать дальше →
        • Сервис поиска комплектующих для коптеров и не только

            Собирая квадрокоптер столкнулся с проблемой: выбор комплектующих огромный, а вот поиск по ним никудышный.
            В свободное от работы время потихоньку клепаю поисковик по комплектующим: www.rcdetails.info
            Сейчас БД уже содержит информацию о товарах с hobbyking.com, goodluckbuy и towerhobbies:
            • более 800 бесколлекторных моторов;
            • более 300 ДВС;
            • примерно 400 регуляторов для бесколлекторных моторов;
            • более 1300 литиевых аккумуляторов;
            • почти 800 сервоприводов;
            • почти 1000 винтов;


            Читать дальше →
          • Квадрокоптер за 1 день и $120

              Создать квадрокоптер как платформу для летающего робота я планирую уже очень давно. Первые расчеты и заказ деталей я сделал год еще назад. Однако, делать «просто коптер» чтобы полетать, управляя с пультом или даже в FPV режиме конечной задачей не является. Поэтому коптер должен быть максимально гибким и как можно менее дорогим.
              По отдельности все детали для коптера есть, но их сопряжение — дело простое только в теории. Нужно быть и программистом и инженером и моделистом — вертолетчиком. Поэтому процесс движется довольно небыстро. А летать хочется :) Ничто так не расхолаживает и не демотивирует как отсутствие видимых результатов, особенно когда прогресс-то вроде есть, но не наглядный. Да и экспериментировать сразу на большом квадракоптере дорого и опасно.
              Поэтому я решил собрать для экспериментов миникоптер. Как всегда — задача сделать недорого, просто и гибко.
              Мой результат — готовый коптер за 1 день (на сборку и запуск) и $120 (стоимость квадрокоптера включая доставку). А с аппаратурой — $145.
              MiniQuadroCopter
              «MiniQuadroCopter»
              Под катом описание и видео.
              Buddy-коды для заказа на HobbyKing
              Строим недорогой квадрокоптер
            • Shrew бесплатная альтернатива Cisco VPN Client



                Столкнулся с проблемой установки Cisco VPN Client на Windows 7 да еще к тому же x64,
                если на Windows 7 x86 с шаманским бубном можно запустить, то на x64 все попытки будут тщетны(Cisco почти принципиально не хочет делать x64 Vpn Client).

                Читать дальше →
              • Квадрокоптер-R2. Апгрейд

                  Весной я писал как построить дешевый и простой коптер за 1 день и $120
                  Основной его недостаток — довольно примитивный по возможностям контроллер KKmultiсopter — он даже горизонт сам держать не умеет. Что-ж, исправим этот недостаток!
                  Тех, кто уже построил по предыдущему рецепту, спешу успокоить — бюджет апгрейда всего $40-55. Для тех, кто строить будет с нуля, есть возможность улучшить конструкцию.
                  Я построил второй коптер, т.к. комплектующие для него были куплены давно.
                  image
                  Апгрейдим до R2
                • Против лома нет приёма: OpenJDK hack vs. Class Encryption

                  Цель этой статьи предостеречь разработчиков от использования обфускаторов с функцией шифрования class-файлов для защиты своих приложений и от бессмысленной траты денег на них.
                  Вопросы защиты байт-кода от реверс-инжиниринга и обхода этой защиты подробно рассмотрены в фундаментальной работе Дмитрия Лескова — Protect Your Java Code — Through Obfuscators And Beyond.
                  Механизм шифрования class-файлов предполагает, что содержимое классов хранится в зашифрованном виде, а при старте приложения через специализированный СlassLoader или JVMTI-интерфейс, расшифрованный байт-код грузится в виртуальную машину Java.
                  Читать дальше →
                • А как же всё-таки работает многопоточность? Часть I: синхронизация

                  • Tutorial
                  картинка для привлечения внимания(пост из серии «я склонировал себе исходники hotspot, давайте посмотрим на них вместе»)
                  Все, кто сталкивается с многопоточными проблемами (будь то производительность или непонятные гейзенбаги), неизбежно сталкиваются в процессе их решения с терминами вроде «inflation», «contention», «membar», «biased locking», «thread parking» и тому подобным. А вот все ли действительно знают, что за этими терминами скрывается? К сожалению, как показывает практика, не все.

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

                  Перед прочтением глубокого описания полезно убедиться в том, что вы в достаточной мере разбираетесь в Java Memory Model. Изучить её можно, например, по слайдам Сергея Walrus Куксенко или по моему раннему топику. Также отличным материалом является вот эта презентация, начиная со слайда #38.
                  Читать дальше. Много.
                • В помощь интернет-шопперу

                    Для покупок на ebay-подобных околоазиатских сайтах могут быть разные причины от острого, свербящего желания получить часы «как в Portal 2» до банальной лени, стоящей на пути между диваном и торговым центром. Среди них и желание сэкономить, и острая хроничесекая интернет-шоппинг-зависимость типа моей. Ну и, конечно, ни с чем несравнимая эйфория после победы финального босса – тётечки из окошка Почты России. Она сначала пытается измотать вас 20-минутной очередью под «Ласковый май» в уютном отделении почтовой связи, а потом запросто может попросить дописать на обратную сторону извещения код подразделения, выдавшего паспорт, но не спросить сам документ, за которым только что пришлось возвращаться с полпути до почты по причине собственной забывчивости.
                    Так, о чём это я? Ах, да, о ещё одной торговой интернет-площадке и тонкой, незримой связи её с OCR.
                    Читать дальше →
                  • Моддер выжал из Skyrim дополнительные 40% производительности

                      В треде форума он рассказывает, что Бетезда, по ходу, не использует оптимизирующий компилятор.

                      Его оптимизации достаточно просты и покрывают примерно 1% от всего кода движка. В основном это ручной инлайнинг геттеров, переписывание некоторых кусков кода с x87 на SSE2. Были пропатчены только три крупные функции. Моддер утверждает, что если бы Бетезда использовала оптимизирующий компилятор и другую библиотеку для мат. вычислений прирост в скорости составил бы 100%.

                      Сам мод можно скачать здесь: forums.bethsoft.com/topic/1321575-rel-tesv-acceleration-layer

                      Тред с комментариями здесь: forums.bethsoft.com/topic/1321675-how-can-skyrim-be-so-unoptimized-modders-do-better-job-than-bethesda

                      Обещают 20-30% прирост FPS в таких местах как Маркат и Уайтран (крупные города).
                    • Работа с Java в командной строке

                      Сейчас уже никто не создает программы в консоли. Используя любимую IDE, разработчик чувствует себя неуютно за чужим компьютером, где её нет.
                      Решив разобраться в работе Ant и Maven, я поймал себя на том, что не смогу собрать приложение без них в консоли.
                      В данной статье я постарался уместить все этапы проектирования демонстрационного приложения, чтобы не искать справку по каждой команде на просторах Интернета.
                      Читать дальше →