This document summarizes an agenda for a 2015 AV technology sharing session. It discusses Instaparse, a Clojure parser generator, EBNF grammar notation, defining functions with pattern matching using defun, and Cloud Query Language (CQL) for translating SQL-like queries to MongoDB queries. Examples are provided for parsing arithmetic expressions, defining recursive functions, pattern matching on collections, visualizing parses trees, and transforming parses queries to MongoDB queries. Performance of the CQL parser is discussed, noting it can achieve over 400 queries per second per node through caching.
This document provides recommendations for commonly used development tools on Mac, including recommendations for the terminal, command line tools, version control with Git, Java tools, Clojure tools, Mac apps, and Emacs configurations. It also asks the audience to provide additional tool recommendations.
Direct linking in Clojure 1.8 allows functions to make direct static method calls to other functions for improved performance, bypassing lookups through vars. It does this by compiling functions with direct calls instead of going through the var and Fn object. However, direct linking cannot see redefinitions and doesn't work with libraries like with-redefs that rely on redefining functions. Functions can be marked with ^:redef to prevent direct linking.
The document discusses CPU caches and cache coherence. It covers direct mapping and N-way mapping of CPU caches. It also discusses cache replacement policies like LRU and techniques like write-back. It introduces the MESI protocol for maintaining cache coherence across CPUs and cache line states like dirty valid. It provides examples of Java programs to demonstrate CPU cache misses and false sharing and ways to address it like using the @Contended annotation.
This document introduces Elixir, an open-source, functional, concurrent, and dynamic language that runs on the Erlang virtual machine. It discusses key features of Elixir like its Ruby-like syntax, support for distributed and fault-tolerant systems, actor model, macros, protocols, and tools. It also provides examples of functional programming, pattern matching, actors, GenServers, supervisors, macros, protocols, and sigils in Elixir.
This document summarizes Erlang processes and scheduling in Erlang. It discusses the process control block, stack and heap, message passing, the scheduler, workload balancing across schedulers, and garbage collection. The scheduler prioritizes ports, maximum, high and normal/low priority queues. It will consume all reductions for a process or pause it waiting for a message. The garbage collector uses copying collection for process heaps and reference counting for shared binaries.
Hystrix is a latency and fault tolerance library designed by Netflix to isolate points of access to remote systems and services. It stops failures from cascading and improves resilience. Hystrix uses concepts like thread pooling, timeouts, circuit breakers, and fallbacks to achieve reliability. It provides commands for synchronous and asynchronous access to remote resources, and can be configured using properties or code. Hystrix also includes a dashboard for monitoring metrics and failures.
This document summarizes an agenda for a 2015 AV technology sharing session. It discusses Instaparse, a Clojure parser generator, EBNF grammar notation, defining functions with pattern matching using defun, and Cloud Query Language (CQL) for translating SQL-like queries to MongoDB queries. Examples are provided for parsing arithmetic expressions, defining recursive functions, pattern matching on collections, visualizing parses trees, and transforming parses queries to MongoDB queries. Performance of the CQL parser is discussed, noting it can achieve over 400 queries per second per node through caching.
This document provides recommendations for commonly used development tools on Mac, including recommendations for the terminal, command line tools, version control with Git, Java tools, Clojure tools, Mac apps, and Emacs configurations. It also asks the audience to provide additional tool recommendations.
Direct linking in Clojure 1.8 allows functions to make direct static method calls to other functions for improved performance, bypassing lookups through vars. It does this by compiling functions with direct calls instead of going through the var and Fn object. However, direct linking cannot see redefinitions and doesn't work with libraries like with-redefs that rely on redefining functions. Functions can be marked with ^:redef to prevent direct linking.
The document discusses CPU caches and cache coherence. It covers direct mapping and N-way mapping of CPU caches. It also discusses cache replacement policies like LRU and techniques like write-back. It introduces the MESI protocol for maintaining cache coherence across CPUs and cache line states like dirty valid. It provides examples of Java programs to demonstrate CPU cache misses and false sharing and ways to address it like using the @Contended annotation.
This document introduces Elixir, an open-source, functional, concurrent, and dynamic language that runs on the Erlang virtual machine. It discusses key features of Elixir like its Ruby-like syntax, support for distributed and fault-tolerant systems, actor model, macros, protocols, and tools. It also provides examples of functional programming, pattern matching, actors, GenServers, supervisors, macros, protocols, and sigils in Elixir.
This document summarizes Erlang processes and scheduling in Erlang. It discusses the process control block, stack and heap, message passing, the scheduler, workload balancing across schedulers, and garbage collection. The scheduler prioritizes ports, maximum, high and normal/low priority queues. It will consume all reductions for a process or pause it waiting for a message. The garbage collector uses copying collection for process heaps and reference counting for shared binaries.
Hystrix is a latency and fault tolerance library designed by Netflix to isolate points of access to remote systems and services. It stops failures from cascading and improves resilience. Hystrix uses concepts like thread pooling, timeouts, circuit breakers, and fallbacks to achieve reliability. It provides commands for synchronous and asynchronous access to remote resources, and can be configured using properties or code. Hystrix also includes a dashboard for monitoring metrics and failures.
2021 Net Conf Taiwan-初探 Azure Communication Service讓 App 也有視訊、通話、即時聊天、簡訊和電話功能Alan Tsai
?
github: https://github.com/alantsai-samples/2021-net-conf-acs-demo
如果今天你的 Application 使用者遇到了問題可以怎麼樣尋求協助?最快的方式肯定是透過視訊或者通話等功能來達到。但是要做這件事並不容易。以現有流程,可能使用者要打電話找客服,客服在開 Teams 的會議鏈接,然後想辦法傳鏈接過去,然後使用者可能還要下載應用程式,等連上的時候都要下班了。難道不能直接在應用程式一鍵就連上客服,直接就可以馬上共享畫面找出問題嗎?
Azure Communication Service 是一系列的 API 和 SDK 可以讓我們做到視訊、通話、即時聊天、簡訊和電話功能非常容易做到並且整合到 Application。尤其是最近整合到 Teams(在 Preview),讓我們客服人員可以使用 Teams 作為後端而一般使用者直接使用 Application 進行交談。
在這節裡面,我們來看一下什麼是 Azure Communication Service,以及如何在我們 Application 整合它讓我們可以提供豐富的通訊方式。