The source text is taken from here: http://www.it.fht-esslingen.de/~zimmerma/software/ltools/ltools.html
Вернер Зиммерман/Werner Zimmermann
Linux журнал LTOOLS бар.
LTOOLS Windows жүйесінде Windows астында MTOOLS сияқты функционалдылықты қамтамасыз етеді Linux: олар файлдарға «қаскүнемді» файлдық жүйеде кіруге мүмкіндік береді.
Пәрмен жолынан LTOOLS пайдалану
LTOOLS орталығында DOS немесе DOS-терезесінен Windows 9x/ME немесе Windows NT/2000/XP жүйесінде шақыруға болатын командалық жол бағдарламаларының жиынтығы бар. Олар ‘ls’, ‘cp’, ‘rm’, ‘chmod’, ‘chown’ және ‘ln’ деген белгілі LINUX командалары сияқты функционалдылықты қамтамасыз етеді. Осылайша, DOS/Windows астында болады
- Linux файлдары мен каталогтарын тізімдеу (пәрмен: ldir),
- файлдарды Windows-тан Windows-ға және керісінше көшіруге болады (командалар: lread, lwrite),
- Linux файлдарын жою немесе атын өзгерту (пәрмендер: ldel, lren),
- символдық сілтемелер жасау (команда: lln),
- жаңа Linux каталогтарын жасаңыз (пәрмен: lmkdir),
- Linux файлының қатынау құқықтарын және иеленушісін өзгерту (пәрмен: lchange),
- Linux әдепкі каталогын өзгерту (пәрмен: lcd),
- Linux әдепкі дискісін орнатыңыз (пәрмен: ldrive) және
- қатты диск бөлімін орнату (команда: ldir -part).
Көптеген UNIX құралдары сияқты, бұл функциялар бір пәрмен жолы параметрлері жиынтығымен шақырылатын бір орындалатын файлға қосылады. Өміріңізді жеңілдету үшін, барлық параметрлерді есте сақтауға және терудің қажеті жоқ, сондықтан топтық файлдар жиынтығы (қабық сценарийлері) қамтамасыз етіледі.
Бұдан басқа, LTOOLS Unix/Linux нұсқасы бар, сондықтан сіз оларды Solaris астында немесе тіпті Linux астында, басқа бөлікке қатты диск бөлімінде осы бөлімді орнатпай-ақ пайдаланғыңыз келсе.
LTOOLgui – LTOOLS үшін Java GUI
Командалық бағдарлама ескі сәнді болып табылады! LTOOLS графикалық пайдаланушы интерфейсі қайда? Ешқандай проблема жоқ: LTOOLgui пайдаланыңыз. Java-ның JDK 2-нің Swing кітапханасы арқылы жазылған LTOOLgui, Windows Explorer сияқты пайдаланушы интерфейсін ұсынады (1-сур.). LTOOLgui екі қосалқы терезесінде DOS/Windows және Linux каталогтарыңыздың ағаштарын көрсетеді. Шарлау әдеттегі нүкте және басу әрекеттері арқылы орындалуы мүмкін. Windows-тан Linux-ге немесе керісінше файлдарды көшіру көшіріп-қою немесе апарып тастау арқылы жүзеге асырылады. Тінтуірдің оң жақ батырмасын басқанда қатынас құқықтарын, GID немесе UID сияқты файл атрибуттарын көруге және өзгертуге мүмкіндік береді. Файлды екі рет басу, егер ол Windows орындалатын болса, немесе оны байланысты бағдарламамен ашатын болады. Бұл Linux файлдарымен жұмыс істейді, егер оларда тіркелген Windows қолданбасы болса.
Айтпақшы: LTOOLgui-ді Linux астында файл менеджері ретінде де пайдалануға болады. LTOOLS пәрмен жолы бағдарламалары Linux нұсқасында да бар болғандықтан, оларды дискілерге орнатпай, файлдарға кіруге болады.
Автор LTOOLgui үшін Java-ны таңдады, себебі Java әсіресе төмен деңгейлі қатты дискіге қатынасу үшін қолайлы… тек қана шок! Жоқ, әрине, Java-де бұл мүмкін емес. Жабдыққа тікелей қосылғыңыз келсе, C++ кодын және JNI (Java-ның жергілікті интерфейс) пайдалану керек. Дегенмен, JNI тек 32 биттік код үшін жұмыс істейтіндіктен, Windows 9x/ME астында бұл 32 биттік ның 16 биттік түрлендіру (төменде қараңыз) дегенді білдіреді. Автор Sun-ның Java-ін MASM кодымен біріктіру идеясын ұнатпағандықтан, ол басқа көзқарасқа ие болды. Ол әйгілі stdin/stdout-интерфейсі арқылы Java-дан шақырылған LTOOLS пәрмен жолы бағдарламасын пайдаланады. Яғни, Java тарапынан аппараттық қамтамасыз ету үшін қарапайым ағын негізіндегі файлды енгізу/шығару білдіреді.
1-сурет: Java негізінде LTOOLgui графикалық пайдаланушы интерфейсі
Интернет арқылы қол файл?
Әрине, өнер бағдарламасының кез-келген жағдайы Интернетті білуі керек! LREADjav-ді қашықтағы компьютерде іске қосып, оған LTOOLgui-дың қосу батырмасы арқылы қосылсаңыз, жергілікті қашықтықтағы Linux-дегі қашықтағы серверге кіруге болады. LREADjav – LTOOLgui арқылы TCP/IP бойынша LTOOLS пәрмен жолы бағдарламасына қоңырау шалып, TCP/IP арқылы LTOOLgui (2-суретті қараңыз) арқылы пәрмен жолының бағдарламаларын шығарды. Әрине, тек қана каталог тізімдерін көре алмайсыз, бірақ қашықтан жұмыс істей аласыз, жергілікті файлдарды жүктеу және жүктеуді қоса аласыз. Қашықтағы құрылғы Unix/Linux немесе Windows жүйесін іске қосуы мүмкін. Бүгінгі күні бұл ойыншыққа елеулі қолданудан гөрі, өйткені LREADjav қауіпсіздік проблемаларын тудыруы мүмкін. Әдепкі конфигурацияда оны тек ‘localhost’ -тен қолдануға болады, бірақ ол 3 түрлі қашықтағы клиенттердің қосылымдарына рұқсат ету үшін конфигурациялануы мүмкін. Бірақ олар тек IP-адресімен ғана анықталады, парольді қорғау және т.б. Дегенмен, егер пайдаланушыға бұл үшін елеулі қосымша болса, ол логин/пароль схемасын оңай іске асыра алады… Бұл ашық көзі!
2-сурет: қашықтан қол жеткізу үшін LTOOLgui
Жоқ Java? веб-браузерді пайдаланыңыз!
Сізде Java 2 орнатылмаған шығар. Енді веб-браузері бар болғанша проблема жоқ. «LREADsrv» және веб-шолғышты және «http://localhost» URL-мекен-жайын іске қосыңыз (Cурет 3). Енді сіздің Linux каталог тізіміңіз веб-шолғышыңызда графикалық түрде көрінуі тиіс. LREADsrv – қарапайым CGI-интерфейсі арқылы LTOOLS протоколы HTTP-сұраулар арқылы қол жетімді етеді және олардың шығарылымдарын динамикалық түрде HTML беттеріне түрлендіретін кішкентай жергілікті веб-сервер (Cурет 4). Әрине, бұл жергілікті қол жетімділікті қамтамасыз етпестен, сонымен қатар ғаламтор арқылы қашықтан кіруге мүмкіндік береді. Дегенмен, қашықтағы пайдаланушылар үшін LREADsrv LREADjav сияқты бірдей деңгейдегі қауіпсіздіктің төмен деңгейіне ие.
LREADsrv HTML пішіндеріне негізделгендіктен, мысалы: апарып тастауды немесе тікелей көшіру және қоюды қолдамайтын, веб-браузерлеріңізбен жұмыс істейтін Java-негізделген GUI-мен жұмыс істеуден гөрі ыңғайлы. Дегенмен, ол бірдей мүмкіндіктерді қамтамасыз етеді.
3-сурет: Linux файлдарын Microsoft Internet Explorer-мен зерттеу
4-сурет: LREADsrv – Linux файлдарына HTTP негізінде қатынау
LTOOLS ішкі – Windows астында Accessings қатты диск
DOS/Windows өзі сыртқы файлдық жүйелерге интерфейстерді қолдамаса, LTOOLS дискке тікелей «деректер жоқ» деректер байтына кіруі керек. LTOOLS интерфейстерін түсіну үшін төмендегі бағыттар туралы негізгі түсінікке ие болу керек:
- Қалай қатты дискілер «шикізат» байт дискіден оқу немесе жазбаша болуы мүмкін қалай, яғни бөлімдер мен секторлар ұйымдастырылған және олар қалай кіруге болады. Бұл ақпарат /2,3/ мысалы табуға болады.
- Қалай Linux кеңейтілген 2 файлдық жүйесін ұйымдастырылды. барлық inodes, топтар, блоктар, нүктенің әлеміштері мен каталогтар заттар туралы жақсы шолу /4/, мысалы табуға болады.
Бұл автоматты түрде бірнеше C файлдар тұрады LTOOLS өзегі (сур. 5), бір қабатты сәулет әкеледі:
- Файл Readdisk.c жылы ең төменгі қабаты 1 физикалық қатты диск қатынасады. DOS, тікелей, тіпті қатты диск қол қатысты Windows 9x/ME, Windows NT/2000/XP және Linux/Unix және жоғары қабаттарының оларды жасыру тырысады арасындағы (барлық дерлік) айырмашылықтар Бұл қабаты мәмілелер. бұл арада туралы толығырақ.
- Қабат Кеңейтілген 2 файлжүйесіне ұйымдастырылған ол ішіне UNIX типтік индекстік дескриптор, блоктың және топтық құрылымдармен 2 мәмілелер.
- Қабат 3 файлдық жүйенің каталог құрылымын басқарады.
- (Main.c жылы) ең жоғары қабаты 4 пайдаланушы интерфейсін қамтамасыз етеді және пәрмен жолы параметрлерін тексереді.
Қатты дискінің бөлім кестесін сканерлеген кезде, LTOOLS сіздің алғашқы Linux бөлімді автоматты түрде бірінші қатты дискіңізге табуға тырысады. Егер сіз басқа бөлімге немесе дискіге кіруді қаласаңыз, оны «-s» пәрмен жолы параметрі арқылы көрсетуіңіз керек, мысалы:«-s/dev/hdb2». Сондай-ақ, сіз басқа әдепкі дискіні және бөлімін «ldrive» пәрмені арқылы орнатуға болады. Сізге қандай бөлімдер бар екенін білу үшін «ldir -part» деп атаңыз.
5-сурет: LTOOLS деңгейлі сәулет
DOS-дың жақсы ескі күндерінде өмір оңай болды. Қатты дискіңізге төменгі деңгейдегі оқу немесе жазу үшін бір ғана жол болды: BIOS үзілімі 13h /3/. BIOS деректер құрылымдары қатты дискілерді 1024 цилиндрге, 63 басына және 512 байттың 255 секторына дейін шектейді, яғни 8 Гб. Көптеген C компиляторлары biosdisk() деп аталатын функцияны қамтамасыз етті, осылайша, бұл функция құрастыру тілінде код талап етпестен тікелей қолданылуы мүмкін. Үлкен қиындықтармен күресу үшін, бірнеше жыл бұрын «кеңейтілген» int 13h функциялары енгізілді. BIOS шектеулерін еңсеру үшін, бұл функциялар ескі цилиндрдің бас секторы (CHS) мекенжайына емес, сызықтық адрестік схемасын, логикалық блоктық мекенжайларын (LBA) пайдаланады.
Бұл Windows 9x/ME DOS терезесінде (1-кесте), кем дегенде, оқу мүмкіндігіне арналған және бағдарлама 16 битті компилятормен жиналған кезде жұмыс істейді. (LTOOLS Borland C, Windows NT/2000/XP нұсқасын Microsoft Visual C-мен бірге құрастырады, Unix/Linux нұсқасында GNU C пайдаланады). Егер жазу деңгейінің төмен деңгейін қаласаңыз, сізге «дыбыс қаттылығының құлыптары» керек. Бұл механизм сіздің операциялық жүйеңізге операциялық жүйе драйверлерін айналып өтіп, тікелей Windows операциялық жүйесімен жұмыс жасайтындығын хабарлайды, сондықтан Windows бағдарламасы басқа бағдарламалардың сіз жасағанша дискіге кіруіне кедергі жасай алады. Бұған C компиляторының ioctl() функциясын қолдану арқылы құрастыру бағдарламаларынсыз жасалуы мүмкін.
16 биттік Windows бағдарламасында BIOS функциялары тек DPMI арқылы шақырылады. Көптеген C компиляторлары қабықша функцияларын қамтамасыз етпейтіндіктен, бұл (кірістірілген) ассемблерді талап етеді. Алайда, Win16 пәрмен жолы бағдарламаларына мүлдем тыйым салады, сондықтан алаңдамаңыз.
Windows NT/2000/XP DOS терезесінде, BIOS int 13h арқылы GPF (Жалпы қорғаныс қатесі) пайда болады. Қауіпсіздік себептеріне байланысты, Windows NT/2000/XP операциялық жүйені айналып өтіп, қатты дискіге тікелей қатынауға рұқсат бермейді. Дегенмен, Microsoft корпорациясы Unix/Linux астында жазатындай қарапайым болып табылатын шешім ұсынады:
int disk_fd = open("/dev/hda1", O_RDWR);
Бұл қатты дискінің бөлігін ашатын еді /dev/hda1, сізге қоңырау шалуға болады read(), сізге жазу үшін қоңырау шалады write(). Қарапайым және қарапайым, солай емес пе? Төменде Windows NT/2000/XP, егер сіз пайдалансаңыз WIN32 API /5/, функциясы CreateFile() файлдарды ғана емес, сонымен қатар диск бөлімдерін жасауға және ашуға мүмкіндік бермейді:
HANDLE hPhysicalDrive = CreateFile("\\\\.\\PhysicalDrive0",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
0, OPEN_EXISTING, 0, 0 );
Диск секторларын оқу және жазуды енді ReadFile() және WriteFile() арқылы жасауға болады.
Windows 9x/ME астында бір Win32 функциясын қолдануға болатындығын бір сәтте ойласаңыз болады. Алайда, егер сіз CreateFile() құжаттамасында оқыған болсаңыз, мыналарды табасыз:
Windows 95: This technique does not work for opening a logical drive. In
Windows 95, specifying a string in this form causes CreateFile to return
an error.
Windows 9x/ME астында Microsoft-ның Win32 құжаттары жүйенің VxDs (ядро драйверлері) VWIN32 арқылы BIOS Int 13h-ке қоңырау шалуды ұсынады. Егер сіз мұны істеуге тырыссаңыз, онда сіз табысқа жете алмайсыз. Майкрософт білім базасындағы Q137176 мәселе туралы есепде, ресми Win32 құжаттары не айтылғанына қарамастан, бұл қатты дискілерге емес, дискеттерге арналған. Мәселе туралы хабарда айтылғандай, қатты дискілер үшін BIOS Int 16h-ті 16-шы кодқа шақырудың жалғыз жолы. 32 биттік бағдарламадан 16 биттік кодқа қоңырау шалу үшін сізге Microsoft-тың «32 биттік 16-ға дейінгі түрлендіру» қажет болуы керек… Бұл басқа API емес (басқа құжатталмаған мүмкіндіктер немесе құжатталған қателер бар ма) түрлендіру сондай-ақ Microsoft корпорациясының түрлендіру компиляторына қажет, ассемблер кодын жасайды. Оның үстіне Microsoft 16-биттік және 32 биттік нысан файлын Microsoft-ның ассемблері MASM көмегімен жасау керек. Олар сізге жазуға тура келетін C-кодтың кейбір сызық сызықтарымен байланысты болады, нәтижесінде 16 биттік және 32 биттік DLL (динамикалық байланыс кітапханасы) болады. Айтпақшы, осы үшін 32 биттік Visual C++ ғана емес, сонымен қатар Microsoft C компиляторының ескі 16 биттік нұсқасы болуы керек… Ол бар ма? Мамандандырылған, кеңінен қолданылмаған құралдардың жиынтығын пайдалану, LTOOLS сияқты Open Source бағдарламалық құралына арналған жақсы шешім болмайды!
Қорытындылай келе: DOS/Windows 9x/ME, Windows NT/2000/XP және Linux/Unix үшін бөлек нұсқалар болуы керек. Бұл мүмкіндікті пайдаланушылардан жасыру үшін, LTOOLS операциялық жүйе жұмыс істеп тұрғанын және автоматты түрде тиісті орындалатындығын анықтайтынын анықтайды.
1-кесте: Төмен деңгейлі қатты дискіге кіру
Төменде DOS | Төменде Windows 9x/ME | Төменде Windows NT/2000/XP | Төменде LINUX/Unix |
|
|
|
|
Қауіпсіздік қатысты?
Ия, белгілі бір кеңейтілген LTOOLS қауіпсіздік проблемаларын тудыруы мүмкін. Оларды басқара алатын әрбір пайдаланушы LINUX файл жүйесіндегі файлдарға кіруге және өзгертуге болады, мысалы: файлға кіру құқықтарын немесе файл иелерін өзгерту, парольдерді алмастыру файлдары және т.с. Алайда, бұл жай дискідегі редактормен де мүмкін. Мүмкін, бұл LTOOLS пайдалану кезінде біраз ыңғайлы. Дегенмен, DOS немесе Windows 9x/ME астында жұмыс істейтін болса, шектеусіз қол жеткізу мүмкін. Windows NT/2000/XP нұсқасында LTOOLS пайдаланушысы қатты дискіге тікелей қатынауға арналған әкімші құқықтарына ие болуы керек. Көптеген стандартты қондырғыларда Unix/Linux астында ғана жүйенің әкімшісі «шикізат» диск құрылғылары /dev/hda, /dev/hda1 және т.б. үшін кіру құқықтарына ие.
Кез келген балама бар ма?
LTOOLS – Linux файлдарын DOS/Windows-тан алудың жалғыз шешімі емес. Мүмкін, бұл мәселенің шешімі бірінші болып 1996 жылы құрылған Клаус Тондеринг компаниясының Ext2tool /6/ командалық жолының құралдар жиынтығы болды. Алайда, Ext2tool тек қана оқуды оқуға шектелген және Windows NT астында іске қосылмайды. Ext2tool негізіндегі Peter Joot 1997 жылы Windows NT нұсқасын жазды, бірақ тек оқуға ғана шектелген /7/. Екі бағдарлама C-да жазылған, бастапқы кодтар бар.
Джон Ньюбигин бізбен Explore2fs /8/ қамтамасыз етеді, ол өте жақсы GUI-мен келеді және Windows 9x және Windows NT астында жұмыс істейді. Оқу және жазу мүмкіндігімен ол LTOOLgui сияқты мүмкіндіктерді береді. Айтпақшы: Джон жақсы жұмыс жасады, өйткені ол Microsoft-тың 32 битін 16-биттік түрлендіру-ды (жоғарыдан қараңыз) жүзеге асырды, тіпті Borland Delphi-де! Барлық Delphi бағдарламалары Explore2fs бағдарламасында «жіксіз» біріктіреді, бірақ Windows емес операциялық жүйелерге көшу қиын болуы мүмкін.
Тарих және болашағы
LTOOLS алғашқы нұсқасы Джейсон Хантер мен Дэвид Люцтің Салем/Орегон (АҚШ) университетінің Willamette университетінде «lread» деген атауымен құрылды. Бұл бірінші нұсқа DOS астында жүгіріп, Linux каталог тізімдерін көрсетуі және Linux файлынан DOS-ға файлдарды көшіруі мүмкін және кішкентай IDE қатты дискілері мен LINUX-пен бастапқы бөлімдерде шектелген.
Автор 1996 жылы техникалық қызмет көрсету және оны одан әрі дамытуды өзіне алды. Содан бері LTOOLS үлкен қатқыл дискілермен күресуге, SCSI дискілеріне қол жеткізуге, Windows 9x/ME және Windows NT/2000/XP астында жұмыс істеуге, қосымша жазуға қол жеткізуге үйренді. UNIX, Solaris және Linux астында іске қосуға мүмкіндік береді. Олар веб-браузерге негізделген және JAVA негізделген графикалық пайдаланушы интерфейсі және т.б. Көптеген бастапқы кодта аталған Linux пайдаланушылары тестілеу мен күйін келтіруге көмектесті. Рақмет сізге.
Сонымен қатар, LTOOLS V4.7 /1/ нұсқасына қол жеткізді, мүмкін, одан да көп, бұл мақала жарияланған кезде. Қосымша функциялардан басқа, көптеген қателер тіркелді – және, ең алдымен, жаңа енгізілді. Жалпы проблема бірнеше жылдар бойы сақталды: ешкім жылдамдықты жылдамдықты болжайтын қатты дискідегі технологияда, дискінің өлшемдері жарылып, операциялық жүйенің шектеулеріне ұшырады. DTS-дің 512 МБ дискідегі проблемалары, 2Гб бөлімдерімен Windows 3.x ақаулары, 8 ГБ-де BIOS шегі және Windows NT-те 2 ГБ, 4 Гб және 8 Гб-де болатын түрлі мәселелер туралы есіңізде ме? Бұл тек бір сәтте ғана! Айтпақшы, Linux-де тіпті өз проблемасы бар: 2.3-ке дейін ядродағы файлдар 2 Гб-тан аспауы мүмкін, себебі 32 биттік Unix жүйелері сияқты read() немесе write() (бұл ядрода шешілетін болады) 2.4 дестелерді 64 биттік мәндерге ауыстыру арқылы, бірақ жоғары үйлесімділікті сақтау Linux-ды жоғарыдағы Windows үшін талқылағандай бірдей проблемаларға айналдыруы мүмкін). Дискілік қатынау үшін бағдарламалық жасақтаманы стандарттау әрдайым дискілердің әзірлеушілеріне қарағанда әлдеқайда баяу болды, сондықтан олар операциялық жүйенің шектеулерін еңсеру үшін авторлық шешімдер ойлап тапты. Және әрдайым LTOOLS – және басқа да көптеген бағдарламашылар – онымен күресуге тура келді… Сондықтан LTOOLS сіздің жаңа 64 ГБ жетегіңізде жұмыс істемесе, ашуланбаңыз. Бұл ашық код, сондықтан оларды түзетуге және одан әрі дамытуға көмектесуге тырысыңыз!
Және сіз LTOOLS-ді қолдансаңыз, ұмытпаңыз: өзіңіздің тәуекеліңізді орындаңыз! Оқу тек Linux-ға қол жеткізуді білмейді. Дегенмен, Linux дискіңізде файлдарды жою немесе файл атрибуттарын өзгерту үшін жазу қатынасын пайдалансаңыз, LTOOLS – және сіз пайдаланушы ретінде – көптеген ақылсыздықтар жасай алады. Мәселен әрдайым сақтық көшірмесін жасаңыз!
Сілтемелер
- http://www.it.fht-Есслинген.de/~zimmerma/software/ltools.html: Басты бет LTOOLS
- Michael Tischer: PC-Intern 4. Data-Becker-Verlag
- http://www.cs.cmu.edu/afs/cs.cmu.edu/user/ralf/pub/WWW/files.html Ральф Браунның үзіліс тізімі x86-ПК
- http://metalab.unc.edu/pub/Linux/system/filesystems/ext2/Ext2fs-overview-0.1.ps.gz: Гади Оксманның туралы Extended 2 файлдық жүйе.
- Microsoft Windows Win32 API – Құжаттау көптеген Windows C компиляторларымен немесе MSDN ықшам дискілерінен келеді
- http://metalab.unc.edu/pub/Linux/system/filesystems/ext2/ext2tool_1_1.zip: Клаус Тондеринг Ext2tool
- http://metalab.unc.edu/pub/micro/pc-stuff/Linux/utils/dos/ext2nt.lsm: Питер Джут Ext2nt
- http://uranus.it.swin.edu.au/~jn/linux/explore2fs.htm: Джон Ньюбигиннің Explore2fs
Автор туралы
«Нақты өмірде» Вернер Зиммерман ФГ Есслинген – Есслинген, Германиядағы Қолданбалы ғылымдар университетінде инженерлік, сандық жүйелер мен компьютерлік архитектураны үйретеді. Автомобильдер мен өнеркәсіптік қондырғыларда аппараттық және бағдарламалық жасақтама бар. Linux жүйесінің бағдарламалық жасақтамасын әзірлеуші ретінде «мансап» 1994 жылы CDROM дискісін сатып алғаннан кейін Linux-да қолдау таппады. Сол себепті ол Linux-ның CDROM драйверін әзірлеген ‘aztcd.c’ әзірледі. стандартты Linux ядролары болса да, диск қазір өте ескірген болса да.