Search
Write a publication
Pull to refresh
-14
0
Фролов Дмитрий @FDA

Инженер-системотехник

Send message

Квантовая физика: что на самом деле реально?

Reading time8 min
Views105K
image

По словам Оуэна Маруни, работающего физиком в Оксфордском университете, с момента появления квантовой теории в 1900-х годах все говорили о странности этой теории. Как она позволяет частицам и атомам двигаться в нескольких направлениях одновременно, или одновременно вращаться по часовой и против часовой стрелки. Но словами ничего не докажешь. «Если мы рассказываем общественности, что квантовая теория очень странная, нам необходимо проверить это утверждение экспериментально,- говорит Маруни. – А иначе мы не наукой занимаемся, а рассказываем про всякие закорючки на доске».

Именно это навело Маруни сотоварищи на мысль разработать новую серию экспериментов для раскрытия сути волновой функции – загадочной сущности, лежащей в основе квантовых странностей. На бумаге, волновая функция – просто математический объект, обозначаемый буквой пси (Ψ) (одна из тех самых закорючек), и используется для описания квантового поведения частиц. В зависимости от эксперимента, волновая функция позволяет учёным вычислять вероятность наблюдения электрона в каком-то конкретном месте, или шансы того, что его спин ориентирован вверх или вниз. Но математика не говорит о том, что на самом деле такое волновая функция. Это нечто физическое? Или просто вычислительный инструмент, позволяющий работать с невежественностью наблюдателя касательно реального мира?
Читать дальше →

Памятка начинающего преподавателя, или почему не стоит работать преподавателем в вузе

Level of difficultyEasy
Reading time18 min
Views164K

Примечание.Прошло пять лет, как было опубликовано это эссе. Перед его прочтением читателю нужно знать следующее: эссе было написано вскоре после ухода из вуза и ощущается негативным, к тому же в нём много личного. Коллега с другим характером и другим опытом работы, наверное, о том же самом написал бы по-другому. Я с удовольствием продолжаю периодически читать лекции, развивать образовательные программы, учить современным вещам. Но так же я вижу, что за эти пять лет ситуация с преподавательской работой не стала лучше. И мне очень жаль, что я по прежнему не могу сказать молодому выпускнику: иди преподавать в университет. Правда, жаль! О том, почему так, и было написано это эссе. 3 июля 2020.


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


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


Читать дальше →

Как составить свой скрипт продаж. Как обойти секретаря

Reading time9 min
Views18K
image
Именно в этом отделе продаж всё начиналось.

Обширный гид по телефонным продажам для b2b, часть 3 из 4.
В этой части: я расскажу, как сформировать хороший скрипт продаж для себя, а также какие хитрости использовать, чтобы обойти секретаря и связаться непосредственно с руководителем. Ссылки на предыдущие части указаны вначале статьи.
Читать дальше →

Отечественные защитники речи

Reading time15 min
Views18K
По мере нарастания угрозы новой мировой войны в 1930-е годы руководство СССР осознало острую необходимость развёртывания научно-исследовательских и конструкторских работ в области техники связи. Широкомасштабный проект был незамедлительно начат, и поставленную задачу с «честью», ценой надломленных людских судеб, выполнили.



1930–1940 — первый этап. Было разработано аппаратуру засекречивания телефонных переговоров для коротковолновой связи. Этим занимался коллектив будущего академика Котельникова.

1941-1947 — второй этап. Были проведены первые НИОКР, выпущены малые серии аппаратуры, собраны коллективы разработчиков, которые занимались обслуживанием самой аппаратуры и развитием службы дешифрования.

В 1948 году была образована Марфинская лаборатория, что послужило началом третьего этапа. Целью данного этапа стала -разработка аппаратуры, которая обеспечила бы стойкость засекречивания переговоров по стандартному телефонному каналу.
Подробности

Сделай сам: dll hijacking под MS Office для самых маленьких

Reading time5 min
Views30K
Прошло уже три дня с тех пор, как исследователь Parvez Anwar опубликовал информацию о множественных dll hijacking уязвимостях в продуктах Microsoft Office, а какой-либо реакции не наблюдается. Ни CVE, ни сообщений на специализированных ресурсах, Windows Update не качает свежих патчей. Что ж, может, так и нужно, может быть, это не уявимость, а особенность продукта?
Между тем, эксплуатация этой особенности проста и доступна даже ребенку. И, раз уж производитель пока эту «фичу» не удалил, почему бы не написать о ней небольшую статью.

Речь пойдет о Windows 7. Работает ли это на других версиях — мне на текущий момент неизвестно, нужно проверять. Принцип действия описываемого явления (как и многих других, впрочем) основан на старой доброй технологии COM/OLE/ActiveX.
Читать дальше →

К 150-летию полета на Луну

Reading time3 min
Views12K
image

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

На двадцатой секунде толпа дрогнула. Многим пришла в голову мысль, что и там, внутри снаряда, отважные путешественники также считают эти страшные секунды! Из толпы стали вырываться отдельные крики: — Тридцать пять! Тридцать шесть! Тридцать семь! Тридцать восемь! Тридцать девять! Сорок! Пли!!!

Раздался ужасный, неслыханный, невероятный взрыв! Невозможно передать его силу — он покрыл бы самый оглушительный гром и даже грохот извержения вулкана. Из недр земли взвился гигантский сноп огня, точно из кратера вулкана. Земля содрогнулась, и вряд ли кому из зрителей удалось в это мгновение усмотреть снаряд, победоносно прорезавший воздух в вихре дыма и огня.


На календаре была дата 1 декабря 1865 года. Снаряд должен был достигнуть Луны – 4 декабря 1865 года. Сто пятьдесят лет назад.

Конечно, трудно не узнать роман Жюля Верна «С Земли на Луну». Но откуда взялась дата? В романе год не был указан. Только десятилетие 186…

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

Читать дальше →

Бесплатные базы патентной информации онлайн. Версия 1.09

Reading time3 min
Views63K
Подборка ссылок на патентную информацию и поисковые ресурсы в интернете.
Версия 1.0. Будем дополнять.
Поделитесь в комментариях своими ресурсами. Будем благодарны и добавим в пост для удобства.



Подробности

Контрольная цифра методом Дамма

Reading time3 min
Views18K
КДПВКонтрольную цифру часто добавляют к идентификаторам, которые люди могут записывать или передавать с ошибками, чтобы эти ошибки потом обнаруживать.

Примерами могут служить последняя цифра номера кредитной карты, девятая цифра VIN автомобилей, продаваемых в в США, или последняя цифра ISBN.

Алгоритм контрольной цифры ван Дамма — относительно новый и потому малоизвестный. Он опубликован 2004 году.

Алгоритм обнаруживает все ошибки в одной цифре и все одиночные перестановки соседних цифр. Он заметно проще, чем сравнимый по возможностям алгоритм Верхуффа, и не требует использования специальных символов (таких как X в 10-значном ISBN).
Читать дальше →

Пик вычислений перед пиком нефти?

Reading time7 min
Views29K
Сегодня попробуем на себе популярный в блогосфере жанр Кассандры — негативных пророчеств. Итак, “общеизвестно”, что зима близко, человечество во всём достигло пределов роста и мы доживаем последние спокойные деньки перед неминуемым скатыванием в новые темные века. Последним источником техно оптимизма и самым ярким символом прогресса, который противостоял последние 20 лет многим стагнирующим процессам на планете стало бурное развитие микроэлектроники. Пришло время сорвать покровы и с этой области.

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

Как видно из графика, уже три года производительность топового суперкомпьютера (выраженная в операциях с плавающей точкой в секунду — FLOPS) не растёт. Более того, если заглянуть в анонсированные планы, то можно с уверенностью сказать, что ситуация не изменится как минимум в ближайший год. А значит стагнация производительности топового суперкомпьютера распространится и на 2016 год:

image

Читать дальше →

Векторный, открытый и удобный: Inkscape 0.91

Reading time4 min
Views45K
Давно увлекаюсь векторной графикой, особенно ее созданием, отрисовкой с нуля. Много программ я пробовал, но в основном моим рабочим инструментом был CorelDraw, который меня всем устраивал. Не помню, почему и зачем я начал искать ему альтернативы, но в один прекрасный день я наткнулся на Inkscape. Это была любовь с первого взгляда…

Я все ждал, что на Хабре появится статья-обзор новых возможностей версии Inkscape 0.91, а ее все нет. Решил написать сам, если что не так – не судите строго, пишу редко.

Под катом будет много иллюстративных примеров и технических деталей.

image
Читать дальше →

«Продажа» технических идей заказчику

Reading time6 min
Views6.2K


Мы все помним, как в 2007 году первый iPhone произвел настоящую революцию в мире мобильных телефонов — был представлен очень удобный, красивый, полноэкранный смартфон. Журналы пестрели заголовками, какой прорыв совершил Apple — казалось бы, нет и не было ничего похожего на iPhone. При этом едва ли кто помнит сейчас такой телефон, как IBM Simon. На самом деле он был очень похож на iPhone — всю его переднюю панель занимал сенсорный экран. Так же, как у iPhone, у него была лишь одна механическая кнопка. Так же, как и в iPhone, в нем были разные приложения. Но, в отличие от iPhone, IBM Simon появился ещё в 1994 году, аж за 13 лет до iPhone! Так почему же мы хорошо помним появление первого iPhone и совсем забыли об IBM Simon, в котором были реализованы те же идеи, но намного раньше? Идея, на самом деле, была отличной. Но подана она была несвоевременно и не совсем в правильной «упаковке»: дизайн был далек от совершенства, цена была слишком высокой, целевая аудитория была не та и т. д.

Так как же «упаковывать» и «продавать» идеи так, чтобы они стали «айфонами», а не «саймонами»?
Читать дальше →

Минпромторг выделит субсидии на погашение кредитов участникам программы импортозамещения электроники

Reading time3 min
Views3K
Минпромторг окажет поддержку участникам программы импортозамещения радиоэлектронной промышленности. Развивать радиоэлектронику министерство намерено по четырем направлениям: телекоммуникационное оборудование, вычислительная техника, оборудование для производства электронных компонентов и системы интеллектуального управления. Ведомство выделит им субсидии для частичной компенсации задолженности по кредитам и расходов на научно-исследовательские работы.

Чтобы получить субсидии, компании должны пройти конкурс Минпромторга. Компенсацию получат только победители. Так, проектам-победителям в области разработки систем интеллектуального управления дадут 1 миллиард рублей. Проекты в сфере производства телекоммуникационного оборудования могут получить до 1,5 миллиардов рублей. Компании, производящие специальное технологическое оборудование, могут претендовать на 2 миллиарда рублей. Больше всех получат проекты в области разработки вычислительной техники – до 2,5 миллиардов.

Заемные средства необходимы компаниям на аренду земли и зданий, разработку проектной документации и создание инфраструктуры. Еще одним условием для получения субсидии является большой срок кредита. Он должен превышать год, и дата его оформления должна попадать в интервал с 2016 по 2025 год. Взявшим рублевые кредиты субсидируют не более 90% ключевой ставки Центробанка, если ставка кредита ее превышает. В противном случае, государство оплатит 90% затрат на выплату процентов.
Читать дальше →

C#, способы хранения настроек программы

Reading time5 min
Views159K

Введение


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

C# и app.config


На хабре уже была посвящена этому тема, поэтому… перейти

C# и Properties.Settings


Информация о Properties.Settings

Организация Properties.Settings — это обычный xml файл, который можно найти в папке пользователя:

С:\ Users \ [user name] \ AppData \ Local \ [ (Project Name) or (AssemblyCompany) ] \ [name project_cashBuild] \ [AssemblyVersion] \ user.config

Для начала нам нужно создать такие переменные для Properties.Settings. Перейдем в Properties -> Settings.settings:
Читать дальше →

Полвека «универсальным машинным языкам» (1966—2016): прошлое, настоящее, будущее

Reading time27 min
Views19K
КДПВ

Прошлое


Повествование можно начать с 1962 г., когда в Кембриджском университете началась работа над CPL («Cambridge Programming Language») — «усовершенствованным вариантом» ALGOL-60. К работе над языком подключился аспирант Мартин Ричардс; главной сложностью в реализации нового ЯП ему показалась необходимость ручного портирования компилятора для разных компьютерных платформ. В частности, когда кембриджский EDSAC-2 заменили на Atlas-2, разработчики CPL потратили много времени на портирование своего компилятора для новой платформы.

Диссертация Мартина была посвящена «само-компилирующемуся» CPL: разработанный Мартином компилятор был написан на сильно упрощённом варианте CPL, компилятор которого несложно было написать на тогдашнем макроассемблере. Перенос CPL на новую платформу теперь можно было выполнить в два шага:
  1. Вручную пишем компилятор «упрощённого CPL»;
  2. Компилируем им компилятор «полного CPL».

На этом Мартин не остановился, и разработал BCPL — систему для разработки переносимых компиляторов. Компилятор BCPL генерировал псевдокод, названный Мартином «OCODE».
OCODE выглядел примерно так:
OCODE «расшифровка» («procode»)
94 5 L1 83 73 69 86 69
95 4
42 0
42 0 40 2 14
83
42 0 42 1 40 2 14 83
42 2
40 3 42 1 15
92
85 L5
90 L6
42 1 40 4 40 2 14 83
40 4 42 1 14 80 4 
90 5 40 4 40 5 88 L6
91 4
42 2 40 3 42 1 15 92
85 L7
90 L8 40 4 40 2 14
8 87 L9
40 4 42 2 11 92
85 L11
90 L10
42 0 40 6 40 2 14 83
40 4 40 6 14 80 6
90 L11
40 6 40 3 22 86 L10
91 6 90 L9
40 4 42 1 14 80 4
90 L7 40 4 40 5 88 L8
91 4 97 103 0
ENTRY 5 L1  'S' 'I' 'E' 'V' 'E'
SAVE 4
LN 0
LN 0 LP 2 PLUS
STIND
LN 0 LN 1 LP 2 PLUS STIND
LN 2
LP 3 LN 1 MINUS
STORE
JUMP L5
LAB L6
LN 1 LP 4 LP 2 PLUS STIND
LP 4 LN 1 PLUS SP 4
LAB L5 LP 4 LP 5 ENDFOR L6
STACK 4
LN 2 LP 3 LN 1 MINUS STORE
JUMP L7
LAB L8 LP 4 LP 2 PLUS
RV JF L9
LP 4 LN 2 MULT STORE
JUMP L11
LAB L10
LN 0 LP 6 LP 2 PLUS STIND
LP 4 LP 6 PLUS SP 6
LAB L11
LP 6 LP 3 LS JT L10
STACK 6 LAB L9
LP 4 LN 1 PLUS SP 4
LAB L7 LP 4 LP 5 ENDFOR L8
STACK 4 RTRN ENDPROC 0
; заголовок процедуры
; стековый кадр (два параметра и две локальные переменные)
; поместить на стек число 0
; поместить ещё один 0, прибавить к нему 2-ой элемент стека
; записать в массив на вершине стека значение под ним
; всё то же самое для 1-ого элемента массива
; поместить на стек число 2
; вычесть единицу из значения 3-его элемента стека
; записать результат в локальную переменную
; перейти к метке L5
; объявление метки L6
; взять 4-ый элемент стека, записать в массив по этому индексу 1
; прибавить к 4-ому элементу стека 1, записать результат обратно
; L5: перейти к метке L6, если 4-ый элемент стека <= 5-ому
; объявление, что на стеке сейчас четыре элемента
; вычесть единицу из значения 3-его элемента стека
; перейти к метке L7
; L8: сложить 4-ый и 2-ой элементы стека
; прочитать значение по этому адресу; если это 0, перейти к L9
; умножить 4-ый элемент на два
; перейти к метке L11
; объявление метки L10
; взять 6-ой элемент стека, записать в массив по этому индексу 0
; прибавить к 6-ому элементу стека 4-ый, записать рез-т обратно
; объявление метки L11
; перейти к метке L10, если 7-ой элемент стека меньше 4-ого
; на стеке сейчас шесть элементов; объявление метки L9
; прибавить к 4-ому элементу стека 1, записать результат обратно
; L10: перейти к L8, если 4-ый элемент стека <= 5-ому
; на стеке четыре элемента; окончание процедуры
(Для экономии места, последовательности команд записаны в одну строчку. Мартин в своём руководстве по BCPL поступает точно так же.)

Исходный код на BCPL:
LET sieve(workvec, vecsize) BE
{
  workvec!0 := 0
  workvec!1 := 0
  FOR i = 2 TO vecsize-1 DO workvec!i := 1
  FOR i = 2 TO vecsize-1 DO
    IF workvec!i DO
    { LET j = 2 * i
      WHILE j < vecsize DO
      { workvec!j := 0
        j := j + i
      }
    }
}
В более новых версиях OCODE добавилась поддержка чисел с плавающей точкой (соответственно, набор поддерживаемых опкодов почти удвоился), а также удалили опкод ENDFOR — вместо него генерируется пара LE JT.

Среди «универсальных машинных языков» OCODE уникален тем, что метки в нём определяются специальными инструкциями — т.е. для интерпретации программы её нужно сначала всю загрузить в память, и найти в ней метки.
— а отдельная программа, кодогенератор, превращала файл с таким псевдокодом в исполнимую программу для конечного процессора. OCODE сохранялся в виде текстового файла из десятичных чисел, разделённых пробелами и переводами строк: в то время, когда OCODE разрабатывался, привязка формата файла к конкретному размеру байта ограничивала бы переносимость такого файла.

Компилятор BCPL(1) поставлялся в виде OCODE, и чтобы перенести его на новую платформу, нужно было:
  1. Вручную написать интерпретатор псевдокода(2) (на любом языке, хоть на Бейсике);
  2. Адаптировать кодогенератор,(3) написанный на BCPL, для своей платформы;
  3. Запустить под интерпретатором (2) компилятор BCPL (1), скормить ему кодогенератор (3), и получить на выходе исполнимый файл кодогенератора(4);
    • Интерпретатор (2) нам с этого момента больше не нужен.
  4. Прогнать через кодогенератор (4) псевдокод компилятора (1), и получить на выходе исполнимый файл компилятора.


Такой подход означал, что для переноса компилятора на новую платформу требуется лишь самый минимум низкоуровневого программирования; и действительно, реализация BCPL была завершена к 1967 г. — раньше, чем была завершена реализация CPL, начатая на несколько лет раньше!

Достоинства BCPL применительно к системному программированию вдохновили Кена Томпсона на создание языка Би, а тот — коллегу Кена, Денниса Ритчи, на создание Си. Именно из BCPL пошла традиция обозначать {фигурными скобками} блоки программы, и именно на BCPL была написана первая программа «Hello, World!».
GET "libhdr"

LET start() = VALOF
{ writef("Hello*n")
  RESULTIS 0
}
Более важная нам причина, по которой BCPL вошёл в историю: OCODE — первая универсальная «архитектура набора команд» (ISA), т.е. «виртуальная машина», не привязанная ни к какой конкретной аппаратной платформе с её особенностями. BCPL, таким образом — первый язык программирования, соответствующий парадигме «Write once, run anywhere» (WORA): программу на BCPL можно распространять в скомпилированном виде, и её можно будет запустить на любой платформе, для которой существует OCODE-кодогенератор.
Читать дальше →

АТС в кармане: настраиваем IP-телефонию для удаленной работы

Reading time8 min
Views51K
Высокоскоростной интернет стал доступен практически везде: от кафе в центре Москвы до дикого пляжа на Адриатике. Теперь оставаться на связи стало очень просто — установил пару-тройку приложений на смартфон и можно отправляться на отдых в теплые края, не опасаясь, что нужный звонок, сообщение или e-mail пройдет мимо. При общении в социальных сетях в ответ на «Привет, ты здесь?», вполне нормальным может быть: «В бегах, наберу потом». Другое дело, если на интернет-коммуникации завязан бизнес – в любой момент нужно быть готовым ответить на входящий или сделать важный исходящий звонок (даже если ты едешь на мотобайке по Патайе).

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


Читать дальше →

Применение SpeechKit Cloud API для озвучивания погоды и новостей от Yandex

Reading time9 min
Views14K
Добрый день! В данной статье хотелось бы рассказать о том, как можно сделать на сайте «Голосовой погодный и новостной информер», который бы, например при выборе города не только показывал, но и рассказывал фактический прогноз погоды, а так же произвольную новость. На самом деле этот скрипт разрабатывался для информирования в системе «Умный Дом», но может быть с легкостью переделан под любой сайт, имеющий на хостинге поддержку PHP, что и было сделано для этой статьи. В примере для синтеза речи, будет использоваться технология SpeechKit Cloud API от компании Yandex и XML парсер Yandex погоды и новостей, написанные на PHP.

Что понадобится для реализации:
  • Web сервер с поддержкой PHP (можно локальный типа Денвера).
  • Ключ Yandex SpeechKit (для некоммерческих проектов можно получить бесплатно).
  • Если ключ не дают без наличия у Вас сайта, то создать сайт можно на Hostinger.ru.
  • Список ID городов.

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

Принцип работы:
  • Отправляем запрос на получение mp3 файла, для выбранного города.
  • Парсим XML файл, получая необходимые параметры.
  • Корректируем окончания слов, для постановки правильного произношения.
  • Устанавливаем параметры генерации mp3 файла (голос, тембр, формат файла, язык, текст).
  • Генерируем mp3 файл.
  • Создаем объект Audio HTML 5 и воспроизводим файл.

Скрипт с формой для выбора городов index.html
<!DOCTYPE html>
<html lang="ru">
<head>
<title>Тест SpeechKit Cloud API от компании Yandex.</title>
<meta charset="utf-8">
</head>
<body>
<script language="javascript" type="text/javascript">
function Get_Weather()
{
   var tts_text=document.getElementById('weather').value;
   console.log(tts_text);
	var response="weather.php?&q="+encodeURI(tts_text); //путь до mp3 файла
	var audio = document.getElementById("gameMusic");
		if (audio)
		{
			audio.parentNode.removeChild(audio);
		}
	
		// создаём новый элемент audio
		audio = document.createElement("audio");
		audio.setAttribute("id", "gameMusic");
		audio.setAttribute("autoplay", "true");
		//audio.setAttribute("loop", "false");
	
		var mp3 = document.createElement("source");
		mp3.setAttribute("src", response);
		mp3.setAttribute("type", "audio/mpeg");
	
		audio.appendChild(mp3);
		audio.play();
		document.body.appendChild(audio);
}
function Get_News()
{
   var tts_text=document.getElementById('news').value;
   console.log(tts_text);
	var response="news.php?&q="+encodeURI(tts_text); //путь до mp3 файла
	var audio = document.getElementById("gameMusic");
		if (audio)
		{
			audio.parentNode.removeChild(audio);
		}
	
		// создаём новый элемент audio
		audio = document.createElement("audio");
		audio.setAttribute("id", "gameMusic");
		audio.setAttribute("autoplay", "true");
		//audio.setAttribute("loop", "false");
	
		var mp3 = document.createElement("source");
		mp3.setAttribute("src", response);
		mp3.setAttribute("type", "audio/mpeg");
	
		audio.appendChild(mp3);
		audio.play();
		document.body.appendChild(audio);
}
</script>
<h1><span>Тест SpeechKit Cloud API от компании Yandex.</span></h1>
<h2>Погода</h2>
<select size="1" onclick="Get_Weather();" id="weather"> 
			 <option disabled>Выберите город</option> 
			 <option value="27612">Москва</option> 
			 <option value="34880">Астрахань</option>
			 <option value="26063">Санкт-Петербург</option>
			 <option value="25913">Магадан</option>
</select>
<h2>Новости</h2>
<select size="1" onclick="Get_News();" id="news"> 
			 <option disabled>Выберите город</option> 
			 <option selected value="Astrakhan">Астрахань</option> 
				<option  value="Volgograd">Волгоград</option>
				<option  value="Krasnodar">Краснодар</option>				
				<option  value="Moscow">Москва</option>
				<option  value="Saratov">Саратов</option>
</select>
</body>
</html>


Горда можно добавлять путём установки новых параметров option в элементе select.

Скрипт генерации mp3 файла для погоды weather.php
<?php
	 $id=$_GET["q"]; // id города
	 $url="http://export.yandex.ru/weather-ng/forecasts/".$id.".xml"; // url xml файла 
    $xml = simplexml_load_file($url); // интерпретируем XML-файл в объект
    //параметры:
    $city=$xml['city']; //город
    $temp=$xml->fact->temperature; // температура
    $weather_type=$xml->fact->weather_type; // тип погоды
    $humidity=$xml->fact->humidity; // влажность
    $wind_direction=$xml->fact->wind_direction; // направление ветра
    $wind_speed=$xml->fact->wind_speed; // скорость ветра
    $pressure=$xml->fact->pressure; // давление
       
   
	$znak="плюс";
	if($wind_direction=="e") {	$wind_direction_text="восточный";}
	if($wind_direction=="w") {	$wind_direction_text="западный";}
	if($wind_direction=="s") {	$wind_direction_text="южный";}
	if($wind_direction=="n") {	$wind_direction_text="северный";}
	if($wind_direction=="se") {	$wind_direction_text="юго-восточный";}
	if($wind_direction=="ne") {	$wind_direction_text="северо-восточный";} 
	if($wind_direction=="sw") {	$wind_direction_text="юго-западный";}
	if($wind_direction=="nw") {	$wind_direction_text="северо-западный";} 
												
	$minus_arry=preg_match("/(-)/", $temp, $minus_out);
	if (!empty($minus_out[1]))
	{ $znak="минус";
		$temp=str_replace("-","",$temp);
	}
							
	 //градус
  	if(	$temp=="1" or $temp=="21" or $temp=="31" or $temp=="41" or $temp=="51" or $temp=="61" or $temp=="71" or $temp=="81" or $temp=="91" or $temp=="101") 
  	{
  			$text="градус";
  	} 
  	else 
  	{
	//градуса	
  	if(   $temp=="2"  or $temp=="3"  or $temp=="4"
  			or $temp=="22" or $temp=="23" or $temp=="24" 
  			or $temp=="32" or $temp=="33" or $temp=="34" 
  			or $temp=="42" or $temp=="43" or $temp=="44" 
  			or $temp=="52" or $temp=="53" or $temp=="54"
  			or $temp=="62" or $temp=="63" or $temp=="64" 
  			or $temp=="72" or $temp=="73" or $temp=="74" 
  			or $temp=="82" or $temp=="83"	or $temp=="84" 
  			or $temp=="92" or $temp=="93" or $temp=="94"
  			or $temp=="102" or $temp=="103"
  		) {$text="градуса";} else {$text="градусов";}  											
  						
  	}
  									
  									
  									
  	//процент
  			
  	if(	$humidity=="1" or $humidity=="21" or $humidity=="31" or $humidity=="41" or $humidity=="51" or $humidity=="61" or $humidity=="71" or $humidity=="81" or $humidity=="91" or $humidity=="101") 
  	{
  		$humidity_text="процент";
  	} 
  	else 
  	{
		//процента	
  		if(   $humidity=="2"  or $humidity=="3"  or $humidity=="4"
  				or $humidity=="22" or $humidity=="23" or $humidity=="24" 
  				or $humidity=="32" or $humidity=="33" or $humidity=="34" 
  				or $humidity=="42" or $humidity=="43" or $humidity=="44" 
  				or $humidity=="52" or $humidity=="53" or $humidity=="54"
  				or $humidity=="62" or $humidity=="63" or $humidity=="64" 
  				or $humidity=="72" or $humidity=="73" or $humidity=="74" 
  				or $humidity=="82" or $humidity=="83" or $humidity=="84" 
  				or $humidity=="92" or $humidity=="93" or $humidity=="94"
  				or $humidity=="102" or $humidity=="103"
  		) {$humidity_text="процента";} else {$humidity_text="процентов";}  											
  								
  	}	
  									
  									
  	 //миллиметр
  	if(	$pressure=="701" or $pressure=="721" or $pressure=="731" or $pressure=="741" or $pressure=="751" or $pressure=="761" or $pressure=="771" or $pressure=="781" or $pressure=="791" or $pressure=="801") 
  	{
  		$pressure_text="милиметр ртутного столба";
  	} 
  	else 
  	{
		//миллиметра	
  		if(   $pressure=="702" or $pressure=="703" or $pressure=="704"
  				or $pressure=="722" or $pressure=="723" or $pressure=="724" 
  				or $pressure=="732" or $pressure=="733" or $pressure=="734" 
  				or $pressure=="742" or $pressure=="743" or $pressure=="744" 
  				or $pressure=="752" or $pressure=="753" or $pressure=="754"
  				or $pressure=="762" or $pressure=="763" or $pressure=="764" 
  				or $pressure=="772" or $pressure=="773" or $pressure=="774" 
  				or $pressure=="782" or $pressure=="783" or $pressure=="784" 
  				or $pressure=="792" or $pressure=="793" or $pressure=="794"
  				or $pressure=="802" or $pressure=="803"
  			) {$pressure_text="милиметра ртутного столба";} else {$pressure_text="милиметров ртутного столба";}  											
  							
  	}
  	$say_text="Сейчас в городе ".$city." ".$weather_type.". Tемпература воздуха ".$znak." ".$temp." ".$text.". Влажность ".$humidity." ".$humidity_text.". Ветер ".$wind_direction_text." ".$wind_speed." метров в секунду. Атмосферное давление ".$pressure." ".$pressure_text." !";
	$qs = http_build_query(array("format" => "mp3","lang" => "ru-RU","speaker" => "jane","key" => "SpeechKit_Cloud_API_Key","emotion" => "good", "text" => $say_text)); // параметры запроса
	$ctx = stream_context_create(array("http"=>array("method"=>"GET","header"=>"Referer: \r\n")));
	$soundfile = file_get_contents("https://tts.voicetech.yandex.net/generate?".$qs, false, $ctx); // запрос на генерацию mp3 файла
 	echo($soundfile);
?>


В скрипте нужно изменить SpeechKit_Cloud_API_Key на полученный Вами ключ.
Скрипт генерации mp3 файла для новостей news.php
<?php
$city=$_GET['q'];
	 
$data_file="http://news.yandex.ru/".$city."/index.rss"; // адрес xml файла 
$xml = simplexml_load_file($data_file); // раскладываем xml на массив

$number= rand(1,13); //генерируем порядковый номер новости

$news=$xml->channel->item[$number]->description; //новость
$title=$xml->channel->item[$number]->title; //заголовок
    

$content_news = trim(preg_replace('/\s{2,}/', ' ', $news));//удаляем весь хлам
$content_title = trim(preg_replace('/\s{2,}/', ' ', $title));//удаляем весь хлам

$text=$content_title." - ".$content_news;
$search = array('"','"',' ',')','(');
$replace   = array('');

$text = str_replace($search, $replace, $text);
$qs = http_build_query(array("format" => "mp3","lang" => "ru-RU","speaker" => "jane","key" => "SpeechKit_Cloud_API_Key","emotion" => "good", "text" => $text)); // параметры запроса
$ctx = stream_context_create(array("http"=>array("method"=>"GET","header"=>"Referer: \r\n")));
$soundfile = file_get_contents("https://tts.voicetech.yandex.net/generate?".$qs, false, $ctx); // запрос на генерацию mp3 файла
echo($soundfile);    
?>


Читать дальше →

Спросите Итана №37: движение Земли относительно галактики

Reading time4 min
Views33K
Нет такой вещи в жизни, как вечное спокойствие разума. Жизнь – сама по себе есть движение, и не может существовать без желаний, страха, и чувств.
Томас Хоббс

Читатель спрашивает:
Я нашла на YouTube видео с теорией о спиральном движении Солнечной системы через нашу галактику. Оно не показалось мне убедительным, но я хотела бы услышать это от тебя. Является ли оно правильным с научной точки зрения?

Сначала давайте посмотрим само видео:



Некоторые утверждения в этом видео верны. Например:
  • планеты вращаются вокруг Солнца примерно в одной плоскости
  • Солнечная система двигается по галактике с углом в 60° между галактической плоскостью и плоскостью вращения планет
  • Солнце во время своего вращение вокруг Млечного пути, двигается вверх-вниз и внутрь-наружу по отношению к остальной галактике


Всё это так, но при этом в видео все эти факты показаны неправильно.
Читать дальше →

Примеры документов для сайтов

Reading time4 min
Views21K
image
По запросам клиентов на подготовку правовой документации для сайтов мы видим сумятицу в представлении, какие документы необходимы и достаточны для интернет-площадки с определенным функционалом.

При первом контакте клиенты называют пользовательское соглашение или оферту, вкладывая в данные термины разное содержание. На выходе после обсуждения с заказчиком особенностей его интернет-проекта мы получаем целый пакет документов, который наряду с пользовательским соглашением может включать публичную оферту или правила оказания услуг (TOS), лицензионный договор и политику конфиденциальности (Privacy Policy).

Мы выделяем несколько правовых схем взаимодействия владельца сервиса с пользователями с учетом функционала различных интернет-проектов. На основе классификации рекомендуется использовать отдельные пакеты документов для основных групп интернет-сервисов.

Какие группы сайтов принято выделять и пакеты документации использовать смотрите под катом.
Читать дальше →

Алкомат

Reading time4 min
Views53K
Иван Арнольдович, покорнейше прошу, пива Шарикову не предлагать.
профессор Преображенский. «Собачье Сердце»

Как-то, путешествуя по просторам Интернет, увидел разработку Rumbot. Мне всегда нравилось чем-то управлять и в итоге пришла идея улучшить разработку и привнести в нее новые элементы. Получился проект, включающий в себя не только разработку железа и софта, но также и 3D-моделирование корпуса, экскурс в изготовление мебели, работа со звуком, некоторые хитрости работы барменов и многое другое, что сопутствовало разработке. Получился забавный аппарат для вечеринок с друзьями. Главное было пройти весь путь от идеи до разработки конечного продукта. Аппарат позволяет делать алкогольные коктейли для пяти человек. Назвал я его «Алкомат».



Подробности ниже. Много больших фото.
Читать дальше →

Моя реализация системы домашней автоматизации

Reading time12 min
Views29K
Давно читаю статьи на Хабре о системах домашней автоматизации, захотелось описать то, над чем я работаю уже более 2 лет. Для лучшего понимания моей ситуации необходимо сделать небольшое вступление.

Три года назад мы с семьей переехали в новую трехкомнатную квартиру (67.5 кв.м), хотя технически квартира конечно старая — сталинка, дом 1946 года постройки. Алюминиевая двухпроводная проводка с кусками медного многожильного кабеля 1 кв.мм в некоторых местах. Ремонт предстоял капитальный, делать решил все сам, и начал с полной замены проводки. Было куплено 700м силового кабеля на освещение и розетки 1.5 и 2.5 кв.мм, бухта витой пары, немного коаксиала для телевизионных антенн (на всякий случай). Зачем так много и что из из этого вышло — прошу под кат.
Читать дальше →

Information

Rating
Does not participate
Location
Рязань, Рязанская обл., Россия
Date of birth
Registered
Activity