logo
首页技术栈工具库讨论
bamboo
bamboo
[Index] For package maintainers and hackage trustees Bamboo is a port of Panda, but runs on top of Hack. It's an experimental project but quite portable. The Bamboo codebase is a mess!!! But Haskell is so reliable that left me no incentive to do a rewrite. So just use it, build middleware for it, or better yet write a new blog engine so everyone can benefit :) By it's middleware nature, bamboo could be used with other hack middleware to achieve extensibility; Bamboo plugins are also middleware, so they can be used not only in bamboo, but any other CMS like web application. bamboo can be customized in 3 ways: Theme is separated from the bamboo's controller, connected through an interface and a state. Though theme could be pure, it has the type of This makes theme creation a relatively complex task, since a theme author basically has to do everything: from html construction to model manipulation. But since state is passed purely and return type is in IO, it also provides the ultimate safety and flexibility to theme construction, something unmatched by any main stream web frameworks. Integrating twitter? no problem, do them in IO. Plugin is a proper hack middleware, so it works on an upper layer of the blog engine. It has all the power of a middleware, i.e. intercept request and response, and also the limitation, e.g. no idea of the underlying data structure of the app. Plugin can be used to to do customization on the env object, or transformation to the response body. An example plugin is syntax highlighting, which could be done in the core, but would be more lightweight ( in terms of architecture design ) to be separated into a plugin. You are hence not limited to use just bamboo-plugins to customize your blog, any hack-middleware which suite your need will do. In db/config/theme, you can customize precisely which js / css files to use, this allows client side customization and also lightweight configuration without compilation. 郑板桥(1693~1765) 修竹幽兰图 <a href="http://github.com/nfjinjing/bamboo/raw/master/bamboo.jpg"> <img src="http://github.com/nfjinjing/bamboo/raw/master/bamboo-thumb.jpg" /> </a>
manatee
manatee
Manatee is Haskell integrated environment written in Haskell. The goal of the Manatee project is to provide a fast, safe and flexible integrated environment for haskell hacking. You can consider it is new environment mix Gnome and Emacs. Like Gnome to provide friendly graphics interface and work efficient like Emacs. Manatee use multi-processes framework, any sub-module running in separate process to protected core won't crash. So it minimize your losses when some unexpected exception throw in extension. Video (Select 720p HD) at : http://www.youtube.com/watch?v=weS6zys3U8k or http://www.youtube.com/watch?v=A3DgKDVkyeM You can find screenshots at : http://goo.gl/MkVw Below is build step for Manatee: 1) Install gold-linker to accelerate installation: I suggest use gold-linker instead ld to accelerate installation. In Debian system, you just need do below command: This step is optional, it's okay use ld link program, just much slow. :) 2) Install GHC compiler http://www.haskell.org/ghc/download_ghc_7_0_3: Download ghc package for your system, then do below command : 3) Install C library: In Debian use below command: 4) Install cabal: Download http://hackage.haskell.org/packages/archive/cabal-install/0.10.2/cabal-install-0.10.2.tar.gz Decompress cabal-install-0.10.2.tar.gz and do below command: 5) Install dependent Haskell library: First make sure HOME/.cabal/bin/ in your PATH Generic way is add PATH=$PATH:~\/.cabal\/bin in your ~/.bashrc Then do below command (NOTE: don't use root permission with cabal, otherwise Manatee can't work): 6) Install Manatee: Install all Manatee packages (same, don't use root permission): If you don't want install all Manatee packages, you can install basic package like below: Then choose extension package list in below to install: Note if you don't install any extension package, nothing will show in manatee, so you at least to choose one extension to install. That's all, then type command manatee to play it! :) I have test, Manatee can works well in Gnome, KDE, XMonad and XFCE Video (Select 720p HD) at : http://www.youtube.com/watch?v=weS6zys3U8k http://www.youtube.com/watch?v=A3DgKDVkyeM http://v.youku.com/v_show/id_XMjI2MDMzODI4.html Screenshots at : http://goo.gl/MkVw Manual at : http://haskell.org/haskellwiki/Manatee IRC channel: irc.freenode.net 6667 ##manatee Mailing-List: manatee-user@googlegroups.com manatee-develop@googlegroups.com Manatee is distributed framework, it allowed you install extension don't need depend each other, but it's easy to break if some package is older than core packages (manatee-core, manatee). So please make sure *all* packages has update to newest version before you report bug to manatee-user@googlegroups.com . Thanks! :)
hails
hails
The rise of web platforms and their associated apps represents a new way of developing and deploying software. Sites such as Facebook and Yammer are no longer written by a single entity, but rather are freely extended by third-party developers offering competing features to users. Allowing an app to access more user data allows developers to build more compelling products. It also opens the door to accidental or malicious breaches of user privacy. In the case of a website like Facebook, exposing access to a user's private messages would allow an external developer to build a search feature. Exciting! But, another developer can take advantage of this feature to build an app that mines private messages for credit card numbers, ad keywords, or other sensitive data. Frameworks such as Ruby on Rails, Django, Yesod, etc. are geared towards building monolithic web sites. And, they are great for this! However, they are not designed for websites that integrate third-party code, and thus lack a good mechanism for building such multi-app platforms without sacrificing a user's security or an app's functionality. Hails is explicitly designed for building web platforms, where it is expected that a site will comprise many mutually-distrustful components written by a variety of entities. We built Hails around two core design principles. Separation of policy: Data access policies should be concisely specified alongside data structures and schemas, rather than strewn throughout the codebase in a series of conditionals. Code that implements this is called a policy module in Hails (see Hails.PolicyModule). Mandatory access control (MAC): Data access policies should be mandatory even once code has obtained access to data. MAC lets platform components modules productively interact by sharing data, despite mutual distrust. Haskell lets us implement MAC at a fine grained level using the information flow control library LIO. A Hails platform hosts two types of code: apps and /policy modules/. Apps encompass what would traditionally be considered controller and view logic. Policy modules are libraries that implement both the model and the data security policy. They are invoked directly by apps or other policy modules, but run with different privileges from the invoking code. Both apps and policy modules can be implemented by untrusted third parties, with the user only needing to trust the policy module governing the data in question. Separating of policy code from app code allows users to inspect and more easily unserstand the overall security provided by the system, while MAC guarantees that these policies are enforced in an end-to-end fashion.