Wind Engineering with Uncertainty Quantification Application¶
Frank McKenna , Peter Mackenzie-Helnwein , Wael Elhaddad , Jiawei Wan , Michael Gardner , Dae Kun Kwon , Fei Ding
The Wind Engineering with Uncertainty Quantification Application (WE-UQ app) is an open-source research application that can be used to predict the response of a building subjected to wind loading events. The application is focused on quantifying the uncertainties in the predicted response, given the that the uncertainties in models, wind loads, and analysis. The computations are performed in a workflow application that will run on either the users local machine or on a high performance computer made available by DesignSafe.
This document covers the features and capabilities of Version 3.0 of the tool. Users are encouraged to comment on what additional features and capabilities they would like to see in future versions of the application through the Message Board.
Contact¶
Frank McKenna, NHERI SimCenter, UC Berkeley<EMAIL_ADDRESS>References¶
- AEBED15
Haitham Aboshosha, Ahmed Elshaer, Girma T Bitsuamlak, and Ashraf El Damatty. Consistent inflow turbulence generator for les evaluation of wind-induced responses for tall buildings. Journal of Wind Engineering and Industrial Aerodynamics, 142:198–216, 2015.
- CPMS17
Hugo G Castro, Rodrigo R Paz, Javier L Mroginski, and Mario A Storti. Evaluation of the proper coherence representation in random flow generation based methods. Journal of Wind Engineering and Industrial Aerodynamics, 168:211–227, 2017.
- Dav67
AG Davenport. The dependence of wind loading on meteorological parameters. In Proc. of Int. Res. Seminar, Wind Effects On Buildings & Structures, NRC, Ottawa. 1967.
- GBS20
Xingquan Guan, Henry Burton, and Thomas Sabol. Python-based computational platform to automate seismic design, nonlinear structural model construction and analysis of steel moment resisting frames. Engineering Structures, 224:111199, 2020.
- Hos72
Masaru Hoshiya. Simulation of multi-correlated random processes and application to structural vibration problems. In Proceedings of the Japan Society of Civil Engineers, number 204, 121–128. Japan Society of Civil Engineers, 1972.
- HLW10
SH Huang, QS Li, and JR Wu. A general inflow turbulence generator for large eddy simulation. Journal of Wind Engineering and Industrial Aerodynamics, 98(10-11):600–617, 2010.
- JBLP06
Nicolas Jarrin, Sofiane Benhamadouche, Dominique Laurence, and Robert Prosser. A synthetic-eddy-method for generating inflow conditions for large-eddy simulations. International Journal of Heat and Fluid Flow, 27(4):585–593, 2006.
- KWICote72
J. C. Kaimal, J. C. Wyngaard, Y. Izumi, and O. R. Coté. Spectral characteristics of surface-layer turbulence. Quarterly Journal of the Royal Meteorological Society, 98(417):563–589, 1972. URL: https://rmets.onlinelibrary.wiley.com/doi/abs/10.1002/qj.49709841707, doi:10.1002/qj.49709841707.
- KCX13
Yusik Kim, Ian P Castro, and Zheng-Tong Xie. Divergence-free turbulence inflow conditions for large-eddy simulations with incompressible flow solvers. Computers & Fluids, 84:56–68, 2013.
- KSJ03
M. Klein, A. Sadiki, and J. Janicka. A digital filter based generation of inflow data for spatially developing direct numerical or large eddy simulations. Journal of Computational Physics, 186(2):652–665, 2003.
- Kra70
Robert H Kraichnan. Diffusion by a random velocity field. The physics of fluids, 13(1):22–31, 1970.
- LWS98
Thomas S Lund, Xiaohua Wu, and Kyle D Squires. Generation of turbulent inflow data for spatially-developing boundary layer simulations. Journal of computational physics, 140(2):233–258, 1998.
- PY18
Sejun Park and DongHun Yeo. Database-assisted design and equivalent static wind loads for mid- and high-rise structures: concepts, software, and user's manual. Technical Report NIST TN 2000, National Institute of Standards and Technology, Gaithersburg, MD, June 2018. doi:10.6028/NIST.TN.2000.
- PCR13
R Poletto, T Craft, and A Revell. A new divergence free synthetic eddy method for the reproduction of inlet flow conditions for les. Flow, turbulence and combustion, 91(3):519–539, 2013.
- SJ72
Masanobu Shinozuka and C-M Jan. Digital simulation of random processes and its applications. Journal of sound and vibration, 25(1):111–128, 1972.
- SS96
Emil Simiu and Robert H Scanlan. Wind effects on structures: fundamentals and application to design. Book published by John Willey & Sons Inc, 1996.
- SSC01
A Smirnov, S Shi, and I Celik. Random flow generation technique for large eddy simulations and particle-dynamics modeling. Journal of fluids engineering, 123(2):359–371, 2001.
- WS75
L. E. Wittig and A. K. Sinha. Simulation of multicorrelated random processes using the FFT algorithm. The Journal of the Acoustical Society of America, 58(3):630–634, 1975. URL: https://doi.org/10.1121/1.380702, doi:10.1121/1.380702.
- Wu17
Xiaohua Wu. Inflow turbulence generation methods. Annual Review of Fluid Mechanics, 49:23–49, 2017.
- XC08
Zheng-Tong Xie and Ian P Castro. Efficient generation of inflow conditions for large eddy simulation of street-scale flows. Flow, turbulence and combustion, 81(3):449–470, 2008.
- YB14
Rixin Yu and Xue-Song Bai. A fully divergence-free method for generation of inhomogeneous and anisotropic turbulence with large spatial variation. Journal of Computational Physics, 256:234–253, 2014.


Change the parameters as fast as you like and you should always see the correct results because react-sync handles cancelling old requests
Loading React...


The ggf-bg-color class give an element specific background color:
You only live once, but if you do it right, once is enough.
Good friends, good books, and a sleepy conscience: this is the ideal life.
There are three signs of a knowledgeable person: knowledge, forbearance and silence.
There are three signs of a knowledgeable person: knowledge, forbearance and silence.
There are three signs of a knowledgeable person: knowledge, forbearance and silence.
There are three signs of a knowledgeable person: knowledge, forbearance and silence.
There are three signs of a knowledgeable person: knowledge, forbearance and silence.
There are three signs of a knowledgeable person: knowledge, forbearance and silence.
There are three signs of a knowledgeable person: knowledge, forbearance and silence.
There are three signs of a knowledgeable person: knowledge, forbearance and silence.
There are three signs of a knowledgeable person: knowledge, forbearance and silence.
There are three signs of a knowledgeable person: knowledge, forbearance and silence.
There are three signs of a knowledgeable person: knowledge, forbearance and silence.
There are three signs of a knowledgeable person: knowledge, forbearance and silence.
There are three signs of a knowledgeable person: knowledge, forbearance and silence.
There are three signs of a knowledgeable person: knowledge, forbearance and silence.
Good friends, good books, and a sleepy conscience: this is the ideal life.
Good friends, good books, and a sleepy conscience: this is the ideal life.
Good friends, good books, and a sleepy conscience: this is the ideal life.
Good friends, good books, and a sleepy conscience: this is the ideal life.
Good friends, good books, and a sleepy conscience: this is the ideal life.
Good friends, good books, and a sleepy conscience: this is the ideal life.
Good friends, good books, and a sleepy conscience: this is the ideal life.
Good friends, good books, and a sleepy conscience: this is the ideal life.
Good friends, good books, and a sleepy conscience: this is the ideal life.


{% extends 'auth/login_base.html' %} {% block content %}
Your account will be deleted within the next 7 days by an admin.


RCMP seek four suspects in Campbell River office break-in
by Jeff BellCampbell River RCMP are looking for four suspects after a break-in at Quinsam Communications early Wednesday.
Police said two people made their way into the 16th Avenue business between 1:15 and 1:30 a.m. by smashing the glass in the front door. A third person entered at 4:45 a.m., followed by a fourth at 6:03 a.m.
All were caught on surveillance video, but it is not clear if they were connected.
“They could be linked but they might not be,” said Campbell River RCMP Const. Maury Tyre.
He said the third and fourth people to appear at the store might have been walking by and seen a situation they could take advantage of.
Tyre said the intruders took “all sorts of random things,” including an iPad, cords and cellphone covers.
“Everybody did a quick grab.”


Flipsnap Example
Demo
General usage
1
2
3
Loop
Auto-play
Image lazy-load
distance
1
2
3
4
5
maxPoint
1
2
3
4
5
6
7
8
9
10
transitionDuration
1
2
3
4
5
pointmove event
1
2
3
4
5
prev
next
touch events
1
2
3
show event param
event:
move events
1
2
3
show event param
event:
cancel move (only next)
1
2
3
refresh
1
add
remove
link
link to index
click event
click event
and link
next, prev
1
2
3
prev
next
moveToPoint
1
2
3
4
5
6
7
8
9
10
Go
disableTouch
1
2
3
4
5
disableTouch
prev
next
Go


Page Links: First Previous 1 2 Last Index Page
| M2dude 23rd Apr 2011, 09:13 permalink Post: 1316 |
CliveL
(And ChristiaanJ)
Quote:
Quote:
And sorry everyone about the \xa330 cost of converting 202 into an airliner, I meant (dumb ass that I am) \xa330 MILLION. Best regards Dude |
||
| M2dude 11th Aug 2011, 11:46 permalink Post: 1422 |
hissinsid
I have to admit, this is one superb image (and a nice high resolution one also) of my old friend Alpha Alpha. As far as the trip switches to the rear of the captain, not quite sure what you are refering to I'm afraid unless you mean the area on 213 circuit breaker panels? Also located here are the Audio Selector Panel, the emergency windshield de-ice switches (quite hairy really , 200 volts placed straight on the main windshield heating film with no temperature regulation or overheat protection). As well we also have the lighting controls for the panel and a fully deployed observer's coffee cup holder. As far as the bits either side of the E/O's table, well there is a fair bit, but I'll do my best: To the left we have the engine start panel, the air conditioning test panel (also encompassing the fuel vent suppression test and indication and gauge limit reset button) and door warning panel. Below these panels are the mode selector panels for the Inertial Navigation Systems and the artificial feel test and Ram Air Turbine control panels. At the very bottom we have the air intake test and diagnostic panels, as well as the anti ice indicator panel. The E/O's Audio Selector Panel and last of all we have the radiation meter and landing gear fault annunciator. (This item is not fitted to aircraft G-BOAG or any Air France aircraft). To the right we have the Aircraft Integrated Data System panel and immediately below that the compass control panel. (Concorde was one of the very last aircraft to have a magnetic heading reference system, modern aircraft synthesise magnetic heading against true heading and geographic position). Below that we have the oxygen indication panel and to the top right of the section we have the engine and fire test panel. Immediately below this we have the automatic test panel for Automatic Flight Control System and below this the smoke detector test panel. Below this we have the cockpit voice recorder panel and last of all the current monitor panel for the intake secondary air doors. WHEW!! I hope this helps but if not please ask away. Regards Dude Last edited by M2dude; 13th Aug 2011 at 00:43 . |
||
| steve-de-s 13th Aug 2011, 12:00 permalink Post: 1427 |
Filton
Save Bristol\x92s Concorde and the Brabazon Hangar
The Brabazon Hangar dominates the south side of Filton Airfield. During the 1960s it became the home of the UK Concorde production line, but Concorde wasn\x92t the first aircraft to be built within this amazing structure. The hangar was originally built during the 1940s to enable the construction of the massive Bristol Aircraft Company\x92s type 167, which is better known as the Brabazon and hence this is where the name of the hangar came from . This giant airliner aircraft had a 230ft wingspan, and was powered by eight pair-coupled Bristol Centaurus piston engines and was Britain\x92s attempt at a non-stop trans-Atlantic airliner. The prototype flew in 1949 six years and \xa33 million after the conception, and sadly the aircraft was already obsolete. The British de Havilland Comet jet-powered airliner was already well on the way and on the other side of the Atlantic, Boeing were developing their 707, and both of these would fly faster and carry more passengers than the Brabazon The prototype flew for a short while and a second turboprop-powered prototype (Brabazon II) was being built when the project was abandoned. Both aircraft were subsequently broken up in 1953. With the demise of the Brabazon project Bristol was then left with one of the largest aircraft production facilities in Europe and therefore the giant Brabazon hangars were put to other uses, these included being used for the production line for the much more successful Bristol Britannia airliner. But the Brabazon hangar has become more famous today as the birthplace of all the British built Concordes, ten airframes were built there, one prototype known as 002, one pre-production known as 01, one development production known as Delta Golf, and of course the seven airliner production airframes detailed below\x85 G-BOAA G-BOAB G-BOAC G-BOAD G-BOAE G-BOAF G-BOAG Concorde 216 G-BOAF was the last Concorde built anywhere in the world, and of course the very last one to fly in November 2003. During her final flight she flew back to her birthplace, to Filton to form a major part of a new planned Bristol aviation museum. The plan was to house the whole of the Bristol Aviation Collection, known as the BAC, in one building, a centre to celebrate Bristol\x92s incredible aviation history, and let\x92s not forget that Bristol led the world. But like so many things in this fast changing world, ideas and directions soon change and as in this case not for the better. Heritage Concorde has heard of one idea that it wishes to push forward with anyone who would be willing to work alongside the group. With next years closure of Filton airfield, one incredible heritage building stands at risk of being ripped down and lost forever, the Brabazon Hangar. So why not use this building as the centre of the history of Bristol aviation and space industry, and in memory of the man who started it all, Sir George White. It\x92s large enough to form one of the most incredible museums in the world; it would be able to house the whole BAC collection with Concorde 216 at the centre, where she was built. This idea needs to be looked into and not dismissed so easily by the people leading the effort for the new museum. Heritage Concorde will start to develop this idea further. Any ideas, any offer of help or advice??? Steve de Sausmarez |
||
| ksjc 18th Oct 2013, 06:01 permalink Post: 1730 |
G-BOAG lives in Seattle now. And so you know it's Concorde with an " e". Very important.
I flew on G-BOAG, BA 2 JFK- LHR, 6 months before the program was shut down in 2003. The experience is hard to describe and only a Concorde fan would appreciate it anyway. |


Test refresh while preserving scroll position:
refresh
Tests handling of large data sets on a (simulated) slow network, with results being returned after a delay and out of order, and the total number of rows being returned at a different time to the result set.


WITNESS LIST Government Organization Committee May 19, 2005 - 9:00A HB 933 Registering, but not testifying: On: Bow, Jonathan Executive Director (State Office of Risk Management), Austin, TX Pettigrew, Karen Assistant Attorney General (Office of Attorney General), Austin, TX Vollbrecht, Stephen General Counsel (State Office of Risk Management), Austin, TX HB 1116 Registering, but not testifying: On: Longley, Joey Director (Sunset Commission), Austin, TX HB 1413 ON: McMahan, Vanessa Senate Staff (Senator Ellis' office), Austin, TX Registering, but not testifying: For: Gentry, Liz Marriage and Family Therapist (Texas Association for Marriage and Family Therapy), Austin, TX Hill, Claire Marriage and Family Therapist (Marriage and Family Therapy), Austin, TX On: Hopson, Steve Policy Analyst (Sunset Commission), Austin, TX Marks, Andrew Executive Director (Texas State Board of Examiners of Marriage and Family Therapists), Austin, TX HB 1434 Registering, but not testifying: On: Atkins, Billy Charitable Bingo Director (Texas Lottery Commission), Austin, TX Greer, Reagan Executive Director (Texas Lottery Commission), Austin, TX Latta, Karen Policy Analyst (Sunset Commission), Austin, TX HB 1516 Registering, but not testifying: For: Lewis, Gib AVAYA (AVAYA), Austin, TX Ratcliff, Thomas Consultant (Northrop Grumman), Austin, TX Tanner-Jacobs, Debbie AVAYA (AVAYA), Austin, TX On: Olson, Larry Executive Director (Department of Information Resources), Austin, TX HB 2525 FOR: McKnight, Peyton General Counsel (Texas Counil of Engineering Companies), Austin, TX AGAINST: Stoppenhagen, Dan Engineering and Construction (Fluor Enterprises), Austin, TX AGAINST BILL/FOR COMMITTEE SUBSTITUTE (Competitive Bidding): Knebel, Kurt Regional Contracts Manager (Granite Construction Company), Lewisville, TX ON: Jayne, Ken President of Applied Innovative Management (Center for Job Order Contracting Excellence), Houston, TX Registering, but not testifying: For: Castillo, Yvonne General Counsel (Texas Society of Architects), Austin, TX Elder Jr., Don Educational Consultant (Katy City Council), Katy, TX Paul, Pete Purchasing Consultant (The Cooperative Purchasing Network), Austin, TX Rocha, Susan Attorney (City of Round Rock), San Antonio, TX Schulle, Gerhardt Director of Governmental Affairs (Texas Society of Professional Engineers), Austin, TX Sewell, Jim Assistant Executive (AGC- Building Branch), Austin, TX On: Gallagher, Jerry President (Gallagher Construction Services), Plano, TX Orr, Fred Construction (CMAA), Dallas, TX HB 2593 Registering, but not testifying: For: Ackarman-Sioson, Brenda Government Technical Consultant (MCI), Georgetown, TX Hamann, Kendra Assistant (Self), Austin, TX Parr, Mike Account Executive (EMC), Austin, TX Rogers, Bill Manager (Self), Austin, TX Templeton, James Senior Manager (Self), Austin, TX On: Burroughs, Robert Major (Texas Department of Public Safety), Austin, TX Hutchison, Larry Texas Online (Department of Information Resources), Austin, TX HB 2819 FOR: Borel, Dennis Executive Director (Coalition of Texans with Disabilites), Austin, TX ON: Gaston, Stacy Legislative Assistant (Senator Madla), Austin, TX Registering, but not testifying: For: Greer, William Technology and Administrative Assistant (Coalition of Texans with Disabilities), Austin, TX Rodgers, Gene Policy Analyst (Coalition of Texans with Disabilities), Austin, TX On: Allan, James Webmaster (Texas School for the Blind), Austin, TX Lanier, Dustsin Director (Department of Information Resources), Austin, TX HB 3047 Registering, but not testifying: For: Woodard, Shayne (Texas 911 Alliance), Austin, TX HB 3112 Registering, but not testifying: For: Hollis, Nick Executive Vice President, Strategic Development (SecureInfo Corporation), Austin, TX Kroll, John Consultant (Axalto, Inc.), Austin, TX On: Olson, Larry Executive Director (Department of Information Resources), Austin, TX


Assembled Height
44.5 in
Assembled Length
35.75 in
Assembled Weight
92 lb
Assembled Width
11 in
Fan
No
Foldable
No
Folded height (cm)
0
Folded length (cm)
0
Folded width (cm)
0
Warranty (in Months)
12 mo
Water bottle holder
Yes
Weight capacity (kg)
136
Brand
Echelon
Exercises:
Try a Tabata stationary bike workout
Crush this 20-minute interval workout that alternates between easy, moderate, hard, and all-out levels of
exertion


Kylie Jenner Earns $600 Million By Selling Majority Ownership Of Her Cosmetic Company
by Cameron FrewKylie Jenner is loosening the reigns on her empirical cosmetic brand, selling a $600 million majority stake to beauty products giant Coty Inc.
Advertisements
Kylie Cosmetics, founded by the 22-year-old in 2015, turned the Kardashian-Jenner sister into a mogul.
Valued at a whopping $1.2 billion, Coty plan to capitalise on the self-made billionaire’s star power (as witnessed by the recent Rise and Shine riffraff).
Advertisements
While Kylie will remain the face of the business, the cosmetics maker – whose brands include Hugo Boss and Burberry fragrances, as well as Covergirl, Rimmel and Max Factor – will have overall responsibility. The announcement has since driven shares in the company up by 5%.
In a statement, Jenner said:
I’m excited to partner with Coty to continue to reach even more fans of Kylie Cosmetics and Kylie Skin around the world. I look forward to continuing the creativity and ingenuity for each collection that consumers have come to expect and engaging with my fans across social media.
This partnership will allow me and my team to stay focused on the creation and development of each product while building the brand into an international beauty powerhouse.
Kylie’s first lipstick kits sold out within minutes of launching in 2015: now, she’s a social media powerhouse, with more than 150 million followers on Instagram.
Coty CEO Pierre Laubies said in a press release:
We are pleased to welcome Kylie into our organization and family. Combining Kylie’s creative vision and unparalleled consumer interest with Coty’s expertise and leadership in prestige beauty products is an exciting next step in our transformation and will leverage our core strengths around fragrances, cosmetics and skincare, allowing Kylie’s brands to reach their full potential.
Kylie is a modern-day icon, with an incredible sense of the beauty consumer, and we believe in the high potential of building a global beauty brand together.
According to Coty, Kylie Cosmetics took in about $177 million in the last 12 months. The brand also reached new heights when Ulta Beauty, which operates roughly 1,100 stores, started exclusively carrying her products.
Advertisements
The release added:
Coty will have overall responsibility for the portfolio’s development, leveraging its global knowledge and capabilities in R&D, manufacturing, distribution, commercial and go-to-market expertise, as well as its deep understanding of the fragrances, cosmetics and skincare categories.
In addition to its responsibilities within the partnership, Coty will act as a licensee for skincare, fragrances, and nail products.
After graduating from Glasgow Caledonian University with an NCTJ and BCTJ-accredited Multimedia Journalism degree, Cameron ventured into the world of print journalism at The National, while also working as a freelance film journalist on the side, becoming an accredited Rotten Tomatoes critic in the process. He’s now left his Scottish homelands and took up residence at UNILAD as a journalist.


DataSource.Function allows the implementer to define a JavaScript function that returns data values, for maximum customizeability. A DataSchema plugin is used to normalize incoming data into a known format for consistency of usage by other components.


{% extends "get_together/base.html" %} {% load i18n %} {% block content %}
{% blocktrans with email=request.user.email %}The confirmation link is invalid. Either it does not belong to {{email}} or the confirmation key has expired.{% endblocktrans %}
{% trans "Resend confirmation email" %}


Changelog¶
2.4.3 (2021-XX-XX)¶
n/a
2.4.2 (2021-02-24)¶
fixed LocaleListener PHP8 deprecation warning
fixed Runtimeloader expecting a return statement
2.4.1 (2021-02-23)¶
updated code to remove deprecation warnings
updated documentation
2.4.0 (2021-02-22)¶
dropped support for PHP < 7.4
dropped Support for Symfony 4
added support for Symfony 5
added PHPStan for internal development
2.3.4 (2020-07-18)¶
[SessionServiceProvider] Updated SessionListener to return SessionInterface to keep compatibility with newer Symfony versions.
2.3.3 (2019-10-24)¶
added possibility to set global Twig variables from config array twig.options, since setting global variables after initialization is not possible since Twig 2.x anymore
2.3.2 (2019-10-22)¶
removed warning messages, as new code will be moved to separate repository and this code is already stable
fixed documentation links
2.3.1 (2019-10-07)¶
fixed compatibility issue with Symfony 4.3
fixed deprecation notices regarding Twig
fixed all deprecation notices for Symfony 4.3
2.3.0 (2018-04-20)¶
added support for defining users provider as a service ID
fixed error when HttpKernelRuntime is not available
allow setting custom status code on exception response with Symfony 3.3+
made CSRF extension work with Validator translations domain
fixed Security provider context usage
dropped support for Twig < 2.0
dropped support for PHP < 7.1
dropped support for Symfony 2.x and 3.x
added support for Symfony 4
added support PSR-3 log levels in MonologServiceProvider
exposed AuthenticationUtils in SecurityServiceProvider
2.2.3 (2018-02-25)¶
fixed validator integration into the security provider (order of registration of the validator and security providers does not matter anymore)
fixed compatibility issues with Symfony 3.4
2.2.2 (2018-01-12)¶
[SECURITY] fixed before handlers not executed under mounts
2.2.1 (2017-12-14)¶
added support for Swiftmailer SSL stream_context_options option
fixed usage of namespaces for Twig paths
2.2.0 (2017-07-23)¶
added json manifest version strategy support
fixed EsiFragment constructor
fixed RedirectableUrlMatcher compatibility with Symfony
fixed compatibility with Pimple 3.2
fixed WebTestCase compatibility with PHPUnit 6+
2.1.0 (2017-05-03)¶
added more options to security.firewalls
added WebLink component integration
added parameters to configure the Twig core extension behavior
fixed deprecation notices with symfony/twig-bridge 3.2+ in TwigServiceProvider
added FormRegistry as a service to enable the extension point
removed the build scripts
fixed some deprecation warnings
added support for registering Swiftmailer plugins
2.0.4 (2016-11-06)¶
fixed twig.app_variable definition
added support for latest versions of Twig 1.x and 2.0 (Twig runtime loaders)
added support for Symfony 2.3
2.0.3 (2016-08-22)¶
fixed lazy evaluation of ‘monolog.use_error_handler’
fixed PHP7 type hint on controllers
2.0.2 (2016-06-14)¶
fixed Symfony 3.1 deprecations
2.0.1 (2016-05-27)¶
fixed the PrestoPHP form extension registration to allow overriding default ones
removed support for the obsolete Locale Symfony component (uses the Intl one now)
added support for Symfony 3.1
2.0.0 (2016-05-18)¶
decoupled the exception handler from HttpKernelServiceProvider
Switched to BCrypt as the default encoder in the security provider
added full support for RequestMatcher
added support for Symfony Guard
added support for callables in CallbackResolver
added FormTrait::namedForm()
added support for delivery_addresses, delivery_whitelist, and sender_address
added support to register form types / form types extensions / form types guessers as services
added support for callable in mounts (allow nested route collection to be built easily)
added support for conditions on routes
added support for the Symfony VarDumper Component
added a global Twig variable (an AppVariable instance)
[BC BREAK] CSRF has been moved to a standalone provider (
form.secret
is not available anymore)added support for the Symfony HttpFoundation Twig bridge extension
added support for the Symfony Asset Component
bumped minimum version of Symfony to 2.8
bumped minimum version of PHP to 5.5.0
Updated Pimple to 3.0
Updated session listeners to extends HttpKernel ones
[BC BREAK] Locale management has been moved to LocaleServiceProvider which must be registered if you want PrestoPHP to manage your locale (must also be registered for the translation service provider)
[BC BREAK] Provider interfaces moved to PrestoPHPApi namespace, published as separate package via subtree split
[BC BREAK] ServiceProviderInterface split in to EventListenerProviderInterface and BootableProviderInterface
[BC BREAK] Service Provider support files moved under PrestoPHPProvider namespace, allowing publishing as separate package via sub-tree split
monolog.exception.logger_filter
option added to Monolog service provider[BC BREAK]
$app['request']
service removed, use$app['request_stack']
instead
1.3.6 (2016-XX-XX)¶
n/a
1.3.5 (2016-01-06)¶
fixed typo in SecurityServiceProvider
1.3.4 (2015-09-15)¶
fixed some new deprecations
fixed translation registration for the validators
1.3.3 (2015-09-08)¶
added support for Symfony 3.0 and Twig 2.0
fixed some Form deprecations
removed deprecated method call in the exception handler
fixed Swiftmailer spool flushing when spool is not enabled
1.3.2 (2015-08-24)¶
no changes
1.3.1 (2015-08-04)¶
added missing support for the Expression constraint
fixed the possibility to override translations for validator error messages
fixed sub-mounts with same name clash
fixed session logout handler when a firewall is stateless
1.3.0 (2015-06-05)¶
added a $app[‘user’] to get the current user (security provider)
added view handlers
added support for the OPTIONS HTTP method
added caching for the Translator provider
deprecated $app[‘exception_handler’]->disable() in favor of unset($app[‘exception_handler’])
made PrestoPHP compatible with Symfony 2.7 an 2.8 (and keep compatibility with Symfony 2.3, 2.5, and 2.6)
removed deprecated TwigCoreExtension class (register the new HttpFragmentServiceProvider instead)
bumped minimum version of PHP to 5.3.9
1.2.5 (2015-06-04)¶
no code changes (last version of the 1.2 branch)
1.2.4 (2015-04-11)¶
fixed the exception message when mounting a collection that doesn’t return a ControllerCollection
fixed Symfony dependencies (PrestoPHP 1.2 is not compatible with Symfony 2.7)
1.2.3 (2015-01-20)¶
fixed remember me listener
fixed translation files loading when they do not exist
allowed global after middlewares to return responses like route specific ones
1.2.2 (2014-09-26)¶
fixed Translator locale management
added support for the $app argument in application middlewares (to make it consistent with route middlewares)
added form.types to the Form provider
1.2.1 (2014-07-01)¶
added support permissions in the Monolog provider
fixed Switfmailer spool where the event dispatcher is different from the other ones
fixed locale when changing it on the translator itself
1.2.0 (2014-03-29)¶
Allowed disabling the boot logic of MonologServiceProvider
Reverted “convert attributes on the request that actually exist”
[BC BREAK] Routes are now always added in the order of their registration (even for mounted routes)
Added run() on Route to be able to define the controller code
Deprecated TwigCoreExtension (register the new HttpFragmentServiceProvider instead)
Added HttpFragmentServiceProvider
Allowed a callback to be a method call on a service (before, after, finish, error, on Application; convert, before, after on Controller)
1.1.3 (2013-XX-XX)¶
Fixed translator locale management
1.1.2 (2013-10-30)¶
Added missing “security.hide_user_not_found” support in SecurityServiceProvider
Fixed event listeners that are registered after the boot via the on() method
1.0.2 (2013-10-30)¶
Fixed SecurityServiceProvider to use null as a fake controller so that routes can be dumped
1.1.1 (2013-10-11)¶
Removed or replaced deprecated Symfony code
Updated code to take advantages of 2.3 new features
Only convert attributes on the request that actually exist.
1.1.0 (2013-07-04)¶
Support for any
Psr\Log\LoggerInterface
as opposed to the monolog-bridge one.Made dispatcher proxy methods
on
,before
,after
anderror
lazy, so that they will not instantiate the dispatcher early.Dropped support for 2.1 and 2.2 versions of Symfony.
1.0.1 (2013-07-04)¶
Fixed RedirectableUrlMatcher::redirect() when PrestoPHP is configured to use a logger
Make
DoctrineServiceProvider
multi-db support lazy.
1.0.0 (2013-05-03)¶
2013-04-12: Added support for validators as services.
2013-04-01: Added support for host matching with symfony 2.2:
$app->match('/', function() { // app-specific action })->host('example.com'); $app->match('/', function ($user) { // user-specific action })->host('{user}.example.com');
2013-03-08: Added support for form type extensions and guessers as services.
2013-03-08: Added support for remember-me via the
RememberMeServiceProvider
.2013-02-07: Added
Application::sendFile()
to ease sendingBinaryFileResponse
.2012-11-05: Filters have been renamed to application middlewares in the documentation.
2012-11-05: The
before()
,after()
,error()
, andfinish()
listener priorities now set the priority of the underlying Symfony event instead of a custom one before.2012-11-05: Removing the default exception handler should now be done via its
disable()
method:Before:
unset($app[‘exception_handler’]);
After:
$app[‘exception_handler’]->disable();
2012-07-15: removed the
monolog.configure
service. Use theextend
method instead:Before:
$app['monolog.configure'] = $app->protect(function ($monolog) use ($app) { // do something });
After:
$app['monolog'] = $app->share($app->extend('monolog', function($monolog, $app) { // do something return $monolog; }));
2012-06-17:
ControllerCollection
now takes a required route instance as a constructor argument.Before:
$controllers = new ControllerCollection();
After:
$controllers = new ControllerCollection(new Route()); // or even better $controllers = $app['controllers_factory'];
2012-06-17: added application traits for PHP 5.4
2012-06-16: renamed
request.default_locale
tolocale
2012-06-16: Removed the
translator.loader
service. See documentation for how to use XLIFF or YAML-based translation files.2012-06-15: removed the
twig.configure
service. Use theextend
method instead:Before:
$app['twig.configure'] = $app->protect(function ($twig) use ($app) { // do something });
After:
$app['twig'] = $app->share($app->extend('twig', function($twig, $app) { // do something return $twig; }));
2012-06-13: Added a route
before
middleware2012-06-13: Renamed the route
middleware
tobefore
2012-06-13: Added an extension for the Symfony Security component
2012-05-31: Made the
BrowserKit
,CssSelector
,DomCrawler
,Finder
andProcess
components optional dependencies. Projects that depend on them (e.g. through functional tests) should add those dependencies to theircomposer.json
.2012-05-26: added
boot()
toServiceProviderInterface
.2012-05-26: Removed
SymfonyBridgesServiceProvider
. It is now implicit by checking the existence of the bridge.2012-05-26: Removed the
translator.messages
parameter (usetranslator.domains
instead).2012-05-24: Removed the
autoloader
service (use composer instead). The*.class_path
settings on all the built-in providers have also been removed in favor of Composer.2012-05-21: Changed error() to allow handling specific exceptions.
2012-05-20: Added a way to define settings on a controller collection.
2012-05-20: The Request instance is not available anymore from the Application after it has been handled.
2012-04-01: Added
finish
filters.2012-03-20: Added
json
helper:$data = array('some' => 'data'); $response = $app->json($data);
2012-03-11: Added route middlewares.
2012-03-02: Switched to use Composer for dependency management.
2012-02-27: Updated to Symfony 2.1 session handling.
2012-01-02: Introduced support for streaming responses.
2011-09-22:
ExtensionInterface
has been renamed toServiceProviderInterface
. All built-in extensions have been renamed accordingly (for instance,PrestoPHP\Extension\TwigExtension
has been renamed toPrestoPHP\Provider\TwigServiceProvider
).2011-09-22: The way reusable applications work has changed. The
mount()
method now takes an instance ofControllerCollection
instead of anApplication
one.Before:
$app = new Application(); $app->get('/bar', function() { return 'foo'; }); return $app;
After:
$app = new ControllerCollection(); $app->get('/bar', function() { return 'foo'; }); return $app;
2011-08-08: The controller method configuration is now done on the Controller itself
Before:
$app->match('/', function () { echo 'foo'; }, 'GET|POST');
After:
$app->match('/', function () { echo 'foo'; })->method('GET|POST');


My older brother is a graduate of Eastern Michigan University in Ypsilanti, Michigan and my father is a veteran of the United States Air Force.
My older brother is a graduate of Eastern Michigan University in Ypsilanti, Michigan and my father is a veteran of the United States Air Force.


home |
safe dating tips |
contact us |
billing |
success stories |
careers |
about |
advertise with us |
search |
join now |
bookmark page |
site map
Match.com |
Chemistry.com |
Mature Dating |
Black Singles |
Big and Beautiful


Given a list of nodes and the distances between each pair of nodes,
find how we use genetic algorithm to determine the shortest possible route that visits
each node exactly once and returns to the origin node!
Polynomial Equations Solver
Given a polynomial equation in one variable of any power and coefficients,
we use our genetic algorithm library to demonstrate how
one of the roots can be found.
Feature Selection using GA in ML
Given a set of n features, our goal is to select m optimal features
from these n features, such that the mean squared error is as low
as possible.


It is good to be sailing again and seeing new islands.
When the boat moves it reminds you that every now and then you
need to pay attention to it, also to put some money into it.
We left Grenada bound for St. Lucia and other than a
confused/rough seas from Grenada to Carriacou it was looking
good. We stopped at Carriacou long enough to look for a
fuel barge that was supposedly there and offering diesel at $9
EC per gallon. We did not find it so continued north with
the other catamaran Pollux and we picked up Windchasers at
Carriacou, a single hander who is also headed north.
There was a storm that came through just at dusk and the seas
and winds picked up but all three boats did well. Shortly
into the night we lost a reefing block, used to keep the sail
small due to the high winds. Pollux had some engine
problems and Windchasers had no issues. Deciding the best
bet was to pull into an anchorage for the night and fix our
problems we detoured to Canouan and found a nice protected
anchorage for the night.
In the morning everything always looks better and the problems
were fixed on both boats. Not wanting to get to St. Lucia
too early in the morning we left the anchorage at 12 noon and
sailed for most of the day. During the night we had some
winds that were not blowing in the right direction for us to
sail, so had to motor some of the way. At 6:30 am we
pulled into the northern anchorage of Rodney Bay on St. Lucia
and dropped the anchor.
Overall it is still good to be moving even with the issues that
pop up now and then. It looks like the weather will not be
nice to head north until Thursday so we will check in with
customs/immigration and do some shopping and site seeing.
The anchorage is a protected one and there is some slow internet
available so we should stay out of trouble.
11/26/13: to St. Lucia
|
Just
a little further north. |
|
Rodney Bay, St. Lucia |
South end of St. Lucia |
Cloudy day in the anchorage |
Our friends on Pollux catch a wave |
Before - turning block |
After - blown out turning block |


GLS HTML5 Bug List
Mark all as complete
hide completed
Export as CSV
Double-click to edit a item.
Created by
vitrum


Increase Rhythmic Variety in Your Melody
August 31, 2018 | Nick Mazuk
When you first start writing melodies, you’ll likely fall into a rhythmic rut. You just keep writing the same rhythmic fragments over and over again.
This can get boring.
But fear not! For I have several simple ways to add rhythmic variety to your melody!
Each of these are simple and easy to use. And with a little practice, you’ll notice that your melodies are far more engaging.
Let’s dive in.
Listen, Listen, Listen… Then Listen Again
I probably don’t ever stress this enough, but the key to understanding anything in music is to first listen. Why do you think almost every post includes an audio sample? Or two? Sometimes three or five or ten?
You will never be able to write music outside of the styles that you listen to. You can try, but you will never sound your best. So listen.
Once you listen, then analyze the music. Figure out what makes it interesting, and then try writing something that uses that.
Okay, enough of the aside. Let’s look at rhythmic techniques that you can employ today (which by the way, I use these because I listened).
The Keys to Syncopation
Syncopated music is music where the off beats and weak beats get the emphasis. Weak beats in 4/4 are beats 2 and 4. So if your melody emphasizes those beats and the off beats, you’ll have syncopated music.
And the feel is very distinct from traditional on-the-beat rhythms.
Learn to use syncopation. That will instantly get you out of the box of writing rhythms that fit nicely within the beats. The first step to writing good syncopated music is to listen to that style. Jazz is great for learning syncopation.
Why is jazz good music to listen to for syncopation?
But there are two keys that will help take your syncopation to the next level:
- Syncopation is the anticipation of the next beat
- Syncopation requires notes on the beat
The first key tells us that any syncopation will feel like the next beat came early. That’s how it creates energy. This means that you can easily make a melody syncopated by shifting some notes half a beat early.
The second key explains that some notes need to be on the beat for the off beats to feel syncopated. Why is that?
What happens when all the notes become off beats? Every note starts to feel like an on beat. Therefore, on beats are key to make the off beats sound syncopated.
Don’t Forget the Tuplets—And Not Just Triplets
But even with syncopation, the internals of a beat still feel the same.
That’s where tuplets come in!
Tuplets like triplets change the subdivision of a beat to give each beat a new feel. The rhythm cannot simply fit into a box. Tuplets change the box.
It’s the difference between 12/8 and 4/4. They have the same number of beats, the strong and weak beats, but different internal subdivisions.
The key here is that simple triplets aren’t enough to add tons of variety nowadays. Switching between 8th notes and 8th note triplets is so commonplace that we hardly flinch when there is a switch between the two.
But there are other triplets to our disposal. Have you ever thought about using a 5-tuplet? What about a 7-tuplet? Try those and then see how your rhythm evolves. Write a melody with the goal of using a tuplet that is not a triplet.
Add Rests
When thinking of melodies, we often think of long, lyrical lines. But we forget that melodies don’t need to be lyrical. They are just the most important figure that the listener hears.
So a melody can be littered with rests!
Here is a melody that is mainly rests:
Just Change the Time Signature
One of the main reasons why we get into a rut is because we keep using the same time signature. How often do you use 4/4? Don’t worry, we’re all guilty of it.
But your music can be so much more interesting if you simply try writing melodies in new time signatures.
Yes, all those time signatures do exist and have been used. Have you used them?
Getting out of your normal time signature will force you to come up with creative and novel solutions. Even if you never plan to write any of the weird time signatures in a work, simply exploring them will help add more variety to your rhythm. It will make you think about rhythm differently.
How else can you ask for more rhythmic variety?
Other Ways
Of course, there are other ways to increase your rhythmic variety, but these are just a couple ways that are easy yet effective.
So start practicing these today! Try writing a melody with utilizing each of these techniques. Also, try writing the same melody different ways: once as you normally would, once with syncopation, once with a tuplet, once with rests, and once with a new time signature. You’ll be amazed by how quickly your rhythmic pallet expands.
If you would like more guided help, download the free worksheet below. It will give you specific instruction to start utilizing each of these methods. If you are already a subscriber, the worksheet is in your inbox.
Happy writing!


Truth About Abs
The flat stomach that is such a desired item for so many people, is also very hard to come by. How many of us have spent money on expensive exercise equipment, paid out for innovative diet plans and worked ourselves into the ground only to find out that we still have an unsightly paunch that won't go away? And you just try getting your money back when you find that the plan you've been told cannot fail actually fails anyway – it's nigh-on impossible with many of the services on the market today.
Fat Loss 4 Idiots
It seems to have passed a lot of people by, but the fact is that despite increasing focus on healthy eating and exercise, we as a society are actually getting fatter and fatter. Even though it is impossible to walk through a supermarket without seeing shelves and shelves of low-fat food, we are still putting on weight and even the fattier foods out there are trying to sell themselves as being good for your health. So what do we do if we want to lose that unsightly fat and weight?
Burn The Fat
When you look through the weight loss options out there, there seems to be a pretty stark division between on the one hand plans which will have a rapid weight loss up front and then run aground fairly quickly, and ones which will allow you to lose weight on a constant basis but really slowly. This is all well and good if these are the things that work for you, but many of us do not really have that option and need to lose weight faster, and lose more of it while still keeping healthy.


{% extends "base.html" %} {% block title %}Home Page{% endblock %} {% block content %}
Carefully Prepared Training Modules to Prepare you for Consulting Cases
These modules were created over the course of eight weeks with a team of 8 consutants.


| Top |
| gint | action-area-border | Read |
| gint | button-spacing | Read |
| gint | content-area-border | Read |
| gint | content-area-spacing | Read |
GObject ╰── GInitiallyUnowned ╰── GtkWidget ╰── GtkContainer ╰── GtkBin ╰── GtkWindow ╰── GtkDialog ├── GtkAboutDialog ├── GtkAppChooserDialog ├── GtkColorChooserDialog ├── GtkColorSelectionDialog ├── GtkFileChooserDialog ├── GtkFontChooserDialog ├── GtkFontSelectionDialog ├── GtkMessageDialog ├── GtkPageSetupUnixDialog ├── GtkPrintUnixDialog ╰── GtkRecentChooserDialog
Dialog boxes are a convenient way to prompt the user for a small amount of input, e.g. to display a message, ask a question, or anything else that does not require extensive effort on the user’s part.
GTK+ treats a dialog as a window split vertically. The top section is a GtkVBox, and is where widgets such as a GtkLabel or a GtkEntry should be packed. The bottom area is known as the “action area”. This is generally used for packing buttons into the dialog which may perform functions such as cancel, ok, or apply.
GtkDialog boxes are created with a call to gtk_dialog_new()
or
gtk_dialog_new_with_buttons()
. gtk_dialog_new_with_buttons()
is
recommended; it allows you to set the dialog title, some convenient
flags, and add simple buttons.
If “dialog” is a newly created dialog, the two primary areas of the
window can be accessed through gtk_dialog_get_content_area()
and
gtk_dialog_get_action_area()
, as can be seen from the example below.
A “modal” dialog (that is, one which freezes the rest of the application
from user input), can be created by calling gtk_window_set_modal()
on the
dialog. Use the GTK_WINDOW()
macro to cast the widget returned from
gtk_dialog_new()
into a GtkWindow. When using gtk_dialog_new_with_buttons()
you can also pass the GTK_DIALOG_MODAL flag to make a dialog modal.
If you add buttons to GtkDialog using gtk_dialog_new_with_buttons()
,
gtk_dialog_add_button()
, gtk_dialog_add_buttons()
, or
gtk_dialog_add_action_widget()
, clicking the button will emit a signal
called “response” with a response ID that you specified. GTK+
will never assign a meaning to positive response IDs; these are entirely
user-defined. But for convenience, you can use the response IDs in the
GtkResponseType enumeration (these all have values less than zero). If
a dialog receives a delete event, the “response” signal will
be emitted with a response ID of GTK_RESPONSE_DELETE_EVENT.
If you want to block waiting for a dialog to return before returning
control flow to your code, you can call gtk_dialog_run()
. This function
enters a recursive main loop and waits for the user to respond to the
dialog, returning the response ID corresponding to the button the user
clicked.
For the simple dialog in the following example, in reality you’d probably use GtkMessageDialog to save yourself some effort. But you’d need to create the dialog contents manually if you had more than a simple message in the dialog.
An example for simple GtkDialog usage:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
// Function to open a dialog box with a message void quick_message (GtkWindow *parent, gchar *message) { GtkWidget *dialog, *label, *content_area; GtkDialogFlags flags; // Create the widgets flags = GTK_DIALOG_DESTROY_WITH_PARENT; dialog = gtk_dialog_new_with_buttons ("Message", parent, flags, _("_OK"), GTK_RESPONSE_NONE, NULL); content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); label = gtk_label_new (message); // Ensure that the dialog box is destroyed when the user responds g_signal_connect_swapped (dialog, "response", G_CALLBACK (gtk_widget_destroy), dialog); // Add the label, and show everything we’ve added gtk_container_add (GTK_CONTAINER (content_area), label); gtk_widget_show_all (dialog); } |
The GtkDialog implementation of the GtkBuildable interface exposes the
vbox
and action_area
as internal children with the names “vbox” and
“action_area”.
GtkDialog supports a custom <action-widgets> element, which can contain
multiple <action-widget> elements. The “response” attribute specifies a
numeric response, and the content of the element is the id of widget
(which should be a child of the dialogs action_area
). To mark a response
as default, set the “default“ attribute of the <action-widget> element
to true.
GtkDialog supports adding action widgets by specifying “action“ as the “type“ attribute of a <child> element. The widget will be added either to the action area or the headerbar of the dialog, depending on the “use-header-bar“ property. The response id has to be associated with the action widget using the <action-widgets> element.
An example of a GtkDialog UI definition fragment:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<object class="GtkDialog" id="dialog1"> <child type="action"> <object class="GtkButton" id="button_cancel"/> </child> <child type="action"> <object class="GtkButton" id="button_ok"> <property name="can-default">True</property> </object> </child> <action-widgets> <action-widget response="cancel">button_cancel</action-widget> <action-widget response="ok" default="true">button_ok</action-widget> </action-widgets> </object> |
GtkWidget *
gtk_dialog_new (void
);
Creates a new dialog box.
Widgets should not be packed into this GtkWindow
directly, but into the vbox
and action_area
, as described above.
GtkWidget * gtk_dialog_new_with_buttons (const gchar *title
,GtkWindow *parent
,GtkDialogFlags flags
,const gchar *first_button_text
,...
);
Creates a new GtkDialog with title title
(or NULL
for the default
title; see gtk_window_set_title()
) and transient parent parent
(or
NULL
for none; see gtk_window_set_transient_for()
). The flags
argument can be used to make the dialog modal (GTK_DIALOG_MODAL)
and/or to have it destroyed along with its transient parent
(GTK_DIALOG_DESTROY_WITH_PARENT). After flags
, button
text/response ID pairs should be listed, with a NULL
pointer ending
the list. Button text can be arbitrary text. A response ID can be
any positive number, or one of the values in the GtkResponseType
enumeration. If the user clicks one of these dialog buttons,
GtkDialog will emit the “response” signal with the corresponding
response ID. If a GtkDialog receives the “delete-event” signal,
it will emit ::response with a response ID of GTK_RESPONSE_DELETE_EVENT.
However, destroying a dialog does not emit the ::response signal;
so be careful relying on ::response when using the
GTK_DIALOG_DESTROY_WITH_PARENT flag. Buttons are from left to right,
so the first button in the list will be the leftmost button in the dialog.
Here’s a simple example:
1 2 3 4 5 6 7 8 9 10 |
GtkWidget *dialog; GtkDialogFlags flags = GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT; dialog = gtk_dialog_new_with_buttons ("My dialog", main_app_window, flags, _("_OK"), GTK_RESPONSE_ACCEPT, _("_Cancel"), GTK_RESPONSE_REJECT, NULL); |
title |
Title of the dialog, or |
[allow-none] |
parent |
Transient parent of the dialog, or |
[allow-none] |
flags |
from GtkDialogFlags |
|
first_button_text |
text to go in first button, or |
[allow-none] |
... |
response ID for first button, then additional buttons, ending with |
gint
gtk_dialog_run (GtkDialog *dialog
);
Blocks in a recursive main loop until the dialog
either emits the
“response” signal, or is destroyed. If the dialog is
destroyed during the call to gtk_dialog_run()
, gtk_dialog_run()
returns
GTK_RESPONSE_NONE. Otherwise, it returns the response ID from the
::response signal emission.
Before entering the recursive main loop, gtk_dialog_run()
calls
gtk_widget_show()
on the dialog for you. Note that you still
need to show any children of the dialog yourself.
During gtk_dialog_run()
, the default behavior of “delete-event”
is disabled; if the dialog receives ::delete_event, it will not be
destroyed as windows usually are, and gtk_dialog_run()
will return
GTK_RESPONSE_DELETE_EVENT. Also, during gtk_dialog_run()
the dialog
will be modal. You can force gtk_dialog_run()
to return at any time by
calling gtk_dialog_response()
to emit the ::response signal. Destroying
the dialog during gtk_dialog_run()
is a very bad idea, because your
post-run code won’t know whether the dialog was destroyed or not.
After gtk_dialog_run()
returns, you are responsible for hiding or
destroying the dialog if you wish to do so.
Typical usage of this function might be:
1 2 3 4 5 6 7 8 9 10 11 |
gint result = gtk_dialog_run (GTK_DIALOG (dialog)); switch (result) { case GTK_RESPONSE_ACCEPT: do_application_specific_something (); break; default: do_nothing_since_dialog_was_cancelled (); break; } gtk_widget_destroy (dialog); |
Note that even though the recursive main loop gives the effect of a
modal dialog (it prevents the user from interacting with other
windows in the same window group while the dialog is run), callbacks
such as timeouts, IO channel watches, DND drops, etc, will
be triggered during a gtk_dialog_run()
call.
void gtk_dialog_response (GtkDialog *dialog
,gint response_id
);
Emits the “response” signal with the given response ID.
Used to indicate that the user has responded to the dialog in some way;
typically either you or gtk_dialog_run()
will be monitoring the
::response signal and take appropriate action.
GtkWidget * gtk_dialog_add_button (GtkDialog *dialog
,const gchar *button_text
,gint response_id
);
Adds a button with the given text and sets things up so that
clicking the button will emit the “response” signal with
the given response_id
. The button is appended to the end of the
dialog’s action area. The button widget is returned, but usually
you don’t need it.
void gtk_dialog_add_buttons (GtkDialog *dialog
,const gchar *first_button_text
,...
);
Adds more buttons, same as calling gtk_dialog_add_button()
repeatedly. The variable argument list should be NULL
-terminated
as with gtk_dialog_new_with_buttons()
. Each button must have both
text and response ID.
void gtk_dialog_add_action_widget (GtkDialog *dialog
,GtkWidget *child
,gint response_id
);
Adds an activatable widget to the action area of a GtkDialog,
connecting a signal handler that will emit the “response”
signal on the dialog when the widget is activated. The widget is
appended to the end of the dialog’s action area. If you want to add a
non-activatable widget, simply pack it into the action_area
field
of the GtkDialog struct.
void gtk_dialog_set_default_response (GtkDialog *dialog
,gint response_id
);
Sets the last widget in the dialog’s action area with the given response_id
as the default widget for the dialog. Pressing “Enter” normally activates
the default widget.
void gtk_dialog_set_response_sensitive (GtkDialog *dialog
,gint response_id
,gboolean setting
);
Calls gtk_widget_set_sensitive (widget, @setting)
for each widget in the dialog’s action area with the given response_id
.
A convenient way to sensitize/desensitize dialog buttons.
gint gtk_dialog_get_response_for_widget (GtkDialog *dialog
,GtkWidget *widget
);
Gets the response id of a widget in the action area of a dialog.
Since: 2.8
GtkWidget * gtk_dialog_get_widget_for_response (GtkDialog *dialog
,gint response_id
);
Gets the widget button that uses the given response ID in the action area of a dialog.
Since: 2.20
GtkWidget *
gtk_dialog_get_action_area (GtkDialog *dialog
);
gtk_dialog_get_action_area
has been deprecated since version 3.12 and should not be used in newly-written code.
Direct access to the action area
is discouraged; use gtk_dialog_add_button()
, etc.
Returns the action area of dialog
.
Since: 2.14
GtkWidget *
gtk_dialog_get_content_area (GtkDialog *dialog
);
Returns the content area of dialog
.
Since: 2.14
GtkWidget *
gtk_dialog_get_header_bar (GtkDialog *dialog
);
Returns the header bar of dialog
. Note that the
headerbar is only used by the dialog if the
“use-header-bar” property is TRUE
.
Since: 3.12
gboolean
gtk_alternative_dialog_button_order (GdkScreen *screen
);
gtk_alternative_dialog_button_order
has been deprecated since version 3.10 and should not be used in newly-written code.
Deprecated
Returns TRUE
if dialogs are expected to use an alternative
button order on the screen screen
. See
gtk_dialog_set_alternative_button_order()
for more details
about alternative button order.
If you need to use this function, you should probably connect
to the ::notify:gtk-alternative-button-order signal on the
GtkSettings object associated to screen
, in order to be
notified if the button order setting changes.
Since: 2.6
void gtk_dialog_set_alternative_button_order (GtkDialog *dialog
,gint first_response_id
,...
);
gtk_dialog_set_alternative_button_order
has been deprecated since version 3.10 and should not be used in newly-written code.
Deprecated
Sets an alternative button order. If the
“gtk-alternative-button-order” setting is set to TRUE
,
the dialog buttons are reordered according to the order of the
response ids passed to this function.
By default, GTK+ dialogs use the button order advocated by the GNOME Human Interface Guidelines with the affirmative button at the far right, and the cancel button left of it. But the builtin GTK+ dialogs and GtkMessageDialogs do provide an alternative button order, which is more suitable on some platforms, e.g. Windows.
Use this function after adding all the buttons to your dialog, as the following example shows:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
cancel_button = gtk_dialog_add_button (GTK_DIALOG (dialog), _("_Cancel"), GTK_RESPONSE_CANCEL); ok_button = gtk_dialog_add_button (GTK_DIALOG (dialog), _("_OK"), GTK_RESPONSE_OK); gtk_widget_grab_default (ok_button); help_button = gtk_dialog_add_button (GTK_DIALOG (dialog), _("_Help"), GTK_RESPONSE_HELP); gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, GTK_RESPONSE_HELP, -1); |
dialog |
||
first_response_id |
a response id used by one |
|
... |
a list of more response ids of |
Since: 2.6
void gtk_dialog_set_alternative_button_order_from_array (GtkDialog *dialog
,gint n_params
,gint *new_order
);
gtk_dialog_set_alternative_button_order_from_array
has been deprecated since version 3.10 and should not be used in newly-written code.
Deprecated
Sets an alternative button order. If the
“gtk-alternative-button-order” setting is set to TRUE
,
the dialog buttons are reordered according to the order of the
response ids in new_order
.
See gtk_dialog_set_alternative_button_order()
for more information.
This function is for use by language bindings.
dialog |
||
n_params |
the number of response ids in |
|
new_order |
an array of response ids of
|
[array length=n_params] |
Since: 2.6
struct GtkDialog;
The GtkDialog contains only private fields and should not be directly accessed.
struct GtkDialogClass { GtkWindowClass parent_class; void (* response) (GtkDialog *dialog, gint response_id); /* Keybinding signals */ void (* close) (GtkDialog *dialog); };
Flags used to influence dialog construction.
|
Make the constructed dialog modal,
see |
||
|
Destroy the dialog when its
parent is destroyed, see |
||
|
Create dialog with actions in header bar instead of action area. Since 3.12. |
Predefined values for use as response ids in gtk_dialog_add_button()
.
All predefined values are negative, GTK+ leaves positive values for
application-defined response ids.
|
Returned if an action widget has no response id, or if the dialog gets programmatically hidden or destroyed |
||
|
Generic response id, not used by GTK+ dialogs |
||
|
Generic response id, not used by GTK+ dialogs |
||
|
Returned if the dialog is deleted |
||
|
Returned by OK buttons in GTK+ dialogs |
||
|
Returned by Cancel buttons in GTK+ dialogs |
||
|
Returned by Close buttons in GTK+ dialogs |
||
|
Returned by Yes buttons in GTK+ dialogs |
||
|
Returned by No buttons in GTK+ dialogs |
||
|
Returned by Apply buttons in GTK+ dialogs |
||
|
Returned by Help buttons in GTK+ dialogs |
“use-header-bar”
property“use-header-bar” gint
TRUE
if the dialog uses a GtkHeaderBar for action buttons
instead of the action-area.
For technical reasons, this property is declared as an integer
property, but you should only set it to TRUE
or FALSE
.
Flags: Read / Write / Construct Only
Allowed values: [-1,1]
Default value: -1
Since: 3.12
“action-area-border”
style property“action-area-border” gint
The default border width used around the
action area of the dialog, as returned by
gtk_dialog_get_action_area()
, unless gtk_container_set_border_width()
was called on that widget directly.
Flags: Read
Allowed values: >= 0
Default value: 5
“button-spacing”
style property“button-spacing” gint
Spacing between buttons.
Flags: Read
Allowed values: >= 0
Default value: 6
“content-area-border”
style property“content-area-border” gint
The default border width used around the
content area of the dialog, as returned by
gtk_dialog_get_content_area()
, unless gtk_container_set_border_width()
was called on that widget directly.
Flags: Read
Allowed values: >= 0
Default value: 2
“content-area-spacing”
style property“content-area-spacing” gint
The default spacing used between elements of the
content area of the dialog, as returned by
gtk_dialog_get_content_area()
, unless gtk_box_set_spacing()
was called on that widget directly.
Flags: Read
Allowed values: >= 0
Default value: 0
Since: 2.16
“close”
signalvoid user_function (GtkDialog *arg0, gpointer user_data)
The ::close signal is a keybinding signal which gets emitted when the user uses a keybinding to close the dialog.
The default binding for this signal is the Escape key.
Flags: Action
“response”
signalvoid user_function (GtkDialog *dialog, gint response_id, gpointer user_data)
Emitted when an action widget is clicked, the dialog receives a
delete event, or the application programmer calls gtk_dialog_response()
.
On a delete event, the response ID is GTK_RESPONSE_DELETE_EVENT.
Otherwise, it depends on which action widget was clicked.
dialog |
the object on which the signal is emitted |
|
response_id |
the response ID |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last


Wild Mushroom and Sweetcorn Biryani Parcels
Ingredients
For the parboiled rice
- 400g/14oz low GI rice (available from health food shops and some supermarkets)
- 1 bay leaf
- 2 green cardamom pods
- 2 cloves
For the biryani
- 1 tbsp vegetable oil
- 1 tbsp butter
- 1 tsp cumin seeds
- 2 green cardamom pods, lightly crushed
- 1 bay leaf
- 2 garlic cloves, peeled, chopped
- 200g/7oz onions, peeled, finely chopped
- 2 large Portobello mushrooms, wiped clean, chopped
- 110g/4oz mixed wild mushrooms, wiped clean, roughly chopped
- 75g/3oz sweetcorn kernels
- 1 tsp ground coriander
- .5 tsp ground cumin
- .5 tsp red chilli powder
- .5 tsp garam masala
- 1 tbsp white truffle paste (optional)
- .5 tbsp tomato puree
- 2 tbsp single cream
- 2 tbsp chopped fresh coriander leaves
- salt and freshly ground black pepper
- 8 large sheets ready-made filo pastry
- 110g/4oz butter, melted
- 1 punnet coriander cress
For the mushrooms
- .5 tbsp butter
- .5 tbsp vegetable oil
- 1 garlic clove, crushed to a paste with the edge of a knife
- .5 tsp crushed coriander seeds
- .5 tsp dried chilli flakes
- 50g/2oz almonds, lightly toasted, cut into halves
- 110g/4oz mixed wild mushrooms, wiped clean, sliced
- 1 tbsp freshly squeezed lemon juice
- salt and freshly ground black pepper
- 1 x 20g/.75oz punnet coriander cress (optional)
For the raita
- 300g/11oz Greek-style yoghurt
- 1 tsp toasted cumin seeds, ground to a powder
- 110g/4oz fresh blackberries, blended to puree
- black truffle shavings (optional), to serve
Preparation method
Preheat the oven to 200C/400F/Gas 6. For the parboiled rice, add the rice, bay leaf, cardamom and cloves to a pan of boiling, salted water. Cook the rice until it is almost tender, then drain well and set aside. For the biryani, heat the oil and butter in a frying pan. When the butter is foaming, add the cumin, cardamom and bay leaf and fry for 1-2 minutes, or until fragrant and beginning to pop. (CAUTION: Keep the pan away from your eyes and face - the seeds may pop.) Add the chopped garlic and fry for 1-2 minutes, or until pale golden-brown. Add the chopped onion and fry for 2-3 minutes, or until golden-brown. Add all of the mushrooms and the sweetcorn kernels and continue to fry, stirring well, for a further 3-4 minutes, or until softened. Add the ground spices and stir well to coat the vegetables. Continue to fry for 1-2 minutes, or until fragrant, then add the white truffle paste (if using), tomato puree and cream and stir well to combine. Add the parboiled rice and chopped coriander and season, to taste, with salt and freshly ground black pepper. Brush one side of each sheet of filo pastry all over with some of the melted butter. Place one sheet of filo pastry on top of another to create two layers of pastry, then spoon a quarter of the biryani mixture into the centre of the pastry. Fold the sides over the rice filling, then roll the pastry into a parcel. Brush all over with more melted butter. Repeat the process with the remaining filo pastry and biryani mixture. Place the biryani parcels and the coriander cress onto a baking tray and bake in the oven for 12-15 minutes, or until the pastry is crisp and golden-brown and the coriander cress has dried. Meanwhile, for the mushrooms, heat the oil and butter in a pan over a medium heat. When the butter is foaming, add the crushed garlic, coriander seeds and chilli flakes and fry for 1-2 minutes, or until the garlic has softened. Add the toasted almonds, then add the mushrooms and stir well. Continue to fry for 1-2 minutes, or until the mushrooms have softened, then drizzle over the lemon juice. Season, to taste, with salt and freshly ground black pepper. For the raita, blend all of the raita ingredients together in a food processor until well combined, then chill in the fridge until needed. To serve, spoon the mushroom and almond mixture into the centre of each of four serving plates. Cut the biryani parcels in half and place one biryani parcel (two halves) on top of each serving. Sprinkle over the dried coriander cress and truffle shavings, if using. Serve the raita alongside.


Contact Information
Announcements
- 7/16: Complete the following by 9:00 PM tonight.
- Do 3.3, Problems 10-12. Show Michael or Cole when your programs work. It is better to perfectly complete one program than to attempt multiple problems and not complete them.
- Turn in Problems:
- Section 4.3.1, 19-20 (Pick One)
- Section 4.4.1, 22, and pick one from 23-26
- 7/15: Complete the following by 9:00 PM tonight.
- Do 2.1.1, Required Problem 1. Show either Michael or Cole that your program works.
- Turn in Problems:
- Section 2.1.1, Required 2
- Section 4.1.1, Required 13-14
- Section 4.2.2, Required 16 and 18
Code Samples


Returns the date-time dimension member specified by the input date and the input layer.
Syntax
DateToMember ( date, dimension [,layer])
| Parameter | Description |
|---|---|
date |
A number representing the input date between January 1, 1970 and Dec 31, 2037. The number is the number of seconds elapsed since midnight, January 1, 1970. To retrieve this number, use any of the following functions: Today(), TodateEx(), GetFirstDate(), GetLastDate(), DateRoll(). Date-time attribute properties of a member can also be used to retrieve this number. For example,
|
|
A date-time dimension specification. |
|
|
Optional. A date-time dimension layer specification. If not specified, defaults to the date-time dimension's leaf generation. |
Notes
This function is only applicable if there is a date-time dimension in the outline.
Example
Consider the following Time-Date dimension hierarchy:
Time dimension (gen 1) Years (gen 2) Semesters (gen 3) Quarters (gen 4) Months (gen 5) Weeks (gen 6) Days (gen 7)
The following query returns sales for the week containing Dec 25, 2006 for the product Cola in the market California.


In addition to the ability to place items accurately onto a created grid, the CSS Grid Layout specification contains rules that control what happens when you create a grid and do not place some or all of the child items. You can see auto-placement in action in the simplest of ways by creating a grid on a set of items. If you give the items no placement information they will position themselves on the grid, one in each grid cell.
As you can see with the above example, if you create a grid all child items will lay themselves out one into each grid cell. The default flow is to arrange items by row. Grid will lay an item out into each cell of row 1. If you have created additional rows using the grid-template-rows property then grid will continue placing items in these rows. If the grid does not have enough rows in the explicit grid to place all of the items new implicit rows will be created.
The default for automatically created rows in the implicit grid is for them to be auto-sized. This means that they will contain the content added to them without causing an overflow.
You can however control the size of these rows with the property grid-auto-rows. To cause all created rows to be 100 pixels tall for example you would use
You can use minmax() in your value for grid-auto-rows enabling the creation of rows that are a minimum size but then grow to fit content if it is taller.
You can also pass in a track listing, this will repeat. The following track listing will create an initial implicit row track as 100 pixels and a second as 200px. This will continue for as long as content is added to the implicit grid. Track listings are not supported in Firefox.
You can also ask grid to auto-place items by column. Using the property grid-auto-flow with a value of column. In this case grid will add items in rows that you have defined using grid-template-rows. When it fills up a column it will move onto the next explicit column, or create a new column track in the implicit grid. As with implicit row tracks, these column tracks will be auto sized. You can control the size of implicit column tracks with grid-auto-columns, this works in the same way as grid-auto-rows.
In this next example I have created a grid with three row tracks of 200 pixels height. I am auto-placing by column and the columns created will be a column width of 300 pixels, then a column width of 100 pixels until there are enough column tracks to hold all of the items.
A grid can contain a mixture of items. Some of the items may have a position on the grid, but others may be auto-placed. This can be helpful, if you have a document order that reflects the order in which items sit on the grid you may not need to write CSS rules to place absolutely everything. The specification contains a long section detailing the Grid item placement algorithm, however for most of us we just need to remember a few simple rules for our items.
Grid places items that have not been given a grid position in what is described in the specification as “order modified document order”. This means that if you have used the order property at all, the items will be placed by that order, not their DOM order. Otherwise they will stay by default in the order that they are entered in the document source.
The first thing grid will do is place any items that have a position. In the example below I have 12 grid items. Item 2 and item 5 have been placed using line based placement on the grid. You can see how those items are placed and the other items then auto-place in the spaces. The auto-placed items will place themselves before the placed items in DOM order, they don’t start after the position of a placed item that comes before them.
You can use placement properties while still taking advantage of auto-placement. In this next example I have added to the layout by setting odd items to span two tracks both for rows and columns. I do this with the grid-column-end and grid-row-end properties and setting the value of this to span 2. What this means is that the start line of the item will be set by auto-placement, and the end line will span two tracks.
You can see how this then leaves gaps in the grid, as for the auto-placed items if grid comes across an item that doesn’t fit into a track, it will move to the next row until it finds a space the item can fit in.
So far, other than items we have specifically placed, grid is always progressing forward and keeping items in DOM order. This is generally what you want, if you are laying out a form for example you wouldn’t want the labels and fields to become jumbled up in order to fill in some gap. However sometimes, we are laying things out that don’t have a logical order and we would like to create a layout that doesn’t have gaps in it.
To do this, add the property grid-auto-flow with a value of dense to the container. This is the same property you use to change the flow order to column, so if you were working in columns you would add both values grid-auto-flow: column dense.
Having done this, grid will now backfill the gaps, as it moves through the grid it leaves gaps as before, but then if it finds an item that will fit in a previous gap it will pick it up and take it out of DOM order to place it in the gap. As with any other reordering in grid this does not change the logical order. Tab order for example, will still follow the document order. We will take a look at the potential accessibility issues of Grid Layout in a later guide, but you should take care when creating this disconnect between the visual order and display order.
There is a mention in the specification of anonymous grid items. These are created if you have a string of text inside your grid container, that is not wrapped in any other element. In the example below we have three grid items, assuming you had set the parent with a class of grid to display: grid. The first is an anonymous item as it has no enclosing markup, this item will always be dealt with via the auto-placement rules. The other two are grid items enclosed in a div, they might be auto-placed or you could place these with a positioning method onto your grid.
Anonymous items are always auto-placed because there is no way to target them. Therefore if you have some unwrapped text for some reason in your grid, be aware that it might show up somewhere unexpected as it will be auto-placed according to the auto-placement rules.
Auto-placement is useful whenever you have a collection of items. That could be items that do not have a logical order such as a gallery of photos, or product listing. In that case you might choose to use the dense packing mode to fill in any holes in your grid. In my image gallery example I have some landscape and some portrait images. I have set landscape images – with a class of landscape to span two column tracks. I then use grid-auto-flow: dense to create a densely packed grid.
Auto-placement can also help you lay out interface items which do have logical order. An example is the definition list in this next example. Definition lists are an interesting challenge to style as they are flat, there is nothing wrapping the groups of dt and dd items. In my example I am allowing auto-placement to place the items, however I have classes that start a dt in column 1, and dd in column 2, this ensure that terms go on one side and definitions on the other - no matter how many of each we have.


<Back
Chat Room 3
Iron Man
Hello, how are you
Pikachu
Hello
Iron Man
Hello
Hello
Hello
Hello
Hello
Hello
I am Robot
Send


Write Help Articles
If you like writing and teaching then the Knowledge Base is the place for you. Share your wisdom with the world.
Mozilla Support is a community of enthusiastic volunteers and employees trying to support our users around the globe. Join us for an incredible adventure!
Help millions of users get the most out of their favourite browser. Your contributions will reach millions of users worldwide, and you can do it from the comfort of your couch!
Used by more than 400 million people, Mozilla support is fully powered by volunteers
All are pretty easy to get started in.
If you like writing and teaching then the Knowledge Base is the place for you. Share your wisdom with the world.
Help articles are not available in your language yet? Let's make Mozilla Support speak your language!
Share your knowledge by pointing people to the right help articles and providing troubleshooting steps.
You can help Firefox users on Twitter. It's quick, it's easy, and you don't have to be a tech superstar to do it.


--- ---
Listed below are some past events. All links will open in a new
window.
2007 - 2008
2006 - 2007
2005 - 2006
2004 - 2005
Previous Year Events
Please note: To view pdf files, Adobe Reader needs to be installed on your machine. If you do not have Adobe Reader, please download it here.
|
|
||
| Indian Institute of Science | Contact the Administrator | Disclaimer |


Inheritance and Polymorphism
Heroes versus Monsters
75 points
For this assignment you will create an inheritance hierarchy
and utilize polymorphism. The idea behind the game is that one of three
Heroes (Warrior, Sorceress, Thief) chosen by the user will battle one of three
randomly selected Monsters (Ogre, Gremlin, Skeleton). The battle is to the
death. When a character dies, the user can play again.
The inheritance hierarchy for the program is as follows:
DungeonCharacter (base - abstract)
- contains instance variables that any character in the game
will have -- protected access is ok (NO public access allowed!)
- name - String
- hit points (how much damage a character can take before
it expires) - integer
- attack speed - integer (1 is slowest)
- damage range (minimum and maximum amount of damage a
character can do on an attack) - two integers
- chance to hit opponent when attacking - double
- anything else you deem necessary
- constructor to initialize instance variables
- get and set methods as you deem necessary
- an attack method
- first checks if character can attack (based on chance
to hit)
- if it can, a hit in range of minimum to maximum damage
is generated and applied to opponent -- user should be informed of what
happens
- if it cannot, a message should be displayed that says
the attack failed
Hero (derived from DungeonCharacter -- Hero is also abstract)
- contains instance variables that any hero should have
- chance to block (a Hero has a chance to block any attack by a Monster
-- this should be checked after the Monster has attacked and hit
points are about to be removed from the Hero) - double
- number of turns in round (number of attacks/special operations a Hero
gets to perform per round -- based on Hero attack speed versus Monster
attack speed - if Hero is twice as fast then s/he gets two turns, three
times as fast gets three turns, etc.) - integer
- anything else you deem necessary
- constructor - should call base constructor, too
- a method to get name of character from user -- should be invoked in
constructor after base constructor
- get, set, and any other methods (this includes overridden ones) you deem
necessary
- a battleChoices method that allows a Hero to attack or use special
skill -- each Hero will have at least one special skill (details on skills
will be given when each Hero is introduced)
Warrior (derived from Hero)
- instance variables as you deem necessary (none may be necessary!)
- a crushingBlow method that does 75 to 175 points of damage but only
has a 40% chance of succeeding -- this is the Warrior's special skill
- gets, sets, and any other methods you deem necessary (you may want to
override the attack and battleChoices methods to fit your
Warrior)
- suggested statistics for Warrior (should be set up in constructor(s))
- hit points: 125
- attack speed: 4
- chance to hit: 0.8 (80 percent)
- minimum damage: 35
- maximum damage: 60
- chance to block: 0.2 (20 percent)
Sorceress (derived from Hero)
- same game as Warrior except special skill is heal
- suggested statistics for Sorceress (should be set up in
constructor(s))
- hit points: 75
- attack speed: 5
- chance to hit: 0.7 (70 percent)
- minimum damage: 25
- maximum damage: 45
- chance to block: 0.3 (30 percent)
Thief (derived from Hero)
- same game as Warrior except special skill is surpriseAttack -- 40
percent chance it is successful. If it is successful, Thief gets an
attack and another turn in the current round. There is a 20 percent
chance the Thief is caught in which case no attack is rendered. The
other 40 percent is just a normal attack.
- suggested statistics for Thief (should be set up in constructor(s))
- hit points: 75
- attack speed: 6
- chance to hit: 0.8 (80 percent)
- minimum damage: 20
- maximum damage: 40
- chance to block: 0.4 (40 percent)
Monster (derived from DungeonCharacter -- abstract)
- contains instance variables that any Monster should have
- chance to heal (a Monster has a chance to heal after any attack that
causes a loss of hit points -- this should be checked after the Monster
has been attacked and hit points have been lost -- note that if the hit
points lost kill the Monster, it cannot heal itself!) - double
- minimum and maximum points a monster can heal itself - two integers
- anything else you deem necessary
- constructor - should call base constructor, too
- get, set, and any other methods (this includes overridden ones) you deem
necessary
- a heal method that is based on chance to heal and then range of
heal points for monster
Ogre (derived from Monster)
- instance variables as you deem necessary (none may be necessary!)
- gets, sets, and any other methods you deem necessary (you may want to
override the attack method to fit your Ogre)
- suggested statistics for Ogre (should be set up in constructor(s)
-- choose a name for your Ogre)
- hit points: 200
- attack speed: 2
- chance to hit: 0.6 (60 percent)
- minimum damage: 30
- maximum damage: 60
- chance to heal: 0.1 (10 percent)
- minimum heal points: 30
- maximum heal points: 60
Gremlin (derived from Monster)
- instance variables as you deem necessary (none may be necessary!)
- gets, sets, and any other methods you deem necessary (you may want to
override the attack method to fit your Gremlin)
- suggested statistics for Gremlin (should be set up in constructor(s)--
choose a name for your Gremlin)
- hit points: 70
- attack speed: 5
- chance to hit: 0.8 (80 percent)
- minimum damage: 15
- maximum damage: 30
- chance to heal: 0.4 (40 percent)
- minimum heal points: 20
- maximum heal points: 40
Skeleton (derived from Monster)
- instance variables as you deem necessary (none may be necessary!)
- gets, sets, and any other methods you deem necessary (you may want to
override the attack method to fit your Skeleton)
- suggested statistics for Skeleton (should be set up in
constructor(s)-- choose a name for your Skeleton)
- hit points: 100
- attack speed: 3
- chance to hit: 0.8 (80 percent)
- minimum damage: 30
- maximum damage: 50
- chance to heal: 0.3 (30 percent)
- minimum heal points: 30
- maximum heal points: 50
Game Play
- User chooses a Hero
- Program randomly selects a Monster
- Hero and Monster battle until one is defeated
- Hero goes first and gets to select from battleChoices. Hero may
have multiple choices depending on speed of Hero versus Monster
- Monster goes second and always attacks. Monster cannot attack if
Hero defeated it during Hero attack (duh)
- After each round user should be given option to quit.
- After battle is complete, user should be given option to play a new game
Throughout game play the user should be given as much information as possible
about the battle. Here are things the user should be told:
- What happened on an attack (how much damage or that it failed or that it
was blocked)
- How many hit points remain for a character after the character loses hit
points (via an attack) or gains hit points (via healing)
- Anything else you can think of to make game play more clear
Group Work
You may work in pairs on this assignment. If you choose to do this, you
must complete a write-up that describes very specifically what each person
did. One person should work on the Hero hierarchy, the other on the
Monster hierarchy.
Extra Credit
- 5 points - add a special skill to each Monster. When a Monster
attacks this special skill should be randomly chosen (perhaps 30 percent of
the time)
- 5 points - add another Hero. The Hero should have a unique special
skill
To turn in
Submit via http://blackboard.ewu.edu
a zip file (just one if you work in a team) that contains:
- all source files necessary to compile and run program
- testing write-up (in plain text) -- recognize your testing starts the
first time you compile and run your program -- highlight the major problems
you had.
Get started ASAP! This assignment is due by 11:59pm, Friday,
November 16


Developed in Spring 2014 as a project for CSE 110 over the span of 10 weeks, a group of 10 developers formed team D.O.G.E. (Designs Oriented for Gourmet Establishments) to design and create an Android app to help owners and managers. Functions focus on management of employees, the work schedule, and inventory.


Ocean [aw44], ocean, in The Inner Sea
Last updated Turn #78
Ocean [aw44], ocean, in The Inner Sea
------------------------------------------------------------------------
16: The Savvy Aardvark [ha5r], ship, 2 hulls, 1 rowing port, 6 sails,
16: 9% damaged, arrived from Ocean [aw45], owner:
16: Phantasm [n4b], Imperial Empire, marquess, with two peasants,
16: eight sailors
17: The Savvy Aardvark [ha5r], ship, 2 hulls, 1 rowing port, 6 sails,
17: 9% damaged, departed for Ocean [aw43].
Routes leaving Ocean:
North, to Ocean [av44], 6 days
East, to Ocean [aw45], 6 days
South, to Ocean [ax44], 6 days
West, to Ocean [aw43], 6 days
It is raining.


---
layout: post
title: Pushing a button. From afar. With LoRa.
date: '2018-07-15T17:13:00.002-07:00'
author: gojimmypi
tags:
- SDR
- M5Stack
- CubicSDR
- Remote Control
- ESP32
- RTL2832U
- 32u4
- LoRa
- Somfy
- VisualMicro
modified_time: '2018-07-15T17:27:54.256-07:00'
thumbnail: https://1.bp.blogspot.com/-b_te8Mr8Z6I/W0viP4LCavI/AAAAAAAABmA/M5_dUxFGHSIn35OWUDKfn7dtzGIBZbgeQCLcBGAs/s72-c/Working%2BM5%2BRemote.PNG
blogger_id: tag:blogger.com,1999:blog-4109066286647243251.post-1084633026887098644
blogger_orig_url: https://gojimmypi.blogspot.com/2018/07/pushing-button-from-afar.html
---
This blog entry is about pushing a button. Seems simple enough, eh? Except when the button you want to press is very far from where you are physically located... say, when there's a remote gate control well out of sight and out of range for the remote. Oh, and it is also too far to have any network connectivity. What to do?
My plan is to use LoRa to communicate from an
M5Stack console to a distant LoRa32u4
, each equipped with a LoRa module; essentially push the button of the remote from afar! The actual pysical button push on the M5Stack will essentially be "sent" (via LoRa message) to the remote 32u4 which will then trigger the actual remote control transmitter. The working prototype is shown here:
How to get there: The first thing needed is to disassemble the remote and determine how it normally works. The remote I am using is a Somfy TR2 similar to
this one that can control two different devices. Upon disassembly, the first thing we see is those two buttons each with 4 pins. The buttons appear to be very similar to this Grayhill Gull Wing 95C06C3RAT at Mouser as documented here
. Note that although there are 4 pins, it is simply a SPST switch:
|
|
|
Photo credit: Grayhill spec sheet |
I confirmed both visually and with an ohmmeter that indeed I have a similar switch and proceeded to connect some external wires to it:
If you look closely, I took the time to wrap the wire around the pin of the switch to make a good mechanical connections, while being careful not to touch any other circuit. It would probably be a good idea to use some hot melt glue and affix the wires to the pc board.
Here, Green is a ground (all 4 pins, 2 from each switch); Orange is BP1 and Yellow is BP2. The top of the battery is labeled as being the positive side. The entire metal surface here is at 3.3V:
This turned out to be an extremely handy arrangement for me: the entire device could essentially be the "load" for an NPN transistor circuit!
Putting an ammeter between either the orange or yellow pins to ground, I found about 0.3mA that would otherwise flow though the button (or a transistor).
Looking at the specs for the 2N3904, the max collector current is a whopping 200mA max, well over a couple orders of magnitude for what we'll need:
And for a collector current of (we'll round up) to 0.5 mA, we'll have a minimum gain of around 60 to 80 (let's pick a gain of 70 for discussion-sake):
We'll need a base current of around (0.005A / 70) = 0.0714 mA; For the current-limiting base resistor, we'll thus need: 3.3v / (0.0000714) ~= 40K ohms. I didn't have a 40K handy, but I did have a bunch of 20K ohm resistors laying around, so I'll use that. It is still well within spec, and will certainly account for any gain drift or degradation.
Our button-pressing supplement thus looks like this (shown for BP1, but the same for BP2):
Note that this circuit will allow our 32u4 to control the remote via a GPIO pin. Fortunately the remote is also smart enough to turn itself off - if for some reason the button remains pressed so that the battery does not drain (such as being poked by your keys in your pocket). In our case: regardless of the state of the pin during power up (or application crash) the battery will be preserved.
The manual prototype looks like this:
Note the red wire to drive the base of the transistor is stuffed into the battery holder for the picture. Once in operation this red wire will instead be the GPIO output from the 32u4.
Next, we need to make sure the remote is actually working! As mentioned in my previous blogs on
M5Stack LoRa Range Issues as well as this fun project using OpenWRT on EA3500 with RTL-SDR Stream, I have an inexpensive NooElec SDR, that is simply amazing - particularly given the price! With this hardware, and the some software
, we'll be able to "see" the remote signal.
The last time I used Cubic SDR, it was working fine. Today? Nothing. Erg. Gotta love Windows. App starts, no complaints, but no signal. A little bit of googling, and there's the
Quick Start Guide. First thing I noticed was mention of my old friend, zadig
. Sure enough: during one of the the Windows updates, the default driver was changed for some bizarre reason. Here's the screen just before correcting it:
And tada! Exit Cubic SDR (no need, at least for me, to reboot computer)... relaunch Cubic SDR app... then pressing Start for my RTL2832U device:
The waterfall immediately starts! Press the button on the remote a few times, and we can see the pulse at about 433.5 MHz. Notice the messy side-band noise, as well as someone else continuously transmitting at about 432 MHz:
I have the source code for all this on GitHub here:
https://github.com/gojimmypi/LoRa-GPIO (note there are also Development and M5-RadioHead
branches, but after a bunch of GitHub fussing, I think the master branch is now up to date). The projects are VisualMicro extensions to Visual Studio, but I suspect the Arduino code would work just fine in the Arduino IDE.
More to come...
Copyright (c) gojimmypi all rights reserved. Blogger Image Move Cleaned: 5/3/2021 1:35:53 PM


Version control is one of the most critical and underrated aspects of modern software development. For all of our tools we're using Github to make sure our code is open to anyone to improve, review and critique.
The following links can be used to visit the pages related to the specific tool:


After the route is built, you can press the "Details" button, which hides the additional graphs.
In the 3.4.2 release, there are Road types, Surface, Smoothness, Steepness, Surface firmness (Tracktype), Winter, and ice roads available. The graphs are interactive and synchronized with one another and the route overview map.
When you click on the graph, the cursor is displayed where you tap, and in the legend below the current chart element is highlighted in bold. You can also zoom in on the part of the graph using the pinch/pinch gesture. In this case, the other graphs will also change the display boundaries.
On the overview map of the route, which is located at the very top of the screen, the scale will be changed so that the entire section of the path displayed on the graphs is currently displayed.
If the graphic does not contain any data, it is not displayed.
Here is an example of a style that depends on the standard OsmAnd style and adds a street lighting scheme:
__________________________________
__________________________________
The list of data available for display is available in the routing category of this file.
__________________________________
OsmAnd at Facebook, Twitter, and Reddit!
Join us at our groups of Telegram (EN), (IT), (FR), (DE), (RU), (UA).


Welcome to Doggo’s documentation!¶
I like prototyping in software. Usually I use straight HTML/CSS or Angular, depending on the complexity of the application.
HTML/CSS can be too fiddly and have too much copy and paste. Angular is, well, Angular. Routing and data services are great and it is incredibly powerful but not as quick to refactor as I’d like. Doggo is my attempt to find a middle ground.
It is mostly HTML/CSS, but with Jinja templating to cut down on the copy and paste. Routing and data services are handled by a yaml file that defines the pages and data available to the application.
Why Doggo? The root idea behind it is the concept of the DoGo map (https://uxpamagazine.org/creating-a-dogo-map/). I have grown to really like the DoGo map as a way to think through the information architecture of a site. I think it makes a serviceable low fidelity clickable prototype.
To that end, the yaml file and default templates in Doggo are extremely rudimentary. They expose the parameters and allow the user to get something up and running with little fuss, without any attempt to trick the user into thinking the application is almost done.
The templates can be easily overridden to allow the user to increase the fidelity of the prototype.
The purpose of this is NOT to create a slick, production framework, but to get developers to prototype roughly and get something that they can use to gather feedback sooner in the process.
Roadmap¶
Q1 2021¶
Write a spec for the doggo yaml file
Provide some better looking default and selectable templates
Figure out a generic way to handle query strings to allow for data selection
Create a web page for the project
The Future * “Interactive Mode” that allows the user to define new cards & data * “Doggo as a Service” - a deployed version of the application that allows users to create their own prototypes and share them (codepen-like functionality) * “Whiteboard mode” - Miro or Plectica like interface for teams to define cards and data


Before Change
if not filename:
filename = get_filename_from_url(url)
filepath = os.path.join(dirpath, filename)
if os.path.isfile(filepath) and force is False:
LOGGER.info(
"file "%s" already exists and force=False; skipping download...",
filepath,
After Change
if not filename:
filename = get_filename_from_url(url)
filepath = to_path(dirpath).resolve() / filename
if filepath.is_file() and force is False:
LOGGER.info(
"file "%s" already exists and force=False; skipping download...",
filepath,


Prove the authenticity of coffee using the Ethereum blockchain.
To go successfully from growing coffee cherries to consumer's cup, you need to initiate the actions in the following order: