Overview
Modulus provides your javascript application with a Service Locator that allows you to easily register and locate other modules.
Modulus simplifies your module definitions by autowiring module function parameters based on the paramater name.
e.g. having a parameter called moduleA in your module function will result in modulus finding moduleA and passing it to your module function.
By ensuring that module names are unique, we can simplify resolving modules, and eliminate the need of worrying about paths, etc.
Service Locator
Modulus is a Service Locator, in that it provides a central place to register your modules,
and a means to find modules from within other modules.
More specifically, Modulus is a Dynamic Service Locator, as services are registered and found at runtime.
AMD Loader
Modulus provides the ability to intelligently* load module dependencies/scripts during runtime.
Node.js Build Tool/Script Optimizer
You can compile your modules into one or more script files to optimize the number of http requests made at runtime.
API
Defining Modules
There are several options for defining modules with Modulus.
Modulus Function
Modulus provides a simplified version of the typical 'define' and 'require' functions found in other AMD libraries.
To do the equivalent of define, simply pass in a named function to the 'm' or 'modulus' function.
To do the equivalent of require, simply pass in a unnamed function to the 'm' or 'modulus' function.
Modulus can parse the function name and parameters, thus reducing the amount of boilerplate code you need to write.
//define a module named 'moduleA' by passing in a named function. m(function moduleA(){ return { prop1: 123 }; }); //require moduleA by passing in a unnamed function with a parameter named moduleA m(function (moduleA){ console.log(moduleA.prop1); //prints 123 });
Modulus Function - Explicit Define and Require
You can also opt to use a requirejs-like api, and explicitly define and require modules.
Although, this api is primarily used by the modulus build when protectAgainstMinification is true (default).
Since minifiers rename parameter names and remove function names, modulus provides an API which accepts a string for the module name, and an array of string names for the dependencies.
//define a module named 'moduleA' by passing in a named function. m('moduleA', ['dep1'], function moduleA(dep1){ return { prop1: 123 }; }); //require moduleA by passing in a unnamed function with a parameter named moduleA m(['moduleA'], function (moduleA){ console.log(moduleA.prop1); //prints 123 });
Global Module Functions
In perhaps the easiest way possible, Modulus allows you to define modules with global functions.
Any dependencies on other modules are simply identified via parameter names, where the parameter name matches the name of the desired module.
NOTE: THIS OPTION DOES NOT WORK IN IE8. Global variables are not enumerable in IE8.
//defining a module is as simple as creating a function. function moduleA(){ return { prop1: 123 }; } //simply by referencing moduleA, you will get its return value passed in as the parameter value. function moduleB(moduleA){ return { prop1: moduleA.prop1 + 1 //evaluates to 124 }; } //let modulus know to execute moduleB once init has been called. moduleB.module = {autoInit:true}; //the use of global functions means that we must explicitly call init. modulus.init({context:window});
When using this option for defining modules, we must explicitly call 'init' so that modulus can scan the context for modules.
We must also provide module metadata (via moduleB.module), and instruct Modulus to run the moduleB function once init has been called.
Context Object
You can also choose to assign modules to a namespace/context object.
var ns = {}; ns.moduleB = function(){ return { prop1: 123 }; }; ns.moduleB = function(moduleA){ return { prop1: moduleA.prop1 + 1 }; }; modulus.init({context:ns});
Runtime Configuration
Modulus offers a powerful configuration that allows you to override any function within the Modulus, allowing you to completely customize behavior.
Configuration is achieved by calling the 'init' function, and passing in an object literal with the desired settings.
Shim for 3rd Party Libraries
To shim third party libraries which do not use the Modulus convention for defining modules, we can provide a shim configuration.
NOTE: You do not need to specify a runtime shim config if you've specified one in your build configuration.
//shim configuration for a few common libraries. modulus.init({ shim:{ //define the jquery shim. The key '$' represents the parameter name modules will use to require jquery. //the exports represents the global variable the third party library exposes. '$':{ dependencies:[], exports:'$' }, '_':{ dependencies: [], exports:'_' }, //Backbone depends on 2 other 3rd party libraries: jquery and underscore. //We must list those as dependencies so that they are loaded before Backbone is. 'Backbone':{ dependencies: ['_', '$'], exports:'Backbone' } } }); m(function ($, Backbone){ $('#someId'); console.log(Backbone.VERSION); });
AMD
The Modulus AMD API is completely customizable, allowing you to determine any convention or configuration you'd like.
To get started, you'll first need to provide a 'asyncFileLoad' function.
m.init({ //When a module is requested that is not found, and an asyncFileLoad function is provided, asyncFileLoad //will be called so that the module can be loaded. asyncFileLoad:function(moduleName, callback, errorback){ var root = 'js/'; //custom convention moduleName = this.asyncMap[moduleName]; //custom convention var path = root+moduleName + '.js'; $.ajax({ url: path, crossDomain:true, //allow local file system cross domain requests. dataType: "script", success: callback }).fail(function(err){errorback(err)}); }, //custom configuration entry to help locate modules. (You can create your own convention or configuration) asyncMap:{ moduleA:'moduleA' } });
AMD Loading Behavior
Modulus attempts to load modules as quickly as possible by using this strategy:
Modulus will attempt to asynchronously load any module that is not currently registered (i.e. in modulus.config._modules) when asyncFileLoad is defined.
When you require a module asynchronously, the module will first be downloaded, and then it's dependencies will be downloaded simultaneously.
Note: this means that the order in which the dependencies are loaded is not guaranteed.
When you require a module that has already been loaded, a new asyncFileLoad request will not be made.
Shim entries that are asynchronously downloaded will have dependencies loaded first. (e.g. Backbone shouldn't be loaded until underscore is)
Shim entry dependencies will be downloaded simultaneously. e.g. if you require Backbone, jquery and underscore will be loaded at the same time.
Build Tool/Script Optimization
Modulus offers a powerful node.js module to help you optimize your project's script files into one (or more) js files.
Every aspect of the modulus build is customizable. Modulus exposes all functions through the config so you can override any behavior.
The build tool's primary function is finding module dependencies and combining modules together into 1 or more js files.
This helps in optimizing your web application, as it results in fewer http requests.
Install
npm install modulusjs
Build
var modulus = require('modulusjs'); modulus.build({ ... }, buildComplete, buildFailure);
Build Configuration
Shim
Any scripts which do not follow the modulus convention for registering modules (e.g. third party libs) can be shimmed.
Shimming allows us to reference these third party libs as we would any other module in modulus.
When a shim is specified for the build configuration, modulus will generate and append a call to modulus which specifies the module's name, dependencies, and a function which returns the global export of the library.
Example: Generated Modulus Function Call for jQuery
(function jquerySrcCode(){...})(); //generated modulus function call for jquery shim m('$', [], function(){ return $;});
Example Build Configuration
modulus.build({ //the directory which should be scanned to find modules. //baseDirectory is combined with modulePattern to form a glob pattern, which finds all modules in the project. baseDirectory: 'test/buildtime-project/js', //the directory to scan for modules. modulePattern: '**/*.js', //glob pattern matching //modulus typically depends on function names and param names to resolve dependencies and register modules. //since minifiers can rename params, as well as remove function names, we can ensure modulus still functions //by rewriting the modulus function calls to use the expicit define api. //e.g. m(function myModule(dep1){...}); gets rewritten to m('myModule', ['dep1'], function(dep1){...}); protectAgainstMinification: true, //the dist configuration tells Modulus which files to combine together, and where to put the combined file(s). dist:{ //in this example, we demonstrate building 2 optimized files: 'global.js' and 'pageOne.js'. //global.js is placed on each page, and a page.js file should not include any modules found //in global (avoid redundancy) files:{ //tell Modulus to build a pageOne.js file and distribute it to our dist directory. //in our source directory, there is a pageOne.js that starts the dependency chain. //modulus will find pageOne's dependencies, and all the dependencies of those dependencies, etc, //until all dependencies are found. //Once all dependencies are found, pageOne.js is written to the dist directory, //and will include all dependencies. './dist/test/buildtime-project/pageOne.js':{ dependencies:['pageOne'], //start at module b and include all it's dependencies. //any modules that are defined in global should not be defined in pageOne. //e.g. jquery and other core modules. excludes:['global'] }, './dist/test/buildtime-project/global.js':{ dependencies:['global'] } } }, //any modules you want to include that aren't modulus compliant. //e.g. myModule($) would get the result of this path shim:{ '$':{ path: 'test/buildtime-project/js/vendor/jquery-1.10.2.min.js', dependencies:[], exports:'$' }, 'Backbone':{ path: 'test/buildtime-project/js/vendor/backbone-1.1.0.min.js', dependencies: ['_', '$'], exports:'Backbone' }, '_':{ path: 'test/buildtime-project/js/vendor/underscore-1.5.2.min.js', dependencies: [], exports:'_' } } }, buildComplete, buildError);
Build Guidelines
Only one module per js file is allowed
The name of the file without the extension is used as the name of the module when resolving dependencies during build.
Protecting Against Minification
Minifiers will rewrite param names and in some cases remove the names of functions. To avoid issues with minification, the build process will rewrite module definitions to use strings to explicitly define a module.
Explicit Define when using the Modulus Function
//original m(function myModule(dependency1, dependency2){...}) //becomes m('myModule', ['dependency1', 'dependency2'], function myModule(dependency1, dependency2){...})
Explicit Define when using Global Functions
//original function myModule(dependency1, dependency2){...} //will get this added myModule.module = {name: 'myModule', deps:['dependency1', 'dependency2']};
Explicit Define when Assigning Modules to a Context
//original var ns = {}; ns.myModule = function (dependency1, dependency2){...} //will get this added ns.myModule.module = {name: 'myModule', deps:['dependency1', 'dependency2']};
Nested Requires
Modulus will also rewrite nested requires, since they can be affected by minification.
//original m(function myModule(dependency1, dependency2){ return { //download a module/script only when needed (nested require dependencies are not included in the build) nestedRequire: function(){ //original m(function(someModule){...}); //becomes m(['someModule'], function(someModule){...}); } }; }); //becomes m('myModule', ['dependency1', 'dependency2'], function myModule(dependency1, dependency2){...})
Tests
Modulus is thoroughly tested using Jasmine.
Charles proxy is used to simulate slow connections (resources load much slower)
You can reference the below table to see the tests in action, as well as reference example project setups.
| Test Link | Spec Link | Test Project Link | Build File | Notes |
|---|---|---|---|---|
| Runtime: Async Loading | async-loading-spec | async loading | n/a | Runtime project which uses the m(function moduleName(){...}) syntax to demonstrate the async loading of modules |
| Runtime: Async Loading with Global Functions | async-loading-global-functions-spec | async loading global functions | n/a | Runtime project which uses the function moduleName(dep1){...} syntax to demonstrate the async loading of modules |
| Buildtime: Built Project 1 | buildtime-project-spec | buildtime project 1 | build.js | Project which defines modules using global functions, and is built into 2 js files: global.js and pageOne.js. |
| Buildtime: Built Project 2 | buildtime-project-spec | buildtime project 2 | build.js | Project which defines by assigning modules to a context/namespace object, and is built into 2 js files: global.js and pageOne.js. |
| Buildtime: Built Project 3 | buildtime-project-spec | buildtime project 3 | build.js | Project which defines by assigning using the modulus function m(function moduleName(dep1){...}), and is built into 2 js files: global.js and pageOne.js. |
Browser Support
IE8+ (except for the global module functions option)
Chrome 26+ (older versions probably work)
Firefox 26+ (older versions probably work)
Safari 5.5+
Android 2.3+
iOS 4.0.2+
Try It Out
Codio
You can play with the specs by going here and selecting Project -> Fork.
Download
Modulus is still in Alpha.
For now, please refer to the Github page for download instructions.
Open Source
Modulus is an open source project, and can be found on Github.
License
The MIT License (MIT)
Copyright (c) 2013 Jason McAffee


Ongoing Animes
- 3-gatsu no Lion 2nd Season Episode 22
- 3D Kanojo: Real Girl Episode 11
- Aggressive Retsuko Episode 100
- Aguu: Tensai Ningyou Episode 12
- Aikatsu Friends! Episode 28
- Aikatsu Stars! Episode 100
- Aishen Qiaokeli-ing... 2nd Season Episode 12
-
NewAkanesasu Shoujo Episode 4
- Akkun to Kanojo Episode 25
- Alice or Alice: Siscon Niisan to Futago no Imouto Episode 12
- Amanchu! Advance Episode 12
- Angolmois: Genkou Kassenki Episode 12
- Ani ni Tsukeru Kusuri wa Nai! 2 Episode 16
-
NewAnima Yell! Episode 3
-
NewAno Hi no Kanojo-tachi Episode 4
-
NewAru Zombie Shoujo no Sainan (ONA) Episode 1
- Asobi Asobase Episode 12
- Back Street Girls: Gokudolls Episode 10
- Baki (2018) Episode 18
-
NewBakumatsu Episode 3
- Banana Fish Episode 15
-
NewBanG Dream! Garupa☆Pico Episode 4
- Basilisk: Ouka Ninpouchou Episode 24
- Beatless Episode 24
- Beatless Final Stage Episode 4
-
NewBeelzebub-jou no Okinimesu mama. Episode 2
- Beyblade Burst Chouzetsu Episode 15
- Beyblade Burst God Episode 19
- Binan Koukou Chikyuu Boueibu Happy Kiss! Episode 12
- Black Clover (TV) Episode 55
-
HOTBleach Episode 366
- Boku no Hero Academia 3rd Season Episode 25
- Boku no Kanojo ga Majimesugiru Sho-bitch na Ken OVA 1
- Bonobono (2016) Episode 131
-
HOTBoruto: Naruto Next Generations Episode 78
- Butlers: Chitose Momotose Monogatari Episode 12
- Caligula Episode 12
-
HOTCaptain Tsubasa (2018) Episode 30
-
HOTCardcaptor Sakura: Clear Card-hen Episode 22
- Cardfight!! Vanguard (2018) Episode 25
- Cardfight!! Vanguard G: Z Episode 24
- Chio-chan no Tsuugakuro Episode 12
- Chuukan Kanriroku Tonegawa Episode 16
- Cinderella Girls Gekijou 3rd Season Episode 13
- Citrus Episode 12
- ClassicaLoid 2nd Season Episode 25
-
NewClosers: Side Blacklambs Episode 2
- Comic Girls Episode 12
-
NewConception Episode 3
- Cutie Honey Universe Episode 12
- Dagashi Kashi 2 Episode 12
-
NewDakaretai Otoko 1-i ni Odosarete Imasu. Episode 3
- Dame x Prince Anime Caravan Adventure Episode 12
- Darling in the FranXX Episode 24
- Death March kara Hajimaru Isekai Kyousoukyoku Episode 12
- Detective Conan Movie 19: The Hellfire Sunflowers
- Devils Line Episode 12
- Dorei-ku The Animation Episode 12
-
NewDouble Decker! Doug & Kirill Episode 5
-
NewDragon Ball Heroes Episode 4
-
HOTDragon Ball Super Episode 131
- Emiya-san Chi no Kyou no Gohan Episode 10
-
HOTFairy Tail (2014) OVA 3
-
HOTNewFairy Tail: Final Series Episode 3
- Fate/Apocrypha Episode 25
- Fate/Extra Last Encore Irusterias Tendouron Episode 3
-
NewFireball Humorous Episode 3
- FLCL Progressive Episode 6
- Free!: Dive to the Future Episode 12
- Full Metal Panic! Invisible Victory Episode 12
- Fumikiri Jikan Episode 12
- Furusato Meguri Nippon no Mukashibanashi Episode 50
- Future Card Buddyfight Ace Episode 21
- Future Card Buddyfight Battsu Episode 53
- Future Card Buddyfight Battsu: All-Star Fight Episode 8
-
NewGaikotsu Shotenin Honda-san Episode 3
- Gakuen Babysitters Episode 12
-
NewGakuen Basara Episode 3
- Garo: Vanishing Line Episode 24
- gdMen Episode 12
- Gegege no Kitarou (2018) Episode 29
- Gin no Guardian 2nd Season Episode 6
- Ginga Eiyuu Densetsu: Die Neue These - Kaikou Episode 12
-
HOTGintama. Porori-hen Episode 13
- Gintama.: Shirogane no Tamashii-hen Episode 12
- Gintama.: Shirogane no Tamashii-hen 2 Episode 14
-
NewGoblin Slayer Episode 3
- Golden Kamuy Episode 12
-
NewGolden Kamuy 2nd Season Episode 3
- Grancrest Senki Episode 24
- Grand Blue Episode 12
- Gundam Build Divers Episode 25
- Gurazeni Episode 12
-
NewGurazeni: Season 2 Episode 3
-
NewGyakuten Saiban: Sono "Shinjitsu", Igi Ari! Season 2 Episode 3
- Hakata Tonkotsu Ramens Episode 12
- Hakumei to Mikochi Hakumei to Mikochi Neji to Bed to Irori to Bakuchi
- Hakyuu Houshin Engi Episode 23
- Hanebado! Episode 13
- Happy Sugar Life Episode 12
- Harukana Receive Episode 12
-
NewHashiri Tsuzukete Yokattatte. Episode 2
- Hataraku Onii-san! Episode 13
- Hataraku Onii-san! No 2! Episode 12
- Hataraku Saibou (TV) Episode 13
- Henkei Shoujo Episode 5
- High School DxD Hero Episode 12
- High Score Girl Episode 12
-
NewHimote House Episode 3
- Hinamatsuri Episode 12
-
NewHinomaruzumou Episode 3
- Hisone to Maso-tan Episode 12
- Hitori no Shita: The Outcast 2nd Season Episode 24
- Hoozuki no Reitetsu 2nd Season: Sono Ni Episode 13
- Hug tto! Precure Episode 37
- Hyakuren no Haou to Seiyaku no Valkyria Episode 12
- Idol Time PriPara Movie
- IDOLiSH7 Episode 17
- Inazuma Eleven: Ares no Tenbin Episode 26
-
NewInazuma Eleven: Orion no Kokuin Episode 2
-
NewIrozuku Sekai no Ashita kara Episode 3
- Isekai Izakaya: Koto Aitheria no Izakaya Nobu Episode 24
- Isekai Maou to Shoukan Shoujo no Dorei Majutsu Episode 12
- Island Episode 12
- Ito Junji: Collection Episode 12
- Itsudatte Bokura no Koi wa 10 cm Datta. Episode 6
- Jashin-chan Dropkick Episode 12
-
NewJingai-san no Yome Episode 4
-
NewJoJo no Kimyou na Bouken: Ougon no Kaze Episode 3
- Juushinki Pandora Episode 26
- Kaijuu Girls: Ultra Kaijuu Gijinka Keikaku 2nd Season Episode 12
- Kakuriyo no Yadomeshi Episode 26
- Karakai Jouzu no Takagi-san OVA
-
NewKarakuri Circus Episode 2
-
NewKaze ga Tsuyoku Fuiteiru Episode 4
-
NewKen En Ken: Aoki Kagayaki Episode 4
- Killing Bites Episode 12
-
NewKirakira Happy★Hirake! Cocotama Episode 3
- Kirakira Precure A La Mode Episode 49
- Kiratto Pri chan Episode 10
-
NewKishuku Gakkou no Juliet Episode 3
-
NewKitsune no Koe Episode 2
- Koi wa Ameagari no You ni Episode 12
- Kokkoku Episode 12
- Koneko no Chii: Ponponra Daibouken 2 Episode 25
- Kyoto Teramachi Sanjou no Holmes Episode 12
- Last Period: Owarinaki Rasen no Monogatari Episode 12
- Layton Mystery Tanteisha: Katri no Nazotoki File Episode 28
- Ling Qi 2 Episode 12
- Lord of Vermilion: Guren no Ou Episode 12
- Lost Song Episode 12
- Lostorage Conflated WIXOSS Episode 12
- Lupin III: Part V Episode 24
-
NewMahou Shoujo Lyrical Nanoha StrikerS Episode 1
- Mahou Shoujo Ore Episode 12
- Mahou Shoujo Site Episode 12
- Mahoutsukai no Yome Episode 24
- Major 2nd (TV) Episode 25
- Märchen Mädchen Episode 10
- Megalo Box Episode 13
-
NewMerc Storia: Mukiryoku no Shounen to Bin no Naka no Shoujo Episode 2
- Micchiri Neko Episode 13
- Miira no Kaikata Episode 12
- Mitsuboshi Colors Episode 12
- Mo Dao Zu Shi Episode 14
- Monster Hunter Stories: Ride On Episode 75
- Muhyo to Rouji no Mahouritsu Soudan Jimusho Episode 12
- Nanatsu no Taizai: Imashime no Fukkatsu Episode 24
-
HOTNaruto Shippuuden Episode 500
- Nil Admirari no Tenbin: Teito Genwaku Kitan Episode 12
- Nobunaga no Shinobi: Anegawa Ishiyama-hen Episode 26
-
NewOkoshiyasu, Chitose-chan Episode 1
- Omae wa Mada Gunma wo Shiranai Episode 12
-
HOTOne Piece Episode 858
- One Room 2nd Season Episode 12
- Ongaku Shoujo (TV) Episode 12
-
NewOre ga Suki nano wa Imouto dakedo Imouto ja Nai Episode 2
- Osake wa Fuufu ni Natte kara Episode 14
-
NewOshiete Mahou no Pendulum: Rilu Rilu Fairilu Episode 3
- Osomatsu-san 2 Episode 25
-
NewOtona no Bouguya-san Episode 2
- Overlord II Episode 13
- Overlord III Episode 13
- Overlord: Ple Ple Pleiades 3 Episode 11
- Persona 5 the Animation Episode 26
- Phantom in the Twilight Episode 12
- Piano no Mori (TV) Episode 12
- Pingu in the City Episode 6
- Planet With Episode 12
- Pokemon Sun & Moon Episode 93
- Poputepipikku Episode 12
- PriPri Chii-chan!! Episode 36
-
NewQuanzhi Gaoshou (2018) Episode 3
-
NewRadiant Episode 3
- Ramen Daisuki Koizumi-san Episode 12
- Rang Wo Men Shao Ba Episode 2
-
NewRelease the Spyce Episode 3
- RErideD: Tokigoe no Derrida Episode 7
- RoboMasters the Animated Series Episode 6
- Rokuhoudou Yotsuiro Biyori Episode 12
- Ryuuou no Oshigoto! Episode 12
- Saiki Kusuo no Psi Nan 2 Episode 24
-
NewSakura Internet Episode 1
- Sanrio Danshi Episode 12
- Saredo Tsumibito wa Ryuu to Odoru Episode 12
- Satsuriku no Tenshi Episode 15
-
NewSeishun Buta Yarou wa Bunny Girl Senpai no Yume wo Minai Episode 3
- Seizei Ganbare! Mahou Shoujo Kurumi Episode 16
- Senjuushi Episode 12
-
NewSenran Kagura Shinovi Master: Tokyo Youma-hen Episode 2
- Sheng Shi Zhuang Niang Episode 6
- Shichisei no Subaru Episode 12
-
HOTShingeki no Kyojin Season 3 Episode 12
- Shinkansen Henkei Robo Shinkalion The Animation Episode 40
- Shinya! Tensai Bakabon Episode 12
- Shiyan Pin Jiating Episode 11
- Shokugeki no Souma: San no Sara OVA 1
- Shokugeki no Souma: San no Sara - Toutsuki Ressha-hen Episode 12
- Shoujo☆Kageki Revue Starlight Episode 12
- Shounen Ashibe: Go! Go! Goma-chan 2 Episode 32
- Shounen Ashibe: Go! Go! Goma-chan 3 Episode 19
- Slow Start Episode 12
-
NewSono Toki, Kanojo wa. Episode 3
-
NewSora to Umi no Aida Episode 3
- Sora yori mo Tooi Basho Episode 13
- Souten no Ken Re:Genesis Episode 12
-
NewSouten no Ken: Regenesis 2nd Season Episode 4
-
NewSSSS.Gridman Episode 3
- Steins;Gate 0 Episode 23
- Sunoharasou no Kanrinin-san Episode 12
-
HOTSword Art Online Alternative: Gun Gale Online Episode 12
-
HOTNewSword Art Online: Alicization Episode 3
- Sword Gai: The Animation Part II Episode 12
- Tachibanakan Triangle Episode 12
- Tada-kun wa Koi wo Shinai Episode 13
- Takunomi. Episode 12
- Tenrou: Sirius the Jaeger Episode 12
-
NewTensei shitara Slime Datta Ken Episode 4
- The iDOLM@STER Side M Wake Atte Mini 3
-
NewThe Journey Home Episode 1
-
NewThe King Of Fighters : Destiny Episode 3
-
NewThunderbolt Fantasy Sword Seekers2 Episode 4
- Time Bokan: Gyakushuu no San Akunin Episode 24
- To Be Heroine Episode 7
-
NewToaru Majutsu no Index III Episode 3
- Toji no Miko Episode 24
-
HOTTokyo Ghoul:re Episode 12
-
HOTNewTokyo Ghoul:re 2nd Season Episode 3
-
NewTonari no Kyuuketsuki-san Episode 3
- Tsukumogami Kashimasu Episode 12
-
NewTsurune: Kazemai Koukou Kyuudoubu Episode 1
-
NewUchi no Maid ga Uzasugiru! Episode 3
- Uchuu Senkan Tiramisù Episode 13
-
NewUchuu Senkan Tiramisù II Episode 4
-
NewUlysses: Jehanne Darc to Renkin no Kishi Episode 3
- Uma Musume: Pretty Derby (TV) Episode 13
- UQ Holder! OVA Episode 3
- Violet Evergarden Episode 14
- Wakaokami wa Shougakusei! Episode 18
- Wake Up, Girls! Shin Shou Episode 13
- Wangu Xian Qiong 2nd Season Episode 7
-
NewWei, Kanjian Erduo La! Episode 3
- Wotaku ni Koi wa Muzukashii Episode 11
-
NewYagate Kimi ni Naru Episode 3
- Yama no Susume: Third Season Episode 13
- Yami Shibai 6 Episode 12
- Youkai Apartment no Yuuga na Nichijou Episode 26
- Youkai Watch: Shadow Side Episode 21
- Yowamushi Pedal: Glory Line Episode 25
- Yume Oukoku to Nemureru 100 Nin no Ouji-sama Episode 12
- Yuragi-sou no Yuuna-san Episode 12
- Yuru Camp△ Specials 3
- Yuuki Yuuna wa Yuusha de Aru: Washio Sumi no Shou Episode 11
- Yu☆Gi☆Oh! VRAINS Episode 73
- Zoids Wild Episode 7
- Zoku Touken Ranbu: Hanamaru Episode 12
-
NewZombieland Saga Episode 3
Newly Added
Legal Disclaimer, Privacy and DMCA
Legal Disclaimer
The author is not responsible for any contents linked or referred to from his pages - If any damage occurs by the use of information presented there, only
the author of the respective pages might be liable, not the one who has linked to these pages.Anime1.com doesn't host any content
All Anime1.com does is link or embed content that was uploaded to popular Online Video hosting sites like Veoh.com / Megavideo.com / Youtube.com / Google Video. All youtube/veoh/megavideo/googlevideo users signed a contract with the sites when they set up their accounts wich forces them not to upload illegal content. By clicking on any Links to videos while surfing on Anime1.com you watch content hosted on third parties and Anime1.com cant take the responsibility for any content hosted on other sites.
We do not upload any videos nor do we know who and where videos are coming from. We do not promote any illegal conduct of any kind. Links to the videos are
submitted by users and managed by users.
DMCA Notice of Copyright Infringement
Anime1.com is an online service provider as defined in the Digital Millennium Copyright Act.
We provide legal copyright owners with the ability to self-publish on the Internet by uploading, storing and displaying various types of media. We do not
actively monitor, screen or otherwise review the media which is uploaded to our servers by users of the service.
We take copyright violation very seriously and will vigorously protect the rights of legal copyright owners.
If you are the copyright owner of content which appears on the Anime1.com website and you did not authorize the use of the content you must notify us in
writing in order for us to identify the allegedly infringing content and take action.
We will be unable to take any action if you do not provide us with the required information
, so please fill out all fields accurately and completely. You may make a written notice via e-mail, facsimile or postal mail to our DMCA
Agent as listed below. Your written notice must include the following:
- Specific identification of the copyrighted work which you are alleging to have been infringed. If you are alleging infringement of multiple copyrighted works with a single notification you must submit a representative list which specifically identifies each of the works that you allege are being infringed.
- Specific identification of the location and description of the material that is claimed to be infringing or to be the subject of infringing activity with enough detailed information to permit us to locate the material. You should include the specific URL or URLs of the web pages where the allegedly infringing material is located.
- Information reasonably sufficient to allow us to contact the complaining party which may include a name, address, telephone number and electronic mail address and signature at which the complaining party may be contacted.
- A statement that the complaining party has a good faith belief that use of the material in the manner complained of is not authorized by the copyright owner, its agent or the law.
- A statement that the information in the notification is accurate, and under penalty of perjury that the complaining party is authorized to act on behalf of the owner of an exclusive right that is allegedly infringed.
Written notice should be sent to our designated agent as follows:
DMCA AGENT Email:
dmca [at] anime1.com
Also check out the Frequently Asked Questions (and Answers) about DMCA Safe Harbor Provisions
Privacy Policy
For each visitor to our Web page, our Web server automatically recognizes only the consumer's domain name, but not the e-mail address (where possible).
We collect the IP address and domain name and e-mail address (where possible)
of visitors to our Web page, the e-mail addresses of those who communicate with us via e-mail.
The information we collect is used to improve the content of our Web page, used to notify consumers about updates to our Web site.
We allow third-party companies to serve ads and/or collect certain anonymous information when you visit our web site. These companies may use non-personally identifiable information (e.g., click stream information, browser type, time and date, subject of advertisements clicked or scrolled over) during your visits to this and other Web sites in order to provide advertisements about goods and services likely to be of greater interest to you. These companies typically use a cookie or third party web beacon to collect this information. To learn more about this behavioral advertising practice or to opt-out of this type of advertising, you can visit networkadvertising.org.
With respect to cookies: We use cookies to record user-specific information on what pages users access or visit, record past activity at a site in order to provide better service when visitors return to our site and Third Party cookies e.g. "Google".
Google cookies
- When you visit Anime1.com
send one or more cookies - a small file containing a string of characters - to your computer that uniquely identifies your browser.
use cookies to improve the quality of their service by storing user preferences and tracking user trends, such as how people search. Most browsers are initially set up to accept cookies, but you can reset your browser to refuse all cookies or to indicate when a cookie is being sent. However, some Google features and services may not function properly if your cookies are disabled.
If you do not want to receive e-mail from us in the future, please let us know by sending us e-mail at the above address.
From time to time, we may use customer information for new, unanticipated uses not previously disclosed in our privacy notice. If our information practices change at some time in the future we will post the policy changes to our Web site to notify you of these changes and provide you with the ability to opt out of these new uses. If you are concerned about how your information is used, you should check back at our Web site periodically.
Upon request we provide site visitors with access to no information that we have collected and that we maintain about them.
With respect to security: We have appropriate security measures in place in our physical facilities to protect against the loss, misuse or alteration of information that we have collected from you at our site.If you feel that this site is not following its stated information policy, you may contact us.
Anime1.com Network


{% extends "pages/base.html" %} {% block page %}
Kvoti is a unique web application with a simple ‘point and click’ user interface for setting up networks to deliver charity services; with social, financial and commercial insight, evaluation and reporting tools built in. Using a range of communication tools (instant messaging, audio and video), Kvoti facilitates complex and efficient models of highly personalised and professional intervention; from individual practitioners to those adopting a multi-professional or agency approach and gives them the tools to report their impact on every level.
Kvoti is therefore uniquely positioned as a platform for charities to deliver efficient and effective services. In doing so, it disrupts the established offline model of face-to-face and telephone support services.


How Virtual Training can Work Brilliantly for Introverts
Virtual Training – An Introvert’s Perspective
I am an introvert. Before we continue, let’s clarify what I mean by that. Often, people mistake the term introvert to mean shy or lacking in confidence. Rather, it is about where you get your energy from, how you think and how this impacts your communication.
Introverts mostly find being around groups of people, or highly stimulating environments, very draining. A classic day or face to face (F2F) training workshop is often challenging for us. We often prefer to communicate 1-1 or in small groups, and large groups of people can be incredibly daunting at times.
 When I attend a F2F training session, before the learning has even started, I am uncomfortable. Faced with the task of making idle chitchat with strangers while feeling like all the eyes in the room are staring, makes me want to run for the nearest corner and hide there until the workshop ends.
Virtual Workshops mitigate this almost entirely. As a learner, sometimes I choose not to turn my webcam on. When I do, it only flashes up when I speak, so I avoid the ‘everyone is watching me’ feeling, making me more relaxed and inclined to engage.
Groups
So often, when involved in idea-storming and group plenary discussions, I find myself with good ideas and experiences to share, but no chance to offer them, as discussion can be dominated by the extroverts in a group. This is where introverts are mistaken for being shy, when really, we just prefer to stay out of the spotlight.
In Virtual Training, a well delivered workshop means that the trainer can direct talking traffic much better. By using various techniques, trainers can keep a log of who has been interacting the most and then involve and engage the quieter members of the group into discussions. This removes the need for the introvert to feel they must push their opinions forward and subsequently, avoid doing so.
Think you might be an introvert? Here is a blog with 21 signs for you to find out – which ones fit you?
Thinking Before Speaking
I like to think before I speak.  This way, I have the chance to reflect and maximise the point I want to make. This doesn’t work so well in a group setting; with quick fire questions or group discussion, which usually results in my idea going unsaid.
In a Virtual Workshop however, it’s possible for skilled trainers to accommodate the introverts better. For example, displaying questions on a slide, giving learners a chance to think and reflect before asking them to share answers. This gives everyone precious thinking time before calling on them to contribute.
Something that lends itself very well to many introverts is the idea of a Flipped Workshop. We released a one-minute video about them - you can watch it here.
A Flipped Workshop is where the learners are given the content to consume prior to the workshop, usually via a video or recording. They are then given the time to reflect and digest the content, before coming along to a live workshop to explore it further and put content into practice. By live, this can mean F2F or virtual; though we will always recommend virtual, due to our commitment to reducing carbon and travel.
As an introvert, being given the option to familiarise myself with the content before attending the workshop, rather than having it “sprung” on me, really adds value to training. It gives introverts the time to reflect and order their thoughts before bringing them to a group setting.
Questions to the Group
When asking open questions to a group, in a F2F setting, it is easy to notice when someone is about to speak. In a Virtual Workshop, this isn’t always possible and can be the cause of learners not joining in, for fear of speaking at the same time as someone else. When this does happen, the introvert tends to back down and the extrovert will continue.
An adept Virtual Training trainer will direct this better by leading the group and choosing a learner to answer. “Think about your response to the question on the screen. Heather, I’m going to come to you first.” By announcing who will be answering the question and giving the learners time to think, the challenge of multiple speakers is addressed.
Breakout Groups
In a F2F session, nothing unnerves me more than the idea of performing in front of a big group of strangers I just recently met. Be it a roleplay, ad lib, scenarios, or on the spot questioning, this situation leaves me uncomfortable.
In a Virtual Workshop, while the scenarios are still possible, it is less exposing, and the groups are smaller. The Virtual Training Team limits their groups to 10 people in a session, which keeps introverts from feeling like they have been forced into the spotlight during breakout sessions or group discussion.
All Types of Engagement
Often in Virtual Workshops there is the functionality for learners to participate through such as a chat box, emojis and ticks/checks. This manner of communication is great for an introvert as it allows communication of a feeling or understanding quickly and easily, without having to fight through a group conversation. There is diminished need to make themselves heard, when they can simply place a tick next to their name to show understanding.
Final ThoughtsAt the Virtual Training Team, we regularly get comments from learners who identify as introverts too, letting us know how much Virtual Training appeals to them.
 It just about doing it in ways that make it better for you. Virtual Training is helping to mitigate some of the stresses that a F2F environment can cause, so I think I’ll be sticking to the digital side of learning where possible from now on.
What about you? Are you an introvert or an extrovert? Do you want to try Virtual Training as an alternative to F2F?


Public service
pension and benefits
Pension et avantages sociaux
de la fonction publique
Outreach event statistics page
Choose Date:
Select
Summary
Number of People Spoken to:
Number of Questions Asked:
Average Questions per Person:


Daily Digest #46
- A Deep Dive into Database Attacks (Part III): Why Scarlett Johansson’s Picture Got My Postgres Database to Start Mining Monero
- Switching From Sublime Text to Visual Studio Code
- What happens when software developers are (un)happy
- Dejavu – The Missing Web UI for Elasticsearch
- How VSTS is Accelerating the Engineering Group Behind Windows
- Testing in Production, the safe way
- Run less software


Metro Saint Louis Call-A-Ride Scheduler
If you are visually impared call
314-289-5230
at any point to schedule an appointment.
First Name
Last Name
Email
Medicade Number
Home Location / Pickup Location
Date of Appointment
Time of Appointment
Destination
Missouri Baptist Medical Center
Mercy Hospital Springfield
St. Luke’s Hospital-Chesterfield
Mercy Hospital St. Louis
SSM Health St. Clare Hospital-Fenton
Barnes-Jewish Hospital
Other Location
submit


If your browser supports WebGPU and WGSL, you should be able to see a gray square with a green triangle in the center.
Please mind that WebGPU and WGSL specs are not finalized and implementations are changing! Visit webgpu.io to check current status.
Check Hello Triangle GitHub repository for recent information about which browsers are able to render this page properly.


Chef Jeremy:
Long ago, the most distinguished aristocrats of the empire came here for their excursions. Those bastards! When I refused to be their personal chef, they insulted my food! They have no appreciation for haute cuisine!
As hard as they tried, no one could find fault with my food!
Those cretins had the nerve to point out that they weren't served a specialty dish indigenous to this region!
Then and there I resolved to make a dish so indigenous to this region that those barbarians would be silenced once and for all!
But, as I'm sure you're aware, it takes more than ingredients to make a dish.
The monsters in this region are too tough, don't you think?
Will you help me?
"I'll help you."


--- layout: post esbma_id: 1144 title: Interesting comments date: 2004-09-04 02:08:21 keywords: sol ---
Lachlan Gemmell has written an excellent blog entry commenting on my project.


{% url 'tpindex' as tpindex %} {% url 'currentPlan' as currentPlan %} {% url 'addPlan' as addPlan %} {% url 'tpplanlist' as plan_list_url %} {% url 'tpsimpleReport' as simple_report_url %} {% url 'showAllPlans' as show_all_plans %} {% url 'registerTeacher' as register_teacher %} {% url 'editProperty' as edit_property %}


EXCLUSIVE CONTENT.
2017-5-23 10:00:00
The design a set of perfect office decoration from conception to meet with you, need to go through 4 process of originality to complete. Yoho design, in the service process, always adhere to the craftsman spirit, for your office decoration escort. Service satisfaction is only the starting point, there is no end; service is endless, only pay.
For the needs of decoration customers, in the early consulting service staffs serve you faithfully.The engagement of the project, Yoho business managers will talk to the customer face-to-face,clear the rules of cooperation between the two sides, and according to the requirements of project design carefully select the appropriate designer to go to the project site visit and to communicate with customers for design requirements.
Design, a drawing of the deep feeling confessions.Chinese classical, modern simple, European, classical and so on, what we can see, line, curve, color, size and so on aesthetic principles are the aesthetic creations of the designer improve manuscript repeatedly based on the actual situation of the customer,which is Yoho designer occupation ethics, an obsession with stick.
From the construction site to the construction completion, the construction personnel carry out the decoration construction strictly according to the construction drawings, precise and decisive, crisp and clear, and highlight the precision of the art between. Building a wall for concealed works, slag removal, air conditioning installation, leveling, backfilling and wiring troughs, painting, carpentry approach, Feature wall exterior glass and other construction links, each link pays attention to the detail and comfort experience, striving to achieve the best combination of aesthetic and office environment.
Yoho provides customers up to 2 years of warranty time, and for the emergence of emergencies, yoho dares to promise: 2 hours to arrive at the scene.
12 years specialized decoration company goods sharing: the office
【Yoho lecture hall】Summary of office creative decoration style
【Decoration dry goods】How to choose office decoration material
【Decoration dry goods】How to choose office decoration material


Yesterday, on a whim, I decided that I would drink a cup of wormwood tea after work. It was easily obtainable from the local pagan herbcraft shop. When I got home I set the water to a boil and then took a toke of marijuanna, afterwards the strange brew was quickly prepared, but ingested slowly due to the extreme bitterness of the herb. I said a prayer to the plant spirit and asked to be guided on my communion with it. My friend whom I shared the experience with did likewise.
For awhile I felt fine. I wrote a poem, as a clarity begin to seep across me. Then I decided I would play music for a little bit, until the hunger overcame me. By this time I had finished the drink, and felt that it would be good to eat something, so I made some spicy Thai noodles, with vegetables and tuna cooked in curried cocanut milk.
It was very enjoyable until about ten minutes after I had eaten and taken the second toke off the bowl of weed. I begin to feel an anxiety that was overwhelming. I know longer had any direction as to what to do with myself and started pacing back and forth, drinking water. The high was very spatial. I felt that I was very alone. It had induced a sense of the fragility of life.
I had to go for a walk. It was cold outside, around 35-40 degrees faranheit. My right underarm begin to sweat profuesly (later I smelled the shirt at armpit level and it smelled of wormwood) Walking calmed down the initial anxiety, and I was able to talk with my friend about what I was experiencing. It did not have the same anxious effect on him, and he was able to act as a guide. It had opened up my chakras, and I felt a 'KNOWING'. My third eye buzzed heavily, and I felt energy coming into my body from the crown.
When we got back to my house my body was shaking. I drank more water. My friend did some Reiki on me, and this helped me to integrate the energies in my body that I was experiencing. I then took a bath, and was extremely relaxed. During the bath I received further insights into various aspects of my personal transformation. Overall it felt as if the wormwood had helped me purge repressed feelings and emotions that surfaced in the anxiety stage. This was tremendously useful. It helped me to clear out emotions that I had held in my body. The anxiety stemmed from the emptying out of those negativities. With Higher guidance I was able to fill those areas with light instead, and fortify the Light Body.
It was definitely a shamanic experience, and I feel it has helped me on path of self healing, which will in turn help me help others with their transformative processes.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Darius Lee Pasilaban
Biography
Hello! I'm Darius. I'm a Filipino-American who was born in Japan🇯🇵🏯⛩, raised in the Philippines🇵🇭🏖⛰ and currently lives in the US🇺🇸🌁🌆. I like the outdoors and travelling, so far I've only been to 4 countries (excluding layovers). I like to cook, bake and eat food. I'm a pretty good cook too!🙃 A few food/dishes I like are adobo, sushi and tacos. Fun fact: I've done skydiving @ 13,000 ft! Get to know more about me by reading some more information below.
Education
- Undergraduate
- Informatics College Manila - Bachelor of Science in IT (2014)
- Certification
- Code Fellows - Certificate - Advanced Software Development in Full-Stack Javascript (2020)
Job Experience
- Weather Technician
- Davis-Monthan Air Force Base (May 2015 - May2020)
- Military Intern - Web Development
- Tucson Electric Power (Nov 2019 - Apr 2020)
Goals
| Goals | Deadline |
|---|---|
| Travel to 50 countries | 2025 |
| Financially Independent Retire Early | 2030 |
Top 10 places to visit
- Portugal🇵🇹
- Spain🇪🇸
- Indonesia🇮🇩
- Thailand🇹🇭
- Iceland🇮🇸
- Australia🇦🇺
- Germany🇩🇪
- Netherlands🇳🇱
- India🇮🇳
- South Korea🇰🇷


Posted: 2016-06-27
, Modified: 2016-06-27
Tags: NMF
Summary
A provable algorithm for NMF \(A=BC\) without assuming that the noise of every column of \(A\) has small noise.
Under heavy noise \[\forall T\subeq [n], |T|\ge \ep n\implies \rc{|T|}\ve{\sum_{j\in T}N_{\bullet,j}}_1\le \ep\] and in the dominant NMF model (dominant features, dominant basis vectors, nearly pure records), the TSVDNMF algorithm finds \[\ve{B_{\bullet,l}-\wt B_{\bullet, l}}_1\le \ep_0.\]
Under dominant NMF assumptions D1, D3, \(B\) is identifiable.
Remarks:
- Dominant features is a relaxation of anchor words.
- [AGKM12] (the original algorithm for NMF) requires separability, and does poorly under noise (because under noise the vertices of the simplex may no longer be the vertices of the simplex). Under error \(\ve{M-AW}_F^2\le \ep \ve{M}_F^2\), the algorithm takes time \(\exp\pf{r^2}{\ep^2}\).
- Almost pure documents is an assumption not in AGKM12.
- It only achieves constant error. (Can we do better than this?)
- Heavy noise subsumes many noise models. Note that heavy noise is a bound on \(\ve{\sum_{j\in T}N_{\bullet, j}}_1\), not \(\sum_{j\in T}\ve{N_{\bullet, j}}_1\).
Assumptions
- Heavy noise was defined above. If the covariance of noise in each column is large enough, \(\ve{\Si_j}_2=O\pf{\sqrt d}{\ep^2}\), then whp the heavy noise assumption holds.
- For example, if it is the sum of \(w\) random vectors each with covariance matrix \(O(1)\) in norm, then we need \(w=\Om\pf{d}{\ep^4}\). Ex. multinomial noise.
- Dominant NMF: See picture. Left: Dominant features (D1). (Note: sets have to be disjoint, not necessarily a partition.) Right: Dominant basis vectors (D2) and nearly pure records (D3).
Algorithm
- Apply thresholding to get \(D\).
- Initialize \(R=[d]\).
- For each row \(i\), calculate a cutoff \(\ze_i\). Set \(D_{ij}=(A_{ij}\ge \ze_i) \sqrt{\ze_i}\).
- Sort rows in ascending order and prune rows as follows. (Why? We want to prune the non-catchwords. They may be associated with significantly more documents than the catchwords.)
Take rank-\(k\) SVD \(D^{(k)}\) of \(D\). (We hope that this is close to a block matrix with nonzeros in \(S_l\times T_l\).)
- Identify dominant basis vectors.
- \(k\)-means clustering of columns of \(D^{(k)}\).
- Apply Lloyd’s algorithm to \(D\) with this initialization.
- Let \((R_i)\) be the \(k\)-partition of \([n]\).
- Identify dominant features \(J_l\) for each basis vector by: for each \(l\), take the features \(i\) (words) with largest \(A_{il}\).
Find the basis vectors by averaging the “purest” documents in each \(J_l\).


Murderer Michael Stone loses freedom bid after trying to pin crimes on Levi Bellfield
EXCLUSIVE: Michael Stone was jailed for life for the murder of mum and daughter Lin and Megan Russell in Chillenden, Kent
by Matthew Young, https://www.mirror.co.uk/authors/matthew-young/Convicted murderer Michael Stone is set to lose a bid for freedom after failing to convince investigators that Levi Bellfield was the real killer of mum and daughter Lin and Megan Russell.
Stone, 59, was jailed for life in a 2001 retrial for the brutal hammer attack on Lin and her six-year-old child.
He has always protested his innocence and in 2017 his legal team launched an appeal with evidence of a “full confession” by Bellfield, the killer of schoolgirl Milly Dowler.
But this week the application to the Criminal Cases Review Commission was denied an Appeal Court hearing, subject to a final ruling on December 2.
The CCRC said last night: “We are effectively inviting applicants to make arguments to try to persuade us that our decision not to refer the case for appeal is wrong and should be changed.”
Lawyers are understood to be meeting with Stone this week before they react to the CCRC response.
The 1996 murder of Lin and Megan shocked Britain.
The attack left Lin’s other daughter, Josie, then nine, with severe head injuries.
Family dog Lucy was also killed.
Stone’s legal team claimed they had evidence of a “full confession” by Bellfield, in which he described to a fellow prisoner how he came across Lin and her children in Chillenden, Kent, and attacked them with a hammer.
Stone’s lawyer Paul Bacon said in 2017: “We have identified forensic material from the scene of the murders which corroborates the confession.”
Serial killer Bellfield, 51, is serving a whole-life tariff for abducting and killing Milly, 13, near her school in Walton-on-Thames, Surrey, in 2002.
He was convicted of Milly’s murder while already jailed for the murders of Amelie Delagrange, 22, and Marsha McDonnell, 19, and attempted murder of Kate Sheedy, then 18.
Stone failed in a previous application to the CCRC in 2010.


I'm pretty much loving the JavaScript landscape these days. So much potential to do all the things.
I love to automate and create efficiencies with things like, node.js, Gulp, and Webpack.
I started out doing design and information architecture, so I have a unique perspective that has served me well as I moved into development.
I enjoy UX/UI Wireframing and rapid functional prototype development for websites and advanced interactiviy in web based applications. I've been known to work closely with designers to realize their most ambitious designs.
I've completed many projects designing and coding responsive Web development, to include architecture and design. You could say @media is my middle name.
It's fun to realize complex designs and user interactions utilizing DOM manipulation with advanced CSS selectors, Jquery and other JS libraries (waypoint.js,charts.js). "A new day a new library" as we say in the JavaScript world.
Probably my favorite thing in the world is manipulating the DOM. I admit I am still a fan of jQuery for rapid dev. But I am excited to get my hands on React all the other fun libraries out there. JavaScript wisdom is knowing you don't know anything, but you can always look it up.
Websites and applications require details that developers without a background in design might miss. I've handled all aspects including accessibility, SEO, and performance analytics so I know how to make them hum.
Organizing the information users need involves a little bit of art and allot of testing. I've been organizing, stucturing information, finding engaging ways to convey that information for decades. Then putting it in front of the user to make sure I'm not crazy. I haven't been institutionalized yet.
Computer Only
JavaScript, JSON
CSS, PostCSS, SASS
HTML, HTML5, XML
PHP
Actionscript
Java (Beginner)
Leveraged for Speed
Bootstrap
Jquery
GSAP/Waypoint.js
Charts.js
React (Beginner)
Angular (Beginner)
For Building
WordPress
Adobe MS/XD/Photoshop
Git/Gulp/Webpack
MS Office
OS X/Windows
MySQL/CPanel
Mark is a problem-solver. When we worked on our projects, Mark had a keen sense of configuring the best solutions in the shortest amount of time. As a developer he is invested in best practices and staying current. As a designer he is a collaborative and coaches other designers on how to get deliverables best suited for various devices and platforms.
Works good and so everyone can create a nice looking landingpage without coding. Thanks a lot!
Works good and so everyone can create a nice looking landingpage without coding. Thanks a lot!
To create useful products that people enjoy using because it gets them what they want.


This project uses Mercurial to manage its source code. Instructions on Mercurial use can be found at http://hgbook.red-bean.com/read/.
The source can be checked out anonymously from Mercurial with this command (See http://www.selenic.com/mercurial/hg.1.html#clone):
$ hg clone https://bitbucket.org/devzendo/xplp
Only project developers can access the Mercurial tree via this method (See http://www.selenic.com/mercurial/hg.1.html#clone).
$ hg clone https://bitbucket.org/devzendo/xplp


Table Name: tabSales Partner
| Sr | Fieldname | Type | Label | Options |
|---|---|---|---|---|
| 1 | partner_name |
Data | Sales Partner Name | |
| 2 | partner_type |
Select | Partner Type |
Channel Partner Distributor Dealer Agent Retailer Implementation Partner Reseller |
| 3 | territory |
Link | Territory | Territory |
| 4 | column_break0 |
Column Break | ||
| 5 | commission_rate |
Float | Commission Rate | |
| 6 | address_contacts |
Section Break | Address & Contacts | |
| 7 | address_desc |
HTML | Address Desc | |
| 8 | address_html |
HTML | Address HTML | |
| 9 | column_break1 |
Column Break | ||
| 10 | contact_desc |
HTML | Contact Desc | |
| 11 | contact_html |
HTML | Contact HTML | |
| 12 | partner_target_details_section_break |
Section Break | Sales Partner Target | |
| 13 | targets |
Table | Targets | Target Detail |
| 14 | distribution_id |
Link |
Target Distribution
Select Monthly Distribution to unevenly distribute targets across months. |
Monthly Distribution |
| 15 | website |
Section Break | Website | |
| 16 | show_in_website |
Check | Show In Website | |
| 17 | section_break_17 |
Section Break | ||
| 18 | route |
Data | Route | |
| 19 | column_break_20 |
Column Break | ||
| 20 | logo |
Attach | Logo | |
| 21 | partner_website |
Data | Partner website | |
| 22 | section_break_22 |
Section Break | ||
| 23 | introduction |
Text | Introduction | |
| 24 | description |
Text Editor | Description |
Inherits from frappe.website.website_generator.WebsiteGenerator
No docs
No docs
Load address and contacts in __onload
No docs


FreeCodeCamp API: Timestamp Microservice
User stories:
1) I can pass a string as a parameter, and it will check to see whether that string
contains either a unix timestamp or a natural language date (example: January 1, 2016)
2) If it does, it returns both the Unix timestamp and the natural language form of that date.
3) If it does not contain a date or Unix timestamp, it returns null for those properties.
Add your timestamp string to the url above and a JSON string will be returned in both unix time and natural time formats if the string is valid.
Example input time strings:
https://timestring-ms.herokuapp.com/1480032000
https://timestring-ms.herokuapp.com/2016-11-25
Example output:
{
current unix time: "1451884514",
current natural time: "2016-01-04T05:15:14.099Z",
unix time: "1480032000",
natural time: "25-11-2016"
}


--- layout: post permalink: visitorboost.html Tags: Array NameOfCoupon: Visitor Boost Cash Back Summary: See our Visitor Boost Coupon Code, Visitor Boost Rebate, Visitor Boost Promo Code, Visitor Boost Discount, Visitor Boost Coupon Cash Back Rebate here. MetaKeywords: Visitor Boost Coupon Code, Visitor Boost Rebate, Visitor Boost Promo Code, Visitor Boost Cash Back Rebate, Visitor Boost Discount, Visitor Boost Coupon Image: images/9788.gif LinkURL: http://www.shareasale.com/r.cfm?b=53453&u=412002&m=9788 affiliate_url_link: http://www.icouponblog.com/jane.php?id=1612 thesis_readmore: See the Visitor Boost Coupon thesis_thumb: http://www.icouponblog.com/tn.php?merchantURL=visitorboost.com Title: Save 10% - Visitor Boost Coupon Code for visitorboost.com. Visitor Boost Rebate & Discount thesis_description: Our Visitor Boost Discount Coupon Code for visitorboost.com. We have the best Visitor Boost Rebate anywhere. thesis_keywords: Visitor Boost, Visitor Boost Coupon Code, Visitor Boost Discount, Visitor Boost Rebate product_name: Visitor Boost hop_url: http://www.icouponblog.com/hop.php?id=1612 ---
Do you have a website with lots of products or services to sell? Is your internet shop not getting enough visitors? Then Visitor Boost is what you need. The fact is no matter how good the service, how fantastic the goods, unless there is a steady traffic of visitors, there won’t be anyone to buy those products or services. Visitor Boost has a proven track record of success. Check out Visitor Boost and do a great service to your website, online shop and yourself. Increase traffic to your website. Use our discount coupon to get a great price on a great service!
Visitor Boost is a highly successful service through which many customers have turned their traffic flow around….from negligible to highly dense. Jump start your internet business with visitors at wholesale rates. With Visitor Boost you will start receiving a steady flow of traffic in as little as a few hours. You can select the area you want the traffic from and the country or countries. You will receive targeted traffic only from your selection. Visitor Boost checks each visitor IP against IP to location database to know exactly where they are coming from. Visitor Boost will only send you targeted traffic that would have interest in your product. It is not about increasing traffic, but about boosting the right type of visitors to your online store or website.
Visitor Boost has a proven method of diverting traffic to your website or online business. They have a successful list of clients who are very happy with Visitor Boost. You can check it out. Visit Visitor Boost online and see for yourself how it will all happen…Drive hordes of visitors to your website, online store or business. Let profit grow with Visitor Boost starting today!


Click some of the navigation links above or take a look at the stats below to get started.
{{message}}


Redline is a pure Java library for manipulating RPM Package Manager packages. Currently the project supports reading and creating packages and has an included Ant task useful for integration with build systems. Support for package signatures will be added in a future release.
Downloads are hosted at both the Google Code Redline downloads page and at the GitHub Redline downloads page.
Please note that the source distribution build script requires Maven 2 or later. The bundle binary distribution packages all required dependencies in one distributable JAR and contains all classes needed to use Redline in an Ant build script.
Note: The source control repository has been switched to Git.
Source code is available from our GitHub repostory.
To report a bug, please use the issue tracker at the Google Code project page


Options
Select the SIGU you want to see
Date
Realtime Traffic
You can update a chart periodically to get a real-time effect by using a timer to insert the new data in the plot and redraw it.
Time between updates: milliseconds
Select the SIGU you want to see
You can update a chart periodically to get a real-time effect by using a timer to insert the new data in the plot and redraw it.
Time between updates: milliseconds


On iOS, under Settings > General > Restrictions, the restrictions settings can be found. They are there for parents who want to limit the capability of their children's devices. They can disable Siri, Camera, Safari, installing or deleting apps and in-app purchases, among other things. They can also set ratings limits for content (for example, disabling the purchase or download of apps rated 17+ or movies rated R). But what do you do if you can't remember the password, your friends enabled restrictions, or even your parents turned them on, and you want to disable them without restoring your device? You crack the password! This is what you'll learn to do in this tutorial.
Install, then run it
Select your device, then navigate to System Files/HomeDomain/Library/Preferences/com.apple.restrictionspassword.plist
Find RestrictionsPasswordKey and RestrictionsPasswordSalt
At the bottom of the webpage, there are four fields: RestrictionsPasswordKey, RestrictionsPasswordSalt, Starting Passcode and End Passcode. Put the info from iBackupBot (RestrictionsPasswordKey and RestrictionsPasswordSalt) in the appropriate field. If you know the password is higher and/or lower than a certain number, you can set up the Starting Passcode and End Passcode fields. If you don't have any clue, or you don't know what those fields do, then just leave them at 0000 and 9999, respectively.
Wait for the website to get the password. Do not leave the webpage. Leave the webpage open, do not switch screens to go to a different app. While you wait, you can follow me on Twitter @JustinAlexP for more tech stuff, and updates when new tutorials come out.
Once the website has found the password, use it to unlock, and then disable or change your restrictions.
That's it, you've broken into the restrictions on iOS! If you like these tutorials or you want to hear more from me, please follow me on Twitter @JustinAlexP.


{% extends "base.html" %} {% block title %} Stack Exchange {% endblock %} {% block pagetitle %}Brian R. Bondy - Stack Overflow {% endblock %} {% block subtitle %} Misc. data analysis on StackOverflow and related sites {% endblock %} {% block body_id %}body_stackexchange{% endblock %} {% block extra_div %}
{% endblock %} {% block main_content %}I mined the Stack Overflow (and related sites) data dumps to extract the social networking accounts of the top users. Each list includes only the users who have social networking links in their profile, and each list is sorted by the highest reputation users first.
These lists may be useful to stay up to date on technology, connect with your StackExchange peers, or even for technical recruiters.
StackOverflow
- Twitter - LinkedIn - Facebook
ServerFault
- Twitter - LinkedIn - Facebook
SuperUser
- Twitter - LinkedIn - Facebook
Android
- Twitter - LinkedIn - Facebook
Apple
- Twitter - LinkedIn - Facebook
Cooking
- Twitter - LinkedIn - Facebook
Do It Yourself
- Twitter - LinkedIn - Facebook
Electronics
- Twitter - LinkedIn - Facebook
English Language and Usage
- Twitter - LinkedIn - Facebook
Game Development
- Twitter - LinkedIn - Facebook
Gaming
- Twitter - LinkedIn - Facebook
Geographic Information Systems
- Twitter - LinkedIn - Facebook
Mathematics
- Twitter - LinkedIn - Facebook
Photography
- Twitter - LinkedIn - Facebook
Programmers
- Twitter - LinkedIn - Facebook
StackApps
- Twitter - LinkedIn - Facebook
Statistical Analysis
- Twitter - LinkedIn - Facebook
TeX - LaTeX
- Twitter - LinkedIn - Facebook
Theoretical Computer Science
- Twitter - LinkedIn - Facebook
Ubuntu
- Twitter - LinkedIn - Facebook
Unix
- Twitter - LinkedIn - Facebook
Webmasters
- Twitter - LinkedIn - Facebook
I thought it would be interesting to calculate the average age of users on each StackExchange site, and even more interesting to see each tag within those sites.
I call the statistic the Expectd Age because it is calculated using Expected Value from statistics.
StackOverflow
- Average age per tag
ServerFault
- Average age per tag
SuperUser
- Average age per tag
Android
- Average age per tag
Apple
- Average age per tag
Cooking
- Average age per tag
Do It Yourself
- Average age per tag
Electronics
- Average age per tag
English Language and Usage
- Average age per tag
Game Development
- Average age per tag
Gaming
- Average age per tag
Geographic Information Systems
- Average age per tag
Mathematics
- Average age per tag
Photography
- Average age per tag
Programmers
- Average age per tag
StackApps
- Average age per tag
Statistical Analysis
- Average age per tag
TeX - LaTeX
- Average age per tag
Theoretical Computer Science
- Average age per tag
Ubuntu
- Average age per tag
Unix
- Average age per tag
Webmasters
- Average age per tag
Web Applications
- Average age per tag
Wordpress
- Average age per tag


@Component([CharactersFavoriteModule], [CoreComponent]) interface CharactersFavoriteComponent
Class for which a fully-formed, dependency-injected implementation is to be generated from CharactersFavoriteModule.
See Also
inject |
Inject dependencies on component. abstract fun inject(favoriteFragment: CharactersFavoriteFragment): Unit |


|
CrucifixionLeave it to the human race to take something as wholesome as a tree and turn it into a device for torturous Execution.While the most famous crucifixion victim was Jesus Christ, he was hardly the only one. The practice dates back to at least 500 B.C., first coming into use in the Middle East. The earliest historical records of crucifixion are attributed to the Persians and Greeks, but the Romans really made it fashionable. Just in case you've been raised by wolves and somehow stumbled straight from the steppes to an Internet kiosk, we'd better start with a brief description of the process. Crucifixion is a method of execution in which the victim is nailed to a tree or a piece of wood with a cross beam. Religious iconography of crucifixion scenes often misrepresents some of the details. For one thing, victims were usually stripped naked. More significantly, the nails are driven through the wrists, not the hands, because the weight of the victim's body would shred the hands and allow the victim to fall off the cross maimed but not dead. Usually, the nails were reinforced by lengths of rope tying the arms to the cross. The feet were similarly pierced just below the ankles. While you might think that the pain and blood loss associated with this process would be the cause of death, that is not the case, a fact which will become important in some of the subsequent discussion. The cause of death in most crucifixions is actually suffocation. The victim has enough stability where the feet are nailed down to hold his body up (most victims were males). When the victim relaxes his legs and sags, the weight of his body drags the chest and shoulders down, hyperextending the arms and preventing him from breathing. Despite the hopelessness of his plight and the excruciating pain caused by every movement, the human body is hard-wired to draw breath by whatever means necessary, even when it doesn't make sense (which is why you can't kill yourself by holding your breath). Therefore, when the crucifixion victim sags and can't breathe, a virtually undeniable instinct causes them to straighten their legs in order to draw a breath. This causes excruciating pain. The process then repeats. Done properly, it can take days for a crucifixion victim to die. The Romans popularized (if that's the word) crucifixion by the time of Christ as a punishment for rebellious slaves, political criminals and really, really bad guys.  In Jerusalem around the time of Christ, the population was particularly seditious and the governor, Pontius Pilate, was a particularly bloodthirsty guy by many accounts. This resulted in a fair number of crucifixions, which took place on a very visible hill overlooking the city, Calvary. Victims were required to carry their crosses through the city to Calvary, just to make sure no one missed the point. Pilate's resistance to crucifying Christ in the gospels is somewhat baffling in light of his hardass reputation, but it's highly likely that his main motivation in "washing his hands" of the situation was inspired by the fact that the Jewish priests really wanted Christ crucified by the Romans, rather than executed by the Jews. Pilate's reluctance might have been politically motivated, or it might just have been a spiteful way to make life difficult for the Jews. He probably didn't anticipate that his effort to blame the Jews for Christ's death would contribute to rationalizations for the Holocaust 2,000 years later. Of course, no one at the time could possibly have realized just what a big deal the crucifixion of Christ would eventually prove to be. Christians believe that Jesus was crucified on the Friday before Passover, then rose from the dead three days later. This concept forms the cornerstone of the entire religion in most of its various forms.  In recent years, more intricate theories have formed around the historical question of whether or not J.C. actually died on the cross. A variety of historical detectives have addressed the question in some detail. There are some interesting clues in the Bible on the subject. The New Testament states rather specifically that Christ's legs were not broken while he was on the cross. This is significant because the breaking of the legs would lead to rapid death, due to the aforementioned suffocation. The theories all boil down to something more or less like this: Jesus was crucified, most likely at the behest of his political/religious enemies. Enter the Essenes, an ancient sect of monks and healers once led by John the Baptist. (Some historical evidence suggests Jesus may also have been an Essene.) Working together, the Essenes, Mary Magdalene and the Apostles paid the Romans to look the other way while they removed Jesus, still alive, from the cross. They took him to a quiet location (the tomb purchased by Joseph of Arimathea) and treated his wombs by wrapping him in a linen cloth soaked in the medicines of the day, such as aloe and myrrh. These drugs helped keep Jesus alive and in more or less three days, he recovered from his injuries. The cloth picked up an imprint of his body and wounds (this has been recreated in a modern lab setting), due to the medicines used and his blood and bodily secretions, and the cloth was saved. Jesus and Mary Magdalene had a child. As the tale of Christ's miraculous resurrection spread, the secret of the child and the evidence of the cloth were closely guarded, , and Mary eventually emigrated to France with the kid. A society formed to protect these secrets. The secret of the bloodline and Christ's survival eventually became known as the Holy Grail (a process exhaustively detailed in the book "Holy Blood, Holy Grail"). The Knights Templar were eventually in charge of protecting the secrets, including the knowledge of Christ's descendents, who would later be a French royal lineage known as the Merovingian line, and the cloth, which became known as the Shroud of Turin. Regardless of the truth of any of the above, Christ certainly catapulted the concept of crucifixion into a leading icon in Western civilization. Artists endlessly depicted the event, and the icon of the cross became easily the most widespread symbol in an increasingly Christianized Europe. Subsequent to Christ's crucifixion, several of his followers were treated to the same style of execution. Most famously, Peter was crucified upside down. He asked for the reversal, explaining that he wasn't worthy of dying in the same was as his fearless leader. No doubt coincidentally, this is a much less painful way to be crucified, with unconsciousness and death coming in short hours instead of possibly days. The Romans stopped using crucifixion as a form of execution when the Christians took over, although the practice remained in scattered usage around the world, especially in non-Christian domains. After the Middle Ages or so, the primary practice of crucifixion was mainly recreational or devotional. Vlad the Impaler was said to have been a fan of recreational crucifixion, although this may simply be a reference to his titular practice of impaling people on wooden stakes. In various parts of the world inhabited by overenthusiastic Catholics, such as the Philippines and Brazil, extremely devout and mentally unstable individuals occasionally choose to commemorate Christ's death by having themselves actually crucified, nails and all. This practice is frowned on by the church, for some strange reason, but that rarely deters those inclined to participate. As further evidence of the survivability of crucifixion, there aren't usually deaths associated with these spectacles. As historians can endlessly attest, stupidity is actually fatal much less often than you might think.
|


|
cocos2d-iphone-extensions
0.2
Cocos2D Extensions API Reference (iOS version) for www.kobold2d.com developers
|
Public Member Functions | |
| (id) | - initWithTilesFile:tilesExtension:tilesZ: |
| (void) | - loadTilesInRect: |
Static Public Member Functions | |
| (id) | + nodeWithTilesFile:tilesExtension:tilesZ: |
Protected Attributes | |
| CGSize | _screenLoadRectExtension |
| CGRect | _loadedRect |
| NSMutableArray * | _dynamicChildren |
| NSMutableArray * | _levelTextures |
| NSThread * | _tilesLoadThread |
| BOOL | _tilesLoadThreadIsSleeping |
| BOOL | _significantPositionChange |
| BOOL | _dynamicMode |
Properties | |
| NSThread * | tilesLoadThread |
| CGSize | screenLoadRectExtension |
| BOOL | dynamicMode |
holds parts of big image as an idvididual dynamically unloadable tiles. Besides dynamic tiles this node can have normal children, such as CCSprite, layer, etc...
CCBigImage is refactored DynamicTiledLevelNode New Features: 1) Tile-Cutter ( https://github.com/psineur/Tile-Cutter ) instead of Gimp & xcftools 2) Removed unnecessary code, more comments, etc...
Besides Dynamic Mode, when all tiles are loaded in independent thread this node also supports Static Mode (dynamicMode = NO) when all tiles are preloaded and no additional thread is used. However, even in staticMode tiles that aren't visible now in screen rect will be not rendered to increase performance.
LIMITATIONS: CCCamera may be not supported.
| - (id) initWithTilesFile: | (NSString *) | filename | |
| tilesExtension: | (NSString *) | extension | |
| tilesZ: | (int) | tilesZ | |
Inits CCBigImage. Designated initializer.
| filename | plist filename from Tile-Cutter. |
| extension | file extension, that will be used for all tiles instead of their extensions that are in plist file. Pass nil to kep original extension from plist file. |
| tilesZ | zOrder, that will be used for all tiles. Usefull when you have other nodes added as children to CCBigImage. |
| - (void) loadTilesInRect: | (CGRect) | loadRect |
Load tiles by request in a given rect (in nodes coordinates)
| + (id) nodeWithTilesFile: | (NSString *) | filename | |
| tilesExtension: | (NSString *) | extension | |
| tilesZ: | (int) | tilesZ | |
Returns new CCBigImage.
- (BOOL) dynamicMode [read, write, assign] |
if YES - then only needed (visible in screen rect) tiles will be loaded at the moment via independent thread if NO - all tiles will be preloaded and no no additional thread will be used This property can be changed at runtime in both directions. On the Mac by default this property is OFF On the iOS devices by default this property is ON
- (CGSize) screenLoadRectExtension [read, write, assign] |
Returns size that describes in what distance beyond each side of the screen tiles should be loaded to avoid holes when levels scrolls fast. By default it's equal to first tile's size.


put it in
pppppppppp
my back pocket my back pocket
mmmmmmmmmmmmmmmmmmmmmmmmmmmmm
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
pppppppppppppppppppppppppppppp
i know it's i know it's i know it's
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
the other kids
tttttttttttttt
oooooooooooooo


Constructor
new Key(name, code)
Constructs a new instance of Key from a name and a keycode
Parameters:
| Name | Type | Description |
|---|---|---|
name |
string | The name of the key |
code |
number | The key code for the key |
Members
(static) keymap :object
The raw map of key names to key codes. Used internally for some operations.
Type:
- object
(static) metaKeys :Array
A static collection of all the meta key instances
Type:
- Array
Methods
(static) fromName(name) → {Key}
Retreive a Key instance associated with the provided name
Parameters:
| Name | Type | Description |
|---|---|---|
name |
string | The name of the key as can be found in the keymap |
Returns:
- Type
- Key
isMeta() → {boolean}
Return true if the current Key is a meta key
Returns:
true if the Key is one of the meta keys
- Type
- boolean
isPressed(code) → {boolean}
Determine if the provided key code was pressed
Parameters:
| Name | Type | Description |
|---|---|---|
code |
number | The key code from e.which |
Returns:
- Type
- boolean


Toggle navigation
SEA - To Do
About Me
Member
Messages
Sign Out
My Activities
Activity 1
Open
Description
Delete
Activity 2
Open
Description
Delete
To Do
July, 10 Friday
Lorem lorem ipsum ipsum.
In Progress
July, 10 Friday
Lorem lorem ipsum ipsum.
Complete
July, 10 Friday
Lorem lorem ipsum ipsum.


Grado's Scottish Cup draw and 5 other times Scottish football made a right balls up of it
The wrestler cut an amusing figure on yesterday's draw as he stood next to Kieron Achara.
by Gabriel McKayAnyone who has ever watched a draw for one of UEFA or FIFA's tournaments will know just how convoluted the process can be these days.
Video montages, celebrity guests and vainglorious speeches all serve as a prelude to what is essentially a bit of admin.
As you might expect though, Scottish football tends to be rather more about the patter when such draws come around.
Viewers tuning into Sportscene last night would have been treated to the sight of wrestler Grado, who had decided to attend while looking like Jonah Hill's character at the start of 21 Jump Street.
Alongside the Scot Squad star, whose previous contributions to the cultural zeitgeist include a litter awareness campaign at T in the Park and a brief spell on River City, was Scottish Rocks basketball star Kieron Achara.
At 6ft 10in he towered above Grado, with the result looking less like a Scottish Cup draw and more like a remake of Twins.
That's far from the only notable incident we've seen at such draws though, with the below examples taking us through the good, the bad and the ugly.
Tunnocks Caramel Wafer Cup
When the Tunnocks decided to start sponsoring the Challenge Cup it was, to be honest, inherently funny.
Renaming a competition the Tunnocks Caramel Wafer Challenge Cup is, frankly, magnificent. It's the specificity that makes it - not just the Tunnocks Cup, the Tunnocks Caramel Wafer Cup.
Things were already rather amusing, then we saw the first round draw and the studio design.
A domestic cup competition featuring teams from five different nations and some under-21 teams thrown in for good measure, being drawn on the set of a low-budget rip-off of Charlie and the Chocolate Factory.
Magnificent.
Getting the draw entirely wrong
For fans reaching a cup-semi final is an exciting time, with supporters watching the draw with baited breath to see who stands between their side and a shot at the trophy.
For clubs the games being played at Hampden means plenty of negotiation over dates, times, ticket allocations and prices.
Those were the discussions Hearts and Dundee United were locked in shortly after the 2007-08 CIS Cup semi-final draw had been made.
A mere FOUR HOURS after the draw had been made though the SFL informed the clubs that they wouldn't be playing each other after all.
Scottish Parliament presiding officer Alex Fergusson had mixed up the numbers and called the wrong ties.
The SFL sheepishly announced that Hearts would be taking on Rangers and Dundee United facing Aberdeen.
Dundee United chairman Eddie Thompson said: "It's a total farce. I've spent four hours on the phone with Hearts arranging when the game would be played, where the game would be played and so on.
"I'd like to know what the SFL have been doing for four hours between 1330 GMT when the draw was made, and 1720 GMT, when they notified us of the mistake.
"It was a member of the media who contacted me long before I heard from the SFL and I thought he was off his head."
Do ya think I'm sozzled?
The daddy of them all - Rod Stewart performing the Scottish Cup draw after a few tinnies.

Ever seen Paul McCartney do a cup draw while clearly blootered? No, you haven't. Take that, the FA Cup.
Live and not quite clicking (part 1)
In the old days you might hear the cup draw on the radio if you were lucky. More likely you'd just read about it in the next day's paper.
These days modern technology allows proceedings to be beamed all over the world as it's happening - or that's the theory.
In February 2016 the Scottish Cup quarter-final draw was broadcast live from Hampden Park, on Sky Sports News no less.
Sadly for the SFA they managed to draw precisely one tie - Dundee United v Celtic - when someone noticed one of the balls was already open.
A bemused Lubo Moravcik watched on as the draw had to be completely restarted, with Dundee defender Darren O'Dea taking to Twitter to declare: "Just heard if we beat Dumbarton we've got Juventus in the quarter-finals of the Copa del Rey".
Live and not quite clicking (part 2)
Making such an embarrassing mistake in front of so many people must have been embarrassing, and there would be no repeat in September this year.
Or rather, if there was no-one could have seen it.
The fourth round draw for the aforementioned Tunnocks Caramel Wafer Cup was to be streamed live on the SPFL's YouTube channel, but technical issues meant the broadcast didn't start until halfway through the draw.
That left fans of Arbroath , Elgin City, Glenavon, Partick Thistle, Raith Rovers, Airdrie, Connah's Quay and Clyde with no idea who they were actually playing.
The draw was eventually made clear to everyone involved, but it somewhat defeated the point of the live stream.
Surprisingly there were no allegations of the draw being fiddled - though going on previous evidence trying such a complex move would be well beyond the capabilities of those doing the draw in any case.


Pink Floyd
Upcoming Shows
- August 2nd, 2016 - Crystal Ballroom - Portland, OR
- August 4th, 2016 - Key Arena - Seattle, WA
- August 7th, 2016 - Commodore Ballroom - Vancouver, BC
- August 8th, 2016 - Broadway Hall - Bellingham, WA
- August 10th, 2016 - Great American Music Hall - San Francisco, CA


In this codelab, you'll create and run a "hello world" Flask application. You'll also practice collaborating in real-time with your teammates on a shared code repository.
In this codelab, you'll be working with your project groups on your wiki implementation. Open the source code for the wiki in Cloud Shell Editor.
Next, add the "boilerplate" files needed for a Flask web application.
wiki.py
file that prints "Hello, World!". print("Hello, World!")
python wiki.py
If you successfully saw "Hello, World!" printed in the previous step, commit your changes and push them to GitLab so that your teammates can benefit from your work.
git add .
The "." says to add all files Git finds in the current directory or sub-directories.
git status
You should see the following output:
Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: wiki.py
If you see files you don't expect, check your ".gitignore" file to make sure it matches the recommended file at https://github.com/github/gitignore/blob/master/Python.gitignore.
git commit -m 'add wiki Python module'
git push origin main
Download the code that your teammate just pushed and merge it with your local copy.
git fetch origin main
git merge origin/main
If conflicts arise, refer to the Handling Conflicts with Git codelab.
python wiki.py
Your wiki depends on more than just the Python built-in modules. In a team environment, it's important to document which packages your application depends on so that your teammates can also run the code.
By convention, Python developers create a file named "requirements.txt" containing the package names and versions of all the necessary packages to run your application.
requirements.txt
to indicate which packages your code depends on. Flask==1.1.2 pytest==6.2.3
pip install -r requirements.txt
Since you've already installed the necessary packages in the Using Python with Cloud Shell codelab, you should see "Requirement already satisfied".
Commit your changes and push them to GitLab so that your teammates can benefit from your work.
git add .
The "." says to add all files Git finds in the current directory or sub-directories.
git status
You should see the following output:
Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: requirements.txt
git commit -m 'add list of app dependencies'
git push origin main
Download the code that your teammate just pushed and merge it with your local copy.
git fetch origin main
git merge origin/main
pip install -r requirements.txt
It's good software engineering practice to have tests. Create a test file for your code.
import wiki def test_import(): assert wiki is not None
pytest wiki_test.py
You should see that 1 test has passed.
Commit your changes and push them to GitLab so that your teammates can benefit from your work.
git add .
The "." says to add all files Git finds in the current directory or sub-directories.
git status
You should see the following output:
Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: wiki_test.py
git commit -m 'add list of app dependencies'
git push origin main
Download the code that your teammate just pushed and merge it with your local copy.
git fetch origin main
git merge origin/main
pytest wiki_test.py
Create a "Flask" application to be the web server for your wiki.
wiki.py
file with the code to create a Flask server.from flask import Flask app = Flask(__name__) @app.route("/") def main(): return "Hello, World!\n"
export FLASK_APP=wiki export FLASK_ENV=development flask run -p 8080
curl localhost:8080
You should see "Hello, World!" printed.
Commit your changes and push them to GitLab so that your teammates can benefit from your work.
git add .
The "." says to add all files Git finds in the current directory or sub-directories.
git status
You should see the following output:
Changes to be committed: (use "git rm --cached <file>..." to unstage) modified: wiki.py
git commit -m 'create Hello World Flask application'
git push origin main
Download the code that your teammate just pushed and merge it with your local copy.
git fetch origin main
git merge origin/main
export FLASK_APP=wiki export FLASK_ENV=development flask run -p 8080
curl localhost:8080
You should see "Hello, World!" printed.
Since it can be hard to remember the three commands to start the Flask server, create a script with these commands.
run-flask.sh
in the root directory of the repository. #!/usr/bin/env bash
export FLASK_APP=wiki
export FLASK_ENV=development
flask run -p 8080
chmod
command.chmod +x run-flask.sh
Cloud Shell provides a web preview feature, which allows you to access your Flask server from a web browser. It prevents access from anyone but you by using your Google credentials.
Run the server and use the Cloud Shell web preview to access it.
./run-flask.sh
If you successfully saw "Hello, World!" printed in the previous step, commit your changes and push them to GitLab.
git add .
The "." says to add all files Git finds in the current directory or sub-directories.
git status
You should see the following output:
Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: run-flask.sh
git commit -m 'add command to run Flask server'
git push origin main
Download the code that your teammate just pushed and merge it with your local copy.
git fetch origin main
git merge origin/main
./run-flask.sh
It's important to add automated tests for all application code to ensure that your project continues to work as expected after making code changes. This is especially important when there are multiple contributors to the project.
Add tests to check that the Flask application is working properly.
import pytest import wiki @pytest.fixture def client(): wiki.app.config["TESTING"] = True with wiki.app.test_client() as client: yield client def test_import(): assert wiki is not None def test_homepage(client): resp = client.get("/") assert resp.status_code == 200 assert b"Hello, World!\n" in resp.data
The "client" function is a pytest fixture that creates a Flask test client ( api reference, additional reference). This allows you to add a "client" argument to your tests, which you can use to make requests to your Flask application.
The result of calling the "client.get()" method is a Response object, which contains useful properties such as "status_code" and "data". The assertions check that these are the expected values.
pytest .
If the test passed in the previous step, commit your changes and push them to GitLab.
git add .
git status
You should see the following output:
Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: wiki_test.py
git commit -m 'add test for home page'
git push origin main
Download the code that your teammate just pushed and merge it with your local copy.
git fetch origin main
git merge origin/main
pytest .
Double-check that the code has been pushed by viewing the code on GitLab.
You now have the necessary files in place to continue developing your wiki. In the Milestone 1 description, you will receive additional instructions about the expected next steps.
Continue to work together as a group, pushing your changes when you've added a feature, and pulling your teammates' changes often.


Cameron Watson
Toggle navigation
Return
Captain Mogbeard (2015)
Space Butterfly (2014)
Game Concept art (2015)
Game Concept art (2015)
Game Concept (2016)
Pandamonium (2016)
Pandamonium (2016)
Game Concept Art (2016)
Game Concept Art (2016)
Game Concept Art (2016)
3D Art (2015)
3D Art (2015)
Neo Vision Visor (2016)
Neo Vision Visor (2016)
Neo Vision Visor (2016)
Lifeless (2016)
Lifeless (2016)
Trapped world (2015)
Trapped world (2015)


The base class for cameras - provides base functionality to the other cameras
@constructor
SHOULD call update here and figure out what up needs to be if we've not been given it :S
We keep these for the viewport calculations
update - call this in your update function to update the matrices TODO - I wonder if such things should be automatic on our draw / update paths through the nodes? Needs GL context ideally
lookat - point the camera
setViewport
orbit -Rotate the camera around its look point.
pantilt - Pan and tilt the camera with an axis and angle notation
_addToNode - a function called when this class is added to a node
track - track the camera - v is a vec2 perpendicular to the look/pos dir
An orthographic camera. This class calls makeOrtho on its perspective matrix Orthographic Camera uses 1 pixel as 1 world unit
@constructor
update - call with width and height and the matrix will be updated
An perspective camera. This class calls makePerspective on its perspective matrix TODO - Not sure we need zoom here. Should probably have a spaceball class
@constructor
update - call with width and height and the matrix will be updated
castRay - Given a screen position (in pixels 0 -> dimension), cast a ray through the screen along the frustum from the eye pos
change the zoom as a function of the current percentage of the distance between the near and far clipping planes plus an offset percentage given by dt. Percentages are 0-1
zoom - set the absolute zoom value between 0 and 1 - a percentage of the distance between the near and far clip planes (by default - these can be changed)
Camera that listens for mouse input and moves when the user moves the mouse around
@constructor
Listen for the signals on the PXL Context, emitting mouse events
This holds all we need to know about the camera
onMouseMove - registered with our signal - called when mouse is moved over canvas
onMouseDown - registered with our signal - called when mouse button is pressed over canvas
onMouseUp - registered with our signal - called when mouse button is released over canvas
onMouseWheel - registered with our signal - called when mouse wheel is moved over canvas At the moment, this appears to be chrome only
onMouseOut - registered with our signal - called when mouse leaves the context
onMouseOver - registered with our signal - called when mouse enters the context
TouchPerspCamera Camera that listens for both mouse input and touch gestures
@constructor
Listen for the signals on the PXL Context, emitting touch events
onPinch
onSpread
onSwipe
TODO
Interactive cameras, when created should add listeners automagically to either window or some passed in DOM object I suspect. Saves us writing boilerplate code
Decouple the GL so we can test - but keep option in because its clean when used
https://gist.github.com/eligrey/384583 - useful for changes to pos,look etc?


def test_user_potential():
model = pymc3.Model()
with model:
a = pymc3.Normal("a", mu=0, sd=1)
// Work around missing nonlocal in python2
called = []
def test_user_potential():
model = pymc3.Model()
with model:
pymc3.Normal("a", mu=0, sd=1)
// Work around missing nonlocal in python2
called = []


= $overview['booking'] ?>
Incoming customers scheduled for booking.
= $overview['cancelled'] ?>
Booking that are canceled by the customer.
= $overview['travelling'] ?>
Number of vehicles currently used.
= $overview['available'] ?>
Available vehicles for rent.


{% block top-header %}{% endblock top-header %}
{% block p-lead %}{% endblock p-lead %}
{# side note: you can just use "endblock" without adding the block name, it's just there for readibility #} {% block upper-body %} {% endblock upper-body %}{% block body %} {% endblock body %}
{% block body-non-para %} {# this block is for elements inside the body block, but not styled as a paragraph #} {% endblock body-non-para %}


Hey! Welcome to my website! Here's alombi, an Italian student and programmer enjoying iOS, MacOS, web development and some more stuff.
A fast and beautiful web app for checking latest earthquakes in Italy, with interactive maps
A powerful developers tool built for ensure a better user experience in Shortcuts.
An unofficial API that scrapes the routinehub.co website and returns lots of data.
A website for easily browse a large collection of URL schemes for the iOS Settings app.
Beautiful pill widgets on your lockscreen - a tweak for jailbroken devices.
A simple yet powerful syntax highlighter for multiple programming languages in iOS Shortcuts.