Host - WinOS/Guest - Ubuntu Server. How to increase the size of the screen virtual ubuntu server on the vmware or virtualbox

После пары дней попыток, для меня лучшим решением оказалось следующее:
1- установка ssh-сервера
2 - использование утилитки - Putty

Linux/Ubuntu. Подключение к инету через прокси

Для учета прокси нужно в директории /etc/apt/ создать файл настроек apt.conf

sudo nano apt.conf

И в нем прописать следующие строки:

Acquire::http::proxy "http://username:password@proxy_addr:3128/";
Acquire::https::proxy "https://username:password@proxy_addr:3128/";


Для Ваших нужд может потребоваться и ftp-протокол:

Acquire::ftp::proxy "ftp://username:password@proxy_addr:3128/";

На всякий пожарный отмечу, что при прокси-подключениях для самопроверки не стоит полагаться на команду ping; в сторону инета он не проходит.

Linux/Ubuntu. Пакетный менеджер APT

Advanced Packaging Tool (APT) – набор утилит для управления программными пакетами в операционных системах основанных на Debian.

APT позволяет:
- устанавливать, удалять и обновлять пакеты
- решать зависимости
- искать пакеты по заданным критериям
- просматривать подробную информацию о пакете
- манипулировать ключами от репозиториев

APT является одной из базовых программ и включена в состав Ubuntu.

Настройки APT

Все файлы настроек APT хранятся в директории /etc/apt
/etc/apt/apt.conf – основной файл настроек, используемый всеми инструментами из состава APT.

Описание всех возможных настроек и опций можно прочитать в документации к нему:
man apt.conf

apt.conf.d - директория содержащая в себе файлы конфигурации, аналогичные по синтаксису apt.conf.

При помощи этой директории можно быстро и удобно манипулировать настройками APT добавляя или удаляя подготовленные файлы с настройками.

auth.conf - файл, содержащий ключи, для авторизации в репозиториях. Например, туда добавляются логины и пароли от репозиториев к купленным в Центре приложений программам.

sources.list - файл с перечнем репозиториев.

sources.list.d - директория с файлами репозиторий, по назначению аналогичных sources.list. Каждый репозиторий описывается в отдельном файле.

Использование APT

В APT входит несколько утилит, выполняющих отдельные задачи.

apt-get - это утилита управления пакетами.
apt-get требует прав суперпользователя для своей работы.

Основные команды:

update - Обновить информацию о пакетах, содержащихся в репозиториях.
install foo - Установить пакет foo. Скачивание, установка и настройка происходят автоматически. Если для настройки пакета foo нужны дополнительные сведения, будет показан запрос к пользователю.
upgrade - Обновление пакетов, для которых в репозитории доступны новые версии.
dist-upgrade - Обновление пакетов, требующих разрешения зависимостей (установка дополнительных или удаление конфликтующих пакетов).
remove foo - Удаление пакета foo из системы.
purge foo - Удаление пакета foo и очистка системы от его конфигурационных файлов. Файлы настроек в домашних каталогах пользователей удалены не будут.
autoremove - Удаление пакета, который более не нужен в системе. Используется для очистки системы от ненужных пакетов. Факт, что пакет более не нужен, определяется следующим образом: если пакет был установлен не сам по себе, а как зависимость для другого пакета, который впоследствии был удалён, значит этот пакет тоже уже не нужен в системе.
source foo - Получение исходных текстов пакета foo.
build-dep foo - Получение зависимостей для сборки пакета foo.

Починка базы пакетов

apt-get также используется для устранения сбоев в базе пакетов вызванных нарушенными зависимостями. Разрешение зависимостей производится командой:

sudo apt-get install -f

apt-cache – утилита, позволяющая выполнять запросы к кешу APT.

Основные команды:

search - Поиск пакета по части названия или описания. Поддерживает регулярные выражения.
show - Информация о пакете: версия, размер, описание и т. п.
depends - Зависимости указанного пакета.
rdepends - Обратные зависимости пакета.

apt-key служит для добавления ключей от репозиториев в систему. Ключи защищают репозитории от возможности подделки пакета.

Основные команды:

add - Добавление ключа в базу доверенных ключей.
del - Удаление ключа из доверенных.

В завершении приведу вот такую проблемку, которая может возникнуть во время установки того или иного приложения, например - midnight commander (mc). При попытке установки

sudo apt-get install mc

система выбрасывает в консоль сообщение о невозможности найти необходимый пакет

Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package mc


Одним из возможных решений может оказаться попытка обновить информацию о пакетах, находящихся в соответствующих репозиториях.

sudo apt-get update

Для успешности данного обновления ваша рабочая станция или сервер должны иметь выход в инет (если нужно настроить выход через прокси, можно заглянуть сюда) и в файле - sources.list - должны быть прописаны соответствующие репозитории.
После этого, если нет иных проблем, установка должна пройти успешно. Всем успехов!

Javascript. Initialization Date object by some date string


var date = new Date($("#date_field").val().replace(/(\d+).(\d+).(\d+)/, "$3/$2/$1"));

Duff's device construction in C/C++/Java/PHP/Javascript

В 1983 году Томас Дуглас Дафф из Торонто во время оптимизации раскрутки одного цикла открыл необычную конструкцию на C:

switch(count%8){
case 0: do{ *to = *from++;
case 7:  *to = *from++;
case 6:  *to = *from++;
case 5:  *to = *from++;
case 4:  *to = *from++;
case 3:  *to = *from++;
case 2:  *to = *from++;
case 1:  *to = *from++;
  }while(--n>0);

Он обнаружил, что с выражением switch можно выделывать весьма хитрые фокусы. Пока вы соблюдаете синтаксис, вы можете вкладывать в выражение switch различные выражения выбора или итерации, что позволяет эффективно переходить в любую функцию или выходить из нее. Здесь можно ознакомиться с перепиской Даффа, где он рассказывает о своем открытии. 

Вот пара примеров:

// первая итерация начинается с определенной метки case
switch (num % 5) {
            case 0: do { i++;
            case 4:         i++;
            case 3:         i++;
            case 2:         i++;
            case 1:         i++;
                        }     while (--n > 0);

}

или так

switch (num % 2) {
    case 0:   do { std::cout << "num = " << num << std::endl;;
    case 1:           std::cout << "num = " << num << std::endl;;
                 }       while (--num > 0);

}

Причем все они компилируются и работают. Я встречал использование такого трюка в примерах написания так называемых сопрограмм, определяемых в макросах. Вот пример - msdn.
Стоит отметить, что данная особенность - при отсутствии break, управление внутри блока передаётся «вниз и насквозь» от инструкции, стоящей под одной меткой case, к инструкции, стоящей под следующей меткой case - характерна только для С и С++, в остальных языках мы будем получать предупреждения о синтаксической ошибке. Например, в Java компилятор будет ругаться на первой же метке case, так же ведет себя интерпретатор Javascript. Попытка проверки на PHP тоже завершилась сообщением интерпретатора об ошибке - Parse error: syntax error, unexpected 'case' (T_CASE).
Целесообразность и эффективность использования такой конструкции ставится под сомнение, сам Дафф в своей переписке - см. выше - указывает на ряд ограничений и слабой целесообразности такой конструкции. Но тем не менее, есть источники, указывающие на присутствие в коде реализации такой конструкции в протоколе SSH.
Think about it!