32c3 — Интернет-цензура, возможное будущее рунета

Вчера закончилась крупнейшая конференция в своем роде — 32с3 — Chaos Communication Congress.
тема конфы- Gated communities. Лекций четыре потока, нонстоп с 11 утра до 12 ночи + 189 побочных мероприятий — различные воркшопы и прочая и прочая. Если вдруг однажды соберетесь — обязательно купите билеты заранее — они быстро заканчиваются онлайн, а оффлайн нужно стоять в очереди два часа КАЖДЫЙ день, тк продаются только однодневные проходки. Очередь БОЛЬШАЯ и на всех билетов может не хватить 🙂

image


Посетители, как и докладчики — всяческие айтишники с уклоном в компьютерную безопасность, опенсорс, diy и тд. Всюду развешаны предупреждения о том, что нужно спрашивать людей прежде чем фотографировать — поэтому людей на фотках немного — похоже на 3000 mr.robot одновременно.
image

Посмотреть в подробностях можно тут: https://www.instagram.com/explore/tags/32c3/ (1700+ фоток)

и тут

Самые интересные видео с докладов про интернет-цензуру (все на простом английском).

1.РедСтар — операционная система из КНДР.


tl;dr — корейцы взяли линукс (fedora), прикрутили к нему интерфейс такой же как у родной MacOSX, включили всякие настройки для обеспечения безопасности, а так же добавили туда:

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

Почему это важно? — потому что это то, чего хотят наши “интернет” — деятели и новоявленные советники президента из фрии. см — их обобщенную программу.

2. История про Великий Китайский Файрвол


tl;dr — китайский файрволл не просто разнообразно блокирует сайты на уровне dns/ip (как у нас сейчас), но и использует технику под названием connection probing — проверяет куда именно идет ваш зашифрованный трафик подключаясь к зарубежному сервису вместо вас и если обнаруживает там tor/vpn — блокирует соединение. Почему важно? — это следующий шаг блокировок к которым идет рунет, надо заранее знать как с этим можно бороться.

3. State of the onion — рассказ про текущие дела Tor, их фандрайзинг и так далее.

Полная версия тут: www.youtube.com/watch?v=EXEUE__ap08

Краткое содержание: The internet is not virtual reality it’s actual reality!

Почему это важно? потому что tor растет в РФ (2 место в мире сейчас по количеству пользователей) и это один из последних относительно надежных способов обхода цензуры.

4. Текущее состояние дел и технологии интернет-цензуры (by tor)


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

5. Идентификация личности программистов по исходным кодам


tl;dr — с очень высокой вероятностью можно автоматически идентифицировать автора программы при наличии исходных кодов. Чем выше уровень программиста (чем лучше он пишет код) — тем точнее его можно идентифицировать. Текущие технологии позволяют с достаточной долей вероятности идентифицировать авторов скомпилированных программ тоже, обфускация сильно помогает, но не спасает окончательно. Почему это важно для нас? — эти же технологии отлично работают с автоматическим определением авторства текстов и комментариев (привет, блоггерам), есть прототип по (англоязычное) помогающее анонимизировать тексты (затруднить автоматическое определение вашего авторства) — см anonymouth

6. Архитектура уличного паноптикона


Обзор существующих уже используемых технологий оффлайновой слежки за гражданами — видеокамеры, арендуемые у любых жителей/организаций видеокамеры, системы анализа номерных знаков проезжающих автомобилей, различные системы мониторинга сотовой связи/идентификации мобильных телефонов и тд и тп. Почему это важно? — это пример того, что уже сейчас внедрено в некоторых городах США, то, что будет внедряться на более массовом уровне в РФ в ближайшие годы.

7. Мобильная цензура в Иране


В двух словах — она есть, из-за этого интернет конкретно тормозит, юзеры предпочитают использовать интернет с мобильных- тк у них видимо нет десктопов:) Телеграм очень популярен, но есть какие-то странные слухи вокруг него — тк местные власти утверждают, что они якобы получают от телеграма какие-то данные, Дуров опровергает. Местные власти пытаются создавать локальные версии зарубежных сервисов (в тч мессенджеров), что бы перевести туда своих граждан и получить доступ к большему объему информации о пользователях.

8. Состоянии цензуры в Индии


Довольно много общих слов, мало конкретики, главный вывод — в стане провайдеров разброд и шатание — одни блокируют, другие не блокируют, никто не раскрывает объемы цензуры/блокировок и причины цензуры/блокировок.

8. Обзор ситуации во Франции


FYI, для фанатов — про резкое закручивание законодательных гаек под предлогом борьбы с терроризмом и про борьбу с этим различных французских НКО (можно смотреть на x1,5 скорости) в двух словах — все плохо, но пока ни одного сайта не заблокировали.

9. Обзор ситуации в Эквадоре


FYI, для фанатов. tl;dr — Правительство Эквадора предоставило убежище Ассанжу, но при этом ни разу не способствует свободе слова у себя в стране — прессует журналистов, заставляют переделывать карикатуры и все такое. На 24 минуте подробности анализа секретными службами Эквадора рисков для общества — очень похоже на какую-то другую страну. Печаль.

10. Обзор onion cервисов


Дарквеба не существует, там обычные полезные хорошие сайтики. Немного статистики по трафику и юзерам и много примеров сайтов, тулз и сервисов в .onion (включая FB).

———-такие дела — И еще немного позитива из Боснии:

ссылка на оригинал статьи http://geektimes.ru/post/268596/

Objective-C вопросы на уровень middle/senior

Что должен знать objc разработчик на уровень middle/senior?
К сожалению, четкой черты на вертикальное развитие нет. Парадокс, но чтобы знать что изучить, нужно знать что ты не знаешь.
Я постарался вспомнить самые интересные вопросы, которые мне задавали самому на различных собеседованиях, а так же расширил их множеством вопросов(тем же уровнем) от себя.
Здесь нет общих вопросов вроде: IoC, design patterns, S.O.L.I.D. и т.п.

ВНИМАНИЕ!!!
Помимо вертикального развития немаловажно и горизонтальное

ВНИМАНИЕ!!! (2)
Не пишите в комментарии ответы на вопросы, это дает возможность людям самостоятельно разобраться.
Однако, если у вас имеются интересные вопросы по теме, я с радостью добавлю их в список.

Конечно, это не заменит живого общения, однако позволит неплохо подготовиться к собеседованиям.

Начинаем


что такое void *?
а что означает просто void?

в чем разница между void * и id?

что такое id?
как определен id?
можно ли создать структуру и привести к id?

id vs instancetype

что значит root класс?
можно ли создать свой root класс?
какие есть еще root классы кроме NSObject и NSProxy?

можно ли использовать NSObject вместо NSProxy?
если ответ «да», то зачем тогда нужен NSProxy?

как происходит выравнивание указателей на объекты в objc?
с чем это связано?
какие оптимизации с этим связаны при хранении данных?
почему нельзя делать свою реализацию?

что такое bridge и зачем это нужно?

все эти методы допустимы? если нет то какие и почему?

- (instancetype)initMyObj {     self = nil;     return self; }  - (instancetype)initmyObj {     self = nil;     return self; }  - (instancetype)myObj {     self = nil;     return self; } 

что такое мета-класс?

objc_msgSend, что это за функция?
как это связано с [obj foo]? какие еще есть связанные функции?

что такое dispatch table?

как происходит отправка сообщения?
всегда ли сообщения отправляются с одинаковой скоростью?

что будет если метод не найден в dispatch table?

есть ли в objc приватные методы?
как протестировать метод, не объявленный в публичном интерфейсе

exception отправки сообщения, кто выбрасывает?
что такое NSInvocation. Привести пример использования

что такое swizzling?

можно ли сделать private ivar как property, через категорию?
какие проблемы могут быть?
как в категории сделать свою property?

target-action, передается селектор, как сделать так, чтобы по селектору был вызван не метод, а блок?

что такое селектор?

что такое блок?
какие типы блоков бывают?
от какого класса наследуются?

всегда ли использование self внутри блока означает retain cycle?

почему внутри блока используется неявное const?

как работает __block?

как происходит вызов блока?

внутри блока используется assert, какие проблемы возникают?
как их устранить без выделения в отдельный метод?

что такое assert и когда использовать?

что такое __autoreleasing?

что такое autorelease pool?

что такое run loop?

как связаны NSTimer и run loop?
как запустить таймер на отдельном потоке?
что будет если запустить таймер и держать UIScrollView?
как это исправить?

как связаны run loop и autorelease pool?

почему в этом коде утечка памяти и как устранить?

        NSString *str;         while (YES) {             str = [NSString stringWithFormat:@"hello world"];         } 

какие типы управления памятью есть в objc?

garbage collection vs reference counting?

отличия ARC от MRC?
как работает ARC? магически определяет когда удалять объект?
напишите реализацию сеттера на MRC

чем отличается weak от strong и почему так много runtime функций для этого?

почему weak невозможно использовать на некоторых классах?
на каких именно?
как быть в этом случае?

ARC, как работает dealloc?
когда расставляются release сообщения для ivar?

причина выполнения true ветки? причина выполнения false ветки? от чего зависит результат?

        BOOL b = 1024;         if (b) {             NSLog(@"true");         } else {             NSLog(@"false");         } 

одинаковую ли память занимают эти структуры и почему так?

struct StructA {     int32_t a;     char b;     char c; };  struct StructB {     char b;     int32_t a;     char c; }; 

что такое union?

а сколько памяти занимают эти структура и что это вообще такое?

struct Value1 {     int32_t foo:12;     int32_t foo1:4;     int32_t foo2:6;     int32_t foo3:10; };  struct Value2 {     int32_t foo;     int32_t foo1;     int32_t foo2;     int32_t foo3; }; 

что такое volatile?

что такое inline функции?

в чем отличие потока от процесса?

NSThread vs pthread

сокет, как это связано с вопросами выше?
tcp, udp когда что применять?

гонка потоков, методы синхронизации, защита критической секции, семафор, мьютекс, барьер, что это и зачем нужно?
что такое OSSpinLock?

как передавать данные между NSOperation?
когда операция отправленная в NSOperationQueue начинает выполняться, можно ли отложить выполнение?

как тестировать асинхронные методы?
как написать синхронную обертку для асинхронного метода?

что такое стек вызовов и как это работает?
в чем отличие стека от кучи?
int8_t matrix[2048][2024], допустимо ли?

рекурсивные функции и хвостовая рекурсия, любая ли рекурсия может быть хвостовой?

что происходит со счетчиком ссылок когда объект добавляется в array, dictionary, set?
если нужно другое поведение, что использовать?
можно ли узнать, какой объект сколько раз был добавлен в set? (bag)

как использовать свой класс как ключ?

в чем плюсы использования immutable?
в чем минусы?
зачем нужен атрибут copy для property и какую проблему решает?

почему и как работает KVC?
key-path, хаки для коллекций

зачем нужен NSMapTable, какие отличия от NSHashTable

проблемы при работе с KVO и как это все работает

frame, bounds, center, как все это между собой связано?
как изменятся свойства, если применить поворот на 45º?
как передвинуть все subviews на 3 pt вверх и влево?

отличие view от layer?

responder принцип работы
как отправить сообщение по responder chain?

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

зачем нужен NSCache? В чем от реализации кэша на NSDictionary?
поддерживает ли NSURLConnection протокол HTTP/2?

какая типизация у objc? Сильная/слабая, явная/не явная, статическая/динамическая?
в чем отличие QoS User-interactive и user-initiated?
в чем отличие nil/Nil/NULL/NSNull?
________

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

Статья написана совместно с complexityclass

ссылка на оригинал статьи http://habrahabr.ru/post/273487/

Задача про 2016

Предлагаю порешать в кругу прекрасных дам-программистов традиционную новогоднюю задачу про 2016 год. Надо расставить знаки и скобки, чтобы получилось любое число от 1 до 100.
Например

20*(-1+6)=100

Или

2+0-1^6=1

Факториалы и степени милостиво допускаются.

ссылка на оригинал статьи http://habrahabr.ru/post/274403/

Конечный автомат и его реализация на Javascript

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

Хорошее и простое определение конечного автомата можно дать так:
Конечный автомат — это компьютерная программа, которая состоит из:

  • Событий, на которые реагирует программа;
  • Состояний, в которых программа пребывает между событиями;
  • Переходов между состояниями при реагировании на события;
  • Действий, выполняемых в процессе переходов;
  • Переменных, которые содержат значения, необходимые для выполнения действий между событиями.

Конечные автоматы обычно представляют в двух видах:

  1. Ориентированного графа, где точки это определенные состояния, а стрелки — направления переходов.
  2. Двумерной таблицей, столбцы — это события, а строки — состояния, а ячейки содержат действия и переходы.

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

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

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

Machina.JS

Machina.js — является одной из реализаций конечного автомата. Подробную документацию можно найти на сайте проекта.

Что из себя представляет machina.js:

  • Работает в браузере и на nodejs
  • поддерживает amd-модули
  • зависит от undersore или lodash
  • написано Jim Cowart, автора postal.js и monologue.js

Чтобы лучше понять, что такое конечный автомат, рассмотрим пример реализации автомата на machina.js (взял код с сайта проекта).

Много кода

var vehicleSignal = new machina.Fsm( {      // the initialize method is called right after the FSM     // instance is constructed, giving you a place for any     // setup behavior, etc. It receives the same arguments     // (options) as the constructor function.     initialize: function( options ) {         // your setup code goes here...     },      namespace: "vehicle-signal",      // `initialState` tells machina what state to start the FSM in.     // The default value is "uninitialized". Not providing     // this value will throw an exception in v1.0+     initialState: "uninitialized",      // The states object's top level properties are the     // states in which the FSM can exist. Each state object     // contains input handlers for the different inputs     // handled while in that state.     states: {         uninitialized: {             // Input handlers are usually functions. They can             // take arguments, too (even though this one doesn't)             // The "*" handler is special (more on that in a bit)             "*": function() {                 this.deferUntilTransition();                 // the `transition` method takes a target state (as a string)                 // and transitions to it. You should NEVER directly assign the                 // state property on an FSM. Also - while it's certainly OK to                 // call `transition` externally, you usually end up with the                 // cleanest approach if you endeavor to transition *internally*                 // and just pass input to the FSM.                 this.transition( "green" );             }         },         green: {             // _onEnter is a special handler that is invoked             // immediately as the FSM transitions into the new state             _onEnter: function() {                 this.timer = setTimeout( function() {                     this.handle( "timeout" );                 }.bind( this ), 30000 );                 this.emit( "vehicles", { status: GREEN } );             },             // If all you need to do is transition to a new state             // inside an input handler, you can provide the string             // name of the state in place of the input handler function.             timeout: "green-interruptible",             pedestrianWaiting: function() {                 this.deferUntilTransition( "green-interruptible" );             },             // _onExit is a special handler that is invoked just before             // the FSM leaves the current state and transitions to another             _onExit: function() {                 clearTimeout( this.timer );             }         },         "green-interruptible": {             pedestrianWaiting: "yellow"         },         yellow: {             _onEnter: function() {                 this.timer = setTimeout( function() {                     this.handle( "timeout" );                 }.bind( this ), 5000 );                 // machina FSMs are event emitters. Here we're                 // emitting a custom event and data, etc.                 this.emit( "vehicles", { status: YELLOW } );             },             timeout: "red",             _onExit: function() {                 clearTimeout( this.timer );             }         },         red: {             _onEnter: function() {                 this.timer = setTimeout( function() {                     this.handle( "timeout" );                 }.bind( this ), 1000 );                 this.emit( "vehicles", { status: RED } );             },             _reset: "green",             _onExit: function() {                 clearTimeout(this.timer);             }         }     }      // While you can call the FSM's `handle` method externally, it doesn't     // make for a terribly expressive API. As a general rule, you wrap calls     // to `handle` with more semantically meaningful method calls like these:     reset: function() {         this.handle( "_reset" );     },      pedestrianWaiting: function() {         this.handle( "pedestrianWaiting" );     } } );  // Now, to use it: // This call causes the FSM to transition from uninitialized -> green // & queues up pedestrianWaiting input, which replays after the timeout // causes a transition to green-interruptible....which immediately // transitions to yellow since we have a pedestrian waiting. After the // next timeout, we end up in "red". vehicleSignal.pedestrianWaiting(); // Once the FSM is in the "red" state, we can reset it to "green" by calling: vehicleSignal.reset(); 

Как видно по комментариям в коде, new machina.Fsm — создает экземпляр конечного автомата, в качестве аргумента принимает конфигурацию автомата со всеми его состояниями.

В текущем примере задано 5 состояний автомата, причем автомат может находиться только в одном из этих состояний uninitialized, green, green-interruptible, yellow или red.

Состояние представляет из себя объект, который содержит обработчики текущего состояния.

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

Подробнее можно почитать на сайте проекта, а также посмотреть презентацию и видео.

Можно посмотреть на примеры других реализаций конечного автомата:

P.S.
По мотивом раскритикованной статьи.

ссылка на оригинал статьи http://habrahabr.ru/post/274401/

Вопросы по мониторам

Привет, GT! Сегодня уже выходил один из моих постов, который касался систем охлаждения, завершить же 2015-й год я бы хотел, ответив на несколько интересных вопросов, которые мне прислали на почту. Все они касаются мониторов и/или производительности видеосистем, так что если вас интересуют подобные темы — милости прошу под кат.

Влияет ли «герцовка» монитора на цветопередачу и характеристики?

Думаю, у 99.9% читателей GT обычные мониторы, на которых выставлена частота обновления в 59 или 60 Гц. Снижать её ради тестов — тот ещё мазохизм, поэтому я взял проверенный в одном из постов 144 Гц монитор AOC G2460pg, спектрофотометр X-rite Colormunki Photo, универсальное приложение HCFR и провёл по пять измерений на 60, 85, 100, 120 и 144 Гц развёртке. После этого выбрал лучший результат в каждой группе и склеил соотвествующие гифки, которые вы можете увидеть ниже. Заранее хочу сказать, что я понятия не имею, как так вышло, что у 60 Гц варианта «битая» цветопередача.

На практике такого провала не было. Я уже запросил дополнительную информацию и у ребят из Графитека, которые предоставили нам спектрофотометр, и у представителей AOC, если мне ответят что-нибудь интересное — обязательно расскажу.

Так что, как видите, цветопередача от смены герцовки изменяется незначительно, а вот гамма-кривая, (зависящая от характеристики работы подсветки) и цветовой баланс ощутимо «играют» на графиках. Впрочем, в динамичных играх этого не будет заметно, а 144 Гц применяются именно в них.

Существуют доступные 4k2k мониторы и чего вообще стоит ждать от подобной покупки?

Доступные 4k2k мониторы, само собой, есть. Открываем Яндекс.Маркет, выбираем соответствующие настройки, сортируем по цене, и видим гору моделек. Так, всё замечательно, только я бы убрал из выборки 24 дюймовые модели. Вот уж где бюджетные 4k точно не нужны, так это на небольших диагоналях. Оставляем модели от 27 дюймов:

Самые недорогие варианты — у Samsung’а. Samsung U28E590D по праву считается «входным билетом» в 4k. Достаточно быстр для игр, после калибровки — пригоден для работы с домашними фото и видео. Стоит от 28 до 30 тысяч рублей в зависимости от добросовестности поставщика на таможне.

Если монитор берётся не на последние деньги, я бы рекомендовал потратить на несколько тысяч больше, но обратить внимание на Philips 288P6LJEB. У него отличная цветопередача для TN-матрицы (что подтверждается и различными обзорами, и моими собственными измерениями), просто потрясающая равномерность подсветки и цветовой температуры, ну и, наконец, он превосходно собран: надёжная и удобная подставка, продуманная конструкция и приятные материалы делают своё.

У данного Philips’а есть одноклассники на той же самой матрице от Innolux: Asus, Dell, Planar и даже Samsung. Из всех них лучше всего для игр в высоком разрешении подходит Asus, а остальные модели можно вообще не рассматривать: цветопередача, цена, равномерность подсветки делает их неконкурентоспособными с этими двумя моделями.

Что касается впечатлений от 4k2k (опять же, на базе всё того же Philips’а, который был у меня больше полутора месяцев)… Это дорога с односторонним движением. Работа с фотографиями и видео никогда не была такой простой и удобной. Все детали, текстуры материалов, фактура и шумы видны без зума. Вообще при ретуши изображений и портретов пользоваться приближением приходится намного меньше: вы видите и детали картинки, и общий вид сразу. У меня есть хороший товарищ, который пол года назад себе лазером зрение поправил. Так вот он сказал, что эффект примерно тот же: раньше тоже было видно, и как бы было понятно, на что смотришь, и очки кое-как помогали, но сейчас — совсем другое дело.

Сразу после 4к2к работать за 2560х1440 монитором просто некомфортно. Кажется, что картинка заблюрена. Деталей изображения просто нет. Всякие фактуры ткани, кожи, волос, всё это превращается в какую-то непонятную кашу. Мой вердикт? Мастхэв, если у вас всё в порядке со зрением и железо / кошелёк позволяет купить 4k2k. Благо, входной билет в мир высокого разрешения стоит от 30-35 тысяч рублей.

Чем подключать 4k2k мониторы?

Для нормальной работы 4k2k @ 60 Hz вам потребуется пропускная способность порта HDMI 2.0 или DisplayPort 1.2. HDMI 1.4A позволяет подключить 4k2k-монитор к дисплею, но только на 30 Гц «из коробки», или на сколько получится при помощи напильника и такой-то матери. Создаётся кастомный профиль, и ручным подбором находится предел пропускной способности конкретно вашего кабеля / порта на видеокарте. Некоторым удаётся выжать 45-47 Гц.

В видеокартах DisplayPort 1.2 начал появляться с Radeon HD6000 и Nvidia 600-й серии, то есть достаточно давно. В ноутбуках — примерно с того же времени. Thunderbolt, он же Lightning — суть тот же DP 1.2 с плюшками, тоже подойдёт.

Какую диагональ для 4k2k выбрать?

Я бы рассматривал варианты от 27-28 дюймов до 30-32. Последние, правда, стоят негуманных денег. Разница в ощущении меду 27 дюймами и 30-32 примерно такая же, как и между 27 и 22-23 дюймовыми «классическими» панелями. Первый час — господи, какой он огромный! Второй час — блин, как я раньше жил! Как же всё удобно и круто! Спустя две недели увидел старый 27" — твою мать, что это за абмразура? Как я за этим работал?!

Диагональ очень быстро «усыхает». Помню, в какой осадок я выпал, впервые увидев HTC HD2 с 4,3" дисплеем в 2011 году. Думал, что им можно убивать и закапывать трупы без проблем. Потом меня шокировал первый Samsung Galaxy Note. А сейчас 5.5 дюймов — самый ходовой размер, а на HD2 без улыбки и не взглянешь.

При этом выбор диагонали зависит не только от толщины кошелька, но и от расстояния от глаз до монитора. На эту тему полно статей, в том числе и на GT встречались. У меня стол позволяет отодвинуть рабочую поверхность на ~ 75-80 сантиметров: и глаза не устают, и размеры элементов на мониторе комфортные.

Что используешь сам?

Сейчас мой основной монитор — Philips BDM3270QP на базе 32-дюймовой A-MVA матрицы от AU Optronics. Разрешение достаточно скромное, 2560х1440, но хитрая матрица позволяет работать монитору как в честном 8-битном режиме, так и в 10-битном с чрезкадровым чередованием FRC.

Внешне это полный клон 4k2k модели Philips 288P6LJEB, отличия только в физических размерах. Меню, настройки, подставка, эргономика — совпадают полностью.

Производитель заявляет до 300 кд/м2 яркости, на практике же мой вариант выдаёт 356 кд/м2. Нижний порог — 55 кд/м2, что также неплохо. Он неплохо откалиброван из коробки (что, в принципе, позволяет «купить и пользоваться», не парясь калибровкой цветов), цветовой охват ~97% sRGB.

Учитывая тот факт, что двух одинаковых мониторов не бывает, да и настройки имеют привычку несколько «уплывать» в процессе эксплуатации, подобные результаты не могут не радовать. Если кому интересно читать полный разбор цветового анализа — можно посмотреть его здесь. Я же могу лишь подтвердить все эти слова и сказать, что после отстройки цветов удалось добиться 99% покрытия sRGB, равномерной цветовой температуры и получить неплохое приближение гамма-кривой к эталону.

Характеристики из коробки

Почему сижу именно на нём? Потому что на 32-дюймовые 4k2k не заработал. Пока что.

The End

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

ссылка на оригинал статьи http://geektimes.ru/post/268594/