23 июня 2014 г., менее недели назад, после долгой разработки, вышел в свет новый продукт от компании Wolfram Research, который называется Wolfram Programming Cloud (Облако Программирования Wolfram). Об этом своем блоге написал Стивен Вольфрам и его пост был переведен на Хабрахабре.
Wolfram Programming Cloud позволяет вам программировать на языке Wolfram в любом браузере и с любого устройства, а также создавать готовые приложения (веб-формы ввода и скоро мобильные приложения), работать с прямым API, создавать автоматически генерируемые отчеты, отсроченные задания, веб-страницы, CDF и многое другое. При этом у всех желающих есть возможность попробовать и использовать Wolfram Programming Cloud бесплатно.
Мне бы хотелось поделиться с вами первым подробным видео-обзором на русском языке этого продукта, а также его реализации для обычного рабочего стола — Wolfram Desktop.
Из обзора вы узнаете о том, как работать с Wolfram Programming Cloud, создавать формы ввода и API, использовать Wolfram Desktop и пр.
В видео рассмотрены конкретные примеры работы в Облаке с географическими данными, API ВКонтакте, отправкой сообщений на e-mail из Облака, обработкой и подгрузкой изображений (как с устройств пользователя, так и из сети Интернет), применение встроенных функций Wolfram Language и др.
Основные коды на языке Wolfram, использованные в видео-обзоре:
График рельефа местности
CloudDeploy@FormFunction[
{"city" -> "ComputedCity"},
Module[{data},
data = GeoElevationData[GeoBoundingBox[GeoDisk[#city, Quantity[10, "Kilometers"]]]];
Grid[{{#city},
{ListPlot3D[data, MeshFunctions -> {#3 &}, Mesh -> {{1, 0}}, MeshStyle -> Thick,
ColorFunction -> ColorData["HypsometricTints"], ColorFunctionScaling -> False,ImageSize -> 600]}},
Alignment -> {Center,Center}]]&,
"HTML"]
Приложение для обработки изображений
im1=Import["путь к файлу или веб-ссылка"];
im2=Import["путь к файлу или веб-ссылка"];
images =RemoveAlphaChannel[ColorConvert[#, "RGB"] ,White]&/@{im1, im2};
webString[str_]:=StringReplace[ExportString[Cell[str], "HTML", "FullDocument" -> False],"<span>"|"</span>" -> ""]
CloudDeploy[
FormFunction[
{{"im1","Первая картинка"} -> "Image",
{"im2",webString@"Вторая картинка"} -> "Image"},
Module[{images,imDims,minX,minY,image,head},
images = RemoveAlphaChannel[ColorConvert[#, "RGB"] ,White]&/@{#im1, #im2};
imDims = ImageDimensions /@ images;
minX = Min[imDims[[;; , 1]]];
images = ImageResize[#, minX] & /@ images;
imDims = ImageDimensions /@ images;
minY = Min[imDims[[;; , 2]]];
Table[image[i] = ImageData[ImageCrop[images[[i]], {minX, minY}]], {i, 1, Length[images]}];
head = 1;
Image@Table[head = Replace[head, {1 -> 2, 2 -> 1}];image[head][[i, j]], {i, 1, minY}, {j, 1, minX}]]&,
"PNG",
AppearanceRules -> <|"Title" -> webString@"СМЕШИВАТЕЛЬ ИЗОБРАЖЕНИЙ",
"Description" -> webString@ "Выберите два изображения, смесь которых вы хотите получить.",
"SubmitLabel" -> webString@"Готово"|>]]
Работа с API ВКонтакте
$VkAPIAccessToken ="ваш accesstoken";
VkAPIMethod[method_, {options___}] := Module[{response},
"response" /.ImportString[URLFetch["https://api.vk.com/method/" <> method, "Parameters" -> {"access_token" -> $VkAPIAccessToken, options}], "JSON"]];
message :=
Module[{fromId, date, text, Body, Subject,password},
{currentId, fromId, date,text} = {"id", "from_id", "date", "text"} /.VkAPIMethod["wall.get", {"owner_id" -> "-1172233", "offset" -> "0","count" -> "1"}][[2]];
Body = ToString[TableForm@{Row[{"От пользователя: ","http://vk.com/id" <> ToString@fromId}],
DateString[AbsoluteTime[{1970, 1, 1, 0, 0, 0}] + date, {"Hour", ":","Minute", ":", "Second", " ", "Day", ".", "Month", ".","Year"}], text}];
Subject ="Новое сообщение в группе Русскоязычной поддержки Wolfram Mathematica ВКонтакте";
password = CloudSymbol["pass"];
If[currentId === lastId, Null,
SendMail["To" -> "r.a.osipov@gmail.com", "Subject" -> Subject,"Body" -> Body, "Password" -> password];
lastId = currentId]]
message;
Надеюсь, что этот видео-обзор заинтересует вас и позволит вам быстрее начать работать с Wolfram Programming Cloud!