VerseQ — найкращий клавіатурний тренажер

Січень 4th, 2009

Правильно дядько Столман вчить — бійтеся freeware з закритим кодом, бо настане день, і їх автори почнуть вимагати від вас гроші. Так сталося з найкращим клавіатурним тренажером Verseq. Колись він був абсолютно безкоштовним, а тепер  шара закінчилася. Правда, коштує воно не так багато, ~50 грн, можна було такий  собі подарунок на Новий рік зробити комусь. Але десь в
найвіддаленіших куточках вінчестеру лишилися у мене старі, безкоштовні, версії цієї програми. То я їх тут і викладу:

  • Verseq — власне, сам тренажер
  • russ_full — розшрений набір символів (заглавні букви та інше). Наскільки я пам’ятаю, треба просто замінити відповідний файл на той, що в архіві.
  • SoundPack —  очевидно, набір звуків. Як його підключити, не знаю.

На жаль, у безкоштовній версії присутня була лише російська розкладка. Натомість
в теперішній платній є і англійська, і німецька, і навіть спеціалізована англійська для програмістів на C++ або Pascal. Тому, може й варто її купити

Категорії: Некатегоризовано, Посилання на цікаве | Теґи:, , | Кометарів немає

Fedora 10 : перші враження

Грудень 15th, 2008

Тільки що встановив Fedora 10 :)

Перше, що здивувало — абсолютно відсутній /etc/X11/xorg.conf. Його тупо нема. Трохи погугливши, я дізнався, що “xorg.conf з поставки найновішої версії X-серверу”. Якщо трохи по*тися, то його таки можна згенерувати і покласти у потрібне місце, але “вважається, що в наявних в системі інших засобів цілком досить, щоб налаштувати, що треба”. Ці “наявні засоби” — такий собі урізаний варіант Yast

Взагалі, варіант з KDE особисто мені здався аж занадто схожим на Vista. Стартове меню вони зробили трохи інакше, але вийшло теж на рідкість незручно. До речі, перший раз побачив четвертий KDE. Нічого так, хоча я ще з ним як слід бавитися не починав ;) Konqueror, втім вже встиг впасти одного разу… Відчув, мабуть, куди потрапив

Друге, дистр абсолютно не має української локалізації :( Підтримка урду, тамілів та іншої чуркестанщини є, а про нас забули. Дуже розчарувало, адже Fedora 9 була свого часу першим дистрибутивом, в якому я побачив українські мануали. Хоча, може вони вирішили залишити українізацію лише у Russian Fedora , недарма ж його офіційно визнали .

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

Категорії: Новини | Теґи:, , | Кометарів немає

TurboPascal — річниця

Листопад 21st, 2008

Маємо привід випити :) Вчора, 20 листопада, виповнилося 25 років з моменту випуску TurboPascal 1.0 — програми, яка назавжди змінила світ.

Між іншим, воно ще й досі доступне для завантаження

Категорії: Життя | Кометарів немає

Рефакторінг

Листопад 10th, 2008

Ще одне цікаве завдання, з тих, що пропонує Яндекс:

Есть класс CodeGenerator, который умеет генерить код на разных языках.

  1.  
  2. class CodeGenerator
  3. {
  4. public:
  5.     enum Lang {JAVA, C_PLUS_PLUS, PHP};
  6.     CodeGenerator(Lang language) { _language=language; }
  7.     std::string generateCode()
  8.     {
  9.         switch(_language) {
  10.         case JAVA:        //return generated java code
  11.         case C_PLUS_PLUS: //return generated C++ code
  12.         case PHP:         //return generated PHP code
  13.         }
  14.         throw new std::logic_error("Bad language");
  15.     }
  16.     std::string someCodeRelatedThing() // used in generateCode()
  17.     {
  18.         switch(_language) {
  19.         case JAVA:        //return generated java-related stuff
  20.         case C_PLUS_PLUS: //return generated C++-related stuff
  21.         case PHP:         //return generated PHP-related stuff
  22.         }
  23.         throw new std::logic_error("Bad language");
  24.     }
  25.  
  26. private:
  27.     Lang _language;
  28. }
  29.  

Исходя из предположения, что количество языков будет добавляться, предложите refactoring кода. Аргументируйте преимущество вашего кода над существующим.

(ще…)

Категорії: C/C++, Паттерни проектування | Теґи:, , , , , , | Кометарів немає

На роботу в Яндекс

Листопад 7th, 2008

Виявляється, Яндекс постійно набирає нових людей, зокрема, розробників C++. Перша частина співбесіди — онлайн. Завдання, що там пропонуються, без сумніву, варті уваги. Ось , наприклад, таке

  1.  
  2. class Top {
  3.   public:
  4.     virtual ~Top (){}
  5. };
  6.  
  7. class Right : virtual public Top {
  8.   public:
  9.     void f () {}
  10. };
  11.  
  12. class Left : virtual public Top {
  13.   public:
  14.     void f () {}
  15. };
  16.  
  17. class Bottom : public Right, public Left {
  18.   public:
  19. /*
  20. * что надо написать чтобы выполнялось требование описанное в main
  21. */
  22. };
  23.  
  24. int main (int, char**) {
  25.   Bottom b;
  26.   b.f(); // Требование: вызов Left::f()
  27. }
  28.  

Split post hereЗвісно, перше, що спадає на думку, зробити шось типу

void f () { Left::f();}

Але так негарно. Виклик однієї функції через іншу… Не дуже добре, особливо якщо в реальному житті трапиться метод з багатьма параметрами.

Насправді, розумні люди підказали , треба робити так:


using Left::f;

Цей запис виглядав би так само, навіть якби у батьківських класах метод f приймав би якісь параметри.

В тому коді є ще пара цікавих моменти, про які особисто я не знав, не знав, та й забув.

По-перше, спосіб наслідування virtual publiс. Виявляється, слово virtual в даному випадку означає, що у класі Bottom буде присутня одна і тільки одна реалізація об’єкту класу Top. Якби virtual не було, тоді виникала б неоднозначність при використанні членів класу Top, успадкованих як в Left, так і в Right. Втім, в прикладі цього не видно, бо в Top занадто спрощений.

По-друге, клас Top має віртуальний деструктор. Питання: який взагалі сенс деструктору бути віртуальним, коли його все одно не можна перекрити в класі-нащадку? Погугливши, знайшов відповідь . Справа в тому, що якби не слово virtual, то ось в такому випадку

int main {
Top* tp = new Right;
}

було б викликано деструктор явно заданого класу (Top), в той час, коли насправді треба викликати ~Right.

Категорії: C/C++ | Теґи:, , , | Кометарів немає

Випадковий розподіл адресного простору

Листопад 2nd, 2008

Випадковий розподіл адресного простору — технологія, покликана підвищити безпеку операційних систем. Англійською Address space layout randomization (ASLR). Основна ідея полягає у тому, що під час запуску програми динамічні бібліотеки опиняються у випадковому сегменті пам’яті (з випадковим зміщенням). В ідеалі, так само, у випадкове місце, слід переміщати стек та купу(heap) програми, що запускається.

Передбачається, що таким чином система стає стійкішою до атак типу return-to-libc. Справа в тому, що, зловмисник, отримавши доступ до стеку, може записати туди якісь свої параметри та перевести виконання на відому йому адресу якоїсь функції з стандартної бібліотеки. Фактично це буде рівнозначно звичайному виклику такої функції, але з параметрами, заданими зловмисником. Функція може бути будь-яка. Може, exec(), може socket() — як треба буде. Аналіз багатьох експлойтів свого часу показав , що більшість мають “жорстко” записані адреси переходу. Тут якраз випадковість розміщення і проявляє себе: ймовірність правильного виконнання експлойту знижується майже до нуля.

Вперше ASR було реалізовано у PaX — наборі патчів безпеки для лінукс-ядра. Відповідно, на практиці це можна було помацати у певних дистрибутивах (але не у всіх). Крім того, своя реалізація з’явилась у OpenBSD. У світі Windows технологія ASLR прийшла лише з виходом Vista.

Втім, не все так добре. Ймовірність правильного виконання експлойту хоча й наближається до нуля, але не зникає. Запустивши вразливий код багато разів, врешті решт зловмисник отримає бажаний результат. “Против лома нет приема”, brute forse, що тут зробиш. Спеціальні наукові дослідження , та й просто практика , показали, що ASLR безсиле проти дещо модифікованих атак. Так, вони ускладнюються та уповільнюються, але все одно так чи інакше мають усі шанси закінчитися успіхом. Тому технологія ASLR не стала “срібною кулею”. Хоча, її все одно залишили. Про всяк випадок. Тим більше, що вона хоч трохи, але діє.

Категорії: Життя | Теґи:, , | Кометарів немає

Онлайн-редактори

Листопад 2nd, 2008

Cхоже, відтепер я буду використовувати цей онлайн-редактор:

http://writetomyblog.com/

Він WYSIWYG, але з можливістю редагування html. Зручно. Раніше я писав у іншому редакторі, але тепер він не відкривається. Криза подіяла, чи що….

І ще трохи схожих ресурсів:

  • http://writer.bighugelabs.com/ “Друкарська машинка інтернету”. Представник класу так званих room-editor. Аскетичний, чорний. Сподобається тим, що не хоче відволікатися, пишучи пост. Я особисто не дуже розумію такого підходу. Пости пишу, як правило, на основі якоїсь інформації, як не крути, а пара вкладок в браузері мають бути відкритими
  • http://htmledit.squarefree.com/ онлайн html-редактор. Пишете у верхній половині вікна і одразу бачите, як воно буде насправді виглядати. Не підтимує юзерських css, а тому не дуже потрібне. Тільки для перевірки, що всі теги закриті.
  • http://gpl.internetconnection.net/vi/ онлайн редактор vi. Для фанатів :) Насправді, це саме vi, а не vim, тому багато фіч (в тому числі підсвітка синтаксису) відсутні. Прикольна штука, але неюзабельна.
  • http://www.myquicknotepad.com/index.php?NewNotepad=TRUE ще однин редактор, на цей раз з wiki-синтаксисом. Може конвертувати wiki в html. Я wiki-розмітку ненавиджу, тому і не користуюся.

Категорії: Посилання на цікаве | Теґи:, , , | Кометарів немає

Ще один крок

Листопад 1st, 2008

Я нарешті дістався до адмінки :)

  • як можна бачити, змінилася тема оформлення. Тепер вона краще виглядає у лінуксах, навіть при тамтешніх censored шрифтах
  • додався плагін підсвітки коду. Це ж се таки програмерський блог, не аби шо. Потребує дозволених скриптів.
  • краще пізно, ніж ніколи, навів порядок з RSS-посиланнями
  • додав OpenID плагін. Може, комусь знадобиться
  • ще додав кілька категорій, тепер структура стала більш логічною

Ще мабуть скоро приберу рекламний банер, і все, перехід на новий рівень досконалості можна буде вважати завершеним.

Категорії: життя блогу | Теґи: | Кометарів немає

Дитяча помилка в програмі для дітей

Жовтень 27th, 2008

Минулого до чотирьох з половиною сотень бейсиків додався ще один — Small Basic від Microsoft. Цього разу спеціально для дітей, щоб було на чому вчитися програмуванню. Середовище розробки максимально спрощене, але при цьому дуже красиве. Одне тільки автодоповнення яке гарне… (ще можна на офіційний скріншот глянути)

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

Коротше всі в захваті. Малеча ганяє черепашку і завантажує фото з Flicr, старші покоління розказують одне одному байки про QBasic на 286-их машинах. Найсуворіші розповідають про GWBasic на ЕОМ радянського виробництва :) Але це тільки на перший погляд. Копнеш глибше — казка закінчується, вилазять численні баги. От про один з них я далі і розповім.
(ще…)

Категорії: програмування | Теґи:, , , | Кометарів немає

Електронні собаки

Жовтень 25th, 2008

Питання про людиноподібних роботів, що стоять на сторожі державних кордонів стає все менш смішним. Цілком можливо, що років через п’ять-десять в армії США буде служити досить багато всякорізних механічних створінь. Принаймі, Пентагон активно працює в цьому напрямі. Цього тижня, наприклад, було оголошено конкурс на розробку так званої Multi-Robot Pursuit System, що українською звучало б, мабуть, як “Комбінована автоматична система переслідування”.

Вказується, що метою проекту є “створення програмного забезпечення та системи сенсорів, які б дозволили команді роботів визначати присутність людини в певному приміщенні”. Далі наведено детальніший опис. Схоже, автори, надивившись на надто розумні пилососи та горщики з квітами, вирішили це якось і до війни пристосувати. Вони уявляють собі зграю від трьох до п’яти залізних “собак”, здатних виконувати “зачистку” приміщення. За наказом оператора роботи мають знаходити в приміщенні вказаних людей та нейтралізовувати їх. Особливо зазначено, що собачки мають відрізняти солдата-оператора від інших non-cooperative human subject. В ідеалі від системи вимагають здатності до автономного функціонування: щоб роботи в незнайомому приміщенні орієнтувались, одне одному поле зору не перекривали, та самі могли рішення приймати, в кого стріляти (згідно системи приорітетів).

Отак, не більше, не менше. Блогерський народ найбільше фразою про автономність зацікавився, зразу почали про Термінатора згадувати, повстання машин і все таке.. Дописи англійською тут і тут, а ще тут російською пара слів. Втім, покищо це фантастика, так само як і зображення для посту. Це був Wood robot 2 by ~nancynismo on deviantART

Категорії: Життя | Теґи:, , | Кометарів немає