text:
<!--

********************************************************************************

WARNING:

    DO NOT EDIT "geonetwork/README.md"

    IT IS AUTO-GENERATED

    (from the other files in "geonetwork/" combined with a set of templates)

********************************************************************************

-->

# Quick reference

-	**Maintained by**:
	[GeoNetwork opensource](https://github.com/geonetwork/docker-geonetwork)

-	**Where to get help**:
	[the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](https://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker)

# Supported tags and respective `Dockerfile` links

-	[`3.10.7`, `3.10`](https://github.com/geonetwork/docker-geonetwork/blob/9bd2540fae06da21ef228502be396cb5da4b4c14/3.10.7/Dockerfile)
-	[`3.10.7-postgres`, `3.10-postgres`](https://github.com/geonetwork/docker-geonetwork/blob/7e2a8d9ef56a982b9fbb5a9b51e16d83d0ec4c3c/3.10.7/postgres/Dockerfile)
-	[`3.12.1`, `3.12`, `3`](https://github.com/geonetwork/docker-geonetwork/blob/9bd2540fae06da21ef228502be396cb5da4b4c14/3.12.1/Dockerfile)
-	[`3.12.1-postgres`, `3.12-postgres`, `3-postgres`](https://github.com/geonetwork/docker-geonetwork/blob/1e6c6fc27e51f71b11d97ceee52472bd7d7596bc/3.12.1/postgres/Dockerfile)
-	[`4.0.5`, `4.0`, `4`, `latest`](https://github.com/geonetwork/docker-geonetwork/blob/8e557004a50f04a2ac62a21009ce0ec745ed9b8d/4.0.5/Dockerfile)

# Quick reference (cont.)

-	**Where to file issues**:
	[https://github.com/geonetwork/docker-geonetwork/issues](https://github.com/geonetwork/docker-geonetwork/issues)

-	**Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
	[`amd64`](https://hub.docker.com/r/amd64/geonetwork/), [`arm64v8`](https://hub.docker.com/r/arm64v8/geonetwork/)

-	**Published image artifact details**:
	[repo-info repo's `repos/geonetwork/` directory](https://github.com/docker-library/repo-info/blob/master/repos/geonetwork) ([history](https://github.com/docker-library/repo-info/commits/master/repos/geonetwork))
	(image metadata, transfer size, etc)

-	**Image updates**:
	[official-images repo's `library/geonetwork` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fgeonetwork)
	[official-images repo's `library/geonetwork` file](https://github.com/docker-library/official-images/blob/master/library/geonetwork) ([history](https://github.com/docker-library/official-images/commits/master/library/geonetwork))

-	**Source of this description**:
	[docs repo's `geonetwork/` directory](https://github.com/docker-library/docs/tree/master/geonetwork) ([history](https://github.com/docker-library/docs/commits/master/geonetwork))

# What is GeoNetwork?

GeoNetwork is a catalog application to **manage spatially referenced resources**. It provides powerful **metadata editing** and **search** functions as well as an interactive **web map viewer**.

The GeoNetwork project started out in year 2001 as a Spatial Data Catalogue System for the Food and Agriculture organisation of the United Nations (FAO), the United Nations World Food Programme (WFP) and the United Nations Environmental Programme (UNEP).

At present the project is widely used as the basis of **Spatial Data Infrastructures** all around the world.

GeoNetwork has been developed to connect spatial information communities and their data using a modern architecture, which is at the same time powerful and low cost, based on the principles of Free and Open Source Software (FOSS) and International and Open Standards for services and protocols (e.g.: ISO/TC211, OGC).

The project is part of the Open Source Geospatial Foundation ( [OSGeo](http://www.osgeo.org/) ) and can be found at [GeoNetwork opensource](http://www.geonetwork-opensource.org). GeoNetwork has been developed to connect spatial information communities and their data using a modern architecture, which is at the same time powerful and low cost.

![logo](https://raw.githubusercontent.com/docker-library/docs/6a537ddd2def65eaaa31cbadbaa5303f2dc82fe3/geonetwork/logo.png)

# How to use this image

## Start geonetwork

This command will start a debian-based container, running a Tomcat web server, with a geonetwork war deployed on the server:

```console
$ docker run --name some-geonetwork -d geonetwork
```

## Publish port

Geonetwork listens on port `8080`. If you want to access the container at the host, **you must publish this port**. For instance, this, will redirect all the container traffic on port 8080, to the same port on the host:

```console
$ docker run --name some-geonetwork -d -p 8080:8080 geonetwork
```

Then, if you are running docker on Linux, you may access geonetwork at http://localhost:8080/geonetwork. Otherwise, replace `localhost` by the address of your docker machine.

## Set the data directory and H2 db file

The data directory is the location on the file system where the catalog stores much of its custom configuration and uploaded files. It is also where it stores a number of support files, used for various purposes (e.g.: Lucene index, spatial index, thumbnails). The default variant also uses a local H2 database to store the metadata catalog itself.

By default, geonetwork sets the data directory on `/usr/local/tomcat/webapps/geonetwork/WEB-INF/data` and H2 database file to the tomcat bin dir `/usr/local/tomcat/gn.h2.db`, but you may override these values by injecting environment variables into the container: - `-e DATA_DIR=...` (defaults to `/usr/local/tomcat/webapps/geonetwork/WEB-INF/data`) and `-e GEONETWORK_DB_NAME=...` (defaults to `gn` which sets up database `gn.h2.db` in tomcat bin dir `/usr/local/tomcat`). Note that setting the database location via `GEONETWORK_DB_NAME` only works from version 3.10.3 onwards.

## Persisting data

To set the data directory to `/var/lib/geonetwork/data` and H2 database file to `/var/lib/geonetwork/db/gn.h2.db` so they both persist through restarts:

```console
$ docker run --name some-geonetwork -d -p 8080:8080 -e DATA_DIR=/var/lib/geonetwork/data -e GEONETWORK_DB_NAME=/var/lib/geonetwork/db/gn geonetwork
```

If you want the data directory to live beyond restarts, or even destruction of the container, you can mount a directory from the docker engine's host into the container. - `-v /host/path:/path/to/data/directory`. For instance this, will mount the host directory `/host/geonetwork-docker` into `/var/lib/geonetwork` on the container:

```console
$ docker run --name some-geonetwork -d -p 8080:8080 -e DATA_DIR=/var/lib/geonetwork/data -e GEONETWORK_DB_NAME=/var/lib/geonetwork/db/gn -v /host/geonetwork-docker:/var/lib/geonetwork geonetwork
```

## ... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose)

Example `stack.yml` for `geonetwork`:

```yaml
# GeoNetwork
#
# Access via "http://localhost:8080/geonetwork" (or "http://$(docker-machine ip):8080/geonetwork" if using docker-machine)
#
# Default user: admin
# Default password: admin

version: '3.1'
services:

  geonetwork:
    image: geonetwork
    restart: always
    ports:
      - 8080:8080
    environment:
      DATA_DIR: /var/lib/geonetwork_data
    volumes:
      - geonetwork:/var/lib/geonetwork_data

volumes:
  geonetwork:
```

[![Try in PWD](https://github.com/play-with-docker/stacks/raw/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=https://raw.githubusercontent.com/docker-library/docs/9efeec18b6b2ed232cf0fbd3914b6211e16e242c/geonetwork/stack.yml)

Run `docker stack deploy -c stack.yml geonetwork` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080/geonetwork`, `http://localhost:8080/geonetwork`, or `http://host-ip:8080/geonetwork` (as appropriate).

## Default credentials

After installation a default user with name `admin` and password `admin` is created. Use this credentials to start with. It is recommended to update the default password after installation.

# Image Variants

The `geonetwork` images come in many flavors, each designed for a specific use case.

## `geonetwork:<version>`

This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of.

By default, an H2 database is configured and created when the application first starts. If you are interested in a database engine other than H2, please have a look at other image variants.

## `geonetwork:postgres`

This image gives support for using [PostgreSQL](https://www.postgresql.org/) as database engine for geonetwork. When you start the container, a database is created, and it is populated by geonetwork, once it starts.

Please note that this image **does not ship** the postgres database server itself, but it gives you the option to link to a container running postgres, or to connect to a postgres instance using its ip address. If you are looking for a self-contained installation of geonetwork, **including the database engine**, please have a look at the default image variant.

In order to setup the connection from geonetwork, you **must** inject the following variables into the container: - `POSTGRES_DB_USERNAME`: postgres user on your database server (must have permission to create databases) - `POSTGRES_DB_PASSWORD`: postgres password on your database server

If your postgres instance is listening on a non-standard port, you must also set that variable: - `POSTGRES_DB_PORT`: postgres port on your database server (defaults to `5432`)

### Connecting to a postgres database

If you want to connect to a postgres server, you need to pass an extra environment variable, `POSTGRES_DB_HOST`, containing the address of this server.

If you want to connect to an **external database server**, you can use either the IP address or the DNS as `POSTGRES_DB_HOST`. For instance, if the server is running on `mydns.net`, on port `5434`, the username is `postgres` and the password is `mysecretpassword`:

```console
$ docker run --name geonetwork -d -p 8080:8080 -e POSTGRES_DB_HOST=mydns.net -e POSTGRES_DB_PORT=5434 -e POSTGRES_DB_USERNAME=postgres -e POSTGRES_DB_PASSWORD=mysecretpassword -e POSTGRES_DB_NAME=mydbname geonetwork:postgres
```

If are want to **run postgres on a container**, you can use the container name as `POSTGRES_DB_HOST`: just make sure that containers can discover each other, by **running them in the same user-defined network**. For instance, you can create a bridge network:

```console
$ docker network create --driver bridge mynet
```

Then if you want to run the official image of postgres, using `some-postgres` as container name, you could launch it like this:

```console
$ docker run --name some-postgres --network=mynet -d postgres
```

And then you could launch geonetwork, making sure you join the same network, and setting the required environment variables, including the `POSTGRES_DB_HOST`:

```console
$ docker run --name geonetwork -d -p 8080:8080 --network=mynet -e POSTGRES_DB_HOST=some-postgres -e POSTGRES_DB_PORT=5432 -e POSTGRES_DB_USERNAME=postgres -e POSTGRES_DB_PASSWORD=mysecretpassword  -e POSTGRES_DB_NAME=mydbname geonetwork:postgres
```

#### Configuration environment variables

These are some environments variables that can be set to configure the database connection:

-	`POSTGRES_DB_HOST`: database host name.
-	`POSTGRES_DB_PORT`: port where database server is listening (by default `5432`).
-	`POSTGRES_DB_NAME`: name of the database. If it doesn't exist the container will try to create it.
-	`POSTGRES_DB_USERNAME`: username.
-	`POSTGRES_DB_PASSWORD`: password.

# License

View [license information](http://www.geonetwork-opensource.org/manuals/trunk/eng/users/overview/license.html) for the software contained in this image.

As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).

Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `geonetwork/` directory](https://github.com/docker-library/repo-info/tree/master/repos/geonetwork).

As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within.


Ecologist Jasmine Saros (University of Maine, Orono) and her team of researchers are studying diatoms in lakes in southwestern Greenland to understand how climate change is affecting this Arctic ecosystem. Diatoms are a type of algae that responds rapidly to environmental change and leaves a fossil in lake sediments. Part of the research involves the use of a SolarBee, an instrument that causes mixing in water layers. The SolarBee reintroduces oxygen into the water and breaks up layers that are formed in the spring, when increased solar exposure results in an increase in algae growth.
Recently, Saros's team traveled to Greenland to conduct some SolarBee maintenance and sent back these pictures from the field.
A helicopter lifts the SolarBee so researchers can examine the instrument.
After an examination and maintenance, the SolarBee was ready to be placed back in the water.
An aerial view of one lake included in Soros's study. She is studying diatoms for insights into environmental change in the Arctic.


text:
Verso Books
Verso authors pick their favorite books of the year
Reading recommendations from our authors.
As 2021 wraps up we asked Verso authors to choose a book they read this year that made an impact on their thinking, brought them joy, or that they would simply whole-heartedly recommend.
Don't forget: ALL Verso books are 40% off until January 4 as part of our end of year sale.
Enzo Traverso, author of Revolution: An Intellectual History:
In 2021, the anniversary of the Paris Commune gave rise to a wave of books in many languages. My preferred one – and my favorite reading of the year – is an original and beautiful dictionary edited by Michel Cordillot, La Commune de Paris 1981: Les acteurs, les événements, les lieux (Paris: Editions de l'Atelier, 2020). Bringing together dozens of contributions, this extraordinary book helps us to discover, far beyond the handful of canonized figures, a multitude of unknown and forgotten actors, and to contextualize and reassess a number of crucial events (from the birth of the Commune itself to the bloody week of its tragic defeat). In it we admire many portraits and photos, scrutinize several official documents; and we are guided through the labyrinth of the ideological, political, aesthetic, and literary currents that conducted and shaped this experience. Finally, we learn the history of the Commune memory and of its various historical interpretations across the last century and a half. Many commonplaces fall, most notably the vision of the Commune as a prefiguration of October 1917. The Commune involved all the currents of the left – socialists, anarchists, republicans, and radical democrats – and its actors did not feel themselves to be heroes or martyrs; they were ordinary people – laboring women and men, bohemian artists and writers – who had suddenly become subjects of history and taken their destiny into their own hands. Throughout its 1,438 pages, this book shows the incredible diversity, dazzling richness, and meaningful legacy of such an event. The opposite of a boring dictionary, Michel Cordillot's book is neither a monument nor a cold archive – it is the living portrait of a revolution that still speaks to us.
Laurie Laybourn-Langton, co-author of Planet on Fire: A Manifesto for the Age of Environmental Breakdown:
Empireland: How Imperialism Has Shaped Modern Britain (Viking, 2021). The environmental crisis is not a problem of the last 5 or 50 years, but the last five hundred. You cannot understand the bind the world is now in without understanding the inseparable, exploitative histories of empire, capitalism, and environmental harm. Ten generations on from the advent of imperialism, its latest phase sees the barbarism of the gunboat and the slaver succeeded by that of the Category 5 cyclone and the Frontex patrol drone. So it is imperative that an appreciation of this history - in Britain of all places - forms part of mainstream politics. Empireland is one of the latest, greatest examples of the effort to do exactly this and Sanghera's recent companion documentary, Empire State of Mind, goes even further in popularising a relatable history of Britain's imperial past. While other books go deeper into the depths of the relationship between capitalism and empire, this book complements them by touching on different angles to broaden the appeal of facing a past that sears our present and future - and can productively become part of our politics.
Stella Dadzie, author of A Kick in the Belly: Women, Slavery and Resistance:
Coolie Woman: The Odyssey of Indenture by Gaiutra Bahadur (Hurst, 2016). By weaving the story of her great-grandmother, who gave birth on a ship to Guyana in 1903, into the wider story of indentured women from India, the author unearths yet another hidden 'herstory'. She also shines a fierce light on Empire, and the myriad ways the lives of indentured women overlapped with those of the recently enslaved. To me, this is women's history at its zenith.
Geo Maher, author of A World Without Police: How Strong Communities Make Cops Obsolete:
Border and Rule: Global Migration, Capitalism, and the Rise of Racist Nationalism by Harsha Walia (Haymarket, 2021). Longtime organizer and organic intellectual Harsha Walia has given us one of the best books ever written about borders, in part because it is about much more. Rather than see borders as mere things, Walia charts their dynamic formation as both producer and product of colonial-racial hierarchies, alerting us in the process to their role as a powerful fulcrum for global capital and generator of fascisms in the present. It's on my Spring syllabus.
Ewa Majewska, author of Feminist Antifascism: Counterpublics of the Common:
Anti-Gender Politics in the Populist Moment by Agnieszka Graff and Elżbieta Korolczuk (Routledge, 2021). I pick this book not because it is a pleasure to read it. Unfortunately, it is not a pleasure, and we find no consolation in it either, it is in many ways a very difficult book, although it also offers hope. The Authors confront us with the international networks of anti-gender activism across the globe, the networks which could be called "The fascist International", although the Authors of the book decided not to use the word fascism to depict them. Graff and Korolczuk guide us through statements, organizations, meetings And publications of today's right-wing movements, meticulously reconstructing their arguments, aims and tactics. This book proves necessary for any study of today's antifascism. It also shows the importance of feminist and queer perspectives in diagnosing, opposing and dismantling today's fascist politics. I am sure that this academic reconstruction and analysis of the right-wing will inspire and strengthen antifascist resistance. It will also constitute a relevant, contextualized answer to the constant efforts to marginalize feminist and queer thought and activism in antifascist politics. I am grateful to the Authors for the synthetic image they created of the politics that needs to be opposed. Their call for a leftist, feminist populism, is a necessary one. Knowing their academic and activist work for many years now, only makes my praise for their book stronger, as it testifies their genuine engagement in the making of feminist solidarity today. Thanx to their inspiring work we can move forward.
Kyle Lewis and Will Stronge, authors of Overtime: Why We Need A Shorter Working Week:
Despite tough competition, including Nunes' fantastic Neither Vertical Nor Horizontal, our pick for 2021 has to be Phil Jones' Work Without the Worker (Verso, 2021). Phil is really out on his own in this field and the book is as original as any we've read on the topic. There is such a scarcity of knowledge around microwork and how labour-saving technology often forges human material into 'supplement' labour. Refusing humanist or neo-Luddite stances towards work however, the spirit of Work Without the Worker urges us to consider the absurdity of labour within today's capitalism in general: the anatomy of the clickworker is key to the waged worker.
Gavin Mueller, author of Breaking Things at Work: The Luddites Are Right About Why You Hate Your Job:
Value (What is Political Economy?) by Frederick Harry Pitts (Polity, 2021). "Value" is one of the most important concepts in economics, one that Marx deeply focused upon in his analysis of capitalist society. However there is a great deal of disagreement and confusion over the term, even among Marxists. In this handy book, Frederick Harry Pitts reconstructs debates over value within political economy, sociology, and critical theory, carefully weighing the analytical and political implications. Useful both as an introduction to value theory and as a reference for experts, Value is a book I anticipate coming back often as a teaching tool and as an aid for my own work.
Alexander R. Galloway, author of Uncomputable: Play and Politics in the Long Digital Age:
Discriminating Data: Correlation, Neighborhoods, and the New Politics of Recognition by Wendy Hui Kyong Chun (Cambridge, MIT, 2021). I remember snickering when Chris Anderson announced "The End of Theory" in 2008. Writing in Wired magazine, Anderson claimed that the structure of knowledge had inverted. It wasn't that models and principles revealed the facts of the world, but the reverse, that the data of the world spoke their truth unassisted. Anderson's simple conclusion was that "correlation supersedes causation...correlation is enough." Wendy Chun's excellent new book shows the social and political shortcomings of a contemporary technical infrastructure built around correlation, including the algorithms driving social media, search, consumer tracking, AI, and many other things. As Chun argues, power today operates through likeness, similarity, and correlated identity ("homophily"). Tech bros hope that by ignoring difference they can overcome it. Yet for Chun the attempt to find an unmarked category of subjectivity will necessarily erase and exclude those structurally denied access to the universal. Correlation isn't enough. It ratifies the past rather than reimagining the present. Chun ends with an eloquent call to acknowledge "a world that resonates with and in difference."
Stuart Jeffries, author of Everything, All the Time, Everywhere: How We Became Postmodern:
Free: Coming of Age at the End of History by Lea Ypi (Allen Lane, 2021; W. W. Norton, 2022 in the US). Like a Balkan Jojo Rabbit, little Lea Ypi was as a kid in thrall to an evil dictator. In this memoir of her Albanian childhood, she recalls hugging the legs of statue of Stalin, only to look up and see that rioters had chopped off beloved Uncle Joe's head. The rest of this brilliantly observed, politically nuanced and – best of all – funny book tells the story of how she disabused herself of her faith in Stalinist Communism, as well as the heretical Albanian version of Marx propagated by Enver Hoxha, as her homeland dreamed of becoming as "free" and consumerist as western Europe before collapsing during the late 1990s into gangsterdom. There's a tremendous sense of Albanian secrets and lies coming to the surface, not least of all when she realises her Islamic heritage long suppressed under state socialism, and her parents' ancestral links to pre-socialist Albanian movers and shakers. What's especially appealing about the book, written by a professor who now teaches Marx at the London School of Economics. is how she is neither seduced by ostalgie for a time before the consumer society nor by the likes of Francis Fukuyama, who took the end of the cold war to argue that western liberalism, with all its materialist delusions and hubis, represents the realisation of what it is to be free. Professor Ypi is too savvy to get fooled again.
David McDermott Hughes, author of Who Owns the Wind? Climate Crisis and the Hope of Renewable Energy:
Andreas Malm's new book How to Blow up a Pipeline (Verso, 2021) really rocked my world this year. The case for environmentalist, anti-industrial sabotage has been made before, of course. Edward Abbey stands out in that regard. Somehow, environmentalists have lost that hard edge, first succumbing to legality and then coming positively to value it. Malm explains this history of movements in a way that – to my mind – amply justifies the destruction of property in the fossil fuel sector. He's caused me to rethink my own forms of activism. I've even added the book – mid-semester – to my course on energy and culture.
Mark Neocleous, author of A Critical Theory of Police Power: The Fabrication of the Social Order:
The book that has stayed with me most from 2021 was Sexual Hegemony: Statecraft, Sodomy, and Capital in the Rise of the World System by Christopher Chitty (Duke University Press, 2020). Chitty elaborates the history of sodomy in Europe and the plethora of police powers ranged against it. Much of the detail was fascinating, for example the 'Officers of the Night' established in Florence in the late-fifteenth century for the express purpose of prosecuting male homosexuality. But as well as powerfully documenting the history of sexual hegemony, Chitty develops a queer realism in conjunction with an open Marxism that enables him to read the policing of sodomy in terms of shifting class relations, and thus the very category of homosexuality as a category of bourgeois society. And as a kind of Marxist 'history of sexuality', one of the provocative undercurrents in the book is a nuanced rethinking of Foucault's relation to Marx and Marxism. The book is also radically incomplete, in that it was unfinished before Chitty's suicide - the final published version was put together by his friends from various notes and draft chapters. This gives the book a remarkable intellectual openness, though one somewhat overshadowed by the loss of a such a sharp thinker.
Mitchell Dean, author of The Last Man Takes LSD: Foucault and the End of Revolution:
The Invention of Sicily: A Mediterranean History by Jamie Mackay (Verso, 2021). Compulsory reading for first-time visitors and those who think they know the island – no, continent – at the centre of the Mediterranean.
Mark McGurl, author of Everything and Less: The Novel in the Age of Amazon:
2021 was the year I found time to read Martin Hägglund's masterwork of existential and political philosophy This Life: Secular Faith and Spiritual Freedom (Pantheon, 2019). I found it a profoundly orienting and inspiring book, defusing at least for a moment my usual impulses toward darkly comic despair. Whether we will find a way to act upon its insights is another matter, but one can at least hope that Hägglund's relentlessly rigorous arguments for democratic socialism will someday win out. It is a book built to last as long as that might take.
Andreas Malm, author of How to Blow Up a Pipeline: Learning to Fight in a World on Fire and co-author of White Skin, Black Fuel: On the Danger of Fossil Fascism:
In this historical moment, the best novel of the year is always written by an Arab. Or so it seems to me. In 2019, it was The Parisian by Isabella Hammad; in 2020, Minor Detail by Adiana Shibli; this year, it is What Strange Paradise: A novel by Omar El Akkad (Knopf, 2021), a tale about a Syrian boy who finds himself on an overcrowded refugee boat in that liquid graveyard we know as the Mediterranean. A girl receives him on an unnamed island. With propulsive force and an exquisite symmetrical structure, What Strange Paradise pulls the reader to the incandescent point where two lines meet. I have revenge fantasies about forcing every Priti Patel and Jimmie Åkesson of this continent into a dark cellar, where they will have to listen to the audio version of this novel blaring out of loudspeakers. If there is a smidge of humanity left in them, they should stagger into the light.
But the novel that made the greatest impact on me this year is written by a Jew, more precisely a Soviet Jew: Vasily Grossman. I read Life and Fate some time ago and only now corked up the prequel, Stalingrad (NYRB Classics, 2019) which does not express the same committed anti-Stalinism; to the contrary, this is a bottle of anti-fascist Stalinism vintage 1943. Worst of all is a section of Stakhanovite panegyrics to work in the coal mines. Even so, it's impossible not to surrender, devour, gulp down, get intoxicated. Will literature with something approaching the grandeur of this ever be written again? The power of the prose, the animation of the characters, the intensity of the horror and endurance, the swarm of socialist humanity on the march – all of this makes Grossman fly higher than any other twentieth-century novelist I have read. I mourn the end of Stalingrad like the passing of a close friend. If I can keep them in a cellar for a long night, I would play this one too: a reminder of how things can end.
Katherine Angel, author of Tomorrow Sex Will Be Good Again: Women and Desire in the Age of Consent:
This year I loved reading Deborah Levy's Real Estate: A Living Autobiography (Bloomsbury, 2021), a meditation on women, property, and age – on what we own and bequeath -- in Levy's lovely, conversational prose. Olivia Laing's Everybody was fascinating and gorgeous. Three books circling power, violence, and sex that I loved reading were Jacqueline Rose's On Violence and On Violence Against Women, Amia Srinivasan's The Right To Sex, and Alexandra Brodsky's Sexual Justice: Supporting Victims, Ensuring Due Process, and Resisting the Conservative Backlash. Camille Kouchner's La Familia Grande, about abuse in the elite of French society, was a gut-punch. I adored Mattilda B Sycamore's The Freezer Door: the book really lives out questions about identity and community that so often surface as mere questions. Nick Blackburn's The Reactor (out in 2022), about grief, nuclear reactors, and psychoanalysis, is mesmerising. And Samuel Fisher's novel Wivenhoe (also out in 2022) got my heart racing on the first page: it's eerie and beautiful.
Mathew Lawrence, co-author of Planet on Fire: A Manifesto for the Age of Environmental Breakdown:
When Ever Green blocked the Suez Canal, it was the ship that launched a thousand memes. In Sinews of War and Trade: Shipping and Capitalism in the Arabian Peninsula (Verso, 2021), Laleh Khalili traces how shipping is central to the fabric of global capitalism - and the interconnection of Anglo-American imperialism and Gulf autocracies in the construction of the maritime economy.
As the pandemic further consolidates lethal border regimes, Harsha Walia's account of the migration crisis and function of borders traces their root: instead showing them to be the inevitable outcomes of conquest, capitalist globalization, and climate change generating mass dispossession worldwide.
Last year, I was blown away by Greg Grandin's The End of the Myth, tracing the constitutive role violence has played in the formation of America's continental empire. In Our History is the Future, Nick Estes - advocate of the Red Deal - beautifully explores the traditions of Indigenous resistance to that long violence.
Amber Husain's debut, Replace Me, is at once a razor-sharp and wide-ranging critique of the physic harm of neoliberalism and a powerful affirmation of the potential for political transformation in an age of replaceability. White Skin, Black Fuel is an extraordinary contribution from the Zetkin Collective.
Ranging from the autobahns of the Third Reich to the contemporary far-Right's evolving climate politics, it dazzlingly traces the deep and entwined connection between fossil capital and fascism. At once a warning and a guide, it shows the constellation of forces that ecosocialist movements must overcome. Not strictly a book of this year, but Dan Georgakas, author of, Detroit: I Do Mind Dying, recently passed away. The book is a genuine must-read.
Verso Staff Picks 2021
40% off all our books! See more here
Verso Gift Guide: books to ignite radical ideas
2021 End of Year Highlights
Radical Futures: books to help us re-imagine new futures
The Year in 10 Books: we pick 10 unmissable books from this year
COP26: a radical climate reading list
Abolition is the only solution: a reading list for breaking police power
I Do Not Dream of Labour: books that imagine a different working world
by Enzo Traverso
Medium Design
by Keller Easterling
How to Blow Up a Pipeline
by Andreas Malm
by Stella Dadzie
Planet on Fire
by Mathew Lawrence and Laurie Laybourn-Langton
A World Without Police
by Geo Maher
Feminist Antifascism
by Ewa Majewska
by Kyle Lewis and Will Stronge
Breaking Things at Work
by Gavin Mueller
Uncomputable
by Alexander Galloway
Everything, All the Time, Everywhere
by Stuart Jeffries
Everything and Less
by Mark McGurl
Who Owns the Wind?
by David McDermott Hughes
A Critical Theory of Police Power
by Mark Neocleous
The Last Man Takes LSD
by Mitchell Dean and Daniel Zamora
White Skin, Black Fuel
by Andreas Malm and The Zetkin Collective

redpajama_set_name: RedPajamaCommonCrawl


When you hear the words "British fashion", what first comes to mind? For me, it's an imagined version of Savile Row at the height of the 19th century. It's bustling with fine gentlemen (and their curious wives) popping into the tailors' shops up and down the golden mile, getting fitted for suits and dinner jackets and fine, tweedy overcoats….


text:
Q: Java - Network application- Real-Time What are recommended strategies for building Java application that will be run on "desktop", not in browser. Characteristics of the application would be:
1. Multiple application instances would be running on different machines
 2. Applications must communicate in real-time (if one user make changes,
in another application data must be refreshed)

A: you want to look into using sockets, TCP or UDP, and also figure out if you want a central authoritative server ( what if two users change the same thing in different ways, whose data is saved?)
read this article from Oracle/Java hereJava Custom Networking

A: Do you want to create a networking application maybe? based on sockets and so on? Regarding your 2 questions, I have implemented that scenario some time ago and I am working in something similar for my job, it is not complex at all, but I will answer to you according the two issues that concern to you.

*

*Multiple application instances would be run on different machines.

If you are going to install an instance of the application in the people's desktop, I'd suggest to be very careful with "paths", do not hard code any path, since the resources loading will be dynamic.
Check carefully what is the network architecture in which your application will be installed. Maybe it is just a LAN, or maybe it will work in a big network and access through VPN, etc. Check what is the scenario.
Once you make sure your application works fine in different machines without any path conflict or resource loading conflict, you can export your jar, generate it using maven, ant, etc.
Also, if you want to move forward, you can create an installer using any Install wizard creation and create a batch file (.exe) for Windows or (.sh) for Linux distr. But these are only suggestions for the installation stage.
On the other hand, if you wanna execute the application as a Java desktop but using an URL to launch it, you can take a look to JNLP.

*Applications must communicate in real-time (if one user make changes, then other will be able to see that)

If you want to do that, you will need, for sure, a server to provide and store information. The server can be a physical machine set up in the office or a remote one.
You have two options here:
Use Java Networking: Create an application that works as a server that provides and saves the information (it should be a concurrent environment since many people will perform transactions or queries over it). Check how can you create a basic server - client application using Sockets to understand better how it works and then you will not have problems to add the complexity of the requirements your environment demands.
You can simply, develop a Java REST Based application and make your Client application connect to the machine (or machines if you plan to implement load balancing) and consume those REST. You can take a look to Jersey libraries in order to implement your scenario. Make sure to add security to these Web Services and make the server private access for the network in which your application instances will work.
Well, that's what I can tell you regarding the scenario you try to implement, based on what I've done and what I'm doing now so far.
Maybe if you need additional or further information, you can reply in the comments, and it will be great to help you.
Regards and happy coding :)

redpajama_set_name: RedPajamaStackExchange


Combining the Victorian tradition of waxed flowers with the modern translucent beauty of lucite, our Posey Comb offers something old and something new in one beautiful piece. Topped off with a optional silk butterfly. Designed and handmade with love in Toronto by Antonia at The Loved One. Silk butterfly made just for us by the amazing Clementine at Miss Clemmie Bridal Accessories in England.
We'd love to collaborate with you to create a one-of-a-kind piece incorporating some of your favourite flowers. Please contact custom@thelovedone.ca for more details.


text:
Q: itextsharp getbookmarks() truncates large titles I am trying to extract the bookmarks of a pdf and then split the pdf using them.
Now, One of the bookmarks has a 276 character long title but the "Title" key of the dictionary has the first 264 characters only.
How do I overcome this issue?
The version of itextsharp is 2.0.50727
Edit
Having the same issue with 5.4.2


text:
import { ProxyUtils } from '../utils';
import { IProxyContext, IProxySettings } from '../interfaces';
import { ISPRequest } from 'sp-request';
import { IAuthResponse } from 'node-sp-auth';
import { Request, Response, NextFunction } from 'express';

export class CsomRouter {

  private spr: ISPRequest;
  private ctx: IProxyContext;
  private settings: IProxySettings;
  private util: ProxyUtils;

  constructor (context: IProxyContext, settings: IProxySettings) {
    this.ctx = context;
    this.settings = settings;
    this.util = new ProxyUtils(this.ctx);
  }

  public router = (req: Request, res: Response, next?: NextFunction) => {
    let endpointUrl = this.util.buildEndpointUrl(req.originalUrl);
    this.spr = this.util.getCachedRequest(this.spr);

    if (!this.settings.silentMode) {
      console.log('\nPOST: ' + endpointUrl);
    }

    let regExpOrigin = new RegExp(req.headers.origin as any, 'g');
    let csomPackage = '';
    req.on('data', (chunk) => {
      csomPackage += chunk;
    });
    req.on('end', () => {

      Promise.all([
        this.spr.requestDigest((endpointUrl).split('/_vti_bin')[0]),
        this.util.getAuthOptions()
      ])
        .then((response: any) => {

          let digest: string = response[0];
          let opt: IAuthResponse = response[1];

          let headers = {
            ...opt.headers,
            'Accept': '*/*',
            'Content-Type': 'text/xml',
            'X-Requested-With': 'XMLHttpRequest',
            'X-RequestDigest': digest,
            'Content-Length': csomPackage.length
          };

          return this.spr.post(endpointUrl, {
            headers: headers,
            body: csomPackage,
            json: false,
            agent: this.util.isUrlHttps(endpointUrl) ? this.settings.agent : undefined
          });
        })
        .then((response: any) => {
          if (this.settings.debugOutput) {
            console.log(response.statusCode, response.body);
          }
          res.send(response.body);
          res.end();
        })
        .catch((err: any) => {
          res.status(err.statusCode);
          res.json(err);
        });
    });
  }
}

redpajama_set_name: RedPajamaGithub


We had a very enjoyable morning and raised money for St. Vincent De Paul.
Exhibition at the Riverview Centre as part of Bandon Engage Festival earlier in the year.
Our Christmas Exhibition at Mary Rose's last year, which was a great success.


text:
package org.leguan.language.file.structured;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.function.Predicate;

public class ContentNodeHolder extends ContentNode {

  private List<ContentNode> subnodes = new ArrayList<ContentNode>();

  private final String openingToken;

  private String closingToken;

  private String indention = "";

  private String gapNameAndBlock = "";

  public ContentNodeHolder (final AbstractStructuredFile structuredFile, final ContentNodeHolder parent, final String openingToken, final String closingToken, final String tokenizer, final String name) {
    super(structuredFile, parent, name, tokenizer);

    this.openingToken = openingToken;
    this.closingToken = closingToken;
  }

  public List<ContentNode> getSubnodes() {
    return subnodes;
  }

  public void addTextNode (String text) {
    addTextNodes(Arrays.asList(text));
  }

  public ContentNodeHolder createOrFindContentNodeHolder (String query) {

    if (query.trim().isEmpty())
      return this;

    ContentNodeHolder currentContentHolder = this;

    List<String> queryTokens = Arrays.asList(query.split("\\."));

    for (String nextToken: queryTokens) {
      ContentNodeHolder foundContentNodeHolder = currentContentHolder.findContentNodeHolder(nextToken);
      if (foundContentNodeHolder == null) {
        foundContentNodeHolder = new ContentNodeHolder(getStructuredFile(), currentContentHolder, getStructuredFile().getOpeningToken(), getStructuredFile().getClosingToken(), getStructuredFile().getNextToken(), nextToken);
        if (!currentContentHolder.getName().equals("root")) //not the root
          foundContentNodeHolder.setIndention(currentContentHolder.getIndention() + "  ");
        foundContentNodeHolder.setGapNameAndBlock(" ");
        foundContentNodeHolder.getSubnodes().add(new ContentNodeText(getStructuredFile(), foundContentNodeHolder, "", getStructuredFile().getNextToken()));

        if (getStructuredFile().getContentNodeHolderSorter() != null) {
          int indexToAdd = getStructuredFile().getContentNodeHolderSorter().getIndex(currentContentHolder, nextToken);
          currentContentHolder.getSubnodes().add(indexToAdd, foundContentNodeHolder);
        }
        else
          currentContentHolder.getSubnodes().add(foundContentNodeHolder);
      }

      currentContentHolder = foundContentNodeHolder;

    }

    return currentContentHolder;
  }

  /**
   * adds text nodes to the current holders (filters duplicates)
   * @param texts  textlines
   */
  public void addTextNodes (final Collection<String> texts) {
    addTextNodes(texts, true);
  }

  /**
   * adds text nodes to the current holders at the end of the file
   *
   * @param texts               textlines
   * @param filterDuplicates    flag if duplicate lines should be filtered
   */
  public void addTextNodes (final Collection<String> texts, final boolean filterDuplicates) {
    String additionalIdention = getName().equals("root") ? "" : "  ";
    if (texts == null || texts.isEmpty())
      return;

    String nextNode = getStructuredFile() != null ? getStructuredFile().getNextToken() : "";
    for (String next: texts) {
      if (! filterDuplicates || ! isTextAvailable(next)) {
        getSubnodes().add(new ContentNodeText(getStructuredFile(), this, getIndention() + additionalIdention + next, nextNode));
      }
    }

    if (getStructuredFile() != null && getStructuredFile().getContentNodeTextSorter() != null) {
      getStructuredFile().getContentNodeTextSorter().sort(this);
    }
  }

  /**
   * adds text nodes to the current holders at the start of the file
   *
   * @param texts               textlines
   * @param filterDuplicates    flag if duplicate lines should be filtered
   */
  public void addTextNodesStart (final Collection<String> texts, final boolean filterDuplicates) {
    List<String> reversed = new ArrayList<>(texts);
    Collections.reverse(reversed);
    String additionalIdention = getName().equals("root") ? "" : "  ";
    if (texts == null || texts.isEmpty())
      return;

    String nextNode = getStructuredFile() != null ? getStructuredFile().getNextToken() : "";
    for (String next: reversed) {
      if (! filterDuplicates || ! isTextAvailable(next)) {
        getSubnodes().add(0, new ContentNodeText(getStructuredFile(), this, getIndention() + additionalIdention + next, nextNode));
      }
    }

    if (getStructuredFile() != null && getStructuredFile().getContentNodeTextSorter() != null) {
      getStructuredFile().getContentNodeTextSorter().sort(this);
    }
  }

  /**
   * adds text nodes to the current holders at the start of the file
   *
   * @param texts               textlines
   * @param filterDuplicates    flag if duplicate lines should be filtered
   * @param toIndex             index where the text node should be added to
   */
  public void addTextNodesIndex (final Collection<String> texts, final boolean filterDuplicates, int toIndex) {
    List<String> reversed = new ArrayList<>(texts);
    Collections.reverse(reversed);
    String additionalIdention = getName().equals("root") ? "" : "  ";
    if (texts == null || texts.isEmpty())
      return;

    String nextNode = getStructuredFile() != null ? getStructuredFile().getNextToken() : "";
    for (String next: reversed) {
      if (! filterDuplicates || ! isTextAvailable(next)) {
        getSubnodes().add(toIndex, new ContentNodeText(getStructuredFile(), this, getIndention() + additionalIdention + next, nextNode));
      }
    }

    if (getStructuredFile() != null && getStructuredFile().getContentNodeTextSorter() != null) {
      getStructuredFile().getContentNodeTextSorter().sort(this);
    }
  }

  private boolean isTextAvailable (final String text) {
    if (getStructuredFile() != null)
      if (text.trim().equals(getStructuredFile().getOpeningToken()) || text.trim().equals(getStructuredFile().getClosingToken()))
      return false;

    for (ContentNodeText next: findContentTextNodes()) {
      if (next.getContent().trim().equals(text.trim()))
        return true;
    }
    return false;

  }

  public void addTextNodes (final ContentNodeHolder contentNodeHolder) {
    if (contentNodeHolder == null)
      return;
    getSubnodes().addAll(contentNodeHolder.getSubnodes());
  }

  public List<String> getDirectContent () {
    List<String> content = new ArrayList<>();

    for (ContentNode next: getSubnodes()) {
      if (next instanceof ContentNodeText) {
        if (! content.isEmpty() || !next.toString().trim().isEmpty())
          content.add(next.toString());
      }
    }

    return content;

  }

  public List<String> getContent () {
    List<String> content = new ArrayList<>();

    for (ContentNode next: getSubnodes()) {
      if (next instanceof ContentNodeText) {
        if (! content.isEmpty() || !next.toString().trim().isEmpty())
          content.add(((ContentNodeText) next).getContent());
      }
      else { //next instanceof ContentNodeHolder
        content.addAll(Arrays.asList(next.toString().split("\n")));
      }
    }

    return content;

  }

  public String toString () {
    StringBuilder builder = new StringBuilder();

    if (! getName().equals("root"))
      builder.append(indention + getName() + gapNameAndBlock);

    builder.append(getOpeningToken() != null ? getOpeningToken() : "");
    for (ContentNode next: getSubnodes()) {
      if (next.isEmpty() && getStructuredFile().trimEmptyBlocks())
        continue;

      builder.append(next.toString());
    }
    if (builder.toString().endsWith("\n"))
      builder.append(indention);

    builder.append(getClosingToken() != null ? getClosingToken() : "");
    if (! getName().equals("root") && ! builder.toString().endsWith("\n"))
      builder.append("\n");
    return builder.toString();
  }

  public String getOpeningToken() {
    return openingToken;
  }

  public String getClosingToken() {
    return closingToken;
  }

  public void setClosingToken(String closingToken) {
    this.closingToken = closingToken;
  }

  public List<ContentNodeHolder> findContentHolderNodesRecursive() {
    List<ContentNodeHolder> allHolders = new ArrayList<ContentNodeHolder>();
    for (ContentNode next: getSubnodes()) {
      if (next instanceof ContentNodeHolder) {
        ContentNodeHolder nextContentNodeHolder = (ContentNodeHolder) next;
        allHolders.add(nextContentNodeHolder);
        allHolders.addAll(nextContentNodeHolder.findContentHolderNodesRecursive());
      }
    }

    if (getParentHolder() == null)
      allHolders.add(this);

    return allHolders;
  }

  public List<ContentNodeText> findContentTextNodesRecursive() {
    List<ContentNodeText> allNodes = new ArrayList<ContentNodeText>();
    for (ContentNode next: getSubnodes()) {
      if (next instanceof ContentNodeHolder) {
        ContentNodeHolder nextContentNodeHolder = (ContentNodeHolder) next;
        allNodes.addAll(nextContentNodeHolder.findContentTextNodesRecursive());
      }
      else
        allNodes.add((ContentNodeText) next);
    }

    return allNodes;
  }

  public List<ContentNodeHolder> findContentHolderNodes() {
    List<ContentNodeHolder> allHolders = new ArrayList<ContentNodeHolder>();
    for (ContentNode next: getSubnodes()) {
      if (next instanceof ContentNodeHolder) {
        ContentNodeHolder nextContentNodeHolder = (ContentNodeHolder) next;
        allHolders.add(nextContentNodeHolder);
      }
    }

    return allHolders;
  }

  public List<ContentNodeText> findContentTextNodes() {
    List<ContentNodeText> allNodes = new ArrayList<ContentNodeText>();
    for (ContentNode next: getSubnodes()) {
      if (next instanceof ContentNodeText)
        allNodes.add((ContentNodeText) next);
    }

    return allNodes;
  }

  public ContentNodeText findContentNodeText (final Predicate<String> textLookup) {
    for (ContentNode next: getSubnodes()) {
      if (next instanceof ContentNodeText) {
        ContentNodeText contentNodeText = (ContentNodeText) next;
        if (textLookup.test(contentNodeText.getContent()))
          return contentNodeText;
      }
    }

    return null;

  }

  public boolean addOrReplaceGenericText(final Predicate<String> replacementLookup, final String replacement) {
    ContentNodeText contentNodeText = findContentNodeText(replacementLookup);
    if (contentNodeText != null) {
      contentNodeText.setContent(replacement);
    }
    else
      addTextNode(replacement);

    return contentNodeText != null;
  }

  public ContentNodeHolder findContentNodeHolder(final String query)  {

    if (query.trim().isEmpty())
      return this;

    List<String> queryTokens = Arrays.asList(query.split("\\."));

    for (ContentNode next: getSubnodes()) {
      if (next.getName() != null && next.getName().equals(queryTokens.iterator().next()) && next instanceof ContentNodeHolder) {
        ContentNodeHolder subHolder = (ContentNodeHolder) next;
        List<String> subqueries = queryTokens.subList(1, queryTokens.size());
        return subHolder.findContentNodeHolder(String.join(".", subqueries));

      }
    }

    return null;
  }

  public ContentNodeHolderContainer createNodeHolderContainer () {
    return new ContentNodeHolderContainer(findContentHolderNodesRecursive());
  }

  public ContentNodeTextContainer createNodeTextContainer () {
    return new ContentNodeTextContainer(findContentTextNodesRecursive());

  }

  public String getId() {

    StringBuilder stringBuilder = new StringBuilder();
    ContentNodeHolder currentHolder = this;
    while (currentHolder != null) {
      if (stringBuilder.length() > 0)
        stringBuilder.insert(0, ".");

      stringBuilder.insert(0, currentHolder.getName());

      currentHolder = currentHolder.getParentHolder();
    }

    String id = stringBuilder.toString();
    if (id.startsWith("root."))
      id = id.substring(5);

    return id;
  }

  public String getIndention() {
    return indention;
  }

  public void setIndention(String indention) {
    this.indention = indention;
  }

  public String getGapNameAndBlock() {
    return gapNameAndBlock;
  }

  public void setGapNameAndBlock(String gapNameAndBlock) {
    this.gapNameAndBlock = gapNameAndBlock;
  }

  /**
   * {@inheritDoc}
   */
  @Override public void setText(String newText) {
    setName(newText);
  }

  /**
   * {@inheritDoc}
   */
  @Override public String getText() {
    return getName();
  }

  /**
   * {@inheritDoc}
   */
  @Override
  public boolean isEmpty() {
    if (getSubnodes().isEmpty())
      return true;
    if (getSubnodes().size() == 1 && getSubnodes().get(0).toString().trim().isEmpty())
      return true;
    return false;
  }

}


Home » Unknown Type » Hip Heart Jeans with a High Waist Distressed Design, These are FUN!
Hip Heart Jeans with a High Waist Distressed Design, These are FUN!
Your a Star Jeans! FUN FUN FUN! Jeans with Star Design!


Welcome Eric Kuhlmann, AIA, LEED AP who became a team member in June 2018. Eric is a registered architect with 20 years of experience in varying project types including: single and multi-family residential, industrial, religious, water resources, aviation, education, and municipal sectors. His experience extends from pre-design through construction phase services. He's earned both a Bachelors and Masters degree in architecture from the University of Buffalo and has taught construction technology courses at the undergraduate and graduate levels. He expertly manages the needs of numerous project stakeholders, coordinates all disciplines and leads the design team in an efficient, communicative and well-coordinated manner. Eric likes to spend time off with his wife, taking care of their 220 year-old antique home, and their dog Fergus.


text:
The Crazies theatrical trailer
America goes wild.
By James Rundle	 02-10-09 4,498
The first trailer for The Crazies has been released, and it looks to be a cross between a traditional slasher and M Night Shyamalan's The Happening, by what's revealed in the footage. Event films are in vogue at the moment, after all, and director Breck Eisner seems to have embraced this whole heartedly.
The trailer is embedded below, through YouTube.
The Crazies is directed by Breck Eisner and features Timothy Olyphant, Danielle Panabaker, Radha Mitchell and Joe Anderson. The film is a remake of George A Romero's 1973 film of the same name, which centres on the accidental release of a military biological weapon on a small town that drive its inhabitants into a murderous rage. The Crazies is set for a 26 February 2010 release.
Tags: The Crazies, Trailers


text:
Home Gaming Everything Announced Today at the PlayStation 5 Showcase
Everything Announced Today at the PlayStation 5 Showcase
ReploidNo9
Today Sony hosted their online showcase to announce their upcoming console, and the games that will be available at launch and beyond! As gamers eagerly await the November 22nd release of Sony's next-gen console the price for both disc-based and disk-less all digital versions of the PS5 still remains a mystery. Furthermore, until today, we had still yet to see what games would accompany the consoles at launch. The wait is over! Or, at least, part of it. Here's everything announced today at the PlayStation 5 showcase!
The show kicked off with a fantastic look at Square Enix's latest entry into the FINAL FANTASY series with FINAL FANTASY XVI! No release date was announced so we can only assume that it is still very early in development.
We got a closer look at gameplay footage for Spider-Man: Miles Morales. A game scheduled to launch this holiday. The gameplay footage promises more of what made the original Spider-Man game so great. Miles Morales features an all-new storyline, all-new abilities, and a graphic overhaul set to take advantage of the PS5.
We're going back to the wizarding world of Hogwarts. Set in the 1800s, long before the events of Harry Potter and Co., Hogwarts Legacy looks to be an epic adventure where your decisions shape your journey.
CALL OF DUTY: BLACK OPS – COLD WAR
We got another insanely over-the-top gameplay and cinematic look at Treyarch's upcoming Call of Duty – Black Ops: Cold War. Not only that, but this Friday PS4 players can begin playing the multiplayer Alpha.
RESIDENT EVIL VIII: VILLAGE
Resident Evil VIII returns to its horror roots with its latest upcoming installment. Resident Evil VIII: Village is looking more like IV than any of its other predecessors.
The recently delayed Deathloop, intended to be a launch title, premiered another trailer in which we received additional story elements featured in the game. Deathloop is now scheduled to release in Q2 2021.
Devil May Cry 5 Special Edition will be getting a digital release on PS5 at launch.
ODDWORLD: SOULSTORM
The latest installment in the Oddworld franchise is coming to PS5. The platforming adventure Oddworld Soulstorm will arrive later this year.
The horror game that found its following on mobile devices is getting a full-blown game for PS5. Five NightS at Freddy's Security Breach still has no release date.
Sony highlighted the highly anticipated Demon's Souls remake for PS5. Demon's Souls has been rebuilt from the ground up for next-gen and it looks beautiful! Demon's Souls will be a launch title for the PS5.
Fortnite. Yes, more Fortnite. Fortnite will be available on launch day.
Even More Surprises!
In a move that seems right out of the Microsoft Playbook, Sony announced the PlayStation Plus Collection. A collection of games that included God of War, Detroit: Become Human, and more will be available to PS5 members at launch!
And in a surprise move, Sony announced their newest iteration in the God of War series. God of War: Ragnarok has officially been announced and is coming in 2021!
Finally, the price. Sony finally unveiled that the PS5 will retail for $499.99 USD and $399.99 USD for the Digital Edition. Pre-orders will go live tomorrow morning on all major retailers!
Everything Announced During Sony's PlayStation 5 Event
PlayStation 5 Rumor-Round Up
Previous articleEvery Game on Xbox Cloud Gaming
Next articleGeForce 30 Series Graphics Cards Are Here
Hardcore Gamer. Music Producer. Tech Nerd.


text:
Eavesdropping at the Movies: 302 – In the Heights
July 14, 2021 Eavesdropping at the Movies, podcastCorey Hawkins, Hamilton, In the Heights, Lin-Manuel Miranda, Musical, New York, Podcasts and tagged Anthony Ramos, Quiara Alegría HudesNotesonFilm1
Listen on the players above, Apple Podcasts, Google Podcasts, or Spotify.
Before Lin-Manuel Miranda shot to fame in the mid-2010s with Hamilton, he had already enjoyed success with his 2005 musical, In the Heights, with a book by Quiara Alegría Hudes, winning four Tonys for its Broadway production in 2008. Set in Washington Heights, a largely Dominican neighbourhood in Upper Manhattan, it now comes to cinemas, following the lives, struggles and dreams of its inhabitants, who simply cannot stop singing.
Well, singing and rapping – and it's the rapping that shines, Miranda's lyrics as witty and intricate as those in Hamilton, while the singing is less impressive, and the domain of the film's women, who Mike wishes had been given the opportunity to rap. We discuss our disappointment in the direction – the film is full of visual ideas that aren't executed to their fullest potential – and its relationship to the cultures and peoples it portrays.
In the Heights has its flaws, but despite them, it's an immensely likeable portrait of life in its locale, José in particular, an immigrant to North America himself, recognising a lot of what it depicts and loving the way it shows off the cultures around which it's based. We pick fault with it, because that's what we do, but don't let that stop you from seeing and enjoying it.
← Eavesdropping at the Movies: 301 – Come and See Hou Hsiao-hsien 20: Contexts 11 – The Terrorizers (Edward Yang, 1986) →


text:
Mor Dagor est un groupe de death metal allemand, originaire d'Essen. Le nom du groupe s'inspire du Sindarin imaginé par J. R. R. Tolkien.

Biographie
Mor Dagor se forme en 1996 autour du batteur Torturer, du chanteur Grond et du guitariste T. Après deux ans, Grond et T. sont remplacés par Beast et Pestilence. Avec ses nouveaux membres, le groupe sort un mini-CD Bloodstream.

Avec Lord Ashtaroth, bassiste d'origine belge, le groupe fait des concerts jusqu'en  au moment de la sortie du premier album Human Execution. Malgré l'entrée de Torturer dans le groupe Belphegor, le groupe fait une grande tournée européenne en compagnie de Cirith Gorgor et Asmodeus. En 2004, Lord Ashtaroth quitte le groupe alors qu'il est en train d'enregistrer la suite de Human Execution. L'album Necropedophilia sort cependant peu après. L'année suivante, Mor Dagor publie un split-EP avec Cirith Gorgor. Beast part.

En 2006, le groupe a pour membres Schmied et Impaler. Il commence à travailler sur Mk. IV, enregistré et produit par Andy Classen à Stage One Studio. L'album paraît le . Pestilence s'en va et est remplacé un an après par Lykanthrop. En  débute une tournée avec Dawn of Fate.

En 2012, Mor Dagor participe au Kings of Black Metal Festival à Alsfeld. Après quelques concerts en 2013, le groupe annonce une suite à Mk. IV, sur laquelle elle commence à travailler en décembre, une nouvelle fois auprès d'Andy Classen au Stage One Studio. Redeemer arrive en 2015.

Discographie
 2000 : Bloodstream (mini-CD)
 2001 : Human Execution (album)
 2004 : Necropedophilia (album)
 2005 : Memento Mori (split-EP avec Cirith Gorgor)
 2009 : Mk. IV (album)
 2015 : Redeemer (album)

Notes et références

Liens externes

Groupe allemand de death metal
Groupe allemand de black metal
Groupe musical formé en 1996

redpajama_set_name: RedPajamaWikipedia


As I watched the sun set over the Castle of St. Peter, I thought "this is my kind of place" – with the history, natural beauty and great weather all coming together perfectly. For a map of places visited in Turkey, click here.
The sun sets over St. Peter's castle in Bodrum.
The city of Bodrum and the Bodrum peninsula are on the southwest coast of Turkey, with many beautiful coves, beaches and historic sites. No wonder this is a hot spot with well-heeled Turks.
A view of the beach at Bodrum.
As with many locations we visited, it would be easy to make Bodrum your base for a week or more to take advantage of all the things to see and do—water sports, day long cruises to nearby islands and beaches, start (or end) a 3-4 day gulet (wooden sailboat) cruise along the southern coast, visit ancient ruins in the town of Bodrum, or hike around the intriguing brackish Lake Bafa with its ancient and Byzantine ruins nearby, and take (long) day trips to the Roman ruins of Ephesus and Hierapolis if desired.
A street scene in Bodrum.
The history of Bodrum dates back to ancient times, and it lays claim to one of the ancient world wonders, the Mausoleum (355 BC, named for King Mausolus) which stood nearly intact for 1,900 years until the crusaders decided (very unfortunately) that the ancient stone would make great building blocks for things like St. Peter's Castle.
The view of the harbor and Castle of St. Peter from our hotel.
Our hotel (Angora) had a rooftop pool with a great view of the harbor and Castle of St. Peter. The only downside of the hotel was the Halikarnas disco next door, with music blaring until the wee hours of the morning. This is a hot spot with many locals coming here to party. There are beaches right in and near the town and the pedestrian walkway along the shore makes an enjoyable stroll with many restaurants and shops.
The beaches of Bodrum, right next to many restaurants and shops.
The main sight in Bodrum is the Castle of St. Peter, which sits on an isthmus dividing the two main bays of Bodrum.
From the shipwreck, scientists have reconstructed what this 14th century BC ship must have looked like.
One of the many displays of artifacts from ancient shipwrecks in the Castle museum.
The castle was built by the Knights of St. John in 1406, and now houses a very good maritime museum, with all kinds of treasures (coins, glassware, gold, weapons, etc.) found in area shipwrecks including the oldest shipwreck ever discovered (14th century BC). Some rooms (such as the English Tower) are decorated from the medieval period. The castle entry fee was 20 TL per person (about 1.8 TL per USD).
The dungeon of the castle, way down a dark set of steps – note the poor fellow with his arms out of the grate in the floor–not a fun place to be.
The interior of the English Tower at the Castle of St. Peter.
Add Bodrum to your must do list of places to visit in Turkey.
Posted in Turkey and tagged Bodrum, Bodrum Peninsula, Castle of St. Peter, Turkey Travel on June 2, 2013 by Paul Terry.


Wanted: Something that's meaningful and unique, but also sustainable and not too resource-intensive. Shopping for eco-friendly gifts can be tricky, but it's worth the effort. Show someone special – and the earth -- that you care with recycled gifts, organic gifts and other green gift ideas.


text:
Q: On symmetric tensors with same rank, different orders Let $A,B$ be two symmetric tensors of same rank $m$; and orders $k$ and $\ell$, respectively. In particular, assume that $A,B$ admits the following structure: There exists $v_1,\dots,v_m\in\mathbb{R}^n$, such that,
$$
A=\sum_{j=1}^m \underbrace{v_j\otimes v_j\otimes \cdots \otimes v_j}_{k\text{ times}} \quad\text{and}\quad B=\sum_{j=1}^m \underbrace{v_j\otimes v_j\otimes \cdots \otimes v_j}_{\ell\text{ times}}.
$$
My question is about characterizing these objects.
1) Let $A=\sum_{j=1}^{N_1}\omega_j\otimes\cdots\otimes \omega_j$ and $B=\sum_{j=1}^{N_2}\xi_j\otimes\cdots\otimes \xi_j$ be two decompositions of $A$ and $B$. What can we say about the collections $\{\omega_j\}$ and $\{\xi_j\}$? That is, I know essentially that $A$ and $B$ are two symmetric tensors of same rank, different orders; constructed from the same family. Then, does this say anything about any decomposition of them?
2) In general, how can we encode this knowledge into a constraint involving $A$ and $B$ (such as convex or polyhedral constraint)?
Some Progress
a) If I assume there exists a $\lambda$ such that $\langle v_j,e\rangle =\lambda$ for every $j$ (where $e$ is a vector of all ones), then I can construct a linear relation between $A$ and $B$ (that is, a set of polyhedral constraints, relating each element of $B$ as sum of several elements of $A$).
b) In case of $k=2$ and $\ell=1$, we do not have general identifiability: The tensors $A$ and $B$ are essentially $V^T V$ and $e^T V$ where $V$ is a $m\times n$ matrix whose rows are $v_j$, and $e$ is a vector of all ones. It is easy to cook up examples $V_1,V_2$ where $V_1^T V_1 = V_2^T V_2$, but $e^T V_1\neq e^T V_2$. This makes me think some further condition must be assumed in order to say more. Am I right on this?


Personal Relations began its European tour last week, opening in London on 6th December at the Cello factory. The private view, which took place on the 9th was well turned out with artists and friends from each of the three European artists groups – The London Group, Pulchri Studio, and This is Not Art – who contributed to the show attending.
The London opening of Personal Relations had a celebratory feeling, lots of potential for cross-pollination of ideas, opportunities to meet other creatives, and of course, wine!
150 artists showed work, all within the limits of the miniature portrait frame, as we found in interview with some of the artists, this brief proved challenging but ultimately led to brand new approaches and modes of working.
(The interviews will be all included in a collective video which will be available in 2017).
It's been great fun meeting artists with such a different background and experience: you can actually see the approach of the 100 years old London group compared to the youngest Italians.
The diversity of the work shown was striking; upon entering the show the uniformity of the hanging and dimensions proved neat and attractive to the eye which was then drawn in by the plethora of styles and media. Alongside traditional practices were digital works, photography, video, and my personal favourite, the wall mounted sculptures that found their way into the show.
The exhibition in London has been open until last Friday, and it's now packed up to continue its journey, opening at Pulchri Studio, The Hague on 25th February where it may be viewed until 29th March.
The show then moves on to The Mirror Gallery, Vicenzia, where it will be open from 29th April until 4th June. Follow our journey with the hashtag #PersonalRelations!
Thank you for this record! It was fun and exciting! So many interesting people and exciting ART!!
Thank you for arranging and displaying all the work and the WORKS – A Very Merry CHRISTMAS!
Amazing Colette! Many thanks for your comment and your appreciation. Hope to see you in Italy in April.


text:
Where's Your Head At Basement Jaxx Download 'Where's Your Head At' on iTunes
#CapitalJBB
More Capital FM
Six Times The #CapitalSTB Family Stanned Each Other
5 June 2019, 06:00 | Updated: 5 June 2019, 16:17
The #CapitalSTB family have stanned each other. Picture: PA Images (L); Twitter (R)
Promoted by Apple Music
From surprise on-stage collaborations, to loving antics backstage, Capital's Summertime Ball's family have seriously supported each other in the past.
Capital's Summertime Ball have seen some of the world's biggest stars - from Taylor Swift to will.i.am - stanning their fellow Ballers in the greatest ways.
Listen: Capital's Summertime Ball Playlist Exclusively On Apple Music
Along with Apple Music, we've looked back at some of our favourite times when the #CapitalSTB family really have come together.
When Charlie Puth wore a Liam Payne personalised tee
It's clear that there's no bromance quite like the one between Charlie Puth and One Direction's Liam Payne.
The 'Strip That Down' singer actually personally made a t-shirt with his face on it for Charlie Puth, after he borrowed Charlie's hoodie and forgot to return it.
We didn't expect the bromance to be so powerful as it got, after Charlie wore it for his entire #CapitalSTB set.
When Usher brought out Justin Bieber and will.i.am to perform with him
Nine years ago, Usher invited superstars, Justin Bieber and will.i.am to perform with him on stage during his set.
And the best part? It was a total surprise to everyone at Capital's Summertime Ball.
We rate legends supporting legends like this...
Justin Bieber joined Usher on stage at Capital's Summertime Ball 2010. Picture: PA Images
When Taylor Swift dueted with her buddy, Ed Sheeran
If you didn't know that Taylor Swift and Ed Sheeran were close mates, you must be living under a rock.
But what you may not know is that Ed wanted to help the 'Shake It Off' singer so badly, that he joined her on stage to perform their duet, 'Everything Has Changed', together.
And to think, sometimes I can't even get a mate to text me back.
Taylor Swift and Ed Sheeran sang together at Capital's Summertime Ball. Picture: PA Images
When Camila Cabello sang 'Havana' in the style of fellow Baller, Sean Paul
'Havana' is easily one of Camila Cabello's biggest songs, so you can't be more honoured than having her sing the song while impersonating you.
That's what she did for Sean Paul, who was also performing at the #CapitalSTB that year.
While catching up with Roman Kemp, Camila also sang as Niall Horan, Sia and Cardi B.
When Jonas Blue invited HRVY to do the biggest performance of his life
Despite recording the song 'Mama' with William Singe, Jonas Blue took to Capital's Summertime Ball stage in 2018 with a different featured vocalist.
Jonas supported his good mate, HRVY, by inviting him to perform at Wembley Stadium with him.
This would have made it HRVY's biggest performance. Get you a mate who loves you like Jonas loves HRVY.
When Zara Larsson agreed to marry Roman Kemp
When it comes to the #CapitalSTB family loving each other, you can't forget about Zara Larsson, one of the loveliest gals in pop.
She's so lovely, in fact, that Roman Kemp had to get down on one knee and propose... Only for the 'Lush Life' singer to agree.
(Don't panic, Brian - it was, of course, a prank, but you can't help but agree with Roman and stan Zara, right?)
I said yes!!!! pic.twitter.com/iBTVN2CFM6
— Zara Larsson (@zaralarsson) June 10, 2017


text:
Eirmocides limbata is een vlinder uit de familie van de Lycaenidae. De wetenschappelijke naam van de soort is voor het eerst gepubliceerd in 1963 door Gerald Edward Tite.

De soort komt voor in Westelijk Nieuw-Guinea.

Lycaenidae
Dier uit het Australaziatisch gebied


14.6.2014Now you can pay also by PayPal!!!
21.11.2013The Rasmus Live-2012 DVD available now,limited edition so be quick! Lot of new t-shirt designs etc. from The Rasmus,to you or buy for precent!
19.7.2013New items like t-shirts,poster flags from Motörhead,Mötley Crue,Kiss,Metallica etc.
18.5.2013Brand new itä-saksa shirts now in store!


text:
Home > PHSW > BIOSTATISTICS_FAC > 9
Department of Biostatistics Faculty Publications
A ten-year comparison of women authorship in U.S. dermatology literature, 1999 vs. 2009
Shali Zhang, Emory University
Ha-Young Kim, Emory University
Rachel E.S. Hill, Emory University
Emir Veledar, Department of Biostatistics, Florida International UniversityFollow
Suephy C. Chen, Emory University; Atlanta Veterans Administration Medical Center
Women are entering medicine at increasing rates, particularly in dermatology. In this study, we compared women's influence and status in academic dermatology with that of men by examining authorship roles in peer-reviewed dermatology literature.Weexamined the literature in2009 and compared that to10 years prior (1999).Atotal of 1399 articles were reviewed, 594 of whichmet study criteria andwere included in statistical analysis. There was amarked increase in senior female authorship over a decade (22% vs. 38%, p b 0.001). Female first authorship increased as well (41% vs. 51%, p b 0.001). In contrast, changes in male senior and first authorship were not statistically significant. Federal funding for female senior authors increased over a decade (19% vs. 37%, p=0.05), and female senior authors in the 2009 cohort were more likely to hold a dual MD/PhD degree (0% vs. 11%, p=0.04) or pure PhD degree (11% vs. 27%, p = 0.04).Women are approaching parity with men in terms of authorship in the dermatology literature, and additional research training and attainment of federal funding have helped women publish as senior authors.
Originally published in International Journal of Women's Dermatology.
A ten-year comparison of women authorship in U.S. dermatology literature, 1999 vs. 2009 Zhang, Shali et al. International Journal of Women's Dermatology , Volume 2 , Issue 1 , 1 - 4
Biostatistics Commons
10.1016/j.ijwd.2015.10.003
In Copyright - Non-Commmercial Use Permitted. URI: http://rightsstatements.org/vocab/InC-NC/1.0/
This Item is protected by copyright and/or related rights. You are free to use this Item in any way that is permitted by the copyright and related rights legislation that applies to your use. In addition, no permission is required from the rights-holder(s) for non-commercial uses. For other uses you need to obtain permission from the rights-holder(s).


InTrust simplifies how you search, analyze and maintain IT data ? no matter where it lives ? while helping you save on storage costs. And InTrust's long-term event log repository also help you stay in compliance with event log requirements (HIPAA, SOX, PCI, FISMA, etc.).
InTrust is one of the leading log management solutions in the market and for good reason. InTrust simplifies the way you search, analyze, and maintain critical data and saves you money at the same time. InTrust single interface means you're collecting, storing, searching, and analyzing huge amounts of IT data from numerous sources and devices from one place. And InTrust's smart storage compression also saves you storage costs with its long-term event log repository. InTrust also speeds security investigations and audits, troubleshoots system issues, and helps you comply with event log requirements for HIPAA, SOC, PCI, FISMA, GDPR, and more. Reduce the time it takes to search, analyze, and maintain critical IT data, no matter where it lives. Learn more about InTrust today.


Note: Certain pages within the "Solar" category are updated frequently. Excluding warning notifications, update intervals will be specified where applicable.
To refresh the page, hold down the "SHIFT" key and click the "Refresh" or "Reload" button on your browser to refresh this page to obtain latest data.


Mashed potatoes topped with a creamy homestyle gravy with turkey, onion, celery, parsley, spinach, garlic & carrots.
White rice & wild rice with chicken, asparagus and a citrus zest in flavor.
Asian style flavors with noodles, chicken, vegetables and whole roasted peanuts.
Pasta with a creamy three cheese sauce & zucchini.
A deliciously spicy chicken gumbo with chicken, sweet corn, bell peppers, okra, onion, & celery.
A simple and delicious chicken pasta in a creamy tomato sauce with vegetables.
Hickory smoked barbecue sauce mixes sweetly with chicken, rice & beans.
Sweetened with honey & pineapple this chicken & rice dish includes vegetables & classic oriental spices.
A light sour cream sauce compliments this hearty turkey, rice & vegetable dish.


"Nagle is the first Silver City resident to register for Project Lifesaver, a new program operated by the Silver City Police Department that uses a state-of-the-art locator bracelet system to track missing Alzheimer's patients.
The bracelets transmit an FM frequency and work with a receiver operated by the Police Department. Should a person wearing the bracelet become lost, the receiver would be activated, and the individual would be located within minutes, according to Capt. Chris Ponce.
Not RFID in a traditional sense, but an interesting take on wearable computers, and the pragmatic uses of location and ID technology.


Building on the runaway success of TS2 & TS3 drivers as the most popular golf drivers on the PGA Tour, Titleist introduces the Titleist TS4, a new model born out of the Titleist Speed Project that provides speed and distance gains to golfers seeking ultra-low spin performance off the tee.
The new TS4, making its debut this week at the Valero Texas Open, is engineered to be an ultra low-spin, high-speed driver– challenging the notion that a driver designed for extreme spin reduction can't produce this level of ball speed.
Available in golf shops and fitting locations beginning in late June, TS4 merges technologies developed through the Titleist Speed Project, a two-year Titleist R&D mission to deconstruct driver and fairway metal designs and rebuild them both from scratch, designing greater speed into every detail. The TS4 is the latest realization of these efforts, featuring a low, forward CG that neutralizes spin to produce a longer, more piercing ball flight.
Ultra-Thin Titanium Crown:The thinnest cast titanium crown (20% thinner than 917 drivers) in the game allows weight to be redistributed low and forward for reduced spin.
Thinner, Faster Face:The fastest face Titleist has ever made – a refined Radial VFT (variable face thickness) that reduces weight – delivers faster ball speeds and increased forgiveness. Every TS driver face undergoes a 100% CT inspection to ensure speed performance is at the maximum allowable limit.
Streamlined Shape:The aerodynamic design of TS4 – featuring a 430cc classic, pear shape – reduces drag, allowing golfers to swing faster for increased club head speed and more distance.
Low, Forward CG:The low and forward CG position (5mm forward vs. TS2) – highlighted by the placement of the SureFit Flatweight– produces ultra-low spin for a piercing ball flight that is straighter and more consistent.
Premium Stock Shafts:Making its market debut with the launch of Titleist TS4 drivers is the new Project X HZRDUS Smoke Yellow,featuring a counterbalanced profile for low launch and low spin. Golfers can also choose from the same four aftermarket shaft models as TS2 and TS3 – Even Flow T1100 White 65 (Low launch and spin), HZRDUS Smoke Black 60 (Low/mid launch and spin), TENSEI AV Series Blue 55 (Mid launch and spin) and KURO KAGE Black Dual Core 50 (High launch and moderate spin). In addition, Titleist offers an industry-leading number of custom shaft choices.
Titleist TS4 drivers will be available in golf shops and fitting locations beginning in late June. Available in 8.5, 9.5 (RH & LH) and 10.5 lofts.


text:
id: a7bf700cd123b9a54eef01d5
title: No Repeats Please
challengeType: 5
forumTopicId: 16037
---

## Description

Return the number of total permutations of the provided string that don't have repeated consecutive letters. Assume that all characters in the provided string are each unique.
For example, aab should return 2 because it has 6 total permutations (aab, aab, aba, aba, baa, baa), but only 2 of them (aba and aba) don't have the same letter (in this case a) repeating.
Remember to use Read-Search-Ask if you get stuck. Try to pair program. Write your own code.

## Instructions

## Tests

```yml
tests:
  - text: <code>permAlone("aab")</code> should return a number.
    testString: assert.isNumber(permAlone('aab'));
  - text: <code>permAlone("aab")</code> should return 2.
    testString: assert.strictEqual(permAlone('aab'), 2);
  - text: <code>permAlone("aaa")</code> should return 0.
    testString: assert.strictEqual(permAlone('aaa'), 0);
  - text: <code>permAlone("aabb")</code> should return 8.
    testString: assert.strictEqual(permAlone('aabb'), 8);
  - text: <code>permAlone("abcdefa")</code> should return 3600.
    testString: assert.strictEqual(permAlone('abcdefa'), 3600);
  - text: <code>permAlone("abfdefa")</code> should return 2640.
    testString: assert.strictEqual(permAlone('abfdefa'), 2640);
  - text: <code>permAlone("zzzzzzzz")</code> should return 0.
    testString: assert.strictEqual(permAlone('zzzzzzzz'), 0);
  - text: <code>permAlone("a")</code> should return 1.
    testString: assert.strictEqual(permAlone('a'), 1);
  - text: <code>permAlone("aaab")</code> should return 0.
    testString: assert.strictEqual(permAlone('aaab'), 0);
  - text: <code>permAlone("aaabb")</code> should return 12.
    testString: assert.strictEqual(permAlone('aaabb'), 12);

```

## Challenge Seed

```js
function permAlone(str) {
  return str;
}

permAlone('aab');
```

## Solution

```js
function permAlone(str) {
  return permutor(str).filter(function(perm) {
    return !perm.match(/(.)\1/g);
  }).length;
}

function permutor(str) {
  // http://staff.roguecc.edu/JMiller/JavaScript/permute.html
  //permArr: Global array which holds the list of permutations
  //usedChars: Global utility array which holds a list of "currently-in-use" characters
  var permArr = [], usedChars = [];
  function permute(input) {
    //convert input into a char array (one element for each character)
    var i, ch, chars = input.split("");
    for (i = 0; i < chars.length; i++) {
      //get and remove character at index "i" from char array
      ch = chars.splice(i, 1);
      //add removed character to the end of used characters
      usedChars.push(ch);
      //when there are no more characters left in char array to add, add used chars to list of permutations
      if (chars.length === 0) permArr[permArr.length] = usedChars.join("");
      //send characters (minus the removed one from above) from char array to be permuted
      permute(chars.join(""));
      //add removed character back into char array in original position
      chars.splice(i, 0, ch);
      //remove the last character used off the end of used characters array
      usedChars.pop();
    }
  }
  permute(str);
  return permArr;
}

permAlone('aab');

```


My name is Zhi Hao. I live with my parents. I have one sister. I help at home by sweeping. I am in Grade 1. I am currently enrolled in primary school and my favourite subject is mathematics. I like to jump rope. I am in good health.


Sten Skogmar & Johan Tham, 2018 Jul 31, In : BMC Infectious Diseases. 18, 1, 359.
Magnus Paulsson, Che, K. F., Jonas Ahl, Johan Tham, Sandblad, L., Smith, M. E., Qvarfordt, I., Su, Y. C., Lindén, A. & Kristian Riesbeck, 2018 Jul 13, In : Frontiers in Microbiology. 9, JUL, 1559.
Peny, V., Fredrik Månsson, Fredrik Resman, Jonas Ahl & Johan Tham, 2017 Oct 1, In : PLoS ONE. 12, 10, e0186514.


text:
Dr. Senthil Selvaraj Wins 2019 IANC Research Fellowship Award
In: Membership
ASNC congratulates Senthil Selvaraj, MD, recipient of the prestigious Institute for the Advancement of Nuclear Cardiology (IANC) Research Fellowship Award. The award will be presented at ASNC2019, Sept. 12-15, in Chicago.
Dr. Selvaraj's research proposal "Comparison of the Short-Term Effect of Dietary Carbohydrate Restriction Versus Exogenous Ketone Supplementation on Myocardial Glucose Suppression and Timing to Achieve a State of Ketosis Using Serial Imaging on a State-of-the Art Total-Body PET System" aims to compare dietary modification versus exogenous therapy to achieve ketosis that will optimize PET imaging for cardiac sarcoid as well as identify serum metabolic markers that can be used to confirm appropriate suppression of myocardial glucose uptake to improve the detection of cardiac sarcoid.
The IANC Research Fellowship Award was established to encourage and support careers in nuclear cardiology research while growing the science of cardiac imaging and advancing the specialty. Dr. Selvaraj's proposal was selected among "several excellent research proposals submitted by early investigators," notes ASNC President Rob Beanlands, MD, FASNC. "The grant review committee had a challenging time identifying the most meritorious grant from all of the applications. The quality of these grants are the product of hard work and intellectual curiosity on the part of the applicants and great support from their mentors. I hope that the ASNC community will continue to support the mission of the IANC to develop the future leaders of nuclear cardiology."
Dr. Selvaraj is a cardiology fellow at the Hospital of the University of Pennsylvania. He will present the finding of his research at ASNC2020, Sept. 24-27 in Washington, D.C.
Krishna Patel, MD, who received the first IANC Research Fellowship Award in 2018, will share the outcomes of her research project, "Patient-centered Reporting in Myocardial Perfusion Imaging: Development and Pilot-testing a Framework for Incorporating Patient-centered Decision Support in MPI Reports" at ASNC2019. Don't miss her presentation on Friday, Sept. 13, in the session "Machine Learning in SPECT MPI Applications." Learn more about Dr. Patel's work.


text:
angular.module('myApp.visualisation').component('bargraph', {
    bindings: { value: "=" },
    controllerAs: "vm",
    templateUrl: 'shared/bargraph/bargraph.html',
    controller: ['$scope', '$rootScope', function($scope, $rootScope){

        var vm = this;

        // EVENT BINDING OVER GLOBAL SCOPE CAPTURES WHEN OUR PROMISE HAS RETURNED WITH DATA OVER API CALL
        $rootScope.$on('new-author-pushed', function () {

            function getSeries(){

                var series = [];
                angular.forEach(vm.value, function(val){
                    series.push({
                        name: val.author,
                        data: [val.comment_karma, val.link_karma]
                    })
                }, vm);

                return series;
            }

            Highcharts.chart('bargraph-container', {
                chart: {
                    type: 'bar'
                },
                title: {
                    text: 'Stacked bar chart'
                },
                xAxis: {
                    categories: ['comment_karma', 'link_karma']
                },
                yAxis: {
                    min: 0,
                    title: {
                        text: 'Total fruit consumption'
                    }
                },
                legend: {
                    reversed: true
                },
                plotOptions: {
                    series: {
                        stacking: 'normal'
                    }
                },
                series: getSeries()
            });

        })
    }]
});


Time in Puerto Vallarta, Mexico. What time is it in Puerto Vallarta right now?
Daylight saving time is in effect in Puerto Vallarta.
See recent and expected DST changes in Puerto Vallarta in the table below.


The island's beautiful coral reef and warm Indian Ocean water affords Kuramathi with a wealth of water based activities to enjoy during your stay. The 9 restaurants and 6 bars provide a potpourri of flavours and perfect place take in this wonderful island.
The Spa at Kuramathi Island Resort offers a tranquil spa set in the heart of the resort, surrounded by private lush gardens with Ocean views. There is 13 treatment rooms, with 1 couples water pavilion massage room and 2 couples beach pavilion massage and tatami rooms. There is also a beauty care couples room and a manicure and pedicure couples room. As well as an additional 7 beach side couples room you can retreat to the private herbal bath treatment room.
As well as a riveting menu of spa delights you can make use of the facilities in the spa, which include male and female wet areas, rain showers, Herbal Essence steam bath, Finnish sauna, cool dip pool and Jacuzzi. Enjoy a welcome herbal tea in the Spa Lounge before your treatment, giving you a relaxing time from beginning to end.
Thrilling adventures are aplenty with the selection of aquatic sports provided on the sparkling lagoon at Kuramathi. For a serene experience the catamaran cruises, sailing and glass-bottomed boat trips are a great way to see the island.
For the more energetic guests wake boarding, rowing, windsurfing and kayaking are all great options and for the really daring the water skiing, banana rides and fun tubes are ideal for those looking for a true thrill.
With kaleidoscopic marine life and sparkling reefs scuba diving and snorkelling at Kuramathi is a real highlight. There are two diving centres on the island for you to choose from with friendly instructors on hand to help you along the way and direct you to the best diving spots. The Rasdhoo divers offer many different types of diving courses for all abilities where you will have the opportunity to see a vast array of fish including: turtles, rays, barracuda, mantas and numerous types of sharks.
Kuramathi is also blessed by having world-famous Hammerhead Shark Point a mere eight minutes away by boat – one of the few remaining places in the world where you can still see these magnificent creatures.
Together with our resident Marine Biologist, spend a couple of hours exploring the vibrant corals and underwater life around the outer reefs of Rasdhoo, Madivaru and Madivaru Finolhu. This excursion is recommended for experienced snorkellers only. Do remember your snorkelling equipment!
Big game fishing in the bountiful Maldivian seas is quite an unforgettable experience. If you are an enthusiastic fisherman, you will certain enjoy our modern boat 'Rainbow Runner' with its comfortable seats and sundeck over the roof. The catch varies depending on the time of the year, but big fish such as Wahoo, Barracuda and Sailfish can be caught. We fully support 'tag and release' policies and encourage all guests not to take more than one bill fish (sailfish, marlin or sword fish).
A must do! Take this chance to enjoy fiery Maldivian sunsets with a glass of sparkling wine. Don't forget to take your cameras, as you may just bump into some dolphins.
At Kuramathi there is a host of options when it comes to sporting and recreational activities to keep you entertained. Kuramathi's modern fitness centre features state-of-the-art equipment to help you maintain you fitness and reach all of you goals during your time at the resort.
Kuramathi features a floodlit tennis court along with table tennis, volleyball and football being some of the sports you might want to take advantage of and with the resort catering for.
This is a full day trip and your chance to explore a bit of the Maldives. During this trip, we visit a local fishing village (Thoddoo or Ukulhas), another resort (Veligandu) and an idyllic deserted island (Madivaru) for a barbecue lunch and some snorkelling. Do remember to take your snorkelling gear. When visiting local islands, we ask all ladies to cover their shoulders and thighs.
Rasdhoo is the capital city of North Ari Atoll. Visit the island for a glimpse of local lifestyle and culture, or for some souvenir shopping. We ask all ladies to cover their shoulders and thighs when visiting Rasdhoo.
Coral Romance (Overnight Excursion) – a patch of paradise!
For ultimate relaxation, tranquillity and some pampering, take a trip to the heavenly island of Kandholhu, reached 45 minutes by speedboat. Surrounded by a stunning beach, this small and lush island boasts one of the most beautiful house reefs in the Maldives.


EAST MOLINE-- Glenview Middle School hosted annual 'gBay' shopping auction.
Think of it as the school's version of 'eBay'. Over 1,000 students are allowed to come and bid on items that have been donated. This year, students had over 400 gifts to bid on. The price for each item starts at 25 cents, but organizer Gaye Dunn says items can go for a couple dollars.
"I think they have a great time doing it," Dunn said.
The annual school auction allows students to build money management skills as well as find affordable gifts in time for the holiday season. All the money raised from the shopping auction will go to the school's Builder's Club, an extracurricular social service group sponsored by Kiwanis. This year, Dunn and the club will donate the auction money to Glenview families in need.
"We're able to give families $20 gift cards, Dunn said. "For items like food or Christmas gifts."
Students have two days to bid on the items.
"If I bid on something now then Other people are going to want to bid on it," student Kohen Landry said. "I'm waiting on the cheapest price."
Counselor Dunn will then announce the winner of each item and get them to the new owner.
This will be Dunn's last year to host 'gBay', but she still plans to participate.
"I'll probably be donating items to get rid of," Dunn said.


text:
Why Content Matters in Search Engine Optimisation
by Anton Koekemoer | Mar 20, 2018 | SEO
Just how important is content when it comes to Search Engine Optimisation? Often seen as the icing on the cake rather than the foundation of any successful cake recipe, content is treated as an after-thought by many businesses. In reality, content plays a vital role in how your website ranks. Without quality content, you may find it a lot harder to see results from your Search Engine Optimisation strategies.
The Role of Content in Search Engine Optimisation
While content trends come and go, a few things remain the same. When it comes to the role that content plays in Search Engine Optimisation, the following benefits outline how important good content is to rank.
Content helps to provide intent
As Google continues to move towards mobile-first indexing, intent has become more important than ever. A decade ago, searches included web and mobile. Today, mobile searches outnumber desktop searches. This has changed the way that people find information. Google defines the new way of finding information micro-moments, which are defined as I-want-to-know, I-want-to-go, I-want-to-do and I-want-to-buy moments. Content that is optimised for mobile and web searches provides intent, which in turn makes it easier for consumers to find what they need. This does not only help your SEO ranking – it also helps you position your brand as a leader in your industry.
Content helps search engines crawl your website
Good content additionally creates a hierarchy that makes it easier for search engines to determine relevance. In the early days of SEO content, this was achieved through keyword stuffing and exact match keywords. Today, it is achieved through a number of strategies, from grouped keywords to long-form pages that cover similar sub-topics without a broader topic. For example, rather than having multiple pages relating to blue suede shoes, you could have a single page that covers buying blue suede shoes, along with cleaning, wearing and maintaining the shoes. Along with headers, meta titles, links, image tags and meta descriptions, this makes it easier for search engines to crawl and rank your pages.
Content improves usability, which also helps SEO
Finally, another thing that is often overlooked in the battle for top place in the SERPs is the usability factor. Top positions mean nothing if people are arriving on your website and leaving almost instantly. In fact, thanks to constantly changing Google algorithms, websites that produce poor quality content often end up losing their top positions, getting pushed back in the results. Quality content is a major ranking factor. Well-written content that answers questions, provides solutions and adds genuine value can be one of the most powerful tools in your SEO toolbox.
Take the time to work on your content, and you should start seeing the difference in your Search Engine Optimisation results.
Home » SEO » Why Content Matters in Search Engine Optimisation