--- date: 2023-02-27 lastmod: 2023-08-02 title: "Lua project setup with LuaRocks" description: "A full guide on setting up a Lua project, including dependency management, code formatting and analysis, and editor setup. Part of a larger series about aspects of Lua." image: "/assets/blog/lua-series-part-1/title-card.png" imageAlt: "Showing a VSCode window in dark mode with an open Lua file and the sidebar on the left showing the contained project files that get built up in the series." linkTitle: "A setup for lua projects, getting ready to built upon later." banner: "/assets/blog/lua-series-part-1/banner" bannerAlt: "Showing a VSCode window in dark mode with an open Lua file and the sidebar on the left showing the contained project files that get built up in the series." summary: "
Setting up a project with Lua, running code, installing dependencies, code formatting, and static analysis, as well as the editor setup.
" hasCode: true tags: ["post", "lua"] series: { name: lua, part: 1 } ---Even though I already wrote an overview of how to set up a Lua project, this article, part of the longer Lua series, will go into more detail on specific aspects with greater focus. Going through this, the goal is to have a solid foundation to further build on in later articles of this series or for any project to come.
Running a first Lua program, using LuaRocks for dependency management, code formatting, and linting, and setting up an editor or IDE to support Lua development as well as possible. Remark: This is how I set up my projects, maybe not by the books, but the way it works best for me in all environments, repeatedly.
A note about versions. The latest Lua version as of this writing is 5.4 (released in ). Generally, everything in this article series will work with Lua 5.1 (released in ) and up. If this is not the case, a callout such as the following will signal that a higher version is required.
For instance, in a later article, I will use the meta-method
__close
, added in Lua 5.4, for a simple profiling tool.
An overview of the versions and their respective main features can be found on the official Lua version history page.
First things first, let's check if Lua is already installed on the system by
running Lua's version command lua -v
in a terminal.
If it prints something similar to the above, it's already good to go. If not, Lua needs to be installed first.
Brew on macOS can be used to install an up-to-date version of Lua.
On Linux, installing Lua is as straight-forward as using the system package manager. For example, on Debian, Ubuntu, and Mint:
Take a look at Lua's installation guide to build a more recent version from source if needed.
On Windows, there is a list of available Lua binaries, offering pre-compiled Lua versions ready to be used. Scrolling down on that page to the History section, the latest available pre-compiled versions can be found. Choosing one, for example version 5.4.2, will lead to SourceForge; click the Tools Executables folder next.
Here is the option of picking either the 32-bit or the 64-bit version, depending on the used system.
After the download, the archive contents can be extracted, finding, depending
on the downloaded version, an executable. For version 5.4.x this is called
lua54
.
Double-clicking that file will open a terminal, from which Lua can be run. Alternatively, this file can be placed in a folder that is part of the PATH variable or made available through it.
With Lua installed, it's time to
create a small test program to verify that everything works
as expected. Creating a source file inside the dedicated project folder*,
src/main.lua
, saying hello to everyone.
Executing that file via the terminal from inside the project directory will print the greeting.
LuaRocks, the de facto standard package manager for Lua, will be used to manage project dependencies. First, the LuaRocks command-line tool needs to be installed on the system.
Again, using brew on macOS, LuaRocks can be installed with a single command.
Same for Linux; a single command does the job using the system package manager.
First, the LuaRocks executable needs to be downloaded, either 32-bit or
64-bit. The downloads are at the top of the
LuaRocks download page
on GitHub. After downloading and extracting the files, the
luarocks.exe
needs to be
added to the PATH
to make it available as luarocks
command from the terminal.
With LuaRocks installed, the init
command helps to set up a
project, including local dependency management. This means
dependencies will be installed inside the project folder in a
lua_modules
directory.
The init
command will do a couple of things, some of which are:
lua_module
folder and storing all installed
dependencies.
src/main.lua
as the main entry point of the
program.
lua
and
luarocks
from inside the project.
.luarocks
folder containing some configuration files
and marking the directory as the root folder for LuaRocks.
And two more I'll have a more detailed look at:
.gitignore
file..rockspec
file with the base project settings and
name, taken from the folder name LuaRocks was executed from.
The luarocks init
command automatically generates a
.gitignore
, if not already present, or appends
its entries to an existing .gitignore
file. The following entries
will be added.
The first two files are local shortcuts to execute lua
and
luarocks
. Then comes the dependency folder
lua_modules
and the config folder .luarocks
.
The .rockspec
file defines the project's properties, like name,
version, and used dependencies. A complete list of the supported options can
be found on the
official LuaRocks wiki page for build rules.
At the top of the file, the rockspec format will be defined, indicating the format version, the latest being version 3.
The source.url
can be many things; I usually point it to the
project's git repository, but it can also be other repository types or
URLs.
The description
can contain a summary, the project home page, a
license, and more.
Next comes the list of dependencies. This will hold all necessary project
dependencies and one special dependency from the start: lua
. Less
of an actual dependency; more of the projects supported Lua versions or
version range.
And at last, the project's build settings and modules — not yet utilized.
To ensure all changes to a .rockspec
file are valid, the
luarocks lint
command can be used, giving it the filename to validate.
And here is the final .rockspec
file.
Let's install something, finally! The inspect module is handy in general, giving an easy way to print any value in Lua for inspection or debugging.
The new dependency also needs to be added to the .rockspec
file
to keep it on later installs.
On a fresh checkout of the project, this will ensure that
inspect
is installed again when running
luarocks install --deps-only
on the .rockspec
file.
Let's use inspect
to print a test table.
Oh no, running this code will give an error.
Despite having a way to manage dependencies, Lua still needs to be told
where to find modules for the project. This is done through
the package.path
and package.cpath
variables. My
preferred way is to have a src/setup.lua
file defining those.
In that file, I can also put other project setup options later, as it will be loaded before running any Lua script.
Now, there are two ways to use this setup: one is via the
-l
option of the lua
command.
Another option is to set the LUA_INIT
environment variable. This
variable can either execute Lua code before running a script or load a file
when the value starts with @
.
By defining the environment variable inside the terminal, Lua can be run
without the -l
option.
Optionally, to not pollute the environment or re-set the variable every time,
I use direnv,
defining a .envrc
with my projects' environment variables that
will only be loaded when working inside the respective project folder.
There are releases for all platforms, including Windows*, and comprehensive documentation, so I won't go into detail here as this is an optional setup step.
Having that done, one way or another, I assume from here that the
LUA_INIT
variable is set and the test script with the
inspect
module can be run again.
Remark: The package.path
variable can also be
used to solve inner project module resolution. Let's say all files will be
located inside a src/
folder, adding 'src/?.lua'
at
the end will enable looking up modules from that directory.
It is important to note where packages are installed when using LuaRocks. So
far, having the project set up via luarocks init
, all packages
were installed locally, inside the project folder. This is only the case due
to the presence of the .luarocks
and
lua_modules
folders. When this is not the case, packages are
installed globally by default when a config file is not
present.
Another option when not in a project is using the --local
flag.
Be aware: this does not mean local as in
"local folder", this means local as in
"the user's home directory". To really get a local installation, for
example, inside the current working directory, the --tree
flag
needs to be used, passing the path to a folder.
Before continuing to add more tools to the project setup, it is quite handy to
enable the execution of local scripts. When installing an executable with
LuaRocks those binaries are installed in the
lua_modules/bin
folder.
To execute a script, the full path needs to be used.
To simplify this, the local bin folder can be added to the system PATH, which is especially handy when already using direnv.
The same example command above then becomes the following when executed inside the project directory.
I much appreciate auto code formatting from other projects and languages, like Prettier for JavaScript and TypeScript or clang-format for C++. I also want automatic code formatting for Lua.
LuaFormatter
the tool of choice, installed via LuaRocks and thereafter available via the
lua_modules/bin
folder.
Custom format options can be defined in a .lua-format
YAML file inside the project root. I'll only change a few options
for my projects.
With the local script setup enabled or using the path to the executable, the formatter can be run, and all Lua files are automatically formatted.
To lint the project code base,
Luacheck
can be used, which is an executable installed via LuaRocks into the
lua_modules/bin
folder.
Keeping the default options, it can be run on all files inside
src
. A full list of all options can be found in the
official Luacheck documentation.
No project setup is complete without setting up an editor environment. To have some options, I picked two well-known ones: IntelliJ IDE from JetBrains (paid) and VSCode from Microsoft (free).
Using any JetBrains product (e.g. CLion) for Lua development, I use the plugin Luanalysis, an EmmyLua fork. It comes with Luacheck bundled and offers many convenient functions like Find Usage, Refactor, Go To, Parameter Hints, and Documentation support, to name a few.
I could not find a way to auto-format code on save with LuaFormatter, though.
For VSCode three plugins do the heavy lifting — the Lua language server plugin, the plugin for Luacheck, and another plugin for LuaFormatter.
The only plugin that really needs configuration is the LuaFormatter plugin,
setting the path to the LuaFormatter executable and to the
.lua-format
config file.
VSCode's setting "Format on Save" can be used to automatically format the code.
Even though I focused on those two editors, I wanted to mention some more options for Lua development.
One of those options is ZeroBrane Studio, an IDE focused on Lua development. It has a lot of features focused on Lua, including resources to learn the language.
Neovim is another option that comes with Lua support out-of-the-box. Lua is even built-in, and plugins for the editor are written in it.
Close to my heart, Sublime Text is a great option for development in general. For Lua, I use the LuaExtended plugin, which brings even better support to the editor.
This article was specifically focused on getting a good environment running to develop Lua. Everything shown here can be found in the companion repository, branch part-1.
The next article focuses on creating, building, and publishing new packages; how to manage versions; and how to add documentation to them.
Until then 👋🏻


Sudoku is a number-placement puzzle. The objective is to fill a 9×9 grid with digits so that each column, each row, and each of the nine 3×3 subgrids that compose the grid contain all of the digits from 1 to 9.
To place the numbers, drag and drop them from the bottom line to the board.
Drop numbers outisde of the board to discard them.


This is a solution to the problems posed by conflict theory and Karl Marx. It’s actually my second post conclusively disproving Marx … in a month!
“That’s pretty, Good! HAHA….” …. SMDH
Human conflict is truly bourne from competition over resources. It is sometimes driven by ideological means, but when you dig deep enough, usually you find that ideology is reinforced and propelled as a means of obscuring the true causes of conflict, often inconvenient. This is not to say that your chosen religion is an invention inspired by control of humanity. Regardless, ideologies are often used centuries after their invention as a means to unify regional populations for better or worse.
This isn’t a discussion of the merits and tragedies of religion. This is a strategy to circumvent the factors precipitating conflict in the first place. If acquisition and control over limited resources creates the needs for conflict and the shapes or forms thereof, then what happens as these factors themselves become scarce? What if the reasons for war were themselves scarce?
As humanity externalizes their capacity for resource acquisition, we will undergo major shifts in the driving factors that have seeded conflict across the world from time immemorial. As scarcity for resources is purged from memory for several centuries, humanity will find that the multifaceted basis for conflict itself will be all but eliminated. At that point, any conflict that should emerge may be the result of some artificial system or ideology. Anyone who creates an artificial shelled system to create conflict towards the pursuit of power for the sake of power in a future era which would otherwise contain effervescent peace and placidity is a real asshole, don’t ya think?
   That’s the equivalent of dousing a country in kerosine and dancing around with a match.  No one else gets nuclear weapons.  Can we hurry up with fusion so none of these assholes has an excuse to produce plutonium?! Also, fusion tanks Iran’s market for oil. Womp womp. VC lession #1 – sell while the price is high because it ain’t going any higher. Thank you. Cha ching. America can take that to the bank.
The degree to which these benefits from lack of resource constraint are realized depends on the availability of untapped ores and minerals on earth or in space. There are some celestial bodies whence it would be unethical to harvest resources, depending on that body’s capacity for life, but there are a plethora of ores in asteroids, on the moon and on mars.
No one knows truly what we can expect to find there, so we should err on the side of caution. Yet, nations and corporations should assume that our tragic dearth of resources is transitive. At this point, it’s merely momentary in the context of humanity’s history. Further, humanity will find that in the face of technology, the global economy will gradually revert to previous form, where nations are moreso dependent on quantity and variety of resources and they’ll find less demand for finished and/or intermediate products imported from other countries. Instead technology will supplant this demand by replacing manufacturing methods. It is not so simple, but the specific progression that global and national economies will undergo is far from either certain or simple.
However, the lower classes will surely benefit from this transition over the next three decades, driven by development and dissemination of technology. The major concerns during this time will be economic turbulence and uncertainty. If nations do not approach this period with warranted caution and expected foresight, then changes will rivet through existing socioeconomic institutions. Carbon taxing and the solutions to global warming will help provide stablization and it is for this reason that free-market and business-oriented types should support such systems. Barring major disaster and after our technological transformation – around 2030 – there will still be economic disparity, but that should begin to lessen worldwide, whereby we accelerate focus on unity and expansion towards space.
As nano develops, so will our ability to develop space elevators, whence we can exponeniate the harvest of resources for space, whence you can expect wildly fluctuating commodity prices. You can bet on that horse. It might be a commodity crash, since demand should generally outpace supply beforehand.
What fascinates me is understanding how something as trivial as the starting mass of a planet and therefore its gravity stratifies the fates of intelligent life. Too much mass and not even nano is capable of providing a reasonable escape from the fate of overpopulation, life’s common and innate enemy. Too little gravity and IMO there is less restriction and need for common form or structure for life, of which I’m not sure of the implications.
At this time, around 2050, when humanity has built out it’s options for efficiently harnessing the excess of resources available in asteroids and elsewhere, we’ll experience an unprecidented era of peace. If we make it to this point. Think back sixty years to the immediate aftermath of the Holocaust. Do you remember the devastation of that period? That was that seventy years ago and the pain is still with us. Six million people died.
So, imagine, if you will, the sociocultural implications of a 21st century holocaust or some variety of disasters that eliminate all but two billion people by 2050. This is a topic for another post, but compare that population’s shared social experience and burdened memory against the population of a humanity in 2050 numbering 10 billion. The latter population found ways to work together! Where would we find their energy and economic output invested? In unity. In infrastructure. In prevention. In life itself. What of the former population? They invested in war and destruction. And what is more infuriating than conflict’s capacity to sow the seeds of further conflict.
So what have you, in 2050, if you find yourself amoung the former population? War, destruction, tragedy and more of the same! Furthermore, you now have the shared archetype of technological disaster and ruinous war. What fosters ignorance and foments conflict more than fear? In the context of FDR’s quote, we should understand this horrendous vision of a bizarro future, so that our children can leverage it as indemnity and collateral on an investment of immeasurable return. Imagine the disposition of the former and latter populations: which one is better prepared to handle the future after 2050? The one with the quasi-diluvian, Noahide archetype of global disaster? Or the population who invested in life and infrastructure?
As for this proposed era of peace stemming from the economic resolution to the origins of conflict theory itself: why should this era of peace begin in 2050? If humanity knows that it has what it takes to reach this point, why should we let any transient trauma cause us to veer from the course? If we don’t remain focused, we may find ourselves in a world burdened by sociocultural trauma and bound by hatred arisen from decades of conflict. Instead, we should allow our positive and negative visions of the near future to fuel our transition, so that our destiny reflects our needs and desires. Who wants to live in the world full of strife and ruin? I want a future worth celebrating. So humanity should move forwards together, which means we must first center ourselves and unite the world over. There should be nothing worth impediment to humanity’s progress towards this.
Because the political and economic strategies of entire cultures are shaped by the monetization of resources and the distributions of benefits whereof, then if humanity should shape its actions today upon the certainties of the near future, it may defuse certain tragedy that might prevent us from reaching the stars in the first place. There aren’t many people, old or young, who would disagree with that. Further still, if your nation is planning on holding out on a stockpile of resources to monetize on scarcity between 2020 and 2050, you might find yourself surprised when long-held pricing patterns are broken for specific natural resources, especially rare-earth and other scarce ores. So if you want to adequately monetize those resources, you might like to do so now, not that it’s wise to squander them. And there seem to be many regions that are artificially limiting the monetization of such resources, in anticipation of a global commodity crunch. In reality, we will see supply lead to end of resource-driven conflict for centuries.
On a global scale, it may be better if supply is generally increased until such a time when importation of space-based resources will definitely increase supply and reduce price, albeit in some unknowable way. Space-based resources are going to be huge, but it’s difficult to ascertain exactly how until we can more easily quantify those resources. Fusion, whenever it so happens to arrive, will reduce the demand for fossil fuels, though not completely. Even though fusion itself is cheap energy, it’s not equivalent to cheap energy distribution or responsible energy utilization and requires massive infrastructure changes.
Read, Follow or Get TF Out of the Way… J/K J/K
No, I wasn’t actually going for world conquest.
Past, Present and Futures
Time, history and our understanding of past, present and future can be imagined per analogy with the light cone from special relativity. Via a chain of causality, our understanding of the past can affect events in the present, but so can our past understanding of the future. So, in a wierd way, the future does exert causation in the present, especially if the future is certain or perceived as inevitable.
It’s universally true that those who control the past control the future via the present. Thus, the victors who write history have immense power. Further, it’s also true that those who envision the future guide the present and therefore control the future past. À la recherche du temps perdu, we should motivate ourselves with both positive and negative visions of the world to search the available futures and create the one we want, instead of finding ourselves lost in some post-apocalyptic future. This philosophical approach inevitably leads to the corrosion of individuality, so the challenge is to leverage this so, without letting ourselves forget the importance of individuality to avoid succumbing to nihilism.
In order for a society to reenforce individuality, the individual must rewarded. Otherwise, we risk systemic corrosion to society’s means of behavioral feedback. Or the sociological limbic system, so to speak. Nihilism begets demoralization and a clockwork orange scenario ensues. It’s urgent to recognize and preempt this philosophical problem in the face of our technological revolution, as more societal needs and demands are met by such means whereby the individual is completely excluded. It’s tragic in itself, but hopeless nihilism unrestrained will probably lead to chaotic meaningless behavior from actors who refuse to acknowedge their individual capacity to contribute in a society that treats people as disposable units.
In Which I Apologize For Being an Asshole (Maybe)
Basically what i’m saying is that I should probably have a job or at least some money or something. Instead, I have $3.77. To me, that’s two coffees. Also, it would appear that there is a line of people waiting to kick me in the face while I’m down and each one hopes they have the chance to stab me in the back, like I’m some kind of new age Julius Caesar.
My life savings are invested in Quarters futures and Penny stocks. I diversified with two T-bonds.
I certainly hope that I’m wrong about that. If not, the world has some serious problems because it’s beginning to do exactly what I’m warning about in the preceding paragraph. If so, I’m sorry, but I truly do not understand what I did to deserve this. If I’m wrong, why should someone who understands psychology, sociology and philosophy to the degree that I do feel that the world treats him thusly? That, in itself, is a bit sad. Sorry to whine, but I need three things to improve my life situation: (1) Nutrition and medicine (2) Intellectual stimulation (3) Abundance and variety of social experiences.
If a personal psychological treatment plan disregards my need for a little extra understanding while I pick up the pieces yet again, then it’s unreasonable, poorly thought out, IMO poorly assessed and possibly malicious. In other words, hoping that shocking someone with the pain of “rock bottom” is not something that works for many people and it’s not something that would ever work for me. Ultimately, it’s just a convenient excuse to deprive me of resources and precisely those types of social experiences which I would need to socially develop. It’s a rationalization I fear was pitched to my family that they unfortunately believed. I might also require some extra help with an acquired and intentionally exacerbated attachment disorder. This is the fifth time in the past six years or so that I’ve had to put my life back together and please excuse me, but I don’t know anything else! So in the context of Asperger’s, please afford me little extra space to be able to experience the things required for normal adult development.
Also, did you know that there are like 800,000 people who have a suspended license in Virginia?  They don’t build roads here, they just take people’s licenses and ruin their lives. Although I can’t say I have much against the state of Virginia itself. Not at all, actually.  It’s when the state, it’s laws or some asinine intelligence apparati are leveraged against someone silently that incredible damage can be done to one’s life! And in such a way that few people become aware of it. Even when someone criticizes or reprimands me, I actually appreciate it because if your criticism has merit, then you’re giving me a chance to improve or change.
The most damage has been done to my life from words and actions quietly sprung from malicious intention in a passive aggressive manner. If you want to help me, then by all means, do so.


{% extends 'base/base.html' %} {% load static %} {% block title %} School Management System {% endblock %} {% block content %} Welcome To Jamia Hamdard University Management System
Sorry, the wesite under maintainance.


|
gbmath
v0.051
c++ math library
|
Line in 2d by two points. More...
#include <line2d.h>
Public Member Functions | |
| line2d () | |
| line2d (const line2d &a) | |
| line2d (const vec2 &_src, const vec2 &_dest) | |
| normal2 | direction () const |
| void | set (const vec2 &_src, vec2 &_dest) |
| vec2 | project_point (const vec2 &pnt) |
| bool | IsIntersectCircle (float *ps0, float *ps1, const Circle &cir) |
| bool | IsIntersectCircleContactPoints (vec2 &pContact1, vec2 &pContact2, const Circle &cir) |
Public Attributes | |
| vec2 | src |
| vec2 | dest |
| bool gbmath::line2d::IsIntersectCircle | ( | float * | ps0, |
| float * | ps1, | ||
| const Circle & | cir | ||
| ) |
Definition at line 82 of file line2d.cpp.
| bool gbmath::line2d::IsIntersectCircleContactPoints | ( | vec2 & | pContact1, |
| vec2 & | pContact2, | ||
| const Circle & | cir | ||
| ) |
Definition at line 111 of file line2d.cpp.
Definition at line 12 of file line2d.cpp.


StoryThe Dark Age has come. Wars, deceases, drought and plague brought people to the brink of dispair. Dire cult has arrived, preaching paradise through sacrifices. Demons (called Chewmans), satisfied with the gold and sacrifices, are to stop all calamities and suffering, and end the Dark Age. Believers built Unholy Mazes thoughout the country, places where demons are summoned and sacrifices are made. But the is light in this Dark Age. The Ancient Holy Orden, uniting knights, paladins and priesthood, stood against the Dire cult. They swear to clean the land from the demonic creatures and their followers, believing that demons are only bringing more disasters and destroying the world. How to PlayGame is based on classic arcade games. You play as a Chewman, ancient demon, summoned to the Maze. Your main goal is to collect all coins or gems present on each level. You control Chewman by swiping left, right, up or down. To reach the goal you must avoid all enemies and traps on the level and find the way to collect all treasure, as it may be hidden in places unreachable by simple means. Each collected coin gives you 10 points. When all coins are collected you will proceed to the next level. Stars are awarded for either fast or no-death completion. 3 stars are awarded if player finishes the level without loosing any lives or by completing it within the time limit. Power-UpsYou can collect power-ups by eating them. Once collected, the power-up activates immediately and causes an effect for some time.
EnemiesOnly peoples with strong heart can get into the Maze and try to stop demons from getting to the real world.  If all lives are lost you lose the game and have to start again.
Other obstaclesEnemies are not the only danger in the Maze, so you must be aware of other thing that can kill you in the course of world domination.
CreditsGame is created by Turbulent Software, 2018-2020. It is a Vulkan remake of the 2008 Chewman game for Windows, a pacman style game in a dark fantasy world. Programming, effects, UI, marketingIgor "RMDarth" Barinov Design, levels Igor Barinov, Alex "Fduch" Gubsky 3D models Alex Gubsky, Yuliia Zlatohorska Art Texic ClayManStudio Icons by freepic Additional art and models Vladislav Mukhametgareev, ArmedBeez, RACCOON, Those icons, Smashicons, Catalin Fertu Additional Effects Rivermill Studios, Archanor VFX, RDR, Luke Peek, 4rknova, Krzysztof Kondrak, nimitz, Mr_F, Joey de Vries Sound and music LiveMusics SoundAlchemy Testing Anna Barinova Svetlana Kurochkina Libraries and SDK Vulkan SDK, SDL2, assimp, rapidjson, glm, stb, TinyXML2, utf8-cpp, Vulkan Memory Allocator Special thanks Toru Iwatani Alexander Overvoorde Sascha Willems Niko Kauppi Karl "ThinMatrix" Pawel Lapinski All our families and friends Game code is open-source, you can find it here: https://github.com/RMDarth/Chewman-Vulkan |
||||||||||||||||||||||||||||||||
| 2020 © Turbulent Software |


{% extends "layout.html" %} {% block page_title %} Question page {% endblock %} {% block content %} Back Can you juggle more than 2 balls?  Select all that apply Which types of waste do you transport regularly? Green Blue Orange How do you want to be contacted? How do you want to be contacted? Email Email address Phone Phone number Text message Mobile phone number {% endblock %}
Select all that apply


Hi,
We just got a deposit of ${newMessage.amount} ${newMessage.currency}
View transaction details
Regards,
Felipe


Preparation time
overnight
Cooking time
30 mins to 1 hour
Serves
Makes 5 jars
Dietary
Transform a glut of vegetables into a delicious homemade pickle.
Sterilise the jam jars - first wash the jars in soapy water and rinse in clean warm water. Preheat the oven to 140C/275F/Gas 1. Dry the jars, upside down, on a rack for 30 minutes.
Put the vegetables in a non-metallic mixing bowl, sprinkling with the salt and mix until well combined. Cover with a plate and leave to stand for 24 hours.
Rinse the vegetables in several changes of cold water.
Put the onions in a large saucepan and stir in the malt vinegar. Bring to a gentle simmer and cook for 15 minutes.
Mix five tablespoons of the white wine vinegar with the mustard powder, turmeric, ginger, chilli flakes and cornflour. Stir the remaining white wine vinegar and the sugar into the malt vinegar and onions until dissolved. Tip the drained vegetables into the same pan, return to a simmer and cook for 10 minutes, stirring occasionally.
Stir the cornflour mixture into the pan with the vegetables until well combined. Cook for a further 8-10 minutes, stirring regularly until the vegetables are tender but crisp and the sauce has thickened.
Put the pickle into the jam jars, ensuring that all the vegetables are evenly distributed, and leave to cool. Cover with glass or plastic coated metal lids and seal. Label and store in a cool, dark place for at least a month before eating.


Fb-Checkpresence
Detects the presence of family members via the FRITZBox
| Settings | Mandatory | Description |
|---|---|---|
| Help Fritzbox TR-064 | Yes | Help Fritzbox TR-064 1v1 |
| Help Fritzbox registration | Yes | Help Fritzbox registration 1v1 |
| Help Fritzbox user | Yes | Help Fritzbox user 1v1 |
| Settings | Mandatory | Description |
|---|---|---|
| Help adapter ip | Yes | Help adapter ip 1v1 |
| Help adapter username | Yes | Help adapter username 1v0 |
| Help adapter password | Yes | Help adapter password 1v0 |
| Help adapter ssl | Yes | Help adapter ssl 1v0 |
| Help adapter interval | Yes | Help adapter interval 1v1 |
| Help adapter history | No | Help adapter history 1v2 |
| Help adapter date format | Yes | Help adapter date format 1v0 |
| Help adapter fb-devices | No | Help adapter fb-devices 1v1 |
| Help adapter mesh | No | Help adapter mesh 1v1 |
| Help adapter sync | No | Help adapter sync 1v0 |
| guest | No | Help adapter guest 1v0 |
| qrcode | No | Help adapter qr 1v0 |
| QR code color | No | Help adapter qrcolor 1v1 |
| Settings | Mandatory | Description |
|---|---|---|
| Help family interval | Yes | Help family interval 1v0 |
| add | No | Help family add 1 |
| Add family member | No | Help family add member 1v0 |
| Help family member | Yes | Help family member 1v2 |
| Help family mac | Yes | Help family mac 1 |
| Help family ip | Yes | Help family ip 1 |
| Help family use ip | No | Help family use ip 1v0 |
| Use name | No | Help family use name 1v0 |
| Help family comment | No | Help family comment 1 |
| Help family enabled | Yes | Help family enabled 1v1 |
| check_box | Group | Family member | Hostname | Mac-address | Ip-address | Usage of | Use filter | Comment | |
|---|---|---|---|---|---|---|---|---|---|
All known devices in the home network are entered in the whitelist. The devices that are not later found in the whitelist are reported in the object area in the Blacklist folder.
| Settings | Mandatory | Description |
|---|---|---|
| Enable whitelist | No | Help wl enable 1v1 |
| add | No | Help wl add 1v0 |
| Add a device | No | Help wl add device 1v0 |
| Help wl device | Yes | Help wl device 1v0 |
| Help wl mac | Yes | Help wl mac 1v0 |
| Hostname | Mac-address |
|---|


Sponsors
Create Invitation
Create Sponsor Invitation
*
Please enter first name
*
Please enter last name
*
This needs to be a valid email
emaili is required
Submit


Cloud with a chance of TAR balls (or: what is your exit strategy)
Cloud computing is here to stay, since it does have many benefits. However even unions made " until death do us part" come with wagers these days. So it is prudent for your cloud strategy to contemplate an exit strategy.
Such a strategy depends on the flavour of cloud you have chosen (IaaS, PaaS, SaaS, BaaS) and might require to adjust the way you on-board in the first place. Let me shed some light on the options:
If you drank the Docker cool aid, the task might be just be broken down into managable junks, thanks to the containers. Be aware: Docker welds you to a choice of host operating systems (and Windows isn't currently on the host list).
There are secondary considerations: how easy is it, to switch the value-added services like: DNS, CDN, Management console etc. on/off or to another vendor?
It get a little more complicated when you look at the services.
First look at persistence: is your data stored in a vendor propriety database? If yes, you probably can export it, but need to switch to a different database when switching cloud vendors. This means you need to alter your code and retest (but you do that with CI anyway?). So before your jump onto DocumentDB or DynamoDB (which run in a single vendor's PaaS only), you might want to checkout MongoDB, CouchDB (and its commercial siblings Cloudant or Couchbase) , Redis or OrientDB, all of them run in multiple vendor environments.
The same applies to SQL databases and blob stores. This is not a recommendation for a specific technology (SQL vs. NoSQL or Vendor A vs. Vendor B), but an aspect you must consider in your cloud strategy.
The next check point are the services you use. Here you have to distinguish between common services, that are offered by multiple cloud vendors: DNS, auto scaling, messaging (MQ and eMail) etc. and services specific to one vendor (like IBM's Watson).
Taking a stand " If a service isn't offered by multiple vendors, we won't use it" can help you avoid a lock-in and will ensure that you stifle your innovation too. After all, you use a service, not for the sake of the service, but to solve a business problem and to innovate.
The more sensible approach would be to check if you can limit your exposure to a vendor to that special services only, should you decide to move on. This gives you the breathing space to then look for alternatives. Adding a market watch to see how alternatives might evolve improves your hedging.
Services are the " Damned if you do, damned if you don't" area of PaaS. All vendors scramble to provide top performance and availability for the common platform and distinction in the services on top of that.
After all one big plus of the PaaS environment are the services that enable " composable businesses" - and save you the headache to code them yourself. IMHO the best risk mitigation, and incidentally state of the art, is a sound API management a.k.a Microservices.
Once you are there, you will learn, that a classic Monolithic Architecture isn't cloud native (Those architectures survive inside of Virtual Machines) - but that's a story for another time.
Some of them (e.g. eMail or documents) have open standard or industry dominating formats. Here you need to make sure, you get the data out in that format. I like the way Google is approaching this task. They offer Google Takeout, that tries to stick to standard formats and offers all data, any time for export.
Other have at least machine readable formats like CSV, JSON, XML. The nice challenge: getting data out is only half the task. Is your new destination capable of taking them back in?
As you can see, not rocket science, but a lot to consider. For all options the same: do you have what it takes to move? Is there enough bandwidth (physical and mental) to pull it off? So don't get carried away with the wedding preparations and check your prenuptials.
Such a strategy depends on the flavour of cloud you have chosen (IaaS, PaaS, SaaS, BaaS) and might require to adjust the way you on-board in the first place. Let me shed some light on the options:
IaaS
When renting virtual machines from a book seller, a complete box from classic hosting provider or a mix of bare metal and virtual boxes from IBM, the machine part is easy: can you copy the VM image over the network (SSH, HTTPS, SFTP) to a new location? When you have a bare metal box, that won't work (there isn't a VM after all), so you need a classic "move everything inside" strategy.If you drank the Docker cool aid, the task might be just be broken down into managable junks, thanks to the containers. Be aware: Docker welds you to a choice of host operating systems (and Windows isn't currently on the host list).
There are secondary considerations: how easy is it, to switch the value-added services like: DNS, CDN, Management console etc. on/off or to another vendor?
PaaS
Here you need to look separately at runtime and the services you use. Runtimes like Java, JavaScript, Phython or PHP tend to be offered by almost all vendors. dotNet and C# not so much. When your cloud platform vendor has embraced an open standard, it is most likely, that you can deploy your application code elsewhere too, including back into your own data center or a bunch of rented IaaS devices.It get a little more complicated when you look at the services.
First look at persistence: is your data stored in a vendor propriety database? If yes, you probably can export it, but need to switch to a different database when switching cloud vendors. This means you need to alter your code and retest (but you do that with CI anyway?). So before your jump onto DocumentDB or DynamoDB (which run in a single vendor's PaaS only), you might want to checkout MongoDB, CouchDB (and its commercial siblings Cloudant or Couchbase) , Redis or OrientDB, all of them run in multiple vendor environments.
The same applies to SQL databases and blob stores. This is not a recommendation for a specific technology (SQL vs. NoSQL or Vendor A vs. Vendor B), but an aspect you must consider in your cloud strategy.
The next check point are the services you use. Here you have to distinguish between common services, that are offered by multiple cloud vendors: DNS, auto scaling, messaging (MQ and eMail) etc. and services specific to one vendor (like IBM's Watson).
Taking a stand " If a service isn't offered by multiple vendors, we won't use it" can help you avoid a lock-in and will ensure that you stifle your innovation too. After all, you use a service, not for the sake of the service, but to solve a business problem and to innovate.
The more sensible approach would be to check if you can limit your exposure to a vendor to that special services only, should you decide to move on. This gives you the breathing space to then look for alternatives. Adding a market watch to see how alternatives might evolve improves your hedging.
Services are the " Damned if you do, damned if you don't" area of PaaS. All vendors scramble to provide top performance and availability for the common platform and distinction in the services on top of that.
After all one big plus of the PaaS environment are the services that enable " composable businesses" - and save you the headache to code them yourself. IMHO the best risk mitigation, and incidentally state of the art, is a sound API management a.k.a Microservices.
Once you are there, you will learn, that a classic Monolithic Architecture isn't cloud native (Those architectures survive inside of Virtual Machines) - but that's a story for another time.
SaaS
Here you deal with applications like IBM Connections Cloud S1, Google Apps for Work, Microsoft Office 365, Salesforce, SAP SaaS but also Slack, Basecamp, Github and gazillions more.Some of them (e.g. eMail or documents) have open standard or industry dominating formats. Here you need to make sure, you get the data out in that format. I like the way Google is approaching this task. They offer Google Takeout, that tries to stick to standard formats and offers all data, any time for export.
Other have at least machine readable formats like CSV, JSON, XML. The nice challenge: getting data out is only half the task. Is your new destination capable of taking them back in?
BaaS
In a business process as a service (BaaS) the same considerations as the SaaS environment come to play: can I export data in a machine-readable, preferably industry standard format. E.g. you used a payroll service and want to bring it back inhouse or move to a different service provider. You need to make sure your master data can be exported and that you have the reports for historical records. When covered in reports, you might get away without transactional data. Typical formats are: CSV, JSON, XMLAs you can see, not rocket science, but a lot to consider. For all options the same: do you have what it takes to move? Is there enough bandwidth (physical and mental) to pull it off? So don't get carried away with the wedding preparations and check your prenuptials.
Posted by Stephan H Wissel on 12 April 2015 | Comments (0) | categories: Cloud Computing Container K8S


--- layout: default ---
{% for item in site.pages %} {% if item.layout == "language" %} {{ item.title }} {% endif %} {% endfor %}
Select your programming language from the list above and check all cons it has.
We hope, that site will help you to choose the perfect programming language for you.
by rakshazi


USAGE
- 1. After installation, click Add-ons -> RearrangeScripts -> Rearrange scripts
- 2. By this, addon is launched at sidebar, users can see "Select project".
- 3. At "Select project", users select a standalone project by clicking the triangle of right side. The list is displayed only standalone projects.
- 4. When users select one of project, "Rearrange scripts" and scripts in the selected project are shown. The scripts are shown at gray color zone.
- 5. Users can rearrange and reorder each scripts using own mouse.
- 6. When the rearrangement is done, the project can be saved by clicking "Save!" button. At that time, users can select the save method. When "Overwrite to project" is selected, the rearranged scripts are overwritten to the selected project. When "Create as new project" is selected, the rearranged scripts are saved as a new project. The new project is created to root folder.
IMPORTANT!
- 1. For rearranging scripts, there is one important point. When scripts in a project is rearranged, version history of scripts is reset once. So if you don't want to reset the version history, please push "Save!" with "Create as new project". By saving with "Create as new project", new project with the rearranged scripts will be created to root folder on your Google Drive. When you click "Overwrite to project", the rearranged scripts will be reflected to the selected project.
- 2. The rearrangement of scripts can be done for only standalone scripts. Because although the bound scripts can retrieve scripts, it cannot be updated.
Learn more
If you want to see the more detail information of this add-on, you can see it at
https://github.com/tanaikech/RearrangeScripts.
Report an issue
You can send massages to Tanaike using e-mail "tanaike@hotmail.com".


A Second Cats Trailer Is Here, and It's Very Understandably Causing Quite the Reaction
by Erin CullumWell, the second Cats trailer is here! The new adaptation of the famous Broadway musical is going to be a wild ride, based on the four minutes of footage released by Universal Pictures in the first two trailers. The movie, in theaters on Dec. 20, features Jennifer Hudson, James Corden, Jason Derulo, Taylor Swift, Ian McKellen, Idris Elba, and more, and yes, you get to see them all as cats.
As soon as the first trailer dropped on Twitter in July, people's reactions were all over the place, which is entirely understandable. The CGI! The dancing! Taylor Swift's blinged-out "catnip" cocktail shaker! It's quite a lot to take in. So, when the second trailer whipped Twitter into a frenzy yet again on Tuesday, we were once again left cackling. Read on for funny tweets that sum up how you probably feel about the trailers, and watch them again if you dare.


Enter these Details:
Generate Cells
Conway's Game of Life Simulator
© Jaysmito Mukherjee
Next Generation
Play
Here are the cells : [Green = Alive , Black = Dead] Click to toggle between dead and alive!


Welcome to the game! Enter the length of the game you want to play. Repeat back the pattern by pressing buttons.
Your game length:


Modus operandi
Details on the what, how, why of our mode of operation.
Ethics
We are committed to:
- No tracking of user or visitor behaviour.
- Never sell any user or visitor data.
- No ads — ever.
Data privacy
- Mataroa does not require any personal details in order to be fully functional (email is optional).
- We support and require encryption in transit via the TLS protocol.
- We do not implement data encryption at rest.
-
All rights under the
GDPR
are exercisable
- via the site
- by emailing admin@mataroa.blog


Manage videos
OpenVidu makes very easy the management of the video players. You can let OpenVidu take care of their lifecycle or you can use your own HTML video elements. Every Publisher and Subscriber object can display a media stream in as many video players as you want.
Let OpenVidu take care of the video players
A) Publisher videos
-
When initalizing a Publisher object, you can insert a video player by passing a valid
targetElement
in methodOpenVidu.initPublisher
(can be an HTMLElement or itsid
attribute). Second parameter allows you to customize the publisher's stream, including how OpenVidu must insert the video player according to targetElement (more info in OpenVidu Browser Docs):var publisher = OV.initPublisher(targetElement, {insertMode: 'APPEND'});
-
After getting the Publisher object, you can create more video players to display its media stream just by calling
Publisher.createVideoElement
. Pass a validtargetElement
and the insertMode:publisher.createVideoElement(targetElement, 'APPEND');
B) Subscriber videos
-
When subscribing to a Stream, you can insert a video player by passing a valid
targetElement
in methodSession.subscribe
(can be an HTMLElement or itsid
attribute). Third parameter allows you to customize the subscriber's stream, including how OpenVidu must insert the video player according to targetElement (more info in OpenVidu Browser Docs):var subscriber; session.on('streamCreated', event => { subscriber = session.subscribe(event.stream, targetElement, {insertMode: 'APPEND'}); });
-
After getting the Subscriber object, you can create more video players to display its media stream just by calling
Subscriber.createVideoElement
. Pass a validtargetElement
and the insertMode:subscriber.createVideoElement(targetElement, 'APPEND');
Publisher and Subscriber objects will dispatch a
videoElementCreated
event for every video inserted into DOM by these methods. Also these videos will be automatically removed from DOM when required and Publisher and Subscriber objects will dispatch avideoElementDestroyed
event for every one of them
You take care of the video players
A) Publisher videos
- Pass undefined as
targetElement
when initializing your Publisher and when you have it available just call methodPublisher.addVideoElement
, passing an already existing HTML video element of the DOM:var publisher = OV.initPublisher(undefined, publisherProperties); publisher.addVideoElement(videoElement);
B) Subscriber videos
- Pass undefined as
targetElement
when subscribing to a Stream and when you have Subscriber object available just call methodSubscriber.addVideoElement
, passing an already existing HTML video element of the DOM:var subscriber; session.on('streamCreated', event => { subscriber = session.subscribe(event.stream, undefined); subscriber.addVideoElement(videoElement); });
This way of managing the video players is very useful when developing your application with some frontend declarative framework such as Angular, React or Vue.js. It allows you to add to the proper
Publisher
orSubscriber
any video element managed by the framework. Besides, it is possible to treat both Publishers and Subscribers the same way regarding their rendering in the page, as they both inherit from the parent classStreamManager
. If you are interested in these concepts, you can check out our super simple Angular tutorial.


- Type:
- Asynchronous.
- On Entry
-
- filename
- The name of the file to be read.
Type:optional.
Specified as: a character variable containing a valid file name, or
-
, in which case the default input unit 5 (i.e. standard input
in Unix jargon) is used. Default: -
.
- iunit
- The Fortran file unit number.
Type:optional.
Specified as: an integer value. Only meaningful if filename is not -
.
- On Return
-
- b
- Rigth hand side(s).
Type: required
An array of type real or complex, rank 1 or 2 and having the ALLOCATABLE
attribute; will be allocated and filled in if the input file contains
a right hand side, otherwise will be left in the UNALLOCATED state.
- iret
- Error code.
Type: required
An integer value; 0 means no error has been detected.


Supplementary Marathon List for 1982
Scheduled but not verified AUS 18 Jul Brisbane Sri Chinmoy (2nd) AUS 08 Aug Melbourne Sri Chinmoy CAN 18 Apr Hamilton ON Spec Labatt's Hamilton YMCA (3rd) CAN 05 Jun Lumsden SK Marathon Sports Lumsden (4th) CAN 01 Aug Slave Lake AB Riverboat Daze (4th) CAN 07 Aug Ile d'Orleans PQ Ile d'Orleans (7th) CAN 22 Aug Quebec City PQ 5th Groupe Brigade du Canada (3rd) CAN 10 Oct Kamloops BC Kamloops (3rd) CAN 10 Oct New Waterford NS Ben Buffett Memorial (7th) CHN 14 Mar Shanghai Shanghai Cup DEN 10 Oct Aarhus Aarhus FIN 29 May Jyvaskyla FRA 14 Mar Quiberon FRA 25 Apr Rouffach FRA 18 Jul Beauvais GER 20 Jun Dusseldorf GER 04 Jul Freiburg Sri Chinmoy HKG 07 Mar Hong Kong China Coast (2nd) ITA 27 Jun Rome ITA 26 Sep Pechino ITA 31 Oct Asti MRI 03 Jul Isle of Mauritius NOR 05 Jun Beitostolen Norske Fjell NOR 29 Aug Bergen Bergen PUR 05 Dec San Juan Sri Chinmoy SUI 04 Apr Martigny SUI 07 Nov Aarau Sri Chinmoy TUR 04 Apr Istanbul USA 20 Feb McAllen TX International Springfest (2nd) USA 07 Mar Rome NY Rome (9th) USA 13 Mar Moscow ID Snake River Canyon (3rd) (07 Mar ?) USA 13 Mar Lansdale PA North Penn Valley Boy's Club (5th) USA 14 Mar Lowell MA Lowell VFW (6th) (questionable it was held) USA 21 Mar Carpenteria CA Century 21 Easter Seals (4th) USA 28 Mar Sedalia MO Sedalia (4th) USA 04 Apr Cedar Falls IA University of Northern Iowa (10th) USA 04 Apr Aurora IL Fox Valley (3rd) USA 10 Apr De Kalb IL De Kalb (5th) USA 10 Apr College Station TX Texas A&M (6th) (tentative) USA 11 Apr Toledo OH Heartwatchers (10th) USA 11 Apr Walla Walla WA Walla Walla Valley Interstate (5th) USA 17 Apr Anaheim CA YMCA Orange County (5th) USA 24 Apr Canton MO Gary Lee Brown Memorial (17th) USA 01 May Tooele UT Great Salt Lake (3rd) USA 02 May Kutztown PA Dolfin (2nd) USA 02 May Ocean Shores WA Ocean Shores (4th) USA 31 May Emporium PA Pennsylvania Killer Mountain (1st) USA 31 May Milwaukee WI Wisconsin Mayfair (10th) USA 06 Jun Forest Grove OR Gales Creek USA 12 Jun Fort Dodge IA KVFD Natural Light (4th) USA 13 Jun Estes Park CO Estes Alpine Classic (5th) USA 03 Jul Washington DC Spirit of America (6th) USA 04 Jul Rockford IL Rockford (5th) USA 05 Jul Pocatello ID Freedom Fest (1st) USA 17 Jul Wasilla AK Valley Youth (4th) (pt/pt) USA 18 Jul Fort Wayne IN TV-33 Hook's (8th) USA 18 Jul Cheyenne WY Cheyenne Frontier Days (6th) USA 24 Jul Laie HI Mormon (2nd) (pt/pt) USA 31 Jul June Lake CA June Lake (2nd) USA 14 Aug Jamestown ND Buffalo City (3rd) USA 14 Aug Baker OR Poc-A-Long-US (1st) USA 15 Aug Liverpool NY Empire State Games (5th) USA Sep Sunbury PA Sunbury Lions (4th) USA 04 Sep Flora IL CCAP Southern Illinois (7th) USA 04 Sep Cable WI Great Divide (1st) USA 05 Sep Kykotsmovi AZ Lewis Tewanima Memorial (2nd) USA 05 Sep Aspen CO Aspen (2nd) (date tentative) USA 06 Sep Provo UT Labor Day (2nd) USA 11 Sep Laramie WY Cowboy (4th) USA 12 Sep Quincy MA City of Presidents (3rd) USA 18 Sep Gettysburg PA Historic Gettysburg (5th) USA 19 Sep Port Clinton OH Marathon Oil Double Run for Arthritis (3rd) USA 25 Sep Lowell MA Great Oktoberfest (2nd) USA 25 Sep Old Forge NY Old Forge (5th) USA 26 Sep Albany OR Fast Run on the Bank (3rd) USA 02 Oct Corpus Christi TX Bayfest (6th) USA 03 Oct Kane PA Kane (4th) USA 03 Oct Pittsburgh PA Pittsburgh (5th) USA 03 Oct Tacoma WA Tacoma USA 09 Oct Clovis NM Clovis (8th) USA 10 Oct Placerville CA Sam's Town Wagon Train (4th) USA 10 Oct Lihue HI Garden Island (5th) (date tentative) USA 16 Oct Margaretville NY Pepacton Paleface (2nd) USA 16 Oct Walla Walla WA Big Onion USA 17 Oct Denver CO Denver (11th) (date could be 24 Oct) USA 17 Oct Ridgefield CT Ridgefield (6th) USA 07 Nov Roseburg OR 100 Valleys (3rd) USA 21 Nov Pasadena CA Rose Bowl (7th) USA 04 Dec Topeka KS Mel Voss Memorial (11th) USA 04 Dec Baton Rouge LA Baton Rouge (5th) USA 04 Dec Bethel NC Bethel (7th) (date tentative) USA 11 Dec State College PA Nittany Valley Track Club (11th) USA 12 Dec Brandon FL Brandon USA 12 Dec New Orleans LA Sugar Bowl (1st)
Probably not held
Scheduled but cancelled
Marathons that are not races (fun runs or non-competitive walks) "Marathons" that are not marathons
Last Updated on 12 Aug 2009
Contributors: Paul Michiels


Disallows falling through case statements.
For example, the following is not allowed:
switch(foo) {
case 1:
someFunc(foo);
case 2:
someOtherFunc(foo);
}
However, fall through is allowed when case statements are consecutive or
a magic /* falls through */
comment is present. The following is valid:
switch(foo) {
case 1:
someFunc(foo);
/* falls through */
case 2:
case 3:
someOtherFunc(foo);
}
Fall though in switch statements is often unintentional and a bug.
Not configurable.
"no-switch-case-fall-through": true
{}


This plugin is used to create custom skins and also give you (the user) few great community Skins. You can add more skins by clicking on the "Request a Skin" button.
The people who have helped in the development of this plugin are listed below
He is the creator of 3 Plugins for Jellyfin, namely- Merge Songs, Theme Music and Skin Manager
He is the creator of 2 jellyfin Skins, namely- JellySkin and JellyFlix. He has helped in creating the "Custom" option in this plugin.
He is the creator of 2 jellyfin Skins namely- Monochromic and Kaleidochromic.


Actions, Resources, and Condition Keys for Amazon Pinpoint Email Service
Amazon Pinpoint Email Service (service prefix: ses
) provides the following service-specific resources, actions, and condition context
keys for use in IAM permission policies.
References:
-
View a list of the API operations available for this service.
Topics
Actions Defined by Amazon Pinpoint Email Service
You can specify the following actions in the Action
element of an IAM policy statement. Use policies to grant permissions to perform
an operation in AWS. When you use an action in a policy, you usually allow or
deny access to the API operation or CLI command with the same name. However,
in some cases, a single action controls access to more than one operation. Alternatively,
some operations require several different actions.
The Resource column indicates whether each action supports resource-level permissions. If
there is no value for this column, you must specify all resources ("*") in the
Resource
element of your policy statement. If the column includes a resource type, then
you can specify an ARN of that type in a statement with that action. Required
resources are indicated in the table with an asterisk (*). If you specify a resource-level
permission ARN in a statement using this action, then it must be of this type.
Some actions support multiple resource types. If the resource type is optional (not
indicated as required), then you can choose to use one but not the other.
For details about the columns in the following table, see The Actions Table.
| Actions | Description | Access Level | Resource Types (*required) | Condition Keys | Dependent Actions |
|---|---|---|---|---|---|
| CreateConfigurationSet | Create a configuration set. Configuration sets are groups of rules that you can apply to the emails you send using Amazon Pinpoint | Write | |||
| CreateConfigurationSetEventDestination | Create an event destination | Write | |||
| CreateDedicatedIpPool | Create a new pool of dedicated IP addresses | Write | |||
| CreateDeliverabilityTestReport | Create a new predictive inbox placement test. | Write | |||
| CreateEmailIdentity | Verifies an email identity for use with Amazon Pinpoint | Write | |||
| DeleteConfigurationSet | Delete an existing configuration set | Write | |||
| DeleteConfigurationSetEventDestination | Delete an event destination | Write | |||
| DeleteDedicatedIpPool | Delete a dedicated IP pool | Write | |||
| DeleteEmailIdentity | Deletes an email identity that you previously verified for use with Amazon Pinpoint | Write | |||
| GetAccount | Obtain information about the email-sending status and capabilities | Read | |||
| GetBlacklistReports | Retrieve a list of the blacklists that your dedicated IP addresses appear on | Read | |||
| GetConfigurationSet | Get information about an existing configuration set | Read | |||
| GetConfigurationSetEventDestinations | Retrieve a list of event destinations that are associated with a configuration set | Read | |||
| GetDedicatedIp | Get information about a dedicated IP address | Read | |||
| GetDedicatedIps | List the dedicated IP addresses that are associated with your Amazon Pinpoint account | Read | |||
| GetDeliverabilityDashboardOptions | Show the status of the Deliverability dashboard | Read | |||
| GetDeliverabilityTestReport | Retrieve the results of a predictive inbox placement test | Read | |||
| GetDomainStatisticsReport | Retrieve inbox placement and engagement rates for the domains that you use to send email | Read | |||
| GetEmailIdentity | Provides information about a specific identity associated with your Amazon Pinpoint account | Read | |||
| ListConfigurationSets | List all of the configuration sets associated with your Amazon Pinpoint account in the current region | List | |||
| ListDedicatedIpPools | List all of the dedicated IP pools that exist in your Amazon Pinpoint account in the current AWS Region | List | |||
| ListDeliverabilityTestReports | Show a list of the predictive inbox placement tests that you've performed, regardless of their statuses | List | |||
| ListEmailIdentities | Returns a list of all of the email identities that are associated with your Amazon Pinpoint account | List | |||
| ListTagsForResource | Retrieve a list of the tags (keys and values) that are associated with a specific resource. | Read | |||
| PutAccountDedicatedIpWarmupAttributes | Enable or disable the automatic warm-up feature for dedicated IP addresses | Write | |||
| PutAccountSendingAttributes | Enable or disable the ability of your account to send email | Write | |||
| PutConfigurationSetDeliveryOptions | Associate a configuration set with a dedicated IP pool | Write | |||
| PutConfigurationSetReputationOptions | Enable or disable collection of reputation metrics for emails that you send using a particular configuration set in a specific AWS Region | Write | |||
| PutConfigurationSetSendingOptions | Enable or disable email sending for messages that use a particular configuration set in a specific AWS Region | Write | |||
| PutConfigurationSetTrackingOptions | Specify a custom domain to use for open and click tracking elements in email that you send using Amazon Pinpoint | Write | |||
| PutDedicatedIpInPool | Move a dedicated IP address to an existing dedicated IP pool | Write | |||
| PutDedicatedIpWarmupAttributes | Put Dedicated IP warm up attributes | Write | |||
| PutDeliverabilityDashboardOption | Enable or disable the Deliverability dashboard | Write | |||
| PutEmailIdentityDkimAttributes | Used to enable or disable DKIM authentication for an email identity | Write | |||
| PutEmailIdentityFeedbackAttributes | Used to enable or disable feedback forwarding for an identity | Write | |||
| PutEmailIdentityMailFromAttributes | Used to enable or disable the custom Mail-From domain configuration for an email identity | Write | |||
| SendEmail | Sends an email message | Write | |||
| TagResource | Add one or more tags (keys and values) to a specified resource. | Tagging | |||
| UntagResource | Remove one or more tags (keys and values) from a specified resource. | Tagging | |||
| UpdateConfigurationSetEventDestination | Update the configuration of an event destination for a configuration set | Write |
Resources Defined by Amazon Pinpoint Email Service
The following resource types are defined by this service and can be used in the
Resource
element of IAM permission policy statements. Each action in the Actions table identifies the resource types that can be specified with that action. A resource
type can also define which condition keys you can include in a policy. These
keys are displayed in the last column of the table. For details about the columns
in the following table, see The Resource Types Table.
| Resource Types | ARN | Condition Keys |
|---|---|---|
| configuration-set |
arn:${Partition}:ses:${Region}:${Account}:configuration-set/${ConfigurationSetName}
|
|
| dedicated-ip-pool |
arn:${Partition}:ses:${Region}:${Account}:dedicated-ip-pool/${CustomVerificationEmailTemplateName}
|
|
| deliverability-test-report |
arn:${Partition}:ses:${Region}:${Account}:deliverability-test-report/${CustomVerificationEmailTemplateName}
|
|
| event-destination |
arn:${Partition}:ses:${Region}:${Account}:configuration-set/${ConfigurationSetName}:event-destination/${EventDestinationName}
|
|
| identity |
arn:${Partition}:ses:${Region}:${Account}:identity/${IdentityName}
|
Condition Keys for Amazon Pinpoint Email Service
Amazon Pinpoint Email Service defines the following condition keys that can be used
in the Condition
element of an IAM policy. You can use these keys to further refine the conditions
under which the policy statement applies. For details about the columns in the
following table, see The Condition Keys Table.
To view the global condition keys that are available to all services, see Available Global Condition Keys in the IAM Policy Reference.
| Condition Keys | Description | Type |
|---|---|---|
| aws:RequestTag/${TagKey} | Filters actions based on the presence of tag key-value pairs in the request | String |
| aws:ResourceTag/${TagKey} | Filters actions based on tag key-value pairs attached to the resource | String |
| aws:TagKeys | Filters actions based on the presence of tag keys in the request | String |
| ses:FeedbackAddress | The "Return-Path" address, which specifies where bounces and complaints are sent by email feedback forwarding. | String |
| ses:FromAddress | The "From" address of a message. | String |
| ses:FromDisplayName | The "From" address that is used as the display name of a message. | String |
| ses:Recipients | The recipient addresses of a message, which include the "To", "CC", and "BCC" addresses. | String |


Medical Name
Pharmasist Name
Mobile Number
Email
Pharmasist Licence
Medical Image
Address
Password
Registration


addCustomLevel(name: string, value: number): void
Adds a custom log level that will be added as an additional method to Logger. Logger will call the corresponding method on any appenders that support it.
Parameters
name: string
The name for the new log level.
value: number
The numeric severity value for the level (higher is more severe).


Giropay is an Internet payment system in Germany, based on online banking. This payment method allows customers to buy securely on Internet using direct online transfers from their bank account.
Main advantages of Giropay as payment method are:
For merchants: Giropay offers merchants guaranteed payments at zero risk. Merchants receive a payment guarantee from the customer's bank immediately after successful Giropay transfer and can thus issue the goods immediately and without risk. Online payments are 100% guaranteed from the customer's bank.
For customers: Giropay uses the same environment as their banks' online banking sites. No sensitive information is being shared with the merchant. For Giropay payments, customers only need an online banking checking account with a bank participating in Giropay. The authentication takes place via PIN and TAN.
| Step | Description | Screenshot |
|---|---|---|
| 1 | Select Giropay | |
| 2 | View payment | |
| 3 | Redirect to Giropay | |
| 4 | Select Bank | |
| 5 | Log in to online banking | |
| 6 | Follow the steps and pay the purchase |
| Product | Giropay |
|---|---|
| Channels | ecom |
| Currencies | EUR |
| Countries | DE |
| Technical Flow | asynchronous |
| Recurring | no |
| Chargebacks | no |
| Reusable Payment Instruments | yes |
| Debit | yes |
|---|---|
| Preauthorization | no |
| Cancelation | no |
| Capture | no |
| Refunds | yes (only TAN based) |
| Notifications | yes - webhook, email |
| PayLink Integration | yes *(please contact support or account manager for this feature) |
| Settlement Reporting | no (on the road map) |
| API | yes |
|---|---|
| Widget | yes |
| Bridge | no |
| Shop Plugin | no |
| Note
Before execution of Giropay transactions, it's necessary merchant to setup a Giropay Bank account. |
|---|
As it is not ensured at the time of the redirect to the shop that the payment was 100% successful, the Payengine waits for the final asynchronous notification before a status is moved from PENDING into SUCCESS or FAILURE.
A merchant should register for the Payengine webhook notifications in order to receive this final status update.
Alternatively a GET request on the order or DEBIT transaction would also work, but it is not ensured that the final status will be available immediately after the redirect and a merchant might have to query the GET multiple times.
Therefore it is strongly recommended that the asynchronous notifications from the Payengine are used instead.
The Giropay notifications could be subscribed
| Prerequisite | Mandatory/Optional | Create Prerequisite |
|---|---|---|
| Customer | O | POST /customers |
| Persona | O | POST /customers/{{customerId}}/personas |
| Billing Address | O | POST /customers/{{customerId}}/addresses |
| Shipping Address | O | POST /customers/{{customerId}}/addresses |
| PARAMETER | MANDATORY/OPTIONAL | DESCRIPTION | EXAMPLE |
|---|---|---|---|
| payment.iban | O | IBAN of the customer | DE15111111111111111199 |
| async.successUrl | M | Redirect URL for successful payment | http://my.shop.com/success |
| async.failureUrl | M | async.failureUrl | async.failureUrl |
| async.cancelUrl | M | Redirect URL when payment is canceled | http://my.shop.com/cancel |
{
"product" : "giropay",
"terms":<PHONE_NUMBER>476,
"privacy":<PHONE_NUMBER>476,
"merchantOrderId": "merchantOrderId{{$timestamp}}",
"description": "test transaction",
"statementDescription": "statement description",
"initialAmount": {{totalAmount}},
"currency": "EUR",
"basket": [
{
"name": "USB-Stick",
"articleNumber": "SW10029",
"totalPrice": {{totalAmount}},
"totalPriceWithTax": {{totalAmount}},
"unitPrice": {{totalAmount}},
"unitPriceWithTax": {{totalAmount}},
"tax": 0,
"quantity": 1
}
],
"customer": "{{customerId}}",
"persona": "{{personaId}}",
"billingAddress": "{{addressId}}",
"shippingAddress": "{{addressId}}",
"channel": "ECOM",
"source": "Postman Test",
"async": {
"successUrl": "https://www.google.de/#newwindow=1&q=success",
"failureUrl": "https://www.google.de/#newwindow=1&q=failure",
"cancelUrl": "https://www.google.de/#newwindow=1&q=cancel"
}
}
{
"createdAt":<PHONE_NUMBER>535,
"modifiedAt":<PHONE_NUMBER>543,
"merchantId": "Merchant-11111111-1111-1111-1111-111111111111",
"terms":<PHONE_NUMBER>476,
"privacy":<PHONE_NUMBER>476,
"orderId": "z7gypqkl92",
"merchantOrderId": "merchantOrderId1571755524",
"paymentProviderTransactionId": "SK21YNOMY3",
"description": "test transaction",
"statementDescription": "statement description",
"initialAmount": 1190,
"preauthorizedAmount": 0,
"capturedAmount": 0,
"refundedAmount": 0,
"canceledAmount": 0,
"currency": "EUR",
"basket": [
{
"id": "Article-b24a4282-9e91-40e7-9ef1-9d954f1af404",
"name": "USB-Stick",
"articleNumber": "SW10029",
"totalPrice": 1190,
"totalPriceWithTax": 1190,
"unitPrice": 1190,
"unitPriceWithTax": 1190,
"quantity": 1,
"tax": 0,
"discount": null,
"imageUrl": null,
"articleUrl": null,
"articleType": null
}
],
"customer": {
"merchantCustomerId": "merchantCustomerId_1571755508",
"organizationRegistrationRegister": null,
"organizationRegistrationId": null,
"organizationEntityType": null,
"organizationVatId": null,
"companyName": null,
"reference": null,
"email"<EMAIL_ADDRESS>"customerId": "customer_t5wn26pgkf",
"addresses": [],
"personas": [],
"paymentInstruments": [],
"createdAt":<PHONE_NUMBER>537,
"modifiedAt":<PHONE_NUMBER>537,
"customerType": null
},
"persona": {
"personaId": "persona_cjyy1rqwdl",
"firstName": "Jane",
"lastName": "Smith",
"phone": "00493012345",
"mobile": "00493012345",
"fax": "00493012345",
"birthday":<PHONE_NUMBER>00,
"gender": "MALE",
"title": "Prof. Dr.",
"createdAt":<PHONE_NUMBER>456,
"modifiedAt":<PHONE_NUMBER>456
},
"billingAddress": {
"firstName": "Jane",
"lastName": "Smith",
"street": "PRESTON BRIDGE",
"houseNumber": "125",
"city": "Musterhausen",
"zip": "56231",
"country": "DE",
"state": "Bayern",
"phone": "00493012345",
"fax": "00493012345",
"mobile": "00493012345",
"title": "Prof. Dr.",
"additionalDetails": "premium buyer",
"addressId": "address_b8m8drzxqi",
"createdAt":<PHONE_NUMBER>331,
"modifiedAt":<PHONE_NUMBER>331
},
"shippingAddress": {
"firstName": "Jane",
"lastName": "Smith",
"street": "PRESTON BRIDGE",
"houseNumber": "125",
"city": "Musterhausen",
"zip": "56231",
"country": "DE",
"state": "Bayern",
"phone": "00493012345",
"fax": "00493012345",
"mobile": "00493012345",
"title": "Prof. Dr.",
"additionalDetails": "premium buyer",
"addressId": "address_b8m8drzxqi",
"createdAt":<PHONE_NUMBER>331,
"modifiedAt":<PHONE_NUMBER>331
},
"ipAddress": null,
"paymentInstrument": {
"createdAt":<PHONE_NUMBER>536,
"modifiedAt":<PHONE_NUMBER>536,
"paymentInstrumentId": "paymentinstrument_tadfvikkm6",
"merchantPaymentInstrumentId": null,
"attributes": null,
"encrypted": false,
"origin": "giropay",
"type": "sepa",
"recurring": false
},
"transactions": [
{
"createdAt":<PHONE_NUMBER>536,
"modifiedAt":<PHONE_NUMBER>536,
"type": "DEBIT",
"transactionId": "transaction_mlsmfnrlui",
"description": "test transaction",
"initialAmount": 1190,
"refundedAmount": 0,
"currency": "EUR",
"status": "PENDING",
"order": "z7gypqkl92",
"parentTransaction": null,
"transactions": null,
"basket": [
{
"id": "Article-b24a4282-9e91-40e7-9ef1-9d954f1af404",
"name": "USB-Stick",
"articleNumber": "SW10029",
"totalPrice": 1190,
"totalPriceWithTax": 1190,
"unitPrice": 1190,
"unitPriceWithTax": 1190,
"quantity": 1,
"tax": 0,
"discount": null,
"imageUrl": null,
"articleUrl": null,
"articleType": null
}
],
"providerCode": null,
"merchantMessage": null,
"customerMessage": null,
"descriptor": null,
"meta": null,
"challenge": null,
"asyncNotificationSubscriptionId": null,
"tracking": null
}
],
"status": "OPEN",
"channel": "ECOM",
"source": "Postman Test",
"settled": false,
"settlementDate": null,
"allowedProducts": null,
"product": "giropay",
"transactionType": "DEBIT",
"meta": null,
"async": {
"successUrl": "https://www.google.de/#newwindow=1&q=success",
"failureUrl": "https://www.google.de/#newwindow=1&q=failure",
"cancelUrl": "https://www.google.de/#newwindow=1&q=cancel"
},
"deviceIdent": null,
"clientType": "BRW",
"asyncNotificationSubscriptionId": null,
"lastOperation": "TRANSACTION_DEBIT_PENDING",
"locale": null,
"redirectUrl": "https://public-api-app53te.psp.cardtech.de/order/giropay/1.0/redirect/transaction_mlsmfnrlui"
}
Currently testing of Giropay payment transactions on TM environment is possible only via simulator.


Created 1958 Acquired 19700000approx
Wood block slightly carved and painted. Mounted on wood/linen.
"(?)Carnalaridge, Portrush"
Created 1960
Acquired 1971
Autumn: Boa Island (1 of small pair)
Created 1969
Acquired 1970
Cornfield (?DunVarren)
Acquired 1971
Early Morning Boa Islands
Created 1967
Acquired 1970
Gate (watercolor)
Created 1965
Acquired 1970
Kate & Bird I (ink & wash)
Created 1970
Acquired 1970
Kate & Bird II (ink & wash)
Created 1970
Acquired 1970
Lough Gill Sligo (min.)
Created 1971
Acquired 1971
Nendrum
Created 1962
Acquired 1970
One of Pair of Blue Landscapes
Created 1970
Acquired 1970
Second of Pair of Blue Landscapes
Created 1970
Acquired 1970
"One of Pair of Landscapes, Brown"
Created 1969
Acquired 1970
"Second of Pair of Landscapes, Brown"
Created 1969
Acquired 1970
"Rocks, Rechenaugh,Co.Donegal"
Acquired 1970
Seeds:Nendrum
Created 1962
Acquired 1970
Untitled (Stamp piece)
Created 1971
Acquired 1971
Watercolor Landscape
Created 1965
Acquired 1971
Watercolors: Birdman:Nendrum
Created 1962
Acquired 1971
"Willows, Castle Archdale (1 of small pair)
Created 1969
Acquired 1970
Woman with bird (? and setting sun)
Created 1970
Acquired 1970
Woman with bird (? and window)
Created 1970
Acquired 1970
Woman with loose dress & hat
Created 1970
Acquired 1970


Syntax:
subseq sequence start &optional end => subsequence
(setf (subseq sequence start &optional end) new-subsequence)
Arguments and Values:
sequence---a proper sequence.
start, end---bounding index designators of sequence. The default for end is nil.
subsequence---a proper sequence.
new-subsequence---a proper sequence.
Description:
subseq creates a sequence that is a copy of the subsequence of sequence bounded by start and end.
Start specifies an offset into the original sequence and marks the beginning position of the subsequence. end marks the position following the last element of the subsequence.
subseq always allocates a new sequence for a result; it never shares storage with an old sequence. The result subsequence is always of the same type as sequence.
If sequence is a vector, the result is a fresh simple array of rank one that has the same actual array element type as sequence. If sequence is a list, the result is a fresh list.
setf may be used with subseq to destructively replace elements of a subsequence with elements taken from a sequence of new values. If the subsequence and the new sequence are not of equal length, the shorter length determines the number of elements that are replaced. The remaining elements at the end of the longer sequence are not modified in the operation.
Examples:
(setq str "012345") => "012345" (subseq str 2) => "2345" (subseq str 3 5) => "34" (setf (subseq str 4) "abc") => "abc" str => "0123ab" (setf (subseq str 0 2) "A") => "A" str => "A123ab"
Side Effects: None.
Affected By: None.
Exceptional Situations:
Should be prepared to signal an error of type type-error if sequence is not a proper sequence. Should be prepared to signal an error of type type-error if new-subsequence is not a proper sequence.
See Also:
Notes: None.


Use the link below to reset your password for the Modern Slavery reporting service.
((Url))
This is an automatic email, please don’t reply to this address.
From the Government Equalities Office


--- layout: page title: Extra Life headline: EXTRA LIFE! ---
League of WashU is excited to be hosting an Extra Life event again, a 12 hour gaming marathon centered around raising money for children's hostpitals which will be held in the DUC on November 7th, 2015. In 2014, over 100 fellow WashU students raised an incredible $6000 for the Children's Miracle Network. We didn't expect such a resounding success but you, our fellow students, stepped up to the occasion and did something truly amazing.
But that was 2014, this is 2015, and we want it to be bigger and better. For the kids. Of course, we can't do this alone, which is where you come in. Join us and you can help make a serious difference in the world for the people that need it most.
At the event, there will be lots of food, drinks, gaming, and tournaments. And if you're wondering what games will be at the event, for starters there will be League of Legends, Smash Bros, Hearthstone, Dance Dance Revolution, Magic the Gathering, Counter-Strike GO, various board games, the DUC's Wii and XBox games, and many more.
If you're interested in getting involved, click here to join our team (see the FAQ for step-by-step instructions on how to sign up) and here to check out our Extra Life 2015 Facebook page! Kids are calling to us for help, will you answer them?


When the user has found the latest item of the quest the application will display a map which shows the way from the users' location to the starting point of the quest.
The map will show the starting point which you entered above, and the endpoint which you need to enter here.
No startpoint set!
No endpoint set!
You have to select a startpoint and an endpoint to see the map.


Specify the containers for running your Arquillian tests.
Manual container configuration:
Select this option to configure a managed or remote container. You can also use this option to configure an
embedded container if the container of interest is not present in the Embedded
list.
Specify the container implementation in the Dependencies section.
Embedded:
Select this option to use an embedded container. Then select the container of interest.
Fine-tune the container configuration in the Dependencies section.


User Guide
Help Me Pick New Logo Through 3 April 2016!
I am in the process of running a logo design contest on 99designs and have created a poll with 6 of the best logo designs I've received. I would love for you to vote on the logo design. It only takes a minute.
Like Sci-Fi? Read My New Online Fiction Series.
Do you like Sci-Fi? While I finish up my next novel, I have started an online fiction series called Forbearance. Picking up from the canteen scene in Bellicose, we meet Keius Minjen, a postal marine, as he tries to survive the battle planet Guna to exact revenge and one day liberate his homeland.
Sign-up if you want me to send you news about upcoming installments of Forbearance or my other writings.
 I will try to help with this guide some basic informations to develop your empire.
There are some aspects you must know to define your strategy.
First – Familiarize with the AstroEmpires page layout, explore the links to get to know where is what, this is somehow important.
Second – Understand every struture, see the table list and give a little atencion to the strutures and the technologies to research to give you more building options. See what is what and what it do.
YOUR EMPIRE
Credits are the monetary unit in the Universe of Astro Empires, and the base of the game’s economy. You can use them to build Structures on your Bases, to set up Trade Routes, to produce Spaceships, and to invest on Research.
You receive credits in a per hour basis, based on your Empire’s Economy. This can be raised by building structures, establishing trade routes, and conquering other player’s bases. You can also get credits by recycling debris in space after battles, plundering trade routes, or pillaging bases after having conquered them. So the main goal in the Game would be to optimize your resources, and to use them to expand your Empire, through conquests or by establishing new bases, increasing your Credits Income. Diplomacy and Alliances can help you to achieve your objectives.
PLANET
Each planet has their level of Solar, Area, Fertility, Metal, Gas and Crystal.
- Solar
- Is an energy resource that provides energy to the planet
:Area: Is the area that the planet has for building structures. Each terrain building will need 1 area, upgrades also needs 1 area. Note that there are orbital strutures wich doesn’t requires area on the planet.
- Fertility
- Is the population level of the planet.
When building an Urban Struture it will give more population depending on the planet Fertility level. Example: If Planet has fertility level 5, each urban struture will give more 5 population.
- Metal Resource
- A resource that increases Construction and Production processing capacity depending on the planets metal resource level.
:Gas Resource: Is an energy resource that provides energy to the planet the building that produces energy from the Gas Resource is the Gas plant, If Gas is level 2, each Gas Plant will give an output of 2. ( This also have influences of the Energy Research Tech, that will be discussed later in this guide)
- Crystal Resource
- A very profitable resource that increases the planets economy depending on the crystal resource level.
Understand that each planet will have their own levels, ponderate wisely to take the best of the planet.
Tip: – Try to make each planet you have dedicated, one for Production, one for Research and one for Economy. -Make your first planet an overall of Production, Research and Economy.
BASE PROCESSING CAPACITY / BASE OVERVIEW
In Base Overview you see a box on the right side of the base image.
-Constrution: Is the building constrution processing capacity per hour, you start with 6 cr/h, this is how much credits can the base process per hour. For example if a building costs 12 credits it will take 2 hours to that building be done.
-Production: Is the Ships Production processing capacity per hour, the processing is the same has for Constrution, but in this case its only for ships, and you need to have Shipyard to produce ship in that base.
-Research: Is the Technologies Research processing capacity per hour, the processing is the same has for Constrution, but in this case its only for researchs, and you need to have Research Labs to do researchs in that base.
-Economy: This is the Base economy, or your income, the credits you gain per hour from that planet.
BUILDINGS / STRUTURES
This is the set of structures that are possible to construct in base, some of them requires energy, others dont, to se more detailed information about the structures go to this link.
Urban Structures -Each level increases population capacity by Base Fertility.
Solar Plants -Each level increases energy by Base Solar.
Gas Plants -Each Level increases energy by Base Gas Resource.
Fusion Plants -Each level increases energy in 4, (This structure doesn’t depends on base energy resources) -Requires Energy Tech Research at level 6 to be available to construction.
Antimatters Plants -Each level increases energy in 10. (This structure doesn’t depends on base energy resources) -Requires Energy Tech Research at level 20 to be available to construction.
Metal Refineries -Each level increases Construction and Production by Base Metal Resource and gives +1 Economy to Base.
Crystal Mines -Each level increases Economy by Base Crystals Resource.
Research Labs -Each level increases Research with +6 and enables the research of more technologies.
Command Centers -Each level increases the number of Occupied Bases you can have by 1, and add 5%25 Fleet attack power at Base location. -Requires Computer Research Tech at level 6 to be available to construction.
Shipyard -Each level increases Production with +2 and enables the production of more units. Gives +1 Economy to Base.
Robotic Factories -Each level increases Construction and Production with +2 and gives +1 Economy to Base. -Require Computer Research Tech at level 2 to be available to construction.
Nanite Factories -Each level increases Construction and Production with +4 and gives +2 Economy to Base. -Requires Computer Research Tech at level 10 and Laser Research Tech at level 8 to be available to construction.
Android Factories -Each level increases Construction and Production with +6 and gives +2 Economy to Base. -Requires Artificial Intelligence research Tech at level 4 to be available to construction.
Spaceport -Each level increases Base Economy with +2 and enables Trade Routes with Base.
Economy Centers -Each level gives +3 to Base Economy. -Requires Computer research tech at level 10 to be available to construction.
Terraform -Each level expands Base Area by 5, doesn’t need Population. -Requires Computer research tech at level 10 and Energy research at level 10 to be available to construction.
Multi-Level Platforms -Each level expands Base Area by 10, doesn’t need Population. -Requires Armour research tech at level 22 to be available to construction.
Orbital Base -Each level increases population capacity with 10, doesn’t require Area on base and Population -Requires Computer research tech at level 20 to be available to construction.
Jump Gate -Each level increases travels speed by 100%25 to Fleets that departures from Base and can be used by guild members. -Requires Warp Drive research tech at level 12 and Energy research tech at level 20 to be available to construction.
Biosphere Modification -Each level increases Astro Fertility by 1. ( This structure alters Base Fertility, increasing its fertility level.) -Requires Computer research tech at level 24 and Energy research tech at level 24.
DEFENSES
Defenses are special Structures, which will help to protect your Base from enemies trying to conquer it. They use the same function has normal structures; each level requires area, population and energy. Go see detailed information on Defense structures in this link.
Barracks -The cheapest defense that helps to protect your base. -Requires Laser research tech at level 1 to be available to construction.
Laser Turrets -Small Defenses, good against Fighters, Bombers, and Corvettes. -Requires Laser research tech at level 1, to be available to construction.
Missile Turrets -Small Defenses, good against small and medium Units. -Requires Missiles research tech at level 1, to be available to construction.
Plasma Turrets -Average Defenses, good against medium Units. -Requires Plasma research tech at level 1 and Armor research tech at level 6, to be available to construction.
Ion Turrets -Average Defenses, good against medium Units, first Defenses to have Shield capacity. -Requires Ion research tech at level 1, Armor research tech at level 10 and Shielding research tech at level 2, to be available to construction.
Photon Turrets -Big Defenses, good against large Units. -Requires Photon research tech at level 1, Armour research tech at level 14 and Shielding research tech at level 6, to be available to construction.
Disruptor Turrets -The biggest Defenses, good against large Units. -Requires Disruptor research tech at level 1, Armour research tech at level 18 and Shielding research tech at level 8, to be available to construction.
Deflector Shields -Strong Shields that increase your Base protection. -Requires Ion research tech at level 6 and Shielding research tech at level 10
Planetary Shield -Planetary Shields that increase your Base Protection. -Requires Ion research tech at level 10 and Shielding research tech at level 14
Planetary Ring -Planetary Defensive Ring around the planet, doesn’t require area on the Planet. -Requires Photon research tech at level 10, Armour at level 22 and Shielding at level 12.
NOTE: Construction of Planetary Shield and Planetary Ring cost 50%25 at Moons, and 25%25 at Asteroids
TECHNOLOGIES RESEARCH
Researching new technologies will allow you to build new Structures and Spaceships, will improve your units, and will also give you access to more advanced Technologies. Research is done on bases that have Research Labs Structure. More information about Technologies Research, please visit this link.
Energy – Each level increases energy output in %255, this is a very good research to invest, with Energy level 20, every Energy supply with have 200%25 output, Example: Planet solar energy 4, a Solar Plant can have an output of 8 with Energy Research level 20. Also makes available other structures to construct. -Requires Research Labs Structure at level 1
Computer -Each level allows one Campaign Fleet. -Requires Research Labs Structure at level 1 -The formula is calculated in this way. Planets you own + Planets you are occupying + Computer Research Level.
Armour -Each level increases armor in %255, the most important research to make ships stronger. -Requires Research Labs Structure at level 2
Warp Drive -Each level increases ship speed that uses Warp Drive in 5%25. -Requires Research Labs Structure at level 8
Stellar Drive -Each level increases ship speed that uses Stellar Drive in 5%25. -Requires Research Labs Structure at level 5 Laser -Each level increases units and defenses weapon power that uses Laser in 5%25. -Requires Research Labs Structure at level 2.
Missiles -Each level increases units and defenses weapon power that uses Missiles in 5%25. -Requires Research Labs Structure at level 4.
Plasma -Each level increases units and defenses weapon power that uses Plasma in 5%25. -Requires Research Labs Structure at level 6.
Shielding -Each level increases units and defenses shield strength in 5%25. -Require Research Labs Structure at level 10
Ion -Each level increases units and defenses weapon power that uses Ion in 5%25. -Requires Research Labs Structure at level 12, Energy at level 12 and Laser at level 10.
Photon -Each level increases units and defenses weapon power that uses Photon in 5%25. -Requires Research Labs Structure at level 16, Energy at level 16 and Plasma at level 8
Disruptor -Each level increases units and defenses weapon power that uses Disruptor in 5%25. -Requires Research Labs Structure at level 20, Energy at level 20 and Laser at level 18.
Artificial Intelligence -Each level increases Bases Research Output in 5%25. -Requires Research Labs Structure at level 20 and Computer at level 20
Cybernetics -Each level increases Bases Construction and Production Output in 5%25. -Requires Research Labs Structure at level 22 and Artificial Intelligence at level 6


- Name: nodebb
- Requirement: Ubuntu 12.04 or later
- Exposes ports: <IP_ADDRESS>:4567
- Requires roles:
- Installation notes: No
- secret: Shared secret for cookies
- rs_servers: Comma separated list of MongoDB servers
- init_db: If set to True, a sample database will be created. The credentials are admin/password. You should not use this for anything other than testing.


Installation
Install the theme
1. For a new site, install the minimal-mistakes-jekyll
gem, remote theme, or fork the Minimal Mistakes repo on GitHub following the steps outlined in the Quick-Start Guide.
If you plan to host with GitHub Pages be sure to properly setup jekyll-remote-theme as it is required for the theme to work properly.
2. For an existing site follow the steps outlined in the Quick-Start Guide. Then work through the guidelines below for migration and setup.
3. For those who’d like to make substantial edits to the theme, download as a ZIP file to customize.
Download Minimal Mistakes Theme
ProTip: Be sure to remove /docs
and /test
if you forked or downloaded Minimal Mistakes. These folders contain documentation and test pages for the theme and you probably don’t want them littering up in your repo.
Note: The theme uses the jekyll-include-cache plugin which will need to be installed in your Gemfile
and added to the plugins
array of _config.yml
. Otherwise you’ll throw Unknown tag 'include_cached'
errors at build.
Theme migration
To move over any existing content you’ll want to copy the contents of your _posts
folder to the new site. Along with any pages, collections, data files, images, or other assets you may have.
Next you’ll need to convert posts and pages to use the proper layouts and settings. In most cases you simply need to update _config.yml
to your liking and set the correct layout
in their YAML Front Matter.
Front Matter defaults are your friend and I encourage you to leverage them instead of setting a layout and other global options in each post/page’s YAML Front Matter.
Posts can be configured to use the single
layout — with reading time, comments, social sharing links, and related posts enabled. Adding the following to _config.yml
will set these defaults for all posts:
defaults:
# _posts
- scope:
path: ""
type: posts
values:
layout: single
read_time: true
comments: true
share: true
related: true
Post/Page Settings: Be sure to read through the “Working with…” documentation to learn about all the options available to you. The theme has been designed to be flexible — with numerous settings for each.
Install dependencies
If this is your first time using Jekyll be sure to read through the official documentation before jumping in. This guide assumes you have Ruby v2 installed and a basic understanding of how Jekyll works.
To keep your sanity and better manage dependencies I strongly urge you to install Bundler with gem install bundler
and use the following Gemfile
:
source "https://rubygems.org"
# Hello! This is where you manage which Jekyll version is used to run.
# When you want to use a different version, change it below, save the
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
#
# bundle exec jekyll serve
#
# This will help ensure the proper Jekyll version is running.
# Happy Jekylling!
# gem "github-pages", group: :jekyll_plugins
# To upgrade, run `bundle update`.
gem "jekyll"
gem "minimal-mistakes-jekyll"
# The following plugins are automatically loaded by the theme-gem:
# gem "jekyll-paginate"
# gem "jekyll-sitemap"
# gem "jekyll-gist"
# gem "jekyll-feed"
# gem "jekyll-include-cache"
#
# If you have any other plugins, put them here!
group :jekyll_plugins do
end
ProTip: To be bleeding edge install the latest (unreleased) version of Minimal Mistakes by adding this line to your Gemfile
: gem "minimal-mistakes-jekyll", :github => "mmistakes/minimal-mistakes"
.
To maintain a local Jekyll environment in sync with GitHub Pages replace the gem "jekyll"
line with gem "github-pages", group: :jekyll_plugins
and run the following:
$ bundle install
Note: The GitHub Pages gem installs additional dependencies that may need to be added to your Gemfile
if you decide to remove the gem "github-pages"
eg. jekyll-paginate
, jekyll-sitemap
, jekyll-feed
, jekyll-include-cache
, etc.
Depending on what gems you already have installed you may have to run bundle update
to clear up any dependency issues. Bundler is usually pretty good at letting you know what gems need updating or have issues installing, to further investigate.
When using Bundler to manage gems you’ll want to run Jekyll using bundle exec jekyll serve
and bundle exec jekyll build
.
Doing so executes the gem versions specified in Gemfile.lock
. Sure you can test your luck with a naked jekyll serve
, but I wouldn’t suggest it. A lot of Jekyll errors originate from outdated or conflicting gems fighting with each other.