Решил тут собрать небольшое окружение на основе IceWM, вернуться, так сказать к истокам (работал он у меня в бытность ещё P100/24RAM). Но т.к. теперь ему предстояло работать на ноутбуке, в режиме питания от батареи было бы хорошо иметь возможность наблюдать статус разряда.
Еще один процесс, который может породить множество зомби, это демон… Иногда я должен напоминать себе, что пишу статью по программированию, а не сценарий фильма ужасов.
Ну там в комментах я написал, в gcc такое не проканывает (пока точно известно, что проканывает в MSVC, а как дела обстоят с компиляторами Intel/Sun/Borland мне не известно). Но… в транслите так же сделал вариант:
http://codepad.org/zEs0pjLl или тут:
/*
* Собирать:
* gcc -include stih.h -o stih stih.c
* Посмотреть вывод препроцессора:
* gcc -E -include stih.h -o stih stih.c
*//*
* stih.h
*/#include<stdio.h>#define NACHALO int main() {<br/>
char*out=NULL;<br/>char*txt=NULL;<br/>FILE*fp=NULL;#define KONETS return 0;}
#define PROGRAMMY
#define Vyvedi
#define tekst
#define na
#define v
#define ekran out = NULL
#define fajl out =
#define nachalo ; if (out == NULL) <br/>
fp=stdout;<br/>else<br/>fp=fopen(out,"w");txt=#define konets ; if (fp != NULL)<br/>
{<br/>if(txt!=NULL)fprintf(fp,"%s",txt);<br/>if(fp!=stdout)fclose(fp);<br/>}#define teksta
/*
* stih.c
* Тут перевел в транслит, т.к. gcc (только ли он?) не поддерживает #define РУССКИЙ
* в общем, сути не меняет
*/NACHALOPROGRAMMYVyveditekstnaekrannachaloteksta"YA pomnyu chudnoe mgnoven'e: <br/>n<br/>Peredomnojyavilas'ty,<br/>n<br/>Kakmimoletnoeviden'e,<br/>n<br/>Kakgenijchistojkrasoty."konetstekstaVyveditekstvfajl"Stikh.txt"nachaloteksta"V tomlen'yakh grusti beznadezhnoj<br/>n<br/>Vtrevogakhshumnojsuety,<br/>n<br/>Zvuchalmnedolgogolosnezhnyj<br/>n<br/>Isnilis'milyecherty."konetstekstaKONETSPROGRAMMY
Захотелось получить красивое меню автодополнения после ввода . или -> в C/C++ программах. Изучая его же
конфиги (начинающим, и не только - рекомендую, есть интересности, в частности - автовставка шаблона при создании нового файла) наткнулся на интересную минорную моду:
company-mode, которая то, что мне нужно и делает. Причем, по ходу ввода - выбор в меню изменяется.
Подкатом картинка, которая демонстрирует как это работает у меня.
Столкнулся с проблемой: в некоторых модах, которые добавляют пункты меню в Emacs, эти самые пукнты меню оказываются пустыми, причем, при последующем перезапуске, бывают оказываются и не пустыми.
Сначала поставлена задача: удалить рекомендации в своем блоге на Juick.com, вручную неохота было, решил написать скрипт, в результате получился некоторый аналог DELETEALL, только без удаления подписок, комментов.
Код:
#!/bin/bash
### Удаляет ваши сообщения или рекомендации с Juick.com# section может быть: blog, recommsection="blog"# имя блога, по сути - ваш никblog="vasya"# Jabber account, в котором у вас зарегестрирован juick@juick.comjname="vasya.pupkin"jpass="superpassword"jserv="jabber.ru"## BEGIN ##u="http://juick.com/$blog/?show=$section"tmp_file=tmp_$section.txt
whiletruedo# посты со страницы будут удалены, соответственно их место# займут более старые lynx -dump "$u" > $tmp_file# Вычленяем ссылку на следующу страницуtmp=`cat $tmp_file| grep 'Older ->'| grep '|'`if[ -z "$tmp"];thennext_num=`cat $tmp_file| grep 'Older ->'| awk -F']''{print $1}'| sed 's| <br/>[||'`elsenext_num=`cat $tmp_file| grep 'Older ->'| awk -F'|''{print $2}'| awk -F']''{print $1}'| sed 's| <br/>[||'`fi# да, этаким мы сделаем trim, сделайте при помощи sed, будет элегантней (и просто)next_num=`echo$next_num| awk '{print $1}'`next_link=`cat $tmp_file| grep "$next_num. http://"| grep "show=$section"| grep 'page='| awk '{print $2}'` cat $tmp_file <br/>
| grep '<br/>[[0-9]*<br/>]#[0-9]*,' <br/>
| grep 'now<br/>|ago' <br/>
| awk '{print $1}' <br/>
| sed 's|^<br/>[[0-9]*<br/>]||;s|,$||' <br/>
|whileread line
dopost_num=`echo$line| sed 's|^#||'`action="D"[ x"$section"= x"recomm"]&&action='!'echo"Delete/unrecomend post: $line (http://juick.com/$post_num)"echo"$action$line"| sendxmpp -u $jname -p "$jpass" -j $jserv -s 'bye' juick@juick.com
sleep 10done# А вот когда указателя на следующую страницу не будет, тогда выходимif[ -z "$next_num"];then break;fidone
Для чего не спрашивайте, просто стало интересно написать :) Для работы нужно:
UPD: спасибо камраду sandr1x
, в Ubuntu/Debian работа программы sendxmpp (там кстати её версия указана как 1.18, хотя актуальная - 0.0.8) завершается с ошибкой:
Can't use an undefined value as a HASH reference at /usr/share/perl5/XML/Stream.pm line 1165.
С подобным поведением сталкивались на работе когда настраивали sendxmpp для отправки уведомлений. Решение такое: открываем файл /usr/share/perl5/XML/Stream.pm переходим на строку указанную в ошибке (1165), находим чуть выше ее строку:
Файл принадлежит пакету libxml-stream-perl версии 1.22 в ArchLinux это пакет perl-xml-stream версии 1.23, там данные исправления уже присутствуют, так что если есть возможность - обновляемся, или ставим Arch, правда не задаем глупых вопросов, а то новоявленные арчеводы ex-убунтоиды ими уже на форуме поддостали :)
Подогнали тут машинку, мамка Asus CUBX-L, процессор Intel Celeron 600MHz, RAM около 415Mb (free кажет 416800Kb, что-то не могу подобрать комбинацию, там 3 планки стоят). У меня вообще в последнее время какая-то тенденция с оживлением всякого старого железа, лотеком прям себя ощущаю.
Образ с которого устанавливаюсь 2009.08, так вот, на машинке или сам привод немного подгоняет, или диск так записан (возможности проверить на другом нет), но при попытке установке пакетов, вылетает на том, что не может проверить контрольные суммы у некоторых пакетов. Причем, установка пакетов у меня выбрана не с диска, а с сети - благо у меня локальное зеркало есть. Это навело на мысль - удалить пакеты, чтобы перезакачались: была такая проблема на моём EeePC - подглючивала сетевая карта.
Сказано - сделано. Иду в /mnt/var/cache/pacman/pkg и… правильно, пытаюсь удалить некорректные пакеты, а оно мне что? А оно мне говорит - а нет таких файлов. Опппппааааа… ЧДКВ?
Смотрю какой командой запускается pacman:
pacman –root /mnt –config /tmp/pacman.conf –noconfirm -S <список пакетов>
Смекаю, я же зеркало выбирал, значит должно быть отражено в конфигурационном файле, а вдруг там ещё что, понаписано… Открываю:
nano /tmp/pacman.conf
и что я вижу? там в секции [options] указаны два параметра для CacheDir, один верно ведет в /mnt/var/cache/pacman/pkg, а другой, на те пакеты, что на диске: /src/… и так получилось, что пакеты, на которые ругалось, не изменились с августа прошлого года, а т.к. диск/привод гонят - прочитаться не смогли, на что ругнулось, что контрольные суммы не получилось просчитать.
Удаляю эту строчку, после чего возвращаюсь на пункт Install packages и пробую заново устанавливать пакеты - удача :)
регистрируемся, но, т.к. это не рашин стартап, поддерживается и вход по OpenID
, что мне очень удобно и вкусно.
при помощи ssh-keygen сгенерируйте ключ:```
cd ~/.ssh
ssh-keygen -f id_rsa_gitorious
1. после в веб-морде: Your dashboard (вверху) -> Manage SSH keys (в главной области окна) -> Add SSH key (в колонке справа), вставить туда содержимое ~/.ssh/id_rsa_gitorious.pub и жмякнуть Save
2. у себя же, создать файл ~/.ssh/config, в котором должно содержаться примерно следующее:```
Host gitorious.org
IdentityFile ~/.ssh/id_rsa_gitorious
``` что бы для сайты автоматом выбирался нужный ключ.
Теперь несколько заметок по работе.
* заходим в нужный проект, выбираем репозиторий, в колонке справа появляется возможность клонировать репу. На ней делать изменения и потом комитить мерж-реквесты.
* создать свой проект: Your dashboard -> Create a new project... (колонка справа) дальше все понятно: задать нужные поля, выбрать лицензию и т.д.
* в проекте можно создавать репозитории, находясь в проекте: Add repository... в колонке справа, после создания проекта, будут даны рекомендации, что нужно сделать, что бы залить его после (подготовительные шаги для ssh мы сделали выше)
Пока не существует возможности создать приватный репозиторий, но работа ведется: http://groups.google.com/group/gitorious/browse_thread/thread/af08be1e6dd70b95/614e96c2f886b7fb?lnk=gst&q=private#614e96c2f886b7fb
Из дополнительных плюшек: можно для проекта вики создавать, по сути нормальный такой сайт-хостер для исходников, при том, что из git по тегу можно выгребать tar.gz пакеты, не плодя лишние сущности.
Но, при создании проекта так же можно указывать и сайт и багтрекер, так что и как удобный вспомогательный механизм Gitourous тоже полезен. Есть удобные средства для ревью кода, при совместной разработке.
Сам код Gitorious хостится здесь же, можно скачать и развернуть подобную систему у себя. Для пользователей ArchLinux доступен через AUR: http://aur.archlinux.org/packages.php?ID=34713
И есть одно больше отличие от того же github.com (ещё я там не нашел вход по OpenID), это то, что место для пользователя нелимитировано, есть только одно ограничение: объем трафика в месяц не больше 500 Мб, но если нужно залить большой проект - все решается, вот ответ от создателя проекта:
>> I'm new one here and I want to ask about the space for repositories.
>> How much disk space is given for account?
>
> As much as you need, with one big disclaimer; that you let us know
> beforehand if plan on pushing any repositories larger than around
> 500MB, it's just nice behavior considering the freedom you have to let
> us know first :)
Взято: http://groups.google.com/group/gitorious/browse_thread/thread/206efb9f1ea5f99b/a656b005f1e0ed80?lnk=gst&q=limit#a656b005f1e0ed80