Результаты поиска
Гарантируется ли разрешение gettimeofday() в микросекундах?
Я портирую игру, которая изначально была написана для Win32 API, на Linux (ну, портирую порт OS X порта Win32 на Linux).
Я реализовал QueryPerformanceCounter , дав uSeconds с момента запуска процесса:
BOOL QueryPerformanceCounter(LARGE_INTEGER* performanceCount)
{
gettimeofday(¤tTimeVal, NULL);
performanceCount->QuadPart = (currentTimeVal.tv_sec - startTimeVal.tv_sec);
performanceCount->QuadPart *= (1000 * 1000);
performanceCount->QuadPart += (currentTimeVal.tv_usec - startTimeVal.tv_usec);
return true;
}
Это, в сочетании с QueryPerformanceFrequency() , дающим постоянную 1000000 в качестве частоты , хорошо работает на моей машине, давая мне 64-битную переменную, которая содержит uSeconds с момента запуска программы.
Так это портативное устройство? Я не хочу обнаружить, что он работает по-другому, если kernel был скомпилирован определенным образом или что-то подобное. Однако меня вполне устраивает, что он не переносится на что-то другое, кроме Linux.
Получение корневых разрешений на файл внутри vi?
Часто при редактировании конфигурационных файлов я открываю один из них с vi, а затем, когда я иду, чтобы сохранить его, понимаю, что я не набирал
sudo vi filename
Есть ли способ предоставить vi sudo права на сохранение файла? Я, кажется, помню, что видел что-то об этом, когда искал что-то о vi некоторое время назад, но теперь я не могу найти это.
Размер процесса на UNIX
Что такое правильный способ, чтобы получить размер процесс на Solaris, HP-UX и AIX ? Следует ли нам использовать top или ps -o vsz или что-то еще?
Как я могу использовать (n) curses в Ruby?
Я хотел бы создать индикатор выполнения, чтобы указать состояние пакетного задания a в Ruby .
Я читал некоторые учебники / библиотеки по использованию (n) curses , ни один из которых не был особенно полезен в объяснении того, как создать индикатор выполнения "animated" в terminal или использовать curses с Ruby .
Я уже знаю об использовании отдельного потока для отслеживания хода выполнения данного задания, но не знаю, как приступить к рисованию индикатора выполнения.
Обновление
ProgressBar класс был невероятно прямолинейным, прекрасно решил мою проблему.
Выбор инструмента статического анализа кода
Я работаю над проектом, где я кодирую в C в среде UNIX. Я использовал инструмент lint, чтобы проверить свой исходный код. Lint существует уже давно (с 1979 года), может ли кто-нибудь предложить более новый инструмент анализа кода, который я мог бы использовать ? Желательно инструмент, который является бесплатным.
Использование Xming X Window Server над VPN
У меня есть Xming X Window Server, установленный на ноутбуке под управлением Windows XP для подключения к некоторым серверам разработки UNIX.
Он прекрасно работает, когда я подключаюсь непосредственно к корпоративной сети в офисе. Однако он не работает, когда я подключаюсь к сети удаленно через VPN.
Когда я запускаю Xming при удаленном подключении, ни один из моих terminal Windows не отображается.
Я думаю, что это может быть как-то связано с тем, что переменная окружения DISPLAY неправильно устанавливается на адрес IP ноутбука, когда он подключен.
Я заметил, что когда я делаю ipconfig при удаленном подключении, мой ноутбук имеет два адреса IP, один из которых назначен ему из сети компании, а локальный адрес IP я настроил для него на моем "local network" из моего modem/router.
Есть ли какие-то изменения конфигурации, которые мне нужно сделать в Xming, чтобы поддержать его использование через VPN?
Как мне создать ASCII коды 2 и 3 в командной строке Bash?
Если я нажму Ctrl + B , это должно дать мне ASCII код 2, но Ctrl + C будет интерпретироваться как перерыв.
Поэтому я решил, что мне нужно перенаправить файл. Как я могу получить эти символы в файл?
Использование Visual Studio для разработки для C++ для Unix
Есть ли у кого-нибудь истории сражений, которыми можно поделиться, пытаясь использовать Visual Studio для разработки приложений для Unix? И я не говорю об использовании .NET с виртуальной платформой Mono или Wine, работающей под ним.
Наша компания насчитывает около 20 разработчиков, работающих под управлением Windows XP/Vista и разрабатывающих в основном для Linux & Solaris. До недавнего времени мы все входили в основной сервер Linux и модифицировали/строили код старым добрым способом: Emacs, Vi, dtpad - выбирайте сами. Затем кто - то сказал: "Эй, мы живем в темные века, мы должны использовать IDE".
Поэтому мы попробовали некоторые из них и решили, что Visual Studio была единственной, которая отвечала бы нашим требованиям к производительности (да, я уверен, что IDE X-это очень хороший IDE, но мы выбрали VS).
Проблема в том, как настроить среду, чтобы файлы были доступны локально для VS, но также доступны для сервера сборки? Мы решили написать плагин Visual Studio-он записывает наши файлы локально и на сервер сборки всякий раз, когда мы нажимаем "Save", и у нас есть немного жирная кнопка "sync", которую мы можем нажать, когда наши файлы изменяются на стороне сервера (например, когда мы обновляем последние файлы с нашего сервера управления версиями).
Плагин также использует функцию внешней системы сборки Visual Studio, которая в конечном итоге просто ssh встраивается в сервер сборки и вызывает нашу локальную утилиту "make" (которая является Boost Build v2 - имеет большую проверку зависимостей, но очень медленно запускается в результате, т. е. 30-60 секунд, чтобы начать). Результаты передаются обратно в Visual Studio, так что разработчик может нажать на ошибку и перейти к соответствующей строке кода (довольно гладко на самом деле). Сервер сборки использует GCC и кросс-компилирует все наши сборки Solaris.
Но даже после того, как мы все это сделали, я не могу не вздыхать всякий раз, когда начинаю писать код в Visual Studio. Я щелкаю файл, начинаю печатать, и VS пыхтит, чтобы догнать меня.
Есть ли что-нибудь более раздражающее, чем необходимость останавливаться и ждать ваших инструментов? Стоят ли эти преимущества такого разочарования?
Мысли, истории, помощь?
Как сделать поиск без учета регистра с помощью модификатора шаблона, используя меньше?
Похоже, что единственный способ сделать это-передать параметр-i, когда вы изначально работаете меньше. Кто-нибудь знает о каком-то секретном взломе, чтобы сделать что-то вроде этой работы
/something to search for/i
Различия между файлами unix и windows
Правильно ли я предполагаю, что единственная разница между "windows files" и "unix files" - это прорыв линии?
У нас есть система, которая была перемещена с машины windows на машину unix, и у нее возникли проблемы с форматом.
Мне нужно автоматизировать перевод между unix/windows, прежде чем файлы будут доставлены в систему в нашем "transportsystem". Вероятно, мне понадобится что-то, чтобы определить текущий формат и что-то, чтобы преобразовать его в другой формат. Если это просто новая строка, то это большая разница, тогда я рассматриваю просто чтение файлов с java.io. Насколько я знаю, они способны справиться и с тем, и с другим с помощью readLine. А затем просто напишите каждую строчку обратно с помощью
while (line = readline)
print(line + NewlineInOtherFormat)
....
Резюме:
Это только разница в текстовых файлах, где UNIX использует однострочный канал (LF) для обозначения новой строки, Windows использует возврат каретки/линейный канал (CRLF), а Mac использует только CR.
на что Себжир подробно отвечает:
OS X использует LF, так же как UNIX - MacOS 9 и ниже использовали CR, хотя
Кроме того, может существовать разница в кодировке символов для национальных символов. Там нет "unix-encoding", но многие linux-варианты используют UTF-8 в качестве кодировки по умолчанию. Mac OS (который также является unix) использует свою собственную кодировку (macroman). Я не уверен, что такое кодировка по умолчанию windows.
В дополнение к различиям в новой строке, метка порядка байтов может вызвать проблемы, если файлы обрабатываются как Unicode на Windows.
Однако другой набор проблем, с которыми вы можете столкнуться, может быть связан с кодировкой символов single/multi-byte. Если вы видите странные неожиданные символы (не в end-of-line), то это может быть причиной. Особенно если вы видите квадратные поля, вопросительные знаки, перевернутые вопросительные знаки, дополнительные символы или неожиданные акцентированные символы.
На unix файлы, которые начинаются с a . они скрыты. На windows это флаг файловой системы, к которому у вас, вероятно, нет легкого доступа. Это может привести к тому, что файлы, которые должны быть скрыты, теперь становятся видимыми на клиентских компьютерах.
Права доступа к файлам различаются между ними. Вы, вероятно, обнаружите, когда вы копируете файлы в систему unix, что файлы теперь принадлежат Пользователю, который сделал копирование и имеет ограниченные права. Вам нужно будет использовать chown/chmod, чтобы убедиться, что правильные пользователи имеют к ним доступ.
Как создать дамп ядра в Linux при ошибке сегментации?
У меня есть процесс в Linux, который получает ошибку сегментации. Как я могу сказать ему, чтобы он генерировал дамп ядра, когда он выходит из строя?
Получение трассировок стека в системах Unix, автоматически
Какие существуют методы автоматического получения стека trace в системах Unix? Я имею в виду не просто получение основного файла или Интерактивное подключение с помощью GDB, а наличие обработчика SIGSEGV, который сбрасывает обратную трассировку в текстовый файл.
Бонусные баллы за следующие дополнительные функции:
- Сбор дополнительной информации во время аварии (например. конфигурационный файл).
- Email информация о сбое bundle для разработчиков.
- Возможность добавить это в общую библиотеку
dlopened - Не требуется GUI
Почему **find** ничего не находит?
Я ищу файлы скриптов shell, установленные в моей системе, но найти не работает:
$ find /usr -name *.sh
Но я знаю, что есть тонна сценариев там. Например:
$ ls /usr/local/lib/*.sh
/usr/local/lib/tclConfig.sh
/usr/local/lib/tkConfig.sh
Почему не находит работу?
Скрытие пароля сетевого прокси в текстовых файлах на Linux/UNIX-likes
Как правило, в большой сети компьютер должен работать за аутентифицированным прокси-сервером - любые соединения с внешним миром требуют имя пользователя / пароль, который часто используется пользователем для входа в email, workstation и т. д.
Это означает необходимость поместить сетевой пароль в файл apt.conf , а также, как правило, переменные окружения http_proxy, ftp_proxy и https_proxy , определенные в ~/.profile
Я понимаю, что с помощью apt.conf вы можете установить chmod 600 (что не является по умолчанию на Ubuntu/Debian!), но в нашей системе есть люди, которым нужны корневые привилегии .
Я также понимаю, что технически невозможно защитить пароль от кого-то, кто имеет доступ root, однако мне было интересно, есть ли способ скрыть пароль, чтобы предотвратить случайное обнаружение. Windows работает с пользователями как администраторы, но каким-то образом хранит сетевые пароли (вероятно, хранящиеся глубоко в реестре, скрытом каким-то образом), так что при обычном использовании вы не наткнетесь на него в обычном тексте
Я только спрашиваю, так как на днях я совершенно случайно обнаружил, что кто-то другой использует пароль таким образом при сравнении конфигурационных файлов в разных системах.
@monjardin-аутентификация с открытым ключом, боюсь, не является альтернативой в этой сети. Кроме того, я сомневаюсь, что он поддерживается среди большинства инструментов командной строки.
@Neall-я не возражаю против того, чтобы другие пользователи имели доступ в интернет, они могут использовать мои учетные данные для доступа в интернет, я просто не хочу, чтобы они пересекались с моим паролем в обычном тексте.
Как создать дамп ядра в Linux при ошибке сегментации?
У меня есть процесс в Linux, который получает ошибку сегментации. Как я могу сказать ему, чтобы он генерировал дамп ядра, когда он выходит из строя?
Получение трассировок стека в системах Unix, автоматически
Какие существуют методы автоматического получения стека trace в системах Unix? Я имею в виду не просто получение основного файла или Интерактивное подключение с помощью GDB, а наличие обработчика SIGSEGV, который сбрасывает обратную трассировку в текстовый файл.
Бонусные баллы за следующие дополнительные функции:
- Сбор дополнительной информации во время аварии (например. конфигурационный файл).
- Email информация о сбое bundle для разработчиков.
- Возможность добавить это в общую библиотеку
dlopened - Не требуется GUI
Существует ли утилита Unix для добавления временных меток к stdin?
В конце концов я написал небольшой быстрый скрипт для этого в Python, но мне было интересно, есть ли утилита, в которую вы можете ввести текст, который будет дополнять каждую строку некоторым текстом-в моем конкретном случае, timestamp. В идеале, использование было бы чем-то вроде:
cat somefile.txt | prepend-timestamp
(Прежде чем вы ответите sed, я попробовал это:
cat somefile.txt | sed "s/^/`date`/"
Но это только один раз вычисляет команду date при выполнении sed, поэтому тот же timestamp неправильно добавляется к каждой строке.)
Можно ли скомпилировать сервер Apache HTTP и повторно развернуть его двоичные файлы в другое место?
В рамках выпуска нашего продукта мы отправляем двоичные файлы сервера Apache HTTP, которые мы скомпилировали на нашей машине разработки (UNIX).
Мы говорим нашим клиентам установить двоичные файлы (на их серверах UNIX) в той же структуре каталогов, в которой мы его скомпилировали. Для некоторых клиентов это не подходит, например, там, где есть ограничения на то, где они могут устанавливать программное обеспечение на своих серверах, и они не хотят компилировать Apache самостоятельно.
Есть ли способ компиляции сервера Apache HTTP, чтобы его местоположение установки можно было указать динамически с помощью переменных среды ?
Я потратил несколько дней, пытаясь разобраться в этом, и не мог найти способ сделать это. Это заставило меня поверить, что двоичные файлы Apache жестко кодировали некоторые пути к каталогам при компиляции, предотвращая требуемую переносимость.
Кому-нибудь удалось это сделать ?
“rusage” статистика
Я пытаюсь использовать статистику “rusage” в своей программе, чтобы получить данные, аналогичные данным инструмента time . Однако я почти уверен, что делаю что-то не так. Значения кажутся правильными, но иногда могут быть немного странными. Я не нашел хороших ресурсов в интернете. Кто-нибудь знает, как сделать это лучше?
Извините за длинный код.
class StopWatch {
public:
void start() {
getrusage(RUSAGE_SELF, &m_begin);
gettimeofday(&m_tmbegin, 0);
}
void stop() {
getrusage(RUSAGE_SELF, &m_end);
gettimeofday(&m_tmend, 0);
timeval_sub(m_end.ru_utime, m_begin.ru_utime, m_diff.ru_utime);
timeval_sub(m_end.ru_stime, m_begin.ru_stime, m_diff.ru_stime);
timeval_sub(m_tmend, m_tmbegin, m_tmdiff);
}
void printf(std::ostream& out) const {
using namespace std;
timeval const& utime = m_diff.ru_utime;
timeval const& stime = m_diff.ru_stime;
format_time(out, utime);
out << "u ";
format_time(out, stime);
out << "s ";
format_time(out, m_tmdiff);
}
private:
rusage m_begin;
rusage m_end;
rusage m_diff;
timeval m_tmbegin;
timeval m_tmend;
timeval m_tmdiff;
static void timeval_add(timeval const& a, timeval const& b, timeval& ret) {
ret.tv_usec = a.tv_usec + b.tv_usec;
ret.tv_sec = a.tv_sec + b.tv_sec;
if (ret.tv_usec > 999999) {
ret.tv_usec -= 1000000;
++ret.tv_sec;
}
}
static void timeval_sub(timeval const& a, timeval const& b, timeval& ret) {
ret.tv_usec = a.tv_usec - b.tv_usec;
ret.tv_sec = a.tv_sec - b.tv_sec;
if (a.tv_usec < b.tv_usec) {
ret.tv_usec += 1000000;
--ret.tv_sec;
}
}
static void format_time(std::ostream& out, timeval const& tv) {
using namespace std;
long usec = tv.tv_usec;
while (usec >= 1000)
usec /= 10;
out << tv.tv_sec << '.' << setw(3) << setfill('0') << usec;
}
}; // class StopWatch
Объединение значений из разных файлов в один файл CSV
У меня есть несколько файлов, содержащих значение в каждой строке.
EDIT :
Я понял ответ на этот вопрос, когда писал сообщение, и не понял, что я отправил его по ошибке в неполном состоянии.
Я пытался это сделать:
paste -d ',' file1 file2 file 3 file 4 > file5.csv
и получал странный выход. Позже я понял, что это происходит, потому что некоторые файлы имели как возврат каретки, так и символ новой строки в конце строки, в то время как другие имели только символ новой строки. Я всегда должен помнить, что нужно обращать внимание на такие вещи.
Лучший способ запустить приложение Java в качестве демона *nix или службы Windows?
Я ищу лучший метод для запуска приложения Java в качестве демона *NIX или службы Windows. Я заглянул в оболочку сервиса Java, проект Apache Commons 'jsvc' и проект Apache Commons 'procrun' . До сих пор оболочка службы Java выглядит так, как будто это лучший вариант... но мне интересно, есть ли какие-либо другие лицензионные продукты "Open Source friendly".
Удалите все файлы X в bash, кроме самых последних
Есть ли простой способ, в довольно стандартной среде UNIX с bash, запустить команду для удаления всех файлов X из каталога, кроме самых последних?
Чтобы привести более конкретный пример, представьте себе, что некое задание cron каждый час записывает файл (скажем, файл журнала или резервную копию tar-ed) в каталог. Мне бы хотелось, чтобы было запущено еще одно задание cron, которое удаляло бы самые старые файлы в этом каталоге, пока их не станет меньше, скажем, 5.
И просто для ясности, там есть только один файл, он никогда не должен быть удален.
Максимальная длина буфера для sendto?
Как получить максимальное количество байт, которое может быть передано вызову sendto(..) для сокета, открытого как порт UDP?
Есть ли способ, чтобы предотвратить находку из раскопок рекурсивно в подкаталогах?
Когда я это сделаю:
$ find /
Он обыскивает всю систему.
Как мне это предотвратить?
(Этот вопрос возникает из "ответа" на другой вопрос.)
Unix shell копирование файлов выравнивание структуры папок
На UNIX bash shell (в частности, Mac OS X Leopard) какой самый простой способ скопировать каждый файл, имеющий определенное расширение, из иерархии папок (включая подкаталоги) в одну и ту же папку назначения (без вложенных папок)?
Очевидно, что существует проблема наличия дубликатов в исходной иерархии. Я бы не возражал, если бы они были переписаны.
Пример: мне нужно скопировать каждый файл .txt в следующей иерархии
/foo/a.txt
/foo/x.jpg
/foo/bar/a.txt
/foo/bar/c.jpg
/foo/bar/b.txt
В папку с именем 'dest' и получить:
/dest/a.txt
/dest/b.txt
Почему **sort** не сортирует то же самое на каждой машине?
Использование одной и той же команды сортировки с одинаковыми входными данными приводит к различным результатам на разных машинах. Как мне это исправить?
Парсинг XML с использованием unix terminal
Иногда мне нужно быстро извлечь некоторые произвольные данные из файлов XML, чтобы поместить их в формат CSV. Каковы ваши лучшие практики для этого в Unix terminal? Я хотел бы получить некоторые примеры кода, так например, как я могу решить следующую проблему?
Пример ввода XML:
<root>
<myel name="Foo" />
<myel name="Bar" />
</root>
Мой желаемый результат CSV :
Foo,
Bar,
Графический инструментарий для быстрой разработки?
Я хочу написать интерфейс к приложению, написанному в C/C++.
Я использую Solaris 10 и планирую перенести приложение на некоторые другие архитектуры (сначала Windows).
Получить текущий процесс CPU использование в C
На Windows я могу сделать:
HANDLE hProcess = GetCurrentProcess();
FILETIME ftCreation, ftExit, ftKernel, ftUser;
GetProcessTimes(hProcess, &ftCreation, &ftExit, &ftKernel, &ftUser);
SYSTEMTIME stKernel;
FileTimeToSystemTime(&ftKernel, &stKernel);
SYSTEMTIME stUser;
FileTimeToSystemTime(&ftUser, &stUser);
printf("Time in kernel mode = %uh %um %us %ums", stKernel.wHour,
stKernel.wMinute, stKernel.wSecond, stKernel.wMilliseconds));
printf("Time in user mode = %uh %um %us %ums", stUser.wHour,
stUser.wMinute, stUser.wSecond, stUser.wMilliseconds));
Как я могу сделать то же самое на *nix?
Изменение приоритета текущего процесса в C
На Windows я могу это сделать:
HANDLE hCurrentProcess = GetCurrentProcess();
SetPriorityClass(hCurrentProcess, ABOVE_NORMAL_PRIORITY_CLASS);
Как я могу сделать то же самое на *nix?