1 2 |
RX packets:30156252 errors:0 dropped:0 overruns:0 frame:0 TX packets:15504945 errors:0 dropped:0 overruns:0 carrier:0 |
T — Trancieve (отправление)
R — Recieve (получение)
1 2 |
RX packets:30156252 errors:0 dropped:0 overruns:0 frame:0 TX packets:15504945 errors:0 dropped:0 overruns:0 carrier:0 |
T — Trancieve (отправление)
R — Recieve (получение)
ТОП 30 по занимаемому месту объектов в БД
1 2 |
SELECT relname AS "table_name", pg_size_pretty((relpages::bigint*8*1024)) AS "size" FROM pg_class ORDER BY relpages DESC LIMIT 30; |
Как узнать размер таблицы в базе данных PostgreSQL?
1 |
SELECT pg_size_pretty( pg_total_relation_size( 'tablename' ) ); |
Результатом будет размер таблицы tablename, включая индексы.
Как узнать размер таблицы в базе данных PostgreSQL без учёта индексов?
1 |
SELECT pg_size_pretty( pg_relation_size( 'tablename' ) ); |
Давно уже не пользуюсь Apache но переодически беру на фрилансе заказы. Была задача сделать обыденность — для СЕО сделать редирект всех ссылок www.domain.ru/* на domain.ru/*
Если по простому — то как-то так:
Если на сайте HTTP
1 2 3 4 |
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] |
Если на сайте HTTPS
1 2 3 4 |
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] |
Была у меня задача подключить внешний PHP код, но открыть к нему доступ только для пользователей с ролью Администратор. Через routes это было не сделать.
Помог следующий код в файле конфиге внешнего PHP кода который инклудился во всех файлах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php require '/path/to/laravel/bootstrap/autoload.php'; $app = require_once '/path/to/laravel/bootstrap/start.php'; $request = $app['request']; $client = (new \Stack\Builder) ->push('Illuminate\Cookie\Guard', $app['encrypter']) ->push('Illuminate\Cookie\Queue', $app['cookie']) ->push('Illuminate\Session\Middleware', $app['session'], null); $stack = $client->resolve($app); $stack->handle($request); $isAuthorized = Auth::check(); //Тут можно уже делать проверки на наличие авторизации, роли и прочее - т.к. сессия подхватиться если есть |
Тоже самое для Laravel 5
1 2 3 4 5 6 7 8 9 |
<?php require '/path/to/laravel/bootstrap/autoload.php'; $app = require_once '/path/to/laravel/bootstrap/app.php'; $app->make('Illuminate\Contracts\Http\Kernel') ->handle(Illuminate\Http\Request::capture()); $isAuthorized = Auth::check(); |
Долго искал как это можно было сделать, нашёл в итоге это решение на гитхабе: https://gist.github.com/frzsombor/ddd0e11f93885060ef35
Источник: http://freelansim.ru/tasks/111229
Тема: Требуется написать браузерный сканер локальной сети на javascript
Текст:
по бюджету если не устраивает сами предлагайте на email excluzivecom.com
написать нужно скрипт, который сканирует определенные адреса и если находит — то с корневой страницы собирает инфу и по прилагаемому списку логинов и паролей пробует пройти авторизацию.
Вкратце где-то так — более подробное тз в прилагаемом файле
требование — мультисистемность, мультибраузерность
ТЗ:
Красавцы) Basic авторизация по AJAX и т.п. понятно — решаемо. А вот интересно только как будет решаться вопрос с проблемой что надо делать кроссдоменный запрос на локальную сеть и что по идеи браузер это не должен позволять.
Собрал для себя запросы которые мне были нужны в то или иное время — источник — интернет.
Аналог GROUP_CONCAT
1 2 3 4 5 6 7 |
SELECT id_field, array_agg(value_field1), array_agg(value_field1 || ':' || value_field2), array_to_string(array_agg(value_field1 || ':' || value_field2), ';') FROM data_table GROUP BY id_field |
Удаление миллисекунд у now()
1 2 3 4 5 |
SELECT now(); 2015-06-08 15:08:46.242742+03 SELECT now()::timestamp(0); 2015-06-08 15:08:46 |
Статистика по индексам
Список по индексам: сколько записей из индекса были возвращены в запросах по этому индексу; сколько рядов при этом все же пришлось просматривать в родительской таблице; отношение этих двух чисел. Суть данной статистики проста: если у вас много fetch-ей, значит индекс устарел и при выполнении запроса PostgreSQL вынужден смотреть непосредственно в таблицу, как в источник самых актуальных данных, что замедляет его работу. В этом случае необходимо перестроить данный индекс, чтобы он соответствовал реальным данным в таблице.
1 2 3 4 5 6 7 8 9 10 11 12 |
SELECT indexrelname, idx_tup_read, idx_tup_fetch, CASE WHEN idx_tup_fetch = 0 THEN 100 ELSE idx_tup_read / idx_tup_fetch END AS ratio FROM pg_stat_user_indexes ORDER BY ratio DESC; |
Список текущих блокировок
Список текущих блокировок с указанием типа блокировки, таблицы и базы данных, на которой она выставлена и номера транзакции, которая выставила блокировку. Не стоит пугаться, если запрос выдает длинный список lock-ов — не все они являются критическими и блокирующими таблицу от всех возможных изменений и даже чтения. Для анализа списка блокировок обязательно стоит ознакомиться с документацией об их типах в PostgreSQL и о том, когда и какими запросами они выставляются. Один из распространенных случаев, когда список блокировок может пригодиться: выполняя команду ps aux | grep ^postgres вы видите, что в статусе одного из процессов postgres-а написано waiting — это как раз и означает, что данный процесс ждет, когда будет снята нужная ему блокировка. Какая именно — выясняйте, запустив данный запрос.
1 2 3 4 5 6 7 8 9 10 |
SELECT l.mode, d.datname, c.relname, l.granted, l.transactionid FROM pg_locks AS l LEFT JOIN pg_database AS d ON l.database= d.oid LEFT JOIN pg_class AS c ON l.relation = c.oid; |
Выполняющиеся запросы с их продолжительностью
Простой список выполняющихся сервером в настоящий момент запросов. Бывает полезен, когда вы недостаточно хорошо знаете систему или просто не успели ее настроить — с его помощью можно найти и прервать «плохой» запрос, который мешает работе сервера (колонка procpid содержит PID процесса, которому можно сделать kill при необходимости).
1 2 3 4 5 6 7 8 |
SELECT datname, pid, NOW() - query_start AS duration, query FROM pg_stat_activity ORDER BY duration DESC; |
Всё время я всегда сидел за Windows, но сменив пол года назад работу мне пришлось пересесть на работе на Ubuntu. Для программирования это открыло море новых возможностей и удобств. Но длительное время было 2 вещи которые меня очень сильно раздражали и даже временами очень бесило.
— не работали шорт-каты если включена русская локаль в PhpStorm
— и, боже, какие убогие шрифты(после Windows) в Ubuntu везде и в браузерах и в редакторе.
Про то как решить первую проблему я и пишу эту статью.
Если кратко то вот ссылка:
https://github.com/zheludkovm/LinuxJavaFixes
Если по подробнее:
— скачать архив;
— разархивировать;- переместить LinuxJavaFixes-1.0.0-SNAPSHOT.jar и javassist-3.12.1.GA.jar в папку bin PHPStorm
— в phpstorm64.vmoptions дописать( или заменить если такая опция уже есть) -javaagent:<full path to LinuxJavaFixes-1.0.0-SNAPSHOT.jar>
Всё, теперь всё будет хорошо работать.
При появлении похожей ошибки в консоли при выполнении apt-get update необходимо выполнить:
Ubuntu
1 2 |
gpg --keyserver pgpkeys.mit.edu --recv-key <KEY ID> gpg -a --export <KEY ID> | sudo apt-key add - |
Debian
1 2 |
gpg --keyserver pgpkeys.mit.edu --recv-key <KEY ID> gpg -a --export <KEY ID> | apt-key add - |
где <KEY ID> публичный ключ который вам не доступен
Если Forever при запуске выдаёт похожую ошибку, то скорее всего дело в баге одной из версий:
https://github.com/nodejitsu/forever/issues/636
Решение — запускать не по названию файла а по uid, например так:
1 2 3 |
forever start --uid worker_1 -a worker_1.js //Тормозить так forever stop worker_1 |
Это баг, и его вроде уже пофиксили, но я теперь так запускаю всегда, от греха.
Ну и логи теперь будут красиво называться worker_1.log
На просторах интернета нашёл очень интересную страницу:
http://www.hungry-ewok.ru/sw/all_books.htm
Все книги вселенной Звездных войн отсортированные по хронологии, много на русском языке, в различных форматах, с возможностью скачать!