Your browser doesn't support the features.For the best experience please use the PC or other browser
Use a spacebar or arrow keys to navigate，Chrome works even better
请使用空格键或方向键进行浏览，使用Chrome浏览器效果更佳


Atmospheric CO2 at Mauna Loa Observatory vs. Unated Nations Climate Change Conferences
Visualizatoin based on D3. Data sources: NOAA / Earth System Research Laboratory and Unated Nations.


| Properties' Details |
CenterHorizontally
boolean CenterHorizontally;
- Description
- determines whether the table is centered horizontally on the page.
|
|
CenterVertically
boolean CenterVertically;
- Description
- determines whether the table is centered vertically on the page.
|
|
PrintAnnotations
boolean PrintAnnotations;
- Description
- enables printing of cell annotations.
|
|
PrintGrid
boolean PrintGrid;
- Description
- enables printing of the cell grid.
|
|
PrintHeaders
boolean PrintHeaders;
- Description
- enables printing of column and row headers.
|
|
PrintCharts
boolean PrintCharts;
- Description
- enables printing of charts.
|
|
PrintObjects
boolean PrintObjects;
- Description
- enables printing of embedded objects.
|
|
PrintDrawing
boolean PrintDrawing;
- Description
- enables printing of drawing objects.
|
|
PrintFormulas
boolean PrintFormulas;
- Description
- enables printing of formulas instead of their results.
|
|
PrintZeroValues
boolean PrintZeroValues;
- Description
- enables printing of zero-values.
|
|
PrintDownFirst
boolean PrintDownFirst;
- Description
- specifies the print order for the pages within each sheet.
If true, the order for printing pages begins with
top-to-bottom, then continues with the next set of cell columns
to the right. If false, the order for printing pages begins
with left-to-right, then continues with the next set of cell
rows to the bottom.
|
|
LeftPageHeaderContent
XHeaderFooterContent LeftPageHeaderContent;
- Description
- contains the content of the header for left pages.
After changing the header text contents, this property has to be
reinserted into the property set.
- See also
- HeaderFooterContent
|
|
LeftPageFooterContent
XHeaderFooterContent LeftPageFooterContent;
- Description
- contains the content of the footer for left pages.
After changing the footer text contents, this property has to be
reinserted into the property set.
- See also
- HeaderFooterContent
|
|
RightPageHeaderContent
XHeaderFooterContent RightPageHeaderContent;
- Description
- contains the content of the header for right pages.
After changing the header text contents, this property has to be
reinserted into the property set.
- See also
- HeaderFooterContent
|
|
RightPageFooterContent
XHeaderFooterContent RightPageFooterContent;
- Description
- contains the content of the footer for right pages.
After changing the footer text contents, this property has to be
reinserted into the property set.
- See also
- HeaderFooterContent
|
|
FirstPageNumber
short FirstPageNumber;
- Description
- contains the page number applied to the first page for this sheet.
The value 0 indicates that the page numbers are continued from
the previous sheet.
|
|
PageScale
short PageScale;
- Description
- contains the scaling factor (in percent) for printing the sheet.
|
|
ScaleToPages
short ScaleToPages;
- Description
- contains the number of pages the sheet will printed.
|
|
ScaleToPagesX
short ScaleToPagesX;
- Usage Restrictions
- optional
- Description
- contains the number of horizontal pages the sheet will printed on.
- Since
- OOo 2.0
|
|
ScaleToPagesY
short ScaleToPagesY;
- Usage Restrictions
- optional
- Description
- contains the number of vertical pages the sheet will printed on.
- Since
- OOo 2.0
|
|
Copyright © 2013, The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache, the Apache feather logo, Apache OpenOffice and OpenOffice.org are trademarks of The Apache Software Foundation. Other names may be trademarks of their respective owners.


PuppetDB 1.4 » Maintaining and Tuning
PuppetDB requires a relatively small amount of maintenance and tuning. You should become familiar with the following occasional tasks:
Monitor the Performance Dashboard
Once you have PuppetDB running, visit the following URL, substituting in the name and port of your PuppetDB server:
http://puppetdb.example.com:8080/dashboard/index.html
Note: You may need to edit PuppetDB’s HTTP configuration first, changing the
host
setting to the server’s externally-accessible hostname. If you’ve used the PuppetDB module to install, you’ll need to set thelisten_address
parameter. When you do this, you should also configure your firewall to control access to PuppetDB’s cleartext HTTP port.
PuppetDB uses this page to display a web-based dashboard with performance information and metrics, including its memory use, queue depth, command processing metrics, duplication rate, and query stats. It displays min/max/median of each metric over a configurable duration, as well as an animated SVG “sparkline” (a simple line chart that shows general variation). It also displays the current version of PuppetDB and checks for updates, showing a link to the latest package if your deployment is out of date.
You can use the following URL parameters to change the attributes of the dashboard:
width
= width of each sparkline, in pixelsheight
= height of each sparkline, in pixelsnHistorical
= how many historical data points to use in each sparklinepollingInterval
= how often to poll PuppetDB for updates, in milliseconds
E.g.: http://puppetdb.example.com:8080/dashboard/index.html?height=240&pollingInterval=1000
Deactivate Decommissioned Nodes
When you remove a node from your Puppet deployment, it should be marked as deactivated in PuppetDB. This will ensure that any resources exported by that node will stop appearing in the catalogs served to the remaining agent nodes.
- PuppetDB can automatically deactivate nodes that haven’t checked in recently. To enable this, set the
node-ttl
setting. -
If you prefer to manually deactivate nodes, use the following command on your puppet master:
$ sudo puppet node deactivate <node> [<node> ...]
- Any deactivated node will be reactivated if PuppetDB receives new catalogs or facts for it.
Although deactivated nodes will be excluded from storeconfigs queries, their data is still preserved.
Note: Deactivating a node does not remove (e.g.
ensure => absent
) exported resources from other systems; it only stops managing those resources. If you want to actively destroy resources from deactivated nodes, you will probably need to purge that resource type using theresources
metatype. Note that some types cannot be purged (e.g. ssh authorized keys), and several others usually should not be purged (e.g. users).
Clean Up Old Reports
When the PuppetDB report processor is enabled on your Puppet master, PuppetDB will retain reports for each node for a fixed amount of time. This defaults to 14 days, but you can alter this to suit your needs using the report-ttl
setting. The larger the value you provide for this setting, the more history you will retain; however, your database size will grow accordingly.
View the Log
PuppetDB’s log file lives at /var/log/pe-puppetdb/pe-puppetdb.log
(for PE users) or /var/log/puppetdb/puppetdb.log
(for open source users). Check the log when you need to confirm that PuppetDB is working correctly or to troubleshoot visible malfunctions. If you have changed the logging settings, examine the log4j.properties file to find the log.
The PuppetDB packages install a logrotate job in /etc/logrotate.d/puppetdb
, which will keep the log from becoming too large.
Tune the Max Heap Size
Although we provide rule-of-thumb memory recommendations, PuppetDB’s RAM usage depends on several factors, so memory needs will vary depending on the number of nodes, frequency of Puppet runs, and amount of managed resources. 1000 nodes that check in once a day will require much less memory than if they check in every 30 minutes.
So the best way to manage PuppetDB’s max heap size is to estimate a ballpark figure, then monitor the performance dashboard and increase the heap size if the “JVM Heap” metric keeps approaching the maximum. You may need to revisit your memory needs whenever your site grows substantially.
The good news is that memory starvation is actually not very destructive. It will cause OutOfMemoryError
exceptions to appear in the log, but you can restart PuppetDB with a larger memory allocation and it’ll pick up where it left off — any requests successfully queued up in PuppetDB will get processed.
Tune the Number of Threads
When viewing the performance dashboard, note the MQ depth. If it is rising and you have CPU cores to spare, increasing the number of threads may help process the backlog faster.
If you are saturating your CPU, we recommend lowering the number of threads. This prevents other PuppetDB subsystems (such as the web server, or the MQ itself) from being starved of resources and can actually increase throughput.
Redo SSL Setup After Changing Certificates
If you’ve recently changed the certificates in use by the PuppetDB server, you’ll also need to update the SSL configuration for PuppetDB itself.
If you’ve installed PuppetDB from Puppet Labs packages, you can simply re-run the puppetdb-ssl-setup
script. Otherwise, you’ll need to again perform all the SSL configuration steps outlined in the installation instructions.


What is a Well Preserved Salute? Each week, we give a Salute to a special senior in our community. Below are some of the amazing talks with these fantastic people!
Anyone can nominate or be nominated for a Senior Salute of the Week. Do you know someone who deserves some recognition, just for being awesome or doing something special? Send their name into
Click on the links below to listen to our most recent Salutes of the Week.
7‐30‐2016 Ingrid Simon
7‐23‐2016 Kenny Randall
Kenny has just been awarded 40 years with NewView Oklahoma!
7‐16‐2016 Catherine Ford
nominated by Garner T. Watson
7‐9‐2016 Genny Perry‐ Happy 91st Birthday, Lady!


User Profile
-
About Me
-
Education
B.S. in Computer Science from the University of Tennessee at Knoxville
-
Location
Malibu, California
-
Skills
Sales Team Supervision Territory Management New Account Development
-
Notes
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam fermentum enim neque.
-
Settings


Filaur of the Gray Pillar:
Have you met
Miner Bolter
yet? No? He has not yet paid his guild dues. Go and collect payment from him.


To start your game and get critical information on your HQ and fleet statuses, you can open the Admiral Dashboard. This will show you information such as HQ Rank, Ship slots, Equipment LoS, Air Fighter Power, Fleet Speed, Morale, etc. You may activate this via:
For Windows / Linux: F12
or Ctrl + Shift + J
While on Mac: Cmd + Opt + I
When the Chrome panel opens, there will be a tab "KanColle"
To just start the game now
If you want to opt out of all those features and just want to start the game now without the "Admiral Dashboard", you may click the button below. Opening the panel too late in the middle of a gameplay session will not ensure that data is updated. Things like equipment list and construction timers are loaded at the start of the game.


| DOSE: |
repeated |
oral |
Pharms - Phenazepam |
(powder / crystals) |
[Erowid Note: Based on a very limited pool of available data, 200 mgs of phenazepam ingested over 4 days is considered an extremely high dose]
As a long term drug abuser this cheap, legal, fairly easy to obtain, and relatively strong benzo (phenazepam) sounded like a dream drug.
In these reports I found when I (as a long time benzo user) expected - total blackouts, amnesia, crazy behaviors, etc - all typical of an extreme benzodiazepine overdose. I was concerned about this only because phenazepam is active at such low doses (recommend is like 0.5mg, recreational is more like 2-10 depending on tolerance).
You get this stuff pure - a careless (see benzo-induced haze) individual could easily mistake 20mg for 5mg even if they were actually trying to dose carefully. A digi-scale accurate down to 0.0001 g is needed for this drug to be used safely imo -- unfortunately I don't have one, couldn't find one in time, and eyeballed my doses for this trip report.
This potential danger seemed to only make me want to purchase some phenazepam more, so I went ahead and got a 200mg sample order from an online vendor. Things went fine and 2 weeks later I had the drug in my hand. 200mg is a TINY amount of material (I expected this), but this only made me more nervous about eyeballing it. So it begins...
[Erowid Note: A volume amount of one powder doesn't necessarily weigh the same as the same volume of another powder. For substances active at such a small dose, eyeballing is particularly unwise. See related article]
To start, I emptied all 200mg onto a clean sheet of paper. I divided it in half, then again, then again, then again. I now have a pile of pure phenazepam that I'm guessing was between 4mg and 20mg (most likely in the middle somewhere). I then took a straightened paper clip that had marks all along it. I wet one end with my tongue, and rolled it in phenazepam. It didn't stick to the paper clip very well, but that's not a big deal. I licked off about 1/4 inch off the paper clip four times and waited to see if this would do anything. From what I could tell the pile was the exact same size.
Within 20 minutes I could feel that I was under the influence of a benzo. It was not very strong though (much like 10mg valium), but I waited another 35 muntues before redosing about twice as much as before.
After that the next few days are a haze I can not remember much of all. I knocked my awesome fax/scanner/copier/printer off my TV and broke it... I dropped my laptop and broke that as well. Those are just bits of memory though. It was your typical benzo black-out. If you've done this before you know what I mean. It's not worth it to find out what it's like if you don't know, so don't go off and OD on my account.
 I was not impress with phenazepam in that regard.  I honestly don't know how long this trip lasted. It didn't help that on the same day I ran out of phenazepam I found a bunch of Zoleplon (sleeping pills, non-benzo, but very similar mechanism of action). On the subject of the Zoleplon - I emptied out at least 10 of her caps and insufflated them. The effects were similar to benzos, and a lot more pleasant than other z-drugs (the class zoliplon belongs to) I have tried.
Back to phenazepam. The 200mg lasted at least 4 days, and I was dosing constantly, with little sleep. I didn't do much (NO DRIVING), but lay around and entertain myself in various ways. The high was nice, but not even close to as good as that of xanax.
At some point I injured a nerve in my left arm which is a real bummer. I've lost most feeling in my left ring finger (mostly on the parts close to the left pinky). My left hand's pinky is almost totally numb. It constantly feels numb, yet throbs with pain. It's like the feeling you get after smashing a finger with a hammer. So much pain, that it's just a kinda tingly numb.... well that's my left pinky for now. Every now and then if I move my left arm the wrong way it feels like I've hit my 'funny bone' and the neurons in my arm light up with pain. Oh lovely.
This is sadly similar to something that happened to me during another benzo-induced haze (klonopin that time), and I have faith that with time this will go away. In fact, this is much less of an injury as my last neuropathic damage caused by drug use.
The good side of phenazepam:
-cheap
-strong
-legal
-functional - I was able to job search online reasonably well during all this
-slightly euphoric
-very effective for anxiety
The downside
-very amnesiac
-STRONG
-very long lasting
-moreish (combined with amnesia this is a huge negative)
If you like benzos and know your shit.... have at it. It's not that great. I like drugs, and don't see myself ordering more of this any time in the near future (if ever). This is not a drug for somebody that doesn't know what they're doing.
Hope this all makes sense. I'll be happy to expand on the parts missing, but as I said -- I don't remember much, and didn't do much -- basically sat around doing phenazepam for a few days randomly doing something extremely destructive.
Random thoughts and notes:
-I give it a C- as a drug.
-I divided up the larger quantities to reduce the chance of catastrophic overdose. I limited myself to 50mg/day (and that is A LOT), and locked away the rest).

PLEASE BE VERY CAREFUL WITH THIS DRUG, it is the real deal and is much longer lasting than the benzos people are used to.
-I actually think my starter dose was perfect, but there are too many variables to give precise directions.
-Just dose carefully and slowly unlike me. Luckily this benzo does kick in quick.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


There is something inside, that they can't get to, that they can't touch. That's yours.
I am Yong Yuan, an Computer Vision Algorithm Engineer in Kwai (MeiTuan->KuaiShou). I completed Master's degree in University of Chinese Academy of Sciences on June 22, 2016 and earned Bachelor's degree in Faculty of Science at Xidian University of science and technology of the electronics information on July 1，2013.
My research interests cover Content-based Image Retrieval (more than five years experience), Approximate Nearest Neighbor Search, Content-based Video Copy Detection and Video Classification.
I support open source (@willard-yuan), love coding. In my free time, I dive into writing, losing in thinking, reading books to enrich themselves.
If you are interested in me, you can access to my English resume for more details.


--- layout: post title: "Palm Sunday of the Lord's Passion" date: 2021-03-28 09:00:00 categories: Sunday tags: featured image: /assets/article_images/2020-04-05-Palm-Sunday/PalmSunday.jpeg image2: /assets/article_images/2020-04-05-Palm-Sunday/PalmSunday-mobile.jpg ---
Holy Mass is at the very core of our worship as a Catholic community. Nothing can ever be substituted for the celebration of the Eucharist. But in this exceptional time of difficulty for our communities, our nation, and the whole world, this order of prayer can be offered by individuals and families and engages us in our Sunday celebration of the Word of God. We can pray this prayer in our homes—the “domestic churches” which help build up the Body of Christ on earth—and thus be connected to the entire Church at prayer.
During this time of prayer, we include the opportunity to make a Spiritual Communion. Making a Spiritual Communion is a worthy practice, recommended by innumerable saints throughout the ages, which unites our whole selves to God and his Church.
Taken from the Mass and the Liturgy of the Hours
Leader: O God, ✠ come to my assistance.
Response: O Lord, make haste to help me.
Leader: Glory be to the Father, and to the Son, and to the Holy Spirit:
Response: as it was in the beginning, is now, and ever shall be, world without end. Amen.
All glory, laud, and honor to you, Redeemer King!
To whom the lips of children made sweet hosannas ring.
You are the King of Israel, and David's royal Son,
Now in the Lord's Name coming, our King and Blessed One.
All glory, laud, and honor to you, Redeemer King!
To whom the lips of children made sweet hosannas ring.
The company of angels are praising you on high;
And mortals, joined with all things created, make reply.
All glory, laud, and honor to you, Redeemer King!
To whom the lips of children made sweet hosannas ring.
The people of the Hebrews with palms before you went:
Our praise and prayers and anthems before you we present.
USCCB Audio Recording of Sunday Readings
Jesus Enters Jerusalem in TriumphWhen Jesus and his disciples drew near to Jerusalem, to Bethphage and Bethany at the Mount of Olives, he sent two of his disciples and said to them, “Go into the village opposite you, and immediately on entering it, you will find a colt tethered on which no one has ever sat. Untie it and bring it here. If anyone should say to you, ‘Why are you doing this?’ reply, ‘The Master has need of it and will send it back here at once.’” So they went off and found a colt tethered at a gate outside on the street, and they untied it.
Some of the bystanders said to them, “What are you doing, untying the colt?” They answered them just as Jesus had told them to, and they permitted them to do it. So they brought the colt to Jesus and put their cloaks over it. And he sat on it. Many people spread their cloaks on the road, and others spread leafy branches that they had cut from the fields. Those preceding him as well as those following kept crying out: “Hosanna! Blessed is he who comes in the name of the Lord! Blessed is the kingdom of our father David that is to come! Hosanna in the highest!”
The Gospel of the Lord.
―Praise to you, Lord Jesus Christ
The Lord GOD has given me a well-trained tongue, that I might know how to speak to the weary a word that will rouse them. Morning after morning he opens my ear that I may hear; and I have not rebelled, have not turned back.  The Lord GOD is my help, therefore I am not disgraced; I have set my face like flint, knowing that I shall not be put to shame.
The Word of the Lord.
―Thanks be to God.
Reader: My God, my God, why have you abandoned me?
Together: My God, my God, why have you abandoned me?
Reader: All who see me scoff at me; they mock me with parted lips,
they wag their heads: "He relied on the LORD; let him deliver him,
let him rescue him, if he loves him."
Together: My God, my God, why have you abandoned me?
Reader: Indeed, many dogs surround me,
a pack of evildoers closes in upon me;
They have pierced my hands and my feet;
I can count all my bones.
Together: My God, my God, why have you abandoned me?
Reader: They divide my garments among them,
and for my vesture they cast lots.
But you, O LORD, be not far from me;
O my help, hasten to aid me.
Together: My God, my God, why have you abandoned me?
Reader: I will proclaim your name to my brethren;
in the midst of the assembly I will praise you:
"You who fear the LORD, praise him;
all you descendants of Jacob, give glory to him;
revere him, all you descendants of Israel!"
Together: My God, my God, why have you abandoned me?
Christ Jesus, though he was in the form of God, did not regard equality with God something to be grasped. Rather, he emptied himself, taking the form of a slave, coming in human likeness; and found human in appearance, he humbled himself, becoming obedient to the point of death, even death on a cross. Because of this, God greatly exalted him and bestowed on him the name which is above every name, that at the name of Jesus every knee should bend, of those in heaven and on earth and under the earth, and every tongue confess that Jesus Christ is Lord, to the glory of God the Father.
The word of the Lord.
―Thanks be to God.
Narrator (N); Jesus (✠); Voice (V); Crowd (C)
N. The Passion of our Lord Jesus Christ according to Mark.
The Passover and the Feast of Unleavened Bread were to take place in two days’ time.
So the chief priests and the scribes were seeking a way to arrest him by treachery and put him to death. They said,
C. “Not during the festival, for fear that there may be a riot among the people.”
N. When he was in Bethany reclining at table in the house of Simon the leper, a woman came with an alabaster jar of perfumed oil, costly genuine spikenard.
She broke the alabaster jar and poured it on his head. There were some who were indignant.
C. “Why has there been this waste of perfumed oil?
It could have been sold for more than three hundred days’ wages and the money given to the poor.”
N. They were infuriated with her. Jesus said,
✠ “Let her alone. Why do you make trouble for her? She has done a good thing for me. The poor you will always have with you, and whenever you wish you can do good to them, but you will not always have me. She has done what she could. She has anticipated anointing my body for burial. Amen, I say to you, wherever the gospel is proclaimed to the whole world,
what she has done will be told in memory of her.”
N. Then Judas Iscariot, one of the Twelve, went off to the chief priests to hand him over to them. When they heard him they were pleased and promised to pay him money. Then he looked for an opportunity to hand him over. On the first day of the Feast of Unleavened Bread,
when they sacrificed the Passover lamb, his disciples said to him,
V.  Follow him.
Then he will show you a large upper room furnished and ready. Make the preparations for us there.”
N. The disciples then went off, entered the city, and found it just as he had told them; and they prepared the Passover.
N. When it was evening, he came with the Twelve. And as they reclined at table and were eating, Jesus said,
✠ “Amen, I say to you, one of you will betray me, one who is eating with me.”
N. They began to be distressed and to say to him, one by one,
V. “Surely it is not I?”
N. He said to them,
✠ “One of the Twelve, the one who dips with me into the dish. For the Son of Man indeed goes, as it is written of him, but woe to that man by whom the Son of Man is betrayed.
It would be better for that man if he had never been born.”
N. While they were eating, he took bread, said the blessing, broke it, and gave it to them, and said,
✠ “Take it; this is my body.”
N. Then he took a cup, gave thanks, and gave it to them, and they all drank from it. He said to them,
✠ “This is my blood of the covenant, which will be shed for many. Amen, I say to you, I shall not drink again the fruit of the vine
until the day when I drink it new in the kingdom of God.”
N. Then, after singing a hymn, they went out to the Mount of Olives.
N. Then Jesus said to them,
✠ “All of you will have your faith shaken, for it is written:
I will strike the shepherd, and the sheep will be dispersed.
But after I have been raised up, I shall go before you to Galilee.
N. Peter said to him,
V. “Even though all should have their faith shaken, mine will not be.”
N.
N. But he vehemently replied,
V.
N. And they all spoke similarly.
N. Then they came to a place named Gethsemane, and he said to his disciples,
✠ “Sit here while I pray.”
N. He took with him Peter, James, and John, and began to be troubled and distressed. Then he said to them,
✠ “My soul is sorrowful even to death. Remain here and keep watch.”
N. He advanced a little and fell to the ground and prayed that if it were possible the hour might pass him; he said,
✠ “Abba, Father, all things are possible to you. Take this cup away from me, but not what I will but what you will.”
N. When he returned he found them asleep. He said to Peter,
✠ “Simon, are you asleep? Could you not keep watch for one hour? Watch and pray that you may not undergo the test. The spirit is willing but the flesh is weak.”
N. Withdrawing again, he prayed, saying the same thing. Then he returned once more and found them asleep, for they could not keep their eyes open and did not know what to answer him.
He returned a third time and said to them,
✠ “Are you still sleeping and taking your rest? It is enough. The hour has come. Behold, the Son of Man is to be handed over to sinners.
Get up, let us go. See, my betrayer is at hand.”
N. Then, while he was still speaking, Judas, one of the Twelve, arrived, accompanied by a crowd with swords and clubs who had come from the chief priests, the scribes, and the elders.
His betrayer had arranged a signal with them, saying,
V. “The man I shall kiss is the one; arrest him and lead him away securely.”
N. He came and immediately went over to him and said,
V. “Rabbi.”
N. And he kissed him. At this they laid hands on him and arrested him. One of the bystanders drew his sword, struck the high priest’s servant, and cut off his ear.
Jesus said to them in reply,
✠ “Have you come out as against a robber, with swords and clubs, to seize me? Day after day I was with you teaching in the temple area, yet you did not arrest me;
but that the Scriptures may be fulfilled.”
N. And they all left him and fled.
They seized him, but he left the cloth behind and ran off naked.
N. They led Jesus away to the high priest, and all the chief priests and the elders and the scribes came together. Peter followed him at a distance into the high priest’s courtyard and was seated with the guards, warming himself at the fire. The chief priests and the entire Sanhedrin kept trying to obtain testimony against Jesus in order to put him to death, but they found none. Many gave false witness against him, but their testimony did not agree. Some took the stand and testified falsely against him, alleging,
C. “We heard him say, ‘I will destroy this temple made with hands and within three days I will build another not made with hands.’”
N. Even so their testimony did not agree. The high priest rose before the assembly and questioned Jesus, saying,
V. “Have you no answer? What are these men testifying against you?”
N. But he was silent and answered nothing. Again the high priest asked him and said to him,
V. “Are you the Christ, the son of the Blessed One?”
N. Then Jesus answered,
✠ “I am;
and ‘you will see the Son of Man seated at the right hand of the Power
and coming with the clouds of heaven.’”
N. At that the high priest tore his garments and said,
V. “What further need have we of witnesses? You have heard the blasphemy. What do you think?”
N.  Some began to spit on him. They blindfolded him and struck him and said to him,
C. “Prophesy!”
N. And the guards greeted him with blows.
N. While Peter was below in the courtyard, one of the high priest’s maids came along. Seeing Peter warming himself, she looked intently at him and said,
C. “You too were with the Nazarene, Jesus.”
N. But he denied it saying,
V. “I neither know nor understand what you are talking about.”
N. So he went out into the outer court.  The maid saw him and began again to say to the bystanders,
C. “This man is one of them.”
N. Once again he denied it.
N. He began to curse and to swear,
V. “I do not know this man about whom you are talking.”
N.   He broke down and wept.
N. As soon as morning came, the chief priests with the elders and the scribes, that is, the whole Sanhedrin held a council. They bound Jesus, led him away, and handed him over to Pilate. Pilate questioned him,
V. “Are you the king of the Jews?”
N. He said to him in reply,
✠ “You say so.”
N. The chief priests accused him of many things. Again Pilate questioned him,
V. “Have you no answer? See how many things they accuse you of.”
N. Jesus gave him no further answer, so that Pilate was amazed.
N. Now on the occasion of the feast he used to release to them one prisoner whom they requested. A man called Barabbas was then in prison along with the rebels who had committed murder in a rebellion. The crowd came forward and began to ask him to do for them as he was accustomed. Pilate answered,
V. “Do you want me to release to you the king of the Jews?”
N. For he knew that it was out of envy that the chief priests had handed him over. But the chief priests stirred up the crowd to have him release Barabbas for them instead. Pilate again said to them in reply,
V.
N. They shouted again,
C. “Crucify him.”
N. Pilate said to them,
V. “Why? What evil has he done?”
N. They only shouted the louder,
C. “Crucify him.”
N. So Pilate, wishing to satisfy the crowd, released Barabbas to them and, after he had Jesus scourged, handed him over to be crucified.
N. The soldiers led him away inside the palace, that is, the praetorium, and assembled the whole cohort. They clothed him in purple and, weaving a crown of thorns, placed it on him. They began to salute him with,
C. “Hail, King of the Jews!”
N. and kept striking his head with a reed and spitting upon him. And when they had mocked him, they stripped him of the purple cloak, dressed him in his own clothes, and led him out to crucify him. They pressed into service a passer-by, Simon, a Cyrenian, who was coming in from the country, the father of Alexander and Rufus, to carry his cross.
N. They brought him to the place of Golgotha—which is translated Place of the Skull—. They gave him wine drugged with myrrh, but he did not take it. Then they crucified him and divided his garments by casting lots for them to see what each should take. It was nine o’clock in the morning when they crucified him. The inscription of the charge against him read, “The King of the Jews.” With him they crucified two revolutionaries, one on his right and one on his left. Those passing by reviled him, shaking their heads and saying,
C. “Aha!
N. Likewise the chief priests, with the scribes, mocked him among themselves and said,
C. “He saved others; he cannot save himself. Let the Christ, the King of Israel, come down now from the cross that we may see and believe.”
N. Those who were crucified with him also kept abusing him.
N. At noon darkness came over the whole land until three in the afternoon. And at three o’clock Jesus cried out in a loud voice,
✠ “Eloi, Eloi, lema sabachthani?
N. Which is translated,
✠ “My God, my God, why have you forsaken me?”
N. Some of the bystanders who heard it said,
C. “Look, he is calling Elijah.”
N. One of them ran, soaked a sponge with wine, put it on a reed and gave it to him to drink saying,
V. “Wait, let us see if Elijah comes to take him down.”

Here all kneel and pause for a short time.
N. The veil of the sanctuary was torn in two from top to bottom. When the centurion who stood facing him saw how he breathed his last he said,
V. “Truly this man was the Son of God!”
N. There were also women looking on from a distance. Among them were Mary Magdalene, Mary the mother of the younger James and of Joses, and Salome. These women had followed him where he was in Galilee and ministered to him. There were also many other women who had come up with him to Jerusalem.
N. When it was already evening, since it was the day of preparation, the day before the sabbath, Joseph of Arimathea, a distinguished member of the council, who was himself awaiting the kingdom of God, came and courageously went to Pilate and asked for the body of Jesus. Pilate was amazed that he was already dead. He summoned the centurion and asked him if Jesus had already died. And when he learned of it from the centurion, he gave the body to Joseph. Having brought a linen cloth, he took him down, wrapped him in the linen cloth, and laid him in a tomb that had been hewn out of the rock. Then he rolled a stone against the entrance to the tomb. Mary Magdalene and Mary the mother of Joses watched where he was laid.
The Gospel of the Lord.
―Praise to you, Lord Jesus Christ
Leader: By your own blood, Lord, you brought us back to God.
Response: By your own blood, Lord, you brought us back to God.
Leader: From every tribe, and tongue, and people and nation,
Response: you brought us back to God.
Leader: Glory to the Father, and to the Son and to the Holy Spirit.
Response: By your own blood, Lord, you brought us back to God.
Leader: As Christ entered Jerusalem he was greeted as King and Messiah.
Let us adore him, and joyfully praise him:
Response: Blessed is he who comes in the name of the Lord.

Response: Blessed is he who comes in the name of the Lord.
Leader: You went up to Jerusalem to suffer and so enter into your glory;
bring your Church to the paschal feast of heaven.
Response: Blessed is he who comes in the name of the Lord.
Leader: You made the cross the tree of life; give its fruit to those reborn in baptism.
Response: Blessed is he who comes in the name of the Lord.
Leader: Savior of mankind, you came to save sinners;
bring into your kingdom all who have faith, hope and love.
Response: Blessed is he who comes in the name of the Lord.
Leader: In your mercy, continue to sanctify all who are afflicted from the present pandemic, and draw us all closer to you,
and to one another, in this time of suffering.
Response: Blessed is he who comes in the name of the Lord.
Leader: Let us pray together as Jesus taught us:
Together: Our Father, who art in heaven …
Leader: You have given us bread from heaven,
Response: Containing in itself all delight
Together: My Jesus,
I believe that you are present
in the Most Holy Sacrament of the Altar.
I love you above all things,
and I desire to receive you into my soul.
Since I cannot at this moment receive you sacramentally,
come at least spiritually into my heart.
I embrace you as if you were already there
and unite myself wholly to you.
Never permit me to be separated from you,
my Lord and my God!
Amen.
Canticle of Zechariah (Luke 1:68-79)
Together: ✠ Blessed be the Lord, the God of Israel;
he has come to his people and set them free.
He has raised up for us a mighty savior,
born of the house of his servant David.
Through his holy prophets he promised of old
that he would save us from our enemies,
from the hands of all who hate us.
He promised to show mercy to our fathers
and to remember his holy covenant.
This was the oath he swore to our father Abraham:
to set us free from the hands of our enemies,
free to worship him without fear,
holy and righteous in his sight
all the days of our life.
You, my child, shall be called the prophet of the Most High;
for you will go before the Lord to prepare his way,
to give his people knowledge of salvation
by the forgiveness of their sins.
In the tender compassion of our God
the dawn from on high shall break upon us,
to shine on those who dwell in darkness and the shadow of death,
and to guide our feet into the way of peace.
Glory be to the Father, and to the Son,
and to the Holy Spirit:
as it was in the beginning, is now, and ever shall be,
world without end. Amen.
Leader: ✠ May the Lord bless us, protect us from all evil,
and bring us to everlasting life.
Together: Amen.
O Sacred Head surrounded by crown of piercing thorn!
O bleeding Head, so wounded, reviled and put to scorn!
The pow’r of death comes o’er you, the glow of life decays,
Yet angel hosts adore you, and tremble as they gaze.
I see your strength and vigor all fading in the strife,
And death with cruel rigor, bereaving you of life;
O agony and dying! O love to sinners free!

In this, your bitter passion, Good Shepherd, think of me
With your most sweet compassion, unworthy though I be:
Beneath your cross abiding for ever would I rest,
In your dear love confiding, and with your presence blest.
Hymn: “All Glory, Laud, and Honor” – Text: Gloria, laus et honor; Theodulph of Orléans, c. 760-821; tr. by John M. Neale, 1818-1866, alt. Tune: ST THEODULPH, 7 6 7 6 with refrain; Melchior Teschner, 1584-1635. Printed and streamed with permission granted by OneLicense.net podcast/streaming/reprint license A-705112.
Hymn: “O Sacred Head Surrounded” – Text: Salve caput cruentatum; ascr. to Bernard of Clairvauz, 1091-1153; tr. by Henry Baker, 1821-1877. Tune: PASSION CHORALE, 7 6 7 6 D; Hans Leo Hassler, 1564-1612; musical arrangement by Tom Booth, © 2013, Sprit and Song, a division of OCP. All rights reserved. Printed and streamed with permission granted by OneLicense.net podcast/streaming/reprint license A-705112.
Excerpts from The Roman Missal © 2010, ICEL; excerpts from The Liturgy of the Hours © 1994, ICEL. All rights reserved.
Lectionary for Mass for Use in the Dioceses of the United States, second typical edition, Copyright © 2001, 1998, 1997, 1986, 1970 Confraternity of Christian Doctrine; Psalm refrain © 1968, 1981, 1997, International Committee on English in the Liturgy, Inc. All rights reserved. Neither this work nor any part of it may be reproduced, distributed, performed or displayed in any medium, including electronic or digital, without permission in writing from the copyright owner.


--- layout: post date: 2006-02-06 time: "09:00:00" authors: ["Greg Wilson"] title: "First Lecture on Object-Oriented Programming Is Up" tags: ["Curriculum"] ---
I've split the lecture on object-oriented programming in two; the first one is now on the web (without diagrams). This ties with the rewrite of the style lecture for "most changes since the fall", so comments and corrections would be very welcome.
Eleven days 'til the AAAS workshop...


{% extends 'layout.html' %} {% block beforeContent %} {{ hero({ "heading": "NHS.UK BSA Compass pension opt out prototype", "text": "An example of the pension opt out form, created in the NHS prototyping tool kit." }) }} {% endblock %} {% block content %} Start prototype
For more information about the project visit the project wiki on Confluence (login required).
This prototype is a digitised example of the pension opt out form (SD502) built for the dentistry discovery project. We have taken the PDF form and built a web example of it using the NHS prototyping toolkit and digital service manual guidelines.
The form uses "branching" logic to separate the user into the required part section.
Part 1 relates to the Performer user persona. Part 2 relates to the Practice Manager user persona.
It is envisaged that the form would be completed initially by the employee. Upon completion an email with a reference would be sent to the employer payroll department (we understand from our research that this could be a Practice Manager and so this information would need to be captured in Compass). Within this email would be a reference code that the payroll department would use to complete their part of the form.
Once both employer and employee have completed their forms, the BSA would be notified of a completed application and process the form either automatically with a random selection for auditing and security or manually.
The intention of digitising this form is to show during the discovery phase of the project, how this process could work and how it could be scaled up to meet the requirement of putting the FP17 form through the NHS digital service approach.
Visit the NHS digital service manual for guidance and examples.


Legal clerk charged with murder after shooting gunman in court
by AFPA legal clerk who ended a bloody Thai courtroom shooting by grabbing a firearm and killing the gunman has been arrested and charged with murder, police said Thursday.
Three people — two lawyers and the gunman — were shot dead at the Chanthaburi courthouse in eastern Thailand on Tuesday during a hearing over a drawn-out land dispute.
Legal aide who disarmed cop to kill Thai courtroom shooter taken into custody
Police say Thanakorn Theeravarodom, a young paralegal working with the lawyers, grabbed the gun from a guard and shot the assailant, a retired police major general who was one of the litigants in the case.
The clerk was charged with “intentional killing”, Khomsorn Mabumrung, commander of Chanthaburi provincial city police, told AFP.
“He said it’s self-defence.”
Authorities said this week that the two sides in the case had been in court for more than 10 years arguing over a large plot of land.
Thailand has high rates of gun ownership and petty personal disputes and romantic and business rivalries are often resolved with firearms.
But a series of courthouse shootings in Thailand have exposed flaws in the legal system’s security.
More than a week ago three drug suspects — including an American — shot and stabbed their way out of a court in the seaside town of Pattaya before being tracked down.
Early last month a Thai judge in the insurgency-battered south shot himself in the chest in front of a packed court after acquitting several murder suspects and decrying the judicial system.
Related:
Legal aide who disarmed cop to kill Thai courtroom shooter taken into custody
Thai court shooter dies; police say opposing counsel was also armed
Mass shooting in Thai courtroom kills 2 as retired cop opens fire on opposing counsel


Set the timeout value for ssh slave launch in seconds. If empty, timeouts will be disabled.
This will only set the timeout for slave launching; once launched, the timeout will not apply.


This sample presents a model how to create a tooltip widget that loads the tooltip content using the HTML panel mechanism. The tooltips that will appear on mouse over the gray area are loaded form separate html files that have different content inside them.


This is the API
https://localhost:8080/api/v1/domestic-payments/{DomesticPaymentId}/payment-details
GET
DomesticPaymentId
An Authorisation Token as per https://tools.ietf.org/html/rfc6750
The time when the PSU last logged in with the TPP. All dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below: Sun, 10 Sep 2017 19:43:31 UTC
The PSU's IP address if the PSU is currently logged in with the TPP.
An RFC4122 UID used as a correlation id.
https://localhost:8080/api/v1/domestic-scheduled-payments/{DomesticScheduledPaymentId}/payment-details
GET
DomesticScheduledPaymentId
An Authorisation Token as per https://tools.ietf.org/html/rfc6750
The time when the PSU last logged in with the TPP. All dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below: Sun, 10 Sep 2017 19:43:31 UTC
The PSU's IP address if the PSU is currently logged in with the TPP.
An RFC4122 UID used as a correlation id.
https://localhost:8080/api/v1/domestic-standing-orders/{DomesticStandingOrderId}/payment-details
GET
DomesticStandingOrderId
An Authorisation Token as per https://tools.ietf.org/html/rfc6750
The time when the PSU last logged in with the TPP. All dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below: Sun, 10 Sep 2017 19:43:31 UTC
The PSU's IP address if the PSU is currently logged in with the TPP.
An RFC4122 UID used as a correlation id.
https://localhost:8080/api/v1/file-payments/{FilePaymentId}/payment-details
GET
FilePaymentId
An Authorisation Token as per https://tools.ietf.org/html/rfc6750
The time when the PSU last logged in with the TPP. All dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below: Sun, 10 Sep 2017 19:43:31 UTC
The PSU's IP address if the PSU is currently logged in with the TPP.
An RFC4122 UID used as a correlation id.
https://localhost:8080/api/v1/international-payments/{InternationalPaymentId}/payment-details
GET
InternationalPaymentId
An Authorisation Token as per https://tools.ietf.org/html/rfc6750
The time when the PSU last logged in with the TPP. All dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below: Sun, 10 Sep 2017 19:43:31 UTC
The PSU's IP address if the PSU is currently logged in with the TPP.
An RFC4122 UID used as a correlation id.
https://localhost:8080/api/v1/international-scheduled-payments/{InternationalScheduledPaymentId}/payment-details
GET
InternationalScheduledPaymentId
An Authorisation Token as per https://tools.ietf.org/html/rfc6750
The time when the PSU last logged in with the TPP. All dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below: Sun, 10 Sep 2017 19:43:31 UTC
The PSU's IP address if the PSU is currently logged in with the TPP.
An RFC4122 UID used as a correlation id.
https://localhost:8080/api/v1/international-standing-orders/{InternationalStandingOrderPaymentId}/payment-details
GET
InternationalStandingOrderPaymentId
An Authorisation Token as per https://tools.ietf.org/html/rfc6750
The time when the PSU last logged in with the TPP. All dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below: Sun, 10 Sep 2017 19:43:31 UTC
The PSU's IP address if the PSU is currently logged in with the TPP.
An RFC4122 UID used as a correlation id.


Mac-group appoints new COO and chief contracting officer
Interior and modular specialist aiming for growth with more focus on UK
by Ronald QuinlanConstruction, interior and modular specialists, mac-group, have apppointed Michele Deely and Ron Clarke to the roles of chief operating officer and chief contracting officer respectively.
Deely has 17 years’ of experience in senior positions, most recently as chief operating officer (Europe) with International Fund Services, a State Street company.
Clarke was formerly managing director for building and interior fit-out with Graham. As a member of the Graham main board, he played a key role in the growth and development of the business over a 30-year period, in which the company’s turnover rose from £80m to £650m annually, thus establishing it as the leading contractor in Northern Ireland and a major player in the UK.
As part of his role with mac-group, Clarke will focus on the company’s Northern Ireland and UK business units.
Commenting on the appointments, mac-group CEO Paul McKenna said: “This llustrates our determination to secure the continued success of mac-group and our commitment to strengthening our management and operational expertise.”


{% extends '_form_container.html' %} {% load bootstrap4 %} {% block home_nav_active %}active{% endblock %}w {% block overwrite_spacer %}{% endblock %} {% block form %} {% if object %}
A release Rollout Strategy at which point in time you want to let in more users into your rollout program.
After the start at date, ablator will enable flavors for all requesting users, until there are as many enabled users as max enabled users.
You can have many Rollout Strategies to define your roll out in advance, or just have one that you edit manually when you're ready to let in more users. Or add releases as necessary.
Ablator allows you to choose between these roll out strategies:
During the rolling out process, it makes sense to have more fine-grained control over how your Functionality is enabled. This strategy lets in the amount of users you define in max enabled users
All new users will get the functionality disabled, but users who already had the functionality will get to keep it.
Once you're satisfied the functionality works as intended and doesn't overwhelm your servers, use this roll out strategy to enable it for all users.
Oops, you made a mistake. All users will have that functionality revoked, even those who had it enabled in some form before.
{% endblock %}


Module: ActiveRecord::AttributeMethods::ClassMethods
| Relationships & Source Files | |
| Defined in: | activerecord/lib/active_record/attribute_methods.rb |
Instance Method Summary
-
#attribute_method?(attribute) ⇒ Boolean
Returns
true
ifattribute
is an attribute method and table exists,false
otherwise. -
#attribute_names
Returns an array of column names as strings if it's not an abstract class and table exists.
-
#class_method_defined_within?(name, klass, superklass = klass.superclass) ⇒ Boolean
:nodoc
. -
#column_for_attribute(name)
Returns the column object for the named attribute.
-
#dangerous_class_method?(method_name) ⇒ Boolean
A class method is 'dangerous' if it is already (re)defined by Active Record, but not by any ancestors.
-
#instance_method_already_implemented?(method_name) ⇒ Boolean
Raises a ::ActiveRecord::DangerousAttributeError exception when an Active Record method is defined in the model, otherwise
false
.
Instance Method Details
#attribute_method?(attribute) ⇒ Boolean
Returns true
if attribute
is an attribute method and table exists, false
otherwise.
class Person < ActiveRecord::Base
end
Person.attribute_method?('name') # => true
Person.attribute_method?(:age=) # => true
Person.attribute_method?(:nothing) # => false
# File 'activerecord/lib/active_record/attribute_methods.rb', line 174
def attribute_method?(attribute) super || (table_exists? && column_names.include?(attribute.to_s.sub(/=$/, ''))) end
#attribute_names
Returns an array of column names as strings if it's not an abstract class and table exists. Otherwise it returns an empty array.
class Person < ActiveRecord::Base
end
Person.attribute_names
# => ["id", "created_at", "updated_at", "name", "age"]
# File 'activerecord/lib/active_record/attribute_methods.rb', line 186
def attribute_names @attribute_names ||= if !abstract_class? && table_exists? column_names else [] end end
#class_method_defined_within?(name, klass, superklass = klass.superclass) ⇒ Boolean
:nodoc
# File 'activerecord/lib/active_record/attribute_methods.rb', line 153
def class_method_defined_within?(name, klass, superklass = klass.superclass) # :nodoc if klass.respond_to?(name, true) if superklass.respond_to?(name, true) klass.method(name).owner != superklass.method(name).owner else true end else false end end
#column_for_attribute(name)
Returns the column object for the named attribute. Returns nil if the named attribute does not exist.
class Person < ActiveRecord::Base
end
person = Person.new
person.column_for_attribute(:name) # the result depends on the ConnectionAdapter
# => #<ActiveRecord::ConnectionAdapters::Column:0x007ff4ab083980 @name="name", @sql_type="varchar(255)", @null=true, ...>
person.column_for_attribute(:nothing)
# => nil
# File 'activerecord/lib/active_record/attribute_methods.rb', line 206
def column_for_attribute(name) column = columns_hash[name.to_s] if column.nil? ActiveSupport::Deprecation.warn(<<-MSG.squish) `#column_for_attribute` will return a null object for non-existent columns in Rails 5. Use `#has_attribute?` if you need to check for an attribute's existence. MSG end column end
#dangerous_class_method?(method_name) ⇒ Boolean
A class method is 'dangerous' if it is already (re)defined by Active Record, but not by any ancestors. (So 'puts' is not dangerous but 'new' is.)
# File 'activerecord/lib/active_record/attribute_methods.rb', line 149
def dangerous_class_method?(method_name) BLACKLISTED_CLASS_METHODS.include?(method_name.to_s) || class_method_defined_within?(method_name, Base) end
#instance_method_already_implemented?(method_name) ⇒ Boolean
Raises a ::ActiveRecord::DangerousAttributeError exception when an Active Record method is defined in the model, otherwise false
.
class Person < ActiveRecord::Base
def save
'already defined by Active Record'
end
end
Person.instance_method_already_implemented?(:save)
# => ActiveRecord::DangerousAttributeError: save is defined by ActiveRecord
Person.instance_method_already_implemented?(:name)
# => false
# File 'activerecord/lib/active_record/attribute_methods.rb', line 113
def instance_method_already_implemented?(method_name) if dangerous_attribute_method?(method_name) raise DangerousAttributeError, "#{method_name} is defined by Active Record. Check to make sure that you don't have an attribute or method with the same name." end if superclass == Base super else # If ThisClass < ... < SomeSuperClass < ... < Base and SomeSuperClass # defines its own attribute method, then we don't want to overwrite that. defined = method_defined_within?(method_name, superclass, Base) && ! superclass.instance_method(method_name).owner.is_a?(GeneratedAttributeMethods) defined || super end end


|
Bullet Collision Detection & Physics Library
|
This class manages a sub part of a mesh supplied by the btStridingMeshInterface interface. More...
#include <btGImpactShape.h>
Classes | |
| class | TrimeshPrimitiveManager |
| Trimesh primitive manager. More... | |
Public Member Functions | |
| btGImpactMeshShapePart () | |
| btGImpactMeshShapePart (btStridingMeshInterface *meshInterface, int part) | |
| virtual | ~btGImpactMeshShapePart () |
| virtual bool | childrenHasTransform () const |
| if true, then its children must get transforms. More... | |
| virtual void | lockChildShapes () const |
| call when reading child shapes More... | |
| virtual void | unlockChildShapes () const |
| virtual int | getNumChildShapes () const |
| Gets the number of children. More... | |
| virtual btCollisionShape * | getChildShape (int index) |
| Gets the children. More... | |
| virtual const btCollisionShape * | getChildShape (int index) const |
| Gets the child. More... | |
| virtual btTransform | getChildTransform (int index) const |
| Gets the children transform. More... | |
| virtual void | setChildTransform (int index, const btTransform &transform) |
| Sets the children transform. More... | |
| virtual const btPrimitiveManagerBase * | getPrimitiveManager () const |
| Obtains the primitive manager. More... | |
| TrimeshPrimitiveManager * | getTrimeshPrimitiveManager () |
| virtual void | calculateLocalInertia (btScalar mass, btVector3 &inertia) const |
| virtual const char * | getName () const |
| virtual eGIMPACT_SHAPE_TYPE | getGImpactShapeType () const |
| Subshape member functions. More... | |
| virtual bool | needsRetrieveTriangles () const |
| Determines if this shape has triangles. More... | |
| virtual bool | needsRetrieveTetrahedrons () const |
| Determines if this shape has tetrahedrons. More... | |
| virtual void | getBulletTriangle (int prim_index, btTriangleShapeEx &triangle) const |
| virtual void | getBulletTetrahedron (int prim_index, btTetrahedronShapeEx &tetrahedron) const |
| int | getVertexCount () const |
| void | getVertex (int vertex_index, btVector3 &vertex) const |
| void | setMargin (btScalar margin) |
| btScalar | getMargin () const |
| virtual void | setLocalScaling (const btVector3 &scaling) |
| virtual const btVector3 & | getLocalScaling () const |
| int | getPart () const |
| virtual void | processAllTriangles (btTriangleCallback *callback, const btVector3 &aabbMin, const btVector3 &aabbMax) const |
| Function for retrieve triangles. More... | |
| virtual void | processAllTrianglesRay (btTriangleCallback *callback, const btVector3 &rayFrom, const btVector3 &rayTo) const |
| Function for retrieve triangles. More... | |
| Public Member Functions inherited from btGImpactShapeInterface | |
| btGImpactShapeInterface () | |
| void | updateBound () |
| performs refit operation More... | |
| void | getAabb (const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const |
| If the Bounding box is not updated, then this class attemps to calculate it. More... | |
| virtual void | postUpdate () |
| Tells to this object that is needed to refit the box set. More... | |
| const btAABB & | getLocalBox () |
| Obtains the local box, which is the global calculated box of the total of subshapes. More... | |
| virtual int | getShapeType () const |
| virtual void | rayTest (const btVector3 &rayFrom, const btVector3 &rayTo, btCollisionWorld::RayResultCallback &resultCallback) const |
| virtual method for ray collision More... | |
| const btGImpactBoxSet * | getBoxSet () const |
| gets boxset More... | |
| bool | hasBoxSet () const |
| Determines if this class has a hierarchy structure for sorting its primitives. More... | |
| void | getPrimitiveTriangle (int index, btPrimitiveTriangle &triangle) const |
| if this trimesh More... | |
| virtual void | getChildAabb (int child_index, const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const |
| Retrieves the bound from a child. More... | |
| Public Member Functions inherited from btConcaveShape | |
| BT_DECLARE_ALIGNED_ALLOCATOR () | |
| btConcaveShape () | |
| virtual | ~btConcaveShape () |
| Public Member Functions inherited from btCollisionShape | |
| BT_DECLARE_ALIGNED_ALLOCATOR () | |
| btCollisionShape () | |
| virtual | ~btCollisionShape () |
| virtual void | getBoundingSphere (btVector3 ¢er, btScalar &radius) const |
| virtual btScalar | getAngularMotionDisc () const |
| getAngularMotionDisc returns the maximum radius needed for Conservative Advancement to handle time-of-impact with rotations. More... | |
| virtual btScalar | getContactBreakingThreshold (btScalar defaultContactThresholdFactor) const |
| void | calculateTemporalAabb (const btTransform &curTrans, const btVector3 &linvel, const btVector3 &angvel, btScalar timeStep, btVector3 &temporalAabbMin, btVector3 &temporalAabbMax) const |
| calculateTemporalAabb calculates the enclosing aabb for the moving object over interval [0..timeStep) result is conservative More... | |
| bool | isPolyhedral () const |
| bool | isConvex2d () const |
| bool | isConvex () const |
| bool | isNonMoving () const |
| bool | isConcave () const |
| bool | isCompound () const |
| bool | isSoftBody () const |
| bool | isInfinite () const |
| isInfinite is used to catch simulation error (aabb check) More... | |
| int | getShapeType () const |
| virtual btVector3 | getAnisotropicRollingFrictionDirection () const |
| the getAnisotropicRollingFrictionDirection can be used in combination with setAnisotropicFriction See Bullet/Demos/RollingFrictionDemo for an example More... | |
| void | setUserPointer (void *userPtr) |
| optional user data pointer More... | |
| void * | getUserPointer () const |
| void | setUserIndex (int index) |
| int | getUserIndex () const |
| virtual int | calculateSerializeBufferSize () const |
| virtual const char * | serialize (void *dataBuffer, btSerializer *serializer) const |
| fills the dataBuffer and returns the struct name (and 0 on failure) More... | |
| virtual void | serializeSingleShape (btSerializer *serializer) const |
Protected Attributes | |
| TrimeshPrimitiveManager | m_primitive_manager |
| Protected Attributes inherited from btGImpactShapeInterface | |
| btAABB | m_localAABB |
| bool | m_needs_update |
| btVector3 | localScaling |
| btGImpactBoxSet | m_box_set |
| Protected Attributes inherited from btConcaveShape | |
| btScalar | m_collisionMargin |
| Protected Attributes inherited from btCollisionShape | |
| int | m_shapeType |
| void * | m_userPointer |
| int | m_userIndex |
Additional Inherited Members | |
| Protected Member Functions inherited from btGImpactShapeInterface | |
| virtual void | calcLocalAABB () |
| use this function for perfofm refit in bounding boxes use this function for perfofm refit in bounding boxes More... | |
This class manages a sub part of a mesh supplied by the btStridingMeshInterface interface.
Definition at line 502 of file btGImpactShape.h.
|
inline |
Definition at line 687 of file btGImpactShape.h.
| btGImpactMeshShapePart::btGImpactMeshShapePart | ( | btStridingMeshInterface * | meshInterface, |
| int | part | ||
| ) |
Definition at line 24 of file btGImpactShape.cpp.
|
virtual |
Definition at line 46 of file btGImpactShape.cpp.
|
virtual |
Implements btCollisionShape.
Definition at line 119 of file btGImpactShape.cpp.
|
inlinevirtual |
if true, then its children must get transforms.
Implements btGImpactShapeInterface.
Definition at line 696 of file btGImpactShape.h.
|
inlinevirtual |
Implements btGImpactShapeInterface.
Definition at line 786 of file btGImpactShape.h.
|
inlinevirtual |
Implements btGImpactShapeInterface.
Definition at line 781 of file btGImpactShape.h.
|
inlinevirtual |
Gets the children.
Implements btGImpactShapeInterface.
Definition at line 712 of file btGImpactShape.h.
|
inlinevirtual |
Gets the child.
Implements btGImpactShapeInterface.
Definition at line 720 of file btGImpactShape.h.
|
inlinevirtual |
Gets the children transform.
Implements btGImpactShapeInterface.
Definition at line 728 of file btGImpactShape.h.
|
inlinevirtual |
Subshape member functions.
Base method for determinig which kind of GIMPACT shape we get
Implements btGImpactShapeInterface.
Definition at line 764 of file btGImpactShape.h.
|
inlinevirtual |
Reimplemented from btGImpactShapeInterface.
Definition at line 820 of file btGImpactShape.h.
|
inlinevirtual |
Reimplemented from btConcaveShape.
Definition at line 809 of file btGImpactShape.h.
|
inlinevirtual |
Implements btCollisionShape.
Definition at line 759 of file btGImpactShape.h.
|
inlinevirtual |
Gets the number of children.
Implements btGImpactShapeInterface.
Definition at line 706 of file btGImpactShape.h.
|
inline |
Definition at line 825 of file btGImpactShape.h.
|
inlinevirtual |
Obtains the primitive manager.
Implements btGImpactShapeInterface.
Definition at line 747 of file btGImpactShape.h.
|
inline |
Definition at line 752 of file btGImpactShape.h.
|
inline |
Definition at line 798 of file btGImpactShape.h.
|
inline |
Definition at line 793 of file btGImpactShape.h.
|
virtual |
call when reading child shapes
Reimplemented from btGImpactShapeInterface.
Definition at line 54 of file btGImpactShape.cpp.
|
inlinevirtual |
Determines if this shape has tetrahedrons.
Implements btGImpactShapeInterface.
Definition at line 776 of file btGImpactShape.h.
|
inlinevirtual |
Determines if this shape has triangles.
Implements btGImpactShapeInterface.
Definition at line 770 of file btGImpactShape.h.
|
virtual |
Function for retrieve triangles.
It gives the triangles in local space
Reimplemented from btGImpactShapeInterface.
Definition at line 218 of file btGImpactShape.cpp.
|
virtual |
Function for retrieve triangles.
It gives the triangles in local space
Reimplemented from btGImpactShapeInterface.
Definition at line 192 of file btGImpactShape.cpp.
|
inlinevirtual |
Sets the children transform.
Implements btGImpactShapeInterface.
Definition at line 739 of file btGImpactShape.h.
|
inlinevirtual |
Reimplemented from btGImpactShapeInterface.
Definition at line 814 of file btGImpactShape.h.
|
inlinevirtual |
Reimplemented from btGImpactShapeInterface.
Definition at line 803 of file btGImpactShape.h.
|
virtual |
Reimplemented from btGImpactShapeInterface.
Definition at line 65 of file btGImpactShape.cpp.
|
protected |
Definition at line 684 of file btGImpactShape.h.


Data. It's everywhere, and every time you visit a web site data is collected about you regarding the things you say and do.
Simply opting out is difficult, because it also means opting out of valuable products, services and communities, and of personalized service.
There is, however, an alternative. Through TellTrail, you can specify the conditions under which your data may be used, and by whom. TellTrail puts you in control of data collected about you.
-or-


The Repeats play the biggest indie and rock hits that keep the dance floor filled from the first note until the final encore. Their show consists of the high octane anthems that will have your guests on their feet and the perfectly timed slow ballads for when they need a break or want that slow dance moment. The Repeats ensure that you and your guests get the best party band around. Ranging from Foo Fighters and Queens Of The Stone Age, to The Knack and Fleetwood Man, rocked up versions of classics such as Stevie Wonder's “Superstition” to a faithful recreation indie and alternative greats like Jimmy Eat World's “The Middle” The Repeats know how to get everyone on the dance floor and keep them there for the night.
"The Repeats put on a great show and had the dance floor packed. Really impressed with them and can't wait to have them back soon. Professional too!"
- Lonely Hearts Club
Lead Vocals, Guitar
Guitar, Keyboard, Backing Vocals
Bass, Backing Vocals
Guitar, Backing Vocals
Drums, Percussion, Backing Vocals
- Modern and fresh party band, ideal for all ages and events
- Highly accomplished musicians with gigging experience around the world
- Extensive repetoire from 60s to present day, every song is lively and fun
- Can provide own PA system and engineer themselves, so you don't have to worry!
Looking for a band to turn your CEO off of Christmas parties forever?  Maybe you need a mediocre band to force people to leave your new years party?
Look no further! We can take care of that!
For all enquiries including price, whether we have a distorted sound system (yes we do), and availability (we're a nightmare at getting together tbh) then please shoot us an e-mail to<EMAIL_ADDRESS>or if you're a technophobe give us a call - (###) ###-####
Keep in contact on our non-existent social media yeah?


Copyright © (C) 2015, Ivanco Software Corporation
Behaviours: gen_server.
Authors: Ivan Carmenates Garcia.
condition_term() = {field_name() | full_field_name() | field_value(), operator(), field_name() | full_field_name() | field_value()}
db_session() = {Backend::atom(), Connection::any()}
field_name() = atom()
field_name_alias() = atom()
field_value() = term()
full_field_name() = {table_name(), field_name()} | {table_name(), field_name(), field_name_alias()}
full_return_field_specs() = [field_name() | {table_name(), field_name()} | {table_name(), [field_name(), ...]}, ...]
group_by_expr() = [field_value() | full_field_name(), ...]
logic_operator() = 'and' | 'or'
map_result_data() = no_data | #{} | [#{}, ...]
match_field_specs() = [condition_term(), ...] | list() | #{}
operator() = gt | '>' | lt | '<' | gte | '>=' | lte | '=<' | eq | '==' | ne | '/=' | like
order_by_expr() = [field_value() | full_field_name() | {field_name() | full_field_name(), asc | desc}, ...]
proplist_result_data() = [] | [proplists:proplist(), ...]
query_params() = [any(), ...] | []
raw_result_data() = any()
result_data() = map_result_data() | proplist_result_data() | raw_result_data()
result_data_for_insert() = #{} | [proplists:proplist()] | any()
simple_return_field_specs() = [field_name(), ...]
table_name() = atom()
table_spec() = {table_name(), #{}}
| connect/1 | Tries to connect to a database backend. |
| connect/2 |
Tries to connect to a database backend within a Timeout . |
| connection_block/1 |
Tries to create a connection session with an available connection
from the connection pool for the main_backend backend, and
executes the function in Fun passing DBSession as argument. |
| connection_block/2 |
Tries to create connection session with an available connection
from the connection pool for the specified BackendName in
Options , and executes the function in Fun passing DBSession
as argument. |
| connection_block_transaction/1 |
Tries to create a connection session and a database transaction
context with an available connection from the connection pool for
the main_backend backend, and executes the function in Fun
passing DBSession as argument. |
| connection_block_transaction/2 |
Tries to create a connection session and a database transaction
context with an available connection from the connection pool for
the specified BackendName in Options , and executes the function
in Fun passing DBSession as argument. |
| delete/3 |
Deletes data from a database using a TableName and
MatchFieldSpecs parameters. |
| delete/4 |
Deletes data from a database using a TableName , MatchFieldSpecs
and Options parameters. |
| disconnect/1 |
Disconnects from the specified DBSession . |
| find/3 |
Finds data in a database using TableNames and MatchFieldSpecs
parameters. |
| find/4 |
Finds data in a database using TableNames , MatchFieldSpecs and
Options parameters. |
| find_one/3 |
Finds a single occurrence of data in a database using TableNames
and MatchFieldSpecs parameters. |
| find_one/4 |
Finds a single occurrence of data in a database using TableNames ,
MatchFieldSpecs and Options parameters. |
| insert/2 |
Inserts data using a TableSpec into a database. |
| insert/3 |
Inserts data using a TableSpec and Options into a database. |
| install_backend/2 | Installs a new database backend and start a connection pool for it. |
| query/3 |
Makes a query to a database for the specified DBSession . |
| query/4 |
Makes a query to a database for the specified DBSession using
Options to extend the functionality. |
| remove_backend/1 |
Removes a database backend specified by BackendName parameter. |
| transaction/2 |
Prepares a transaction context for the specified DBSession . |
| update/3 |
Updates data in a database using a TableSpec and
MatchFieldSpecs parameters. |
| update/4 |
Updates data in a database using a TableSpec , MatchFieldSpec
and Options , parameters. |
| update_backend_options/2 | Updates a backend configuration. |
connect(BackendName) -> {ok, DBSession} | {error, {invalid_backend, BackendName}} | {error, Other}
Tries to connect to a database backend. Returns a DBSession
with information about the backend and connection.
Warning: using this function is not recommended unless you know
what you are doing, because it will create a connection outside of
the connection pool. Use connection_block/1/2
instead to get an
available connection from the pool.
DBSession
is used by many of the API functions.wait_for_reusable_connection_timeout
option as a connection timeout.cowboy_enhancer
environment
variable called database_manager
. i.e.:{database_manager, [ {main_backend, [ {backend, postgres_backend}, {server, "localhost"}, {username, "postgres"}, {password, "server"}, {database, "eoc_db"}, {max_reusable_connections, 10}, % 10 connections. {wait_for_reusable_connection_timeout, 5000} % 5 sec. ]} ]}
See also: connect/2.
connect(BackendName, Timeout) -> {ok, DBSession} | {error, {invalid_backend, BackendName}} | {error, Other}
Tries to connect to a database backend within a Timeout
.
Returns a DBSession
with information about the backend and
connection.
Warning: using this function is not recommended unless you know
what you are doing, because it will create a connection outside of
the connection pool. Use connection_block/1/2
instead to get an
available connection from the pool.
DBSession
is used by many of the API functions.Timeout
in milliseconds to wait for connection. It
overrides wait_for_reusable_connection_timeout
backend
option.Timeout = default_timeout
to use the backend's
wait_for_reusable_connection_timeout
option.cowboy_enhancer
environment
variable called database_manager
. i.e.:{database_manager, [ {main_backend, [ {backend, postgres_backend}, {server, "localhost"}, {username, "postgres"}, {password, "server"}, {database, "eoc_db"}, {max_reusable_connections, 10}, % 10 connections. {wait_for_reusable_connection_timeout, 5000} % 5 sec. ]} ]}
connection_block(Fun) -> FunReply | {error, {invalid_backend, BackendName}} | {error, no_available_connection}
Tries to create a connection session with an available connection
from the connection pool for the main_backend
backend, and
executes the function in Fun
passing DBSession
as argument.
Returns {error, no_available_connection}
if a connection from the
pool cannot be resolved at the moment or it cannot connect to the
server database.
connection_block(fun(DBSession)-> ... end).Note:
wait_for_reusable_connection_timeout
option as a connection timeout.cowboy_enhancer
environment
variable called database_manager
. i.e.:{database_manager, [ {main_backend, [ {backend, postgres_backend}, {server, "localhost"}, {username, "postgres"}, {password, "server"}, {database, "eoc_db"}, {max_reusable_connections, 10}, % 10 connections. {wait_for_reusable_connection_timeout, 5000} % 5 sec. ]} ]}Equivalent to:
connection_block(Fun, []).
See also: connection_block/2.
connection_block(Fun, Options) -> FunReply | {error, {invalid_backend, BackendName}} | {error, no_available_connection}
Tries to create connection session with an available connection
from the connection pool for the specified BackendName
in
Options
, and executes the function in Fun
passing DBSession
as argument.
Returns {error, no_available_connection}
if a connection from the
pool cannot be resolved at the moment or it cannot connect to the
server database.
timeout
option in milliseconds to wait for an available
connection which overrides wait_for_reusable_connection_timeout
backend option.
{backend, BackendName :: atom()} {timeout, Timeout :: timeout() | default_timeout}Example:
connection_block(fun(DBSession)-> ... end, [{backend, my_backend}, {timeout, default_timeout}]).Note:
{timeout, default_timeout}
to use the backend's
wait_for_reusable_connection_timeout
option.main_backend
config
will be used.cowboy_enhancer
environment
variable called database_manager
. i.e.:{database_manager, [ {main_backend, [ {backend, postgres_backend}, {server, "localhost"}, {username, "postgres"}, {password, "server"}, {database, "eoc_db"}, {max_reusable_connections, 10}, % 10 connections. {wait_for_reusable_connection_timeout, 5000} % 5 sec. ]} ]}
connection_block_transaction(Fun) -> FunReply | {error, {invalid_backend, BackendName}} | {error, no_available_connection}
Tries to create a connection session and a database transaction
context with an available connection from the connection pool for
the main_backend
backend, and executes the function in Fun
passing DBSession
as argument.
Returns {error, no_available_connection}
if a connection from the
pool cannot be resolved at the moment or it cannot connect to the
server database.
connection_block_transaction(fun(DBSession)-> ... end).Note:
wait_for_reusable_connection_timeout
option as a connection timeout.cowboy_enhancer
environment
variable called database_manager
. i.e.:{database_manager, [ {main_backend, [ {backend, postgres_backend}, {server, "localhost"}, {username, "postgres"}, {password, "server"}, {database, "eoc_db"}, {max_reusable_connections, 10}, % 10 connections. {wait_for_reusable_connection_timeout, 5000} % 5 sec. ]} ]}Equivalent to:
connection_block_transaction(Fun, []).
See also: connection_block_transaction/2.
connection_block_transaction(Fun, Options) -> FunReply | {error, {invalid_backend, BackendName}} | {error, no_available_connection}
Tries to create a connection session and a database transaction
context with an available connection from the connection pool for
the specified BackendName
in Options
, and executes the function
in Fun
passing DBSession
as argument.
Returns {error, no_available_connection}
if a connection from the
pool cannot be resolved at the moment or it cannot connect to the
server database.
timeout
option in milliseconds to wait for an available
connection which overrides wait_for_reusable_connection_timeout
backend option.
{backend, BackendName :: atom()} {timeout, Timeout :: timeout() | default_timeout}Example:
connection_block_transaction(fun(DBSession)-> ... end, [{backend, my_backend}, {timeout, default_timeout}]).Note:
{timeout, default_timeout}
to use the backend's
wait_for_reusable_connection_timeout
option.main_backend
config
will be used.cowboy_enhancer
environment
variable called database_manager
. i.e.:{database_manager, [ {main_backend, [ {backend, postgres_backend}, {server, "localhost"}, {username, "postgres"}, {password, "server"}, {database, "eoc_db"}, {max_reusable_connections, 10}, % 10 connections. {wait_for_reusable_connection_timeout, 5000} % 5 sec. ]} ]}
delete(DBSession, TableName, MatchFieldSpecs) -> {ok, Count} | {error, Reason}
Deletes data from a database using a TableName
and
MatchFieldSpecs
parameters.
MatchFieldSpecs
is used to match against a sort of records to
delete. Its structure is as follows:[condition_term(), ...] | [condition_term(), logic_operator(), condition_term()]
If the logic_operator()
is omitted between two condition_term()
i.e.: [condition_term(), condition_term(), ...]
then the and
logic operator will be used.
condition_term()
to apply a logic operator to
it. i.e.:
[[condition_term(), ...], logic_operator(), ...]
You can use a lot of combinations while you bear in mind that some
logic operators require two condition_term()
in each side and
others like not
require only one.
database_manager:connection_block(fun(DBSession) -> {ok, N} = database_manager:delete(DBSession, users, [{name, 'eq', "john"}, {age, 'gt', 30}]) end).Meaning: delete all
users
records with name = "john"
and age
greater than 30
.
See also: delete/3.
delete(DBSession, TableName, MatchFieldSpecs, Options) -> {ok, Count} | {ok, Count, result_data()} | {error, {invalid_result_format, term()}} | {error, Other}
Deletes data from a database using a TableName
, MatchFieldSpecs
and Options
parameters.
MatchFieldSpecs
is used to match against a sort of records to
delete. Its structure is as follows:[condition_term(), ...] | [condition_term(), logic_operator(), condition_term()]
If the logic_operator()
is omitted between two condition_term()
i.e.: [condition_term(), condition_term(), ...]
then the and
logic operator will be used.
condition_term()
to apply a logic operator to
it. i.e.:
[[condition_term(), ...], logic_operator(), ...]
You can use a lot of combinations while you bear in mind that some
logic operators require two condition_term()
in each side and
others like not
require only one.
Options
to extend the functionality of the delete function.
{return_fields, [field_name(), ...] | ['*']} {result_format, raw | map | proplist} %% For `return_fields'. `map' will be the default result format if this options is omitted.Example:
database_manager:connection_block(fun(DBSession) -> {ok, N, [#{id := Id} |_]} = database_manager:delete(DBSession, users, [{name, 'eq', "john"}, {age, 'gt', 30}], [{return_fields, [id]}, {result_format, map}]) end).
Meaning: delete all users
records with name = "john"
and age
greater than 30
, returning its ids.
result_data()
when using return_fields
option.disconnect(DBSession) -> ok
Disconnects from the specified DBSession
.
find(X1, TableNames, MatchFieldSpecs) -> any()
Finds data in a database using TableNames
and MatchFieldSpecs
parameters.
find(DBSession, TableNames, MatchFieldSpecs, []).
See also: find/4.
find(DBSession, TableNames, MatchFieldSpecs, Options) -> {ok, result_data()} | {error, {invalid_clause_option, term()}} | {error, {invalid_result_format, term()}} | {error, Other}
Finds data in a database using TableNames
, MatchFieldSpecs
and
Options
parameters.
MatchFieldSpecs
is used to match against a sort of records to
find. Its structure is as follows:#{} %% you an use a map for matching. [condition_term(), ...] | [condition_term(), logic_operator(), condition_term()]
If the logic_operator()
is omitted between two condition_term()
i.e.: [condition_term(), condition_term(), ...]
then the and
logic operator will be used.
condition_term()
to apply a logic operator to
it. i.e.:
[[condition_term(), ...], logic_operator(), ...]
You can use a lot of combinations while you bear in mind that some
logic operators require two condition_term()
in each side and
others like not
require only one.
Options
to extend the functionality of the find function.
{limit, Limit :: pos_integer()} %% Limits the number of records returned by find. {offset, Offset :: pos_integer()} %% Returns records starting by 'Offset'. {order_by, order_by_expr()} %% Orders the result data by specific fields. {group_by, group_by_expr()} %% Groups the result data by specific fields. {return_fields, [field_name() | full_field_name() | {TableName, [field_name(), ...]}, ...]} {result_format, raw | map | proplist} %% For `return_fields'. `map' will be the default result format if this options is omitted.Example with maps:
database_manager:connection_block(fun(DBSession) -> {ok, #{id := Id}} = database_manager:find(DBSession, users, #{name => "Steven", age => 10}, [{return_fields, [id]}, {limit, 1}]) end).Example 2:
database_manager:connection_block(fun(DBSession) -> {ok, #{id := Id}} = database_manager:find(DBSession, users, [{name, 'eq', "john"}, {age, 'gt', 30}], [{return_fields, [id]}, {limit, 1}]) end).
Meaning: find data from users
table which name = "john"
and age
greater than 30
, returning its id and limiting the result
to one record.
database_manager:connection_block(fun(DBSession) -> {ok, #{user_id := UserId, role_id := RoleID}} = database_manager:find(DBSession, [users, roles] [{{users, level}, '==', {roles, role_level}}], [{return_fields, [{users, id, user_id}, {roles, id, role_id}]}]) end).
Meaning: find data from users
and roles
tables where level
column from users
match with role_level
column from
roles
table, it also does returns the id of both table
records with an user defined alias for each one of them.
*
simple enclose it between ' '
. i.e.:
{return_fields, ['*']} or {return_fields, [users, ['*']]} or {return_fields, [{users, '*'}]}
find_one(X1, TableNames, MatchFieldSpecs) -> any()
Finds a single occurrence of data in a database using TableNames
and MatchFieldSpecs
parameters.
find(DBSession, TableNames, MatchFieldSpecs, [{limit, 1}]).
See also: find/4.
find_one(X1, TableNames, MatchFieldSpecs, Options) -> any()
Finds a single occurrence of data in a database using TableNames
,
MatchFieldSpecs
and Options
parameters.
find(DBSession, TableNames, MatchFieldSpecs, [{limit, 1} | Options]).
See also: find/4.
insert(DBSession, TableSpec) -> {ok, Count} | {error, Reason}
Inserts data using a TableSpec
into a database.
TableSpec
has the following structure:{table_name, FieldMap :: map()}
FieldMap
is a map with the fields names and values.
database_manager:connection_block(fun(DBSession) -> {ok, 1} = database_manager:insert(DBSession, {users, #{name => "john"}}) end).Note:
TableSpec
a value of a field equal to another
field name in order to get the same value of the specified
field name. The order in the expression does not matter. i.e.:
{users, #{ name => "john", password => "server", old_password = password}}
insert(DBSession, TableSpec, []).
See also: insert/3.
insert(DBSession, TableSpec, Options) -> {ok, Count} | {ok, Count, result_data_for_insert()} | {error, {invalid_result_format, term()}} | {error, Other}
Inserts data using a TableSpec
and Options
into a database.
TableSpec
has the following structure:{table_name, FieldMap :: map()}
FieldMap
is a map with the fields names and values.
{return_fields, [field_name(), ...] | ['*']} {result_format, raw | map | proplist} %% For `return_fields'. `map' will be the default result format if this options is omitted.Example 1:
{result_format, map}
.
database_manager:connection_block(fun(DBSession) -> {ok, 1, #{id := Id}} = database_manager:insert(DBSession, {users, #{name => "john"}}, [{return_fields, [id]}, {result_format, map}]) end).Example 2:
{result_format, proplist}
.
database_manager:connection_block(fun(DBSession) -> {ok, 1, [[{id, Id}]] = database_manager:insert(DBSession, {users, #{name => "john"}}, [{return_fields, [id]}, {result_format, proplist}]) end).Note:
TableSpec
a value of a field equal to another
field name in order to get the same value of the specified
field name. The order in the expression does not matter. i.e.:
{users, #{ name => "john", password => "server", old_password = password}}
result_format
options.
i.e.: for map
is map containing the field names and values,
and for proplist
is a proplist with the field names and
values inside a list for erlydtl compatibility aspects.result_format
is specified, map
will be the default
result format.install_backend(BackendName, Options) -> ok | error | {error, Other}
Installs a new database backend and start a connection pool for it.
Example:ok = install_backend(my_backend, [ {backend, mnesia_backend}, {server, "localhost"}, {username, "test"}, {password, "server"}, {database, "eoc_db"}, {max_reusable_connections, 5}, {wait_for_reusable_connection_timeout, 5000}]).Note:
max_reusable_connections
and
wait_for_reusable_connection_timeout
options, default values
will be provided.query(DBSession, Query, Params) -> {ok, map_result_data()} | {ok, Count} | {ok, Count, map_result_data()} | {error, Reason}
Makes a query to a database for the specified DBSession
.
{ok, Data} %% when using 'select'. {ok, Count} % when using 'update', 'insert', 'delete'. {ok, Count, Data} %% when using 'update', 'insert', 'delete' with returning.Example:
database_manager:connection_block(fun(DBSession) -> {ok, N, [#{id := Id, name := Name} |_]} = database_manager:query(DBSession, "SELECT users.id, users.name FROM users WHERE name=$1 and age=$2", ["John", 31]) end).Note:
See also: query/4.
query(DBSession, Query, Params, Options) -> {ok, result_data()} | {ok, Count} | {ok, Count, result_data()} | {error, {invalid_result_format, term()}} | {error, Other}
Makes a query to a database for the specified DBSession
using
Options
to extend the functionality.
ResultData
, it depends of result_format
Option,
result_format
could be one of raw
, map
, proplist
,
map
and proplist
result formats have the same
ResultData
struct:
{ok, Data} %% when using 'select'. {ok, Count} % when using 'update', 'insert', 'delete'. {ok, Count, Data} %% when using 'update', 'insert', 'delete' with returning.The only differences are:
0 result: 'map' -> no_data, 'proplist' -> [] 1 result: 'map' -> a single map #{...}, 'proplist' -> a list of proplist [[...]], (templ. comp.) N result: 'map' -> a list of maps [#{...}, ...], 'proplist' -> a list of proplists [[...], ...]
raw
by the other hand is Backend
dependent.
{result_format, raw | map | proplist}.Example:
database_manager:connection_block(fun(DBSession) -> {ok, N, [#{id := Id, name := Name} |_]} = database_manager:query(DBSession, "SELECT users.id, users.name FROM users WHERE name=$1 and age=$2", ["John", 31], [{result_format, map}]) end).Note:
raw
is the fastest
but backend dependent, map
is the slowest but very easy to
deal with. So this is the performance order from fastest to
slowest raw
> proplist
> map
.proplist
can be used to return directly to a template, also
when you need to export the data to the world of other libs or
through a socket proplist
could be the best choice because it
more standard than map
.result_format
is specified, map
will be the default
result format.remove_backend(BackendName) -> ok | {error, {invalid_backend, BackendName}} | {error, Other}
Removes a database backend specified by BackendName
parameter.
ok = remove_backend(my_backend).
transaction(DBSession, Fun) -> FunReply | {error, Reason}
Prepares a transaction context for the specified DBSession
.
database_manager:connection_block(fun(DBSession) -> database_manager:transaction(DBSession, fun() -> {ok, 1} = database_manager:query(DBSession, InsertQuery, Params) end) end).
update(DBSession, TableSpec, MatchFieldSpecs) -> {ok, Count} | {error, Reason}
Updates data in a database using a TableSpec
and
MatchFieldSpecs
parameters.
TableSpec
has the following structure:{table_name, FieldMap :: map()}
FieldMap
is a map with the fields names and values. It must
contains only the fields you wish to update.
MatchFieldSpecs
is used to match against a sort of records for
update. Its structure is as follows:[condition_term(), ...] or [condition_term(), logic_operator(), condition_term()]
If the logic_operator()
is omitted between two condition_term()
then the and
logic operator will be used. i.e.: in the second
clause of the definition of a MatchFieldSpecs
where a list of
condition_term() separated by comma is defined.
condition_term()
to apply a logic operator to
it. i.e.:
[[condition_term(), ...], logic_operator(), ...]
You can use a lot of combinations while you bear in mind that some
logic operators require two condition_term()
in each side and
others like not
require only one.
database_manager:connection_block(fun(DBSession) -> {ok, N} = database_manager:update(DBSession, {users, #{signed => true}}, [{name, 'eq', "john"}, {age, 'gt', 30}]) end).
Meaning: update all records with name = "john"
to signed = true
whose age
are greater than 30
.
TableSpec
a value of a field equal to another
field name in order to get the same value of the specified
field name. The order in the expression does not matter. i.e.:
{users, #{ name => "john", password => "server", old_password = password}}
See also: update/4.
update(DBSession, TableSpec, MatchFieldSpecs, Options) -> {ok, Count} | {ok, Count, result_data()} | {error, {invalid_result_format, term()}} | {error, Other}
Updates data in a database using a TableSpec
, MatchFieldSpec
and Options
, parameters.
TableSpec
has the following structure:{table_name, FieldMap :: map()}
FieldMap
is a map with the fields names and values. It must
contains only the fields you wish to update.
MatchFieldSpecs
is used to match against a sort of records for
update. Its structure is as follows:[condition_term(), ...] or [condition_term(), logic_operator(), condition_term()]
If the logic_operator()
is omitted between two condition_term()
then the and
logic operator will be used. i.e.: in the second
clause of the definition of a MatchFieldSpecs
where a list of
condition_term() separated by comma is defined.
condition_term()
to apply a logic operator to
it. i.e.:
[[condition_term(), ...], logic_operator(), ...]
You can use a lot of combinations while you bear in mind that some
logic operators require two condition_term()
in each side and
others like not
require only one.
Options
to extend the functionality of the update.
{return_fields, [field_name() | full_field_name() | {TableName, [field_name(), ...]}, ...]} {result_format, raw | map | proplist} %% For `return_fields'. `map' will be the default result format if this options is omitted.Example:
database_manager:connection_block(fun(DBSession) -> {ok, N, [#{id := Id} |_]} = database_manager:update(DBSession, {users, #{signed => true}}, [{name, 'eq', "john"}, {age, 'gt', 30}], [{return_fields, [id]}, {result_format, map}]) end).
Meaning: update all records with name = "john"
to signed = true
whose age
are greater than 30
, returning its ids.
TableSpec
a value of a field equal to another
field name in order to get the same value of the specified
field name. The order in the expression does not matter. i.e.:
{users, #{ name => "john", password => "server", old_password = password}}
*
simple enclose it between ' '
. i.e.:
{return_fields, ['*']} or {return_fields, [users, ['*']]} or {return_fields, [{users, '*'}]}
update_backend_options(BackendName, NewOptions) -> ok | {error, {invalid_backend, BackendName}} | {error, {invalid_options, [atom(), ...]}} | {error, Other}
Updates a backend configuration.
Example:ok = update_backend_options(my_backend, [ {backend, mnesia_backend}, {server, "localhost"}, {username, "test"}, {password, "server"}, {database, "eoc_db"}, {max_reusable_connections, 5}, {wait_for_reusable_connection_timeout, 5000}]).
Generated by EDoc, Apr 15 2016, 16:38:28.


Wind more effective than cold air at cooling rooms naturally
| Source: | University of Cambridge |
| Summary: | The effectiveness of non-mechanical, low-energy methods for moderating temperature and humidity has been evaluated in a series of experiments. |
The effectiveness of non-mechanical, low-energy methods for moderating temperature and humidity has been evaluated in a series of experiments by researchers from the University of Cambridge.
The researchers found that a temperature difference between inside and outside has a remarkably small effect on how well a room is ventilated when ventilation is primarily driven by wind. In contrast, wind can increase ventilation rates by as much as 40% above that which is driven by a temperature difference between a room and the outdoors. The exact rate of ventilation will depend on the geometry of the room.
The results, reported in the journal Building and Environment, could be used to help designers and urban planners incorporate natural ventilation principles into their designs, so that buildings can be kept at a comfortable temperature while using less energy.
Heating and cooling account for a significant proportion of energy use in buildings: in the US, this is as high as 50 percent. In addition, as global temperatures continue to rise, demand for air conditioning — which emits greenhouse gases — rises as well, creating a damaging feedback loop.
Natural ventilation, which controls indoor temperature without using any mechanical systems, is an alternative to traditional heating and cooling methods, which reduces energy use and greenhouse gas emissions.
"Natural ventilation is a low-energy way to keep buildings at a comfortable temperature, but in order to increase its use, we need simple, accurate models that can respond quickly to changing conditions," said lead author Dr Megan Davies Wykes from Cambridge's Department of Engineering.
There are two main types of natural cross-ventilation: wind-driven and buoyancy-driven. Cross-ventilation occurs in rooms that have windows on opposite sides of a room. Wind blowing on a building can result in a high pressure on the windward side and a low pressure at the leeward side, which drives flow across a room, bringing fresh air in from outside and ventilating a room. Ventilation can also be driven by temperature differences between the inside and outside of a room, as incoming air is heated by people or equipment, resulting in a buoyancy-driven flow at a window.
"We've all gotten used to having a well-controlled, narrow temperature range in our homes and offices," said Davies Wykes. "Controlling natural ventilation methods is much more challenging than switching on the heat or the air conditioning, as you need to account for all the variables in a room, like the number of people, the number of computers or other heat-generating equipment, or the strength of the wind."
In the current study, the researchers used a miniature model room placed inside a flume to recreate the movements of air inside a room when windows are opened in different temperature and wind conditions.
Using the results from lab-based experiments, Davies Wykes and her colleagues built mathematical models to predict how temperature difference between inside and outside affects how well a room is ventilated.
The researchers found that the rate of ventilation depends less on temperature and more on wind. Anyone who has tried to cool down on a hot night by opening the window will no doubt be familiar with how ineffective this is when there is no wind.
This is because in many rooms, windows are positioned halfway up the wall, and when they are opened, the warm air near the ceiling can't easily escape. Without the 'mixing' effect provided by the wind, the warm air will stay at the ceiling, unless there is another way for it to escape at the top of the room.
"It was surprising that although temperature differences do not have a strong effect on the flow of air through a window, even small temperature differences can matter when trying to ventilate a room," said Davies Wykes. "If there are no openings near the ceiling of a room, warm indoor air can become trapped near the ceiling and wind is not effective at removing the trapped air."
The next steps will be to incorporate the results into building design, making it easier to create well ventilated, low energy buildings.
make a difference: sponsored opportunity
Story Source:
Materials provided by University of Cambridge.
Note: Content may be edited for style and length.
Journal Reference:
- M.S. Davies Wykes, E. Chahour, P.F. Linden. The effect of an indoor-outdoor temperature difference on transient cross-ventilation. Building and Environment, 2020; 168: 106447 DOI: 10.1016/j.buildenv.2019.106447
Cite This Page:
| MLA | University of Cambridge. "Wind more effective than cold air at cooling rooms naturally." ScienceDaily. ScienceDaily, 20 November 2019. <www.sciencedaily.com/releases/2019/11/191120121141.htm>. |
| APA | University of Cambridge. (2019, November 20). Wind more effective than cold air at cooling rooms naturally. ScienceDaily. Retrieved November 20, 2019 from www.sciencedaily.com/releases/2019/11/191120121141.htm |
| Chicago | University of Cambridge. "Wind more effective than cold air at cooling rooms naturally." ScienceDaily. www.sciencedaily.com/releases/2019/11/191120121141.htm (accessed November 20, 2019). |