public class CouponWarehouse
extends java.lang.Object
| Modifier and Type | Method and Description |
|---|---|
boolean |
canGetCouponFromCode(Users user)
Checks whether a user is qualified to get coupon from entering code.
|
boolean |
checkSelf(java.lang.String uid,
java.lang.String text)
Checks whether a user is requesting a coupon with its own code.
|
int |
couponRemaining()
Checks if coupons still remain.
|
static CouponWarehouse |
getInstance()
Retrieve the unique CouponWarehouse Object.
|
MsgAttachedData<java.util.ArrayList<java.lang.String>> |
getNotifiableObservers(java.lang.String msg)
Get the observers along with the message to push to the observers which is wrapped in MsgAttachedData type.
|
static boolean |
isCampaignStarted()
Checks if the campaign is started.
|
boolean |
isCodeValid(java.lang.String invitee,
java.lang.String code)
Checks whether the input code is valid for a invitee for casting into coupons.
|
boolean |
isNewUser(java.lang.String uid)
Checks whether a user is registered after campaign.
|
boolean |
isNewUser(Users user)
Checks whether a user is registered after campaign.
|
java.lang.String |
issueCode(java.lang.String inviter)
Issue the 6-digit valid code corresponding to the id of users.
|
Coupon |
issueCoupon(java.lang.String invitee,
java.lang.String code)
Cast and Issue a coupon of the given code.
|
boolean |
notGotCoupon(java.lang.String uid)
Checks whether a user of user id has receieve a coupon or not.
|
void |
register(Users obj)
Add a user into observer List.
|
static java.lang.String |
startCampaign()
Starts the campaign base on current time.
|
void |
unregister(Users obj)
Delete a user from observer List.
|
public static CouponWarehouse getInstance()
public static java.lang.String startCampaign()
public void register(Users obj)
obj
- User as observerpublic void unregister(Users obj)
obj
- User as observerpublic MsgAttachedData<java.util.ArrayList<java.lang.String>> getNotifiableObservers(java.lang.String msg)
msg
- Message to pushpublic java.lang.String issueCode(java.lang.String inviter)
inviter
- User asking for codepublic Coupon issueCoupon(java.lang.String invitee, java.lang.String code)
invitee
- The asker of the couponcode
- Code of the couponpublic boolean isCodeValid(java.lang.String invitee, java.lang.String code)
invitee
- User source of code inputscode
- Code to checkpublic int couponRemaining()
public boolean isNewUser(Users user)
user
- Source of type Userspublic boolean isNewUser(java.lang.String uid)
uid
- Id of source user of type Stringpublic boolean canGetCouponFromCode(Users user)
user
- Source of type Userspublic boolean checkSelf(java.lang.String uid, java.lang.String text)
uid
- Id of source user of type Stringtext
- Code to checkpublic static boolean isCampaignStarted()
public boolean notGotCoupon(java.lang.String uid)
uid
- User id of String types


TECHTRIX - WEBOOL
Home
Wishlist
My Orders
Account
Coins
Beauty
Phone
Sports
Toys
Previous
Next
Latest Styles
At Great Prices
Kids
Mens
Ladies
Fashion
Vegitables
Electronics
Home Decor


Employee Records/Salary
Employee First Name:
Employee Last Name:
ID Number:
Job Title:
Yearly Salary:


While Stacks is first and foremost a CSS library, it also provides commonly used functionality for some components via JavaScript. This functionality is optional. If you only need the styling parts of Stack, you’re free to ignore the provided JavaScript. The converse is not true: The JavaScript components work under the assumption that the Stacks CSS is available.
Stacks JavaScript is currently included within various Stack Overflow projects automatically. If you’re working on a Stack Overflow project, chances are it’s already available for you! If not, reach out to us and we’ll work on getting it setup.
To include Stacks JavaScript in other projects, do the following.
dist/js/stacks.min.js
in your page. For example, if you use the unpkg CDN, add the tag <script<EMAIL_ADDRESS>to your HTML. See Using Stacks for more information on Unpkg and installing Stacks via NPM.The Stacks JavaScript components are provided as Stimulus controllers. Stimulus is a library created by Basecamp.
Stimulus allows you to add functionality to your markup in a way that is similar to how you add styling to your markup: by modifying HTML attributes.
Just as you style components by adding classes to the class
attribute, with Stacks JavaScript, you’ll give components optional functionality by adding data-…
attributes to the HTML.
The basic functional unit of Stimulus, and of a Stacks JavaScript component, is a controller. Controllers are identified by their name, and all Stacks-provided controller names are prefixed with s-…
, just like component CSS classes. You give functionality to an HTML element by setting its data-controller
attribute.
Refer to the documentation of individual components on how to configure a component’s behavior.
A side effect of including the Stacks JavaScript in your project is that you also have Stimulus available in your page. This means you can not only use Stacks-provided controllers, but also create your own.
For general information about writing code with Stimulus, refer to the official documentation. That documentation generally assumes that you’re writing ES6 code. In order to make it useful without ES6-to-ES5 transpilation, Stacks provides a helper that allows you to write controllers using old-fashioned JavaScript syntax.
This helper is called Stacks.addController
and takes two arguments: The name (“identifier”) of the controller, and an object that is analogous to the ES6 class that you would write for your controller, except that it's a plain JavaScript object. All own enumerable properties of that object will be made available on the controller prototype, with the exception of the targets
property, which will be available on the controller constructor itself, i.e. statically.
With that, you can create and register the final Hello World controller example from the official documentation like this:
We prefix our JavaScript target classes with .js-
so that changing or adding a class name for styling purposes doesn’t inadvertently break our JS. This allows us to style elements with any chain of atomic or component classes from Stacks without breaking any additional JavaScript interactivity.
We also try to avoid IDs for both visual styling and JavaScript targeting. They aren’t reusable, visual styling can’t be overwritten by atomic classes, and, like non-.js-
classes, we can’t tell if there is JavaScript interactivity attached at a glance.


Click on the links below to go to websites:
Google
Wikipedia
Github
This is how you create a link to an email
themail@server.com


| 1 | package fr.sii.ogham.template.thymeleaf.v2.buider; | |
| 2 | ||
| 3 | import org.thymeleaf.TemplateEngine; | |
| 4 | import org.thymeleaf.templateresolver.ITemplateResolver; | |
| 5 | ||
| 6 | import fr.sii.ogham.core.builder.context.BuildContext; | |
| 7 | import fr.sii.ogham.core.builder.env.EnvironmentBuilder; | |
| 8 | import fr.sii.ogham.core.template.detector.TemplateEngineDetector; | |
| 9 | import fr.sii.ogham.sms.builder.SmsBuilder; | |
| 10 | import fr.sii.ogham.template.thymeleaf.common.adapter.FileResolverAdapter; | |
| 11 | import fr.sii.ogham.template.thymeleaf.common.adapter.FirstSupportingResolverAdapter; | |
| 12 | import fr.sii.ogham.template.thymeleaf.common.adapter.TemplateResolverAdapter; | |
| 13 | import fr.sii.ogham.template.thymeleaf.common.buider.AbstractThymeleafBuilder; | |
| 14 | import fr.sii.ogham.template.thymeleaf.v2.ThymeLeafV2FirstSupportingTemplateResolver; | |
| 15 | import fr.sii.ogham.template.thymeleaf.v2.ThymeleafV2TemplateDetector; | |
| 16 | import fr.sii.ogham.template.thymeleaf.v2.adapter.FixClassPathResolverAdapter; | |
| 17 | import fr.sii.ogham.template.thymeleaf.v2.adapter.StringResolverAdapter; | |
| 18 | import fr.sii.ogham.template.thymeleaf.v2.adapter.ThymeleafV2TemplateOptionsApplier; | |
| 19 | ||
| 20 | /** | |
| 21 | * Configures parsing of templates using Thymeleaf. | |
| 22 | * | |
| 23 | * Specific resource resolution can be configured to use template prefix/suffix | |
| 24 | * paths: | |
| 25 | * | |
| 26 | *
 | |
| 27 | *  | |
| 28 | * .classpath() | |
| 29 | * .pathPrefix("email/") | |
| 30 | * .pathSuffix(".html") | |
| 31 | * .and() | |
| 32 | * .file() | |
| 33 | * .pathPrefix("/data/myapplication/templates/email") | |
| 34 | * .pathSuffix(".html") | |
| 35 | *  | |
| 36 | *
 | |
| 37 | * | |
| 38 | * You can customize default Thymeleaf {@link TemplateEngine}: | |
| 39 | * | |
| 40 | *
 | |
| 41 | *  | |
| 42 | * .engine() | |
| 43 | * .addDialect("foo", myDialect) | |
| 44 | * .addMessageResolver(myMessageResolver) | |
| 45 | *  | |
| 46 | *
 | |
| 47 | * | |
| 48 | * Or you can use a particular Thymeleaf {@link TemplateEngine}: | |
| 49 | * | |
| 50 | *
 | |
| 51 | *  | |
| 52 | * .engine(new MyTemplateEngine()) | |
| 53 | *  | |
| 54 | *
 | |
| 55 | * | |
| 56 | * @author Aurélien Baudet | |
| 57 | * | |
| 58 | */ | |
| 59 | public class ThymeleafV2SmsBuilder extends AbstractThymeleafBuilder<ThymeleafV2SmsBuilder, SmsBuilder, ThymeleafV2EngineConfigBuilder<ThymeleafV2SmsBuilder>> { | |
| 60 | /** | |
| 61 | * Default constructor when using Thymeleaf without all Ogham work. | |
| 62 | * | |
| 63 | * WARNING: use is only if you know what you are doing ! | |
| 64 | */ | |
| 65 | public ThymeleafV2SmsBuilder() { | |
| 66 | super(ThymeleafV2SmsBuilder.class); | |
| 67 | } | |
| 68 | ||
| 69 | /** | |
| 70 | * Initializes the builder with a parent builder. The parent builder is used | |
| 71 | * when calling {@link #and()} method. The {@link EnvironmentBuilder} is | |
| 72 | * used to evaluate properties when {@link #build()} method is called. | |
| 73 | * | |
| 74 | * @param parent | |
| 75 | * the parent builder | |
| 76 | * @param buildContext | |
| 77 | * for registering instances and property evaluation | |
| 78 | */ | |
| 79 | public ThymeleafV2SmsBuilder(SmsBuilder parent, BuildContext buildContext) { | |
| 80 | super(ThymeleafV2SmsBuilder.class, parent, buildContext); | |
| 81 | } | |
| 82 | ||
| 83 | @Override | |
| 84 | protected TemplateEngineDetector createTemplateDetector() { | |
| 85 |
3
1. createTemplateDetector : replaced return value with null for fr/sii/ogham/template/thymeleaf/v2/buider/ThymeleafV2SmsBuilder::createTemplateDetector → NO_COVERAGE 2. createTemplateDetector : replaced return value with null for fr/sii/ogham/template/thymeleaf/v2/buider/ThymeleafV2SmsBuilder::createTemplateDetector → TIMED_OUT 3. createTemplateDetector : replaced return value with null for fr/sii/ogham/template/thymeleaf/v2/buider/ThymeleafV2SmsBuilder::createTemplateDetector → KILLED |
return buildContext.register(new ThymeleafV2TemplateDetector(buildResolver())); |
| 86 | } | |
| 87 | ||
| 88 | @Override | |
| 89 | protected ITemplateResolver buildTemplateResolver(TemplateEngine builtEngine) { | |
| 90 |
3
1. buildTemplateResolver : replaced return value with null for fr/sii/ogham/template/thymeleaf/v2/buider/ThymeleafV2SmsBuilder::buildTemplateResolver → NO_COVERAGE 2. buildTemplateResolver : replaced return value with null for fr/sii/ogham/template/thymeleaf/v2/buider/ThymeleafV2SmsBuilder::buildTemplateResolver → TIMED_OUT 3. buildTemplateResolver : replaced return value with null for fr/sii/ogham/template/thymeleaf/v2/buider/ThymeleafV2SmsBuilder::buildTemplateResolver → KILLED |
return buildContext.register(new ThymeLeafV2FirstSupportingTemplateResolver(buildResolver(), buildAdapters())); |
| 91 | } | |
| 92 | ||
| 93 | @Override | |
| 94 | protected ThymeleafV2EngineConfigBuilder<ThymeleafV2SmsBuilder> getThymeleafEngineConfigBuilder() { | |
| 95 |
1
1. getThymeleafEngineConfigBuilder : replaced return value with null for fr/sii/ogham/template/thymeleaf/v2/buider/ThymeleafV2SmsBuilder::getThymeleafEngineConfigBuilder → NO_COVERAGE |
return buildContext.register(new ThymeleafV2EngineConfigBuilder<>(myself, buildContext)); |
| 96 | } | |
| 97 | ||
| 98 | @Override | |
| 99 | protected FirstSupportingResolverAdapter buildAdapters() { | |
| 100 | FirstSupportingResolverAdapter adapter = buildContext.register(new FirstSupportingResolverAdapter()); | |
| 101 | for (TemplateResolverAdapter custom : customAdapters) { | |
| 102 |
1
1. buildAdapters : removed call to fr/sii/ogham/template/thymeleaf/common/adapter/FirstSupportingResolverAdapter::addAdapter → NO_COVERAGE |
adapter.addAdapter(custom); |
| 103 | } | |
| 104 | ThymeleafV2TemplateOptionsApplier applier = buildContext.register(new ThymeleafV2TemplateOptionsApplier()); | |
| 105 |
3
1. buildAdapters : removed call to fr/sii/ogham/template/thymeleaf/common/adapter/FirstSupportingResolverAdapter::addAdapter → NO_COVERAGE 2. buildAdapters : removed call to fr/sii/ogham/template/thymeleaf/common/adapter/FirstSupportingResolverAdapter::addAdapter → TIMED_OUT 3. buildAdapters : removed call to fr/sii/ogham/template/thymeleaf/common/adapter/FirstSupportingResolverAdapter::addAdapter → KILLED |
adapter.addAdapter(buildContext.register(new FixClassPathResolverAdapter(applier))); |
| 106 |
3
1. buildAdapters : removed call to fr/sii/ogham/template/thymeleaf/common/adapter/FirstSupportingResolverAdapter::addAdapter → NO_COVERAGE 2. buildAdapters : removed call to fr/sii/ogham/template/thymeleaf/common/adapter/FirstSupportingResolverAdapter::addAdapter → SURVIVED 3. buildAdapters : removed call to fr/sii/ogham/template/thymeleaf/common/adapter/FirstSupportingResolverAdapter::addAdapter → TIMED_OUT |
adapter.addAdapter(buildContext.register(new FileResolverAdapter(applier))); |
| 107 |
3
1. buildAdapters : removed call to fr/sii/ogham/template/thymeleaf/common/adapter/FirstSupportingResolverAdapter::addAdapter → NO_COVERAGE 2. buildAdapters : removed call to fr/sii/ogham/template/thymeleaf/common/adapter/FirstSupportingResolverAdapter::addAdapter → TIMED_OUT 3. buildAdapters : removed call to fr/sii/ogham/template/thymeleaf/common/adapter/FirstSupportingResolverAdapter::addAdapter → KILLED |
adapter.addAdapter(buildContext.register(new StringResolverAdapter(applier))); |
| 108 |
3
1. buildAdapters : removed call to fr/sii/ogham/template/thymeleaf/common/adapter/FirstSupportingResolverAdapter::setOptions → NO_COVERAGE 2. buildAdapters : removed call to fr/sii/ogham/template/thymeleaf/common/adapter/FirstSupportingResolverAdapter::setOptions → TIMED_OUT 3. buildAdapters : removed call to fr/sii/ogham/template/thymeleaf/common/adapter/FirstSupportingResolverAdapter::setOptions → KILLED |
adapter.setOptions(buildTemplateResolverOptions()); |
| 109 |
3
1. buildAdapters : replaced return value with null for fr/sii/ogham/template/thymeleaf/v2/buider/ThymeleafV2SmsBuilder::buildAdapters → NO_COVERAGE 2. buildAdapters : replaced return value with null for fr/sii/ogham/template/thymeleaf/v2/buider/ThymeleafV2SmsBuilder::buildAdapters → TIMED_OUT 3. buildAdapters : replaced return value with null for fr/sii/ogham/template/thymeleaf/v2/buider/ThymeleafV2SmsBuilder::buildAdapters → KILLED |
return adapter; |
| 110 | } | |
| 111 | } | |
Mutations | ||
| 85 |
1.1 2.2 3.3 |
|
| 90 |
1.1 2.2 3.3 |
|
| 95 |
1.1 |
|
| 102 |
1.1 |
|
| 105 |
1.1 2.2 3.3 |
|
| 106 |
1.1 2.2 3.3 |
|
| 107 |
1.1 2.2 3.3 |
|
| 108 |
1.1 2.2 3.3 |
|
| 109 |
1.1 2.2 3.3 |


Backup: 3 mit cop
Organizational
the J object system
COPenv
Link J locale space
Proposal: Context-based array programming
Introduction: Status Quo of Feature Detection
COJ KW42
Eval in J
Backup: addons/games/minesweeper/uiconsole.ijs
COJ links
Backup: minesweeper test notes
KW2 tabs
functional COP in J
KW3: building minesweeper showcase
ausschnitt minesweeper/uiwd.ijs
Survey Results
COP Glossar
Proposal: COP-leak
Use Cases of COP
Jens
procedural COP
J-proposal notes
Jens konsultation 2
CoJ: Assignment-Based Modularization In Context Oriented Programming


--- title: Getting started with GitHub Actions keywords: fastai sidebar: home_sidebar nb_path: "80_tutorial_actions.ipynb" ---
GitHub Actions help you automate tasks within your software development life cycle. GitHub say that:
"GitHub Actions are event-driven, meaning that you can run a series of commands after a specified event has occurred. For example, every time someone creates a pull request for a repository, you can automatically run a command that executes a software testing script."
They are a powerful system for automating many software development processes, and open source projects get unlimited compute hours for free! A sequence of steps in GitHub Actions are be combined together into a "workflow", which can furthermore contain multiple "jobs", which are run on multiple machines, with (if needed) multiple operating systems, in parallel. For more information, read GitHub's Introduction to GitHub Actions. However, workflows can be difficult to create and debug, because:
However, with ghapi
you can write your workflows in Python and shell, and can do nearly all your development on your local machine. We'll start by importing from the library, along with fastcore
:
from ghapi.all import *
from fastcore.utils import *
We're going to help you get started by building a simple workflow which will add a comment to all new pull requests, saying "thank you" to the contributor.
GhApi
makes developing workflows easier, because your actual YAML file is created for you entirely automatically. To create the new workflow, run the create_workflow
function, like so:
create_workflow(name='thankyou', event=Event.pull_request)
Now it's time to create our python script. You'll find it in .github/scripts
, named based on your create_workflow
parameters. The initial skeleton just contains import statements.
It will be much easier for us to iterate on our script if we have a sample context that the GitHub workflow runner will provide to us. We can get one by calling example_payload
:
example = example_payload(Event.pull_request)
list(example)
For information about all the fields in a payload, use the GitHub webhook payload documentation. For instance, the docs tell us that the "action" field can be:
"opened, edited, closed, assigned, unassigned, review_requested, review_request_removed, ready_for_review, labeled, unlabeled, synchronize, locked, unlocked, or reopened"
Let's see what it contains for our example payload:
example.action
For our script, we should ensure that it's only run for the opened
action. Next up, we need to find out how to add a comment to a pull request. First, we'll need to create our GhApi
object. On your own PC, your GitHub token should be in the GITHUB_TOKEN
environment variable, whereas when run in a workflow it will be part of the github
context. The github_token
function handles this for you automatically, so we can say:
api = GhApi(owner='fastai', repo='ghapi-test', token=github_token())
One way to find the correct operation to call is to search the full API reference. Operations are generally named as {verb}_{object}
, so search for create_comment
. Alternatively, you can jump to the section that you expect to contain your required operation -- in this case, it's important to know that GitHub considers a "pull request" to be a special kind of "issue". After some looking through the page, we found this operation:
api.issues.create_comment
The hyperlink provided will take you to the GitHub docs for this operation, so take a look at that now. We need to provide an issue_number
and the body
of the comment. We can look inside the payload to find the issue number we need to use:
', '.join(example.pull_request)
Since the docs call the parameter issue_number
, and there is a number
field here, that's probably what we should use.
To test this out, we'll first create a PR or issue, and then create our comment:
com = api.issues.create_comment(issue_number=1, body='Thank you for your *valuable* contribution')
We can view the comment by visiting its URL:
com.url
...and then delete it since we were just testing:
com = api.issues.delete_comment(com.id)
The payload will be available in the github
context, which is provided automatically to you using the context_github
variable. When running locally, an example github context will be used instead. (This example github context will not, in general, have the same payload as the event you're using, so use the example payload
for that.)
The event
contains the actual payload:
list(context_github.event)
When we called create_workflow
, the workflow it created can also be triggered using workflow dispatch, which is more convenient for testing. In this case, our payload will not have the same information, so we should write our function in a way that can handle workflow dispatch as well.
dispatch = example_payload(Event.workflow_dispatch)
We can check what type of trigger we're responding to, by checking the keys of our payload:
'workflow' in dispatch
In that case, we'll use a fixed issue number, instead of using the actual payload number.
We can now write our function.
def reply_thanks():
api = GhApi(owner='fastai', repo='ghapi', token=github_token())
payload = context_github.event
if 'workflow' in payload: issue = 1
else:
if payload.action != 'opened': return
issue = payload.number
api.issues.create_comment(issue_number=issue, body='Thank you for your *valuable* contribution')
Finally, copy this to the script in .github/scripts
, along with a line to run it (reply_thanks()
), and commit it to GitHub.
You can now test the workflow by going to GitHub, clicking the "Actions" tab, then clicking the workflow you just created, and then clicking the "Run workflow" button.
Alternatively, you can run it using GhApi
, which we'll do now:
wf = api.actions.get_workflow('thankyou-pull_request.yml')
api.actions.create_workflow_dispatch(wf.id, ref='master')
To find out if the dispatch succeeded, go to the Actions tab on your repo and look for a yellow circle, which means it's running, or a green tick, which means it succeeded. If you get a red cross, it failed - you can click the item for details. You can also get the results of the latest run through the API (but be sure to wait at least 30 seconds for the workflow to kick off):
last_run = api.actions.list_workflow_runs(wf.id).workflow_runs[0]
last_run.conclusion
If it doesn't work, you can add print(payload)
after the first line, and when GitHub runs your workflow you'll see the whole payload in your "Actions" panel.
Once it's working OK using the manual workflow dispatch, try creating a pull request.
Sometimes, you need to join more than one job in a workflow. This isn't common, but one example it's absolutely needed is if you want to build software or run tests on multiple platforms, and then have some step that runs before or after all of them. For instance, building and releasing software that needs to be built on each platform requires one job to create a release, and then a separate job to do the builds and add artifacts to the release, since GitHub Actions runs all your steps in a job in a single platform. Furthermore, we need to set up dependencies between jobs using needs
. ghapi
provides helpers to set up multi-job workflows with depedencies for you, which we'll show an example of here.
In this tutorial we're going to show how we created hugo-mathjax. The workflow in this project patches Hugo to add Mathjax support, then builds Mac, Ubuntu, and Windows versions of the software, creating a release which includes each of those builds as artifacts. It does the following:
First, we'll create the workflow and script files:
create_workflow('create', Event.schedule, contexts='needs', opersys='macos, ubuntu, windows', prebuild=True)
This has some pieces we haven't seen before, so let's take a look at them now.
The prebuild
bool tells ghapi
to include a prebuild job (see create_workflow
for the full workflow created). After you run the above, take a look at the YAML that was created, to see how it all works. We're going to need to modify the YAML, to add the schedule we want to run it on, using a cron:
line. You can see the final YAML file here.
The prebuild job calls a prebuild script using a Ubuntu runner. We'll create the prebuild script now.
The script needs to get the current Hugo release tag:
tag = GhApi().repos.get_latest_release('gohugoio', repo='hugo').name
tag
...and check whether we have released that patched version:
api = GhApi(owner='fastai', repo='hugo-mathjax', token=github_token())
exists = True
try: api.repos.get_release_by_tag(tag)
except HTTP404NotFoundError: exists = False
exists
In the case that the release already exists, we'll want to just exit, otherwise we'll create a new release:
rel = api.repos.create_release(tag, name=tag)
The build
job will run in a separate runner, so we need to create an output telling it the tag of the release we've created. The actions_output
function does that, but print a special format that GitHub Actions uses:
actions_output('tag', tag)
You can see the completed prebuild script here.
Now we can move on to creating the build
script. First, we can get the outputs of the prebuild
job as a dict
by using context_needs
, which contains information from any jobs in the needs
section (which ghapi
will automatically set up for you if you enable prebuild
):
out = loads(nested_idx(context_needs, 'prebuild', 'outputs', 'out'))
To get the tag
output of the job, we index into the dict
:
tag = nested_idx(out, 'step1', 'outputs', 'tag')
tag
We get the release details using the same approach as before, then download, untar, patch, and build it. We won't discuss those steps here since they're not specific to ghapi
.
Once the software is built, we need to know the name of the created file, which depends on the operating system we're running on. We can use the following approach to check:
platform = dict(linux='linux', linux2='linux', win32='win', darwin='mac')[sys.platform]
ext_nm = 'hugo.exe' if platform=='win' else 'hugo'
ext_nm
Finally, we can upload our file as an artifact:
api = GhApi(owner='fastai', repo='hugo-mathjax', token=github_token())
rel = api.repos.get_release_by_tag(tag)
api.upload_file(rel, fn)
You can see the complete script here.
We've now successfully built a workflow that automatically patches, builds, and releases a mixed C/Go project, across multiple platforms, in parallel!


def OpenURI.redirectable?(uri1, uri2)
true
end
This monkey-patch fixes the issue and remove the check.A bug exists for the stdlib http://bugs.ruby-lang.org/issues/859 but fixes just the other way round.
--- title: "Open-uri preventing redirects from https to http" layout: "post" permalink: "/2012/03/open-uri-preventing-redirects-from.html" uuid: "3595971863622331023" guid: "tag:blogger.com,1999:blog-5365176712784435549.post-3595971863622331023" date: "2012-03-12 16:13:00" updated: "2012-03-28 09:32:32" description: blogger: siteid: "5365176712784435549" postid: "3595971863622331023" comments: "0" lang: us categories: [ruby, bug, open-uri] author: name: "Oct" url: "http://www.blogger.com/profile/10969884152933508554?rel=author" image: "http://img2.blogblog.com/img/b16-rounded.gif" --- {% raw %}
def OpenURI.redirectable?(uri1, uri2)
true
end
This monkey-patch fixes the issue and remove the check.


{% extends '_base.html' %} {% block title %}{% endblock %} {% block content %}
Your bet is safer when you’re in control


Key-step: After the installation, you can run “docker run hello-world” to test your installation
Step 2
Pull an Ubuntu image from Dockerhub. docker pull ubuntu
Pull ubuntu and run it on your computer as a container.
Use “docker images” to check existing Docker images on your computer
Step 3
Install vim & apache2 sudo apt install apache2 vim
Install vim & apache2 in your container
un the Ubuntu image to start a Docker container, then log into this Ubuntu container:
Command: docker run -it ubuntu:latest /bin/bash
Update system using“apt-get update”
Step 4
Share a directory between Docker and host. docker run -it -v /a_absolute_local_directory:/a_directory_in_Docker_container container_name /bin/bash
This will save any data after you shutdown the container
Step 5
Use vi to create and edit an index.html file in the shared directory. vi index.html
Use vi to create and edit a simple index.html file, then open it using your host browser
Create an “index.html” file using “ vi index.html ”. Press “i” key to edit the new “index. Html” file. You can see “-- INSERT --” in the bottom of the command window, which means you can type html source code now. Try the shortcuts of vi to edit your file.
Step 6
Use Docker to host a website. /etc/init.d/apache2 restart
Using a browser of you host computer to access “<IP_ADDRESS>”


Displays an image overlay effect on hover.
- Use the `:before` and `:after` pseudo-elements for the top and bottom bars of the overlay respectively, setting their `opacity`, `transform` and `transition` to produce the desired effect.
- Use the `


|
| ID |
Lateral Seperation |
Longitudinal Seperation |
RX Count |
SeqNumber |
Changed |
Received |
Expire |
|
|
|
|
|
|
|
|
| Vec Latitude |
Vec Longitude |
Elevation |
Heading |
Cos Heading |
Sin Heading |
Speed |
Advance OK |
|
|
|
|
|
|
|
|
| Lat Acceleration |
Long Acceleration |
Radius |
Normalized Minute Unit |
Sep X10 |
Sep Y10 |
Sep E10 |
Sep R10 |
|
|
|
|
|
|
|
|
| Sep V10 |
Sep A10 |
Sep B10 |
Sep H10 |
Sep RB10 |
Sep T10 |
|
|
|
|
|
|
| Same Elevation |
Different Elevation |
Similar Direction |
Opposite Direction |
Closing |
Receding |
Ahead |
Behind |
Same Lane |
Near Lane |
Far Lane |
Left |
Right |
Xing |
Line Circ Xing |
Line Line Xing |
Circ Circ Xing |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|


Speech
Nicky Morgan speaks about the importance of character building in schools to help young people from ethnic minority backgrounds succeed.
Thank you, Harris [Bokhari OBE , son of Naz Bokhari in whose memory the Naz Legacy Foundation was established], for that introduction.
It’s so fitting that you, Harris, and your family set up the foundation in the name and memory of your father, Naz, the first Muslim head in this country and an inspirational teacher with a passion for getting the best outcomes for young people.
The foundation’s work focuses on so many things I am passionate about and this government views as key priorities:
We have a tremendously diverse society in Britain today with a huge mix of ethnicities, faiths and cultures. In fact more than a quarter of pupils at our schools are classified as being of minority ethnic origin.
The richly diverse place modern Britain has become means we have to make sure all young people learn to relate to each other and share common British ideals. That’s why we have made clear the need for schools to promote the fundamental British values of democracy, the rule of law, individual liberty, and mutual respect and tolerance of people from different backgrounds.
This is something I believe is echoed by the work of the foundation’s Diversity Programme, promoting British institutions. Last year the programme took 70 pupils from 6 schools in areas of disadvantage to Clarence House, meeting the then Deputy Prime Minister and the Prince of Wales.
They were able to take part in sessions on the importance of the democratic process and tour Downing Street and the Houses of Parliament. I have no doubt they would have found the day rewarding. I hope it has sparked in them a sense of how crucial it is to engage and participate with politics and vote in elections.
The achievement of young people from ethnic minorities in this country has risen dramatically over the last 25 years. But this government recognises that children from disadvantaged backgrounds can require extra support to ensure they do not underachieve. We know that we have made progress since 2010 by providing schools with additional funding through the pupil premium, targeted where it is needed most.
One of the things we recently published ‘educational excellence everywhere’ white paper talks about is making sure that no cold spots remain, so that every child has the access to an excellent education that I believe should be their birth right.
With a raft of new measures we are making sure that failing schools can be turned around quickly with new leadership, incentivising work in the most challenged areas to get the best school leaders where they are needed most, and making sure those leaders can get the best access to the most talented teachers.
But we know that, in order to tread a path to success, young people need more than just an excellent academic grounding. They also need to be instilled with attributes and skills like confidence, team-work and resilience – the kind of character traits that will help them to thrive by believing in themselves, working well with others and picking themselves up from disappointments. The kind of traits that give them a sense of society and, hopefully, spur them on to give back to their communities - something which feels to me to be innately British.
The new autonomy afforded to schools means they can choose to instil these character traits in young people within and outside the curriculum, using innovative new methods. The best schools are already doing this by encouraging their pupils to engage with debating clubs, team sports and other activities. The Chancellor announced in the Budget last month that we will be investing £500 million so that 25% of secondary schools can extend their school day to offer a range of these activities.
In the last year we have invested £5 million specifically in character education to fund grants to organisations to test new approaches and expand existing programmes:
In our white paper we outlined plans to invest in a new web presence through which teachers will be able to access the evidence base and other character resources. They will be able to add to that resource, so all teachers can share ‘what works’ with each other. The white paper also outlined our plan to work with the What Works Centres to make available to schools new tools to measure progress in building key character traits in their pupils.
And of course there is the National Citizen Service ( NCS ), an opportunity for young people to get involved in a community project, building and honing crucial skills while spending some time away from home and experiencing the independence that brings.
The NCS represents a unique opportunity for young people from all walks of life to interact with each other, learn about their differences and find ways to communicate. We’re spending £1 billion over the next 4 years so that 60% of young people will have the opportunity to participate in the NCS and we are actively encouraging schools to recommend it to their students.
One thing which has been shown time and time again to have a positive impact on disadvantaged young people is quality mentoring schemes. The Careers and Enterprise Company , backed by my department in 2014, is leading a key mentoring programme, seeking to reach 25,000 young people a year by 2020, with high-quality, meaningful, careers-related mentoring. I believe those young people will have a better chance to succeed because of the reassurance and guidance mentoring brings.
We recognise that government can’t and shouldn’t do it all. That’s why the work of organisations like the Naz Legacy Foundation is so vital. Alongside its work championing excellence in education, it is placing thousands of key mentors into schools all over the country, recognising the role models who can give young people from ethnic minorities the confidence to succeed, and promoting the integration that is crucial if modern Britain is to become the truly inclusive society we want it to be. It’s no surprise that the Naz Legacy Foundation was a recipient of one of the Prime Minister’s Big Society Awards just 2 years ago.
Naz Bokhari was a firm believer in the impact an excellent education can have on any young person, no matter their background. And he focused on breaking down barriers, celebrating Britain’s wonderful diversity as one of its many strengths. He, like us, wasn’t focused on where young people are from, but instead where they are going.
 Thank you.
Published: 4 May 2016


Projects
YaccConstructor
YaccConstructor is a platform for grammarware research and development. One of features is analysis of string-embedded languages.YC.PrettyPrinter
Printer combinators library in F#.QuickGraph
QuickGraph provides generic directed/undirected graph datastructures and algorithms for .NET. QuickGraph comes with algorithms such as depth first seach, breath first search, A* search, shortest path, k-shortest path, maximum flow, minimum spanning tree, etc...Forked from https://quickgraph.codeplex.com/


With our packages you can book your holiday in just a couple of clicks.
We provide only the best accommodation for our clients.
We have the cheapest flight to a high variety of destinations.
These are our top destinations that we would recommend!
With just a few clicks, you can book your next holiday, with everything you need included.
6 days 7 nights 4 star accomodation
transportation food facilities
5021 review
8 days 9 nights 5 star accomodation
transportation food facilities
10829 review
7 days 8 nights 4 star accomodation
transportation food facilities
3892 review
5 days 6 nights 5 star accomodation
transportation food facilities
8519 review
7 days 8 nights 5 star accomodation
transportation food facilities
8182 review
5 days 6 nights 5 star accomodation
transportation food facilities
6902 review
We have satisfied the needs of our customers all around the world.
Great service, friendly staff, overall an amazing vacation. Will definitely recommend!
The tour guides explained in details and answered all of our questions, the accommodation and service was beyond any other.
The trip exceeded my expectations, it was well worth it. I would recommend the services of "TravelEscape", to anyone who is looking for memories and great experience.
Great service, friendly staff, overall an amazing vacation. Will definitely recommend!
I will definetely recommend the services of "TravelEscape" to my friends and family.
The tour guides explained in details and answered all of our questions, the accommodation and service was beyond any other.
Very friendly staff, everything that was listed in the in the travel sheet was provided. The accomodations were also amazing!
The service was amazing, will definetely user the services of this company. Highly recommend!
The trip exceeded my expectations, it was well worth it. I would recommend the services of "TravelEscape", to anyone who is looking for memories and great experience.
2544 review
5 days 6 nights 2 person 5 star accomodation
transportation food facilities
Deals can range from -20% to up to -40%! Book now and grab the best offers to your dream destination.
$810
regular $ 1350
Travel News from all over the world
Subscribe Now. We will send you Best offer for your Trip


{% extends 'landing.html' %} {% block title %}Pontoon · Sign In Migration{% endblock %} {% block subtitle %}Migrating to Firefox Accounts{% endblock %} {% block middle %}
sign in with Firefox Accountto continue using Pontoon with your existing profile


You're not signed into a steam account! You may still submit your creation, but it will not be tied to any account or eligible for any contests.
{% endif %}
Step One:Choose a class whose item you wish to name.
{% for classname in tf.classes %}
{% endfor %}
{% for slot in tf.slots %}
{% endfor %}
PREVIEW
name desc
Filter
None
Canadian
Chaotic
Covert
Dazzling
Efficient
Egyptian
Fresh
Frosty
Hydraulic
Locomotive
Mennko
Outlaw
Psychadelic
Rigid
Rugged
Sophisticated
Spooky
Sun-Kissed
Technical
Venomous
Vigilant
Wild
{% if tf.is_april %}
{% for filter in tf.april_filters %}
{{filter}}
{% endfor %}
{% endif %}
Loading...
X
After Eight
Choose an icon to represent your set. (This is what users will see when browsing the site.)
{% for classname in tf.classes %}
{% endfor %}
{% for slot in tf.slots %}
{% if forloop.counter == 8 %} {% endif%}
{% endfor %}
Give a name so others may have an easier time refering to your set.
Keywords for your submission:
An Item Error Has Occurred!
Pre-submission verification failed on that item just now. It has not been added to your submission.
You should tell me about this (and share the error data).
You may want to try tweaking the rejected item based on the error you see below:


W3C uses a number of online tools for work, education, and outreach.
Most W3C work is conducted on archived mailing lists. Each mailing list has its own purpose: some are for general discussions, others are for more specific topics like fonts and HTML. In order to keep the noise level on the mailing lists low and the quality high, it is very important that you carefully read the purpose of each mailing lists and select one list only for your mail.
W3C news is published on the W3C home page, then moves to archives.
The Newsletter is a weekly compilation of recent home page news and W3C blog posts, as well as other information about upcoming talks and events. W3C Members also receive a Weekly Member Newsletter.
W3C hosts a number of group and individual blogs and microblogs (status updates) on twitter and identi.ca. The W3C staff uses the W3C Blog as a general forum for W3C topics.
Although W3C Working Groups typically focus on technical specifications, test suites, and so forth, we also recognize the importance of educational materials such as tutorials and online training courses to help people use their results. W3C has developed a number of tutorials, and welcomes additions to the collection from the community .
W3C looks forward to sharing podcasts and video of Tim Berners-Lee and others of the W3C community, as well as videos to help explain Web technologies.


Gateway
BOT
12-Dec-18 05:05 AM
[dscrdvrsc] <jintaa> I guess cpu only is ok to start...I'm assuming gpu won't be too far behind, so why wait?
[dscrdvrsc] <John Westbrook> @everyone check out the question posed by Mike above
[dscrdvrsc] <admon> I will support you mining with cpu, not any problem
[dscrdvrsc] <ARM> CPU only---Agree with THUMB
[dscrdvrsc] <dudezmobi> if this is the best path to take. im all in. and i trust your judgement.
[dscrdvrsc] <dudezmobi> faster fork
[dscrdvrsc] <Nagol> @miketout CPU only at first is fine by me!
[dscrdvrsc] <digital bullion> Cpu
[dscrdvrsc] <Gordon Komodo> I am good either way, I only stake
[dscrdvrsc] <Tommygun007> CPU is fine with me]
[dscrdvrsc] <Croot0n> Yes for CPU
[dscrdvrsc] <Shtirlitz> gonna leave the farm and will mine with processor. only the hash isn't high.
(edited)
[dscrdvrsc] <kotto78> Yeah. CPU's rock.
[dscrdvrsc] <Ranma103> Again CPU is fine to start with.
[dscrdvrsc] <jbates58> Well, none of my cpus are any good for verus. Haha.... so I guess GPU...
But I'm happy to just go straight to CPU.
I am currently not.mining verus dur yo the high loss factor.


| Action |
Base class for actions to perform during playback tests.
|
| Action.AddMediaItems |
|
| Action.ClearMediaItems |
|
| Action.ClearVideoSurface |
|
| Action.ExecuteRunnable |
Calls Runnable.run() .
|
| Action.MoveMediaItem |
|
| Action.PlayUntilPosition |
Schedules a play action to be executed, waits until the player reaches the specified position,
and pauses the player again.
|
| Action.Prepare |
|
| Action.RemoveMediaItem |
|
| Action.RemoveMediaItems |
|
| Action.Seek |
|
| Action.SendMessages |
|
| Action.SetAudioAttributes |
|
| Action.SetMediaItems |
|
| Action.SetMediaItemsResetPosition |
|
| Action.SetPlaybackParameters |
|
| Action.SetPlayWhenReady |
|
| Action.SetRendererDisabled |
|
| Action.SetRepeatMode |
|
| Action.SetShuffleModeEnabled |
|
| Action.SetShuffleOrder |
|
| Action.SetVideoSurface |
|
| Action.Stop |
|
| Action.ThrowPlaybackException |
Throws a playback exception on the playback thread.
|
| Action.WaitForIsLoading |
|
| Action.WaitForMessage |
Waits for a player message to arrive.
|
| Action.WaitForPendingPlayerCommands |
Waits until the player acknowledged all pending player commands.
|
| Action.WaitForPlaybackState |
|
| Action.WaitForPlayWhenReady |
|
| Action.WaitForPositionDiscontinuity |
|
| Action.WaitForTimelineChanged |
|
| ActionSchedule |
Schedules a sequence of Action s for execution during a test.
|
| ActionSchedule.Builder |
|
| ActionSchedule.PlayerRunnable |
Provides a wrapper for a Runnable which has access to the player.
|
| ActionSchedule.PlayerTarget |
Provides a wrapper for a PlayerMessage.Target which has access to the player when handling messages.
|
| AdditionalFailureInfo |
A JUnit Rule that attaches additional info to any errors/exceptions thrown by the test.
|
| AssetContentProvider |
|
| BitmapPixelTestUtil |
Utilities for pixel tests.
|
| CacheAsserts |
Assertion methods for Cache .
|
| CacheAsserts.RequestSet |
Defines a set of data requests.
|
| CapturingAudioSink |
|
| CapturingRenderersFactory |
|
| DataSourceContractTest |
A collection of contract tests for DataSource implementations.
|
| DataSourceContractTest.FakeTransferListener |
|
| DataSourceContractTest.TestResource |
Information about a resource that can be used to test the DataSource instance.
|
| DataSourceContractTest.TestResource.Builder |
|
| DecodeOneFrameUtil |
Utilities for decoding a video frame for tests.
|
| DecoderCountersUtil |
|
| DefaultRenderersFactoryAsserts |
|
| DownloadBuilder |
|
| DummyMainThread |
Helper class to simulate main/UI thread in tests.
|
| DumpableFormat |
Wraps a Format to allow dumping it.
|
| DumpableMp4Box |
Wraps an Mp4 box to allow dumping it.
|
| Dumper |
Helper utility to dump field values.
|
| DumpFileAsserts |
Helper class to enable assertions based on golden-data dump files.
|
| ExoHostedTest |
|
| ExoPlayerTestRunner |
Helper class to run an ExoPlayer test.
|
| ExoPlayerTestRunner.Builder |
|
| ExtractorAsserts |
|
| ExtractorAsserts.AssertionConfig |
A config for the assertions made (e.g.
|
| ExtractorAsserts.AssertionConfig.Builder |
|
| ExtractorAsserts.SimulationConfig |
A config of different environments to simulate and extractor behaviours to test.
|
| FailOnCloseDataSink |
|
| FailOnCloseDataSink.Factory |
|
| FakeAdaptiveDataSet |
Fake data set emulating the data of an adaptive media source.
|
| FakeAdaptiveDataSet.Factory |
|
| FakeAdaptiveDataSet.Iterator |
|
| FakeAdaptiveMediaPeriod |
|
| FakeAdaptiveMediaSource |
|
| FakeAudioRenderer |
|
| FakeChunkSource |
Fake ChunkSource with adaptive media chunks of a given duration.
|
| FakeChunkSource.Factory |
|
| FakeClock |
|
| FakeCryptoConfig |
|
| FakeDataSet |
|
| FakeDataSet.FakeData |
|
| FakeDataSet.FakeData.Segment |
|
| FakeDataSource |
A fake DataSource capable of simulating various scenarios.
|
| FakeDataSource.Factory |
|
| FakeExoMediaDrm |
|
| FakeExoMediaDrm.Builder |
|
| FakeExoMediaDrm.LicenseServer |
|
| FakeExtractorInput |
|
| FakeExtractorInput.Builder |
|
| FakeExtractorOutput |
|
| FakeMediaChunk |
|
| FakeMediaChunkIterator |
|
| FakeMediaClockRenderer |
|
| FakeMediaPeriod |
|
| FakeMediaSource |
|
| FakeMediaSource.InitialTimeline |
A forwarding timeline to provide an initial timeline for fake multi window sources.
|
| FakeMediaSourceFactory |
|
| FakeMetadataEntry |
|
| FakeMultiPeriodLiveTimeline |
A fake Timeline that produces a live window with periods according to the available time
range.
|
| FakeRenderer |
Fake Renderer that supports any format with the matching track type.
|
| FakeSampleStream |
|
| FakeSampleStream.FakeSampleStreamItem |
|
| FakeShuffleOrder |
|
| FakeTimeline |
|
| FakeTimeline.TimelineWindowDefinition |
|
| FakeTrackOutput |
|
| FakeTrackSelection |
A fake ExoTrackSelection that only returns 1 fixed track, and allows querying the number
of calls to its methods.
|
| FakeTrackSelector |
|
| FakeVideoRenderer |
|
| HostActivity |
A host activity for performing playback tests.
|
| HttpDataSourceTestEnv |
A JUnit Rule that creates test resources for HttpDataSource contract tests.
|
| MediaPeriodAsserts |
|
| MediaSourceTestRunner |
|
| OggFileAudioBufferSink |
A sink for audio buffers that writes output audio as .ogg files with a given path prefix.
|
| StubExoPlayer |
|
| StubPlayer |
|
| TestExoPlayerBuilder |
A builder of ExoPlayer instances for testing.
|
| TestUtil |
Utility methods for tests.
|
| TimelineAsserts |
|
| VideoFrameProcessorTestRunner |
|
| VideoFrameProcessorTestRunner.Builder |
|
| VideoFrameProcessorTestRunner.SurfaceBitmapReader |
| WebServerDispatcher |
A Dispatcher for MockWebServer that allows per-path
customisation of the static data served.
|
| WebServerDispatcher.Resource |
|
| WebServerDispatcher.Resource.Builder |
|


Inspection detects the situation where a Java 9 module requires another Java 9 module but doesn't actually use any exported package from it.
New in 2017.1


← Home / Complete-Works / Volume 2 / →
***
Note
Divinity of Man
Swami Vivekananda on India
Religious Harmony
From far off India
An Evening with our Hindu Cousins
The Manners and Customs of India
The Religions of India
Sects and Doctrines in India
Less Doctrine and more Bread
The Religion of Buddha
All Religions are Good
The Hindu way of life
Ideals of Womanhood
True Buddhism
India's Gift to the World
Child Widows of India
Some Customs of the Hindus


Harmony Core Field Loop Extensions
Expansion Tokens
<HARMONYCORE_CUSTOM_FIELD_PARAM>
Inserts the name of a custom field parameter based on the fields user text or long description containing a special value like this:
HARMONYCORE_CUSTOM_FIELD_PARAM=name;
Alternate forms: none
<HARMONYCORE_CUSTOM_FIELD_TYPE>
Inserts the type of custom field based on the fields user text or long description containing a special value like this:
HARMONYCORE_CUSTOM_FIELD_TYPE=type;
Alternate forms: none
<HARMONYCORE_CUSTOM_FIELD_VALIDATOR>
Inserts the name of the custom field validation class based on the fields user text or long description containing a special value like this:
HARMONYCORE_CUSTOM_FIELD_VALIDATOR=name;
Alternate forms: none
Inserts the data type of custom field based on the fields user text or long description containing a special value like this:
HARMONYCORE_CUSTOM_FIELD_DATATYPE=type;
The text inserted is defined by the value of type. If the data type is not defined in this way then the token will insert the base data type of the field based on <FIELD_SNTYPE>.
Alternate forms: none
<HARMONYCORE_FIELD_DATATYPE_VB>
Inserts the data type of custom field based on the fields user text or long description containing a special value like this:
HARMONYCORE_CUSTOM_FIELD_DATATYPE=type;
The text inserted is defined by the value of type. If the data type is not defined in this way then the token will insert the base data type of the field based on <FIELD_VBTYPE>.
Alternate forms: none
Provides a way for field level role based security to be implemented. If you wish to restrict access to a field then you can specify the role or roles that are allowed to access the field by adding a special instruction in the fields long description, like this:
HARMONY_ROLES=role[,role...];
Note that the instruction is terminated by a required semi-colon. For example, to restrict the visibility of a field to only users that are members of the Managers role:
HARMONY_ROLES=Managers;
To restrict access to users who are part of the Managers or HR roles:
HARMONY_ROLES=Managers,HR;
Expressions
<IF HARMONYCORE_CUSTOM_FIELD_PARAM>
Does the field have a custom field parameter defined because it contains a value similar to HARMONYCORE_CUSTOM_FIELD_PARAM=name; in its user text or long description field.
Is the field is defined as a custom field because it contains a value similar to HARMONYCORE_CUSTOM_FIELD_TYPE=type; in its user text or long description field.
<IF HARMONYCORE_CUSTOM_FIELD_DATATYPE>
Does the field have a custom data type because it contains a value similar to HARMONYCORE_CUSTOM_FIELD_TYPE_DATATYPE=type; in its user text or long description field.
<IF HARMONYCORE_CUSTOM_FIELD_VALIDATOR>
Does the field have a custom validation class because it contains a value similar to HARMONYCORE_CUSTOM_FIELD_VALIDATOR=name; in its user text or long description field.
The field has custom roles specified by a HARMONY_ROLES= specification in the long description. For more information see <HARMONY_ROLES>.
Is the name of the current field a reserved word? Currently the reserved words are "globalrfa", "synergyrecord", "metadata" and "originalsynergyrecord".
Copyright © 2021 Synergex International, Inc.


|
CotC C# SDK for Unity
v<IP_ADDRESS>
Making social games is easy !
|
Data about a friend on the social network. The most important field is the id, which allows to recognize the gamer uniquely among the given social network.
Properties | |
| GamerInfo | ClanInfo [get] |
| Additional info that might have been enriched by the CotC servers. You should never guess or create this info by yourself. More... | |
Public Member Functions | |
| SocialNetworkFriend (string id, string firstName, string lastName, string name) | |
| User constructor. More... | |
| SocialNetworkFriend () | |
| Default constructor for convenience. More... | |
| SocialNetworkFriend (Bundle serverData) | |
| Build from existing JSON data. More... | |
Public Attributes | |
| string | Id |
| Required. The ID given by the social network, allowing to uniquely identify the friend in question. More... | |
| string | FirstName |
| If you have either a name (composite of name/first name regardless of order), either the two components (name, first name), pass them here. You should pass at least one of these. More... | |
| CotcSdk.SocialNetworkFriend.SocialNetworkFriend | ( | string | id, |
| string | firstName, | ||
| string | lastName, | ||
| string | name | ||
| ) |
User constructor.
| CotcSdk.SocialNetworkFriend.SocialNetworkFriend | ( | ) |
Default constructor for convenience.
| CotcSdk.SocialNetworkFriend.SocialNetworkFriend | ( | Bundle | serverData | ) |
Build from existing JSON data.
|
get |
Additional info that might have been enriched by the CotC servers. You should never guess or create this info by yourself.
| string CotcSdk.SocialNetworkFriend.FirstName |
If you have either a name (composite of name/first name regardless of order), either the two components (name, first name), pass them here. You should pass at least one of these.
| string CotcSdk.SocialNetworkFriend.Id |
Required. The ID given by the social network, allowing to uniquely identify the friend in question.


The following terms and conditions will be deemed to have been accepted by the User on usage of the website
www.GrowMore.in. You are requested to read them carefully before you use the services of this site.
- The term User shall refer to the user who is browsing the site. The term GrowMore shall refer to
GrowMore Limited. The term Site refers to www.GrowMore.in owned and monitored by GrowMore.
- By using the Site, you agree to follow and be bound by the following terms and conditions
concerning your use of the Site. GrowMore may revise the Terms of Use at any time without notice to
you. Areas of the Site may have different terms of use posted. If there is a conflict between the
Terms of Use and terms of use posted for a specific area of the Site, the latter shall have
precedence with respect to your use of that area of the Site.
- GrowMore may terminate the User’s access at any time for any reason. The provisions regarding the
disclaimer of warranty, the accuracy of the information, and indemnification shall survive such
termination. GrowMore may monitor access to the Site.
- All content present on this site is the exclusive property of GrowMore. The software, text, images,
graphics, video, and audio used on this site belong to GrowMore. No material from this site may be
copied, modified, reproduced, republished, uploaded, transmitted, posted, or distributed in any form
without prior written permission from GrowMore.
- GrowMore does not make any warranties, express or implied, including, without limitation, those of
merchantability and fitness for a particular purpose, with respect to any information, data,
statements, or products made available on the Site.
- The information contained on the Site has been obtained from sources believed to be reliable.
GrowMore disclaims all warranties as to the accuracy, completeness, or adequacy of such information.


ibmrtc.webrtc & ibmrtc.rtcomm manual test client
This test creates an ibm webrtc Signaling Client (does not do the audio video portion yet)
MQTT:
TopicName:
1.
Register
2.
Connect
Send
3.
Hangup
Connected to:


--- notes: | Colorful stats: headline subtitle. Used in "intro" and "at-a-glance" sections on ppc microsites. ---


Claim your NHS Pension
Excluding your main NHS pension benefits were any of your separate pension benefits in payment on or after 6 April 2006?
This includes any benefits from another pension provider accessed using pension flexibilities.
Claim your NHS Pension
This includes any benefits from another pension provider accessed using pension flexibilities.


Images from R are instantly included into (R) markdown files, and the same applies for blogdown posts.
See:
x <- 1:10
plot(x)
However, for external images - such as photos - things are more complicated. First, all is still fine, if an image is found on some URL/server on the internet:
knitr::include_graphics("https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/R_logo.svg/310px-R_logo.svg.png")
Of course, one can apply direct markdown syntax for including external images:
![](https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/R_logo.svg/310px-R_logo.svg.png){width=20%}
Now assume we are in an R project that gives the base for a blogdown blog. Next, assume this is the relative path to the image:
img_path <- "/images/textmining/tidytext-crop.png"
Note the leading slash - without the slash it will not work.
This folder itself is found under static
in the project root,
within blogdown folder.
BTW, the project root can be found like this:
here::here()
#> [1] "/Users/sebastiansaueruser/Documents/Publikationen/blog_ses/data_se"
Now, let’s try to plot it using the following code:
![tidytext example](/post/2018-11-28-image-paths-in-hugo-blogdown_files/tidytext-crop.png){width=20%}
Note that we reduce the width
of the image to 20%.
There’s a nice addin to RStudio which helps inserting external images, it’s called insert image add in. Very useful.
Now, let’s try the path as defines by img_path
to render the image again:
knitr::include_graphics(img_path)
Worked out 🎉!
🎉
🎉


Workspace (client): Workspace or Clientspec (oldskewl) of the project. If the workspace
specified does not exist, Hudson will create it.
Important Note: Hudson will likely change the root and host of this workspace to fit Hudson's
installation. That means Hudson also automatically creates a workspace for each slave on every
project. The hash code of the slave name is appended to the end of the given workspace name to ensure
that all workspaces are unique and don't collide across machines.
Important Note: Each job needs to use it's own unique workspace. Perforce keeps track of what
files are synced into each workspace, so reusing a workspace could result in files not being properly
synced down before a build runs. Additionally, if a workspace is used in multiple jobs, the possibility
exists that hudson may change the workspace spec while another job that uses it is syncing or polling. This
will result in odd behavior that's difficult to debug. Only reuse a client workspace if you absolutely
know what you are doing!
Important Note: When Hudson creates a workspace, the workspace will contain only one view. This view maps the Depot Path to the root of the Hudson job's workspace directory. If Hudson uses an existing workspace that has only one view, it automatically changes the view in a similar way. This behavior can be disabled by the option, "Let Hudson Manage Workspace View. This will allow you to retrieve more than one depot into the workspace of a given job by providing your own list of views.
Important Note: If the client doesn't exist, it is created, but the perforce plugin will not delete the client if it's no longer being used. Likewise, the plugin will not delete the workspace if the client name is changed. In this instance, you may need to wipe the workspace after changing the client name.


Rails 7-0-stable
File Listing
- README
- Getting Started
- RUNNING UJS TESTS
- 2.2 Release Notes
- 2.3 Release Notes
- 3.0 Release Notes
- 3.1 Release Notes
- 3.2 Release Notes
- 4.0 Release Notes
- 4.1 Release Notes
- 4.2 Release Notes
- 5.0 Release Notes
- 5.1 Release Notes
- 5.2 Release Notes
- 6.0 Release Notes
- 6.1 Release Notes
- 7.0 Release Notes
- Action Cable CHANGELOG
- Action Cable Overview
- Action Cable README
- Action Controller Overview
- Action Mailbox Basics
- Action Mailbox CHANGELOG
- Action Mailbox README
- Action Mailer Basics
- Action Mailer CHANGELOG
- Action Mailer README
- Action Pack CHANGELOG
- Action Pack README
- Action Text CHANGELOG
- Action Text Overview
- Action Text README
- Action View CHANGELOG
- Action View Helpers
- Action View Overview
- Action View README
- Action View RUNNING UNIT TESTS
- Active Job Basics
- Active Job CHANGELOG
- Active Job README
- Active Model Basics
- Active Model CHANGELOG
- Active Model README
- Active Record Basics
- Active Record Callbacks
- Active Record CHANGELOG
- Active Record Encryption
- Active Record Migrations
- Active Record Multiple Databases
- Active Record Postgresql
- Active Record Querying
- Active Record README
- Active Record RUNNING UNIT TESTS
- Active Record Validations
- Active Storage CHANGELOG
- Active Storage Overview
- Active Storage README
- Active Support CHANGELOG
- Active Support Core Extensions
- Active Support Instrumentation
- Active Support README
- API App
- API Documentation Guidelines
- Asset Pipeline
- Association Basics
- Autoloading and Reloading Constants
- Caching With Rails
- Classic To Zeitwerk Howto
- Command Line
- Configuring
- Contributing To Ruby On Rails
- Debugging Rails Applications
- Development Dependencies Install
- Engines
- Form Helpers
- Generators
- I18n
- Initialization
- Layouts and Rendering
- Maintenance Policy
- Plugins
- Rails Application Templates
- Rails On Rack
- Routing
- Ruby On Rails Guides Guidelines
- Security
- Testing
- Threading and Code Execution
- Upgrading Ruby On Rails
- Webpacker
- Working With Javascript In Rails


Labels Code # Text Style Bold Italic ULine Rendered figure 1 . Early human migration route out of Africa Figure 1 . Early human migration route out of Africa References Code # Text Style Bold Italic ULine the line in figure 1 represents the path of human to Ethiopia. Figure 1 is accurate to within 100 miles


Home
(current)
Education & Experience
Skills & Languages
Projects & Interests
Skills & languages
Front-end
HTML&CSS
100%
Bootstrap
95%
JavaScript
80%
Jquery
55%
Back-end
Java
70%
Python
70%
PHP
65%
NodeJS
55%
MySql
65%
NPM
55%
Ruby
55%
MongoDB
50%
Miscellaneous
Git
85%
Cloud9
75%
Blender
45%
Unit Tests
55%
Languages
English
90%
French
65%
Armenian
100%
Arabic
100%
Turkish
100%


he internet of things may be coming to us all faster and harder than we'd like.
Reports coming out of Russia suggest that some Chinese domestic appliances, notably kettles, come kitted out with malware—in the shape of small embedded computers that leech off the mains power to the device. The covert computational passenger hunts for unsecured wifi networks, connects to them, and joins a spam and malware pushing botnet. The theory is that a home computer user might eventually twig if their PC is a zombie, but who looks inside the base of their electric kettle, or the casing of their toaster? We tend to forget that the Raspberry Pi is as powerful as an early 90s UNIX server or a late 90s desktop; it costs £25, is the size of a credit card, and runs off a 5 watt USB power source. And there are cheaper, less competent small computers out there. Building them into kettles is a stroke of genius for a budding crime lord look
he internet of things may be coming to us all faster and harder than we'd like.
Reports coming out of Russia suggest that some Chinese domestic appliances, notably kettles, come kitted out with malware—in the shape of small embedded computers that leech off the mains power to the device. The covert computational passenger hunts for unsecured wifi networks, connects to them, and joins a spam and malware pushing botnet. The theory is that a home computer user might eventually twig if their PC is a zombie, but who looks inside the base of their electric kettle, or the casing of their toaster? We tend to forget that the Raspberry Pi is as powerful as an early 90s UNIX server or a late 90s desktop; it costs £25, is the size of a credit card, and runs off a 5 watt USB power source. And there are cheaper, less competent small computers out there. Building them into kettles is a stroke of genius for a budding crime lord look


{{unreferenced|date=April 2015}}
{{Distinguish|Cannellini|Cannoli}} {{Infobox prepared food | name = Cannelloni | image = | caption = | alternate_name = Large Reeds | country = Italy | region = | creator = | course = | type = ginger snap | served = | main_ingredient = | variations = | calories = | other = }}
Cannelloni ({{IPA-it|kannelˈloːni|pron}}; Italian for "large reeds") are a cylindrical type of pasta generally served baked with a filling and covered by a sauce in Italian cuisine. Some types of cannelloni need to be boiled beforehand, while for others, it is enough to use a more dilute sauce or filling.
Popular stuffings include spinach and ricotta or minced beef. The sauces typically used are tomato underneath and besciamella sauce to cover the top.
The pasta shapes called manicotti or "maniche" are almost identical.
{{Reflist}}
{{Pasta}}


2 references to WriteMessage
System.Management.Automation (2)
engine\remoting\client\Job2.cs (2)
543
_tracer.
WriteMessage
("Setting event manager for Job ", InstanceId);
2083
_tracer.
WriteMessage
("Unregistering StateChanged event for job ", job.InstanceId);


The frosted white box denotes the safe area to place text and content.
Do not place any artwork or text in the ink free area. Address and postage will be automatically printed here by Lob.


@thepaulrayner
Create a simple Ruby command line utility for changing the extension for a set of files in a specified folder
Come up with a realistic example of how our rename program should work
Focus on understanding the business domain
Improve collaboration with non-technical people
Become tests
From Bridging the Communication Gap: Specification by Example and Agile Acceptance Testing by Gojko Adzic
Replace every file in a folder that ends with the extension jpeg
with the
new extension jpg
Folder name: photos
Existing extension: jpeg
New extension: jpg
If the following files are in the photos
folder:
a.jpeg
b.jpeg
c.jpeg
Then after the bulkrename
command runs we should see these three files
renamed to:
a.jpg
b.jpg
c.jpg
Update the extension to md
for Markdown text files with
TXT
and txt
extensions
Will need to handle more sophisticated file renaming schemes and options
Since we will need these capabilities, shouldn’t we build them now?
Focus for now on the simple case: renaming extensions
bulkrename photos jpeg jpg
Have a clear and concise purpose
Are easy to use
Are helpful
Play well with others
Delight casual users
Make configuration easy
Distribute painlessly
Are easy to maintain
Are well tested
From Build Awesome Command-Line Applications in Ruby: Control Your Computer, Simplify Your Life by David Bryant Copeland
TODO: Diagram of Cucumber assets: feature file and step def files
Create features/bulkrename.feature
Feature: Bulk Rename Command Line Utility
In order to perform bulk renames of files
As a newcomer to Cucumber
I want to be able to rename multiple files in a folder by file extension
Scenario: Rename files in specified folder by extension
Given an empty file named "photos/a.jpeg"
And an empty file named "photos/b.jpeg"
And an empty file named "photos/c.jpeg"
When I run `bulkrename photos jpeg jpg`
Then the following files should exist:
| photos/a.jpg |
| photos/b.jpg |
| photos/c.jpg |
cucumber features/bulkrename.feature
Cucumber (correctly) reports that none of the steps are yet implemented as step definitions yet
Ruby gem that enables you to use Cucumber to test-drive CLIs.
Provides a set of predefined step definitions to use in our scenarios.
gem install aruba
Add to env.rb
:
require 'aruba/cucumber'
Feature: Bulk Rename Command Line Utility
In order to perform bulk renames of files
As a newcomer to Cucumber
I want to be able to rename multiple files in a folder by file extension
Scenario: Rename files in specified folder by extension # features/bulkrename.feature:6
Given an empty file named "photos/a.jpeg" # aruba-0.5.1/lib/aruba/cucumber.rb:27
And an empty file named "photos/b.jpeg" # aruba-0.5.1/lib/aruba/cucumber.rb:27
And an empty file named "photos/c.jpeg" # aruba-0.5.1/lib/aruba/cucumber.rb:27
When I run `bulkrename photos jpeg jpg` # aruba-0.5.1/lib/aruba/cucumber.rb:60
No such file or directory - bulkrename (Aruba::LaunchError)
features/bulkrename.feature:10:in `When I run `bulkrename photos jpeg jpg`'
Then the following files should exist: # aruba-0.5.1/lib/aruba/cucumber.rb:256
| photos/a.jpg |
| photos/b.jpg |
| photos/c.jpg |
Failing Scenarios:
cucumber features/bulkrename.feature:6 # Scenario: Rename files in specified folder by extension
1 scenario (1 failed)
5 steps (1 failed, 1 skipped, 3 passed)
0m0.050s
#!/usr/bin/env ruby
$: << File.expand_path("../lib/", __FILE__)
`chmod +x bulkrename`
./bin
mkdir bin
mv bulkrename bin/
cucumber features/bulkrename.feature
Feature: Bulk Rename Command Line Utility
In order to perform bulk renames of files
As a newcomer to Cucumber
I want to be able to rename multiple files in a folder by file extension
Scenario: Rename files in specified folder by extension # features/bulkrename.feature:6
Given an empty file named "photos/a.jpeg" # aruba-0.5.1/lib/aruba/cucumber.rb:27
And an empty file named "photos/b.jpeg" # aruba-0.5.1/lib/aruba/cucumber.rb:27
And an empty file named "photos/c.jpeg" # aruba-0.5.1/lib/aruba/cucumber.rb:27
When I run `bulkrename photos jpeg jpg` # aruba-0.5.1/lib/aruba/cucumber.rb:60
Then the following files should exist: # aruba-0.5.1/lib/aruba/cucumber.rb:256
| photos/a.jpg |
| photos/b.jpg |
| photos/c.jpg |
expected file?("photos/a.jpg") to return true, got false (RSpec::Expectations::ExpectationNotMetError)
features/bulkrename.feature:11:in `Then the following files should exist:'
Failing Scenarios:
cucumber features/bulkrename.feature:6 # Scenario: Rename files in specified folder by extension
1 scenario (1 failed)
5 steps (1 failed, 4 passed)
0m0.327s
Hard code the command arguments for now. Yes, hard code them!
Refactor later to pull folder name, file extension and replacement file extension from the arguments (once we are sure the rename is working correctly)
#!/usr/bin/env ruby
$: << File.expand_path("../lib/", __FILE__)
Dir.foreach("photos") do |file_name|
type = File.extname(file_name).gsub(/^\./, '')
if type == "jpeg"
old_name = "photos/" + file_name
new_name = "photos/" + File.basename(file_name, ".#{type}") + ".jpg"
File.rename(old_name, new_name)
end
end
Feature: Bulk Rename Command Line Utility
In order to perform bulk renames of files
As a newcomer to Cucumber
I want to be able to rename multiple files in a folder by file extension
Scenario: Rename files in specified folder by extension # features/bulkrename.feature:6
Given an empty file named "photos/a.jpeg" # aruba-0.5.1/lib/aruba/cucumber.rb:27
And an empty file named "photos/b.jpeg" # aruba-0.5.1/lib/aruba/cucumber.rb:27
And an empty file named "photos/c.jpeg" # aruba-0.5.1/lib/aruba/cucumber.rb:27
When I run `bulkrename photos jpeg jpg` # aruba-0.5.1/lib/aruba/cucumber.rb:60
Then the following files should exist: # aruba-0.5.1/lib/aruba/cucumber.rb:256
| photos/a.jpg |
| photos/b.jpg |
| photos/c.jpg |
1 scenario (1 passed)
5 steps (5 passed)
0m0.331s
Replace every file in photos
folder that ends with the extension jpeg
with the
new extension jpg
Handling Markdown files in textfiles
folder ←
Handling Markdown files in textfiles
folder
txt
to md
textfiles
folder
Scenario: Rename files in specified folder with extension to completely new file type
Given an empty file named "textfiles/doc1.txt"
And an empty file named "textfiles/doc2.txt"
And an empty file named "textfiles/doc3.txt"
When I run `bulkrename textfiles txt md`
Then the following files should exist:
| textfiles/doc1.md |
| textfiles/doc2.md |
| textfiles/doc3.md |
Expected…now let’s implement!
Extract folder,
find_type
and replace_type
values from the three arguments to the bulkrename
command.
Check whether the file extension is the same as find_type
for each file in the specified folder
If it is, rename it with the replace_type
extension.
#!/usr/bin/env ruby
$: << File.expand_path("../lib/", __FILE__)
folder = ARGV[0]
find_type = ARGV[1]
replace_type = ARGV[2]
Dir.foreach(folder) do |file_name|
type = File.extname(file_name).gsub(/^\./, '')
if type == find_type
old_name = folder + "/" + file_name
new_name = folder + "/" + File.basename(file_name, ".#{type}") + "." + replace_type
File.rename(old_name, new_name)
end
end
Replace every file in photos
folder that ends with the extension jpeg
with the
new extension jpg
Handling Markdown files in textfiles
folder
Case-insensitive replacement ←
Replacing TXT
and txt
with csv
in a manner that ignores case
Scenario: Rename files in specified folder by extension ignoring case
Given an empty file named "textfiles/May-financials.txt"
And an empty file named "textfiles/June-financials.TXT"
And an empty file named "textfiles/July-financials.TXT"
When I run `bulkrename textfiles txt csv`
Then the following files should exist:
| textfiles/May-financials.csv |
| textfiles/June-financials.csv |
| textfiles/July-financials.csv |
#!/usr/bin/env ruby
$: << File.expand_path("../lib/", __FILE__)
folder = ARGV[0]
find_type = ARGV[1]
replace_type = ARGV[2]
Dir.foreach(folder) do |file_name|
type = File.extname(file_name).gsub(/^\./, '')
if type.downcase == find_type.downcase
old_name = "#{folder}/" + file_name
new_name = "#{folder}/" + File.basename(file_name, ".#{type}") + ".#{replace_type}"
File.rename(old_name, new_name)
end
end
Replace every file in photos
folder that ends with the extension jpeg
with the
new extension jpg
Handling Markdown files in textfiles
folder
Case-insensitive replacement
Handle default command output ←
Ensure is helpful when no arguments are specified:
@wip
Scenario: Default script output is correct
When I run `bulkrename`
Then the exit status should be 0
And the output should contain:
"""
USAGE: bulkrename <folder name> <find extension> <replace extension>
"""
cucumber --tags @wip features/bulkrename.feature
Add to bulkrename
before we pull the values out of the arguments:
if ARGV.size == 0 then
puts 'USAGE: bulkrename <folder name> <find extension> <replace extension>'
exit 0
end
Replace every file in photos
folder that ends with the extension jpeg
with the
new extension jpg
Handling Markdown files in textfiles
folder
Case-insensitive replacement
Handle default command output
Don’t overwrite files ←
@wip
Scenario: Do not overwrite existing file(s)
Given an empty file named "photos/d.jpeg"
And an empty file named "photos/d.jpg"
When I run `bulkrename photos jpeg jpg`
Then the following files should exist:
| photos/d.jpeg |
| photos/d.jpg |
if not File.exists?(new_name)
File.rename(old_name, new_name)
end
Replace every file in photos
folder that ends with the extension jpeg
with the
new extension jpg
Handling Markdown files in textfiles
folder
Case-insensitive replacement
Handle default command output
Don’t overwrite files
Prompt to overwrite files ←
@wip
Scenario: Detect an existing file
Given an empty file named "photos/d.jpeg"
And an empty file named "photos/d.jpg"
When I run `bulkrename photos jpeg jpg --askoverwrite`
Then the output should contain:
"""
File 'photos/d.jpg' already exists, do you want to overwrite it (y/n)?
"""
if File.exists?(new_name) && ARGV[3] == "--askoverwrite"
print "File '#{new_name}' already exists, do you want to overwrite it (y/n)?"
end
if not File.exists?(new_name)
File.rename(old_name, new_name)
end
Scenario: Choose to overwrite an existing file
Given an empty file named "photos/d.jpeg"
And an empty file named "photos/d.jpg"
When I run `bulkrename photos jpeg jpg --askoverwrite` interactively
And I type "yes"
Then the following files should exist:
| photos/d.jpg |
And the output should contain:
"""
File 'photos/d.jpg' already exists, do you want to overwrite it (y/n)?
"""
And the output should contain:
"""
Overwriting file 'photos/d.jpg'
"""
Don’t worry if the only step you can think to write and implement feels incomplete
You can always refactor it or extend it once you get it working.
Narrows the implementation focus for each scenario to accomplishing one distinct, well-defined goal.
Helps us deal with uncertainty, where perhaps we can’t see a clear way forward, but can at least see the next step.
Constraining and then subsequently refactoring scenarios in this way:
Gives us the courage to proceed when the final solution seems vague and perhaps even in doubt
Minimizes the time spent with broken tests
Helps us to go faster overall
Guides us towards a right solution
Extract out some new well-named methods and variables
Use File.Join to build the file names instead of conventional string operations
#!/usr/bin/env ruby
$: << File.expand_path("../lib/", __FILE__)
def do_overwrite(ask_overwrite, new_name)
overwrite = false
if ask_overwrite
print "File '#{new_name}' already exists, do you want to overwrite it (y/n)?"
input = STDIN.gets.strip
overwrite = true if input[0].downcase == 'y'
end
puts "Overwriting file '#{new_name}'" if overwrite == true
overwrite
end
def do_rename(ask_overwrite, new_name)
return true if not File.exists?(new_name)
return true if File.exists?(new_name) && do_overwrite(ask_overwrite, new_name)
end
if ARGV.size == 0
puts 'USAGE: bulkrename <folder name> <find extension> <replace extension>'
exit 0
end
folder = ARGV[0]
find_type = ARGV[1]
replace_type = ARGV[2]
if ARGV[3]
ask_overwrite = ARGV[3] == "--askoverwrite"
end
Dir.foreach(folder) do |file_name|
type = File.extname(file_name).gsub(/^\./, '')
if type.downcase == find_type.downcase
old_name = File.join(folder, file_name)
new_name = File.join(folder, File.basename(file_name, ".#{type}") + ".#{replace_type}")
if do_rename(ask_overwrite, new_name)
File.rename(old_name, new_name)
end
end
end
Scenario: Choose not to overwrite an existing file
Given an empty file named "photos/d.jpeg"
And an empty file named "photos/d.jpg"
When I run `bulkrename photos jpeg jpg --askoverwrite` interactively
And I type "no"
Then the following files should exist:
| photos/d.jpeg |
| photos/d.jpg |
And the output should contain:
"""
File 'photos/d.jpg' already exists, do you want to overwrite it (y/n)?
"""
But the output should not contain:
"""
Overwriting file 'photos/d.jpg'
"""
Nicely factored, easy-to-understand script
Feature file that covers all the behavior we currently care about
Treat the steps included by Aruba as examples rather than templates.
@wip
Scenario: Default script output is correct
When I run `bulkrename`
Then the exit status should be 0
And the output should contain:
"""
USAGE: bulkrename <folder name> <find extension> <replace extension>
"""
Can this be improved?
@wip
Scenario: Default script output is correct
When I run `bulkrename`
Then the exit status should be 0
And the output should contain:
"""
USAGE: bulkrename <folder name> <find extension> <replace extension>
"""
Check for the correct usage message, rather than just looking for certain text:
@wip
Scenario: Default script output is correct
When I run `bulkrename`
Then the correct usage message should be displayed:
"""
USAGE: bulkrename <folder name> <find extension> <replace extension> [--askoverwrite]
"""
Then /^the correct usage message should be displayed:$/ do |usage_message|
assert_partial_output(usage_message, all_output)
last_exit_status.should == 0
end
Create bulkrename_steps.rb
in feature/step_definitions
After discussing the script with the tester on our team, we identified other error scenarios which should also be handled in the same basic manner…
<find extension>
is missing (eg. bulkrename photos
)
<replace extension>
is missing (eg. bulkrename photos txt
)
Optional argument/switch has incorrect format (eg.
bulkrename photos txt option
)
Optional argument has correct format but is invalid (eg.
bulkrename photos txt —verbose
)
Many, many scenarios where only the arguments and error message change
In each case, the arguments and error message are changing together
Can’t we write scenarios to avoid repetitious scenarios?
@wip
Scenario Outline: Parameters should be present and valid
Given an empty file named "photos/doc1.txt"
When I run `bulkrename <arguments>`
Then the program should exit by displaying the error:
"""
Error: <message>
"""
Examples:
| arguments | message |
| photos jpeg jpg --askoverwrite extra | Too many arguments |
| documents txt md | Folder 'documents' does not exist |
@wip
Scenario Outline: Parameters should be present and valid
Given an empty file named "photos/doc1.txt"
When I run `bulkrename <arguments>`
Then the program should exit by displaying the error:
"""
Error: <message>
"""
Examples:
| arguments | message |
| photos jpeg jpg --askoverwrite extra | Too many arguments |
| documents txt md | Folder 'documents' does not exist |
| photos | <find extension> is required |
| photos txt | <replace extension> is required |
| photos txt md extra | Invalid option format 'extra' |
| photos jpeg jpg --verbose | Invalid option name '--verbose' |
if ARGV.size == 0
puts 'USAGE: bulkrename <folder name> <find extension> <replace extension> [--askoverwrite]'
exit 0
end
abort 'Error: Too many arguments' if ARGV.size > 4
abort("Error: <find extension> is required") if ARGV.size == 1
abort("Error: <replace extension> is required") if ARGV.size == 2
folder = ARGV[0]
find_type = ARGV[1]
replace_type = ARGV[2]
if ARGV[3]
abort "Error: Invalid option format '#{ARGV[3]}'" unless ARGV[3][0..1] == "--"
ask_overwrite = ARGV[3] == "--askoverwrite"
abort "Error: Invalid option name '#{ARGV[3]}'" unless ask_overwrite
end
abort("Error: Folder '#{folder}' does not exist") unless File.exists?(folder)
Crafting our steps in this way allows us to focus on the important details and abstract away the inconsequential ones
It takes practice to know how much detail to put in a scenario step versus what goes into the step definition
With collaborative practice and refactoring your scenarios as you learn more about the business domain a good balance can be achieved.
BDD with Cucumber, published by Addison Wesley
Coming Soon! Early Access available this month.
Ignite BDD - One-Day Class
BDD Fuel - 2 Hour Workshop
BDD Blaze - 2.5-Day Workshop
My new book for coders and testers
Covers Cucumber in Ruby, Java and .NET
Coming soon, from Addison Wesley
Sign up for Early Access review
New to BDD and Cucumber?
Get your whole team and management fired up about doing BDD
Talk to me about scheduling one for your team
Started using Cucumber and want to improve?
I’ll sit with your team, review your work, answer your questions and coach your team on doing BDD with Cucumber effectively
Talk to me about scheduling one for your team
Your team will take a huge step towards mastery of BDD
Intensive training, coaching and leadership mentoring for your team in BDD with Cucumber
Talk to me about scheduling one for your team


January 4, 2015
Arrays and hashes used to store a group, or "collection," of objects that can be accessed in a program. Hashes and arrays can vary in size and the type of objects they hold: integers, floats, or string variables.
One of the main differences between arrays and hashes is that in order to retrieve the information in an array, you need to know the exact order of the content in the array since you use the number that represents the ordered location of data to retrieve objects. That is, if you have an array with 3 items, 'peach', 'orange', and 'apple', entered in that order, you would need to know that apple is the third object and tell Ruby to pull the third object. So, for arrays, the number that represents the object's order is the "key" for accessing the information. On the other hand, hashes do not use ordered numbers for accessing information. Hashes include sets of information, such as 'peach' & 'Georgia'; 'orange' & 'Florida'; and 'apple' & 'Washington'. If the fruits listed here are defined as the "keys" then they are what is used to access the associated data.
Defining an array:
fruit_array = ['peach', 'orange', 'apple']
Defining a hash:
fruit_array = {
'peach' => 'Georgia',
'orange'=> 'Florida',
'apple' => 'Washington'
}
In the case above, it may make more sense to use the hash when you need to retrieve more nuanced data or the number of items in an array is changing/uncertain and a unique key ensures retrieving the corrent information.


Voxels
What are voxels? A pixel can be understood to be an (x, y) co-ordinate on a 2D plane. A voxel is a pixel whose structure exists in the third dimension as well, i.e. it has depth (z axis). It represents a single value of a given object stored at an (x, y, z) co-ordinate in a 3D data structure. The value itself only specifies the color at that spatial position, its position is deduced by its neighbors and by the structure itself. Voxels can be rendered by either using volumetric data and rendering it with a direct volume rendering technique such as using slices or raycasting. Another alternative is extracting isosurfaces of a model which are computed and often rendered with the marching cubes algorithm.
Voxels if processed and stored optimally can give rise to high LOD's at any or most ranges. Static models are suited well for this mode of rendering, but when these models need to be animated or transformed along complex tree heirachies there is an overhead to re-visualizing the data within the data structure as data needs to be shifted between positions in the structure to render the given animation. Voxel's are being moved. Thus, complexity increases even with algorithms more complex then the mundane naive and linear approaches.
The project described here is based on a direct volume rendering approach via rayvcasting. It began with trying to store the data within an octree, and making and maintaining the sparse nature since all nodes of the octree were not occupied to represent a given volume. Due to the lack of time, the project was diverted to trying to create an interactive way to light the volume, and the effect pursued is a toon effect, the exaggeration of colors manipulated by a light source.
Interactive Volume Rendering
I augmented my implementation of the paper "XToon: Extended Toon Shader" by Pascal Barla and incorporated it into the rendering of voxels (Implementation can be found here) and used it as a transfer function to shade the volume. As described by the paper, a 2D texture is used as a lookup for shading where a computed detail value (D) is understood as the y axis and the lambertian model (N.L) is used as the x axis.
Here, I compute the detail (D) as the density of the volume. A gradient is computed with the sobel operator and is applied per fragment of voxels to threshold, and its magnitude is applied per fragment. These two values are used for the transfer function look up.
The perks of this paper which are depth of field, aerial perspective, specular highlights, and backlighting can be trasferred to rendering volumes. This requires adjusting the shader to work with volumetric data, and designing textures which will help exhibit the desired effect.
Future Work
The code for the project can be found here. There are enumerable things that can be done to improve the project, possibly even correct it. There are some things that I would like to do to it which are as follows,
- - Further optimizing and maintaining a sparse octree, which can shift data between its nodes at a feasible rate.
- - To further bolster the profile of an optimized, efficient sparse octree I would like to try and implement a simple ball bouncing while maintaing the structure of the object all through the animation via the octree.
- - Applying the above mentioned XToon implementation to other facets of volumetric rendering, possibly volumetric light or fog, or volumetric fluid.


Loading...
Data has been loaded successfully!
Ops! {[{ error }]}
Just for testing purpose. There is no authentication and authorization process for frontend and backend. It use axios for api request and bootstrap css 4.x for better ui components. All are in just one file - index.html ;-)


An Object-oriented interpretation of the above mentioned Cellular Automata idea, with a modified flocking algorithm.


{% extends "header.html" %} {% block content %}
We will be temporarily shutting down our store December 23-30 to give our hard-working employees a break. During this period of time, it is important that the Employee fridge is cleaned out, and all remaining food or beverages are taken home. Our janitorial staff will be cleaning out the fridge and throwing any food away.
You will only need to come into the office once during this period. Your employee-issued badge will work between the hours of 10am - 3pm.
{% endblock %}


font2c - Write PostScript Type 0 or Type 1 font as C code
This script invokes gs (1)with the following options:
-q -dNODISPLAY -dWRITESYSTEMDICT
followed by the arguments from the command line. This will write out a PostScript Type 0 or Type 1 font as C code that can be linked with the interpreter.
This document was last revised for Ghostscript version 9.06.
Artifex Software, Inc. are the primary maintainers of Ghostscript. This manpage by George Ferguson.


You can fill it out in one go or over time. You may navigate between steps, but all the essential elements (marked with an asterisk) must be completed before uploading your title on the marketplace.
You’ll need at least a poster and a banner image to create your Title. You can also provide other promotional elements if you wish (stills, script, presentation decks, videos…).


The Temple Knights are Elven knights of the highest order, expert swordsmen who guard the forest and the headwaters of the river. They serve Eva, the goddess of water, and the Mother Tree Glade.
Description of the Temple Knight
Change occupation to Temple Knight.
Return


The tree allows to load children asynchronously using getChildren
option, and hasChildren
field on the node.
This options receives a function that has a TreeNode parameter, and returns a value or a promise that resolves to the node's children:
The function will be called whenever a node is expanded, the hasChildren
field is true, and the children
field is empty.
The result will be loaded into the node's children attribute.


The namespace this_thread
provides methods for dealing with the calling thread.
More...
Functions | |
| thread::id | get_id () |
| Return the thread ID of the calling thread. | |
| void | yield () |
| Yield execution to another thread. | |
| template<class _Rep , class _Period > | |
| void | sleep_for (const chrono::duration< _Rep, _Period > &aTime) |
| Blocks the calling thread for a period of time. |
The namespace this_thread
provides methods for dealing with the calling thread.
| void tthread::this_thread::sleep_for | ( | const chrono::duration< _Rep, _Period > & | aTime | ) | [inline] |
Blocks the calling thread for a period of time.
| [in] | aTime | Minimum time to put the thread to sleep. Example usage:
// Sleep for 100 milliseconds this_thread::sleep_for(chrono::milliseconds(100)); |
| void tthread::this_thread::yield | ( | ) | [inline] |
Yield execution to another thread.
Offers the operating system the opportunity to schedule another thread that is ready to run on the current processor.


Libre Baskerville is a web font optimized for body text (typically 16px.) It is based on the American Type Founder's Baskerville from 1941, but it has a taller x-height, wider counters and a little less contrast, that allow it to work well for reading on-screen.
Join the project at www.impallari.com/projects/overview/libre-baskerville.


The idea of Bun Bun Bake Shop started out in Mom’s kitchen. Every Saturday morning, we were greeted by the alluring smell of her famous cinnamon buns. There’s something so warm and comforting about them that simply can’t be matched. We dreamed of sharing the magic of Mom’s cinnamon buns, and so we share Bun Bun Bake Shop with you.


Bitbeans (Ticker: BITB) is a new crypto currency designed for scale-ability, speed and lightening fast transactions! It features an innovative Proof of Stake algorithm that more closely resembles traditional Proof of Work crypto currencies. BitBean is the first crypto to impliment 20MB blocks, based off Gavin Andersen's proposals to fix Bitcoin's scale-ability limitations. BitBean is designed from the ground-up to be transaction-centric and superior form of currency for on-line and brick-and-mortar businesses. Inovative new implimentations are planned for BitBean that will set it appart from the rest of the crypto curriencies and lead in the mass adoption of crypto curriencies in the market place.
It is the goal of the BitBean developers for everyone involved in the Cryptocurrency revolution to have access to the exciting developments that have been taking place. An ASIC-friendly, mixed PoW/PoS coin with eventual anonymous transaction capabilities has been sorely overlooked.
The BitBean developers believe that progress should never be held back. Proof of Stake Crypto-currencies use a considerably smaller amount of energy and allows everyone to be involved in the network, without prohibitively expensive propriatary hardware as required to mine Bitcoin. The energy used mining Scrypt beans for years to prolong the days of GPU mining was a truly enormous waste of resources on a global scale. Why hold back progress? BitBean encourages it, allowing everyone with even a small investment in BitBean to participate in the network and currencies success!
Coin Generation: Pure Proof of Stake with Proof of Work period upon release
Proof of Work Algorithm: SHA-256
Total Number of Coins: 22 million
PoW Block Reward: 100000 BITB
PoW Blocks: 10000
PoW Target Blocktime: 1 minute
RPC Port: 22461
Port: 22460
Time to Maturity: 100 Confirmations
Proof of Stake Reward: 1000 per block
Minimum Coin Stake Age: 6 hours
Sprout = 1,000 BitBeans
BitB = 1 BitBean
mBitB = .001 BitBean
uBitB = .000001 BitBean
nokat = .00000001 BitBean
www.bitbean.org
Twitter: @BitBeanCoin
<EMAIL_ADDRESS>#bitbean on the Freenode IRC Network
#teambean on the Freenode IRC Network
Developer support: #beancore on the Freenode IRC Network


I'm Milap, aspiring (data) product designer.
I ♥ putting users first and making things people enjoy. I'm currently designing at Finomena, previously was at Shadowfax and Koru Technologies. In my free time I contribute to Airbnb's Open source project called Caravel. Exploring the possibilities of combining Data Science and Design to create wonderful interactive experiences.


Logo
Navbar Link
Navbar Link
menu
Clef
Discover a new artist or learn more about a favorite
Discover an Artist:


‘We are not ready for it to disappear’
by Seattle Times staff“In a fast changing Seattle, we are not ready for it to disappear.”
Children of the late Bob James, who six decades ago designed the downtown Macy’s Christmas star
“It was not a heroic act.”
William Ruckelshaus, who died Nov. 27, downplaying his famous refusal to fire Watergate prosecutor Archibald Cox as President Richard Nixon had demanded
“It’s not a plaything. It’s not a toy.”
Seattle developer Kevin Daniels, on Paul Allen’s Vulcan real-estate company, which developed most of South Lake Union
“Vulcan remains committed to tackling the world’s toughest problems.”
A spokeswoman for Vulcan, declining to divulge anything about the philanthropic plans Allen left for his estate
“It will be impossible to distinguish between the real pictures and the fake pictures.”
Arizona State University computer-science professor Subbarao Kambhampati, on the growing capabilities of “deepfake” image manipulation
Seattle Times staff


List Your Space
About Us
Destination
My Pass
Community
Survival Guide
City
Edit My Profile
Houston, we have a problem!
Please double check the URL and try again. If the issue persists,
let us know.


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Serves 4
Use up leftover cooked and smoked salmon and potatoes in this quick and tasty festive brunch for four.
For the hollandaise sauce, in a pan, heat the vinegar, peppercorns, bay leaf, tarragon and 50ml/2fl oz water and cook until the liquid has reduced in volume to a tablespoon. Strain through a sieve.
Put the liquid and the egg yolks in a food processor and blend. With the motor running, gradually add the clarified butter until you have a smooth sauce. Finish with the lemon juice, mustard and cayenne pepper. Set aside and keep warm (cover the mixture to prevent a skin from forming on the surface).
For the smoked salmon hash brown, place the potato, salmon, smoked salmon, crème fraîche and dill in a large bowl and mix. Heat a large frying pan until hot and add the butter.
To make each hash brown, place a metal ring in the centre of the pan and pack it with the mixture. Cook for 2-3 minutes on each side until golden-brown and crisp.
For the poached eggs, bring a pan of salted water to the boil and add the vinegar. Reduce the heat to a simmer and whisk the water to create a whirlpool. Once settled, crack an egg in. Simmer for 2-3 minutes, remove the poached egg carefully with a slotted spoon and place on a plate to drain. Repeat the process with the remaining eggs.
To serve, place the salmon hash in the centre of serving plates and top with the egg and hollandaise sauce. Just before serving break the egg yolks.


pacman --query
Arch Linux package manager utility.
More information: home page
- List installed packages and versions:
pacman --query
- List only packages and versions that were explicitly installed:
pacman --query --explicit
- Find which package owns a file:
pacman --query --owns filename
- Display information about an installed package:
pacman --query --info package_name
- List files owned by a package:
pacman --query --list package_name
- List orphan packages (installed as dependencies but not required by any package):
pacman --query --unrequired --deps --quiet
- List installed packages not found in the repositories:
pacman --query --foreign
- List outdated packages:
pacman --query --upgrades