Use
make help
to show the available make targets.
make help
make docker-build
make init-data
# The docker images built above don't support CUDA.
# This is unfortunate, but necessary, as the GPT-2 model doesn't fit on my GTX 1080.
# Training on my CPU takes 4.5 hours.
make CONFIG=data/models/gpt2/gpt2.jsonc train
make CONFIG=data/models/gpt2/gpt2.jsonc generate
The
make docker-build
target build
two
images:
notgnoshi/research
and
notgnoshi/api
. The research image is where the data preprocessing, model training, and exploratory analysis are
performed. It's about 3.2 GB. The API image is a bit smaller, at 2 GB, and adds the necessary
dependencies to
tiangolo/uvicorn-gunicorn-fastapi
to run the REST API for generation.
Unfortunately, I did not keep track of which haiku came from where, and for the sources that provided it, who the author was. If I were to start over, I would be sure to do so, despite the additional complexity of scraping the author from the haiku websites. I believe that having the author and source in the dataset could enable deeper analysis, and would enable others to use the same dataset for their own purposes.
I collected haiku from the following sources:
There were other sources, particularly PDF haiku anthologies, but I do not recall which specifically. Collecting the haiku corpus was particularly difficult, because there often was not a consistent markup used for the haiku. I spent many hours manually cleaning the scraped "haiku", and the corpus was therefore collected in fragments as I found new sources.
I had to clean:
&
and
I was able to scrape together 55367 haiku, available here . The linked CSV file also contains the number of lines in each haiku, the number of syllables per line, the total number of syllables, and any colors referenced in the haiku.
The preprocessing step used to create
haiku.csv
from
haiku.txt
does the following:
/
Unfortunately, there's a wide range in variability in the number of lines and the number of syllables in the haiku. This is a consequence of using haiku enthusiast websites, many of which include other poetic forms, and don't always strictly adhere to the 5-7-5 form traditionally associated with haiku. See Syllables for a discussion of the wide variability.
I developed three models for training. Use one of
make CONFIG=data/models/gpt2/gpt2.jsonc train
make CONFIG=data/models/markov-word/markov-word.jsonc train
make CONFIG=data/models/markov-character/markov-character train
The two markov models were expected to perform poorly, and were used to flesh out some of the supporting
glue code before I turned my attention to GPT-2. The makefile will default to using GPT-2 if the
CONFIG
argument is not given.
There are
many
options in
gpt2.jsonc
that you can tweak.
{
"name": "gpt2-default",
"type": "transformer",
// If type is "transformer", specify which model to use. Options: "gpt", "gpt2"
"model_type": "gpt2",
// A uint32_t random seed.
"seed": null,
// Batch size per GPU/CPU.
"batch_size": 4,
// Number of update steps to accumulate before performings a backward/update pass.
"gradient_accumulation_steps": 1,
"learning_rate": 5e-5,
"weight_decay": 0.0,
"adam_epsilon": 1e-8,
"max_gradient_norm": 1.0,
"num_train_epochs": 1,
// Maximum number of training steps to perform, if set. Overrides "num_train_epochs"
"max_steps": null,
// Use a linear warmpup over n steps.
"warmup_steps": 0,
// Proportion of the training set to use as evaluation data.
"evaluation_proportion": 0.1,
// Run model evaluation at each logging step.
"evaluate_during_training": true,
// Log every n steps.
"logging_steps": 1000,
// Save a restorable checkpoint ever n steps.
"checkpoint_steps": 1000,
// Restore and resume training from the given checkpoint, if given.
// Path to the checkpoint directory is relative to this file.
"resume_training_from": null,
// Number of checkpoints to save. Oldest deleted first.
"max_checkpoints": null,
// Path to save any generated haiku relative to this file.
"generated_path": "../../generated.csv",
// Maximum number of tokens to generate.
"max_tokens": 20,
// The prompt to use to generate haiku. String, if not given, random prompt will be chosen.
"prompt": null,
// The number of haiku to generate with the above prompt.
"number": 10,
// The temperature to sample the next token probability distribution. Must be positive.
"temperature": 1.0,
// Repetition penalty parameter. Between 1.0 (no penalty) and infinity.
"repetition_penalty": 1.0,
// The number of highest probability vocabulary tokens to keep for top-k filtering. Between 1 and infinity.
"k": 0,
// The cumulative probability of parameter highest probability vocabulary tokens to keep for nucleus sampling. Between 0 and 1.
"p": 0.9
}
These options are for both training and generation. Should I do this again, I think I would pick another configuration option, and this is fairly verbose and clunky. I wanted a single interface to multiple language models with the same script, so that precludes commandline options without a lot of additional complexity, but I think that would be the way to procede should I do something similar in the future.
Tune the generation parameters in
gpt2.jsonc
to your preferences, and run
make generate
. This will print the haiku to the screen, and append them to
data/generated.csv
.
Run either
make api-dev
or
make api
to run the FastAPI endpoint. It was pleasantly straightforward to integrate this FastAPI container with
an Nginx proxy so that I could host it on this website with minimal effort.
make api-dev
is almost the same as
make api
, except that it monitors
app/main.py
for modifications, and restarts the API service if changes are detected.
See https://agill.xyz/docs for documentation describing the API endpoint, and visit https://agill.xyz/generate to generate your own haiku.


CRACK: 00/00
LEVEL 0
SOUND: OFF
NewsBlast24: All the news. All of it.
Mayor's Quest
Arrow keys move, R restarts, S toggles sound.
Collect crack and flee to the 401.
Dodge streetcars, or push them around and crush cyclists and smartphones.
Don't sue. Please don't sue.


close
Online Banking Login
Institutionnal Banking
Financial Institutions
Public Funds
Treasury Management
Title Services
Wealth Management
Commercial Banking
Commercial Lending
Commercial Real Estate Lending
Financial Institutions
Treasury Management
Agency Services
Mortgage Banking
Wholesale and Correspondent Lending
Warehouse Lending
Become a Client
About
Contact
Tw
·
Gh
·
Made by
Louis Grasset


process surface Singh composites matrix FDM casting input Table dimensional parameters {border-style investment Mater. density mathematical px;} using #ffffff;} accuracy Figure (F) Eng. Sci. hardness modelling obtained order roughness aluminium output "π" Equation Further, pattern patterns prepared reinforced (W) (t) as: based metal Technol. deposition equations mechanical parameter present px; {font-family ./s--- Buckingham Int. Low Solid barrel filament finishing font-size fused hardness, high media produced regression significant ./S-()- Dimensional High Manuf. Mech. S.S., Surface [], analysis average composite considered develop dimensions double; equation final https://orcid.org/--- level mould properties second used values (ρ) ABS Appendix Based Materials N/mm Process. Taguchi aluminum assisted border-color border-width developed different dimensionless given levels manufacturing method number orthogonal reinforcements sacrificial set slurry solid; thickness weight written {font-style {font-weight (L) (ML (T) AMCs C.P., Hardness M.H. S/N Then, accuracy, adopted as; associated basic bold castings characteristics courier; cycle em; experiment finish function get, help in-terms instance, layers material model model. models parameters. pattern, physical plotted process. production proportion, pt;} range re-written refer reinforcement respectively. results significance studies units wall wear work, zero:


--- layout: post title: "About" author: "trilliwon" permalink: /about/ ---
Hi, I am Won. I have been writing here what I learned.


The pipe on river right is used by the Georgia Department of Natural Resources to sluice trout into the river. The state annually stocks approximately 200,000 rainbow, brown, and on occasion, even brook trout between Buford Dam and the Paces Mill Unit of the Chattahoochee River National Recreation Area.


I'm happy to announce the availability of Outbrain's Orchestrator: MySQL replication management & visualization tool.
- Orchestrator reads your replication topologies (give it one server - be it master or slave - in each topology, and it will reveal the rest).
- It keeps a state of this topology.
- It can continuously poll your servers to get an up to date topology map.
- It visualizes the topology in a clear and slick D3 tree.
- It allows you to modify your topology; move slaves around. You can use the command line variation, the JSON API, or you can use the web interface.
Quick links: Orchestrator Manual, FAQ, Downloads
Nothing like nice screenshots
To move slaves around the topology (repoint a slave to a different master) through orchestrator's web interface, we use Drag and Drop,
just
like
that.
Safety
Orchestrator keeps you safe. It does so by:
- Correctly calculating the binary log files & positions (aka coordinates) of the slave you're moving, its current master, its new master; it properly stops, starts and stalls your replication till everything is in sync.
- Helping you to avoid shooting yourself in the leg. It will not allow moving a slave that uses STATEMENT based replication under a ROW based replication server. Or a 5.5 under a 5.6. Or anything under a server that doesn't have binary logs. Or log_slave_updates. Or if one of the servers involed lags too much. Or more...
Visualization
It also points out a few problems, visually. While it is not - and will not be - a monitoring tool, it requires some replication status info for its own purposes. Too much lag? Replication not working? Server cannot be accessed? Server under maintenance? This all shows up in your topology. We use it a lot to get a holistic view over our current replication topologies status.
State
Orchestrator keeps the state of your topologies. Unlike other tools that will drill down from the master and just pick up on whatever's connected right now, orchestrator remembers what used to be connected, too. If a slave is not replicating at this very moment, that does not mean it's not part of the topology. Same for a MySQL service that has been temporarily stopped. And this includes all their slaves, if any. Until told otherwise (or until too much time passes and a server is assumed dead), orchestrator keeps the map intact.
Maintenance
Orchestrator supports a maintenance-mode state; it's a flag saying "this server is in maintenance mode right now". But this flag includes an owner and a reason for audit purposes. And while a server is under maintenance, orchestrator will disallow replication topology changes that include this server.
Audit
Operations performed via orchestrator are audited (well, almost all). You have a complete history on what slave has been moved from where to where; what server has been taken under maintenance and when, etc.
Automation
The most important thing is of course automating error-prone human sequences of actions. Repointing slaves is a mess (when you don't have GTIDs). Automation saves time and greatly reduces the possibility that something goes wrong (of course never eliminates). We happen to use orchestrator at Outbrain on production, and twice in the past month had major events where orchestrator saved us many hours and worry.
Support
Orchestrator supports "standard" replication: log file:pos kind of replication. Non GTID, non-parallel. Good (?) old replication.
To quickly explain why not GTID: we're using MySQL 5.5. We've had issues while evaluating 5.6; and besides, migrating to GTID is a mess (several solutions or proposed solutions seem to exist). On April's Percona Live event, I realized only a few companies actually use MySQL 5.6, and a few of these use GTID. We're not doing GTID (yet), as much as we would want to. Not there yet.
Read the FAQ for further questions on supported replication technologies.
How do you like it?
Orchestrator can run as a command line tool (no need for Web). It can server HTTP JSON API (no need for visualization) or it can server as HTTP web interface (no need to use command line options). Have it your way.
The technology stack
Orchestrator is written in Go, with Martini as web framework; MySQL as backend database; D3, jQuery & bootstrap for frontend.
License
Orchestrator is released as open source under the Apache 2.0 license and is available at: https://github.com/outbrain/orchestrator
Documentation
Read the Manual
Download
Get the bundled binary+web files tarball, RPM or DEB packages. Or just clone the project. It's free.
comments powered by Disqus


Registration Form
First Name
This field is required
Last Name
This field is required
Phone Number
This field is required
Minimum 10 digits
State
Select State
Andhra Pradesh
Arunachal Pradesh
Assam
Bihar
Chhattisgarh
Goa
Gujarat
Haryana
Himachal Pradesh
Jammu and Kashmir
Jharkhand
Karnataka
Kerala
Madhya Pradesh
Maharashtra
Manipur
Meghalaya
Mizoram
Nagaland
Odisha
Punjab
Rajasthan
Sikkim
Tamil Nadu
Telangana
Tripura
Uttar Pradesh
Uttarakhand
West Bengal
This field is required
Email
This field is required
Email address invalid
Password
This field is required
Minimum 6 characters
Confirm Password
This field is required
All fields are compulsory
Submit
Submitted Successfully


На цих сторінках ви можете пройти тренінг на тему Кодексу поведінки групи Can-Pack із прикладами, поясненнями та сценаріями. Будь ласка, уважно ознайомтеся з ним і виконайте завдання. Тренінг не є довгим, проте пояснює чимало понять, які нам, як працівникам і представникам Can-Pack, потрібно розуміти та застосовувати. Ми ретельно працювали над змістом Кодексу, враховуючи зауваження багатьох працівників. Однак лише наші реальні дії надають Кодексу справжнього значення та роблять його чимось більшим, аніж просто формальністю. Ми маємо щирий намір неухильно дотримуватися Кодексу поведінки групи Can Pack із Вашою допомогою. Na tych stronach znajdziecie szkolenie z Kodeksu Postępowania Grupy Can Pack, wraz z przykładami wyjaśnieniami i instrukcjami. Zapoznajcie się z nimi uważnie i ukończcie szkolenie. Nie jest ono długie, ale zawiera wiele pojęć, które wszyscy musimy zrozumieć i stosować jako pracownicy i przedstawiciele Grupy Can-Pack. Kodeks Postępowania opisuje ramy etyczne, które ustaliliśmy dla siebie. Dobieraliśmy słowa Kodeksu, biorąc pod uwagę sugestie wielu pracowników. Niemniej to nasze działania nadają Kodeksowi Postępowania znaczenie i sprawiają że to coś więcej niż formalność. Naszą szczerą intencją jest waszą pomocą przestrzegać Kodeksu Postępowania Grupy Can Pack
Jeśli nie otrzymałeś wydrukowanego Kodeksu Postępowania, możesz pobrać pełny tekst w różnych wersjach językowych z sekcji pobierania. Aby ukończyć szkolenie, wybierz opcję "Kodeks Postępowania" w ramach moich kursów - znajdziesz tam szczegółowe instrukcje. Możesz też zapoznać się z przygotowanymi dla poszczególnych państw instrukcjami dla procedury Can-Pack Speak-UP w sekcji "Moje kursy" lub pobrać je z sekcji pobierania. Якщо Ви ще не отримали друкований примірник Кодексу поведінки, Ви можете завантажити повну версію доступними мовами в розділі завантажень на сайті. Щоб пройти тренінг, виберіть пункт «Кодекс поведінки» в переліку «Мої курси». Там також подано детальні інструкції. Також Ви можете переглянути спеціальні інструкції стосовно Процедури повідомлення про порушення (Speak-Up) групи Can-Pack для окремих країн у переліку «Мої курси» або завантажити їх в розділі завантажень.
On these pages, you will find the Can-Pack group Code of Conduct training, with examples, explanations and scenarios. Please study it carefully, and complete this training. It is not long, yet it includes many concepts that we all need to understand and apply as employees and representatives of Can-Pack. The Code of Conduct describes the ethical framework that we have set for ourselves. We have selected the words of the Code carefully, with input from many employees. But it is our actions that give the Code of Conduct meaning, make it more than a formality. We sincerely intend, with your help, to follow the Can Pack Group Code of Conduct. On these pages, you will find the Can-Pack group Code of Conduct training, with examples, explanations and scenarios. Please study it carefully, and complete this training. It is not long, yet it includes many concepts that we all need to understand and apply as employees and representatives of Can-Pack. The Code of Conduct describes the ethical framework that we have set for ourselves. We have selected the words of the Code carefully, with input from many employees. But it is our actions that give the Code of Conduct meaning, make it more than a formality. We sincerely intend, with your help, to follow the Can Pack Group Code of Conduct. On these pages, you will find the Can-Pack group Code of Conduct training, with examples, explanations and scenarios. Please study it carefully, and complete this training. It is not long, yet it includes many concepts that we all need to understand and apply as employees and representatives of Can-Pack. The Code of Conduct describes the ethical framework that we have set for ourselves. We have selected the words of the Code carefully, with input from many employees. But it is our actions that give the Code of Conduct meaning, make it more than a formality. We sincerely intend, with your help, to follow the Can Pack Group Code of Conduct. On these pages, you will find the Can-Pack group Code of Conduct training, with examples, explanations and scenarios. Please study it carefully, and complete this training. It is not long, yet it includes many concepts that we all need to understand and apply as employees and representatives of Can-Pack. The Code of Conduct describes the ethical framework that we have set for ourselves. We have selected the words of the Code carefully, with input from many employees. But it is our actions that give the Code of Conduct meaning, make it more than a formality. We sincerely intend, with your help, to follow the Can Pack Group Code of Conduct. On these pages, you will find the Can-Pack group Code of Conduct training, with examples, explanations and scenarios. Please study it carefully, and complete this training. It is not long, yet it includes many concepts that we all need to understand and apply as employees and representatives of Can-Pack. The Code of Conduct describes the ethical framework that we have set for ourselves. We have selected the words of the Code carefully, with input from many employees. But it is our actions that give the Code of Conduct meaning, make it more than a formality. We sincerely intend, with your help, to follow the Can Pack Group Code of Conduct. On these pages, you will find the Can-Pack group Code of Conduct training, with examples, explanations and scenarios. Please study it carefully, and complete this training. It is not long, yet it includes many concepts that we all need to understand and apply as employees and representatives of Can-Pack. The Code of Conduct describes the ethical framework that we have set for ourselves. We have selected the words of the Code carefully, with input from many employees. But it is our actions that give the Code of Conduct meaning, make it more than a formality. We sincerely intend, with your help, to follow the Can Pack Group Code of Conduct. On these pages, you will find the Can-Pack group Code of Conduct training, with examples, explanations and scenarios. Please study it carefully, and complete this training. It is not long, yet it includes many concepts that we all need to understand and apply as employees and representatives of Can-Pack. The Code of Conduct describes the ethical framework that we have set for ourselves. We have selected the words of the Code carefully, with input from many employees. But it is our actions that give the Code of Conduct meaning, make it more than a formality. We sincerely intend, with your help, to follow the Can Pack Group Code of Conduct. On these pages, you will find the Can-Pack group Code of Conduct training, with examples, explanations and scenarios. Please study it carefully, and complete this training. It is not long, yet it includes many concepts that we all need to understand and apply as employees and representatives of Can-Pack. The Code of Conduct describes the ethical framework that we have set for ourselves. We have selected the words of the Code carefully, with input from many employees. But it is our actions that give the Code of Conduct meaning, make it more than a formality. We sincerely intend, with your help, to follow the Can Pack Group Code of Conduct. On these pages, you will find the Can-Pack group Code of Conduct training, with examples, explanations and scenarios. Please study it carefully, and complete this training. It is not long, yet it includes many concepts that we all need to understand and apply as employees and representatives of Can-Pack. The Code of Conduct describes the ethical framework that we have set for ourselves. We have selected the words of the Code carefully, with input from many employees. But it is our actions that give the Code of Conduct meaning, make it more than a formality. We sincerely intend, with your help, to follow the Can Pack Group Code of Conduct.
If you have not received a printed Code of Conduct, you can download the full text in the available languages from the download section. To complete the training, select ”Code of Conduct” under my courses – you will find detailed instructions there as well. You can also review country-specific instructions for the Can-Pack Speak-Up under “My courses”, or download them from the download section. If you have not received a printed Code of Conduct, you can download the full text in the available languages from the download section. To complete the training, select ”Code of Conduct” under my courses – you will find detailed instructions there as well. You can also review country-specific instructions for the Can-Pack Speak-Up under “My courses”, or download them from the download section. If you have not received a printed Code of Conduct, you can download the full text in the available languages from the download section. To complete the training, select ”Code of Conduct” under my courses – you will find detailed instructions there as well. You can also review country-specific instructions for the Can-Pack Speak-Up under “My courses”, or download them from the download section. If you have not received a printed Code of Conduct, you can download the full text in the available languages from the download section. To complete the training, select ”Code of Conduct” under my courses – you will find detailed instructions there as well. You can also review country-specific instructions for the Can-Pack Speak-Up under “My courses”, or download them from the download section. If you have not received a printed Code of Conduct, you can download the full text in the available languages from the download section. To complete the training, select ”Code of Conduct” under my courses – you will find detailed instructions there as well. You can also review country-specific instructions for the Can-Pack Speak-Up under “My courses”, or download them from the download section. If you have not received a printed Code of Conduct, you can download the full text in the available languages from the download section. To complete the training, select ”Code of Conduct” under my courses – you will find detailed instructions there as well. You can also review country-specific instructions for the Can-Pack Speak-Up under “My courses”, or download them from the download section. If you have not received a printed Code of Conduct, you can download the full text in the available languages from the download section. To complete the training, select ”Code of Conduct” under my courses – you will find detailed instructions there as well. You can also review country-specific instructions for the Can-Pack Speak-Up under “My courses”, or download them from the download section. If you have not received a printed Code of Conduct, you can download the full text in the available languages from the download section. To complete the training, select ”Code of Conduct” under my courses – you will find detailed instructions there as well. You can also review country-specific instructions for the Can-Pack Speak-Up under “My courses”, or download them from the download section. If you have not received a printed Code of Conduct, you can download the full text in the available languages from the download section. To complete the training, select ”Code of Conduct” under my courses – you will find detailed instructions there as well. You can also review country-specific instructions for the Can-Pack Speak-Up under “My courses”, or download them from the download section.


The shift() method removes the first element of an array (and "shifts" all other elements to the left):
The shift() method returns the element that was shifted out:
The unshift() method adds new elements to the beginning of an array.
The unshift() method returns the new array length:
Note: The unshift() method does not work properly in Internet Explorer 8 and earlier, the values will be inserted, but the return value will be undefined.
Array elements are accessed using their index number:
The length property provides an easy way to append new elements to an array without using the push() method:
Deleting elements leaves undefined holes in an array:
The splice() method adds new elements to an array:
The splice() methods can be used to remove array elements:


{{organization?.address1}}
{{organization?.address2}}
{{organization?.city + ", " + organization?.state + " " +organization?.zip}}
{{organization?.country}}
{{organization?.contact_name}}
{{organization?.contact_phone}}
{{organization?.contact_email}}


Election campaign turns nasty: Labour activist 'PUNCHES Matt Hancock's adviser at Leeds hospital where sick boy, four, was pictured lying on floor' - hours after Boris Johnson was confronted with the image by ITV reporter
by James Tapsfield, Political Editor For Mailonline- Jack Williment-Barr taken to Leeds General Infirmary by ambulance last week
- However he was then left in a clinical treatment room as there were no beds
- He spent the night lying on a pile of coats, attached to an oxygen mask
- The department was experiencing its busiest week since April 2016
- Matt Hancock was senty
An aide to Matt Hancock was alleged punched by a Labour activist as the Health Secretary visited a hospital at the centre of a storm about a sick child who was forced to lie on the floor while he waited for treatment.
Mr Hancock was sent to Leeds General Infirmary in a bid to defuse a row after a photograph of the four-year-old boy was widely publicised.
But Mr Hancock was apparently met at the hospital by Labour activists and his arrival descended into an ugly scene with reports that one of his advisers was assaulted.
It comes after Boris Johnson bizarrely took a reporter's phone and put it in his pocket after he was confronted over the picture.
The PM took evasive action despite apologising to the family of Jack Williment-Barr, who was taken to Leeds General Infirmary by ambulance last week with suspected pneumonia.
As there were no beds and the department was experiencing its busiest week since 2016, he was left lying on a pile of coats in a clinical treatment room, attached to an oxygen mask. The child was later diagnosed with flu and tonsillitis.
Speaking on the election trail in the north of England today, the Prime Minister said sorry and pointed to the huge investment being pledged by the Tories.
But when ITV reporter Jo Pike tried to show him the picture of the boy on his phone, Mr Johnson declined to look at it. He eventually took the device and put it in his pocket,
When Pike described what the premier had done, Mr Johnson retrieved the mobile and did inspect the picture.
'It's a terrible, terrible photo. And I apologise obviously to the families and all those who have terrible experiences in the NHS,' he said.
'But what we are doing is supporting the NHS, and on the whole I think patients in the NHS have a much, much better experience than this poor kid has had.
'That's why we're making huge investments into the NHS, and we can only do it if we get Parliament going, if we unblock the current deadlock, and we move forward.'
At the end of the interview, Mr Johnson said: 'I'm sorry to have taken your phone. There you go.'
The odd exchange was seized on by Jeremy Corbyn, who insisted it showed that Mr Johnson did not care about patients.
Mr Johnson was also grilled on the interview as he answered questions from journalists at the event in Sunderland.
He replied: 'We are not only investing in children's services in Leeds but we're also rebuilding the whole Leeds Infirmary from top to bottom.
'And we can do that because we're now putting the biggest ever investment into the NHS.
'What I don't want to see is a fantastic programme that is going to unite and level up our country being blocked again.'
'I am very proud of what we are doing to rebuild Leeds General Infirmary. It will be a fantastic project,' he said.
In Grimsby earlier, Mr Johnson was asked if he had an apology for the family.
He said: 'Yeah, I do, and this is exactly why we need to move on.
'We're putting £34billion into the NHS now, this is the biggest investment we've seen in modern times but we need to drive it forward.'
Mr Johnson said there is 'so much more that needs to be done', adding: 'That is why we just need to unblock the politics of this country and move forward.'
Speaking to LBC the Prime Minister said he wanted to apologise to 'everyone who has a bad experience'.
The Prime Minister added: 'By and large I think the NHS do an amazing job, and I think they deserve all praise for the service they provide.
'But they do need investment and that's why we're doing it now.
'But they need investment from a One Nation government that really cares and understands - that's us that cares and understands - and you need long-term funding.'
Mother Sarah Williment, a primary school assistant from Leeds, described the situation as a 'crisis'.
She said: '[Jack] spent eight-and-a-half hours in A&E... Jack wasn't provided with a bed on a ward until 13-and-a-half hours later.'
Jack was eventually diagnosed with influenza A and tonsillitis.
Health Secretary Matt Hancock thanked 'tireless' hospital staff, adding: 'Leeds has been allocated £600million of funding as part of our commitment to build 40 new hospitals.'
One-fifth of patients in A&E must wait more than 12 hours for a bed, experts claim
More than 1 in 20 patients who went to A&E last week waited at least 12 hours for a bed, experts have claimed.
All patients are supposed to be seen within a target of four hours, but thousands are being 'stranded on a trolley in a corridor' as the NHS faces its worst winter crisis in history.
The Royal College of Emergency Medicine (RCEM) analysed data from 50 A&E departments which provide around one third of the UK's acute hospital beds.
Its report shows in the first week of December, some 5,171 of the 103,099 patients who attended these hospitals were stuck in A&E for more than 12 hours.
Only 68 per cent of patients were seen within the target of four hours – the worst performance on record and 10 per cent lower than the same point last year.
In recent days there has been chaos at A&E departments, with dozens of ambulances queuing outside hospitals because hospital beds were unavailable.
The crisis was made worse by a norovirus outbreak that closed more than 1,100 beds last week.
The RCEM's Dr Katherine Henderson said: 'Many patients are now getting often life-changing news while stranded on a trolley in a corridor.
'This cannot be right, and we must strive to put an end to 'corridor care'. We are clearly in the worst state we've ever been in as we enter the true winter season.'
Monthly NHS figures showing the scale of the crisis will be released on Friday.
But the RCEM warns NHS reports do not reflect the true scale because A&E waiting times are measured from when a decision is made to admit a patient, rather than when they arrived.
Health Secretary Matt Hancock said: 'Our hospitals are treating a record number of people, and with increasing demand we are putting a record £33.9billion extra funding into our NHS.'


About Us
Book-A-Meal is an application that allows customers to make food orders and helps the food vendor know what the customers want to eat. The application users with admin credentials can manage meal options, setup menus for a specific day, see the orders made by other users, view the summary of daily earnings, and access order history.
A caterer can manage meal options (i.e: add, modify and delete), Setup menu for a specific day, See the orders made by the customers, See amount of money made by end of day, See order history, Add other caterers
A customer can create an account and log in, See the menu for a specific day, Select an option out of the menu. The customers can change their meal choice, see order history, and get notifications when the menu for the day has been set.


mart
Home
About us
Page
Shop
Blog
Contact us
Affordable paris tours
City tours/Tour ticket/Tour guides
New collection
Blue tshirt
26
Add to cart
Woman shirt
31
Add to cart
Yellow tshirt
21
Add to cart
Cool lingerie
56
Add to cart


---
layout: page
title: Resume
permalink: /resume/
---
Welcome to Ian's Blog!
Ian is me, an assistant professor in a university.
This blog deals with anything that flows in my mind, mainly technical issues, and is written mainly in Korean.
My interests include robotics, SLAM (simultaneous localization and mapping), VO (visual odometry), Computer Vision, Machine Learning, and Deep Learning.
If you want to contact me, send an email to "goodgodgd85 at google.com".


EYES WIDE SHUT A movie review by Joe Barlow (c) Copyright 1999
STARRING: Tom Cruise, Nicole Kidman, Sydney Pollack DIRECTOR: Stanley Kubrick WRITERS: Frederic Raphael and Stanley Kubrick RATED: R RELEASED: 1999
I really wanted to love "Eyes Wide Shut," the much-hyped final film from the the late Stanley Kubrick. I'd hoped to use this review as a soapbox from which to praise and mourn one of cinema's most innovative filmmakers, and I wanted to be able to tell you that "Eyes" is a remarkable achievement, a visceral odyssey of sight and sound that would prove, like Kubrick's best work, impossible to shake. Such words would make the director's untimely death (he passed away four days after completing work on the project) even more tragic, as he appeared to be on a creative upswing: Kubrick had reportedly been gearing up for another film, a promising sci-fi thriller entitled "A.I." But now, whether he intended it or not, this final movie must forever bookend the remarkable career which began with 1953's "Fear and Desire" and progressed through such cinematic milestones as "2001: A Space Odyssey," "Spartacus," "Lolita," "The Shining," "Dr. Strangelove" and "A Clockwork Orange." Could any film possibly ascend to such lofty heights?
Preliminary signs looked good: "Eyes" has generated positive word of mouth from the handful of people who were allowed an early peek at the completed film. Even with the good buzz, however, relatively few plot details were available for the asking: a fierce veil of secrecy, reportedly instigated by Kubrick himself, has blanketed the project almost from the start. About the only details I knew going into the screening were: a) the film reportedly takes a cerebral look at sexual dysfunction; b) the movie was nearly rated NC-17 because of its nudity and depiction of sexual acts; and c) the film's stars (and real-life spouses) Tom Cruise and Nicole Kidman have plenty of opportunity to 'get jiggy' with each other on-screen. Walking into the theater, I wondered exactly what I was going to get.
So how does the movie stack up? Well, I'll put it this way: I saw the film on opening day with two of my closest friends, and our opinions covered the entire spectrum. While I had significant problems with the story, I found much of the film brilliant, overflowing with the Kubrickian touches that have made his work such indelible artistic achievements. Friend #1 was basically indifferent, citing a couple of things he enjoyed and a couple he didn't, but overall possessing no strong opinion either way.
I can understand all three viewpoints. "Eyes Wide Shut" is far from perfect and nowhere near Kubrick's best work, but I think that one's potential appreciation (I hesitate to use the word "enjoyment") of the film will depend primarily on the expectations the viewer brings into the theater. As usual, Kubrick establishes a laconic pace early-on for the story, which will unquestionably bore many viewers (never have I heard so much restless shuffling from an audience). Surreal images float dreamlike across the screen. Long passages of the film are rendered in absolute silence as the director allows our eyes, not our ears, to convey the full story. It is, in short, business as usual for a Kubrick film.
The marketing campaign is directly responsible for the disappointment and confusion many audience members feel after screening the movie.  Yes, there's a lot of on-camera sex, but it's neither erotic nor passionnate. Everyone has been objectified to the point where all desire is irradicated. People here seem to make love simply because it is expected of them, not because they have any wish to perform the action. Despite the nudity, you'll be hard-pressed to find a LESS erotic movie.
The story, in a nutshell: Bill Harford (an excellent performance by Tom Cruise) is a happily-married doctor living with his wife Alice (Nicole Kidman) and their daughter in upper-middle-class bliss. Bill's life seems perfect until Alice drops a bombshell on him, admitting that she still thinks about sex with other men despite the decade-long marriage the couple have enjoyed.
First, the good news: "Eyes Wide Shut" is constructed with the considerable technical virtuosity that Kubrick has demonstrated in nearly all his films. It boasts the loveliest cinematography I've seen in recent memory (Kubrick was a staff photographer for LOOK magazine before he embraced filmmaking, and he knew how to use lighting, angles and color to maximum effect), making the film fascinating to watch even when the pace lags. Tom Cruise turns in an Oscar-caliber performance for his role as the confused and hurt Dr. Bill. The film boasts a rich, chilling gothic atmosphere, which serves the story's tone well.
Now, the not so good: "Eyes Wide Shut," even by Kubrick standards, is excessively long and often uninvolving. The sparse musical score (consisting almost entirely of a solo piano playing two notes) is repetitive to the point of madness. (I'm sure it was done for atmosphere, but by the end of the movie the audience burst into laughter each time it appeared.) And at times, the movie seems unsure of what it's supposed to be, and what it's trying to say.
Still, even if it doesn't quite work, "Eyes Wide Shut" will likely be remembered as a great experiment gone slightly wrong. I respect Kubrick's attempt to embrace complex themes and tell an astoundingly orignal story, rather than adopting cheap cliches and formula, as so many other filmmakers choose to do. It's not a perfect film, but Kubrick afficianodos, a group I consider myself part of, will no doubt find much to like, even if these praiseworthy aspects have more to do with the film's technical elements rather than the actual storytelling. It's not the be-all, end-all Kubrick film that I'd hoped it would be, but it has much to offer the patient viewer.
Whether non-fans will like it is another question entirely. It's possible, as long as they're expecting a cerebral odyssey and not a porn movie.
BASE RATING: ** out of a possible ****
(Subtract half a star if you're not a Kubrick fan.
E-Mail<EMAIL_ADDRESS>Joe Barlow on Film: http://www.ipass.net/~jbarlow/film.htm
If you'd like to receive new film reviews by e-mail, please write to<EMAIL_ADDRESS>Sent via Deja.com http://www.deja.com/ Share what you know. Learn what you don't.
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


Provides functions for calculating and analyzing the proliferative index (PI) from an RNA-seq dataset. As described in Ramaker & Lasseigne, et al. bioRxiv, 2016 <doi:10.1101/063057>.
| Version: | 1.0.1 |
| Depends: | R (≥ 3.0.0) |
| Imports: | graphics, stats |
| Suggests: | knitr, rmarkdown |
| Published: | 2018-08-14 |
| Author: | Brittany Lasseigne [aut, cre], Ryne Ramaker [aut] |
| Maintainer: | Brittany Lasseigne <brittany.lasseigne at gmail.com> |
| License: | MIT + file LICENSE |
| NeedsCompilation: | no |
| Materials: | README |
| CRAN checks: | ProliferativeIndex results |
| Reference manual: | ProliferativeIndex.pdf |
| Vignettes: |
ProliferativeIndex Vignette |
| Package source: | ProliferativeIndex_1.0.1.tar.gz |
| Windows binaries: | r-devel: ProliferativeIndex_1.0.1.zip, r-release: ProliferativeIndex_1.0.1.zip, r-oldrel: ProliferativeIndex_1.0.1.zip |
| OS X binaries: | r-release: ProliferativeIndex_1.0.1.tgz, r-oldrel: ProliferativeIndex_1.0.1.tgz |
| Old sources: | ProliferativeIndex archive |
Please use the canonical form https://CRAN.R-project.org/package=ProliferativeIndex to link to this page.


This week was a pretty intense week of basics and fundamentals. It was also a time for me to really start to get the feel for what coding is like. We started on HTML and CSS while learning about what makes websites work the way they do. The easiest way to think about the differences between HTML and CSS is to compare it to your body. HTML is like your bones, your skeleton. It provides the frame and structure for your website. CSS is like your skin and hair and all the other good stuff on the outside that makes you look as attractive as you do. It's all the styling and details that make websites look appealing.
A couple things that stood out to me on a cultural level was the amount of repetitive adjusting and fidgeting that I needed to do to get the website looking the way that I wanted. It was simultaneously frustrating and satisfying. Frustrating in the sense that it would take 30 minutes to move something to the right one inch without breaking something else. Rewarding in the sense that it took 30 minutes and you finally figured it out. Trial and error are my friends at the moment.
One of the concepts that actually stumped me was CSS positioning. CSS uses three different commands to place features or elements on the page. These three commands are padding, border, and margin. So what are the differences? I've attached an image that I found that helps visualize the differences. The only difference is where they add space to. Your paragraph, image or cool feature is considered the "content". If you want to add space immediately around it, you can use the padding feature. Adding a border around your content helps you have even more control and allows you to utilize the margin command. The margin command lets you place blank space outside of your border line. It's the blank space outside of the blank space if that makes any sense to you. I'm really excited to utilize what I'm learning this week to create some really neat websites.


ACCESSORIES Get 15% Discount* On Accessories and Spare parts. Old & New Spare parts Awesome Interior Customize Lights Tires & Rims BUY NOW
SERVICES Get 10% Off* On Repair and Other services. Full Vehicle Servicing Fast Towing Service Battery Jumpstart Puncture & Other repairs BOOK SERVICE


World Wide Web
- Collection of HTML documents
- which stands for HyperText Markup Language
- Marjo pieces include:
- Browser, Internet, and Server
- Browser makes requests to servers via the internet
HTML
- Heart of the web and is made up of:
- Text Content: which is what you see
- Markup: which is what it looks like
- References: which are images and ideas
- Links: to other pages
Mark Up
- Contain the opening tag, the contents, and then the closing tag
- In its entirety, this is called an element
HTML Attributes
- Open tag, attribute, value, contents, and then close tag
- Attribute is always equal to a value
Tags
- Close Tags are used when content is usesd, while void tags are used when there is no content
- Bold Tags
- Itallic Tags or Emphasis Tags
- Image Tags
- Image tags are void tags because they do not contain content
- Image tags contain attributes and the url for the image
- White Space
- Used to force HTML to have another line
- A Break Tag is a void tag and is inline
- A Paragraph Tag has content and is block
Inline v. Block
- Inline
- Ends a line
- B-Tags, Em-Tags, Image Tags
- Block
- Makes invisible block around HTML
- Paragraph Tags
Tips
- Computers are "stupid" because they do exactly what they are told to do and cannot make inferences
- Memorizing the "tiny" concepts is not important, these can always be looked up online


Share this:
Don’t let the mighty green coloured drink intimidate you. Green smoothies are one of the best ways to boost your energy in the morning – especially a vegan green smoothie. They are also a great pick you up snack in the middle of the day. Many people have a funny feeling about mixing greens and fruits, but I’ve got just the tip for you here.
Before you give up the idea, here are some benefits: This vegan green smoothie is the perfect way to increase your veg and fruit intake.
The best green smoothie should combine 70%-80% vegetables and 20%-30% fruits and others. This way your smoothie will be full of nutrients instead of sugar. If you’re a beginner. I’d recommended start little by little. I first start with handful of spinach with loads of frozen fruits, plant milk and even add a splash of sweetener. You can decrease the amount of sweetener as you get more used to the flavour. You will be surprised how your taste buds adjust over time. In terms of liquid, you can add anything from juice, plant milk or even just water. Then if you have any extra superfoods to add in (Maca, Chia seeds, Spirulina powder, Chlorella powder, hemp seed, flax seeds, etc.).
One quick tip here – if you have trouble consuming the vegan green smoothie cause of the veggies smell, try add a little knob of ginger, lemon or lime to freshen it up. Oh! And if you use very ripe bananas, you won’t need to add any extra sweetener as ripe bananas are naturally very sweet. This recipe is perfect for the green smoothie beginner. Be healthy and enjoy!
If you want a little more healthy smoothie inspiration, check out our vegan chocolate peanut butter smoothie.
Tropical Vegan Green Smoothie Recipe
- Prep Time: 5 minutes
- Cook Time: 10 minutes
- Total Time: 10 minutes
- Portions: 1 portion (600 ml)
You’ll need:
- 2 frozen bananas (or fresh make sure they’re very ripe)
- 1 cup of frozen mango (or fresh)
- 2-3 cups of spinach
- 2 tsp. Spirulina powder
- 1 cup of walnut milk (or any plant milk )
- ½ cup of filtered water
- ½ lime or lemon
- 1 tsp. Maca powder (optional)
- 1-2 tbsp. Chia seeds (optional)
Let’s start!
- In a high speed blender, Add in all the spinach and blend finely to help ease out the process.
- Then add the rest of the ingredients. Blend to combined. Serve right away and enjoy!
Tips:
- Make sure to use fully ripe banana and if you have too many overripe banana left. You can simply peel, cut and freeze them for later.
Share this:


This a tool for playing with "9-patch" borders.
Draw on the grid above to design a pattern.
When you're done, you can copy the css above to use with your own sites!
made by
max bittker


Service personnel must place emphasis on nation’s development
by Emelia Addae, GNAAkim Oda (E/R), Nov. 16, GNA - Mr Akwasi Boakye-Yiadom, the Acting Municipal Coordinator of the Birim Central National Service Personnel has advised the personnel to let the development of the country be their utmost concern in their scheme of affairs.
He said as youth, the country depended on them as future leaders and as such they should put in much efforts in their work to improve productivity of the organisations that they serve for the growth of the country.
Mr Boakye-Yiadom gave the advice when eight service personnel of the Birim Central Municipality picked forms at Akim Oda in the Eastern Region to contest the executive positions of the Birim Central branch of the National Service Personnel Association (NASPA).
The positions being contested for are President, Vice-President, Financial Secretary, and Organising Secretary and the elections would take place on November 22, 2019 at the Birim Central Municipal Assembly Hall.
Mr George Akomea Ankrah, an aspirant for the position of President in an interview with the Ghana News Agency said it was a great opportunity for him to contest the election and that he was hopeful to win.
He encouraged his colleagues not to shy away when such chances come their way, but use to it boost their confidence.
GNA


"Informally, an algorithm is any well-defined computational procedure that takes some value, or set of values, as input and produces some value, or set of values, as output. An algorithm is thus a sequence of computational steps that transform the input into the output."
A sorting algorithm is an algorithm that takes a sequence of unordered elements as an input and returns the same elements as an output but in specified by certain criterion order. Example ordering can be numerical, decreasing or non-decreasing, or alphabetical.
Many sorting algorithms exist and they are all designed to solve the same problem. However, they can differ vastly in terms of efficiency. Insertion sort takes roughly O(n2) time to sort a sequence of n numbers while merge sort requires O(logn) time for the same input. Even though insertion sort outperforms merge sort for very small-sized arrays, for large n merge sort is immensely more efficient. The algorithms covered in this project are InsertionSort, SelectionSort, BubbleSort, RadixSort, HeapSort, MergeSort, CountingSort and QuickSort.
Stability preserves the order of equal elements. In other words, if two elements are equal in the input data, they will appear in the same relative order in the output. Note the positions of the 7s in the following example:
In-place algorithm is an algorithm that uses no extra auxiliary data structure: it does not require any additional storage to manipulate the input. However, use of auxiliary variables may be allowed. In-place sorting algorithm overwrites the input by the output in the process and therefore such algorithm is only based on replacements or swaps.
References: Introduction to Algorithms, 3rd Edition (MIT Press)
In computer science, Big O notation is used to describe how the processing time changes as the problem size grows. The time complexity of a sorting algorithm is expressed using Big O notation. Time complexity means the count of elementary operations performed by the algorithm for some input. We focus on worst-case, average-case and best-case time complexity. For example, O(n2) is the upper bound of a function: the algorithm takes at most O(n2) time to sort an input (but it may also take less). Ω(nlogn) is the lower bound of a function: the algorithm can solve the problem in at least Ω(nlogn) time for the best possible scenario. When Θ(n2) is used to describe worst-case input, it means that the algorithm takes exactly Θ(n2) to sort the array: that may be an inverse sorted array.
| Algorithm | Best | Average | Worst |
|---|---|---|---|
| BubbleSort | Ω(n) | Θ(n2) | O(n2) |
| SelectionSort | Ω(n2) | Θ(n2) | O(n2) |
| InsertionSort | Ω(n) | Θ(n2) | O(n2) |
| RadixSort | Ω(nk) | Θ(nk) | O(nk) |
| MergeSort | Ω(nlogn) | Θ(nlogn) | O(nlogn) |
| HeapSort | Ω(nlogn) | Θ(nlogn) | O(nlogn) |
| QuickSort | Ω(nlogn) | Θ(nlogn) | O(n2) |
| CountingSort | Ω(n+k) | Θ(n+k) | O(n+k) |
Bubble sort is a simple sorting algorithm with worst and average time complexity of Θ(n2) making it inefficient for large arrays. Bubble sort is a stable sorting algorithm.
The idea is simple. Scan the whole array in pairs of adjacent elements and swap the elements that are in wrong order. Bubble sort can detect already sorted arrays and thus has O(n) best case run-time. Interesting thing about bubble sort is that elements moving in different directions have different speed. For example. assume the largest element in the array is positioned in the beginning. That element will win all comparisons to the end of the array and will take its sorted position in one loop iteration. On the contrary, the smallest element being in the end will move just one place to the left per loop iteration.
BubbleSort pseudo code with ability to detect a sorted array
for i = 0 to A.length - 1
swapped = false
for j = 0 to A.length - 1
if A[j] > A[j+1]
swap A[j] with A[j+1]
swapped = true
end for
if swapped is false then
break
end if
end for
Standard implementation of BubbleSort
for i = 0 to A.length - 1
for j = 0 to A.length - 1
if A[j] > A[j+1]
swap A[j] with A[j+1]
end for
end for
References: BubbleSort on Wikipedia
Selection sort is an in-place sorting algorithm with O(n2) time complexity for any input case. The algorithm is inefficient for large inputs and generally falls behind insertion sort. However, selection sort is based on a simple idea - scan to whole array to find the smallest or the largest element. The algorithm is easy to understand and analyse. Selection sort preserves the order of equal elements.
The input array is divided into two parts - sorted sub-list and sub-list of the remaining items. The sorted sequence builds up from left to right. On each iteration the algorithm finds the smallest or the largest element in the sub-list of remaining items and puts it at rightmost position in the sorted sub-list.
for i = 0 to A.length - 1
for j = i + 1 to A.length
if A[i] > A[j]
swap A[i] and A[j]
end if
end for
end for
References: SelectionSort on Wikipedia
Insertion sort is a simple sorting algorithm that builds the sorted array one item at a time. Despite being less efficient than most of the modern algorithms, insertion sort have its advantages. The working principle is easy to implement and is efficient for small-sized arrays. The run-time of the algorithm can drop dramatically for nearly sorted arrays yielding a time complexity of O(nk) when each element of the input is no more than k places away from its sorted position. Insertion sort preserves the relative order of equal elements and thus is considered stable. The best case input is an already sorted array as every element is compared just once to the rightmost element in the sorted sequence. This results in linear running time of O(n). The worst case is a sorted array in reverse order. Each iteration moves the first element in the unsorted data to the first position of the sorted sequence by comparing it to all sorted elements and moving all of them one position on the right. This case results in quadratic worst case running time of Θ(n2). The average case is also quadratic and thus making insertion sort impractical for large arrays. However, the algorithm is still one of the fastest for sorting small-sized arrays. Insertion sort is very similar to selection sort which is discussed in the next section. Some implementations of divide-and-conquer algorithms such as quick sort and merge sort use insertion sort for sorting sub-arrays that are smaller than a given threshold.
The way most of the people sort cards in bridge hand is similar to the working principle of insertion sort. The algorithm iterates, taking one element from the input on each repetition, and builds a sorted output list. Insertion sort removes one element from the input and inserts it to its correct position in the sorted list. It repeats until there are no elements left in the input data.
for j = 2 to A.length
key = A[j]
#insert A[j] into the sorted sequence A[1..j-1]
i = j - 1
while i > 0 and A[i] > key
A[i+1] = A[i]
i = i - 1
end while
A[i+1] = key
end for
Demo of the working principle of Insertion sort. The darker gray background shows the sorted sequence. The number that is written in the sorted sequence is marked with a slightly thicker border. The number that is read is underlined and coloured in black.
References: InsertionSort on Wikipedia
Radix sort is a non-comparative sorting algorithm that build a sorted array by grouping keys that share the same significant position and value. For example, initially 104 and 74 are both grouped as ending with the digit 4. Secondly, 104 is grouped with elements that have 0 as a second least significant digit and 74 is grouped with numbers sharing the 7. Radix sort can be used to sort strings of characters. It is an alternative to high-performance comparison sorts that require O(nlogn) comparisons.
Least significant digit radix sort is fast and stable sorting algorithm with time complexity of O(wn) for n keys with w average key length. This time complexity is possible when keys of different length are put into groups according to their length and radix sort is ran on each group. The different results are then combined. The working principle is the following: take the last digit of the keys, group the keys based on that one digit, take the next digit (10s,100s...), group keys based on that digit and repeat the grouping process until no digits remain.
Radix-Sort(A,d) where d is the length of the elements
for i = 1 to d
use a stable sort to sort array A on digit i
Note: The visualisation of RadixSort in this project uses BucketSort
References: RadixSort on Wikipedia
Merge sort is a divide-and-conquer algorithm: the problem is divided into sub-problems which are solved separately and a general solution is produced by combining the sub-solutions. It is efficient, comparison-based and stable sorting algorithm. The time complexity of merge sort is O(nlogn) in all possible input cases.
The input array is divided into n sub-lists. Put in other words, each number is considered a sub-list. Then repeatedly merge sub-lists in twos, fours, eights, etc. until the sorted sequence is produced.
Note: The MergeSort animation in this project implements a version of MergeSort called Bottom-Up MergeSort
References: MergeSort on Wikipedia and implementations
Heap sort combines to best attributes of merge sort and insertion sort: in-place sorting from insertion sort and the run-time O(nlogn) of merge sort. It introduces the heap data structure: a nearly complete binary tree where each node is an element of the array. Two kinds of heaps exist: min-heaps and max-heaps and they both satisfy the heap property. The max-heap property states that a value of a node is at most the value of its parent. This means that the biggest number is always the root.
Procedure called Max-Heapify is used to maintain the max-heap property. We use the Build-Max-Heap procedure to run Max-Heapify on every node in the tree.
References: HeapSort on Wikipedia and implementations
Introduction to Algorithms, 3rd Edition (MIT Press)
Quick sort is an efficient comparison sort. Most implementations of quick sort are not stable but the algorithm can operate in-place and thus requires small amount of memory. The average performance of quick sort is O(nlogn) but some implementations are faster than merge sort and heap sort.
Firstly, a pivot element is chosen: many strategies exist to choose the pivot but the implementation in the project is randomised quick sort and thus the pivot is randomly picked. The next step is partitioning: put all elements that are smaller than the pivot before it and all bigger elements after it (where equal elements go is a matter of choice). After the partitioning the pivot is at its correct position in the output. The rest of the array is divided into two partitions. Then the same procedures start again recursively on each partition and then on each new partition until the array is sorted.
References: QuickSort on Wikipedia and implementations
Introduction to Algorithms, 3rd Edition (MIT Press)
CountingSort is extremely fast but not-in-place sorting algorithm and thus requires a lot of aditional memory to perform. The running time of the algorithm is O(n+k).
Initially, a counting array is build. The length of this array is equal to the biggest element from the array that will be sorted. The next step is to increment count[i] for each occurrence of element i. For example, reading element 21 in the original array increments the value of count[21] by 1. Lastly, rewrite the original array by using the information stored in the counting array. Look at the example below and the visualisation of the algorithm for more information.


APC's Lyon coasting to victory in Bayelsa
By Mike Odiegwu, Yenagoa
The All Progressives Congress (APC) and its Candidate, Chief David Lyon, are coasting home to victory following the results of the Saturday governorship election in Bayelsa State so far declared by the Independent National Electoral Commission (INEC).
Out of the seven local government areas declared, Lyon won five councils while his counterpart in the Peoples Democratic Party (PDP), Senator Douye Diri won two of the councils.
Diri defeated Lyon in Sagbama, the Local Governmenr Area of Governor Seriake Dickson.
While the PDP candidate scored 60,339 votes, Lyon got 7,831 votes in Sagbama.
Diri also won his Kolokuma-Opokuma Local Government Area scoring 15,360 votes to win Lyon, who polled 8,934 votes.
But Lyon won the Nembe Local Government Area by landslide scoring 83,041 votes to trounce his PDP’s counterpart, who got only 874 votes.
In Southern Ijaw, the Local Government Area of the APC Candidate, Lyon floored Diri winning his local government with massive 124,803 votes to win Diri, who came a distant second with 4,898 votes.
The Minister of State for Petroleum and former Governor Chief Timipre Sylva, delivered his Brass Local Government Area to Lyon. He polled 23,831 votes to defeat his counterpart Diri, who scored 10, 410 votes.
The APC candidate also won Yenagoa Local Government Area, home to the state capital Lyon, scoring 24,607 to win votes to win Diri, who polled 19,184 votes.
The APC and Lyon further won Ogbia, the Local Government Area of former President Goodluck Jonathan with a wide margin.
Lyon scored 58,016 votes to win his PDP’s counterpart, Senator Diri, who polled 13,763 votes.


Creating an OpenGL context¶
This section describes how to configure an OpenGL context. For most applications the information described here is far too low-level to be of any concern, however more advanced applications can take advantage of the complete control pyglet provides.
Displays, screens, configs and contexts¶
Contexts and configs¶
When you draw on a window in pyglet, you are drawing to an OpenGL context. Every window has its own context, which is created when the window is created. You can access the window’s context via its context attribute.
The context is created from an OpenGL configuration (or “config”), which describes various properties of the context such as what color format to use, how many buffers are available, and so on. You can access the config that was used to create a context via the context’s config attribute.
For example, here we create a window using the default config and examine some of its properties:
>>> import pyglet
>>> window = pyglet.window.Window()
>>> context = window.context
>>> config = context.config
>>> config.double_buffer
c_int(1)
>>> config.stereo
c_int(0)
>>> config.sample_buffers
c_int(0)
Note that the values of the config’s attributes are all ctypes instances. This is because the config was not specified by pyglet. Rather, it has been selected by pyglet from a list of configs supported by the system. You can make no guarantee that a given config is valid on a system unless it was provided to you by the system.
pyglet simplifies the process of selecting one of the system’s configs by allowing you to create a “template” config which specifies only the values you are interested in. See Simple context configuration for details.
Displays¶
The system may actually support several different sets of configs, depending on which display device is being used. For example, a computer with two video cards would have not support the same configs on each card. Another example is using X11 remotely: the display device will support different configurations than the local driver. Even a single video card on the local computer may support different configs for the two monitors plugged in.
In pyglet, a Display is a collection of “screens” attached to a single display device. On Linux, the display device corresponds to the X11 display being used. On Windows and Mac OS X, there is only one display (as these operating systems present multiple video cards as a single virtual device).
There is a singleton class Platform which provides access to the display(s); this represents the computer on which your application is running. It is usually sufficient to use the default display:
>>> platform = pyglet.window.get_platform()
>>> display = platform.get_default_display()
On X11, you can specify the display string to use, for example to use a remotely connected display. The display string is in the same format as used by the DISPLAY environment variable:
>>> display = platform.get_display('remote:1.0')
You use the same string to specify a separate X11 screen [1]:
>>> display = platform.get_display(':0.1')
Screens¶
Once you have obtained a display, you can enumerate the screens that are connected. A screen is the physical display medium connected to the display device; for example a computer monitor, TV or projector. Most computers will have a single screen, however dual-head workstations and laptops connected to a projector are common cases where more than one screen will be present.
In the following example the screens of a dual-head workstation are listed:
>>> for screen in display.get_screens():
... print screen
...
XlibScreen(screen=0, x=1280, y=0, width=1280, height=1024, xinerama=1)
XlibScreen(screen=0, x=0, y=0, width=1280, height=1024, xinerama=1)
Because this workstation is running Linux, the returned screens are XlibScreen, a subclass of Screen. The screen and xinerama attributes are specific to Linux, but the x, y, width and height attributes are present on all screens, and describe the screen’s geometry, as shown below.
There is always a “default” screen, which is the first screen returned by get_screens(). Depending on the operating system, the default screen is usually the one that contains the taskbar (on Windows) or menu bar (on OS X). You can access this screen directly using get_default_screen().
| [1] | Assuming Xinerama is not being used to combine the screens. If Xinerama is enabled, use screen 0 in the display string, and select a screen in the same manner as for Windows and Mac OS X. |
OpenGL configuration options¶
When configuring or selecting a Config, you do so based on the properties of that config. pyglet supports a fixed subset of the options provided by AGL, GLX, WGL and their extensions. In particular, these constraints are placed on all OpenGL configs:
- Buffers are always component (RGB or RGBA) color, never palette indexed.
- The “level” of a buffer is always 0 (this parameter is largely unsupported by modern OpenGL drivers anyway).
- There is no way to set the transparent color of a buffer (again, this GLX-specific option is not well supported).
- There is no support for pbuffers (equivalent functionality can be achieved much more simply and efficiently using framebuffer objects).
The visible portion of the buffer, sometimes called the color buffer, is configured with the following attributes:
- buffer_size
Number of bits per sample. Common values are 24 and 32, which each dedicate 8 bits per color component. A buffer size of 16 is also possible, which usually corresponds to 5, 6, and 5 bits of red, green and blue, respectively.
Usually there is no need to set this property, as the device driver will select a buffer size compatible with the current display mode by default.
- red_size, blue_size, green_size, alpha_size
These each give the number of bits dedicated to their respective color component. You should avoid setting any of the red, green or blue sizes, as these are determined by the driver based on the buffer_size property.
If you require an alpha channel in your color buffer (for example, if you are compositing in multiple passes) you should specify alpha_size=8 to ensure that this channel is created.
- sample_buffers and samples
Configures the buffer for multisampling, in which more than one color sample is used to determine the color of each pixel, leading to a higher quality, antialiased image.
Enable multisampling by setting sample_buffers=1, then give the number of samples per pixel to use in samples. For example, samples=2 is the fastest, lowest-quality multisample configuration. A higher-quality buffer (with a compromise in performance) is possible with samples=4.
Not all video hardware supports multisampling; you may need to make this a user-selectable option, or be prepared to automatically downgrade the configuration if the requested one is not available.
- stereo
- Creates separate left and right buffers, for use with stereo hardware. Only specialised video hardware such as stereoscopic glasses will support this option. When used, you will need to manually render to each buffer, for example using glDrawBuffers.
- double_buffer
Create separate front and back buffers. Without double-buffering, drawing commands are immediately visible on the screen, and the user will notice a visible flicker as the image is redrawn in front of them.
It is recommended to set double_buffer=True, which creates a separate hidden buffer to which drawing is performed. When the Window.flip is called, the buffers are swapped, making the new drawing visible virtually instantaneously.
In addition to the color buffer, several other buffers can optionally be created based on the values of these properties:
- depth_size
- A depth buffer is usually required for 3D rendering. The typical depth size is 24 bits. Specify 0 if you do not require a depth buffer.
- stencil_size
- The stencil buffer is required for masking the other buffers and implementing certain volumetric shadowing algorithms. The typical stencil size is 8 bits; or specify 0 if you do not require it.
- accum_red_size, accum_blue_size, accum_green_size, accum_alpha_size
The accumulation buffer can be used for simple antialiasing, depth-of-field, motion blur and other compositing operations. Its use nowadays is being superceded by the use of floating-point textures, however it is still a practical solution for implementing these effects on older hardware.
If you require an accumulation buffer, specify 8 for each of these attributes (the alpha component is optional, of course).
- aux_buffers
Each auxilliary buffer is configured the same as the colour buffer. Up to four auxilliary buffers can typically be created. Specify 0 if you do not require any auxilliary buffers.
Like the accumulation buffer, auxilliary buffers are used less often nowadays as more efficient techniques such as render-to-texture are available. They are almost universally available on older hardware, though, where the newer techniques are not possible.
The default configuration¶
If you create a Window without specifying the context or config, pyglet will use a template config with the following properties:
Attribute Value double_buffer True depth_size 24
Simple context configuration¶
A context can only be created from a config that was provided by the system. Enumerating and comparing the attributes of all the possible configs is a complicated process, so pyglet provides a simpler interface based on “template” configs.
To get the config with the attributes you need, construct a Config and set only the attributes you are interested in. You can then supply this config to the Window constructor to create the context.
For example, to create a window with an alpha channel:
config = pyglet.gl.Config(alpha_size=8)
window = pyglet.window.Window(config=config)
It is sometimes necessary to create the context yourself, rather than letting the Window constructor do this for you. In this case use get_best_config() to obtain a “complete” config, which you can then use to create the context:
platform = pyglet.window.get_platform()
display = platform.get_default_display()
screen = display.get_default_screen()
template = pyglet.gl.Config(alpha_size=8)
config = screen.get_best_config(template)
context = config.create_context(None)
window = pyglet.window.Window(context=context)
Note that you cannot create a context directly from a template (any Config you constructed yourself). The Window constructor performs a similar process to the above to create the context if a template config is given.
Not all configs will be possible on all machines. The call to get_best_config() will raise NoSuchConfigException if the hardware does not support the requested attributes. It will never return a config that does not meet or exceed the attributes you specify in the template.
You can use this to support newer hardware features where available, but also accept a lesser config if necessary. For example, the following code creates a window with multisampling if possible, otherwise leaves multisampling off:
template = gl.Config(sample_buffers=1, samples=4)
try:
config = screen.get_best_config(template)
except pyglet.window.NoSuchConfigException:
template = gl.Config()
config = screen.get_best_config(template)
window = pyglet.window.Window(config=config)
Selecting the best configuration¶
Allowing pyglet to select the best configuration based on a template is sufficient for most applications, however some complex programs may want to specify their own algorithm for selecting a set of OpenGL attributes.
You can enumerate a screen’s configs using the get_matching_configs() method. You must supply a template as a minimum specification, but you can supply an “empty” template (one with no attributes set) to get a list of all configurations supported by the screen.
In the following example, all configurations with either an auxilliary buffer or an accumulation buffer are printed:
platform = pyglet.window.get_platform()
display = platform.get_default_display()
screen = display.get_default_screen()
for config in screen.get_matching_configs(gl.Config()):
if config.aux_buffers or config.accum_red_size:
print config
As well as supporting more complex configuration selection algorithms, enumeration allows you to efficiently find the maximum value of an attribute (for example, the maximum samples per pixel), or present a list of possible configurations to the user.
Sharing objects between contexts¶
Every window in pyglet has its own OpenGL context. Each context has its own OpenGL state, including the matrix stacks and current flags. However, contexts can optionally share their objects with one or more other contexts. Shareable objects include:
- Textures
- Display lists
- Shader programs
- Vertex and pixel buffer objects
- Framebuffer objects
There are two reasons for sharing objects. The first is to allow objects to be stored on the video card only once, even if used by more than one window. For example, you could have one window showing the actual game, with other “debug” windows showing the various objects as they are manipulated. Or, a set of widget textures required for a GUI could be shared between all the windows in an application.
The second reason is to avoid having to recreate the objects when a context needs to be recreated. For example, if the user wishes to turn on multisampling, it is necessary to recreate the context. Rather than destroy the old one and lose all the objects already created, you can
- Create the new context, sharing object space with the old context, then
- Destroy the old context. The new context retains all the old objects.
pyglet defines an ObjectSpace: a representation of a collection of objects used by one or more contexts. Each context has a single object space, accessible via its object_space attribute.
By default, all contexts share the same object space as long as at least one context using it is “alive”. If all the contexts sharing an object space are lost or destroyed, the object space will be destroyed also. This is why it is necessary to follow the steps outlined above for retaining objects when a context is recreated.
pyglet creates a hidden “shadow” context as soon as pyglet.gl is imported. By default, all windows will share object space with this shadow context, so the above steps are generally not needed. The shadow context also allows objects such as textures to be loaded before a window is created (see shadow_window in pyglet.options for further details).
When you create a Context, you tell pyglet which other context it will obtain an object space from. By default (when using the Window constructor to create the context) the most recently created context will be used. You can specify another context, or specify no context (to create a new object space) in the Context constructor.
It can be useful to keep track of which object space an object was created in. For example, when you load a font, pyglet caches the textures used and reuses them; but only if the font is being loaded on the same object space. The easiest way to do this is to set your own attributes on the ObjectSpace object.
In the following example, an attribute is set on the object space indicating that game objects have been loaded. This way, if the context is recreated, you can check for this attribute to determine if you need to load them again:
context = pyglet.gl.get_current_context()
object_space = context.object_space
object_space.my_game_objects_loaded = True
Avoid using attribute names on ObjectSpace that begin with "pyglet",they may conflict with an internal module.


General discussion about Komodo. For useful links and more info click the pinned messages to the right. DON'T DM @jl777
100 messages
Before 05-Dec-19 12:00 AM
passcombo.com 🏴☠🏴18-Sep-18 04:03 PM
maybe my recont post that was supported by community did some impression
ComputerGenie 👴👴👴18-Sep-18 04:03 PM
loves that NEOS is on that list
passcombo.com 🏴☠🏴18-Sep-18 04:04 PM
last chance to pump BTCD anyone!
2
someone can make it to top 1 ??
small volume needed
SHossain18-Sep-18 04:04 PM
Sad to see BTM is on the list. I used BTM github repo to get help setting up the insight explorer for BTCD
passcombo.com 🏴☠🏴18-Sep-18 04:04 PM
people will remember
yes BTM seemd to have nice goal
real life usage but seems not enough dev power
maybe BTM could co-op with Verus on profile
SHossain18-Sep-18 04:05 PM
never owned BTM though :p
ComputerGenie 👴👴👴18-Sep-18 04:07 PM
real life usage in crypto? what madness is that?
1
shnu18-Sep-18 04:07 PM
is it possible to have a cryptowat.ch integration to barterdex?
similar to what kraken does
ComputerGenie 👴👴👴18-Sep-18 04:09 PM
possible, yes
SRV18-Sep-18 05:09 PM
Sup. Learning about Komodo. Just found out our about the 64 dpow nodes. Doesn’t this make Komodo centralised and stoppable. Any thoughts?
ComputerGenie 👴👴👴18-Sep-18 05:14 PM
@SRV dPoW nodes (notaries) are elected by those that hold KMD and can be anyone (literally) and as such does not "centralized" make(edited)
if anything, the fact that any "Joe off the street" can become a notary is the opposite of centralized
SRV18-Sep-18 05:16 PM
@ComputerGenie 👴👴👴 but the 64 notaries can be taken out, blackmailed, killed, threatened etc?
ComputerGenie 👴👴👴18-Sep-18 05:17 PM
and that's different from making the same argument about a handful of pools controlling any chain (BTC being an example)?
If you can corrupt 64 unconnected individuals, then surely your time and money would be better spent corrupting the 6 people that "control" BTC pools
jl777c18-Sep-18 05:19 PM
blocks will continue even without notaries
SRV18-Sep-18 05:19 PM
You can’t turn btc off. If all the miners stopped today, the mining difficulty would drop and pc mining would start again,
jl777c18-Sep-18 05:20 PM
notaries dont have any monopoly power to create blocks
SRV18-Sep-18 05:20 PM
Oh wow hello sir.
jl777c18-Sep-18 05:21 PM
hello
SRV18-Sep-18 05:33 PM
What power do the 64 notaries have above a non notary? What authority/power do they have over and above someone like me with a small holding
jl777c18-Sep-18 05:34 PM
they can notarize
they can also each mine approx 1% of blocks
but anybody is able to become a notary as the elections are an open process
and the technically capable ones tend to win the open spots
jorian18-Sep-18 05:57 PM
as a notary myself, i don't have a lot of power. i dedicate time to make sure my node is up and in good shape to help secure the KMD network by dPoW. apart from that i don't have any more power than any other KMD holder(edited)
i can try to sabotage the network, but we have plenty of smart people who would notice. and then it's 63 against 1 and i'm out. don't want to take that risk
SRV18-Sep-18 06:04 PM
Appreciate your answers. Thank you.
ComputerGenie 👴👴👴18-Sep-18 06:07 PM
almost wishes that notaries would go corrupt, the chain would fork, and he would pick up an extra percentage of valid blocks
Resistor18-Sep-18 06:53 PM
does anyone have a windows exe file to double click to solo mine?
xRobeSx18-Sep-18 06:54 PM
no, you would need to setup a stratum first then mine to it
Resistor18-Sep-18 06:55 PM
but linux does that , how come windows can't do that?
i tried that earlier
xRobeSx18-Sep-18 06:59 PM
I don't know of a linux stratum for KMD that's just started with a single executable file either
ABP blocklord18-Sep-18 08:31 PM
hello, I would like to have info on how to get listed?
maybe your dev will like to see it , your coin has to able to take rpc calls
ABP blocklord18-Sep-18 08:35 PM
if I need more info, may i write you @Hermes
Hermes18-Sep-18 08:36 PM
yes also you can send a ticket at<EMAIL_ADDRESS>and we will document your request and hand it to the dev in charge of integrations, although you can already submit the request via github directly but just in case let us know in the ticket.
@krakensupport Thank you for your reply.
I appreciate that you hand pick digital assets.
All I am saying is that @KomodoPlatform is worth your time.
I am sure their DMs will be open for you.
Great QoS btw.
Show your support through community interest.
Llama18-Sep-18 11:47 PM
hey all
actionslacks19-Sep-18 12:03 AM
Yo
passcombo.com 🏴☠🏴19-Sep-18 06:57 AM
@shnu if hundreds of people liked it wold be nice... but seems most here are offline ... maybe @benohanlon could send an email for twitter support in such cases ?
1
to make it bigger
figgy13219-Sep-18 09:59 AM
So I read Poloniex are finally delisting btcd :)
1
1
moneyisold19-Sep-18 12:19 PM
Did you guys know ravencoin wants to use KMD Platform
2
Cryptoon19-Sep-18 12:24 PM
explain
kross19-Sep-18 12:25 PM
Hi..
Cryptoon19-Sep-18 12:59 PM
hello
BlockTech19-Sep-18 01:21 PM
@moneyisold are you talking about dPoW, if it’s that, that’s Nice for raven and for kmd
They probably took that decision after those tweet
it's from 2015, knowing Todd I think he would say the same about kmd or everything else
1
moneyisold19-Sep-18 03:10 PM
know he is still on it
Possible Solution:
Use a platform like KMD — Komodo Platform to anchor hashes periodically.
 Our DMs are open. Please provide us with a contact. We have a look of working tech, delayed proof of work and we've just launched crypto conditions smart contracts.
3
Lennart19-Sep-18 03:30 PM
I was also emailling them the other day to list KMD
passcombo.com 🏴☠🏴19-Sep-18 03:34 PM
@benohanlon ok I ment that good to plan such actions to make better impact (use our human/users/subs resources), not necessarily to use this one
now when there is official KMD response - good to send email to example 5 bullet friday subs to support the twitter post
anyway by far it seems KMD is rather small community or not very active compared to example DOGE or others; if we exceed 5k likes on that twitter post I will change my mind
Komodo titter followers almost 100k, if only 5% supports such post would be enough... question if ...


| Number of Classes | Line Coverage | Mutation Coverage |
|---|---|---|
| 103 | 89% | 80% |
| Name | Number of Classes | Line Coverage | Mutation Coverage |
|---|---|---|---|
| org.apache.commons.io | 18 | 92% |
86% |
| org.apache.commons.io.comparator | 10 | 99% |
95% |
| org.apache.commons.io.filefilter | 23 | 98% |
87% |
| org.apache.commons.io.input | 27 | 78% |
69% |
| org.apache.commons.io.monitor | 3 | 86% |
78% |
| org.apache.commons.io.output | 18 | 88% |
72% |
| org.apache.commons.io.serialization | 4 | 100% |
100% |


US urges early Iraq elections, halt to violence against protesters
by AFPWASHINGTON: The United States on Sunday urged Iraqi authorities to hold early polls and carry out electoral reforms, and called for an end to the violence against protesters that has left hundreds dead.
Washington wants “the Iraqi government to halt the violence against protesters and fulfill President (Barham) Saleh’s promise to pass electoral reform and hold early elections,” the White House said in a statement.
“The United States is seriously concerned by continued attacks against protestors, civic activists, and the media, as well as restrictions on internet access, in Iraq,” it said.
Mass rallies calling for an overhaul of the ruling system have rocked the capital Baghdad and the Shiite-majority south since October 1, but political forces closed ranks this week to defend the government.
The consensus among the elite seems to have paved the way for a crackdown.
Parliament’s human rights committee says that 319 people have been killed since protests first erupted, including demonstrators and security forces.
The committee said snipers were active near protest sites and hunting rifles were used against demonstrators as well.


--- title: Javascript tree with autoscroll layout: page js: examples/autoscroll.js css: example.css ---
This is an example of autoscroll. The tree will scroll automatically if you drag an item outside of the tree.
Autoscroll will work automatically. There is no option for it.


Creating a store page starts with a draft. Submitting your asset page at this time will not put your asset page on the asset store. Your page will be saved and allow you to make changes until you are ready to submit it for pageReview. When you are sure your page is complete you may then Submit Your Asset for Review. Once your asset has been reviewed you will recieve an email notifying you of the outcome. If your submission is successful it will become a live page on the store available for the public to view.
The process is as follows:


Hi, steemit friends!💙
In such hot summer, we probably drink some cold drinks to avoid the summer heat. Today, I’d like to introduce some special drinks in Starbucks. Imagine that when you go shopping with your friends for a while, it is a good idea to have one. Starbucks is a suitable place where you can have a rest and relax yourself.
夏日炎炎，难免想喝点冷饮，今天想给大家介绍几款星巴克的特色饮品。可以想象一下，当你和朋友逛街太久口干舌燥时，是不是很想喝一杯冰冰凉凉的饮品，星巴克的环境和味道就很适合。
Since most of you know its surroundings, I won’t focus on this part. Its chain stores can be seen in most cities with its same decorative style. I’ve created a new membership card, for there are three chances to buy a one-for-one. Do you think it is cute?
星巴克的环境就不用过多介绍了，因为许多城市都能看见它的连锁店，装潢都是一个风格。今天还新办了一张会员卡，有三次买一送一的机会。有没有觉得会员卡很可爱？
This one is a new product of Starbucks and I always like the shape of such drinks, thus ordering it. Gently take a sip, and you will feel the aroma of Mocha, which leads to endless aftertaste.
这杯酷黑摩卡是星巴克的新品，一直很喜欢这种形状的饮品，所以首先就点了这杯。轻轻吸一口，浓香的摩卡味就窜入口中，回味无穷。
Frankly speaking, it tastes just so so. But I think there may be a lot of people ordering this drink, for its name really sounds fresh. In addition to water and ice, some peach sarcocarp is also added to it so that the customer s do not feel it a monotonous drink.
客观地说，这被饮品味道一般。不过我觉得应该会有不少人点这杯饮品，因为它带给我们的感觉就是清新淡雅。这杯绿茶，除了水和冰，还加入了一种蜜桃果肉的东西，让客人喝起来不会感觉太单调。
This one is my favorite. For girls, we enjoy a drink just because it’s good-looking. The main color is pink. With red and white milk foam, it makes people warm. As for the taste, I like the whole taste with chocolate, which is very unique.
这杯星冰乐是最令我喜欢的，对于女生来说，喜欢一杯饮品有一半的原因或许是它的外观。它的主要颜色是粉色，红白相间的奶泡，让人感觉很温馨。至于味道，我很喜欢它整体味道中带一丝巧克力味，很独特。
I remember that each time I go to Starbucks, I always order frappuccino, which can be regarded as a typical one in Starbucks. I think frappuccino is good in all respects except for the fact that it is a bit too sweet. If you drink it before a meal, it will be likely to affect your appetite. In the following ones, I like Matcha,which is less sweet than others.
记得每次去星巴克的时候，几乎每次都点星冰乐，它应该算是星巴克中特别经典的饮品了。但我总认为，星冰乐各方面都还不错，就是甜味有点太多。饭前喝的话会很影响食欲，在几种星冰乐里，我最喜欢喝抹茶味，因为相比其他的口味，它算是不那么甜腻的。
PS：This article has been first published on Primas with the username mrspointm.
注：文章首发在Primas的mrspointm账号。
Starbucks 星巴克（乐山万达店）
Address 地址：四川省乐山市市中区乐青路662号乐山万达广场F1层
!steemitworldmap 29.6193840 lat<PHONE_NUMBER> long d3scr
Posted from my blog with SteemPress : http://mrspointm.vornix.blog/2018/08/19/%e3%80%8c%e6%8e%a2%e5%ba%97%e3%80%8d%e6%98%9f%e5%b7%b4%e5%85%8b%e5%90%84%e8%89%b2%e9%a5%ae%e5%93%81-various-drinks-in-starbucks/
This page is synchronized from the post: ‘「探店」星巴克各色饮品 Various Drinks in Starbucks’


Professional Summary
10+ years of software development experience, with 5 years in product maintenance. Familiar with software development life cycle(SDLC), strong passion in new technologies, good at quick prototyping. A collaborative team player with excellent communication and documentation skills. Proficient in both SAP(5 years) and Microsoft .NET(7 years) platform. 6 years of web application development, 1 year of iOS, Android and hybrid mobile app development experience.
Work Experience
SAP Ariba
Palo Alto, CA
Developer
Working in Procurement Team, focus on Invoicing function of Ariba Procure-to-Pay(Buyer), using Java on Linux. Communicated frequently with stakeholders, worked independently and provided effective fix in time. Replicated one non-reproducible performance issue and solved it through log analysis with Splunk. Resolved one Go-live block issue(S1&P1), fixed it rapidly to keep SAP’s promise to the customer.
Aug 2016 - present
DePaul University
Chicago, IL
Senior Developer(Part Time)
Quickly designed and built 3 prototypes with Html5, PhoneGap and Xamarin within 5 weeks to evaluate cross-platform mobile development solutions. Created the investigation document for director to make decision. Designed and built framework of an online video sharing website with Facebook React and ASP.NET Web API. Implemented online course player with two different technologies, SignalR in ASP.NET and Socket.IO in Node.js.
Sep 2014 - Jun 2016
SAP Labs China
Shanghai, China
Senior Developer/Architect
Led team(8 members) to finish development for China localization of SAP GTS, worked in lean/scrum model. Collected requirements and finalized design by discussing with customers, partners and product owner. Released more than 60 notes for bug fixing and function enhancement. Independently developed a complicate SAP Process Control Dashboard(contains 8 charts) with BOBJ Xcelsius.
Oct 2009 - Aug 2014
Infosys Technologies China
Shanghai, China
Senior Software Engineer
Developed modules with WPF & WCF for Microsoft MSSolve project. Led team(3 members) to develop a newsletter subscription web application with ASP.NET, finished all development and testing tasks within three weeks. Smoothly took over tough maintenance tasks from India colleagues of support team within 2 months.
Nov 2007 - Sep 2009
Amano Software Engineering Co., Ltd
Shanghai, China
Software Engineer
Improved quality and performance of Amano Attendance System by refining the .NET source codes. Investigated and solved the compatible issues in the new environment (OS, Web Browser, .NET Framework etc.).
Oct 2006 - Nov 2007
Education
DePaul University
Chicago, IL, US
Master Degree in Computer Science (Full Scholarship), GPA: 3.9
Graduate Coursework: Algorithms; Concepts of Programming Languages; OO Software Development; Database Technologies; Mining Big Data; iOS Development; Android Development; Distributed System; Intelligent Information Retrieval; Software Security Assessment; Database Programming(PL/SQL); Advanced Scripting Technologies(ASP.NET MVC); Object-Oriented Enterprise Computing(Java/JSP)
Sep 2014 - Jun 2016
East China University of Science & Technology
Shanghai, China
Bachelar Degree in Computer Science and Technology
Undergraduate Coursework: Computer Mathematics, Operating Systems; Algorithms; Programming Languages; Database; Data Structure, Principle of Software Engineering, Computer Networks, Computer Architecture, Parallel and Distributed Computing, System Software Design.
Sep 2000 – Jun 2004
IT Skills
Java/Sevrlet/JSP, DataBase: PL/SQL
Javascript, HTML5, jQuery, Bootstrap, Node.js, AngularJS, ReactJs
iOS(Swift), Android(Java), Xamarin
Microsoft, C#, ASP.NET MVC, Windows Form, SQL Server
SAP, ABAP, GTS
Languages
Chinese
English
Japanese
Portfolios
- Trip Planner: An iOS app for itinerary management, built with Swift.
- Restaurant: An Android app for searching restaurants, built with Java. And there is a backend server built with ASP.NET.
- Course Player: An iOS app built with Xamarin in C#, one of the cross-platform solutions for mobile app development.
- Online Game Store: An online website built with ASP.NETMVC & Web API in C#, another similar Game Store implemented with JSP.
- Online Course Player: A player built with Node.js, based on Socket.IO, WebSocket, another similar Course Player implemented with C#, based on SignalR.
- Shoe Store: An online store developed with ASP.NET MVC, supports different screen size devices.
- Code Generator: A Windows Form(C#) application for code generation based on database schema and templates.
- 3-Tier CMS: A Content Management System(CMS) built with classic ASP.NET Web Form.
- Kaixin Assistant: A 'tag-on' desktop application for playing online games, built with C# and Windows Form.
- Novel Reader: A desktop application with Microsoft Outlook UI for user to read online novels, built with C#.
- Web Server: A web server built with Java sockets, capable of handling general HTTP requests.
- SAP Dictionary: A Windows Phone app for searching SAP & ERP related words.


Add
{{article.url}} {{article.content}}
File upload
Post a file to
/app/register/image
and display the server response
Your picture:
Server Response: {{response | json}}