После пары дней попыток, для меня лучшим решением оказалось следующее:
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; в сторону инета он не проходит.
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 - должны быть прописаны соответствующие репозитории.
После этого, если нет иных проблем, установка должна пройти успешно. Всем успехов!
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 можно выделывать весьма хитрые фокусы. Пока вы соблюдаете синтаксис, вы можете вкладывать в выражение 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!
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!
Subscribe to:
Posts
(
Atom
)