Новая ОС от Microsoft с приоритетом на многоядерность

Новость можно прочитать здесь.

Цитата: "... вместо того, чтобы полностью изолировать программу от оборудования с помощью драйвера, в Barrelfish есть своего рода база данных, в которой хранится низкоуровневая информация об оборудовании. Ядро системы однопоточно и непрерывно. Планирование происходит одновременно с передачей сообщений, а получение сообщения просто активирует поток ожидания. В ОС также используются концепты микроядер, согласно которой драйвера выполняются в защищенной среде, например в L4."

- Похоже, что многопоточность реализуется по "правилу одного потока", которое следует применять при использовании Swing.

В Swing есть очередь выполнения, и есть диспетчер событий этой очереди. К этому диспетчеру событий мы можем обратиться из любого потока. Диспетчер событий просто поставит в очередь то действие, которое вы хотите чтобы оно выполнилось. Никаких обращений к компонентам Swing (хотя есть исключения, в частности некоторые read-свойства можно использовать) - только через этот диспетчер.

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

Пример кода:

/* Без блокировки.
 * Если нужно с блокировкой, т.е. дождаться выполнения,
 * то используем метод EventQueue.invokeAndWait(...)
 */
EventQueue.invokeLater
(
    new Runnable()
    {
        public void run()
        {
            label.setText(percentage+"% выполнено");
        }
    }
);


Новая ОС, в дополнении к этому, по видимому применяет аналог транзакционной памяти, которую вводят в .NET 4.

В заключении скажу, что в J2SE 6 - добавили разработанный одним из программистов класс SwingWorker, который капельку упрощает пример, описанный выше (инкапсулирование + паттерн Template Method - проще говоря вам предоставляется метод для реализации задачи, и механизм для запуска всего).

Ну а все остальное вы найдете, как всегда, в Интернете прочитать более подробно можно в постоянно упоминаемой мною книге Хорстманна по J2SE 6 (в данном случае - в 1-ом томе ее).
Кому любопытно и кто кликнет по ссылке выше о книге - там уже появился в том числе и мой комментарий: :)

"Книга, конечно, хорошая, но объем 8-ого издания стал меньше на процентов 10%, чем в 7-ом издании (сравниваю по двум томам).
Опечаток больно много. Но, как написали ниже, все же не критично (но переводчику и корректору с большими ... ой, ушами - уши бы я открутил...)
"

Массовые недовольства среди IT-специалистов

 Летом неоднократно читал в Интернете, что "в последнее время играть не во что". - Производство игр превратилось в тупой процесс заколачивания денег, о вышедших играх забывали еще до того, как они выходили, достаточно было прочитать анонс свежевыпеченного маркетоидного быдлоделия.

 Осень выявила сходную ситуацию и в целом по IT, цитата - "всё меньше и меньше остается вакансий, на которых творческий и энергичный человек не ощущал бы себя винтиком в огромном механизме, а реально мог найти приложение для своих творческих усилий. ..." - из очень любопытной статьи "Синдром хтонической усталости".

 Вообще - что-то можно списать на осень (погода, и все такое), что-то можно списать на кризис - консолидация рынка, о которой упоминается в данной статье. Можно упомянуть о проекте Natal, который скоро будет доступен для приставки Xbox 360 и который через годик будет для PC и что большинство (если не все) крупнейших производителей игр - уже начали встраивать эту технологию в свои игры.  Можно упомянуть про дополняемую реальность. Можно сказать, что - всегда так было, что что-то отмирает, а появляется новое (один из евангелистов по Flash - перешел в евангелисты по Silverlight).

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

Поэтому... Будем надеяться на лучшее...

Ведущий специалист по АСР (автоматизированным системам расчёта)
Вакансия компании: Сумма Телеком
Создана: 17.09.2009
Регион: Москва
Требуемый опыт работы: Более 3 лет
Предполагаемый уровень месячного дохода: от 2 500  до 3 500  USD

Основные обязанности:

    * Техническое сопровождение существующей биллинговой системы.
    * Доработка программных модулей.
    * Внесение изменений в существующую информационную систему.
    * Внедрение новых услуг.
    * Написание и согласование ТЗ.
    * Подготовка отчетов из биллинговой системы.
    * Сопровождение процесса подключения клиента от поступления заявки до выставления счетов.
    * Координация работы между отделом продаж, техническими и административными службами.
    * Взаимодействие с филиалами, сопровождение и консультации.

Требования к кандидатам:

    * Высшее образование в области информационных технологий.
    * Опыт работы в телекоммуникациях (мобильные операторы, интернет-провайдеры, фиксированные операторы, системная интеграция).
    * Уверенное понимание ресурсной модели биллинга.
    * Знание других биллинговых систем является плюсом.
    * Понимание принципов бухучета
    * Уверенное знание unix подобных систем.
    * Навык работы с интеграционной шиной Jboss
    * Хорошее знанание Java, JEE
    * Хорошее знание PL/SQL.
    * Хорошее знание php.
    * Навыки в администрировании Oracle (Опыт работы Oracle DBA, знание архитектуры СУБД Oracle, мониторинг и оптимизация производительности БД).
    * Понимание ключевых бизнес-процессов в телекоммуникационных компаниях, включая биллинг, платежи, интерконнект, роуминг и их влияние на финансовую отчетность.
    * Свободное ориентирование в eTom и NGOSS.
    * Практический опыт разработки архитектурного дизайна информационных систем.
    * Практический опыт работы с действующей системой, оперирующей большими объёмами данных
    * Умение работать в команде.
    * Хороший английский, в т.ч. разговорный.

Ссылка: http://hh.ru/vacancy.do?vacancyId=2286425

Юмор белорусских программистов

О!!! Мы тоже как-то о РТС мечтали. Или пошаговой. Есть офигенные идеи. Например, сделать чудеса света - библиотека, телебашня, ледовые дворцы, спутник, и т д...

Ресурсы: крыжачок, сэм, нефть, и тд...

Слегка уже прорабатывали идею

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

Уровень воровства в колхозе, уровень пьянства, взяточничества и тд...

Дарю идею... Кто сделает - озолотиться 100%. Главное - что бы не посадили раньше

IT в России. Мрачные перспективы

Вот уже и Молдавия планирует присоединиться к ЕС (ссылка).

Странно, что никто в ЕС не попирает ее государственность при этом, никто не говорит про "имперские амбиции" ЕС.

Никто странам Прибалтики не предложил присоединиться к ЕС только на условии, фактическом, присоединении их земель к Германии...

А ведь в Европе тоже деньги считают, как и в России. И все предкризисные годы в Европе жизнь только ухудшалась (в Германии, в Италии, массовые и постоянные забастовки во Франции).

Белоруссия в "полуотколовшемся" положении...

Петля медленно и верно сжимается...

Лично я, как белорусский программист, живущий и работающий уже года 4 в Москве - совершенно не хочу российского гражданства. А вот если Белоруссия присоединиться к ЕС - буду БЕЗМЕРНО рад.

Особенно после "молочной войны".

В два счета соберу свои манатки и буду жить в Европе.

А ведь я, именно я, когда-то, в белорусском Интернете - убеждал всех в гнилости белорусской оппозиции, убеждал в правильности подходов Александра Григорьевича... Теперь и сам Александр Григорьевич может "почесать тыковку" и перенять опыт всех своих соседей - будем жить братьями через границу, что ж такого, НАТО теперь к России претензий, фактически, не имеет, чуть ли не друзья уже навек, ну так и...

К слову - во МНОГИХ IT-фирмах Москвы - есть мои братья-белоруссы, которые работают программистами или начальниками среднего звена (а в верхушке, часто - вообще "южане", вы этого не знали? - поверьте мне, я многое повидал тут, сменяя языки программирования). - Думаю, что и они, остальные мои соотечественники - с удовольствием "свалят" назад в Белоруссию, если бы она вошла в ЕС...

Между тем в России, по официальным данным, в ближайшем будущем - будет нехватка 500.000 IT-специалистов.

Это без учета всего вышесказанного.

И без учета всего вышесказанного, по тем же официальным данным в России через 3-4 года - число студентов уменьшится в 2 раза.

Т.е. и тут надежды нет.

UPD 1. Публикация в новостях - "Молдавия выступает за углубление отношений с НАТО".

UPD 2. Публикация в новостях - "Председатель Европарламента: ЕС предоставит Молдавии финпомощь". Цитата - "Кроме того, ЕС начнет переговоры с Молдавией по новому соглашению об ассоциированном членстве."

UPD 3. Публикация в новостях - "В Восточной Европе растет политическая нестабильность".

UPD 4. Публикация в новостях - "Moody's отзывает рейтинги Молдавии".

См. так же - "Минск и Москва. Начало конца".

Тонкости программирования. Неконтролируемые исключения в Java

Вычитал у Хорстманна следующую вещь - в переопределяемом методе подкласса нельзя указывать throws, если у такого же метода суперкласса throws не указан.

Это то понятно. Нюанс вот в чем - если уж так сложилось, то на самом деле - можно. Речь идет о том, что в подклассе можно указать throws RuntimeException (это один из двух видов неконтролируемых исключений, 1-ый вид неконтролируемых исключений - Error).

Пример полностью корректного кода (проверил в Eclipse):

class AnyClass
{
   public static void main(String [] args)
    {
        System.out.println("AnyClass.main()");
       
        AnyClass anyClass= new AnyClass();
        anyClass.testInnerValue();
       
   }
 
   void testInnerValue()
   {
        InnerB ib = new InnerB();
       
        try
        {
            int iv = ib.getInnerValue();
        }
        catch (Exception e)
        {
            System.out.println("Test testInnerValue() is OK.");
        }
   }
  
   class InnerA
   {
        // В методе подкласса исключения throws нет.
        public int getInnerValue()
        {
            return 5;
        }
    }
   
    class InnerB extends InnerA
    {
        /* В переопределяемом методе суперкласса
        исключение throws есть. */
        @Override
        public int getInnerValue() throws RuntimeException
        {
            throw new RuntimeException("bla-bla-bla");
        }
    }

}

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

В данном же случае... Про то генеральная линия партии предельно четко в книге не обозначена, но из текста подразумевается, что "в крайнем случае, уж, вот так". И в самом деле - попробуйте применить полиморфизм к ссылочной переменной такого суперкласса и с неожидаемым, вдруг, исключением, если инстанцирован такой вот подкласс с хаками...

Электронное правительство 3. Тектонические сдвиги

В Госдуму внесен законопроект о введении электронного документооборота в бухгалтерском учете (ссылка) .

Несомненно, принятие таких законопроектов - позволит не только упростить нашу жизнь в будущем, но и... подсадить еще больше общество на IT-иглу (что не может не радовать лично меня, как IT-специалиста).

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

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