пятница, 30 марта 2012 г.

Блоки питания vs розетки v.2



Детали используемые в блокоупорядочивании:
а) вилка с проводом от чего-то старого или новая из магазина. (1-2$)
б) зажимы электроустановочные на 5 проводов. Все называют их вага или колодка вага, от фирмы wago. (0.7$ за шт) 
г) куски проводов (можно взять от компьютерного БП, от остатков вилки. Я в процессе нашел кусок аудиопровода на 0.75) главное чтоб они были многожильными! (1-2$)
д) термоусадка диаметром 3.5 мм идеально подходит или 4мм хорошо. Метра хватит вполне (2-3$)


Режем провода. Провод с вилкой на 1м, короткие парно по 15-20 см.
Зачистка на 1см где-то. Не перебарщивайте и не мельчите.


Концы которые заводим в колодку желательно (но не обязательно) облудить или просто плотно скрутить.

Режем термоусадку, примерно надо 3-3.5 см короткая не зафиксирует провод, длинная неудобна.
Надеваем вот так. Это по ощущениям придется делать. Надо чтоб провод оставил медь на контакте вилки, но сам с оболочкой не полез. Я вначале прижимал медь, потом сверху опускал термоусадку.



Греем термоусадку, кто чем может: фен, паяльник, зажигалка.
Усадка плотно облегает и вилку и провод, не давая ему выскакивать. На тесте БП спокойно висел на проводах.

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

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


Думал насчет винтового клемника и коробки. Но:
а) под рукой не оказалось.
б) винты разжимать долго, а тут щелчок и всё.
в) из этой колодки, провода можно вынимать не отключая сеть.
Ну и разбор: с вилки аккуратно срезать термоусадку и мы получаем начальный вид БП.

Побочный эффект от правообладателей

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

Это короткий взгляд со стороны, на нас с вами, на наше прошлое и возможное будущее.
image
Кого заинтриговал, прошу под кат.

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

Итак


Правообладатель имеет право давать права на использование или не давать. Может продать права, может сдать в аренду. И решения эти он (правообладатель) принимает волюнтаристски, не с кем не советуясь и в основном из меркантильных побуждений. C'est la vie, так сказать.

Но, понимая подвох ситуации, Человечество, вроде бы, старается подстраховываться, и сроки авторских прав в большинстве стран ограничены. Т.е. вечно получать пени за произведение не получится, и когда-нибудь шедевр станет достоянием Республики общественности.
Однако, именно в этих странах этот срок периодически и продлевают… Опять же — C'est la vie.
Кому интересна конкретика в цифрах, в Википедии подробно представлена хронология изменения сроков авторских прав.

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

Эффект правообладателя


И в силу сложившейся ситуации вот какой замысловатый эффект можно наблюдать на одном очень тематическом (красивом, нужном и полезном, с точки зрения автора) ресурсе.
Перед вами один из разделов сайта, посвященного инернет-радио. Раздел представляет собой небольшую (а с точки зрения автора огромную) коллекцию лучших (по мнению сайта) песен разных годов, начиная с далекого 1930г. и по наши дни.
Уверен, многие из читателей и сами собирали или собирают дома подобные тематические коллекции. И очень ими дорожат и гордятся.
В коллекции песни представлены не просто композициями, но клипами!, что не может не радовать поклонников тех или иных жанров. А ниже, под списком песен вы можете видеть краткую музыкальную справку по выбранному году, ключевые имена, события и каждая фраза как бы пропитана духом той эпохи.
В общем, меломан Вы или нет, но к данной страничке вы равнодушным не останетесь, и «добавить в избранное» вам обеспечено. И я ничуть не пиарю ресурс, я передаю свои собственные эмоции, с целью, чтобы правильно подвести Вас к сути Эффекта. Хотя многие из Вас уже, наверно, его и заметили, пробежавшись по списку в поисках любимой композиции…
Вот Вы её находите, не верите глазам — как? еще и с видео? я искал её 30 лет! Клик мышки… и…

И...


И видите следующую надпись: "«Песня в землянке» Это видео теперь недоступно, потому что связанный с ним аккаунт YouTube был удален за неоднократное нарушение авторских прав третьих лиц, среди которых: [Издательский дом Сергея Орлова], [ООО «Диджитал прожект»], [Сергей Березин]"
Вы щелкаете следующую, еще одну из тоже столь желанного репертуара. Но нет, на каждый ваш клик уже нашелся правообладатель, и законопослушный сайт справедливо блокировал контент.
И вроде бы все правильно, и так и должно быть.

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

Вывод


Вывод очень простой, и немного грустный.
В эпоху расцвета информационных технологий, родившихся и призванных помочь людям свободно делиться информацией, вы сидите у голубого экрана монитора и пытаетесь сохранить в памяти уже практически забытую мелодию. И Вы уже не можете полностью напеть ее своим детям, друзьям или знакомым. Вы смотрите в монитор и понимаете, что там, где-то в сети, она есть. Но достать ее невозможно. Потому что правообладатель не выкладывает ее в свободном доступе — это ему не выгодно, не продает в магазине — это не выгодно магазину, композиция очень редкая, на любителя, в сети не скачать — закон есть закон, и, к сожалению, Вам никак не попадается на глаза пестрый, яркий баннер с призывом немедленно кликнуть на него, чтобы наконец узнать, где же приобрести этот заветный трек!
Нет, ничего этого нет. И вашему ребенку не объяснить на словах, что такое Beatles, или Duke Ellington. Невозможно это объяснить на словах, если ты не жил там и не слышал как оно рождалось. Если ты из другого поколения, можно только наткнуться случайно на ссылку, увидеть, услышать, и влюбиться.
Можно наткнуться на ссылку случайно, в бесконечных просторах всемирной сети, и приобщиться к прекрасному, умному, вечному. Наткнуться там, где и есть последнее пристанище памяти Человечества.
Наткнуться и не увидеть черный квадрат с уведомлением, что права правообладателя надежно защищены…

Эпилог


Человек жив пока о нем помнят.
Вполне справедливо и для всего того, что этим Человеком создается.
Будучи сохраненной в надежных руках правообладателя, мелодия будет навсегда потеряна, если о ней не сохранятся воспоминания в умах Человечества. Но чтобы хранить эту память, ее нужно передавать, информацией нужно делиться, и не в рамках лекций, учебников, по подписке, по предзаказу, за 0.99 десять штук и т.п., а так, чтобы ищущий да обретал результат поиска.
Кто знает, на что сподвигнет маленького Человечка композиция Ray Charles — What'd I Say.
Ведь через 50 лет шанс наткнуться на нее в жизни будет только здесь, в сети… А вдруг из него вырастит тогда новый Моцарт?
Стоит подумать об этом сегодня.

Секретные коды Android

Думаю все, у кого есть устройство на базе ОС Android, хотя-бы краем уха слышали о «секретных кодах». 
Однако поиск по Хабру показал что здесь нет ни одной статьи на данную тему. А ведь некоторые коды довольно могущественные: например один из кодов на моем Samsung Galaxy Tab позволяет настроить GPS что ускоряет поиск спутников, другой — жестко установить режим связи с сетью(GPRS, EDGE, 3G...) что в местах с нестабильной связью позволяет хорошо сэкономить батарею на скачках между режимами.
Но повествование я поведу не сколько про возможности кодов а про исследование механизма запуска приложений по кодам в ОС Android, как найти все коды(и приложение в которое это всё вылилось). И еще немного про то, как сделать приложение которое будет отзываться на свой код.
Под катом 6 картинок, немного кода и много текста… Самых нетерпеливых прошу сразу в конец статьи помацать результаты а уж потом — читать технологию.


Вступление

Про коды в Android я слышал давно. Наиболее распространённый — *#*#4636#*#* — это информация о телефоне, батарее, состоянии сети и т.д.
Но недавно я установил себе программу Autostarts, сделал поиск по установленным приложениям и (О чудо!) увидел странное событие «Secret Code Entered». На него отвечала целая куча приложений! Этот факт подвигнул меня на более глубокий поиск на эту тему. Вот что я выяснил:

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

Часть первая. События в Android


Как известно, каждое приложение Android содержит в себе манифест. Это специально сформированный XML файл содержащий информацию какая целевая версия ОС, какие возможности разрешения требуются приложению для работы и т.д. Самое интересное в этом манифесте — секции описывающие BroadcastReceiver'ы. Это классы, которые реагируют на наступление определенных событий. Этих событий много, например: совершается исходящий звонок(android.intent.action.NEW_OUTGOING_CALL), изменилось состояние режима «полёт» (android.intent.action.ACTION_AIRPLANE_MODE_CHANGED)… Официальный список можно увидеть здесь.
Однако список отнюдь не полон т.к. каждое приложение может создавать своё событие. Это вносит некоторый хаос в документацию при попытке выяснить на что может реагировать приложение.

Именно в этом хаосе удачно спряталось событие, которое представляет огромный интерес: android.provider.Telephony.SECRET_CODE

Как показало вскрытие исходных кодов штатной звонилки в Андроиде что при вводе чего-либо начинающегося на *#*# и заканчивающегося #*#* в номеронабирателе происходит поиск и передача сообщения тому BroadcastRecever'у который слушает именно этот код(то что между *#*# и #*#*)

Часть вторая. Реагируем на код


Теперь глянем что-же требуется от приложения что-бы среагировать на наступление данного события:

<receiver android:name=".receivers.DebugReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SECRET_CODE" />
<data android:scheme="android_secret_code" android:host="727" />
</intent-filter>



где:
<receiver android:name=".receivers.DebugReceiver"> — начало секции BroadcastReceiver и указание какой именно Receiver должен быть вызван при наступлении данного события.
<action android:name=«android.provider.Telephony.SECRET_CODE» /> — собственно событие на которое реагирует ресивер, набор кода.
<data android:scheme=«android_secret_code» android:host=«727» /> — а вот и самое интересное место. Блок data отвечает за дополнительные параметра события и для события секретного кода — обязателен. Поле android:host здесь означает именно тот код, который пробудит нашу спящую красавицу от сна.
Т.е. что-бы запустить Receiver .receivers.DebugReceiver, приложения в из манифеста которого этот блок (о нем чуть позже), нужно в звонилке набрать *#*#727#*#*

Как видно, добавить скрытые возможности в свои приложения Android очень даже просто.
Что делать в Receiver'е я умолчу, там уже ваш собственный путь, лично я — вызываю отладочное Activity.

Часть третья. Ищем партизанов


Теперь перейдем к поиску Receiver'ов, реагирующих на коды. Первой мыслью (и первой реализацией) был вот такой вот код:
for(int i=0;i<10000;i++)
{
Intent intent = new Intent("android.provider.Telephony.SECRET_CODE",
Uri.parse("android_secret_code://"+ i.toString()));
ComponentName cn = intent.resolveActivity(pm);
....
}


В точности код я не помню, он был затёрт за ненадобностью так как было найдено решение лучше. Данное же решение просто перебирает все коды с 0 до 10000, тот диапазон в котором находится значительная часть кодов. Но не все.
Именно это «не все» подвигло меня на более детальные поиски и привело к новому решению:
1) Берем список всех установленных приложений через PackageManager:
List<android.content.pm.PackageInfo> pil = pm.getInstalledPackages(PackageManager.GET_DISABLED_COMPONENTS);
2) Из каждого пакета вытаскиваем его манифест: 
AssetManager am = context.createPackageContext(p.packageName, 0).getAssets();
xml = assets.openXmlResourceParser("AndroidManifest.xml");

3) Простая магия с разбором манифеста и поиском нужных Receiver'ов, IntentFilter'ов, Action'ов.
4) Профит. 

У этого метода есть всего один недостаток: он был замечен на приложении SuperUser от ChainsDD. Дело в том что данное приложение имеет кривой манифест который выглядит как-то так:
<receiver android:name=".receivers.DebugReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SECRET_CODE" />
<data android:scheme="android_secret_code"/>
</intent-filter>


Как видите, в нем не указан код, на который следует реагировать и Receiver вызывается при вводе любого кода. Декомпилировав эту программу я убедился что сделано это по ошибке а не следуя желанию вести лог всех введенных кодов, т.к. в самом Receiver'е происходит проверка на равенство кода заданному значению и если код не равен заданному — то ничего не происходит :( т.е. этот Receiver запускается при каждом вводе кода, чего можно было избежать указав какой именно код должен пробуждать Receiver.

Часть последняя. Для самых терпеливых.


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

Кроме описанной выше возможности искать секретные коды программа также позволяет:
— Запускать найденные коды
— Комментировать/читать комментарии других пользователей о кодах. Это сделано что-бы люди которые боятся FactoryFormat'а могли удостоверится что код безопасен до его запуска, а бесшабашные экспериментаторы — написать что делает тот или иной код. Мной лично было запущенны ВСЕ доступные коды на Samsung Galaxy Tab 7" и откомментированны все коды которые выводят хоть какую-то информацию. (Кстати успешно пережил FactoryFormat, т.к. заранее сделал backup всех приложений и данных.)
— Назначать кодам значки для большей наглядности списка кодов.

На закуску 6 ScreenShot'ов:
Главное Activity:


Activity поиска кодов:


Поиск кодов завершен:


Список кодов:


Activity кода:


Некоторые из доступных значков для обозначения кода:


P.S. на SreenShot'ах всего 3 кода т.к. они делались на эмуляторе. На моём Galaxy Tab'е их более 40-ка.