Архив

Статии по ключова дума: ‘Пример’

Повече информация за NMEA данните от gpsd

4 февруари, 2010 Няма коментари

На всеки които е дъмпвал rfcomm0 или които и да е обвързван интерфейс със gpsd проекта е забелязал, че изхода е нормален текст или по- точно тип NMEA 0183. Всеки NMEA репорт е текстов пакет които започва със знака долар и завършва с carriage-return . Елементите от NMEA репорта са разделени със запетаи. Тук по- долу ще поставя информация за елементите(Не са на български, но става ясно кое за какво е).

За пример ще използвам този ред:

$GPRMC,225446.33,A,4916.45,N,12311.12,W,000.5,054.7,191194,020.3,E,A*68

Обяснение:

1 225446.33 Time of fix 22:54:46 UTC

2 A Status of Fix: A = Autonomous, valid;
D = Differential, valid; V = invalid

3,4 4916.45,N Latitude 49 deg. 16.45 min North

5,6 12311.12,W Longitude 123 deg. 11.12 min West

7 000.5 Speed over ground, Knots

8 054.7 Course Made Good, True north

9 181194 Date of fix 18 November 1994

10,11 020.3,E Magnetic variation 20.3 deg East

12 A FAA mode indicator (NMEA 2.3 and later)
A=autonomous, D=differential, E=Estimated,
N=not valid, S=Simulator, M=Manual input mode

13 *68 mandatory NMEA checksum

Ето още един пример за друг тип:

$GPGGA,123519,4807.038,N,01131.324,E,1,08,0.9,545.4,M,46.9,M, , *42

Обяснение:

1 123519 Fix taken at 12:35:19 UTC

2,3 4807.038,N Latitude 48 deg 07.038′ N

4,5 01131.324,E Longitude 11 deg 31.324′ E

6
1 Fix quality: 0 = invalid, 1 = GPS,
2 = DGPS,
3=PPS (Precise Position Service),
4=RTK (Real Time Kinematic) with fixed integers,
5=Float RTK, 6=Estimated, 7=Manual, 8=Simulator

7 08 Number of satellites being tracked

8 0.9 HDOP = Horizontal dilution of position

9,10 545.4,M Altitude, Metres above mean sea level

11,12 46.9,M Height of geoid (mean sea level) above WGS84 ellipsoid, in Meters

За повече информация:
1. Официален сайт на gpsd
2. Какво да знаем за gpsd (почти същото :) ) )

Нов ред (на Windows) в PHP

30 декември, 2009 Няма коментари

За да се направи нов ред в php(при echo примерно) като на Windows трябва да се използва не само "\n" за нов ред, а комбинацията от "\r\n" т.е.

Пример за нов ред в php като на Windows:

echo "Martin\r\nPetrov\r\n";

Replace на един стринг с друг в MySQL

28 декември, 2009 2 коментари

Случвало ли ви се е в MySQL таблица да имате 1 мил. реда като в една от колонките имате стринг "гад" които желаете да премахнете. Сещам се за две решения едното е чрез някакъв език(php,perl …) да обходихте всички редове (select) и да ги обновите(update)  което са си две операции т.е. 1 000 001 (1 000 000 пъти -- update и 1 път select).
Вторият и най- рационален вариант за мен е, чрез функцията REPLACE която е вградена в MySQL.

Ето Ви пример:

update nasha_tablica set kolonka=replace(kolonka,'gad','pich');

Тук в таблица "nasha_tablica" в колона "kolonka" ще бъде презаписано "gad" със "pich".

Проблеми при php скриптове които ползват много памет

20 декември, 2009 Няма коментари

Всъщност тук ще обсъдя случаите в които се пише php скрипт при изпълнението на които се извежда съобщение като:" Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 500520576 bytes) in /var/www/a.php on line 4" или с няколко думи скрипта използва повече памет от колкото му е заделена предварително. Идеята тук е защо излиза това съобщение и  как да го поправим(действието :) ).

1. Предварително заделенета памет се определя от конфигурационния файл /etc/php5/php.ini) php.ini :

memory_limit = 32M      ; Maximum amount of memory a script may consume (32MB)

В този конфигурационен файл паметта която може да използва php скрипт е максимум 32 MB. Тази стойност може да се променя разбира се.

След промяна в php.ini трябва да се рестартира apache2. След това може да се изпълни phpinfo(); и ще видите новата заделена памет за php/скрипт.

2. Друг вариант за промяна на memory_limit е за при php5-cli (command-line interpreter for the php5 scripting language) или пример:

php -d memory_limit=512M a.php

По този начин при изпълненито на a.php се заделя 512 MB памет като се пренебрегва тази стойност от php.ini

3. Интересна функция в php е memory_get_usage() която връща текущата използва памет от php скрипта:

<?php

echo memory_get_usage() . "\n"; // 48504

$a = str_repeat("mpetrov.net",100104 );

echo memory_get_usage() . "\n"; // 1150084

unset($a);

echo memory_get_usage() . "\n"; // 48504

?>

По този начин може да се направи извод колко памет ползва php от самото php. Последния пример показва всъщност, че трябва да се unset всички променливи които няма да се ползват повторно за да не заемат памет :)

Извод: Бяха разгледани няколко причини и решения за грешката в php: Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 500520576 bytes)

php функция за извеждане на дублиращи елементи от масив

18 декември, 2009 Няма коментари

Търсих вградена функция на PHP за извеждане на дублиращите елементи в конкретен масив, но не успях да намеря такава. Има за извеждане на уникалните и т.н. познатите …, но точно такава не успях да намеря. Затова реших да си напиша такава(Супер дълга и сложна е :) )(Обичам простите, прозрачни и ясни неща):

<?php

function arrayDuplicate($array)
{
return array_unique(array_diff_assoc($array1, array_unique($array1)));
};
?>

Пример:

Код:

<?php
$arr1 = array('foo', 'bar', 'xyzzy', '&', 'xyzzy',
'baz', 'bat', '|', 'xyzzy', 'plugh',
'xyzzy', 'foobar', '|', 'plonk', 'xyzzy',
'apples', '&', 'xyzzy', 'oranges', 'xyzzy',
'pears','foobar');

$result=arrayDuplicate($arr1);
print_r($result);exit;
?>

Изход:

Array
(
[4] => xyzzy
[12] => |
[16] => &
[21] => foobar
)

Как се прави дробна черта в HTML

12 декември, 2009 Няма коментари

Всеки знае как да прави горни и долни индекси в HTML, но не всеки знае как да направи дробна черта в HTML. Това е супер просто, особено когато се знае :)

Пример 1: H<sub>2</sub>0
Изход 2: H20

Пример 2: S <sup>2-</sup>
Изход 2: S 2-

Пример за дробна черта: NH<sup>+</sup>&frasl;<sub>4</sub>
Изход за дробна черта:  NH+4

Извод: Дробна черта в HTML: &frasl;

&frasl;

Как да листнем броя на файловете и папките в GNU/Linux

10 декември, 2009 Няма коментари

Имаме една папка и вътре има много папки и файлове. Задачата е да разбера: Колко папки и файлове има вътре ?

Решението е просто като се използва find:

Пример за листването на всички директории:
find /home/ -type d -print

Пример за броене на всики директории:
find /home/ -type d -print|wc -l

Пример за листването на всички файлове:
find /home/ -type f -print

Пример за броене на всики файлове:
find /home/ -type f -print|wc -l

По- добра оптимизация на вашият Wordpress, чрез постоянни връзки

26 октомври, 2009 1 коментар

Постоянните връзки са част от повечето блог платформи. Те са постоянни URL адреси към всяка индивидуална публикация, категория или списък от всички публикации. За пример ще приложа постоянна връзка, чрез която ще изведа всички публикации от категория “Web”:

http://www.mpetrov.net/category/Web

В Wordpress може да се контролират постоянните връзки и от това да контролирате потенциалния ефект върху вашият сайт спрямо оптимизирането му за интернет търсачките. Ако не използвате постоянни връзки, подразбиращите се изглеждате по следния начин:

http://www.mpetrov.net/index.php?p=49

където стойността на аргумент “p” е 49 която е номера на публикацията.

За да използваме постоянните връзки първо трябва да влезе в секция „Постоянни връзки” или „Permalinks” в Wordpress: Натискате на бутон “Настройки” -> Постоянни връзки” или „Settings” -> “Permalinks” .

От там ще видите малка информация за постоянните връзки и общите настройки

Кратка информация за постоянните връзки:

По подразбиране WordPress използва адреси, които съдържат въпросителни знаци и много цифри в себе си. Затова може да създавате собствени формати на адресите на постоянните връзки към публикациите и архивите.Това може да подобри външния вид и използваемостта на връзките в блога. Имате на разположение няколко променливи (на английски език), а тук можете да получите малко обяснения и примери с които да започнете.

Ето ги и основните настройки:

По подразбиране: http://mpetrov.net/?p=123

Дата и име”: http://mpetrov.net/2009/10/26/sample-post/
Месец и име”: http://mpetrov.net/2009/10/sample-post/
По номер на публикацията”: http://mpetrov.net/archives/123

И най- отдолу в под секция „Основни настройки”, но не на последно място „Различна структура”. Тук може да добавят собствени настройки. Ще предложа едни от най- разпространените примери:
Извежда за адрес заглавието на публикация: /%postname%
Пример: http://mpetrov.net/upgrade-ot-debian-etch-do-debian-lenny

Тук извежда името на категорията + заглавието на публикацията: /%category%/%postname%
Пример: http://mpetrov.net/sadmin/upgrade-ot-debian-etch-do-debian-lenny

Най- долу в секция „Настройка на постоянните връзки” имате възможност да редактирате и префиксите на категориите и етикетите.

Ето я и предоставената информация включена в Wordpress която е напълно достатъчна за разбиране и използване:

Можете да въведете собствен префикс за адресите на категориите и етикетите. Например: topics ще промени връзките към категориите така: http://example.org/topics/име-на-категорията/. Ако оставите полето празно ще се ползват стойностите по подразбиране.

Как да си счупим Wordpress блога с php таг

23 октомври, 2009 Няма коментари
Днес докато си пишех публикация за таговете <?php и <? ми се случи нещо интересно. Случайно добавих таговете <?php и <? в заглавието на публикацията и заради това се счупи цялата публикация. Ето пример на нормална публикация без "<?php" и със "<?php"
broken_wordpress_with_php_tags_before1

Публикували сме най- нормална публикация

broken_wordpress_with_php_tags_error1

Добавяме тага <?php" в заглавието на публикацията.

broken_wordpress_with_php_tags_after1

Виждаме, че нашата публикация е повредена от преди това добавения таг "

Същото може да се каже и за html тагове които не са затворени правилно. Ето пример:

<div style="display:none"

По- горния таг не е затворен правилно и ще повреди вашият пост.

Изводът е винаги да затваряме всеки един таг.

PS: ако в заглавието добавите <?php echo "martin"; ?> или какъвто и да е код НО СЪС ЗАТОВРЕН таг всичко ще бъде наред(няма да го изведе ) и няма да се счупи поста. Всъщност проблема е само когато добавите само таг за отваряне на php

Конструкции на SQL за поддръжка на таблици в MySQL

14 октомври, 2009 Няма коментари

MySQL притежава няколко конструкции на SQL за поддръжка на таблици: CHECK TABLE за проверка на целостта им, REPAIR TABLE за извършване на поправка, ANALYZE TABLE за анализ и OPTIMIZE TABLE за оптимизиране.  Следва малко информация за всяка от конструкциите за поддръжка на таблици в MySQL:

CHECK TABLE

Конструкцията CHECK TABLE извършва проверка за целостта на структурата и съдържанието на съответната таблица. Тя е приложима и за MyISAM, и за InnoDB. За таблиците от тип MyISAM се осъществява също и актуализиране на статистиката на индексите. Ако дадената таблица с изглед, с CHECK TABLE се проверява дефиницията му. Ако данните, изведени от CHECK TABLE показват наличие на проблем с таблицата, тя трябва да бъде поправена.

REPAIR TABLE

Конструкцията REPAIR TABLE служи за коригиране на проблеми в таблица, която е повредена. Тя е приложима само за таблици от тип MyISAM. Можете да конфигурирате автоматична поправка на таблиците на MyISAM.

Пример: repair table dhstudio

ANALYZE TABLE

Конструкцията ANALYZE TABLE служи за актуализиране на таблица с информация за разпределението на ключовите стойности в нея. Тя се използва от оптимизатора за избор на по- подходящи планове за изпълнението на заявки. Тази конструкция работи с таблици на MyISAM и InnoDB.

Пример: analyze table dhstudio

OPTIMIZE TABLE

Конструкцията OPTIMIZE TABLE служи за "изчистване" на таблици от тип MyISAM чрез дефрагментирането им. Резултатът е повторното разпределяне на неизползваното пространство, получено в резултат от изтриване и актуализации, както и обединяване на записите, които са били разделени и съхранени разпокъсано. OPTIMIZE TABLE се използва също така за сортиране на индексните страници, ако не са подредени, както и за актуализиране на статистиката за индексите.
OPTIMIZE TABLE работи и с таблици на InnoDB, но ги пренасочва към конструкцията ALTER TABLE, която ги изгражда наново. По този начин се актуализира статистиката за индексите и се освобождава място в клъстерния индекс.

Пример:  optimize table dhstudio

Ако искате да разберете кои таблици трябва да оптимизирате изпълнете следното:

show table status where Data_free!=0;

По този начин ще фрагментирате таблиците които се нуждаят от това, а не тези които са фрагментирани.