Не удалось избежать публикации минималистского метода без зависимости или библиотек. Для этого требуется новый API-интерфейс. Могу ли я использовать его?
var url = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="
fetch(url)
.then(res => res.blob())
.then(blob => console.log(blob))
С помощью этого метода вы также можете легко получить arraybuffer, text и json
Я сделал простой тест производительности по сравнению с версией синхронизации Джереми es6. Версия синхронизации будет блокировать UI некоторое время.
// get some dummy gradient image
var img=function(){var a=document.createElement("canvas"),b=a.getContext("2d"),c=b.createLinearGradient(0,0,200,100);a.width=a.height=3000;c.addColorStop(0,"red");c.addColorStop(1,"blue");b.fillStyle=c;b.fillRect(0,0,a.width,a.height);return a.toDataURL()}();
async function perf() {
const blob = await fetch(img).then(res => res.blob())
// turn it to a dataURI
const url = img
const b64Data = url.split(',')[1]
// Jeremy Banks solution
const b64toBlob = (b64Data, contentType = '', sliceSize=512) => {
const byteCharacters = atob(b64Data);
const byteArrays = [];
for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
const slice = byteCharacters.slice(offset, offset + sliceSize);
const byteNumbers = new Array(slice.length);
for (let i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
const byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
const blob = new Blob(byteArrays, {type: contentType});
return blob;
}
// bench blocking method
let i = 1000
console.time('b64')
while (i--) {
await b64toBlob(b64Data)
}
console.timeEnd('b64')
// bench non blocking
i = 1000
// so that the function is not reconstructed each time
const toBlob = res => res.blob()
console.time('fetch')
while (i--) {
await fetch(url).then(toBlob)
}
console.timeEnd('fetch')
console.log('done')
}
perf()
Вам нужно сначала запустить initdb. Он создаст кластер базы данных и начальную настройку
См. Как настроить postgresql в первый раз? и http://www.postgresql.org/docs/ 8,4 / статический / приложение-initdb.html
Вы упомянули Ubuntu, поэтому я собираюсь угадать, что вы установили пакеты PostgreSQL из Ubuntu через apt.
. Если это так, пользовательская учетная запись postgres
PostgreSQL уже существует и настроена для доступа через peer
для UNIX-сокетов в pg_hba.conf
. Вы получаете к нему выполнение команд в качестве пользователя postgres
unix, например:
sudo -u postgres createuser owning_user
sudo -u postgres createdb -O owning_user dbname
Это все в документации Ubuntu PostgreSQL , которая является первым хитом Google для «Ubuntu PostgreSQL "и рассматривается в многочисленных вопросах переполнения стека.
(Вы задали этот вопрос намного сложнее ответить, опуская данные, такие как ОС и версия, на которой вы находитесь, как вы установили PostgreSQL , и т. д.)
pg_hba.conf
, чтобы использовать md5
auth для этого пользователя (см. руководство); (b) Создайте пользователя ОС с тем же именем и продолжайте использовать peer
auth; или (c) более продвинутые, создайте сопоставление pg_ident.conf
, чтобы позволить пользователю вашей ОС войти в систему как новый пользователь.
– Craig Ringer
9 September 2014 в 12:54
Ваша ошибка опубликована в официальной документации. Вы можете прочитать эту статью .
Я скопировал причину для вас (и гиперссылки URL-адресов) из этой статьи:
Это произойдет если администратор не создал для вас учетную запись PostgreSQL. (Учетные записи пользователей PostgreSQL отличаются от учетных записей пользователей операционной системы.) Если вы являетесь администратором, см. Chapter 20 для создания справки. Вам нужно будет стать пользователем операционной системы, в котором был установлен PostgreSQL (обычно postgres) для создания первой учетной записи пользователя. Также может быть указано, что вам присвоено имя пользователя PostgreSQL, отличное от имени пользователя вашей операционной системы; в этом случае вам нужно использовать ключ -U или установить переменную среды PGUSER, чтобы указать ваше имя пользователя PostgreSQL
. В ваших целях вы можете:
1 ) Создайте учетную запись пользователя PostgreSQL:
sudo -u postgres createuser tom -d -P
(параметр
-P
для установки пароля; опция-d
для создания базы данных для вашего имени пользователя «tom». '- ваше имя пользователя вашей операционной системы. Таким образом, вы можете выполнять команды PostgreSQL безsudo
ing.)2) Теперь вы должны выполнить команды
createdb
и другие команды PostgreSQL.
У меня была такая же проблема, я просто делаю это
sudo su - postgres
createuser odoo -U postgres -dRSP #P для пароля (имя или имя пользователя, которое вы хотите o предоставить доступ к postgres)
1- Вход по умолчанию PostgreSQL user (postgres)
sudo -u postgres -i
2- Как пользователь postgres. Добавить пользователя новой базы данных с помощью команды createuser
[postgres]$ createuser --interactive
3-exit
[postgres]$ exit
sudo -u postgres createuser -s tom
это должно помочь вам, поскольку это произойдет, если администратор не создал учетную запись пользователя PostgreSQL для вас. Также может быть указано, что вам присвоено имя пользователя PostgreSQL, отличное от имени пользователя операционной системы, в этом случае вам нужно использовать ключ -U.
См. git gist с инструкциями здесь
Запустите это:
psql -U postgres
ИЛИ
sudo -u postgres psql
в вашем терминале для входа в postgres
postgres=#
Run
CREATE USER new_username;
Примечание: замените имя new_us на пользователя, которого вы хотите создать, в вашем случае, который будет томом.
postgres=# CREATE USER new_username;
CREATE ROLE
Поскольку вы хотите, чтобы этот пользователь мог создавать БД, вам нужно изменить роль суперпользователя
postgres=# ALTER USER new_username SUPERUSER CREATEDB;
ALTER ROLE
. Чтобы подтвердить, все было успешно,
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
new_username | Superuser, Create DB | {}
postgres | Superuser, Create role, Create DB, Replication | {}
root | Superuser, Create role, Create DB | {}
postgres=#
initdb
, у них не было бы сервера базы данных, который работал бы и принимал подключения, чтобы сообщить об этом сообщенном сообщении об ошибке. Удалите этот вводящий в заблуждение ответ. (BTW, в будущем, пожалуйста, перейдите по ссылке / docs / current / static /, чтобы избежать накопления устаревших ссылок) – Craig Ringer 7 June 2013 в 01:01