неділя, 6 липня 2014 р.

Закон Мура та нанотрубки

У тижневій підбірці статей наштовхувся на «IBM Commercial Nanotube Transistors are Coming Soon». Власне саму статтю переказувати немає сенсу, але основна теза стосується того, що завдяки дослідженням із нанотрубками (я так розумію карбоновими), дозволить зреалізувати закон Мура у 2020 році. Така постановка питання наштовхнула на ряд роздумів, перший з яких веде до пар з фізики на першому курсі, коли було сказано, що всі закони мають певне обмежене коло застосування.

Тепер промисловість наближається до границь закону Мура (а чи закону насправді?), який стверджує, що кількість транзисторів подвоюється щодва роки. Зараз на ринку доступні транзистори, виготовлені за технологією 14нм, і пропонований метод дозволяє будувати транзистори розміром 5нм. Однак все впирається у фізику. Тобто велика абстракція (принаймні для мене), стала об’єктивною реальністю. Тобто навіть зараз я відчуваю, що потужний комп’ютер не є аж дуже потрібним. З моїми поточними задачами цілком справляються ноутбуки, які було придбано 3-4 роки тому. Я це пов’язую виключно з моїми задачами, однак навіть невелике дослідження показує, що частота процесора на рівні 1-1,5 ГГц, та оперативної пам’яті розміром 2-4Гб є цілком достатньо для типових задач, а тому купувати щось супер-нове і свіже не варто.

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

вівторок, 29 жовтня 2013 р.

Робоче середовище для NuPIC

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

Для того, щоб запустити таке середовище, потрібні такі залежності:
  1. У Дебіан: libpng-dev libfreetype6-dev libtool automake python-dev
  2. У virtualenv:
    • argparse==1.2.1
    • matplotlib==1.3.1
    • nose==1.3.0
    • numpy==1.7.1
    • pyparsing==2.0.1
    • python-dateutil==2.1
    • six==1.4.1
    • tornado==3.1.1
    • validictory==0.9.1
    • wsgiref==0.1.2
Рядок для pip виглядає таким чином: pip install validictory numpy;pip install matplotlib
Тобто для створення середовища потрібно встановити віртуальне оточення:
$ export NTA=$HOME/nta/eng
$ export NUPIC=/path/to/repo
$ export BUILDDIR=/tmp/ntabuild
$ export MK_JOBS=3
$ cd $NUPIC
$ virtualenv --python=python2.7 venv
$ . venv/bin/activate
(venv) source $NUPIC/env.sh
(venv) ./cleanbuild.sh
Далі запускаємо С++ тести:
$NTA/bin/htmtest
$NTA/bin/testeverything
А також тести на python:
cd $NTA
./bin/run_tests.sh
У тому випадку, якщо ми отримуємо повідомлення: E ImportError: libpython2.6.so.1.0: cannot open shared object file: No such file or directory потрібно видалити вбудовану у NuPIC бібліотеку matplotlib:
rm $NTA/lib/python2.7/site-packages/matplotlib
Хвилюватися з приводу цього не варто, оскільки у нас встановлено matplotlib у $NUPIC/venv//lib/python2.7/site-packages/ .
Надалі, для роботи з NuPIC можна використовувати наступні команди:
$ source $NUPIC/venv/bin/activate
(venv) source $NUPIC/env.sh

вівторок, 22 жовтня 2013 р.

Абстракція знань та математика

Невеличкий конспект за мотивами статті "Як виростити мозок: статистика, структура та абстракції".
Оскільки я зараз займаюся задачами узагальнення і (трішки) штучного інтелекту у тій області, з якою я раніше стикався досить дотично, то чергова чернетка стосується аналізу відомих підходів до формування знань (бажано б на абстрактному рівні). Що ж ми маємо станом на сьогодні?
Наприклад: діти, у процесі пізнання сприймають невідомі терміни інтуїтивно, а потім можуть з легкістю їх розрізнити, наприклад іграшку від ложки. Яким чином вони це роблять? У пошуках висновків, автори пропонують опиратися не лише на синтаксичні конструкції чи морфологічні правила, але більше на побудову високо-масштабованих систем знань, напр. інтуїтивних фізичних, психологічних чи біологічних теорій або ж навіть системи правил для соціальної структури чи моральної оцінки дій. Навіть у такому випадку, отриманий кінцевий продукт (створення якого буде вимірюватись роками), буде суттєво відрізнятися від проведених спостережень (мабуть мова йде про абстрагування).

неділя, 10 лютого 2013 р.

Cygwin+Vim+Backspace

Цього семестру мої студенти будуть вчити С++ у польових умовах, з використанням Cygwin та G++. Причин для такого вибору є декілька:
  • Необхідно мати зручний компілятор, який буде запускатися швидко і на стареньких комп’ютерах, оскільки нові цього року не світять;
  • Хочу мати під руками компілятор, який відповідає останньому стандарту С++;
  • Хочу розказати студентам, що не IDE єдиним живе програміст;
  • Хочу їх трохи дисциплінувати і навчити гарно форматувати код, а то приносять джерельні коди у форматі doc (так, так, вони умудряються копіювати код у word, а потім дивуються, чому я кажу, що так не можна робити);
  • Хочу їхній код компілювати в себе на Лінаксі, щоб було видно що й до чого;
  • Хочу спробувати попрацювати з cygwin.
Першою суттєвою проблемою став вибір мінімального набору ПЗ. Станом наразі це:
  • gcc-g++
  • gcc-mingw-g++
  • libgcc1
  • gdb
  • make
  • termcap
  • terminfo
  • vim
Перша видима проблема: у vim не можу видаляти символи за допомогою backspace.
Рецепт:
  1. Створюємо файл налаштувань для vim: ~/.vimrc
  2. Встановлюємо параметри backspace:
    set backspace=indent,eol,start
     
  3. Зберігаємо файл
Усьо.

вівторок, 1 січня 2013 р.

Iceweasel 3.5.X and illegal instruction

Вхідні дані:
  • 31 грудня 2012 року:
  • рідний домашній сервер, через який бігає мій інтернет;
    • На сервері крутиться Debian/GNU Linux Squeezy.
  • запущений процес оновлення системи: aptitude safe-upgrade
  • 1 січня 2013 року:
  • оновлений сервер;
  • вилітання крижаного тюленя (iceweasel) з повідомленням «Illegal instruction»;
  • повідомлення хрому (google-chrome) про те, що плагін не вдалося завантажити.

неділя, 23 грудня 2012 р.

Встановлення MySQL Workbench

Більшість замовлень на розробку веб-сайтів містять вимогу про використання баз даних. Типовою є MySQL, що її встановлено на моєму тестовому майданчику і яку просять використовувати для дрібних проектів. Роботу з цією БД можна організувати за допомогою консольних запитів (mysql-client) або ж за допомогою графічних утиліт. Основними вимогами до такої утиліти є:
  • кросплатформність (бо краще так);
  • зручність використання;
  • підтримка всього, що тільки може бути;
  • хороші відгуки на різних форумах.

субота, 1 вересня 2012 р.

Підсвітка синтаксису у Vim


Типово vim має підтримку синтаксису лише англійської мови. Інших мов у дистрибутиві я не знайшов, однак довідка vim (:help spell) підказала, що це є файли з розширенням spl.
Невеликий пошук з гуглом, показав, що файли з перевіркою синтаксису, а також файли ймовірних замін знаходяться на http://ftp.vim.org/vim/runtime/spell/

Для перевірки синтаксису, використовуються такі команди як:
  • 'runtimepath' - перелік шляхів, де буде здійснено пошук файлу з перевіркою. Окремі шляхи розмежовуються комою.
  • 'encoding' - кодування файлу.
  • 'spelllang' - мова, за якою здійснюється перевірка.

Якщо ми припустимо, що потрібно здійснити перевірку україномовного тексту, у файлі, який має кодування utf-8, то це можна зробити за допомогою наступних комад:
:set encoding=utf-8
:set spelllang=uk
Тоді vim буде шукати файл uk.utf-8.spl. Якщо ж цей файл є відсутнім у шляху runtime, то vim автоматично спробує його завантажити.

Для перегляду можливих варіантів «правильного» слова - використовуємо комбінацію «z=».