Архив за 09 июня 2012 - 2

Это скорее пост-вопрос к специалистам, нежели просто кусок полезной информации. Приглашаю к дискуссии.
Недавно я имел счастье послать своё резюме в Связной на позицию .NET разработчика. В ответ меня попросили сделать тестовое задание на знание многопоточности. Я не могу назвать себя экспертом в этой области, но, тем не менее, прекрасно понял, как мне показалось, как реализовать следующие требования:

Требуется реализация класса на языке C#, аналогичного FixedThreadPool в Java, со следующими требованиями:

  • В конструктор этого класса должно передаваться количество потоков, которые будут выполнять задачи.
  • Интерфейс класса должен предоставлять методы: boolean execute(Task task, Priority priority) и void stop()
  • Интерфейс Task должен содержать один метод: void execute(), который вызывается в произвольном потоке.
  • Тип Priority — это перечисление из трёх приоритетов: HIGH, NORMAL, LOW. При этом во время выбора следующего задания из очереди действуют такие правила: на три задачи с приоритетом HIGH выполняется одна задача с приоритетом NORMAL, задачи с приоритетом LOW не выполняются, пока в очереди есть хоть одна задача с другим приоритетом.
  • До вызова метода stop() задачи ставятся в очередь на выполнение и метод boolean execute(Task task, Priority priority) сразу же возвращает true, не дожидаясь завершения выполнения задачи; а после вызова stop() новые задачи не добавляются в очередь на выполнение, и метод boolean execute(Task task, Priority priority) сразу же возвращает false.
  • Метод stop() ожидает завершения всех текущих задач (не очищая очередь).

Поскольку в задании не было сказано какими примитивами я должен пользоваться, должен ли сделать всё на простейших Thread или же использовать ThreadPool, TPL и т.п., я решил, что задание предполагает использование самых базовых элементов: Thread, ManualResetEvents и т.п. Написал за несколько часов, отослал. Сегодня позвонил и получил ответ через кадровика, который звучал примерно так: «это даже не близко к том, что надо». Это меня озадачило, ибо код работает и протестирован, явных огрехов, на мой взгляд нету.

Итак, на ваш суд представляю мою реализацию FixedThreadPool и сопутствующих классов. Сразу предупреждаю, что, по их мнению реализация ошибочна, и, соответственно, брать мою идею за основу не стоит. Некоторые коментарии по коду:

  • я решил инкапсулировать потоки задач в самом классе задачи,
  • два параметра с типом ILog нужны только для тестовых целей, к основной функциональности они, понятное дело, отношения не имеют,
  • весь проект, включая тестовое приложение можно загрузкить по ссылке (27 килобайт): тестовый проект на ifolder

Читать полностью »

Программист Ник Берри, создатель ресурса DataGenetics, который занимается сбором и анализом информации в Интернете, опубликовал ряд интересных фактов о доменных именах. Некоторые из них просто любопытны, некоторые, возможно, будут интересными для владельцев сайтов и доменных инвесторов.Читать полностью »

Довольно часто возникает ситуация, когда надо быстренько запустить пару запросов к MySQL базе у клиента на сервере. При этом есть только FTP и параметры соединения с СУБД. Самый простой выход — загрузить туда phpMyAdmin, ну а дальше дело техники. Обычно все это проиcходит на фоне того, что у клиента уже установлена какая-то CMS — WordPress, Drupal, Joomla…

Я люблю простые, красивые и удобные вещи. Я тепло отношусь к phpMyAdmin но в 90% моих Use Cases мне он не нужен. Нужно что-то простое. В идеале такое, что можно просто залить на сервер и открыть в браузере — не настраивая.

Пара вечеров и пакет готов.
Читать полностью »

Крупнейшим контрактным производителем полупроводниковых изделий в мире является компания Taiwan Semiconductor Manufacturing Company (TSMC). На втором месте находится United Microelectronics (UMC). Эти компании находятся в локомотиве отрасли довольно давно, и признаков изменения ситуации до недавнего времени заметно не было. Однако компания Globalfoundries намерена уже в этом году, сместив UMC, занять второе место и в перспективе стать лидером.

Читать полностью »

В настоящее время модели с Android 2.x составляют примерно 90% всех смартфонов с этой операционной системой, утверждает источник. Однако ситуация скоро начнет меняться, поскольку ожидается выход массовых моделей начального и среднего уровня с Android 4.0. Дело в том, что компании Qualcomm и MediaTek начали предлагать производителям смартфонов однокристальные системы, поддерживающие Android 4.0. По данным отраслевых источников, увеличение доли смартфонов начального и среднего уровня с Android 4.0 ожидается уже во втором полугодии текущего года.

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

Computex 2012 — день четвертый. Неформальный

Читать полностью »

Немецкая компания SCHOTT объявила о начала поставок защитного алюмо-силикатного стекла Xensation Cover, которое, как утверждается, отличается очень высокой прочностью и устойчивостью к появлению царапин. Эти свойства, по словам производителя, делают Xensation Cover «идеальным для устройств с сенсорными экранами», таких, как смартфоны, планшеты и игровые консоли.

Читать полностью »

Хочу представить вашему вниманию библиотеку для удобной работы с Local и Session Storage. Она появилась, как побочный продукт работы над проектом и содержит несколько довольно удобных функций. Библиотека поддерживает все современные браузеры, а именно:

  • Internet Explorer 8+
  • Mozilla Firefox 3.5+
  • Google Chrome 4+
  • Safari 4+
  • Opera 10.5+

Помимо традиционных — set/get/inc/dec, есть набор удобных «вкусностей»:

  • inc работает со строками
  • extend для объектов
  • много методов для работы с массивами
    • обычные append/prepend/takeLast/takeFirst/getLast/getFirst
    • с проверкой уникальности — .appendUnique/.prependUnique
    • во все append/prepend методы можно передавать лимит — удобно для организации MRU списков
  • calls chaining — я от него в восторге :)

Если заинтересовал — прошу под кат за примерами. Мне кажется они достаточно хорошо показывают возможности библиотеки.

Читать полностью »

В JavaFX 2 меня порадовала возможность включить отображение линий сетки в GridPane. При использовании Swing и GridBagLayout приходилось искать, в какую ячейку попал элемент, что так криво отображается. Новая возможна должна помочь решить эту проблему.
Но радость моя длилась не долго. Линии сетки мало о чём говорят. Они пересекают элементы, которые располагаются не на одной ячейке. Промежутки между ячейками не отмечены. Линии сетки серые, и цвет поменять нельзя.
Я решил нарисовать свои линии, так как это пригодится не для одной программы.

Читать полностью »

Основная сфера моей работы на протяжении 16 лет – автоматизация деятельности предприятий. Поскольку начиналось все еще в 1996 году, в небольшом городе и в отсутствии литературы по программированию персональных компьютеров – то все делалось методом проб и ошибок или «методом научного тыка». Времена поменялись, появилось множество методик (сам ими не пользуюсь) по автоматизации, внедрению и поддержке ПО для автоматизации деятельности.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js