using mahinehioahfaoishfoisahfsodfhsdofhwfhdfishfdoshshdfoishidhfsodhfso
aosjhdoashdsodhioahsdoahnosandoandsoa
niowadnhoewdhnowedow
Get a 7-segment display (7SD) to cycle through your student number by using sequential logic
design.
using a decoder chip (CD74HC4511E) to drive the 7SD.
Sequential logic design: take the inputs to the decoder off of flip flops, and design the flip-flops
to cycle through states
representing my student number(400179164).
I use K-mapping to figure out the logic I need. I also use Multisim to simulate my whole circuit.
I attached the video and my final report below:
https://www.youtube.com/watch?v=PIcKK4Ny-T4
Click Here to download Final Project Report
Final Report
Working as a group to design a prosthetic hand which can simulate the motion of thumb and forefinger.
the motion should be in the opposite direction
Given the specific input speed 139 RPM, the final output speed should be 15 RPM.
Using Autodesk Inventor to simulate and assemble the whole design
Using 3D-printer to print each gear and the frame and assembling them together in real world
I attached my final report and simulation video on inventor below:
https://youtu.be/8gApa-HnANM
Click Here to download Final Project Report
Fluently using C,pyhton and ARM
Familar with HTML,CSS, and Java
Knowing the concept of mahcine learning, TCP/IP
Keep learning more skills...
Embedded System & Circuit design
Design an micro controller
sequential logic design
Other Skills
Matlab,Maple,simulink
Autodesk inventor
Familar with 3D printer
Fluently using MS Office, SAP and other software


Demonstration Tutorials
These Tutorials are designed to demonstrate the different tasks that are available. It is intended that these tutorials can be used to verify that everything is working correctly, and you can then take the build files for these demonstrations and customise them for your own projects.
Introduction to Apache Ant
|
Important
|
Before doing this tutorial make sure you have performed necessary setup detailed in the gettingstarted page |
This tutorial is a very basic introduction to the concepts of Ant. If you already have used ant before then you can skip this tutorial.
We are going to cover the following concepts
-
The Build File (build.xml)
-
Targets
-
Tasks
-
Properties
-
Task Dependencies
Diving Straight In
Ant is a command line program, which you run by using the command ant
and then supplying some command line arguments.
Let’s run our first ant build, our sample build will just print a hello message to the console.
-
Open your command line
-
Change directory to the the demo/antintro folder
-
issue the command
ant
You should see the following output
Buildfile: V:\Projects\BuildXPages\demo\antintro\build.xml
hello:
[echo] Hello Alice!
BUILD SUCCESSFUL
Total time: 289 milliseconds
So we told Ant to run, but how did Ant know what we wanted to do?
The Build File (build.xml)
The build file is an xml file that contains all the instructions of what you want to automate.
By default Ant will look for a build file named build.xml. You are able to call it something else if you want, but you will need to specify it as a command line argument.
Lets have a look at our build file for this project
<project name="Introduction to Ant" default="hello">
<description>This is a simple sample to demonstrate some concepts of ant</description>
<!-- tag::properties[] -->
<property name="firstname" value="Alice"></property>
<!-- end::properties[] -->
<!-- tag::targets[] -->
<target name="hello" description="Says Hello">
<echo message="Hello ${firstname}!"></echo>
</target>
<target name="goodbye" depends="hello" description="Says Goodbye">
<echo message="Goodbye ${firstname}!"></echo>
</target>
<!-- end::targets[] -->
</project>
We can see the root element of the build file is 'project'. We have a name for this project and a default target 'hello'.
There is a longer description of the build project, then some property definitions, and finally some targets each with one task within it.
Targets
Targets are used to create a sequence of tasks that you want to perform, and refer to that sequence by a name.
In this build file we have 2 targets hello and goodbye.
<target name="hello" description="Says Hello">
<echo message="Hello ${firstname}!"></echo>
</target>
<target name="goodbye" depends="hello" description="Says Goodbye">
<echo message="Goodbye ${firstname}!"></echo>
</target>
You can see in the root project element, hello is specified as the default target, and therefore this is the target that was executed when we told ant to run
Tasks
Tasks are the building blocks of what you can automate. In this sample we are keeping it very simple and only using the 'echo' task to print messages to the console. But there are a whole bunch of default tasks available.
The Apache Ant project site is very well documented and I recommend having a look through the Overview of Apache Ant Tasks
Custom Tasks
If there is no task that suits your need, you can make custom tasks yourselves! This is precisely what I have done for BuildXPages. See the other tutorials for demonstration of the custom tasks made available by the BuildXPages project
Properties
Properties are useful to allow you to use the same build file, but customise it for different projects and environments.
Properties can be provided using a properties file, and they can also be provided directly in the build file.
In this build file, our echo tasks use a property called firstname
This firstname property is specified at the top of the build file.
<property name="firstname" value="Alice"></property>
Once a property is set, it cannot be changed, so the property value will remain whatever it was first set as.
Loading from a Properties file
It is often easier to keep custom property values in a properties file, and supply this as an argument when running Ant.
In our tutorial directory we have a demo properties file called build.properties which specifies the firstname to be bob
# Set firstname to bob
firstname=Bob
We can tell ant to use this property file using the -propertyfile
option.
Issue the following command in your command line:
ant -propertyfile build.properties
You should see output similar to:
Buildfile: V:\Projects\BuildXPages\demo\antintro\build.xml hello: [echo] Hello Bob! BUILD SUCCESSFUL Total time: 0 seconds
We now see a message to Bob because the firstname property is being set from the build.properties file before it is attempted to be set as Alice within the build.xml file.
Specifying a Property as Command line Argument
You can also provide a property directly on the command line when running ant.
The argument takes the form -D<propertyname>=<value>
Try it now by putting your own name in. Because this property is set before the build.properties file is loaded
ant -Dfirstname=Cam
Buildfile: V:\Projects\BuildXPages\demo\antintro\build.xml hello: [echo] Hello Cam! BUILD SUCCESSFUL Total time: 0 seconds
Task Dependencies
A task can be set to depend on another task, in our example, the goodbye target is set to depend on the hello target (using the depends attribute). This means before we say goodbye we must say hello!.
<target name="hello" description="Says Hello">
<echo message="Hello ${firstname}!"></echo>
</target>
<target name="goodbye" depends="hello" description="Says Goodbye">
<echo message="Goodbye ${firstname}!"></echo>
</target>
Let’s try it out. This time because we are not running the default target we must specify it. Issue the following command
ant goodbye
Buildfile: V:\Projects\BuildXPages\demo\antintro\build.xml hello: [echo] Hello Alice! goodbye: [echo] Goodbye Alice! BUILD SUCCESSFUL Total time: 0 seconds
Conclusion
So this was a very short, very simple introduction to the concepts of Ant. We learned about the concepts of The Build File, Targets, Tasks, Properties and Task Dependencies.
These concepts will hopefully give you a good start to comprehend the rest of the tutorials in BuildXPages, in which we will use much more complicated targets and tasks to achieve some tasks for building and deploying XPages applications.
Building an NSF
|
Important
|
Before doing this tutorial make sure you have performed necessary setup detailed in the gettingstarted page |
In this tutorial we will build a Simple XPages Application from an on On-Disk Project, using Domino Designer Headless Plugin + BuildXPages Ant Tasks.
After the successful build, the nsf will be available in your local workspace.
The files for this Demonstration are in the demo/buildnsf folder of the Build4XPages distribution files. The sample On-Disk Project is located within the tutorial folder as sampleodp. The Application has a Custom Control and an XPage which uses that custom control.
|
Tip
|
If you are not familiar with Ant be sure to have a look at the 'Introduction to Apache Ant' tutorial for understanding of things like build.xml, targets, tasks etc. |
Within the build.xml file for this demo are 2 targets that are used to setup the demonstration clean and init
clean is used to clean up any previous attempt at this tutorial, and init is used to initialise the tutorial by making sure we have 2 on disk projects that we can try to build, one that should build successfully and the other which should fail.
You can see that init has been set to depend on clean so that before the init target is executed, the clean target will be executed.
<target name="clean">
<delete dir="odp"/>
<delete dir="odperror"/>
</target>
<target name="init" depends="clean">
<copy todir="odp">
<fileset dir="sampleodp"></fileset>
</copy>
<copy todir="odperror">
<fileset dir="sampleodp"></fileset>
</copy>
<!-- Delete the Custom Control from the odp that we are using for the error demo -->
<delete>
<fileset dir="odperror/CustomControls"></fileset>
</delete>
</target>
Run a Successful Build
There is also a target called build. This will build the NSF. This target is also listed as the default target in the root element of the build.xml file.
This target makes use of the bxp:buildnsf task which will connect to the Headless Designer Plugin, and instruct it to build the nsf as specified by the task attributes.
<target name="build" depends="init">
<bxp:checkDesignerRunning/>
<!-- We assign the .project file path to a property using the 'location' attribute,
this way the property will be expanded to the absolute path of the .project file-->
<property name="odp.projectfile" location="odp/.project" />
<bxp:buildnsf project="${odp.projectfile}" projectname="${odp.projectname}" nsf="${nsf.filepath}" />
</target>
You can see that the build target depends on init. init depends on clean, so when we execute this build target what will really happen is the following order of execution:
clean -> init -> build
To run the Build
Before running the build, we make sure Domino Designer will be able to listen for the instructions to build something.
If Domino Designer is running, make sure the Headless designer PLugin server is started. If Domino Designer is not running, make sure the Headless designer plugin is configured to auto-start when Domino Designer starts.
-
Open your command line
-
Change directory to the the demo/buildnsf folder
-
issue the command
ant
Ant knows to look for build.xml and the default target (which is our build target). The build process will then begin, and your nsf will (hopefully) be built into your local workspace.
You should see some output on the console like so:
Buildfile: V:\Projects\BuildXPages\demo\buildnsf\build.xml
clean:
[delete] Deleting directory V:\Projects\BuildXPages\demo\buildnsf\odp
[delete] Deleting directory V:\Projects\BuildXPages\demo\buildnsf\odperror
init:
[copy] Copying 20 files to V:\Projects\BuildXPages\demo\buildnsf\odp
[copy] Copying 20 files to V:\Projects\BuildXPages\demo\buildnsf\odperror
build:
[bxp:buildnsf] Attempt to Create Socket
[bxp:buildnsf] Socket Created
[bxp:buildnsf] CONNECTED TO DESIGNER! What can we do for you?
[bxp:buildnsf] Issuing Refresh Import Build Command for V:\Projects\BuildXPages\demo\buildnsf\odp\.project
[bxp:buildnsf] BUILD JOB ABOUT TO RUN
[bxp:buildnsf] BUILD JOB RUNNING
[bxp:buildnsf] BUILD JOB STATUS: SUCCESS
[bxp:buildnsf] PROBLEMS STATUS: SUCCESS
[bxp:buildnsf] No ProblemMarkers found after Building
BUILD SUCCESSFUL
Total time: 2 seconds
Also, in your domino Designer workspace you should see a new NSF with filepath temp\BuildXPagesDemo.nsf
Example of an NSF Build with Errors
Let’s see an example of running an NSF Build that results in some errors. To do this we will use the same sample On-Disk Project, but before we run the build we will sneakily delete the custom controls. This should cause an error when Designer tries to build the XPages that use those missing custom controls.
The target that I have written to do this is called buildfail.
Note it is pretty much the same as build but is pointing to a different location for the on-disk project, and specifies different NSF and projectname.
<target name="buildfail" depends="init">
<bxp:checkDesignerRunning/>
<!-- We assign the .project file path to a property using the 'location' attribute,
this way the property will be expanded to the absolute path of the .project file-->
<property name="odp.project" location="odperror/.project" />
<bxp:buildnsf project="${odp.project}" projectname="BuildXPagesDemoNSFError" nsf="temp\BuildXPagesDemoError.nsf" />
</target>
Since buildfail is not the default target, we will tell ant that that is the target we want to build by including the target name in the command line arguments.
-
issue the command
ant buildfail
You should then see an output like so:
Buildfile: V:\Projects\BuildXPages\demo\buildnsf\build.xml
clean:
[delete] Deleting directory V:\Projects\BuildXPages\demo\buildnsf\odp
[delete] Deleting directory V:\Projects\BuildXPages\demo\buildnsf\odperror
init:
[copy] Copying 20 files to V:\Projects\BuildXPages\demo\buildnsf\odp
[copy] Copying 20 files to V:\Projects\BuildXPages\demo\buildnsf\odperror
buildfail:
[bxp:buildnsf] Attempt to Create Socket
[bxp:buildnsf] Socket Created
[bxp:buildnsf] CONNECTED TO DESIGNER! What can we do for you?
[bxp:buildnsf] Issuing Refresh Import Build Command for V:\Projects\BuildXPages\demo\buildnsf\odperror\.project
[bxp:buildnsf] BUILD JOB ABOUT TO RUN
[bxp:buildnsf] BUILD JOB RUNNING
[bxp:buildnsf] BUILD JOB STATUS: SUCCESS
[bxp:buildnsf] PROBLEMS STATUS: FAIL
[bxp:buildnsf] The following ProblemMarkers were present after building
[bxp:buildnsf] Error: Home.xsp: The unknown tag xc:ccCustomControl cannot be used as a control.
Notice that the 'PROBLEMS STATUS' is fail and the last line is telling us the exact problem. If you were to look in Designer you would see the problem there too.
Conclusion
In this demonstration tutorial we have shown how the buildnsf task from the BuildXPages Ant Library works together with the headless designer plugin. We have demonstrated how to successfully build an NSF and also what it looks like when an NSF does not successfully build.
Deploying an NSF
Once you have built an NSF, you may want to deploy the latest changes to it’s target environment.
There is more than one way to deploy an NSF, not everyone is going to do it the same way. This tutorial will hopefully demonstrate some of the tasks you could use to acheive your desired deployment.
Preparation
This tutorial assumes that you have successfully completed the 'Building An NSF' tutorial. After completing the 'Building an NSF' tutorial you should have an NSF in your local workspace. We will use this NSF as the basis for some of the deployment examples.
Then open your command prompt and navigate to the demo/deploynsf directory. Now you should be ready to start the demo!
build.properties file
This demonstration has some properties supplied via a build.properties file. You will see some of these properties referenced later on in the demonstration.
# it is recommended to set your notesProgDir using
# the NOTES_PROGDIR environment variable but you can specify it here instead if you like
#notesProgDir=C:\\Path\\To\\Notes
# You can change this and it will change the location of the nsf that is built
nsf.filepath=temp\\BuildXPagesDemo.nsf
nsf.templatename=BuildXPagesTemplate
# Uncomment the server if you would like to deploy to a server instead of just to your own workspace
#nsf.production.server=
nsf.production.filepath=temp\\BuildXPages.nsf
#nsf.template.server=
nsf.template.filepath=temp\\BuildXPages.ntf
Basic File-Level Copying
At the most basic Level, you may have built your NSF directly to a local Notes workspace, and just want to copy the .nsf file to another location. In this case you would just use a simple Apache Ant copy task. I will leave that up to you to research as it is very simple.
Copying an NSF using Notes/Domino
Instead of doing basic file-based copying, we can actually use IBM Notes to copy an NSF from our local workspace to a server, or from one server to another server etc.
To do this we use BuildXPages' copynsf task.
We are going to create 2 copies of the NSF that we built in the 'Building an NSF' demonstration, so that we can use these 2 copies in our next few deployment demonstrations.
We are going to create one copy to act as a template, and then another copy that will act as our 'production' nsf.
Here is the copydatabase target that we are going to run, you can see we are specifying the source and destination filepaths using the properties from the build.properties file. The copynsf task also has available attributes for source and destination server, but since we have not included them, it will just use the local notes workspace as the source and destination server.
<target name="copydatabase">
<fail message="Please Specify Source NSF Filepath" unless="nsf.filepath"/>
<fail message="Please Specify Destination NSF Filepath" unless="nsf.production.filepath"/>
<bxp:copynsf srcfilepath="${nsf.filepath}" dstfilepath="${nsf.production.filepath}" />
<bxp:copynsf srcfilepath="${nsf.filepath}" dstfilepath="${nsf.template.filepath}" />
</target>
To execute this target issue the console command ant copynsf
You should see some output like:
Buildfile: V:\Projects\BuildXPages\demo\deploynsf\build.xml
copydatabase:
[bxp:copynsf] temp\BuildXPagesDemo.nsf
[bxp:copynsf] temp\BuildXPages.nsf
[bxp:copynsf] temp\BuildXPagesDemo.nsf
[bxp:copynsf] temp\BuildXPages.ntf
BUILD SUCCESSFUL
Total time: 1 second
You should now have 2 new databases in your workspace:
-
temp\BuildXPages.nsf - which will act as the Production NSF
-
temp\BuildXPages.ntf - which will act as the Master Template
Setting up template names
Now that we have our Production and Master templates, we will configure one to inherit Design from the other. BuildXPages has a settemplatenames task which is useful for configuring template inheritance dynamically.
We will execute the following target which first sets the ntf’s master template name, and then it sets the production nsf to inherit from that template
<target name="linktemplates">
<fail message="Please Specify NSF Filepath" unless="nsf.filepath"/>
<fail message="Please Specify Production NSF Filepath" unless="nsf.production.filepath"/>
<fail message="Please Specify the Master Template Name" unless="nsf.templatename"/>
<bxp:settemplatenames database="${nsf.template.filepath}" mastername="${nsf.templatename}" />
<bxp:settemplatenames database="${nsf.production.filepath}" inheritfrom="${nsf.templatename}" />
</target>
To execute this target, issue the command ant linktemplates
You should see some output like:
Buildfile: V:\Projects\BuildXPages\demo\deploynsf\build.xml
linktemplates:
[bxp:settemplatenames] Setting Template Names for: local!!temp\BuildXPages.ntf
[bxp:settemplatenames] ... Inherit From: <no change>
[bxp:settemplatenames] ... Is Master Template: 'BuildXPagesTemplate'
[bxp:settemplatenames] Setting Template Names for: local!!temp\BuildXPages.nsf
[bxp:settemplatenames] ... Inherit From: 'BuildXPagesTemplate'
[bxp:settemplatenames] ... Is Master Template: <no change>
BUILD SUCCESSFUL
Total time: 912 milliseconds
You should also be able to inspect the database application properties in IBM Notes and verify that the templates have been set properly.
Refreshing a Template
When you are ready to refresh the design of a database, you can simple use the refreshdbdesign task. The task allows us to choose the database we want to refresh, which can be local or on another server, and then also choose which server to refresh from which can also be local or another server.
What is handy about this is that you can refresh the design of a target nsf using an NSF from your local workspace. So, if you have built an NSF in your local workspace you can refresh an NSF on a server using the design on your local workspace.
In this demonstration we will just refresh a the local production database from the local template. This inheritance should already be set up in the previous set templates example, so we just need to specify the database that we want to refresh
<target name="refreshtemplate">
<bxp:refreshdbdesign database="${nsf.production.filepath}"/>
</target>
To execute the target, issue the command ant refreshtemplate
You should see some output like this:
Buildfile: V:\Projects\BuildXPages\demo\deploynsf\build.xml
refreshtemplate:
[bxp:refreshdbdesign] Refreshing Design of Db : local!!temp\BuildXPages.nsf
[bxp:refreshdbdesign] Refreshing From Server : local
[bxp:refreshdbdesign] Building list of design templates...
[bxp:refreshdbdesign] Refreshing design of Build NSF Demo...
[bxp:refreshdbdesign] Updating Build NSF Demo from the Build NSF Demo design template...
[bxp:refreshdbdesign] Design refresh of Build NSF Demo completed
BUILD SUCCESSFUL
Total time: 1 second
Since both the template and the production database were copied from the same nsf, there is nothing to refresh so you don’t see any design elements listed in the output, but if you were to make a change in the template and then run it again you will see the updated design element in the output
Deleting NSFs
In this last step of our demonstration we will clean up after ourselves and delete the 'Production' NSF and the 'template' that we just created. To do this we can use the deletensf task.
<target name="clean">
<bxp:deletensf filename="${nsf.production.filepath}"/>
<bxp:deletensf filename="${nsf.template.filepath}"/>
</target>
To execute this task issue the command ant clean
The output of the deletensf task is not very useful, you should see some ouput like this:
Buildfile: V:\Projects\BuildXPages\demo\deploynsf\build.xml
clean:
BUILD SUCCESSFUL
Total time: 839 milliseconds
If the database did not exist (so could not be deleted) you will get a build failed warning
Conclusion
In this demonstration we have shown how to copy databases around servers and local workspaces, setup design inheritance, refresh database designs and to delete databases. Hopefully these tools will come in handy when designing your own deployment process.
Building Features and Plugins
In this Demonstration we build a plugin by doing a Headless Eclipse feature build.
The general way this works is, you create a feature that lists the plugins that you want to build. You then tell eclipse (via a command line instruction) to build this feature, and it will build each plugin and package it up for you.
BuildXPages has a task buildfeature which basically just helps issue the command line instruction.
This is a very short demonstration, as I am not very sure there is a very big audience for this. Hopefully this demonstration will give you an idea of how it works but if you need to know more please feel free to ask me questions about it.
If you want to learn more about the headless eclipse works, then check out the following link Automated building of Features
|
Important
|
Make sure you have performed the necessary setup as in the getting started section |
Building the Plugin/Feature
The demo/buildfeature directory contains the source code of a plugin, and also a feature.
-
com.gregorbyte.buildxpages.demo
-
com.gregorbyte.buildxpages.demo.feature
We are going to execute the build target, lets have a look at it
<target name="build" depends="init">
<bxp:copytobuilddir plugin="com.gregorbyte.buildxpages.demo" />
<bxp:copytobuilddir feature="com.gregorbyte.buildxpages.demo.feature" />
<bxp:buildfeature feature="com.gregorbyte.buildxpages.demo.feature"/>
</target>
The eclipse headless build performs all it’s operations in a 'build directory' which is basically like a working area, so before running a build, we have to prepare this build directory and make sure it has plugins and features we need to build.
We do this using buildxpages copytobuilddir task which copies a plugin or a feature to the build directory. The copytobuilddir expects there to be a buildDir set which specifieds the build directory location.
We then use buildxpages buildfeature task to trigger the build, and we specify the feature that we are building.
-
Open your console and navigate to the demo/buildfeature folder
-
Type
ant
You should then see some output like so:
Buildfile: V:\Projects\BuildXPages\demo\buildfeature\build.xml
clean:
[delete] Deleting directory V:\Projects\BuildXPages\demo\buildfeature\buildDirectory
init:
[mkdir] Created dir: V:\Projects\BuildXPages\demo\buildfeature\buildDirectory
[mkdir] Created dir: V:\Projects\BuildXPages\demo\buildfeature\buildDirectory\plugins
[mkdir] Created dir: V:\Projects\BuildXPages\demo\buildfeature\buildDirectory\features
build:
[copy] Copying 7 files to V:\Projects\BuildXPages\demo\buildfeature\buildDirectory\plugins\com.gregorbyte.buildxpages.demo
[copy] Copying 3 files to V:\Projects\BuildXPages\demo\buildfeature\buildDirectory\features\com.gregorbyte.buildxpages.demo.feature
[echo] Init Default Properties
[java] org.eclipse.m2e.logback.configuration: The org.eclipse.m2e.logback.configuration bundle was activated before the state location was initialized. Will retry after the state location is initialized.
[java] Starting Groovy-Eclipse compiler resolver. Specified compiler level: unspecified
[java] 850 2.3.7.xx-201411061335-e44-RELEASE = STARTING
[java] org.eclipse.m2e.logback.configuration: Logback config file: V:\Cameron\workspace\.metadata\.plugins\org.eclipse.m2e.logback.configuration\logback.<IP_ADDRESS>50109-1820.xml
[java] org.eclipse.m2e.logback.configuration: Initializing logback
[java] Unknown argument: -DpluginPath=
[java] Buildfile: C:/eclipse-luna/eclipse/plugins/org.eclipse.pde.build_3.9.0.v20140415-2029/scripts/build.xml
[java]
[java] main:
[java]
[java] preBuild:
[java]
And then a lot more of that kind of stuff and finally, hopefully you see the BUILD SUCCESSFULL message
[java] gather.logs:
[java] [mkdir] Created dir: V:\Projects\BuildXPages\demo\buildfeature\buildDirectory\features\com.gregorbyte.buildxpages.demo.feature\feature.temp.folder\plugins\com.gregorbyte.buildxpages.demo_<IP_ADDRESS>709212144
[java] [copy] Copying 1 file to V:\Projects\BuildXPages\demo\buildfeature\buildDirectory\features\com.gregorbyte.buildxpages.demo.feature\feature.temp.folder\plugins\com.gregorbyte.buildxpages.demo_<IP_ADDRESS>709212144
[java]
[java] update.feature:
[java]
[java] all.children:
[java] [zip] Building zip: V:\Projects\BuildXPages\demo\buildfeature\buildDirectory\features\com.gregorbyte.buildxpages.demo.feature\com.gregorbyte.buildxpages.demo.feature_<IP_ADDRESS>709212144.log.zip
[java] [delete] Deleting directory V:\Projects\BuildXPages\demo\buildfeature\buildDirectory\features\com.gregorbyte.buildxpages.demo.feature\feature.temp.folder
[java] [unzip] Expanding: V:\Projects\BuildXPages\demo\buildfeature\buildDirectory\features\com.gregorbyte.buildxpages.demo.feature\com.gregorbyte.buildxpages.demo.feature_<IP_ADDRESS>709212144.log.zip into V:\Projects\BuildXPages\demo\buildfeature\buildDirectory\BuildXPagesDemo\compilelogs
[java] BUILD SUCCESSFUL
[java]
[java] BUILD SUCCESSFUL
[java] Total time: 3 seconds
BUILD SUCCESSFUL
Total time: 5 seconds
After the build is finished you should see (among other things) a zip file in the demo/buildfeature/buildDirectory/BuildXPagesDemo directory. This zip file contains the plugins and features that were built!
Conclusion
So this was a short demo of building a plugin using headless eclipse. The next demonstration tutorial shows how we can take these plugins and deploy them somewhere
Deploying Plugins
|
Important
|
This tutorial is designed to be completed after the successful completion of the buildfeature tutorial. |
After building your plugins, now you might want to deploy to either:
-
A Domino Server
-
IBM Notes / Designer Client
Preparing an Update Site
At the end of the headless feature build process, you will have a .zip file of your plugins and features. The contents of your zip file will be something like:
-
eclipse
-
plugins
-
com.your.plugin.jar
-
-
features
-
com.your.feature.jar
-
-
Unfortunately although this format looks a bit like an Update Site, it isn’t quite there yet. We are missing is the site.xml file, which is a list of the features that can be found in the update site. So what we are going to do is to extract the contents of the zip and then generate our site.xml We will then have an update site! We will also create a .zip version of this update site.
The steps necessary for this are contained within the prepareupdatesite target in our tutorial’s build.xml file.
There are 3 tasks in this target
- unzip
-
Unzips the contents of the built plugins zip to a local directory. Note we are also removing the leading 'eclipse' directory as we are not interested in keeping that
- bxp:generatesitexml
-
This is our custom task from the BuildXPages library which will generate the site.xml file that we need to make this an update site
- zip
-
This will create a zip of our update site so that we have this as another option for easy distribution as a single file
<target name="prepareupdatesite" depends="clean">
<!-- Unzip the contents of the .zip -->
<unzip src="${builtPluginsZip}" dest="${updateSiteName}">
<!-- We are not interested in keeping the 'eclipse' directory so we -->
<!-- use a mapper called the 'cutdirsmapper' which will strip off the -->
<!-- specified number of directories. in this case 1 -->
<cutdirsmapper dirs="1" />
<!-- If you built 'source' versions of your plugins, for some reasion -->
<!-- it will also have included this org.eclipse.pde.build.uber.feature -->
<!-- which we don't care about so we exclude it from our unzip task -->
<patternset>
<exclude name="**/org.eclipse.pde.build.uber.feature.source*" />
</patternset>
</unzip>
<!-- Generate the site.xml -->
<bxp:generatesitexml eclipsedir="${updateSiteName}" />
<!-- (Optional) make a zip of this update site -->
<zip destfile="${updateSiteName}.zip" basedir="${updateSiteName}" />
</target>
Lets have a look at the properties that this task depends on. We see we have defined whereabouts to find the built plugins zip, and we define the name of our update site that we are creating.
<!-- The location of our built plugins that we are turning into an update site -->
<property name="builtPluginsZip" location="../buildfeature/buildDirectory/BuildXPagesDemo/com.gregorbyte.buildxpages.demo.feature-1.zip">
</property>
<!-- The name of the updatesite we are creating -->
<property name="updateSiteName" value="com.gregorbyte.buildxpages.demo.updatesite">
</property>
<!-- The location of the site.xml file -->
<property name="updateSite.siteXml" location="${updateSiteName}/site.xml"></property>
Also note our target depends on the clean target, so lets have a look at that target. This target simply deletes the output of any previous run of this task.
<target name="clean">
<delete dir="${updateSiteName}">
</delete>
<delete file="${updateSiteName}.zip">
</delete>
</target>
Lets give this a go by issuing the command
ant prepareupdatesite
You should see some output similar to this:
Buildfile: V:\Projects\BuildXPages\demo\deployplugins\build.xml
clean:
prepareupdatesite:
[unzip] Expanding: V:\Projects\BuildXPages\demo\buildfeature\buildDirectory\BuildXPagesDemo\com.gregorbyte.buildxpages.demo.feature-1.zip into V:\Projects\BuildXPages\demo\deployplugins\com.gregorbyte.buildxpages.demo.updatesite
[bxp:generatesitexml] File saved!
[zip] Building zip: V:\Projects\BuildXPages\demo\deployplugins\com.gregorbyte.buildxpages.demo.updatesite.zip
BUILD SUCCESSFUL
Total time: 0 seconds
And if you look in the tutorial folder, you should see 2 new entries:
-
a new directory com.gregorbyte.buildxpages.demo.updatesite
-
a new zip file com.gregorbyte.buildxpages.demo.updatesite.zip
We now have an Update Site! Even better, we have 2 to choose from, we can use it in archive format (.zip) or as the directory format.
Deploying to Domino Server
The main 2 options you have for Deploying plugins to a server are:
-
Copy the Features and Plugins to the <dominoData>/workspace/applications update site
-
Deploy to an NSF Update Site
My preferred method of deploying plugins to a server is to use an Update Site NSF. The advantage is that this NSF Update site can replicate to other servers, and that means you only have to deploy to your primary server. Another advantage is that you can delete older versions of plugins whilst the server is still running.
Otherwise if you are deploying to the filesystem of every server you may have a tricky time accessing each server remotely, also you cannot delete plugins that are in use when the server is running. It can be an option though if you are deploying to a local testing server.
|
Tip
|
If you are deploying via the filesystem, and your plugin contains a 3rd party jar library within it, you may need to 'unpack' your plugin. Buildxpages provides an 'unpackplugin' task to help you with this. I have not included it in the tutorial but if you have trouble let me know |
Deploying to an NSF Update Site
IBM provides a standard template for the NSF Update Site, however the standard template requires a user to manually import an update site using the IBM Notes Client.
If you want to be able to automatically import plugins you will need to use the Open Eclipse Update Site which is the same template with a minor modification made to allow the plugins to be imported headlessly. The modification provides an agent which can be run to import an update site to the NSF update site.
BuildXPages provides an Ant task which will run this agent for us. The task is called importplugins
Our tutorial has a target which will do this for us, but we just need to tell it the server and database of the update site to import to.
|
Important
|
To perform this part of the tutorial you will need to have set up an Open Eclipse Update Site Make sure you change these properties to the server and database that you have set up. |
<property name="nsfupdatesite.server" value="domino02">
</property>
<property name="nsfupdatesite.database" value="temp/TestUpdateSite.nsf">
</property>
Here is the target that we will run that executes the importplugins task using the properties set above (and the previously mentioned updateSiteName property from earlier in the tutorial).
<target name="importdominoplugins">
<bxp:importplugins
database="${nsfupdatesite.database}"
sitexml="${updateSite.siteXml}"
deletefirst="false"/>
</target>
|
Note
|
We have set the deletefirst attribute as 'false', but you can set this to 'true' if you would like the entire contents of the NSF Update Site deleted before you import. This would mean that after the import, only the features and plugin that import here are contained in the NSF Update Site. |
Lets run the target and see what happens
ant importdominoplugins
You should see some output like this:
Buildfile: V:\Projects\BuildXPages\demo\deployplugins\build.xml
importdominoplugins:
[bxp:importplugins] Server : (Local)
[bxp:importplugins] Database: temp/TestUpdateSite.nsf
[bxp:importplugins] SiteXml : V:\Projects\BuildXPages\demo\deployplugins\com.gregorbyte.buildxpages.demo.updatesite\site.xml
[bxp:importplugins] Running Agent: (API) as CN=Cameron Gregor/O=Gregorbyte
[bxp:importplugins] Can't find resource for bundle feature, key en_AU in V:\Projects\BuildXPages\demo\deployplugins\com.gregorbyte.buildxpages.demo.updatesite\features\com.gregorbyte.buildxpages.demo.feature_<IP_ADDRESS>708202137.jar
[bxp:importplugins] Trying en
[bxp:importplugins] Can't find resource for bundle feature, key en in V:\Projects\BuildXPages\demo\deployplugins\com.gregorbyte.buildxpages.demo.updatesite\features\com.gregorbyte.buildxpages.demo.feature_<IP_ADDRESS>708202137.jar
[25F8:0002-0FCC] 21/08/2017 10:04:26 PM Agent 'API' error: Object variable not set
[25F8:0002-0FCC] 21/08/2017 10:04:26 PM Agent 'API' error: Object variable not set
[25F8:0002-0FCC] 21/08/2017 10:04:26 PM Agent 'API' error: Object variable not set
[25F8:0002-0FCC] 21/08/2017 10:04:26 PM Agent 'API' error: Object variable not set
BUILD SUCCESSFUL
Total time: 2 seconds
Ignore the errors, they always show up but do not prevent the import from happening. I have never been bothered enough to fix that, the end result though is you should see these plugins and features in your NSF Update Site
Assuming that your server is configured to load plugins from this update site, you now just need to restart the http server and the new plugins should load.
We can do this using BuildXPages controlhttp task
<target name="restarthttp">
<bxp:controlhttp server="${nsfupdatesite.server}" action="restart" />
</target>
|
Caution
|
In practice, restarting http in a production system should be done in a deliberate manner at previously communicated times. Use this task appropriately! Personally I only use this task for User Acceptance Testing servers, and rely on a scheduled domino program entry that restarts http in the dead of the night, scheduled after the design task will have refreshed any templates. |
Deploying to Domino Designer
If you are building NSFs headlessly then you may need to be able to automatically install the plugins to Domino Designer. Another reason may be that you want to automate this process for your developer machine, because it can get quite annoying to have to frequently update your own Designer Client with latest versions of the plugins that you are working on.
In any case here are some techinques to deploy plugnis to Designer.
Deploying Manually
Selecting from the Filesystem
Follow your usual steps to import an update site and just choose either the directory or archive version of the update site that we just built!
Continual Refresh from NSF Update Site
If you are already importing these plugins to an NSF update site, you can set your Notes/Designer client up so it can check the NSF for latest Updates.
Just go to File → Application → Install and then choose search for new features to install Make sure your previously used NSF Update Site Location is selected and then click finish. It should discover the new versions of your feature
Deploying to 'dropins' style Designer Plugins Directory
There is a method which was previously communicated by Niklas Heidloff when he was working as a developer evangelist for XPages.
The method basically involves making some edits to a 'platform.xml' file, and also setting up a 'link' file which points to an update site. There is one caveat that the update site must contain the root directory 'eclipse'
BuildXPages provides 2 tasks that help to do all this for you. They are both utilised in the configuredesigner target
- configureDynamicPlugins
-
will edit the platform.xml to allow this dynamic loading of plugins. It will also create a backup copy of platform.xml
- initDesignerSite
-
will set up the link file to point to the update site that we want to load during startup of designer
|
Warning
|
Use this deployment style at your own risk. Everything should be fine but just be aware you may need to do it again if you upgrade notes and a new platform.xml is created, or sometimes if you install other plugins using the IBM Notes User interface, it can reset the platform.xml file. |
<target name="configuredesigner">
<bxp:configureDynamicPlugins/>
<bxp:initDesignerSite updateSiteLabel="${updateSiteLabel}" updateSiteDir="${updateSiteName}"/>
</target>
</project>
|
Caution
|
Don’t actually run this target, I have only included it as an example of what you would do if you wanted to try out the dropins style deployment. It is really only a technique you would use if you are developing XPages Controls and want to frequently update your designer plugins after you make changes to your controls |
Now when we start Designer it should load our plugins! And we didn’t have to go through all that provisioning operations.
|
Tip
|
If you have a plugin that contains a 3rd party jar within it, you may need to 'unpack' the plugin. See BuildXPages 'unpackplugin' task for more info |
Deploying using the Headless Designer Plugin
|
Note
|
This functionality is not yet complete but is next on my list! The intention is to use Eclipse’s Library Update Manager. IBM’s default Headless system provided a similar functionality but I am not sure if it is still supported or documented. I hope to provide the same idea |
Conclusion
Hopefully this tutorial has demonstrated some of the tasks that you can use to get your plugins where you need them to be! Let me know if you have any questions or suggested improvements to this tutorial.


This site will display all your current Artifact game history and statistics from the data you insert.
I previously developed this as a WPF application and now
have an online version!
If you'd like to see the full source code, it's available online on my Github (or click here)
How does it work?
Simple! The javascript down below is used to gather all your game data from your webpage and then redirects you to a page on this site to view it all and the stats.
The script builds the data into a format that can be deconstructed easily and then simply tells your browser to come back to this url and adds all your data on the end.
The data never leaves your browser and has aboslutely no chance of being stolen, used, or sold (unlike some other Artifact Game History sites) 😉
Instructions
Open this link to view your current Artifact game history
Type javascript: into your url and paste the following code after it
Wait until you're redirected to another page (should be "artifacthistory.joshlmao.com/#...") which will display all your game history and statistics!
Finally, thank you for using this! If you appreciate what I do, then please consider following me on Twitter (@JoshLmao),
or on Github
Or please consider supporting me and buying me a coffee (or two!) 😊


| | |
- _random.Random(__builtin__.object)
-
- Random
-
- SystemRandom
- WichmannHill
class Random(_random.Random) |
| |
Random number generator base class used by bound module functions.
Used to instantiate instances of Random to get generators that don't
share state. Especially useful for multi-threaded programs, creating
a different instance of Random for each thread, and using the jumpahead()
method to ensure that the generated sequences seen by each thread don't
overlap.
Class Random can also be subclassed if you want to use a different basic
generator of your own devising: in that case, override the following
methods: random(), seed(), getstate(), setstate() and jumpahead().
Optionally, implement a getrandbits() method so that randrange() can cover
arbitrarily large ranges. |
| |
- Method resolution order:
- Random
- _random.Random
- __builtin__.object
Methods defined here:
- __getstate__(self)
- __init__(self, x=None)
- Initialize an instance.
Optional argument x controls seeding, as for Random.seed().
- __reduce__(self)
- __setstate__(self, state)
- betavariate(self, alpha, beta)
- Beta distribution.
Conditions on the parameters are alpha > 0 and beta > 0.
Returned values range between 0 and 1.
- choice(self, seq)
- Choose a random element from a non-empty sequence.
- expovariate(self, lambd)
- Exponential distribution.
lambd is 1.0 divided by the desired mean. It should be
nonzero. (The parameter would be called "lambda", but that is
a reserved word in Python.) Returned values range from 0 to
positive infinity if lambd is positive, and from negative
infinity to 0 if lambd is negative.
- gammavariate(self, alpha, beta)
- Gamma distribution. Not the gamma function!
Conditions on the parameters are alpha > 0 and beta > 0.
The probability distribution function is:
x ** (alpha - 1) * math.exp(-x / beta)
pdf(x) = --------------------------------------
math.gamma(alpha) * beta ** alpha
- gauss(self, mu, sigma)
- Gaussian distribution.
mu is the mean, and sigma is the standard deviation. This is
slightly faster than the normalvariate() function.
Not thread-safe without a lock around calls.
- getstate(self)
- Return internal state; can be passed to setstate() later.
- jumpahead(self, n)
- Change the internal state to one that is likely far away
from the current state. This method will not be in Py3.x,
so it is better to simply reseed.
- lognormvariate(self, mu, sigma)
- Log normal distribution.
If you take the natural logarithm of this distribution, you'll get a
normal distribution with mean mu and standard deviation sigma.
mu can have any value, and sigma must be greater than zero.
- normalvariate(self, mu, sigma)
- Normal distribution.
mu is the mean, and sigma is the standard deviation.
- paretovariate(self, alpha)
- Pareto distribution. alpha is the shape parameter.
- randint(self, a, b)
- Return random integer in range [a, b], including both end points.
- randrange(self, start, stop=None, step=1, _int=<type 'int'>, _maxwidth=9007199254740992L)
- Choose a random item from range(start, stop[, step]).
This fixes the problem with randint() which includes the
endpoint; in Python this is usually not what you want.
- sample(self, population, k)
- Chooses k unique random elements from a population sequence.
Returns a new list containing elements from the population while
leaving the original population unchanged. The resulting list is
in selection order so that all sub-slices will also be valid random
samples. This allows raffle winners (the sample) to be partitioned
into grand prize and second place winners (the subslices).
Members of the population need not be hashable or unique. If the
population contains repeats, then each occurrence is a possible
selection in the sample.
To choose a sample in a range of integers, use xrange as an argument.
This is especially fast and space efficient for sampling from a
large population: sample(xrange(10000000), 60)
- seed(self, a=None)
- Initialize internal state of the random number generator.
None or no argument seeds from current time or from an operating
system specific randomness source if available.
If a is not None or is an int or long, hash(a) is used instead.
Hash values for some types are nondeterministic when the
PYTHONHASHSEED environment variable is enabled.
- setstate(self, state)
- Restore internal state from object returned by getstate().
- shuffle(self, x, random=None)
- x, random=random.random -> shuffle list x in place; return None.
Optional arg random is a 0-argument function returning a random
float in [0.0, 1.0); by default, the standard random.random.
- triangular(self, low=0.0, high=1.0, mode=None)
- Triangular distribution.
Continuous distribution bounded by given lower and upper limits,
and having a given mode value in-between.
http://en.wikipedia.org/wiki/Triangular_distribution
- uniform(self, a, b)
- Get a random number in the range [a, b) or [a, b] depending on rounding.
- vonmisesvariate(self, mu, kappa)
- Circular data distribution.
mu is the mean angle, expressed in radians between 0 and 2*pi, and
kappa is the concentration parameter, which must be greater than or
equal to zero. If kappa is equal to zero, this distribution reduces
to a uniform random angle over the range 0 to 2*pi.
- weibullvariate(self, alpha, beta)
- Weibull distribution.
alpha is the scale parameter and beta is the shape parameter.
Data descriptors defined here:
- __dict__
- dictionary for instance variables (if defined)
- __weakref__
- list of weak references to the object (if defined)
Data and other attributes defined here:
- VERSION = 3
Methods inherited from _random.Random:
- __getattribute__(...)
- x.__getattribute__('name') <==> x.name
- getrandbits(...)
- getrandbits(k) -> x. Generates a long int with k random bits.
- random(...)
- random() -> x in the interval [0, 1).
Data and other attributes inherited from _random.Random:
- __new__ = <built-in method __new__ of type object>
- T.__new__(S, ...) -> a new object with type S, a subtype of T
|
class SystemRandom(Random) |
| |
Alternate random number generator using sources provided
by the operating system (such as /dev/urandom on Unix or
CryptGenRandom on Windows).
Not available on all systems (see os.urandom() for details). |
| |
- Method resolution order:
- SystemRandom
- Random
- _random.Random
- __builtin__.object
Methods defined here:
- getrandbits(self, k)
- getrandbits(k) -> x. Generates a long int with k random bits.
- getstate = _notimplemented(self, *args, **kwds)
- jumpahead = _stub(self, *args, **kwds)
- random(self)
- Get the next random number in the range [0.0, 1.0).
- seed = _stub(self, *args, **kwds)
- setstate = _notimplemented(self, *args, **kwds)
Methods inherited from Random:
- __getstate__(self)
- __init__(self, x=None)
- Initialize an instance.
Optional argument x controls seeding, as for Random.seed().
- __reduce__(self)
- __setstate__(self, state)
- betavariate(self, alpha, beta)
- Beta distribution.
Conditions on the parameters are alpha > 0 and beta > 0.
Returned values range between 0 and 1.
- choice(self, seq)
- Choose a random element from a non-empty sequence.
- expovariate(self, lambd)
- Exponential distribution.
lambd is 1.0 divided by the desired mean. It should be
nonzero. (The parameter would be called "lambda", but that is
a reserved word in Python.) Returned values range from 0 to
positive infinity if lambd is positive, and from negative
infinity to 0 if lambd is negative.
- gammavariate(self, alpha, beta)
- Gamma distribution. Not the gamma function!
Conditions on the parameters are alpha > 0 and beta > 0.
The probability distribution function is:
x ** (alpha - 1) * math.exp(-x / beta)
pdf(x) = --------------------------------------
math.gamma(alpha) * beta ** alpha
- gauss(self, mu, sigma)
- Gaussian distribution.
mu is the mean, and sigma is the standard deviation. This is
slightly faster than the normalvariate() function.
Not thread-safe without a lock around calls.
- lognormvariate(self, mu, sigma)
- Log normal distribution.
If you take the natural logarithm of this distribution, you'll get a
normal distribution with mean mu and standard deviation sigma.
mu can have any value, and sigma must be greater than zero.
- normalvariate(self, mu, sigma)
- Normal distribution.
mu is the mean, and sigma is the standard deviation.
- paretovariate(self, alpha)
- Pareto distribution. alpha is the shape parameter.
- randint(self, a, b)
- Return random integer in range [a, b], including both end points.
- randrange(self, start, stop=None, step=1, _int=<type 'int'>, _maxwidth=9007199254740992L)
- Choose a random item from range(start, stop[, step]).
This fixes the problem with randint() which includes the
endpoint; in Python this is usually not what you want.
- sample(self, population, k)
- Chooses k unique random elements from a population sequence.
Returns a new list containing elements from the population while
leaving the original population unchanged. The resulting list is
in selection order so that all sub-slices will also be valid random
samples. This allows raffle winners (the sample) to be partitioned
into grand prize and second place winners (the subslices).
Members of the population need not be hashable or unique. If the
population contains repeats, then each occurrence is a possible
selection in the sample.
To choose a sample in a range of integers, use xrange as an argument.
This is especially fast and space efficient for sampling from a
large population: sample(xrange(10000000), 60)
- shuffle(self, x, random=None)
- x, random=random.random -> shuffle list x in place; return None.
Optional arg random is a 0-argument function returning a random
float in [0.0, 1.0); by default, the standard random.random.
- triangular(self, low=0.0, high=1.0, mode=None)
- Triangular distribution.
Continuous distribution bounded by given lower and upper limits,
and having a given mode value in-between.
http://en.wikipedia.org/wiki/Triangular_distribution
- uniform(self, a, b)
- Get a random number in the range [a, b) or [a, b] depending on rounding.
- vonmisesvariate(self, mu, kappa)
- Circular data distribution.
mu is the mean angle, expressed in radians between 0 and 2*pi, and
kappa is the concentration parameter, which must be greater than or
equal to zero. If kappa is equal to zero, this distribution reduces
to a uniform random angle over the range 0 to 2*pi.
- weibullvariate(self, alpha, beta)
- Weibull distribution.
alpha is the scale parameter and beta is the shape parameter.
Data descriptors inherited from Random:
- __dict__
- dictionary for instance variables (if defined)
- __weakref__
- list of weak references to the object (if defined)
Data and other attributes inherited from Random:
- VERSION = 3
Methods inherited from _random.Random:
- __getattribute__(...)
- x.__getattribute__('name') <==> x.name
Data and other attributes inherited from _random.Random:
- __new__ = <built-in method __new__ of type object>
- T.__new__(S, ...) -> a new object with type S, a subtype of T
|
class WichmannHill(Random) |
| | |
- Method resolution order:
- WichmannHill
- Random
- _random.Random
- __builtin__.object
Methods defined here:
- getstate(self)
- Return internal state; can be passed to setstate() later.
- jumpahead(self, n)
- Act as if n calls to random() were made, but quickly.
n is an int, greater than or equal to 0.
Example use: If you have 2 threads and know that each will
consume no more than a million random numbers, create two Random
objects r1 and r2, then do
r2.setstate(r1.getstate())
r2.jumpahead(1000000)
Then r1 and r2 will use guaranteed-disjoint segments of the full
period.
- random(self)
- Get the next random number in the range [0.0, 1.0).
- seed(self, a=None)
- Initialize internal state from hashable object.
None or no argument seeds from current time or from an operating
system specific randomness source if available.
If a is not None or an int or long, hash(a) is used instead.
If a is an int or long, a is used directly. Distinct values between
0 and<PHONE_NUMBER>6575L inclusive are guaranteed to yield distinct
internal states (this guarantee is specific to the default
Wichmann-Hill generator).
- setstate(self, state)
- Restore internal state from object returned by getstate().
- whseed(self, a=None)
- Seed from hashable object's hash code.
None or no argument seeds from current time. It is not guaranteed
that objects with distinct hash codes lead to distinct internal
states.
This is obsolete, provided for compatibility with the seed routine
used prior to Python 2.1. Use the .seed() method instead.
Data and other attributes defined here:
- VERSION = 1
Methods inherited from Random:
- __getstate__(self)
- __init__(self, x=None)
- Initialize an instance.
Optional argument x controls seeding, as for Random.seed().
- __reduce__(self)
- __setstate__(self, state)
- betavariate(self, alpha, beta)
- Beta distribution.
Conditions on the parameters are alpha > 0 and beta > 0.
Returned values range between 0 and 1.
- choice(self, seq)
- Choose a random element from a non-empty sequence.
- expovariate(self, lambd)
- Exponential distribution.
lambd is 1.0 divided by the desired mean. It should be
nonzero. (The parameter would be called "lambda", but that is
a reserved word in Python.) Returned values range from 0 to
positive infinity if lambd is positive, and from negative
infinity to 0 if lambd is negative.
- gammavariate(self, alpha, beta)
- Gamma distribution. Not the gamma function!
Conditions on the parameters are alpha > 0 and beta > 0.
The probability distribution function is:
x ** (alpha - 1) * math.exp(-x / beta)
pdf(x) = --------------------------------------
math.gamma(alpha) * beta ** alpha
- gauss(self, mu, sigma)
- Gaussian distribution.
mu is the mean, and sigma is the standard deviation. This is
slightly faster than the normalvariate() function.
Not thread-safe without a lock around calls.
- lognormvariate(self, mu, sigma)
- Log normal distribution.
If you take the natural logarithm of this distribution, you'll get a
normal distribution with mean mu and standard deviation sigma.
mu can have any value, and sigma must be greater than zero.
- normalvariate(self, mu, sigma)
- Normal distribution.
mu is the mean, and sigma is the standard deviation.
- paretovariate(self, alpha)
- Pareto distribution. alpha is the shape parameter.
- randint(self, a, b)
- Return random integer in range [a, b], including both end points.
- randrange(self, start, stop=None, step=1, _int=<type 'int'>, _maxwidth=9007199254740992L)
- Choose a random item from range(start, stop[, step]).
This fixes the problem with randint() which includes the
endpoint; in Python this is usually not what you want.
- sample(self, population, k)
- Chooses k unique random elements from a population sequence.
Returns a new list containing elements from the population while
leaving the original population unchanged. The resulting list is
in selection order so that all sub-slices will also be valid random
samples. This allows raffle winners (the sample) to be partitioned
into grand prize and second place winners (the subslices).
Members of the population need not be hashable or unique. If the
population contains repeats, then each occurrence is a possible
selection in the sample.
To choose a sample in a range of integers, use xrange as an argument.
This is especially fast and space efficient for sampling from a
large population: sample(xrange(10000000), 60)
- shuffle(self, x, random=None)
- x, random=random.random -> shuffle list x in place; return None.
Optional arg random is a 0-argument function returning a random
float in [0.0, 1.0); by default, the standard random.random.
- triangular(self, low=0.0, high=1.0, mode=None)
- Triangular distribution.
Continuous distribution bounded by given lower and upper limits,
and having a given mode value in-between.
http://en.wikipedia.org/wiki/Triangular_distribution
- uniform(self, a, b)
- Get a random number in the range [a, b) or [a, b] depending on rounding.
- vonmisesvariate(self, mu, kappa)
- Circular data distribution.
mu is the mean angle, expressed in radians between 0 and 2*pi, and
kappa is the concentration parameter, which must be greater than or
equal to zero. If kappa is equal to zero, this distribution reduces
to a uniform random angle over the range 0 to 2*pi.
- weibullvariate(self, alpha, beta)
- Weibull distribution.
alpha is the scale parameter and beta is the shape parameter.
Data descriptors inherited from Random:
- __dict__
- dictionary for instance variables (if defined)
- __weakref__
- list of weak references to the object (if defined)
Methods inherited from _random.Random:
- __getattribute__(...)
- x.__getattribute__('name') <==> x.name
- getrandbits(...)
- getrandbits(k) -> x. Generates a long int with k random bits.
Data and other attributes inherited from _random.Random:
- __new__ = <built-in method __new__ of type object>
- T.__new__(S, ...) -> a new object with type S, a subtype of T
| |


Notebooks
Story: Mixing arrow poisons
Mixing arrow poisons
Title
Mixing arrow poisons
Collection
Summary
How to combine |ßkururu poison with that of the puffadder's glands and Boom Gift to smear on arrow-heads to shoot game with.
Comments
1) p.3518v: the mixed poison appears to have been smeared on the tip of the arrow, 2) See also The |ßkururu (|xabbe, or 'Kritje'), 3) This story is found in Book IV-2
Contributors
Date
15 – 17 November 1873
Categories
Keywords
insect (which is poisonous) , insect (and mixing arrow poison) , insect (the names of) , insect (its proper name is Grillus Capensis) , insect (called |ßkururu, Kritje, or |xabbe) , poisons (mixing arrow poisons) , poisons (from puffadder and |ßkururu insect, mixed) , poisons (called Boom Gift) , poisons (the mixing and combination of) , poisons (the making of) , poisons (used for shooting game) , weapons (poisoned arrows) , weapons (and shooting game) , weapons (and poison) , snake (the puffadder) , snake (and mixing arrow poisons) , puffadder (its glands used for making arrow poison) , puffadder (and |ßkururu insect) , hunting (and mixing arrow poisons used for shooting game) , arrow (poison smeared on its head) , arrow (poisoned used for shooting game) , arrow (the mixing of poison for) , name (of an insect used in the mixing of arrow poison) , name (|ßkururu, Kritje, or |xabbe, Grillus Capensis) , name (a poison called Boom Gift)
Story Pages
3519


Find a concept, an idea, or a thought online about a best practice related to web development or software engineering that
can be summarized into a statement.
For this project, you're assigned to create HTML template that will stimulate a reply to a research fellow.
Choose someone you look up to and build a tribute page using the user stories in the following slides.
Here you will witness how I will build my empire from scratch. I will reach the top and help others with all my knowledge.


Welcome to the future :) Here's a link to another page: bananers Here's a link to why on github: filp/why


Hey! I'm Chris, and I'm a computer science major going into my junior year at Boston University.
In school, I've been very fortunate to have had the opportunity to serve as a Course Assistant for CS 111 and as a Teaching Fellow for CS 103. The past year especially has led to the fostering of a great love of learning and teaching, and helping others is a great way for me to reinforce the concepts for both me and the students I teach.
I've been programming since I started middle school! In my free time, I enjoy writing, drawing, and playing video games.
Projects
BU Shuttle
A mobile app for iOS and Android that retrieves arrival and departure information for the BU Shuttle while putting a focus on simplicity and accessibility. Built with Javascript and Google's Flutter cross-platform mobile framework. [in development, placeholder name]
A single-level platformer featuring a bunny trying to save his classmate's final project. Built with GameMaker Studio 1.4. [in development, placeholder name]
Personal Website
A website designed to serve as a portfolio of my work and also as a place to talk about who I am and what I do. You're looking at it right now! You can find the old versions of my website archived here. Built with HTML / CSS / JS using Brackets. [last updated June 17, 2018]


Pruning design ideas
In 2016 the pruning concept has been designed to do one thing and one thing only. It is about removing historic blocks from a node based on a maximum disk-usage set in the configuration.
Effect of this is that this node can no longer serve any history because serving history is set as a boolean on or off using a service bit.
Random pruning mode
There is a large gap between the two current modes of everything (currently 75GB) and only what we need (2GB or so).
This mode would have two areas, it would keep a days worth of blocks to make sure that any reorgs etc would not cause a re-download, but it would have additionally have an area that can be used to store historical data to be shared on the network. Maybe 20 or 50GB.
One main feature of Bitcoin is that we have massive replication. Each node currently holds all the same data that every other node holds. But this doesn't have to be the case with pruned nodes. A node itself has no need for historic data at all.
The suggestion is that a node stores a random set of blocks. Dropping random blocks as the node runs out of disk-space. Additionally, we would introduce a new way to download blocks from other nodes which allows the node to say it doesn't actually have the block requested.
The effect of this setup is that many different nodes together end up having the total amount of blocks, even though each node only has a fraction of the total amount.
Transaction-signature pruning
There have been talks before about changing the transaction format itself and specifically the way that signatures are stored. A signature is only needed at the time that a transaction is validated.
Network nodes that have been turned of for a longer time can choose to only download the blocks-headers and transactions so they can fully check them and update any wallets. This means that they can skip downloading of the transaction-signatures.
Any node that chooses not to check signatures on transactions while still checking the block for proof of work and general correctness would depend on the amount of proof-of-work that has gone into creating the whole chain to be safe in the assumption that many others have checked those transactions for validity. Naturally, any transactions in blocks less than, say, a week old still should be checked. This is purely about historic transactions.


Original
Reset
Do not fill in the buy price if this is your first week buying turnips on your island
Day
AM price
PM price
Sunday
(buy price)
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Pattern
Base
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
week range
AM
PM
AM
PM
AM
PM
AM
PM
AM
PM
AM
PM


Forge Networking Command Console
Home
|
Commands
Welcome to the Forge Networking command console. Type "help" to see a list of commands.


| sp_tidiers {broom} | R Documentation |
Tidy summarizes information about the components of a model. A model component might be a single term in a regression, a single hypothesis, a cluster, or a class. Exactly what tidy considers to be a model component varies across models but is usually self-evident. If a model has several distinct types of components, you will need to specify which components to return.
Note that the sf
package now defines tidy spatial objects
and is the recommended approach to spatial data. sp
tidiers are likely
to be deprecated in the near future in favor of sf::st_as_sf()
.
Development of sp
tidiers has halted in broom
.
## S3 method for class 'SpatialPolygonsDataFrame' tidy(x, region = NULL, ...) ## S3 method for class 'SpatialPolygons' tidy(x, ...) ## S3 method for class 'Polygons' tidy(x, ...) ## S3 method for class 'Polygon' tidy(x, ...) ## S3 method for class 'SpatialLinesDataFrame' tidy(x, ...) ## S3 method for class 'Lines' tidy(x, ...) ## S3 method for class 'Line' tidy(x, ...)
x |
A |
region |
name of variable used to split up regions |
... |
not used by this method |


My five: Rohan Kumar
Rohan Kumar
CEO & Co-Founder, Toffee Insurance
Headspace app, a keto diet & the outdoors
1 Starting the day on the right note is very important. I meditate when I wake up and have a 6.30 am schedule daily for 10-15 minutes with a useful app (Headspace) to reboot and get started.
2 I religiously train 5-6 days a week and mostly focus on weight and resistance training. If done right or under proper guidance, it can benefit your heart, improve your balance, strengthen your bones, and help you lose weight — all while making you look and feel better.
3 I prefer being outdoors during my free time, so, if the weather permits, I take time out to cycle or swim.
4 On the nutrition front, everything in balance works wonders unless you are specifically training for something. I am famously fanatic about my food habits. I mostly follow a keto diet, which is high in protein and low in carbs. I avoid sugar so my diet usually consists of a lot of eggs, chicken, cottage cheese, grilled vegetables and peanut butter. I typically have 3-4 meals in a day and maybe 1-2 snacks which would be a protein shake or an apple/nuts.
5 I love spending time with my two daughters and regularly plan outdoor activities with them to emphasise the importance of an active, healthy lifestyle.


The Ten Commandments for C Programmers
Henry Spencer
-
Thou shalt run lint frequently and study its pronouncements with
care, for verily its perception and judgement oft exceed thine.
-
Thou shalt not follow the NULL pointer, for chaos and madness await thee at
its end.
-
Thou shalt cast all function arguments to the expected type if they are not
of that type already, even when thou art convinced that this is unnecessary,
lest they take cruel vengeance upon thee when thou least expect it.
-
If thy header files fail to declare the return types of thy library functions,
thou shalt declare them thyself with the most meticulous care,
lest grievous harm befall thy program.
-
Thou shalt check the array bounds of all strings (indeed, all arrays),
for surely where thou typest ``foo'' someone someday shall type
``supercalifragilisticexpialidocious''.
-
If a function be advertised to return an error code in the event of
difficulties, thou shalt check for that code, yea, even though the checks
triple the size of thy code and produce aches in thy typing fingers,
for if thou thinkest ``it cannot happen to me'',
the gods shall surely punish thee for thy arrogance.
-
Thou shalt study thy libraries and strive not to re-invent them without cause,
that thy code may be short and readable and thy days pleasant and productive.
-
Thou shalt make thy program's purpose and structure
clear to thy fellow man by using the
One True Brace Style,
even if thou likest it not,
for thy creativity is better used in solving problems than in creating
beautiful new impediments to understanding.
-
Thy external identifiers shall be unique in the first six characters,
though this harsh discipline be irksome and the years of its necessity
stretch before thee seemingly without end,
lest thou tear thy hair out and go mad on that fateful day when
thou desirest to make thy program run on an old system.
-
Thou shalt foreswear, renounce, and abjure the vile heresy which claimeth
that ``All the world's a VAX'', and have no commerce with the
benighted heathens who cling to this barbarous belief,
that the days of thy program may be long even though the days of thy
current machine be short.
Converted from troff to HTML and archived by Chris Lott.
Collection index


WITNESS LIST State, Federal & International Relations Committee February 23, 1999-8:00A Texas Commission on the Arts For: Ware, Connie (Texas Commission on the Arts) On: Batiste, John Paul (Texas Commission on the Arts) On: McElwain, Gaye (Texas Commission on the Arts) Registering, but not testifying: Snell, Freddie (Texas Commission on the Arts) Texas Historical Commission For: Caldwell, Shirley (Texas Historical Commission) Nau, III, John (Texas Historical Commission) Oaks, Larry (Texas Historical Commission) Texas State Cemetery For: Allday, Martin (Texas State Cemetery Committee) Susman, Jim (Texas State Cemetery Committee) On: Bradley, Harry (Texas State Cemetery Committee)


Choose how this plugin will verify the identity of ephemeral agents before running jobs on them. Note that this plugin relies on several secure verification instruments instead of using SSH host identity verification.
-
Default Verification Strategy: Тhis strategy relies on three verification instruments: VPN, user authentication, and SSH.
All traffic between Jenkins and the Orka environment is secured and encrypted through the dedicated password-protected VPN.
The plugin authenticates and performs operations against the cluster with a dedicated Orka user.
The plugin connects to the VM via SSH and authenticates with VM-specific credentials.
The traffic between Jenkins and the VM is further encrypted via SSH.
The Default Verification Strategy does not require additional setup.
-
AES Verification Strategy: This strategy adds a fourth verification instrument to the default strategy.
Before running any jobs on a VM, Jenkins further verifies its identity through the exchange and symmetric encryption/decryption of a randomly generated string.
Note: This strategy does not provide additional encryption for the traffic between Jenkins and the VM.
To enable AES Verification Strategy and complete its setup, contact MacStadium support.


Home
About
Collections
Category
2020 Collection
You should always
feel pretty
Clothes that are sure to heat up your winter.
FACEBOOK
INSTAGRAM
TWITTER
FACEBOOK
INSTAGRAM
TWITTER


This API has been deprecated.
Partners and customers using a deprecated API should contact SAP Concur and discuss moving to the latest versions.
Learn more in the API Lifecycle & Deprecation Policy.
The attendees in the Concur company. This resource can be used to retrieve attendee information for any attendee in the Concur company, regardless of whether they are Private or Shared. In future releases, this resource will be enhanced to provide full attendee management functionality.
This API allows developers to manage attendees in Concur. The Attendee resource can be used to retrieve attendee information for private or shared attendees. In future releases, the Attendee resource will be updated with additional functionality for managing all attendees in Concur.
The Attendee resource manages attendees in batches, and can be used to add, update or inactivate attendees. This resource provides functionality similar to the Attendee List Import in Concur. Attendees added using this resource are added to the Shared Attendee List (owned by the system and available to all users).
Concur products are highly configurable, and not all clients will have access to all features.
Partner developers must determine which configurations are required for their solution prior to the review process.
Existing clients can work with Concur Advantage Technical Services to create custom applications that work with their configuration.
https://www.concursolutions.com/api/expense/v2.0/attendees
Retrieves the attendees matching the specified search criteria. Developers can specify one or more External IDs or the Attendee ID to search the Expense database.
| Parameter | Required/Optional | Description |
|---|---|---|
| attendeeID | optional | Path: The unique identifier for the attendee in Concur. This information is returned in the AttendeeID element of the response of the Get Report Details function. |
| externalid | optional | Query: The unique identifier for the attendee outside of Concur. This information is returned in the ExternalID element of the response of the Get Report Details function. Up to 10 external IDs can be supplied in a comma separated list. |
Examples:
https://www.concursolutions.com/api/expense/v2.0/attendees/{attendeeID}
https://www.concursolutions.com/apiexpense/v2.0/attendees?externalid={externalID}
https://www.concursolutions.com/apiexpense/v2.0/attendees?externalid={externalID1},{externalID2},{externalID3}
application/xml
or application/json
This request will return an Attendees parent element containing an Attendee child element for each attendee.
| Element | Description |
|---|---|
| AttendeeType | The type of attendee. Maximum 40 characters. |
| FirstName | The attendee’s first name. Maximum 50 characters. |
| LastName | The attendee’s last name. Maximum 132 characters. |
| Company | The attendee’s company name. Maximum 150 characters. |
| Title | The attendee’s title. Maximum 32 characters. |
| ExternalID | The unique identifier for the attendee, managed outside Concur. Maximum 48 characters. |
| Custom1 through Custom20 | The details from the Custom fields. These may not have data, depending on configuration. For information about the child elements of this parent element, see the Custom child elements table below. |
| HasExceptionsPrevYear | Whether the attendee has exceptions in the previous year, based on yearly total limits for attendees. Maximum 1 character. Format: Y/N |
| HasExceptionsYTD | Whether the attendee has exceptions in the current year, based on yearly total limits for attendees. Maximum 1 character. Format: Y/N |
| IsDeleted | Whether the attendee is marked as deleted. Maximum 1 character. Format: Y/N |
| OwnerEmpName | The name of the employee that owns the attendee record. |
| TotalAmountPrevYear | The total amount spent on the attendee in the previous calendar year. |
| TotalAmountYTD | The total amount spent on the attendee in the current calendar year. |
| VersionNumber | The attendee’s version number. |
| AttendeeID | Attendee unique identifier within Concur. |
| AttendeeTypeCode | The unique identifier for the attendee type. |
| AttendeeOwnerID | The unique identifier for the person or system that owns the attendee. |
| CurrencyCode | The 3-letter ISO 4217 currency code for attendee related amounts. |
| Element | Description |
|---|---|
| Type | The custom field type. Will be one of the following: Amount, Boolean, ConnectedList, Date, Integer, List, Number, Text. |
| Value | The value in the custom field. Maximum 100 characters. |
| Code | Custom list fields will include the list item code in this element. |
GET https://www.concursolutions.com/api/expense/v2.0/attendees/nFaAj0ncBsvkgnPMY5QWfBbbWyv$sQh2oW
Authorization: OAuth {token}
GET https://www.concursolutions.com/api/expense/v2.0/attendees?externalid=234567
Authorization: OAuth {token}
HTTP/1.1 200 OK
Content-Type: application/xml
<Attendees xmlns="http://www.concursolutions.com/api/expense/expensereport/2012/07" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Attendee>
<AttendeeType>BUSGUEST</AttendeeType>
<FirstName>Chris</FirstName>
<LastName>Miller</LastName>
<Company />
<Title />
<ExternalID>234567</ExternalID>
<Custom1 />
<Custom2 />
<Custom3 />
<Custom4 />
<Custom5 />
<Custom6 />
<Custom7 />
<Custom8 />
<Custom9 />
<Custom10 />
<Custom11 />
<Custom12 />
<Custom13 />
<Custom14 />
<Custom15 />
<Custom16 />
<Custom17 />
<Custom18 />
<Custom19 />
<Custom20 />
<HasExceptionsPrevYear>N</HasExceptionsPrevYear>
<HasExceptionsYTD>N</HasExceptionsYTD>
<IsDeleted>N</IsDeleted>
<OwnerEmpName>Davis, Pat</OwnerEmpName>
<TotalAmountPrevYear>0.00000000</TotalAmountPrevYear>
<TotalAmountYTD>0.00000000</TotalAmountYTD>
<VersionNumber>1</VersionNumber>
<AttendeeID>nFaAj0ncBsvkgnPMY5QWfBbbWyv$sQh2oW</AttendeeID>
<AttendeeTypeCode>BUSGUEST</AttendeeTypeCode>
<AttendeeOwnerID>pd123456</AttendeeOwnerID>
<CurrencyCode>USD</CurrencyCode>
</Attendee>
</Attendees>
Refer to the HTTP Codes page for details of the common responses and errors.
The web service will not return a 4xx HTTP response code for a batch operation even when every item in the batch failed to be created or updated. The client must inspect the response to look for warnings or errors with individual batch items.
When there are errors with batch items, the first ten errors are returned in the <errors>
element in the request response, which includes their error code, the item that caused the error, and the error message. Any additional error messages are truncated. This prevents a large volume of error data in the event of a formatting mistake.
XML Response Error Codes
| Error Code | Message |
|---|---|
| 1101 | Could not find attendee-batch element. |
| 1102 | Error parsing attendee record X |
| 1201 | Missing external id for attendee record X |
| 1202 | Missing attendee type |
| 1203 | Missing currency code |
| 1204 | External id too long |
| 1205 | Attendee type too long |
| 1206 | Invalid inactive value. |
| 1207 | Attendee of type NOSHOWS ignored. |
| 1208 | Invalid currency code |
| 1209 | Missing required field X |
| 1210 | Invalid time stamp for field X |
| 1211 | Invalid money or money value for field X |
| 1212 | Invalid money or numeric value for field X |
| 1213 | Invalid integer for field X |
| 1214 | Invalid boolean value for field X |
| 1215 | Invalid char value for field X |
| 1216 | Invalid varchar value for field X |
| 1217 | Value too long for field X |
| 1218 | Invalid attendee type |
| 1219 | More than one value was specified for the X field in record X |
| 1221 | Invalid code for field X |
| 1222 | Missing code for field X |
| 1301 | Unexpected error creating attendee |
| 1302 | Unexpected error updating attendee |
| 1303 | Unexpected error getting attendee type list |
| 1304 | Unexpected error processing batch request. |
| 1305 | Cannot update the attendee data for a non existing attendee. |


Vi fixar ljudet
på festen
I want to talk about to things that are quite important to me. There are love and one my personal inadequacies. The thing is that I’m quite fond of love, I think that.
I want to talk about to things that are quite important to me. There are love and one my personal inadequacies. The thing is that I’m quite fond of love, I think that.


--- layout: page permalink: "/community-commissioned/intergenerational-arts-group-2018/intergenerational-arts-group-003.html" ---
previous | next


Immunohistochemical analysis of oral squamous cell carcinoma specimens and adjacent normal tissues for CCR8 and P2RY14 protein. (A) CCR8 was highly expressed in tumor specimens of HNSCC patients compared to normal tissues. P2RY14 was highly expressed in normal tissues compared to tumor specimens. (B) The quantification of IHC results (FDR adjusted P-value < 0.05).


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.newdawn.slick.opengl.TextureImpl
public class TextureImpl
A texture to be bound within JOGL. This object is responsible for keeping track of a given OpenGL texture and for calculating the texturing mapping coordinates of the full image. Since textures need to be powers of 2 the actual texture may be considerably bigged that the source image and hence the texture mapping coordinates need to be adjusted to matchup drawing the sprite against the texture.
| Field Summary | |
|---|---|
protected static SGL |
GL
The renderer to use for all GL operations |
| Constructor Summary | |
|---|---|
protected |
TextureImpl()
For subclasses to utilise |
|
TextureImpl(java.lang.String ref,
int target,
int textureID)
Create a new texture |
| Method Summary | |
|---|---|
void |
bind()
Bind the GL context to a texture |
static void |
bindNone()
Clear the binding of the texture |
protected java.nio.IntBuffer |
createIntBuffer(int size)
Creates an integer buffer to hold specified ints - strictly a utility method |
float |
getHeight()
Get the height of the physical texture |
int |
getImageHeight()
Get the height of the original image |
int |
getImageWidth()
Get the width of the original image |
static Texture |
getLastBind()
Retrieve the last texture bound through the texture interface |
byte[] |
getTextureData()
Get the pixel data from the card for this texture |
int |
getTextureHeight()
Get the height of the actual texture |
int |
getTextureID()
Get the OpenGL texture ID for this texture |
java.lang.String |
getTextureRef()
Get the reference from which this texture was loaded |
int |
getTextureWidth()
Get the width of the actual texture |
float |
getWidth()
Get the width of the physical texture |
boolean |
hasAlpha()
Check if the texture has alpha |
void |
release()
Destroy the texture reference |
void |
reload()
Reload this texture |
void |
setAlpha(boolean alpha)
If this texture has alpha |
void |
setCacheName(java.lang.String cacheName)
Set the name this texture is stored against in the cache |
void |
setHeight(int height)
Set the height of the image |
void |
setTextureData(int srcPixelFormat,
int componentCount,
int minFilter,
int magFilter,
java.nio.ByteBuffer textureBuffer)
Set the texture data that this texture can be reloaded from |
void |
setTextureFilter(int textureFilter)
Apply a given texture filter to the texture |
void |
setTextureHeight(int texHeight)
Set the height of this texture |
void |
setTextureID(int textureID)
Set the OpenGL texture ID for this texture |
void |
setTextureWidth(int texWidth)
Set the width of this texture |
void |
setWidth(int width)
Set the width of the image |
static void |
unbind()
Clear slick caching of the last bound texture so that an external texture binder can play with the context before returning control to slick. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected static SGL GL
| Constructor Detail |
|---|
protected TextureImpl()
public TextureImpl(java.lang.String ref, int target, int textureID)
ref
- The reference this texture was loaded fromtarget
- The GL targettextureID
- The GL texture ID| Method Detail |
|---|
public static Texture getLastBind()
public void setCacheName(java.lang.String cacheName)
cacheName
- The name the texture is stored against in the cachepublic boolean hasAlpha()
Texture
hasAlpha
in interface Texture
Texture.hasAlpha()
public java.lang.String getTextureRef()
Texture
getTextureRef
in interface Texture
Texture.getTextureRef()
public void setAlpha(boolean alpha)
alpha
- True, If this texture has alphapublic static void bindNone()
public static void unbind()
public void bind()
Texture
bind
in interface Texture
Texture.bind()
public void setHeight(int height)
height
- The height of the imagepublic void setWidth(int width)
width
- The width of the imagepublic int getImageHeight()
Texture
getImageHeight
in interface Texture
Texture.getImageHeight()
public int getImageWidth()
Texture
getImageWidth
in interface Texture
Texture.getImageWidth()
public float getHeight()
Texture
getHeight
in interface Texture
Texture.getHeight()
public float getWidth()
Texture
getWidth
in interface Texture
Texture.getWidth()
public int getTextureHeight()
Texture
getTextureHeight
in interface Texture
Texture.getTextureHeight()
public int getTextureWidth()
Texture
getTextureWidth
in interface Texture
Texture.getTextureWidth()
public void setTextureHeight(int texHeight)
texHeight
- The height of the texturepublic void setTextureWidth(int texWidth)
texWidth
- The width of the texturepublic void release()
Texture
release
in interface Texture
Texture.release()
public int getTextureID()
Texture
getTextureID
in interface Texture
Texture.getTextureID()
public void setTextureID(int textureID)
textureID
- The OpenGL texture IDprotected java.nio.IntBuffer createIntBuffer(int size)
size
- how many int to contain
public byte[] getTextureData()
Texture
getTextureData
in interface Texture
Texture.getTextureData()
public void setTextureFilter(int textureFilter)
Texture
setTextureFilter
in interface Texture
textureFilter
- The texture filter to apply (GL_LINEAR, GL_NEAREST, etc..)Texture.setTextureFilter(int)
public void setTextureData(int srcPixelFormat, int componentCount, int minFilter, int magFilter, java.nio.ByteBuffer textureBuffer)
srcPixelFormat
- The pixel formatcomponentCount
- The component countminFilter
- The OpenGL minification filtermagFilter
- The OpenGL magnification filtertextureBuffer
- The texture buffer containing the data for the texturepublic void reload()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


You've signed out of your account
To use the service again you’ll need to sign in.
What did you think of this service? (takes 2 minutes)
Planning for retirement
Your State Pension is a good start, but you should also think about how much you'll need to live on when you're saving for your future.


Before Change
def load_keras_model(file_name):
from keras.models import load_model
with open(file_name, "rb") as read_file:
base_pipeline = dill.load(read_file)
for step in base_pipeline.named_steps:
pipeline_step = base_pipeline.named_steps[step]
try:
if pipeline_step.model_name[:12] == "DeepLearning":
// This is where we saved the random_name for this model
random_name = pipeline_step.model
// Load the Keras model here
keras_file_name = file_name[:-5] + random_name + "_keras_deep_learning_model.h5"
model = load_model(keras_file_name)
// model = model_name_map[random_name]
// Put the model back in place so that we can still use it to get predictions without having to load it back in from disk
pipeline_step.model = model
except AttributeError as e:
pass
// keras_file_name = file_name[:-5] + "_keras_deep_learning_model.h5"
// keras_model = load_model(keras_file_name)
// base_pipeline.named_steps["final_model"].model = keras_model
return base_pipeline
def make_deep_learning_model(hidden_layers=None, num_cols=None, optimizer="adam", dropout_rate=0.2, weight_constraint=0, feature_learning=False):
After Change
return base_pipeline
def load_keras_model(file_name):
return load_ml_model(file_name)
def make_deep_learning_model(hidden_layers=None, num_cols=None, optimizer="adam", dropout_rate=0.2, weight_constraint=0, feature_learning=False):


Day 7
For Church leaders
7
Jesus, Head of the Church, and Keeper of Your flock, beautiful and glorious is Your Bride.  We are clothed in robes of white—righteousness not of this world, but of Your divine righteousness. For all eternity we will offer praise and thanksgiving for whom You have made us.Father, strengthen with courage those whom You have ordained to lead and guide Your Churches. Grant them wisdom and discernment. Grant them clarity in the Scriptures and the message of the Cross. Grant them boldness to speak as they ought the message of truth. Grant them favor with their congregations and in their communities. Prune them to bear more fruit. Grant them a repentant and contrite heart that they may walk and serve humbly before You and man. May any self-serving character that is buried within be uprooted and thrown into the fire. Turn our church leaders from the love of earthly gain to seek only the approval and glory of their Savior.
Daily fill Your spiritual leaders afresh with the Holy Spirit in power to be witnesses of Jesus. Make them to be leaders who represent the Savior and never themselves. Give them a deep conviction—a heart changing conviction, to be God-pleasers and not man-pleasers. Protect these leaders from the plots and schemes of the evil one. Constantly remind them of their high calling. And Father, lead them to the place of prayer where they grow in communion with You. Amen. (Ephesians 5:12; Hebrews 10:10; 13:17-18; 2 Thessalonians 3:1-5; Galatians 1:10)


DREAM LOVER (1994) A Film Review by Ted Prigge Copyright 1997 Ted Prigge
Writer/Director: Nicholas Kazan Starring: James Spader, Madchen Amick, Fredric Lehne, Larry Miller, Bess Armstrong, Kathleen York, Michael Milhoan, Clyde Kusatu, Erik Avari
"Dream Lover" is that kind of bizarre, non-conformist erotic thriller. The trailers hint at just a film filled with sex, and a bit of Hitchcock tossed in for good measure.
"Dream Lover" deals with Ray (James Spader), who has just divorced his wife (Kathleen York), and has re-entered the wonderful world of dating. After going to his rich friend's (Larry Miller) party, he spills wine on an attractive woman (Madchen Amick, who was on "Twin Peaks"), who freaks out and humiliates him. A week later, they run into eachother at the supermarket, laugh over the accident, and soon go out to dinner together. The next day, Ray can't find her, but eventually tracks her, and they begin having some wild sex. After what has to be a huge elipsis, they're married, and soon have a kid. Everything's great for Ray.
But gradually, things begin unraveling. Ray finds out that her real name, and that she has parents who he has never even heard of. She seems to have this whole other past which she claims to have left behind when she moved to the city, but curiosity gets to Ray.  Soon he's obsessed with finding where she is on Wednesday afternoons when she disappears, and mysteriously has a matchbook from a hotel in her purse.
The ending, I think, is cool, but does wrap things up way too nicely. But it's a great time watching Ray's sanity unravel, and the writing and directing lets things unravel nicely and gradually. The plot twists are plotted nicely, allowing the film to move smoothly. And the writing lets us guess a lot over the mysterious Madchen Amick character. And while this may be found in the "suspense" section, there is no violence, action sequences, or big scenes of stabbing/shooting/whatever else; just good character assasination.
Also, the whole sex bit does not overcome the storyline, like it did for "Basic Instinct." I personally saw the "rated" version, but there's apparently an unrated "sexier" version, but I'm sure it's not TOO overbearing. Although even in the "rated" version, you get to see the lovely Madchen Amick in all her glory and splendor.
There's a bit of surrealism with the direction too. The film is intercut with fantasies Ray has at being at a bizarre carnival where the cheif clown mocks Ray and his luck with women.  It's an interesting little thing to do, especially for a film promoted as an "erotic thriller."
The acting is also very good. James Spader, who's actually a cool actor (even if he sometimes mumbles), plays Ray wonderfully, making him interesting and likable. Madchen Amick as the mysterious wife/dream lover gives us a totally interesting character, making her sexy, seductive, and even likable in that sick kind of way. It's cool to see a femme fatale in an erotic thriller who can actually act. And Larry Miller is, as usual, pretty funny, although him playing a playboy is more questionable casting than interesting.
"Dream Lover" was a shock for me in how intelligent it was. Sure, there was some big taudry sex, and we had to see James Spader's butt and all, but the plotting is wonderful, and the film becomes a good old Hitchcockian mind twister, in the good sense.
MY RATING (out of 4): ***
Homepage at: http://www.geocities.com/Hollywood/Hills/8335/
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Save Form: Allow save form with empty fields like "Name".
Submit Form: Need to pass all the rules.
Rules: Name is required with length less than 20. Bonus cannot over 50%. Total cannot over 3000.


Emily Jones
I am a passinate
graphic designer
from a new york
Home
about
resume
service
portfolio
contact us


Now Now Now
Now Now Now™ is a management company, helping run operations for others.
Wood Egg was our first project. MuckWork and SongTest are next.
Now Now Now™ is a management company, helping run operations for others.
Wood Egg was our first project. MuckWork and SongTest are next.


Scenario:
Your company's Scope 1 carbon footprint is 2,300,000 tCO2e, making it liable under the Tasland Emissions Trading Scheme. You must purchase one (1) allowance or offset for every tCO2e of your company's liability, otherwise the government will fine you a penalty price ($50) for every tCO2e of your shortfall. You also have the option of implementing emissions abatement projects in order to lower your carbon footprint and therefore your compliance liability.
Goal:
- Achieve the lowest possible Average Cost of Compliance ($/tCO2e); and
- Achieve a Penalty Cost of $0.
Instructions:
- Drag the options into ascending order (i.e. lowest to highest) based on their cost per tCO2e. This will help you to prioritise the lowest cost options.
- Select the cheapest options by clicking on the checkbox next to the option name.
- If allowances or offsets are selected, you will need to decide on the amount to purchase (a limit may apply).
- If an abatement project is selected, the amount of avoided CO2e will be fixed.
- The selected options will be added to the Compliance Activities and Total Cost graph to help you visualise if compliance has been met. The Penalty Cost and Average $/tCO2e are also displayed, to help you meet your goals.


Accepted formats: JPEG, JPG, PNG, MP4, MOV
If the server is configured to use an authorization key, write it here.
Developed by PUBLITAR SRL. More information at: publitar.com/p/webpit


| Sl.repara {mgcv} | R Documentation |
Applying re-parameterization from log-determinant of penalty matrix to
model matrix.
Description
INTERNAL routine to apply re-parameterization from log-determinant of penalty matrix, ldetS
to
model matrix, X
, blockwise.
Usage
Sl.repara(rp, X, inverse = FALSE, both.sides = TRUE)
Arguments
rp |
reparametrization.
|
X |
if X is a matrix it is assumed to be a model matrix
whereas if X is a vector it is assumed to be a parameter vector.
|
inverse |
if TRUE an inverse re-parametrization is performed.
|
both.sides |
if inverse==TRUE and both.sides==FALSE then
the re-parametrization only applied to rhs, as appropriate for a choleski factor.
If both.sides==FALSE , X is a vector and inverse==FALSE then X is
taken as a coefficient vector (so re-parametrization is inverse of that for the model matrix).
|
Value
A re-parametrized version of X
.
Author(s)
Simon N. Wood<EMAIL_ADDRESS>[Package
mgcv version 1.8-22
Index]