Пишемо плагін для Google SketchUp
Google SketchUp – програма для швидкого створення та редагування тривимірної графіки. Зручність і простоту SketchUp оцінять як початківці роботи з тривимірним моделюванням, так і професіонали.
Але не всі знають, що SketchUp має потужний API, за допомогою якого можна створювати модулі, додаючи в програму новий функціонал. У цьому пості я спробую пояснити загальні принципи архітектури SketchUp та процес розробки плагіна. Перед написанням нового велосипеда плагіна варто пошукати на сайті Sketchucation вже готові до реалізації з необхідною для Вас функціональністю. Знайшовши відповідний плагін з відкритим вихідним кодом, можна реалізувати необхідний функціонал, залишивши основну частину коду незайманої. Наприклад, плагін робить якісь розрахунки та побудови, а ви тільки змінюєте їх застосування чи візуалізацію.
Плагіни для SketchUp пишуться мовою Ruby.
На Google Code представлено офіційну документацію з розробки. Вона складається з 3 розділів: Introduction, Quick Reference та Object Reference.
1) Introduction - вступний розділ, в якому показаний приклад створення простого плагіна.
2) Quick Reference – довідковий розділ за класами, методами.
3) Object Reference – довідковий розділ об'єктної моделі SketchUp. Об'єктна ієрархія дуже зручно розбита за групами, що дозволяє швидко шукати необхідні для написання коду класи.
Приклад розробки плагіна я візьму зі своєї практики. Для зручності роботи був потрібний додатковий функціонал, відсутній у SketchUp. Завдання полягало у швидкому та зручному визначенні розмірів об'єкта (ширина, висота, товщина).Готовий плагін з цією функціональністю був знайдений - GetDimensions, але він мав великий мінус: він показував розміри в MessageBox'e, який необхідно було постійно закривати, що створювало певну незручність. Я вирішив дослідити його код та змінити висновок результату.
Код плагіна GetDimensions:
require 'sketchup.rb'
def get_dimensions
model = Sketchup.active_model
mname = model.title
Sketchup::set_status_text(( "GET COMPONENT DIMENSIONS. " ), SB_PROMPT)
Sketchup::set_status_text( " " , SB_VCB_LABEL)
Sketchup::set_status_text( " " , SB_VCB_VALUE)
boundingBox = model.selection[0].bounds
dims = [boundingBox.height,
boundingBox.width,
boundingBox.depth]
dims.sort!
UI.messagebox( "Thickness: " + dims[0].to_s + "\nWidth: " + dims[1].to_s + "\nLength: " + dims[2].to_s)
end
if (not file_loaded?("GetDimensions.rb"))
add_separator_to_menu( "Plugins" )
UI.menu( "Plugins" ).add_item( "Get Dimensions" ) < get_dimensions >
end
* Цей source code був highlighted with Source Code Highlighter.
Код складається з логіки плагіна ( get_dimensions ), додавання пункту меню (Plugins -> Get Dimensions) та завантаження самого файлу плагіна в систему (GetDimensions.rb).
Для встановлення плагін необхідно скопіювати в директорію “C:\Program Files\Google\Google SketchUp\Plugins\”, а програма автоматично підвантажить усі скрипти з цієї папки під час запуску.
Головним об'єктом, що зберігає у собі структуру малюнка, є model .
У цьому плагіні береться перший виділений об'єкт та її розміри. Розміри сортуються в порядку зростання та відображаються в MessageBox'і, а в панелі стану відображається назва плагіна.
Панель стану мене відразу зацікавила, і я вирішив перенести до неї виведення отриманих розмірів.
Після невеликої модифікації плагіна мені вдалося цього досягти:
def get_dimensions
model = Sketchup.active_model
entities = model.entities
boundingBox = model.selection[0].bounds
dims = [boundingBox.height,
boundingBox.width,
boundingBox.depth]
dims.sort!
Sketchup::set_status_text(( "Thickness: " + dims[0].to_s + ". Width: " + dims[1].to_s + ". Length: " + dims[2].to_s ), SB_PROMPT)
end
* Цей source code був highlighted with Source Code Highlighter.
Після вибору елемента за допомогою інструмента Select, вибираємо в меню команду Get Dimensions. В результаті на панелі стану відображатимуться розміри вибраного елемента. Для зручнішого дзвінка команди слід призначити гарячу клавішу.
Наступним кроком було зробити так, щоб розміри автоматично показувалися при виділенні об'єкта. На думку спало два варіанти: зробити свій інструмент, який би виділяв елементи як інструмент Select, але показував унизу розміри, чи модифікувати інструмент Select, що він при виділенні показував розміри об'єкта.
Після пошуку по Object Reference, Народилася ідея реалізації другого способу
Як виявилося, за допомогою Observer Classes -> SelectionObserver можна передплатити події інструменту Select.
Після модифікації логіка плагіна була рознесена на два файли:
Dimensions_load.rb
require 'sketchup.rb'
require 'Dimensions/GetDimensions.rb'
$PluginMenuName = "Tools"
$DimensionsMenuName = "Dimensions Tool"
$GetDimensionsMenuItem = "Get Dimensions"
$AutoDisplayMenuItem = "Auto Display Dimensions"
if (not file_loaded?("dimensions_load.rb"))
pluginMenu = UI.menu($PluginMenuName)
dimensions = Dimensions. new
pluginMenu.add_separator
getDimensionsSubMenu = pluginMenu.add_submenu($DimensionsMenuName)<>
getDimensionsSubMenu.add_item($GetDimensionsMenuItem)
autoDisplayItem = getDimensionsSubMenu.add_item($AutoDisplayMenuItem)
getDimensionsSubMenu.set_validation_proc(autoDisplayItem)
end
* Цей source code був highlighted with Source Code Highlighter.
def onSelectionBulkChange(selection)
get_dimensions(selection)
end
def get_selection_dimensions
get_dimensions(Sketchup.active_model.selection)
end
def get_dimensions(selection)
boundingBox = selection[0].bounds
dims = [boundingBox.height,
boundingBox.width,
boundingBox.depth]
dims.sort!
Sketchup::set_status_text(( "Thickness: " + dims[0].to_s + ". Width: " + dims[1].to_s + ". Length: " + dims[2].to_s ), SB_PROMPT)
end
def connect_observer
if (@usedObserver) then
return remove_observer
else
return add_observer
end
end
def add_observer
@usedObserver = true
Sketchup.active_model.selection.add_observer self
return MF_CHECKED
end
def remove_observer
@usedObserver = false
Sketchup.active_model.selection.remove_observer self
return MF_UNCHECKED
end
def menu_checked
if (@usedObserver) then
return MF_CHECKED
else
return MF_UNCHECKED
end
end
end
* Цей source code був highlighted with Source Code Highlighter.
Розглянемо код докладніше.
Для того щоб мати можливість перехоплювати події інструменту Select, необхідно успадковуватися від класу SelectionObserver , перевизначити метод onSelectionBulkChange(selection) , який буде викликатися при виділенні об'єктів, і підписатися на події за допомогою Sketchup.active_model.selection.add_observer .
Плагін був переміщений у меню Tool -> Dimensions Tool, що містить два підпункти: Get Dimensions і Auto Display Dimensions.
Як я вже говорив раніше, завдання плагіна полягало в відображенні параметрів об'єкта автоматично при його виділенні. Т.к. додатковий функціонал який завжди потрібен, вирішено було зробити його отключаемым. Auto Display Dimensions - дозволяє включати його в потрібний момент, а Get Dimensions – виклик плагіна на запит – був залишений для більшої гнучкості використання.
Як бачите, модернізація існуючого плагіна набагато простіше, ніж його писання з нуля. До речі, я вперше писав код на Ruby, але завдяки великому досвіду програмування зрозуміти синтаксис не склало труднощів.
Бажаю всім успіху в написанні своїх плагінів для SketchUp.
На чому написаний telegram: на чому вихідний код програмування та Telegram open source
на чому вихідний код програмування та Telegram open source
Висока безпека месенджера Telegram – це його візитна картка. Для забезпечення анонімності людей використовується особлива авторська технологія кодування, яка вже стала визнана у професійному середовищі розробників та програмістів.
Однак про мову програмування Telegram говорять набагато менше, і це незаслужено. Розберемося, якою мовою написаний Телеграм і що робить його таким безпечним.
Технічні характеристики Telegram
Павло Дуров стверджує, що історія зі справжньою творчістю для розробника починається тоді, коли він застосовує різні способи програмування у своїй роботі, щоб досягти поставленої мети.
Ця ідея повністю реалізована при розробці телеграми, тому при звичайному технічному аналізі месенджера можна відразу помітити, що ставка була зроблена в першу чергу на функціонал, а не на зовнішній вигляд.
Мова програмування
Офіційно вважається, що написаний Telegram мовою С++. Це логічно, адже він прямо сумісний із звичайним С, який прийнятий та використовується для написання мобільних додатків на базі Android та iOS.
Проте низка програмістів висловлює припущення, що з запуску месенджера було зроблено змішання Java, C++ і фреймворків Java. Наскільки це переконання є вірним, невідомо через те, що команда розробників не коментувала це питання.
Важливо! На базі С++ месенджер існує з 2013 року. З регулярними свіжими оновленнями програми він лише трохи доопрацьовується, а не створюється з нуля. Повністю код переписувався лише раз для офіційного веб-клієнта Telegram X мовою програмування Swift.
Інтерфейс
Інтерфейс месенджера виглядає досить просто та лаконічно відповідно до принципів. На головному екрані відображаються останні особисті діалоги з іншими користувачами, новини з Телеграм-каналів, повідомлення від роботів, тут можна провести пошук і т.п.
У лівому бічному меню доступні швидкі налаштування, там же вмикається редагування розширених функцій.Можна вибрати одну з чотирьох тем оформлення, увімкнути автоматичний нічний режим, який буде активуватися при настанні темного часу доби за промовчанням, або поставити будь-яку картинку як фонове зображення.
У комп'ютерному варіанті Телеграма інтерфейс виглядає інакше з тією різницею, що у лівій частині екрана за промовчанням відображаються активні контакти чи останні листування з іншими користувачами. За бажанням у праву частину дисплея можна змістити вікно емодзі, щоб смайлики були під рукою.
Технологія шифрування
Для надсилання повідомлень використовується протокол шифрування MTProto. Для авторизації та аутентифікації – алгоритми RSA-2048, DH-2048. При комунікації однієї людини з іншою зміст тексту особистих повідомлень шифрується за допомогою симетричного AES (Advanced Encryption Standard) і випадково генерованого ключа, який є тільки сервер і адресат.
Ключ завжди видаляється приблизно через 10 хвилин після отримання повідомлення і не зберігається постійно на сервері. З переходом на протокол MTProto дві точки нуль застосовується криптографічний хеш-алгоритм SHA-256.
Режим секретних чатів використовує надійніший тип end-to-end кодування, при якому ключ для читання повідомлень взагалі не пересилається на сервер і доступний тільки для відправника та одержувача. Для реалізації цієї функції користуються алгоритмом AES-256 як IGE.
Увага! При видаленні повідомлення у листуванні воно також остаточно стирається із сервера.
Вихідний код "Телеграм"
Telegram open source - це відкритий клієнтський код API, який постійно доступний для завантаження безкоштовно в Інтернеті. Незважаючи на те, що серверна частина залишається закритою, всі функції месенджера залишаються робітниками.
Призначення
Завдяки відкритому програмному інтерфейсу програми будь-яка зацікавлена людина може отримати доступ до сервісу бібліотеки даних TDLib і зайнятися створенням на його основі власного веб-клієнта. При цьому не треба вирішувати проблему того, якою мовою програмування написаний Телеграм, оскільки пропонується відразу кілька версій з підтримкою Javascript, C++ і C#.
Передача повідомлень, кодування та локальна база даних працюватимуть ідентично до оригінального Телеграми. Можливість редагування коду дано для того, щоб популяризувати політику компанії та розвивати свободу слова, захист прав людини та анонімність спілкування. Також це дає стимул та ресурси для розробки нових технологій у сфері комунікацій та мас-медіа.
Як користуватися
Попередньо для запуску Telegram клієнта вихідний код необхідно завантажити зі сторінки офіційного сайту telegram.org або в іншому джерелі та встановити. Також потрібно ознайомитися з інструкцією про шифрування даних, що додається. Потім можна приступати до роботи (звісно, без необхідних спеціальних знань та навичок у програмуванні нічого зробити не вдасться).
Довідка! Завантажити код для останнього оновлення програми неможливо, тому що саме його ніколи не публікують. До скачування доступні лише старі варіанти офіційних клієнтів для всіх платформ.
Кастомні веб-клієнти можуть писатися при використанні будь-якої мови програмування та фреймворків, тому ви не обмежені у виборі.
Офіційні та неофіційні клієнти
Серед офіційних клієнтів є такі:
- Варіант для мобільних пристроїв:
- Telegram для Андроїд;
- Telegram для ios;
- Telegram для Windows Phone.
- Telegram для Windows/Linux;
- Telegram для MacOS.
- Telegram Web-version;
- Telegram Chrome App.
Єдиний офіційний веб-клієнт групи розробників під егідою Павла Дурова це проект Telegram X.
Неофіційних кастомних клієнтів у рази більше, наприклад:
- Plus Messenger;
- Vidogram;
- Loopy for Telegram;
- TechGram;
- Mobogram;
- Unigram та ін.
Їх можна використовувати для вирішення приватних цілей: наприклад, для обходу блокування офіційного телеграма, запису уроків, адміністрування каналів, підтримки відеодзвінків, розширених функцій дизайну.
Таким чином, Телеграм має потужний двигун, складений на основі кількох мов програмування та складних протоколів кодування. Кожен бажаючий може скористатися цими розробками безкоштовно, якщо збирається зробити проект кращим та зручнішим та запропонувати свої нововведення.
Детальна інформація видно на відео:
Якою мовою написаний телеграм – мова програмування telegram
Месенджер Телеграм відрізняється високим ступенем захисту персональних відомостей. Щоб надійно убезпечити дотримання особистої таємниці, розробники застосували систему власного шифрування винаходу. Така технологія отримала високу оцінку серед професійних програмістів.
Програмні засоби, що використовуються для забезпечення функціонування Телеграм, обговорюються далеко не так широко, хоча заслуговують на докладне освітлення. У даному матеріалі йтиметься про специфіку та переваги мови, на якій написані програми сервісу.
Технічні характеристики Телеграм
На думку творця Телеграм Павла Дурова, майстерність програміста пов'язана з можливістю поєднувати у своїй роботі різноманітні програмні засоби для досягнення поставленої мети.
Така ідея знайшла матеріальне втілення під час створення Telegram. Професійний погляд на програму дозволяє побачити, що розробники приділили основну увагу програмному коду, а не зовнішньому оформленню сервісу.
Програмні засоби
Офіційною мовою Телеграм визнано С++. Такий вибір логічний через сумісність цієї мови з мовою «Сі», якою створюються програми для смартфонів на платформах Android та iOS. Деякі експерти програмування висувають гіпотези, що для написання месенджера було створено особливий програмний проект, що включає суміш із С++, Java та структурних блоків Java. Очевидно, що подібна інформація розглядається розробниками як конфіденційна, тому такі припущення не отримують коментарів від команди Телеграм.
Базова версія Telegram, створена С++, не листувалася з 2013 року. Кожна нова версія доповнює та вдосконалює попередню, не змінюючи основного каркасу. Цілком код перероблявся одного разу – при написанні веб-клієнта Телеграм Х. Тоді авторами була використана мова SWIFT.
Інтерфейс
Телеграм відрізняється утилітарним та функціональним інтерфейсом. На головну сторінку виведено останні розмови з абонентами зі списку контактів, публікації з каналів, інформація від роботів-помічників.
Меню налаштувань знаходиться у лівій частині екрана. Перейшовши до редагування параметрів, користувач може налаштувати роботу сервісу відповідно до власних побажань, включаючи візуальне оформлення, активацію сповіщень, мову інтерфейсу та інші важливі моменти.
Комп'ютерний варіант Telegram має трохи різний зовнішній вигляд: з лівого боку розташований список активних співрозмовників.Для зручності використання смайликів відповідне меню легко переміщується праворуч.
Шифрування
При пересиланні меседжів застосовуються протокол MTProto, при аутентифікації – криптосистема RSA2048 та протокол Діффі-Хеллмана (2048). Секретність під час обміну даними між двома абонентами сервісу забезпечується у вигляді використання симетричного рандомно створюваного ключа, відомого лише серверу і адресату.
Ключ надовго видаляється з усіх матеріальних джерел після десяти хвилин після доставки меседжу. Модернізований протокол MTProto2.0 передбачає використання шифрування алгоритму SHA 256.
Для закритих розмов Телеграм застосовується вдосконалений метод шифрування, коли ключ надсилається безпосередньо від відправника до адресата послання, минаючи запис на сервер. Такий ступінь секретності доступний завдяки використанню стандарту шифрування AES 256. Якщо користувач вирішує знищити повідомлення, цей меседж також видаляється з сервера.
Початковий код Telegram
Розробники Телеграм надають вільний доступ до вихідного коду, який можна використовувати для створення інших програм на тій же платформі. Логотип та назву месенджера власники закріпили за собою. Код, який використовується для серверної частини, як і раніше, тримається в секреті.
Призначення
Власники програми припускають, що вільне використання програмістами вихідного коду сприятиме популяризації та подальшому вдосконаленню сервісу Телеграм. Автори, які бажають добровільно взяти участь у розробці програмних продуктів на платформі Telegram, можуть використовувати варіанти із підтримкою різних мов програмування.При цьому обмін даними та процеси зашифрування працюватимуть за стандартним алгоритмом, прийнятим для месенджера.
Брати Дурови вважають, що реалізація такого підходу сприятиме розвитку свободи слова та обміну інформацією, а також стимулює розробку високотехнологічних продуктів у сфері інтернет-спілкування.
Як скористатися кодом
Команда Telegram розмістила посилання на код месенджера для будь-яких платформ на офіційному сайті. Там же можна знайти докладну інструкцію та документацію для розробників.
Спроби знайти код для останньої версії приречені на невдачу, оскільки автори відкривають доступ лише застарілим варіантам клієнта.
Щоб скористатися кодом, потрібні навички професійного програміста. Перелік використовуваних засобів програмування досить широкий.
Версії Телеграм
Офіційні варіанти месенджера для різних платформ:
- Мобільна версія для пристроїв на:
- Android;
- iOS;
- Windows Phone.
- Windows;
- Linux;
- Mac OS.
Офіційна альтернатива стандартному варіанту месенджера – TelegramX. У мережі багато ресурсів, що надають аналогічні послуги: Плюс месенджер, Vidogram, TechGram, Мобограм та інші. Такі послуги корисні, якщо Телеграм блокує акаунт.
Альтернативні месенджери прагнуть залучити користувачів до оригінальних дизайнерських рішень або додаткових опцій.
У результаті
При створенні програми Телеграм використовувалося поєднання просунутих програмних засобів та передових методів шифрування даних. Автори відкрили вільний доступ до результатів розробок для всіх людей, які бажають працювати в галузі інформаційних технологій.
Якою мовою програмування написано Telegram — Розробники, дизайнери та фрілансери
Telegram — популярний додаток для обміну миттєвими повідомленнями, заснований російським підприємцем Павлом Дуровим. Він дуже схожий на WhatsApp і має стати найближчим конкурентом WhatsApp I за кілька років. Ви можете надсилати повідомлення, фотографії, відео, аудіо, стікери та файли будь-якого типу. Найприємніше, що це з відкритим кодом. Але код останньої версії публікується не одразу. Проте він публікує API для незалежних розробників, і тому Telegram обов'язково запропонує в майбутньому різні цікаві функції, які WhatsApp не може собі дозволити. Зростання додатку становить 50% на рік, що перевищує всі очікування. Сьогодні ми дізнаємось, які мови програмування використовуються під час написання Telegram. По-перше, зрозуміло, що така програма не може бути розроблена однією мовою програмування зі зрозумілих причин, оскільки жодна мова програмування не є повною сама по собі.
Мови програмування, що лежать в основі Telegram
Насамперед, давайте порівняємо WhatsApp для кращого розуміння. Згідно зі звітами, технічний стек або набір мов програмування, що використовуються для WhatsApp, складається із шести різних технологій. Це Erlang, FreeBSD, Yaws, Lighttpd, PHP та XMPP. Erlang використовується для чату у реальному часі. FreeBSD відповідає за перехід програми на робочий стіл або веб-WhatsApp разом із PHP.
XMPP – це технологія, яка відповідає за надсилання повідомлень, функції відображення присутності в мережі, функції маршрутизації та багато іншого. Його називають основою WhatsApp. Інші два є веб-серверами для підвищення швидкості, безпеки та гнучкості.Крім цього, для розробки програм та їх функцій використовувалися відповідні мови програмування для відповідних платформ, такі як Swift, Java та C#.
Що таке технічний стек для Telegram?
Оскільки Telegram — це програма з відкритим вихідним кодом, легко отримати список технічного стека, який використовує програму у фоновому режимі. Для програми Windows команда розробників ретельно використовувала C#. Для Android-програми в цілому використовується Java, що цілком очевидно. Крім того, для iOS використовуються дві різні мови: в основному Objective-C і частково Swift. Для веб-додатків використовувалися AngularJS та NodeJS. Для порівняння, WhatsApp використовує PHP. Для настільного додатку використовується кілька мов. Деякі їх — це Objective-C, C, C++ і Qt.
Помилка про швидкість
Існує хибна думка, що швидкість і продуктивність Telegram обумовлені вибором мов програмування. Але це не має жодного відношення до мов програмування, оскільки Telegram використовує декілька технологій та протоколів. Він використовує протокол MTProto Mobile для швидкості та обміну ключами Діффі-Хеллмана для автентифікації та виключення посередників. Telegram постійно оновлює свої функції та нові мови програмування, і поточна версія використовує Node-JS, Express та MongoDB як серверну частину.
Swift та Objective-C разом. Чат-боти на основі ІІ лежать в основі Telegram, а мови, що їх підтримують, можуть бути будь-чим для розробників. Однак найчастіше розробники використовують C++ та Java.Якщо вам цікаво, чому Objective-C та Swift використовувалися одночасно, Swift має певні переваги у швидкості порівняно з Objective-C, і тому він був частково включений у область, де швидкість є основною вимогою. Більше того, великі компанії переходять із Objective-C на Swift, і може статися так, що Telegram тестує Swift, перш ніж вони зможуть повністю перейти на нього. Це менш схильна до помилок, і потрібно писати менше коду.
Можливості -
Через його відкритий вихідний код, якщо ви зайдете до розділу GitHub додатків Telegram, ви виявите, що використання фреймворку Qt відкриває різні можливості. Це кросплатформовий фреймворк, і ви можете використовувати різні мови програмування, такі як Python і C++. Це платформа, яку більшість великих компаній використовують для розробки кроссплатформенного програмного забезпечення для своїх продуктів. Крім того, для додатка Android, де він в основному сфокусований, використовувалася традиційна комбінація Java і XML, що цілком очікувано, і це єдине спільне з WhatsApp.
Крім того, веб-сервери та технології, які компанія використовує для підвищення швидкості та продуктивності, не розголошуються. Проте людина або команда, які бажають розробити програму обміну миттєвими повідомленнями, можуть вибрати будь-який бажаний веб-сервер. Вони повинні бути сумісні з внутрішніми і зовнішніми технологіями, щоб не викликати плям і тертя для безперебійної роботи всіх операцій, коли навантаження виходить за рамки уяви.
Якщо потрібно вибрати одну мову програмування для опису Telegram, це має бути C++, що дивно, оскільки Telegram — відносно новий додаток, і ви очікуєте, що за ним стоять нові мови програмування та технології. Але фактору безпеки приділяли увагу, тому C++ широко використовувався для розробки важливих функцій.
Кітті Гупта є менеджером контенту та спільноти FreelancingGig. Вона має багаторічний досвід написання статей для авторитетних платформ завдяки її інженерному та комунікаційному досвіду.
Останні повідомлення Кітті Гупта (дивитись усі)
Telegram Language
Висока безпека месенджера Telegram – його візитна картка. Для забезпечення анонімності людей використовується авторська технологія шифрування, що вже отримала визнання у професійному середовищі розробників та програмістів.
Однак мовою програмування Telegram говорять набагато менше, і це незаслужено. Давайте розберемося, якою мовою написаний Telegram і що робить його таким безпечним.
Технічні характеристики телеграми
Павло Дуров стверджує, що справжня творчість для розробника починається тоді, коли він використовує у роботі різні методи програмування задля досягнення своєї мети.
Цей принцип повністю реалізований під час створення Telegram, тому за технічному аналізі месенджера можна відразу помітити, що ставка робилася на код, а чи не зовнішній вигляд.
Мова програмування
Офіційно вважається, що Telegram написано на C++. Це логічно, адже він сумісний із простим C, на якому пишуть мобільні програми на базі Android та iOS.
Однак ряд програмістів припускають, що для створення месенджера було створено суміш Java, C++ та Java-фреймворків.Наскільки вірним є це переконання, невідомо, тому що команда розробників ніяк не прокоментувала це питання.
Важливо! На основі коду C++ месенджер існує з 2013 року. При регулярних оновленнях програма лише трохи допрацьовується, а не створюється з нуля. Код був повністю переписаний лише один раз для створення офіційного веб-клієнта Telegram X мовою програмування Swift.
Інтерфейс
Інтерфейс месенджера виглядає просто та лаконічно. На головному екрані відображаються останні діалоги з іншими користувачами, новини з Telegram-каналів, повідомлення від роботів і т.д.
Швидкі налаштування доступні в лівому бічному меню, туди входить редагування розширених функцій. Ви можете вибрати одну з чотирьох тем, увімкнути автоматичний нічний режим, який буде активуватися за замовчуванням з настанням темряви, або поставити будь-яку картинку як фонове зображення.
У комп'ютерній версії Telegram інтерфейс виглядає інакше з тією різницею, що в лівій частині екрана відображаються активні контакти або недавнє листування з іншими користувачами. За бажання вікно эмодзи можна змістити у праву частину дисплея, щоб смайлики були під рукою.
Технологія шифрування
Для надсилання повідомлень використовується протокол шифрування MTProto. Для авторизації та аутентифікації - алгоритми RSA-2048, DH-2048. Коли одна людина спілкується з іншою, повідомлення шифруються з використанням симетричного AES (Advanced Encryption Standard) та випадково згенерованого ключа, який є лише у сервера та одержувача.
Ключ безповоротно видаляється приблизно через 10 хвилин після отримання повідомлення та не зберігається на сервері.З переходом до протоколу MTProto 2.0 використовується алгоритм криптографічного хешування SHA-256.
Режим секретного чату використовує надійніший тип наскрізного шифрування, при якому ключ для читання повідомлень взагалі не відправляється на сервер і доступний тільки відправнику та одержувачу. Для реалізації цієї функції використовується алгоритм AES-256 у режимі IGE.
Увага! При видаленні повідомлення у листуванні воно також безповоротно видаляється із сервера.
Вихідний код телеграми
Telegram з відкритим вихідним кодом – це відкритий код клієнтського API, доступний для безкоштовного завантаження. Незважаючи на те, що серверна частина коду залишається закритою, всі функції месенджера продовжують працювати.
Пункт призначення
Завдяки відкритому інтерфейсу прикладного програмування будь-хто може отримати доступ до бібліотеки даних TDLib і створити на її основі власний веб-клієнт. При цьому вам не доведеться підлаштовуватися під те, якою мовою програмування написаний Telegram, адже пропонується відразу кілька версій з підтримкою Javascript, C++ і C#.
Обмін повідомленнями, шифрування та локальна база даних працюватимуть ідентично до оригінального Telegram. Можливість редагування коду надано з метою популяризації політики компанії та розвитку свободи слова, захисту прав людини та анонімності спілкування. Це також дає стимул для розвитку нових технологій у галузі комунікацій та засобів масової інформації.
Як використовувати
Раніше для створення клієнта Telegram необхідно було завантажити вихідний код із офіційного сайту telegram.org або з іншого джерела. Також необхідно ознайомитися з інструкцією з шифрування даних, що додається.Далі можна приступати до роботи (звісно, без спеціальних знань та навичок програмування нічого не вийде).
Посилання! Неможливо завантажити останнє оновлення програми, тому що він ніколи не публікується. Для завантаження доступні лише старі версії офіційних клієнтів для всіх платформ.
Користувальницькі веб-клієнти можуть бути написані за допомогою будь-якої мови програмування та фреймворку, тому ви не обмежені у своєму виборі.
Офіційні та неофіційні клієнти
Серед офіційних клієнтів є:
- Мобільна версія:
- Telegram для Android;
- Telegram для ios;
- Telegram для Windows Phone.
- Telegram для Windows/Linux;
- Telegram для MacOS.
- Веб-версія Telegram;
- Програма Telegram Chrome.
Єдиним офіційним веб-клієнтом команди розробників під егідою Павла Дурова є Telegram X.
Є ще багато неофіційних кастомних клієнтів, наприклад:
- Месенджер Plus
- відеограма;
- Loopy для Telegram;
- ТехГрам;
- Мобограма
- Уніграми.
Їх можна використовувати в особистих цілях: наприклад для обходу блокування офіційного Telegram, адміністрування каналів, підтримки відеодзвінків, розширених функцій оформлення.
