Накидайте плиз названий книг по выбору профиля, созданию, развитию бизнеса, анализу спроса и рождению предложения.
Я к примеру сейчас читаю «Rework Бизнес без предрассудков. Джейсон Фрайд. Дэвид Хайнемайер Хенссон»
Linux при том что основа многих продуктов и GPL не запрещает продажу.
Использую skype для изучения/улучшения English. На web камере сдох микрофон. Теперь думаю купить либо новую web камеру, либо наушники с микрофоном либо отдельно микрофон. Посоветуйте пожалуйста что бы купили вы и какую конкретно модель? Linux при том что skype запускается в нем.
подскажите плиз приложение для андроида чтобы само периодически лезло по настриваемому URL и если там скажем 1 вместо 0 вернулось чтобы пиликало. нужно быстро и тупо настроить уведомление на телефон.
либо предложите варианты подобного. я когда-то делал всякие штуки с GSM гейтом, но тут нужно что-то простое.
ScanQuest 4125 это сканер штрихкода, если кто-то работал с ним помогите пожалуйста!
Как указано в доке оно умеет CODE128, но как известно CODE128 бывает трех типов CODE128A, CODE128B, CODE128C.
Это чудо прочитало «00000000000000» (14 нулей), но не прочитало
".............." (14 точек), тогда как другие сканеры как железные так и программные читают мгновенно. Точки это использование 64-ричной системы счисления для уменьшения количества символов.
Конкретно сейчас у нас нет доступа к этому агрегату и возникают вопросы,
то ли он не прочитал потому что код с точками длиннее по размеру (хотя количество знаков то-же), то ли ему не нравятся точки и он не понимает такой диапазон символов.
Если кто-то имеет доступ к этому агрегату или имеет опыт работы с ним помогите пожалуйста! Заранее благодарен!
положим в системе есть user1 и user2, оба они могут сделать sudo su
и стать рутом, нужно в /root/.bashrc понять кто стал рутом бывший user1 или бывший user2 и соответственно сделать те ли иные действия.
заколебала эта фигня в край: прихожу домой - wi-fi определяется, подключается и не работает. удаляю в телефоне точку, перезагружаю телефон, подключаюсь к точке - работает пока не уйду из дома и не приду назад. как это вылечить раз и навсегда?
android был 4 какой-то, сейчас распоследний cyanogen 12
положим мы имеем таблицу в которой ID это PRIMARY KEY,
и в таблице миллиард записей. мы знаем конкретный идентификатор из этого миллиарда и хотим его выбрать. в случае с типом bigint (64 бит) на моих тестах выборка конкретного ID как и можно ожидать мгновенная (доли миллисекунд).
теперь положим что я использую не bigint а bytea и храню там положим sha512 (512 бит), сохранится ли скорость выборки конкретного идентификатора? не деградирует ли индекс в таком извращенном случае?
может кому-то поможет такой хитрый ход потому как я именно такого решения не нашел.
положим нужно заинсертить в таблицу уникальных ключей заранее известный ключ, но мы не знаем есть он или нет и соответственно хотим исключить ошибку и ситуацию гонки. положим ключ равен 777.
CREATE TABLE x(id BIGINT, PRIMARY KEY(id));
BEGIN;
SELECT pg_advisory_xact_lock(777);
INSERT INTO x (id) SELECT 777 WHERE NOT EXISTS (SELECT id FROM x WHERE id=777) RETURNING id;
COMMIT;
pg_advisory_xact_lock исключает ситуацию гонки залочиваясь и ожидая commit/rollback параллельной транзации или обрыва паралелльного соединения с базой.
insert добавляет запись только если ее еще нет, и по возвращенному им значению понятно было это добавление или нет
Посоветуйте пожалуйста сетевое хранилище. Необходимо хранить данные в формате ключ - значение.
Необходима возможность заблокировать ключ, прочитать его состояние, возможно изменить его и снять блокировку, любая параллельная попытка заблокировать ключ для изменения должна ожидать снятия блокировки.
При обрыве соединения блокировка должна сниматься.
В идеале это должна быть транзакция аналогичная:
begin; select for update; update; commit;
Должна быть возможность добавлять сервера и перераспределять на них данные как с целью ускорения операций так и с целью повышения надежности.
SELECT EXTRACT(EPOCH FROM NOW())::bigint AS UNIXTIME;
unixtime
------------
1426694898
А как получить unixmicrotime средствами postgresql, без парсинга на клиенте?
Postgresql в своем типе timestamp хранит время с точностью до миллисекунд.
Есть система у которой есть клиенты, клиенты могут регистрироваться в системе и активно пользоваться или бросать ее нафиг.
Когда клиент оплачивает подписку он становиться активным на несколько месяцев, когда подписка заканчивается если ее не продлевать он становиться не активным.
Со временем думаю одни буду приходить другие уходить, количество активных клиентов будет постепенно расти, но количество не активных будет вероятно на порядки больше. Каждый клиент имеет уникальный id, по нему система понимает на каком сервере лежат данные о клиенте.
Данные лежат в одной таблице.
Вопрос: стоит ли разделить таблицу на две - для активных и не активных?
С одной стороны перенос из таблицы в таблицу это деградация индексов и лишнее время (перенос относительно редкий), с другой работа сервера идет только с активными клиентами и значит если и активные и не активные будут в одной таблице - работа будет линейно замедляться. Под работой понимается update (перерасчет данных) всех активных клиентов. Update редкий - несколько раз в сутки и относительно быстрый для отдельного клиента. Работа ведется с помощью очереди задач. В очередь помещаются диапазоны идентификаторов клиентов (сейчас это по 1000 клиентов в задаче), а воркеры выгребают данные клиентов из этих диапазонов и меняют данные. Соответственно если таблица будет одна то часто будут попадаться те клиенты для которых ничего делать не нужно, но выборка их данных уже будет сделана - соответсвенно время работы будет расти...
Есть не самый мощный компьютер под GNU/Linux с Intel i7-4790K, двумя винтами sata 10000 rpm. На нем PostgreSQL 9.4rc1. Машина вообще ничем не загружена.
Создаем таблицу:
CREATE TABLE test_update (id BIGSERIAL NOT NULL, c BIGINT NOT NULL, PRIMARY KEY(id));
INSERT INTO test_update (c) VALUES (0);
VACUUM FULL ANALYZE test_update;
Запускаем скрипт:
#!/bin/bash
echo -n > test.sql;
for (( i=0; i < 10000; i++));
do
echo "UPDATE test_update SET c=c+1 WHERE id=1;" >> test.sql;
done
Запускаем тест:
$ time (psql --host="${SQL_HOST}" --port="${SQL_PORT}" --dbname="${SQL_DATABASE}" --username="${SQL_LOGIN}" -w -f test.sql > /dev/null)
real 1m1.441s
user 0m0.440s
sys 0m0.192s
В iotop postgres не поднимается выше 1341.77 K/s, при том что например dd if=/dev/zero of=trash bs=4096 дает 162.84 M/s
hdparm в тесте показывает 170.90 MB/sec
Тот же тест но при fsync = off отрабатывает за полсекунды. Но это не решение.
Вопрос: подскажите пожалуйста как ускорить UPDATE в Postgres?