GoogleTranslate - англо-русский онлайн переводчик
Эта небольшая step-by-step инструкция задумана мною для тех, кто уже развился до такого уровня, что способен осознать полезность выхода за рамки секты мазохистов-любителей платежей Биллу Гейтсу. И продолжить программировать на своем любимом .NET, VB.NET и ASP.NET уже вне рамок этой секты мазохистов.
Общую технологию MONO (в применении к ASP.NET) я подробно описал в топике - Low cost and platform independent ASP.NET - be free with MONO - здесь я повторяться не буду, а опишу подробнее технологию построения консольных приложений.
Если вы пока туго ориентируесь в продвинутых и полностью бесплатных технологиях, то поробуйте начать с прочтения топика Установка и начальное конфигурирование OpenSuse Linux. Вообще Линукс является более продвинутой технологией и позволяет делать некоторые диковатые с точки зрения мазохистов вещи, например вполне полноценно работать ВООБЩЕ без инсталяции (и даже без жесткого диска) - для этого попробуйте прочитать топик Загрузочные компакты и флешки (bootable LiveCD and bootable USB).
Итак, для дальнейшего чтения этой странички я полагаю, что вы уже настолько развились, что можете уже самостоятельно кликнуть на иконке на рабочем столе LINUX и запустить OpenSource студию NET-программирования:
Далее пишем вот такой простенький код онлайновой ГУГЛ-трансляции:
1: Option Explicit On
2: Option Strict On
3: Imports System
4:
5:
6: Public Class Application
7: Public Shared Sub Main()
8: While True
9: Dim SourceStr As String = System.Console.ReadLine()
10: System.Console.WriteLine(Translate(SourceStr))
11: End While
12: End Sub
13:
14: Shared Function Translate(ByVal Source As String) As String
15: 'Dim InputString As String = Web.HttpUtility.HtmlEncode(Source)
16: Dim InputString As String = Source.Replace("&", "").Replace("""", "")
17: Dim JSON As String '{"sentences":[{"trans":"привет слово","orig":"hello word","translit":"privet slovo"}],"src":"en"}
18: JSON = GetContents("http://translate.google.ru/translate_a/t?client=t&text=" & InputString & "&hl=ru&sl=en&tl=ru&otf=1&pc=0")
19: Dim Target As String = ""
20: If JSON IsNot Nothing Then
21: If JSON.StartsWith("{""sentences"":[{""trans"":") Then
22: Dim Pos1 As Integer, Pos2 As Integer
23: While Pos2 < Len(JSON) And Pos2 < Len(JSON)
24: Pos1 = JSON.IndexOf("{""trans"":""", Pos2)
25: If Pos1 > 0 Then
26: Pos2 = JSON.IndexOf(""",", Pos1)
27: If Pos2 > Pos1 + 10 Then
28: Target &= JSON.Substring(Pos1 + 10, Pos2 - Pos1 - 10)
29: Pos1 = Pos2 + 1
30: Else
31: Exit While
32: End If
33: Else
34: Exit While
35: End If
36: End While
37: End If
38: End If
39: Return Target
40: End Function
41:
42: 'считывает HTML-странички с подавлением ошибок
43: Shared Function GetContents(ByVal URL As String) As String
44: Try
45: 'запрос по HTTP
46: Dim PageRequest As System.Net.HttpWebRequest = CType(System.Net.WebRequest.Create(URL), System.Net.HttpWebRequest)
47: PageRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.2; ru; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"
48: PageRequest.Headers.Add("Accept-Language", "ru,en-us;q=0.7,en;q=0.3")
49: PageRequest.Headers.Add("Accept-Charset", "windows-1251,utf-8;q=0.7,*;q=0.7")
50: 'Отправлен запрос
51: Dim PageResponse As System.Net.HttpWebResponse = PageRequest.GetResponse
52: 'Получен ответ
53: Dim Reader As New System.IO.StreamReader(PageResponse.GetResponseStream(), System.Text.Encoding.UTF8)
54: Dim HTML As String = Reader.ReadToEnd
55: Reader.Close()
56: 'Загружено в память
57: Return HTML
58: Catch x As System.Exception
59: 'пусть молча идет дальше при ошибках
60: End Try
61: End Function
62:
63: End Class
Разумеется в жизни таких простеньких задачек не будет. Но это ОСНОВА всего. В жизни вам придется скорее всего работать с СУБД - для этого надо прочитать хотя бы вот этот топик Используем PostgreSQL вместо MS SQL в проектах на .NET и ASP.NET. Но в этом простеньком примерчике мы не будет работать с базой.
Итак, добавляем к проекту нужную сборку в ссылки и указываем стартовый класс проекта:
Нажимаем RUN и насладаемся работающим в Линуксе приложением на бейсике. В моем случае чудо произошло и сразу. Но у вас, особенно поначалу - чуда может и не произойти. Тогда вам поможет подробный разбор компиляции кода и просмотр листинга компиляции и созданного IL-кода.
Если чудо все же случилось, то остается только сделать пакет с исполняемым файлом LINUX и развернуть его где-нибуть на удаленном сетевом ресурсе:
Теперь берем какой-нибудь совсем другой линукс (даже на другой аппаратной платформе) и запускаем созданный байт код в JIT-компиляторе MONO:
МONO устроено так, что на совсем другой аппаратной платформе (а сейчас кроме X86 поддерживаются как минимум процессорные архитектуры s390, s390x (32 and 64 bits), SPARC (32), PowerPC, AMD64, IA64, ARM, MIPS) можно из байт-кода .NET создать бинарный исполняемый файл (слинковав его со всеми библиотеками):
При этом на всех этих различных аппаратных платформах можно создать не только исполняемый файл, но и Загрузочные компакты и флешки (bootable LiveCD and bootable USB) с вашей собственной программой на .NET (или сайтом на ASP.NET). Надеюсь вы понимаете насколько порядков эта совершенно бесплатная технология превосходит технологии микрософтовских сектантов с платформы X86. Но даже если бы на тех сектантах не пытался наживаться Билл Гейтс (и мусора)- у них там нет ничего и близко настолько развитого.
Эту программу я не стал оформлять в виде GUI - если вы хотите увидет пример с GUI, то смотрите в разделе SNMP-тестер сетевых устройств. GUI-программа на Windows.Forms для Linux.
Родственную по смыслу программу вы можете увидеть в топике - SoundCreator - пакетная озвучка английского текста.
|