The 2.6.32.55, 3.0.18, and 3.2.2 stable updates have been released; each
contains the usual long list of important fixes
Open Source Pixels
Every Pixel Counts
Recent Articles / Archives
Three new stable kernel updates
projects – [Open Source Flash Projects] Took out random code that should have been in the …
@@ -1,787 +1,9 @@ . ====== Open Source Flash Projects ====== ~~DISCUSSION:off~~ - /* - ************************************* - * Multi Video Player with Play List - * http://www.FlepStudio.org import mx.events.EventDispatcher; - import mx.utils.Delegate; - import YouTubePlayerEvent; - - class YouTubePlayer - { - public var autoPlay:Boolean = true; - public var chromeless:Boolean = false; - public var pars:String = 'autoplay=0&loop=0&rel=0&showsearch=0&hd=1'; - public var playerWidth:Number = 425; - public var playerHeight:Number = 344; - - public var addEventListener:Function; - - private var intervals:Array = [ ]; - - private var parent:MovieClip; - private var loader:MovieClipLoader; - private var player:MovieClip; - private var videoId:String; - private var removePlayer:Boolean; - private var dispatchEvent:Function; - - public function YouTubePlayer(parent:MovieClip) - { - EventDispatcher.initialize( this ); - - System.security.allowDomain( '*' ); - System.security.allowDomain( 'www.youtube.com' ); - System.security.allowDomain( 'youtube.com' ); - System.security.allowDomain( 's.ytimg.com' ); - System.security.allowDomain( 'i.ytimg.com' ); - - this.parent = parent; - - loader = new MovieClipLoader(); - } - - public function init(videoId:String):Void - { - this.videoId = videoId; - - if ( player ) - { - removePlayer = true; - - if ( player.getPlayerState() != 1 ) - { - destroyPlayer(); - } - else - { - player.stopVideo(); - } - } - else - { - loadVideo(); - } - } - - private function loadVideo():Void - { - var url:String = ( chromeless ? 'http://www.youtube.com/apiplayer' : 'http://www.youtube.com/v/' + videoId + '&' + pars ); - - player = parent.createEmptyMovieClip( 'Player' + ( new Date().getTime() ), parent.getNextHighestDepth() ); - - parent._visible = false; - - loader.addListener({ onLoadInit: loadInit() }); - - loader.unloadClip( player ); - - loader.loadClip( url, player ); - } - - private function loadInit():Void - { - intervals.push( setInterval( Delegate.create( this, checkPlayerLoaded ) , 500 ) ); - } - - private function checkPlayerLoaded():Void - { - if ( player.isPlayerLoaded() ) - { - if ( chromeless ) - { - player.loadVideoById( videoId ); - } - - player.addEventListener( YouTubePlayerEvent.STATE_CHANGED, Delegate.create( this, onPlayerStateChanged ) ); - player.addEventListener( YouTubePlayerEvent.ERROR, Delegate.create( this, onPlayerError ) ); - - resizePlayer( playerWidth, playerHeight ); - - parent._visible = true; - - for ( var i:Number = 0; i < intervals.length; i++ ) - { - clearInterval( intervals[ i ] ); - } - - onPlayerReady(); - } - } - - private function onPlayerStateChanged(state:Number):Void - { - switch ( state ) - { - case 0: - // ended - - if ( removePlayer ) - { - destroyPlayer(); - } - - dispatchEvent( new YouTubePlayerEvent( YouTubePlayerEvent.PLAYER_ENDED ) ); - - break; - - case 1: - // playing - - dispatchEvent( new YouTubePlayerEvent( YouTubePlayerEvent.PLAYER_PLAYING ) ); - - break; - - case 2: - // paused - - dispatchEvent( new YouTubePlayerEvent( YouTubePlayerEvent.PLAYER_PAUSED ) ); - - break; - - case 3: - // buffering - - dispatchEvent( new YouTubePlayerEvent( YouTubePlayerEvent.PLAYER_BUFFERING ) ); - - break; - - case 5: - // video queued - - dispatchEvent( new YouTubePlayerEvent( YouTubePlayerEvent.PLAYER_QUEUED ) ); - - break; - } - } - - private function onPlayerError():Void - { - dispatchEvent( new YouTubePlayerEvent( YouTubePlayerEvent.ERROR ) ); - } - - public function resizePlayer(width:Number, height:Number):Void - { - if ( player.isPlayerLoaded() ) - { - player.setSize( width, height ); - } - } - - private function onPlayerReady():Void - { - if ( autoPlay ) - { - player.playVideo(); - } - } - - private function destroyPlayer():Void - { - intervals.push( setInterval( Delegate.create( this, checkPlayerDestroyed ), 500 ) ); - - removePlayer = false; - } - - private function checkPlayerDestroyed():Void - { - if ( !player ) - { - for ( var i:Number = 0; i < intervals.length; i++ ) - { - clearInterval( intervals[ i ] ); - } - - init( videoId ); - } - else - { - for ( var players:String in parent ) - { - parent[ players ].destroy(); - - removeMovieClip( parent[ players ] ); - unloadMovie( parent[ players ] ); - } - - player = null; - } - } - - public function stop():Void - { - removePlayer = false; - - player.stopVideo(); - } - } - * © Author: Filippo Lughi - * version 1.0 - ************************************* - */ - package org.FlepStudio.VideoPlayer - { - import flash.display.*; - import flash.net.*; - import flash.media.*; - import flash.events.*; - import flash.utils.*; - import flash.geom.*; - import caurina.transitions.Tweener; - - public class Player extends MovieClip - { - private var fla:MovieClip; - - public var myVideo:Video; - private var nc:NetConnection; - private var ns:NetStream; - - private var apple:Apple; - - private var client:Object=new Object; - - private var check_click:String; - - private var timer_video:Timer; - - private var rect:Rectangle; - - private var duration:Number; - private var video_duration:Number; - private var video_position:Number; - private var offset_scrub:Number; - private var firstMouseX:Number; - - private var boo_play:Boolean=true; - private var boo_pause:Boolean=false; - - // CONSTRUCTOR - public function Player():void - { - addEventListener(Event.ADDED_TO_STAGE,init); - } - - // This method is called when VideoList class add this class as a child and inits the class logics - private function init(evt:Event):void - { - removeEventListener(Event.ADDED_TO_STAGE,init); - - fla=parent as MovieClip; - - // Disable the buttons untill buffering has stopped - disablePlayAndPauseButtons(); - fla.consolle_mc.play_mc.gotoAndStop(2); - fla.consolle_mc.pause_mc.gotoAndStop(1); - fla.bar_mc.scrub_mc.mouseEnabled=true; - - // Add buffering preloader - addApple(); - // Create the connection - createConnectionAndStream(); - // Enable the play button and the pause button - initPlayButtonListener(); - initPauseButtonListener(); - // Add the listeners that check the volume of video - initVolumeListeners(); - // Enable the button that returns the user at the video list - initListButtonListener(); - // Enable the listener of the scrub of the volume scroller - addCheckScrubListener(); - // Add a listener that checks the position of the video - addPositionListener(); - // Add the listener that checks how many bytes ahs been loaded by streaming - addLoaderListener(); - // Enable the scrub of the timeline - initScrub(); - } - - // Create a connection using NetConnection,NetStream and Video classes. Also add a listener that checks the status events of the stream (NET_STATUS) - private function createConnectionAndStream():void - { - myVideo=new Video(); - myVideo.smoothing=true; - nc=new NetConnection(); - nc.connect(null); - ns=new NetStream(nc); - ns.bufferTime=Main.buffering_time; - client.onMetaData=onMetaData; - ns.client=client; - myVideo.attachNetStream(ns); - ns.addEventListener(NetStatusEvent.NET_STATUS,onNetStatus); - myVideo.width=410; - myVideo.height=260; - myVideo.x=-5; - myVideo.y=-4; - myVideo.alpha=0; - fla.display_mc.addChild(myVideo); - } - - // Enable the play button by adding the listener - private function initPlayButtonListener():void - { - setChildrenAndMode(fla.consolle_mc.play_mc); - fla.consolle_mc.play_mc.addEventListener(MouseEvent.MOUSE_DOWN,switchPlayButton); - } - - // Enable the stop button by adding the listener - private function initPauseButtonListener():void - { - setChildrenAndMode(fla.consolle_mc.pause_mc); - fla.consolle_mc.pause_mc.addEventListener(MouseEvent.MOUSE_DOWN,switchPauseButton); - } - - // Switch the status of the play button everytime the user clicks it - private function switchPlayButton(evt:MouseEvent):void - { - switch(boo_play) - { - case true: - evt.target.gotoAndStop(1); - timer_video.stop(); - fla.bar_mc.scrub_mc.x=9; - fla.bar_mc.position_mc.width=0; - ns.pause(); - ns.seek(0); - break; - - case false: - evt.target.gotoAndStop(2); - timer_video.start(), - ns.resume(); - break; - } - - boo_play=!boo_play; - } - - // Switch the status of the pause button everytime the user clicks it - private function switchPauseButton(evt:MouseEvent):void - { - switch(boo_pause) - { - case true: - evt.target.gotoAndStop(1); - ns.resume(); - break; - - case false: - evt.target.gotoAndStop(2); - ns.pause(); - break; - } - - boo_pause=!boo_pause; - } - - // Enable the arrow button to go back at video list - private function initListButtonListener():void - { - setChildrenAndMode(fla.consolle_mc.arrow_mc); - fla.consolle_mc.arrow_mc.addEventListener(MouseEvent.MOUSE_DOWN,onListDown); - } - - // This method is called when the arrow button has been called. Also this method destroy the strem connection of the video - private function onListDown(evt:MouseEvent):void - { - destroy(); - } - - // Enable mouse events of the timeline scrub of the video - private function initScrub():void - { - offset_scrub=fla.bar_mc.scrub_mc.x; - fla.bar_mc.scrub_mc.mouseChildren=false; - fla.bar_mc.scrub_mc.buttonMode=true; - fla.bar_mc.scrub_mc.addEventListener(MouseEvent.MOUSE_DOWN,setScrumbDown); - fla.bar_mc.scrub_mc.addEventListener(MouseEvent.MOUSE_UP,setScrumbUp); - } - - // Enable mouse events of the timeline scrub of the video. This scrub will seek the video by dragging it - private function addPositionListener():void - { - fla.bar_mc.position_mc.addEventListener(MouseEvent.MOUSE_DOWN,setPositionDown); - fla.bar_mc.position_mc.addEventListener(MouseEvent.MOUSE_UP,setPositionUp); - } - - // Add a listener that checks if the mouse clicks the streaming bar and point the video to that position - private function addLoaderListener():void - { - fla.bar_mc.loader_mc.addEventListener(MouseEvent.MOUSE_DOWN,setPositionDown); - fla.bar_mc.loader_mc.addEventListener(MouseEvent.MOUSE_UP,setPositionUp); - } - - // This method is called when the scrub is dragged - private function setPositionDown(evt:MouseEvent):void - { - firstMouseX=mouseX; - - check_click="bar"; - - hideApple(); - video_position=ns.time; - timer_video.stop(); - ns.togglePause(); - } - - // This method is called when the scrub is dropped - private function setPositionUp(evt:MouseEvent):void - { - if(check_click=="bar") - { - var ratio:Number=(video_duration*(firstMouseX-fla.bar_mc.scrub_mc.width))/412; - ns.seek(ratio); - ns.togglePause(); - timer_video.start(); - } - - check_click=""; - } - - // Add listeners that manages the scrub of the volume - private function initVolumeListeners():void - { - setChildrenAndMode(fla.consolle_mc.scrub_mc); - fla.consolle_mc.scrub_mc.addEventListener(MouseEvent.MOUSE_DOWN,setVolumeDown); - fla.consolle_mc.scrub_mc.addEventListener(MouseEvent.MOUSE_UP,setVolumeUp); - } - - // This method is called when the volume scrub has been clicked - private function setVolumeDown(evt:MouseEvent):void - { - check_click="volume"; - var rectangle:Rectangle=new Rectangle(fla.consolle_mc.volume_bar_mc.x+fla.consolle_mc.volume_bar_mc.width,evt.target.y, - -fla.consolle_mc.volume_bar_mc.width,0); - evt.target.startDrag(false,rectangle); - evt.target.addEventListener(Event.ENTER_FRAME,volumeControl); - } - - // This method is called meantime the volume scrub is dragged - private function volumeControl(evt:Event):void - { - var distance:Number=fla.consolle_mc.volume_bar_mc.width-3; - var p:Number=evt.target.x-fla.consolle_mc.volume_bar_mc.x; - var percentage:Number=Math.ceil((p/distance)*100); - var sf:SoundTransform=new SoundTransform(); - sf.volume=-0.05+percentage/100; - if(sf.volume<0) - sf.volume=0; - ns.soundTransform=sf; - - if(sf.volume>.8) - { - fla.consolle_mc.sound_mc.clip_0_mc.visible=true; - fla.consolle_mc.sound_mc.clip_1_mc.visible=true; - fla.consolle_mc.sound_mc.clip_2_mc.visible=true; - } - if(sf.volume<.7&&sf.volume>.5) - { - fla.consolle_mc.sound_mc.clip_0_mc.visible=true; - fla.consolle_mc.sound_mc.clip_1_mc.visible=true; - fla.consolle_mc.sound_mc.clip_2_mc.visible=false; - } - if(sf.volume<.4&&sf.volume>.15) - { - fla.consolle_mc.sound_mc.clip_0_mc.visible=true; - fla.consolle_mc.sound_mc.clip_1_mc.visible=false; - fla.consolle_mc.sound_mc.clip_2_mc.visible=false; - } - if(sf.volume<.15) - { - fla.consolle_mc.sound_mc.clip_0_mc.visible=false; - fla.consolle_mc.sound_mc.clip_1_mc.visible=false; - fla.consolle_mc.sound_mc.clip_2_mc.visible=false; - } - } - - // This method is called when the scrub of the volume is dropped - private function setVolumeUp(evt:MouseEvent):void - { - check_click=""; - evt.target.stopDrag(); - } - - // This video calls the methods that will play the video - private function callPlayVideo(evt:MouseEvent):void - { - playVideo(); - } - - // This method starts playing the video - public function playVideo():void - { - fla.bar_mc.buffer_mc.scaleX=0; - fla.bar_mc.position_mc.width=0; - fla.bar_mc.loader_mc.scaleX=0; - addEventListener(Event.ENTER_FRAME,checkBuffer); - - timer_video=new Timer(5,0); - timer_video.addEventListener(TimerEvent.TIMER,checkVideoPosition); - timer_video.start(); - - ns.play(Main.currentSelectedVideo); - } - - // This method checks the status of the connection - private function onNetStatus(nsevent:NetStatusEvent):void - { - if(nsevent.info.level=="error") - ns.close(); - switch(nsevent.info.code) - { - case "NetStream.Play.Start": - showApple(); - break; - - case "NetStream.Buffer.Empty": - if(fla.bar_mc.position_mc.width<407) - { - disablePlayAndPauseButtons(); - showApple(); - } - break; - - case "NetStream.Buffer.Flush": - trace("flush"); - break; - - case "NetStream.Buffer.Full": - showConsolle(); - Tweener.addTween(myVideo,{alpha:.95,time:1,transition:"regular"}); - fla.bar_mc.scrub_mc.visible=true; - hideApple(); - removeEventListener(Event.ENTER_FRAME,checkBuffer); - enablePlayAndPauseButtons(); - addEventListener(Event.ENTER_FRAME,checkBytesLoaded); - fla.bar_mc.buffer_mc.scaleX=0; - break; - - case "NetStream.Play.Stop": - hideApple(); - break; - - //default: trace("not used code: "+nsevent.info.code); - } - } - - // This method is called when the buffering time is full - private function onMetaData(data:Object):void - { - video_duration=data.duration; - } - - // This method checks the buffering of the connection - private function checkBuffer(evt:Event):void - { - var ratio:Number=ns.bufferLength/ns.bufferTime; - fla.bar_mc.buffer_mc.scaleX=ratio; - if(fla.bar_mc.buffer_mc.scaleX>1) - fla.bar_mc.buffer_mc.scaleX=1; - } - - // This method checks the bytes loaded of the video - private function checkBytesLoaded(evt:Event):void - { - var ratio:Number=ns.bytesLoaded/ns.bytesTotal; - fla.bar_mc.loader_mc.scaleX=ratio; - if(fla.bar_mc.loader_mc.scaleX>=0.99) - { - fla.bar_mc.loader_mc.scaleX=1; - removeEventListener(Event.ENTER_FRAME,checkBytesLoaded); - } - } - - // This method checks the position of the video - private function checkVideoPosition(evt:TimerEvent):void - { - var ratio:Number=ns.time*412/video_duration; - video_position=ns.time; - fla.bar_mc.position_mc.width=ratio; - fla.bar_mc.scrub_mc.x=ratio; - if(fla.bar_mc.position_mc.width>=421) - { - fla.bar_mc.position_mc.width=412; - timer_video.stop(); - hideApple(); - } - } - - // This method is called when the scrub of the video has been clicked - private function setScrumbDown(evt:MouseEvent):void - { - check_click="scrub"; - disableBars(); - - hideApple(); - video_position=ns.time; - timer_video.stop(); - ns.togglePause(); - - rect=new Rectangle(fla.bar_mc.position_mc.x,evt.target.y,fla.bar_mc.loader_mc.width,0); - evt.target.startDrag(false,rect); - - ns.removeEventListener(NetStatusEvent.NET_STATUS,onNetStatus); - evt.target.addEventListener(Event.ENTER_FRAME,seekTheVideo); - } - - // This method seeks the video during the scrub dragging - private function seekTheVideo(evt:Event):void - { - var ratio:Number=(video_duration*(evt.target.x-offset_scrub))/412; - fla.bar_mc.position_mc.width=evt.target.x; - ns.seek(ratio); - } - - // This method is called when the scrub of the video has been dropped - private function setScrumbUp(evt:MouseEvent):void - { - check_click=""; - enableBars(); - - evt.target.removeEventListener(Event.ENTER_FRAME,seekTheVideo); - evt.target.stopDrag(); - ns.togglePause(); - timer_video.start(); - } - - // This method add a listener that checks if the mouse is released out of the area of the scrub video or scrub volume - private function addCheckScrubListener():void - { - fla.stage.addEventListener(MouseEvent.MOUSE_UP,checkScrub); - } - - // This method checks which scrub has been clicked - private function checkScrub(evt:MouseEvent):void - { - switch(check_click) - { - case "scrub": - fla.bar_mc.scrub_mc.removeEventListener(Event.ENTER_FRAME,seekTheVideo); - fla.bar_mc.scrub_mc.stopDrag(); - ns.addEventListener(NetStatusEvent.NET_STATUS,onNetStatus); - ns.togglePause(); - timer_video.start(); - break; - - case "bar": - var ratio:Number=(video_duration*(firstMouseX-fla.bar_mc.scrub_mc.width))/412; - ns.seek(ratio); - ns.togglePause(); - timer_video.start(); - break; - - case "volume": - fla.consolle_mc.scrub_mc.stopDrag(); - break; - } - - check_click=""; - enableBars(); - } - - // This method disable the clicks over the position and loader bars - private function disableBars():void - { - fla.bar_mc.position_mc.mouseEnabled=false; - fla.bar_mc.loader_mc.mouseEnabled=false; - } - - // This method enable the clicks over the position and loader bars - private function enableBars():void - { - fla.bar_mc.position_mc.mouseEnabled=true; - fla.bar_mc.loader_mc.mouseEnabled=true; - } - - // This method enable the play and pause buttons - private function enablePlayAndPauseButtons():void - { - fla.consolle_mc.play_mc.mouseEnabled=true; - fla.consolle_mc.pause_mc.mouseEnabled=true; - } - - // This method disable the play and pause buttons - private function disablePlayAndPauseButtons():void - { - fla.consolle_mc.play_mc.mouseEnabled=false; - fla.consolle_mc.pause_mc.mouseEnabled=false; - } - - // This method add the preloader - private function addApple():void - { - apple=new Apple(); - apple.alpha=0; - apple.width=apple.height=35; - apple.x=220-apple.width/2; - apple.y=145-apple.height/2; - addChild(apple); - } - - // This method shows the preloader during buffer time - private function showApple():void - { - apple.play(); - Tweener.addTween(apple,{alpha:1,time:.5,transition:"regular"}); - } - - // This method hide the preloader each time the buffer time is empty - private function hideApple():void - { - apple.stop(); - Tweener.addTween(apple,{alpha:0,time:.5,transition:"regular"}); - } - - // This method shows the consolle of the control buttons - private function showConsolle():void - { - fla.consolle_mc.visible=true; - } - - // This method hides the consolle of the control buttons - private function hideConsolle():void - { - fla.consolle_mc.visible=false; - } - - // This method set the mouseChildren and buttonMode of the MovieClip that is passed to this method - private function setChildrenAndMode(mov:MovieClip):void - { - mov.mouseChildren=false; - mov.buttonMode=true; - } - - // This method destroy all the listeners of this class. - private function destroy():void - { - hideConsolle(); - hideApple(); - fla.bar_mc.scrub_mc.x=8; - fla.bar_mc.scrub_mc.mouseEnabled=false; - Tweener.addTween(fla.bar_mc.buffer_mc,{scaleX:0,time:1,transition:"regular"}); - Tweener.addTween(fla.bar_mc.loader_mc,{scaleX:0,time:1,transition:"regular"}); - Tweener.addTween(fla.bar_mc.position_mc,{width:0,time:1,transition:"regular"}); - ns.close(); - ns.removeEventListener(NetStatusEvent.NET_STATUS,onNetStatus); - timer_video.stop(); - timer_video.removeEventListener(TimerEvent.TIMER,checkVideoPosition); - removeEventListener(Event.ENTER_FRAME,checkBuffer); - removeEventListener(Event.ENTER_FRAME,checkBytesLoaded); - Tweener.addTween(myVideo,{alpha:0,time:.5,transition:"regular",onComplete:removeMe}); - } - - // This method remove this class from VideoList class - private function removeMe():void - { - fla.video_list.showList(); - fla.removeChild(this); - } - } - } ===== Flash IDE Alternatives ===== * [[AjaxAnimator]] - An **online, collaborative, web-based animation suite** with support for exporting to **Flash, Silverlight, GIFs, and more** [[http://antimatter15.com|Homepage]] [[http://antimatter15.com/ajaxanimator|Live Application]] - "Last release - Wed Feb 17 2010" - Ray James
The case for the /usr merge
Lennart Poettering has announced the
posting of a
summary of the motivations for merging several root-level directories into
/usr. “A unified filesystem layout (as it results from
the /usr merge) is more compatible with UNIX than Linux’ traditional split
of /bin vs. /usr/bin. Unixes differ in where individual tools are
installed, their locations in many cases are not defined at all and differ
in the various Linux distributions. The /usr merge removes this difference
in its entirety, and provides full compatibility with the locations of
tools of any Unix via the symlink from /bin to /usr/bin.“
FFmpeg 0.9.1
FFmpeg is a tool for converting audio, video, and subtitles. It includes libavcodec, the leading open source codec library. It also includes libavformat (implementing muxers and demuxers), libswscale (for very fast video scaling), and libavfilter (an advanced video filter system supporting arbitrary filter graphs), and libavutil (a utility library intended to supplement libc). A simple multimedia player is included too. An experimental streaming server for live broadcasts is also included.
Release Notes: This release adds many bug and security fixes, including ones for CVE-2011-3893 and CVE-2011-3895. It also significantly improves seeking support in H.264.
Release Tags: Stable, Security
Tags: multimedia
Licenses: LGPL
* Why Apple Just Realised the Company’s First True Post-PC Quarter *
We should no longer be confused about the notion of the ‘post-PC era’: Apple’s shocking iOS device sales numbers for its first fiscal quarter are just further proof that tablets and smartphones are the personal-computing products taking over our hearts and wallets. Read more on this exclusive OSNews article…
European Commission Signs ACTA
I promise we’ll have more on ACTA next week, but for now, I’m too busy to properly cover the subject. In any case, the European Commission signed it today, but that means little – each individual member state’s parliament still has to ratify it, and if one votes against it, it’s over. The European Parliament has to accept it too – not a done deal either. My opinion on the matter is clear.
KDE SC 4.8 Released
KDE has announced its latest set of releases, providing major updates to KDE Plasma Workspaces, KDE Applications, and the KDE Platform. Version 4.8 provides many new features, and improved stability, performance and dynamic power management.
Hardware Locality 1.4
hwloc provides command line tools and a C API to obtain the hierarchical map of key computing elements, such as: NUMA memory nodes, shared caches, processor sockets, processor cores, and processor "threads". hwloc also gathers various attributes such as cache and memory information, and is portable across a variety of different operating systems and platforms. hwloc primarily aims at helping high-performance computing (HPC) applications, but is also applicable to any project seeking to exploit code and/or data locality on modern computing platforms.
Release Notes: This release adds a "custom" interface and "assembler" tools to build multi-node topology. It adds a symmetric_subtree object attribute to ease assumptions when consulting regular symmetric topologies. It adds a CPUModel and CPUType info attribute to Socket objects on Linux and Solaris. It adds hwloc_get_obj_index_inside_cpuset() to retrieve the "logical" index of an object within a subtree of the topology. It adds more NVIDIA CUDA helpers in cuda.h and cudart.h to find hwloc objects corresponding to CUDA devices.
![]()
Release Tags: major new features, Minor bugfixes
Tags: topology, Libraries, Utilities, Hardware, Detection
Licenses: BSD Revised
DokuWiki 2012-01-25
DokuWiki is a standards-compliant, simple-to-use
Wiki mainly aimed at creating documentation of any
kind. It is targeted at developer teams,
workgroups, and small companies. It has a simple
but powerful syntax which makes sure the datafiles
remain readable outside the Wiki, and eases the
creation of structured texts. All data is stored
in plain text files, so no database is needed
Release Notes: This release features version handling of media files, just like pages. Old versions are saved, and the change history is available in the “recent changes” list as well as in RSS. A new media manager with drag and drop support. The plugin and template developer can now also enjoy using the power of jQuery.
![]()
Release Tags: Major feature enchancements
Tags: Text Processing, Markup, HTML/XHTML, Software Development, Documentation, Information Management, Document Repositories, Internet, Web, Dynamic Content, Wiki
Licenses: GPLv2
openEMS 0.0.26
openEMS is an electromagnetic field solver using the FDTD method. It employs a fully 3D Cartesian and cylindrical coordinate graded mesh. Matlab (or Octave) is used as an easy and flexible scripting interface. Advanced Features include: multi-threading, SIMD (SSE), and MPI support for high speed FDTD.
Release Notes: Improved support for Octave.
Release Tags: Stable
Tags: FDTD, Scientific/Engineering, Simulation, Physics, Scientific Computing
Licenses: GPLv3