• Неправильное использование атомов и трудноуловимая бага в VCL

      image

      Поиск бага


      Мучила меня долгое время бага, связанная с неадекватным поведением дельфийских контролов после длительного аптайма системы и интенсивной отладки. Списки переставали обновляться, кнопки нажиматься, поля ввода начинали терять фокус. И все было печально, и перезапуск IDE не помогал. Более того, после перезапуска IDE — она сама начинала так же глючить. Приходилось перезагружаться.
      Сегодня меня это достало, и я принялся её искать. Надо сказать не безрезультатно.
      Залогировав оконные сообщения я стал анализировать что же пошло не так.
      И что же?
    • Raspberry PI и JAVA: пристальный взгляд

        Недавно на хабрахабре вышла статья о java на raspberry pi, увидев название которой было много ожиданий, а под катом оказался банальный Hello World!

        Дело в том, что ко мне как раз ехала моя малинка и хотелось получить ответы на следующие вопросы:

        1. Сравнима ли скорость работы java на малинке и настольном компьютере?
        2. Насколько удобно работать с java на raspberry?
        3. Есть ли адекватные библиотеки для работы с GPIO?

        Вот на эти вопросы я и попробую дать ответы в этой статье.

        Кому интересно: добро пожаловать под кат (графики и фотографий обнаженной малинки там не будет)
        Читать дальше →
      • Arduino: Автоматическая подсветка лестницы

          Продолжая изучать возможности платформы Arduino, решил подсветить лестницу дачного дома.

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

          Цель:


          «Автоматическая подсветка лестницы в тёмное время суток»


          Задачи:



          1) Собрать электрическую схему управления

          Читать дальше →
        • Миграция контроллеров домена

          В связи со сменой сервис провайдера и переездом из одного датацентра в другой возникла необходимость миграции контроллеров домена леса и трех его доменов. Решено было поднять свежие машины в новом датацентре, мигрировать на них текщие AD DS роли, после чего утилизировать старые серверы домена.
          Наш лес состоит из трех доменов: одного корневого (в котором ничего нет, кроме домен котроллеров) и двух дочерних доменов (там находится весь функционал). Основой разделения доменов служило разделение обязанностей между ИТ командой компании и ИТ специалистами сервис провайдера. В каждом домене существует по два домен контроллера: первый на реальном железе, второй в виде виртуальной машины. Функциональный уровень леса – Windows 2008 R2. Операционная система установлена на всех серверах та же. На каждом сервере имеется DNS сервер с интегрированными в AD зонами.
          Ниже я в общих чертах опишу весь процесс.
          Подробности
        • Как устроен ntds.dit?


            Все данные каталога Active Directory хранятся в БД в файле ntds.dit. Подавляющее большинство приложений взаимодействуют с каталогом через прослойку DSA реализованную в ntdsa.dll. В свою очередь функции из ntdsa.dll не работают напрямую с ntds.dit, их функционал ограничен потребностями службы каталогов и они не могут дать нам представление о внутреннем устройстве БД Active Directory. Тем не менее ntds.dit представляет собой не что иное как БД JET Blue. В каждой версии windows (начиная с Windows 2000) есть всё необходимое для работы с этой БД.

            В статье ниже я попробую осветить следующие вопросы:
            • Какова структура БД?
            • Как данных в ntds.dit получается «дерево»?
            • Как реализовано членство в группах?
            • Каков формат атрибута replPropertyMetaData и с какой точностью в метаданных репликации хранятся временные метки?


            Что можно увидеть внутри ntds.dit
            • +18
            • 24k
            • 2
          • Откуда растут ноги у hashCode

              Опять на собеседованиях по Java спрашивают про hashCode и equals? А кто из собеседующих сам ответит на вопрос, как вычисляется Object.hashCode() и System.identityHashCode()? Насколько дорог вызов этих методов? Как их можно ускорить в HotSpot JVM? Держу пари, едва ли кто даст правильный ответ. Разве что, кто прочитает эту статью.
              Читать дальше →
            • Электролюминесцентная подсветка: холодный неон

                Навеяно последним постом о подсветке комнаты светодиодной лентой, а так же топиками о подсветке системников, столов и прочего.

                Понятно, что это не совсем хабратема, но увидев число комментариев к таким публикациям я удивился и решил, что несправедливо обойдена одна интересная, на мой взгляд, технология. Ее называют «холодный неон». Опробовано в нашем интернет-магазине люминофора.

                Большинство используют для неяркой подсветки в автомобилях. Интересно смотрятся подсвеченные велосипеды (+ небольшой блок питания от двух батареек – хватает на несколько часов свечения) или кроссовки. Фото не мои. Последнее фото — блок питания на двух пальчиковых батарейках с разъемом для подключения и моток холодного неона (5 метров).

                Читать дальше →
              • Светодиодная лента в качестве освещения комнаты

                  Изначально для основного освещения одной из комнат, где шёл капитальный ремонт, планировалась обычная люстра. Но недавно мне на глаза попалась суперяркая светодиодная лента Ultra 5000 со светодиодами smd 5630 торговой марки Arlight. Решение было принято быстро, окончательно и бесповоротно — хочу такую ленту в качестве основного света в комнате.



                  О реализации светодиодного периметра освещения далее
                • Пайка для начинающих

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

                    К делу. Сегодня речь пойдет о пайке. Знаю, что многих новичков, желающих поиграться с микроконтроллерами, это отпугивает. Но, во-первых, можно воспользоваться макетными платами, где просто втыкаешь детали в панель, без даже намека на пайку, как в конструкторе.
                    Читать дальше →
                  • Функциональное программирование для всех

                    • Перевод

                    Доброго времени суток. Это статья — перевод заинтересовавшего меня поста в блоге аспиранта Университета штата Нью-Йорк в Стоуни-Брук. Статья в доступной форме описывает основные концепции функционального программирования, их преимущества и недостатки. Думаю она будет полезна широкому кругу читателей, которые сомневаются, нужно ли им углубляться в мир функционального программирования или нет. Пожелания, предложения и замечания по переводу и терминологии принимаются по личной почте.

                    Мнение переводчика может иногда не совпадать с мнением автора, но переводить статью было крайне занимательно.

                    UPD: альтернативный вариант перевода вы можете найти на rsdn (спасибо flamingo за ссылку).
                    Читать дальше →
                  • Разработка простого Eclipse RCP приложения

                    В данной статье я хотел рассказать о том, как создавать приложения при помощи Eclipse RCP (Rich Client Platform). Поводом для написания послужил тот факт, что на Хабре абсолютно отсутствуют статьи, описывающие данную платформу. В качестве примера мы создадим пользовательскую форму ввода; корректность данных будет проверяться при помощи JFace Data Binding framework. Для затравки приведу ниже скриншот с тем, что у нас должно получиться.



                    Читать дальше →
                  • AMD APP SDK: Intermediate Language (IL)

                    AMD APP
                    ATI Stream SDK было переименовано в AMD Accelerated Parallel Processing (APP) SDK, на смену основного языка программирования GPGPU вычислений Brook+ пришел OpenCL. Однако, не многие догадываются, что писать код для ATI-шных карточек можно при помощи другой технологии: AMD Compute Abstraction Layer (CAL) / Intermediate Language (IL). Технология CAL предназначена для написания кода, взаимодействующего с GPU и выполняющегося на CPU, в то время как технология IL позволяет писать код, который будет выполняться непосредственно на GPU.

                    В данной статье будет рассмотрена технология IL, ее область применения, ограничения, преимущества по сравнению с OpenCL. Кому интересно, прошу под кат.

                    Follow the white rabbit
                    • +23
                    • 11,8k
                    • 6
                  • Соединение компьютер-компьютер через интернет с динамическими IP

                      Очень часто мы слышим о том, что установить соединение компьютер-компьютер через интернет с динамическими IP – нереально без внешнего сервера.
                      А также думал, до определенного времени. Потом у меня закрались подозрения… А после мне стало известно очень многое и тайное.

                      Однако скайп, аська для передачи файлов, торренты, в конце концов, используют каким-то образом прямое подключение.
                      Как? Об этом я и хочу рассказать.

                      Все совпадения случайны, цифры изначально выдуманы.

                      Читать дальше →
                    • Восстановление емкости аккумулятора ИБП

                        Подавляющее большинство из нас использует такое крайне полезное устройство, как источник бесперебойного питания. Качество питания не везде идеальное, да и просто мельчайшие проблемы с электропитанием иногда могут дорогого стоить. Потери данных это всегда неприятно, а иногда просто таки фатально. Устройство куплено, установлено под стол, подключено и владелец его находится в полной уверенности, что в любом случае при перебое в электропитании он успеет корректно завершить работу, а может быть и сделать бэкап на флешку. Время идет, бесперебойник периодически дает о себе знать — как заправский сторожевой пес он подает голос при малейших отклонениях в параметрах электросети. Хозяин спокоен и все хорошо. Но в один из дней перебой таки случается и в этот раз ИБП не просто подает голос и сразу переключается с батареи на сеть, в этот раз свет выключили на долго. Мы спокойно копируем файлы (ведь в запасе у нас минут 15, не меньше) и тут бесперебойник начинает пищать совсем часто и все выключается. Как так? Ведь бесперебойник же должен был нас защитить от подобных ситуаций, а он только вселял нам ложную уверенность в нашей безопасности! Почему так произошло?

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

                        Читать дальше →
                      • Про Intel vPro или как удалённо зайти в чужой BIOS



                          Когда-то давно, когда я ещё не был программистом, но с компьютерами уже дружил, технологии по типу RAdmin для меня были подобны чуду. Можно было подключиться к удалённому компьютеру, прямо как в самом крутом фильме про хакеров, открыть блокнот и написать там угрожающую надпись. Правда, пользоваться мне этим было негде.

                          Потом в мою жизнь пришёл ssh: осознание, что управляешь сервером за океаном сначала восхищало, а теперь уже стало обыденностью. Пока не наберешь случайно halt, ага. А потом начинаешь открывать админку хостера и пытаться зайти в консоль управления сервером, чтобы его запустить. А она почему-то сегодня тупит. Тогда пишешь в саппорт и нерничаешь. Не очень нравится. Но это мои личные программерские страхи.

                          Как-то на старой работе после смены администратора вновь пришедший решил навести порядок в компьютерном парке и для этого подходил к компьютеру, выгонял работника, скачивал Everest, запускал диагностику и сохранял результат в файл. Так, обойдя всего лишь ~60 рабочих мест на трёх этажах, он узнал, какое железо есть в его распоряжении. Неудобно.

                          И тут на сцену выходит Intel vPro.

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

                          Читать дальше →
                        • Создатель BitTorrent собирается уничтожить телевидение в его нынешнем виде

                            Брэм Коэн анонсировал новую версию протокола BitTorrent. Она получила название BitTorrent Live и предназначена для организации видеотрансляций через пиринговые сети. На разработку нового протокола у программиста ушло три года, зато теперь даже при многомиллионной аудитории задержка передачи видео не превышает пяти секунд.

                            BitTorrent Live позволит снизить нагрузку на распространителя файла до 99%. Таким образом, передача видео будет стоить дешевле, чем по спутнику или с помощью CDN, и для него не потребуется дорогостоящая инфраструктура.

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

                            Сейчас Коэн ищет партнеров, которые дадут согласие на распространение своего контента по предложенной им модели. Netflix и Hulu, которые планируют сократить затраты на инфраструктуру, уже заинтересовались изобретением. Кстати, BitTorrent Live смогут использовать и некоммерческие вещатели — новый протокол является открытым и свободным.

                            BitTorrent Live уже функционирует в тестовом режиме. Посмотреть видео по новому протоколу можно через сайт live.bittorrent.com, предварительно скачав специальный клиент.
                            Читать дальше →
                          • Простая автоматизация: программируемые реле Easy

                            Здравствуйте, уважаемое сообщество!
                            На Хабре уже много сказано слов о различных устройствах автоматизации, начиная от простых Arduino, заканчивая промышленными многопроцессорными системами. Я же хочу закрасить очередное белое пятно на карте хабро-автоматики статьей о промежуточных устройствах — программируемых реле, на примере микропроцессорных устройств Easy производства корпорации Eaton (Moeller).
                            Прошло уже достаточно много времени с моего первого знакомства с данным типом устройств, но по-прежнему, эти «электронные малыши» остаются незаменимыми помощниками для реализации широкого спектра инженерных и бытовых задач.


                            Читать дальше →
                          • Сравнение потребления памяти у разных структур хранения данных

                            • Перевод
                            Различные структуры в Java потребляют разное количество памяти. Поэтому для нас очень важен выбор наиболее эффективного метода хранения данных.

                            Какая будет разница по потреблению памяти между конструкциями `new int[1024]` и `new Integer[1024]`?

                            int[] ints = new int[1024];
                            for (int i = 0; i < ints.length; i++) ints[i] = i;

                            Integer[] ints = new Integer[1024];
                            for (int i = 0; i < ints.length; i++) ints[i] = i;

                            Узнать
                          • Universal Binary JSON — ещё один бинарный JSON

                            Статья является вольным переводом информации предоставленной на официальном сайте.

                            Введение


                            JSON является широко распространённым и популярным форматом для обмена данными. Его изящность, простота обработки и относительно богатая система типов стали естественным выбором для многих разработчиков, которым необходимо быстро и просто сохранять или случайным образом передавать данные между системами.

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

                            Для достижения лучших результатов в таких случаях становится полезным использование двоичного формата JSON.
                            Читать дальше →