Весьма интересная и познавательная, и даже отчасти реверс-инжениринговая, статья об алгоритме работы KeePass версий 1x и 2x с БД паролей и о формате самих баз kdb и kdbx
Статья для тех, кто хочет реализовать работу с парольными базами KeePass или даже сделать свой клиент, совместимый с KeePass и форматами баз паролей kdb и kdbx
https://habrahabr.ru/company/thirdpin/blog/307982/
Статья для тех, кто хочет реализовать работу с парольными базами KeePass или даже сделать свой клиент, совместимый с KeePass и форматами баз паролей kdb и kdbx
https://habrahabr.ru/company/thirdpin/blog/307982/
Ура! Наконец-то я проникся разработкой через тестирование (test-driven development, TDD) - это просто нужно попробовать самому руками и на вкус! Иначе - не поймёшь!
Вы не поверите как это произошло - решаю тестовые задания на HackerRank.com! 😅👍
Теперь всё начинаю покрывать unit-тестами на ввод-вывод функций и методов перед написанием кода! И так легче следовать конкретным техзаданиям и спецификациям, данным архитекторами проекта, например при разработке API или модулей и библиотек!
Спасибо Роме Кононову (@rkononov) за точную наводку, Research In Development (RID, @lucky_rider 😄) за интересные мысли, Вадиму Глебову (@glebov), Максиму Косякову (@maxkosyakov) и Данияру Керимджанову (@kerimdzhanov) за советы данные мне в своё время.
Вы не поверите как это произошло - решаю тестовые задания на HackerRank.com! 😅👍
Теперь всё начинаю покрывать unit-тестами на ввод-вывод функций и методов перед написанием кода! И так легче следовать конкретным техзаданиям и спецификациям, данным архитекторами проекта, например при разработке API или модулей и библиотек!
Спасибо Роме Кононову (@rkononov) за точную наводку, Research In Development (RID, @lucky_rider 😄) за интересные мысли, Вадиму Глебову (@glebov), Максиму Косякову (@maxkosyakov) и Данияру Керимджанову (@kerimdzhanov) за советы данные мне в своё время.
Hackerrank
HackerRank - Online Coding Tests and Technical Interviews
HackerRank is the market-leading coding test and interview solution for hiring developers. Start hiring at the pace of innovation!
А теперь страшная сказка на ночь... Аж абс...
Про абстракции!
😅😆😂👍
Это выжимка из очень умной книги, написанной Джоном Митчеллом - "Концепции в языках программирования", параграф 6.4, "Полиморфизм и перегрузка" (https://telegram.me/technologique/96).
PS: Читаем внимательно и вдумчиво - такие вопросы ("чем отличается абстрактный класс от интерфейса?") мне задавали уже дважды на собеседованиях и интервью!
Про абстракции!
😅😆😂👍
Это выжимка из очень умной книги, написанной Джоном Митчеллом - "Концепции в языках программирования", параграф 6.4, "Полиморфизм и перегрузка" (https://telegram.me/technologique/96).
PS: Читаем внимательно и вдумчиво - такие вопросы ("чем отличается абстрактный класс от интерфейса?") мне задавали уже дважды на собеседованиях и интервью!
Telegram
Technologique
John C. Mitchell. Concepts in Programming Languages. — Cambridge University Press, 2002. — 540 p. — ISBN 978-0-521-78098-8.
6.4. Polymorphism and overloading, p. 145-151
Пожалуй лучшее описание концепций полиморфизма в языках программирования!
6.4. Polymorphism and overloading, p. 145-151
Пожалуй лучшее описание концепций полиморфизма в языках программирования!
Technologique
John C. Mitchell. Concepts in Programming Languages. — Cambridge University Press, 2002. — 540 p. — ISBN 978-0-521-78098-8. 6.4. Polymorphism and overloading, p. 145-151 Пожалуй лучшее описание концепций полиморфизма в языках программирования!
Losing the elegance...
Too much abstractions - this is Java!
Сейчас посидел, покодил и вспомнил, что такое абстрактный класс, он же абстрактный/базовый тип, используемый для реализации полиморфизма включения (ad-hoc) во многих случаях - это класс не порождающий объектов-экземпляров и порождающий только другие классы, конструктор классов, в Ruby и Python есть похожие по функциональности абстракции, это суперклассы в Ruby и метаклассы в Python, они часто используются для реализации фреймворков и библиотек.
Абстрактный класс может иметь абстрактные свойства и абстрактные методы, которые могут быть только описаны в абстрактном классе, но могут быть наследованы и реализованы только в классах-потомках.
Абстрактные методы могут быть виртуальными, наследоваться классами-наследниками и переопределяться (перегружаться) в них, для определения типа объекта, экземпляра такого класса-наследника от абстрактного класса, в runtime (во время исполнения) и таким образом реализуют ad-hoc полиморфизм включения, что повышает повторное использование этого полиморфного кода для разных типов данных и задач.
В свою очередь абстрактный класс содержащий только виртуальные методы называется интерфейсом.
В Java, Python все методы виртуальные по умолчанию, кроме приватных с ограниченной областью видимости.
А ещё есть виртуальный класс (в C++ например), базовый класс (суперкласс, метакласс), который используется при множественном наследовании и реализует виртуальное наследование - не включается в классы-потомки, а наследуется в них только по ссылке, во избежание дублирования методов и свойств.
Вообще в этой ООП трясине легко завязнуть и заплутать! 🙀😅
Too much abstractions - this is Java!
Сейчас посидел, покодил и вспомнил, что такое абстрактный класс, он же абстрактный/базовый тип, используемый для реализации полиморфизма включения (ad-hoc) во многих случаях - это класс не порождающий объектов-экземпляров и порождающий только другие классы, конструктор классов, в Ruby и Python есть похожие по функциональности абстракции, это суперклассы в Ruby и метаклассы в Python, они часто используются для реализации фреймворков и библиотек.
Абстрактный класс может иметь абстрактные свойства и абстрактные методы, которые могут быть только описаны в абстрактном классе, но могут быть наследованы и реализованы только в классах-потомках.
Абстрактные методы могут быть виртуальными, наследоваться классами-наследниками и переопределяться (перегружаться) в них, для определения типа объекта, экземпляра такого класса-наследника от абстрактного класса, в runtime (во время исполнения) и таким образом реализуют ad-hoc полиморфизм включения, что повышает повторное использование этого полиморфного кода для разных типов данных и задач.
В свою очередь абстрактный класс содержащий только виртуальные методы называется интерфейсом.
В Java, Python все методы виртуальные по умолчанию, кроме приватных с ограниченной областью видимости.
А ещё есть виртуальный класс (в C++ например), базовый класс (суперкласс, метакласс), который используется при множественном наследовании и реализует виртуальное наследование - не включается в классы-потомки, а наследуется в них только по ссылке, во избежание дублирования методов и свойств.
Вообще в этой ООП трясине легко завязнуть и заплутать! 🙀😅
Technologique
GIF
Синтаксический сахар (syntactic sugar) - больше лучше! 😄😆😂👍
https://ruby-lang.org/en/
Всё таки я советую многим изучить и попробовать Ruby и JRuby 👍
https://ruby-lang.org/en/
Всё таки я советую многим изучить и попробовать Ruby и JRuby 👍
Ruby Programming Language
A Programmer's Best Friend
Technologique
Релиз Go 1.7 https://blog.golang.org/go1.7 https://golang.org/doc/go1.7#compiler Из новшеств - новый бэкэнд компилятора с промежуточной SSA (static single assignment) оптимизацией, генерирующий более компактный и быстрый код, а также ускоряющий работу горутин…
Код порождаемый компилятором Golang 1.7 действительно стал оптимизированнее и быстре по алгоритмическим тестам:
http://benchmarksgame.alioth.debian.org/u64q/which-programs-are-fastest.html
http://benchmarksgame.alioth.debian.org/u64q/which-programs-are-fastest.html
Technologique
Perfect Linux machine overview Lenovo ThinkPad X1 Carbon 4th Gen 2016 http://www.notebookcheck.net/Lenovo-ThinkPad-X1-Carbon-2016-Core-i7-WQHD-Ultrabook-Review.162631.0.html http://www.notebookcheck.net/Lenovo-announces-ThinkPad-X1-Carbon-Yoga-and-Tabl…
13.3" bare-metal ультрабук Xiaomi Air
Установлено 8GB ОЗУ DDR4
Если будет версия полностью на Intel (с Intel HD Graphics или даже Intel Iris) - это будет просто мечта линуксоида! И никаких макбуков! 😆😂
А пока для линуксоида серия Thinkpad от Lenovo остаётся вне конкуренции!
https://youtu.be/3KGk_qGdwv8 - Ubuntu на 12.5" модели Xiaomi Air
http://www.mi.com/mibookair/specs/ - технические характеристики лэптопов
Купить с доставкой, оплатив картой, можно на сайте магазина GearBest:
http://www.gearbest.com/laptops/pp_421980.html
http://www.gearbest.com/laptops/pp_425390.html
http://www.gearbest.com/laptops/pp_416105.html
Установлено 8GB ОЗУ DDR4
Если будет версия полностью на Intel (с Intel HD Graphics или даже Intel Iris) - это будет просто мечта линуксоида! И никаких макбуков! 😆😂
А пока для линуксоида серия Thinkpad от Lenovo остаётся вне конкуренции!
https://youtu.be/3KGk_qGdwv8 - Ubuntu на 12.5" модели Xiaomi Air
http://www.mi.com/mibookair/specs/ - технические характеристики лэптопов
Купить с доставкой, оплатив картой, можно на сайте магазина GearBest:
http://www.gearbest.com/laptops/pp_421980.html
http://www.gearbest.com/laptops/pp_425390.html
http://www.gearbest.com/laptops/pp_416105.html
YouTube
ᴴᴰ Ubuntu auf Xiaomi Mi Notebook Air - Testvideo [Deutsch/German]
Den Artikel zum Gadget findet ihr hier ► https://go.china-gadgets.de/xiaomi-notebook-air-test-5 Apple-Killer oder kurzer Hype? In diesem kleinen Hands On zei...
Отличный митап и скринкаст получился! 👍
Парни хорошо рассказали про Spring Boot - такая автоматизация многое упрощает и отменяет много ручной работы! А для Java ведь нет стандартизированного и принятого всем сообществом менеджера jar пакетов и единого репозитория (хотя Maven умеет подтягивать зависимости из репозиториев), типа pip, gem и npm, и контроля зависимостей как у инструментария для Go...
Но это уже другая история...
А в этой истории рассказ про Spring Boot и сессия live coding demo в процессе повествования - это вдвойне интереснее!
Если коротко, Spring Boot это слой автоматизации Java фреймворка Spring для быстрого конфигурирования всех компонентов проекта и его развёртывания.
Именно об этом тема - про автоматизацию конфигурации и развёртывания проектов на фреймворке Spring с использованием Spring Boot.
Спасибо Руслану Молчанову (@ruslanys) и Максиму Кливенко (@klivenko), что так хорошо подготовились и рассказали, показали и в целом очень классно провели онлайн скринкаст-митап!
Как раз именно практики в конкретных технологиях на канале очень не хватает!
https://youtu.be/I_LC4dUhBVI
Парни хорошо рассказали про Spring Boot - такая автоматизация многое упрощает и отменяет много ручной работы! А для Java ведь нет стандартизированного и принятого всем сообществом менеджера jar пакетов и единого репозитория (хотя Maven умеет подтягивать зависимости из репозиториев), типа pip, gem и npm, и контроля зависимостей как у инструментария для Go...
Но это уже другая история...
А в этой истории рассказ про Spring Boot и сессия live coding demo в процессе повествования - это вдвойне интереснее!
Если коротко, Spring Boot это слой автоматизации Java фреймворка Spring для быстрого конфигурирования всех компонентов проекта и его развёртывания.
Именно об этом тема - про автоматизацию конфигурации и развёртывания проектов на фреймворке Spring с использованием Spring Boot.
Спасибо Руслану Молчанову (@ruslanys) и Максиму Кливенко (@klivenko), что так хорошо подготовились и рассказали, показали и в целом очень классно провели онлайн скринкаст-митап!
Как раз именно практики в конкретных технологиях на канале очень не хватает!
https://youtu.be/I_LC4dUhBVI
YouTube
Meetup #22: Spring Boot в продакшн за 5 минут
Примеры кода можно посмотреть тут - https://github.com/ruslanys/devkg-meetup22
Как Golang помог в становлении технологий контейнеризации (изоляции окружения приложений) и популяризации экосистемы Docker.
http://thenewstack.io/go-programming-language-helps-docker-container-ecosystem/
Весьма интересная к прочтению статья, учитывая тот факт, что Docker активно использует системные вызовы ядра, а это уже proof of concept того, что Golang может использоваться и уже используется в очень крупных разработках системного ПО.
Go 1.7 по абсолютному большинству тестов и бенчмарков уже очень близок к Си и C++ по оптимизации и скорости исполнения кода (и уже обогнал Java и C#), при этом расход памяти ниже, а безопасность памяти выше, всё таки статическая типизация и компиляция плюс GC многое решают!
Также с версии 1.5 уже можно писать нативные приложения и библиотеки для Android и iOS, плюс десктопные кроссплатформенные приложения с GUI интерфейсом используя библиотеки Qt/QML.
https://github.com/golang/go/wiki/Mobile
https://talks.golang.org/2015/gophercon-go-on-mobile.slide#1
На Go создаётся много приложений, работающих с сетевым стеком, серверов и веб-фреймворков, облачных веб-сервисов, сервер-сайдных облачных инфраструктур, платформ и middleware (IaaS, PaaS, MaaS).
Go действительно постепенно становится языком общего назначения и экосистема вокруг языка растёт!
Но, многие возможности пока отсутствует, как в языке (многое решаемо, но бОльшим объёмом кода), так и в экосистеме.
В угоду обратной совместимости серьёзных нововведений в самом языке до версии 2.0 ждать не стоит.
http://thenewstack.io/go-programming-language-helps-docker-container-ecosystem/
Весьма интересная к прочтению статья, учитывая тот факт, что Docker активно использует системные вызовы ядра, а это уже proof of concept того, что Golang может использоваться и уже используется в очень крупных разработках системного ПО.
Go 1.7 по абсолютному большинству тестов и бенчмарков уже очень близок к Си и C++ по оптимизации и скорости исполнения кода (и уже обогнал Java и C#), при этом расход памяти ниже, а безопасность памяти выше, всё таки статическая типизация и компиляция плюс GC многое решают!
Также с версии 1.5 уже можно писать нативные приложения и библиотеки для Android и iOS, плюс десктопные кроссплатформенные приложения с GUI интерфейсом используя библиотеки Qt/QML.
https://github.com/golang/go/wiki/Mobile
https://talks.golang.org/2015/gophercon-go-on-mobile.slide#1
На Go создаётся много приложений, работающих с сетевым стеком, серверов и веб-фреймворков, облачных веб-сервисов, сервер-сайдных облачных инфраструктур, платформ и middleware (IaaS, PaaS, MaaS).
Go действительно постепенно становится языком общего назначения и экосистема вокруг языка растёт!
Но, многие возможности пока отсутствует, как в языке (многое решаемо, но бОльшим объёмом кода), так и в экосистеме.
В угоду обратной совместимости серьёзных нововведений в самом языке до версии 2.0 ждать не стоит.
The New Stack
How The Go Programming Language Helps Docker and the Container Ecosystem
To build Docker, developers made the somewhat novel choice of using Google’s relatively new Go programming language. Given that Docker’s
Сейчас мы находимся на финальном этапе формирования привязки разработки к вендорам и их экосистемам:
Java - Oracle
C# - Microsoft
Go - Google
Swift - Apple
http://www.tiobe.com/tiobe-index/
http://www.tiobe.com/tiobe-index/programming-languages-definition/
http://redmonk.com/sogrady/2016/07/20/language-rankings-6-16/
При этом конкуренция между Java и C#/Mono, Java и Go, а Go с C#/Mono на Android и в сервер-сайде на Linux будет только нарастать.
Microsoft выходит на поле Linux, Android и Open Source, купив Xamarin и платформу Mono, а также создав совеместно с Canonical слой shim (https://en.wikipedia.org/wiki/Shim_(computing)) в ядре своей ОС для трансляции POSIX системных вызовов ядра Linux в WinAPI вызовы ядра Windows, для практически нативного запуска бинарных файлов ELF формата Linux приложений в среде ОС Windows. Есть информация, что разработка адаптивного интерфейса и конвергентного рабочего стола Continuum для разных типов устройств с экранами разных размеров и разрешений - это также совместная разработка с Canonical, которая разрабатывает аналогичную технологию в Unity 8 UI для Ubuntu ещё со времён перевода всего дитрибутива на оболочку Unity и начала работ над графическим оконным сервером Mir, как универсальной альтернативы Xorg и Wayland для всех типов устройств.
Google будет стараться заменить Java на Go там где это возможно в Android, чтобы избежать всех патентных трений с Oracle.
Swift и экосистема Apple самодостаточны, как и Oracle с Java, которая продолжает развиваться (см. GraalVM).
А тут ещё рынок и целая экосистема IoT на подходе, которая даст ещё и второе дыхание вебу и облачному сервер-сайду.
Java - Oracle
C# - Microsoft
Go - Google
Swift - Apple
http://www.tiobe.com/tiobe-index/
http://www.tiobe.com/tiobe-index/programming-languages-definition/
http://redmonk.com/sogrady/2016/07/20/language-rankings-6-16/
При этом конкуренция между Java и C#/Mono, Java и Go, а Go с C#/Mono на Android и в сервер-сайде на Linux будет только нарастать.
Microsoft выходит на поле Linux, Android и Open Source, купив Xamarin и платформу Mono, а также создав совеместно с Canonical слой shim (https://en.wikipedia.org/wiki/Shim_(computing)) в ядре своей ОС для трансляции POSIX системных вызовов ядра Linux в WinAPI вызовы ядра Windows, для практически нативного запуска бинарных файлов ELF формата Linux приложений в среде ОС Windows. Есть информация, что разработка адаптивного интерфейса и конвергентного рабочего стола Continuum для разных типов устройств с экранами разных размеров и разрешений - это также совместная разработка с Canonical, которая разрабатывает аналогичную технологию в Unity 8 UI для Ubuntu ещё со времён перевода всего дитрибутива на оболочку Unity и начала работ над графическим оконным сервером Mir, как универсальной альтернативы Xorg и Wayland для всех типов устройств.
Google будет стараться заменить Java на Go там где это возможно в Android, чтобы избежать всех патентных трений с Oracle.
Swift и экосистема Apple самодостаточны, как и Oracle с Java, которая продолжает развиваться (см. GraalVM).
А тут ещё рынок и целая экосистема IoT на подходе, которая даст ещё и второе дыхание вебу и облачному сервер-сайду.
http://scalalaz.ru
Интерсные подкасты, записываемые московскими скалистами, о многих аспектах программирования на языке Scala, императивной и функциональной парадигме программирования, объединённых в одном уникальном языке
Интерсные подкасты, записываемые московскими скалистами, о многих аспектах программирования на языке Scala, императивной и функциональной парадигме программирования, объединённых в одном уникальном языке
С 256-м (2^8) днём года - днём программиста! 😄👍
python3 << codersday
import time as t
import math as m
from datetime import datetime, timedelta
year = t.localtime(t.time()).tm_year
day = 24*60*60
hour = 60*60
if t.localtime(t.time()).tm_yday < 256:
daysto256 = datetime(year, 1, 1) + timedelta(255) - datetime.now()
timeto256 = daysto256 / timedelta(seconds=1)
print('There are', m.floor(timeto256/day), 'days', m.floor(timeto256%day/hour), 'hours', m.floor(timeto256%day%hour/60), 'minutes', m.floor(timeto256%day%hour%60), 'seconds', "'till the programmer's day!")elif t.localtime(t.time()).tm_yday == 256:
daysto256 = datetime(year+1, 1, 1) + timedelta(255) - datetime.now()
timeto256 = daysto256 / timedelta(seconds=1)
print('Today is', str(t.localtime(t.time()).tm_yday) + "'th", "day of the year - happy programmer's day!") print('There are', m.floor(timeto256/day), 'days', m.floor(timeto256%day/hour), 'hours', m.floor(timeto256%day%hour/60), 'minutes', m.floor(timeto256%day%hour%60), 'seconds', "'till the next programmer's day!")elif t.localtime(t.time()).tm_yday > 256:
daysto256 = datetime(year+1, 1, 1) + timedelta(255) - datetime.now()
timeto256 = daysto256 / timedelta(seconds=1)
print('There are', m.floor(timeto256/day), 'days', m.floor(timeto256%day/hour), 'hours', m.floor(timeto256%day%hour/60), 'minutes', m.floor(timeto256%day%hour%60), 'seconds', "'till the next programmer's day!")codersday
Вслед за Facebook и Google, Яндекс отключает свои сервера Jabber и таким образом закрывает один из крупнейших сервисов протокола XMPP в рунете и интернете вообще
https://geektimes.ru/post/280366/
https://geektimes.ru/post/280366/
geektimes.ru
Яндекс вслед за остальными закрывает свой jabber сервер
Сейчас получил в jabber сообщение от сервера – следующего содержания: Здравствуйте. 5 октября Яндекс прекращает поддержку своего Jabber-сервиса, который...
Доклад Дениса Аникина на конференции HighLoad++ 2015 года.
Шикарный ликбез по масштабированию баз данных с простым объяснением буквально на пальцах и в картинках слайдов! Це для лiнивих! 😄👍
Хорошо объясняется что данные бывают горячие и холодные, т.е. востребованные и не очень.
Также объясняется почему современные реляционные БД финансово не эффективны под большой нагрузкой при их масштабировании, почему шардинг и репликация реляционных БД не решают проблему высокой нагрузки.
И дело не в реляционной модели данных...
Только представьте себе сколько решений-костылей порождает современная (пока ещё Фон-Неймановская) архитектура компьютеров с памятью по прежнему разделенной на ОЗУ, которое работает быстро, но не имеет постоянства памяти (persistence of memory) и ПЗУ, которое имеет постоянство хранения, но не имеет достаточной скорости работы.
Полагаю многие решения уйдут в прошлое с применением мемристорной технологии для конвергенции памяти и созданием на базе этой технологии общей памяти компьютеров и носителей - быстрой, объёмной и энергонезависимой с постоянным хранением. Уже есть прототипы, например технология носителей и памяти Intel Optane, но это уже другая история
https://vimeo.com/150101571
https://habrahabr.ru/company/oleg-bunin/blog/310690/ - стенограмма доклада
PS: Из недавнего - помните Яндекс перевёл почту с Oracle на PostgreSQL? У них свой способ экономии и повышения эффективности для почты и других сервисов. 😆😂
Шикарный ликбез по масштабированию баз данных с простым объяснением буквально на пальцах и в картинках слайдов! Це для лiнивих! 😄👍
Хорошо объясняется что данные бывают горячие и холодные, т.е. востребованные и не очень.
Также объясняется почему современные реляционные БД финансово не эффективны под большой нагрузкой при их масштабировании, почему шардинг и репликация реляционных БД не решают проблему высокой нагрузки.
И дело не в реляционной модели данных...
Только представьте себе сколько решений-костылей порождает современная (пока ещё Фон-Неймановская) архитектура компьютеров с памятью по прежнему разделенной на ОЗУ, которое работает быстро, но не имеет постоянства памяти (persistence of memory) и ПЗУ, которое имеет постоянство хранения, но не имеет достаточной скорости работы.
Полагаю многие решения уйдут в прошлое с применением мемристорной технологии для конвергенции памяти и созданием на базе этой технологии общей памяти компьютеров и носителей - быстрой, объёмной и энергонезависимой с постоянным хранением. Уже есть прототипы, например технология носителей и памяти Intel Optane, но это уже другая история
https://vimeo.com/150101571
https://habrahabr.ru/company/oleg-bunin/blog/310690/ - стенограмма доклада
PS: Из недавнего - помните Яндекс перевёл почту с Oracle на PostgreSQL? У них свой способ экономии и повышения эффективности для почты и других сервисов. 😆😂
Vimeo
Tarantool: как сэкономить миллион долларов на базе данных на высоконагруж
Когда стоит дилемма, какое DBMS решение выбрать, то приходится принимать во внимание много факторов — latency, bandwidth, ACID-complience, наличие/отсутствие…
Technologique
Доклад Дениса Аникина на конференции HighLoad++ 2015 года. Шикарный ликбез по масштабированию баз данных с простым объяснением буквально на пальцах и в картинках слайдов! Це для лiнивих! 😄👍 Хорошо объясняется что данные бывают горячие и холодные, т.е. востребованные…
Чуть позже расскажу о том почему Uber перешёл на MySQL и как всё таки реализуется шардинг в PostgreSQL - было много споров в интернетах об этой неоднозначной миграции
Technologique
Релиз приложения для видеозвонков - Google Duo Теперь новая видеозвонилка от Google официально доступна всем в Google Play! Функционал пока предельно простой https://play.google.com/store/apps/details?id=com.google.android.apps.tachyon
Приложение мессенджера Google Allo стало доступно для установки в Google Play
https://play.google.com/store/apps/details?id=com.google.android.apps.fireball
https://play.google.com/store/apps/details?id=com.google.android.apps.fireball
Technologique
Приложение мессенджера Google Allo стало доступно для установки в Google Play https://play.google.com/store/apps/details?id=com.google.android.apps.fireball
Google Assistant просто шикарен! 😄👍
Я использовал исключительно голосовой ввод.
Это уже AI, ассистент который умеет общаться, анализировать ввод, отвечать и давать различную информацию, запрашиваемую в свободной форме! 👍
Именно это и есть будущее поисковых движков!
Я использовал исключительно голосовой ввод.
Это уже AI, ассистент который умеет общаться, анализировать ввод, отвечать и давать различную информацию, запрашиваемую в свободной форме! 👍
Именно это и есть будущее поисковых движков!