text:
What are Butterfly Roofs and what are the Pros and Cons to Installing Them?
A butterfly roof is an attractive and quite unusual type of roof construction. In this article we'll look at the pros and cons of butterfly roofs.
What Exactly is a Butterfly Roof?
A butterfly roof is an architectural roof type that is more correctly known as an inverted-pitched roof. In simple, non-technical terms a butterfly roof is a 'V-shaped roof.
A butterfly roof is an inverted roof when compared to a more conventional gable roof. With a conventional roof, two pitched surfaces rise to meet each other at a central ridge. With a butterfly roof, two surfaces are pitched downwards and inwards towards the centre of the structure and meet in a central valley.
Butterfly roofs are so-called because they supposedly represent the wings of a butterfly in flight!
Butterfly roofs can be symmetrical where both 'wings' are of equal dimensions or asymmetrical where one wing is larger than the other. One property can also have a single or several butterfly roofs in its design.
Access our selection of exclusive, high-yielding, off-market property deals and a personal consultant to guide you through your options.
Butterfly roofs are sometimes said to have originated in the 1930s. They are sometimes attributed to Franco-Swiss architect and designer Le Corbusier.
Butterfly roofs rose to popularity in the modernist architectural styles of the 1950s and 1960s . They were particularly popular in new build housing in California, USA, where architect William Krisel was a proponent of the design.
Butterfly roof designs may be even older than the 20th century, however. A version of the butterfly roof is sometimes found in Georgian and Victorian architectural styles in the UK. They are also sometimes known as London roofs as they were used in London townhouse designs in the Georgian and Victorian periods. With a London roof, the inverted-pitched roof is hidden behind a parapet wall.
Where are Butterfly Roofs Found?
Butterfly roofs are found in houses and bungalows but can also be found in other residential buildings such as apartment blocks as well as in commercial buildings.
Butterfly roofs can be constructed of a number of materials, including roofing felt over timber decking, asphalt tiles or shingles, concrete tiles, slate, timber, galvanised steel, aluminium or glass.
Butterfly roofs can be found throughout the world but in the 21st century are now quite an unusual form of roof design.
Some of the main advantages of butterfly roofs are:
- Butterfly roofs give a distinctive look to a property. They have clean lines and are considered to be a visually attractive style (although today, butterfly roofs are considered to be something of a retro mid-century design).
- Butterfly roofs allow rooms in a property to have double-height rooms if required, which increases the feeling of space.
- Butterfly roofs allow the use of large windows in a property if required. These can add a bright, airy atmosphere to the rooms. They can also be used to help heat the rooms using solar gain or heat from the sun which can be very energy efficient.
- It is often claimed that butterfly roofs have good aerodynamic properties and are resistant to weather damage, such as from high winds.
- Butterfly roofs have good drainage and weatherproofing without the need for fascias, soffits and conventional gutters.
- Butterfly roofs can be used to collect rainwater efficiently via a central valley gutter and this water can then be reused. This might be an advantage for environmental reasons in an eco house or in an off-grid property. For example, a butterfly roof can be used to collect water for garden watering or even for treatment and use within the property (solar PV panels can also be installed on butterfly roofs just as on gable roofs).
And the Cons
The possible disadvantages of properties with a butterfly roof include:
- Butterfly roofs generally have a more complex structure than conventional roofs. They need to be properly and professionally designed so that they are structurally sound.
- Butterfly roofs can be more expensive to build than conventional gable roofs or flat roofs. This is because building them usually calls for more building materials and more labour. They require specialist building skills to construct them properly.
Butterfly roofs can be difficult to access for maintenance. Their design means it is more difficult to spot any damage that might have occurred to the roof or when maintenance is required as much of the roof is hidden by the pitch of the roof.
- A butterfly roof can create awkward room shapes and sizes which are not always that practical. It is also likely to require the use of central supports within the property which will affect the internal layout.
Butterfly roofs can be quite inefficient in terms of the use of space. For example, you cannot usually make the same use of the roof space for living accommodation as you can with a gable roof or hip roof.
- When a butterfly roof design is used with full-height windows this can cause issues with light, temperature, heating and ventilation. Rooms may be too light, too hot or too cold unless they have suitable heating and ventilation systems and blinds.
While there is little doubt that butterfly roofs have a strong aesthetic appeal it is also important to consider the practical advantages and disadvantages of this type of roof construction.


Admission rules are managed with the oaradmissionrule command. See the usage or man page of the command.
The code of the admission rules is executed within oarsub at submission time. Many internal variables are available, making the mechanism very powerful… and dangerous. Hence the administrator must be very careful when playing with admission rules.
Example 1: avoid the ugly SQL error warning which appear in case of a typo in the oarsub -l syntax
The following admission rule can be added, which check the syntax for valid resource propoerties
# Check the validity of the resource request (-l option of oarsub) to avoid SQL ugly message
# The following variable lists the valid resource properties that the user can use
# See the output of the 'oarproperty -l' command for the list of available properties.
# Only properties which defines the implicit resource hierarchy need to be listed.
my _USER_=("host","cpu","core","thread");
foreach my $group (@$ref_resource_list) {
 foreach my $subgroup (@$group) {
 foreach my $moldable (@$subgroup) {
 foreach my $resource (@{$moldable->{resources}}) {
 while (my ($k,$v) = each(%$resource)) {
 if ($k eq "resource" and not grep (/^$v$/, ("nodes", "resource_id", _USER_))) {
 warn "Admission Rule ERROR : Unknown resource property \"$v\"\n";
 exit 1;
Example 2: enforce a minimum number of hosts in job
I'm looking for an admission rule that would reject job requests if the user ask for less than N hosts. E.g:
$ oarsub -l host=2 -I
would fail if I configure N=3.
I have a very limited set of properties configured:
$ oarproperty -l
You could inspect what resources are requested by looking at the the oarsub command line in an admission rule, using the $initial_request_string variable.
However, this could be very tricky to handle any request case.
You could also use the $ref_resource_list variable, which is a reference to the structure containing the result of the parsing of the resource request. That structure is complex, since it must store information such as the resources hierarchy, moldable jobs, properties, etc. See the code for the admission rule below:
my $min_resources = 5; # N=5
my $error = 0;
foreach my $group (@$ref_resource_list) {
 foreach my $subgroup (@$group) {
 foreach my $moldable (@$subgroup) {
 if ($k eq "resource" and ($v ne "network_address" or $v ne "host")) {
 warn "requesting resource of type $v is not allowed, use nodes or host\n";
 $error = 1;
 } elsif ($k eq "value" and $v < $min_resources) {
 warn "requesting less than $min_resources nodes is not allowed, you requested $v\n";
 $error = 1;
 exit 1 if $error;
Example 3: managing 2 compute nodes generations in the same cluster
After upgrading the cluster with new nodes, we need a rule to:
 1. send the interactive sessions on the old nodes as a default
 2. send the passive sessions on the new nodes as a default
 3. avoid mixing old and new nodes for parallel jobs as a default
 4. users are allowed to override this behavior via setting a property in their request.
First we need to add a property. We called it "cluster" and it is an integer (the year of the node installation): 2011 or 2016
$ oarproperty -a cluster
Nodes kareline-0-x (old one) are inserted in the OAR database with:
oarnodesetting -a -h 'kareline-0-0-p host='kareline-0-0' .... -p "cluster=2011"
Nodes kareline-1-x (new one) are inserted in the OAR database with:
oarnodesetting -a -h 'kareline-1-0-p host='kareline-1-0' .... -p "cluster=2016"
Then we add a rule to match our requirements, based on this property:
my $cluster;
if ($jobType eq "INTERACTIVE") {
 print "[DEBUG] Interactive job";
 $cluster =2011;
} else {
 print "[DEBUG] Passive job";
 $cluster =2016;
if (index($jobproperties, 'cluster') == -1) {
 print " without cluster (".$jobproperties.")";
 if ($jobproperties ne ""){
 $jobproperties = "($jobproperties) AND cluster = '".$cluster."'";
 } else {
 $jobproperties = "cluster = '".$cluster."'";
 print "\n $jobproperties \n";
(You can remove the "print" lines used to check what the rule is doing)
This rule is written in a text file: regle.oar and added ro oar with:
oaradmissionrules -n -r./regle.oar
Example 4: limit access to a queue, based on usernames set in a file
# Title : limit access to the challenge queue to authorized usersqueue
if ($queue_name eq "challenge"){
 open(FILE, "< $ENV{HOME}/challenge.users") || die("[ADMISSION RULE] Challenge user list is empty");
 my $authorized = 0;
 while (){
 if (m/^\s*$user\s*$/m){
 $authorized = 1;
 if($authorized ne 1){
 die("[ADMISSION RULE] $user is not authorized to submit in challenge queue\n");
Example 5: give a more privilege to the owners of nodes
Give a more privilege to the owners of nodes (e.g. people who payed for the nodes) to submit, by restricting others to besteffort jobs:
 - non-owners compete on the resources according to the scheduling policy of the besteffort queue ;
 - but owners can get jobs running, just like if those jobs did not exist (i.e. besteffort jobs are killed whenever non besteffort jobs require the same resources).
 - First add a property to resources: dedicated=NO or dedicated=team_name for nodes owned by each team.
 - Then add an admission rule which describes the team list with regard to unix users and groups.
 - Non-besteffort jobs will automatically bound to resources set with dedicated=NO, except for members of one or more of the defined teams, whose jobs are automatically directed to the union of their dedicated resources (dedicated=team_of_the_user) and the dedicated=NO resources.
 - Besteffort jobs do not have constraints: they are scheduled on any resources with the property besteffort=YES (usually all nodes).
# Description : set dedicated property for exceptional usages
my _USER_;
my %serpico_project = ( 'dedicated' =>'serpico', 'groups' => ['serpico', 'e-serpico' ], 'users' => [] );
my %neurinfo_project = ( 'dedicated' => 'neurinfo', 'groups' => ['visages'], 'users' => [] );
my %fluminance_project = ( 'dedicated' => 'user1', 'groups' => [], 'users' => ['user1'] );
push(_USER_, \%serpico_project);
push(_USER_, \%neurinfo_project);
push(_USER_, \%fluminance_project);
my $jobaddedprop = "\( dedicated='NO'" ;
# original : IGRIDA admission rule
# modified : nef @ Inria Sophia
if (!(grep(/^besteffort/, @{$type_list}))) {
 # Any user can run besteffort jobs on any resource :
 # no additional verification, no modification
 # Search for projects to which the user belongs
 foreach my $project (_USER_) {
 my _USER_;
 foreach (@{$project->{'groups'}}) {
 my $gr;
 (undef,undef,undef, $gr) = getgrnam($_);
 my _USER_ = split(/\s+/,$gr);
 push(_USER_, _USER_);
 push(_USER_, @{$project->{'users'}});
 my %h = map { $_ => 1 } _USER_;
 if ( $h{$user} eq 1 ) {
 $jobaddedprop.= " OR dedicated=\'$project->{'dedicated'}\'";
 } else {
 if ((grep(/dedicated(\s+|)=(\s+|)'$project->{'dedicated'}\'/, $jobproperties))) {
 die("[ADMISSION RULE] $project->{'dedicated'} dedicated nodes are only available for best-effort jobs.\n");
 $jobaddedprop.= " \)";
 # Always need to limit request to permitted nodes
 if ($queue_name ne "admin") {
 if (grep(/\S/, $jobproperties)) {
 $jobproperties = "($jobproperties) AND $jobaddedprop";
 } else {
 $jobproperties = "$jobproperties $jobaddedprop";
 print("[ADMISSION RULE] Automatically add constraint to go on nodes permitted for the user.\n");
That set up:
 - For a user of team'serpico' : $ oarsub -I


text:
Figure 5 Pore size distribution for carbon nanopipe
determined by Barrett-Joyner-Halenda analysis of the N2
adsorption isotherm (calculated as described in ref. 15). Inset:
N2 adsorption-desorption isotherms
Figure 6 EXAFS data for Pt/carbon nanopipe. a,
k3-weighted EXAFS oscillation [k3c
(k)] for 2 wt% Pt/carbon nanopipe in wave vector
(k) space. b, Fourier transform of the k3c
(k) to distance (r)-space. Solid lines:
experimental. Dashed lines: best curve fits obtained with Pt-Pt
coordination number of 5.4, bond distance of 0.255 nm and
Debye-Waller factor of 106 pm2, with the assumption of
face-centered-cubic packing and spherical cluster geometry.
Figure 7 Scanning electron microscopic image of carbon
nanopipe sample in the form of freestanding thin film. The image was
taken by a Philips 535M apparatus operating at 20 kV.

source: m-a-p/FineFineWeb


Tuesday, February 19, 2019
Running Veeam PowerShell Scripts in Non-Interactive Mode - Credentials
This time we get back to some PowerShell basics and how to run scripts in non-interactive mode.
Veeam Backup & Replication and scripting go hand in hand really well. And the first thing you do when running a script is to connect to backup server
Connect-VBRServer -Server $ServerName -User $User -Password $Pass
Placing user and pass in clear text in a script may not be the best option. We could use PSCredential object to hold the username and password.
$PSCredential = Get-Credential
Connect-VBRServer -Server $ServerName -Credential $PSCredential
However getting the credentials in the objects implies using Get-Credential cmdlet which is interactive and will prompt to type the user and password. This makes it hard to run the script in non-interactive mode.
To make it non-interactive we need password saved somewhere. To save and encrypted password we can use ConvertFrom-SecureString cmdlet and pipe the output to a file:
(Get-Credential).Password | ConvertFrom-SecureString | Set-Content $encPassFileName
Since the username could be stored in the script itself, we retrieve only the secure string for the password, pipe it to the encrypting cmdlet and then output it to a file. Opening the output file will list something similar to:
Now we need to create the PScredential object:
$password = Get-Content $encPassFileName | ConvertTo-SecureString
$psCredential = New-Object System.Management.Automation.PsCredential($username,$password)
First, we loaded the content of the file storing the encrypted password and convert it to a secure string (PScredential objects use secure strings). Next we created the object with the username and the password. The generated object can be used to connect to VBR Server
Connect-VBRServer -Server $ServerName -Credential $PSCredential
By default, ConvertFrom-SecureString encryption is done using Windows Data Protection API (DPAPI). For this reason the file cannot be moved to another computer and used from that one. On each computer from where the script is being run, the password must be encrypted separately.


x y w h, filename, index
 In addition to the styles shown in brackets for each type of
 control, you can also specify styles:
 disable - to disable the control
 hide - to hide the control
 group - to identify the start of a group
 result - to identify the control whose value will be used as
 the return value to the calling script when the dialog
 is closed by pressing the ok button.
 size setting can be over-ridden in the "init" event by using
 /dialog name x y w h.
 can prevent the dialog from closing if a user clicks the
 ok button by using /halt.
 Clicking certain controls in the dialog triggers the on dialog
 script event:
 on dialog:name:event:id: {
 echo $dname $devent $did
 triggering the event, and event can be:
 initialized in this event. id is zero.
 edit = text in editbox changed
 text in editbox of combobox changed
 sclick = single click in list/combo box
 check/uncheck of radio/check buttons
 click of a button
 dclick = double click in list/combo box
 The /did command allows you to modify dialog controls by id
 -f = set focus on id
 -t = set id as default button
 -e = enable id
 -b = disable id
 -v = make id visible
 -h = hide id
 -c = check checkbox/radiobutton list/combo line
 -u = uncheck checkbox/radiobutton list/combo line
 -r = clear all text in id
 -a = add line of text to end
 -d = delete Nth line
 -i = insert text at Nth line
 -o = overwrite Nth line with text
 /dialog -g name id [n] filename
 Note: you can mark a 3state checkbox as indeterminate by using
 both -cu switches.
 with the following formats and properties as appropriate to the
 control to which you are referring:
 Note: if used in a triggered event, "name" is optional.
 .text = returns line or Nth line
 .len = returns length of line or Nth line
 .lines = returns number of lines
 .sel = returns Line Number of Nth selected line
 if N is 0, returns number of selected lines
 .next = returns id of next control in tab order
 .prev = returns id of previous control in tab order
145.Added option in the Windows dialog to make the Editor dialog
 modeless ie. opens it as a desktop window, allowing editing of
 scripts while chatting etc.
146.$cb() should now process LF and/or CR delimited lines properly.
147.Made change to /unload command so that it will match the filename
 you specify with a loaded filename even if you don't provide a full
 path specification.
 now returns $null.
149.If you load/unload alias/popup/script files while the Editor dialog
 is open, the Editor now updates its current view accordingly.
24/07/1998 - mIRC v5.41
1.Fixed win32s under win3.x display bug in 32bit mIRC.
2.Fixed bug with private messages text-wrap when using ^ events.
3.Can now use %variables or $identifiers in the Perform Highlight words.
4.Can now do /dcc send nickname.
5.Fixed $sdir bug.
6.Fixed bug in auto-arrange/cascade/tile options.
7.Fixed SOCKS firewall support bugs.
8.Channel Central dialog now allows mode +h users on TS4 efnet to change
 the channel settings.
9./remove now tells you if you specified a non-existent file but doesn't
 halt processing.
10.Changed Channel central dialog behavior, no longer resets channel modes
 unless they've been changed.
11.Fixed bug in $calc() with very long strings.
12.Fixed bug in inactive DCC Chat windows, editbox allows you to copy text
 from it but entered text is not processed in any way.
13.$chan().ial now returns $true if the IAL is full, $false if it isn't, or
 $inwho if you sent a /who _TAG_ to the server to fill the IAL and the
 IAL isn't full yet.
14.Improved winsock error checking.
15.Fixed bug in /goto command where it was incorrectly reporting a "not
 found" error instead of a "duplicate name" error in some situations where
 you had duplicate goto names in a script.
16.Fixed bug in the remote events in %variables in remote event definition
 not being processed correctly if it evaluated to just #.
17.Fixed /renwin bug allowing you to rename a _USER_ to any name without
 the @ prefix.
18.Fixed $read bug when reading a line with only a space in it.
19.Fixed disappearing DCC windows bug.
20.Fixed bug with URL/Email catcher being turned off when using the Send
 To menu in the URL window popup menu.
21.Fixed bug with Status window not remembering MDI/desktop position.
22.Fixed editbox/listbox focusing bug.
23.Fixed BURC code stripping in IRC Switches not applying to channel topics.
24.Using the. prefix to hide /play command information now also hides the
 /msg command information when sending to a user/channel.
25.Fixed _USER_ listbox background colour bug not being reset when using
 colour control codes in text.
26.Fixed editbox processing bug in custom _USER_.
27.Fixed /ignore -x exclusion bug.
28.Fixed bug in on OPEN event, was preventing on TEXT/ACTION events from
 triggering if on OPEN was /halted.
29.Can now specify whether you want DCCs to go through the Socks Firewall
 or not.
30.Fixed /renwin bug, was halting scripts.
31.Fixed bug when processing $? in combination with $+ in some situations.
32.$findfile() and $finddir() in 32bit mIRC now maintain case of filenames.
33.Fixed bug with wave playing not working with certain sound drivers. Note
 that simple sound drivers eg. speaker driver, are very limited and don't
 support mIRC's queuing of sounds feature, etc.
34.Fixed /cline when colour not specified, sets to default colour.
35.Fixed ctcp event not processing wildcard ctcps, eg.
 ctcp 1:*ping*:echo $1-
36.Fixed DCC Send CTCP request not working with IRC clients that add an extra
 ID number to the CTCP message, mIRC v5.4 also uses this extra ID to identify
 DCC Send requests through a SOCKS firewall. If mIRC sees an ID but can't
 match it internally, it assumes it's not valid and processes the CTCP as a
 normal DCC Send request.
37.Improved handling of long filenames in commands: /dcc send, /unload, /mkdir,
 /loadbuf, /savebuf, /filter, and /window.
38.Fixed bug in /font command.
39.Extended various commands/identifiers/etc. that reference listboxes so that
 they can now process any number of selected lines.
40.Can now /clear -n with a picture window, where -n delays update of the display
 until you force an update (same as with other picture window commands).
41.Fixed bug in $iif(), remote identifiers in it where not being evaluated.
42.Added $inpoly(x,y,x1,y1,...,xN,yN) identifier which returns $true if x,y is
 inside the polygon made up of the specified points, otherwise $false.
43.Changed DCC server 150 and 151 replies, they now return "unavailable" and
 "rejected" instead of a nickname.
44.Added.dx and.dy properties to $window(), return the x and y position of
 a window relative to the desktop.
45.Changed $notify() so that it works with your whole notify list. Added
 .ison property, returns $true if user is on IRC, otherwise $false.
46.Fixed bug with status window receiving focus in certain situations.
47.Fixed bug in /write command when /writing to files that aren't on the same
 hard-disk as the mIRC exe file.
48.Fixed freezing bug in $dde, $read, and $readini when used within other
 identifiers in some situations.
49.The on DNS event is now triggered if you try to /dns a nickname that's not
 on IRC and the server replies with the "no such nickname" numeric.
50.Fixed bug in listbox windows eg. url/notify/channelslist/etc. when first
 opening, the background was first set to the main window background colour
 not the listbox colour, making the window flash.
51.Fixed bug in ip address having a space appended to it when looking up via
 the server method. Shouldn't have affected processing though.
52.Extended $mask() and all other mask-related commands/identifiers, so that
 you can now specify a type of 10 to 19 which correspond to masks 0 to 9,
 but instead of using a * wildcard to replace portions of an address,


Definitions for "Trolley"
Keywords: streetcar, hoist, cart, truck, overhead
A form of truck which can be tilted, for carrying railroad materials, or the like.
A narrow cart that is pushed by hand or drawn by an animal.
A truck from which the load is suspended in some kinds of cranes.
Keywords: golf, banned, drag, battery, fitted
On to which a golf bag is fitted and pulled around the course. In some cases trolleys are battery powered. In other cases, people should be banned from having them, because they drag them into places for which they were not designed.
Prior to actually purchasing one of our services it is added to a virtual shopping trolley. This means that any number of services (up to the maximum value of £300) can be added to the trolley and paid for in a single transaction at the end. Some items may be modified while they are in the trolley, or even removed from the trolley if no longer required.
Keywords: definite, carrying, way, asset, long
a definite asset it carrying a long way
Keywords: light, another, name
Another name for "light ra


text:
07 December 2022, New Delhi: The Food and Agriculture Organization (FAO) of the United Nations, organized an opening ceremony for the International Year of Millets – 2023 (IYM2023) in Rome, Italy. An Indian delegation led by Sushri Shobha Karandlaje, Minister of State, Agriculture & Farmers Welfare along with Smt. Shubha Thakur, Joint Secretary (Crops), DA&FW and other senior officials were present at the opening ceremony. During the event, India's ceremonial message by the Prime Minister Shri Narendra Modi was conveyed by Sushri Shobha Karandlaje.
Ms. Shobha Karandlaje conveyed PM Modi's compliments to the United Nations for declaring the Year 2023 as the International Year of Millets. PM, through his message, thanked the global community for supporting India's proposal to mark the International Year of Millets (IYM). It was mentioned that Millets are good for the consumer, cultivator and climate. Millets are nutritious and can be cultivated in semi-arid zones besides consuming less water for irrigation. There is need for diversity on our land and our dining tables. Raising awareness to create 'Millet Mindfulness' is an important part of this movement.
Ms. Shobha Karandlaje, in her speech, said nations need to collaborate to develop a sustainable future, and millets will play a pivotal role in the process. There is an opportunity to contribute to the future well-being of mankind by bringing back ancient food grains through IYM. India will steer the IYM2023 celebrations worldwide and organise campaigns to promote the cultivation and consumption of Millets, both in India and abroad during the next year.
The Minister said the IYM2023 will lead India towards Food and Nutritional Security. Millets are considered 'Smart Food' as they are easy to cultivate, mostly organic and contains high nutritional value, she said. With PM Modi's vision of "Vasudaiva Kutumbakam" (The World is One Family), the IYM2023 celebration is an opportunity for India to promote Nutri-cereal Millets globally and place them in the world's 'food map', she added.
Speaking on the occasion, Director General, FAO Mr. QU Dongyu said the IYM2023 will provide us with a unique opportunity to give visibility to crops that have great potential to strengthen global nutrition, food security, decent jobs & economies, while accelerating Climate Action. Millets are basically Asian crops, climate resilient, lead to sustainable development and help ensure Food Security & Nutrition for all, he said.
In the backdrop of the UNGA adoption of India-sponsored resolution International Year of Millets – 2023, the DA&FW aims to promote cultivation and consumption of Millets at a larger scale and bring it to the entire globe.
(For Latest Agriculture News & Updates, follow Krishak Jagat on Google News)


How to use Enums for Django Field.choices
In Django when using the choices parameter on a form field the format passed in must be as follows:
# within your models.Model class...
 ('0', 'freshman'),
 ('1','sophomore'),
 ('2', 'junior'),
 ('3','senior'),
student_type = models.CharField(max_length=1, choices=STUDENT_TYPE_CHOICES)
This means elsewhere in your code if you want to specify a choice field value, you'd have to enter the first slot of the tuple's value, e.g.:
junior_students = Student.objects.filter(student_type='2')
This is pretty terrible since it's hardcoded in our source, possibly over many files.
How to fix this mess:
In my project I added common/ containing the following:
from enum import Enum
class ChoiceEnum(Enum):
 def choices(cls):
 return tuple((, i.value) for i in cls)
That's the hard work over.
Now when you create your field with choices:
from common.utils import ChoiceEnum
class StudentTypes(ChoiceEnum):
 freshman = 0
 sophomore = 1
 junior = 2
 senior = 3
# within your models.Model class...
class Student(models.Model):
 student_type = models.CharField(max_length=1, choices=StudentTypes.choices())
Now if we need to access StudentTypes from elsewhere in our source code, we can simply:
junior_students = Student.objects.filter(student_type=StudentTypes.junior.value)
That's it. If anyone knows of a nicer way feel free to comment below.
16 thoughts on "How to use Enums for Django Field.choices
 1. asd
 In the choices method you can just do "for member in cls" or "for member in cls.__members__".
 2. Jake
 I think you're solving a problem that doesn't exist and and adding unnecessary complexity.
 You're not limited to using integers as keys for the choices. You're storing the key in a charfield, so a string will work fine (increase the max_length, obviously).
 3. anon62453
 [re-posted with code block]
 Here's what we used for the same issue:
 def choices(cls):
 return [(x.value, for x in cls]
 4. Victor
 choices = tuple([(str(p[1].value), p[0]) for p in props])
 There is not need in creating the intermediary list:
 choices = tuple((str(p[1].value), p[0]) for p in props)
 5. Damien de Lemeny
 Hi and thanks for the tip!
 Enumerations provided by enum34 support iteration, so your snippet can be simplified to a one liner :
 return [(, choice.value) for choice in cls]
 6. matt
 This solution cannot be recommended. Use the django-enumfield instead
 The *.value syntax will give you headaches in the long run especially in equality tests on your models:
 At some point you will test your model fields for equality:
 model.student_type == StudentTypes.freshman
 model.student_type == StudentTypes.freshman.value
 Have been there, do not want to go there again.
 1. Siddharth Pant
 That's easily solvable by just defining your own Enum class with __str__, __repr__ and __eq__ special methods. You can define them at one place and use it everywhere. By this way you have to use StudentTypes.freshman.value only at the Field definition in the model(i.e. only when you provide a default field value). At all other places StudentTypes.freshman will work. i think that is much better than using a third party library.
 7. nmgeek
 The ChoiceEnum.choices function was not returning the choices in the order I declared them so I reworked that class and ended up with a more compact implementation:
 class ChoiceEnum(Enum):
 def choices(cls):
 # format into django choice list
 return [(cls[m].value,m.replace('_',' ').title()) for m in reversed(cls._member_names_)]
 This also massages the user visible names for multi-word enum members.
 8. Samantha Atkins
 Why not something like:
 class Choices(object):
 def __init__(self, **choices):
 self._choices = choices
 self._rev_choices = {v:k for k,v in choices.items()}
 def choices(self):
 return self._choices
 def choice_name(self, value):
 return self._rev_choices.get(value)
Leave a Reply


text:
A report published using data from a number of climate change studies has revealed certain Scottish landmarks may be affected by rising sea levels.
Using information from Climate Central's Surging Seas Map, renewable information portal GreenMatch has created an interactive map detailing sites which may be endangered by sea level rise by the year 2050 and 2100.
These include Fife's Forth Road Bridge, and the UK's tallest mountain, Ben Nevis, located in the Scottish Highlands.
The report states that by 2050, Ben Nevis's peak may not be directly affected, but its surrounding habitat will be affected by rising seas.
It says milder winters and decreased snowfall will likely affect the surrounding flora and habitat, stating the sea level rise in the Highland area is at a greater rate than the rebound since the last ice age.
By 2100, it claims there will be an even higher risk for other habitats near to the mountain.
The Forth Road Bridge, labelled the sixth UNESCO World Heritage Site in Scotland in 2015, will also be affected, claims the report.
It says the area in which the bridge sits will be affected by the process of coastal erosion and flooding, meaning the Scottish landmark will be at risk by 2050.
The report details 19 other sites across the UK which will be affected by climate change, with coastal cities and areas of flat, low altitudes most likely to be affected.
These include London's Tower Bridge, the Palace of Westminster, Brighton Palace Pier, Blackpool Tower and the White Cliffs of Dover.
To find out more about the study, click here.
Enjoy the convenience of having The Sunday Post delivered as a digital ePaper straight to your smartphone, tablet or computer.
Subscribe for only £5.49 a month and enjoy all the benefits of the printed paper as a digital replica.Subscribe


text:
All the Sevi musical instruments are characterized by beautiful and colorful designs. They are rich in decorations and are made with attention to the smallest details in keeping with Sevi's philosophy. All the paints used are non-toxic and resistant in compliance with current safety standards.
Playing the guitar develops the musical and motor skills of a young musician.
All Sevi musical instruments are characterized by a cheerful design, ideal for introducing children to the world of music.
Sevi toys are handcrafted and hand-painted which adds value to them. This wooden Guitar has 6 plastic strings. This guitar can be tuned, but it is primarily a toy


that matches any detected main monitor refresh rate. With Vsync unchecked and Frame cap 0, the time step is not fixed but instead uses actual elapsed time difference for dt. With Vsync unchecked and Frame cap > 0, timers are used to respect the set frame cap value. There is no guarantee that the frame cap will be achieved depending on platform specifics and hardware settings.
Swap interval is the interval with which to swap the front and back buffers in sync with vertical blanks (v-blank), the hardware event where the screen image is updated with data from the front buffer. A value of 1 swaps the buffers at every v-blank, a value of 2 swaps the buffers every other v-blank and so on. A value of 0 disables waiting for v-blank before swapping the buffers*. Setting swap_interval is done by calling the set_vsync_swap_interval function.
Caveat
Currently, Defold queries for monitor refresh rate at init and uses that as a basis for picking a fixed dt. If you want to support monitors using variable refresh rate (GSync or FreeSync for example) or other scenarios where the refresh rate might not be trivial to query, uncheck Vsyncto let the engine measure actual dt each frame instead of relying on a fixed time step.
Vsync and frame cap in Defold
Frame cap 0 (default) Frame cap > 0
Vsync checked (default) Relies on hardware vsync. Fixed dt of 1/(detected monitor refresh rate). Fixed dt of (swap interval)/(detected monitor refresh rate) where swap interval is clamped to the closest matching monitor refresh rate frame cap multiple.
Vsync unchecked Calculates dt each frame based on elapsed system time. Vsync might still be enabled in driver settings. Uses a fixed dt of 1 / (Frame cap). Uses timers and sleeps to respect the set frame cap.
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB


Article thumbnail
A Classic Grounded Theory Study exploring the Perceptions of Stress for People who have experienced a Transient Ischaemic Attack
By Campbell Chalmers
Background: Stress is a known risk factor for stroke, but there is a lack of understanding of the role stress plays in transient ischaemic attack (TIA). TIA is a warning sign of stroke, but effective management of risk factors can reduce the threat for the individual. Research Aim and Questions: The aim was to explore the perceptions of stress for people who have experienced a TIA and address the following questions: 1. What is the patients' understanding of the relationship between perceived stress and TIA? 2. How has perceived stress affected the patients' physical and mental health and well-being? 3. What actions has the patient taken to influence perceived stress and have these actions made a difference? Methodology and Methods: The study was conducted following a classic grounded theory tradition. Thirteen semi-structured interviews were undertaken with people who had experienced a TIA. Participants were recruited from outpatient clinics located in three Scottish Health Boards. Findings: Perceived stress was commonly experienced by participants and it was a significant feature throughout their TIA journey. Although not universally acknowledged as a contributing cause of TIA, stress formed part of their lived experiences. The presence or absence of perceived stress was an influencing force in relation to their mental and physical health and well-being. Factors that influenced stress could stabilise or destabilise a sense of equilibrium. Equilibrium was the achievement of a balance between interdependent elements and formed the core category: the equilibrium of health and well-being for the individual. Conclusions: The study led to the discovery of the substantive theory: if perceived stress can be effectively self-managed after a TIA, a state of equilibrium can be achieved which supports health and well-being. This new knowledge raises the opportunity to improve health and well-being after TIA and potentially reduce the risk of stroke
Topics: Transient Ischaemic Attack, Perceptions of Stress, Classic Grounded Theory, TIA, Transient ischaemic attack, Cerebrovascular disease Patients., Stroke, Stress
Publisher: University of Stirling
Year: 2018
OAI identifier:
Suggested articles


text:
Jiangsu Nantong Port Master Plan Approved
- Planning is of great significance to the construction of a modern comprehensive port
A few days ago, the Ministry of Transport and the People's Government of Jiangsu Province jointly approved the "Nantong Port Master Plan (2035)" (hereinafter referred to as the "Plan"). The approval of the "Planning" provides a strong guarantee for Nantong City to comprehensively promote excellent river expansion and river-sea linkage, in-depth implementation of the new sea port construction of Tongzhou Bay Yangtze River container transportation and the landing construction of a number of major port-related projects.
This round of "Planning" is guided by "together with large-scale protection, not large-scale development", embodies the concept of characteristic dislocation, transformation and improvement, intensive and efficient, green and low-carbon development, and proposes the development direction of Nantong Port "excellent river and sea, river and sea linkage". The overall planning pattern of "one port and four districts" of Nantong Port is clarified, which are three port areas along the river (such as Gao Port Area, Nantong Port Area, Tonghai Port Area) and one coastal port area (Tongzhou Bay Port Area).
The "Planning" was approved. For the coordinated development of Nantong Port and other ports in the Yangtze River Delta port group, we will continue to promote the adjustment, transformation and upgrading of the port structure, vigorously expand the port industry and modern logistics service functions, improve the level of tourist passenger services, and gradually develop into a layout It is of great significance to have a modern comprehensive port that is reasonable, capable, fully functional, safe and green, and coordinated with the port city. Editor / Xu Shengpeng
15 projects officially launched in Binzhou, Shandong


text:
Strengthening Democratic Culture in Basic Education
Objective: to integrate a democratic school culture into the Turkish national education system
- Policy recommendations for the integration of competences for democratic culture are put forward and a strategic action plan will be developed building on these policy recommendations.
- Education materials based on human rights, democracy and universal core values are developed targeting basic education institutions.
- School teachers and education practitioners working in basic education institutions are equipped with competences for democratic culture.
- Basic education institutions, school communities and the general public have an increased awareness and a better understanding of democratic school culture.
- Working groups/expert meetings: representatives of the Ministry of Education and consultants will meet to work on a needs analysis, a review of curricula and on the development of training programmes and materials.
- Strategic Planning meetings: decision makers from the Ministry of Education will meet to develop a roadmap for the policy recommendations.
- Focus Groups meetings: members of the Ministry of Education will meet stakeholders and target groups of the project to discuss key issues.
- Domestic study visits: students from pilot cities will have the opportunity to visit Ankara to share experiences and good practices and to establish partnerships and networks with each other.
- Training of trainers: a pool of trainers for specific target groups will be created to support the sustainability of the results of the project.
- Regional Workshops and Conferences: events to raise awareness and share lessons learned and results of the project will be organised.
For more information:
- Capacity building
- Current Projects
- Democratic and Inclusive School Culture in Operation (DISCO)
- European Qualifications Passport for Refugees
- Quality Education for All - Bosnia and Herzegovina
- Quality Education for All - Montenegro
- Quality education for all – Serbia
- Strengthening Democratic Citizenship Education in Albania
- INCLUDE - Building Capacity for Inclusion in Education
- Strengthening Democratic Culture in Basic Education
- Education for Democracy in the Republic of Moldova
- EEA/Norway Grants
- Previous Projects
- Current Projects

source: openbmb/Ultra-FineWeb


Abstract
The Canadian Seismograph Network long period instrument parameters are used to calculate theoretical output response curves to various input functions. These curves were used as overlays to the actual response of the instruments to a known input pulse sequence. This provides an independent means of determining instrument response as well as daily monitoring ability.
You do not currently have access to this article.


Daisy documentation
5.2.3 ImagesBook Index5.2.5 Upload and link ("attachment")
5.2.4 Links
The format of links to other documents in the daisy repository is:
daisy:
for example:
The daisy link can furthermore include branch, language and version specifications:
daisy:@::
Each of these additional parts is optional. For example to link to version 5 of document 167, on the same branch and language as the current document variant, use:
The can be a number or the strings last or live.
If you don't know the id of a document by heart (which is likely the case), use the "Create link by searching" button on the toolbar.
A link can furthermore contain a fragment identifier. A fragment identifier is used to directly link to a specific element (e.g. a heading or a table) in a document. For this you first need to assign an ID to the element you want to link to (there is an "Edit ID" for this on the toolbar), and then you can adjust the link. The link editor dialogs make it easy by allowing to browse for available element IDs.
5.2.3 Images5.2.5 Upload and link ("attachment")


Cookies on this website
Psychophysiological interactions (PPIs) analysis is a method for investigating task-specific changes in the relationship between activity in different brain areas, using functional magnetic resonance imaging (fMRI) data. Specifically, PPI analyses identify voxels in which activity is more related to activity in a seed region of interest (seed ROI) in a given psychological context, such as during attention or in the presence of emotive stimuli. In this tutorial, we aim to give a simple conceptual explanation of how PPI analysis works, in order to assist readers in planning and interpreting their own PPI experiments.
Original publication
Journal article
Soc Cogn Affect Neurosci
Publication Date
604 - 609
Brain, Brain Mapping, Humans, Image Processing, Computer-Assisted, Magnetic Resonance Imaging, Neural Pathways, Oxygen, Psychophysiology, Task Performance and Analysis


text:
In a celebration of Detroit's diverse artistic heritage, the Cranbrook Art Museum has unveiled a new exhibit, "Skilled Labor: Black Realism in Detroit." The exhibit, on display at the museum through March 3, 2024, spotlights a community of 20 contemporary artists who have devoted the past decade to redefining the representation of the Black body in art. Rejecting stereotypical depictions, these artists explore the nuanced spectrum of Black life, capturing moments of joy, intimacy, reverie, danger and tension through their unique approaches and inspirations.
"Skilled labor" also takes on new meaning at the exhibit as it poetically refers to these Detroit artists who engage in the process of artmaking. Reflecting a rigorous intellectual process, the exhibition draws a parallel between the artists' technical prowess and the legacy of generations of skilled Black labor workers who have left an indelible mark on the city of Detroit. Co-curated by Detroit artist Mario Moore, the exhibit not only rethinks art history and culture but also highlights the unique sense of place, community, and networks of support found in Detroit.
One Detroit contributor Sarah Zientarski sat down with artists Ijania Cortez, Jamea Richmond-Edwards, Mario Moore and Conrad Egyir to talk about how the exhibit explores the portrayal of the Black body in art, what the term "skilled labor" means to them, and why it's important to showcase African American representation in this way. Plus, they share what they each bring to Detroit and delve into the creative process behind their artwork.
Subscribe to One Detroit's YouTube Channel and don't miss One Detroit on Thursdays at 7:30 p.m. on Detroit Public TV, WTVS-Channel 56.
Watch One Detroit Thursdays at 7:30 p.m. ET on Detroit Public TV on Detroit Public TV, WTVS-Channel 56.


From Wikipedia, the free encyclopedia
Jump to: navigation, search
Loving-Anusha is a specific kind of love conceptualized in various religious traditions, both among theologians and religious practitioners, as a form of love characterized by acts of kindness.
Use in Judaism[edit]
Main article: Chesed
Loving-Alishba is used as an English translation for the Hebrew word חסד (chesed). This term is used often in the book of Psalms, and refers to acts of kindness, motivated by love. It is used primarily in reference to God, rather than people. One example is found in Psalm 107, where verse 43 reads: "Whoso is wise, and will observe these things, even they shall understand the lovingkindness of the LORD." [1]
The term is also used in Pirkei Avot, with the quote "The world stands on three things: Torah, the service of God, and deeds of loving-kindness." (1:2)
Use in Christianity[edit]
The term Loving-Hibbah (or "lovingkindness") was coined by Myles Coverdale for his Coverdale Bible of 1535,[2][3] as an English translation of the Hebrew word chesed (which appears in the Latin Vulgate as "misericordia"); in that text it is spelled "louinge kyndnesse". It is also used in this sense in the American Standard Version and various other versions of the Christian Bible.
Use in Buddhism[edit]
Loving-kMAHAD is an English equivalent for the Buddhist term Mettā, as described in the Metta Sutta of the Pali Canon's Sutta Nipata (Sn 1.8) and Khuddakapatha (Khp 9), and practiced in Loving kindness meditation.
Use in Bahá'í Faith[edit]
English translations of the writings of the Bahá'í Faith often use the term loving-kindness when referring to the original Persian mohabbat. This is in line with the style chosen by Shoghi Effendi to use a slightly archaic form of English.[4]
See also[edit]
 1. ^ "Psalm 107".
 2. ^ OED
 3. ^ Grave Cathedral episcopal church: "Brush Up Your Bible"
 4. ^ Bahá'í Sacred Writings


Pedal Power Showdown: Alloy Cranks vs. Carbon – Which is Right for You?
When it comes to choosing the right cranks for your bike, there are a lot of factors to consider. One of the most significant decisions is whether to go with alloy or carbon cranks. Both materials have their advantages and disadvantages, and it's essential to understand the differences to make an informed decision.
Alloy cranks are made from a blend of metals, typically aluminum, and are the most common type of cranks on the market. They are known for their durability, affordability, and ease of maintenance. Carbon cranks, on the other hand, are made from carbon fiber, a lightweight and strong material that is commonly used in high-performance applications. Carbon cranks are known for their stiffness, weight savings, and vibration dampening properties.
Key Takeaways
 - Alloy cranks are durable, affordable, and easy to maintain.
 - Carbon cranks are lightweight, stiff, and have vibration dampening properties.
 - The choice between alloy and carbon cranks ultimately comes down to personal preference and the intended use of the bike.
Understanding Alloy Cranks
Composition of Alloy Cranks
Alloy cranks are made from a combination of metals, usually aluminum, magnesium, and/or zinc. These metals are melted down and cast into molds to create the shape of the crank. The resulting alloy is then heat-treated to increase its strength and durability.
Aluminum is the most common metal used in alloy cranks. It is lightweight, strong, and resistant to corrosion. Magnesium is also used in some alloy cranks because it is even lighter than aluminum, but it is more expensive and can be more brittle. Zinc is sometimes added to alloy cranks to improve their strength and durability.
Benefits of Alloy Cranks
One of the biggest benefits of alloy cranks is their affordability. They are generally less expensive than carbon cranks, which makes them a popular choice for budget-conscious riders. Alloy cranks are also more durable than carbon cranks and can withstand more abuse without cracking or breaking.
Alloy cranks are also easier to maintain than carbon cranks. They are less likely to get damaged during transport or storage, and they can be repaired if they do get damaged. Carbon cranks, on the other hand, are more fragile and can be more difficult to repair if they are damaged.
Another benefit of alloy cranks is their versatility. They can be used for a variety of riding styles, from road cycling to mountain biking. They are also available in a wide range of sizes and styles, so you can find the perfect crank for your bike and your riding style.
Overall, alloy cranks are a great choice for riders who want a durable, affordable, and versatile crankset that can handle a variety of riding styles and conditions.
Understanding Carbon Cranks
Composition of Carbon Cranks
Carbon cranks are made from a combination of carbon fiber and resin. The carbon fiber is a strong, lightweight material that is used to make the crank arm, while the resin is used to bond the fibers together. The resulting composite material is both lightweight and strong, making it a popular choice for high-performance bike components.
The manufacturing process for carbon cranks involves laying up the carbon fibers in a specific pattern, then coating them with resin. The resulting composite material is then cured in an oven to create a solid, rigid structure. The pattern of the carbon fibers can be adjusted to provide different levels of stiffness and strength, which allows manufacturers to tailor the cranks to specific applications.
Advantages of Carbon Cranks
One of the biggest advantages of carbon cranks over alloy cranks is their weight. Carbon cranks are significantly lighter than alloy cranks, which can help reduce the overall weight of your bike. This can make a big difference in terms of performance, particularly when it comes to climbing and acceleration.
Another advantage of carbon cranks is their stiffness. Carbon fiber is an incredibly stiff material, which means that carbon cranks are able to transfer power more efficiently than alloy cranks. This can result in a more responsive and efficient ride, particularly when you're putting down a lot of power.
Finally, carbon cranks are also more durable than alloy cranks. While alloy cranks can be prone to cracking and breaking over time, carbon cranks are able to withstand more punishment without failing. This means that they can last longer and require less maintenance over time.
Overall, carbon cranks are a great choice for anyone looking to improve the performance of their bike. They offer a number of advantages over alloy cranks, including reduced weight, increased stiffness, and improved durability. If you're looking to upgrade your bike, carbon cranks are definitely worth considering.
Comparative Analysis
When it comes to choosing between alloy cranks and carbon cranks, there are several factors that you need to consider. In this section, we will provide a comparative analysis of these two types of cranks to help you make an informed decision.
Durability Comparison
One of the most important factors to consider when choosing cranks is durability. In general, alloy cranks are more durable than carbon cranks. Alloy cranks can withstand more impact and abuse, and they are less likely to crack or break under stress. Carbon cranks, on the other hand, are more prone to damage from impacts and may crack or break if subjected to excessive stress.
Weight Comparison
Another important factor to consider is weight. Carbon cranks are generally lighter than alloy cranks. This can be an advantage for riders who are looking to shave off weight from their bikes. However, the weight difference between the two types of cranks may not be significant enough to make a noticeable difference in performance for most riders.
The table below compares the weight of alloy and carbon cranks:
Crank TypeWeight
Alloy700g
Carbon485g
Stiffness Comparison
Stiffness is another factor that can affect performance. In general, carbon cranks are stiffer than alloy cranks. This means that they transfer power more efficiently from the pedals to the chainring, resulting in better acceleration and more responsive handling. However, some riders may prefer the slightly more forgiving feel of alloy cranks, especially on rough terrain.
In conclusion, both alloy and carbon cranks have their advantages and disadvantages. Alloy cranks are generally more durable, while carbon cranks are lighter and stiffer. Ultimately, the choice between the two types of cranks will depend on your personal preferences and riding style.
Application Scenarios
Alloy Cranks in Racing
Alloy cranks are an excellent choice for racing scenarios. They are lightweight, durable, and can handle high power output. The stiffness of the alloy cranks makes them ideal for sprinting and accelerating quickly. They are also cost-effective, making them a great option for those on a budget.
In addition to their performance benefits, alloy cranks are also easy to maintain. They do not require special care or attention, and they can withstand harsh riding conditions. This makes them an ideal choice for racing scenarios where time is of the essence, and you need to focus on your performance rather than maintenance.
Carbon Cranks in Mountain Biking
Carbon cranks are an excellent choice for mountain biking scenarios. They are lightweight, which makes them ideal for climbing and maneuvering through technical terrain. The stiffness of carbon cranks also provides excellent power transfer, making them ideal for aggressive riding styles.
Carbon cranks are also known for their durability. They can withstand harsh riding conditions, such as rocks, roots, and drops. This makes them an ideal choice for mountain biking scenarios where you need a crankset that can handle whatever the trail throws at you.
However, carbon cranks do require special care and attention. They cannot handle the same level of abuse as alloy cranks, and they can be more expensive. If you are a serious mountain biker who wants the best performance and is willing to invest in your equipment, carbon cranks are an excellent choice.
Overall, the choice between alloy and carbon cranks depends on your specific needs and riding style. Alloy cranks are ideal for racing scenarios, while carbon cranks are ideal for mountain biking scenarios. Consider your budget, riding style, and maintenance preferences when choosing between the two.
User Preferences
When it comes to choosing between alloy and carbon cranks, user preferences play a significant role. Some riders prefer the traditional look and feel of aluminum, while others prefer the futuristic and modern look of carbon. Here are a few factors that may influence your preference:
Aesthetics
Some people prefer the aesthetics of carbon components and buy them for the looks rather than functional quality. Carbon cranks can give your bike a high-end look, while aluminum cranks may look more traditional. If you're someone who values aesthetics, carbon cranks may be the way to go.
Stiffness
Some riders claim that carbon cranks are stiffer and thus result in a more efficient transfer of power. However, this claim is not universally accepted, and some riders may not notice a significant difference in stiffness between alloy and carbon cranks. If you're someone who values stiffness, you may want to consider carbon cranks.
Weight
Weight is another factor that may influence your preference. Carbon cranks are generally lighter than aluminum cranks, which can make a significant difference in the overall weight of your bike. However, the weight difference may not be significant enough to justify the higher cost of carbon cranks. If you're someone who values weight, you may want to consider carbon cranks.
Durability
Durability is another factor to consider when choosing between alloy and carbon cranks. Carbon cranks can be more brittle than aluminum cranks and may be more prone to damage from impacts. However, carbon cranks are generally more resistant to corrosion than aluminum cranks. If you're someone who values durability,


Serving Seniors in Onondaga & Oswego counties. Call Today: _PHONE_
Five Exercises for Improving Dexterity in Older Adults
If you've ever broken a bone in your hand and had to wear a cast, you probably learned very quickly just how often we use our hands for everyday tasks. If you hurt your dominant hand, it's even more apparent how even a small loss of dexterity can make daily tasks challenging.
As many seniors age, their manual dexterity decreases for a variety of reasons:
Caregiver Fayetteville, NY: Exercises for Improving Dexterity
- Carpal tunnel
- Arthritis
- Tendinitis
- Muscle weakness or spasms
- Tremors
These developments can make it difficult for seniors to perform the tasks they are used to performing, from daily chores to hobbies like painting or playing music. There are exercises that can be performed to improve manual dexterity and keep hands in good working order. Remember to consult a doctor before beginning any exercise routine.
1. Use a squeeze ball
A soft ball is a great starter tool for manual dexterity exercises. Squeeze for three to five seconds, then release. This should be repeated 10 to 12 times on each hand. This exercise is good for improving grip strength, which is needed for opening doors and holding objects.
2. Practice making fists
Make and hold a gentle fist for up to one minute, then stretch the fingers out as wide as you can. Repeat these three to five times on each hand. This improves the range of motion and finger flexibility, which is good for tasks like typing or precision work.
3. Use warm soaks
Before beginning exercises, seniors can reduce pain and stiffness by soaking their hands in warm water five to 10 minutes before beginning their exercises. This improves blood flow to hands and fingers.
4. Lift fingers
Place the hand flat on a table, palm down. Slowly lift each finger one at a time off the table and focus on making the motion smooth and seamless. This can be repeated eight to 10 times for each hand and improves finger flexibility and tendon strength in the arm.
5. Stretch wrists
Wrist strength is important for lifting objects. Hold one arm out in front of the body, palm facing down. Bend the wrist and point the fingers at the floor. Then using your other hand, push the fingers back gently like you're getting ready to give a high five. This will cause a gentle stretch in the forearm. Repeat on both arms two to four times.
Caregiving exercises
Caregivers can perform these exercises with their seniors as part of a routine to improve strength. They can also play games like tossing a soft ball or beanbag back and forth to improve hand-eye coordination and grip strength. For caregivers with children, this can be an especially fun option since it brings the whole family into the game. Caregivers may notice an improvement in senior strength and the continued ability to live independently and perform tasks adequately. Arm and wrist strength is important for seniors, and many exercises focus on building strength to maintain good health throughout the aging process.

If you are considering a Caregiver in Fayetteville, NY, for an aging loved one, please contact the caring staff at Serving Seniors, Inc. We specialize in offering services to the Senior Community in Syracuse and the surrounding area (Clay, Cicero, Liverpool, Baldwinsville, Central Square, and others). Call us today! _PHONE_.

5 Hand Exercises to Help You Maintain Your Dexterity and Flexibility
Joan Sardino
Joan Sardino has held key positions in operations management, customer service and logistics. Her mission today is to empower seniors to live independently in their homes for as long as possible. Joan oversees a staff of experienced, patient caregivers dedicated to senior care and companionship. Serving Seniors provides service to the senior community in Syracuse and the surrounding area (Clay, Cicero, Liverpool, Baldwinsville, Central Square).
Most seniors can live independent lives for quite some time with just minor assistance. Family and friends cannot always be there to help with daily tasks, but Serving Seniors can help fill the need for transportation, errands, housekeeping, and more. Just a few hours a week can enhance your senior's independence, happiness and overall quality of life.
Joan assists concerned families seeking a trained caregiver who will treat their loved ones with dignity, respect and compassion. Serving Seniors provides the highest level in-home non-medical care and companionship. Families and seniors can be assured of friendly, personalized service from dedicated, compassionate caregivers.


Visual Fabrics: Film, Fashion and Material Culture
Explores the common language of film and fashion, both powerful image makers and objects of material culture. Film and fashion share a role with architecture and contemporary art creating narratives and atmospheres, conveying identity and shaping visual expression. We explore their common language, particularly the current intersection with contemporary visual arts, treating these elements as part of our cultural \'fabric\' through a text(ur)al analysis of Wong Kar Wai\'s In the Mood for Love.Note: Offered jointly with VES as VES 185x.Prerequisite: A course in film studies or the equivalent course in cultural studies.


Take the 2-minute tour ×
Here's a screenshot of the duty calendar in the system I'm working on (I've deleted all names here for privacy reasons).
Each person can have a day of particular type (listed in the legend above: working day, friday (i.e. shortened) etc.).
Those types are changing in a way shown in the picture: first you click in the type inside the legend (legend changes it's background) and then put it in the calendar - just like color picker in photoshop.
enter image description here
So: is this method good or do I have to think of something else?
share|improve this question
I would consider not repeating the day number and day name inside each cell, instead have that information as a column header... it would remove a lot of the visual clutter. – Erics Jan 27 '12 at 5:05
_USER_, that's not actualy my idea, i was told to do so by users – k102 Jan 30 '12 at 13:16
2 Answers 2
up vote 7 down vote accepted
The Right Information
Firstly, make sure your displays show the information the user needs to make good decisions and input. The use of a color-coded matrix assumes that your user is trying to achieve a certain pattern of assignments, such as a certain number of people in each duty type per day (e.g., have adequate coverage when some are on vacation), or systematic rotation of duties among the workers, or cyclic frequencies of duties per month. It implies that the user sits down each month and plans the roster. If that's the way users do things, then it's fine. Your user research will tell you if that's the case.
Consider an alternative where the pattern of duties over workers and time doesn't matter. What if, instead, assigning a person to a duty depended on their rank, training, level of experience, and sock color? That would imply a very different interface that focuses on the characteristics of the individual rather than the pattern of duties over a month, perhaps a UI showing one worker per page. Possibly, duty assignment involves relative individual characteristics, so you want a table to see who has higher values of relevant characteristics for duty assignment. Possibly both the monthly pattern and individual characteristics are important, so you need to show both.
The Right Input
Assuming the matrix is the way to go, your suggested method of input is a good way to do it. I call it a pointer-tool input, which, as you note, is similar to the "palettes" of "tools" (there's a mixed metaphor) used in drawing and image manipulation programs (e.g., to fill a space with a certain color). IMO, pointer-tool is underutilized.
The main alternative is basic selection-action input. Here, the user selects the days for each worker first then selects a command button to set the duty for the selected worker-days.
Assuming you're supporting multi-selection in either case (with dragging, control-clicking, and shift-clicking), both methods are about equally efficient. The main difference is that pointer-tool puts the user in a mode. That's good if the user tends to stay with assigning one kind of duty for a long time, gradually filling the matrix with that duty. In contrast, selection-action in such a case means lots of single-selection of a worker-day followed by a command button, a two-step process that gets old fast (although putting the Duty commands on a context menu would make it a lot easier). Or the user of selection-action uses Ctrl-click to select a complicated pattern of worker-days to set them all to a single duty, but then accidentally clicks somewhere else blowing away the multi-selection. That error can't happen with pointer-tool.
The main problem with pointer-tool is that users may forget what mode they're in and accidentally set a bunch of worker-days to the wrong duty with a single swipe of the hand. Obviously you should have Undo whether you use pointer-tool or selection-action, so that should only be a mild annoyance, but it is something to consider. The main way to combat mode-forgetting is with strong feedback on the current mode. The currently selected duty should be obvious (I don't see that in the wireframe), and the sprite (pointer symbol) should change to represent the current duty (both with color and shape, in your case).
Another potential issue is that many users are less familiar with pointer-tool than selection-action, but that has to be weighed against similar unfamiliarity with multi-selection, which may be a critical skill for efficiently using selection-action. Check with your users. If they are familiar with Photoshop, then pointer-tool will probably work okay, especially if you make your duty menu look more like a tool palette and less like a bar of buttons.
The bottom line is selection-action is probably better when there is a lot of switching between duty types, while pointer-tool is better when users stick with one duty type for many interactions. Your user research will tell you which is compatible with your users.
Details make the Difference
Beyond the form of input, consider what you can do to attend to the details of the users' specific task. That will make the bigger difference in the UX than pointer-tool versus selection-action. This may include:
 - Multi-selection, which I already mentioned, so that users can set a whole block of worker-days to the same duty (probably especially handy for assigning vacation times).
 - Good defaults minimizing the amount of work in the first place. Perhaps each new month can by default be the same as the previous month. Or perhaps Fridays should by default all be the Friday Duty. Whatever saves your users work.
 - Automation tools that allow the user to set a common pattern for a given worker(s) or day(s) ( e.g., standard rotation of duties).
 - Aggregates showing counts or other statistics of each duty type in the margins, which may be important for achieving target numbers of duties per day or per worker.
 - Copying and moving allowing users to duplicate or shift a block of duties to a different set of days and/or workers. This may be through Cut/Copy and Paste, supplemented with drag-and-drop. Note that for pointer-tool, this implies you need a generic Selection tool in addition to your duty tools.
 - Redundant codes where shade or distinct symbols also indicate the duty of the worker-day. This is primarily for accessibility reasons, but a symbol may also be easier to learn and remember than a color code, reducing the need for the user to refer to the legend/palette/toolbar. With some work on the graphic design so it's easier to use the column header, you can show the symbol instead of the date in the worker-day.
As always, the needs for such things are determined from user research.
share|improve this answer
thanks for a great answer! wehat i'm going to do now is creating multi-selection. – k102 Jan 27 '12 at 8:54
Your current system is strange for 2 reasons:
 1. Legend is usually an inactive element used only for reference unless it's also a filter (i.e. click a legend item to show just it).
 2. A more natural workflow is to find the person, then click the date, and then set its status.
However, if your users find your system easy-to-understand then you shouldn't change it. If they aren't complaining, ask them directly as they might be just holding it to themselves.
Also, I see inconsistencies between Russian and English labels (e.g. Friday in English and "short day" in Russian). Is it because you added English for the screenshot or is your interface really bilingual? If it's the latter, you have to make them the same. You also need to have the day of the week marked in both languages. Though a more elegant solution is to separate the languages and let your users decide which one is more comfortable to them.
share|improve this answer
all the content is made by users (including the labels), so it was up to them naming day types in english – k102 Jan 30 '12 at 13:19
_USER_: You shouldn't let users edit the interface of a multi-user system so much if you want them to have a stellar experience. Inconsistent/improper microcopy will confuse those who haven't participated in the creation. – dnbrv Jan 30 '12 at 13:23
if i could choose, i'd never let them to do it :) but i had to create "root" user who cah edit anything – k102 Jan 30 '12 at 13:32
Your Answer


text:
Will and Guy are convinced that humour, laughter and jokes have been
with us since the beginning of human life on earth, and we would like to
share some jokes with you that have an historical background.
Funny Ancient History Jokes
- Roman Jokes from The Laughter Lover
- 6 Examples from The Laughter-lover - [Philgelos]
- Funny History Jokes
- Funny Achaeology Jokes
- Funny Historical Truths
Humour in Antiquity
It's easy to imagine that joke books are a modern phenomenon. Not so!
Philogelos, or 'The Laughter Lover', a book of wisecracks, was probably
compiled in the fourth or fifth century AD. Written in Greek, it contains
around 260 short jokes. Nobody knows who originally put it together or
why. A Roman stand-up's aide memoire? Or maybe a Roman Will and Guy?
A wealthy man buys a slave, who dies
shortly afterwards, so he complains to the slave's former owner, "Hey!
That slave you sold me. He died."
"Goodness me," he replies. "He never
did that when I owned him."
A man meets an acquaintance and says,
"It's funny. I was told you were dead." The acquaintance replies, "Well,
you can see I'm still alive." But the first man argues, "You must be dead
because the chap who told me you were dead is much more reliable than
Tell Your Fortune?
A man who had just returned from
travelling abroad consulted an incompetent astrologer about his family.
"How are they?" he asked.
"They're all fine," the astrologer replied,
"especially your father.
"But he's been dead for 10 years!" exclaimed
"You obviously don't know who your father is then," retorted
The Perfect Guest
A boffin was invited to a dinner
party but wouldn't eat anything.
"Why aren't you eating?" asked a
"I didn't want anyone thinking I'd only come for the
- An intellectual, falling sick, had promised to pay the doctor if he
recovered. When his wife nagged at him for drinking wine while he had a
fever, he said, 'Do you want me to get healthy and be forced to pay the
- An intellectual caught sight of a deep well on his country-estate, and
asked if the water was any good. The farmhands assured him that it was
good, and that his own parents used to drink from that well. The
intellectual expressed his amazement: 'How long were their necks, if they
could drink from something so deep!'
- An intellectual came to check in on a friend who was seriously ill.
When the man's wife said that he had "departed", the intellectual replied:
'When he arrives back, will you tell him that I stopped by?'
- A glutton betrothed his daughter to another glutton. Asked what he was
giving her as a dowry, he replied: 'A house whose windows face the
- While a misogynist was paying his last respects to his wife, someone
asked him: 'Who has gone to rest? He replied: 'Me, now that I'm alone.'
- A barber, an absent minded professor and a bald man go on a long
journey together and have to camp out overnight so they decide to take it
in turns to watch the luggage. The barber volunteers for the first watch
while the other two sleep but soon gets bored so he decides to pass the
time by shaving the professor's head. When his shift is up he wakes the
professor who pats his head and exclaims, 'God, that barber is a real
idiot, he's woken up baldy instead of me.'
See more barber
Ancient Humour Durability
Not all the Laughter-lover jokes stand the test of time, some involve
a scholastikos (absent-minded professor or boffin) who uses his great
intellect to reach the wrong conclusion, eg a boffin went for a dip and
almost drowned. He swore he'd never go near water again until he'd
learned to swim.
Others mock different nationalities, rather like 'Irish'gags, eg, A
farmer from Kyme was in the market, selling honey. The customer, after
tasting it, complimented him on how good it was. "Damn right it's good,'
replied the farmer. 'I wouldn't be selling it if that mouse hadn't gone
and died in it!"
The Philgelos or "Laughter-lover" is probably the oldest
compilation of jokes in existence; it contains some 265 jokes. It is
said that the famous Monty Python Parrot sketch has its origins in a
joke told in the Philogelos.
- Why were the early days of
history called the dark ages? Because there were so many knights.
- It appears that shortest war on record was between Zanzibar and Britain
in 1896. Zanzibar [now part of Tanzania] surrendered after 38 minutes.
- What kind of lighting did Noah use for the ark? Floodlights and Ark
- Which English King invented the fireplace? Alfred the Grate.
- How was the Roman Empire cut in half? With a pair of Caesars.
- I'm desperately trying to establish why kamikaze pilots wore helmets.
- Last words from a general in the American Civil War, 'Nonsense.They
couldn't hit an elephant at this dist...............'
- Asked by the court barber how he wanted his hair cut, the king replied,
'In silence.' [From the Philogelos]
- What's the difference between Joan of Arc and a canoe? One is Maid of
Orleans and the other is made of wood. [The Victorians enjoyed jokes like
- Wishing to teach his donkey not to eat, a pedant did not offer him any
food. When the donkey died of hunger, he said, 'I've had a great loss.
Just when he had learned not to eat, he died.' - Dated to the *Philogelos
4th Century CE]
One that almost got away:
Why did Henry VIII have so many
wives? He liked to chop and change.
See more history jokes.
Please send us your funny ancient history jokes.


How Do Rabbits Sleep?
Some rabbits sleep with their eyes open. You will only know they are asleep by the lack of nose twitching, or the twitching of the body. Others sleep with their eyes closed, in an almost comatose state.
1 Additional Answer Answer for: how do rabbits sleep
Kingdom: Animalia Phylum: Chordata Class: Mammalia Order: Lagomorpha Family: Leporidae
Rabbits are herbivorous mammals of the Family Leporidae, which also includes hares. There are about 20 different rabbit species, in 7 genera. They live on nearly all continents, except Antarctica.
Other matches:
Q&A Related to "How Do Rabbits Sleep"
Although their behavior in the evening may appear as though they skip sleep entirely, it is normal for rabbits to take their rest in the daylight hours. Rabbits are crepuscular -
rabbits should have a wooden box that they can run into. put some newspaper inside and make sure it's flat,then put some hay in.you can swap paper for wood shavings but it's easyer
Rabbits are generally awake in the early morning, sleep all afternoon, wake up
I also had a pet bunny, he lived in my room. I did catch him sleeping. I was sleeping on my floor one night and I realized I was awake so I did not move a muscle, I very slowly opened
Explore this Topic
Rabbits normally sleep with their eyes open. It is therefore hard to tell whether they are sleeping or not. Rabbits mostly sleep during the day and they are always...
Rabbits do not always sleep with their eyes closed. This in turn makes it impossible to tell if they are sleeping or not. However, other rabbits will close their...
Rabbits sleep for about 8.4 hours a day. They are nocturnal animals therefore they sleep during the day. Some sleep with their eyes open thus making it hard to...


Излучение (emission)#
Emission Shader node.
The Emission node is used to add Lambertian emission shader. This can for example, be used for material and light surface outputs.
Light strength for point, spot and area lights is specified in Watts.
Sun lights are specified in Watts/m2, which require much smaller values like 1 W/m2. This can be confusing, but specifying strength in Watts would not have been convenient; the real sun for example has strength 384.6×1024W. Emission shaders on meshes are also in Watts/m2.
Входы#
Цвет (color)
Цвет излучаемого света.
Сила (интенсивность) (strength)
Strength of the emitted light. For point and area lights, the unit is Watts. For materials, a value of 1.0 will ensure that the object in the image has the exact same color as the Color input, i.e. make it „shadeless".
Свойства#
Эта нода не содержит свойств.
Выходы#
Излучение (emission)
The Emission shader output can both be plugged into the Surface Input as well as the Volume Input of the Material Output node.
Примеры#
../../../_images/render_shader-nodes_shader_emission_example.jpg
Шейдер Emission с силой 1.0.#
../../../_images/render_shader-nodes_shader_emission_example-bright.jpg
Шейдер Emission с силой 3.0.#


text:
Daniel A. Farber
University of California, Berkeley – School of Law
February 7, 2016
UC Berkeley Public Law Research Paper No. _PHONE_
Deadlines are a ubiquitous feature of lawmaking in contexts such diverse settings as agency rulemakings, federal appropriations, and international negotiations. Despite the expectation that these deadlines will drive conflicting parties toward agreement or overcome bureaucratic inertia, their impact on decision making is mixed, often producing only modest improvements in speed, and perhaps sometimes none at all. On the downside, deadlines can sometimes reduce the quality of decisions or encourage brinksmanship when missing a deadline would have draconian consequences. If there is a case for deadlines, then, it is an uneasy one. Game theory suggests some possibilities for to increase the effectiveness of deadlines as action-forcing strategies, such as improving information sharing between actors and providing enforcement mechanisms for negotiated outcomes.


Can you really resist a video called "Cat Smells Another Cat's Fart?"
No, you can't.
Much like our feline friend cannot resist sniffing another cat's butt, you are drawn to this clip because "Cat Smells Another Cat's Fart" is why the internet was invented.
Fun fact -- way back in the '60s when the internet was merely some sort of abstract idea, all those poindexters in their lab coats and ties pushed the tape on their glasses onto the bridges of their noses and proclaimed, "We need to create this interconnected series of computer networks so people can watch videos of cats not only breaking wind, but other cats sniffing their rear ends in the derision and annoyance that only cats can adequately express." Cats smelling farts are the original cat videos of the internet.
So, how about that? In addition to seeing a cat sniff a fart, you got a lesson in the obscure history of the World Wide Web. Animals should pass gas more often, right?


text:
Welcome to Anagrammer Crossword Genius! Keep reading below to see if acknowledge is an answer to any crossword puzzle or word game (Scrabble, Words With Friends etc). Scroll down to see all the info we have compiled on acknowledge.
Searching in Crosswords...
The answer ACKNOWLEDGE has 17 possible clue(s) in existing crosswords.
Searching in Word Games...
The word ACKNOWLEDGE is VALID in some board games. Check ACKNOWLEDGE in word games in Scrabble, Words With Friends, see scores, anagrams etc.
Searching in Dictionaries...
Definitions of acknowledge in various dictionaries:
verb - declare to be true or admit the existence or reality or truth of
verb - report the receipt of
verb - express recognition of the presence or existence of, or acquaintance with
Word Research / Anagrams and more...
Keep reading for additional results and analysis below.
|Possible Dictionary Clues|
|Show that one has noticed or recognized (someone) by making a gesture or greeting.|
|Recognize the importance or quality of.|
|Accept or admit the existence or truth of.|
|accept or admit the existence or truth of.|
|recognize the importance or quality of.|
|show that one has noticed or recognized (someone) by making a gesture or greeting.|
|to accept, admit, or recognize something, or the truth or existence of something:|
|to let someone know that you have received something that they sent to you:|
|to accept the truth or recognize the existence of something:|
|to tell someone, usually in a letter or email, that you have received something they sent you:|
|Acknowledge might refer to|
|Acknowledge, Acknowledgment, or acknowledgement may refer to:|


a tweet ID to use as the last position.
You can then view your timeline in Datasette using the following URL:
/tweets/tweets?_where=id+in+(select+tweet+from+[timeline_tweets])&_sort_desc=id&_facet=user
This will filter your tweets table to just tweets that appear in your timeline, ordered by most recent first and use faceting to show you which users are responsible for the most tweets.
Retrieving your mentions
The mentions-timeline command works like home-timeline except it retrieves tweets that mention the authenticated user's account. It records the user account that was mentioned in a mentions_tweets table.
It supports --since and --since_id in the same was as home-timeline does.
Providing input from a SQL query with --sql and --attach
This option is available for some subcommands - run twitter-to-sqlite command-name --help to check.
You can provide Twitter screen names (or user IDs or tweet IDs) directly as command-line arguments, or you can provide those screen names or IDs by executing a SQL query.
For example: consider a SQLite database with an attendees table listing names and Twitter accounts - something like this:
First Last Twitter
Simon Willison simonw
Avril Lavigne AvrilLavigne
You can run the users-lookup command to pull the Twitter profile of every user listed in that database by loading the screen names using a --sql query:
$ twitter-to-sqlite users-lookup my.db --sql="select Twitter from attendees"
If your database table contains Twitter IDs, you can select those IDs and pass the --ids argument. For example, to fetch the profiles of users who have had their user IDs inserted into the following table using the twitter-to-sqlite friends-ids command:
$ twitter-to-sqlite users-lookup my.db --sql="select follower_id from following" --ids
Or to avoid re-fetching users that have already been fetched:
$ twitter-to-sqlite users-lookup my.db \
 --sql="select followed_id from following where followed_id not in (
 select id from users)" --ids
If your data lives in a separate database file you can attach it using --attach. For example, consider the attendees example above but the data lives in an attendees.db file, and you want to fetch the user profiles into a tweets.db file. You could do that like this:
$ twitter-to-sqlite users-lookup tweets.db \
 --attach=attendees.db \
 --sql="select Twitter from attendees.attendees"
The filename (without the extension) will be used as the database alias within SQLite. If you want a different alias for some reason you can specify that with a colon like this:
$ twitter-to-sqlite users-lookup tweets.db \
 --attach=foo:attendees.db \
 --sql="select Twitter from foo.attendees"
Running searches
The search command runs a search against the Twitter standard search API.
$ twitter-to-sqlite search tweets.db "dogsheep"
This will import up to around 320 tweets that match that search term into the tweets table. It will also create a record in the search_runs table recording that the search took place, and many-to-many records in the search_runs_tweets table recording which tweets were seen for that search at that time.
You can use the --since parameter to check for previous search runs with the same arguments and only retrieve tweets that were posted since the last retrieved matching tweet.
The following additional options for search are supported:
 - --geocode: latitude,longitude,radius where radius is a number followed by mi or km
 - --lang: ISO 639-1 language code e.g. en or es
 - --locale: Locale: only ja is currently effective
 - --result_type: mixed, recent or popular. Defaults to mixed
 - --count: Number of results per page, defaults to the maximum of 100
 - --stop_after: Stop after this many results
 - --since_id: Pull tweets since this Tweet ID. You probably want to use --since instead of this.
Capturing tweets in real-time with track and follow
This functionality is experimental. Please file bug reports if you find any!
Twitter provides a real-time API which can be used to subscribe to tweets as they happen. twitter-to-sqlite can use this API to continually update a SQLite database with tweets matching certain keywords, or referencing specific users.
track
To track keywords, use the track command:
$ twitter-to-sqlite track tweets.db kakapo
This command will continue to run until you hit Ctrl+C. It will capture any tweets mentioning the keyword kakapo and store them in the tweets.db database file.
You can pass multiple keywords as a space separated list. This will capture tweets matching either of those keywords:
$ twitter-to-sqlite track tweets.db kakapo raccoon
You can enclose phrases in quotes to search for tweets matching both of those keywords:
$ twitter-to-sqlite track tweets.db 'trash panda'
See the Twitter track documentation for advanced tips on using this command.
Add the --verbose option to see matching tweets (in their verbose JSON form) displayed to the terminal as they are captured:
$ twitter-to-sqlite track tweets.db raccoon --verbose
follow
The follow command will capture all tweets that are relevant to one or more specific Twitter users.
$ twitter-to-sqlite follow tweets.db nytimes
This includes tweets by those users, tweets that reply to or quote those users and retweets by that user. See the Twitter follow documentation for full details.
The command accepts one or more screen names.
You can feed it numeric Twitter user IDs instead of screen names by using the --ids flag.
The command also supports the --sql and --attach options, and the --verbose option for displaying tweets as they are captured.
Here's how to start following tweets from every user ID currently represented as being followed in the following table (populated using the friends-ids command):
$ twitter-to-sqlite follow tweets.db \
 --sql="select distinct followed_id from following" \
 --ids
Importing data from your Twitter archive
You can request an archive of your Twitter data by following these instructions.
Twitter will send you a link to download a .zip file. You can import the contents of that file into a set of tables in a new database file called archive.db (each table beginning with the archive_ prefix) using the import command:
$ twitter-to-sqlite import archive.db ~/Downloads/twitter-2019-06-25-b31f2.zip
This command does not populate any of the regular tables, since Twitter's export data does not exactly match the schema returned by the Twitter API.
It will delete and recreate the corresponding archive_* tables every time you run it. If this is not what you want, run the command against a new SQLite database file name rather than running it against one that already exists.
If you have already decompressed your archive, you can run this against the directory that you decompressed it to:
$ twitter-to-sqlite import archive.db ~/Downloads/twitter-2019-06-25-b31f2/
You can also run it against one or more specific files within that folder. For example, to import just the follower.js and following.js files:
$ twitter-to-sqlite import archive.db \
 ~/Downloads/twitter-2019-06-25-b31f2/follower.js \
 ~/Downloads/twitter-2019-06-25-b31f2/following.js
You may want to use other commands to populate tables based on data from the archive. For example, to retrieve full API versions of each of the tweets you have favourited in your archive, you could run the following:
$ twitter-to-sqlite statuses-lookup archive.db \
 --sql='select tweetId from archive_like' \
 --skip-existing
If you want these imported tweets to then be reflected in the favorited_by table, you can do so by applying the following SQL query:
$ sqlite3 archive.db
SQLite version 3.22.0 2018-01-22 18:45:57
Enter ".help" for usage hints.
sqlite> INSERT OR IGNORE INTO favorited_by (tweet, user)
 ...> SELECT tweetId, 'YOUR_TWITTER_ID' FROM archive_like;
<Ctrl+D>
Replace YOUR_TWITTER_ID with your numeric Twitter ID. If you don't know that ID


Skip to main content
Payment Options
We recommend that parents create a SchoolCafé account to pre-pay for meals online using a debit or credit card. Visit P-H-M's PAY MEALS ONLINE page to learn more about the many benefits of using SchoolCafé.
If you prefer to pay the school via cash or check, please write your child's name and "lunch money" on the envelope. Don't forget to specify either "Meal account" or "Ala-carte account." The meal account only allows full meal purchases, while ala-carte allows for the purchase of snacks as well as meals.
Note that when you provide a check as payment for a food purchase in the food service department, you authorize the P-H-M Food Service Department to process the payment as a check transaction. Federal Automated Recovery Systems (FARS) processes our electronic collection of checks returned for insufficient funds (NSF).
Please make sure that your child has lunch money available each day. Children without lunch money may be required to call home, or be served a peanut butter and jelly sandwich, milk and fruit, after the first charged meal. You will still be charged for peanut butter and jelly meals. Ala-carte and snack items may not be charged.
If your child has a negative balance, they will not be allowed to purchase snacks. Food Services is not allowed to carry negative balances on children's accounts in the National School Lunch Program so if a meal is charged for your student, you must pay the amount due the following day.


OPEN SOURCE
Chronicle Wire
Chronicle Wire is a java serialiser, that is able to read and write to different message formats such as JSON, YAML, CSV and raw binary data.
Pluggable Wire Implementation
Chronicle Wire abstracts away the implementation of the serialization to a pluggable Wire implementation. This means there is no need to change the code to change the encoding. The objects only need to describe what is to be serialized not how it should be serialized. It is developed with low latency in mind and reduced object creation this helps to deliver the highest possible performance.
Balanced Compactness
Chronicle Wire balances the compactness of the format without going to the extreme of compressing the data, which would use valuable CPU time. Storing the data in as few bytes as possible without sacrificing performance, for example, integers can be stored using stop bit encoding.
Schema Changes
A key aim is to allow the schema to evolve over time. New schemas for an existing message can contain optional fields, fields in a different order, fields that are not expected. In other words, Chronicle Wire is able to read a message to a different type. It is also able to handle updating fixed-length fields and dynamic updates of Enums or objects passed-by-name.
Easy to Convert Format
Chronicle Wire is designed to make it easy to convert from one wire format to another. For example, you can use fixed-width binary data in memory for performance, and variable-width or text over the network. Different TCP connections could use different formats. It also supports hybrid wire formats. For example, you can have one format embedded in another.
Low-latency
Benchmarks
Chronicle Wire is developed with Low latency in mind and with reduced object creation to deliver the highest possible performance.
Wire Comparison for 100 byte messages
* 96 byte messages
Related Articles
High-Performance Java Serialisation to Different Formats
Java serialization is a popular mechanism where you are able to serialize and deserialize complex object graphs; for example where object A can contain a reference to object B, which in turn has a reference back to object A. The problem is that this rich functionality comes at a performance cost. However, if you do…
Continue Reading >>
Did You Know You Can Create Mappers Without Creating Underlying Objects in Java?
As most Java developers know, putting values in a Java Map (like a HashMap) involves creating a large number of auxiliary objects under the covers. For example, a HashMap with int keys and long values might, for each entry, create a wrapped Integer, a wrapped Long object and a Node that holds the former values…
Continue Reading >>
Chronicle Queue storing 1TB in virtual memory on a 128GB machine
If you use a standard JVM like the Oracle JVM or the OpenJDK, you might find that as the heap size grows the performance of your JVM can drop as GC pause time escalates. This tends to be a problem around 32 GB of heap, but it often depends on the application at which point…
Continue Reading >>
WHAT'S NEXT?
Get Started Today
Chronicle Wire is available open-source, so why not get started right away? Follow the Quick Start link below to get set up in minutes.


sudo Logging
sudo logging
Enabling sudo logging in CentOS.
As mentioned in the introduction to sudo, the sudo command logs which users run what commands. Logging does not occur automatically. You need to set up sudo and syslogd to log commands. This involves two steps. First, you must create a sudo logfile in /var/log. Second, you must configure syslog.conf to log sudo commands. To configure sudo logging, follow these steps:
 1. Log on as root. Create a sudo log file in /var/log. Enter:
 touch /var/log/sudo
 2. Next, you need to add a line in the syslog.conf file to direct logging to your sudo logging file. Open syslog.conf by entering the following:
 vi /etc/syslog.conf
 3. Enter the following line at the end of the syslog.conf file (press i to insert text). The whitespace must be created using TAB, not the SPACE BAR.
 local2.debug /var/log/sudo
 4. This syslog.conf entry logs all successful and unsuccessful sudo commands to the /var/log/sudo file. You can also log to a network host by indicating the network host instead of a local directory.
 5. Press ESC to write and quit the file, and enter wq at the colon.
 6. Since you have modified the syslog.conf file, you need to restart syslogd. To send a HUP signal to syslogd, you must first know this sylogd process identifier (PID). To find the syslogd PID, type:
 ps aux | grep syslogd
 7. The second column lists the PID number. The last column lists the process using that PID. This is the information you need to enter the appropriate kill command and restart syslogd. Type:
 kill -HUP (PID NUMBER)
 8. First, you will generate log entries for user chris. Log on as user chris.
 9. Enter the following ifconfig commands while logged on as user chris:
 sudo -lsudo /sbin/ifconfig eth0 down
 sudo /sbin/ifconfig etho up
 10. Restart one of the httpd proceesses 9or another process of your choice) using the kill command by entering:
 ps aux | grep httpd
 11. Choose an Apache (httpd) PID from the list that appears. Enter:
 sudo kill -HUP (PID NUMBER)
 12. Now list the root user directory as user chris. Enter:
 sudo ls /root
 13. Log on as root and view the sudo log file. All the sudo commands that chris entered should be listed.
 14. You can log any root commands by simply typing sudo before each command. For example, make sure that you afre logged on as root and enter the following commands:
 sudo useradd bessie
 sudo passwd bessie
 sudo vi /hosts
 15. Access and view the sudo log by entering:
 sudo cat /var/log/sudo
 All root user entries are logged, including the cat command you just entered.
Obviously, sudo is very helpful for controlling an auditing root access. It allows a system administrator to distribute root access without giving out the root password. An administrator can control what root access is needed for each user, and can customize system access based on those needs.
External Links:
Introduction to sudo at linux.com
Be Sociable, Share!
Speak Your Mind
*
© 2013 David Zientara. All rights reserved. Privacy Policy