20141030 ntustme computer_programmingandbeyond_shareTing-Shuo Yo
A short introduction to what programming can do, with a special focus on the field of big data and internet of things. The audience is undergraduate students taking the first programming class, so the aim is to give a general big picture instead of thorough details.
PIME - 用 Python 和 JavaScript 快速開發 Windows 的中文輸入法Jen Yee Hong
Open source 的中文輸入 framework 在Linux下選擇很多,但在 Windows 上則相對缺乏, 尤其 Windows 8 之後,新 TSF 架構實做相當困難,Metro mode 又多了許多限制, 使得很多開發者空有設計輸入法的構想,卻無法落實到很多人使用的 Windows 系統上。PIME 為一個能在 Windows 上用 python 和 JavaScript 開發中文輸入法的架構,底層採用 C++ 開發的 LibIME (取自新酷音輸入 Windows 版),幫助有志於改善中文輸入環境的朋友, 在不了解太多細節,也不用會 C++ 的狀況下,也能用標準 web 技術設計新的輸入法。
This document summarizes one company's experience migrating their PHP e-commerce site to the Go programming language. It discusses how they initially rewrote their catalog page in AngularJS and Go, but ran into issues with Facebook OpenGraph integration. For their second release, they decided on a hybrid PHP and Go approach, with Go used to power specific backend modules like caching and shopping cart functionality. The author reflects on lessons learned around thoroughly evaluating new technologies before deploying them and making sure any changes have team consensus.
PIME - 用 Python 和 JavaScript 快速開發 Windows 的中文輸入法Jen Yee Hong
Open source 的中文輸入 framework 在Linux下選擇很多,但在 Windows 上則相對缺乏, 尤其 Windows 8 之後,新 TSF 架構實做相當困難,Metro mode 又多了許多限制, 使得很多開發者空有設計輸入法的構想,卻無法落實到很多人使用的 Windows 系統上。PIME 為一個能在 Windows 上用 python 和 JavaScript 開發中文輸入法的架構,底層採用 C++ 開發的 LibIME (取自新酷音輸入 Windows 版),幫助有志於改善中文輸入環境的朋友, 在不了解太多細節,也不用會 C++ 的狀況下,也能用標準 web 技術設計新的輸入法。
This document summarizes one company's experience migrating their PHP e-commerce site to the Go programming language. It discusses how they initially rewrote their catalog page in AngularJS and Go, but ran into issues with Facebook OpenGraph integration. For their second release, they decided on a hybrid PHP and Go approach, with Go used to power specific backend modules like caching and shopping cart functionality. The author reflects on lessons learned around thoroughly evaluating new technologies before deploying them and making sure any changes have team consensus.
Caching is used to optimize performance by taking advantage of different access speeds of storage mediums. It stores frequently accessed data in faster storage like memory or disk cache. There are different types of caches like browser cache, server cache using memcached, and cache within a request. Memcached is mainly used for read-through caching but has issues like requiring separate deployment and CAS operations. GroupCache is an alternative that avoids duplicated calls to the backend and has better performance without network IO or CAS. Write-through caching aims to have zero reads from the backend but is challenging to implement transactionally at scale.
This document discusses the suitability of Go for web development. It notes that while Go's built-in HTML template engine is basic, the Gorazor template engine provides a more powerful way to mix Go code into HTML templates. Code generation approaches also allow Go to behave more dynamically at runtime. Go's fast compilation and use of interfaces make it well-suited for dynamic web applications and large websites. The document concludes that while other languages may be more mature, Go is suitable for developing large, stable, scalable websites that need to be maintained over time.
1. Go is a programming language designed by Google to help solve Google's "big problems".
2. Go provides garbage collection, concurrency features, and static typing for building scalable and reliable systems.
3. Go can be used to build web applications and services using the net/http package for HTTP servers and clients.
The author explains why they switched from primarily using Python to primarily using Go for serious projects. Some key reasons include that Go has better performance, code quality, testing, and concurrency features compared to Python. While Python is still good for hobby projects, Go enforces error handling, has built-in profiling tools, and makes deployment easier due to compiling to a single binary.
This document discusses the key concepts and advantages of using Git over Subversion (SVN) for version control. It notes that while Git has a steeper learning curve due to its distributed and nonlinear model, it offers benefits like faster and easier branching, merging, and deployment. The document demonstrates several Git commands and techniques through examples, such as staging changes, amending commits, rebasing branches, and using Git for deployment to Heroku. It also addresses access control and GUI options for Git.
This document provides an overview of git and compares it to SVN (Subversion). It notes that git was initially created by Linus Torvalds for Linux kernel development. It highlights key differences between git and SVN such as git being distributed while SVN is centralized, and git tracking the repository while SVN tracks files/folders. The document emphasizes that understanding git requires unlearning how SVN works. It provides some links to additional resources on git.
Sharding is a technique for scaling databases by partitioning data across multiple database servers or nodes. There are different ways to implement sharding such as sharding on the primary key or an index in a relational database. For key-value stores, a common approach is to hash the key and assign it to a node using consistent hashing. While sharding improves scalability, it also introduces some limitations like not being able to perform joins across shards and additional work required for data maintenance.
The document discusses the inner workings of Zend Framework, including its use of .htaccess and index.php files to bootstrap the application. It describes how Zend/Application/Bootstrap/BootstrapAbstract.php and application-specific bootstrap files are used to initialize the application. The front controller pattern is implemented using Zend/Application/Resource/Frontcontroller.php. Routing is handled by Zend/Controller/Router modules which dispatch requests to controllers and actions. While the framework aims to be simple through convention over configuration, it can also be complex under the hood. Zend Framework 2 refactored some components, such as the database adapter, for improved architecture.
29. 解析对象
• ptsd: github.com/wickman/ptsd
• thrift lexer/parser using ply
• ply: www.dabeaz.com/ply/
• An implementation of lex and yacc parsing tools
for Python