
Делимся Впечатлениями читать описание

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

Интересно а чем и занимаетесь в свободное время? читать описание

Погружен в Alternative, Post-Britpop, Indie Pop/Rock, все в моих файлах в муз. обмене или в муз. [...] читать описание

Прежде считалось, что никакое взаимодействие не может совершаться со скоростью, превышающей скорость света, - рассказывает о своём открытии профессор Валитов. - Это триста тысяч километров в секунду. Но оказалось, что электромагнитные и гравитационные поля взаимодействуют мгновенно. Я обосновал это теоретически и подтвердил экспериментально. А потом поразился - ведь это говорит о существовании во Вселенной какой-то единой высшей силы! Ведь, по сути, всё связано со всем. Но глобальных философских выводов в монографии делать не стал. Счёл, что моя книга и без того бунт в академической науке.
Письмо
Валитов получил конверт из Ватикана и не поверил своим глазам. Нажип Хатмуллович не предполагал, что в ведомстве Папы Римского интересуются химией и физикой. А когда перевёл текст, то удивился ещё больше. \"Дорогой профессор! - писал помощник Папы монсиньор Педро Лопес Куинтана. - Его Святейшество Папа Иоанн Павел II уверяет Вас, что он посвящает Вам свои молитвы. Он желает также, чтобы Вы знали, что Первосвященник ценит чувства, побудившие Вас написать эту монографию. Только после тщательного исследования и солидной экспертизы мы решили прислать Вам нашу благодарность\". Профессор Валитов почувствовал себя несколько неуютно: задал задачку самому Папе Римскому! Представил, каково было католическим епископам понять четыреста страниц формул и графиков! И теперь за Валитова, человека, который прежде числил себя материалистом и считал, что там, где начинается религия, кончается наука, молится сам Папа Римский! Нажип Хатмуллович взял письмо из Ватикана и отправился к Верховному муфтию России Талгату Таджутдину. Подарил ему свою книгу, рассказал о её сути. Профессор осторожно спросил муфтия, как следует относиться к молитвам папы Римского: - По происхождению я мусульманин, мой дед в Мекку ходил: Муфтий успокоил: Бог один для всех. И я за вас тоже помолюсь!
Книги
Профессор Валитов перечитал Коран, изучил библию, проштудировал Тору. И удивился, насколько точно в их текстах обозначена суть его научного открытия. - В священных книгах основных мировых религий, - говорит профессор Валитов, написано, что Бог всевидящий и всеслышащий. Прежде некоторые учёные-атеисты часто критиковали именно это определение. Их логика была, на первый взгляд, железной: поскольку скорость света имеет предел, то Господь бог, если он есть, не может мгновенно услышать и увидеть содеянное человеком. Однако оказалось, что мысль каждого из нас материальна. Атомы в молекулах, из которых состоят нейроны мозга, совершают поступательные, колебательные и вращательные движения. И процесс мышления обязательно сопровождается испусканием и поглощением силовых линий электромагнитного и гравитационного полей. Этот процесс можно мгновенно засечь из любой точки Вселенной. - Значит, Бог знает каждую нашу мысль? - Да. Есть сила, которой подчинено всё. Мы можем называть её Господом, Аллахом, Мировым разумом. Суть не меняется. И взаимодействие в мире мгновенно, где бы не находились объекты. Я пришел к выводу, что Библия, Коран и Тора среди немалого количества разночтений имеют множество совершенно одинаковых постулатов. И их фундаментальные истины укладываются в мои расчёты. И значит, в этих формулах нет ничего нового. Только подтверждение тому, что дано человечеству свыше тысячелетия назад.
Признание
Коллеги подсчитали: теория профессора Валитова опровергает 12 законов термодинамики, 20 разделов химии, 28 физики, 40 разделов математики. Он предложил им проверить свои выводы и никто не смог их опровергнуть. Самое парадоксальное, что на теоретических вывод
<!--out_begin-->Источник<!--out_end-->
Профессор Башкирского госуниверситета Нажип Валитов прежде был весьма далёк от богословия. Он химик с мировым именем, член Нью-Йоркской академии наук, всю жизнь занимался проблемами исключительно своей науки. [...] читать описание

подготовку к нападению на СССР Германия начала в 1940 (план «Барбаросса»). Вместе с европейскими союзниками Германия сосредоточила для нападения на СССР 191,5 дивизий; силы противника насчитывали 5,5 млн. человек, около 4,3 тыс. танков и штурмовых орудий, 47,2 тыс. орудий и минометов, около 5 тыс. боевых самолетов, 192 корабля. Германия планировала против СССР «молниеносную
войну» («блицкриг»). Усилия СССР в 30-е годы по созданию системы коллективной безопасности не увенчались успехом. Пакт о ненападении с Германией (август 1939) позволил оттянуть начало войны. Однако подписанные при этом, а также при заключении в сентябре 1939 договора о дружбе и границе с Германией секретные протоколы были несовместимы с нормами международного права, подрывали престиж страны. Обороноспособность страны была подорвана проводившейся
тоталитарным режимом социально-экономической
политикой, массовыми репрессиями, охватившими и военные кадры, а также крупными просчетами в военном строительстве, в определении вероятных сроков начала войны, главная вина в чем ложится на И. В. Сталина и его ближайшее окружение. К июню 1941 Красная Армия имела 187 дивизий; в ее составе было ок. 3 млн. человек, более 38 тыс. орудий и минометов, 13,1 тыс. танков, 8,7 тыс. боевых самолетов; в Северном, Балтийском и Черноморском флотах насчитывалось 182 корабля и 1,4 тыс. боевых самолетов. Советские войска не были полностью укомплектованы личным составом, танками, самолетами, зенитными средствами, автомобилями, инженерной техникой; войска и командный состав имели низкий уровень подготовки. 22 июня 1941 фашистская Германия вероломно напала на СССР. Создав на направлении ударов подавляющее
превосходство, агрессор прорвал оборону советских войск, захватил стратегическую инициативу и господство в воздухе. Приграничные сражения и начальный период войны (до середины июля) в целом привели к поражению Красной Армии. Она потеряла убитыми и ранеными 850 тыс. человек, 9,5 тыс. орудий, св. 6 тыс. танков, ок. 3,5 тыс. самолетов; в плен попало ок. 1 млн. человек. Враг оккупировал значительную часть страны, продвинулся вглубь до 300-600 км, потеряв при этом 100 тыс. человек убитыми, почти 40% танков и 950 самолетов. 23 июня была создана Ставка Главного Командования (с 8 августа — Ставка Верховного Главнокомандования). Вся полнота власти была сосредоточена в созданном 30 июня Государственном Комитете Обороны (ГКО). С 8 августа И. В. Сталин стал Верховным
Главнокомандующим.
Основными военными событиями летне-осенней кампании 1941 были Смоленское сражение, оборона Ленинграда и начало его блокады, военная катастрофа советских войск на Украине, оборона Одессы, начало обороны Севастополя, утрата
Донбасса, оборонительный период Московской битвы. Красная Армия отступила на 850-1200 км, однако враг был остановлен на основных направлениях под Ленинградом, Москвой и Ростовом и перешел к обороне. Зимняя кампания 1941-42 началась контрнаступлением
советских войск на западном стратегическом
направлении. В ходе ее осуществлены
контрнаступление под Москвой, Любанская, Ржевско-Вяземская,
Барвенковско-Лозовская и десантная Керченско- Феодосийская операции. Советские войска сняли угрозу Москве и Сев. Кавказу, облегчили положение Ленинграда, полностью или частично освободили территорию 10 областей, а также св. 60 городов. Стратегия «блицкрига» рухнула. Было разгромлено ок. 50 вражеских дивизий. Выступление Молотова по радио 23 июня 1941 г. В летне-осенней кампании 1942 советские войска имели нереальную задачу: полностью разгромить противника и освободить всю территорию страны. Основные военные события развернулись на юго- западном направлении: поражение Крымского фронта, военная катастрофа советских войск в Харьковской операции, Воронежско-
Ворошиловградская,
Донбасская, Сталинградская оборонительные операции, сражение на Сев. Кавказе. На северо-западном
направлении Красная Армия провела Демянскую и Ржевско-Сычевскую
наступательные операции. Противник продвинулся на 500-650 км, вышел к Волге, захватил часть перевалов Главного Кавказского хребта. Была оккупирована территория, где до войны проживало 42% населения, производилось 1/3 валовой продукции, находилось более 45% посевных площадей. Экономика переводилась на военные рельсы. В восточные районы страны было перебазировано большое количество предприятий (только во 2-м полугодии 1941 — 2593, в т. ч. 1523 крупных), вывезено 2,3 млн. голов скота. В 1-м полугодии 1942 было выпущено 10 тыс. самолетов, 11 тыс. танков, ок. 54 тыс. орудий. Во 2-м полугодии их выпуск увеличился более чем в 1,5 раза. Советско-английское соглашение от 12 июля 1941, Московская конференция
представителей СССР, США и Великобритании (29 сентября — 1 октября 1941), Декларация 26 государств от 1 января 1942 о военном союзе стран, сражавшихся против фашизма, советско- американское соглашение от 11 июня 1942 оформили ядро антигитлеровской коалиции. Текс приказа Сталина «Ни шагу назад!» В зимней кампании 1942-43 основными военными событиями были Сталинградская и Северо- Кавказская наступательные операции, прорыв блокады Ленинграда. Красная Армия продвинулась на запад на 600-700 км, освободив территорию св. 480 км2, разгромила 100 дивизий (40% сил врага на советско- германском фронте). Были созданы благоприятные условия для завершения наступления союзников в Северной Африке, Сицилии и Южной Италии. В летне-осенней кампании 1943 решающим событием была Курская битва. Важную роль сыграли партизаны (операция «Рельсовая война»). В ходе битвы за Днепр было освобождено 38 тыс. населенных пунктов, в т. ч. 160 городов; с захватом стратегических плацдармов на Днепре созданы условия для наступления в Белоруссии. В битве за Днепр партизаны провели операцию «Концерт» по разрушению коммуникаций врага. На др. направлениях осуществлены Смоленская и Брянская наступательные операции. Красная Армия прошла с боями до 500-1300 км, разгромила 218 дивизий. Важным этапом в развитии международных и межсоюзнических
отношений стала Тегеранская конференция (28 ноября — 1 декабря 1943). В зимнюю кампанию 1943-44 Красная Армия провела наступление на Украине (10 одновременных и последовательных фронтовых операций, объединенных общим замыслом), завершила разгром группы армий «Юг», вышла на границу с Румынией и перенесла боевые действия на ее территорию. Почти одновременно развернулась Ленинградско-Новгородская
наступательная операция; Ленинград был окончательно
деблокирован. В результате Крымской операции освобожден Крым. Советские
войска продвинулись на запад на 250-450 км, освободили ок. 300 тыс. км2 территории, вышли на государственную границу с Чехословакией. В июне 1944 союзники открыли 2-й фронт во Франции, что ухудшило военно-политическое
положение Германии. В летне-осеннюю кампанию 1944 советские войска провели Белорусскую, Львовско-Сандомирскую,
Восточно-Карпатскую, Ясско- Кишиневскую,
Прибалтийскую,
Дебреценскую, Восточно- Карпатскую, Белградскую, частично Будапештскую и Петсамо-Киркенесскую
наступательные операции. Было завершено освобождение Белоруссии, Украины и Прибалтики (кроме некоторых районов Латвии), частично Чехословакии, принуждены к капитуляции и вступили в войну против Германии Румыния и Венгрия, освобождены от оккупантов Советское Заполярье и северные области Норвегии. 4-11 февраля 1945 в Ялте состоялась Крымская конференция
руководителей СССР, Великобритании и США. Кампания 1945 в Европе включала Восточно- Прусскую, Висло-Одерскую, завершение Будапештской, Восточно-Померанскую,
Нижнесилезскую,
Верхнесилезскую, Западно- Карпатскую, Венскую и Берлинскую операции, которые завершились безоговорочной
капитуляцией фашистской Германии. После Берлинской операции советские войска совместно со 2-й армией Войска Польского, 1-й и 4-й румынскими армиями и 1-м чехословацким корпусом провели Пражскую операцию. 24 июня в Москве состоялся Парад Победы. На происшедшей в июле — августе Берлинской конференции
руководителей трех великих
держав была достигнута договоренность по вопросам послевоенного устройства мира в Европе. 9 августа 1945 СССР, выполняя союзнические обязательства, начал военные действия против Японии. В ходе Маньчжурской операции советские войска разгромили Квантунскую армию, освободили Южный Сахалин и Курильские острова. 2 сентября 1945 Япония подписала Акт о безоговорочной
капитуляции. На советско-германском фронте были разгромлены и пленены 607 дивизий противника, уничтожено 75% его военной техники. По различным данным, потери вермахта составили от 6 млн. до 13,7 млн. человек. СССР потерял ок. 27 млн. человек, в т. ч. 11,3 млн. человек на фронте, 4-5 млн. партизан, много людей погибло на оккупированной территории и в тылу страны. В фашистском плену оказалось ок. 6 млн. человек. Материальный ущерб составил 679 млрд. руб. В тяжелой кровопролитной войне советский народ внес решающий вклад в освобождение народов Европы от фашистского ига. День Победы (9 мая) отмечается ежегодно как всенародный праздник и день памяти по погибшим
Великая отечественная война 1941-1945 - освободительная война советского народа против фашистской Германии и ее союзников (Венгрия, Италия, Румыния, Финляндия); важнейшая часть 2-й мировой войны. Непосредственную подготовку к нападению на СССР [...] читать описание

Штрафной на последней минуте. Счет 2:2. бьет Сычев. все напряжены, вся
Европа замерла. Разбег, удар мяч там медленно летит в ворота........ И
тут БАХ! Конец света! И вся Россия в едином порыве \\"Да
йопаныыыыыыыыврот!!!!!!\\"
Представляю себе, 2012 год наши вышли в финальный матч с Италией. Штрафной на последней минуте. [...] читать описание

Когда ты смотришь в портомоне, Где вместо денег кучка пыли, Не говори с тоскою: \\\"Нет!\\\", Но с благодарностию: \\\"Были!\\\"
Белые каски, красные лица - Отряд пожарных идет похмелиться!
Как повяжешь галстук - береги его. Он ведь от Версачи. Стоит ого-го!
С грязной ложкою в кармане, С лысым кактусом в руке, Я иду на бой с Бабайкой, Что живет на чердаке, Задавлю его я ложкой И заставлю кактус съесть, Я ведь дурочка немножко У меня и справка есть. )))
Если ты с утра проснувшись ощущаешь жажду жизни... Если хочешь дом построить и отправиться в поход... А потом помыть посуду, постирать, пошить, сготовить - Не пугайся, так бывает... Ляг, поспи и все пройдет.
Я оттого не увядаю, И не считаюсь размазнёй, Что если чем-то и страдаю, То исключительно... fигней.
Лечитесь смехом от забот, И от болезней тоже. Он сплетням затыкает рот И смерти корчит рожи. Лечитесь смехом от врагов, Смеяться их учите. Лечите смехом дураков, И умников лечите. Свой смех несмелый, седина, Не смешивай с одышкой: От смеха даже сатана Становится мальчишкой. Нам не приносит ни гроша Безгрешная потеха... Но жизнь чертовски хороша От смеха и до смеха...
Наша Катя не заплачет, Если Катю бросит мальчик! Наша Катя бросит первой, Потому что Катя - Стерва!
Пришла зима - капец прическе! Башка нуждается в расческе! Снял шапку - волосы торчком, Заходишь в офис дурачком!
Если вдруг вам стало грустно - не отчаивайтесь. Черные полосы бывают в жизни каждого человека, а еще им свойственно время от времени чередоваться с белыми. [...] читать описание

-А ну, снимай штаны!
Слониха, ясный пень, в недоумении, но перечить не смеет -сняла...
Муравей бегал-бегал по штанам, бегал-бегал...через полчаса говорит:
-Нет, это не мои...мои с кармашками были...
Подбегает Муравей к Слонихе: -А ну, снимай штаны! Слониха, ясный пень, в недоумении, но перечить не смеет -сняла... [...] читать описание

Сколько у вас уходит за минуту разговора внутри сети с вашего номера? читать описание

Люблю всякие безлимитные мероприятия!
И вообще, есть предложение провести опрос: какую музыку предпочитают слушать наши посетители?
Эх, тока б места на сервере хватило. ))) Люблю всякие безлимитные мероприятия! [...] читать описание

Пришел домой после работы, включаю комп по привычке, - а соединения то нет! Вот те раз! [...] читать описание

Ответьте :) читать описание

Ну нам деваться некуда, и так еле терпим, хоть в узел завязывай, чтоб не расплескать. Забегаем, платим... Фуууу, кайф! Донесли!
Не спеша уже идем на выход, а там две тетеньки на входе, интересуются, почем вход. Узнав, делают круглые глаза: \\"Так дорого!\\" Друг моментально выдает:
- За удовольствие надо платить!
Кассирша падает за кассу, я сползаю по стенке со смеху. А как тетеньки там не описались со смеху - не знаю ))
Пришлось мне как-то пару часов с другом в электричке ехать. Все бы ничего, вроде ничего необычного, но мы с ним усугубили свое положение большим количеством пива. [...] читать описание

Сразу скажу, что о официальных прошивках ничего не знаю и знать не хочу ) Здесь только кастомные прошивки и ядра, и только те. которыми пользуюсь сам, а также всё для рута и о руте.
Всё ниже ИМХО
Как получить рут и основные принципы и способы описаны в теме Прошивка Samsung GALAXY S III - форум
Лучшая на мой взгляд и самая стабильная прошивка от Wanam
Официальный сайт (ссылка на ДВ, почти всегда новые версии - WanamLite 6.0(4.2.1), 6.2(4.1.2) для Samsung Galaxy S3 )
Лучшее ядро
Boeffla - оф сайт Boeffla for Galaxy s3 2.9 beta 3
Далее пойдет речь о фишках, которые можно получить имея рут
JKay Deluxe Settings - по ссылке можно посмотреть скрины что это и для чего. Там же во втором посту можно скачать необходимые файлы. Программа платная, но стоит копейки. Если нужна бесплатная, их полно в интернете )
Как это работает.
- Качаем и устанавливаем JKay Deluxe Settings
- Качаем и устанавливаем подходящий под вашу прошивку JKay Deluxe Settings из темы выше из второго поста *
- Перезагружаемся и настраиваем в JKay Deluxe Settings (подсказки на русском, спасибо Gillette_757)
* Как правильно устанавливать системные файлы:
Показать / Скрыть текстДля этого нужен менеджер файлов с поддержкой root и возможностью назначать права, например Root Explorer
Копируем apk в телефон на карту SD
Копируем apk с карты SD в папку /system
Выставляем для apk права 644 (долгий тап на нужном файле - разрешения - ставим галки как на рисунке)
Перемещаем apk в папку /system/app или /system/framework
Перемещать из /system нужно потому, что apk может использоваться в данный момент и система не даст заменить его при копировании
Продолжение следует, на сегодня хватит...
!!! Приоритет дополнения основан на ваших вопросах, спрашивайте.
Постараюсь собрать всё самое необходимое и интересное о(для) прошивке Samsung Galaxy S III Сразу скажу, что о официальных прошивках ничего не знаю и знать не хочу ) Здесь только кастомные прошивки и ядра, и только те. которыми пользуюсь сам, а также [...] читать описание

Мой вольный авторский перевод заинтересовавшего меня поста, который я прочитал, просматривая свежий выпуск \"Неделя в Rust\". Оригинал можно найти здесь. Но лучше прочитать мой перевод.
Давным давно, Rust был языком с типовыми состояниями. Официально типовые состояния были выкинуты задолго до Rust 1.0. В этом тексте я раскрою вам секретный секрет сообщества Rust: в Rust по-прежнему есть типовые состояния. БА-ДУМ-ТССС!
Секундочку, а что такое \"типовое состояние\"?
Рассмотрим объект, представляющий файл — давайте обозначим его структурой данных MyFile. До того момента, как MyFile будет открыт, он не может быть прочитан. В случае если MyFile закрыт, он также не может быть прочитан. Между двумя этими состояниями файл может быть прочитан. Типовые состояния это механизм, дающий тайпчекеру возможность проверить, что вы не делаете следующих ошибок:
fn read_contents_of_file(path: &Path) -> String {
let mut my_file = MyFile::new(path);
my_file.open(); // Ошибка: эта операция может завершиться неудачно.
let result = my_file.read_all(); // Невалидно, если `my_file.open()` завершилось неудачно.
my_file.close();
my_file.seek(Seek::Start); // Ошибка: `my_file` уже закрыт.
result
}
В этом примере мы сделали две ошибки:
1. мы прочитали файл, который может не быть открытым;
2. мы установили текущую позицию чтения в файле, который уже был закрыт.
В большинстве языков программирования мы легко можем спроектировать API MyFile так, чтобы быть уверенными, что первая ошибка будет невозможной, просто бросая исключение, когда файл не получается открыть. Некоторые стандартные библиотеки и рамки решают не следовать этому принципу ради гибкости, но возможности существуют в самом языке.
Вторую ошибку намного сложнее перехватить. Большинство ЯП поддерживают необходимые возможности, чтобы сделать эту ошибку сложной для воспроизведения, как правило, закрывая файл при уничтожении или в конце вызова функции высокого порядка, но единственный неакадемический язык, о котором я знаю, который может фактически полностью предотвратить эту ошибку, это Rust.
Тривиальные типовые состояния в Rust
Итак, как мы делаем это в Rust?
Простейший способ сделать это — ввести здоровые типы (ради Бога, если знаете более приличный перевод термина \"sane types\", сообщите мне) для наших операций над MyFile:
impl MyFile {
// `open` это единственный способ создания экземпляра `MyFile`.
pub fn open(path: &Path) -> Result { ... }
// `seek` требует экземпляр `MyFile`.
pub fn seek(&mut self, pos: Seek) -> Result { ... }
// `read_all` требует экземпляр `MyFile`.
pub fn read_all(&mut self) -> Result { ... }
// `close` принимает аргумент `self`, не ссылки `&self` или `&mut self`,
// который означает, что этот метод *перемещает* свой объект, эффективно поглощая его.
pub fn close(self) -> Result { ... }
}
impl Drop for MyFile {
// Определяем деструктор для автоматического закрытия экземпляра `MyFile`,
// если мы еще не закрыли его.
fn drop(&mut self) { ... }
}
Давайте перепишем наш изначальный пример:
fn read_contents_of_file(path: &Path) -> Result {
let mut my_file = MyFile::open(path)?;
// Обратите внимание на `?`. Это простой оператор, который просит
// компилятор проверить успешность выполнения операции.
// *Единственный* способ получить экземпляр `MyFile`
// это иметь успешно завершенным `MyFile::open`.
// В этой строке `my_file` это объект `MyFile`,
// который можно использовать.
let result = my_file.read_all()?; // Корректно.
my_file.close(); // Корректно.
// Поскольку `my_file.close()` поглощает `my_file`,
// эта переменная больше не существут.
my_file.seek(Seek::Start)?; // Ошибка, которую обнаружит компилятор.
result
}
Это работает и в более сложных случаях:
fn read_contents_of_file(path: &Path) -> Result {
// Аналогично.
let mut my_file = MyFile::open(path)?;
let result = my_file.read_all()?; // Корректно.
if are_we_happy_yet() {
my_file.close(); // Корректно.
}
// Поскольку `my_file.close()` поглощает `my_file`,
// эта переменная больше не существует, по крайней мере,
// в данной ветви выполнения кода.
my_file.seek(Seek::Start)?; // Ошибка, которую обнаружит компилятор.
result
// Если мы не закрыли `my_file`, то по выходе из блока кода,
// в котором мы его определили (в данном случае, это тело функции),
// здесь сработает его деструктор, который закроет файл.
}
Ключевой момент заключается в том, что система типов Rust обеспечивает соблюдение того факта, что переменная не может быть использована после перемещения. В нашем случае my_file.close() переместил значение, эффективно поглотив его.
Даже если бы мы попытались скрыть переменную где-то в другом месте и повторно использовать её после вызова my_file.close(), эта попытка была бы пресечена компилятором:
fn read_contents_of_file(path: &Path) -> Result {
// Аналогично.
let mut my_file = MyFile::open(path)?;
let result = my_file.read_all()?;
let mut my_file_sneaky_backup = my_file;
// Здесь мы переместили `my_file` в `my_file_sneaky_backup`.
// Поэтому мы не можем больше использовать.
my_file.close(); // Ошибка, которую обнаружит компилятор.
my_file_sneaky_backup.seek(Seek::Start)?;
result
// Если мы не закрыли `my_file`,
// здесь сработает его деструктор, который закроет файл.
}
Давайте испробуем иной путь, чтобы обмануть компилятор, для доступа к файлу после его закрытия:
fn read_contents_of_file(path: &Path) -> Result {
let my_shared_file = Rc::new(RefCell::new(MyFile::open(path)?));
// Здесь `my_shared_file` это shared указатель на мутабельный
// экземпляр `MyFile`, наподобие обычной
// ссылки в Java, C# или Python.
let result = my_shared_file.borrow_mut()
.read_all()?; // Корректно.
let my_shared_file_sneaky_backup = my_shared_file.clone();
// Мы клонировали указатель, создав второй способ доступа к `my_shared_file`.
// Давайте удостоверимся, что мы можем использовать бэкап
// и оригинальный файл:
my_shared_file_sneaky_backup.seek(Seek::Start)?; // Корректно.
my_shared_file.seek(Seek::Start)?; // Также корректно.
// Ха-ха, теперь-то мы, конечно, можем закрыть `my_shared_file`,
// а потом манипулировать `my_shared_file_sneaky_backup`,
// словно мы в Java, C# или Python!
// Да вот беда, мы не можем вызвать `my_shared_file.close()`,
// потому что укрытый `MyFile` разделен (shared),
// что означает, что никто не может *перемещать* его.
my_shared_file.close(); // Ошибка, которую обнаружит компилятор.
my_shared_file_sneaky_backup.seek(Seek::Start)?;
result
// Если мы не закрыли `my_file`, деструктор закроет его здесь.
}
И снова наши поползновения были пресечены компилятором. В самом деле, если явно не перейти в unsafe режим, мы не сможем разбить инвариант, в котором seek не может быть использован после закрытия.
Этот пример демонстрирует первый кирпич типовых состояний в Rust: типизированную операцию перемещения. Но мы разобрались только с тривиальным случаем, в котором файлы имеют лишь два состояния: открыт и закрыт.
Давайте посмотрим, как мы можем управиться с более сложными случаями.
Сложные типовые состояния
Вместо файлов, давайте теперь рассмотрим следующий (и, по общему признанию, довольно тупой) сетевой протокол:
1. Отправитель отправляет сообщение \"HELLO\".
2. Приемник получает сообщение \"HELLO\", отвечает сообщением \"HELLO, YOU\".
3. Отправитель получает сообщение \"HELLO, YOU\", отвечает случайным числом.
4. Получатель получает номер от отправителя, отвечает тем же номером.
5. Отправитель получает одинаковое количество от приемника, отвечает \"BYE\".
6. Получатель получает \"BYE\" от отправителя, отвечает \"BYE, YOU\".
7. Вернитесь к 1.
Любое другое сообщение игнорируется.
Мы можем спроектировать нашего Отправителя (и аналогично Получателя) так, чтобы гарантировать, что операции выполняются в правильном порядке. На данный момент мы не заботимся об идентификации корреспондента или числа.
Для этой цели мы объединим типовые состояния с другим методом, хорошо известным функциональным программистам, таким как фантомные типы.
// Серия типов нулевого размера (нет полей => нет состояния => в рантайме не существуют),
// представляющих состояние отправителя.
// Значение не имеет значения, только тип
// (отсюда и название \"фантомный тип\").
struct SenderReadyToSendHello;
struct SenderHasSentHello;
struct SenderHasSentNumber;
struct SenderHasReceivedNumber;
struct Sender {
/// Актуальная реализация сетевого I/O.
inner: SenderImpl;
/// Поле нулевого размера, не существующее во время выполнения.
state: S;
}
/// Следующие методы могут быть вызваны независимо от состояния.
impl Sender {
/// Порт, используемый для подключения отправителя.
fn port(&self) -> usize;
/// Закрыть отправителя, раз и навсегда.
fn close(self);
}
/// Следующий метод может быть вызван только в состоянии SenderReadyToSendHello.
impl Sender {
/// Отправить приветствие.
///
/// Этот метод поглощает отправителя в его текущем состоянии
/// и возвращает его в новом состоянии.
fn send_hello(mut self) -> Sender {
self.inner.send_message(\"HELLO\");
Sender {
/// Перемещаем реализацию сетевого I/O.
/// Компилятор достаточно умён,
/// чтобы понять, что это не требует никакой рантайм-операции.
inner: self.inner,
/// Заменяем поле нулевого размера.
/// Эта операция будет вычищена во время выполнения.
state: SenderHasSentHello
}
}
}
/// Следующий метод может быть вызван только в состоянии SenderHasSentHello.
impl Sender {
/// Ждать, пока получатель не отправит \"HELLO, YOU\",
/// ответить числом.
///
/// Вернуть отправитель в состоянии `SenderHasSentNumber`
fn wait_respond_to_hello_you(mut self) -> Sender {
// ...
}
/// Если получатель отправляет \"HELLO, YOU\", ответить числом и
/// вернуть отправитель в состоянии `SenderHasSentNumber`.
///
/// Иначе вернуть неизмененное состояние.
fn try_respond_to_hello_you(mut self) -> Result {
// ...
}
}
/// Следующий метод может быть вызван только в состоянии SenderHasSentNumber.
impl Sender {
/// Ждать, пока получатель не отправит число, ответить \"BYE\".
///
/// Вернуть отправитель в состоянии `SenderReadyToSendHello`
fn wait_respond_to_hello_you(mut self) -> Sender {
// ...
}
/// Если получатель отправляет число, ответить и вернуть отправитель
/// в состоянии `SenderReadyToSendHello`.
///
/// Иначе вернуть неизмененное состояние.
fn try_respond_to_hello_you(mut self) -> Result {
// ...
}
}
Из этого дизайна очевидно, что Отправитель может следовать только такому протоколу:
1. из шага 1 (SenderReadyToSendHello) он может идти только к шагу 3;
2. из шага 3 (SenderHasSentHello) он может только либо оставаться на шаге 3 или идти к шагу 5;
3. из шага 5 (SenderHasSentNumber) он может только либо оставаться на шаге 5 или идти к шагу 1.
Любая попытка нарушить протокол будет заблокирована системой типов.
Если вам когда-нибудь понадобится работать с сетевыми протоколами, драйверами устройств, промышленными устройствами со специфичными инструкциями безопасности или OpenGL/DirectX/чем угодно еще, что потребует от вас выполнения сложных взаимодействий с \"железом\", вы определенно будете счастливы иметь такие гарантии!
Добро пожаловать в мир типовых состояний.
Краткое примечание: за типовые состояния
Продолжая наш сетевой пример, что если мы захотим, скажем, сохранять число, отправленное сервером, чтобы проверить, что означает ответ? Чтобы сделать это, мы можем сохранять число в SenderHasSentNumber:
struct SenderHasSentNumber {
number_sent: u32,
}
И снова, компилятор будет проверять, что код получает доступ к number_sent, только когда отправитель находится в состоянии SenderHasSentNumber.
Мы потеряем (крошечный) объем производительности, компилятор не сможем оптимизировать трансформацию Отправителя между идентичными представлениями, но вообще это того стоит.
Ти́ повые состояния (`typestates`) in Rust Мой вольный авторский перевод заинтересовавшего меня поста, который я прочитал, просматривая свежий выпуск \"Неделя в Rust\". Оригинал можно найти здесь. [...] читать описание

Хожу везде в поисках классной музыки, не важен стиль и полит. корректность, все могут ошибаться (я против политики) всё новое и порядком забытое старое найдёте в моих файлах в муз. [...] читать описание

Дания
Перед тем как заводить машину, водитель обязан проверить фары, тормоза, управление и звуковой сигнал. Кроме того, необходимо произвести внешний осмотр для того, чтобы убедиться, что под машиной не спрятались дети.
Если при проезде автомобиля мимо конной повозки лошадь испугается, в соответствии с законом водитель должен съехать на обочину и остановиться. Если лошадь начнет сильно нервничать и ее придется успокаивать, по закону водитель должен накрыть машину чем-нибудь.
Попытка побега из тюрьмы не считается преступлением, однако если беглеца поймают, ему придется досиживать в тюрьме свой срок.
Нельзя заводить машину, если под ней кто-то есть.
При движении фары автомобиля должны быть всегда включены, чтобы его можно было отличить от стоящих машин.
При движении перед автомобилем должен идти человек, размахивающий флажком, чтобы предупредить конные повозки о приближении автомобиля.
Англия
Членам парламента запрещено входить в Палату общин в доспехах.
Bce англичане, достигшие 14 лет, обязаны практиковаться в стрельбе из лука в течение 2 часов в неделю под руководством местного священника.
Мужчине разрешается мочиться в общественном месте, если это происходит у заднего колеса его автомобиля и при этом его правая рука находится на автомобиле.
Законы городов
Честер
Разрешается стрелять в валлийцев из лука в пределах городских стен после полуночи.
Херфорд
Разрешается стрелять в валлийцев из лука на территории, принадлежащей собору, по воскресеньям в течение дня.
Лондон
Лондонские наемные кареты (такси) в соответствие с законом должны возить тюк сена или мешок овса.
Йорк
При встрече с шотландцем в любой день недели, кроме воскресенья, разрешается застрелить его из лука
Если шотландец пукнет в воскресенье, разрешается застрелить его из лука
Франция
Запрещается сажать или парковать летающие тарелки в виноградниках на всей территории Франции.
Для владельцев свиней противозаконным является называть поросенка «Наполеон».
Китай
Спасать тонущего человека противозаконно, поскольку это является вмешательством в его судьбу.
Для того чтобы студенту позволили посещать колледж, он должен быть умным.
Индия
Противозаконным является оставлять более 5 крысиных шерстинок или кусочков помета на килограмм риса, пшеницы, кукурузы или крупы.
Израиль
Законы городов
Арад
Правонарушением считается владение передвижной кастрационной лечебницей, поскольку это относится к розничной торговле.
Кирият-Моцкин
По выходным запрещено включать яркий свет и громко разговаривать.
Южная Корея
Офицеры дорожной полиции обязаны сообщать обо всех взятках, которые они получили от водителей.
Таиланд
Вам придется заплатить штраф, сумма которого составляет 600 долларов США, если вас задержат за то, что вы выбросили жевательную резинку на тротуар. Если у вас не окажется денег для того, чтобы заплатить штраф, вас могут посадить в тюрьму.
Наступать на любые монеты и банкноты национальной валюты является правонарушением.
Канада
Каждая пятая песня, звучащая на канадском радио, должна быть в исполнении гражданина Канады, поэтому песни Селин Дион и Брайана Адамса можно очень часто услышать в эфире.
Платить за вещь, которая стоит 50 центов, используя только монеты достоинством по пенни (1 цент), противозаконно.
Запрещается запускать ракеты в район, не предназначенный для этого. Нарушитель данного закона может быть подвергнут штрафу в размере 75 долларов США.
Законы провинций
Альберта
Фирмы в соответствии с законом обязаны иметь перила для того, чтобы привязывать лошадей.
После освобождения из тюрьмы согласно законодательству бывшему арестанту обязаны предоставить заряженный пистолет и лошадь для того, чтобы он смог уехать из города.
Квебек
Все вывески должны быть написаны по-французски. Если владелец фирмы хочет поместить вывеску на английском языке, то буквы английской надписи должны быть по размеру в два раза меньше букв французской надписи. Законов, регламентирующих использование надписей на других языках, не существует.
Вне помещений все надписи должны быть сделаны только на французском языке.
Законы городов
Калгари
Противозаконно зажигать фейерверки и играть в снежки без разрешения со стороны городского совета.
Эдмонтон
Все велосипедисты, прежде чем сделать поворот, обязаны указать на это рукой. При этом они постоянно должны держать обе руки на руле.
Биконсфилд
Правонарушением считается использование более двух цветов при покраске дома.
Глупые законы Америки
Законы городов
Бельведер
Согласно указу городского совета «собаки не должны находиться в общественных местах без хозяина на поводке».
Блит
В соответствии с распоряжением городских властей человек должен являться владельцем как минимум двух коров прежде, чем ему будет позволено носить ботинки ковбоя.
Чико
Взрыв ядерного устройства в пределах города может повлечь за собой штраф в размере 500 долларов.
Глендейл
Демонстрировать фильмы ужасов разрешается только в понедельник, вторник и среду.
Голливуд
В соответствии с законом гнать по Голливудскому бульвару более 200 овец одновременно запрещается.
Лос-Анжелес
Запрещается одновременно купать двоих детей в одной ванне.
Не разрешается плакать при даче свидетельских показаний в суде.
Запрещается лизать жаб. Жабы выделяют вещество, которое некоторые лижут для того, чтобы добиться эффекта наркотического воздействия.
США. Законы штатов
Коннектикут
Полиция не имеет права останавливать вас за езду на велосипеде со скоростью свыше 65 миль в час.
Маринованный огурец должен быть упругим, чтобы быть признанным таковым официально.
Делавэр
Противозаконно пытаться заложить в ломбард собственный протез.
Индиана
Вскрывать консервные банки при помощи огнестрельного оружия противозаконно.
Все знают, что число Пи равно 3,1415, но в Индиане значение числа Пи составляет 4.
Гражданам запрещается посещать театр или кино, а также ездить в трамвае в течение 4 часов после того, как они ели чеснок.
Айова
В соответствии с законом поцелуй может длиться не более 5 минут.
Однорукие пианисты по закону обязаны играть бесплатно.
Мэн
Домовладельцы могут быть оштрафованы в случае, если они не снимут рождественские украшения до 14 января.
Массачусетс
Люди, присутствующие на поминках, имеют право съесть не более трех сэндвичей.
Храп является нарушением закона, за исключением случаев, когда все окна в спальне закрыты и заперты надлежащим образом.
Миссури
Любой город может ввести налог на содержание оркестра, если в этом оркестре мэр играет на малой флейте и каждый музыкант умеет есть горох при помощи ножа.
Нью-Джерси
«Неодобрительно смотреть» на офицера полиции считается противозаконным.
Задерживать голубя, возвращающегося домой, или мешать его полету противозаконно.
Оклахома
В Оклахоме противозаконным считается откусывать от чужого гамбургера.
Люди, которые корчат рожи собакам, могут быть подвергнуты штрафу или тюремному заключению.
Собаки должны иметь разрешение, подписанное мэром, для того, чтобы собираться в группы по три или более особей в пределах частной собственности.
Пенсильвания
Специальный указ о чистоте запрещает домохозяйкам прятать грязь и пыль под ковер в своем доме.
Нарушением закона является проживание более 16 женщин в одном доме одновременно, поскольку это предполагает существование борделя. Тем не менее до 120 мужчин могут проживать вместе, и это не считается противозаконным.
Автомобили, которые едут по дорогам штата ночью, каждую милю должны выстреливать ракету в воздух и ждать 10 минут, чтобы дорога расчистилась.
Если водитель видит стадо лошадей, он обязан съехать на обочину дороги и накрыть машину одеялом или чехлом, которые были специально раскрашены для того, чтобы замаскировать автомобиль.
В случае если лошадь отказывается проходить мимо автомобиля на дороге, владелец автомобиля обязан разобрать его и спрятать части в кустах.
Теннесси
Женщинам запрещается водить машину, за исключением случаев, когда перед автомобилем идет или бежит мужчина, размахивающий красным флажком, чтобы предупредить пешеходов и других водителей об опасности.
Техас
Противозаконно доить чужую корову или писать на ней краской.
Энциклопедия «Британика» запрещена, поскольку она содержит рецепт для приготовления пива в домашних условиях.
Вашингтон
Закон, призванный сократить число преступлений, гласит: «Любой водитель, имеющий преступные намерения, обязан при въезде в город остановиться и по телефону сообщить о них начальнику полиции».
Противозаконно наносить на флаг США узор в горошек.
Противозаконно делать вид, что твои родители богаты.
Законы городов
Уотербери (Коннектикут)
Косметологам запрещается бормотать, напевать и насвистывать при работе с клиентом.
Стерлинг (Колорадо)
Котам разрешается свободно бегать только в том случае, если у них есть задние габаритные огни.
Льюис (Делавэр)
Вступление в брак на спор является законным основанием для расторжения подобного брака.
Чикаго (Иллинойс)
Животных также могут посадить в тюрьму. Обезьяна провела в тюрьме пять дней за кражу из магазина.
Джольет (Иллинойс)
Женщину могут арестовать за то, что она примеряет в магазине более шести платьев за один раз.
Кенилворт (Иллинойс)
Петухи, которые собираются кукарекать, должны отойти от жилых домов на расстояние 300 футов, куры — на расстояние 200 футов.
Натома (Канзас)
Противозаконно практиковаться в метании ножей, используя в качестве мишени мужчин, носящих костюмы в полоску.
Портленд (Мэн)
У человека, идущего по улице, шнурки должны быть завязаны
Рамфорд (Мэн)
Жильцам запрещается кусать домовладельцев.
Миннеаполис (Миннесота)
Человека, виновного в двойной парковке, следует заковать в кандалы и держать на хлебе и воде.
Кливленд (Огайо)
Закон запрещает ловить мышей без охотничьей лицензии.
Женщинам запрещается носить лакированные туфли, так как мужчины могут увидеть в них отражение нижнего белья.
Клинтон каунти (Огайо)
Человек, прислонившийся к общественному зданию, может быть подвергнут штрафу.
Оксфорд (Огайо)
Для женщины противозаконным считается снимать одежду перед портретом мужчины.
Полдинг (Огайо)
Полицейский имеет право укусить собаку, чтобы заставить ее замолчать.
Кламат-фолс (Орегон)
Запрещается свистеть под водой.
Запрещается кататься на роликах в общественных туалетах.
Аллентаун (Пенсильвания)
Все пожарные гидранты следует проверять за час до пожара.
Ричмонд (Виргиния)
Бросать монету в ресторане, чтобы выяснить, кто будет платить за кофе, противозаконно.
Расин (Висконсин)
Запрещается будить спящих пожарных.
Сент-Круа (Висконсин)
Женщинам запрещается носить одежду красного цвета в общественных местах.
Ссылка на:Источник
Глупые законы стран Европы Дания Перед тем как заводить машину, водитель обязан проверить фары, тормоза, управление и звуковой сигнал. Кроме того, необходимо произвести внешний осмотр для того, чтобы убедиться, что под машиной не спрятались дети. [...] читать описание

Но оказалось не только внешне. Сменили формат расширений. С OEX на NEX . И сменили формат расширений.
К 15ой Опере подходят расширения от хрома. Для их установки необходимо сменить расширение.
Пока опера не упаковывает расширения. Хотя устанавливает из распакованного.
Опера вышла в новой версии. Разработчики её сделали внешне похожей на Хром. [...] читать описание
