Is 2013 gone yet?
Not yet. We still have time to look back. Yeah, it’s that time of the year. Time to think back on what happened this last year. What went wrong and what went well.
January April
The year started out greatly. The company I was working for was going down so I found myself without a job. Not even a month gone by and I found myself a new workplace and I’m still living The CH Experience. This made me move to another city, however not a strange city to me. A city that I do love with all my heart. After all, most of my friends are here and my best memories were created here.
Sure I wanted to go as a freelancer for a while. But that didn’t work out so well so I’m glad that I am where I am now.
May June
Moved my blog from Tumblr to wardrobe hosted by a Internet friend of mine that goes by the name freshpixel. You might’ve seen him on IRC. I’ve been improving my blog ever since with minor tweaks, making the theme responsive and some other cool features. If you ever wanted a minimal blog application the way to go is definitely wardrobe. Thank you Eric Barnes for making such a beautiful platform.
July August
Stopped using Google Analytics for personal projects, instead I’m using piwik. If you want something simple and that you have control over, this is the way to go. Even last week we got a new update with more awesome stuff.
August September
Just a bit after that, I won a ticket to LaraconEU and of I went: next stop Amsterdam. Stuff was learn on that conference. But most of all, connections were made. Faces were put on nicknames and avatars. I hope I can keep this tradition of attending to (at least) one (abroad) conference every year. During 2013 laravel released its new version 4. Changing the game again. Using composer with all the things and once again pushing the PHP community forward.
October November
I was internet famous for a couple of days. My post about the Six months rule went crazy on reddit and I had 35k+ visits in just 48 hours. Thank you reddit.
November December
I won an award at work during our christmas party.
It was definitely fast. All I can say is that this was a really good year. If the next one is has good as 2013 I think I’ll be happy. I have a lot of different ideas for my blog for the upcoming months. Don’t know if I’ll be able to do them all. But I will definitely try.
Blog Review
Most visited articles:
- The six months rule
- Git vs Svn is it really a battle?
- Php magic methods - The complete guide
- Glide.js a simple, lightweight & fast jQuery slider
- How Designers Destroyed the World
Special thanks:
- freshpixel for hosting my blog;
- Reddit and his community;
- The codeigniter channel for always helping me get new ideas for articles;
- David Wosnitza for his guest post (more to come I hope);
- All the people that donated money via paypal on my website;
- All the people that clicked on the ads at the end of my posts;
Thank you for reading my blog, and I hope you all have an awesome 2014, mkay?


The Registry system allows to tell your programs where to find the EnsEMBL databases and how to connect to them.
The following call will load all the "latest" databases from the public Ensembl Genomes MySQL server mysql.ebi.ac.uk:
Bio::EnsEMBL::Registry->load_registry_from_db( -host => 'mysql.ebi.ac.uk', -port => 4157, -user => 'anonymous', -verbose => 1 );
Port and Password are the other allowed parameters to this subroutine. The latest database is the one with the highest release for each species.
The Ensembl API allows you to load the databases from more than one resource without fear of clashing names and the possibility of missing out resources. To load from more than one resource use the following call
Bio::EnsEMBL::Registry->load_registry_from_multiple_dbs( { -host => 'mysql.ebi.ac.uk', -port => 4157, -user => 'anonymous', -verbose => 1 }, { -host => 'ensembldb.ensembl.org', -port => 5306, -user => 'anonymous', -verbose => 1 } );
You should take close note of the anonymous HashRefs created in this call. We generate one per Ensembl resource where the elements of the hash are identical to those specified in the load_registry_from_db() subroutine to any version of Ensembl so long as you are sure there will be no issues call. You can specify as many resources as you require & have them connecting with API clashes.
One problem of using this is that different Ensembl resources may host the same species but at different versions e.g. D.melanogaster is hosted by Ensembl and EnsemblGenomes yet the EnsemblGenomes version is normally the more upto date version. The code will use the first species it encounters in preference to any other it finds in the subsequent resources. In the given code example any clashing species from Ensembl would be ignored and preference be given to EnsemblGenomes. If this is not your desired intention then change the order.
Alternatively, a custom registry configuration file could be typically loaded at the beginning of the script using the command:
Bio::EnsEMBL::Registry->load_all();
This method loads the Registry from the configuration file passed as an argument. If no argument is supplied, it tries to use the file defined in the environment variable ENSEMBL_REGISTRY. It uses the file .ensembl_init if all the previous fail.
The Registry configuration file for the Perl API is a Perl file which defines the DBAdaptors you will need in your scripts. You should start with a:
use strict; use warnings;
clause. You will have to import some modules:
use Bio::EnsEMBL::Utils::ConfigRegistry; use Bio::EnsEMBL::DBSQL::DBAdaptor; use Bio::EnsEMBL::Compara::DBSQL::DBAdaptor;
The first one will allow you to define some aliases for the databases. The second module is needed if you want to configure EnsEMBL core databases and the third one is needed for the EnsEMBL Compara databases. You may need other DBAdaptors for connecting to an EnsEMBL Variation database for instance.
Next, you have to declare your DBAdaptors. For each database you will need to create a new object: Bio::EnsEMBL::DBSQL::DBAdaptor objects for the core database, Bio::EnsEMBL::Compara::DBSQL::DBAdaptor objects for compara databases and so on. You will have to define the database host, the port (3306 is the default value), the name of the database, the type of database (core, compara, variation ...) and the species to which this database refers. You may also add some aliases of the name using the Bio::EnsEMBL::Utils::ConfigRegistry module. Here is an example for the public Plasmodium falciparum core database (release 4):
Bio::EnsEMBL::DBSQL::DBAdaptor->new( -host => 'mysql.ebi.ac.uk', -port => 4157, -user => 'anonymous', -species => 'plasmodium_falciparum', -group => 'core', -dbname => 'plasmodium_falciparum_core_4_56_2a' ); my $aliases = ['plasmodium falciparum', 'P_falciparum']; Bio::EnsEMBL::Utils::ConfigRegistry->add_alias( -species => "plasmodium_falciparum", -alias => $aliases );
From release to release, you will have to change the dbname parameter. In order to find out the exact name of the new database you can use the "show databases" command of mysql:
shell> mysql -u anonymous -h mysql.ebi.ac.uk -P 4157 mysql> show databases like "plasmodium_falciparum_core_%";
It is also possible to connect to a multi-species database with a similar method of construction however in addition to the above parameters you will need to know the species ID of the species you wish to connect to. For example to connect to E.Coli K12 in release 4 you would use the following:
Bio::EnsEMBL::DBSQL::DBAdaptor->new( -host => 'mysql.ebi.ac.uk', -port => 4157, -user => 'anonymous', -species => 'Escherichia coli K12', -group => 'core', -dbname => 'escherichia_shigella_collection_core_4_56_3a', -species_id => 1, -multispecies_db => 1 ); @aliases = ('e_coli_k12'); Bio::EnsEMBL::Utils::ConfigRegistry->add_alias( -species => "Escherichia coli K12", -alias => \@aliases );
If you do not know the species ID of the species you need then you can list it using the following SQL:
shell> mysql -u anonymous -h mysql.ebi.ac.uk -P 4157 mysql> use escherichia_shigella_collection_core_4_56_3a; mysql> select species_id, meta_value from meta where meta_key = 'species.db_name'; +------------+-------------------------------------+ | species_id | meta_value | +------------+-------------------------------------+ | 1 | Escherichia coli K12 | | 2 | Escherichia coli Crooks | | 3 | Escherichia coli DH10B | |....... | ....... | | 29 | Escherichia coli O81 ED1a | | 30 | Escherichia coli O7:K1 IAI39 | +------------+-------------------------------------+
The species name can be whatever you want and you may add as many aliases as you want, BUT:
For connecting to the EnsEMBL Compara database, you will have to create a Bio::EnsEMBL::Compara::DBSQL::DBAdaptor. Here is an example:
Bio::EnsEMBL::Compara::DBSQL::DBAdaptor->new( -host => 'mysql.ebi.ac.uk', -port => 4157, -user => 'anonymous', -species => 'bacteria', -dbname => 'ensembl_compara_bacteria_4_56' ); @aliases = ('ensembl_compara_bactera'); Bio::EnsEMBL::Utils::ConfigRegistry->add_alias( -species => 'bacteria', -alias => \@aliases );
Finally, you have to end with a 1 for the import to be successful:
1;
If you want this file to be your default configuration file, you probably want to save it as .ensembl_init in your home directory. You can also save it elsewhere and point the ENSEMBL_REGISTRY environment variable to that location. Here are a couple of examples of how to configure your environment depending on your shell:
ENSEMBL_REGISTRY="/usr/local/share/ensembl_registry.conf" export ENSEMBL_REGISTRY
setenv ENSEMBL_REGISTRY "/usr/local/share/ensembl_registry.conf"
Ensembl Genomes & Ensembl are open projects and we would like to encourage correspondence and discussions on any subject on any aspect of them. Please see the Ensembl Genomes Contacts page for suitable options for getting in touch with us.


pagePanel single
index page
single so no special tool pagePanel Test
Panel1
header for panel 1
content for panel 1 - king of clubs
King of Clubs
content for panel 1 - king of clubs
King of Clubs


You won in
00
minutes,
00
seconds, using
00
moves, for
0
stars
Play another game!


This bride's white and pink sari is what dreams are made of!
by TIMESOFINDIA.COMOver the last few years, white colour has made its way to Indian weddings. From dreamy lehengas to saris, brides are now ditching the red shade for this milky shade. We recently came across a bride's sari look in white colour, which is just gorgeous and stunning. Bride Catherine Dayal picked up a beautiful Sabyasachi sari for her wedding in Bangalore.
She looked resplendent in the white sari which had a tint of pink hue. She wore the sheer sari over a printed white skirt underneath. The pallu features 3D embellished flowers on the border. She wore the sari with a full-sleeved blouse, which featured Sabya's signature embroidery and 3D white flowers.
Keeping her look minimal, the bride kept the rest of her look simple. Her look was accessorised with golden jhumkas and a long necklace. When it came to her make-up, she sported a simple look with soft shimmery eyes, a bindi and a bold lip colour. For her hairdo, she sported a bun adorned with gajra flowers.
What do you think of this bride's look? Let us know in the comment section below.


Typescript must aid Javascript developers with large-scale applications
Typescript help as a structuring mechanism for large codebases
Typescript makes easier for teams how works on the same project
TypesScript is an Object oriented programming language /JavaScript is a scripting language
TypeScript has static
typing
/JavaScript does not
TypeScript uses types and
interfaces to describe how data is being used / JavaScript does not
TypeScript has interfaces
which are a powerful way to define contracts within your code /JavaScript does not
TypeScript supports
optional
parameters for /JavaScript does not
Why should you use Typescript?
Transpiling allows you to generate ECMAScript
Typescript supports JS libraries and API documentation
Typescript introduces static typing
Typescript uses NPM
Typescript is easier to maintain
Typescript makes it easier to use React, Angular, and Vue
How to start?
Install TypeScript
TS Visual Studio Plugin
using NPM (Node Package Manager)
npm install -g typescript
TypeScript Compilers
tsc filename.ts
This will create a JS file
filename.js
Types in Typescript
Any
Built-in
User-defined
Any
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean
Built-in
Number
let num: number = 0.444;
let hex: number = 0xbeef;
let bin: number = 0b0010;
String
let w = "Value1";
let x = "this is a string with the value " + w;
let y = 'this is a string with the value ' + w;
let z = `this is a string ${w}`;
console.log(w,x,y,z)
Boolean
let yes: boolean = true;
let no: boolean = false;
Undefined
const treasure: undefined = undefined;
Null
const fairElections: null = null;
Void
function warnUser(): void {
console.log("This is my warning message");
}
User-defined
Enum
enum Color {Red, Green, Blue}
// Red = 0, Green = 1, Blue = 2
let c: Color = Color.Green;
console.log(c)
// output: 1
Array
let list: Array< number > = [1, 2, 3];
// valid re-assignment
list = [5, 6, 7];
// invalid
// list = ["hi", "hello"];
let list: number[] = [5, 6, 7] ;
Tuple
// Declare a tuple type
let x: [string, number];
// Initialize it
x = ["hello", 10]; // OK
// Initialize it incorrectly
x = [10, "hello"]; // Error
Classes
class Person{
firstName = "";
lastName = "";
constructor(firstName: string, lastName: string){
this.firstName = firstName;
this.lastName = lastName;
}
fullName(){
return `${this.firstName} ${this.lastName}`
}
}
let p = new Person("John", "Snow");
console.log("Name: ", p.fullName());
// output: Name: John Snow
Interfaces
// class using an interface
interface ClockInterface {
currentTime: Date;
setTime(d: Date): void;
}
class Clock implements ClockInterface {
currentTime: Date = new Date();
setTime(d: Date) {
this.currentTime = d;
}
constructor(h: number, m: number) { }
}
// function using an interface
interface LabeledValue {
label: string;
}
function printLabel(labeledObj: LabeledValue) {
console.log(labeledObj.label);
}
let myObj = {size: 10, label: "Size 10 Object"};
printLabel(myObj);
Conclusion
TypeScript has been increasing in its popularity for the last couple of years. It’s mentioned among the five most
promising languages in 2020. About 60% of JS programmers already use TypeScript.
I'm Junior Front-end Developer,responsible, enthusiastic,
hardworking person. My goal - is to start a junior javascript developer
career and grow to a 'team leader' in 5 years. Constant development and
movement forward, constant study and acquisition of new knowledge. I
have good analytical skills. Easy to learn. I work well in a team.
Skills
HTML/CSS, JavaScript, Git experience in creating an HTML page for
a website based on design layouts skills in binding to the user
interface of scripts that provide rendering and animation JQuery
knowledge of cross-browser layout knowledge of PhotoShop and Figma
experience of responsive layout
Code examples
Github Experience Responsive web page layout Other
examples
Education
On-line “rss-school”. I also study web development from books
or other courses and study English at home.


| Solaris |
|
|
This section provides general information such as upgrade issues and behavior changes in the OpenSolaris 2009.06 OS.
The OpenSolaris Update Manager automatically detects when new packages are available for your system, including when the Update Manager itself needs to be updated. In this case, Update Manager will prompt you to open a terminal window and execute the following command:
$ pfexec pkg install SUNWipkg
After executing this command, you must close the Update Manager and then restart it via the System-> Administration menu to complete the update.
General instructions for updating from the OpenSolaris 2008.05 release to later versions of OpenSolaris are as follows:
$ BUILD=`uname -v | sed -e "s/snv_//" -e "s/[a-z]//"` $ pfexec pkg refresh $ pfexec pkg install<EMAIL_ADDRESS>$ pfexec pkg install<EMAIL_ADDRESS>$ pfexec pkg install SUNWinstall-libs
$ pfexec pkg image-update
At this point, you can boot into the updated BE using reboot(1M) or init(1M) as usual.
OpenSolaris supports installation through its Live CD on systems or virtual machines that contain
at least 512 MB of RAM. The following limitations exist on systems with low memory.While basic desktop functions and installation functions work well, attempting to use the Live CD
as a full-blown user environment might cause issues. However, an installed system functions normally with 512 MB of RAM.The Live CD supports booting the OpenSolaris kernel in either 32-bit mode or 64-bit mode depending
on the capabilities of the underlying hardware. The OS will boot in the 64-bit mode only if the system has at least 1000 MB of RAM. Systems with less than this amount will boot in the 32-bit mode. This limitation does not apply to the installed system.It is not possible to start the 'Read the Release Notes' link from within the GUI Installer
on systems with 512 MB of RAM. Attempting to open this link causes the system to freeze while loading Firefox. Therefore users are recommended to read the Release Notes prior to launching the GUI Installer.On systems with less than 700 MB of RAM the installer will create a dedicated swap slice instead
of a ZFS volume to use for system swap.For more information about the enhancements that were made to the OS from the OpenSolaris 2008.11 release onwards to
support installation on systems with low memory, see href="http://defect.opensolaris.org/bz/show_bug.cgi?id=3597"># 3597 Unable to install OpenSolaris with 512 MB Base Memory.This section describes known issues that are related to the OpenSolaris 2009.06 documentation.
Some links are incorrect in the Getting Started With OpenSolaris 2009.06 Guide.
The following are the correct and updated links:
The following is the correct and updated link:
This section describes installation issues that apply to the OpenSolaris 2009.06 OS.
If, during installation, no root password is entered and no user account is created, you will not be able to log in to the installed system.
Choose one of the following workarounds:
Enter a root password as follows:
During boot, type “e” in the grub menu twice, in order to edit the boot entry.
Add -s to the end of the boot entry, and boot with this line.
Log in as root and use the passwd command to enter a password.
Restart the system. Boot normally, and log in with the new password.
Set root so that it does not require a password as follows:
During boot, type “e” in the grub menu twice, in order to edit the boot entry.
Add -s to the end of the boot entry, and boot with this line.
Log in to the system as root.
Edit the /etc/X11/gdm/custom.conf file so that the value of PasswordRequired is false.
When creating a Solaris partition, the GUI installer only utilizes the free space at the end of the disk after the last primary partition. However, the sum of the total space available including gaps between partitions is reported on the disk screen. If the user tries to create a Solaris partition which is larger than the amount of free space available at the end of the disk, the size of Solaris partition is adjusted.
A warning message is displayed when the Next button is pressed on the disk screen and the Solaris partition is shrunk. The title of the warning message is as follows:
Adjustments were made to the new partitions
Use the Solaris fdisk(1M) tool or the GParted tool to create a Solaris2 partition. These tools enable the utilization of unallocated space between already defined partitions. Select the newly created Solaris2 partition as the target for the installation on the installer disk screen.
Renaming a boot environment (BE) might fail if the BE has a dependent clone that is currently mounted or otherwise busy.
A typical example of this situation is when the live BE has been successfully upgraded. If you then try to rename the auto-generated and upgraded BE, the renaming fails. The renaming fails because the upgraded BE has been activated and the live BE is now its clone.
Use the following procedure:
Activate the live BE.
Rename the upgraded BE.
Activate the upgraded BE.
For example, if the live BE name is “opensolaris”, and the auto-generated BE name of the upgraded BE is “opensolaris-1,” use the following commands:
# beadm activate opensolaris
# beadm rename opensolaris-1 new_name
# beadm activate new_name
The new fast reboot feature enables you to provide a '-e' option to specify the name of the boot environment (BE) to which you need to fast reboot. Attempting to do a fast reboot and specifying the name of a BE fails in the OpenSolaris 2009.06 release. The following error message is displayed:
# reboot -f -e opensolaris-7
reboot: cannot mount BE opensolaris-7
Specify the full root dataset path to the BE to which you need to fast reboot. For example:
# reboot -f rpool/ROOT/opensolaris-7
If a ZFS pool named rpool is already present on the system because it was manually imported or created by the user during the current boot of the live CD, the install process fails. The last message in the installation log file is as follows:
Root pool rpool exists, we can't proceed with the installation.
This behavior is intentional and ensures that the installer does not inadvertently corrupt the user's data.
The installer recognises cases when rpool is created by the installer but the installation process has failed or was interrupted. In such cases, the installer destroys rpool automatically after it is restarted.
Choose one of the following workarounds:
To preserve data in rpool, reboot the system and do not import the pool. The pool remains invisible to the installer. However, if the pool was created on the target disk then the pool cannot be preserved.
If you do not want to preserve data in rpool, destroy the pool before you start the installer by using the following command:
$ pfexec zpool destroy -f rpool
If a system has a ZFS file system, the Distribution Constructor does not recognise or treat a build area as a ZFS file system in the following cases:
A new sub-directory of the ZFS file system is specified as a build area, but the mountpoint is specified instead of the zpool.
The build area already exists as a ZFS file system but the mountpoint is specified instead of the zpool
For example, in the following zpool:
$ zfs list | grep "disk2_pool/ib/pia"
disk2_pool/ib/pia 1.90G 355G 18K /export/home/ib/pia
When you run the following command:
# distro_const build -p 1 slim_cd.xml
Where the build area in slim_cd.xml is specified as build_area/export/home/ib/pia/build_area, the following message error message is displayed:
Checkpointing is not available
Rerun the build without -p
Specify the zpool in the manifest. For example, build_area/disk2_pool/ib/pia/build_area.
When a new boot environment (BE) is created, the new BE will only have one entry in the GRUB menu.lst file regardless of how many entries the source BE has. The source BE's first menu.lst entry is used to create the entry for the new BE. All other entries are ignored. This issue occurs when you create the new BE either through beadm or pkg image- update.
If the user needs the other entries for the new BE they are not available.
Edit the /rpool/boot/grub/menu.lst file and copy the desired entries from the original BE. Replace the BE name in the source entries with the BE name of the target.
The Distribution Constructor might display the following error message after successfully performing its function:
Unhandled exception in thread started by
Error in sys.excepthook:
Original exception was:
This error message is displayed just before termination and can be safely be ignored.
Use the dumpadm(1M) command to enable crash dumps at boot time:
# dumpadm -y
Alternatively, create a cron job that enables saving crash dumps at any given later time.
The latest version of SUNWinstalladm-tools from http:pkg.opensolaris.org/release contains fixes for the following bug:
#7218 - installadm needs to move service data into SMFIf you update your automated install server with the versions of SUNWinstalladm-tools and SUNWinstall-libs packages that fix #7218, then you will need to convert any services previously created with installadm create-service.
Use the following procedure to convert the services created with installadm create-service.
svcadm enable svc:/system/install/server:default
For more information, see the OpenSolaris Automated Installer Guide.
Automated Installation fails when the Automated Installation manifest points to a target device and the slice 0 on target device is configured with less than 8 GB of disk space. The following error message is displayed:
Auto install failed
The Automated Installation fails because it runs out of space in slice 0 of the target device.
Choose one of the following workarounds:
<ai_target_device> <target_device_name>c0t0d0</target_device_name> <target_device_install_slice_number>4</target_device_install_slice_number> </ai_target_device>
When a custom Automated Installation manifest is used to install a system and there are customizations in the manifest to create slices other than the root slice if those slices already exist on the disk in your system, then the automated installation fails. The following error message is seen in the install_log file:
root@opensolaris:/tmp# tail -20 /tmp/install_log/tmp/ai_combined_manifest.xml is a valid manifest Auto reboot disabled Disk = c8t0d0 found on the system Disk name selected for installation is c8t0d0 no manifest partition information found disk partition info not changed System reports enough physical memory for installation, swap is optional creating slice which already exists failed to modify slice(s) specified in the manifest Auto install failed
Use the format(1M) command to remove the existing slices from your disk. Rerun the automated installation by rebooting your system back into the automated install.
If you type installadm create-service followed immediately by installadm delete-service, the installadm command might hang. This command hangs because the installadm smf service, svc:/system/install/server:default, is not online when the installadm delete-service command is executed.
Wait for the svc:/system/install/server:default service to be online. To determine whether this service is online, type svcs svc:/system/install/server:default and check whether the STATE is listed as online.
PXE boot installation using Automated Installation fails for xVM hvm guests. On the guest console, after displaying the grub entry to boot, the system proceeds to download the kernel and boot archive from the automated install server. The OS banner appears. However, shortly afterwards, the guest cannot connect to the network to download the required installation files and proceed. The installing guest drops to maintenance mode, and prompts for a username and password.
The guest client to be installed by using Automated Installation should be booted with additional kernel options in the menu.lst file which is retrieved from the boot server.
Use any one of the following methods to set the correct menu.lst entries for the client on the automated install server:For individual clients, type the installadm create-client command to specify the extra boot options needed for each installing client. The command syntax is as follows:
installadm create-client -b network-interface=xnf0,xpv-hcp=dhcp -e MAC address of the client -t target image -n install service nameFor example:
# installadm create-client -b network-interface=xnf0,xpv-hcp=dhcp -e 00:16:3e:7f:a9:6f -t /space/images/2009.06_111b -n osol_111bFor all clients of a given automated install service, manually edit the appropriate menu.lst file in /tftpboot to add the network-interface and xpv-hcp boot options in the previous example.
The menu.lst file is named according to the following pattern:
menu.lst.<AI service name>For example, for the automated install service osol, the menu.lst file is /tftpboot/menu.lst.osol and has the following structure:
default=0After adding the required boot options, the menu.lst file has the following structure:
default=0For more information, see the OpenSolaris Automated Installer Guide.
Automated Installation might fail if version strings for packages are specified in the Automated Installation manifest. The following error message might be found in the Automated Installation SMF log at /var/svc/log/application-auto-installer:default.log.
Unable to install SUNW in /a om_perform_install failed with error 114 Auto install failed
List the entire package first and specify version strings for the entire package only. For example:
<ai_install_packages> <pkg name="entire@0.5.11,5.11-0.111"/> <pkg name="SUNWcsd"/> <pkg name="SUNWcs"/> <pkg name="SUNWj6rtx"/> <pkg name="SUNWgroff"/> <pkg name="SUNWgcc"/> <pkg name="babel_install"/> <pkg name="xvm"/> </ai_install_packages>
On disks larger than 1.96 TB, the installer creates VTOC slices which are not aligned on the cylinder boundary. The installed OpenSolaris instance will boot successfully but the format(1M) tool cannot process the VTOC configuration. The tool will report that the disk does not contain a valid label.
Use the Solaris fdisk(1M) and format(1M) tools to create the required VTOC configuration outside the installer. Then install into the existing slice using the Automated Installer.
For more information on how to configure and use the Automated Installer, see the OpenSolaris Automated Installer Guide.
The new Solaris installer installs the Solaris operating system into the Solaris2 partition (0xbf). The installer does not support multiple Solaris partitions on one disk. However, the installer recognizes the Linux swap partition (0x82) correctly and installs successfully if the primary partition is used as the Linux swap partition.
Solaris installation fails when the partition configuration is as following:
The Linux swap primary partition precedes the Solaris2 partition
The Solaris2 partition is not active
Choose one of the following workarounds:
Avoid defining a Linux swap partition as a primary partition on the same disk where the Solaris2 primary partition will be created. For example, create the Linux swap partition as logical volume within extended partition.
Ensure that the Solaris2 partition precedes the Linux swap partition.
Create the Solaris2 partition outside the installer and mark it as active. Then install into that preexisting partition.
Before installation, change the Linux swap partition type to another type, excluding (0xbf) or (0x82). After the installation is complete, change the Linux swap partition type back to (0x82).
If you try to install the OpenSolaris 2009.06 OS on a system that has Fiber Channel disks attached, /usr/bin/gui-install dumps the core.
Disconnect the Fiber Channel disks and restart the installation.
bootadm causes ZFS to hang while installing OpenSolaris 2009.06. No error message is displayed. Install hangs at 99% completion.
Ensure that the Linux swap partition is not a primary partition. Check if the Linux swap partition is a logical partition. To check if it's a logical partition, delete the Linux swap and recreate it as a logical partition. Once this is done the installation is successful.
See also, #8693.
The OpenSolaris 2009.06 OS should not be booted from a disk whose capacity exceeds 232 sectors or 2 TB when the sector size is 512 bytes. This is because of a limitation in the current implementation of GRUB which OpenSolaris uses as the boot loader.
None.
The message displayed when you boot an out-of-sync boot archive advises the user to boot from the GRUB menu "Solaris Failsafe" option . No such option is available on OpenSolaris.
None.
This section describes IPS-related issues that apply to the OpenSolaris 2009.06 OS.
While updating an image to build 111 or beyond, a warning message similar to the following might be displayed:
driver (emlxs) upgrade (removal of minor perm '* 0600 root sys'') failed with return code 252 command run was: /usr/sbin/update_drv -b /mnt -d -m * 0600 root sys' emlxs command output was:
No entry found for driver (emlxs) in file (/mnt/etc/minor_perm).
This bug occurs only when the SUNWemlxs package is manually added to the OpenSolaris 2008.11 OS and the system is updated to the OpenSolaris 2009.06 release. This warning message is displayed for many drivers including emlxs, afe, audio810, audiohd, audioixp, bnx, isa, ixgbe, nge, nv_sata, and qlc.
The warning can be ignored.
The left pane in Packagemanager is used to display category names. These names are localized in different locales. However, the localization of the names is not changed if you switch the locale, even after restarting Packagemanager.
Click the reload button, which will reload the category names in the new locale.
This section describes desktop related issues that apply to the OpenSolaris 2009.06 OS.
After installing the OpenSolaris 2009.06 release, the hald-addon-network-discovery agent cannot be enabled. This failure occurs regardless of which method you use to enable the service.
An error message similar to the following is displayed in the service log:
[ Jul 24 21:09:32 Executing start method
("/lib/svc/method/svc-network-discovery start snmp"). ]
/usr/bin/dbus-send --system --print-reply --dest=org.freedesktop.Hal
--type=method_call /org/freedesktop/Hal/devices/network_attached
org.freedesktop.Hal.Device.NetworkDiscovery.EnablePrinterScanningViaSNMP
int32:60 string:public string:<IP_ADDRESS>
Error org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible
causes include: the remote application did not send a reply, the message bus
security policy blocked the reply, the reply timeout expired, or the network
connection was broken.
[ Jul 24 21:09:40 Method "start" exited with status 1. ]
Use the following procedure:
Add the SUNWSmmgr package.
# pkg install SUNWSmmgr
# allow send_interface="org.freedesktop.Hal.Device.NetworkDiscovery" send_destination="org.freedesktop.Hal"/>
Restart the HAL add-on module.
- To restart the add-on module from the desktop, perform these steps:
Open the Services settings application from the main menu.
System-> Administration-> Services
The Services settings window is displayed.
- To restart the add-on module from the command line, type:
# svcadm restart hal
# svcadm disable snmp
# svcadm enable snmp
Firefox dumps core in NV build 95 due to Flash Player bug. Flash plug-in v9.0 r124 has a bug that causes Firefox to crash. This issue has been fixed in the flash plug-in v 9.0 r125.
Note - This affects only users of Flash Player v9.0 r124 and below.
Start Firefox.
From the Menu bar, click on Tools -> Add-ons -> Plugins.
Right click on Shockwave Flash and choose the Disable option to disable the plug-in.
Manually install the updated version from the following URL: http://www.adobe.com/products/flashplayer/productinfo/instructions/#section-4
When you start Tracker, the home directory is not indexed by default.
Use the following procedure:
Go to System->Preferences.
Check the Index and watch my home directory checkbox in the 'Files' tab.
Click OK.
A dialog box appears prompting that data must be reindexed.
Click the Reindex button to reindex data.
When you start Tracker, you cannot search for Evolution emails.
None.
When you maximize a window in the twinview or xinerama mode, the window fills all the screens instead of being maximized on the current screen only.
None.
Chinese, Japanese, and Korean characters do not display correctly on Java technology-based applications.
Enable the antialiasing settings manually. Use one of the following commands:
java -Dawt.useSystemAAFontSettings=on
env _JAVA_OPTIONS=-Dawt.useSystemAAFontSettings=on java
For more information about turning on the antialiasing settings, refer to Java 2D API FAQs.
This section describes hardware-related issues that apply to the OpenSolaris 2009.06 OS.
The nge driver is obtaining the ethernet address with the bytes in the reverse order from the hardware.
Uncomment the last line of the nge.conf configuration file which is located in /kernel/drv/. Reboot the machine.
This section describes localization issues that apply to the OpenSolaris 2009.06 OS.
The following locales will not be installed if your system is earlier than the OpenSolaris 2008.11 release and if the slim_install cluster is uninstalled before you upgrade your system to the OpenSolaris 2009.06 release using the pkg image-update command:
en_US.UTF-8
es_ES.UTF-8
fr_FR.UTF-8
de_DE.UTF-8
Install the missing locale packages. Execute the following commands:
If your current LANG variable is any one of the locales listed above:
$ export LANG=C
$ pfexec pkg install SUNWlang-enUS SUNWlang-frFR SUNWlang-esES SUNWlang-deDE
iiim-properties(1) help fails to load with the XML parser error in some locales.
Install SUNWgnome-xml from pkg.opensolaris.org.
$ pfexec pkg install SUNWgnome-xml
Manually execute the following script.
$ pfexec /usr/share/sgml/docbook/docbook-catalog-install.sh
The following features might not be supported in a future release of the OpenSolaris software.
This section provides troubleshooting resources for the OpenSolaris 2009.06 OS.
Terms of Use
|
Privacy
|
Trademarks
|
Copyright Policy
|
Site Guidelines
|
Site Map
|
Help
Your use of this web site or any of its content or software indicates your agreement to be bound by these Terms of Use.
© 2012, Oracle Corporation and/or its affiliates.


What is jq?
"jq is a lightweight and flexible command-line JSON processor"
- jq stands for JSON Query
- Written by Stephen Dolan
stedolan.github.io/jq/
- It is easy to install (Windows, Mac OS X and Linux)
- See the “Downloads” link on website
- I use jq to extract our auth token so we can run our other scripts


THE LEGEND OF 1900 A film review by Steve Rhodes Copyright 1999 Steve Rhodes RATING (0 TO ****): ***
With a pensive tranquility, the normally explosive Tim Roth plays against type as a character known only as 1900. The unabashedly sentimental, English-language film THE LEGEND OF 1900 by writer and director Giuseppe Tornatore (CINEMA PARADISO) is based on a popular Italian monologue by Alessandro Baricco.
The good-spirited fable begins as a baby born at the turn of the century on a ship is left in a lemon carton. The baby is named 1900 by his adoptive father, Danny (Bill Nunn), a boiler worker who slaves away deep within the bowels of the luxury liner, The Virginian. Danny keeps 1900, who vows never to leave his shipboard home, hidden away lest some immigration authority cause trouble for them both.
At age 8, 1900 (Cory Buck) displays an innate ability to create luxurious music on a piano. The first time he plays, the entire ship is awakened by the sublime sounds. The film itself is a wonderful treat for the ears and the eyes. The mesmerizing music must be enough for 2 CDs, and the cinematography is warmly romantic, as are the handsome sets.
Knowing that the film had garnered considerable negative, early buzz in the press as being sappy, I approached it with no small amount of trepidation. Nevertheless, I was swept away by it, which is completely opposite to the reactions I heard after the press screening that I attended. Maybe this film isn't for everyone, but if you are able to open your heart to its romantic rhythms, you may be as transfixed as I was. As I watched it, it kept reminding me of ONCE UPON A TIME IN AMERICA, an admittedly better movie, in its grandeur, its intimacy, its period and its sounds.
Most of the story is told decades later in flashbacks by Max (Pruitt Taylor Vince), a trumpet-playing friend of 1900. Max discovers the only copy of an old record of 1900's and also finds out that their old ship is about to be destroyed with dynamite. Both of these events trouble Max, the former because there weren't supposed to be any copies of 1900's music and the latter because Max fears that 1900 might still be hidden on board. Max relates 1900's tale to a music store owner (Peter Vaughan, Q in the Bond movies), who possesses the lone record copy.
The director, as he did in his award winning CINEMA PARADISO, knows how to stage scenes with a delightfully whimsical touch and a visually audacious flair. One memorable incident occurs during a storm at sea. As the boat rocks furiously and as the guests have already retreated to the safety of their cabins, 1900 convinces Max to unhook the piano from its floor anchors. The piano glides wildly all over the ballroom as 1900 plays luxurious music on it. Not many directors would attempt choreography with a grand piano as the sole dancer.
Another one of the movie's wonderful moments occurs when Jelly Roll Morton, who proudly claims to be "the man who invented jazz," drops by the ship to challenge 1900 to a musical duel. Clearly enjoying every minute of it, a suave-looking Clarence Williams III ("Mod Squad") does a delicious turn as a jazz legend. In a movie whose biggest problem is that its narrative is allowed too often to get lost at sea, the director makes the right decision here in letting the battle of piano titans go on much longer than you'd ever expect. 1900's strategy and the way the contest is decided are both quite surprising.
 Although it's more a tone poem than a motion picture, it has a seductive appeal.
"The end, the end, please just show me where it ends," 1900 begs Max. The movie itself ends predictably but poetically. And it's the type of movie that either you'll love or you'll hate. Count me in the former category.
THE LEGEND OF 1900 runs 2:03. It is rated R for brief strong language.
Email<EMAIL_ADDRESS>Web: http://www.InternetReviews.com
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


Huawei MateBook 15-inch is a ports paradise, but will it come to the US?
by Michelle Rae UyHuawei MateBook 15-inch is a ports paradise, but will it come to the US?
It could still happen
The Huawei MateBook 15-inch could be a great alternative for folks who need more of a variety on ports. (Image credit: Evan Blass)
Huawei MateBook 15-inch is coming, but whether or not it will be available in the US is still anyone’s guess.
According to MSPoweruser, leaker Evan Blass discovered what could be the first complete renderings of Huawei’s upcoming additions to its MateBook laptops: a 14-inch variant, and a slightly larger 15-inch. And, it’s looking like Huawei’s largest MateBook yet is looking to give Apple’s MacBooks a run for their money – at least, port-wise.
Based on the renders, the Huawei MateBook 15-inch, codenamed Bohr, will be rich in ports, with one USB-C port (likely thunderbolt-enabled and could be used for charging), a full-sized HDMI port and two USB-A ports – not to mention, a headphone jack. In comparison, the MacBook 16-inch also has four ports, but they’re all Thunderbolt 3s, which considerably limits many users still using USB-A compatible devices.
It will also feature Huawei’s fingerprint reader-cum-power button, impressively thin bezels and a 16:9 aspect ratio. While there’s no word yet on what the specs will be, however, the Huawei MateBook 15-inch could be a great alternative for folks who need more of a variety on ports.
- The MateBook 13 is the most value-packed flagship laptop to date
- Here's our Huawei MateBook X Pro (2019) review
- US government to grant Huawei licences 'soon'
Huawei MateBook 15-inch in the US
Unfortunately, Huawei’s woes in the US has left its devices’ fate in the country up in the air. Earlier this year, the U.S. Department of Commerce blacklisted Huawei while President Donald Trump signed an executive order preventing American companies from using any telecom equipment produced by firms that are deemed threats to national security.
This led to Google suspending its business with the company, which effectively prevents Huawei from using the Android operating system that’s been powering its smartphones.
However, the Trump administration has been issuing 90-day reprieves, allowing companies to continue selling to Huawei as trade discussions between the US and China continue. On August 19, the US gave Huawei its third 90-day reprieve, Financial Times reports, an extension that will let Google to continue updating its Android software on Huawei smartphones.
This could be a good sign for Huawei, especially since the U.S. has yet to provide sufficient evidence to prove its case. So, all is not lost.
If things go well for Huawei and the US ban doesn’t happen, we could see the Huawei MateBook 15-inch and 14-inch variant hitting the US streets in Spring 2020.


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/sin.20.3D.20cos.20timeout.html ---
At the cool #Is there code for X? stream which most people aren't subscribed to, Patrick found the following time-out:
import analysis.complex.exponential open complex set_option trace.type_context.is_def_eq true set_option trace.type_context.is_def_eq_detail true example (x : ℂ) : differentiable_at ℂ sin x := differentiable_cos x
Note that we're trying to prove that sin is differentiable by telling Lean that cos is differentiable.
The set_option
commands are just so you can see the unifier failing. The first 262144 bytes of the trace output are here at this gist. Searching for sin x' =?= cos x'
shows a bunch of unfun stuff. It's a bit complex -- the numbers go up from [8] to [19] but then right near the end of the trace drop back to [9].

A nice little tour through the algebra heirarchy there...
With
attribute [irreducible] sin cos
beforehand, the gist is completely different.
sin =?= cos
fails immediately, so it's easier to see what the actual problem is.
I think this shows one should not try to use instance search as a theorem prover
:-)
Maybe in Lean 4 it would be more sensible
Is that what's going on here?
You've given the is_def_eq
trace but not the instances trace and I have to sort of guess at the latter.
Oh maybe it isn't.
I guess it is just the definition of has_fderiv_at
that is so complicated if you fully unfold it.
Very early on, Lean asks
has_fderiv_at sin f' x =?= has_fderiv_at cos f' ?m_8
Because sin
isn't cos
, it then tries
[type_context.is_def_eq_detail] unfold left&right: has_fderiv_at
and asks
has_fderiv_at_filter sin f' x (nhds x) =?= has_fderiv_at_filter cos f' ?m_8 (nhds ?m_8)
Again this fails quickly because sin isn't cos. It then unfolds again and asks another question:
[type_context.is_def_eq_detail] unfold left&right: has_fderiv_at_filter [type_context.is_def_eq_detail] [5]: asymptotics.is_o (λ (x' : ?m_1), sin x' - sin x - ⇑f' (x' - x)) (λ (x' : ?m_1), x' - x) (nhds x) =?= asymptotics.is_o (λ (x' : ℂ), cos x' - cos ?m_8 - ⇑f' (x' - ?m_8)) (λ (x' : ℂ), x' - ?m_8) (nhds ?m_8)
This is where the trouble starts, because there are two subtractions on each side. It asks
sin x' - sin x =?= cos x' - cos ?m_1
and because sub is add neg we now go through a tour of the heirarchy starting at add_semigroup.add and going up to comm_ring.add. Then it unfolds the second subtraction a bit more:
[type_context.is_def_eq_detail] [10]: add_monoid.add (sin x' - sin x) (-⇑f' (x' - x)) =?= add_monoid.add (cos x' - cos ?m_1) (-⇑f' (x' - ?m_1))
and again tries to unify sin x' - sin x with cos x' - cos x (which takes a long time to fail because it goes up the heirarchy again). This (heirarchy)^2 loop takes 2000 lines of output to fail, and then tries
[type_context.is_def_eq_detail] unfold left&right: asymptotics.is_o
giving us the exciting new problem
[type_context.is_def_eq_detail] [6]: asymptotics.is_O_with c (λ (x' : ?m_1), sin x' - sin x - ⇑f' (x' - x)) (λ (x' : ?m_1), x' - x) (nhds x) =?= asymptotics.is_O_with c (λ (x' : ℂ), cos x' - cos ?m_8 - ⇑f' (x' - ?m_8)) (λ (x' : ℂ), x' - ?m_8) (nhds ?m_8)
which again involves a double traversal of the entire heirarchy, and even though the story does not end there, the trace does because we get to 262144 characters.
The issue seems to be that there are lots of these +
and -
subexpressions which could each independently be unfolded to various amounts, perhaps resulting in new +
and -
subexpressions (if you unfold the definitions for the complex numbers in terms of the reals for example), and the result is an exponentially large search problem
Yes as well as going up the algebra heirarchy we often consider real and imaginary parts of things. Is this some indication that more things need to be made irreducible? Should asymptotics.is_o
be irreducible? Should has_fderiv_at_filter
be? I have no idea.
Marking asymptotics.is_o
as irreducible as well, fixes the problem (it takes a few seconds to fail, but it fails).
type mismatch, term differentiable_cos x has type differentiable_at ℂ cos x but is expected to have type differentiable_at ℂ sin x
I've said it before, a lot more definitions in mathlib should be marked irreducible
.
I often write proofs applying is_o
to some h : 0 < c
.
Though we can add something like is_o.def
Or we can make has_deriv_at
irreducible
outside of the files that set up the theory.
attribute [irreducible] sin cos has_deriv_at set_option trace.type_context.is_def_eq true set_option trace.type_context.is_def_eq_detail true example (x : ℂ) : differentiable_at ℂ sin x := differentiable_cos x
still takes a long time to fail
I guess another alternative to irreducible
is to make it a structure
I'd prefer to still have the current defeq
while setting up the theory.
But why is it still timing out after making sin
, cos
, and has_deriv
irreducible?
Because differentiable_at
uses has_fderiv_at
which is unrelated to has_deriv
Last updated: Apr 24 2020 at 19:02 UTC


| 017:067 Khan | : |
And when harm touches you upon the sea, those that you call upon besides Him vanish from you except Him (Allah Alone). But when He brings you safely to land, you turn away (from Him). And man is ever ungrateful. |
| 017:067 Maulana | : |
And when distress afflicts you in the sea, away go those whom you call on except He; but when He brings you safe to the land, you turn away. And man is ever ungrateful. |
| 017:067 Pickthal | : |
And when harm toucheth you upon the sea, all unto whom ye cry (for succour) fail save Him (alone), but when He bringeth you safe to land, ye turn away, for man was ever thankless. |
| 017:067 Rashad | : |
If you are afflicted in the middle of the sea, you forget your idols and sincerely implore Him alone. But as soon as He saves you to the shore, you revert. Indeed, the human being is unappreciative. |
| 017:067 Sarwar | : |
If you are afflicted by hardships in the middle of the sea, it would be an error to call anyone other than Him for help. When God saves you from such difficulties, you turn away from Him. The human being has always been ungrateful. |
| 017:067 Shakir | : |
And when distress afflicts you in the sea, away go those whom you call on except He; but when He brings you safe to the land, you turn aside; and man is ever ungrateful. |
| 017:067 Sherali | : |
And when harm touches you on the sea, all of those whom you call upon, except HIM, are lost to you. But when HE brings you safe to land, you turn aside; and man is very ungrateful. |
| 017:067 Yusufali | : |
When distress seizes you at sea, those that ye call upon - besides Himself - leave you in the lurch! but when He brings you back safe to land, ye turn away (from Him). Most ungrateful is man! |
Concepts/Themes Covered: الإنسان والعلاقات الأخلاقية > الأخلاق الذميمة > الكفران Man and The Moral Relations>The Dispraised Morals>Rejection الإنسان والعلاقات الاجتماعية > الإنسان > شرفه ودنوه Man and The Social Relations>Man>When Honourable and When Unhonourable الإنسان والعلاقات الاجتماعية > الإنسان > ضجره فى حال الشدة و نسيانه الشكر حال الرخاء Man and The Social Relations>Man> His Despair during the Distress and his Ingratitude during Welfare الإنسان والعلاقات الاجتماعية > الرجل والمرأة Man and The Social Relations>Man and Woman العلوم والفنون > الحقائق العلمية و الإشاة إلى وقائع أيدتهاالإكتشافات العلمية > البحر Science and Art> The Scientific Facts and the Indication to Facts which have been supported by the Scientific Discoveries>The Sea
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


This page is deprecated.
Read more about How To Integrate a SSApp:
Also check some examples of SSApps:
This guide will provide the necessary information on how to create and run a SSApp.
In order to get started you need to install the ssapp-demo-workspace by following the steps provided on the
ssapp-demo-workspace bundles all the necessary dependencies for building and running SSApps in a single package.
The ssapp-demo-workspace bundle contains the following core components required for building and running a Self Sovereign Application:
Octopus is the first tool installed by the ssapp-demo-workspace and it is used to further fetch and build the rest of the dependencies. For more information on Octopus read the
PrivateSky provides the VirtualMQ service and the javascript runtime bundles required for a SSApp to interact with EDFS and PrivateSky nodes
The web server is configured to serve static files from the web-server
directory inside the ssapp-demo-workspace installation. Besides serving static files, the server exposes the Brick Storage API required to store data to EDFS.
The wallet template installed by ssapp-demo-workspace is a plain customisable SSApp which once loaded will display a menu with all the SSApp applications contained in this ssapp-demo-workspace
installation. Through this app you will be able to access your newly created SSApp.
The SSApp application loader is the first thing you'll see after running the ssapp-demo-workspace
web server and accessing http://localhost:8080/secure-channels/loader
. It is a basic web application which allows creation and loading of wallets based on the menu wallet template. The SSApp loader registers a service worker responsible with loading the built SSApps from the Brick Storage.
Before advancing to the next chapters make sure you have correctly installed ssapp-demo-workspace
and have started the web server:
The gist of creating, integrating and developing a SSApp in ssapp-demo-workspace
is:
ssapp-demo-workspace
Bind the application to the ssapp-demo-workspace's solution
Enter the development cycle
All of the above steps are detailed in the following chapters.
Start by cloning the ssapp-template repository and rename the ssapp-template
directory. For the purpose of this tutorial we will create a basic "To Do list" application, thus, the name of our new app will be todo-ssapp-prototype
. The prototype suffix denotes the fact that multiple "To Do List" applications can be latter instantiated based on this prototype.
Next, go ahead and remove the existing .git
folder from todo-ssapp-prototype
, initialize a new empty git repo and commit the existing content to your own repository.
A typical SSApp will have the following structure:
The bin
folder contains executable scripts and for this SSApp to be compatible with ssapp-demo-workspace a build.js
script is required. This build script will create an empty Brick Archive, copy the application's code from the code
folder into the BAR and write the BAR's SEED into a file in the root of the application's directory. This seed file will be later read by the SSApp loader in order to load the application.
The code
folder will contain the application source code files (html, javacript & css files).
The package.json
contains a single dependency, the Octopus package which will help with building and installing the application in ssapp-demo-workspace
. You are free to add as many dependencies as you want in order to develop your application.
The octopus.json
file contains actions executed by Octopus that will copy the runtime javascript bundles from PrivateSky into our new application into the code
folder and install the
Make sure the ssapp-demo-workspace web server is running before proceeding with the next examples.
It is time to integrate our application inside ssapp-demo-workspace
by running a few octopus commands inside the ssapp-demo-workspace directory:
Some of the things the bind-app
command does is run our todo-ssapp-prototype/bin/build.js
script to copy the application code into a Brick Archive and write the seed of that BAR in a file which will be used by the SSApp loader to load the application. If you browse the ssapp-demo-workspace
directory you'll see that Octopus has fetched the application from git and placed inside it.
The secure-channels argument refers to the name of the software solution built with this ssapp-demo-workspace. You can think of secure-channels as container for SSApps, for more information read the SSApp loader chapter of this document.
Up to this point we have completed steps 1, 2 & 3 from our little gist from the beginning of the page: we have created a basic structure for our application, we added the app into ssapp-demo-workspace and we have binded it to the ssapp-demo-workspace's solution. One last step before doing the actual development work is to add a link to our application in the wallet template - if you remember the ssapp-demo-workspace
comes with a wallet template which is a SSApp that displays a menu allowing you to select which application to run. We do this by editing web-server/secure-channels/wallet-template/menu.json
and adding an entry for our application. The pages
section of that file should look like this:
Next, go ahead and create a new html file named to-do-list.html
inside web-server/secure-channels/wallet-template/pages/
:
The psk-ssapp
is a Cardinal web component which handles loading and running a SSApp. The to-do-list.html
file is actually a View
file from the wallet template
SSApp which will load our To do List SSApp.
WalletSsappLauncher
controller binds the KeySSI
to psk-ssapp
component. The attribute data-app-name
is used internally by WalletSsappLauncher
to retrieve the KeySSI for psk-ssapp
component. (
To verify that the application was built correctly, open the browser and load http://localhost:8080/secure-channels/loader. If you have previously created a wallet using the loader make sure you clear your local storage and refresh the page. Follow the steps to create a new wallet and then open it. You should see a link to our To Do application in the left menu and when clicking it you should see the Cardinal framework starting page.
From now on the development work will be done from within the todo-ssapp-prototype
folder in the ssapp-demo-workspace
. The only purpose for the initial todo-ssapp-prototype directory was to be able to install it inside ssapp-demo-workspace.
The first thing you'll need to do before adding new code to the application is to switch the SSApp loader to run in "development" mode. To do that, go into web-server/secure-channels/loader
and create a copy of loader-config.local.json-template
file:
The loader-config.local.json
is a configuration file that will allow us to override the default loader options set in loader-config.js
. Our local configuration file will override the loader mode setting from "secure" to "development". While in development mode, the loader will skip the UI and create a new wallet if one doesn't exist, or update an existing one as the source code changes to speed up development.
Next start the "watch" feature of the ssapp-demo-workspace
that watches for source code changes and updates the application's BAR - remember, the SSApp, once built it is stored in a BAR in Brick Storage. In order to update the code we need to somehow update the BAR:
Clear the browse's local storage and refresh. You should see that the loader's UI isn't shown anymore and you are automatically presented with the SSApps menu. Now, everytime you change the source code of your application the wallet will be automatically rebuilt.
It's time to add some functionality to our app and the first thing we need to do is add a /code/pages/home.html
file and replace its existing content with the one presented in the following chapter.
The code/pages/home.html
view of our application will display the items in our to do list and will allow any user to add new items to that list:
The controller will initialize the model and handle all the events triggered by the view controls. Create the code/scripts/controllers/TodoListController.js
file:
The last piece of the puzzle is the model. Add the following code in code/scripts/models/ListModel.js
. The model will fetch the data from EDFS using the
Keep in mind that this application lacks a lot of validation and error handling. The purpose of the code presented in this tutorial is to show you how to get started developing SSApps. You are encouraged to continue working on the app and add more features and validation in order to better understand the SSApp concept, Cardinal and all the related PrivateSky technologies.
This section focuses a bit on the inner workings of the SSApp/Wallet loader, specifically on how it loads and runs wallets and SSApps.
The loader makes heavy use of service workers in order to load wallets and SSApps from EDFS. Once a wallet has been created and a SEED is generated, using that SEED the loader is able to request the content of that wallet from EDFS and load any SSApps found in it.
In order to better understand the loading process let's have a look at the structure of a wallet:
A solution wallet is a npm run build-all
command) while the solution wallet is build by the loader during first use. The steps for creating the solution wallet in the loader are the following:
code/
folder inside the new Dossier
Copy any files found in the web server's wallet-template folder inside the app/
folder of the new Dossier
The purpose of the app/
folder in a Dossier folder is to customize/overwrite any existing fuctionality stored in the code/
folder. When an SSApp is loaded and run, its assigned service worker will first try to load files from the app/
folder and if it fails it will use the code/
folder as failover. This applies to all the other SSApps in the solution.
Once the solution's dossier has been created the loader adds the rest of the applications by using the following algorithm:
code/
folder
Copy any files found in the web server's [solution-name]/apps/[application-name] folder inside the app/
folder of the new Dossier
Mount the new Dossier in the solutions wallet under apps/[application-name]
Another way to understand this structure is by using an OOP analogy: The solution wallet is a collection of application instances created from application classes. For example, the todo-ssapp application instance is the "My To do List App" from the diagram, mounted in the apps/
folder in the solution's wallet, while the todo-ssapp application class is the "To do list App" from the diagram.
In order to load and run the solution, the loader will load each SSApp (including the menu-wallet) in its separate iframe and register dedicated instances of a service worker for that iframe to handle HTTP requests:


--- layout: post status: publish published: true title: '"Everybody, go see Carrot Top quick!" - Episode 8.51' author: display_name: Corey Fineran login: Corey email<EMAIL_ADDRESS>url: '' author_login: Corey author_email<EMAIL_ADDRESS>wordpress_id: 12021 wordpress_url: http://ivyenvy.com/?p=12021 date: '2016-09-05 11:16:38 +0000' date_gmt: '2016-09-05 16:16:38 +0000' categories: - Podcast tags: [] comments: [] ---
Thanks for downloading this episode of The Ivy Envy Podcast. On this episode, we check in on the Cubs post-season status as they continue marching to the playoffs.
Kyle Hendricks and Kris Bryant earn NL monthly awards in August and we look at their performances. We commend the bullpen on their incredible pitching in this last series with the Giants. We answer some listener questions, Kurt shares a Scary Stat of the Week, and we've got some pretty strong Internet Muscle Flexes to share.


👋 👍 Turn on music for the full experience
How many minutes did you listen to Spotify in 2020?
You can find this on your Spotify Wrapped, or just run with our guess.
Continue
You listened to {{ minutesListenedInt | formatNumber }} minutes of music in 2020
yet Spotify only paid {{ estimatedArtistEarnings | formatCurrency }} to your artists.
For the whole year!
Spotify’s profit for the first 3 quarters of 2020 is $1.7 Billion USD.
While musicians, with no live shows, struggled to put food on the table and keep their homes.
{{ artist.name }}
Is their music worth more than {{ estimatedArtistCentsPerHour }} cents per hour?
{{ currentTrack.name }} by {{ currentTrack.artists[0].name }}
But unfortunately, Spotify probably didn’t help the person who created it very much.
Musicians have not received any from Spotify.
Tell them to make a change by sharing Justice at Spotify.
A project by:
+
Make your voice heard About this app
To continue, log in with Spotify


Zabir Al Nazi Nabil
Khulna University of Engineering and Technology
Electronics and Communication Engineering
Programming, Embedded Systems
Arduino, OpenCv, d3


Required. Specifies the name of the data file where plot data is saved to after each build.
The file will be created on first build, so the filename must be unique unless the intent is to add to
previous data file.
This should not be confused with the csv filename used as data source found below by pressing
Add CSV series


1 / 4
Caption Text
2 / 4
Caption Two
3 / 4
Caption Three
4 / 4
Caption Three
Some text about who we are and what we do.
Bharat Security Services provides a security and Housekeeping Services. Bharat Security Services provides a security and Housekeeping Services. Bharat Security Services provides a security and Housekeeping Services. Bharat Security Services provides a security and Housekeeping Services.Bharat Security Services provides a security and Housekeeping Services.Bharat Security Services provides a security and Housekeeping Services.Bharat Security Services provides a security and Housekeeping Services.Bharat Security Services provides a security and Housekeeping Services.
CEO & Founder
Some text that describes me
<EMAIL_ADDRESS>CEO & Founder
Some text that describes me
<EMAIL_ADDRESS>CEO & Founder
Some text that describes me
<EMAIL_ADDRESS>KAVERI Online service is a web based application of Department of Stamps & Registration, Government of Karnataka that provides
KAVERI Online service is a web based application of Department of Stamps & Registration, Government of Karnataka that provides
KAVERI Online service is a web based application of Department of Stamps & Registration, Government of Karnataka that provides
KAVERI Online service is a web based application of Department of Stamps & Registration, Government of Karnataka that provides
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s,
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s,
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s,
BSS
BSS
BSS
BSS
BSS
BSS
BSS
BSS
BSS
BSS
BSS
Call,Email or Leave us a message:


ASAC
Home
About
Contact
Student Name
Email
Student Mobile Number
Tuition
100
500
1000
Name
Email
Mobile
Age
Tuition


:bangbang: With release 3.0.0 the groupId changed, it is now org.camunda.bpm.extension.mockito :bangbang:
simplify process mocking and testing
camunda-bpm-mockito is a community extension for the Camunda BPM process engine that aims to simplify and automate mocking of process applications.
Features:
Just include camunda-bpm-mockito in the test scope of your project:
<dependency> <groupId>org.camunda.bpm.extension.mockito</groupId> <artifactId>camunda-bpm-mockito</artifactId> <scope>test</scope> <version>3.1.0</version> </dependency>
Sometimes you want to test a Bean that uses the query API. Since the API is fluent, you would have to mock every single parameter call and let your service return the mocked query.
With the QueryMocks extension, you can do all this in just one line of code, see QueryMocksExample.java.
public class QueryMocksExample { private final TaskService taskService = mock(TaskService.class); private final Task task = mock(Task.class); @Test public void mock_taskQuery() { // bind query-mock to service-mock and set result to task. final TaskQuery taskQuery = QueryMocks.mockTaskQuery(taskService).singleResult(task); final Task result = taskService.createTaskQuery().active().activityInstanceIdIn("foo").excludeSubtasks().singleResult(); assertThat(result).isEqualTo(task); verify(taskQuery).active(); verify(taskQuery).activityInstanceIdIn("foo"); verify(taskQuery).excludeSubtasks(); } }
Mocking void methods using mockito is not very convenient, since you need to use the doAnswer(Answer<T>).when() construct, implement your own answer and pick up the parameter from the invocation context. JavaDelegate and ExecutionListener are providing their basic fuctionality using void methods.
In general, when working with the Delegate and Listener interfaces, there are basically two things they can do from the point of interaction between the process execution: modify process variables and raise errors.
We can use this to test bpmn-processes without relying on the delegate implementation.
public class FluentJavaDelegateMockTest { private static final String BEAN_NAME = "foo"; private static final String MESSAGE = "message"; @Rule public final ExpectedException thrown = ExpectedException.none(); @Test public void shouldThrowBpmnError() throws Exception { // expect exception thrown.expect(BpmnError.class); thrown.expectMessage(MESSAGE); DelegateExpressions.registerJavaDelegateMock(BEAN_NAME).onExecutionThrowBpmnError("code", MESSAGE); final JavaDelegate registeredDelegate = DelegateExpressions.getJavaDelegateMock(BEAN_NAME); // test succeeds when exception is thrown registeredDelegate.execute(mock(DelegateExecution.class)); } }
In addition two of the well-known “Mocks.register()” hook, you now have the possibility to register fluent mocks directly:
registerJavaDelegateMock("name") registerMockInstance(YourDelegate.class)
In the latter case, “YourDelegate” has to be annotated with @Named, @Component or @Service, depending on the injection framework you are using.
To verify the Mock execution, you can use
verifyJavaDelegateMock("name").executed(times(2));
With the autoMock() feature, you can register all Delegates and Listeners at once, without explicitly adding “register”-statements to your testcase. If you do need to specify behaviour for the mocks, you can still get the mock via “getRegisteredJavaDelegateMock” (for delegates).
@Test @Deployment(resources = "MockProcess.bpmn") public void register_mocks_for_all_listeners_and_delegates() throws Exception { autoMock("MockProcess.bpmn"); final ProcessInstance processInstance = processEngineRule.getRuntimeService().startProcessInstanceByKey("process_mock_dummy"); assertThat(processEngineRule.getTaskService().createTaskQuery().processInstanceId(processInstance.getId()).singleResult()).isNotNull(); verifyTaskListenerMock("verifyData").executed(); verifyExecutionListenerMock("startProcess").executed(); verifyJavaDelegateMock("loadData").executed(); verifyExecutionListenerMock("beforeLoadData").executed(); }
Unit-testing listeners and JavaDelegates can be difficult, because the methods are void and only white-box testing via verify is possible. But most of the times, you just want to confirm that a certain variable was set (or a dueDate, a candidate, …).
In these cases, use the Delegate fakes. The implement the interfaces DelegateTask and DelegateExecution, but are implemented as plain, fluent-styled Pojos.
So to test if your TaskListener
TaskListener taskListener = task -> { if (EVENTNAME_CREATE.equals(task.getEventName()) && "the_task".equals(task.getTaskDefinitionKey())) { task.addCandidateGroup((String) task.getVariableLocal("nextGroup")); } };
actually adds a candidateGroup that is read from a taskLocal variable on create, you can write a Test like this one:
@Test public void taskListenerSetsCandidateGroup() throws Exception { // given a delegateTask DelegateTask delegateTask = delegateTaskFake() .withTaskDefinitionKey("the_task") .withEventName(EVENTNAME_CREATE) .withVariableLocal("nextGroup", "foo"); // when taskListener.notify(delegateTask); // then the candidate group was set assertThat(candidateGroupIds(delegateTask)).containsOnly("foo"); }


| 10.1 |
General Summary of Election of Assembly and Parliamentary Constituencies of the State of West Bengal |
|
|
| 10.2 |
Candidates Contested, Won and Lost by Different Political Parties in Assembly and Parliamentary Constituencies of the State of West Bengal |
|
|
| 10.3 |
Number of Valid Votes Polled in favour of Political Parties in Assembly Elections of the State of West Bengal |
|
|
| 10.4 |
Number of Valid Votes Polled in favour of Political Parties in Parliament Elections of the State of West Bengal |
|
|
| 10.5 |
General Summary of Election in Assembly Constituencies by District |
|
|
| 10.6 |
General Summary of Election in Parliamentary Constituencies by District |
|
|
| 10.7 |
Sanctioned Strength of Civil Police in West Bengal and Expenditure thereof |
|
|
| 10.8 |
Income and Expenditure of Municipalities of West Bengal |
|
|
| 10.9 |
Income and Expenditure of Municipal Corporations of West Bengal |
|
|
| 10.10 |
Income of Municipalities & Corporations (Excluding Kolkata) by source in West Bengal
| |
|
| 10.11 |
Expenditure of Municipalities & Corporations (Excluding Kolkata) under different heads in West Bengal |
|
|
| 10.12 |
Date of Establishment, Population, Income and Expenditure of Municipalities in West Bengal by District |
|
|
| 10.13 |
Income on Revenue Account of Kolkata Municipal Corporation |
|
|
| 10.14 |
Expenditure on Revenue Account of Kolkata Municipal Corporation |
|
|


Rugby World Cup 2019: the story of the tournament in pictures and quotes 04 Nov 2019, 12:11 by Jim Powell Click on each image for more information.


Bloodseeker
Tips
- Bloodrage increases all damage dealt to/from a hero. This means that spells and items will also
deal increased damage if a hero is Bloodraged.

- Enemies can't easily use Blink Dagger if they're Ruptured. It has a pretty long cast range and the
debuff lasts a ridiculously long time, so it can be useful to perma-cancel a Blink from an initiator
like Tidehunter or Magnus before a teamfight begins.
Counters
- TP scroll. Seriously. Just TP out if he's ganking you. He can't do anything about it.
- Consider getting a Magic Stick against Bloodseeker.
- Get a Mek or Urn on your team and carry around lots of regen early on. If BS isn't getting Thirsty, he
can't deal much damage.
- Salve and Bottle regen won't break on a level 6 Rupture. Level 11/16 Rupture deals too much damage,
though, and will break both.
- Blade Mail can be good if you're tanky, especially if he Ruptures you.
- Remember that he's taking a ton of extra damage if he has Bloodrage on, so don't be afraid to fight
back.
- Kiss juking goodbye if there's a Bloodseeker on the enemy team. Once a match you'll find yourself
wondering, "HOW DID THEY KNOW I WAS THERE???"
- In the same vein, be extremely careful when jungling against an enemy Bloodseeker.


Chapter 1 Introduction
1.1 Why Model Data as a Graph?
Network graphs allow for relationship-based data models. Positioning the relationships between entities as first class lets us more easily model complex, real-world information. A distinguishing feature of network graph models is that the relationships are treated with as much value as the node entity data records themselves. The connections within data are often not considered but we really need to work closely with relationship data to extract valuable insights.
Using a network graph usually means you have fast navigation (i.e., traversals) between nodes (performed in constant time). Modeling data with a relational, tabular approach will require working with data as a set of tables and columns, and this necessitates carrying out complex joins and self-joins when the dataset becomes more interrelated. Such queries are technically complicated to construct and can be expensive to run. Furthermore, making them work synchronously is not easy, with performance dropping precipitously as the total dataset size increases. The tabular data model is also typically hard to reason about since it doesn’t readily correspond to mental models for a given application.
DiagrammeR provides a framework and collection of functions to model network graphs as property graphs. A property graph is one that has labeled nodes (for informational entities) that are connected via directed, typed relationships. Both nodes and relationships hold arbitrary properties (attributes, as key-value pairs). There is no rigid schema, but with node and edge labeling we can have as much metadata as we’d like. Taking the example of a typical software repository with multiple users, entities can be users, comments, issues, repositories, organizations, etc., and they are related to each other in specific ways. A user can create or delete a repository, and, the same user could also push a commit (a separate entity, having its own metadata) to a repository. The following schematic provides a simplified graph model of how entities can be related to each other in the context of an multiuser software repository.
1.2 The DiagrammeR Graph Object
A graph object in DiagrammeR maintains a series of interrelated elements. Most importantly, the set of nodes (vertices) and edges (links) resides here, along with elements for graph metadata such as styling attributes, active node/edge selections, data frames linked to nodes or edges, and other user-defined caches of graph features.
The user does not directly modify the contents of the graph object. Rather, the package provides access to a wide range of graph functions for modifying the internal components of the graph object. This both provides ease-of-use and assurances that all graph elements are synchronized, avoiding unintentional corruption of the graph.
Nodes and edges contain properties (called attributes throughout) as key-value pairs. Formally, the graph object contains an R data frame for all graph nodes and their attributes (nodes_df
) and an analogous data frame for edges and their attributes (edges_df
). In the context of DiagrammeR these are typically called the node data frame (ndf) and the edge data frame (edf).
There are several additional data frames used to support the modification and display of graphs. The Global Graph Attributes (global_attrs
) data frame stores data for the default appearance of a graph when display. One entry may include using a fontsize
of 10
for each node
. Another may affect the whole graph, where the layout
is the circo
type. These defaults, set for nodes and edges, can be subject to overrides on a per-node or per-edge basis by including values for the same attributes in the node or edge data frames.
Two data frames are reserved for node and edge selection values (node_selection
and edge_selection
). If there is no active selection, then these data frames are empty (i.e., have 0 rows). If there is a selection (and there can only be one type of selection at any given time), then rows containing node IDs or edge IDs will be populated. This will generally persist (even as other graph functions are used) until the selection is formally cleared. These types of selections are useful because we can target specific parts of the graph and apply specific functions that recognize selections to do useful graph work.
The graph stores useful metadata about itself such as identifiers and control options (in graph_info
) and a log of which graph modification functions where used (in graph_log
). This is valuable for the system to understand the graph history and state and this allows for some graph functions to work with less user-provided information.
Finally, we have the option to store some other R objects in the graph. One is a cache space for R vectors. This cached vector could consist of a series of labels extracted from one part of the graph that may be useful in a function that does something to another part of the graph. The other reserved space for data is for entire data frames that could belong to any node or edge in the graph. This is great if you have extended metadata that doesn’t easily correspond to a key-value attribute pair.


You are now following {{counter}} people. {{#if areWeGood}} We're Good! {{else}} Please select atleast 3 to continue. {{/if}}
{{username}}


My name is Eric
I'm a software engineer specialized in frontend and backend development for scalable web apps.Wants to know about me more check the projects on the portfolio.
Projects
I'm an experienced software engineer who constantly seeks out innovative solutions to everyday problems. I have just over a year of experience as a junior software engineer with First Technology. In my short time there, I've already contributed to over a dozen projects. I've honed my analytical thinking and collaboration skills, and I love working with a team.
Javascript language is used to make web page dynamic. I have used the language for more than one year to make the website have user experience.
Hytext Markup Language is used to write content that appear on websites.I am well versant with hype text markup language and I have more than three year of experience using the language to build websites
Bootrap is a framework used to easen the work that would be done with more cascading styling sheet language.I have used the langauage for more than two years to make the website more appealing.
Streetfood is a website project that was developed using html ,css language.Markdown languages to create readme file is also incoorporated.
click hereThis is a job search website with which it has been developed using html,css and php has been used to handle the backend .Javascript been implemented in the project too.
This is a photographic website which was developed using css and html language only.
click hereFill form to Contact me directly
FOLLOW
Facebook
Instagram
Twitter
@Copyright 2021


2.2 Module XML
FILENAME:
NAME_OF_MODULE.xml
, whereNAME_OF_MODULE
is replaced by the name of your module, i.e.Dream3D.xml
.
The module definition file lays out the interface that the system can call the module with. The simplest form simply lists the name, location and arguments need to run the modules. Here is an example of a module definition document:
<module name="MyData" type="runtime">
<tag name="inputs">
<tag name="mex_url" type="system-input" />
<tag name="bisque_token" type="system-input" />
<tag name="image_url" type="image" />
</tag>
<tag name="outputs">
<tag name="MetaData" />
<tag name="MyData" type="tag" />
</tag>
<tag name="help" value="No help yet..." />
<tag name="thumbnail" type="file" value="public/thumbnail.png" />
<tag name="title" value="MetaData" />
<tag name="authors" value="The Bisque Team" />
<tag name="description" value="This module annotates an image with its embedded metadata." />
</module>
The definition above allows the bisque system to call the module by creating a MEX.
The module definition document is actually a templated MEX document. The template parameters in this case are used to render the UI for this module if the user does not want to fully implement the UI. More about this will follow.
A module can define inputs and outputs and rely on the automated interface generation or can provide a fully customized user interface delivered by the module server by proxying the data made available by the engine service. Input configurations may also be used by the modules that define their own interfaces since they can call renderers provided by the module service.
Module Description
Each module has to be described in various way to be useful. Each module has a number required and optional parameters it has/may contain. Type in this case can control where the data is coming from, for example default “string” suggests the data is in-place. “file” directs the engine server to look for the file starting in the module root directory.
Title
Description
Authors
Thumbnail
Help
An HTML document with a module help that the user can be directed to the document can be inline.
Module Options:
Configurations for Images, Datasets, and Resources
Label
Specifies the label rendered before asking for a resource.
Accepted Type
Defines multiple allowed types of input resource.
Prohibit Upload
Used with resources of type image or dataset to specify that the uploader should not be allowed.
Example Query
Allow a button “from Example” specifies the query string.
Allow Blank
Makes resource optional.
Image
Specific Configurations
Require Geometry
Enforce input image geometry.
Here the z
or t
value may be:
- null or undefined - means it should not be enforced
- ‘single’ - only one plane is allowed
- ‘stack’ - only stack is allowed
<tag name="require_geometry">
<tag name="z" value="stack" />
<tag name="t" value="single" />
<tag name="fail_message" value="Only supports 3D images!" />
</tag>
Fail Message
Specify a message to show if failed requires validation.
gobject
Specific Configurations
Example
<gobject name="tips">
<template>
<tag name="gobject" value="point" />
<tag name="require_gobjects">
<tag name="amount" value="many" />
<tag name="fail_message" value="Requires selection of root tips" />
</tag>
</template>
</gobject>
gobject
Defines multiple allowed types of input gobject.
Semantic types can also be specified here:
<tag name="gobject" value="foreground">
<tag name="color" value="#00FF00" type="color" />
</tag>
<tag name="gobject" value="background">
<tag name="color" value="#FF0000" type="color" />
</tag>
Moreover, colors could be proposed for these semantic types to differentiate graphical annotations in modules visually.
Users can also force only semantic annotations to be created basically prohibiting creation of primitive graphical elements without semantic meaning:
Require gobjects
Validate input gobject.
<tag name="require_gobjects">
<tag name="amount" value="many" />
<tag name="fail_message" value="Requires select of root tips" />
</tag>
Configuration for require_gobjects
consists of:
- amount - constraint on the amount of objects of allowed type. The amount can take the following values:
- null or undefined - means it should not be enforced
- ‘single’ - only one object is allowed
- ‘many’ - only more than one object allowed
- ‘oneornone’ - only one or none
- number - exact number of objects allowed
\(\leq X\) - operand followed by a number, accepts: \(<,>,<=,>=,==\)
Example. Note that \(<\) sign should be encoded in an XML attribute.
Fail Message
Specify a message to show if failed requires validation.
Color
Specify a default color for created gobjects
Example with semantic types and other configuration:
<gobject name="stroke">
<template>
<tag name="gobject" value="freehand_line" />
<tag name="gobject" value="foreground">
<tag name="color" value="#00FF00" type="color" />
</tag>
<tag name="gobject" value="background">
<tag name="color" value="#FF0000" type="color" />
</tag>
<tag name="semantic_types" value="require" />
<tag name="require_gobjects">
<tag name="amount" value=">=2" />
<tag name="fail_message" value="Requires two polylines;
first one inside object of interest (foreground)
and second across background." />
</tag>
</template>
</gobject>
Data-Parallel Execution
It is possible to execute any module in a data-parallel way by passing a dataset instead of an individual image. In order to do this you need to:
- Indicate the resource that can be iterated on
- Allow that resource to accept datasets and possibly
- Configure renderers for iterated run
<!-- allow iterable resource to accept datasets -->
<tag name="inputs">
<tag name="image_url" type="resource">
<template>
<tag name="accepted_type" value="image" />
<tag name="accepted_type" value="dataset" />
...
</template>
</tag>
...
</tag>
...
<!-- configure renderers for iterated run -->
<tag name="outputs">
...
<!-- Iterated outputs -->
<tag name="mex_url" type="mex" />
<tag name="resource_url" type="dataset" />
</tag>
.....
<!-- indicate the resource that can be iterated -->
<tag name="execute_options">
<tag name="iterable" value="image_url" type="dataset" />
</tag>
This definition is used by the module UI to add a dataset selector for this image and let module server know by sending a proper MEX that this resource should be iterated upon. Module server will create a parallel execution iterating over the selected dataset and creating an output MEX with sub MEXes for each individual image.
Other Data-Parallel Types
One can also request parallel execution over resource types other than dataset
. For example a very useful would be to request iteration over a MEX, where a module could accept parallelized MEX as input and iterate over sub-MEXs for parallelized processing of results. In order to do that we need to indicate the type of the input resource and additionally provide an xpath expression within that resource to find elements we would like to iterate over:


Car details
(Back to list)
Id
Id
Registration
Registration
Brand
Brand
Model
Model
Color
Color
Mileage
Mileage
Client
Client
Delete
Update
New Bill
Id
Date
Total
Status
id
total
status
No previous history


Accessible Web Mapping Apps
## What is accessibility
Make content usable for everyone regardless of abilities.
Wide range of disabilities
## Why is accessibility important?
- The ADA and Section 508
- People with different abilities should have equal access
- Good accessibility is good user experience
## WCAG
Web Content Accessibility Guidelines
## What we will cover today
- Focus and keyboard accessibility
- Color and color contrast
- Text alternatives
- Map for non-sighted users
- Test for accessibility
Focus and keyboard accessibility
- WCAG 2.4.7:
Interactive elements should have clear focus.
- WCAG
1.3.2: Navigation (tab) order should be logical and intuitive.
- WCAG
2.1.1: Keyboard users should be able to use functionalities using keyboard only.
- WCAG
2.1.2: Content does not "trap" keyboard focus within subsections.
## Test focus and tab order
- Tab through page to verify all interactive elements have focus
- Focus order matches intended reading order
- Interact with all links and controls using only keyboard
- No keyboard trap except for modals
- Off-screen/invisible content should not receive focus
Color and color contrast
- WCAG 1.4.1:
Color is not the only visual means of conveying information.
- WCAG 1.4.3: Text
needs to have contrast ratio of at least 4.5:1.
Color ramp
Use Color Brewer to select colorblind safe colors
White text on colored background
Flipping the contrast
## Test color and color contrast
- Look for content differentiated by color only
- Use a [contrast ratio calculator](https://contrast-ratio.com/)
- Review color contrast issues reported by automated test tool
([aXe](https://chrome.google.com/webstore/detail/axe/lhdoppojpmngadmnindnejefpokejbdd))
## Text alternatives
[WCAG 1.1.1](https://www.w3.org/TR/UNDERSTANDING-WCAG20/text-equiv-all.html): Non-text content has text
alternative.
If an image conveys meaning, write effective alternate text.
If an image is decorative, use alt=""
.
## Write effective alternate text
- Think about how users will be doing with the information
- Be accurate in presenting the content in images
- Be succinct
- No need to use the phrase "image of ..." to describe images
## Map for non-sighted users
Display a text description of the map
"The Esri Olympia regional office is located at 111 Market St NE Suite 250 across
the street from the Farmer's Market."
Provide data in an alternate format
## Test for accessibility
1. Automated test
2. Keyboard test
3. Screen reader test
4. Color test
Automated test with aXe
- Tests rendered page in browser
- Less false positives
- Accessible
Keyboard test
| Key |
Action |
| Tab, Shift + Tab |
Move keyboard focus |
| Enter |
Click links |
| Enter, Space |
Click buttons |
| Arrow keys |
Move within menus, tabs, radio buttons |
Screen reader
| OS |
Screen reader |
Browser |
| MacOS |
VoiceOver |
Safari |
| Windows |
NVDA |
Firefox |
| Windows |
JAWS |
IE/Edge |
## Screen reader basics
- [A11ycasts: VoiceOver](https://youtu.be/5R-6WvAihms)
- [A11ycasts: NVDA](https://youtu.be/Jao3s_CwdRU)
## Color test
- Automated color contrast test results may need manual verification
- Look for information differentiated only by color
## What we covered today
- Focus and keyboard accessibility
- Color and color contrast
- Text alternatives
- Map for non-sighted users
- Test for accessibility
## Additional resources
- [MDN: Accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility)
- [Google Developers Web Fundamentals:
Accessibility](https://developers.google.com/web/fundamentals/accessibility/)
- [The A11Y Project](https://a11yproject.com/)
- [GeoNet: Accessibility](https://community.esri.com/groups/accessibility)
## Questions?
Link to slides: [https://arcg.is/1jGXS5](https://arcg.is/1jGXS5)


CREATE USER
Section: SQL Commands (7)Updated: 2012-08-14
Index Return to Main Contents
NAME
CREATE USER - define a new database roleSYNOPSIS
CREATE USER name [ [ WITH ] option [ ... ] ] where option can be: SUPERUSER | NOSUPERUSER | CREATEDB | NOCREATEDB | CREATEROLE | NOCREATEROLE | CREATEUSER | NOCREATEUSER | INHERIT | NOINHERIT | LOGIN | NOLOGIN | CONNECTION LIMIT connlimit | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' | VALID UNTIL 'timestamp' | IN ROLE rolename [, ...] | IN GROUP rolename [, ...] | ROLE rolename [, ...] | ADMIN rolename [, ...] | USER rolename [, ...] | SYSID uid
DESCRIPTION
CREATE USER is now an alias for CREATE ROLE [create_role(7)]. The only difference is that when the command is spelled CREATE USER, LOGIN is assumed by default, whereas NOLOGIN is assumed when the command is spelled CREATE ROLE.
COMPATIBILITY
The CREATE USER statement is a PostgreSQL extension. The SQL standard leaves the definition of users to the implementation.
SEE ALSO
CREATE ROLE [create_role(7)]
Index
This document was created by man2html, using the manual pages.
Time: 05:34:14 GMT, December 24, 2015