Hello and welcome to Sydney Data Engineers, a group to promote collaboration and sharing within the local community.
Code of Conduct
We have a code of conduct that we require all sydney data engineer members to adhere to.
Hello and welcome to Sydney Data Engineers, a group to promote collaboration and sharing within the local community.
We have a code of conduct that we require all sydney data engineer members to adhere to.


Trade talks between US and China ‘hit a snag’ over farm purchases, reports WSJ
NEW YORK, Nov 14 — US-China trade negotiations have ‘hit a snag’ over farm purchases, with China not wanting a deal that looks one-sided in the favour of the United States, the Wall Street Journal reported yesterday, citing people familiar with the matter.
“We can always stop the purchases if things get worse again,” a Chinese official was quoted as having said in the report. — Reuters


The following table summarises a number of concrete scenarios that illustrate how the the API and reference implementation can be used in real world use-cases.
Each individual scenario is illustrated via a sequence diagram, some explanatory text and some key code snippets. If you prefer the samples project contains the implementation code to fulfil these scenarios as well as some instructions on how to download, install and run the samples yourself.
In general the example code and sequence diagrams depict how the service client/message originator constructs a message that is fulfilled by/sent to the service provider.
The scenarios are grouped into three general integration patterns (synchronous, simple asynchronous and routed message) as viewed from the initiating application perspective.
The synchronous scenarios provide a detailed insight into the logic of the reference implementation so it is recommended that you take a look at these first even if your are more interested in other scenarios such as sending a CDA document.
The synchronous interaction pattern is the simplest pattern supported by the ITK. The synchronous pattern is applicable to scenarios where there is a user waiting (for instance a user has sent a query) or where there is a business response and the destination service is directly reachable.
| Scenario | Description |
|---|---|
| Spine Mini-Services Client - Get Patient Details by NHSNumber | Client side view of the Get Patient Details by NHSNumber SMSP message (SMS Provider is effectively a black box) |
| Spine Mini-Services Provider - Get Patient Details by NHSNumber | Service provider view of the Get Patient Details by NHSNumber SMSP message note the application is emulated - the details of invoking Spine PDS are not included as it is the ITK behaviour that is being demonstrated. |
| ADT Admit Patient (P/H) | This example shows the transmission of an ADT Admit Patient message (A01) in pipe and hat format, with a synchronous acknowledgement. |
The simple asynchronous pattern is suitable for service invocations where the service provider is naturally (currently) asynchronous, or where the processing of the business payload is suitably intensive that a synchronous call might result in infrastructure (e.g. firewall connection) timeouts or similar resource issues.
| Scenario | Description |
|---|---|
| ADT Query patient (XML) | Simple ADT Query with an asynchronous response. This example uses and XML ADT format and shows a simplified end to end view of the interaction. |
The routed message pattern is suitable for messaging where the destination system is not directly reachable and/or where corresponding business responses are triggered via human interaction (for instance the acceptance of a discharge summary by the GP). In the diagram (below) an intermediary ITK Router is shown, however it should be noted that the pattern is identical from an originator and destination system perspective if there are zero, one or many intermediary ITK routers.
| Scenario | Description |
|---|---|
| Send non-coded CDA to a document repository | Illustrates the process of sending a non-coded CDA document to a clinical repository and subsequently receiving an InfrastructureAck asynchronous message. |
| Send non-coded CDA (with business Ack) | Illustrates the process of sending a non-coded CDA document to a destination application and subsequently receiving a Business Acknowledgement (in addition to an Infrastructure Ack). |


@navbar.render
Podcast
NavBar
Check Out One of Rhonda's Podcasts
Your browser does not support audio files.


Last year I gave a proof of a standard inequality regarding the limit superior and limit inferior of a sequence of sets that was, quite frankly, not elegant and incomplete at best. I am going to fix this here. I will also generalize the result to finite measures.
Proposition: Let $\{A_n\}_{n=1}^{\infty}$ be a sequence of measurable sets, and let $\mu$ be a finite measure. We have the following inequalities, $$ \begin{align*} \mu(\liminf_{n\rightarrow \infty} A_n) \leq \liminf_{n \rightarrow \infty} \mu(A_n) \leq \limsup_{n \rightarrow \infty} \mu(A_n) \leq \mu(\limsup_{n \rightarrow \infty} A_n) \:. \end{align*} $$
Proof: Recall that $$ \begin{align*} \liminf_{n\rightarrow \infty} A_n := \bigcup_{n \geq 1} \bigcap_{k \geq n} A_k, \qquad \limsup_{n\rightarrow \infty} A_n := \bigcap_{n \geq 1} \bigcup_{k \geq n} A_k \:. \end{align*} $$ Let us work on the LHS inequality first. Define $B_n := \bigcap_{k \geq n} A_k$ for $n \geq 1$. Observe that $B_1 \subset B_2 \subset ...$. Hence, by continuity of measure from below, we have $$ \begin{align*} \mu(\bigcup_{n \geq 1} \bigcap_{k \geq n} A_k) = \mu(\bigcup_{n \geq 1} B_n) = \lim_{n \rightarrow \infty} \mu(B_n) = \lim_{n \rightarrow \infty} \mu( \bigcap_{k \geq n} A_k ) \:. \end{align*} $$ Now, by monotonicity of measure, for any $k \geq n$, we have $\mu(\bigcap_{k \geq n} A_k) \leq \mu(A_k)$. Since $k \geq n$ is arbitrary, we can take the infimum on the RHS to conclude $\mu(\bigcap_{k \geq n} A_k) \leq \inf_{k \geq n} \mu(A_k)$. But this means that $$ \begin{align*} \lim_{n \rightarrow \infty} \mu(\bigcap_{k \geq n} A_k) \leq \liminf_{n \rightarrow \infty} \mu(A_n) \:, \end{align*} $$ which proves the LHS inequality.
The RHS inequality proceeds similarly. Define $C_n := \bigcup_{k \geq n} A_k$ for $n \geq 1$. Now observe that $C_1 \supset C_2 \supset ...$. Since we assumed that $\mu$ is finite, we have $\mu(C_1) < \infty$. Hence, by continuity of measure from above, we have $$ \begin{align*} \mu(\bigcap_{n \geq 1} \bigcup_{k \geq n} A_k) = \mu(\bigcap_{n \geq 1} C_n) = \lim_{n \rightarrow \infty} \mu(C_n) = \lim_{n \rightarrow \infty} \mu( \bigcup_{k \geq n} A_k ) \:. \end{align*} $$ Once again by monotonicity of measure, $\mu(\bigcup_{k \geq n} A_k) \geq \mu(A_k)$ for any $k \geq n$, which means that $\mu(\bigcup_{k \geq n} A_k) \geq \sup_{k \geq n} \mu(A_k)$. This shows that $$ \begin{align*} \lim_{n \rightarrow \infty} \mu(\bigcup_{k \geq n} A_k) \geq \limsup_{n \rightarrow \infty} \mu(A_n) \:, \end{align*} $$ which proves the RHS inequality.


Black to play 22
Money play
pips Black=99 White=63
(CorrectAnswer= 0/0, ErrorScore= 0)
At first glance, this one looks like a position that one might be able to calculate. A hit and a dance is a D/P, for 44% wins; if we toss in a few freak wins after getting hit back, we get winning chances in the mid to high 40's after 20/12*. If we don't hit, then there are two plausible plans: closing the board, or stepping out with 20/18(2) and half-closing the board with 8/6. The latter play (my choice OTB) generates more shots because it threatens both blots directly, but since it doesn't close the board, the shots are not quite as deadly. Estimating the winning chances in these two scenarios looks feasible (though time-consuming to do over the board); however, the real question is, how many gammons and backgammons do we lose after 20/12*?
It's clear we lose a ton of gammons but I'll be darned if I could estimate them OTB. In this particular position you might arrive at 20/12* anyway even with a not-so-good estimate, because the difference in equity is so large. However, if we change the score to 5a5a (see second rollout below), thereby elevating the gammon value, the plays get closer and the calculation seems very difficult. By the way, eXtreme Gammon version 1.21 doesn't even register 20/12* as one of its top 32 plays at 5a5a, and I had to do the old "Setup -> Play from position" trick to force it to analyze the move.
It's clear we lose a ton of gammons but I'll be darned if I could estimate them OTB. In this particular position you might arrive at 20/12* anyway even with a not-so-good estimate, because the difference in equity is so large. However, if we change the score to 5a5a (see second rollout below), thereby elevating the gammon value, the plays get closer and the calculation seems very difficult. By the way, eXtreme Gammon version 1.21 doesn't even register 20/12* as one of its top 32 plays at 5a5a, and I had to do the old "Setup -> Play from position" trick to force it to analyze the move.
1. 20/12* eq: -0.357 43.01% (G:8.40% B:0.21%) 56.99% (G:41.45% B:3.29%) 2. 11/9 8/6 5/1 eq: -0.498 (-0.141) 24.02% (G:0.49% B:0.01%) 75.98% (G: 0.83% B:0.00%) 3. 20/18(2) 11/9 8/6 eq: -0.504 (-0.147) 22.48% (G:1.11% B:0.02%) 77.52% (G: 1.25% B:0.03%) 4. 20/18(2) 8/6 5/3 eq: -0.507 (-0.149) 22.21% (G:1.03% B:0.02%) 77.79% (G: 1.43% B:0.03%)At a score of 5-away/5-away:
1. 20/12* eq: -0.470 43.01% (G:8.42% B:0.28%) 56.99% (G:41.35% B:3.18%) 2. 11/9 8/6 5/1 eq: -0.496 (-0.026) 23.98% (G:0.52% B:0.01%) 76.02% (G: 0.83% B:0.00%) 3. 20/18(2) 11/9 8/6 eq: -0.501 (-0.031) 22.44% (G:1.10% B:0.02%) 77.56% (G: 1.24% B:0.03%) 4. 20/18(2) 8/6 5/3 eq: -0.505 (-0.035) 22.16% (G:0.99% B:0.03%) 77.84% (G: 1.40% B:0.03%)


Head First JavaScript
Chapter 1
JavaScript 1
JavaScript 2
Chapter 2
Battleship
Go Back Home
Return Back to the Classwork Homepage
Thank you for visiting my page!


Lastest Music Information
Music Community
Our music
All about our music world is here
This is a all Pitt people's music world
Singers
Bands
Producer
Copyright © 2015.Pitt All rights reserved.


Football: Herrmann double keeps Gladbach four points clear in Bundesliga
BERLIN: Borussia Moenchengladbach maintained their four-point lead at the top of the Bundesliga on Sunday (Nov 10) as Patrick Herrmann scored twice in an emphatic 3-1 home win over Werder Bremen.
RB Leipzig, who won at Hertha Berlin, and defending champions Bayern Munich, who routed Dortmund 4-0 at the Allianz Arena, had both trimmed Gladbach's lead to just a point with their victories on Saturday.
Gladbach finished with 10 men after goalscorer Ramy Bensebaini was sent off late on for a second yellow card before Bremen midfielder Leonardo Bittencourt netted a late goal deep into added time.
It was a weekend to remember for Herrmann, whose wife gave birth to their first child on Friday.
"Before the match, I hadn't noticed that the birth had given me a big boost," said Herrmann.
"I'm going to pick them up from the hospital afterwards."
Hosts Gladbach took the lead with two goals inside 107 seconds.
Midfielder Laszlo Benes whipped in a free-kick and left-back Bensebaini out-jumped the Bremen defence to power home his header on 20 minutes.
The second followed almost immediately from a counter-attack, when French striker Marcus Thuram drew Bremen goalkeeper Jiri Pavlenka to present Herrmann with a simple tap-in.
Yuya Osako looked to have halved the lead with 28 minutes gone when Bremen's Japan forward hit the net, the goal was disallowed by VAR for a foul in the build-up.
At the start of the second half, home captain Yann Sommer saved a penalty attempt by Bremen skipper Davy Klaassen on 54 minutes.
Herrmann made it 3-0 by firing home on the hour mark.
With time almost up, Bensebaini picked up a second yellow card for fouling Bittencourt, having also been booked while giving away the penalty Klaassen failed to convert.
Gladbach will have been top for a month by the time they play their next game at newly-promoted Union Berlin in two weeks' time.
FREIBURG GO FOURTH
Later on Sunday, Freiburg went fourth - level on points with Leipzig and Bayern - after a 1-0 home win over nine-man Eintracht Frankfurt, with three red cards dished out at the Schwarzwald Stadion.
Freiburg striker Nils Petersen scored the hosts' winner 13 minutes from time, but Frankfurt played the second half with 10 men after defender Gelson Fernandes was shown a second yellow card just before half-time.
There were ugly scenes at the end of a tense match as Frankfurt captain David Abraham was shown a straight red for barging into and knocking over Freiburg coach Christian Streich on the sidelines.
Freiburg winger Vincenzo Grifo, who had been substituted on 57 minutes, also saw a red card on the bench for grabbing Abraham by the throat in the ensuing melee.
Earlier, mid-table Bayer Leverkusen backed up their mid-week Champions League win over Atletico Madrid with a 2-0 victory at Wolfsburg with goals by Karim Bellarabi and substitute Paulinho.
Having been second in the table in mid-October, Wolfsburg are now 10th after four straight defeats in all competitions.
Bellarabi put Leverkusen ahead on 25 minutes by powering into the area and firing home, before Brazilian midfielder Paulinho came on to add a second goal six minutes into added time.
German Bundesliga results:
Borussia Moenchengladbach 3 Werder Bremen 1
VfL Wolfsburg 0 Bayer Leverkusen 2
Freiburg 1 Eintracht Frankfurt 0


Fuel
Cell Basics and the DoD Fuel Cell Projects
Nicholas M. Josefik, EIT
Industrial Engineer
ABSTRACT:
Fuel cells are electrochemical power generators
with the potential for attaining very high electrical energy conversion
efficiencies while operating quietly with minimal polluting emissions. In addition, by-product thermal energy
generated in the fuel cell is available for use for cogeneration of hot water or
steam. Fuel cells are commonly named
after the electrolyte used in the system.
The most common fuel cell types are Phosphoric Acid, Molten Carbonate,
Solid Oxide, Proton Exchange Membrane, and Alkaline fuel cells. The properties of the five main types of fuel
cells will be covered in the presentation.
Simplified fuel cell diagrams will be used to explain the inner workings
of the fuel cell system, which consist of three main subsystems the fuel
processor, power production, and the power conditioner.
From 1995 to 1997, U.S. Army ERDC-CERL managed
the installation of 30 200-kW Phosphoric Acid Fuel Cells at military
installations throughout the
U.S. Army ERDC-CERL also manages
the Climate Change Fuel Cell Program.
This program, initiated in FY 1995, provides a $1000/kW rebate to
purchasers of fuel cells. Rebate
awardees are required to provide reports documenting the performance of their
fuel cells over a 1-year operating period.
Well over 100 awards have been made for fuel cell demonstrations
throughout the world.
U.S. Army ERDC-CERL initiated a
Residential Scale Proton Exchange Membrane Demonstration Program in FY
2001. To date, over $6,000,000 has been
awarded for projects totaling 45 fuel cells.
This program requires operation of the fuel cells for a one-year period
at a minimum average availability of 90%.
Performance data to date have demonstrated stack life hours in excess of
7,000 hours, and availabilities in excess of 98%.
USA ERDC-CERL also established
the
BIOGRAPHY: Nicholas
M. Josefik is an Industrial Engineer working for U. S. Army Corps of Engineers
in the Energy Branch of the U.S. Army Engineer Research and
******************************************************************************
Broadband Over Power Lines and Radio Communications
Jim Haynie
President
American Radio Relay League
ABSTRACT: Jim
Haynie will address the operation of Broadband over Power Lines (BPL) systems
and BPL’s impact on the operation of radios and the use of public safety
channels.
BIOGRAPHY: Jim
Haynie is President of the American Radio Relay League (ARRL), the national
association for Amateur Radio. As President, Haynie is the official spokesman
of the ARRL Board of Directors in regard to matters of League Policy. He also
represents the League in its relationship with the public, various governments,
governmental agencies and officials with which the League may be concerned. The
League's President serves as an unpaid volunteer. In January 2004, the ARRL
Board reelected Haynie to his third term as the League's 13th
President.
Haynie began his service to the Board in
1987 as West Gulf Division Director. Three years later the ARRL Board elected
him Vice President, and he served in that capacity for two years. In 1997,
Haynie rejoined the Board, again as Director of the League's West Gulf
Division, and held that position until he was elected President in 2000.
Haynie's lifelong interest in ham radio
was sparked as a teenager, when his father gave him a Hallicrafters SX-88
receiver for his birthday. He was first licensed in 1973, as WN5JBP. Defining
Amateur Radio's role in homeland security has been one of Hanyie's top
initiatives. In June of 2003, he signed a formal Statement of Affiliation
between the Department of Homeland Security and ARRL. Later that year, he
served on a panel of national Citizen Corps affiliates during a Volunteers in
Homeland Security Conference. He's also taken part in several meetings with
representatives of the Federal Emergency Management Association (FEMA).
Emergency and disaster communications
have been a longtime interest for Haynie. Over the years, he has been involved
in ham radio communications efforts during earthquakes in
Bringing young people into ham radio is
another passion for Haynie, and he was instrumental in establishing the ARRL
Amateur Radio Education & Technology Program, popularly known as "The
Big Project." The educational initiative was guided by the success of a
ham radio program at
A native Texan, Haynie and his wife
Suzette live in
Outside of ham radio, he enjoys
competitive skeet shooting and traveling with his wife.
******************************************************************************
Ethics Training for
Professional Engineers
Gus
Khankarli, P.E., PMP
Design
Manager,
BIOGRAPHY: Gus Khankarli, PE, PMP is a Design
Transportation Manager and management professional with more than 15 years of
experience in this arena. He has played
pivotal roles in the development, integration and expansion of business
strategies with regard to operating in a high-risk, complex environment
overseas. He has strengths envisioning
business goals and possesses the business acumen to translate these goals into
powerful strategic initiatives. In his
current role, Mr. Khankarli has been accountable for reviewing and implementing
policies that require managing multiple projects, rectifying current
transportation related structural problems in the Dallas Area in addition to
reviewing vendors and Contractors submitted drawings. His project management experience spans;
Government, Consultants, Construction, Maintenance, distribution and retail
firms.
Mr. Khankarli has delivered training classes with the Texas Department of Transportation, at UT Arlington and overseas at Kuwait University on the topics of Metrication, Project Management, Organizational behavior and Civil Engineering Maintenance.
Mr. Khankarli has a BSCE and MECE
from UT Arlington and an MBA from UD and received his project management
professional certification from the Project Management Institute in 2002. Mr. Khankarli is a licensed Engineer in the State
of
******************************************************************************
Electric Transmission and the Proposed Nodal Market
Beth Garza
Manager, Congestion Analyst
Electric Reliability
Council of
ABSTRACT: Ms. Garza will describe recently completed
and proposed transmission and generation additions in the ERCOT region,
focusing on those projects of interest to those in the
BIOGRAPHY: Ms. Garza is employed by ERCOT as the Manager of Congestion Analysis. This is a recently created area in ERCOT Operations focused on improving ERCOT’s congestion management practices and communications.
Until August 2004, Ms. Garza was
employed by FPL Energy as a Director of Market Affairs, focused on electric
utility market and regulatory issues in
Prior to joining FPL Energy in
1999, Ms. Garza spent a year with Covington Consulting assisting multiple
municipal utilities in ERCOT with planning and industry restructuring
issues. Prior to that she was with the
City of Austin’s electric utility for thirteen years where she held a variety
of planning and operations roles, including 2 years as the Manager of System
Operations, with responsibility for generation dispatch, off system purchases
and sales, outage restoration, and system protection. Her last position at the City of
Ms. Garza has a BS degree in
Industrial Engineering from the
******************************************************************************
Henry Durrwachter
Senior Project Manager
TXU Energy
ABSTRACT:
BIOGRAPHY: Henry Durrwachter
has a BSEE degree from the


Endless runner game
Super Mega Hyper Awesome game!
Play Game
Settings
High-Scores
Copyright
Settings
Difficulty:
Back to menu
copyright
High scores
Currently empty
share scores
Back to menu
copyright


Release Notes
Versioning Scheme
Laravel and its other first-party packages follow Semantic Versioning. Major framework releases are released every year (~September), while minor and patch releases may be released as often as every week. Minor and patch releases should never contain breaking changes.
When referencing the Laravel framework or its components from your application or package, you should always use a version constraint such as ^8.0
, since major releases of Laravel do include breaking changes. However, we strive to always ensure you may update to a new major release in one day or less.
Exceptions
Named Arguments
At this time, PHP's named arguments functionality are not covered by Laravel's backwards compatibility guidelines. We may choose to rename function parameters when necessary in order to improve the Laravel codebase. Therefore, using named arguments when calling Laravel methods should be done cautiously and with the understanding that the parameter names may change in the future.
Support Policy
For LTS releases, such as Laravel 6, bug fixes are provided for 2 years and security fixes are provided for 3 years. These releases provide the longest window of support and maintenance. For general releases, bug fixes are provided for 18 months and security fixes are provided for 2 years. For all additional libraries, including Lumen, only the latest release receives bug fixes. In addition, please review the database versions supported by Laravel.
| Version | Release | Bug Fixes Until | Security Fixes Until |
|---|---|---|---|
| 6 (LTS) | September 3rd, 2019 | September 7th, 2021 | September 6th, 2022 |
| 7 | March 3rd, 2020 | October 6th, 2020 | March 3rd, 2021 |
| 8 | September 8th, 2020 | March 1st, 2022 | September 6th, 2022 |
| 9 (LTS) | September, 2021 | September, 2023 | September, 2024 |
| 10 | September, 2022 | March, 2024 | September, 2024 |
Laravel 8
Laravel 8 continues the improvements made in Laravel 7.x by introducing Laravel Jetstream, model factory classes, migration squashing, job batching, improved rate limiting, queue improvements, dynamic Blade components, Tailwind pagination views, time testing helpers, improvements to artisan serve
, event listener improvements, and a variety of other bug fixes and usability improvements.
Laravel Jetstream
Laravel Jetstream was written by Taylor Otwell.
Laravel Jetstream is a beautifully designed application scaffolding for Laravel. Jetstream provides the perfect starting point for your next project and includes login, registration, email verification, two-factor authentication, session management, API support via Laravel Sanctum, and optional team management. Laravel Jetstream replaces and improves upon the legacy authentication UI scaffolding available for previous versions of Laravel.
Jetstream is designed using Tailwind CSS and offers your choice of Livewire or Inertia scaffolding.
Models Directory
By overwhelming community demand, the default Laravel application skeleton now contains an app/Models
directory. We hope you enjoy this new home for your Eloquent models! All relevant generator commands have been updated to assume models exist within the app/Models
directory if it exists. If the directory does not exist, the framework will assume your models should be placed within the app
directory.
Model Factory Classes
Model factory classes were contributed by Taylor Otwell.
Eloquent model factories have been entirely re-written as class based factories and improved to have first-class relationship support. For example, the UserFactory
included with Laravel is written like so:
<?php
namespace Database\Factories;
use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
class UserFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = User::class;
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
'name' => $this->faker->name(),
'email' => $this->faker->unique()->safeEmail(),
'email_verified_at' => now(),
'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
'remember_token' => Str::random(10),
];
}
}
Thanks to the new HasFactory
trait available on generated models, the model factory may be used like so:
use App\Models\User;
User::factory()->count(50)->create();
Since model factories are now simple PHP classes, state transformations may be written as class methods. In addition, you may add any other helper classes to your Eloquent model factory as needed.
For example, your User
model might have a suspended
state that modifies one of its default attribute values. You may define your state transformations using the base factory's state
method. You may name your state method anything you like. After all, it's just a typical PHP method:
/**
* Indicate that the user is suspended.
*
* @return \Illuminate\Database\Eloquent\Factories\Factory
*/
public function suspended()
{
return $this->state([
'account_status' => 'suspended',
]);
}
After defining the state transformation method, we may use it like so:
use App\Models\User;
User::factory()->count(5)->suspended()->create();
As mentioned, Laravel 8's model factories contain first class support for relationships. So, assuming our User
model has a posts
relationship method, we may simply run the following code to generate a user with three posts:
$users = User::factory()
->hasPosts(3, [
'published' => false,
])
->create();
To ease the upgrade process, the laravel/legacy-factories package has been released to provide support for the previous iteration of model factories within Laravel 8.x.
Laravel's re-written factories contain many more features that we think you will love. To learn more about model factories, please consult the database testing documentation.
Migration Squashing
Migration squashing was contributed by Taylor Otwell.
As you build your application, you may accumulate more and more migrations over time. This can lead to your migration directory becoming bloated with potentially hundreds of migrations. If you're using MySQL or PostgreSQL, you may now "squash" your migrations into a single SQL file. To get started, execute the schema:dump
command:
php artisan schema:dump
// Dump the current database schema and prune all existing migrations...
php artisan schema:dump --prune
When you execute this command, Laravel will write a "schema" file to your database/schema
directory. Now, when you attempt to migrate your database and no other migrations have been executed, Laravel will execute the schema file's SQL first. After executing the schema file's commands, Laravel will execute any remaining migrations that were not part of the schema dump.
Job Batching
Job batching was contributed by Taylor Otwell & Mohamed Said.
Laravel's job batching feature allows you to easily execute a batch of jobs and then perform some action when the batch of jobs has completed executing.
The new batch
method of the Bus
facade may be used to dispatch a batch of jobs. Of course, batching is primarily useful when combined with completion callbacks. So, you may use the then
, catch
, and finally
methods to define completion callbacks for the batch. Each of these callbacks will receive an Illuminate\Bus\Batch
instance when they are invoked:
use App\Jobs\ProcessPodcast;
use App\Podcast;
use Illuminate\Bus\Batch;
use Illuminate\Support\Facades\Bus;
use Throwable;
$batch = Bus::batch([
new ProcessPodcast(Podcast::find(1)),
new ProcessPodcast(Podcast::find(2)),
new ProcessPodcast(Podcast::find(3)),
new ProcessPodcast(Podcast::find(4)),
new ProcessPodcast(Podcast::find(5)),
])->then(function (Batch $batch) {
// All jobs completed successfully...
})->catch(function (Batch $batch, Throwable $e) {
// First batch job failure detected...
})->finally(function (Batch $batch) {
// The batch has finished executing...
})->dispatch();
return $batch->id;
To learn more about job batching, please consult the queue documentation.
Improved Rate Limiting
Rate limiting improvements were contributed by Taylor Otwell.
Laravel's request rate limiter feature has been augmented with more flexibility and power, while still maintaining backwards compatibility with previous release's throttle
middleware API.
Rate limiters are defined using the RateLimiter
facade's for
method. The for
method accepts a rate limiter name and a closure that returns the limit configuration that should apply to routes that are assigned this rate limiter:
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Support\Facades\RateLimiter;
RateLimiter::for('global', function (Request $request) {
return Limit::perMinute(1000);
});
Since rate limiter callbacks receive the incoming HTTP request instance, you may build the appropriate rate limit dynamically based on the incoming request or authenticated user:
RateLimiter::for('uploads', function (Request $request) {
return $request->user()->vipCustomer()
? Limit::none()
: Limit::perMinute(100);
});
Sometimes you may wish to segment rate limits by some arbitrary value. For example, you may wish to allow users to access a given route 100 times per minute per IP address. To accomplish this, you may use the by
method when building your rate limit:
RateLimiter::for('uploads', function (Request $request) {
return $request->user()->vipCustomer()
? Limit::none()
: Limit::perMinute(100)->by($request->ip());
});
Rate limiters may be attached to routes or route groups using the throttle
middleware. The throttle middleware accepts the name of the rate limiter you wish to assign to the route:
Route::middleware(['throttle:uploads'])->group(function () {
Route::post('/audio', function () {
//
});
Route::post('/video', function () {
//
});
});
To learn more about rate limiting, please consult the routing documentation.
Improved Maintenance Mode
Maintenance mode improvements were contributed by Taylor Otwell with inspiration from Spatie.
In previous releases of Laravel, the php artisan down
maintenance mode feature may be bypassed using an "allow list" of IP addresses that were allowed to access the application. This feature has been removed in favor of a simpler "secret" / token solution.
While in maintenance mode, you may use the secret
option to specify a maintenance mode bypass token:
php artisan down --secret="1630542a-246b-4b66-afa1-dd72a4c43515"
After placing the application in maintenance mode, you may navigate to the application URL matching this token and Laravel will issue a maintenance mode bypass cookie to your browser:
https://example.com/1630542a-246b-4b66-afa1-dd72a4c43515
When accessing this hidden route, you will then be redirected to the /
route of the application. Once the cookie has been issued to your browser, you will be able to browse the application normally as if it was not in maintenance mode.
Pre-Rendering The Maintenance Mode View
If you utilize the php artisan down
command during deployment, your users may still occasionally encounter errors if they access the application while your Composer dependencies or other infrastructure components are updating. This occurs because a significant part of the Laravel framework must boot in order to determine your application is in maintenance mode and render the maintenance mode view using the templating engine.
For this reason, Laravel now allows you to pre-render a maintenance mode view that will be returned at the very beginning of the request cycle. This view is rendered before any of your application's dependencies have loaded. You may pre-render a template of your choice using the down
command's render
option:
php artisan down --render="errors::503"
Closure Dispatch / Chain catch
Catch improvements were contributed by Mohamed Said.
Using the new catch
method, you may now provide a closure that should be executed if a queued closure fails to complete successfully after exhausting all of your queue's configured retry attempts:
use Throwable;
dispatch(function () use ($podcast) {
$podcast->publish();
})->catch(function (Throwable $e) {
// This job has failed...
});
Dynamic Blade Components
Dynamic Blade components were contributed by Taylor Otwell.
Sometimes you may need to render a component but not know which component should be rendered until runtime. In this situation, you may now use Laravel's built-in dynamic-component
component to render the component based on a runtime value or variable:
<x-dynamic-component :component="$componentName" class="mt-4" />
To learn more about Blade components, please consult the Blade documentation.
Event Listener Improvements
Event listener improvements were contributed by Taylor Otwell.
Closure based event listeners may now be registered by only passing the closure to the Event::listen
method. Laravel will inspect the closure to determine which type of event the listener handles:
use App\Events\PodcastProcessed;
use Illuminate\Support\Facades\Event;
Event::listen(function (PodcastProcessed $event) {
//
});
In addition, closure based event listeners may now be marked as queueable using the Illuminate\Events\queueable
function:
use App\Events\PodcastProcessed;
use function Illuminate\Events\queueable;
use Illuminate\Support\Facades\Event;
Event::listen(queueable(function (PodcastProcessed $event) {
//
}));
Like queued jobs, you may use the onConnection
, onQueue
, and delay
methods to customize the execution of the queued listener:
Event::listen(queueable(function (PodcastProcessed $event) {
//
})->onConnection('redis')->onQueue('podcasts')->delay(now()->addSeconds(10)));
If you would like to handle anonymous queued listener failures, you may provide a closure to the catch
method while defining the queueable
listener:
use App\Events\PodcastProcessed;
use function Illuminate\Events\queueable;
use Illuminate\Support\Facades\Event;
use Throwable;
Event::listen(queueable(function (PodcastProcessed $event) {
//
})->catch(function (PodcastProcessed $event, Throwable $e) {
// The queued listener failed...
}));
Time Testing Helpers
Time testing helpers were contributed by Taylor Otwell with inspiration from Ruby on Rails.
When testing, you may occasionally need to modify the time returned by helpers such as now
or Illuminate\Support\Carbon::now()
. Laravel's base feature test class now includes helpers that allow you to manipulate the current time:
public function testTimeCanBeManipulated()
{
// Travel into the future...
$this->travel(5)->milliseconds();
$this->travel(5)->seconds();
$this->travel(5)->minutes();
$this->travel(5)->hours();
$this->travel(5)->days();
$this->travel(5)->weeks();
$this->travel(5)->years();
// Travel into the past...
$this->travel(-5)->hours();
// Travel to an explicit time...
$this->travelTo(now()->subHours(6));
// Return back to the present time...
$this->travelBack();
}
Artisan serve
Improvements
Artisan serve
improvements were contributed by Taylor Otwell.
The Artisan serve
command has been improved with automatic reloading when environment variable changes are detected within your local .env
file. Previously, the command had to be manually stopped and restarted.
Tailwind Pagination Views
The Laravel paginator has been updated to use the Tailwind CSS framework by default. Tailwind CSS is a highly customizable, low-level CSS framework that gives you all of the building blocks you need to build bespoke designs without any annoying opinionated styles you have to fight to override. Of course, Bootstrap 3 and 4 views remain available as well.
Routing Namespace Updates
In previous releases of Laravel, the RouteServiceProvider
contained a $namespace
property. This property's value would automatically be prefixed onto controller route definitions and calls to the action
helper / URL::action
method. In Laravel 8.x, this property is null
by default. This means that no automatic namespace prefixing will be done by Laravel. Therefore, in new Laravel 8.x applications, controller route definitions should be defined using standard PHP callable syntax:
use App\Http\Controllers\UserController;
Route::get('/users', [UserController::class, 'index']);
Calls to the action
related methods should use the same callable syntax:
action([UserController::class, 'index']);
return Redirect::action([UserController::class, 'index']);
If you prefer Laravel 7.x style controller route prefixing, you may simply add the $namespace
property into your application's RouteServiceProvider
.
{note} This change only affects new Laravel 8.x applications. Applications upgrading from Laravel 7.x will still have the
$namespace
property in theirRouteServiceProvider
.


@(title: String)(header: String)(databases: List[Database])(queryModel: Option[QueryModel]) @base(title)(header){
Running Time: 3.630s
*@
@*| *@ @* | id | *@ @*
|---|---|
| *@ @**@ @* | *@ @*1 | *@ @*
| *@ @**@ @* | *@ @*1 | *@ @*
| *@ @**@ @* | *@ @*1 | *@ @*
| *@ @**@ @* | *@ @*1 | *@ @*
| *@ @**@ @* | *@ @*1 | *@ @*
| *@ @**@ @* | *@ @*1 | *@ @*


We at the NIC agree with Peter Deutsch's suggestion (in RFC# 606 / NIC#
21246) that the NIC maintain an online ASCII text file of Host names,
addresses, and attributes. That suggestion corresponds to one made by
Vint Cerf recently, and evidently receives ARPA/IPT support.
...
The ASCII file generated by the NIC will reside at Host OFFICE-1 (Host
Address = 43 decimal), and will have the pathname
[NETINFO]HOSTS.TXT
Using this pathname with an FTP process will enable anyone, of course,
to retrieve the file for use at any Network Host.
The login username for FTP can be GUEST,
password ARPA,
account 1.
;GIDNEY::HOSTS.TXT.5, 27-Mar-85 13:11:54, Edit by PAETZOLD
;GIDNEY::HOSTS.TXT.4, 25-Mar-85 13:56:55, Edit by PAETZOLD
;local stuff
; DoD Internet Host Table
; 22-Mar-85
; Version number 436
;
; Changes, corrections, comments or questions to (HOSTMASTER@SRI-NIC)
;
; The format of this file is documented in RFC 810, "DoD Internet
; Host Table Specification", which is available online at SRI-NIC
; as the file
; [SRI-NIC]RFC810.TXT
; It may be retrieved via FTP using username ANONYMOUS with
; any password.
;
; NOTE CAREFULLY: RFC 810 has been slightly revised since the original
; version was written. In particular, the version printed in the
; "Internet Protocol Transition Workbook" does not document the
; added "machine type" field (between the host-name and system-name
; fields).
;
; The format for entries is:
;
; NET : NET-ADDR : NETNAME :
; GATEWAY : ADDR, ADDR : NAME : CPUTYPE : OPSYS : PROTOCOLS :
; HOST : ADDR, ALTERNATE-ADDR (if any): HOSTNAME,NICKNAME : CPUTYPE :
; OPSYS : PROTOCOLS :
;
; Where:
;; ADDR = internet address in decimal, e.g., <IP_ADDRESS>
;; CPUTYPE = machine type (PDP-11/70, VAX-11/780, FOONLY-F3, C/30, etc.)
;; OPSYS = operating system (UNIX, TOPS20, TENEX, ITS, etc.)
;; PROTOCOLS = transport/service (TCP/TELNET,TCP/FTP, etc.)
;; : (colon) = field delimiter
;; :: (2 colons) = null field
NET : <IP_ADDRESS> : SATNET-NETWORK :
NET : <IP_ADDRESS> : YPG-NET-TEMP :
NET : <IP_ADDRESS> : EDN-TEMP :
NET : <IP_ADDRESS> : BBN-NET-TEMP :
NET : <IP_ADDRESS> : ARPANET :
NET : <IP_ADDRESS> : DODIIS :
Network Working Group P. Mockapetris
Request for Comments: 882 ISI
November 1983
DOMAIN NAMES - CONCEPTS and FACILITIES
+-----------------------------------------------------+
| |
| This RFC introduces domain style names, their use |
| for ARPA Internet mail and host address support, |
| and the protocols and servers used to implement |
| domain name facilities. |
| |
| This memo describes the conceptual framework of the |
| domain system and some uses, but it omits many |
| uses, fields, and implementation details. A |
| complete specification of formats, timeouts, etc. |
| is presented in RFC 883, "Domain Names - |
| Implementation and Specification". That RFC |
| assumes that the reader is familiar with the |
| concepts discussed in this memo. |
| |
+-----------------------------------------------------+
INTRODUCTION
The need for domain names
As applications grow to span multiple hosts, then networks, and
finally internets, these applications must also span multiple
administrative boundaries and related methods of operation
(protocols, data formats, etc). The number of resources (for
example mailboxes), the number of locations for resources, and the
diversity of such an environment cause formidable problems when we
wish to create consistent methods for referencing particular
resources that are similar but scattered throughout the
environment.
The ARPA Internet illustrates the size-related problems; it is a
large system and is likely to grow much larger. The need to have
a mapping between host names (e.g., USC-ISIF) and ARPA Internet
addresses (e.g., <IP_ADDRESS>) is beginning to stress the existing
mechanisms. Currently hosts in the ARPA Internet are registered
with the Network Information Center (NIC) and listed in a global
table (available as the file [NETINFO]HOSTS.TXT on the SRI-NIC
host) [1]. The size of this table, and especially the frequency
of updates to the table are near the limit of manageability. What
is needed is a distributed database that performs the same
function, and hence avoids the problems caused by a centralized
database.
 IN A
;; ANSWER SECTION:
gandi.net. 86400 IN A <IP_ADDRESS>
;; AUTHORITY SECTION:
gandi.net. 86400 IN NS dns2.gandi.net.
gandi.net. 86400 IN NS dns4.gandi.net.
gandi.net. 86400 IN NS dns3.gandi.net.
gandi.net. 86400 IN NS dns0.gandi.net.
gandi.net. 86400 IN NS dns1.gandi.net.
;; ADDITIONAL SECTION:
dns0.gandi.net. 86400 IN A <IP_ADDRESS>
dns0.gandi.net. 86400 IN AAAA 2001:4b98:d:1::39
dns1.gandi.net. 86400 IN A <IP_ADDRESS>
dns1.gandi.net. 86400 IN AAAA 2001:4b98:d:1::45
dns2.gandi.net. 86400 IN A <IP_ADDRESS>
dns2.gandi.net. 86400 IN AAAA 2001:4b98:d:589::211
dns3.gandi.net. 86400 IN A <IP_ADDRESS>
dns4.gandi.net. 86400 IN A <IP_ADDRESS>
dns4.gandi.net. 86400 IN AAAA 2001:4b98:dc2:90:217:70:186:184
;; Query time: 151 msec
;; SERVER: <IP_ADDRESS>#53(<IP_ADDRESS>)
;; WHEN: Mon Feb 22 11:31:28 PST 2016
;; MSG SIZE rcvd: 341
@ IN SOA dns.gandi.net. hostmaster.gandi.net. (
1419475273 ; serial
10800 ; refresh (3 hours)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10800 ; minimum (3 hours)
)
;; NS, MX entries at apex
IN NS a.dns.gandi.net.
NS b.dns.gandi.net.
NS c.dns.gandi.net.
MX 10 spool.mail.gandi.net.
MX 50 fb.mail.gandi.net.
;; Cheap load balancer
www A <IP_ADDRESS>
A <IP_ADDRESS>
;; Short TTL override
temporary 30 IN A <IP_ADDRESS>
$ORIGIN seemingly.invalid.tfz.net.
@ 10800 IN CNAME <IP_ADDRESS>
<IP_ADDRESS> 300 IN A <IP_ADDRESS>
The resolver:
/----------\
| Client |
| Computer |
\----------/
The resolver asking the recursive caching nameserver
/----------\ /-------------\
| Client | => Q? "www.domain.com" Type=A ==> | Campus |
| Computer | | Name Server |
\----------/ \-------------/
The resolver getting a reply from the recursive NS
/----------\ /-------------\
| Client | <= A "www.domain.com" <IP_ADDRESS> <== | Campus |
| Computer | | Name Server |
\----------/ \-------------/
You, typing "www.domain.com":
/----------\
| Client |
| Computer |
\----------/
You, typing "www.domain.com":
/----------\ /-------------\
| Client | => Q? "www.domain.com" Type=A ==> | Campus |
| Computer | | Name Server |
\----------/ \-------------/
(You, waiting)
/----------\ /-------------\
| Client | => Q? "www.domain.com" Type=A ==> | Campus |
| Computer | | Name Server |
\----------/ \-------------/
|
? www.domain.com
v
/-------------\
| . (root) |
| Name Server |
\-------------/
(You, still waiting)
/----------\ /-------------\
| Client | => Q? "www.domain.com" Type=A ==> | Campus |
| Computer | | Name Server |
\----------/ \-------------/
^
DUNNO ASK TO .COM
|
/-------------\
| . (root) |
| Name Server |
\-------------/
(You, still waiting)
/----------\ /-------------\
| Client | => Q? "www.domain.com" Type=A ==> | Campus |
| Computer | | Name Server |
\----------/ =============== \-------------/
|
www.domain.com A ?
v
/-------------\ /-------------\
| .com (vsn) | | . (root) |
| Name Server | | Name Server |
\-------------/ \-------------/
(You, still waiting)
/----------\ /-------------\
| Client | => Q? "www.domain.com" Type=A ==> | Campus |
| Computer | | Name Server |
\----------/ ==============> \-------------/
^
DUNNO ASK DOMAIN.COM
|
/-------------\ /-------------\
| .com (vsn) | | . (root) |
| Name Server | | Name Server |
\-------------/ \-------------/
(You, still experiencing microsecond boredom)
/----------\ /-------------\
| Client | => Q? "www.domain.com" Type=A ==> | Campus |
| Computer | | Name Server |
\----------/ ================================= \-------------/
|
www.domain.com A ?
v
/-------------\ /-------------\ /-------------\
| domain.com | | .com (vsn) | | . (root) |
| Name Server | | Name Server | | Name Server |
\-------------/ \-------------/ \-------------/
(You, still experiencing microsecond boredom)
/----------\ /-------------\
| Client | => Q? "www.domain.com" Type=A ==> | Campus |
| Computer | | Name Server |
\----------/ ================================= \-------------/
^
SURE THING, use <IP_ADDRESS>, TTL is 300 seconds
|
/-------------\ /-------------\ /-------------\
| domain.com | | .com (vsn) | | . (root) |
| Name Server | | Name Server | | Name Server |
\-------------/ \-------------/ \-------------/
(That was quick, a few milliseconds)
/----------\ /-------------\
| Client | <= "www.domain.com" has 74.125.224. | Campus |
| Computer | | Name Server |
\----------/ \-------------/
SURE THING, use <IP_ADDRESS>, TTL..
/-------------\ /-------------\ /-------------\
| domain.com | | .com (vsn) | | . (root) |
| Name Server | | Name Server | | Name Server |
\-------------/ \-------------/ \-------------/
Now what if you ask the same question again a few seconds after ?
/----------\ /-------------\
| Client | => Q? "www.domain.com" Type=A ==> | Campus |
| Computer | | Name Server |
\----------/ \-------------/
The recursive NS cached this for TTL seconds, immediate answer
/----------\ /-------------\
| Client | <= A "www.domain.com" <IP_ADDRESS> <== | Campus |
| Computer | (294 seconds left) | Name Server |
\----------/ \-------------/
And what if you ask for dev.domain.com minutes later ?
/----------\ /-------------\
| Client | => Q? "dev.domain.com" Type=A ==> | Campus |
| Computer | | Name Server |
\----------/ \-------------/
/-------------\ /-------------\ /-------------\
| domain.com | | .com (vsn) | | . (root) |
| Name Server | | Name Server | | Name Server |
\-------------/ \-------------/ \-------------/
Name server cached the information from . and .com about domain.com
/----------\ /-------------\
| Client | => Q? "dev.domain.com" Type=A ==> | Campus |
| Computer | | Name Server |
\----------/ ================================= \-------------/
|
dev.domain.com A ?
v
/-------------\ /-------------\ /-------------\
| domain.com | | .com (vsn) | | . (root) |
| Name Server | | Name Server | | Name Server |
\-------------/ \-------------/ \-------------/
; <<>> DiG 9.9.5-9ubuntu0.5-Ubuntu <<>> tfz.net ANY @a.root-servers.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49120
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 16
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;tfz.net. IN ANY
;; AUTHORITY SECTION:
net. 172800 IN NS m.gtld-servers.net.
net. 172800 IN NS l.gtld-servers.net.
net. 172800 IN NS k.gtld-servers.net.
net. 172800 IN NS j.gtld-servers.net.
net. 172800 IN NS i.gtld-servers.net.
net. 172800 IN NS h.gtld-servers.net.
net. 172800 IN NS g.gtld-servers.net.
net. 172800 IN NS f.gtld-servers.net.
net. 172800 IN NS e.gtld-servers.net.
net. 172800 IN NS d.gtld-servers.net.
net. 172800 IN NS c.gtld-servers.net.
net. 172800 IN NS b.gtld-servers.net.
net. 172800 IN NS a.gtld-servers.net.
;; ADDITIONAL SECTION:
m.gtld-servers.net. 172800 IN A <IP_ADDRESS>
l.gtld-servers.net. 172800 IN A <IP_ADDRESS>
k.gtld-servers.net. 172800 IN A <IP_ADDRESS>
j.gtld-servers.net. 172800 IN A <IP_ADDRESS>
i.gtld-servers.net. 172800 IN A <IP_ADDRESS>
h.gtld-servers.net. 172800 IN A <IP_ADDRESS>
g.gtld-servers.net. 172800 IN A <IP_ADDRESS>
f.gtld-servers.net. 172800 IN A <IP_ADDRESS>
e.gtld-servers.net. 172800 IN A <IP_ADDRESS>
d.gtld-servers.net. 172800 IN A <IP_ADDRESS>
c.gtld-servers.net. 172800 IN A <IP_ADDRESS>
b.gtld-servers.net. 172800 IN A <IP_ADDRESS>
b.gtld-servers.net. 172800 IN AAAA 2001:503:231d::2:30
a.gtld-servers.net. 172800 IN A <IP_ADDRESS>
a.gtld-servers.net. 172800 IN AAAA 2001:503:a83e::2:30
;; Query time: 14 msec
; <<>> DiG 9.9.5-9ubuntu0.5-Ubuntu <<>> tfz.net ANY @a.dns.gandi.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32015
;; flags: qr *aa* rd; QUERY: 1, ANSWER: 7, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;tfz.net. IN ANY
;; ANSWER SECTION:
tfz.net. 10800 IN NS a.dns.gandi.net.
tfz.net. 10800 IN NS c.dns.gandi.net.
tfz.net. 10800 IN NS b.dns.gandi.net.
tfz.net. 10800 IN SOA a.dns.gandi.net. hostmaster.gandi.net.<PHONE_NUMBER> 10800 3600<PHONE_NUMBER>0
tfz.net. 10800 IN A <IP_ADDRESS>
tfz.net. 10800 IN MX 10 spool.mail.gandi.net.
tfz.net. 10800 IN MX 50 fb.mail.gandi.net.
;; Query time: 77 msec
;; SERVER: <IP_ADDRESS>#53(<IP_ADDRESS>)
;; WHEN: Mon Feb 22 12:34:56 PST 2016
;; MSG SIZE rcvd: 203


Welcome to Modern Speak and Spell’s documentation!¶
Contents
Speech Procesing API¶
This script can be used and the functions can be imported and used in almost any game and game_launcher so that if anything has to changed in this script...no change has to be done in the game code.
API package¶
API.edit module¶
Helps in editing the fileids and transcription files for decoding of recorded speech.
-
API.edit.
fileids
(n)¶ Function to edit test.fileids.
-
API.edit.
transcription
(n)¶ Function to edit test.transcription.
API.recorder module¶
This basically is a generalized recording and decoding module which can be used in all the game launching, gaming, as well as for testing speech and processing.
-
class
API.recorder.
Recorder
(DEFAULT_LM_PATH, DEFAULT_AM_PATH, CHANNELS=1, RATE=16000, CHUNK_SIZE=1024, MIN_VOLUME=1600, OUTPUT_DIR='wav', SILENCE=3, TRIALS=None, MULTI=False, DECODE=False, L_LIB=None, A_LIB=None, TRANSCRIBE=False, OUTPUT_SHELL=None)¶ Bases:
object
-
decoder
()¶ Function to decode using the pocketsphinx batch command.
-
listen
(stopped, q)¶ Function which listens to the audio stream and puts the chunks in a queue to be operated later on.
Parameters: - stopped – The threading event flag.
- q – A queue to put all the required chunks into so that they can be processed later.
-
record
(stopped, q)¶ Function which records when volume of a chunk is greater than a particular threshold value.
Parameters: - stopped – Same as in listen()
- q – Same as in listen()
-
set_library
(lmpath, ampath)¶ Function which sets the library paths in order to make it easy for every user to use.
Parameters: - lmpath – It contains the default language model path.
- ampath – It contains the default acoustic model path.
-
start
()¶ Main function which starts the entire process.
-
Spell It¶
This is a very simple game...a game in which the user has to spell a word given out and based on whether the word is spelt correct or wrong the results are generated accordingly.
Spell_It module¶
Main program...takes out words at random from the wordlist and asks to spell them out. It can be used to play the terminal version of the game.
This is the improvised Spell_It game
-
class
Spell_It.
Spell
¶ Bases:
object
-
rand
()¶ Generates a random word from Wordlist.csv
-
score
(output, word)¶ Finds out the user’s score after comparing with the original word.
Parameters: - output – The part of the word formed due to user input.
- word – The original word.
Returns: The user’s score out of 10
-
terminal
(word)¶ Main function to take care of the whole process
Parameters: word – Takes the randomly generated word from rand() as input parameter.
-
test
(string, w)¶ Function to take the recording and check if it matches with the letters.
Parameters: - string – The string to be formed as the result.
- w – The specific letter to be checked.
Returns: Returns string, improvised by the function itself.
-
Spell_gui module¶
Generates GUI using pygame, for Spell It!, using core functionality from Spell_It.py script.
-
Spell_gui.
main
()¶ The main block of the program which runs the entire display.
-
Spell_gui.
message
(msg, color, width, height, font_size, center=False, bg=None)¶ Function to display a specific message in a specific position with a specific color.
Parameters: - msg – The text to be displayed.
- color – The font color.
- width – The horizontal position of the text on the screen.
- height – The vertical position of the text on the screen.
- font_size – The font size of the text.
- center – Boolean value to determine if text will be aligned to the center or not.
- bg – Sets the background colour of the text on the window. Default value is None.
Hangman¶
This is a very simple game...a game in which the user has to fill in the blanks given to generate a specific word in a limited number of trials.
Hangman-Examples¶
This basic example is mainly to show how to play the game. Suppose the word is “ANIRBAN”
| INPUT | OUTPUT | REASON |
|---|---|---|
| A | A—-A- | A is there two times |
| B | A—BA- | B is there one time |
| C | A—BA- | C is not present there |
| I | A-I-BA- | I is there one time |
| N | ANI-BAN | N is there two times |
| R | ANIRBAN | R is there one time |
Strategy -> Start by spelling the vowels first...they are almost indispensible in every word...and can help in guessing the given word.
Hangman module¶
Updated Version of Hangman Game
-
class
Hangman.
Hangman
¶ Bases:
object
-
check
(str1, l, r)¶ Function to check if input letter is present anywhere in the word
Parameters: - str1 – To compute the updated string.
- l – The input letter.
- r – The word generated using rand().
Returns: The updated word after insertion of the input letter, if present in the actual word.
-
initialize
(r)¶ Displays the word in form of dashes.
Parameters: r – Random word generated.
-
rand
()¶ Generates a random word from Wordlist.csv
-
score
(output, word)¶ Finds out the user’s score after comparing with the original word.
Parameters: - output – The part of the word formed due to user input.
- word – The original word.
Returns: The user’s score out of 10
-
terminal
(word)¶ Calls the other functions to run the entire terminal version of the game.
Parameters: word – The word which is generated randomly using function rand()
-
Hangman_gui module¶
-
Hangman_gui.
main
()¶ The main block of the program which runs the entire display.
-
Hangman_gui.
message
(msg, color, width, height, font_size, center=False, bg=None)¶ Function to display a specific message in a specific position with a specific color.
Parameters: - msg – The text to be displayed.
- color – The font color.
- width – The horizontal position of the text on the screen.
- height – The vertical position of the text on the screen.
- font_size – The font size of the text.
- center – Boolean value to determine if text will be aligned to the center or not.
- bg – Sets the background colour of the text on the window. Default value is None.
Encrypter¶
This is a game in which the user will be given three choices. 1.Encode 2.Decode 3.Guess
In the first two games the user will be given to encode or decode some words based on a hint provided. In the third game, the user has to guess the actual word from the encrypted one using some shift operations.
Encrypter-Examples¶
The basic examples are mainly to show how to play the game.
A Note on the Caeser Cipher¶
This is a very simple cipher used in encryptions in which the letters are shifted each by a specific value.
Let us for example shift “ABXY” by 4:
A -> E, B -> F, X -> B, Y -> C, the encrypted word is “EFBC”.
Encode¶
The game is basically to encrypt a given word.
Suppose “anirban” is encrypted as “bojscbo”, so the shifting key is +1. Therefore suppose we have been given to encrypt “google”, so the encryption will be “hpphmf”. We just have to guess the encrypted word and spell it properly within 20 trials.
Decode¶
This game is basically to decrypt a given encoded word.
Suppose “cpktdcp” is decoded as “anirban”, the shifting key for decoding is -2. Therefore suppose we have been given to decode “eqy”, the answer will be “cow”. Just guess the word, and spell it out within 20 trials.
Guess¶
This is a rather interesting game, here we have to guess the shifting key. We will be provided the encoded word, the original word, and just guess the shifting key. Suppose the words given are “anirban” and “cpktdcp”, the shifting key for encoding is 2. So just enter the correct shifting key within 10 trials.
Encrypter module¶
-
class
Encrypter.
Encrypter
¶ Bases:
object
-
check
(word)¶ The number of trials being 20, the user is allowed to try to encrypt or decrypt the given word correctly.
Parameters: word – Takes the randomly generated word from rand_word() as input parameter.
-
choose
()¶ Module to help take the user input for the chosen option. The valid inputs are 1, 2 and 3.
-
rand_int
()¶ Picks up a random integer between 1 and 25, including both.
-
rand_word
()¶ Generates a random word from Wordlist.csv
-
score
(output=None, word=None, trials=0, choice=None)¶ Finds out the user’s score after comparing with the original word.
Parameters: - output – The part of the word formed due to user input.
- word – The original word.
- trials – The number of trials taken to get to the right answer.
- choice – The gaming option chosen as user-input.
Returns: The user’s score out of 10
-
shift
(word, n)¶ Used to shift each letter in a word by n...in order to encrypt or decrypt the word...the sequence is cyclic...that is a to z and then back to a.
Parameters: - word – The word to be encrypted or decrypted.
- n – The shifting key.
Returns: The word with all the letters shifted, as a list type value.
-
terminal
(choice, random_word)¶ Main module to run the entire game in terminal
Parameters: - choice – Choice 1, 2 or 3 as user input.
- random_word – Random word generated using rand_word()
-
test
(string, w)¶ Function to take the recording and check if it matches with the letters.
Parameters: - string – The string to be formed as the result.
- w – The specific letter to be checked.
Returns: Returns string, improvised by the function itself.
-
Encrypter_gui module¶
Generates Pygame GUI for the Encrypter game.
-
Encrypter_gui.
check
(word, choice)¶ Performs the same function as that of check() function of class Encrypter..except that the messages are displayed to the GUI rather than being printed out to the console.
Parameters: word – The input word to be operated on.
-
Encrypter_gui.
main
()¶ The main block of the program which runs the entire display.
-
Encrypter_gui.
message
(msg, color, width, height, font_size, center=False, bg=None)¶ Function to display a specific message in a specific position with a specific color.
Parameters: - msg – The text to be displayed.
- color – The font color.
- width – The horizontal position of the text on the screen.
- height – The vertical position of the text on the screen.
- font_size – The font size of the text.
- center – Boolean value to determine if text will be aligned to the center or not.
- bg – Sets the background colour of the text on the window. Default value is None.
Crossword¶
This game has been built as an extension of Hangman. The game has only been designed to fit for 4x4 matrices with 4 words, randomly generated from the wordlist. It can be extended to other general cases in the future.
Crossword module¶
-
Crossword.
find
(w, c, r)¶ This function helps to find if there is an intersection between the c’th letter of a word and the r’th letter of another word given in the file.
Parameters: - w – The word provided.
- c – The index of the letter of the required word.
- r – The index of the letter of the given word.
Returns: The word whose letter matches with the letter of the given word.
-
Crossword.
find_inv
(x, y, p)¶ This function helps to find out a word, whose two letters at two specified positions are x and y.
Parameters: - x – The letter at the beginning position.
- y – The letter at the beginning position.
Returns: The word found out from the list.
-
Crossword.
main
()¶ Uses the functions to generate 4 4-letter words for a 4 X 4 crossword.
maker1 module¶
-
class
maker1.
Crossword
¶ Bases:
object
-
assign_meaning
()¶ Appends the meanings to a list.
-
check
(str1, l, w)¶ Checks if letter is present in word or not.
Parameters: - str1 – Variable to return the updated string.
- l – The letter itself...as user-input.
- w – The string to be checked.
Returns: The updated string.
-
display
(color)¶ This function displays the crossword matrix at each stage of the game, on the pygame window.
Parameters: color – The color to be displayed.
-
formation
(w, q)¶ Main function, which just like in hangman, forms the string taking the user-input at every time.
Here the q argument is mainly aimed at specifying the word number such that the meaning of it can be displayed as a hint. The main task of this function is to run a sequence like the Hangman game to complete each of the four words. If the number of trials exceed 15 for each word...it shifts to the next word...and again back to it if time permits...in order to strive towards the solution. However, if the time of game-running exceeds 3 minutes...the game stops.
Parameters: - w – The qth word generated from Crossword script.
- q – The index of the word.
Returns: The updated string if within game-running time, or else returns “END”.
-
meaning
(w)¶ Extracts the meaning out of the line containing the word.
Parameters: w – The word for which meaning has to be found out. Returns: The meaning of the word concerned.
-
message
(msg, color, width, height, font_size, center=False, bg=None)¶ Function to display a specific message in a specific position with a specific color.
Parameters: - msg – The text to be displayed.
- color – The font color.
- width – The horizontal position of the text on the screen.
- height – The vertical position of the text on the screen.
- font_size – The font size of the text.
- center – Boolean value to determine if text will be aligned to the center or not.
- bg – The background colour of the text. Default value is None.
-
multi_line_text
(surface, text, pos, font_size, color, bg=None)¶ Used to display multi_line text.
Parameters: - surface – The game display surface or window.
- text – The single(or multi-line)text to be displayed.
- pos – The width and height positions of the text, to be entered in tuple format.
- font_size – The display font_size of the text.
- color – The color of the text to be displayed on screen.
- bg – The background colour of the text. Default value is None.
-
-
maker1.
main
()¶ Main function to launch the pygame GUI, and use the other functions to build the game sequence.
Design of the game structure¶
The positions of the words in the rows and columns can be 1-3 and 2-4 respectively, and words are designed to be fitted in the crossword alternately, means if a word is at the first row, then the next word will be at the third row, and same logic for the columns.
The matrix is displayed according to the following logic. |#| for the blank cells, and |A| for the cell with letter A.
The 4-letter words have been scraped out of the wordlist. Then using PyDictionary, it’s meanings, in noun, verb, adjective, and adverb forms have been formed, and combined list is in words.csv.
The game has been designed to give the user a hint, by displaying the meaning of the word, before he guesses the word.


Simple CryptoCurrency Tables Demo!
This is a simple app that displays cryptocurrency info.
Name
Price (CAD)
Change (24h)
High (24h)
Low (24h)
Market Cap (CAD)


Donut knock it until you've tried it
Here's some Donut Puns!
- "Donut Worry, Be Happy!"
- "What do you call a cute donut? Adoughrable!"
- "Why did the donut go to the dentist? To get a filling!"
- "What kind of donnuts can fly? A plain one!"
 They donut like to joke around!"


We want to lift the blue curve in the annulus (shown on the left)
through the covering map from the spiral strip to the annulus.
First, we need to decide how to lift the initial point (shown in
black on the left). All possible lifts are shown on the right.
We will use the initial lift shown by the larger blue marker.
(Use the mouse wheel or arrow keys to step through.)
The solid blue part of the curve has been lifted already. We now
want to lift the next short section, which is shown on the left
in red. This is easy, because the short section is contained in
an open set over which the covering is trivial. All possible
lifts are shown on the right in red. Only one of them connects
with the lifting that we have done already.
We extend our lift over the next section by using the unique
possible lift that matches up with what we have already done.
We have now lifted the whole curve.


Instantaneous voting on anything
Code:
You are voting as:
Select an option below and click 'Ballotize.it' to vote
{{ uservote.errorMsg }}


— it's very difficult to answer;
— there is no single "silver bullet";
It's easier to answer, why every other system is slow.
I will tell some principles, ideas, and facts...
... but mostly do some handwaving.
— but there is no such thing as the best algorithms!
How not to write a DBMS:
We will write code in C++ / Rust / Asm (it will be fast!)
and use simdjson (isn't it fast?) and Apache Arrow (shall be fast)
will use mmap (I heard it's fast) or no... in-memory database (RAM is fast!)
and it will work on asynchronous Seastar framework (fast?)
... and it will be faster than ClickHouse!
Daniel Lemire, the author of simdjson library
But it is not enough :(
Example: so you want to parse and process JSON data, a lot of it.
The fastest library to parse JSON is simdjson.
And ClickHouse is using it.
"The fastest command-line tools for querying large JSON datasets"
feat.: jq, dsq, trdsql, spark-sql, miller, spyql, octosql and ClickHouse.
https://github.com/dcmoura/spyql/blob/master/notebooks/json_benchmark.ipynb
The best performance is shown by ClickHouse and OctoSQL.
And ClickHouse is using simdjson. Is it the reason for high performance?
The fastest library to parse JSON is simdjson. And ClickHouse is using it.
But in a different context. And it is not used for parsing input data.
Q: Does ClickHouse beat simdjson in speed?
A: Yes and No.
Why ClickHouse and OctoSQL are faster on JSON processing?
Not because they use simdjson. And they don't need it.
But because they parse JSONs, learn the structure
and then reuse it for specialized, structured parsing!
— every algorithm makes different sense in different context.
Example: let's take the best hash function.
— every algorithm makes different sense in different context.
Example:
— let's take the best hash function.
Where you're going to use it?
— in hash tables;
— in bloom filters;
— in hyperloglogs;
— as a function in SQL;
But if you provide it as a function in SQL:
SELECT myBestHash(x) FROM table
You cannot longer use it for hash functions, bloom filters and hyperloglogs*
Example:
CREATE TABLE ... ENGINE = Distributed(... myBestHash(x) % 64)
SELECT ... FROM table GROUP BY x
— interference of hash functions.
* — with the same seed; but seeding not always help, e.g. CityHash is flawed.
What is the best hash function? How the author tested it?
Typical mistake:
— the author tested the hash function on every input size;
— the inputs of 1 byte, 2 bytes, ... 111 bytes, etc;
... but did not test in a loop with a random distribution of input sizes.
— using the same input size in a loop makes
CPU branch predictor works too good;
... but did not test in a loop with a not so random distribution of input sizes.
— what if a real dataset has 90% strings of size zero,
9% strings of size 1..50 and 1% of strings around 1KB?
Malcolm in the Middle S03E06 - Health Scare, Fox Network, 2001
Example: you load a website and it's loaded in 5 seconds :(
You check a few more times and it loads instantly.
Wrong:
— it was a temporary glitch; ⌛
— it does not reproduce; ⏱
— the problem fixed by itself;
— why even bother?
Right:
— my precious request was processed slowly!!!
— let's find it in the logs.
I don't care if millions of other requests are processed quickly,
I want to know why that request was slow.
Why some queries are slower?
 Telemetry and introspection.
What every thread on the server is doing now?
SELECT arrayStringConcat(arrayMap(
x -> demangle(addressToSymbol(x)), trace), '\n')
FROM system.stack_trace
Where the query spend most of the time?
SELECT arrayStringConcat(arrayMap(
x -> demangle(addressToSymbol(x)), trace), '\n')
FROM system.trace_log WHERE query_id = '...'
How many resources the query consumed?
SELECT ProfileEvents FROM system.query_log
WHERE query_id = '...'
If you feel bored on Friday night, what to do:
1. Run your program under strace -f and explain the output.
2. Attach gdb to your program and write thread apply all backtrace.
3. Run sudo perf top on production. Look at the annotated asm.
4. If a query runs in 1 second, ask why not 500 ms.
5. If a query runs in 1 ms ask why it took a whole millisecond.
You cannot design a fast DBMS sitting in your auditorium
at University of Something
... if you do, your DBMS will be fast on paper
or on a few synthetic benchmarks (it's time to forget about TPC)
What to do:
— optimize for real production workloads;
— the more diverse workloads the better;
— do quick development iterations.
BusTub — educational DBMS from CMU with no production usage intent, and I like the logo.
I like benchmarks... I collect them:
https://github.com/ClickHouse/ClickHouse/issues/22398
Not everyone likes benchmarks:
You may not use the Offerings:
7. in order to benchmark Offerings or to build similar
or competitive products or services.
— Snowflake Acceptable Use Policy
Do benchmarks. Don't prevent others from doing benchmarks.
Learn and improve. Don't do benchmarketing.

If your system is heavily optimized,
most of the new ideas are not going to work.
But you still have to collect ideas and try all of them!
And select one idea out of hundreds.
Examples:
— optimize hash table lookup with __builtin_prefetch; did not work;
— optimize hash table lookup with SIMD instructions; did not work;
— do instruction-parallel computation of hash functions; did not work;
— use Robin Hood hash table algorithm for GROUP BY; did not work;
— use Swiss Table hash table algorithm for GROUP BY; did not work;
— allocating more memory to avoid wraparound; did not work;
— predicting hash table sizes for the query; worked! #33439
Don't be afraid of changes. Rewrite the code all the time.
Automated CI tests will do the job.
Must have: functional and integration tests, fuzzing, and sanitizers.
Automated performance regression testing:
https://clickhouse.com/blog/testing-the-performance-of-click-house/
Example: you speed up one place of code +50%,
but the average performance decreased by 1% — not to be approved.
The most recent optimization from Maksim Kita:
SET compile_sort_description=1;
SELECT * FROM test_nullable_table
ORDER BY value
— 0 rows in set. Elapsed: 5.299 sec. Processed 100.00 million rows, 1.70 GB (18.87 million rows/s., 320.81 MB/s.)
The most recent optimization from Maksim Kita*:
SET compile_sort_description=1;
SELECT * FROM test_nullable_table
ORDER BY value
— 0 rows in set. Elapsed: 4.131 sec. Processed 100.00 million rows, 1.70 GB (24.21 million rows/s., 411.50 MB/s.)
— +30% performance improvement!
* — among 100 others by the same author.
Source: https://imgur.com/gallery/YegLM, 2016.
ClickHouse works fine on databases of 100 trillion rows (10^14)
in production.
Tests should also run at scale.
Example: Wikipedia pageviews statistics, public domain:
https://dumps.wikimedia.org/other/pageviews/
370 billion records, 1 billion time series 2015..2022.
I've loaded them to ClickHouse.
I've loaded them again.
I've loaded them in 10 different ways while testing ClickHouse Cloud.
Now ClickHouse eats this dataset for breakfast
(with 40 million rows/second insert speed per node).
Source: Aleksandr Kryukov, 2013, https://www.youtube.com/watch?v=ahQIQxq8JY4
Always challenge known beliefs.
ClickHouse is probably not good at large BLOBs?
— but what if I load 600 GB of HTML pages into ClickHouse?
Yes, I did it. And it went alright. #18842
ClickHouse is probably not good at direct inserts from web pages?
— but what if I build a pastebin service on top of this
and persuade all my team to use it?
Yes, I did it. Welcome https://pastila.nl/
What will happen if I do 10 million HTTP requests with the url table function?
— it did not go alright, but we've fixed it! #29696
Always challenge known beliefs.
ClickHouse is probably not good
— as a key-value database?
— as a streaming data processing system?
— as a multi-tenant service with workload isolation?
— for vector search in embeddings?
— for full text search?
Hold my beer...
... or read the ClickHouse roadmap 2022.
Source: Eh Bee Family, 2014, https://vine.co/v/OwTOez0W6wg
Do whatever you want
if you can make observations and derive conclusions.
Example: I've loaded the first 1 trillion prime numbers into ClickHouse:
CREATE TABLE primes (n UInt64 CODEC(Delta, ZSTD))
ENGINE = ReplicatedMergeTree ORDER BY n
The idea has no direct application: it's possible to generate the numbers on the fly inside the subranges at decent speed.
But this is how I've tested the reliability of
ClickHouse Keeper, MergeTree over S3, and Replicated databases.
For the curious readers: prove analytically that ZSTD compression is better than LZ4 on this dataset;
prove that increasing ZSTD level does not make sense; estimate the size of the dataset on disk.
What is it?
clickhouse-local --query "
WITH number + 1 AS x
SELECT x % 15 = 0 ? 'FizzBuzz'
: (x % 3 = 0 ? 'Fizz'
: (x % 5 = 0 ? 'Buzz' : x::String))
FROM system.numbers" | pv >/dev/null
Is it fast?
clickhouse-local --query "
WITH number * 15 AS x
SELECT format('{}\n{}\nFizz\n{}\nBuzz\nFizz\n{}\n{}\nFizz\nBuzz\n{}\n
Fizz\n{}\n{}\nFizzBuzz\n',
(x + 1)::String, (x + 2)::String, (x + 4)::String, (x + 7)::String,
(x + 8)::String, (x + 11)::String, (x + 13)::String, (x + 14)::String)
FROM system.numbers FORMAT RawBLOB" | pv > /dev/null
How to write a fast DBMS?
— use good algorithms in a good context;
— dig into details;
— measure everything;
— be close to production;
— do benchmarks, more of them;
— never stop experimenting;
— test at scale;
— do weird stuff;
— have fun!
Get a life! Start contributing to ClickHouse!


{{ if $.Params.withoutAmount }} How much would you like to contribute? {{ else }} Suggested Amount {{ end }}
You can pay by
Lifafa GST number: 27AADCL2615EZV
{{ define "main" }}
Contribute to the Lifafa
You can pay by


Verdict Reached in Roger Stone Trial
Jurors have reached a verdict in the trial of Roger Stone, a longtime friend and ally of President Donald Trump who was charged with lying to Congress and witness tampering.
The verdict came Friday, two hours after the jury began its second day of deliberations.
Stone was indicted in January as part of special counsel Robert Mueller's investigation into Russian election tampering. Prosecutors alleged he lied to lawmakers about WikiLeaks, tampered with witnesses and obstructed a House intelligence committee probe.
His trial highlighted how Trump campaign associates were eager to gather information about emails the U.S. says were hacked by Russia and then provided to WikiLeaks. Stone was regarded as an "access point" to WikiLeaks and frequently boasted of having insider access to WikiLeaks founder Julian Assange.
He has denied the allegations.


Implemented by Allegheny professor and students and designed for use with GitHub, GitHub
Classroom , Travis CI , and Gradle , GatorGrader is an automated assessment tool that checks the
work of programmers and writers. While other tools already exist to, for instance, enforce a style
guide for source code or build a program, GatorGrader focuses on automating the checks and
activities that are not already nicely supported. For example, GatorGrader can check how many
Git commits a student or a team performed during the completion of an assignment. Along with
checking for the existence of files, the tool can also count a wide variety of entities in a project
submission, including words and paragraphs in technical writing, comments in source code, and
fragments in either source code or program output.
The tool originally used Regex to count paragraphs in technical writing. Although using Regex
was feasible, there were some errors when catching paragraphs (there were ways to make the
check fail that should be possible). As such, my team was responsible for enhancing that part of
the tool. As part of the enhancement my team and I did, we used an ast, CommonMark, to
implement a general purpose Markdown parser. In result of the work done by my team and I,
GatorGrader now uses CommonMark to count paragraphs. We also updated the documentation
of the tool to allow new users to understand what the key features are.
Throughout the process of enhancing the project, I had learned a lot of new tools and ways on
working in a team. I was also able to learn to collaborate with my team. Although we didn't meet
as often as we probably should have, this gave me a new perspective on how teamwork can work
outside of group meetings. Because of the unorthodox meeting schedule, I learned to be able to
effectively communicate over group and individual messages.


This Text Inserted from File doc/html/overview.html ============================= RecHitD ============================= author: Stoyan Stoynev, NU This rechit builder uses much of the code (a copy) from RecHitB. The substantial difference is that no Gatti fitting is applied for strip hit coordinate (and error) estimation. However the Gatti distribution is virtually used. Step one: A position estimator called X_Florida is used for initial position estimation. Three charges from the three adjacent strips are the input. These are charges from three time bins summed. Besides, every charge in a time bin is XTalk corrected (see CSCXonStrip_MatchGatti::setupMatrix()). No negative charges are allowed after the XTalk correction! X_Florida = (RightCharge - LeftCharge)/(CentralCharge - min(Left, Right)) Step two: A correction to X_Florida is made. It depends on the strip width and X_Florida itself. These corrections are parametrized in HardCodedCorrectionInitialization.cc. A linear interpolation is applied between points. The corrections are obtained in the following way. The gatti distribution (induced charge distribution) is generated for specific strip width. Then for a given offset (simulating the hit offset from the center of the strip) the charges for the three strips are extracted and X_Florida is calculated. The initial offset is in fact X_Gatti (the maximum of the distribution is at X_Gatti by definition), i.e. the position within the strip as predicted by the Gatti distribution. The correction is Correction = X_Gatti - X_Florida (there are no ambiguities) or in other words - the correction that should be applied to X_Florida in order to obtain X_Gatti. Thus the corrected X_Florida is effectively X_Gatti. In reality various systematic factors make this only an approximation (which is also true when we use a real Gatti fitting!). Step three: The uncertainty of the position is calculated by error propagation. Studies show that three factors play a role: Noise, XTalk asymmetry (or similar effects), constant term. These three factors should be obtained by studies. Note: The theoretical Gatti distribution depends on chamber parameters (of course). For all but ME1/1 chambers the relevant parameters are practically the same. So there are two types of corrections: for ME1/1 chambers and for non-ME1/1 chambers. All are encoded in HardCodedCorrectionInitialization.cc.
| Status : |


Support
Login
Sign in
Whoops!
Either your username or password were incorrect. Please try again. or
try resetting your password.
×
Reset Password
Please enter the email associated with your account
Thank you, a password reset email has been sent
No account was found with the specified email.
Try again


Gerhard Fischer
Unread
"Partial but critical feedback in design is provided by the 'back-talk of the situation'" [credited to Schoen 83]
"designers can become aware of a breakdown. This awareness is triggered by evaluation and appreciation of the current design stage (artifact) in tenns of the task at hand (goal). The evaluation is done either by the designers themselves. or by outside agents"
"The domain orientation of our environments allows us to capture breakdowns as they occur in the problem domain in which designers may violate design principles by overlooking them or being unaware of them, or may violate unknown and unarticulated constraints." [constraint concepts credited to Lee 92 - a book by a TV news anchor about 'the computer crisis' - when software design issues have real-world consequences] £ directly underpins Reconciliation
Referenced from Fischer's Symmetry of Ignorance paper to explain the concept of breakdown.


fit.deconvolution.Rd
Fits a deconvolution model with either Exponential or Weibull
distributions, and with or without correlation induced by adding
a frailty term. If fitting a Weibull model, need 4-element initial/lower/upper parameter vectors.
If fitting an exponential model, need 2-element initial/lower/upper parameter vectors. If correlated
,
one additional parameter is needed in both Weibull and exponential models.
fit.deconvolution(data, correlated = TRUE, parametric_distribution = "Weibull", par.init = c(1, 1, 1.1, 1, 1), par.lower = c(0.01, 0.01, 0.01, 0.11, 0.01), par.upper = c(5, 5, 5, 5, 20), epsilon = 1e-05, itnmax = 100, int.upper = Inf, optim.rel.tol = 0.001, control_list = list(subdivisions = 100, rel.tol = 0.01), method = c("nlminb"))
| data | A list of input data with named elements (see ‘Details’). |
|---|---|
| correlated | If |
| parametric_distribution | Which parametric distribution to use: 'Weibull' or 'Exponential' |
| par.init | A vector of initial parameter values |
| par.lower | A vector of lower bounds for parameters |
| par.upper | A vector of upper bounds for parameters |
| epsilon | The smallest value from which to integrate |
| itnmax | A number specifying the maximum number of iterations to |
| int.upper | The largest value from which to integrate |
| optim.rel.tol | Relative tolerance for |
| control_list | A named list of options to be passed to |
| method | A string specifying the optimization method to use in |
The data
argument is a named list with four elements that represent
the observed input data to be fit for the deconvolution model. Its elements are:
y
Observed survival at times t_y
t_y
Survival times from intermediate time point
z
Observed survival at times t_z
t_z
Survival times from initial time point
y
and t_y
must be of the same length, as do z
and z_y
.


Upcoming Events
Event 1
This is a description brief. This is a description brief. This is a description brief. This is a description brief. This is a description brief. This is a description brief.
Event 2
This us a description brief. This us a description brief. This us a description brief. This us a description brief. This us a description brief. This us a description brief.
Event 2
This us a description brief. This us a description brief. This us a description brief. This us a description brief. This us a description brief. This us a description brief.
bi) SVG. The SVG file, or so called Scalable Vector Graphics is a simple XML-based vector image format for only 2 dimensional graphics that can support interactivity and animation. SVG (Scalable Vector Graphics) is a vector image file format, and is more powerful than other file formats suitable for the web. Unlike raster formats seen in JPG, GIF, and PNG, an SVG image remains crisp and clear at any resolution or size. That’s because an SVG is drawn from mathematically declared shapes and curves, not pixels. SVG’s can be animated, support transparency, and any combinations of colors or gradients. SVG is a lossless file format like GIF and PNG, and they tend to be fairly large files when compared with other formats for the web.


The charming adventures of an analyst and his solver.
Mental meanderings about simulation and how to get stakeholders to understand the importance of randomness.
I find I have to build simulations with increasing frequency in my work and life. Usually this indicates I'm faced with one of the following situations:
Anyone familiar at all with simulation will recognize the last item as the motivating force of the entire field. Simulation models tend to take over when systems become so complex that understanding them is prohibitive in cost and time or entirely infeasible. In a simulation, the modeler can focus on individual interactions between entities while still hoping for useful output in the form of descriptive statistics.
As such, simulations are nearly always stochastic. The output of a simulation, whether it be the mean time to service upon entering a queue or the number of fish alive in a pond, is determined by a number of random inputs. It is estimated by looking at a sample of the entire, often infinite, problem space and therefore must be described in terms of mean and variance.
For me, simulation building usually follows a process roughly like this:
The reason for creating a simulation without randomness first is that it can be difficult or impossible to verify its correctness otherwise. Thus one may focus on the simulation logic first before analyzing and adding sources of randomness.
Where the procedure breaks down is after the third step. Domain experts are often happy to share their knowledge about systems to aid in designing simulations, and typically can understand the resulting abstractions. They are also invaluable in verifying simulation output. However, they are unlikely to understand why it is necessary to add randomness to a system that they already perceive as functional. Further, doing so can be just as difficult and time consuming as the initial model development and therefore requires justification.
This can be a quandary for the model builder. How does one communicate the need to incorporate randomness to decision makers who lack understanding of probability? It is trivially easy to construct simulations that use the same input parameters but yield drastically different outputs. Consider the code below, which simulates two events occurring and counts the number of times event b happens before event a.
import random
def sim_stochastic(event_a_lambda, event_b_lambda):
# Returns 0 if event A arrives first, 1 if event B arrives first
# Calculate next arrival time for each event randomly.
event_a_arrival = random.expovariate(event_a_lambda)
event_b_arrival = random.expovariate(event_b_lambda)
return 0.0 if event_a_arrival <= event_b_arrival else 1.0
def sim_deterministic(event_a_lambda, event_b_lambda):
# Returns 0 if event A arrives first, 1 if event B arrives first
# Calculate next arrival time for each event deterministically.
event_a_arrival = 1.0 / event_a_lambda
event_b_arrival = 1.0 / event_b_lambda
return 0.0 if event_a_arrival <= event_b_arrival else 1.0
if __name__ == '__main__':
event_a_lambda = 0.3
event_b_lambda = 0.5
repetitions = 10000
for sim in (sim_stochastic, sim_deterministic):
output = [
sim(event_a_lambda, event_b_lambda)
for _ in range(repetitions)
]
event_b_first = 100.0 * (sum(output) / len(output))
print('event b is first %0.1f%% of the time' % event_b_first)
Both simulations use the same input parameter, but the second one is essentially wrong as b will always happen first. In the stochastic version, we use exponential distributions for the inputs and obtain an output that verifies our basic understanding of these distributions.
event b is first 63.0% of the time
event b is first 100.0% of the time
How about you? How do you discuss the need to model a random world with decision makers?


FOR LOVE OR MONEY A film review by Jon Ridge Copyright 1993 by Jon Ridge
CAST: Michael J. Fox, Gabrielle Anwar, Anthony Higgins, Michael Tucker, Dan Hedaya, Bob Balaban (who never appeared...) DIRECTOR: Barry Sonnenfield SCREENPLAY: Mark Rosenthal, Lawrence Konner SCORE: Bruce Broughton RELEASE: October 1, 1993
I don't like movies that start off bad and end up that way, too. I don't like movies that present an audience with absolutely no redeeming values (nothing to laugh at, or cry about, or feel excited about). I don't like movies that front as something that they're not. I don't like movies like this one.
Michael J. Fox stars as Douglas Ireland, concierge at a ritzy hotel in New York. He doesn't take his work lightly--the man makes people feel useful, saves marriages, takes dogs for a walk, gives you tickets to any Broadway show you want. And Doug has a dream of creating his very own hotel, called THE DOUG, or THE RIVER HOUSE. He just needs to make a big-time money man very happy in the mean time, so that he can close a deal. To do this, he must take good care of the man's younger mistress (played by Gabrielle Anwar). The woman is beautiful, and Doug has been after her for some time now, so he gladly accepts the job and does whatever it takes to make his dream a reality.
Well, Doug falls in love with her (big surprise, huh?). The only problem is, he can't act on his feelings for risk of crushing his dream. Ah, what's a man to do...? I knew what would happen. In fact, I knew everything about this movie within the first ten minutes it played. FOR LOVE OR MONEY is an exercise in just how predictable and utterly worthless a comedy--or *movie*, in general--can be. It isn't funny, or romantic, or engaging, or surprising, or original in any way. Fox acts with some sort of smirk on his mug the whole time, and basically looks rather bored throughout the movie. The usually strong supporting "love interest" that should have backed him up--or, in this case, sufficed for him--is played by an enigmatic young actress named Gabrielle Anwar. We saw her briefly in SCENT OF A WOMAN, doing the tango with Al Pacino, but got nothing, no sort of impression, from her little screen time in the film. I guess FOR LOVE OR MONEY came to her in the wake of the success of that movie, she read over the screen play, and said, "Yeah, i should probably do this so I can work some more and survive in this business." It's just too bad for her that the script, by two different people, has *no* luster about it whatsoever.
And what about Michael J. Fox? What's his problem? I know he can be funny, I saw it in BACK TO THE FUTURE 1, 2, and 3. I know he can be dramatic, I saw that in CASUALTIES OF WAR. But lately, things just don't seem to be working out for him (first LIFE WITH MIKEY, and now this?). His character of concierge here is pretty much a nice guy-- but that's it. He's extremely shallow in the movie, and isn't able to give his character the gravity it so desperately needs.
I didn't want to give this movie a bad review--I hate doing that for *any* film. But the disappointing fact is: Bad movies often are written, and cast, and filmed. FOR LOVE OR MONEY should've stopped on the first level, been trashed, and then rewritten until it could make us care about it.
What we have here is an excruciatingly unnecessary film.
CRITICAL RATING: (1/2)* Rated PG-13, for very mild Profanity -- Running Time: 1:33m
.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Configure hardware timer 0 for use as the mica family's millisecond timer. This component does not follow the TEP102 HAL guidelines as there is only one compare register for timer 0, which is used to implement HilTimerMilliC. Hence it isn't useful to expose an AlarmMilliC or CounterMillIC component.


Anurag Katakkar
I am a Deep Learning Engineer at Matroid. Previously, I was a Deep Learning Software Engineer at NVIDIA, where I worked on the TensorRT Team.
Before that, I graduated from Carnegie Mellon University with a Master of Science in Computational Data Science. I was advised by Alan W Black, and Eric Nyberg.
My primary research area is Speech Processing. Specifically, I'm interested in modeling speech directly from waveforms/spectrograms. Towards that goal, I'm interested in exploring self-supervised learning based approaches. I also care about the applications of speech technology to social good and recently organized the Speech for Social Good Workshop (S4SG) at Interspeech 2022.
I'm also broadly interested in building efficient Machine Learning Systems - through algorthmic breakthroughs and better software for machine learning.
News
My paper was accepted at the Blackbox NLP workshop at EMNLP 2022! (Practical Benefits of Feature Feedback Under Distribution Shift, pdf)
Started working as a Deep Learning Engineer at Matroid!
Organized the Speech for Social Good Workshop at Interspeech 2022
Towards Language Modelling in the Speech Domain Using Sub-word Linguistic Units is now available on arXiv.
My paper Practical Benefits of Feature Feedback Under Distribution Shift is now available on arXiv.
I've started working as a Deep Learning Software Engineer, TensorRT, at NVIDIA!
Graduated from CMU with a Master's in Computational Data Science!


class PersonSelectorHelper
A helper class to display a Person on a TextInputEditText, and allowing it to be changed through click then dialog.
PersonSelectorHelper(context: Context, textInputEditText: TextInputEditText)
A helper class to display a Person on a TextInputEditText, and allowing it to be changed through click then dialog. |
val context: Context
context from the activity/fragment |
|
var onClickEnabled: Boolean
Disables a reaction to the selector (textInputEditText) being clicked. This prevents the person selector dialog being shown (so a person cannot be changed). |
|
var onCreateNewPerson: (dialog: DialogInterface, which: Int) -> Unit
Function to be invoked when the user clicks the "Create new" button in the dialog. |
|
var person: Person?
The Person being displayed. This is null if no person has been selected. |
|
val textInputEditText: TextInputEditText
the TextInputEditText being used for the person picker |
fun createPersonSelector(dialog: AlertDialog): RecyclerView
Returns the View used for the displaying a list of all people. |
|
fun setupOnClickListener(): Unit |


Culture: Dealing with Conflict Exercise
Apr 6th, 2014
Whether it be in a team setting or buyer/seller relationship, there are many situations that can be interpreted as 'conflict'. In any time there is a transaction between two or more parties, a difference in opinion may occur. In those situations, when one feels threatened or compromised, I think it's easy for things to turn into a conflict.
Without going into specifics, as long as people interact with each other there will always be some sort of conflict. My view is that to conflict is a conscious choice, and we can make better choices to avoid it altogether. In the cases where it cannot be avoided, both parties need to make effort to clearly articulate their position and the conflict should not turn into a one-sided attack.
The trap I have fallen into a few times is when a conflict is already in progress, I tend to just give in to the other party in situations where fighting back is not worth my time and effort. As a result, I can end up compromising more often. In general, this approach has worked in the long term - if it is a good relationship, I can ask the other party to make concessions on another day in the future, if I compromise on something today. However, it is frustrating that there are certain personalities out there that will take advantage and try to 'win' in every conflict. I choose not to conflict at all with that category, although I do sometimes think it would be a better world if those type of personalities lost in their conflicts more often.


#assign n0_docs="active"> <#assign n1_platforms="active"> <#assign n2_cockroach="active">
To test against Cockroach docker test container set the platform to cockroach
in
src/test/resources/application-test.yaml
Refer to docs / testing if application-test.yaml doesn't exist yet.
```yml ebean: test: platform: cockroach #, h2, postgres, mysql, oracle, sqlserver ddlMode: dropCreate # none | dropCreate | migrations | create dbName: test ``` <@next_edit "NuoDB" "/docs/database/nuodb" "/docs/database/cockroach/index.html"/>