C 语言的前世今生 本篇是应《程序员》杂志约稿所写。原本要求是写篇谈 C 语言的短文。4000 字之内 。 现放在这里,接受大家的批评指正。 C 语言,从 1970 年代设计并实现之初,它就注定了带有强烈工程师文化的语言,而缺乏一些学术气息。 由于大部分应用软件最终都需要和操作系统打交道,所以用来开发应用软件的语言,绝大部分也需要利用 C 语言完成和操作系统的通讯。 到了今天,大部分程序员不再需要逐个时间周期的去抠程序的性能。 我们在讨论 C 语言时,其实不仅仅涉及了 C 语言本身那用三十几个保留字构成的精简的控制结构和简约的语言特征。 这几部分语言核心之外的部分相对独立。 而编译预处理器又使得语言富有弹性,甚至可以写出违背 C 语言哲学的代码。 C 语言并不是绝对意义上最快的语言。 同时,C 语言的另一设计哲学就是让每行 C 代码尽量准确的对应相当数量的目标机器码。 C 语言在坚持以上几点理念时,并非突出某个方面(比如追求性能),而是同时兼顾的。 C 语言并不是这个世界上唯一的编程语言,可惜的是,不是所有程序员都认识到了这点。 无论如何 C 语言的语法和设计影响了许多其它语言。 回顾 C++ 出现的时代背景在于把面向对象当成解决复杂问题的“银弹”的年代。 和浩如烟海的 C++ 书籍相比较。 对于 C 语言不是母语的程序员来说,有充分的理由去学习一下 C 语言。 笔者用 C99 开发有一些年头,但也只使用了其中一个子集,不太敢在正式项目中完全推广。 C 语言从语言角度上讲,最大缺陷在于要求程序员自己去做内存管理。 也有人试图在 C 语言层面解决这个问题,例如以库形式提供垃圾回收的机制(笔者也曾做过类似尝试)。 这个问题在一定程度上也促使了 java 的诞生。 我们不应该指望一门语言解决所有的问题。 ps.
CoGe VJ - Modular VJ software for Mac OSX CoGe VJ is a semi-modular VJ software, which means you can build the environment that suits you the best, and you won't be stuck with a pre-defined interface. You are only limited by the maximum performance of your computer's graphics card and, of course, your imagination. Mix and composite multiple sources, apply stackable effects, automate with sequencers and control surfaces! Audio Analysis in CoGe VJ allows you to modulate parameters using incoming sound. CoGe isn’t a picky VJ software. Legendary support We are always here to help if you need - we aim to get back to all messages within 24 hours but we're usually much faster! Canon Digital Camera Software Developer's Kit Canon Digital Camera Software Developers Kit General Information Current SDK Versions as of November 13, 2014 EDSDK 2.15 for EOS digital cameras What are the Canon Digital Camera SDKs? SDK stands for Software Development Kit. EDSDK 2.15 Windows version for select EOS Digital SLRs EDSDK 2.15 Macintosh version for select EOS Digital SLRs The Canon Digital Camera SDKs comprise a set of APIs, DLLs, and static link libraries that provide an interface for accessing Canon digital cameras and data generated by Canon digital cameras. EDSDK 2.15 Windows and Macintosh version support remote control for some EOS cameras, RAW image conversion and downloading from select EOS Digital SLRs with DIGIC 4, DIGIC III or DIGIC II processors released over the past five years, starting with the EOS-1D Mark III and continuing through to the EOS-1D X. All Canon Digital Camera SDK versions are written in C. PLEASE NOTE:EDSK is not 64-bit compatible. Additional Notes on this release
Milo的遊戲開發 - 《程序員修煉之道》、《代碼之美》、《Real-time Rendering 3rd Edition》、《Physical-based Rendering》 新年過後,Mil的開發進度有點慢,花了斷斷續續一個月才完成了一個簡單的 translate gizmo。要長期維持熱情真的不容易。由於沒甚麼Mil的進展可以看,今天也未想到做那個 story,就在此和大家分享這幾個月看過的書。 程序員修煉之道 (英文注釋版) The Pragmatic Programmer: From Journeyman to Master 我對這書本來沒有很大的期望,而且它的書齡比較大,只是當作休閒讀物,但閱後喜出望外。 Tip 4: Don’t Live with Broken Windows 說的不是M記的Windows (笑)。 在我的過去,也有不少類似的項目。 每看到程序中有問題的地方,就不要容忍。 另一個提示 Tip 30: You Can’t Write Perfect Software 這個也許是一個顯淺的提示,對我來說郤是一個反省的機會。 Beautiful Code: Leading Programmers Explain How They Think 代碼之美 相反,這本原來比較有期望的著作,閱後(沒有全部讀完)有點失望。 有些文章是有些趣味,有些覺得非常沉悶。 或許, Beauty is in the eye of the beholder 代碼需然用文字寫成,但是否和詩詞一樣,應用、或可用「美」這個形容詞去度衡量,是一個問題。 買這本書的人或許要三思。 Real-Time Rendering 3rd Edition 毫無疑問,這是一本非常好的書。 Physically Based Rendering 我在大學沒讀過計算機圖形學、沒寫過 Offline Renderer,所以想多學一些這方面的知識。 嘗試從頭到尾看一篇,但是後面關於 Monte Carlo Integration 和 Light Transport Equation 對我來說是很難。 這本書的一個缺點是異常重 (5.5磅 = 2.5 公斤),在床上看腹部會感到很大「壓力」;相對的優點是可以訓練手部肌肉。 閱讀計劃 由於看過《程序員修煉之道 (英文注釋版)》,想繼續看幾本類似的原文書,包括 Kent Beck 的注釋版: Implementation Patterns Test-Driven Development by Example 注釋版是挻方便的,英文生字也不用查字典。
What is Vuo? | Vuo After the show… Latesha: Great VJ set. How did you make those graphics? Lupe: With Vuo. I'm an artist. Latesha: I've got a gig next month for The Queen of Pop. Lupe: Yeah! Latesha: Hey, could I make each building appear in sync with the beat? Lupe: Mm-hm. Latesha: Oh! Lupe: Put some force sensors on the stage, connect them to an Arduino, and feed that into Vuo. Latesha: And I want to make the stagelights flicker and shoot fireworks. Lupe: Vuo can control stage equipment. Latesha: I bet I could use Vuo to make the promo video, too. Lupe: Right. Latesha: Thanks for your help! Lupe: No problem. untitled Introduction The Canon EOS Digital SDK is a quite powerful SDK to remote control Canon DSLRs. Unfortunatly it is quite difficult to find some good examples for it on the internet and the provided documentation is not very complete. Since I have found out many things already and want to make it easier for others I thought I could compile some of the most important things together and do a tutorial. This tutorial includes: Init and terminate the SDK Get connected cameras Open and close a session with a camera Get and set camera settings Get a list of available settings Take photos (normally and in Bulb mode) Record videos Press the shutter button remotely Download data (images, films) from the camera Start and view the live view Control the focus Lock and unlock the camera UI Get an image thumbnail Get folders and files on the camera Note: I'm not affiliated with or funded by Canon Inc. in any way I do not guarantee for this software in any way. Full Library Background Using the code
Visual Studio 2010 操作技巧系列:常用功能心得筆記 在去年的 Microsoft Tech‧Days 2010 我曾經寫過一篇 Visual Studio 2010 的操作技巧文章在每個人都會拿到的資料袋裡,不過似乎不是很多人看過,因此決定將文章放到部落格上供大家參考學習,要做好開發工作絕對不能不熟悉每天都在使用的開發工具,對工具的掌握度越高,相對的工作效率也就越高,也越能夠專注在更有創造力的事情上! 1. 最近使用的專案可任意釘選或移除 Visual Studio 2008 的內建功能裡並沒有提供任何機制能夠管理「最近使用的專案」,若需要在「最近使用的專案清單」刪除特定專案還需要額外安裝 PowerCommands for Visual Studio 2008 才行,而且也沒有釘選(Pin)功能,如果專案一多,可能真正常用的專案會被擠掉。 不過到了 Visual Studio 2010 不但可以直接在 啟始頁「釘選」特定專案,讓該專案能夠永久停留在「最近使用的專案清單」裡,還能隨時將不需要留存在上面的專案從此清單移除。 這功能的好處就在於有時候我們為了實驗某些功能,可能會開啟一些臨時性的專案,或為了支援同事的需求開啟一些很少用的專案,這時就可以視情況決定是否要刪除或釘選這些專案清單,這樣才不會讓一些臨時開啟的專案覆蓋掉真正經常使用的專案。 2. Visual Studio 2010 的「擴充管理員」是一個全新的擴充套件管理工具,不但可以線上立即下載套件,還能自動判斷擴充套件是否更新,所有瀏覽、搜尋、安裝、更新擴充套件的過程全部都在「擴充管理員」的操作介面中完成。 預設瀏覽擴充套件時是以「最高順位」來做排序 (就是最多人按讚的套件),你可以看到全世界最熱門的擴充套件有哪些,而這些擴充套件也許就是提升你開發效率的重要工具之一,如果需要進一步取得使用說明可以點選右側的「詳細資訊」即可連到擴充套件的專屬網頁。 如果你已安裝的擴充套件有更新版出現時,當開啟 Visual Studio 2010 時也會主動提醒你有更新的擴充套件出現,讓你可以直接升級到最新版本。 在開啟擴充管理員並點選至更新頁籤後直接點選「更新」按鈕即可自動安裝完成。 備註:大部分的套件在更新完後都必須重開 Visual Studio 2010 才會生效。 以下是幾個筆者強力推薦的幾個 Visual Studio 2010 擴充套件,我在日後的文章裡也會介紹幾款: 3. 4.
QC Designers - New to Quartz Composer? Start here. April 24, 2013 5:37 AM PDT Getting started What is QC Designers? QC Designers is a community of UI designers, animators and developers interested in creating more delightful experiences with tools like Quartz Composer. Our focus is on getting people up to speed with QC, but we’ll continue to adapt as new tools come into fashion. While there are other forums for QC users, we cater to Interaction Design, specifically. What is Quartz Composer? From Wikipedia: “Quartz Composer is a node-based visual programming language provided as part of the Xcode development environment in Mac OS X for processing and rendering graphical data.” It is an Apple product used by designers & animators to create animations and prototypes. To create a composition, a user uses the Editor to connect a number of patches with “noodles” that sends a signal from one patch to another. How to download QC Quartz Composer is a free download from Apple’s developer site. YouTube video: Kineme forums.
v002/v002-Camera-Live [.NET][OAuth Series] EasyOAuth Library: 容易使用且可擴充的 OAuth Library - 小朱® 的技術隨手寫 這是筆者的第三個 Codeplex 開放原始碼專案,承繼前面四篇 OAuth Series 文章的說明,EasyOAuth Library 建構於 .NET Framework 之上,並且可以很容易的將 OAuth 的功能套用到自己的 .NET 應用程式中,並且開發人員可以依照 EasyOAuth Library 開放的介面,為非內建的 OAuth Service Provider 開發介面,以在 EasyOAuth Library 中直接使用。 EasyOAuth Library 支援 Google Account, Facebook, Twitter 以及 Yahoo 四種 OAuth Service Provider 的驗證與授權功能,分別內建於 OAuth.Desktop 與 OAuth.Web 兩個函式庫中,分別是 GoogleOAuthProvider, FacebookOAuthProvider, TwitterOAuthProvider 與 YahooOAuthProvider 四個類別,它們有自己的 Configuration 機制,並且可以一次在同一個應用程式中使用不同的 OAuth Service Provider 進行認證與授權。同時,授權取得的認證碼 (access token) 會自動保存在 OAuthAccessTokens.dat 檔案中,這個檔案是一個 XML 的檔案。 目前筆者首先釋出 Desktop Application 版本的 EasyOAuth Library,未來會再釋出 Web Application 版本的 EasyOAuth Library。 首先,請到 下載 Desktop Application 的 Binary code,並且加入參考到桌面應用程式 (可以是 Console application 或 Windows Forms application),然後在 app.config (如果專案中沒有的話要加) 中加入下列宣告: 然後,加入下面的 EasyOAuth 組態設定: 組態設定好後,只要在程式中引入 OAuth 命名空間: using OAuth; 然後使用 OAuthContext 物件,即可操作 OAuth 的流程: try { if (!