Creating a new plugin
This guide deals with an example where a new plugin is developed from scratch using MCCoroutine to handle asynchronous and synchronous code. MCCoroutine can be easily integrated into existing plugins but this guide only deals with a new plugin.
1. Understanding the goal
We want to create a new plugin which stores/retrieves the following user data into/from a database when a user enters our Bukkit-API based server.
UUID
Player Name
Last Join Date
Last Quit Date
2. Include MCCoroutine and Kotlin Coroutines
This example plugin uses gradle as a build system. For more details see the Started Page
.
Gradle
Important
Please use your own Kotlin version and the latest mccoroutine version instead. This is just a working example.
dependencies {
implementation("com.github.shynixn.mccoroutine:mccoroutine-bukkit-api:1.5.0")
implementation("com.github.shynixn.mccoroutine:mccoroutine-bukkit-core:1.5.0")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.10")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.3.10")
}
3. Create the Java Plugin class
Here the first decision is to decide between extending JavaPlugin
or SuspendingJavaPlugin
which is a new base
class extending JavaPlugin
.
Here is an easy rule to follow:
- If you want to perform async operations or call other suspending functions from your plugin class, go with the newly
available type
SuspendingJavaPlugin
otherwise useJavaPlugin
.
import com.github.shynixn.mccoroutine.SuspendingJavaPlugin
class MCCoroutineSamplePlugin : SuspendingJavaPlugin() {
override suspend fun onEnableAsync() {
}
override suspend fun onDisableAsync() {
}
}
How onEnableAsync works
The implementation which calls the onEnableAsync
function manipulates the Bukkit Server implementation in the
following way:
If a context switch is made, it blocks the entire minecraft-server thread until the context is given back. This means
in this method you can switch contexts as you like but the plugin is not considered enabled until the context is given
back.
It allows for a clean startup as the plugin is not considered "enabled" until the context is given back.
Other plugins which are already enabled, may or may not already perform work in the background.
Plugins which may get enabled in the future, wait until this plugin is enabled.
3. Create Database and PlayerData class
class PlayerData(var uuid: UUID, var name: String, var lastJoinDate: Date, var lastQuitDate : Date) {
}
Here, we perform all database operations on the IO context provided by Kotlin Coroutines. The result is automatically returned to the Bukkit primary thread.
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.bukkit.entity.Player
import java.util.*
class Database() {
suspend fun createDbIfNotExist() {
println("[createDbIfNotExist] Start on minecraft thread " + Thread.currentThread().id)
withContext(Dispatchers.IO){
println("[createDbIfNotExist] Creating database on database io thread " + Thread.currentThread().id)
// ... create tables
}
println("[createDbIfNotExist] End on minecraft thread " + Thread.currentThread().id)
}
suspend fun getDataFromPlayer(player : Player) : PlayerData {
println("[getDataFromPlayer] Start on minecraft thread " + Thread.currentThread().id)
val playerData = withContext(Dispatchers.IO) {
println("[getDataFromPlayer] Retrieving player data on database io thread " + Thread.currentThread().id)
// ... get from database by player uuid or create new playerData instance.
PlayerData(player.uniqueId, player.name, Date(), Date())
}
println("[getDataFromPlayer] End on minecraft thread " + Thread.currentThread().id)
return playerData;
}
suspend fun saveData(player : Player, playerData : PlayerData) {
println("[saveData] Start on minecraft thread " + Thread.currentThread().id)
withContext(Dispatchers.IO){
println("[saveData] Saving player data on database io thread " + Thread.currentThread().id)
// insert or update playerData
}
println("[saveData] End on minecraft thread " + Thread.currentThread().id)
}
}
4. Connect JavaPlugin and Database
Create a new instance of the database and call it in the onEnable function.
import com.github.shynixn.mccoroutine.SuspendingJavaPlugin
class MCCoroutineSamplePlugin : SuspendingJavaPlugin() {
private val database = Database()
override suspend fun onEnableAsync() {
database.createDbIfNotExist()
}
override suspend fun onDisableAsync() {
}
}
5. Test the Java Plugin
Start your server to observe the createDbIfNotExist
messages print to your server log.
Extend it with real database operations to get familiar with how it works.
The next page continuous by adding listeners to the plugin.


| Package | Description |
|---|---|
| ij | |
| ij.gui | |
| ij.io | |
| ij.macro | |
| ij.measure | |
| ij.plugin | |
| ij.plugin.filter | |
| ij.plugin.frame | |
| ij.process | |
| ij.text |
| Class and Description |
|---|
| Calibration
Calibration objects contain an image's spatial and density calibration data.
|
| Measurements |
| Class and Description |
|---|
| Measurements |
| ResultsTable
This is a table for storing measurement results and strings as columns of values.
|
| Class and Description |
|---|
| Calibration
Calibration objects contain an image's spatial and density calibration data.
|
| Class and Description |
|---|
| Measurements |
| Class and Description |
|---|
| Calibration
Calibration objects contain an image's spatial and density calibration data.
|
| Minimizer
Minimizer based on Nelder-Mead simplex method (also known as polytope method),
including the 'outside contraction' as described in:
J.C.
|
| ResultsTable
This is a table for storing measurement results and strings as columns of values.
|
| UserFunction
A plugin should implement this interface for minimizing a single-valued function
or fitting a curve with a custom fit function.
|
| Class and Description |
|---|
| Measurements |
| Class and Description |
|---|
| Measurements |
| ResultsTable
This is a table for storing measurement results and strings as columns of values.
|
| Class and Description |
|---|
| CurveFitter
Curve fitting class based on the Simplex method in the Minimizer class
Notes on fitting polynomial functions:
(i) The range of x values should not be too far from 0, especially for higher-order polynomials.
|
| Measurements |
| Class and Description |
|---|
| Calibration
Calibration objects contain an image's spatial and density calibration data.
|
| Measurements |
| Class and Description |
|---|
| ResultsTable
This is a table for storing measurement results and strings as columns of values.
|


Chapter 8 Multicollinearity
Multicollinearity is the (poor) name for less-than-perfect collinearity. Even though there is enough variation in \(\Mat{X}\) to estimate OLS coefficients, if some set of variables in \(\Mat{X}\) is highly correlated it will result in large, but unbiased, standard errors on the esimates.
What happens if variables are not linearly dependent, but nevertheless highly correlated? If \(\Cor(\Vec{x}_1, vec{x}_2) = 1\), then they are linearly dependent and the regression cannot be estimated (see above). But if \(\Cor(\Vec{x}_1, vec{x}_2) = 0.99\), the OLS can estimate unique values of of \(\hat\beta\). However, it everything was fine with OLS estimates until, suddenly, when there is linearly independence everything breaks. The answer is yes, and no. As \(|\Cor(\Vec{x}_1, \Vec{x}_2)| \to 1\) the standard errors on the coefficients of these variables increase, but OLS as an estimator works correctly; \(\hat\beta\) and \(\se{\hat\beta}\) are unbiased. With multicollinearly, OLS gives you the “right” answer, but it cannot say much with certainty.
For a bivariate regression, the distribution of the slope coefficient has variance, \[ \Var(\hat{\beta}_1) = \frac{\sigma_u^2}{\sum_{i = 1} (x_i - \bar{x})^2} . \]
What affects the standard error of \(\hat{\beta}\)?
- The error variance (\(\sigma_u^2\)). The higher the variance of the residuals, the higher the variance of the coefficients.
- The variance of \(\Vec{x}\). The lower variation in \(\Mat{x}\), the bigger the standard errors of the slope.
Now consider a multiple regression, \[ \Vec{y} = \beta_0 + \beta_1 \Vec{x}_1 + \beta_2 \Vec{x}_2 + u \]
this becomes, \[ \Var(\hat{\beta}_1) = \frac{\sigma_u^2}{(1 - R^2_1) \sum_{i = 1}^n (x_i - \bar{x})^2} \] where \(R^2_1\) is the \(R^2\) from the regression of \(\Vec{x}_1\) on \(\Vec{x}_2\), \[ \Vec{x} = \hat{\delta}_0 + \hat{\delta}_1 \Vec{x}_2 . \]
The factors affecting standard errors are
- Error variance: higher residuals leads to higher standard errors.
- Variance of \(\Vec{x}_1\): lower variation in \(\Vec{x}_2\) leads to higher standard errors.
- The strength of the relationship between \(x_1\) and \(x_2\). Stronger relationship between \(x_1\) and \(x_2\) (higher \(R^2\) of the regression of \(x_1\) on \(x_2\)) leads to higher standard errors.
These arguments generalize to more than two predictors.
8.0.1 What do do about it?
Multicollinearity is not an “error” in the model. All you can do is:
- Get more data
- Find more conditional variation in the predictor of interest
What it means depends on what you are doing.
Prediction: then you are interested in \(\hat{\Vec{y}}\) and not \(\hat{\beta}}\) (or its standard errors). In this case, multicollinearity is irrelevant.
Causal inference: in this case you are interested in \(\hat{\Vec{\beta}}\). Multicollinearity does not bias \(\hat{\beta}\). You should include all regressors to achieve balance, and include all relevant pre-treatment variables and not include post-treatment variables. Multicollinearity is not directly relevant in this choice. All multicollinearity means is that the variation in the treatment after accounting for selection effects is very low, making it hard to say anything about the treatment effect with that observational data.


Home
Contact
About me
Photo Galery
Welcome to My Personal Website
MD. Rabiul Islam (Tuhin)
Passionate for Programming Contest
Department of Computer Science and Engineering
University of Rajshahi


The man who's lunar-orbit rendezvous "saved the government $20 billion."
Added a new paragraph here
Among his many achievements, Dr. Houbolt was an avid mathematician, and
in researching and teaching himself orbital mechanics, he realized that
the concept of Lunar Orbit Rendezvous (LOR) had far-reaching
ramifications in space travel. He deemed this idea so important that he
risked his career promoting the concept of LOR.
Here's a time line of Dr. Houbolt's life:
1919 - Born in Altoona, Iowa
1942 - Earned MS degree in Civil Engineering from the
University of Illinois at Urbana-Champaign
1943 - Began his career as an engineer in the
Structures Research Division at the National Advisory Committee for
Aeronautics (NACA)
1949 - Associate Chief of the Dynamic Loads Division
1957 - Earned Ph.D at Swiss Federal Institute of
Technology, Zurich (ETH)
1961 - Chief of the Theoretical Mechanics Division
1963 - Received the NASA Exceptional Scientific
Achievement Award for the conception and development of the LOR. Left
NASA for position of Senior Vice President and Senior Consultant at
Aeronautical Research Associates of Princeton
1976 - Returned as Chief Aeronautical Scientist at
NASA
1984 - Retired from NASA
2014 - Died in Scarborough, ME after celebrating his
95th birthday
"I can safely say I'm shaking hands with the man who single-handedly
saved the government $20 billion."
-- Ed Garrock - NASA
If you have time, you should read more about this remarkable human being
at his
NASA Biography.


For any bugs or issues, reguarding the user interface or song playback please create an issue on the project Github page. Please ensure that there are not already existing issues for problems you find. Also keep in mind that the project is still a work in progress.
You can view the terms and conditions here.


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object synoptic.main.Main
public class Main
| Field Summary | |
|---|---|
static boolean |
allHelp
Print the extended usage message. |
static java.lang.String |
argsFilename
Command line arguments input filename to use. |
static boolean |
debugParse
Output the fields extracted from each log line and terminate. |
static boolean |
doBenchmarking
Perform benchmarking and output benchmark information. |
static java.lang.String |
dotExecutablePath
The absolute path to the dot command executable to use for outputting graphical representations of Synoptic models |
static boolean |
dumpInitialGraph
Dump the dot representation of the initial graph to file. |
static boolean |
dumpIntermediateStages
Dump the dot representations for intermediate Synoptic steps to file. |
static boolean |
dumpInvariants
Dump the complete list of mined synoptic.invariants for the set of input files to stdout. |
static boolean |
dumpPNG
Dump png of graph to file. |
static boolean |
help
Print the short usage message. |
static boolean |
ignoreNonMatchingLines
This option relieves the user from writing regular expressions to parse lines that they are not interested in. |
static java.lang.String |
initialNodeLabel
The label used to distinguish the dummy initial node -- constructed to transition to all initial trace log events. |
static boolean |
internCommonStrings
Intern commonly occurring strings, such as event types, as a memory-usage optimization. |
static java.util.List<java.lang.String> |
logFilenames
Input log files to run Synoptic on. |
static java.util.logging.Logger |
logger
|
static boolean |
logLvlExtraVerbose
|
static boolean |
logLvlQuiet
Be quiet, do not print much information. |
static boolean |
logLvlVerbose
Be verbose, print extra detailed information. |
static boolean |
noCoarsening
Do not perform the coarsening stage in Synoptic, and as final output use the most refined representation. |
static boolean |
noRefinement
Do not perform the refinement (and therefore do not perform coarsening) and do not produce any representation as output. |
static boolean |
outputEdgeLabels
This sets the output edge labels on graphs that are exported. |
static boolean |
outputInvariantsToFile
Whether or not to output the list of invariants to a file, with one invariant per line. |
static java.lang.String |
outputPathPrefix
Specifies the prefix of where to store the final Synoptic representation output. |
static java.lang.String |
partitionRegExp
|
static java.lang.String |
partitionRegExpDefault
A substitution expression, used to express how to map the trace lines into partition traces, to be considered as an individual sample of the behavior of the system. |
static boolean |
performExtraChecks
Turns on correctness checks that are disabled by default due to their expensive cpu\memory usage profiles. |
static java.util.Random |
random
Global source of pseudo-random numbers. |
static java.lang.Long |
randomSeed
Sets the random seed for Synoptic's source of pseudo-random numbers. |
static boolean |
recoverFromParseErrors
This allows users to get away with sloppy\incorrect regular expressions that might not fully cover the range of log lines appearing in the log files. |
static java.util.List<java.lang.String> |
regExps
Regular expressions used for parsing the trace file. |
static boolean |
runAllTests
Run all tests in synoptic.tests -- unit and integration tests, and then terminate. |
static boolean |
runTests
Run all tests in synoptic.tests.units -- all the unit tests, and then terminate. |
static java.lang.String |
separateVTimeIndexSets
Use vector time indexes to partition the output graph into a set of graphs, one per distributed system node type. |
static java.lang.String |
separator
Regular expression separator string. |
static boolean |
showGui
Whether or not to show the Synoptic GUI. |
static boolean |
showInitialNode
Whether or not the output graphs include the common INITIAL state, which has an edge to all the start trace nodes. |
static boolean |
showTerminalNode
Whether or not the output graphs include the common TERMINAL state, to which all final trace nodes have an edge. |
static java.lang.String |
terminalNodeLabel
The label used to distinguish the dummy terminal node -- constructed so that all terminal trace log events transition to it. |
private static java.lang.String |
usage_string
One line synopsis of usage |
static boolean |
useFSMChecker
Use the new FSM checker instead of the LTL checker. |
static boolean |
version
Print the current Synoptic version. |
static java.lang.String |
versionString
The current Synoptic version. |
| Constructor Summary | |
|---|---|
Main()
|
| Method Summary | |
|---|---|
java.lang.Integer |
call()
The workhorse method, which uses TraceParser to parse the input files, and calls the primary Synoptic functions to perform refinement\coarsening and finally outputs the final graph to the output file (specified as a command line option). |
static java.lang.String |
getCmdLineOptDesc(java.lang.String optName)
Returns a command line option description for an option name |
static java.io.File[] |
getFiles(java.lang.String fileArg)
Given a potentially wild-carded file path, finds all those which match. |
static java.lang.String |
getIntermediateDumpFilename(java.lang.String stageName,
int roundNum)
Returns the filename for an intermediate dot file based on the given stage name and round number. |
static java.util.List<java.lang.String> |
getTestsInPackage(java.lang.String packageName)
Runs all the synoptic unit tests |
static void |
main(java.lang.String[] args)
The synoptic.main method to perform the inference algorithm. |
void |
printOptions()
Prints the values of all the options for this -- instance of Main class |
static void |
runTests(java.util.List<java.lang.String> testClasses)
Takes a list of paths that point to JUnit test classes and executes them using JUnitCore runner. |
static void |
SetUpLogging()
Sets up and configures the Main.logger object based on command line arguments |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static java.util.logging.Logger logger
public static final java.lang.String versionString
public static final java.lang.String initialNodeLabel
public static final java.lang.String terminalNodeLabel
public static java.util.Random random
public static boolean help
public static boolean allHelp
public static boolean version
public static boolean logLvlQuiet
public static boolean logLvlVerbose
public static boolean useFSMChecker
public static java.lang.Long randomSeed
public static java.lang.String separateVTimeIndexSets
public static java.lang.String separator
public static java.util.List<java.lang.String> regExps
public static final java.lang.String partitionRegExpDefault
public static java.lang.String partitionRegExp
public static boolean ignoreNonMatchingLines
public static boolean recoverFromParseErrors
public static boolean debugParse
public static java.lang.String argsFilename
public static java.lang.String outputPathPrefix
public static boolean outputInvariantsToFile
public static java.lang.String dotExecutablePath
public static boolean outputEdgeLabels
public static boolean showTerminalNode
public static boolean showInitialNode
public static boolean showGui
public static boolean dumpInvariants
public static boolean dumpInitialGraph
public static boolean dumpPNG
public static boolean dumpIntermediateStages
public static boolean logLvlExtraVerbose
public static boolean noCoarsening
public static boolean doBenchmarking
public static boolean internCommonStrings
public static boolean runTests
public static boolean runAllTests
public static boolean performExtraChecks
public static boolean noRefinement
public static java.util.List<java.lang.String> logFilenames
private static java.lang.String usage_string
| Constructor Detail |
|---|
public Main()
| Method Detail |
|---|
public static void main(java.lang.String[] args) throws java.lang.Exception
args
- - command-line options
java.lang.Exception
public static java.lang.String getCmdLineOptDesc(java.lang.String optName) throws InternalSynopticException
optName
- The option variable name
InternalSynopticException
- if optName cannot be accessedpublic static java.util.List<java.lang.String> getTestsInPackage(java.lang.String packageName) throws java.net.URISyntaxException
java.net.URISyntaxException
- if Main.class can't be locatedpublic static void runTests(java.util.List<java.lang.String> testClasses)
testClasses
- public static void SetUpLogging()
public static java.io.File[] getFiles(java.lang.String fileArg) throws java.lang.Exception
fileArg
- The file path which may potentially contain wildcards.
java.lang.Exception
public static java.lang.String getIntermediateDumpFilename(java.lang.String stageName, int roundNum)
stageName
- Stage name string, e.g. "r" for refinementroundNum
- Round number within the stage
public void printOptions() throws java.lang.IllegalArgumentException, java.lang.IllegalAccessException
java.lang.IllegalArgumentException
java.lang.IllegalAccessException
public java.lang.Integer call() throws java.lang.Exception
call
in interface java.util.concurrent.Callable<java.lang.Integer>
java.lang.Exception
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


About my values
I grew up in Brazil with my parents and four siblings. My father was self-employed, and things were always changing for him, so my family moved a lot from place to place throughout my life. That helped me develop one of my most vital traits—adaptability. We didn't have many material things, but we were close and happy most of the time.
When I was eleven years old, my family joined the Church of Jesus Christ of Latter-day Saints, that changed our lives for good. With the gospel of Jesus Christ's principles, I learned self-reliance and acquired a great desire for growth. That has shaped my identity and values more than anything else in my life. Our net of friends expanded dramatically. We now knew many people from different parts of the world. That got me interested in learning other languages, especially English, which I didn't realise at the time, but would positively influence my life in the future.
After that time, I discovered my love for books, nature, dancing, and learning and I became better at making friends and paying more attention to people's needs. That lead me to serve as a missionary for the church when I was twenty-one—a delightful accomplishment that taught me the value of compassion, discipline and hard work.
When I got back home from my mission, I decided to leave my parent's house and move to Florianópolis, in the south of Brazil, where I studied Human Resources Management and met my husband, Matt. While working at two jobs to afford rent and pay for my studies, I discovered how determined I could be and how much I valued independence.
I finished school two weeks before my wedding, and eighteen months later, we had a four-month-old baby and a plane ticket for Matt to come to New Zealand. Three months later, in August 2014, baby and I joined him, and together we made New Zealand our home. Leaving everything behind to have a chance at a better future for our kids was just the first of the sacrifices. We developed more faith and resilience and grew in our love for each other, as we journeyed on, with no family or friends' support while raising kids in a different country.
Life in New Zealand has been amazing to me. In 2015 I got a job as an HR coordinator, working with a fantastic team, met terrific people and learned a lot about the kiwi way of doing things. I fell in love with the culture from the beginning and did my best to be accepted and accepting.
After three years at the job, I decided to quit after I got back from maternity leave; I missed my baby too much, I was stressed, and I thought it was the right moment to focus on the kids. Then last year, after three years at home, I felt ready to go back to work, but thinking of HR didn't bring me joy, so I decided to look for something new, and here I am, at Dev Academy, showing my courage and optimism, hoping for a great future.
"The future is as bright as your faith". Thomas S. Monson
"Lorena is a trustworthy sister and friend. She is educated, polite, friendly and selfless. Growing up, she was my biggest role model and guide. I've always looked up to her, and I'm proud to say that I still do. She is an excellent wife and mother—someone who keeps on giving. She has a beautiful family and life, though not without trials and difficulties, she worked hard to have the things she has today, and always making sure to help others along the way." Isis Jennings (sister)
About my strengths and limitations
When contemplating what to do next, I retook a test I had taken years ago, the 16 personalities test. It turns out I haven't changed in all those years; I am still an INFJ or Advocate. Some of my strengths, according to the test, are:
And my weaknesses:
I don't know to what extent I agree to all of those things, but I can see some of them in myself. I believe I am passionate and principled. When I commit to something or someone, I follow through, no matter what. And it is also true that I can be reluctant to open up, I tend to keep my problems and concerns to myself, and I am sensitive to some kinds of criticism, but marriage has helped me improve a lot in those areas. :)
I think my determination and love of learning and feeling productive are a plus in terms of learning and career development. In contrast, my perfectionism can be an enemy in that area. Sometimes I have difficulty letting go, I want to keep working on the issue until it's perfect, but I know that that is not always the best approach, and I trust Dev Academy will have some lessons to teach me on that.
I could not think of an ethical decision I had to make, but I have something to share on working productively with others when there was resistance or tension.
In 2017, when I worked as an HR coordinator, my relationship with my manager became distant. When I went on maternity leave, the department hired two people to replace me, a clear indicator of how overloaded I was. When I got back, my manager became gradually more irritable and impatient with me. She expected me to resume all the activities that my two replacements had been working on, and I did, as best as possible, but I had a massive amount of work and very little flexibility. So I decided the best approach would be to have an honest conversation. I started by writing her a letter, stating everything that was on my mind. The next day, I rewrote it, removing anything that didn't pass through Socrates' three sieves (this is something I have been doing since I was fifteen, it's a principle for me), and finally, I made it into bullet points and scheduled a meeting with her. I started by asking for her feedback on how I was doing, and then I said what I had to say.  We both left the room, after tears and hugs, with a new-found appreciation for each other and determined to be more explicit about our feelings and goals.
It was a revealing and powerful experience for me. I learned that not everything is about me and that there has to be good communication for a team to work in harmony. If it were now, I would not wait until things got to that point, openness and empathy are fundamental to good teamwork.


property OnHandleChanged: TNotifyEvent;
This event is called when the HDC/QPainterH of property Handle changed. Use this event to customize handling of such events.


Background:
Data Processing Pipeline
- Data from a partner APIs
- Flow through different steps:
download, parse, deduplication, normalization, validation, publish...
Tools of the trade
- Python 3.5
- Runs on AWS
- Celery, Docker, SQS (RabbitMQ replacement), ECS, S3...
Scale up using AWS Auto Scaling
Well not exactly...
- Instances are added with auto scaling
- But there was no native solution for service scaling
- until... May 2016
- High CPU alarm
- Two actions on the alarm: EC2 scaling & custom service scaling
- Custom service scaling policy simply calls lambda function
- Lambda function uses boto to scale up
Reality check
- Very fickly, not easy to setup lambdas (have to zip, upload to S3 to deploy)
- Worked in testing/sandbox but...
- Did not work well in prod
- Had to manually scale up in high load
CPU utilization?
- Not the best indicator of load for every task
- IO meant CPU load went down
- But there were many tasks piling up
Solution: Scale up using SQS!
- Number of tasks in SQS was a better indicator of load
- AWS introduced Application Auto Scaling (in addition to Auto Scaling!). Yay!
- Implemented application auto scaling using SQS queue size
Result
- Cleaner code (scale up logic is in cloudformation file too)
- We removed a lot of code (lambda functions)
- Much smoother scale ups and downs
- Consistent with EC2 scaling
Learnings
- Rewrite or refactor? Trade-offs?
- Good to revisit past solutions
- Emerging tech changes often :)


Plugin Information |
|---|
View Export Prameters on the plugin site for more information. |
Description
This plugin can export Jenkins provided parameters to file with various formats.
Usage
If you install this plugin, you can select "Export parameters to file" item from Add build step dropdown list in job configuration.
Field |
Description |
|---|---|
File path |
The path of exported file. |
Format |
Exported file format. you can select one of them. |
Keys |
The list of parameter keys you want to export. they should be delimited by ",". |
Use regexp |
You can use regular expression as Keys if checked. |
Contributed build parameters
Name |
Description |
|---|---|
EXPORT_PARAMS_FILE |
The path to parameters file |
EXPORT_PARAMS_FORMAT |
The format of parameters file |
Formats
Name |
Extension |
|---|---|
.properties |
|
.xml |
|
.json |
|
.yml |
Example of exported file
Parameters
Key |
Value |
|---|---|
PARAM_STRING |
foobar |
PARAM_BOOL |
checked |
PARAM_TEXT |
orange |
Properties
#Mon Apr 03 23:00:00 JST 2014 PARAM_TEXT=orange\napple\ngrape PARAM_BOOL=true PARAM_STRING=foobar
XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <entry key="PARAM_TEXT">orange apple grape</entry> <entry key="PARAM_BOOL">true</entry> <entry key="PARAM_STRING">foobar</entry> </properties>
JSON
[{"key":"PARAM_BOOL","value":"true"},{"key":"PARAM_STRING","value":"foobar"},{"key":"PARAM_TEXT","value":"orange\napple\ngrape"}]
YAML
- key: PARAM_BOOL value: 'true' - key: PARAM_STRING value: foobar - key: PARAM_TEXT value: |- orange apple grape
License
MIT License.
Version history
Version 1.9 (10/13/2016)
- Fix JENKINS-38917: Version 1.8 stopped working with remote agents
Version 1.8 (07/26/2016)
- Contribute plugin specific parameters safely (Fix SECURITY-170)
- Note that this plugin still exports safe parameters only.
Version 1.5 (07/29/2014)
- Fix JENKINS-23849: Relative path "/../" in "File path" are ignored
- Ver. 1.2-1.4 was wrong release. Please ignore.
Version 1.1 (04/09/2014)
- Fix typo.
Version 1.0 (04/09/2014)
- First release.


Post edited 1 x times, last by
BrainFooLong
Administrator
Topicstarter
BrainFooLong
Administrator
As the title say, how do you think about a "sound" notice when a user on your radar join on the same server as you currently be in-game.
So you will be instantly warned by a sound notice that a user on your radar try to play on the same server as you currently are.
yeah! that would be really cool & helpful!
As long as the sound isn't overkill. Just a simple sound.
It shouldn't distract you from the game, just enough to be understood.


railo-context.Component coldbox.system.web.context.RequestContext
Copyright Since 2005 ColdBox Framework by Luis Majano and Ortus Solutions, Corp www.coldbox.org | www.luismajano.com | www.ortussolutions.com Models a ColdBox request, stores the incoming request collection and private request collection. It is also used to determine metadata about a request and helps you build RESTFul responses.
| Property Summary | ||||
|---|---|---|---|---|
| type | property | default | serializable | required |
struct
|
context
The request context. |
true
|
false
|
|
any
|
controller
ColdBox Controller. |
true
|
false
|
|
struct
|
privateContext
The private request context. |
true
|
false
|
|
any
|
properties
ColdBox System Properties. |
true
|
false
|
| Constructor Summary | |
|---|---|
|
init(struct properties='[runtime expression]', any controller)
Constructor. |
| Method Summary | |
|---|---|
string
|
buildLink(any linkTo, [boolean translate='true'], [boolean ssl], [any baseURL=''], [any queryString=''])
Builds a link to a passed event, either SES or normal link. |
any
|
clearCollection([boolean private='false'])
Clears the entire collection. |
any
|
clearPrivateCollection()
Clears the private collection. |
any
|
collectionAppend(struct collection, [boolean overwrite='false'], [boolean private='false'])
Append a structure to the collection, with overwrite or not. |
struct
|
getCollection([boolean deepCopy='false'], [boolean private='false'])
I Get a reference or deep copy of the public or private request Collection. |
string
|
getContext()
get: The request context. |
string
|
getController()
get: ColdBox Controller. |
string
|
getCurrentAction()
Gets the current action requested in the current event. |
string
|
getCurrentEvent()
Gets the current incoming event. |
string
|
getCurrentHandler()
Gets the current handler requested in the current event. |
string
|
getCurrentLayout()
Gets the current set layout for rendering. |
string
|
getCurrentLayoutModule()
Gets the current set layout's module for rendering. |
string
|
getCurrentModule()
Gets the current module name, else returns empty string. |
string
|
getCurrentRoute()
Get the current request's SES route that matched. |
string
|
getCurrentRoutedNamespace()
Get the current routed namespace that matched the SES route, if any. |
string
|
getCurrentRoutedURL()
Get the current routed URL that matched the SES route. |
string
|
getCurrentView()
Gets the current set view the framework will try to render for this request. |
struct
|
getCurrentViewArgs()
Gets the current set view the framework will try to render for this request. |
string
|
getCurrentViewModule()
Gets the current set views's module for rendering. |
string
|
getDefaultLayout()
Get's the default layout of the application. |
string
|
getDefaultView()
Get's the default view of the application. |
struct
|
getEventCacheableEntry()
Get the event cacheable entry. |
any
|
getEventName()
Get the event name. |
struct
|
getFolderLayouts()
Get the registered folder layout associations map. |
struct
|
getHTTPBasicCredentials()
Returns the username and password sent via HTTP basic authentication. |
any
|
getHTTPContent([boolean json='false'], [boolean xml='false'])
Get the raw HTTP content. |
any
|
getHTTPHeader(any The header to get, [any defaultValue=''])
Get an HTTP header. |
string
|
getHTTPMethod()
Get the HTTP Request Method Type. |
struct
|
getMemento()
Get a representation of this instance. |
string
|
getModuleRoot([any module=''])
Convenience method to get the current request's module root path. |
struct
|
getPrivateCollection([boolean deepCopy='false'])
I get a private collection. |
string
|
getPrivateContext()
get: The private request context. |
numeric
|
getPrivateSize()
Get the private collection Size. |
any
|
getPrivateTrimValue(any name, [any defaultValue])
Get a trim value from the private request collection. |
any
|
getPrivateValue(any name, [any defaultValue])
Get a value from the private request collection. |
string
|
getProperties()
get: ColdBox System Properties. |
struct
|
getRegisteredLayouts()
Get all the registered layouts in the configuration file. |
struct
|
getRenderData()
Get the renderData structure. |
struct
|
getRoutedStruct()
Get the routed structure of key-value pairs. |
string
|
getSelf()
Returns index. |
string
|
getSESBaseURL()
Get the SES base URL for this request. |
numeric
|
getSize([boolean private='false'])
Get the collection Size. |
any
|
getTrimValue(any name, [any defaultValue], [boolean private='false'])
Get a value from the request collection and if simple value, I will trim it. |
any
|
getValue(any name, [any defaultValue], [boolean private='false'])
Get a value from the public or private request collection. |
struct
|
getViewCacheableEntry()
Get the event cacheable entry. |
struct
|
getViewLayouts()
Get the registered view layout associations map. |
boolean
|
isAjax()
Determines if in an Ajax call or not by looking at the request headers. |
boolean
|
isEventCacheable()
Check wether the incoming event has been flagged for caching. |
boolean
|
isNoExecution()
Determine if we need to execute an incoming event or not. |
boolean
|
isNoRender()
Is this a no render request. |
boolean
|
isProxyRequest()
Is this a coldbox proxy request. |
boolean
|
isSES()
Is this request in SES mode. |
boolean
|
isSSL()
Are we in SSL or not? This method looks at cgi. |
boolean
|
isViewCacheable()
Check wether the incoming view has been flagged for caching. |
any
|
noExecution()
Set that the request will not execute an incoming event. |
any
|
noLayout()
Mark this request to not use a layout for rendering. |
any
|
noRender([boolean remove='false'])
Set the flag that tells the framework not to render, just execute. |
any
|
overrideEvent(any event)
Override the current event in the request collection. |
any
|
paramPrivateValue(any name, any value)
Just like cfparam, but for the private request collection. |
any
|
paramValue(any name, any value, [boolean private='false'])
Just like cfparam, but for the request collection. |
any
|
privateCollectionAppend(struct collection, [boolean overwrite='false'])
Append a structure to the collection, with overwrite or not. |
boolean
|
privateValueExists(any name)
Check if a value exists in the private request collection. |
any
|
removeEventCacheableEntry()
Check wether the incoming event has been flagged for caching. |
any
|
removePrivateValue(any name, [boolean private='false'])
remove a value in the private request collection. |
any
|
removeValue(any name, [boolean private='false'])
remove a value in the request collection. |
any
|
renderData([any type='HTML'], any data, [any contentType=''], [any encoding='utf-8'], [numeric statusCode='200'], [any statusText=''], [any location=''], [any jsonCallback=''], [any jsonQueryFormat='query'], [boolean jsonAsText='false'], [any xmlColumnList=''], [boolean xmlUseCDATA='false'], [any xmlListDelimiter=','], [any xmlRootName=''], [struct pdfArgs='[runtime expression]'], [any formats=''], [any formatsView=''], [boolean isBinary='false'])
Use this method to tell the framework to render data for you. |
private any
|
renderWithFormats()
Render data with formats. |
any
|
setContext(struct context)
set: The request context. |
any
|
setController(any controller)
set: ColdBox Controller. |
any
|
setDefaultLayout(any defaultLayout)
Override the default layout for a request. |
any
|
setDefaultView(any defaultView)
Override the default view for a request. |
any
|
setEventCacheableEntry(struct cacheEntry)
Check wether the incoming event has been flagged for caching. |
any
|
setHTTPHeader([any statusCode], [any statusText=''], [any name], [any value=''])
Set an HTTP Header. |
any
|
setIsSES(boolean isSES)
Is this request in SES mode. |
any
|
setLayout(any name, [any module=''])
Set the layout to override and render. |
any
|
setMemento(struct memento)
Override the instance. |
any
|
setPrivateContext(struct privateContext)
set: The private request context. |
any
|
setPrivateValue(any name, any value)
Set a value in the private request collection. |
any
|
setProperties(any properties)
set: ColdBox System Properties. |
any
|
setProxyRequest()
Set that this is a proxy request. |
any
|
setRoutedStruct(struct routedStruct)
Get the routed structure of key-value pairs. |
any
|
setSESBaseURL(string sesBaseURL)
Set the ses base URL for this request. |
any
|
setValue(any name, any value, [boolean private='false'])
Set a value in the request collection. |
any
|
setView([any view], [struct args='[runtime expression]'], [any layout], [any module=''], [boolean noLayout='false'], [boolean cache='false'], [any cacheTimeout=''], [any cacheLastAccessTimeout=''], [any cacheSuffix=''], [any cacheProvider='template'])
Set the view to render in this request. |
any
|
setViewCacheableEntry(struct cacheEntry)
Set the view cacheable entry. |
boolean
|
valueExists(any name, [boolean private='false'])
Check if a value exists in the request collection. |
| Methods inherited from class railo-context.Component |
|---|
| None |
| Constructor Detail |
|---|
Constructor
properties
- The ColdBox application settingscontroller
- Acess to the system controller| Property Detail |
|---|
The request context
required
- falseserializable
- trueColdBox Controller
required
- falseserializable
- trueThe private request context
required
- falseserializable
- trueColdBox System Properties
required
- falseserializable
- true| Method Detail |
|---|
Builds a link to a passed event, either SES or normal link. If the ses interceptor is declared it will create routes
linkTo
- The event or route you want to create the link totranslate
- Translate between . and / depending on the ses mode. So you can just use dot notationssl
- Turn SSl on/off on URL creationbaseURL
- If not using SES, you can use this argument to create your own base url apart from the default of index.cfm. Example: https://mysample.com/index.cfmqueryString
- The query string to appendClears the entire collection
private
- Use public or private request collectionClears the private collection
Append a structure to the collection, with overwrite or not. Overwrite = false by default
collection
- The collection to incorporateoverwrite
- Overwrite elements, defaults to falseprivate
- Private or public, defaults public.I Get a reference or deep copy of the public or private request Collection
deepCopy
- Default is false, gives a reference to the collection. True, creates a deep copy of the collection.private
- Use public or private request collectionget: The request context
get: ColdBox Controller
Gets the current action requested in the current event
Gets the current incoming event
Gets the current handler requested in the current event
Gets the current set layout for rendering
Gets the current set layout's module for rendering
Gets the current module name, else returns empty string
Get the current request's SES route that matched
Get the current routed namespace that matched the SES route, if any
Get the current routed URL that matched the SES route
Gets the current set view the framework will try to render for this request
Gets the current set view the framework will try to render for this request
Gets the current set views's module for rendering
Get's the default layout of the application
Get's the default view of the application
Get the event cacheable entry
Get the event name
Get the registered folder layout associations map
Returns the username and password sent via HTTP basic authentication
Get the raw HTTP content
json
- Try to return the content as deserialized jsonxml
- Try to return the content as an XML objectGet an HTTP header
The header to get
defaultValue
- The default value if not foundGet the HTTP Request Method Type
Get a representation of this instance
Convenience method to get the current request's module root path. If no module, then returns empty path. You can also get this from the modules settings
module
- Optional name of the module you want the root for, defaults to the current running moduleI get a private collection
deepCopy
- Default is false, gives a reference to the collection. True, creates a deep copy of the collection.get: The private request context
Get the private collection Size
Get a trim value from the private request collection.
name
- The key namedefaultValue
- default valueGet a value from the private request collection.
name
- The key namedefaultValue
- default valueget: ColdBox System Properties
Get all the registered layouts in the configuration file
Get the renderData structure
Get the routed structure of key-value pairs. What the ses interceptor could match.
Returns index.cfm?{eventName}=
Get the SES base URL for this request
Get the collection Size
private
- Private or public, defaults public.Get a value from the request collection and if simple value, I will trim it.
name
- The key namedefaultValue
- default valueprivate
- Private or public, defaults public.Get a value from the public or private request collection.
name
- The key namedefaultValue
- default valueprivate
- Private or public, defaults public.Get the event cacheable entry
Get the registered view layout associations map
Determines if in an Ajax call or not by looking at the request headers
Check wether the incoming event has been flagged for caching
Determine if we need to execute an incoming event or not
Is this a no render request
Is this a coldbox proxy request
Is this request in SES mode
Are we in SSL or not? This method looks at cgi.server_port_secure for indication
Check wether the incoming view has been flagged for caching
Set that the request will not execute an incoming event. Most likely simulating a servlet call
Mark this request to not use a layout for rendering
Set the flag that tells the framework not to render, just execute
remove
- Remove the flag completelyOverride the current event in the request collection. This method does not execute the event, it just replaces the event to be executed by the framework's RunEvent() method. This method is usually called from an onRequestStart or onApplicationStart method
event
- The event to override withJust like cfparam, but for the private request collection
name
- The key namevalue
- The valueJust like cfparam, but for the request collection
name
- The key namevalue
- The valueprivate
- Private or public, defaults public.Append a structure to the collection, with overwrite or not. Overwrite = false by default
collection
- The collection to incorporateoverwrite
- Overwrite elements, defaults to falseCheck if a value exists in the private request collection
name
- The key nameCheck wether the incoming event has been flagged for caching
remove a value in the private request collection
name
- The key nameprivate
remove a value in the request collection
name
- The key nameprivate
- Private or public, defaults public.Use this method to tell the framework to render data for you. The framework will take care of marshalling the data for you
type
- The type of data to render. Valid types are JSON, JSONP, JSONT, XML, WDDX, PLAIN/HTML, TEXT, PDF. The deafult is HTML or PLAIN. If an invalid type is sent in, this method will throw an errordata
- The data you would like to marshall and return by the frameworkcontentType
- The content type of the data. This will be used in the cfcontent tag: text/html, text/plain, text/xml, text/json, etc. The default value is text/html. However, if you choose JSON this method will choose application/json, if you choose WDDX or XML this method will choose text/xml for you.encoding
- The default character encoding to use. The default encoding is utf-8statusCode
- The HTTP status code to send to the browser. Defaults to 200statusText
- Explains the HTTP status code sent to the browser.location
- Optional argument used to set the HTTP Location headerjsonCallback
- Only needed when using JSONP, this is the callback to add to the JSON packetjsonQueryFormat
- JSON Only: query or array format for encoding. The default is CF query standardjsonAsText
- If set to false, defaults content mime-type to application/json, else will change encoding to plain/textxmlColumnList
- XML Only: Choose which columns to inspect, by default it uses all the columns in the query, if using a queryxmlUseCDATA
- XML Only: Use CDATA content for ALL values. The default is falsexmlListDelimiter
- XML Only: The delimiter in the list. Comma by defaultxmlRootName
- XML Only: The name of the initial root element of the XML packetpdfArgs
- All the PDF arguments to pass along to the CFDocument tag.formats
- The formats list or array that ColdBox should respond to using the passed in data argument. You can pass any of the valid types (JSON,JSONP,JSONT,XML,WDDX,PLAIN,HTML,TEXT,PDF). For PDF and HTML we will try to render the view by convention based on the incoming eventformatsView
- The view that should be used for rendering HTML/PLAIN/PDF. By default ColdBox uses the name of the event as an implicit viewisBinary
- Bit that determines if the data being set for rendering is binary or not.Render data with formats
set: The request context
context
set: ColdBox Controller
controller
Override the default layout for a request
defaultLayout
Override the default view for a request
defaultView
Check wether the incoming event has been flagged for caching
cacheEntry
- The md entry for cachingSet an HTTP Header return RequestContext
statusCode
- the status codestatusText
- the status textname
- The header namevalue
- The header valueIs this request in SES mode
isSES
Set the layout to override and render. Layouts are pre-defined in the config file. However I can override these settings if needed. Do not append a the cfm extension. Private Request Collection name
name
- The name of the layout to setmodule
- The module to useOverride the instance
memento
set: The private request context
privateContext
Set a value in the private request collection
name
- The key namevalue
- The valueset: ColdBox System Properties
properties
Set that this is a proxy request
Get the routed structure of key-value pairs. What the ses interceptor could match.
routedStruct
Set the ses base URL for this request
sesBaseURL
Set a value in the request collection
name
- The key namevalue
- The valueprivate
- Private or public, defaults public.Set the view to render in this request. Private Request Collection Name: currentView, currentLayout
view
- The name of the view to set. If a layout has been defined it will assign it, else if will assign the default layout. No extension pleaseargs
- An optional set of arguments that will be available when the view is renderedlayout
- You can override the rendering layout of this setView() call if you want to. Else it defaults to implicit resolution or another override.module
- The explicit module viewnoLayout
- Boolean flag, wether the view sent in will be using a layout or not. Default is false. Uses a pre set layout or the default layout.cache
- True if you want to cache the rendered view.cacheTimeout
- The cache timeout in minutescacheLastAccessTimeout
- The last access timeout in minutescacheSuffix
- Add a cache suffix to the view cache entry. Great for multi-domain caching or i18n caching.cacheProvider
- The cache provider you want to use for storing the rendered view. By default we use the 'template' cache providerSet the view cacheable entry
cacheEntry
- The md entry for cachingCheck if a value exists in the request collection
name
- The key nameprivate
- Private or public, defaults public.


Foreign workers must secure 'certificate of no objection' - DOLE
A 'certificate of no objection' is required for foreign nationals to secure a visa to work in the Philippines
by Sofia TomacruzSubscribe
Email Address
Newsletters
- Glenda Gloria's Take this Tuesday
- Huddle by Miriam Grace Go
- The Newsbreak Agenda by Chay Hofileña
- Sometimes, all you need is video by Lilibeth Frondoso


Color Presets
Background
Base Color
Highlight Color
Text Color
Text Glow Color
Text Glow Opacity
Get CSS
35
Lorem ipsum dolor sit amet consectetur adipiscing elit, et al commore
January 21, 2012
Lorem ipsum dolor sit amet
January 21, 2012
Lorem ipsum dolor sit amet
January 21, 2012
Lorem ipsum dolor sit amet
January 21, 2012
View All Notifications
35
John Doe
Lorem ipsum dolor sit amet consectetur adipiscing elit, et al commore
January 21, 2012
John Doe
Lorem ipsum dolor sit amet
January 21, 2012
John Doe
Lorem ipsum dolor sit amet
January 21, 2012
John Doe
Lorem ipsum dolor sit amet
January 21, 2012
View All Messages
Hello, John Doe
Profile
Change Password
Logout
Dashboard
Charts
Calendar
File Manager
Table
Forms
Layouts
Elements
Wizard
Widgets
Typography
Grids & Panels
Gallery
Error Page
Icons
2000+
Floors Climbed
324
Calories Burned
74%
Kilometers Walked
14
Bugs Fixed
22%
Cars Repaired
77
Text Inputs
Text Field
Disabled Field
Read only Field
With Placeholder
Autocomplete
With Tooltip
jQuery-UI Spinner
Default Spinner
Decimal Spinner
Time Spinner
Custom Inputs
Colorpicker
Styled File Input
Checkbox Switches
Radio Switches
AutoSize Text Area
Select Inputs
Select Input
Option 1
Option 3
Option 4
Option 5
Multiple Select
Option 1
Option 2
Option 3
Option 4
Option 5
Option 6
Option 7
Option 8
Option 9
Option 10
Advanced Select Inputs
Default Select2 Select
Alabama
Alaska
Arizona
Arkansas
California
Colorado
Connecticut
Delaware
Florida
Georgia
Hawaii
Idaho
Illinois
Indiana
Iowa
Kansas
Kentucky
Louisiana
Maine
Maryland
Massachusetts
Michigan
Minnesota
Mississippi
Missouri
Montana
Nebraska
Nevada
New Hampshire
New Jersey
New Mexico
New York
North Dakota
North Carolina
Ohio
Oklahoma
Oregon
Pennsylvania
Rhode Island
South Carolina
South Dakota
Tennessee
Texas
Utah
Vermont
Virginia
Washington
West Virginia
Wisconsin
Wyoming
Multiple Select2 Select
Alabama
Alaska
Arizona
Arkansas
California
Colorado
Connecticut
Delaware
Florida
Georgia
Hawaii
Idaho
Illinois
Indiana
Iowa
Kansas
Kentucky
Louisiana
Maine
Maryland
Massachusetts
Michigan
Minnesota
Mississippi
Missouri
Montana
Nebraska
Nevada
New Hampshire
New Jersey
New Mexico
New York
North Dakota
North Carolina
Ohio
Oklahoma
Oregon
Pennsylvania
Rhode Island
South Carolina
South Dakota
Tennessee
Texas
Utah
Vermont
Virginia
Washington
West Virginia
Wisconsin
Wyoming
Grouped Select2 Select
Alaska
Hawaii
California
Nevada
Oregon
Washington
Arizona
Colorado
Idaho
Montana
Nebraska
New Mexico
North Dakota
Utah
Wyoming
Alabama
Arkansas
Illinois
Iowa
Kansas
Kentucky
Louisiana
Minnesota
Mississippi
Missouri
Oklahoma
South Dakota
Texas
Tennessee
Wisconsin
Connecticut
Delaware
Florida
Georgia
Indiana
Maine
Maryland
Massachusetts
Michigan
New Hampshire
New Jersey
New York
North Carolina
Ohio
Pennsylvania
Rhode Island
South Carolina
Vermont
Virginia
West Virginia
Pick List Plugin
2008-2009 "Mini" Baja
AAPA - Asian American Psychological Association
Academy of Film Geeks
Accounting Association
ACLU
Active Minds
Activism with A Reel Edge (A.W.A.R.E.)
Adopt a Grandparent Program
Africa Awareness Student Organization
African Diasporic Cultural RC Interns
Agape
AGE-Alliance for Graduate Excellence
AICHE (American Inst of Chemical Engineers)
AIDS Sensitivity Awareness Project ASAP
Aikido Club
Akanke
WYSIWYG Editor
WYSIWYG
Validation
Required Validation
Email Validation
URL Validation
Digit Validation
Select Box Validation
Option 1
Option 3
Option 4
Option 5
File Input Validation
Spinner Validation
Radiobutton Validation
Male
Female


NGVS Galaxy Morphological Tool -
Morphology (select one)
Elliptical
Spiral
Irregular
ES Transition
SI Transition
EI Transition
Substructure (select all that apply)
Disk
Bar
Spiral Arms
Shells
Streams
Dust
Star Formation (select one)
Quiescent
Intermediate
Active
Star Formation Modes (select all that apply)
Global
Core
Disk
Filaments
Patchy
Extended
Notes
Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi soluta consequuntur repellendus, iure in amet deleniti numquam odit debitis recusandae quod ipsum ullam fugit eos fugiat beatae, placeat saepe! Nisi.
Select galaxy
Select a galaxy
×
View classified galaxies
Submit
Display Options
Scale:
linear
log
histeq
power
sqrt
squared
asinh
sinh
Colourmap:
grey
heat
cool
turbo
viridis
magma
sls
red
green
blue
Image filter:
u
g
i
z
Residual filter:
u
g
i
z
Unsharp masking fits:
Circular Smoothed
Circular Full resolution
Ellptical Smoothed
Elliptical Full resolution
retrieveImage
+
-
U,g,i colour JPEG
Original fits image
Residual fits image
Unsharp mask fits image
Measured Properties
RA:
DEC:
Nucleus:
class_spec:
g_re_cg:
g_mag_cg:
u_mag_cg:
r_mag_cg:
i_mag_cg:
z_mag_cg:


CURLOPT_PORT explained
NAME
CURLOPT_PORT - set remote port number to work with
SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PORT, long number);
DESCRIPTION
This option sets number to be the remote port number to connect to, instead of the one specified in the URL or the default port for the used protocol.
Usually, you just let the URL decide which port to use but this allows the application to override that.
While this option accepts a 'long', a port number is usually a 16 bit number and therefore using a port number over 65535 will cause a run-time error.
DEFAULT
By default this is 0 which makes it not used.
PROTOCOLS
Used for all protocols that speak to a port number.
EXAMPLE
CURL *curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/foo.bin"); curl_easy_setopt(curl, CURLOPT_PORT, 8080L); ret = curl_easy_perform(curl); curl_easy_cleanup(curl); }
AVAILABILITY
RETURN VALUE
Returns CURLE_OK
SEE ALSO
CURLOPT_STDERR, CURLOPT_DEBUGFUNCTION
This HTML page was made with roffit.


{% extends "_post.html" %}
{% hyde
title: "Mercurial Workflows: Stable & Default"
snip: "Part 2 of several."
created: 2010-05-17 18:27:00
flattr: true
%}
{% block article %}
This entry is the second in my series describing various Mercurial workflows.
The [first][branch-as-needed] describes the simplest one: branching only
when necessary.
If you're working on a larger project you might want something with a bit more
structure. This post is about the "stable and default" workflow.
[branch-as-needed]: /blog/2010/02/mercurial-workflows-branch-as-needed/
[TOC]
"Stable and Default" in a Nutshell
----------------------------------
The general idea of this workflow is that you keep two branches: `default` and
`stable`.
* **`default`** is the branch where new features and functionality are added.
* **`stable`** is where bug fixes are added, as well as documentation improvements
that don't pertain to new features.
Each time you make a bug fix in `stable` you merge it into `default`, so
`default` is always a superset of `stable`.
Periodically (whenever you're ready for a "major release") you'll merge
`default` into `stable` so new features can be included in releases.
[Mercurial][] itself [uses][hg-branches] this workflow for development, so it
can scale well to projects of moderate to large size.
[Mercurial]: http://hg-scm.org/
[hg-branches]: http://selenic.com/repo/hg/branches/
Branch Setup
------------
To get started using this workflow you'll need to create a `stable` named
branch:
:::console
hg branch stable
hg commit -m "Create the stable branch."
Once you do this users of your project can clone the `stable` branch and be
confident that they're getting a relatively stable version of your code. To
clone a branch like this they would do something like:
:::console
hg clone http://bitbucket.org/you/yourproject#stable
This will clone your project's repository and include only changesets on the
`stable` branch (and any of their ancestors).
Making Changes
--------------
The goal of this workflow is to do all non-bugfix development on the `default`
branch. Pure bug fixes should go on the `stable` branch so `stable` stays as,
well, "stable" as possible.
Users that want to live on the bleeding edge of development can use the
`default` branch of your project. Hopefully your project has some users that
are willing to work with `default` and inform you of bugs found with the new
functionality you add to it.
Whenever you make a change to `stable` you'll want to merge it into `default`
so that `default` always remains a superset of `stable`. This makes `default`
as stable as it can possibly be. It also makes it easier to merge `default`
back into stable whenever you're ready for a major release.
Here's an example of how your repository's graph will end up looking:
![Sample Default and Stable Graph](/media/images{{parent_url}}/default-stable-example.png "Sample Default and Stable Graph")
Notice how each time some changes are made on `stable` they're merged to
`default`.
Releasing Major Versions
------------------------
There will come a time when you're ready to release non-bugfix improvements to
your project to the general public. Non-bugfix improvements are made in the
`default` branch, so when you're ready to do this you'll merge `default` into
`stable`.
Because your project has more `stable` users than bleeding-edge users, you'll
probably get more bug reports than usual after you release a major version.
This is to be expected and you should be ready for it.
Tagging Releases
----------------
Any decent project should tag releases. This lets users easily use a version
of your project that they know works.
Wondering how to decide when to tag releases, and what to use for the tags?
The [semantic versioning][semver] specification is a great guide that makes it
easy for your users to know (in a broad sense) what each release changes.
In a nutshell, tags in a semantically versioned project work like this:
* Tags are of the form "v[MAJOR].[MINOR].[BUGFIX]"
* Tags with a major version of "0" make no guarantees about anything. They are
used for alpha/beta versions of the project.
* An increase in the bugfix version of a project means "bugs were fixed."
* An increase in the minor version of a project means "functionality has been
added without breaking backwards compatibility."
* An increase in the major version of a project means "backwards compatibility
has been broken."
Unfortunately this workflow makes it a bit more complicated to add semantic
versioning tags to your project. The rules for semantic tagging would work like
this:
* When you fix a bug on the `stable` branch, increment the bugfix version on
`stable` and merge `stable` into `default`.
* When you add new functionality and are ready to release it to the public,
merge `default` into stable and increment the minor version of `stable`.
* When you're ready for a backwards-incompatible release, merge `default` into
stable and increment the major version of `stable`.
The problem with this is that `default` never has any version tags. However,
this probably isn't a big deal because users of `default` are those that want
to live on the bleeding edge of your project and aren't as concerned with
stability.
[semver]: http://semver.org/
Why Default and Stable Instead of Default and Dev?
--------------------------------------------------
In the workflow I've described there are two branches: `default` and `stable`.
You might be wondering why `default` is used for new development and the
"stable" branch is relegated to a named branch.
The reason is that `default` will typically have many, many more changesets
added to it than `stable`, and so making the "development" branch the default
makes it easier on the developers.
There is absolutely *nothing* wrong with making `default` the "stable" branch
and creating a `dev` branch for "unstable" changes. If your project rarely adds
new functionality but is more concerned with fixing bugs this version of the
workflow will obviously be better for you.
This version also has the added advantage of giving users that naively clone
your project (without a branch specified) the stable version. Since many users
don't bother to read instructions even when you provide them, there is a strong
argument for using it even when your project is *not* overly concerned with bug
fixes.
It's up to you to decide which version you want to use.
{% endblock %}


var i : int
i := 24 % 24 is assignable to i
var width : 0 .. 319
width := 3 * i % 3 * i is assignable to width
var a : array 1 .. 25 of string
a (i) := "Ralph" % "Ralph" is assignable to a(i)
var name : string (20)
name := a (i) % a(i) is assignable to name
var b : array 1 .. 25 of string
b := a % Array a is assignable to b
type personType :
record
age : int
name : string (20)
end record
var r, s : personType
s := r % Record r is assignable to s
An expression is defined to be assignable to a variable if the two root types are equivalent or if an integer value is being assigned to a real variable (in which case the integer value is automatically converted to real). Two types are considered to be equivalent if they are essentially the same type (see equivalence for the detailed definition of this term).
In most cases a root type is simply the type itself. The exceptions are subranges and strings. The root type of a subrange, such as 0 .. 319, is the type of its bounds (int type in this example). The root type of a string, such as the type string(9), is the most general string type, namely string.
When a subrange variable, such as width, is used as an expression, for example on the right side of an assignment statement, its type is considered to be the root type (integer in this case) rather than the subrange. When an expression is assigned to a subrange variable such as width, the value (3*i in this example) must lie in the subrange. Analogously, any string variable used in an expression is considered to be of the most general type of string. When a string value is assigned to a string variable, its length must not exceed the variable's maximum length.
Turing's assignability rule applies to characters and strings in this way. A char value can be assigned (or passed to an non var parameter) with automatic conversion to a char(1) variable and vice versa. String values of length 1 can be assigned to char variables. Character, that is char, values can be assigned to string variables, yielding a string of length 1. String values of length n are assignable with automatic conversion to char(n) variables. Values of type char(n) can be assigned with automatic conversion to string variables.
Turing's assignability rule applies to pointers to classes in this way. A pointer that locates an object created as class E, can be assigned to a pointer to class B only if B is an ancestor of (or the same as) E. For example, a pointer to an object that is a stackWithDepth can be assigned to a pointer to stack, where stackWithDepth is a child of stack, but not vice versa. The pointer nil can be assigned to any pointer variable, but the value nil(C) can only be assigned to a pointer to an ancestor of C.
Objects of classes can be assigned to each other only if both were created as the same class.


Class StartEncodingRequest
StartEncodingRequest
Inheritance
System.Object
StartEncodingRequest
Inherited Members
System.Object.ToString()
System.Object.Equals(System.Object)
System.Object.Equals(System.Object, System.Object)
System.Object.ReferenceEquals(System.Object, System.Object)
System.Object.GetHashCode()
System.Object.GetType()
System.Object.MemberwiseClone()
Namespace: Bitmovin.Api.Sdk.Models
Assembly: Bitmovin.Api.Sdk.dll
Syntax
public class StartEncodingRequest
Properties
EncodingMode
The pass mode of the encoding
Declaration
public EncodingMode? EncodingMode { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Nullable<EncodingMode> |
HandleVariableInputFps
Enable frame dropping/duplication to handle variable frames per seconds of video input streams
Declaration
public bool? HandleVariableInputFps { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Nullable<System.Boolean> |
ManifestGenerator
Sets the version of the manifest generation engine
Declaration
public ManifestGenerator? ManifestGenerator { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Nullable<ManifestGenerator> |
PerTitle
Per-Title settings
Declaration
public PerTitle PerTitle { get; set; }
Property Value
| Type | Description |
|---|---|
| PerTitle |
PreviewDashManifests
List of preview DASH manifests to be created
Declaration
public List<ManifestResource> PreviewDashManifests { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Collections.Generic.List<ManifestResource> |
PreviewHlsManifests
List of preview HLS manifests to be created
Declaration
public List<ManifestResource> PreviewHlsManifests { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Collections.Generic.List<ManifestResource> |
Scheduling
Set scheduling parameters of the encoding.
Declaration
public Scheduling Scheduling { get; set; }
Property Value
| Type | Description |
|---|---|
| Scheduling |
Trimming
Allows to encode only part of the input. Defines start (offset) and duration of the desired section.
Declaration
public Trimming Trimming { get; set; }
Property Value
| Type | Description |
|---|---|
| Trimming |
Tweaks
Set special tweaks for your encoding job.
Declaration
public Tweaks Tweaks { get; set; }
Property Value
| Type | Description |
|---|---|
| Tweaks |
VodDashManifests
List of VoD DASH manifests to be created after encoding finished successfully
Declaration
public List<ManifestResource> VodDashManifests { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Collections.Generic.List<ManifestResource> |
VodHlsManifests
List of VoD HLS manifests to be created after encoding finished successfully
Declaration
public List<ManifestResource> VodHlsManifests { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Collections.Generic.List<ManifestResource> |
VodSmoothManifests
List of VoD SMOOTH manifests to be created after encoding finished successfully
Declaration
public List<ManifestResource> VodSmoothManifests { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Collections.Generic.List<ManifestResource> |


Reactions API
Reactions are words or short phrases which can be attached to any arbitrary URL (the “topic”). They’re similar to “likes” but much more general.
Each reaction is constrained to 20 lowercase english letters.
import {reactions} from 'dat://unwalled.garden/index.js'
await reactions.list({
authors,
topics,
visiblity,
sortBy,
offset,
limit,
reverse
})
await reactions.tabulate(topic, {authors, visiblity})
await reactions.add(topic, phrase)
await reactions.remove(topic, phrase)
Reaction
The values returned by reaction functions will fit the following object shape:
| Attribute |
Type |
Usage |
| url |
string |
The URL of the reaction record |
| topic |
string |
The URL that the reaction is attached to |
| phrases |
string[] |
The phrases in the reaction |
| author |
Object |
The site that authored the reaction |
| url |
string |
|
| title |
string |
|
| description |
string |
|
| type |
string |
|
| visibility |
string |
The visibility of the reaction |
TabulatedReaction
The values returned by tabulate()
will fit the following object shape:
| Attribute |
Type |
Usage |
| topic |
string |
The URL that the reaction is attached to |
| phrase |
string |
The phrase in the reaction |
| authors |
Object[] |
The sites that authored the reaction |
| url |
string |
|
| title |
string |
|
| description |
string |
|
| type |
string |
|
list(opts)
List the reactions on the network.
| Param |
Type |
Default |
Usage |
| opts |
Object |
|
|
| authors |
string|string[] |
|
Filter by author URLs |
| topics |
string|string[] |
|
Filter by topic URLs |
| visibility |
string |
'all' |
Filter by visibility. See visibility |
| sortBy |
string |
'createdAt' |
One of: 'createdAt' |
| offset |
number |
0 |
|
| limit |
number |
|
|
| reverse |
boolean |
false |
|
| Returns |
Promise<Reaction[]> |
tabulate(topic, opts)
Tabulate the reactions on a topic.
| Param |
Type |
Default |
Usage |
| topic |
string |
|
Topic URL (required) |
| opts |
Object |
|
|
| authors |
string|string[] |
|
Filter by author URLs |
| visibility |
string |
'all' |
Filter by visibility. See visibility |
| Returns |
Promise<TabulatedReaction[]> |
add(topic, phrase)
Add a reaction phrase to the current user’s site. The visibility of the reaction will be copied from the target topic’s record.
| Param |
Type |
Default |
Usage |
| topic |
string |
|
Topic URL (required) |
| phrase |
string |
|
The phrase to add |
| Returns |
Promise<Reaction> |
remove(topic, phrase)
Remove a reaction phrase from the current user’s site.
| Param |
Type |
Default |
Usage |
| topic |
string |
|
Topic URL (required) |
| phrase |
string |
|
The phrase to remove |
| Returns |
Promise<Reaction> |


Background Every Web Developer Needs to Know
Introduction
this article I'll describe the World Wide Web from a high level perspective, focusing on how a web page is request and delivered from a web server to a web browser. Then, I want to talk about web browsers, how they interpret the HTML you write, differences between browsers, what are standards and to paraphrase the old joke "if Standards are so great, why are there so many of them?" Finally, I'll talk about the thought process behind HTML5 and CSS3, why they were introduced and what they hope to achieve.
A Brief Technical Overview of the World Wide Web
The World Wide Web started out as a means for sharing scientific resources like research documentation between governmental and academic institutions. It took time for the technologies and practices to evolve beyond its original purpose.
From a technical perspective, the World Wide Web is comprised of several technologies ... first, it involves a simple markup (the Hyper-text Markup Language, or HTML) to both structure and format textual information. When first introduced its claim to fame was the hyperlink which allowed the publisher of a document to add a link to other research papers available from across the world, creating a virtual web of information (thus, the name). Second, one or more interlinked pages are published to a server that is connected to an open network which we know today as the Internet.
A protocol was devised that specialized in allowing a request/response-style communication between two computers. In other words, one user requests a document by typing an address for a document into a special program called a web browser, and the web browser packages up that request and sends it out into the network. The request takes the form of a specially formatted packet of data. You can think of this packet of information like a self-addressed stamped envelope -- containing both the address of the information requested and the address where that information should be sent back to. This specially formatted packet is known as Hyper-text Transfer Protocol, or rather, HTTP, and for simplicity's sake you can think of it merely as an electronic envelope. See Figure 1 for the types of information sent in the HTTP Request and HTTP Response messages.
The HTTP request message is routed through a series of network wires and routers (i.e., devices that know how to forward HTTP messages closer to their destination) spanning the globe using (ideally) the shortest route possible until it arrives at its destination, the web server at the address the requestor typed into the web browser. The web server responds to the request by locating the requested document or resource (in the figure, the index.html file), packaging it up using the same HTTP style envelope, then sending the requested document back on to the network. The connection would only take a fraction of a second and once the computer served up the request, it would not retain any information about that request in its memory. See Figure 2 for a diagram of interactivity between the client and server computers.
Once the requested document is delivered through the network back to requestor, that document is loaded into the web browser. The browser parses through the HTML and decides how to render (or rather, display) its content and appearance on the computer screen.
What Are Domain Names?
The request that users type into web browsers originally looked something like this:
http://<IP_ADDRESS>/index.htm
Why the series of numbers? Each computer on this network was assigned an address,
called an Internet Protocol Address, or IP Address. This was assigned through a
lower-level protocol called Transmission Control Protocol / Internet Protocol, or
rather, TCP/IP. It was the foundational technology that allowed requests to be
routed to the appropriate server that contained a given resource, or rather, web
page. However, because the IP address for a computer would change occasionally
for a given computer or institution, they devised a system called the Domain Name
System, or rather, the DNS, to turn a friendly name like:
mit.edu
... into the actual "location", like:
<IP_ADDRESS>
A system of top-level Domain Names was created ... .edu for educational institutions, .mil for Military, .gov for Government, .net for Network related resources, .org for Non-profit organizations, .com for Commercial organizations, etc. Later, other countries and a plethora of top-level domains were added and others for commercial and other interests.
The web browser will query databases of domain names and their associated IP Addresses and will translate the requests automatically for the user without his or her knowledge. Typically, each Internet Service Provider has a Domain Name System server that can be queried for resolving Domain Names into IP Addresses. The databases that contain this Domain Name information stay synchronized around the globe, although sometimes the synchronization process can take minutes or hours to complete.
The Purpose for Standards Groups
At every step of the way, one or more organizations were formed to help identify standards for these technologies comprised of experts and luminaries who were pushing these technologies forward. They would meet both virtually and in person to define and discuss the merits of adding new features to a given standard and would encourage organizations who were creating hardware and software to follow these standards so that products from different vendors could work together seamlessly. Perhaps one of the most influential and important standards body you will hear about is the W3C, or rather, the World Wide Web Consortium. They were one of the groups responsible for the latest version of HTML, version 5. Another is the WHATWG, or rather, the Web Hypertext Application Technology Working Group, which is comprised of a subset of the W3C and several additional experts and organizations that have a vested interest in the vitality of the World Wide Web. The background of HTML5, the previous versions of HTML, as well as the standards organizations involved is fascinating because you get a peek into both the process and the politics of these organizations.
Recap of the World Wide Web Technical Overview
From a purely technical perspective, you should now understand a few things:
- First of all, hopefully you now have an answer to the question everyone first starting out asks: "why the heck did they make URLs so convoluted? Wouldn't it be easier to just type in 'microsoft' instead of 'http://www.microsoft.com'?" There's an evolution of technologies, and furthermore, it was never intended for use by the masses. At some point commercialized and individual access to the internet dwarfed the intended use, however the technologies created 30 years ago are still in play.
- Second, hopefully you will begin see the purpose of things like http:// ... in which you are saying you want to access a specific channel of traffic, HTTP, or rather, World Wide Web traffic, as opposed to FTP (File Transfer Protocol) for working with large files, SMTP (Simple Mail Transfer Protocol) for sending email, and so on.
- Third, hopefully you see the purpose of .com, .edu, .net and so on ... at least, you understand the original purpose, and you understand how those domain names are translated into the actual IP Addresses that are utilized by routers to move traffic around the internet to it's intended destination.
- Fourth, hopefully you can see that the specifics of HTML - and all other standards - are decided on by a body of individuals who understand what is needed and propose and debate the merits of adding or removing parts of a given specification. You should also see the purpose for these standards - so that organizations creating hardware and software to support the World Wide Web can achieve a high degree of interoperability.
- Fifth, hopefully you can see the role that each component plays in the exchange of documents and other resources ... the web browser is responsible for interacting with the end user who requests a document by typing in a web address or clicks on a hyperlink. It also packages up that request and begins the process of requesting the document from it's host, the computer called the web server. The message is packaged using the HTTP protocol, which you can think of as an electronic envelope geared towards stateless request / response style transmissions between two computers. Routers are special devices that know how to interpret the address encoded in electronic envelopes, or rather, the HTTP messages, and route them closer to their ultimate destination. A web server is merely a computer at a given web address that is listening for HTTP requests, and if the address is valid, returns the requested document or resource using the same HTTP message addressing as a response.
One Final Note About Our Overview
Let me add that (a) I distilled this down and over-simplified it to keep it simple at a high level. You could spend months or years learning more about any single component of what I just described in a few sentences, and (b) after 30 years of use and technological advancement, web development has gotten a LOT more sophisticated. And most pertinent to this series of lessons, web development techniques and technologies have become much more sophisticated. While most of the underpinnings are still in play, some of the technologies have been refined and expanded.
Take HTML for example. In early versions, HTML was called on to do "double-duty" ... it expressed both the structure of a document as well as its aesthetic layout. In other words, the same syntax defined both the fact that there would be fie paragraphs separated by a series of headings indicating the relationship of those paragraphs to each other, AS WELL AS the font types, colors and sizes, the border around the web page, the rounded corners and other adornments to make the web page attractive. While scientists and academicians may not be overly concerned about the aesthetics, at least not 30 years ago, now the World Wide Web is used for eCommerce, web applications that mimic desktop applications, gaming and more.
More recently, these two responsibilities - of structure and presentation - have been split in two ... HTML should define the structure of the document, and Cascading Style Sheets should control the presentation, or rather, the style or aesthetic qualities of a web page. We'll see how this separation of responsibilities plays out throughout this course.


{% extends "aristotle_mdr/create/dec_template_wrapper.html" %} {% block formarea %} {% if form.oc_options %}
{% else %}No matching object classes were found for reuse, so a new one will be created.
{% endif %} {% if form.pr_options %} {% else %}No matching Properties were found for reuse, so a new one will be created.
{% endif %} {% endblock %}


|
Class Summary |
| AbortMultipartUploadOptions |
An AbortMultipartUploadOptions instance contains the advanced options to abort the multipart upload. |
| AccessControlList |
The AccessControlList defines the access control policy.Three policies are supported:private,readonly and public. |
| AccessControlPolicy |
AccessControlPolicy describes the basic access polices about a bucket/object. |
| Bucket |
This is just a model of a bucket. |
| CompleteMultipartUploadOptions |
An CompleteMultipartUploadOptions instance contains the advanced options to complete the multipart upload. |
| CompleteMultipartUploadResult |
A CompleteMultipartUploadResult instance contains the information about completing a multipart upload session. |
| Credential |
A container that contains your access key id and your access key secret. |
| InitiateMultipartUploadResult |
A InitiateMultipartUploadResult instance contains the information about initiating a multipart upload session. |
| ObjectEntity |
A object entity that contains the content of the object. |
| ObjectEtag |
An abjectEtag contains the MD5 of you object. |
| ObjectGetOptions |
An ObjectGetOptions instance contains the advanced options of getting an object. |
| ObjectInfo |
ObjectInfo describes the basic informations of an object. |
| ObjectList |
ObjectList describes the object information list and the query information. |
| ObjectListOptions |
An ObjectListOptions instance contains the advanced options of getting the object list of a bucket. |
| ObjectMetadata |
Metadata of your object. |
| Owner |
The onwer of a bucket in ks3. |
| PartInfo |
A partInfo describes the information of a part of a object. |
| PartList |
A PartList instance contains the result for querying a list of part of a object. |
| PartListOptions |
An PartListOptions instance contains the advanced options of getting a list of part of a object. |
| PresignedUrlOptions |
An PresignedUrlOptions instance contains the advanced options of making a pre-signed url. |
| UploadPart |
A basic element of a part of object. |
| UploadPartOptions |
An UploadPartOptions instance contains the advanced options of uploading a part of a object. |
| UploadPartResult |
A UploadPartResult instance contains the information about finishing a upload session. |


nextcss
Introduction
nextcss is a CSS framework from the future.
Your markup stays clean and semantic and it takes care of awesome responsive design.
It is powered by Rework, a flexible, fast JavaScript library for stylesheet manipulation.
More specifically, the following plugins are used:
nextcss is only tested on latest versions of popular browsers.
No IE8-9 hacks.
Live in the future, where everything is solved by flexbox.
You should use autoprefixer after using nextcss.
Installation
nextcss is available on npm.
The npm module nextcss
exports the Rework plugin.
It includes rework-npm, which lets you import the framework styles from your stylesheet:
:root {
/* You can do the following
customization before importing: */
--border-radius: 4px;
}
@import "nextcss";
There is a way to only import placeholders, without any top level rules (for special cases like components or something):
@import "nextcss/all";
Building
Broccoli is the recommended build tool.
Here's an example part of a build file of a nextcss project, using sweetbuild macros for Sweet.js:
var css = 'css'
-> rework({
compress: true, // The result is minified...
sourcemap: true, // ...but it's fine in devtools!
use: function(r) {
r.use(require('nextcss')({root: './css'}));
}
})
-> autoprefixer
-> file_mover({
files: {
'main.css': 'bundle.css'
// Browsers are confused when the original
// and compiled files have the same name
}
})
-> source_map.extract;
Rework and Sweet.js both represent the next big thing in front-end development — extensible CSS and Javascript.
Basically, building your own preprocessor instead of using very opinionated things like Sass and CoffeeScript.
And nextcss tries not to be opinionated as well.
There are almost zero class names, only placeholders and mixins.
Nothing is inside media queries, use whatever breakpoints you want.
Usage
Base
nextcss automatically includes normalize.css v3.
And then a little more defaults, some from typeplate and some from me:
* { box-sizing: border-box }
- images are responsive by default
{ max-width: 100% }
— who ever thought overflowing by default is a good idea?!
- hyphenation is on by default (except where it shouldn't be)
There's the .sr-only
class (and %sr-only
placeholder) from Bootstrap which is for screenreader-only text.
Like the opposite of aria-hidden="true"
.
The Micro Clearfix is available as a placeholder: %clearfix
.
You won't need it often though, because flexbox is a thing now.
nextcss also defines a --hidpi
custom media query for, you guessed it, high-DPI screens.
You should avoid using this one too.
I recommend compressive images for photos and vector graphics (SVG, fonts) for everything else.
Colors
The “new default” clrs.cc palette is used instead of default colors.
The color() function is available for color manipulation.
It is recommended to create semantic color variables (“success” instead of “green”):
:root {
--success: green;
--action: blue;
--failure: red;
}
.success-thingy {
background: linear-gradient(to bottom,
color(var(--success) tint(20%)),
color(var(--success) shade(20%)));
}
.thingy {
color: color(white shade(10%) alpha(0.5)); /* ... */
}
Grids
Flexbox-based responsive grids that keep markup semantic (if you can make up better names than demo-two-of-four
, of course — something like long-product
would be much better).
Infinitely nestable.
This module is based on Solved by Flexbox.
Basic grid usage
In the simple case, inherit from %grid-flex-N
where N is the number of columns, from 2 to 8.
Don't forget you can inherit from different placeholders in different media queries.
In such grids, the last line is automatically stretched to fill 100%.

These grids only allow one line of elements, but you can use multiple grids.

They can be easily nested.
The code is inspired by Solved by Flexbox.
.feed-post {
inherit: %media-object;
margin-top: 1.65em;
}
& img {
inherit: %round;
max-width: 4.7em;
max-height: @max-width;
}
& a {
text-decoration: none;
font-weight: bold;
}
& p {
margin: 0.1em 0;
}
& time {
font-style: italic;
}
& small {
display: block;
}

Delphine Cormier

It's really good to finally meet someone who gets it. Who gets me.

posted <time>yesterday at 3:14 pm</time>

Cosima Niehaus

+Delphine Cormier yeah, ditto, obvs

posted <time>yesterday at 3:16 pm</time>

Delphine Cormier
It's really good to finally meet someone who gets it. Who gets me.
posted
Lists
This is an unstyled unordered list (ul
), appropriate for text articles and such:
This is a normal vertical list of things:
.list-files {
inherit: %list-vertical;
}
& a {
flex: 1;
margin-left: 0.35em;
}

AUTOEXEC.BAT <time>a day ago</time>

IO.SYS <time>a day ago</time>

COMMAND.COM <time>a day ago</time>

PRINTER.SYS <time>a day ago</time>

DOSSHELL.INI <time>a day ago</time>

Buttons
Buttons are composed from:
- colors — background and foreground, obviously
- a shape — default, rounded, pill or circle
- a style — default, gradient, shade-gradient, bordered or borderonly
You can combine styles where it makes sense, like gradient bordered.
You should not repeat the shape in the hover/focus style.
This module has been largely inspired by Unicorn UI Buttons and Pure buttons.
.button-pure {
button: bgcolor(silver) fgcolor(black) rounded;
}
&:hover, &:focus {
button-style: bgcolor(silver) fgcolor(black) shade-gradient;
}
&:focus {
border-color: blue;
}
a.button-pure
a.button-pure[disabled]
.button-success {
button: bgcolor(green) fgcolor(white) gradient;
}
&:hover, &:focus {
button-style: bgcolor(green shade(20%)) fgcolor(white) gradient bordered;
}
a.button-success
a.button-success[disabled]
.button-borderonly {
button: bgcolor(white) fgcolor(fuchsia) borderonly pill;
}
&:hover, &:focus {
button-style: bgcolor(white) fgcolor(yellow) borderonly;
}
.button-yolo {
button: bgcolor(purple) circle(5em) gradient bordered;
}
&:hover, &:focus {
button-style: bgcolor(yellow) gradient bordered;
}
Forms
This module is mostly inspired by Pure forms.
A form with no custom styles is an inline form.
It already looks fine.
nextcss sets a default border-color
focus style on form elements.
<form>

Search the web
<input type="search">

<button class="button-pure">Go!</button>
</form>
These are forms with input addons (based on Solved by Flexbox):
.form-search label {
inherit: %input-addons;
inherit: %input-addons-rounded;
}
.form-password label {
inherit: %input-addons;
}
& input, & span {
border-color: teal;
}
&&:focus {
border-color: navy;
}
& span {
background: teal;
color: white;
}
<form class="form-search">

<input type="search">
<button class="button-pure">Go!</button>

</form>
<form class="form-password">

<input type="password">
Password</button>

</form>
This is a stacked form:
.form-comment {
inherit: %form-stacked;
}
& input:focus,
& select:focus,
& textarea:focus,
& button:focus {
border-color: transparent;
box-shadow: 0 0 4px blue;
}
&&:invalid {
box-shadow: 0 0 4px red;
}
<form class="form-comment">

Name <input type="text" required>

Email <input type="email" required>

Are you a spammer?
<select>
<option>Yes</option>
<option>No</option>
</select>

Comment <textarea required></textarea>

<button class="button-pure">Post!</button>
</form>
A style that looks cool on wide screens is aligned.
It uses the exact same markup as stacked, so you can use it inside of a media query!
This example also includes an input addon.
Resize your browser to see:
.form-feedback {
inherit: %form-stacked;
}
& label {
color: color(teal shade(25%));
}
& input, & select, & textarea, & span {
border-radius: 0;
border-width: 2px;
border-color: teal;
color: color(teal shade(35%));
}
&&:focus, & button:focus {
border-color: fuchsia;
}
&&&:invalid {
border-color: color(red shade(15%));
}
.field-with-warning {
inherit: %input-addons;
}
& span {
background: teal;
color: white;
}
@media screen and (min-width: 40em) {
.form-feedback {
inherit: %form-aligned;
}
}
<form class="form-feedback">

Your name

<input type="text" required>
first name only

Feedback type
<select>
<option>Bug</option>
<option>Idea</option>
<option>Praise</option>
</select>

What you want to say
<textarea required></textarea>

<button class="button-borderonly2">
Send feedback
</button>
</form>
Here's an example of a grouped form, which is probably the best style for login forms that look fine on both narrow (mobile) and wide screens.
.form-signup {
inherit: %form-grouped;
max-width: 320px; /* for demo purposes */
}
& input:focus {
outline: none;
border-color: green;
color: color(green shade(40%));
}
&&:invalid {
border-color: red;
color: color(red shade(40%));
}
<form class="form-signup">
<fieldset>
<input type="text" placeholder="Username" required>
<input type="email" placeholder="Email" required>
<input type="text" placeholder="Disabled input" disabled>
</fieldset>
<fieldset>
<input type="password" placeholder="Password" required>
<input type="password" placeholder="Confirm password" required>
</fieldset>
<button class="button-success">Sign up!</button>
</form>
Tables
nextcss includes CSS-powered responsive tables, based on this article.
You need each td
element to have data-col-label
set to the column label.
You can do it with a script or in a client-side or server-side templating language.
The example uses a script.
.table-frameworks {
inherit: %table-striped;
}
@media screen and (max-width: 40em) {
.table-frameworks {
inherit: %table-collapsed;
}
}
var ths = document.querySelectorAll('.table-frameworks th');
var headings = [];
for (var i = 0; i < ths.length; i++)
headings.push(ths[i].innerHTML);
var trs = document.querySelectorAll('.table-frameworks tbody tr');
for (var i = 0; i < trs.length; i++) {
var tds = trs[i].getElementsByTagName('td');
for (var j = 0; j < tds.length; j++)
tds[j].setAttribute('data-col-label', headings[j]);
}

Name
Website
Company

React
facebook.github.io/react
Facebook

Alerts
Alerts are created from a single color.
Use the clrs palette or a similarly not-too-dark-not-too-bright color.
Or do the background
/color
/border-color
yourself and use inherit: %alert-base
instead of the alert
mixin.
.alert-success {
alert: color(green);
border-width: 0;
}
.button-close {
button: bgcolor(transparent) fgcolor(black) circle(1.2em);
}
&:focus {
border: blue 1px solid;
}

Successfully saved your profile.
<button class="button-close">
×
Close
</button>

Welcome back!
Failed to update the page.
Retry?
Successfully saved your profile.
Triangles
nextcss includes a triangle mixin, based on the one from Bourbon.
.demo-triangle-right {
triangle: size(5vw) bgcolor(purple) fgcolor(yellow) right;
}
.demo-triangle-up {
triangle: size(2em) color(green) up;
}
.demo-triangle-down {
triangle: size(14px) down;
}
.demo-triangle-down-left {
triangle: down-left size(2em) color(teal);
}


`?` identifier is going to be used for wildcard arguments in types in Scala 3 (see
Wildcard Arguments in Types
). It's usage in kind-projector type lambdas is deprecated and is going to be superseeded by `*`.


11 Essential Watercolor Techniques All Painters Need to Know
1- Wet on dry
Wet on dry is another fundamental approach. It’s created by painting a wash on paper.
After it has dried, apply paint on top of it.
Because watercolor is translucent, you will most likely see the bottom layer behind that stroke.
2- Wet on wet
The wet-on-wet approach showcases the best quality of watercolor paint—its ability to create beautiful
ethereal washes. To produce this technique, simply wet part of the paper with your brush.
(You can use either water or a little pigment.) Then,dip your brush into another color and lightly
dot it on the wet area and watch as the pigment feathers.
3- Dry brush
Dry brush is just as it sounds; take a dry (or mostly dry) brush and dip it into your paint.
Afterward, spread it over a dry piece of paper.
The result will be a highly textured mark that’s great for implying fur or hair.
4- Masking tape or rubber cement
Rubber cement (like masking tape) acts as a resist for watercolor. Apply this material in places where you don’t want the pigment to go.
Once the watercolor is dry, peel the rubber cement or masking tape from the page. You’ll see the paper underneath.
This is a great solution for preserving white paper among the rest of your painting.
5- Salt
When applied to watercolor paper, salt will soak up some of the color and create a sandy-looking effect on the page.
Begin by laying down a wash that’s “juicy”—you want to have some extra pigment on the paper. After you’ve painted the color,
spread the salt on top of it. Once the painting is completely dry (it’s best to wait overnight), scrape the salt from the page.
src:mymodernmet.com