Она не слепая, скорее, наоборот, перенасыщенная энергией... и от этого там процессы распространения радиоволн еще не такие, как от начала дальнего поля и до бесконечности. Это как шланг для полива огорода: у самого распылителя происходит черти-что, а дальше - ровный поток капелек, движущихся равноускоренно, как в школьном учебнике физики. Ближнее поле - это как раз та зона, где с волнами происходит черти-что ))
почему разброс такой
Ближнее-дальнее - это достаточно условная классификация, вытекающая из законов физики. Конкретные расстояния зависят от размеров и типа антенны, и еще миллиона факторов, вплоть до состава краски (не шутка!)... Суть классификации в том, что, чем ближнем к антенне, тем больше преобладают реактивные процессы, потом они ослабевают и постепенно начинают преобладать процессы, свойственные для излучения, потом ("для верности") переходная зона, но после 2λ "гарантированно" можно пользоваться расчетами "как для электромагнитного поля". Если к этому еще учесть, что, на самом деле, нет никакой одной конкретной частоты, а есть бесконечное множество гармонических колебаний, то можно понять, что в физике потому и говорят о законах, а не о конкретных рецептах, что с их помощью можно только уверенно сказать, что можно ожидать, а чего точно ожидать нельзя, ну, и примерно рассчитать. А уж конкретная практическая радиотехника выше 1ГГц - это, вообще, смесь науки и шаманства... там только измерения и "доводка напильником по вкусу", в смысле, до работоспособности)) Но это совершенно не страшно, если с помощью законов можно уверенно сказать, что для этого применения такая частота не подходит в принципе - ничего не придется делать ))
есть вариант делать двухэтапный замер на транспондере
Такого варианта нет в силу многих причин. Делать замер на транспондере ничуть не проще, чем на передатчике - там те же законы физики, да, к тому же, маленькая тактовая частота и мало энергии. Пассивный транспондер питается от энергии электромагнитного поля и его чип должен быть экономным, дешевым и надежным. Он даже не генерирует свою несущую - просто шунтирует антенну, от чего она то хуже, то лучше рефлектирует это самое поле. Но принципиальная проблема даже не в этом, а в том, что что-нибудь измерить, означает, сравнить это что-то с чем-то известным. А транспондеру известно еще меньше, чем передатчику. И в радиопротоколе там тоже нет ничего константного по времени, к чему можно бы было привязаться, т.к. он предназначен для быстрого распознавания множества транспондеров с разрешением коллизий, и там есть тайминг, принципиально основанный на случайных числах. Повторяю, эта технология разрабатывалась для другого, и для этого ну просто никак, в смысле совсем не пригодна))
микросхема должна обладать какими-то особыми свойствами, какими?
Ее ВЧ-тракт должен быть построен так, чтоб принимать сигнал одновременно с нескольких антенн и определять разницу в фазе. А все распространенные микросхемы "имеют внутри" один вход/выход, которые просто очень быстро переключаются между несколькими физически подключенными антеннами (мультиплексор). Она там внутри тоже определяет разницу в фазе, но не от разных антенн, а между своим сигналом и ответом транспондера (это следует из протокола), так что воспользоваться этим для измерения расстояния никак не получится. Но выражение "очень быстро" не должно Вас вводить в заблуждение - речь не о волнах или битах радиопротокола, по которым можно бы было определить разницу в фазе, а о временнЫх слотах, за которые микросхема успевает полноценно пообщаться с дюжиной транспондеров. Если хотите узнать подробности, читайте описание протокола на официальном сайте GS1, но предупреждаю, что там все весьма заковыристо ))
это оно и есть
Очень похоже, только Soli, это не ультразвук, а, как и предполагалось, СВЧ - обычный радар на 60 ГГц. Обратите внимание, что Гугл не слепил его на базе какой-нибудь более-менее подходящей технологии, а именно таки разработал специализированный чип ))
Gudsaf, Ох, чую по вопросам, что мне сейчас придется конспективно излагать университетские курсы физики, электро- и радиотехники и антенностроения, а это - килограммы и килограммы заумных книжек )) Так что, все непонятные слова гуглите самостоятельно и разбирайтесь. Конкретно по вопросам:
- RFID-технологии различаются не только, и не столько частотой, но и, прежде всего, принципом связи интерогатора с меткой. В случае с NFC это индуктивная связь с нагрузочной модуляцией несущей. Означает, по сути, что их антенны, это две катушки, как в трансформаторе: поднесли друг к другу, магнитные потоки зацепились - есть связь. По законам физики, действующим в части Вселенной вокруг планеты Земля, это эффективно работает на расстоянии до нескольких сантиметров. В EPC-Gen2 - это настоящая радиосвязь с детектированием backscatter (отраженного антенной пассивной метки сигнала). Там совсем другие антенны - patch с круговой поляризацией или резонансная камера на интеррогаторе и разнообразные вариации электрически укороченного диполя в метке. Это работает на расстоянии до десятков метров, но в том, как именно работает, есть много подводных камней.
Далее... электромагнитная волна становится таковой (т.е. ЭМ-излучением, а не реактивным "зацеплением" одной антенны за другую) на расстоянии от антенны от λ/2π до 2λ. Ближним полем называется ближайшая к излучающей антенне часть этого пространства (подробности), т.е. именно та, в которой в вашем сценарии должно происходить все действо. Для связи на таких расстояниях "обычные" антенны не очень эффективны и в таких случаях используют специальные. Особенного в них только то, что они специально сконструированны для таких режимов работы ))
Далее... выбор частот, принципов работы и протоколов в этих технологиях обоснован необходимой скоростью передачи данных и конкретными сценариями использования. Определение положения в пространстве в эти сценарии никаким боком не входило - вот почему попытки запилить на их базе (а также, на базе Wi-Fi, Bluetooth и пр.) эти сценарии попадают в разряд забивания гвоздей отверткой, т.е. сделать нечто-примерно-кое-как работающее можно, а сделать что-то пригодное для использования нельзя. Да, и NFC и RFID не просто нормально, но и вполне даже хорошо работают для того, для чего предназначены, но никогда не будут даже приемлемо работать для определения положения в пространстве))
- То, что в абстрактной теории выглядит просто, на конкретной практике оказывается несколько сложнее )) Тупо "замерить время" распространения сигнала никак не получится, ни прямо (т.к. время распространения сигналов в схеме даже на один такт процессора будет в разы, если не на порядки больше того, которое нужно измерять), ни косвенно (т.к. у меток нет высокоточных синхронизированных часов, как, например, у спутников GPS). Так что, облом красивой теории наступит прямо в пункте "рассчитать расстояние" - рассчитать просто, но точность рассчета будет на порядки хуже необходимой. На всякий случай, чтоб два раза не вставать: по RSSI (уровню сигнала, или, точнее, SNR - соотношению сигнал/шум) тоже не получится - ни с необходимой, ни даже с хоть как-то приемлемой точностью, т.к. он зависит не только от реального расстояния между антеннами, но и от их взаимной ориентации в пространстве. Ну, а все эти чисто принципиальные проблемы вдобавок еще усугубляются и шумами-помехами-рефлексиями-интерференциями, характерными для этих частот.
- По остальным трем вопросам разом, чтоб развеять сомнения: т.к. расстояние от источника сигнала до трех принимающих антенн разное, один и тот же сигнал будет "принят" ими с некоторой разницей во времени, т.е. со сдвигом по фазе. Т.к. в нашем распоряжении еще нет секундомеров, работающих со сверхсветовыми скоростями, эта разница фазы - единственная реальная возможность вычислить расстояние, по которому потом триангулировать. Однако, плохая новость тут в том, что для ее определения нужна соответствующая схемотехника приемника, а т.к. (см. выше) технология для этого сценария не затачивалась, разработчики распространенных чипов приемников этим не заморачивались. И очень правильно поступали, ибо, для того, чтоб добиться хоть каких-то результатов на этих частотах (порядка метров), им пришлось бы сделать чипы стоимостью с автомобиль среднего класса. И такие действительно есть, но их ставят не в смартфоны-бытовуху, а в лабораторное оборудование, цены на которое начинаются с десятков штук евро.
Попутно: всяческие RTLS на базе Bluetooth, Wi-Fi, iBeacon-ов и иже с ними, которые дают хоть какие-то результаты (реально, порядка метров... в дни, когда расположение звезд благоприятно сочетается с фазой Луны), основаны не столько на принципе триангуляции, сколько на том, что в помещениях развернута целая сеть датчиков.
И, наконец, мораль всей истории - для заявленного сценария, где речь идет о сантиметрах, нужны:
- либо совершенно иные частоты, а именно, ультразвук (УЗИ, ассистенты парковки автомобилей), или СВЧ (локаторы автоматических дверей)
- либо совершенно иные принципы, вроде сканирования (3D сканнеры) или оптического распознавания образов / построения карт глубины (системы управления беспилотных автомобилей / Kinect)
Gudsaf, Скорость света (она же, скорость распространения поля) ~300 000км/с, длина волны для 868МГц ~36см. Даже если отвлечься от того, что для "радиуса действия" в 60см это может быть только антенна ближнего поля... т.е. еще даже не до конца отделившаяся от антенны волна, и задуматься, например, над тем, на каком процессоре нужно бы было считать time-of-flight для скорости света, чтоб получить хоть какие-то значимые результаты... Вы же, наверное, хотите еще и в реальном времени? Это уже не говоря о том, что на этих частотах огромное количество отражений от всего металлического, которые (отражения), как известно, разворачивают фазу на 180°. Надеюсь, уже достаточно информации для размышления над тем, почему это не лучшая идея ))
А чисто физически, единственное, что можно бы было использовать, это разница фазы. И такие решения действительно есть... но и они, в силу указанных выше причин, а также того, что радио-протокол RFID принципиально заточен под совсем иной сценарий, работают ненадежно и, скорее всего, не понравятся Вам своей ценой ))
Gudsaf, Вопрос много раз размусоливали, в т.ч. и на Тостере - лень повторяться. Если кратко, то никакую, которая бы работало надежно. Триангуляцией - вообще никакую. И причина этого в физике, а не в конкретной технологии.
Ievgenii S
Ну, так там же и написано черным по английски, в чем конкретно проблема... всего-навсего не находится класс аннотации javax/annotation/PreDestroy. С переходом на 9 действительно были хаос и непонятки с тем, что где лежит и в какие модули входит )) Вот инфа по теме: 1 2
(По идее, должно помочь прописать в eclipse.ini "--add-modules=ALL-SYSTEM")
private_tm, Похоже, проблему занятости. Ибо, судя по туманному описанию, очень похож на один невероятно популярный антипаттерн... когда вместо системы для решения какой-то конкретной проблемы, сначала разрабатывается система для разработки решений проблем, с помошью которой потом легко и гибко разрабатываются системы для решения любых проблем. Этот, неизбежно сходящийся к недостижимому оптимуму процесс повторяется рекурсивно-фрактально, так, что до решения каких-то там конкретных проблем уже никому просто нет дела ))
Не знаю, конечно, какая выборка вакансий анализировалась, но впечатление, скорее всего, ошибочное... точнее, ни о чем не говорящее. И то, и другое - Ынтерпрайз и часть реальных бизнеспроцессов реальных компаний. И, кроме того, Ынтерпрайз всегда многослойный... вполне может быть на клиенте одно, а на сервере или в облаке другое. Так что, если хотите проводить более выразительный водораздел, то, как правило, .net преобладает в задачах, где упор делается на десктопные приложения, а Java - там, где на вебморды. Хотя, конечно же, оба стека технологий позволяют и то, и другое, и в живой природе полно исключений из этого весьма и весьма обобщенного правила.
Вы не понимаете, что такое потоки... У потоков нет методов! Методы, это участки кода, по которым проходят потоки. Если код изменяет какие-то данные, и есть возможность, что этот код будет выполняться более, чем в одном потоке одновременно, потоки нужно синхронизировать, чтоб они не пытались менять-проверять эти данные одновременно. Ваша BOOL переменная, это те самые данные. Соответственно, на код, который ее меняет, и который проверяет, нужно ставить мьютекс. А иначе результат просто непредсказуем.
Прежде, чем пускаться в шаманство со сбросом кешей, хорошо бы посмотреть (ps -ef|grep java), действительно ли процесс убился, и если нет, помочь ему с помошью kill -9 и только тогда смотреть, освободилась память или нет. Иначе можно из одной нерешенной проблемы получить две и более...
Hаучитесь наконец осмысленно называть классы и методы, а для этого разберитесь с ООП. Классы в ООП - это не такие случайные места, по которым разбрасывают разные методы, делают их статическими и дергают откуда попало... в классах совершенно другой смысл - они моделируют объекты (осмысленные составляющие проблемы реального мира, которую решает программа). Пока Вы это не поймете, нет никакого смысла что-то там синхронизировать... тем более, в этом коде - его проще выкинуть и переписать на ООП ((
Вопрос на полях: Вы это муть с названием ITest, getName и setName сами придумали, чтоб запутать всех врагов до последнего, или у кого-то почерпнули? Если у кого-то, то можете смело дать ему в глаз, ибо заслужил... а если сами - может оказаться, что Вы просто не понимаете, что такое интерфейс и зачем он нужен. В любом случае, от вменяемого программиста на Яве (и не только на ней), ожидается, что имена, начинающиеся с get и set он будет давать - сюрприз(!) - методам, которые таки являются геттерами и сеттерами, а не всему вокруг, что подвернется под руку.
Никак... во-первых, компилятор вообще ничего не запускает - он компилирует, т.е. создает код, который будет выполняться потоками. (Представьте себе, что код, это дороги, а потоки - машины, которые ездят по этим дорогам). Запускает JVM - один поток в ваш метод main(), с которого все начинается. А что произойдет дальше - зависит только от кода. Во-вторых, в этом примере сначала создается ExecutorService... а в нем есть какое-то количество потоков, которые ждут на старте. А дальше в цикле запускается по одному Runnable за один проход. Это происходит НЕ ОДНОВРЕМЕННО, но реальная разница во времени между запуском первого и последнего сравнительно мала. А вот после того, как они запущены, каждый выполняется своим потоком и, таким образом, это происходит параллельно. Вот именно так в коде и пишут многопоточный код ))
Dmitry Fedorov: Вам никто не даст даже примерный ответ, т.к. Вы в вопросе не указали даже примерно, о каком приложении идет речь... не конкретное название (оно никого не интересует), а об адоптации какого функционала идет речь. Андроид - динамично развивающийся проект, там от версии к версии происходит много изменений, появляются новые возможности, которых "раньше" не было. Соответственно, если App "для 5.0" использует какие-то специфические возможности этой версии, адоптация под более старую может оказаться очень трудоемкой или же вообще невозможной... если же не использует, возможно, ее можно выполнить за пару часов )) Понятно, что Вы сами этого не знаете (это может либо знать автор, либо определить другой опытный разработчик, взглянув на приложение и его функционал). Именно поэтому единственная возможность хоть примерно оценить трудозатраты - попросить сделать это специалиста. Любой другой "ответ с потолка" заранее рекомендую игнорировать ))
Если уже 300+kLOC, а вопрос про документацию все еще будоражит умы, смиритесь с тем, что проект проще и дешевле выкрасить и выбросить. Все равно "опытные сотрудники" давно и прочно застолбили свою незаменимость, и теперь их уже никакими коврижками не заставить написать осмысленную доку... да это и объективно не так просто, как кажется. Короче, поздно пить Бoржоми (((
Ingernirated: Ну, так уже немного понятнее... глава - об устройстве счетчиков, используемых, в данном случае, в качестве делителя (частоты, например, тактовой). В данном примере - делителя на 3. Это значит, что на вход (CLK) должны поступить три импульса, чтоб на выходе (Y) появился один.
Но в чем конкретно заключается вопрос по этой главе и причем тут дороговизна регистров, кеш процессора, ОЗУ и все остальное? )))
Да... и еще, горькая правда в том, что регистры таки построены, схемотехнически, на триггерах... и бывают весьма разные... бывают в виде микросхем, бывают внутри процессора (это - те, о которых в ассемблере). Короче, либо сам вопрос - ненавязчивый троллинг, либо нужно, как минимум, уточнить, в какой книге, в каком контексте и о каких регистрах идет речь. Иначе, ну просто совсен непонятно, что именно интересует ))
По первому вопросу они указывают, что внутри либы используются эти лицензии
Не морочьте пожалуйста человеку голову! По первому вопросу: означает, что использующий код может выбрать, на условиях которой из этих трех лицензий он это делает.
Она не слепая, скорее, наоборот, перенасыщенная энергией... и от этого там процессы распространения радиоволн еще не такие, как от начала дальнего поля и до бесконечности. Это как шланг для полива огорода: у самого распылителя происходит черти-что, а дальше - ровный поток капелек, движущихся равноускоренно, как в школьном учебнике физики. Ближнее поле - это как раз та зона, где с волнами происходит черти-что ))
Ближнее-дальнее - это достаточно условная классификация, вытекающая из законов физики. Конкретные расстояния зависят от размеров и типа антенны, и еще миллиона факторов, вплоть до состава краски (не шутка!)... Суть классификации в том, что, чем ближнем к антенне, тем больше преобладают реактивные процессы, потом они ослабевают и постепенно начинают преобладать процессы, свойственные для излучения, потом ("для верности") переходная зона, но после 2λ "гарантированно" можно пользоваться расчетами "как для электромагнитного поля". Если к этому еще учесть, что, на самом деле, нет никакой одной конкретной частоты, а есть бесконечное множество гармонических колебаний, то можно понять, что в физике потому и говорят о законах, а не о конкретных рецептах, что с их помощью можно только уверенно сказать, что можно ожидать, а чего точно ожидать нельзя, ну, и примерно рассчитать. А уж конкретная практическая радиотехника выше 1ГГц - это, вообще, смесь науки и шаманства... там только измерения и "доводка напильником по вкусу", в смысле, до работоспособности)) Но это совершенно не страшно, если с помощью законов можно уверенно сказать, что для этого применения такая частота не подходит в принципе - ничего не придется делать ))
Такого варианта нет в силу многих причин. Делать замер на транспондере ничуть не проще, чем на передатчике - там те же законы физики, да, к тому же, маленькая тактовая частота и мало энергии. Пассивный транспондер питается от энергии электромагнитного поля и его чип должен быть экономным, дешевым и надежным. Он даже не генерирует свою несущую - просто шунтирует антенну, от чего она то хуже, то лучше рефлектирует это самое поле. Но принципиальная проблема даже не в этом, а в том, что что-нибудь измерить, означает, сравнить это что-то с чем-то известным. А транспондеру известно еще меньше, чем передатчику. И в радиопротоколе там тоже нет ничего константного по времени, к чему можно бы было привязаться, т.к. он предназначен для быстрого распознавания множества транспондеров с разрешением коллизий, и там есть тайминг, принципиально основанный на случайных числах. Повторяю, эта технология разрабатывалась для другого, и для этого ну просто никак, в смысле совсем не пригодна))
Ее ВЧ-тракт должен быть построен так, чтоб принимать сигнал одновременно с нескольких антенн и определять разницу в фазе. А все распространенные микросхемы "имеют внутри" один вход/выход, которые просто очень быстро переключаются между несколькими физически подключенными антеннами (мультиплексор). Она там внутри тоже определяет разницу в фазе, но не от разных антенн, а между своим сигналом и ответом транспондера (это следует из протокола), так что воспользоваться этим для измерения расстояния никак не получится. Но выражение "очень быстро" не должно Вас вводить в заблуждение - речь не о волнах или битах радиопротокола, по которым можно бы было определить разницу в фазе, а о временнЫх слотах, за которые микросхема успевает полноценно пообщаться с дюжиной транспондеров. Если хотите узнать подробности, читайте описание протокола на официальном сайте GS1, но предупреждаю, что там все весьма заковыристо ))
Очень похоже, только Soli, это не ультразвук, а, как и предполагалось, СВЧ - обычный радар на 60 ГГц. Обратите внимание, что Гугл не слепил его на базе какой-нибудь более-менее подходящей технологии, а именно таки разработал специализированный чип ))