Flashcards
Javascript Errors
1. How do you halt program execution with an instance of an error object in JavaScript?
- Using the keyword throw you can throw your own runtime errors that will stop program execution.
2. What kind of error is thrown when a variable or parameter is not of a valid type?
- A TypeError is thrown when an operation cannot be performed because the operand is a value of the wrong type.
3. What kind of error will be thrown when the below code is executed?
- ReferenceError: pupy is not defined
4. What kind of error will be thrown when the below code is run?
- SyntaxError: Unexpected token '}'
5. What kind of error will the below code throw when executed?
- TypeError: Assignment to constant variable.
6. What kind of error will the below code throw when executed?
- TypeError: dog is not a function
7. What type of block will allow you to run an erroring function then continue the execution of code after that function is run?
- We can use try…catch blocks with functions that might throw an error to catch that error and continue code execution after that error was thrown
8. What type of error is thrown when a non-existent variable is referenced?
- The ReferenceError object represents an error when a non-existent variable is referenced.
9. When is a JavaScript Error Object thrown?
- The Error object is how JavaScript deals with runtime errors - so at code runtime!
10. When kind of error is thrown when the JavaScript engine attempts to parse code that does not conform to the syntax of the JavaScript language?
- A SyntaxError is thrown when there is an error in the syntax of the executed code.
TDD
1. Identify at least two reasons why developers use TDD.
- Writing tests before code ensures that the code written works.
- Only required code is written.
- TDD helps enforce code modularity.
- Better understanding of what the code should be doing.
2. What are the three steps of the TDD workflow?
3. What does a developer do in the Green step in the TDD workflow?
- Write the minimum amount of code to ensure the tests pass (a passing test will be green).
4. What does a developer do in the Red step in the TDD workflow?
- Write the tests and watch them fail (a failing test is red). It's important to ensure the tests initially fail so that you don't have false positives.
5. What does a developer do in the Refactor step in the TDD workflow?
- Refactor the code you just wrote. Your job is not over when the tests pass! One of the most important things you do as a software developer is to ensure the code you write is easy to maintain and read.
6. What does TDD stand for?


Cars!
Existing Cars
{% for eachCar in allCars %}
{{eachCar.make}}
{% endfor %}
Add a Car to the Database
{% csrf_token %} {{ form.as_p }}
Submit


For the bootstrap css and components, please check the Bootstrap 3
Angular UI Bootstrap, This project does not use bootstrap.js, but use Angular UI Bootstrap written in pure AngularJS, check UI Boostrap and Official Documents
This file's css is generated by LESS files. There are many Variables, Mixins you can use.
Compile, you can use the less.php to output the css.
Check FontAwesome for more details to see how to use and examples
Bootstrap default icons
animate.css is a bunch of cool, fun, and cross-browser animations for you to use in your projects. Great for emphasis, home pages, sliders, and general just-add-water-awesomeness.
Page view transition, This project also used Animate css for ui-view animation, you can use .fade-in, .fade-in-left, .fade-in-right, .fade-in-up, .fade-in-down, .fade-in-right-big, .fade-in-left-big, .fade-in-up-big, .fade-in-down-big
, if you want to use the big animation, you can use a .smooth
class for smoothing animation.
8 default color palettes, build colorful widgets. you can open the less/app.variables.less to config your own colors(@brand-primary, @brand-success, @brand-warning, @brand-danger, @brand-info, @brand-black, @brand-dark, @brand-light
).
Use less file to build your colors, You can use the mixin wariant. use .color-variant
and .font-variant
to build the color scheme, check more details in the css/less/app.colors.less.
.bg-light
.bg-dark
.bg-black
.bg-primary
.bg-info
.bg-success
.bg-warning
.bg-danger
Fix header, use .app-header-fixed
class on ".app" to fixed header.position
Fix aside, use .app-aside-fixed
class on ".app" to fixed aside position.
Fold aside, use .app-aside-folded
class on ".app" to fold aside.
Hbox, use .hbox
and .col
to build column layout. and you can use the .w-lg, .w-md, .w, .w-sm, .w-xs
to fix column width. and use .hbox-auto-sm, .hbox-auto-xs
to disable hbox on small screen.
| Margin | |
| .m | margin: 15px |
| .m-xs | margin: 5px |
| .m-sm | margin: 10px |
| .m-md | margin: 20px |
| .m-lg | margin: 30px |
| .m-n | margin: 0px |
| .m-l | margin-left: 15px |
| .m-l-xs | margin-left: 5px |
| .m-l-sm | margin-left: 10px |
| .m-l-md | margin-left: 20px |
| .m-l-lg | margin-left: 30px |
| .m-l-xl | margin-left: 40px |
| .m-l-xxl | margin-left: 50px |
| .m-l-none | margin-left: 0px |
| .m-l-n | margin-left: -15px |
| .m-l-n-xxs | margin-left: -1px |
| .m-l-n-xs | margin-left: -5px |
| .m-l-n-sm | margin-left: -10px |
| .m-l-n-md | margin-left: -20px |
| .m-l-n-lg | margin-left: -30px |
| .m-l-n-xl | margin-left: -40px |
| .m-l-n-xxl | margin-left: -50px |
| .m-r (margin right) , m-t (margin top) , m-b (margin bottom) have the same classes as the .m-l. | |
| Border | |
| .b-a | border:1px solid @border-color(see app.variables.less) |
| .b-l | border left |
| .b-t | border top |
| .b-r | border right |
| .b-b | border bottom |
| .b-light, .b-dark, .b-primary, .b-success, .b-info, .b-warning, .b-danger, .b-black, .b-white | border with specific color. |
| .b-2x | border width with 2px |
| .b-3x | border width with 3px |
| .no-border | border width: 0 |
| .no-border-xs | border width: 0 on etremely small screen. |
| Radius | |
| .r | border-radius: @border-radius-base |
| .r-l | border-radius: @border-radius-base 0 0 @border-radius-base |
| .r-r | border-radius: 0 @border-radius-base @border-radius-base 0 |
| .r-t | border-radius: @border-radius-base @border-radius-base 0 0 |
| .r-b | border-radius: 0 0 @border-radius-base @border-radius-base |
| .r-2x | radius size: 2 x @border-radius-base |
| .r-3x | radius size: 3 x @border-radius-base |
| Padder and Wrapper | |
| .padder | padding-left: 15px; padding-right: 15px |
| .padder-md | padding-top: 20px; padding-bottom: 20px |
| .padder-lg | padding-top: 30px; padding-bottom: 30px |
| .no-padder | padding: 0 |
| .wrapper | padding: 15px |
| .wrapper-sm | padding: 10px |
| .wrapper-xs | padding: 5px |
| .wrapper-md | padding: 20px |
| .wrapper-lg | padding: 30px |
| .wrapper-xl | padding: 50px |
| Text | |
| .text-u-c | text uppercase |
| .text-l-t | text line through |
| .text-u-l | text under line |
| .text-ellipsis | display text in one line with ellipsis |
| .text-center-xs | center text only on extremely small devices |
| .text-left-xs | align text left only on extremely small devices |
| .text-right-xs | align text right only on extremely small devices |
| Width and Height | |
| .w-xxl | width: 360px |
| .w-xl | width: 320px |
| .w-lg | width: 280px |
| .w-md | width: 240px |
| .w | width: 200px |
| .w-sm | width: 158px |
| .w-xs | width: 90px |
| .w-xxs | width: 60px |
| .w-full | width: 100% |
| .w-auto-xs | width: auto on extremely small screen. |
| .h-full | height: 100% |
| Thumb | |
| .thumb-xl | width: 128px |
| .thumb-lg | width: 96px |
| .thumb-md | width: 64px |
| .thumb | width: 50px |
| .thumb-sm | width: 48px |
| .thumb-xs | width: 34px |
| .thumb-xxs | width: 30px |
| .img-full | width: 100% |
| Avatar | |
| .avatar | circle photo |
| status | status, '.on', '.off', '.busy', '.away' |
| status position | status position, '.left', '.right', '.bottom' |
| Arrow | |
| .arrow | base class |
| .left | left arrow, position:middle |
| .right | right arrow, position:middle |
| .top | top arrow, position:center |
| .bottom | bottom arrow, position:center |
| .pull-left | .top and .bottom arrow with left position |
| .pull-right | .top and .bottom arrow with right position |
| .pull-up | .left and .right arrow with up position |
| .pull-down | .left and .right arrow with down position |
| Item | |
| .item-overlay | overlay the element on an item, default display:none, with '.active' class will show |
| .top | top element on a item element |
| .bottom | bottom element on a item element |
| .center | center element on a item element |
| Button | |
| .btn-rounded | rounded button |
| .btn-icon | icon only button |
| .btn-addon | icon addon, must have a i tag, and can use .pull-left and .pull-right |
| Timeline | |
| .timeline | timeline wrapper class |
| .timeline-center | timeline with center position |
| .tl-item | timeline item |
| .tl-wrap | timeline item wrap |
| .tl-date | timeline date |
| .tl-content | timeline content |
| Streamline | |
| .streamline | streamline class |
| .sl-item | streamline item, you can use .b-l and .b-info, b-danger... class to make it colorful. |
| Hbox | |
| .hbox | display: table |
| .col | display: table-cell |
| .v-middle | vertical align: middle |
| .v-top | vertical align: top |
| .v-bottom | vertical align: bottom |
ui-router for Nested Routing and Nested View, check the official documents
ui-load for lazy loading the js and css files.
angular.module('myModule', ['ui.load']);
uiLoad.load(
['path/style.css', 'path/script.js']
).then(function() {
// loaded succesfully.
}).catch(function() {
// There was some error loading the files.
});
ui-load also used in the ui-router resolve:{}
for lazy loading Angular Directives, Controllers and Services.
ui-jq
Call the jQuery function or plugin specified on the element. check the official documents
The ui-validate
directive makes it very easy to create custom validator expressions. check the official documents
Toggle class when click on the element, attr target
for target element.

Shift element on xs screen, attr target
for target element.

Scroll to element when click, attr value for target element.

Request fullscreen mode for element.

or
All jQuery plugins are depended on ui-jq
, do not need create the Angular Directive for each of the plugin. you can config in the js/app.js Angular Constant JQ_CONFIG
, functionName => pluginPath
, the js and css files are lazy loaded.


There was a problem loading the cards. Possibly the server is down or perhaps there are network issues.
Please wait a bit and try again or start the server.


BCE echoing websocket.
| Initiates a websocket connection. For every received websocket message, sends one empty message and then the received message. The websocket is closed by the server, or when user navigates away.
This is ...
ws1 Websocket


String Matching
问题描述 :
It’s easy to tell if two words are identical – just check the letters. But how do you tell if two words are almost identical? And how close is “almost”?
common letters * 2
—————————–
length(word1) + length(word2)
Thus, for this example, appx(CAPILLARY, MARSUPIAL) = 6 / (9 + 9) = 1/3. Obviously, for any word W appx(W, W) = 1, which is a nice property, while words with no common letters have an appx value of 0.
There are lots of techniques for approximate word matching. One is to determine the best substring match, which is the number of common letters when the words are compared letter-byletter.
The key to this approach is that the words can overlap in any way. For example, consider the words CAPILLARY and MARSUPIAL. One way to compare them is to overlay them:
CAPILLARY
MARSUPIAL
There is only one common letter (A). Better is the following overlay:
CAPILLARY
MARSUPIAL
with two common letters (A and R), but the best is:
CAPILLARY
MARSUPIAL
Which has three common letters (P, I and L).
The approximation measure appx(word1, word2) for two words is given by:
—————————–
length(word1) + length(word2)
Thus, for this example, appx(CAPILLARY, MARSUPIAL) = 6 / (9 + 9) = 1/3. Obviously, for any word W appx(W, W) = 1, which is a nice property, while words with no common letters have an appx value of 0.
输入:
The input for your program will be a series of words, two per line, until the end-of-file flag of -1.
Using the above technique, you are to calculate appx() for the pair of words on the line and print the result.
The words will all be uppercase.
Using the above technique, you are to calculate appx() for the pair of words on the line and print the result.
The words will all be uppercase.
输出:
Print the value for appx() for each pair as a reduced fraction,Fractions reducing to zero or one should have no denominator.
样例输入:
CAR CART TURKEY CHICKEN MONEY POVERTY ROUGH PESKY A A -1
样例输出:
appx(CAR,CART) = 6/7 appx(TURKEY,CHICKEN) = 4/13 appx(MONEY,POVERTY) = 1/3 appx(ROUGH,PESKY) = 0 appx(A,A) = 1
解题代码:
//* @author<EMAIL_ADDRESS>import java.util.*; public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); while(true) { String s1=in.next(); if(s1.equals("-1"))break; String s2=in.next(); int max=0; for(int i=0;i< s1.length();i++) { int count =0; for(int j=0;j< s2.length();j++) { boolean bb=true; if(i+j>=s1.length()) { bb=false; break; } if(!bb)break; if(s1.charAt(i+j)==s2.charAt(j))count++; } if(count>max)max=count; } for(int i=0;i< s2.length();i++) { int count =0; for(int j=0;j< s1.length();j++) { boolean bb=true; if(i+j>=s2.length()) { bb=false; break; } if(!bb)break; if(s2.charAt(i+j)==s1.charAt(j))count++; } if(count>max)max=count; } int total=s1.length()+s2.length(); int sum=max*2; System.out.print("appx("+s1+","+s2+") = "); if(sum==0)System.out.println(0); else if(sum==total)System.out.println(1); else { while(true) { boolean bb=false; for(int i=2;i<=sum;i++) { if(sum%i==0&&total%i==0) { sum/=i; total/=i; bb=true; } } if(!bb)break; } System.out.println(sum+"/"+total); } } } }
(adsbygoogle = window.adsbygoogle || []).push({});
多谢支持！
递归还真是一门学问，学习了
给力的文章，例子也非常好
map[nodes .index][nodes .index] == 0 就是判断不相邻的。这个是可以证明的。
题目需要求解的是最小值，而且没有考虑可能存在环，比如
0 0 0 0 0
1 1 1 1 0
1 0 0 0 0
1 0 1 0 1
1 0 0 0 0
会陷入死循环
这个也是算法导论的习题
因为是要把从字符串s的start位到当前位在hash中重置，修改提交后能accept，但是不修改居然也能accept
排版
太变态了。我用hash居然超时了。这样break掉居然都行啊。。。
这是研发类的题还是算法类？
Java真是解决大数的利器
对，就是把这32位当成一个长度为32的数
不错


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Serves 2
Save time in the kitchen by 'butterflying' chicken breasts to cook quickly with this easy dish from The Hairy Bikers.
To butterfly the chicken breasts, lay them on a board and use a sharp knife to make a cut parallel to the chopping board three-quarters of the way through each breast. Open each chicken breast out so you have two large, thinner chicken breasts.
Place them in a bowl with one tablespoon of the sesame oil, the vegetable oil, soy sauce, garlic and lemon zest and juice. Season with salt and freshly ground black pepper and mix to combine. In a separate bowl, mix the honey with the remaining sesame oil.
Heat a griddle pan over a medium-high heat until smoking then lay the chicken on the griddle and cook for 2-3 minutes on each side, brushing it once or twice with the honey and sesame mixture. When it's done the chicken should be chargrilled on the outside and completely cooked through (the juices should run clear when a skewer is inserted into the thickest part of the chicken). Leave to rest for 2-3 minutes.
Meanwhile, for the rice, heat a wok over a high heat then add the groundnut and one teaspoon of the sesame oil. When the oil starts to shimmer add the eggs and cook, stirring all the time, for 1-2 minutes or until they're scrambled.
Push the eggs to the side of the pan and add a little more sesame oil, the soy sauce, spring onions and peas and cook for one minute then add the rice and season with salt and freshly ground black pepper. Cook, stirring continuously, for 3-4 minutes, or until warmed through. Stir through the coriander.
To serve, spoon the rice onto plates. Cut the chicken on the diagonal into thin strips and place on top of the rice. Top with a wedge of lime.


SPLAT: The SpeX Prism Library Analysis Toolkit¶
SPLAT is a python-based spectral access and analysis package designed to interface with the SpeX Prism Library (SPL), an online repository of over 2000 low-resolution, near-infrared spectra of low-temperature stars and brown dwarfs. It is built on common python packages such as astropy, emcee, matplotlib, numpy, pandas, scipy, and others.
- SPLAT tools allow you to:
- search the SPL for spectral data and source information;
- access the publically-available (published) spectra contained in it;
- compare your own near-infrared spectrum to these data;
- make use of published empirical trends in absolute magnitudes, luminosity, effective temperatures, and others;
- perform basic spectral analyses such as spectral classification, gravity classification, index measurement, spectrophotometry, reddening, blended light analysis, and basic math operations;
- access atmosphere models and perform fits to spectral data;
- transform observable to physical parameters using evolutionary models;
- simulate very low mass star and brown dwarf populations; and
- plot, tabulate and publish your results.
Note that many of these features are currently under development.
Installation and Dependencies¶
SPLAT is best forked from the github site https://github.com/aburgasser/splat. which is updated on a regular basis. You may also try to install splat using pip, but this is not yet fully supported.
Once you’ve downloaded the code and data, you will need to copy the file .splat_access
into your home directory (this is your access key) and add the SPLAT top-level directory to the environment variables SPLAT_PATH
, PYTHONPATH
or your system PATH
. More detailed instructions are on the installation page.
- SPLAT has core dependencies on the following packages:
SPLAT has not yet reached v1.0, so bugs are common. Please help us squish them by sending bug reports to<EMAIL_ADDRESS>or start an issue on the github site.
Using SPLAT¶
- SPLAT is organized into a series of modules based on core functionalities:
- splat.core: core functionalities, including index measurement, database access and classification
- splat.citations: biblographic/bibtex routines
- splat.database: access the spectral and source databases, as well as online resources through astroquery
- splat.empirical: empirical conversion relations
- splat.evolve: access to evolutionary models
- splat.model: access to spectral models and model-fitting routines
- splat.photometry: spectrophotometry routines and filter access
- splat.plot: plotting and visualization routines
- splat.simulate: population simulation routines
- splat.utilities: additional routines for general analysis
- splat.web: SPLAT’s web interface
SPLAT has been tested on both Python 2.7 and 3.5, and is best used in the ipython or ipython notebook; all of the necessary data is included in the github package, so you don’t need to be online to run most programs.
Here are some examples:
- The best way to read in a spectrum is to use getSpectrum(), which takes a number of search keywords and
returns a list of Spectrum objects:
>>> import splat
>>> splist = splat.getSpectrum(shortname='0415-0935')
>>> splist = splat.getSpectrum(young=True)
>>> splist = splat.getSpectrum(spt=['M7','L5'],jmag=[14.,99.])
In each case, splist is a list of Spectrum objects, each a container of various aspects of each spectrum and its source properties. For example, selecting the first spectrum,
>>> sp = splist[0]
sp.wave
gives the wavelengths of this spectrum, sp.flux
the flux values, and sp.noise
the
flux uncertainty. A summary of the Spectrum object can be accessed using sp.info()
.
You can also read in your own spectrum by passing a filename
>>> sp = splat.Spectrum(filename='PATH_TO/myspectrum.fits')
Both fits and ascii (tab or csv) data formats are supported, but files must conform to the data format standard:
- column 1: wavelength, assumed in microns
- column 2: flux in f_lambda units
- column 3: (optional) flux uncertainty in f_lambda units.
- To flux calibrate the spectrum, use the Spectrum object’s built in fluxCalibrate() method:
>>> sp = splat.getSpectrum(shortname='0415-0935')[0]
>>> sp.fluxCalibrate('2MASS J',14.0)
- To display the spectrum, use the Spectrum object’s plot() function
>>> sp.plot()
or the splat.plot routine plotSpectrum() :
>>> import splat.plot as splot
>>> splot.plotSpectrum(sp)
You can save your spectrum by adding a filename:
>>> splot.plotSpectrum(sp,file='spectrum.pdf')
You can also compare multiple spectra:
>>> sp1 = splat.getSpectrum(shortname='0415-0935')[0]
>>> sp2 = splat.getSpectrum(shortname='1217-0311')[0]
>>> splot.plotSpectrum(sp1,sp2,colors=['black','red'])
plotSpectrum() and related routines have many extras to label features, plot uncertainties, indicate telluric absorption regions, make multi-panel and multi-page plots of lists of spectra, plot batches of spectra, etc. Be sure to look through the splat.plot subpackage for more details.
SPLAT’s primary purpose is to allow the analysis of ultracool dwarf spectra.
- To measure spectral indices, use measureIndex() or measureIndexSet():
>>> sp = splat.getSpectrum(shortname='0415-0935')[0]
>>> value, error = splat.measureIndex(sp,[1.14,1.165],[1.21,1.235],method='integrate')
>>> indices = splat.measureIndexSet(sp,set='testi')
The last line returns a dictionary, whose value,error pair can be accessed by the name of the index:
>>> print(indices['sH2O-J']) # returns value, error
- You can also determine the gravity classification of a source following Allers & Liu (2013) using classifyGravity():
>>> sp = splat.getSpectrum(young=True, lucky=True)[0]
>>> print(splat.classifyGravity(sp)) # returned 'VL-G'
- To classify a spectrum, use the various classifyByXXX methods:
>>> sp = splat.getSpectrum(shortname='0415-0935')[0]
>>> spt,unc = splat.classifyByIndex(sp,set='burgasser')
>>> spt,unc = splat.classifyByStandard(sp,spt=['T5','T9'])
>>> result = splat.classifyByTemplate(sp,spt=['T6','T9'],nbest=5)
The last line returns a dictionary containing the best 5 template matches to the Spectrum sp
.
- To compare a spectrum to another spectrum or a model, use compareSpectra() :
>>> import splat.model as spmod
>>> mdl = spmod.loadModel(teff=720,logg=4.8,set='btsettl') # loads a BTSettl08 model
>>> sp = splat.getSpectrum(shortname='0415-0935')[0]
>>> chi,scale = splat.compareSpectra(sp,mdl)
>>> mdl.scale(scale)
>>> splat.plotSpectrum(sp,mdl,colors=['black','red'],legend=[sp.name,mdl.name])
You can shortcut the last three lines using the plot
keyword:
>>> chi,scale = splat.compareSpectra(sp,mdl,plot=True)
# There are also codes still in development to fit models directly to spectra: `modelFitGrid()`_, modelFitMCMC(), and `modelFitEMCEE()`_:
>>> import splat.model as spmod
>>> sp = splat.getSpectrum(shortname='0415-0935')[0]
>>> sp.fluxCalibrate('2MASS J',14.49,absolute=True)
>>> nbest = 5
>>> result1 = splat.modelFitGrid(sp,set='btsettl')
>>> result2 = splat.modelFitMCMC(sp,set='btsettl',initial_guess=[800,5.0,0.],nsamples=300,step_sizes=[50.,0.5,0.])
>>> result3 = splat.modelFitEMCEE(sp,set='btsettl',initial_guess=[800,5.0,0.],nwalkers=12,nsamples=500)
The outputs of all of these fitting functions is a dictionary or list of dictionaries containing the parameters of the best-fitting models; there are also several diagnostic plots produced depending on the routine. View the model fitting page for more details.
All of these routines have many options worth exploring, and which are (increasingly) documented on this website. If there are capabilities you need, please suggest them to<EMAIL_ADDRESS>or note it in the “Issues” link on our github site.
Acknowledgements¶
SPLAT is an experimental, collaborative project of research students in the UCSD Cool Star Lab, aimed at teaching students how to do research by building their own analysis tools. Contributors to SPLAT have included Christian Aganze, Jessica Birky, Daniella Bardalez Gagliuffi, Adam Burgasser (PI), Caleb Choban, Andrew Davis, Ivanna Escala, Joshua Hazlett, Carolina Herrara Hernandez, Elizabeth Moreno Hilario, Aishwarya Iyer, Yuhui Jin, Mike Lopez, Dorsa Majidi, Diego Octavio Talavera Maya, Alex Mendez, Gretel Mercado, Niana Mohammed, Johnny Parra, Maitrayee Sahi, Adrian Suarez, Melisa Tallis, Tomoki Tamiya, Chris Theissen, and Russell van Linge.
This project is supported by the National Aeronautics and Space Administration under Grant No. NNX15AI75G.
Contents
Search


{% extends "base.html" %} {% block content %} {% if calibrated %}
Make sure that the scale is empty before you visit this page.
Now place 10Kg on the scale and press "Save"


KIT
For Garage Owners
Register a new membership
person
email
lock
lock
contact_phone
location_on
Get from Maps
I read and agree to the
terms of usage
.

Select Your Location
Marker status:
Click and drag the marker.
Current position:
Closest matching address:
×
Set Location


| open | ft-output.html | Open the form we want to use for our tests. | |
| assertTitle | Simple output form | Ensure that we have the correct form. | |
| waitForModelReady | Wait for the XForms processor to initialise. | ||
| assertXFormsControlValue | output-ref | Hello | Check that the specified control has its value set. |
| assertXFormsControlValue | output-value | Hello | Check that the specified control has its value set. |
| assertXFormsControlValue | output-value-concat | Hello | Check that the specified control has its value set. |
| assertXFormsControlValue | output-value-concat-context | Hello | Check that the specified control has its value set. |


Logs
When it comes to troubleshooting issues in the Gluu Server--from service hiccups to outages--your server logs are the best place to gather relevant information.
Connectivity Issues?
DNS names not resolving!
It is possible that even after configuring everything there is a DNS
resolve error in Gluu Server.
The reason is the DNS
used inside the chroot container; the dns
used by the container is the Google DNS servers
and the DNS
for the host OS is not used. Therefore to fix this issue:
- Change the DNS inside the container by editing the
/etc/resolv.conf
file and adding the DNS used by your organization
Locked Out?
Forgot the admin password!
Oh no, its been a few days since you booted your test Gluu Server, and
you can't remember the admin password. No worries, the Gluu Server
stores this information in the file
/install/community-edition-setup/setup.properties.last
under the
property ldapPass
. Retrieve the data using this command:
# grep ldapPass= /install/community-edition-setup/*.last
Of course for a production installation, you should remove this file. You wouldn't want to have your admin password sitting on the filesystem!
Add admin for Gluu server
Please follow these steps to restore your Gluu admin account (you will probably need to substitute actual port, bind names and hostnames with ones used by your installation):
1) Login into Gluu's chroot environment with the command below:
# service gluu-server login
2) Run this command:
#/opt/opendj/bin/ldapsearch -p 1636 -Z -X -D 'cn=directory manager' -w 'YOUR_BIND_PASSWORD' -b o=gluu gluuGroupType=gluuManagerGroup 1.1
and remember the displayed dn of the Gluu Manager Group for future use.
3) Run this command:
# /opt/opendj/bin/ldapsearch -p 1636 -Z -X -D 'cn=directory manager' -w 'YOUR_BIND_PASSWORD' -b o=gluu ou=people 1.1
and remember the displayed dn of the People ou for future use.
4) While staying in the chrooted environment, create the file
~/add_user.ldif
using your favorite text editor, and copy the
following lines to it:
dn: inum=tempadmin,ou=people,o=@!F9CC.D762.4778.1032!0001!2C72.BB87,o=gluu
changetype: add
uid: tempadmin
objectClass: gluuPerson
objectClass: top
givenName: tempadmin
sn: tempadmin
inum: tempadmin
gluuStatus: active
userPassword: 1q2w3e
Please note the string's segment marked with bold: you will have to substitute it with dn of your own People ou which you've acquired in step 3).
5) Run this command:
# /opt/opendj/bin/ldapmodify -p 1636 -Z -X -D 'cn=directory manager' -w 'YOUR_BIND_PASSWORD' -f ~/add_user.ldif
This will create new user tempadmin with attributes provided via file created in step 4).
6) Now create file add_2_group.ldif
in your home ("~/") directory and
copy the following lines to it:
dn: inum=@!F9CC.D762.4778.1032!0001!2C72.BB87!0003!60B7,ou=groups,o=@!f9cc.d762.4778.1032!0001!2c72.bb87,o=gluu
changetype: modify
add: member
member: inum=tempadmin,ou=people,o=@!f9cc.d762.4778.1032!0001!2c72.bb87,o=gluu
Again, please note the strings' segment marked with bold: you will have to substitute contents of the "dn:" string with dn of your own Gluu Manager Group which you've acquired in step 2), and for "member:" string you will have to use the dn of tempadmin user (the one you already specified in the 1st line of the file in step 4).
7) Run this command:
# /opt/opendj/bin/ldapmodify -p 1636 -Z -X -D 'cn=directory manager' -w 'YOUR_BIND_PASSWORD' -f ~/add_2_group.ldif
This will add tempadmin user to the IdP managers group and you can then login and assign another user to act as admin.
Revert Authentication Method
It is not unlikely that you will lock yourself out of Gluu Server while testing the authentication script, if there is any problem in it. In such a case the following method can be used to revert back the older authentication method.
- Run the following command to collect the
inum
for the Gluu Server installation.
/opt/opendj/bin/ldapsearch -h localhost -p 1389 -D "cn=directory
manager" -j ~/.pw -b "ou=appliances,o=gluu" -s one "objectclass=*"
oxAuthenticationMode
- Create a
LDIF
file with the contents below:
dn: inum=@!1E3B.F133.14FA.5062!0002!4B66.CF9C,ou=appliances,o=gluu
changetype: modify
replace: oxAuthenticationMode
oxAuthenticationMode: internal
As an example, we shall call this file changeAuth.ldif
.
Note: Replace the inum
from the example above with the inum
of the Gluu Server from the ldapsearch
command.
- Replace the the authentication mode using
ldapmodify
command.
`/opt/opendj/bin/ldapmodify -p 1636 -Z -X -D 'cn=directory manager' -w 'YOUR_BIND_PASSWORD' -f ~/changeAuth.ldif
No admin access after Cache Refresh?
Add the password for your admin account to ~/.pw
and then use the commands below to add yourself as an admin.
# set this to your actual user name
export newgluuadmin='myusername'
# this is the file that will hold the info to be imported
export ldiffile='addManagers.ldif'
# run this and verify that the output is for your account
/opt/opendj/bin/ldapsearch -h localhost -p 1636 -D "cn=directory manager" -j ~/.pw -Z -X -b "o=gluu" "uid=$newgluuadmin" uid givenName sn cn
dn: inum=@!134D.3C3D.796E.FECE!0001!E022.CC3C!0000!A8F2.DE1E.D7FB,ou=people,o=@!134D.
3C3D.796E.FECE!0001!E022.CC3C,o=gluu
uid: myusername
givenName: John
sn: Doe
cn: John Doe
Now you can run these commands to make the file above:
head -n1 /opt/opendj/ldif/groups.ldif > $ldiffile
echo 'changetype: modify' >> $ldiffile
echo 'add: member' >> $ldiffile
echo "member: $(/opt/opendj/bin/ldapsearch -h localhost -p 1636 -D "cn=directory manager" -j ~/.pw -Z -X -b "o=gluu" "uid=$newgluuadmin" uid givenName sn cn |grep -A1 dn |cut -d ' ' -f 2- | sed 'N;s/\n//')" >> $ldiffile
The resulting ldif will look like this:
dn: inum=@!134D.3C3D.796E.FECE!0001!E022.CC3C!0003!60B7,ou=groups,o=@!134D.3C3D.796E.FECE!0001!E022.CC3C,o=gluu
changetype: modify
add: member
member: inum=@!134D.3C3D.796E.FECE!0001!E022.CC3C!0000!A8F2.DE1E.D7FB,ou=people,o=@!134D.3C3D.796E.FECE!0001!E022.CC3C,o=gluu
Once the ldif looks right, run this to grant your account admin rights in Gluu:
/opt/opendj/bin/ldapmodify -h localhost -p 1636 -D "cn=directory manager" -j ~/.pw -Z -X -f addManagers.ldif
Log into the web interface and pick up where you left off :)
Lock users?
Lock Account using Custom Scripts
This section will help in locking a user account using custom scripts in solutions where it is mandatory to limit access trials to a specific number i.e. lock user account if the user fails to produce correct password 3 times.
Gluu Server makes it easy by using a single attribute to enable/disable user. The gluuStatus
attribute
is used to enable/disable the user. This attribute holds the value acive/inactive
and setting gluuStatus=inactive
any user can be locked from Gluu Server.
The following snippet will help you find the user by UID and set the gluuStatus
attribute to inactive.
from org.xdi.oxauth.service import UserService
...
# Find user entry by UID
user_uid = credentials.getUser().getUserId()
find_user_by_uid = userService.getUser(user_uid)
# Update user entry and persist it
find_user_by_uid.setAttribute("gluuStatus", "inactive")
userService.updateUser(find_user_by_uid)
The users can be activated again by clicking on the update button in oxTrust.


|
SnuPL Compiler
0.1
|
label class More...
#include <ir.h>
Public Member Functions | |
constructors/destructors | |
| CTacLabel (const string label) | |
| constructor More... | |
| virtual | ~CTacLabel (void) |
| destructor More... | |
properties | |
| const string | GetLabel (void) const |
| return the label More... | |
| int | AddReference (int ofs) |
| increase/decrease the reference counter More... | |
| int | GetRefCnt (void) const |
| read the reference counter More... | |
output | |
| virtual ostream & | print (ostream &out, int indent=0) const |
| print the node to an output stream More... | |
| Public Member Functions inherited from CTacInstr | |
| CTacInstr (EOperation op, CTac *dst, CTacAddr *src1=NULL, CTacAddr *src2=NULL) | |
| constructor More... | |
| CTacInstr (string name) | |
| constructor (for debugging purposes) More... | |
| virtual | ~CTacInstr (void) |
| destructor More... | |
| unsigned int | GetId (void) const |
| return the unique instruction id More... | |
| bool | IsBranch (void) const |
| returns true if this is a branching instruction More... | |
| EOperation | GetOperation (void) const |
| return the operation More... | |
| unsigned int | GetNumSrc (void) const |
| return the number of source operands More... | |
| CTacAddr * | GetSrc (int index) const |
| return source index (index = 1/2) More... | |
| CTac * | GetDest (void) const |
| return the destination More... | |
| Public Member Functions inherited from CTac | |
| CTac (void) | |
| virtual | ~CTac (void) |
Protected Attributes | |
| const string | _label |
| label More... | |
| int | _refcnt |
| reference counter More... | |
| Protected Attributes inherited from CTacInstr | |
| unsigned int | _id |
| unique instruction id More... | |
| EOperation | _op |
| opcode More... | |
| string | _name |
| name (for debugging purposes) More... | |
| CTacAddr * | _src1 |
| source operand 1 More... | |
| CTacAddr * | _src2 |
| source operand 2 More... | |
| CTac * | _dst |
| destination operand More... | |
Additional Inherited Members | |
| Protected Member Functions inherited from CTacInstr | |
| void | SetId (int unsigned id) |
| set the instruction id (unique per procedure) More... | |
| void | SetDest (CTac *dst) |
| set the destination operand to dst More... | |
| CTacLabel::CTacLabel | ( | const string | label | ) |
| int CTacLabel::AddReference | ( | int | ofs | ) |
| const string CTacLabel::GetLabel | ( | void | ) | const |
| int CTacLabel::GetRefCnt | ( | void | ) | const |
|
virtual |


simulateCyclopsData
generates a simulated large, sparse data set for use by fitCyclopsSimulation
.
simulateCyclopsData(nstrata = 200, nrows = 10000, ncovars = 20, effectSizeSd = 1, zeroEffectSizeProp = 0.9, eCovarsPerRow = ncovars/100, model = "survival")
| nstrata | Numeric: Number of strata |
|---|---|
| nrows | Numeric: Number of observation rows |
| ncovars | Numeric: Number of covariates |
| effectSizeSd | Numeric: Standard derivation of the non-zero simulated regression coefficients |
| zeroEffectSizeProp | Numeric: Expected proportion of zero effect size |
| eCovarsPerRow | Number: Effective number of non-zero covariates per data row |
| model | String: Simulation model. Choices are: |
A simulated data set
#Generate some simulated data: sim <- simulateCyclopsData(nstrata = 1, nrows = 1000, ncovars = 2, eCovarsPerRow = 0.5, model = "poisson")#> Sparseness = 75.45 %cyclopsData <- convertToCyclopsData(sim$outcomes, sim$covariates, modelType = "pr", addIntercept = TRUE)#> Sorting covariates by covariateId and rowId#Define the prior and control objects to use cross-validation for finding the #optimal hyperparameter: prior <- createPrior("laplace", exclude = 0, useCrossValidation = TRUE) control <- createControl(cvType = "auto", noiseLevel = "quiet") #Fit the model fit <- fitCyclopsModel(cyclopsData,prior = prior, control = control)#> Using cross-validation selector type byRow #> Performing 10-fold cross-validation [seed =<PHONE_NUMBER>] with data partitions of sizes 100 100 100 100 100 100 100 100 100 100 #> Using 1 thread(s) #> Starting var = 0.2455 (default) #> Running at Laplace(2.85423) None Grid-point #1 at 0.2455 Fold #1 Rep #1 pred log like = -208.19 #> Running at Laplace(2.85423) None Grid-point #1 at 0.2455 Fold #2 Rep #1 pred log like = -218.354 #> Running at Laplace(2.85423) None Grid-point #1 at 0.2455 Fold #3 Rep #1 pred log like = -208.694 #> Running at Laplace(2.85423) None Grid-point #1 at 0.2455 Fold #4 Rep #1 pred log like = -200.976 #> Running at Laplace(2.85423) None Grid-point #1 at 0.2455 Fold #5 Rep #1 pred log like = -220.347 #> Running at Laplace(2.85423) None Grid-point #1 at 0.2455 Fold #6 Rep #1 pred log like = -204.021 #> Running at Laplace(2.85423) None Grid-point #1 at 0.2455 Fold #7 Rep #1 pred log like = -212.409 #> Running at Laplace(2.85423) None Grid-point #1 at 0.2455 Fold #8 Rep #1 pred log like = -211.977 #> Running at Laplace(2.85423) None Grid-point #1 at 0.2455 Fold #9 Rep #1 pred log like = -206.164 #> Running at Laplace(2.85423) None Grid-point #1 at 0.2455 Fold #10 Rep #1 pred log like = -211.902 #> AvgPred = -210.303 with stdev = 5.7109 #> Completed at 0.2455 #> Next point at 2.455 with value 0 and continue = 1 #> search[ 0.2455 ] = -210.303(5.7109) #> #> Running at Laplace(0.902587) None Grid-point #2 at 2.455 Fold #1 Rep #1 pred log like = -208.194 #> Running at Laplace(0.902587) None Grid-point #2 at 2.455 Fold #2 Rep #1 pred log like = -218.356 #> Running at Laplace(0.902587) None Grid-point #2 at 2.455 Fold #3 Rep #1 pred log like = -208.7 #> Running at Laplace(0.902587) None Grid-point #2 at 2.455 Fold #4 Rep #1 pred log like = -200.992 #> Running at Laplace(0.902587) None Grid-point #2 at 2.455 Fold #5 Rep #1 pred log like = -220.37 #> Running at Laplace(0.902587) None Grid-point #2 at 2.455 Fold #6 Rep #1 pred log like = -204.11 #> Running at Laplace(0.902587) None Grid-point #2 at 2.455 Fold #7 Rep #1 pred log like = -212.42 #> Running at Laplace(0.902587) None Grid-point #2 at 2.455 Fold #8 Rep #1 pred log like = -211.991 #> Running at Laplace(0.902587) None Grid-point #2 at 2.455 Fold #9 Rep #1 pred log like = -206.184 #> Running at Laplace(0.902587) None Grid-point #2 at 2.455 Fold #10 Rep #1 pred log like = -211.949 #> AvgPred = -210.327 with stdev = 5.70313 #> Completed at 2.455 #> Next point at 0.02455 with value 0 and continue = 1 #> search[ 0.2455 ] = -210.303(5.7109) #> search[ 2.455 ] = -210.327(5.70313) #> #> Running at Laplace(9.02587) None Grid-point #3 at 0.02455 Fold #1 Rep #1 pred log like = -208.201 #> Running at Laplace(9.02587) None Grid-point #3 at 0.02455 Fold #2 Rep #1 pred log like = -218.372 #> Running at Laplace(9.02587) None Grid-point #3 at 0.02455 Fold #3 Rep #1 pred log like = -208.675 #> Running at Laplace(9.02587) None Grid-point #3 at 0.02455 Fold #4 Rep #1 pred log like = -200.949 #> Running at Laplace(9.02587) None Grid-point #3 at 0.02455 Fold #5 Rep #1 pred log like = -220.301 #> Running at Laplace(9.02587) None Grid-point #3 at 0.02455 Fold #6 Rep #1 pred log like = -203.746 #> Running at Laplace(9.02587) None Grid-point #3 at 0.02455 Fold #7 Rep #1 pred log like = -212.394 #> Running at Laplace(9.02587) None Grid-point #3 at 0.02455 Fold #8 Rep #1 pred log like = -211.894 #> Running at Laplace(9.02587) None Grid-point #3 at 0.02455 Fold #9 Rep #1 pred log like = -206.118 #> Running at Laplace(9.02587) None Grid-point #3 at 0.02455 Fold #10 Rep #1 pred log like = -211.761 #> AvgPred = -210.241 with stdev = 5.73701 #> Completed at 0.02455 #> Next point at 0.002455 with value 0 and continue = 1 #> search[ 0.02455 ] = -210.241(5.73701) #> search[ 0.2455 ] = -210.303(5.7109) #> search[ 2.455 ] = -210.327(5.70313) #> #> Running at Laplace(28.5423) None Grid-point #4 at 0.002455 Fold #1 Rep #1 pred log like = -208.272 #> Running at Laplace(28.5423) None Grid-point #4 at 0.002455 Fold #2 Rep #1 pred log like = -218.423 #> Running at Laplace(28.5423) None Grid-point #4 at 0.002455 Fold #3 Rep #1 pred log like = -208.646 #> Running at Laplace(28.5423) None Grid-point #4 at 0.002455 Fold #4 Rep #1 pred log like = -200.942 #> Running at Laplace(28.5423) None Grid-point #4 at 0.002455 Fold #5 Rep #1 pred log like = -220.191 #> Running at Laplace(28.5423) None Grid-point #4 at 0.002455 Fold #6 Rep #1 pred log like = -203.071 #> Running at Laplace(28.5423) None Grid-point #4 at 0.002455 Fold #7 Rep #1 pred log like = -212.461 #> Running at Laplace(28.5423) None Grid-point #4 at 0.002455 Fold #8 Rep #1 pred log like = -211.551 #> Running at Laplace(28.5423) None Grid-point #4 at 0.002455 Fold #9 Rep #1 pred log like = -206.167 #> Running at Laplace(28.5423) None Grid-point #4 at 0.002455 Fold #10 Rep #1 pred log like = -211.515 #> AvgPred = -210.124 with stdev = 5.78769 #> Completed at 0.002455 #> Next point at 0.0002455 with value 0 and continue = 1 #> search[ 0.002455 ] = -210.124(5.78769) #> search[ 0.02455 ] = -210.241(5.73701) #> search[ 0.2455 ] = -210.303(5.7109) #> search[ 2.455 ] = -210.327(5.70313) #> #> Running at Laplace(90.2587) None Grid-point #5 at 0.0002455 Fold #1 Rep #1 pred log like = -208.272 #> Running at Laplace(90.2587) None Grid-point #5 at 0.0002455 Fold #2 Rep #1 pred log like = -218.423 #> Running at Laplace(90.2587) None Grid-point #5 at 0.0002455 Fold #3 Rep #1 pred log like = -208.646 #> Running at Laplace(90.2587) None Grid-point #5 at 0.0002455 Fold #4 Rep #1 pred log like = -200.942 #> Running at Laplace(90.2587) None Grid-point #5 at 0.0002455 Fold #5 Rep #1 pred log like = -220.187 #> Running at Laplace(90.2587) None Grid-point #5 at 0.0002455 Fold #6 Rep #1 pred log like = -202.726 #> Running at Laplace(90.2587) None Grid-point #5 at 0.0002455 Fold #7 Rep #1 pred log like = -212.461 #> Running at Laplace(90.2587) None Grid-point #5 at 0.0002455 Fold #8 Rep #1 pred log like = -211.551 #> Running at Laplace(90.2587) None Grid-point #5 at 0.0002455 Fold #9 Rep #1 pred log like = -206.167 #> Running at Laplace(90.2587) None Grid-point #5 at 0.0002455 Fold #10 Rep #1 pred log like = -211.515 #> AvgPred = -210.089 with stdev = 5.82972 #> Completed at 0.0002455 #> Next point at 2.455e-005 with value 0 and continue = 1 #> search[ 0.0002455 ] = -210.089(5.82972) #> search[ 0.002455 ] = -210.124(5.78769) #> search[ 0.02455 ] = -210.241(5.73701) #> search[ 0.2455 ] = -210.303(5.7109) #> search[ 2.455 ] = -210.327(5.70313) #> #> Running at Laplace(285.423) None Grid-point #6 at 2.455e-005 Fold #1 Rep #1 pred log like = -208.272 #> Running at Laplace(285.423) None Grid-point #6 at 2.455e-005 Fold #2 Rep #1 pred log like = -218.423 #> Running at Laplace(285.423) None Grid-point #6 at 2.455e-005 Fold #3 Rep #1 pred log like = -208.646 #> Running at Laplace(285.423) None Grid-point #6 at 2.455e-005 Fold #4 Rep #1 pred log like = -200.942 #> Running at Laplace(285.423) None Grid-point #6 at 2.455e-005 Fold #5 Rep #1 pred log like = -220.187 #> Running at Laplace(285.423) None Grid-point #6 at 2.455e-005 Fold #6 Rep #1 pred log like = -202.726 #> Running at Laplace(285.423) None Grid-point #6 at 2.455e-005 Fold #7 Rep #1 pred log like = -212.461 #> Running at Laplace(285.423) None Grid-point #6 at 2.455e-005 Fold #8 Rep #1 pred log like = -211.551 #> Running at Laplace(285.423) None Grid-point #6 at 2.455e-005 Fold #9 Rep #1 pred log like = -206.167 #> Running at Laplace(285.423) None Grid-point #6 at 2.455e-005 Fold #10 Rep #1 pred log like = -211.515 #> AvgPred = -210.089 with stdev = 5.82972 #> Completed at 2.455e-005 #> Next point at 7.60222e-010 with value -209.989 and continue = 0 #> search[ 2.455e-005 ] = -210.089(5.82972) #> search[ 0.0002455 ] = -210.089(5.82972) #> search[ 0.002455 ] = -210.124(5.78769) #> search[ 0.02455 ] = -210.241(5.73701) #> search[ 0.2455 ] = -210.303(5.7109) #> search[ 2.455 ] = -210.327(5.70313) #> #> #> Maximum predicted log likelihood (-209.989) estimated at: #> 7.60222e-010 (variance) #> 51291.4 (lambda) #> #> Fitting model at optimal hyperparameter #> Using prior: Laplace(51291.4) None#> [1] 7.602223e-10#Extract the current log-likelihood, and coefficients logLik(fit)#> 'log Lik.' -2099.802 (df=3)coef(fit)#> (Intercept) 1 2 #> -3.80275 0.00000 0.00000#We can only retrieve the confidence interval for unregularized coefficients: confint(fit, c(0))#> Using 1 thread(s)#> covariate 2.5 % 97.5 % evaluations #> [1,] 0 -3.829242 -3.776476 24


'Upwave' <https://www.upwave.io/> is a task management app organising tasks on boards and cards. 'upwaver' is a wrapper around the 'Upwave' API <https://upwavehq.github.io/api/> that allows listing and updating those boards and cards.
| Version: | 1.1.0 |
| Imports: | assertthat, httr, rjson, XLConnect |
| Suggests: | testthat, knitr, rmarkdown |
| Published: | 2018-04-24 |
| Author: | Adrian Staempfli, Christoph Strauss, Fabian Leuthold, Michael Schmid |
| Maintainer: | Adrian Staempfli <adrian.staempfli at fhsg.ch> |
| License: | GPL-3 |
| NeedsCompilation: | no |
| Materials: | README NEWS |
| CRAN checks: | upwaver results |
| Reference manual: | upwaver.pdf |
| Vignettes: |
upwaver |
| Package source: | upwaver_1.1.0.tar.gz |
| Windows binaries: | r-devel: upwaver_1.1.0.zip, r-release: upwaver_1.1.0.zip, r-oldrel: upwaver_1.1.0.zip |
| OS X binaries: | r-release: upwaver_1.1.0.tgz, r-oldrel: upwaver_1.1.0.tgz |
| Old sources: | upwaver archive |
Please use the canonical form https://CRAN.R-project.org/package=upwaver to link to this page.


AtomPostButton performs AJAX Post Operation when clicked. AtomPostButton also supports confirmation, if set to true, user will be alerted and only after user's confirmation, post activity will be performed. As usual, this control has "next" action set, that will be performed after successful post operation.
In order to give more flexibility, post operation will be performed using postData property of button, if postData is not set, than data property will be posted. This is sometime useful in case when we want to send only "id" of object instead of posting whole object for operations like delete, archive etc.
If postUrl property of AtomPostButton is not set, AtomPostButon will simply act as AtomButton and execute next action event. This will not post data to same page url.
In this example, we have added a button in every row, and we have added postUrl and postData properties. if postData is not specified, current inherited data property will be posted to the postUrl. postData is useful when we want to send only part of data, for example, only primary key of the object.
While executing this example, you can check in network section in debugging, what will be posted. However, we do not have server side implementation, so no action will be taken. However if the operation on server side was successful, next action set will be invoked, that will be, list will refresh its contents.
If you use AtomDeleteButton, confirm is automatically set to true, so it will always confirm the user before executing the action.
Difference between Form Post and AtomPostButton: AtomPostButton does not do any validation on data, if you want to perform validation, you must use AtomForm control along with input[type=submit].


Max of two integers
Write a lambda expression that accepts two integer arguments and returns max of them.
Try not to use the Math library.
Solution format. Submit your lambda expression in any valid format with ; on the end.
Examples: (x, y) -> x + y; (x) -> { return x; };
Sample Input:
4 3
Sample Output:
4
Memory limit: 256 MB
Time limit: 8 seconds
Caution
You may see errors in your code or in execution results because of missing context. Don't mind those; simply write your solution and click Check.
Show topic summary


{% extends "layouts/base.html" %}
{% block title %} Presentation {% endblock %}
{% block stylesheets %}{% endblock stylesheets %}
{% block content %}
Mental health is a tricky topic, and while it is good to know your emotions, sometimes you need more help. Want more resoures?
"NAMI is the National Alliance on Mental Illness, the nation’s largest grassroots mental health organization dedicated to building better lives for the millions of Americans affected by mental illness."
Visit Site"With Noisli you can mix and match different sounds in order to create your perfect sound environment."
Visit Site"Headspace has one mission: to improve the health and happiness of the world. "
Visit Site"MentalHealth.gov provides one-stop access to U.S. government mental health and mental health problems information."
Visit Site"BetterHelp offers access to licensed, trained, experienced, and accredited psychologists (PhD / PsyD), marriage and family therapists (LMFT), clinical social workers (LCSW / LMSW), and board licensed professional counselors (LPC)."
Visit Site"Through Half of Us, mtvU and The Jed Foundation aim to initiate a public dialogue to raise awareness about the prevalence of mental health issues and connect students to the appropriate resources to get help."
Visit Site


The Ruby developers know and hear a lot of buzz about RSpec BDD framework. The RSpec specifications code is so easy to read, but for my it is often hard to write. So I intend to produce a small cheat-sheet for RSpec syntax for myself.
Most of it come from the RSpec Book in rather unusual way. As a RSpec itself (unfortunately not runnable for now).
Please feel free to use it in any way you want and correct the mistakes.
So here we go:


 The task is a typical regression problem, where we want to use contextual caractheristics of the houses to find out a trend in the price estimation.
The dataset is the well-known Boston Housing Dataset. it consists of price of houses in various places in Boston. Alongside with price, the dataset also provide information here described:
If you want to try out this experiment, think of being a real estate agent. As an agent, customers come to you for advices on the sale or purchase of their home. Of course, to understand what is the best price for their home, you base on a set of parameters and characteristics of the house itself or similar houses.
In the first hypothesis, think of the task of estimating the cost of the house for one of your customers: you fill in the characteristics of the house which the customer gave to you. Well, the system will use contextual market information and the information you filled in, to compute an estimate as accurate as possible. In the second case, to ascertain the validity of the estimate, you can check how this was computed by comparing the price at which similar houses were sold.
If you want instead to feed our prediction model, so our model could learn from new sales episodes, assume to bring back the houses you sold. Over time the system will learn the new trends and will be able to adapt its predctions to the current market.


| Board | Subject | Training System | Start Date | End Date | Candidate | |
| $certificate.board | $certificate.subject | $certificate.trainingSystem | $certificate.startDate | $certificate.endDate | $certificate.candidate | Edit || Delete |
| Username | Password | Role | |
| $account.username | $account.password | $account.role | Edit || Delete |


| Publish | |||
|---|---|---|---|
| Subscribe |
4 Loans
6
7
8
9
|
3 Accounts
1
2
3
|
2 Customer
4
5
|
|
4 Accounts
1
4
6
8
|
6
8
|
1
|
4
|
|
1 Loans
5
|
5
|
Accounts Accounts ServicePublished: 3 Subscribed: 4 |
||||
|
Customer Service
|
4
Customer Created
|
Accounts Service
|
1 Account Created
|
Accounts Service
|
|
Loans Service
|
6
Loan Approved
8
Loan Payment
|
|||
|
Accounts Service
|
1
Account Created
|
|||
Loans Loans ServicePublished: 4 Subscribed: 1 |
||||
|
Customer Service
|
5
Customer Updated
|
Loans Service
|
6 Loan Approved
8 Loan Payment
|
Accounts Service
|
Customer Customer ServicePublished: 2 |
||||
|
Customer Service
|
5 Customer Updated
|
Loans Service
|
||
|
4 Customer Created
|
Accounts Service
|


Aegisub / Furigana karaoke
Furigana (in Aegisub often shortened to furi) refers to little phonetic guide characters written along the main text in Japanese, specifically using the hiragana phonetic alphabet to describe how the ideographic kanji characters should be pronounced. Putting smaller text next to a main line of text is in general referred to as ruby text, but since the implementation discussed here is designed specifically with Japanese furigana in mind, the ruby text is also referred to as furigana everywhere.
None of the subtitle formats Aegisub supports natively support ruby text or furigana, however the karaskel.lua standard include implements an algorithm that can create basic furigana layouts by calculating the position of every individual character.
This page describes the syntax the Automation 4 karaskel.lua script understands for furigana text, and how to use the layout information it calculates to actually create positioned characters.
Karaoke Templater also implements support for furigana using the karaskel.lua algorithm and syntax.
It's important to note that the syntax is designed for karaoke, and revolves around karaoke timed text. It isn't suited for typesetting regular text (e.g. dialogue lines) with general purpose ruby text. A more elaborate syntax and more complex layout engine would be required for that.
Multi-highlight syntax
A prerequisite for an integral part of the furigana syntax is the multi-highlight syntax.
If you make the text of a syllable a number sign (#, ASCII 35, Unicode U+0023) that syllable will "join" with the previous one: The number sign is removed and the timing of the two syllables are added together, producing just one syllable. You can have multiple number sign syllables in a row, adding up multiple timings in that way.
The timings of the individual number sign syllables are still stored in the
highlight table of the
generated syllable structure, but the main timing (start_time
and end_time
)
of the syllable structure reflects only the added-together timings of the
number sign syllables.
This line shows how multi-highlight syntax is used to mark up kanji and groups of kanji that cover multiple syllables:
{\k5}明日{\k10}#{\k5}#{\k10}ま{\k7}た{\k10}会{\k4}う{\k6}時{\k14}#
It generates the following syllable structures:
| Text | Syllable duration | Highlight durations |
|---|---|---|
| 明日 | 20 | 5 |
| 10 | ||
| 5 | ||
| ま | 10 | 10 |
| た | 7 | 7 |
| 会 | 10 | 10 |
| う | 4 | 4 |
| 時 | 20 | 6 |
| 14 |
Basic furigana
To add furigana to a syllable, you add a pipe character (|, ASCII 124, Unicode U+007C) after the main syllable text, and then add the furigana text after the pipe. You can also add furigana to repeat-syllables (number sign syllables for multi-highlight) to have the furigana for a single main syllable span multiple furigana syllables.
When multiple consecutive syllables all have furigana, the furigana for all of those syllables are collected together and centered above the string of main syllables they belong to. If the string of furigana is wider than the main text the furigana is left-aligned with the main text. You can control this behaviour with special control characters, see below.
Adding furigana to the example above:
{\k5}明日|あ{\k10}#|し{\k5}#|た{\k10}ま{\k7}た{\k10}会|あ{\k4}う{\k6}時|と{\k14}#|き
The following syllables, highlights and furigana are produced:
| Text | Syllable duration | Highlight/furigana durations | Furigana |
|---|---|---|---|
| 明日 | 20 | 5 | あ |
| 10 | し | ||
| 5 | た | ||
| ま | 10 | 10 | |
| た | 7 | 7 | |
| 会 | 10 | 10 | あ |
| う | 4 | 4 | |
| 時 | 20 | 6 | と |
| 14 | き |
Controlling the layout
Often the layout produced with the plain furigana syntax isn't exactly what you want, or maybe even plain misleading. Because of this, there's two special characters that can be used to control how the furigana are laid out.
Both of these two special characters are placed before the first character of the furigana of a syllable, i.e. right after the pipe character.
First is the exclamation mark (!, ASCII 33, Unicode U+0021) which marks a "sequence break". This acts as a kind of invisible divider that prevents the furigana in this syllable from merging with that of the previous syllable. You will usually use this when you have two adjacent kanji words that both have furigana, but the furigana for them need to be separate. In that case, put the exclamation mark as the first character in the furigana for the first syllable of the second word.
The other special character is the less-than sign (<, ASCII 60, Unicode U+003C) which marks a "sequence break with float-left". It has the same sequence break semantics as the exclamation mark, but also changes the overflow behaviour. When the furigana sequence starts with a less-than sign marked furigana syllable is wider than the main text it applies to, it will always center above the main text, even if it means it has to extend over the left edge of it.
In all cases, if two furigana sequences extend beyond their main text such that they would overlap, the main text is moved such that the furigana won't overlap.
Here is the same (rather contrived) sample text shown without layout control and with each of the two layout control characters:
{\k10} 中|ちゅ{\k10} #|う{\k10} 国|ご{\k10} #|く{\k10} 魂|た{\k10} #|ま{\k10} #|し{\k10} #|い |
|
{\k10} 中|ちゅ{\k10} #|う{\k10} 国|ご{\k10} #|く{\k10} 魂|!た{\k10} #|ま{\k10} #|し{\k10} #|い |
|
{\k10} 中|ちゅ{\k10} #|う{\k10} 国|ご{\k10} #|く{\k10} 魂|<た{\k10} #|ま{\k10} #|し{\k10} #|い |
It is very hard to tell the difference between the two first as the difference is only a few pixels, but it is there. In the first sample, the た extends a bit over the left edge of 魂 and above 国 while it exactly left-aligns with 魂 in the second. In the second, ちゅうごく is also centered above 中国 while it isn't in the first.
Summary
| Char | ASCII | Unicode | Where | Meaning |
|---|---|---|---|---|
| # | 35 | U+0023 U+FF03 |
Instead of main text | Extend previous syllable with another highlight |
| | | 124 | U+007C U+FF5C |
Between main text and furigana | Separate main text and furigana text of a syllable |
| ! | 33 | U+0021 U+FF01 |
First character of furigana | Sequence break; prevent joining furigana for this syllable with furigana from previous syllable |
| < | 60 | U+003C U+FF1C |
First character of furigana | Sequence break with float-left; prevent joining furigana for this syllable with furigana from previous syllable, but allow furigana to extend left of main text |
Note that every special character can in fact be represented by two different Unicode codepoints. The first is the regular character, corresponding to the ASCII character, while the second (high) codepoint is the full width version of the character. Often when using an IME (Input Method Editor) to edit Japanese text it is easier to input text in full width mode than switching the IME off to enter a single or two regular ASCII characters and switch it on again. Therefore both the half width (ASCII) and full width versions of the characters are accepted.
Usage in Karaoke Templater
Furigana: The furi template class
Multi-highlight: The multi modifier
The examples used earlier on this page are all generated using this kara-templater snippet:
Comment: 0,0:00:00.00,0:00:00.00,Default,,0000,0000,0000,template syl,{\pos(!line.left+syl.center!,!line.middle!)\an5\k!syl.start_time/10!\k$kdur}
Comment: 0,0:00:00.00,0:00:00.00,Default,,0000,0000,0000,template furi,{\pos(!line.left+syl.center!,!line.middle-line.height!)\an5\k!syl.start_time/10!\k$kdur}
Comment: 0,0:00:00.00,0:00:02.00,Default,,0000,0000,0000,karaoke,{\k15}二|ふ{\k15}#|た{\k10}人|り{\k15}だ{\k57}け{\k5}の{\k6}地|ほ{\k5}球|し{\k8}で
Comment: 0,0:00:02.00,0:00:04.00,Default,,0000,0000,0000,karaoke,{\k10}中|ちゅ{\k10}#|う{\k10}国|ご{\k10}#|く{\k10}魂|<た{\k10}#|ま{\k10}#|し{\k10}#|い
Comment: 0,0:00:04.00,0:00:06.00,Default,,0000,0000,0000,karaoke,{\k10}中|ちゅ{\k10}#|う{\k10}国|ご{\k10}#|く{\k10}魂|!た{\k10}#|ま{\k10}#|し{\k10}#|い
Comment: 0,0:00:06.00,0:00:08.00,Default,,0000,0000,0000,karaoke,{\k10}中|ちゅ{\k10}#|う{\k10}国|ご{\k10}#|く{\k10}魂|た{\k10}#|ま{\k10}#|し{\k10}#|い
The font used in MS PMincho 30 pt with the furigana being 15 pt.
Usage in Lua scripts
It's all in karaskel.
Furigana layout is automatically invoked by karaskel.preproc_line_pos
if a
furigana style exists for a line main style. The furigana style for a main
style is a style with the same name, except -furigana
appended to the name.
E.g. the furigana style of Default
is Default-furigana
.
Karaskel can generate automatic furigana styles if the generate_furigana
argument (second) to the karaskel.collect_head
function is true
. Automatic
furigana styles are identical to the main style they're based on, except the
font size is halved.
Furigana syllables are stored in line.furi
and follows the same format as
regular syllables. You have to remember setting the style of the lines you
generate to the furigana style.
Multi-highlights are always processed even when furigana layout isn't done.
Multi-highlight data are stored in syl.highlights
.


Calibration
Our algorithmic approach toward calibration in the pipeline can be found here.
Stokes I Calibration (Continuum)
Stokes I calibration is achieved in xx_yy_solve.py
, and includes standard delay, bandpass and gain calibration. Within this pipeline, this is done to obtain better statistics for a second round of flagging.
Stokes I calibration is the default mode of the pipeline, using the xx_yy_solve.py
and xx_yy_apply.py
scripts. Since the 2nd round of flagging is different to the 1st, and much more effective, these two scripts are called twice, in a second round that should not be skipped. Furthermore, for good calibration, new solutions should always be derived after flagging.
Full Stokes Calibration (Polarisation)
Full Stokes calibration can be activated with [-P --dopol]
, which, in addition to the calibration listed above, includes calibration of instrumental leakage and X-Y phase. While XY phase calibration typically results in accurate full Stokes spectra, absolute polarization angle calibration is not performed and any systematic offsets in the XY phase calibration will reflect as errors in the Stokes parameters of the source.
Short-Track Observations and flux scale Issues
New in V2.0: The full Stokes calibration scripts (xy_yx_solve
and xy_yx_apply
) no longer rely on the parallactic angle coverage of the secondary, but default to using a dedicated scan on the polarization calibrator to solve for the XY phase. The secondary calibrator is used only in the event that there is no polarization calibrator present in the observation. Therefore full Stokes calibration can be performed on short-track observations, as long as a dedicated polarization calibrator is observed.
New in v1.1: Only xx_yy
scripts are used by default, and if the parallactic angle coverage is < 30 degrees, a warning is output recommending disabling polarisation calibration.
Replacing the ‘xy_yx’ scripts with the ‘xx_yy’ scripts is recommended for short-track observations (e.g. 2 hours), because the ‘xy_yx’ scripts assume that the phase calibrator has sufficient parallactic angle coverage to solve for the leakage and Stokes Q & U. We also recommend this for cases where there are issues with fluxscale, which often occurs when the ‘xy_yx’ scripts are run for short-track observations.
Calibrating a Small Sub-Band (Spectral Line)
A small sub-band of frequencies can be selected and calibrated by specifying a range of frequencies with argument spw
in your config file. e.g. spw = '0:1350~1450MHz'
means partition
will extract only frequencies between 1350-1450 MHz for calibration. For very small bandwidth of several MHz, it may not be necessary to use MMS and MPI (see section MS only below).
This mode is useful for calibration of spectral line data.
Data Format
Default: MS -> MMS
By default, the pipeline will convert the input measurement set (MS) into a multi-measurement set (MMS), partitioning the data by scan, such that the number of sub-MSs making up the MMS is equal to the number of scans. The input MS does not need to be copied to your working directory, since partition.py
needs only to read the input data (e.g. from /idia/projects/
).
At the end of the pipeline, split.py
will split each of the field IDs specified in your config file into MMS format. This is the default behaviour, since the default value of keepmms
in the config file is True
. This also ensures future tasks make use of MPI (and multiple CPUs), so that your imaging runs more quickly.
This mode is encouraged for all users, as it will run the pipeline as efficiently as possible without a change in calibration strategy. However, users wishing to perform post-processing using other software packages may be required to write back into MS format.
MS -> MMS -> MS
When setting keepmms=False
in your config file, the pipeline will convert your data to MMS as usual, but during running split
, each of the field IDs specified in your config file will be written in MS format. Although any subsequest calibration tasks (e.g. applycal
and flagdata
run during selfcal) will not be able to utilise multiple tasks / CPUs, imaging tasks performed with tclean
will still be able to utilise multiple tasks / CPUs, resulting in only a small difference in performance. This general mode of processing is encouraged when the user wishes to do their own imaging that requires an MS.
MS only (single thread processing)
The pipeline can be run on a MS, where the user would have to request 1 node and 1 task per node. In this case, the user would set createmms=False
in their config.
This mode isn’t generally encouraged, but may be useful for small datasets (tens of GB - e.g. small bandwidth of several MHz, or short-track observations), when using MMS has little to no advantage, or when the number of scans is very large (hundreds), in which case splitting into multiple SPWs and multiple sub-MSs is too extreme (e.g. running across tens of nodes).
Field IDs
Default: Primary and Secondary Calibrator
A standard observation will have a primary calibrator (e.g. J1939-6342 or J0408-6545), which is both the bandpass and total flux calibrator, and a secondary calibrator, which is the phase calibrator (and is also used for polarisation calibration).
Single calibrator and target
In rare cases, a primary calibrator may be close enough to the target(s) that only one calibrator is used throughout the observation. This use case is supported, but caution must be used to ensure the correct flux scale is derived.
Multiple calibrator field IDs
Multiple field IDs can be specified by writing a comma-separated list to your config file. However, this use case is not supported, since tasks such as setjy
cannot handle this. Only the targetfields
and extrafields
parameters from the [fields]
section of your config file allow for multiple comma-separated fields within the pipeline.


Looking for a specific event? Use the Search bar tool to find the information you need!
Note: If you wish to view all events, Click here.
| Position | Team Name | Residence Name |
|---|
| Position | Team Name | Residence Name |
|---|
| Position | Team Name | Residence Name |
|---|
| Event Name | Team Name | Residence | Position |
|---|


Issues
| # | Summary | Product | Status | Kind | When |
|---|---|---|---|---|---|
| 464 |
Selecting a recent track has no effect if iTunes quit |
Synergy | open | bug | |
| 461 |
CRASH: Dies in -[NSUIHeartBeat _heartBeatThread:] on secondary thread |
Synergy Advance | open | bug | |
| 460 |
CRASH: Dies in -[WOQueueConsumer consumeQueue:] |
Synergy Advance | open | bug | |
| 459 |
REQUEST: Hot key for "Transfer cover to iTunes" |
Synergy | open | feature request | Created , updated |
| 458 |
Use "guillemets" instead of "double angle quotation marks" in the manpage |
Wincent Strings Utility | open | bug | |
| 457 |
REQUEST: add current version info to user interface |
WinSwitch | closed | feature request | Created , updated |
| 456 |
REQUEST: reimplement WinSwitch to control launch as Startup Item |
WinSwitch | closed | feature request | Created , updated |
| 455 |
REQUEST: simultaneous log out & user switch |
WinSwitch | closed | feature request | Created , updated |
| 454 |
desktop background picture changes |
Synergy | open | bug | Created , updated |
| 453 |
Transparent parts of images appear as white (ShapeShifter) |
WinSwitch | closed | bug | Created , updated |


Ret vs Panic, Locals - Drive File Comments
null
Evan Ovadia
Feb 5, 2022, 4:26 PM
Selected text:
we want m to be considered moved,
Maybe we don't need this? Maybe the if-statement can be a little smarter and know that since something ended in a Never, it doesn't matter what it did?


Get Started Quickly with WordPress
Introduction
Although you might not have realized this, XAMPP comes with a number of add-on applications. These add-ons include Drupal, Joomla!, WordPress and many other popular open source applications. The add-ons can be easily installed on top of XAMPP using a simple installation tool and are pre-configured to work out of the box, freeing you from the time and effort of downloading and configuring the applications separately.
XAMPP add-ons are provided by Bitnami, which specializes in pre-configured infrastructure and application stacks for native, virtual machine and cloud use. Bitnami stacks work the same way across platforms - this means that by using the WordPress Bitnami add-on instead of "rolling your own" WordPress configuration, you’re guaranteed that your WordPress blog will look and work the same way even if you later migrate it from your local XAMPP environment to a cloud server.
In this article, I’ll walk you through the process of installing the Bitnami WordPress add-on for XAMPP, showing you how to quickly get started with one of the world’s most popular blogging platforms. Keep reading! == Assumptions and Prerequisites This tutorial doesn’t make a lot of assumptions, but the few that it does are important.
-
First, it assumes that you have a working XAMPP installation on Ubuntu Linux (Desktop edition), and that your XAMPP installation (including MySQL/MariaDB) is currently running. In case you don’t have this, download and install XAMPP and then, once it’s installed, check that it’s all working by browsing to http://localhost. You should see something like this:
You can also check that both MySQL/MariaDB and Apache are running using the XAMPP control panel:
-
Second, it assumes that you’ve already downloaded the Linux WordPress add-on for XAMPP. In case you don’t have this, you can download it from the XAMPP Add-ons page. The add-on is an executable that lets you click your way through key tasks such as configuring the WordPress administrator account and setting up WordPress email notifications.
Did you check both the boxes above? You’re good to begin!
Step 1: Install Bitnami WordPress module for XAMPP
You can now begin installing WordPress on top of XAMPP by following these steps:
-
Open a new Linux terminal and ensure you are logged in as root.
-
Change to the directory containing the downloaded add-on. Set the executable bit for the file and launch it (remember that your file name might differ from the one below):
chmod +x bitnami-wordpress-4.0-1-module-linux-x64-installer.run
./bitnami-wordpress-4.0-1-module-linux-x64-installer.run
-
This will launch the installer and you should see a splash screen, followed by a prompt for installation language. The installer is available in nine languages, including English, Spanish, Simplified Chinese, Korean, German and Russian. Select your language and you’ll be transferred to the main setup wizard.
-
The WordPress add-on requires a pre-existing XAMPP installation. Select your XAMPP installation directory (usually, /opt/lampp).
-
Next, you’ll be prompted to set up the WordPress administrator account. Enter a user name, real name and email address for the WordPress administrator account. Also, enter a password (minimum 6 characters) for the WordPress administrator account.
-
Next, enter a title for your WordPress blog. Don’t worry, you can change this later!
-
WordPress can optionally send you notifications on events, such as when someone comments on a post. The setup wizard lets you configure how these email notifications are sent out. You can either use a Gmail account or a custom mail server.
-
If you’re using a Gmail account, simply enter your complete Gmail address and account password. For security reasons, it is recommended that you set up a separate Gmail account for notifications, rather than using your regular Gmail address.
-
If you don’t have a Gmail account or if you’d prefer to use a custom mail server, enter details for the mail server, such as the account username and password, SMTP server name and port, and security configuration.
-
-
You’ll now be asked to choose between development and production settings. Choose the option best suited for your particular needs.
You’re almost done! Click Next a few times, decide whether you want to read more about Bitnami in a new browser window while the installation progresses, and the wizard will take care of the rest.
Once installation is complete, you’ll see a success screen. Click "Finish" to exit the installation and launch WordPress.
Step 2: Test WordPress
By default, WordPress is installed in your XAMPP installation directory, in the apps/wordpress subdirectory. The installation process will, by default, launch your browser and take you to the new WordPress blog anyway, but you can also access it directly at http://<IP_ADDRESS>/wordpress or http://localhost/wordpress. The screenshot below shows what you will typically see.
To delete this sample post or to create a new post, you need to first log in to the WordPress dashboard. You can do this either by clicking the "Log in" link in the left navigation bar or by browsing to http://localhost/wordpress/wp-login.php.
Log in using the administrator account you created in the previous step.
You should now arrive at the WordPress dashboard, which allows you to manage posts, pages and comments; customize your blog with themes and plugins; import and export content; manage navigation menus; add or delete new user accounts; and much more.
Step 3: Create an Editor Account and Start Blogging
As a general rule, you shouldn’t use the administrator account for routine tasks, such as creating posts or replying to comments. So, one of the first things you should do is create a new user account with minimal privileges, which you can use for these routine tasks. To do this:
-
Select the "Users → Add New" menu option to create a new user account.
-
Enter a username, real name, password and other details for the account.
-
Assign the new account the role of "Editor".
-
Click the "Add New User" button to create the new user account.
Once the account is created, use the "Log out" button (in the pop-up menu at the top left corner of the page) to log out. Then, log in using the new account you just created. You should return to the WordPress dashboard, but with a restricted set of tools.
You can now add a new post using the following steps:
-
Select the "Posts → Add New" menu option to create a new post.
-
Enter a title and content for the post. You can use the formatting tools at the top of the content area to format your post and add hyperlinks or images.
-
Optionally, choose the format and category for your post.
-
Publish it immediately using the "Publish" button.

Congratulations! You now have a working, fully-functional WordPress blog.
You can keep your WordPress installation up-to-date with the WordPress automatic update feature. To access this:
-
Log in to WordPress using the administrator account.
-
Select the "Dashboard → Updates" menu item.
-
Review the resulting page to see if WordPress needs an update. If an update it available, you can install it by clicking the "Update Now" button. You can also re-install WordPress if needed with the "Re-install Now" button. == Learn More To learn more about WordPress, XAMPP and Bitnami, use the links below:


Something Occurs
Within this space is some text, or other graphical representations of things that this page displays.
Products
Product Name
This is a product description. It takes up a few lines of space.
Product Info: Dimensions might go here
More Info: Another piece of data
But It Now!
Product Name
This is a product description. It takes up a few lines of space.
Product Info: Dimensions might go here
More Info: Another piece of data
But It Now!
Product Name
This is a product description. It takes up a few lines of space.
Product Info: Dimensions might go here
More Info: Another piece of data
But It Now!


Additional Information | ||||||||||||||
|
This page gives you additional information on certain aspects of mod_qos to get a better understanding about how to use the module.
DirectivesThe module is configured by directives. All directives process the connection, HTTP request, and response data in a pre-defined sequence. The following graph shows the order in which the directives work. Rulesmod_qos allows you to configure different kind of rules. The main component of a rule is its counter. A rule measures either the concurrency (how many times something happens at the same time), the occurrence (how often does something happen in a certain amount of time), or the throughput (sent amount of data or number of request) and stores this information within that counter. Every rule has it's own threshold and maintains its own counter. A rule is identified by either an URL pattern/matching string or by an environment variable name. You can configure as many rules as you want.
Note: Some counters are only available once. This applies to the counters of
the rules using the
Environment VariablesThe Apache web server provides a mechanism for storing information in so called environment variables. mod_qos uses these variables to exchange data respectively signalize events between different rules defined by the corresponding directive. These variables can also be written or read by other Apache modules, such as mod_setenvifplus or mod_setenvif . Example: It is also possible to write the values of these variables to your log
file using the format string
Note: Whenever you use a directive (such as
Concurrency CounterA "concurrency counter" is used to determine how many times something happens at the same time, e.g. HTTP requests accessing the same resource/URL at the same time. The rules using this counter type are either defined by an environment variable name or an URL pattern (regular expression or a string matching the request's URL). Such a rule automatically increments the counter when the Apache web server starts to process a matching request and decrements the counter when the request processing is completed. You have to configure a threshold and the rule's variable name resp. URL pattern. Requests (or new connections) are denied as soon as the configured threshold is reached. Directives using this counter type are:
QS_SrvMaxConn ,
QS_SrvMaxConnClose , and
QS_SrvMaxConnPerIP
directives use this counter type, although with fewer parameter options.
Sample Use CaseNow let us look at an example to show where these rules can be used. Let's assume that you have two applications. We call them "A" and "B". Application "A" has been deployed on path/app/a and "B"
on /app/b .
Such a scenario can occur due to various infrastructure problems, e.g., by slow database queries. A similar situation can also arise through an external influence: if someone penetrates application "B" with a HTTP GET / POST flood DoS attack, then application "A" could also become unreachable. A QS_LocRequestLimit
rule can prevent this.
Repeat Counter"Repeat counters" limit the number how often (Cr) something is allowed to happen in a certain amount of time (Td). These rules trigger a timer whenever the defined event occurs the first time and start to count every subsequent event until the timer expires. If the event counter reaches the defined limitation, requests are blocked until the time is up.
All repeat counters allow you to define an event which shall increment the counter if they occur. You also have to configure a duration Td and the threshold Cr, defining how many events are allowed within the time Td. Directive parameter example: While the counter is automatically cleared (set to 0) when the time Td is up, you might also configure additional events to decrement or clear the counter earlier. The directives using this counter type are:
Throughput ControlThroughput control is implemented by measuring the current usage and calculating a necessary delay which needs to be applied to the data processing in order to achieve the desired limitation (closed loop control system).
mod_qos can limit the bandwidth when downloading data from your web server to the client. This throughput control can be configured by the following directives: Requests per Second
It is also possible to limit the number or requests per second to a
resource. This control function is less accurate than the bandwidth
limitation, since the measurement of the request rate takes longer
(several seconds) and the request delay is more coarse-grained. Serializationmod_qos offers you the option to serialize requests. Serialization means, that requests are processed one after the other. Incomming requests are queued if another request is in process and have to wait until the previous request is finished.
Requests, which shall be serialized, are tagged by one of the following environment variables: Serialization might be applied on a per server level (serializing all HTTP requests) or on a per client level (serializing multiple requests comming from the same client/IP address). Error Pages and Server Side Includes (SSI)
Custom error documents to be used by mod_qos
are either configured using the
User Tracking
It might be necessary to identify individual users to define appropriate QoS
rules. For this reason, mod_qos can set a cookie
containing a unique identifier. This identifier is then written to the
This feature is enabled by the following directive:
QS_UserTrackingCookieName directive.
This parameter defines an error document and mod_qos
answers the request with a redirect (302) to this document when setting
the cookie initially. The browser will follow the redirect and mod_qos
redirects the browser back to the initially requested page if the request
to this error document contains the tracking cookie. If the browser did not
send the cookie, the error document is shown.
Note: You can exclude certain clients from this enforcement by
setting the
Request Statistics Using qslog
Or you can use it to process any existing log file using the post processing
optin
Example: The ouput shows the data as a function of time: a summary of what happened every minute. Each line includes all measured values as semicolon spearated name/value pairs (CSV).
You can use the spreadsheet program of your choice to process the output: |


03 Apr 2017
|
knowledge
Static routes do have some advantages over dynamic routing:
- static routes are not advertised over the network by default, resulting in better security
- static routes use less bandwidth than dynamic routing protocols, as there is no exchange of routes
- no CPU cycles are used to calculate and communicate routes
Static routes have some disadvantages as well:
- initial configuration and maintenance is time consuming
- does not scale well
- requires complete knowledge of the whole network for proper implementation.
- can interfere with the use of backup routes
With backup routes, if the outage occurs downstream in the network, a router with a static route to a destination will never utilize the backup route, because it still sees a path to the destination from the backup route. To get around this, use an outbound interface as well as the destination IP in the static route as in R1(config)# ip route <IP_ADDRESS> <IP_ADDRESS> FastEthernet0/1 <IP_ADDRESS>
. The other option is to of course use a dynamic routing protocol and then the route will be removed
To set up a static route, use the following syntax:
ip route <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS>
This would route any traffic destined for <IP_ADDRESS>/24 to <IP_ADDRESS>.
To set up a default route, use the following:
ip route <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS>
You could also specify an interface, but the better way is to use an IP address so no lookups are required.
02 Apr 2017
|
knowledge
Administrative Distance is used to determine which route should be installed into the IP routing table when there is a tie between different sources for the route (static vs EIGRP vs OSPF, etc). Administrative Distance is sometimes called the trustworthiness of the source. When a decision has to be made, the table containing Administrative Distance is consulted to choose the best route, with lower being better. Administrative Distance is only local and can be different for each router.
The distance
command is used with the different routing protocols to change its Administrative Distance. Here is a list
| Routing Protocol |
AD |
| Directly connected |
0 |
| Static route |
1 |
| EIGRP Summary |
5 |
| External BGP |
20 |
| EIGRP |
90 |
| IGRP |
100 |
| OSPF |
110 |
| IS-IS |
115 |
| RIP |
120 |
| ODR |
160 |
| External EIGRP |
170 |
| Internal BGP |
200 |
| Unknown |
255 |
02 Apr 2017
|
knowledge
Longest Match Routing is the idea that a packet will follow the most specific route entry that it matches. So if there was a host route (/32) that existed for the destination, the host route would have precedence over any shorter prefix such as a /24.
02 Apr 2017
|
knowledge
Address Resolution Protocol (ARP) is used to determine the data-link identifier (MAC address) of a host with a known IPv4 address. The ARP request packet contains the IPV4 address of the device in question (the target), as well as the IPv4 and MAC address of the device making the request (the sender). The ARP packet is then encapsulated in a frame with the sender’s MAC address as the source and a broadcast address for the destination. The target will send an ARP Reply to the source address, supplying its MAC address. The ARP reply will lest the target as the original sender.
The command above will display the ARP table on a Cisco router.
Cisco routers hold ARP entries for 4 hours by default. It can be changed on a per-interface basis with the arp timeout seconds
interface subcommand.
clear arp-cache
can be used to delete all dynamic entries from the ARP table. It will also clear the fast-switching cache as well as the IP route cache.
Proxy ARP is a variation of ARP that is sometimes called promiscuous ARP. This is the method of how router’s will replay to an ARP request if they have a route to a host on another subnet. The router will send it’s own MAC address as a reply to the ARP request to trick the host into thinking it is the actual host in question. Proxy ARP is enabled by default in Cisco IOS and can be disabled on a per-interface basis with the command no ip proxy-arp
.
02 Apr 2017
|
knowledge
IP is a logical addressing method as compared to MAC layer physical addresses. It operates at the Network Layer (Layer 3) of the OSI model.
An address mask is used to identify the network and host portions of the address. It is 32-bits long, the same length as an IPv4 address. In general, an address mask is assigned to a network or an organization. The organization then subnets that address mask into per data-link subnet masks for assignment.
The number of available subnets under a major address mask and the number of hosts on each subnet are both calculated with the same formula 2^n-2.


Saving
the world w/ DIY
By
Matt Fontes Carroll
for
a bachelor’s degree in community economics at the University of
Massachusetts
Section 1: Structure (WHAT IS DIY?)
DIY IS AN ORGANIC RESPONSE TO THE SELFISH MONEY-MAKING MEASURES OF CORPORATE OPPRESSION AND CONSUMERISM
This pamphlet represents an informational
resource on the history, culture, form, and function of the DIY Movement.
In the 1970s, cost-associated barriers to
entry to the increasingly corporatized & monopolized music industry forced
artists and musicians into the margins.
Artist push back in efforts to regain
control over their careers led to the rise of the DIY attitude – doing
everything the big labels did, yourself.
From pressing records to booking shows,
artists in the emerging DIY scene wouldn’t rely on anyone else to make their
careers.
DIFFERENT KINDS OF
VENUES
The
emergence of this movement prioritized accessibility, independence, and community
over profits.
This DIY
approach to problem-solving led to the creation of a growing network of informal venues whose structure remains in-tact
in underground scenes to this day.
These
spaces might include.
§
A temporary space in someone’s
basement (totally off the books)
§ A more sophisticated secret venue in an abandoned industrial
building or commercial space (still under the radar)
§ A registered 501c3 non-profit transparently engaging
with local law enforcement and other organizations to provide resources to
artists and community members.
LIFE
AND LIVELIHOOD IN DILAPIDATED PLACES
Understanding
the reputation of radicalism often associated with DIY culture,
sometimes described/modified with references to anarchy and Marxism,
is critical to understanding the movement as a whole.
Key
among the tactics employed in DIY methodologies is the principle of cooperation
as opposed to the alternative competitive structures imposed by
capitalist systems.
PRINCIPLES OF DIY CULTURE INCLUDE, BUT ARE NOT LIMITED TO:
- Mutual aid
- Non-hierarchical leadership structure
- Rejection of capitalist ideology + profiteering behavior
- Commitment to equity & total inclusivity
“DIY can mold and hold generations of artists; yet, despite this, finds itself constantly struggling to survive in a capitalist society.”
From Redefine Magazine
By Vivian Hua
Section 2: Functions of DIY Spaces in Practice
EXAMPLES:
CHICAGO BASED
PO BOX COLLECTIVE
“… a creative collective & intergenerational social practice center dedicated to building Rogers Park community through radical art making, mutual aid & programming”
From poboxcollective.us/about
- skill shares
- writing workshops
- artist salons
- clothing swaps
- free events & sliding-scale member dues/donations
- space sharing w/ local activist groups
- i.e., “Food Not Bombs”
“The reason that we are drawn to both art and social justice is that we want to remake the world, and DIY spaces offer possibilities for those who don’t want to be caught up within institutional structures and constraints, more direct access to collaboration and community building, and room to move for those without a lot of money”
- PO Box Collective members Mary Zerkel and Salome Chasnoff.
SEATTLE BASED THE VERA PROJECT
Washington is basically the birthplace of the underground all-ages venue. Founded in response to Seattle’s “Teen Dance Ordinance,” Vera was founded to create an inclusive space for young people to interface with the city’s creative community.
Today, Vera is:
§ A
music venue,
§ screen
print shop,
§ recording
studio,
§ art
gallery,
§ and
safe space for radical self-expression
Executive Director Ricky Graboski:
“The DIY ethos has always been defined more by equity, empowerment, and direct action than music. Music is an incredibly powerful tool, an effective unifier, and maybe the greatest joy we get out of life, but it’s also just the entry point.”
From theveraproject.org
BOSTON BASED DORCHESTER
ART PROJECT (DAP)
In the Field’s Corner neighborhood of Dorchester, Mass. – this is my local DIY Spot!
Here’s some cool things they do:
- A storefront that sells artwork, art supplies, and local branded merch
- Tenancy for the Melanin Owned Business Market
- Operation of The Dorchester Bike Kitchen, a volunteer-run educational bike-fixing operation in their downstairs space
- Fifteen affordable studio spaces (rented monthly)
- The DAP Zine Library of independent publications produced around the world
- Community
organization for protests, events, and all kinds of art projects
After a long and complicated history of operation between different names, spaces, and parent orgs, The DAP in its current form operates under the umbrella of the Brain Arts Organization, a 501c3 non-profit.
Their mission is to support local artists / the local art
scene and “to realize creative independence in systematically undervalued
communities.”
(As of 2022, the DAP was outbid for its first floor & basement space at 1490 Dorchester Ave)
From dorchesterartproject.com
Section
3: The Unseen Value of DIY Spaces
FAST FACTS ON COVID & THE ART WORLD
(from the Brookings Institute’s Lost
Art: Measuring COVID-19’s devastating impact on America’s creative
economy)
In creative industries, between April 1st and July 31st,
2020, America lost:
-
2.7 million jobs (~ 1/3 of the industry)
-
more than $150 billion in sales of goods
and services (~9% annual revenue)
In the fine/performing arts
(think: concerts, touring bands, live
theater):
-
1.4 million jobs (50% of the industry)
-
$42.5 billion (~ 25% annual revenue)
The 53 largest metro areas with populations greater than 1 million
will account for 80% of the total losses in sales and 68% of jobs.
By share of population, Las Vegas, Nashville, New
Orleans, Orlando, Memphis, Baltimore, Jacksonville,
Tucson, and Austin felt the greatest economic losses.
ALSO:
(All from the Americans for the Arts Organization’s Statement
on Arts, Jobs, and the Economy)
According to the Bureau of Economic Analysis, nonprofit and
for-profit arts:
- Is a
$730 billion industry
- Directly
employs 4.8 million arts workers
- Represents
approximately 4.2 percent of US GDP
ART IS GREAT FOR LOCAL ECONOMIES
Art events come with extraordinarily high multipliers for their
communities
Attendees at nonprofit arts events spend an average of $24.60 per person, per event, on outside goods/services beyond the cost of admission
ART IS AN EXPORT INDUSTRY!
In 2014, the BEA reported that the US sent abroad $60 BILLION worth of arts goods (i.e., paintings and jewelry and stuff).
THESE VENUES ARE HAVENS FOR ARTISTS TO LEARN AND FOSTER NEW CONNECTIONS.

SINCE 1968 THE CITY OF FLINT MICHIGAN LOST 70,000 JOBS AND 100,000 RESIDENTS.
26 YEARS LATER TWO GUYS BOUGHT AN ABANDONED BUILDING DOWNTOWN FOR $500 AND STARTED A CONCERT VENUE THERE.
FOR A PERIOD OF TIME FLINT WAS CLASSIFIED AS THE MOST DANGEROUS CITY IN NORTH AMERICA.

Flint Local 432 is one of the longest-running all-ages
venues in the US.
Check out flintlocal432.com
and Punk Rock Entrepreneurship
Section 4: Supporting DIY and Safer Spaces
Every venue works a little differently. Some are legal,
registered, 501c3 non-profits and others are not.
Some receive government and philanthropic support to maintain
their buildings and replace radiators – others don’t.
Keeping these places alive (and relatively structurally-sound) has
historically been a team effort.
Though organizers are constantly fighting uphill battles for these
sacred secret spots, their communities have found a variety of strategies
through which to offer support.
Artist Trusts and Relief Funds
The Seattle Artist Relief Fund is just a GoFundMe, but it
raised $937,969 for Seattle Artists in eighteen months! It is literally the
largest sum of direct Covid relief to go to Artists in Washington ever. Pretty
awesome.
Artist Trust is a 501c3 nonprofit and have managed to
invest over $15 million in individual artists over the last thirty-six years!
The DIY
Community Relief Fund is a fundraising effort by Seattle nonprofits,
small businesses, and artists to save vital music and arts community spaces
that have been disproportionately impacted by COVID-19 in Washington and
beyond. Started by the fine folks at The Vera Project!
SAFER
DIY SPACES
Safer DIY
Spaces is a non-profit collective of architects,
artists, contractors, and community organizers that offer technical and
financial support to venues in need of core safety improvements and
advocacy and lobbying to cities to adopt “safer, more compassionate codes.”
The group emerged
in response to a major fire at a DIY venue in Oakland, California called
Ghostship in which 36 people were killed and trapped inside.
Other
venues forced to survive in unsafe structures since have been shut down by
authorities citing safety concerns.
From saferdiyspaces.org
Sponsored Economic Development Research
Using Arts and Culture to Stimulate
State Economic Development
Austin, TX
https://austintexas.gov/sites/default/files/files/Redevelopment/0901arts_economy_nga.pdf
2020 City of Denver Creative
Economy Report
https://www.artsandvenuesdenver.com/assets/doc/2020DenverCreativeEconomyReport_Final-d4b586353d.pdf
Lost Art: Measuring the Impact of
Covid on the Creative Economy
Statements on Arts, Jobs, and the
Economy
Writings on DIY
Punk Rock Entrepreneurship by Mike
Seman at Colorado State University
Westword Magazine Interview w/ Mike
Seman
Why Do
Local Artists Need DIY Art Spaces and How Can You Help Them?
Can DIY
venues solve the national endowment for the arts crisis?
https://observer.com/2017/03/national-endowment-for-the-arts-solution-diy-shea-stadium/amp/
Handmade
and DIY by Ben Shultz at the University of
Tennessee
https://trace.tennessee.edu/cgi/viewcontent.cgi?article=2169&context=utk_graddiss
Redefine
DIY by Vivian Hua for Redefine Mag
Fire at
Ghost Ship Oakland
Homeless
evicted from Rhinoceropolis in Denver
v:shapes="Picture_x0020_2">


norns.online: share your norns screen + audio,
norns.online/share: share tapes + script saves.
first, get norns.online from
maiden.
to share screen + audio:
- - open 'norns.online' script
- - press K3 to go online.
- - open webpage norns.online/<yourname>.
to share tapes + script saves:
- - open 'norns.online/share' script
- - press K3 to register.
hints
- - k1 latches so you can use it as a shift.
- - double click k1 to get into/out of menu.
- - on mobile, press any button to enable audio.
made open-source by infinite digits.