Архив

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

Какво е Wardriving и как да го направим (Kismet + Festival + Gpsd + Gpsdrive)

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

При Wardriving идеята е да се засекат wireless мрежи и да бъдат картографирани. Според нашият закон или това което четох това не е нелегално(освен ако не се използват тези мрежи с лоши намерения). Все пак аз съм го направил с цел познание и идеята на тази публикация е да споделя знание.

Преди да започнем ще опиша какво ще ни трябва:
Устройства(Gps Reciever с bluetooth, bluetooth на самия лаптоп),
Приложения (gpsdrive,gpsd,bluez-utils,festival,mysql-server,kismet)

След като имаме устройствата ще инсталираме приложенията. Аз лично ползвам Holux 240 slim, но е доста бъгав. От време на време сам решава да се бъгне и да не показа кординатите, а двойчни глупости. За да го върнем в NMEA режим трябва да му извадим батерията с което се връща на първоначални настройки(голямо решение няма що. Има и друго ползвайте друг gps reciever).

Инсталиране на приложенията:
apt-get install gpsdrive gpsd festival mysql-server-5.0 kismet bluez-utils

Сега влючваме нашият GPS Reciever
Изпълняваме "hcitool scan" и виждаме:

Scanning …
00:0B:0D:6D:A1:E8   HOLUX GPSlim240

Ето го и търсеният от нас MAC адрес на Holux Slim 240

Редактираме конф. файлове от bluez-utils в /etc/bluetooth

/etc/bluetooth/hcid.conf

Променяме нашият пин ето тук(в случая е 0000):
passkey "0000"

Сега редактираме /etc/bluetooth/rfcomm.conf

rfcomm0 {
bind no;  # Automatically bind the device at startup
device 00:0B:0D:6D:A1:E8; # Bluetooth address of the device
channel 1; # RFCOMM channel for the connection
comment "My GPS device 00:0B:0D:6D:A1:E8"; # Description of the connection
}

Става ясно, че описваме mac адреса на нашият gps reciever

След това вдигаме нашият интерфейс:
hciconfig hci0 up

Свързваме се към нашето устройство Holux:
hcitool cc 00:0B:0D:6D:A1:E8

Отваряме канал
sdptool add --channel=1 OPUSH

и след това биндваме rfcomm0
rfcomm bind rfcomm0 00:0B:0D:6D:A1:E8

За да проверим, че получаваме данните коректно(данните са в текстов вид NMEA) изпълняваме това:
cat /dev/rfcomm0

Ако се вижда нещо от рода:
$GPGGA,235955.065,0000.0000,N,00000.0000,E,0,00,,0.0,M,0.0,M,,0000*4D
$GPRMC,235955.065,V,0000.0000,N,00000.0000,E,,,150406,,,N*7E
$GPVTG,,T,,M,,N,,K,N*2C
$GPGGA,235956.059,0000.0000,N,00000.0000,E,0,00,,0.0,M,0.0,M,,0000*41
$GPRMC,235956.059,V,0000.0000,N,00000.0000,E,,,150406,,,N*72
$GPVTG,,T,,M,,N,,K,N*2C
$GPGGA,235957.059,0000.0000,N,00000.0000,E,0,00,,0.0,M,0.0,M,,0000*40
$GPGSA,A,1,,,,,,,,,,,,,,,*1E

То нашият GPS Reciever още не си е намерил сателитите и трябва да го изчакате известно време(на открито). След като си ги намери тези нули се превръщат в кординати разбира се.

Сега ще стартираме и gpsd които да обработва данните от rfcomm0

gpsd /dev/rfcomm0

Можем да проверим дали правилно приема данните със следната команда:

gpspipe -r

След като пуснахме основните приложения сега ще пуснем и Kismet. Неговата задача е да следи wireless мрежите и да ги записва във файл с техните кординати.

За да стартираме kismet като сървър трябва да укажем source type, а ако не го направим ще ни излезе следната грешка:

FATAL: Please configure at least one packet source.  Kismet will not function if no packet sources are defined in kismet.conf or on the command line.  Please read the README for more information about configuring Kismet

Това е защото не е зададен capture source type. За целта редактираме /etc/kismet/kismet.conf , ред "source":

source=iwl3945,wlan0,wlan0

Важен е първия аргумент където указваме какъв модул се зарежда за wireless картата, а в този случай е iwl3945

Сега ще накараме Kismet да логва всички wireless мрежи които намери + техните координати. За целта трябва да редактираме /etc/kismet/kismet.conf

waypoints=true
# GPSDrive waypoint file.  This WILL be truncated.
waypointdata=~/.gpsdrive/way.txt

Следващата стъпка е да накараме Kismet освен да логва и да говори.
Сега ще направим един малък тест на festival

echo "Hi from mpetrov.net -- Festival test"|festival --tts

Ако ви изплюе следната грешка "Linux: can't open /dev/dsp" то тогава извършете това по- долу:

Решение на проблема по- горе:

Редактира се файл (.festivalrc) или (/usr/share/festival/festival.scm):
vim ~/.festivalrc
и се добавя това:
(Parameter.set 'Audio_Method 'Audio_Command)
(Parameter.set 'Audio_Command "aplay -q -c 1 -t raw -f s16 -r $SR $FILE")

Сега след като имаме инсталиран и работещ festival ще направим промени в конфигурационния файл на kismet.
kismet.conf(за сървъра)

#Променя се от false на true
Speech=true
#Променя се от nato на speech
speech_type=speech

Ако не искаме да говори kismet сървъра, а нашият kismet клиент правим същите промени, но за "kismet_ui.conf"

Сега ще стартираме и gpsdrive. Неговата цел е да взима данните от Kismet ~/.gpsdrive/way.txt , да ги записва в MySQL базата(която ще създадем след малко) и да визуализира текущото ни местоположение на картата.

Първо трябва да създадем нашата база с таблиците които ще ползва gpsdrive изпълняваме:
geoinfo --create-db geoinfo --db-name geoinfo --db-user gast --db-password gast

Стартираме gpsdrive и какво ? Данните се записват и всичко е страхотно :)

Но на мен лично тази карта не ми допада особено и искам всичко това да го преместя в/у картата на GoogleEarth. За целта използвах едно готово python скриптче, което не работеше (нямаше и автор) и трябваше да пренапиша. Може да бъде изтеглено от тук: gpsdriveToGoogleEarth_mpetrov_net.py

изпълняваме python скриптчето което трябва да конвертира от gpsdrive към GoogleEarth:

python gpsdriveToGoogleEarth_mpetrov_net.py

Получавам следната грешка"
#:/tmp# python gpsdriveToGoogleEarth_mpetrov_net.py
Traceback (most recent call last):
File "gpsdriveToGoogleEarth_mpetrov_net.py", line 1, in <module>
import MySQLdb
ImportError: No module named MySQLdb

Това е защото очевидно нямам mysql модул за python. Сега ще го инсталирам:

apt-get install python-mysqldb

Сега като го изпълним и ще се генерира файл wireless_mpetrov_net.kml които ще вкараме в Google Earth, чрез импорт. Виждаме мрежите които сме картографирали по- рано.

В интерес на истината написах едно простичко bash скриптче което прави някои неща автоматизирано. То може да бъде изтеглено от тук:  War Driver 1.0

Потенциален проблем които може да възникне при употребата на Kismet
Проблем при стартиране на Kismet:

ERROR:  Unable to find room for logging files within 100 counts.  If you really are
logging this many times in 1 day, change log title or edit the source.
WARNING: Error disabling monitor mode: Failed to set channel 0 22:Invalid argument
WARNING: wlan0 (wlan0) left in an unknown state.  You may need to manually
restart or reconfigure it for normal operation.
WARNING: Sometimes cards don't always come out of monitor mode
cleanly.  If your card is not fully working, you may need to
restart or reconfigure it for normal operation.
Trying to wake networkmanager back up…
Kismet exiting.

Решението е :
rm -fr /var/log/kismet/*

Идеята на тази публикация е с учебна цел. Аз като автор не нося никаква отговорност за причинени от нея щети.

PS: Моля слагайте си WPA2 пароли с максимална дължина и сложност поне като минимално нещо което трябва да направите за свойте wireless мрежи.

Промяна на ограниченията в Windows XP и Windows server 2003

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

Един приятел скоро инсталирал XP на една машина и като администратор изтеглил куп неща в дял D: . След това направил потребителски имена на всички потребителите които ще ползват системата. Супер, но когато потребителя се логне в системата няма достъп до файловете в дял D:(тези които преди това моят приятел(като администратор) е добавил по- рано). За да предоставим достъп на потребителите в системата трябва да променим ограниченията на тези файлове чрез cacls:

D:\>cacls /?
Displays or modifies access control lists (ACLs) of files

CACLS filename [/T] [/E] [/C] [/G user:perm] [/R user [...]]
[/P user:perm [...]] [/D user [...]]
filename      Displays ACLs.
/T            Changes ACLs of specified files in
the current directory and all subdirectories.
/E            Edit ACL instead of replacing it.
/C            Continue on access denied errors.
/G user:perm  Grant specified user access rights.
Perm can be: R  Read
W  Write
C  Change (write)
F  Full control
/R user       Revoke specified user's access rights (only valid with /E).
/P user:perm  Replace specified user's access rights.
Perm can be: N  None
R  Read
W  Write
C  Change (write)
F  Full control
/D user       Deny specified user access.
Wildcards can be used to specify more that one file in a command.
You can specify more than one user in a command.

Abbreviations:
CI -- Container Inherit.
The ACE will be inherited by directories.
OI -- Object Inherit.
The ACE will be inherited by files.
IO -- Inherit Only.
The ACE does not apply to the current file/directory.

В този пример ще дадем пълни права на потребител "dr_nikolov":

cacls d:/*.* /T /E /P dr_nikolov:f

Сега ще "разтълкувам" предната команда:

1. calcs -  Името на приложението което използваме за промяна на ограниченята
2. "d:/*.*" - Това са всички директории и файлове които се намират във дял D:
3. /T - Рекурсивно променя ограниченията на всички файлове и директории, вкл. и техните под директории
4. /E - Редактиране на ограниченията
5. /P dr_nikolov:f -- Тук даваме "Full Control" или пълен достъп до файловете на потребител "dr_nikolov"

Това е всичко :)

Автоматично SSH логване с PuTTY

22 януари, 2010 Няма коментари

Здравейте казвам се Мартин Петров и съм създал тази демонстрация единствено и само с учебна цел.

В тази видео демонстрация ще обясня как да генерирате и използвате частните и публични двойки ключоче за да се логвате през SSH с PuTTY. PuTTY е SSH клиент които работи на Windows и Linux, но най- често е употребяван за Windows. Идеята на ключово базираните SSH логини е да не се налага да въвеждате всеки път потребителско име и парола, а автоматично да влизате в отдалечената система в която имате достъп .

Хайде да започнем демонстрацията.

1. Преди всичко трябва да имаме SSH достъп до отдалечена GNU/Linux машина в случая при нас това е машина с IP адрес 10.10.10.1, а ние имаме достъп

2. След това трябва да изтеглим необходимите приложения за Windows, които в случая съм изтеглил

2.1 PuTTY (http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe)
2.2 PuTTY Gen (http://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe)
2.3 PageAgent (http://the.earth.li/~sgtatham/putty/latest/x86/pageant.exe)

След като вече ги имаме сега ще генерираме публичен и частен ключ за съответния логин в машина 10.10.10.1 като използваме приложението puttygen
Стартираме го и поглеждаме в менюто "Keys" за да сме сигурни, че са избрани SSH-2 RSA key

След това натискаме "Generate" за да  генерираме нашият ключ и въвеждаме наша парола на ключовете. За да го генерираме се изисква да местим по- бързо мишката понеже движението се използва за генерирането на ключа.

След като публичния ключ е генериран ще го копираме на отдалечената машина 10.10.10.1.
Трябва да копираме текста от секция "Public key for pasting into OpenSSH authorized_keys file:" и да се логнем в машината. Сега трябва да създадем директория(ако не съществува) .ssh и да поставим предварително копирания текст във файл authorized_keys

След това генерираме личен ключ от PuTTY Key Generator като натиснем бутона "Save Private key" и за тваряме приложението.

Сега отваряме приложението pageant (Search PuTTY SSH authentication Agent) и зареждаме нашият личен ключ като идеята на това приложение е да не се налага запомнянето на ключовите фрази.

След като подготвихме всичко това сега остава да си направим един PuTTY профил.
В Host Name (or IP Address) въвеждеме адреса на машината в която имаме достъп 10.10.10.1, а на порт оставяме подразбиращият се 22. Избираме си и име на сесията или профила "Saved Sessions" autop

В секция "Connection" -> "Data", поле "Auto-login username" трябва да въведем нашето потребителско име, което  в случае е: autop .
Сега трябва да заредим нашият личен ключ в секция "SSH"->"Auth" в "Private key file for authentication"

След всичко това остава да запазим настройките на своя профил като натискаме бутона "Save"

Тук виждаме, че можем да се логваме в машината 10.10.10.1 без да се изисква въвеждането на потребителско име и парола.

Може да гледате видео демонстрацията от Youtube: Автоматично SSH логване с PuTTY
Демонстрация във vbox7: Автоматично SSH логване с PuTTY

Логване в SSH сървър, чрез PuTTY

22 януари, 2010 Няма коментари

Здравейте отново от мен Мартин Петров. Тази видео демонстрация е създадена единствено и само с учебна цел.

Този тази видео демонстрация е част от публикацията "За какво да ползваме PuTTY"  в блога www.mpetrov.net

PuTTY е SSH клиент които се ползва най- много от Windows потребителите. Това видео всъщност е именно за тях. Сега ще демонстрирам как чрез PuTTY може да се логнете в отдалечена машина с пуснат SSH сървър в нашият случай GNU/Linux Debian с пуснат OpenSSH сървър.

Преди всичко трябва да изтеглим PuTTY. Просто пишем в google "PuTTY" и първият резултат ни дава линк от където да го изтег7лим. Аз съм го изтеглил предварително и за целта продължаваме напред към демонстрацията.

Стартираме Putty и в секция "Host name" въвеждаме хостнейм или IP адрес на машината в която искаме да се логнем. В нашият случай е IP адрес 10.10.10.1 . Портът които е сетнат в машината е 22( двадесет и втори) затова оставям този порт. В секция "Saved Sections" записваме името на профила и след това натискаме "Save". Така следващият път вместо да правим тези настройки просто два пъти ще натистнем с мишката върху този името на профила които преди малко написахме.

Може да гледате видео демонстрацията от Youtube: Логване в SSH сървър, чрез PuTTY
Демонстрация във vbox7: Логване в SSH сървър, чрез PuTTY

SSL Hijacking- Видео демонстрация

6 януари, 2010 1 коментар

Здравейте отново от мен Мартин Петров и както винаги тази видео демонстрация е създадена с учебна цел. Авторът не носи отговорност за потенциални щети нанесени от демонстрацията.

Сега ще ви демонстрирам как можете да подслушвате SSL връзки или SSL Hijachking чрез sslstrip от Moxie Marlinspike.

Преди всичко трябва да сканираме своята мрежа и да си изберем потребител на които ще подслушваме SSL връзката.
Отваряме терминал едно и сканираме нашата мрежа

Избираме потребител с IP адрес 192.168.1.100

Сега ще се подготвим за нашият SSL Hijacking като отварим терминал 1 и  редактираме /etc/etter.conf

Позволяваме форвардинг
echo 1 > /proc/sys/net/ipv4/ip_forward

Сега пренасочваме порт 80 към 10 000 с iptables

iptables -t nat -A PREROUTNIG -p tcp --destination-port 80 -j REDIRECT --to-ports 10000

Сега изпълняваме arp спуфинг

arpspoof -i eth0 -t 192.168.1.100 192.168.1.1

В терминал две стартираме sslstrip с аргумент -a -k -f

sslstrip -a -k -f

И в терминал 3 стартираме ettercap за да видим резултата от всичко това :)

ettercap -T -q -i eth0

Хайде сега да наблюдаваме машината на потребителя

Сега потребителят ще отвори сайт с криптирана връзка HTTPS. Например gmail: https://mail.google.com

Въвежда примерно потребителско име и парола

Ще погледнем ettercap в нашата машина. Виждаме потребителското име и паролата които потребителя  въведе по- рано. Всичко се вижда в чист текст като се има впредвид, че връзката беше реализирана чрез https.

По същия начин могат да се прослушват и нормални връзки към страници работещи на 80-ти порт.

Сега потребителя ще отвори уеб сайта arenabg.com и ще въведе примерно потребителско име и парола
Отново виждаме потребителското име и парола.

Видео демонстрация SSL Hijacking:

1. Видео демонстрация качена във vbox
2. Видео демонстрация качена във youtube

Защо да ползваме летни гуми за лятото и зимни за зимата

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

Над този въпрос размишлявахме с един приятел и реших да потърся за повече детайлна информация.  Ето какво открих:

Защо слагаме зимни гуми?

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

При движение на сняг със скорост от 50 км/ч автомобил, "обут" с четири зимни гуми, има спирачен път от 35 метра, докато този с летни гуми спира за 43 метра.
При заледен път и скорост от само 30 км/ч разликата е още по-голяма. Зимните гуми спират за 57 метра, а летните за цели 68 метра.

Много често метрите, спечелени от зимните гуми, предотвратяват сериозни произшествия и спасяват човешки животи. Кои са истинските зимни гуми? На пазара се предлагат т. нар. "всесезонни" гуми. Според производителите им са подходящи за употреба през цялата година -- при пролетния дъжд, при лятната жега, при есената слана и зимния лед. Това не е нищо друго освен маркетингов трик, който обаче често струва скъпо на клиента. И докато през лятото свойствата на тези гуми са задоволителни, при зимни условия употребата им е компромис със сигурността.

zimen_znakПрез 1999 г. в САЩ и Канада бе приет нов стандарт за зимни гуми, който вече е световно признат. Зимните гуми, одобрени по строгите изисквания на този стандарт, гарантират на клиентите най-високите възможни нива на устойчивост и сцепление с пътя при сурови зимни условия и са маркирани със специален знак: снежинка на фона на планина.

Защо силика?

Най-новата технология в производството на зимни гуми е използването в каучуковата смес на силициев двуокис SiO2, химическо съединение известно под името силика. При температури под 7 градуса Целзий, обикновената каучукова смес на летните и всесезонни гуми губи еластичността си и не може да осъществи добро сцепление с пътя дори при сухи условия. Чрез прибавянето на силика се запазва еластичността на каучуковата смес при минусови температури и се постига маскимално сцепление при сняг и лед. Така например, новите зимни гуми със силика Lassa Snoways Era, производство на Bridgestone Sabanci имат 15% по-добро сцепление на сняг в сравнение с предходния модел на фирмата, което води и до значително подобрение на спирачния път при зимни условия. …

За да прочетете цялата статия, моля натиснете тук: автогуми.ком

Видео уроци как да се ползва най- оптимално www.kakvo.org

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

QuestionСлед внимателно наблюдаване на доста потребители как ползват www.kakvo.org установих, че повечето от тях не го ползват оптимално или напълно неправилно. Смятам, че сайта има цялостно изчистена или минималистична концепция която много добре предразполага за бързото му разбиране. Идеята беше когато потребител влезе в сайта от първия миг да разбере каква е идеята, но очевидно има потребители които са затруднени. За целта реших да направя няколко видео урока за това как се ползва безплатния речник- www.kakvo.org. Уроците съм ги качил във vbox7.com както и във youtube.com

Клипове във vbox7.com:
- Безплатен Синонимен речник -- www.kakvo.org
- Безплатен Компютърен речник -- www.kakvo.org
- Правописен речник -- www.kakvo.org
- Безплатен Съновник -- www.kakvo.org
- Безплатен Превод от Английски на Български -- www.kakvo.org
- Безплатен Превод от Български на Английски -- www.kakvo.org
- Форум за всеки и всичко -- www.forum.kakvo.org

Клипове  във youtube.com:

- БЕЗПЛАТЕН Превод от Английски на Български- www.kakvo.org
- БЕЗПЛАТЕН Превод от Български на Английски- www.kakvo.org
- БЕЗПЛАТЕН Български Тълковен речник- www.kakvo.org
- БЕЗПЛАТЕН Български Съновник
- БЕЗПЛАТЕН Български Правописен речник- www.kakvo.org
- БЕЗПЛАТЕН Български компютърен речник
- БЕЗПЛАТЕН Български синонимен речник- www.kakvo.org
- Форум за всеки и всичко

Често срещани проблеми с encoding при php

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

Случвало ли ви се е да имате стринг които е написан с cp1251 и които да искате да конвертирате в utf-8. Най- вероятно да, но случвало ли ви се е да имате стринг които е написан или на cp1251 или на utf-8 предполагам, че на доста няма да им се е налагало затова реших да напиша тази публикация за лесното на следващите след мен.
Имаме стринг "Това е текст" но незнаем на какъв енкодинг е. Преди да го конвертираме в utf-8 или cp-1251 първо трябва да знаем какъв е и след това е ясно. Ето разиграно решение:

<?php

$s_utf8=iconv("CP1251","UTF-8","Това е текст- ЮТФ-8");
$s_cp1251="Това е текст- ЦП1251";

$check1=mb_detect_encoding($s_utf8,'UTF-8,CP1251');
$check2=mb_detect_encoding($s_cp1251,'UTF-8,CP1251');

echo "[$s_utf8 <-><b>$check1</b>] -- [$s_cp1251 <-> <b>$check2</b>]";

?>

Ето примерен проблем при конвертиране с iconv:

<?php
iconv("UTF-8","CP1251",$s_cp1251);
iconv("CP-1251","UTF-8",$s_utf8);
?>

В горното казваме, че искаме да конвертираме UTF-8 към cp-1251, но това няма как да се реализира понеже стринга е CP1251. Същата тази грешка се получава и при следващото . Именно поради тази причина преди да се конвертира даден стринг към друг енкодинг трябва да се знае какъв е бил преди и какъв да бъде след.

Ето ви две функции за конвертиране от UTF8 към CP1251 и втората отново за конвертиране на CP1251 към UTF8, но с проверка за текущия входящ стринг. При тези две функции може да конвертирате без наличие на iconv.

function cp1251_to_utf8($s)
{
function detect_encoding($string)
{
static $list = array('utf-8', 'windows-1251');
foreach ($list as $item)
{
$sample = iconv($item, $item, $string);
if (md5($sample) == md5($string))
return $item;
}
return null;
}

if ( (detect_encoding($s)) == "windows-1251")
{
$c209 = chr(209); $c208 = chr(208); $c129 = chr(129);
for($i=0; $i<strlen($s); $i++)
{
$c=ord($s[$i]);
if ($c>=192 and $c<=239) $t.=$c208.chr($c-48);
elseif ($c>239) $t.=$c209.chr($c-112);
elseif ($c==184) $t.=$c209.$c209;
elseif ($c==168)    $t.=$c208.$c129;
else $t.=$s[$i];
}
return $t;
}
else
{
return $s;
}
}//End of function cp1251_to_utf8($s)

function utf8_to_cp1251($s)
{
if ((mb_detect_encoding($s,'UTF-8,CP1251')) == "UTF-8")
{
for ($c=0;$c<strlen($s);$c++)
{
$i=ord($s[$c]);
if ($i<=127) $out.=$s[$c];
if ($byte2)
{
$new_c2=($c1&3)*64+($i&63);
$new_c1=($c1>>2)&5;
$new_i=$new_c1*256+$new_c2;
if ($new_i==1025)
{
$out_i=168;
} else {
if ($new_i==1105)
{
$out_i=184;
} else {
$out_i=$new_i-848;
}
}
$out.=chr($out_i);
$byte2=false;
}
if (($i>>5)==6)
{
$c1=$i;
$byte2=true;
}
}
return $out;
}
else
{
return $s;
}
}

Конструкции на 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;

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

Система за непрекъснато подаване на мастило

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

Система за непрекъснато подаване на мастилоРеших да изложа малко информация за системите за непрекъснато подаване на мастило понеже няма много информация  или ако има се намира адски трудно.

Може ли мастиленоструйният принтер да печата евтино?

Отговорът на този въпрос можем да открием в СНПМ (системи за непрекъснато подаване на мастило). Задачата на тези системи е да обезпечи непрекъснатото подаване на мастило към печатащата глава на принтера, в зависимост от разхода му. Системите се състоят от:

резервоари за мастило, които са многократно по-големи от оригиналните касети;

многоканални силиконови тръби, свързващи резервоарите със специални касети;

касети, снабдени със само-нулиращи се чипове.

Описаните системи позволяват да се увеличи значително обема на печат, в сравнение с оригиналните касети, както и да се използват алтернативни мастила в разфасовки от 100 до 1000 мл, които са в пъти по-евтини.

Положителните страни на СНПМ са:

висока стабилност на качеството на печат. То се постига благодарение на постоянното налягане на мастилото в печатащата глава и не зависи от нивото на мастилото в резервоарите;

повишена безопасност при печат -- няма риск от попадане на въздух в главите при смяна на касетите;

повишаване обема на печат без риск от внезапно свършване на мастилото в касетата;

намаляване себестойността на печат от 10 до 30 пъти;

запазване на гаранцията на принтера -- поставянето на СНПМ не води до механични повреждания на принтера;

системата ще увеличи живота на вашия принтер.

За отрицателните страни на системите:

Няма такива!!!

При поставянето трябва да се обърне внимание на мястото и начина на монтиране на силиконовите тръби -- те не трябва да се оплитат и да пречат на движението на главите. Единственото негативно нещо за вашия принтер е използването на некачествени мастила, те могат да запушат печатащата глава.

Поевтиняването на печата може да се изчисли за определен принтер -- например за Epson Photo R300:

Оригиналната касета съдържа 13ml = 430 страници А4 при 5% запълване (посочения брой страници е даден от Epson). При 100% запълване една касета отпечатва 21,5 страници. При така направения разчет една страница се покрива на 100% с 13/21,5=0,605 ml. При цена около 25 лв. за оригинална касета -- цената на мастилото за една отпечатана страница А4 100% е 0,605*25/13=1,16 лв.

При използване на съвместими касети за този принтер (на цена около 12 лв. за касета) цената пада на 0,605*12/13=0,56 лв.

Когато печатаме със СНПМ и цена на мастило за Epson R300 около 24 лв. за 200 ml, стойността на една отпечатана страница А4 със 100% запълване вече е 0,605*24/200=0,073 лв. (няма грешка)!!!

Цената на СНПМ за този принтер е 150 лв., което е съизмеримо с цената на един комплект оригинални касети.

Системите за непрекъснато подаване на мастило се използват предимно в принтери с дълъг живот на главите. Такива са почти всички модели на Epson и Canon.

Източник: Варна Бит