пʼятниця, 11 січня 2008 р.

KDE4: суб'єктивний погляд користувача Gnome

Я не користувався KDE мабуть вже років три. Так, я типовий гномер і мені дуже імпонує саме підхід Gnome до побудови інтерфейсу користувача. Але сьогодні відбулася знакова подія у альтернативному лагері - відбувся реліз KDE4. Бажаючи подивитися, що ж воно таке я зайшов на kde.org і завантажив LiveCD з OpenSUSE. Я запустив його під VirtualBox (під VMWare диск взагалі завантажувався відмовися, дивно...) і зараз спробую описати свої враження. Одразу нагадаю, що я не збираюся порівнювати KDE4 з гілкою KDE 3.5.x, мій погляд на нього обмежується поглядом користувача Gnome 2.20. Також я не збираюся порівнювати Ubuntu і OpenSUSE, не у тому зараз моя ціль.

Отже, дочекавшись завантаження системи я побачив наступну картину:



Перше, що кидається в очі - це новий фірмовий стиль Oxygen. Важко судити наскільки він красивий, ну який є такий є. Інтерфейс цілком у стилі KDE - одна нижня панель у стилі Windows. Велика синя кнопка зліва викликає стартове меню, а у правій частині знаходиться годинник, трей, аплет Klipper (багаторівневий буфер обміну) та перемикач робочих столів. Спробував потикати мишкою по панелі і проглянути контекстні меню. Дивно, але так і не знайшов де можна відрегулювати її розміри. Спроба взятися з панель і перетягнути її до іншого краю екрану також не вдалася - нуль реакції. Звичайно внизу їй мабуть найкраще місце, але все ж таки дивно. Клацнув правою кнопкою на годиннику і обрав Digital Clock Settings, як виявилося там можна лише регулювати параметри відображення годинника.......а де ж можна змінити дату й час? І три кнопки в діалоговому вікні як і раніше: OK, Apply та Cancel. Знову дивно. У Gnome цілком логічно щоб змінити дату потрібно клацнути по годиннику, а у діалогових вікнах лише одна кнопка - Закрити. Кинувся в очі новий елемент у верхньому правому куті екрану, як виявилося це був аплет для керування віджетами на робочому столі. От це сподобалося, віджети додаються просто і реалізовані непогано. У Gnome для підтримки віджетів потрібно встановлювати додатковий пакет, тут підхід KDE4 виглядає непогано.



Клацнувши по робочому столу можна змінити фонову картинку, тут все цілком логічно. Тепер перейдемо до меню:



Хм. Досить цікава конструкція. У верхній частині є поле пошуку, якщо там наприклад почати вводити назву програми, то кількість пунктів меню поступово буде зменшуватися доки ви там не побачите ту програму яку шукали. Мабуть корисно. Розділ Applications аналогічний меню Програми у Gnome. Але тут меню не розгортається в сторону, а підменю перекриває попереднє, крім того щоб рокрити меню по ньому потрібно клацнути, простого наведення мишкою недостатньо. Для того щоб повернутися на рівень вгору потрібно клацнути по стрілочці ліворуч. Як на мене, то це тупо. А ще вразила така річ: коли обираю категорію Graphics, то у ній знаходяться ще дві підкатегорії (!) Image Editing та Viewer у яких у свою чергу знаходяться відповідно графічний редактор KolourPaint та переглядач Gwenview. Навіщо робити як на мене ще один зайвий рівень меню не зрозуміло, імхо простого сортування по основним категоріям більш ніж достатньо.

Пункт Computer об'єднує у собі гномівські меню Місця та Система. Розділи аналогічні Favourites та Recently Used у Gnome немає, але у нас є Недавні документи, а у KDE4 такого не видно. Досить спірним виглядає виділення цілого окремого розділу Leave з функціями типу вимкнення, перезавантаженням та ін. Тут підхід Gnome з однією кнопкою у кутку екрану мені більше до вподоби. Власне стартове меню мені чесно кажучи не сподобалося, я думаю, що меню в KDE 3.5 було зручніше, та і своє меню Gnome я б на це не проміняв.

Підемо далі. Глянемо у системні налаштування.



Дещо нагадало Gnome Control Center. У порівнянні зі старим перевантаженим опціями монстроподібним Цетром керування KDE, новий дизайн центру керування виглядає непогано. Але мене найбільше цікавив новий перемикач клавіатурних розкладок. Як відомо, попередні версії KDE завжди цим страждали. Дійсно, перемикач розкладок відремонтували, я без проблем додав українську розкладку і налаштував Ctrl+Shift для перемикання. Відповідний аплет з прапорцем у нижній панелі з'явився автоматично, не дарма все ж таки розробники KDE витратили стільки часу :). До речі порившись у центрі керування я таки знайшов як і годинник налаштувати, але чому цього ж не можна зробити просто клацнувши мишкою по годиннику на панелі мені все ж таки не зрозуміло, адже це досить очевидна річ. Де змінити розміри панелі і чи можна додати додаткові я так і не знайшов, хоча ніби шукав уважно. В усьому іншому великих відмінностей від Gnome я не побачив, все досить типово. Не зміг втриматися, заглянув у YaST, хоча й обіцяв не порівнювати SUSE та Ubuntu. Як виявилося, нічого особливого, в Ubuntu налаштування реалізовано нічим не гірше. Не очевидно як на мене розташування пункту Install Software у розділі Computer стартового меню. У Gnome пункт Додати/Видалити знаходиться у меню Програми, що цілком логічно.

Далі я запустив файловий менеджер. Нині його роль виконує Dolphin.



Виглядає досить симпатично, зловив себе на думці, що насправді Dolphin мені дуже сильно нагадує Nautilus. Хм, це мені здається вже не вперше але схоже KDE таки дійсно стає більше схожою на Gnome. Власне про файловий менеджер мало, що можна сказати, як і Nautilus він інтуітивно зрозумілий, функціональний і зручний. Звернув увагу, що домашній каталог користувача абсолютно пустий. У Gnome там автоматично є папки Documents, Music та Videos, що логічно бо їх всеодно довелося б створювати власноруч. Правда у KDE4 у контекстному меню доступні шаблони файлів для створення, а у Gnome далеко не очевидно, що для цього потрібно створити папку Templates і накидати туди власноруч зроблені шаблони різних типів.

Оглянув стандартні програми. Заодно ще раз згадав незлим теплим словом це тупе стартове меню. Вибачте мене будь-ласка, але меню по якому потрібно клацати щоб розкрити підменю і вкладення більше ніж на два рівні це дійсню дурість. Уявіть, ви заходите у Applications->System->Terminal і бачите там один єдиний пункт. Як ви думаєте він називається? Вірно - Terminal! Питається з якого бодуна потрібно було вставляти Terminal у підменю Terminal. Працювати з таким меню кожного дня це мабуть була б мука, добре, що хоч функція пошуку є.

Вікно терміналу доречі тепер можна розбивати на дві частини. Для чого це потрібно правда я так і не додумався, але може комусь і буде корисно.



Всі програми як і саме середовище тепер переписано під Qt4. Це звісно ж можна лише вітати, Qt4 - дуже хороша бібліотека, мені вона самому дуже подобається, у порівнянні з Qt3 її серйозно переробили у кращу сторону.

Симпатично виглядає чудовий текстовий редактор Kate (це аналог gedit у KDE).



А так нині виглядає калькулятор:




З'явився універсальний переглядач документів Okular, такий собі аналог Evince. Konquerror став простішим ніж раніше і тепер виконує роль лише веб-браузера. Як на мене це правильно, раніше він був занадто монстроподібним.



Що стосується загальних вражень, то KDE4 мені ще здалася дещо сируватою, декілька разів вилітало повідомлення про помилку, а одного разу система взагалі зависла. Розробники обіцяють версію 4.1 до літа, маю надію, що дрібні глюки будуть виправлені. Крім того потрібно не забувати, що KDE4 переписали практично з чистого листа і на рівні архітектури у неї кардинальні зміни у порівнянні з попередніми версіями. Потенціал системи величезний, але у той же час автори повинні розуміти, що кінцевого користувача більше цікавить зовншній вигляд і зручність ніж API та тому подібні високі матерії. Швидкість роботи інтерфейсу та розрекламовані графічні навороти віконного менеджеру KWin я звісно не оцінював, бо тестував систему під VirtualBox.

Отже спробую підвести риску.
Що сподобалося:
  • Використання бібліотек Qt4 та вирішення старих проблем шляхом кардинальної зміни ідеології.
  • Досить приємний стиль Oxygen.
  • Розумна кількість налаштувань на фоні старих версій KDE, нове середовище сильно нагадує підхід Gnome з його HIG.
  • Зручний файловий менеджер Dolphin, що прийшов на зміну перевантаженому функціями Konquerror.
  • Реально працюючий аплет перемикання розкладок клавіатури.
  • Зручна реалізація віджетів робочого столу.
  • Функція пошуку у головному меню.
  • Наявність готових шаблонів для створення файлів у контекстному меню Dolphin.
Що не сподобалося:
  • Відверто жахливе стартове меню, як на мене то навіть меню WindowsXP набагато краще.
  • Відсутність можливості змінити розміри панелі, та й взагалі я не знайшов ніяких аплетів для її налаштування.
  • Відсутність можливості зкорегувати час і дату через контекстне меню годинника на панелі.
  • Занадто велика вкладеність меню Applications, що реально заважає роботі.
  • Нелогічне розташування аплету встановлення/видалення програм.
  • Як і раніше стандарт KDE - це три кнопки у діалогових вікнах. У Gnome прийнято обходитися однією і мені це більше подобається.
  • Низька стабільність системи в цілому.
Остаточний висновок: Як подальший розвиток KDE, я вважаю, що нова четверта версія це великий крок уперед, проте думаю, що всім потрібно ще дочекатися офіційного виходу 4.1 аж доки вона набуде необхідної стабільності і доки приберуть дрібні глюки. Серйозні зміни на рівні API та переведення середовища на платформу Qt4 варті глибокого респекту. Якщо ж говорити про мої враження від KDE4 як користувача Gnome, то нічого вражаючого я у ній не помітив, крім можливо того факту, що сучасна KDE починає рухатися у тому ж напрямку, що і Gnome, тобто до більш логічного і зручного інтерфейсу. Хоча ні нижня панель ні стартове меню відчуття комфорту не подарували, швидше навпаки, у той час інші компоненти здалися цілком непогано реалізованими. Думаю KDE4 не перетягне на свій бік нинішніх користувачів Gnome, але вона буде напоганим стимулом для команди розробників останнього вводити нові зручності щоб утримувати свої позиції (тим більше, що у Topaz Brainstorm є багато корисних і цікавих ідей).
Мороженные и сушеные грибы,Мороженные и сушеные грибы,

Реклама

отдых в анапе 2009,Ищете базу недвижимости России - продажа недвижимости в России. Недвижимость: цены.,автомобильный сайт BMW X5, для любителей,Цифровое печатное оборудование: оборудование для полиграфии. Срочная полиграфия.,

Чи така страшна консоль як її малюють?

Один із розповсюджених стереотипів про Linux серед новачків говорить
про те, що тут майже нічого не можна зробити без знання команд. Ну,
насправді це не так, тобто вже далеко не так. Проте не дивлячись на
розвинутість таких графічних середовищ як Gnome та KDE та величезну
кількість графічних конфігураторів, все ж таки велика кількість
користувачів Linux рано чи пізно приходить до думки, що з консоллю
варто познайомитися. У даній статті я спробую описати основи роботи з
консоллю і показати як вона може допомогти у ряді випадків зекономити
час і збільшити продуктивність праці. У Windows також існує консоль,
проте там ї рідко використовують, не в останню річ звичайно через певну
її обмеженість. Консоль Linux має на порядок більше можливостей але
багато мігрантів з платформи Windows про них і не здогадуються. На жаль.

Отже, спочатку трохи теорії. Під консоллю зазвичай розуміють текстовий
інтерфейс якому користувач вказує, що робити з допомогою набору на
клавіатурі певного набору спеціальних команд, а результат їх виконання
може бачити на екрані. Дана функціональність у Linux забезпечується
спеціальною програмою - командним процесором. У світі існує багато
типів командних процесорів (sh, csh, ksh, bash та ін.) проте у сучасних
дистрибутивах Linux зазвичай використовуєтсья bash. В інших системах
*nix можуть використовуватися й інші процесори, наприклад sh, тому щоб
не було проблем з кросплатформеним софтом у Linux також можна знайти
файл sh але типово він є просто символічним посиланням на той же bash.
Всі ми знаємо, що графічний інтерфейс Linux не є настільки жорстко
інтегрованим у систему, як наприклад це зроблено у Windows чи там BeOS,
тобто насправді ви можете використовувати свою систему і без
встановленої X Windows System (у простонародді "ікси"), тоді при
завантаженні системи вас спитають логін і пароль після чого
завантажиться командний процесор і ви попадете у текстову консоль. У
графічному ж режимі у вашому розпорядженні завжди є так звані емулятори
терміналу які дозволяють відкривати консольну сесію у вашому графічному
менеджері.

Перше, що потрібно знати, це те, що у вашій системі вже передбачено
шість незалежних текстових консолей. Між ними можна перемикатися
натискаючи клавіші Ctrl+Alt+F1..F6. Натиснувши якусь із цих комбінацій
клавіш ви попадете у чисту консоль з повноекранним текстовим режимом.
Кожну з консолей можна використовувати незалежно від інших, тобто можна
запустити на одній з них одну програму, а на іншій ще якусь і
перемикатися між ними у довільному порядку. Якщо ви перейшли у
текстовий режим з графічного, то повернутися назад у своє звичне
графічне середовище ви можеет натиснувши Ctrl+Alt+F7. Це повинно бути
ясно.

Звичайно потрапити у консоль можна і не виходячи з графічного режиму.
Для цього як я вже говорив служать емулятори терміналу, ці програми
можна вважати своєрідним аналогом командного рядка DOS у Windows. Існує
багато різних емуляторів терміналу, проте не це зараз важливо. Оскільки
Ubuntu використовує у якості графічного середовища Gnome, то у вашому
розпорядженні вже є як мінімум два таких емулятори. Перший - це X
Terminal (xterm), є стандартним емулятором терміналу для X Windows і
присутній у будь якій системі де є "ікси". Натисніть Alt+F2, це
стандартна комбінація яка викликає діалог звідки можна запускати
програми використовуючи команди (у Windows є аналогічна комбінація -
Win+R), наберіть xterm і натисніть Enter. Результат буде ось таким:



Цей емулятор забезпечує лише базові можливості, жодних наворотів тут
немає, але у захищеному режимі X Windows зазвичай є доступним лише він,
тому знати про його існування потрібно. Тепер оберемо
Програми->Стандартні->Термінал, так ми запустимо програму
Gnome Terminal. Цей емулятор вже набагато більш зручний і
функціональний (можна використовувати вкладки, буфер обміну, обирати
кольори та ін.), а головне і швидший у роботі.



Тепер коли ми знаємо як попасти у консоль займемося її вивченням.
Поглянемо у вікно терміналу, зліва від блимаючого текстового курсору
можна побачити рядок який називають запрошенням. Він містить інформацію
про активного користувача, ім'я даного комп'ютера та поточний каталог.
Символ ~ (тильда) у даному випадку вказує на те, що активним є домашній
каталог користувача.

Команди являють собою набір літер латинського алфавіту. Якщо ви хоча б
трохи володієте англійською мовою, то запам'ятати більшість з них не
важко, знання команд DOS також зайвим не буде, деякі з них є спільними
для обох систем. Багато команд можуть потребувати параметри, тоді їх
вказують після імені команди відокремлюючи пробілом. До параметрів
відносять і опції, вони використовуються для того щоб модифікувати
роботу команди, опції типово задаються у вигляді параметрів першим
символом якиї є дефіс (-). Тепер перейдемо до практики.

Перше, що потрібно знати, це те, що практично кожна команда Linux має
свою сторінку з документацією. Такі сторінки можна читати з допомогою
команди man (від MANual) або ж через меню Система->Допомога та
підтримка->Advanced Topics->Terminal Command References.
Наприклад, якщо набрати команду
man ls

на екрані з'явиться така інформація про команду ls



Текст можна гортати стандартним способом, використовуючи клавіші зі
стрілками, PgUp, PgDn. Для виходу з режиму перегляду документації
потрібно натиснути q (від Quit). Насправді для перегляду сторінок man
використовується стандартний консольний переглядач less, тому
натиснувши h (Help) ви зможете побачити перелік всіх його функцій.
Наприклад набравши ?якесь_слово ви зможете здійснити пошук тексту на
стрінці, а потім з допомогою клавіші n (Next) переходити на ті місця у
тексті де дане слово було знайдено. До речі, з допомогою man можна
шукати команди по ключовим словам, для цього використовується опція -k.
Ну наприклад вам захотілося взнати які команди допомагають керувати
процесами:

bum@impress:~$ man -k processes
aa-unconfined (8) - output a list of processes with tcp or udp ports that do not have AppArmor profiles loaded
fuser (1) - identify processes using files or sockets
gnome-system-monitor (1) - view and control processes
killall (1) - kill processes by name
killall5 (8) - send a signal to all processes.
peekfd (1) - peek at file descriptors of running processes
pgrep (1) - look up or signal processes based on name and other attributes
pkill (1) - look up or signal processes based on name and other attributes
ps (1) - report a snapshot of the current processes.
pstree (1) - display a tree of processes
pstree.x11 (1) - display a tree of processes
renice (1) - alter priority of running processes
smbcontrol (1) - send messages to smbd, nmbd or winbindd processes
unconfined (8) - output a list of processes with tcp or udp ports that do not have AppArmor profiles loaded

Як бачите все просто, і навіть без інтернету і без наявності графічного
інтерфейсу можна взнати багато нового. Потрібно сказати, що поряд з man
присутня і ще одна система допомоги - info. Тобто набравши info ls ви
також отримаєте допомогу по команді ls, у більшості випадків сторінки
info та man дублюють одна одну, проте іноді й ні.

Отже знаннями як отримати підказку у разі чого ми запаслися, тепер
перейдемо до вивчення основних команд. Я буду приводити кокретні
приклади команд, якщо когось зацікавить заглибитися у їх вивчення
глибше, то до ваших послуг завжди є man. Почнемо з отримання системної
інформації про комп'ютер:

cat /proc/cpuinfo   - виводить інформацію про
центральний процесор
cat /proc/meminfo   - виводить звіт про використання
пам'яті
cat /proc/swaps     - показує
використання розділу підкачки
cat /proc/version   - показує версію ядра Linux
cat /proc/net/dev   - показує наявні мережеві
адаптери і статистику передачі пакетів
cat /proc/mounts    - виводить інформацію
про змонтовані файлові системи
lspci-tv - виводить інформацію про PCI пристрої
lsusb-tv - виводить інформацію про підключені USB пристрої
date           - виводить поточну дату
cal 2008       - виводить календар на 2008 рік
uptime   - час, що минув з моменту останнього завантаження


Вищенаведені команди дуже корисні, особливо якщо у вас не збереглося
жодної інструкції з часу купівлі комп'ютеру. І як бачите, щоб отримати
інформацію про те, що ж там у ньому всередині насправді жодні сторонні
програми не потрібні, все можна зробити стандартними командами.

У наступну групу команд можна виділити команди які дозволяють вимикати,
перезавантажувати комп'ютер та ін. Більша частина подібних команд не
буде працювати якщо їх запускати від імені простого користувача, тому
щоб отримати права суперкористувача потрібно не забувати
використовувати перед ними префікс sudo.

shutdown -h now    - вимкнути комп'ютер
негайно
shutdown -h hours:minutes   - автоматично вимкнути
комп'ютер у певний час
shutdown -c- відмінити раніше заплановане вимкнення комп'ютера
reboot- перезавантажити систему
logout- завершити сеанс поточного користувача


Тепер згадаємо команди для роботи з файловою системою:
cd /home   - перейти у каталог /home
cd ..   - перейти на один рівень вгору
cd      - перейти у домашній каталог
cd ~user   - перейти у домашній каталог користувача user
cd      - повернутися у попередній каталог
pwd     - показати повний шлях до поточного каталогу
ls      - показати перелік файлів і каталогів
ls -l   - показати перелік файлів і каталогів у розгорнутій формі
ls -a   - показати повний вміст поточного каталогу включаючи приховані файли
mkdir doc - створити каталог doc
mkdir doc1 doc2- створити два каталоги, doc1 та doc2
mkdir -p /tmp/dir1/dir2- створити дерево каталогів
rm -f file1 - знищити файл file1
rm -rf dir1 - знищити каталог dir1 разом з його вмістом
mv dir1 new_dir- перемістити або перейменувати файл чи каталог
cp file1 file2- копіювання файлу
ln -s file1 lnk1 - створити символічне посилання на файл
ln file1 lnk1 - створити фізичний лінк на файл чи каталог


Можна згадати і ще ряд корисних команд:

df   - показати скільки місця використовується на дисках
passwd   - змінити пароль користувача
chmod a+rw file1   - дозволити всім користувачам читати і редагувати файл file1
chmod +x file1     - дозволити виконання файлу file1 як програми
chown user1 file1  - змінити власника файлу file1 назначивши user1
tar -xzvf archive.tar.gz   - розпакувати запакований архів у поточний каталог
dpkg -i package.deb   - встановити пакет
apt-get install package_name   - встановити пакет з репозиторію
apt-get update   - оновити інформацію про репозиторії
apt-get clean    - очистити кеш apt


Ну і мабуть на цьому закінчимо, більш докладний перелік популярних
команд можна знайти тут:
http://www.linuxguide.it/commands_list.php?Single_page

Тепер вже знаючи певний набір команд спробуємо заглибитися глибше.
Термінал у Linux підтримує певний набір гарячих клавіш. Ми вже
згадували про комбінації перемикання між різними терміналами, а тепер
вивчемо комбінації які дозволять використовувати консоль більш
продуктивно.

  • Tab - автодоповнення команд. Наприклад вам потрібно набрати команду
    ifconfig, не обов'язково набирати її повністю, достатньо набрати лише
    перші літери ifc, а потім натиснути Tab - система сама доповнить
    команду до її повного варіанту ifconfig, залишиться лише натиснути
    Enter. Ця функція доречі працює не лише з іменами команд але і з
    іменами файлів якщо вони використовуються у якості параметрів команди.
    Власне це одна з найкорисніших і найпопулярніших функцій яка є у
    консолі Linux.

  • Стрілка вгору - перегляд історії команд.

  • Shift+PgUp/Shift+PgDn - прокрутка тексту виведеного на
    консоль. Деякі
    команди виводять на екран багато тексту і він не поміщається на екрані,
    з допомогою цих клавіш якраз і можна побачити ту частину тексту яка не
    помістилася на екрані.

  • Ctrl+Alt+Del - перезавантажити комп'ютер.

  • Ctrl+C - завершити виконання активної програми.

  • Ctrl+D - вихід з активного терміналу.

  • Ctrl+Z - перевести активну програму (процес) у фоновий
    режим. Ну
    наприклад ви запустили файловий менеджер mc, а потім захотіли запустити
    ще й текстовий редактор emacs, таким чином з допомогою цієї комбінації
    клавіш ви можете перевести mc у фоновий режим після чого стандартним
    способом запустити emacs.



Ну і якщо ми вже заговорили про процеси, то бажано знати і команди як
вивести процес із фонового режиму, та й взагалі як ними керувати. Ну
наприклад я запустив mc, потым з допомогою Ctrl+Z перевів його у
фоновий режим після чого запустив редактор vi. Тепер якщо я з допомогою
тієї ж комбінації Ctrl+Z пошлю vi у фоновий режим я зможу з допомогою
команди ps (ProceSses) побачити які ж процеси у мене працюють:

bum@impress:~$ ps
  PID
TTY         
TIME CMD
 9974 pts/0    00:00:00 bash
 9993 pts/0    00:00:00 mc
10022 pts/0    00:00:00 vi
10024 pts/0    00:00:00 ps


Наприклад тепер якщо я захочу повернутися до роботи з mc я можу набрати
fg mc, тобто команда fg (ForeGround) використовується для того щоб
вивести процес із фонового режиму. Ще потрібно звернути увагу на перший
стовпчик у виводі команди ps, а саме PID. Це ідентифікатор який
присвоюється системою кожному процесу, він унікальний. Знаючи PID можна
примусово завершити виконання будь-якогопроцесу. Наприклад якщо ми
наберемо у даному випадку kill 10022, то редактор vi буде закрито.
Можуть бути й інші випадки, наприклад ваша графічна підсистема зависла
з прини якоїсь з програм, тоді перейшовши з допомогою Ctrl+Alt+F1 у
текстову консоль ви можете продивитися перелік всіх запущених процесів
з допомогою команди ps -a, занйшовши таким чином PID потрібної вам
програми ви можете легко завершити її виконання з допомогою команди
kill, після чого комбінацією Ctrl+Alt+F7 повернутися наад у графічний
режим. Щодо терміналу у графічному режимі, то у ньому є доступною ще
одна дуже корисна команда - xkill. Після набору цієї команди курсор
мишки приймає форму хрестика, тепер ви можете клікнути ним наприклад по
вікну зависшої програми і її буде негайно закрито. Але будьте
обережними, не клацніть по робочому столу, а то приб'єте і саме робоче
середовище.

Наступне, що потрібно знати, це спеціальні символи:

~   - домашній каталог користувача
.   - посилання на поточний каталог
..  - батьківський каталог (на рівень вище)
?   - заміняє будь-яку одну літеру в імені файлу
*   - заміняє довільну кількість літер


Все це нагадує DOS. Так, ви можете наприклад набрати ls a* і система
покаже вам перелік файлів, що починаються літерою a. Якщо напишете dpkg
-i *.deb, то система занйде у поточному каталозі всі наявні файли
пакетів і встановить їх у систему.

Також потрібно згадати ще про деякі речі. Дуже важливим є можливість
перенаправлення вводу/виводу. Для цього служить символ >.
Наприклад якщо ви напишете ls /dev > doc.txt то команда ls
виведе вміст каталогу не на екран, а запише його у файл doc.txt. Ще
однією корисною штукою є можливість об'єднувати групу команд у так
званий конвейєр, у такому випадку вивід однієї команди буде автоматично
направлено на ввід іншої і т.д. до кінця конвейєру, команди у конвейєрі
розділяються символом |. Приклад практичного використання таких
конструкцій я вже приводив у статті про конвертацію mp3-тегів. Звісно ж
bash підтримує і скрипти, тобто ви можете автоматизувати певні свої
операції. Причому скриптова мова тут досить потужна, порівнювати її з
bat-файлами у DOS чи Windows не можливо на віть близько. Це дуже
зручно. Я не буду на тут зупинятися, це предмет окремої розмови і може
потягнути на цілу книжку, кому цікаво той завжди може скористатися
Гуглом.

І наостанок хотілося б навести набір програм які можуть бути дуже
корисними при роботі у консолі.

Midnight Commander
Команда для запуску: mc
Це класичний двопанельний файловий менеджер, свого роду той же Norton
Commander але для *nix систем. Крім роботи з файлами може
використовуватися також і як ftp-клієнт.



Nano
Команда для запуску: nano [ім'я файлу]
Простий текстовий редактор. Він не такий відомий як vi проте є набагато
зручнішим для звичайного користувача, хоча звичайно ж і не має такого
монстроподібного набору функцій. Дуже зручний для редагування системних
конфігураційних файлів. Зберігається файл комбінацією Ctrl+O, а вихід з
програми - Ctrl+X. Власне всі комбінації наведено внизу вікна програми.



ViM
Команда для запуску: vi [ім'я файлу]
Текстовий редактор з давньою історією і з гігантськими можливостями.
Проте розуміння всіх його плюсів дано не кожному, спочатку доведеться
повоювати з його далеко не інтуітивним інтерфейсом, а вірніше навіть
повною відсутністю останнього. Його вивченню можна присвятити цілу
книжку, зараз же скажу лише як з нього вийти - потрібно натиснути :
(двокрапка), це переведе редактор у командний режим після чого виконати
команду q (від Quit).



Less
Команда для запуску: less [ім'я файлу]
Стандартний переглядач текстових файлів. Для завершення перегляду
потрібно набрати команду q.



Links
Команда для запуску: links [адреса]
Текстовий веб-браузер. Досить корисна штука якщо потрібно знайти якусь
інформацію в Інтернеті при відсутності робочого графічного режиму.
Швидкість звичайно просто феноменальна, а кирилічні літери замінюють
транслітом, тому наявність кирилічних шрифтів також не обов'язкова. F10
викликає меню.



Aptitude
Команда для запуску: aptitude
Це не, що інше як консольний варіант Synaptic. Тобто менеджер пакетів.




MOC (Music on Concole)
Команда для запуску: mocp
Консольний медіаплеєр. Так, щоб слухати музику графічний режим не
обов'язковий.



Ну власне, на цьому мабуть і закінчу. Головне, що скажу - не потрібно
боятися консолі, у ній нема нічого страшного. Звісно у сучасних
дистрибутивах Linux практично все можна зробити через графічний
інтерфейс, але практичне вміння користуватися консоллю з одного боку
допоможе повернути систему у робочий стан якщо раптом графічна
підсистема перестане запускатися, а по-друге допоможе у ряді випадків
підвищити продуктивності праці. Адже такі консольні програми як
ImageMagick, gnuplot, dcraw наприклад допоможуть за один захід обробити
величезний набір графічних даних, latex допоможе зверстати публікацію
поліграфічної якості, а з допомогою sed можна обробляти в пакетному
режимі текстові файли. Консоль дійсно в умілих руках є дуже потужною
річчю і справа тут зовсім не у бажанні випендритись. Тож вдалих вам
експериментів.кулинрия mip.reckul.ru рецепты из мяса и птицы

четвер, 27 грудня 2007 р.

Візуалізація матричних даних з допомогою Gnuplot

Нещодавно займаючись своїми науковими справами я стикнувся з необхідністю наглядної візуалізації даних заданих у матричній формі. Ну наприклад у нас є двовимірний масив з даними згенерованими після якихось обчислень, тобто звичайнісінька матриця, досить великих розмірів. Значення елементів масиву записано у зивчайний текстовий файл input.dat де елементи різних стовпців відокремлюються один від одного пробілами, ну а рядки відповідно записані як є.

1.0000 0.9982 0.9825 0.9624 0.9583 .......
0.9982 1.0000 0.9918 0.9768 0.9735 .......
0.9825 0.9918 1.0000 0.9962 0.9948 .......
.......


Тепер запускаємо gnuplot у інтерактивному режимі

bum@impress:~/Projects/RelMatAn/1$ gnuplot

G N U P L O T
Version 4.2 patchlevel 0
last modified March 2007
System: Linux 2.6.22-14-generic

Copyright (C) 1986 - 1993, 1998, 2004, 2007
Thomas Williams, Colin Kelley and many others

Type `help` to access the on-line reference manual.
The gnuplot FAQ is available from
http://www.gnuplot.info/faq/

Send comments and help requests to
Send bug reports and suggestions to


Terminal type set to 'x11'
gnuplot>


Отже, gnuplot чекає на команду. Ну, що ж, почнемо з простого:
splot "input.dat" matrix with lines

У результаті відкриється вікно з нашим графіком:



У моєму випадку я використав для побудови графіка згенеровану моєю програмою на FreePascal кореляційну матрицю, яка використовується при дослідженні надійності елементів будівельних конструкцій. Але звичайно ж дані можуть бути будь-якими, зверніть лише увагу на параметр matrix, він є дуже важливим оскільки дані у вхідному файлі задані саме у вигляді матриці.

А тепер розфарбуємо наш графік:

set pm3d
splot "input.dat" matrix with pm3d


Ось, що ми тепер отримаємо:



Можна також сумістити графік намальований лініями та кольорову карту таким чином:

set pm3d at b
splot "input.dat" matrix with lines




Звичайно 3D графік будучи вставлений у звіт чи статтю завжди виглядає досить ефектно, проте часто зручніше використовувати звичайні плоскі кольорові карти:

set pm3d map
splot "input.dat" matrix with pm3d




Часто буває потрібно виділити на графіку лише значення нижчі або вищі за якийсь критерій (якусь площину перерізу), а інші відкинути. Для цього можна використати можливість задавання діапазону відображення по осям. Наприклад:

set pm3d
set zrange [0.8:0.97]
splot "input.dat" matrix with pm3d




Звісно ж для того щоб мати змогу використовувати побудовані графіки у власних документах, потрібно ці графіки зберегти у файл. Для цього на початку потрібно дати команди:

set term postscript eps enhanced
set output "output.eps"


Після цього результат буде не виводитися на екран безпосередньо, а писатися у файл. Само собою зрозуміло, що всі вищенаведені команди можна згрупувати у один файл і передаючи його gnuplot використовувати останній у пакетному режимі. Це дуже зручно.

Ось наразі і все, що я хотів написати. Багато додадткової інформації про gnuplot можна знайти ось на цьому чудовому сайті японця Kawano:
http://t16web.lanl.gov/Kawano/gnuplot/index-e.html

Реклама

создание сайта, бесплатный сервис.,офисный переезд, переезды любой сложности по Москве и области.,строительство деревянных домов и коттеджей.,запчасти Chery,pergo,

Реклама

создание сайта, бесплатный сервис.,офисный переезд, переезды любой сложности по Москве и области.,строительство деревянных домов и коттеджей.,запчасти Chery,pergo,

субота, 22 грудня 2007 р.

Огляд автомобільного симулятора Racer

У даній статті я приведу невеличкий огляд одного з найкращих, як на мій погляд, кросплатформенних вільних автомобільних симуляторів - Racer. Проект орієнтується на досягнення максимального реалізму, а також завдяки відкритості дозволяє гравцям створювати власні моделі автомобілів та трас. На сьогоднішній день в Інтернеті можна знайти більше сотні моделей автомобілів створених ентузіастами, те ж саме стосується і трас.

Офіційний сайт проекту - http://www.racer.nl/ . Гра підтримує платформи Windows, Linux та MacOS X. Проте часто з появою нової версії якась одна з платформ виривається уперед. На сьогоднішній день останньою версією є 0.5.3 beta 8 наявна у версіях для Windows та MacOS X. Восьма бета для Linux ще поки не вийшла (присутня лише beta 6), але якщо у вас встановлено Wine, то це не є проблемою. Насправді, Windows-версія Racer чудово працює у Wine, тому у крайньому разі її можна використовувати і в Linux. Встановлюється гра дуже просто - достатньо розпакувати завантажений архів у будь-яку папку і запустити файл racer.

Запустивши гру ми попадаємо у головне меню:



Присутні декілька варіантів гри:
Free Driving - вільна їзда, можете просто оглядати околиці і знайомитися з трасою;
Quick Race - можете позмагатися на трасі з ботами;
Multiplayer - можете влаштовувати гонки з друзями, або у локальній мережі або через Інтернет.

Racer - чистокровний симулятор. Це означає, що прописувати повороти на 300км/год у стилі NFS або штампувати кола на трасі у Спа швидше за Шумахера вам навряд чи вдастся. Для гри бажано звичайно мати руль, а також повноцінний трипедальний блок (у грі підтримується керування зчепленням). У крайньому разі після певного тренування згодиться мишка, а от про клавіатуру можете забути одразу. Хоча вона і підтримується грою у якості контролеру, проте керувати нею автомобілем просто неможливо, найменша помилка з роботою акселератором чи гальмами, найменша помилка у роботі кермом і ви вже ковтаєте пилюку на узбіччі. Потужні автомобілі помилок не вибачають.



Звісно ж кожен автомобіль має власний характер. Прийоми керування потужним задньопривідним авто та передньопривідною малолітражкою зовсім різні. Грає роль також і розташування двигуна (впливає на розподіл ваги по осям), жорсткість підвісок та ін. Нервовий задньомоторний Ruf CTR "Yellowbird" дуже жорстко реагує на нерівності дорожнього полотна і при найменшій помилці з роботою акселератором у повороті миттю стає упоперек дороги. А старенька Dacia 1310 зі свистом покришок і вражаючими кренами, зносом передньої осі демонструє класичну поведінку передньопривідного автомобіля. Так, геймплея у звичному розумінні, як у тому ж NFS тут немає (як і крутих заставок з дівчатами та ефектних поліцейських погонь), хіба з друзями гонки влаштовувати, але для справжніх автомобільних фанатів саме така безкомпромісна фізична модель і є тим, що не дає довгий час просто відірватися від комп'ютеру. Єдиний на мій погляд недолік - це відсутність моделі пошкоджень. Можливо у наступних версіях автомобілі і навчать розбиватися, проте на даний момент вони ще цього не вміють.



Щойно встановивши гру у ній можна знайти лише спорткар Lamborghini Murciellago та трасу Carlswood. Проте за наведеними нижче адресами ви зможете завантажити величезну кількість додаткових автомобілів та трас:
http://www.xtremeracers.net/nuke/index.php
http://forum.rscnet.org/forumdisplay.php?f=111
http://www.racer-xtreme.com/car_index.php

Це одна з переваг даного симулятора - кожен бажаючий може створювати власні моделі. Якщо ви маєте хоча б мінімальний досвід роботи з 3D графікою, то цілком можете зробити модель і вашого власного автомобіля. Завантаживши ж уже готову модель достатньо лише розпакувати вміст архіву у папку data/cars і вона відразу ж стає доступною у симуляторі. Причому серед доступних моделей є не лише суперкари по типу Chevrolet Corvette, Aston Martin DB9 чи Porsche 911, класичні Bugatti Typ 57 чи Ferrari Dino, але й набагато більш звичні автомобілі як BMW 3-ї серії, Dacia Solenza чи навіть Волга ГАЗ-3102.









Аналогічна ж ситуація і з трасами. Можна знайти як копії величезної кількості реально існуючих гоночних трас (Спа, Монца, Лагуна Сека, Нюрбунгринг, Ле-Ман та ін.) так і траси, що моделюють звичайні дороги на яких можна просто покататися в своє задоволення. Потрібно сказати, що для того щоб мати змогу ганятися на вибраній вами трасі з ботами, потрібно щоб у папці з треком була папка ai з файлами, що описують їх поведінку (існують не для всіх трас і не для всіх автомобілів), інакше боти будуть їхати зі швидкістю 50км/год і гальмуючи перед кожним поворотом майже до нуля. AI-файли для різних автомобілів на різних трасах можна також знайти в Інтернеті, а можна і створити самому (див. офіційний форум).

Що стосується графіки, то вона цілком пристойна. Звичайно проробка автомобілів та трас сильно залежить від того скільки праці вклав автор у конкретну модель, трапляються як дуже детально пророблені моделі так і не зовсім (те ж саме до речі стосується і фізичної моделі). Автомобілі залишають чорні сліди від гуми на асфальті, при пробуксовках гума горить піднімаючи у повітря білий дим, а на великій швидкості дерева обабіч дороги зливаються у зелену стіну. Досить гарно змодельовано траву на узбіччях, та й небо і сліпуче сонце схожі на справжні.

Взагалі, рекомендую цю іграшку всім хто не байдужий до автомобілів. Вона дійсно варта того щоб звернути на неї увагу.

На додачу приводжу коротку пам'ятку про управляючі клавіші:
Мишка угору/вниз - акселератор/гальма
Мишка ліворуч/праворуч - рульове колесо ліворуч/праворуч
Ліва/права кнопка мишки - передача вгору/вниз
Середня кнопка мишки - зчеплення
Керування ручними гальмами та обмежувачем обертів встановлюється у опціях
S - стартер
L - фари
P - пауза
C - режим камери
1-0 - позиція камери
` - показати/сховати консоль
F2 - показати повтор
F3/Shift-F3 - ввімкнути/вимкнути телеметрію
F4 - дзеркало заднього виду
F5 - ABS та ін. допоміжні системи
F6 - карта
F9 - чат у мультиплеєрі
F12 - зробити скріншот
Більш глибоку інформацію можна отримати тут: http://www.racer.nl/documentation.htm

Ну і ще потрібно згадати про проекти з допомогою яких ви можете брати участь у перегонах з реальними людьми:
http://www.racerworld.co.nr/ - RacerWorld
http://www.racer500.co.nr/ - Racer500

понеділок, 17 грудня 2007 р.

SimpleBasic: Робимо навчання програмуванню простим

Я довгий час писав тут про досить немалу кількість різноманітних програм які написані іншими людьми. Але я не говорив про те, що одне з моїх улюблених хобі - це програмування. Мені завжди подобалося щось придумувати, розробляти алгоритми та ін. Проте довгий час мої проекти не виходили за межі досить обмеженого кола людей. Сьогодні я вирішив порушити традицію і нарешті викласти в Інтернет одну зі своїх розробок. Не знаю, чи буде вона комусь корисна, тим більше, що це лише початок, версія 0.1. Але все ж таки я вирішив спробувати.

SimpleBasic - інтерпретатор простої Basic-подібної мови програмування для платформ Linux та Windows.
Взагалі історія цього проекту тісно пов'язана з тим, що мені давно ще зі шкільних років дуже хотілося розробити свою мову програмування. Декілька років тому це бажання стало реальністю коли я почав розробляти розрахунковий пакет у рамках своєї дисертації. Мені потрібно було інтегрувати у свою програму нескладну мову програмування з допомогою якої можна було б описувати параметричні моделі елементів будівельних конструкцій. Глюків було досить багато, тому інтерпретатор годився лише для внутрішнього користування, тим хто всі його глюки знає. Останнім часом я вирішив переписати його з нуля, паралельно змінивши ряд алгоритмів. Певним поштовхом до цього стало моє спілкування зі своїми студентами, деяким з яких дуже важко дається навчання програмуванню. Чесно кажучи, я іноді з ностальгією згадую часи розквіту DOS, коли програми писалися швидко і просто. Це дуже важливо для навчання, бо кінцевий результат спостерігається раніше. Останнім часом же спостерігається тенденція постійного ускладнення мов програмування, віконні інтерфейси відчутно ускладнили сам процес написання програм. Тому я й вирішив спробувати розробити максимально просту мову програмування яка б дозволяла максимально швидко отримувати готовий результат і дуже б легко вчилася. Крім того мені хотілося на практиці продемонструвати роботу алгоритмів та застосування різних структур даних (як стеки наприклад) про які досить сухо згадується в університетському курсі і які студенти не розуміють де можна застосувати. Ну і ще хотілося б зробити інтерпретатор таким щоб його можна було використовувати у складі інших своїх програм. Таким чином нещодавно і з'явилася версія 0.1 мови програмування яку я назвав SimpleBasic.

Інтерпретатор написано на мові програмування Free Pascal, тому його легко можна перекомпілювати під будь-яку з платформ яка нею підтримується, а це досить суттєвий перелік. Представляє він собою єдиний бінарний файл якому у якості параметру передається ім'я файлу з програмою. Я покищо підготував варіанти для Linux та Win32.
sbrun
sbrun.exe
Для підтримки графіки також потрібно щоб у системі була присутня бібліотека GLUT, яка не входить у стандартну поставку Windows (в Ubuntu з цим проблем немає)
glut32.dll
Я ще не вирішив чи буду відкривати коди самого інтерпретатору для публічного доступу чи ні. Поки що все знаходиться на досить ранній стадії і у мене ще набагато більше планів ніж реально зроблено.

Тепер щодо самої мови. Як і у звичайному Basic кожна команда задається у окремому рядку, якщо потрібно задати декілька команд в один рядок, то вони відділяються символом двокрапки ( : ), коментарі вводяться апострофом ( ' ). Приклад стандартної програми, що виводить у консоль рядок з привітанням:

' Перша програма на SimpleBasic
print "Hello, World!"


Змінні не оголошуються, пам'ять для них виділяється автоматично при першому ж згадуванні нової змінної у тексті. Типи даних не розрізняються, одна й та ж змінна на протязі виконання програми може зберігати як числові так і символьні дані. Великі і малі літери у назвах не розрізняються, допускається використання у складі ідентифікатору латинських букв, цифр, символу підкреслення та точки. Можна використовувати масиви будь-якої розмірності вказуючи індекс у квадратних дужках. Масиви як і звичайні змінні також оголошувати не потрібно, достатньо просто почати їх використовувати. Допускається використання асоціативних масивів, де у якості індексу можна задавати символьний рядок. Більше того, допускається використання навіть дробових індексів. Але не допускається присвоювати один масив іншому, лише поелементно. Крім того, тип елементів масиву не обов'язково повинен бути однаковим, у рамках одного масиву допускається зберігати дані різних типів. Після закритої квадратної дужки можна через крапку дописувати ідентифікатор поля структури, таким чином можна працювати з записами.

a=2
b=3
print a+b

a["Hello"]="Hi!"
a["Good bye"]="Bye!"
print a["Hello"]+" --> "+a["Good bye"]

for i=1 to 10
 print "Name:"+people[i].name+"  Age:"+people[i].age
next


У виразах використовуються стандартні операції: +, -, *, /, ^ (піднесення до степеня), \ (ділення націло), % (залишок від ділення). Логічні операції: =, <, >, <=, >=, != (не дорівнює), ! (NOT), | (OR), & (AND). До символьних рядків також можна застосовувати операції: + (конкатенація), - (відкидання символів з кінця), * (розмноження). Тут я дозволив собі трохи творчості і відійшов від синтаксису класичного Basic. Також реалізовано великий набір різноманітних функцій, які включають у себе арифметичні, текстові, введення/виведення, роботи з файлами, роботи з текстовим терміналом, функції графічного режиму та ін. Функція eval дозволяє використовувати у своїх програмах парсер арифметичних виразів.

Є ряд стандартних конструкцій. Це оператори циклів do..until, while..wend, for..next. Їх синтаксис ідентичний Basic, за винятком циклу do який завершується не loop, а until (варіант loop while не передбачено). У next змінна циклу не вказується, а сам цикл for на етапі прекомпіляції зводиться інтерпретатором до звичайного while.

i=1
do
 print i
 i=i+1
until i>10
'----------------
i=1
while i<=10
 print i
 i=i+1
wend
'----------------
for i=1 to 10 'допускається використання модифікатору step
 print i
next


Для перевірки умов використовується if..else..end if. Причому реалізовано лише повну форму, використання однорядкової скороченої форми не допускається, якщо потрібно зекономити місце, то використовують : для відокремлення ключових слів. Використання ключового слова then після умови є необов'язковим.

if i=1 then
 print "One"
else
 print "Two"
end if
' або так
if i=1 : print "One" : else : print "Two" : end if


Користувач може оголошувати власні функції. При цьому оголошувати вкладені функції не допускається, але дозволяється використовувати рекурсію. Функції не можуть приймати у якості параметрів масиви. Всі параметри передаються за значенням, їх зміни у тілі функції не впливають на значення глобальних змінних. Для того щоб отримати доступ до глобальних змінних, потрібно перед ім'ям змінної додати два символи підкреслення.

sub fact(i) 'обчислення факторіалу
if i=1 then
return 1
else
return i*fact(i-1)
end if
end sub

print fact(5)


От коротко і все. А тепер продемонструю декілька прикладів.

Робота у текстовому режимі. Класична задача про готель, можна селити і виселяти жильців, переглядати їх список. Дані автоматично зберігаються у зовнішній файл.

hotel.sb

' Hotel example program in SimpleBasic
sub menu(x)
 terminal.background 0
 terminal.color 7
 terminal.clear

 i=x
 do
  terminal.locate 10,10
  if i=1 then : terminal.background 7 : terminal.color 0 :
else : terminal.background 0 : terminal.color 7 : end if
  print "Поселити"
  terminal.locate 10,11
  if i=2 then : terminal.background 7 : terminal.color 0 :
else : terminal.background 0 : terminal.color 7 : end if
  print "Виселити"
  terminal.locate 10,12
  if i=3 then : terminal.background 7 : terminal.color 0 :
else : terminal.background 0 : terminal.color 7 : end if
  print "Показати"
  terminal.locate 10,13
  if i=4 then : terminal.background 7 : terminal.color 0 :
else : terminal.background 0 : terminal.color 7 : end if
  print "Вихід"
 
  c=terminal.key()

  if c="up" then : i=i-1 : end if
  if c="down" then : i=i+1 : end if
  if i<1 then : i=4 : end if
  if i>4 then : i=1 : end if

 until (c="esc")|(c="enter")
 if c="enter" then : return i : else : return 0 : end if

 terminal.background 0
 terminal.color 7
 terminal.clear
end sub

size=10
open 1,"r","hotel.dat"
for j=1 to size
      
a[j].name=inputf(1)
      
a[j].from=inputf(1)
      
a[j].to=inputf(1)
next
close 1

i=1
do
  i=menu(i)

  if i=1 then   ' Селимо
    print "="*37
    print "|"+" "*11+"Селимо жильця"+"
"*11+"|"
    print "="*37
    j=input("У яку кімнату?")
    a[j].name=input("Ім'я:")
    a[j].from=input("Поселився:")
    a[j].to=input("Вибуває:")
  end if

  if i=2 then   ' Виселяємо
    print "="*38
    print "|"+" "*10+"Виселяємо жильця"+"
"*10+"|"
    print "="*38
    j=input("З якої кімнати?")
    a[j].name=""
    a[j].from=""
    a[j].to=""
  end if

  if i=3 then   ' Показати список жильців
    print "="*37
    print "|"+" "*10+"Перелік жильців"+"
"*10+"|"
    print "="*37
    for j=1 to size
      if a[j].name!=""
then  
       
print j+"  Ім'я: "+a[j].name+"  Поселився:
"+a[j].from+"  Вибуває: "+a[j].to
      else
       
print j
      end if
    next
    c=terminal.key()
  end if
until (i=4)|(i=0)

' Зберігаємо у файл
open 1,"w","hotel.dat"
for j=1 to size
  printf 1,a[j].name
  printf 1,a[j].from
  printf 1,a[j].to
next
close 1


Результат буде таким



Робота з графікою. Як показала практика, найкраще люди вчаться програмуванню саме в процесі роботи з графікою. Тому я вирішив цій складовій приділити особливу увагу. Особливо хотілося якомога більше зменшити кількість маніпуляцій при програмуванні графіки у сучасних операційних системах. Для відображення графіки використовується OpenGL, а для роботи з віконним інтерфейсом використовується бібліотека GLUT. Ось приклад програми яка малює графік синуса:

sinus.sb

' A graph sample for SimpleBasic
sub redraw
 graph.clear 0.9,0.9,1
 graph.color 0,0,0
 graph.linewidth 1
 graph.line -5,0,5,0
 graph.line 0,5,0,-5
 graph.textsize 0.0025
 graph.print 0.2,4.5,"y=sin(x)"
 graph.print 4.7,0.2,"x"
 graph.textsize 0.0015
 for x=-5 to 5
   graph.line x,0.1,x,-0.1
   if x!=0 then : graph.print x,-0.3,x : end if
 next
 for y=-5 to 5
   graph.line 0.1,y,-0.1,y
   if y!=0 then : graph.print -0.3,y,y : end if
 next

 graph.linewidth 3
 graph.color 1,0,0
 graph.moveto -5,sin(-5)
 for x=-5 to 5 step 0.25
   graph.lineto x,sin(x)
 next
end sub

graph.createwindow 640,480,"y=sin(x)"
graph.drawfunc "redraw"
graph.setcs -5,5,-5,5
graph.mainloop


Ця програма створює вікно, малює у ньому систему координат та графік синуса і закривається при натисненні клавіші Esc.



Ще один графічний приклад для демонстрації інтерактивності. Квадрат можна рухати у вікні використовуючи стрілки, змінювати його розміри кнопками + та -, переміщувати з допомогою мишки, а права кнопка мишки виводить на екран контексне меню.

rects.sb

' A graph sample for SimpleBasic

sub redraw
 graph.clear 0,0,0.5
 graph.color 1,0.5,0
 graph.rect __x-__size,__y+__size,__x+__size,__y-__size
end sub

sub readkey(key)
 if key="up" then : __y=__y+__step : end if
 if key="down" then : __y=__y-__step : end if
 if key="left" then : __x=__x-__step : end if
 if key="right" then : __x=__x+__step : end if
 if key="+" then : __size=__size+0.1 : end if
 if key="-" then : __size=__size-0.1 : end if
end sub

sub mouse(b,x1,y1)
 if b="left" then
   __x=-5+10*x1/640
   __y=5-10*y1/480
 end if
end sub

sub menu(i)
 if i=1 then : __size=__size+0.1 : end if
 if i=2 then : __size=__size-0.1 : end if
 if i=3 then : halt : end if
end sub

x=0 : y=0 : step=0.2 :size=0.5

graph.createwindow 640,480,"Moving Rectangle"
graph.drawfunc "redraw"
graph.keyfunc "readkey"
graph.mousefunc "mouse"
graph.menufunc "menu"

graph.menuitem "Larger"
graph.menuitem "Smaller"
graph.menuitem "Exit"

graph.setcs -5,5,-5,5
graph.mainloop


Ось так виглядає результат роботи програми:



Звісно ж, оскільки інтерпретатор є кросплатформеним, то цю ж саму програму без будь-яких змін можна запустити і у Windows:



І на завершення ще наведу простеньку іграшку - арканоід. У даному прикладі продемонстровано роботу з таймером для створення анімації.

arkanoid.sb

' An Arkanoid example for SimpleBasic
sub redraw
 if __gameover=0 then
   graph.clear 0,0,0.5
   graph.color 1,0.5,0
   graph.rect __pos-__size,-8,__pos+__size,-9
   graph.color 1,0,0
   graph.circlef __x,__y,__ball
 else
   graph.color 1,0,0
   graph.textsize 0.01
   graph.print -4,0,"GAME OVER"
 end if
end sub

sub readkey(key)
 if key="left" then : __pos=__pos-__step : end if
 if key="right" then : __pos=__pos+__step : end if
end sub

sub timer
 if __x>=10 then : __tx=-1 : end if
 if __x<=-10 then : __tx=1 : end if
 if __y>=10 then : __ty=-1 : end if
 l=__pos-__size : r=__pos+__size
 if (__x>l)&(__x<r) then
   if __y<-8 then : __ty=1 : end if
 else
   if __y<-8 then : __gameover=1 : end if
 end if
 __x=__x+__tx*__f
 __y=__y+__ty*__f
end sub

gameover=0
pos=0 : f=0.5 : tx=1 : ty=1 : ball=0.5
x=0 : y=-3 : step=1 : size=2

graph.createwindow 400,400,"SimpleArkanoid"
graph.drawfunc "redraw"
graph.keyfunc "readkey"
graph.timerfunc "timer"
graph.timer 1000\60*2
graph.setcs -10,10,-10,10
graph.mainloop


Ось така іграшка вийшла:



Ось так. Крім вже описаних можливостей підтримується також робота у повноекранному режимі (наприклад graph.gamemode "1024x768:32"). Через деякий час планую реалізувати 3D графіку, підтримку мультимедіа даних та багатопоточність. Потім піду далі, подивлюся, що з цього вийде. По ходу і документацію ще підготую.

Через деякий час планую написати статтю про те як пишуться інтерпретатори арифметичних виразів, зокрема про алгоритм побудови зворотньої польскої нотації (постфіксної форми запису операцій, без використання дужок) з прикладами коду на FreePascal. Також розповім і про інші аспекти створення інтерпретатору, зокрема про реалізацію управляючих структур та підтримки функцій користувача. На сьогодні ж мабуть все.

вівторок, 4 грудня 2007 р.

Встановлюємо NetBeans IDE 6.0

Нещодавно вийшла нова версія популярного середовища програмування NetBeans. Крім підтримки Java (як дорослої так і мобільної версій) нова IDE дозволяє також розробляти програми на Ruby (включаючи підтримку Ruby on Rails) та C++. Я коротко опишу лише процес встановлення даного середовища.

Завантажити інсталятор можна звідси:
http://www.netbeans.org/index.html
Також можна замовити DVD який розсилають безплатно у будь-яку точку світу.

Інсталятор являє собою звичайний архів, який сам розпаковується у вигляді скрипта netbeans-6.0-linux.sh.
sudo sh netbeans-6.0-linux.sh

Сам процес інсталяції нагадує встановлення програм для Windows, майстер виконано у такому ж стилі.



За замовчуванням NetBeans встановлюється у папку /usr/local/netbeans-6.0. Додати відповідний пункт у меню Програми доведеться вручну, з допомогою Система -> Параметри -> Головне меню (потрібно вказати файл /usr/local/netbeans-6.0/bin/netbeans). Все, тепер можна запускати.



Ось так виглядає NetBeans:



Серед нововведень нової версії:
нова програма встановлення;
  • Update Center и Module Manager об'єднано у Plugins manager;

  • оновлено редактор GUI для роботи з бібліотекою Swing;

  • новий візуальний редактор для проектування інтерфейсів програм для J2ME;

  • розширено можливості розробки програм для Web та ін.

Реклама

авто-сервис в аренду в москве.,Создайте сами интернет-магазин создание интернет магазина.,

Реклама

Bongio domino настенный излив для ванны.,гостиницы Днепропетровска,Создайте сами интернет-магазин создание интернет магазина.,Рестораны Киев кейтеринг Блинофф.,

Оброблюємо фотокопії документів з допомогою ImageMagick

Останнім часом я став помічати, що все рідше і рідше користуюся сканером (про копіювальні апарати взагалі мовчу). А й справді, майже завжди зі мною цифровий фотоапарат, чи то солідний Fuji чи то компактний Canon, тому у будь який момент я можу зняти копію з будь якого паперу, що потрапив до рук. Крім того, з допомогою фотокамери перезняти документ виходить швидше ніж сканером. Але є одна проблема - картинка виходить не такою красивою. Але з допомогою ImageMagick зображення можна легко відкорегувати таким чином щоб вони виглядали так як мовби їх зроблено з допомогою сканера.

Ну, ось наприклад у нас є знімок сторінки з методички. Я зробив його з допомогою Fuji s6500fd без спалаху, при звичайному кімнатному освітленні на ISO400.



Темнувато, правда? Та і як бачимо, аркуш по своїй площі освітлений не однаково. Це стандартна проблема з якою стикаєшся при фотографуванні текстових документів, особливо з близької відстані. Але проблема вирішується досить просто, для цього достатньо дати команду по типу наступної:
mogrify -format tif -monochrome -compress group4 -resize 1252x1800 -normalize -threshold 30% *.jpg

Тут опція -format задає формат вихідного файлу (у даному випадку найкращим вибором буде tif), опція -monochrome конвертує зображення у чорно-білий варіант, -compress задає тип компресії, -resize використовується для зміни розмірів, -normalize дозволяє повернутися до повного диапазону кольорів, -threshold дозволяє задати поріг яскравості після якого пікселі стануть білими. Найбільш цікавим є саме остання опція, її значення задається експериментально, в залежності від експозиції початкового зображення (якщо зображення темне, то значення потрібно зменшити, в іншому випадку навпаки).

Результат виконання даної команди буде таким:



Звісно, ж якщо у папці буде лежати декілька файлів з зображеннями, то всі вони будуть зконвертовані наступним чином. Для зручності, щоб не тримати у пам'яті опції команди mogrify я порекомендував би створити сценарій для Nautilus, як це робиться я вже описував раніше.

Оригінальна англомовна сторінка яка підказала мені розв'язок даної проблеми знаходиться тут:
http://staff.washington.edu/corey/camscan/
А тут можна знайти вичерпну інформацію по всім опціям ImageMagick:
http://www.imagemagick.org/script/command-line-options.php