Category: it

nepal

Android 2.2: adb; install to SD card

Разобрался, почему приложения не хотят ставиться на SD-карточку. Оказалось, что просто пока таких приложений ещё пока нет, но ставить их на карточку всё равно уже можно, только с небольшим вывертом. Перенёс несколько штук из телефона на карту. Расскажу, как.

I. Получение доступа к шеллу от телефона.
Collapse )
II. Инсталляция на SD card.
Collapse )

Деньги, как всегда, шлите мне по почте конвертами и бандеролями.
nepal

asus m2n-mx se wtf

Ядра от RHEL 5 (и от CentOS 5, и стабильное от OpenVZ) не грузятся на машине с материнской платой asus m2n-mx se с вот такой ошибкой:

Kernel panic - not syncing: IO-APIC + timer doesn't work
Collapse )
Решение нашлось вот тут. Выключаем в БИОСе опцию Chipset-> SouthBridge-> MCP61 ACPI HPET TABLE, и всё взлетает и работает без всяких флажков.
nepal

Линукс это в первую очередь зло!

Очень весёлый парнишка на каком-то форуме жгёт по полной. Если даже это тролль, то -- великий и могучий тролль. bash.org.ru нервно курит в сторонке.

Чёрт, ветка от апреля 2006 года. Хочу ещё Аркадия Куликова!

Linux - это Open Source. Это плохо. Любой хакер откроет исходники и взломает!!! В Windows такого нет. Говорю как админ со стажем работы в крупной конторе.

Кто мне скажет что Open Source это круто? Эта идеология скоро умрет как и Linux. Я то знаю как и что в этом мире делается. Так что не надо ляля.

Линукс это в первую очередь зло. Вы должны принять это как факт. Он не дает развиваться пользователям. Там всё привязано к командной строке и это плохо. Линукс был задуман как альтернатива Windows, а получилась ОСь для серверов. Но тут есть подвох. Windows работает на серверах всё равно лучше. Я сам проводил тесты. Windows на 20-30% стабильнее. И сама Microsoft это подтверждает.

Я считаю что если крупные корпорации не поддерживают Linux - это значит эта система скоро умрет как и Open Source. Даже Торвальдс сказал об этом.

бсд - разновидность линукса вы что не знали?

Люди опомнитесь. Linux умрёт. Это торвальдс сам сказал недавно!!! Они признал поражение!
nepal

и снова иНЖАЛИД ДЕЖИЦЕ

Про иНЖАЛИД ДЕЖИЦЕ я уже писал. Про то, как перекодировать кракозябры -- тоже.

Теперь для ностальгирующих советских инженеров-программистов -- как получить слова типа иНЖАЛИД ДЕЖИЦЕ. Довольно просто:

$ echo Invalid device | iconv -f KOI-7
иНЖАЛИД ДЕЖИЦЕ
$ echo Hello, world! | iconv -f KOI-7
хЕЛЛО, ВОРЛД!
$ echo Bad command or file name | iconv -f KOI-7
бАД ЦОММАНД ОР ФИЛЕ НАМЕ

Вот не помню, какие там были ещё ошибки. А вот, нагуглил:
АРЕ ЫОУ СУРЕ?

Кто-нибудь ещё что-нибудь помнит?
nepal

О, сколько нам открытий чудных...

Нашёл сегодня в одной, не буду упоминать тут, какой именно, программе следующий код:

if ((fp = fopen(file, "w")) < 0)
...


Удивился, конечно. Видимо, раньше было написано open, или ещё почему. Исправил, конечно. Но не в этом суть.

Более всего удивился тому, что gcc не ругается даже с -Wall. Выяснил, что указатель он приводит к unsigned, поэтому результат сравнения всегда ложен.

Попробовали с коллегой написать так:

unsigned int a;
if (a < 0)
return 1;
return 0;


И опять gcc не ругается, а вместо этого даже с -O0 генерит код, который не делает никаких сравнений, а сразу возвращает результат. То есть, собака, знает, что сравнение бессмысленное, но молчит.

Оказалось, надо ему сказать -Wextra, и уж тогда начинает ругаться. Для второго случая вот так:
warning: comparison of unsigned expression < 0 is always false
nepal

mkdir/chdir эксплойт

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

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

  1. Привести его текст полностью.
  2. Устроить что-то вроде викторины.
Collapse )

Вопросы будут такие:

  1. Что и почему произойдёт в Линукс-системе, где такое запустят?
  2. Почему OpenVZ от этого помогает?

Комменты скринятся. Сам отвечу в понедельник после обеда.

nepal

Set X terminal title

А вот ещё микрохаутушечка для линуксоида-любителя.

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

[12:23:22] [4/21] Updating bla bla ....

Но потом эта строчка уползает вверх, и, посмотрев на терминал в произвольный момент времени, непонятно, что там происходит.

Меж тем у терминала (иксового) есть некий текст, написанный в рамке X окна. Почему бы туда не написать нам ту же строчку, что мы выводим на экран. Аналогично поступает, например, emerge из Gentoo.

Читаем мой любимый console_codes(4) и выясняем, что для этого нужно. Пишем простой код на шелле (он же показывает разноцветности в терминале):


#!/bin/bash
# Example of setting title and using colors in terminal.
# By Kir Kolyshkin <kir AT sacred DOT ru>

BF='\033[1m'            # Bold
NF='\033[0m'            # Normal
GF='\033[32m'           # Green
SET_TITLE='\033]0;'    # Set title
ST='\033\\'             # ECMA-48 string terminator

# Log to console and set terminal title as well
log() {
        local d=$(date +%H:%M:%S)
        echo -e [${GF}${d}${NF}] ${BF}$*${NF}
        echo -ne ${SET_TITLE}[$d] $*${ST}
}

# Usage example
MAX=10
for N in $(seq 1 $MAX); do
        log "Counting $N/$MAX..."
        sleep 0.7
done
nepal

как скопировать файлы с полным путём?

Есть файлы, ну, скажем, /etc/fstab, /home/kir/a.txt и так далее. Хочется их скопировать в текущий каталог, но с сохранением полного пути. Желательно какой-то одной простой командой.

В первую очередь приходит в голову конструкция вида

for f in list_of_files; do d=$(dirname $f); mkdir -p $d; cp $f ./$d/; done

Но это как-то несколько громоздко.

Коллега koct9i предложил использовать тар. Вот так примерно выходит:

tar cf - list_of_files | tar xf -

Есть ли вариант проще? Все файлы заданы с абсолютными путями, копировать в текущий каталог.

Update: поправил ошибку в шельном коде, указанную [info]beshenov.

Update2: vm_lj дал наиболее простой вариант: cp --parents :)
nepal

Про цвета в терминале

Современные эмуляторы терминала поддерживают 256 цветов. Но многие программы про это не знают, потому что эмулятор выставляет переменную окружения TERM=xterm, а в terminfo про xterm прописано, что у него 8 цветов:
$ echo $TERM
xterm
$ tput colors
8

Но может, у вас всё так и должно быть? Проверить легко -- запустить вот такой код:

for ((x=0; x<=255; x++));do echo -e "${x}:\033[48;5;${x}mcolor\033[000m";done
(если заменить 48 на 38, будет меняться цвет текста, а не цвет фона)

Если вам напечатают много красивых цветов, то, значит, ваш эмулятор терминала умеет 256 цветов. Что нужно сделать, чтобы об этом узнали программы? Да просто выставить TERM=xterm-256color (убедившись, что у вас есть такой файл в /usr/share/terminfo/x/). Лучше всего сделать сразу в настройках эмулятора терминала (у меня в XFCE Terminal это Preferences -> Advanced -> $TERM setting).

Потом можно посмотреть, что изменилось:
$ echo $TERM
xterm-256color
$ tput colors
256


Можно запустить vim и увидеть, что цвета чуток изменились (если вы используете цветовую схему и подсветку синтаксиса). Чтобы убедиться, что vim "увидел", что у вас 256 цветов, напишите :set t_Co -- в ответ должны увидеть t_Co=256.

И даже для color ls предусмотрена цветовая схема с 256 цветами (она потом сама подгрузится в /etc/profile.d/colorls.sh, когда bash будет исполнять profile, а пока сделаем ручками):
$ eval $(dircolors -b /etc/DIR_COLORS.256colors)
$ ls

Всякие разные ESC-последовательности для терминала можно посмотреть в man console_codes. Всё вышеприведённое справедливо для Fedora 9; your mileage may vary, there are no guarantees etc.