программирование

Подписаться на эту метку по RSS

Пожалуй тех кто в теме я уже не удивлю своим открытием, но другим может быть интересно.

Наткнулся на прелюбопытнейшую вещь — Epic Citadel, что является наименованием демонстрационной локации на движке Unreal Engine, но не простого, а портированного в JavaScript.

Иными словами — есть инструмент, который называется Emscripten, являющий собой преобразователь C/C++ кода в JavaScript код. Люди из Epic Games (это те кто когда-то создали Unreal Tournament) взяли да и перевели свой движок Unreal Engine 3 полностью на рельсы HTML5 (WebGL) и JavaScript за 4 дня. Всё что вы видите, если видите, это голый JavaScript, что само по себе кажется фантастикой.

 

читать дальше »

Одной свербящей особенностью при знакомстве с текстовым редактором Vim являлось то, что символ табуляции, такой, к которому мы привыкли из «нормальных» редакторов, к примеру Notepad++ или консольного nano, ведёт себя совсем не должным образом. Если <TAB> поставлен в начале строки, то почему-то нельзя нажать клавишу «влево» и достигнуть начала окна редактирования. А внутри текста он ведёт себя просто вызывающе: курсор стоит не перед <TAB>ом, как положено, а не доходя одного символа до конца <TAB>а! Глумление над нами, чистой воды.

На самом деле такое поведение вполне естественно с точки зрения Vim. Символ табуляции — это один символ, поэтому в normal mode Vim помещает кусор на положенное место — над символом (или перед ним, в зависимости от настроек терминала) — чтобы его можно было удалить, заменить и просто осознать, что <TAB> — это один символ, такой же как остальные а не резиновая четырёхсимвольная махина. А то, что визуально символ табуляции занимает 2, 4, 8, или сколько сами определим, символов — это тоже так надо, иначе бы он ничем не отличался от пробела, по крайней мере для нас, зрителей.

Допустим не нравится нам такое поведение Vim. Есть два разумных способа это исправить. Первый я нашёл везде и это не совсем то, что нужно. Вам будет позволено перемещать курсор по всей плоскости экрана посимвольно (а также появятся дополнительные бонусы, связанные с выделением вертикальных блоков текста), но перепрыгивать через <TAB> разом не получится:

set virtualedit=all

Второй, который действительно похож на правду, я нашёл в архиве девелоперской переписки:

set list listchars=tab:\ \ 

Обратите внимание на пробел после второго «\». При использовании второго способа вы теряете бонусы, которые даёт опция «set invlist», если, конечно, вы ей пользуетесь.

Эти опции можно прописать, как и все остальные, в ~/.vimrc.

Для облегчения работы в bash (в других Linux-shell, скорее всего тоже получится: sh, ksh, zsh, csh, tcsh, … + консоли маршрутизаторов/коммутаторов Cisco и других фирм) работают некоторые сочетания клавиш («горячие клавиши»). Наиболее полезные из них тщательно отобраны лично мной:

Работа с процессами:
<Ctrl> + <C> — посылает сигнал SIGINT. Обычно, прерывает текущий процесс.
<Ctrl> + <D> — выход из консольного пользовательского процесса (EOF). Сигнал информирует систему, что ввод (с консоли) закончен.
<Ctrl> + <Z> — перевести процесс в фоновый режим (вернуть обратно можно набрав fg <номер процесса> в консоли; если номер не указывать — запустится последний остановленный процесс). Наберите jobs для просмотра списка всех приостановленных процессов. Очень полезная штука при работе с несколькими процессами (приложениями).
 
Работа со строкой ввода:
<Ctrl> + <W> — удалить последнее слово (всё, что слева от курсора до первого пробела).
<Ctrl> + <U> — очистить строку слева от курсора.
<Ctrl> + <K> — очистить строку справа от курсора.
<Ctrl> + <R> — поиск в истории введённых команд по маске: вводите, что хотите найти. Повторное нажатие сочетания клавиш будет искать следующее соответствие. <Ctrl> + <J> — закончить поиск и перейти к редактированию найденной команды. Если хотите просмотреть всё, что недавно вводилось в консоли, наберите history.
<Esc> + <.> — подставить аргумент из предыдущей команды. Например мы ввели >~/test.txt (создали файл в домашнем каталоге), теперь пишем vi, нажимаем <Esc> + <.> и у нас подставляется аргумент: vi ~/test.txt (выйти из текстового редактора vi можно набрав :q).
 
Перемещения по строке ввода:
Часто работают обычные «стрелочки» и клавиши <Home>, <End>, однако, на всякий случай:
<Ctrl> + <A> — переместить курсор в начало строки.
<Ctrl> + <E> — переместить курсор в конец строки.
 
Прочие действия:
<Ctrl> + <_> — отменить последнее действие.
<Ctrl> + <L> — очистить экран.
Можно выделять мышью любую подстроку, а для того, чтобы вставить её с позиции курсора, нужно нажать правую кнопку мыши <RightButton> (или среднюю, колесо — <ScrollButton>).
cd ~ (или просто cd) — перейти в домашний каталог; cd / — перейти в корневой каталог; cd - — вернуться назад (в каталог, из которого только что ушли).

Есть много других сочетаний, но именно эти стоит знать и любить. С помощью них можно сделать практически всё, и что важно, быстро.

Для тех кто работает с системами контроля версий (для программистов, короче) был разработан и внедрен в эксплуатацию незаменимый инструмент: http://whatthecommit.com/.

 

 

Он позволяет, не думать какой месседж написать к коммиту, а генерирует несомненно нужные фразы. Коммитьте, не бойтесь.

 

Upd. 2012. Добавляйте к сгенерированным словам что-нибудь по существу, а то вас уволят.

В MySQL есть такие полезные дополнения стандартного языка запросов, с помощью которых можно вывести: список названий всех доступных баз данных, список названий всех таблиц конкретной базы, а также список полей конкретной таблицы в указанной базе данных.

 

1. Вывести список доступных баз данных.

SHOW DATABASES [LIKE 'pattern']

Показывает список названий всех доступных баз данных. Доступных в том смысле, что пользователю, от имени которого происходит подключение к MySQL-серверу, установлены соответствующие права. Пару слов о нужных правах можно почерпнуть из официального источника:

http://dev.mysql.com/doc/...#priv_show-databases (англ.).

2. Вывести список таблиц в базе данных.

SHOW TABLES [{FROM | IN} db_name] [LIKE 'pattern']

Очень полезная команда. Выводит столбец из названий всех полей конкретной базы данных db_name.

3. Вывести список полей конкретной таблицы.

SHOW [FULL] COLUMNS {FROM | IN} tbl_name [{FROM | IN} db_name] [LIKE 'pattern']

Не менее полезное выражение. Выводит список полей заданной таблицы tbl_name из базы db_name. Однако в отличии от предыдущих, этот запрос выведет не только столбец названий полей, а еще и полную информацию по ним: типы полей, значения по умолчанию и т. д. Стоит отметить, что существует полный алиас этой функции:

SHOW FIELDS FROM tbl_name

На этом я и закончу, надеясь на полезность повествования. Пусть все ваши запросы возвращают желаемые результаты.

Примитивная программа, показывающая как проводить аффинные преобразования простейших геометрических объектов в матричной форме.

 

 

Реализована на основе математической библиотеки MathNet.Numerics, подраздела LinearAlgebra (сайт проекта).

 

 

Преобразуемая фигура вшита в программу. Задаётся она координатами концов отрезков, из которых состоит и имеет простой формат записи, так что при необходимости легко воплотить загрузку произвольной фигуры из файла.

Если что-то не работает, ругается на отсутствие библиотек или в чём-то нужен совет — спрашивайте в комментариях, отвечу.

 

Скачать исходники (MS VS 2010, 616 Кб) »

По меню перемещаться можно с помощью стрелочек <UP>/<DOWN>; <ENTER> — раскрыть/закрыть пункт меню. <ESC> — выход из меню и отображение последнего выделенного пункта.

Меню сделано на базе деревьев, которые реализованы STL-подобным классом tree.hh (сайт проекта), это означает, что не вдаваясь в детали и не используя все возможности класса с ним работают так же как с контейнерными классами из STL, например с vector.

В классе четыре поля типа «дерево», которые отвечают за хранение текущего состояния меню: id каждого пункта; дерево названий пунктов; содержит ли пункт подпункты, если да, закрыты они в данный момент или открыты; еще одно — «дерево обратных ссылок» хранит информацию о количестве подпунктов, закрывающихся для обзора в случае закрытия их пункта-родителя — это нужно для перемещения вверх по меню, минуя эти недоступные глазу пункты.

Как с ним работать программисту видно на первой картинке. На второй видно что получается в консоли:

 

  

Версия учебная, поэтому некоторые методы не работают или недоделаны.

 

Скачать исходники (MS VS 2010, 188 Кб) »

Upd. Релиз не работает без библиотек 10-й студии.