26.11.2009
Bash в bash-е, в bash-е, ..., в bash-е.
Думаю, всем знакома ситуация, когда, во время компиляции какого-либо ПО, выполнение `./configure` останавливается с сообщением о неудовлетворенной зависимости. И приходится установить что-нибудь еще и не одно, и не только из репозиториев, а еще и скомпилить что-нибудь другое, а там тоже зависимости.
Если всё это делать в одном терминале, то неизбежны: путаница в зависимостях, безуспешное копание в истории ввода и прочие пляски. Можно, конечно, для каждой задачи открывать новую вкладку в терминале или новый терминал, но тут может вмешаться параллельная задача и порядок задач будет нарушен, и открутить его в обратную сторону будет уже очень сложно - опять бардак.
Достаточно давно я выработал для таких случаев очень удобный, на мой взгляд, способ - рекурсивный запуск `bash`. Если для установки или сборки какого-либо приложения требуется установить или собрать что-нибудь другое, то в момент возникновения такой необходимости я запускаю `bash` прямо в этом же терминале. Это можно делать несколько раз, потом выходить из последнего запущенного экземпляра и получать действие, которое потребовало удовлетворить его зависимости предпоследним в истории. Примерно вот так:
Однако, мне всегда не давало покоя, что я не вижу уровень вложенности `bash`. И вот недавно с небольшой посторонней помощью дошел до решения.
Небольшая добавка в `~/.bashrc`, которая добавляет в приглашение командной строки отображение уровня рекурсии начиная с ноля:
После добавления этого кода в `~/.bashrc` первый листинг будет выглядеть вот так:
Вот так-то лучше:)
Если всё это делать в одном терминале, то неизбежны: путаница в зависимостях, безуспешное копание в истории ввода и прочие пляски. Можно, конечно, для каждой задачи открывать новую вкладку в терминале или новый терминал, но тут может вмешаться параллельная задача и порядок задач будет нарушен, и открутить его в обратную сторону будет уже очень сложно - опять бардак.
Достаточно давно я выработал для таких случаев очень удобный, на мой взгляд, способ - рекурсивный запуск `bash`. Если для установки или сборки какого-либо приложения требуется установить или собрать что-нибудь другое, то в момент возникновения такой необходимости я запускаю `bash` прямо в этом же терминале. Это можно делать несколько раз, потом выходить из последнего запущенного экземпляра и получать действие, которое потребовало удовлетворить его зависимости предпоследним в истории. Примерно вот так:
lig@host:~/soft/application$ ./configure Failed "dependency" required lig@host:~/soft/application$ bash lig@host:~/soft/application$ sudo aptitude install dependency lig@host:~/soft/application$ exit lig@host:~/soft/application$ ./configure Success lig@host:~/soft/application$ Постоянная ссылка на этот кусок кода: http://paste.nophp.ru/e. Код раскрашен с помощью Paste.NoPHP.ru.
Однако, мне всегда не давало покоя, что я не вижу уровень вложенности `bash`. И вот недавно с небольшой посторонней помощью дошел до решения.
Небольшая добавка в `~/.bashrc`, которая добавляет в приглашение командной строки отображение уровня рекурсии начиная с ноля:
if [ -z $recursion ]; then recursion="0"; export recursion; else recursion=$(($recursion+1)); fi; PS1='$recursion:'$PS1 Постоянная ссылка на этот кусок кода: http://paste.nophp.ru/c. Код раскрашен с помощью Paste.NoPHP.ru.
После добавления этого кода в `~/.bashrc` первый листинг будет выглядеть вот так:
0:lig@host:~/soft/application$ ./configure Failed "dependency" required 0:lig@host:~/soft/application$ bash 1:lig@host:~/soft/application$ sudo aptitude install dependency 1:lig@host:~/soft/application$ exit 0:lig@host:~/soft/application$ ./configure Success 0:lig@host:~/soft/application$ Постоянная ссылка на этот кусок кода: http://paste.nophp.ru/f. Код раскрашен с помощью Paste.NoPHP.ru.
Вот так-то лучше:)
24.11.2009
«Вредная» монополия Microsoft
По мотивам новости «Microsoft откроет свои магазины рядом с магазинами Apple» (news.techlabs.by) и обсуждения в рассылке SPb LUG.
А теперь вспомним, что конкуренция - это хорошо. А почему? А потому что конкуренция - это двигатель прогресса. Конкуренция заставляет соперничать и разрабатывать новое, полезное пользователю.
Но, если Microsoft - монополист, то им не надо будет развивать свои продукты? Это же хорошо. Это значит, что Open Source победит тогда и только тогда, когда перестанет лезть в коммерческие и области. Тогда, когда мы найдем для него некоммерческий рынок сбыта, такой же емкий, как комерческий.
Если главный путь распространения коммерческого ПО - это магазины, значит ПО с открытым исходным кодом надо раздавать с другой стороны двери, т.е. на улице. Да, так и только так.
Монопо́лия (от греч. μονο (mono) — один и πωλέω (poleo) — продаю) — фирма (ситуация на рынке, на котором действует такая фирма), действующая в условиях отсутствия значимых конкурентов (выпускающая товар(ы) и/или оказывающая услуги, не имеющие близких заменителей). Первые в истории монополии создавались сверху санкциями государства, когда одной фирме давалось привилегированное право торговли тем или иным товаром.
(wikipedia)Тут надо понять что есть рынок в нашем случае. Рынок операционных систем? Вряд ли. Скорее рынок коммерческого ПО. А Linux - это ПО с открытым исходным кодом, т.е. MS не конкурент Linux и Open Source в целом. Ух ты!
А теперь вспомним, что конкуренция - это хорошо. А почему? А потому что конкуренция - это двигатель прогресса. Конкуренция заставляет соперничать и разрабатывать новое, полезное пользователю.
Но, если Microsoft - монополист, то им не надо будет развивать свои продукты? Это же хорошо. Это значит, что Open Source победит тогда и только тогда, когда перестанет лезть в коммерческие и области. Тогда, когда мы найдем для него некоммерческий рынок сбыта, такой же емкий, как комерческий.
Если главный путь распространения коммерческого ПО - это магазины, значит ПО с открытым исходным кодом надо раздавать с другой стороны двери, т.е. на улице. Да, так и только так.
Ярлыки:
distribution,
linux,
microsoft,
monopoly,
opensource
04.11.2009
Лопни.ру - рейтинг блогов и блоггеров
В связи с тем, что Яндекс через месяц закрывает рейтинг популярных записей в блогах, вместо которого теперь есть API статистики записей Поиска по блогам, сделал сервис "Лопни.ру".
На "Лопни.ру" есть 3 рейтинга: 2 рейтинга записей и рейтинг блоггеров.
Немножко о рейтингах:
На "Лопни.ру" есть 3 рейтинга: 2 рейтинга записей и рейтинг блоггеров.
Немножко о рейтингах:
- Горячие обсуждения - это рейтинг самых активно обсуждаемых и цитируемых записей в блогах за последние 24 часа. Обновляется этот рейтинг каждые 10 минут. Однако, горячие темы держатся дольше, поэтому реальные изменения происходят не так часто.
- Самое интересное - это рейтинг, который вычисляется по хитрой формуле, отражающий общую заинтересованность читателей каждой записи. С первых дней этот рейтинг наполнился темами "на злобу дня", к которым мало кто может остаться равнодушным. Обновления этого рейтинга происходят каждый час. Реальные изменения заметны в течение одного-двух дней.
- Рейтинг блоггеров - здесь мы выделяем самых интересных блоггеров. Людей, чьи записи чаще интересны их читателям. Мне результаты нравятся уже сейчас. Однако, говорить о реальных результатах можно будет после нескольких дней работы "топа".
Сейчас статистика, которую отдает Яндекс все время пополняется. Рейтинг будет изменяться и становиться более объективным. Я думаю, что совсем красивым он станет через недельку.
При создании рейтинга блогов и блоггеров "Лопни.ру" использовались следующие технологии: Python, Django, Universal Feed Parser.
27.10.2009
А как бы так #nowplaying в Twitter
Накалякал маленький скриптик, который можно повесить на горячую клавишу, чтобы "затвитить" название прослушиваемой в данный момент композиции.
Понятно, что можно использовать ваш любимый плеер или другой ресурс, например identi.ca.
Понятно, что можно использовать ваш любимый плеер или другой ресурс, например identi.ca.
#!/usr/bin/env bash # Copyright (c) 2009, Serge Matveenko # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * All advertising materials mentioning features or use of this software # must display the following acknowledgement: This product includes # software developed by and its contributors. # * Neither the name of nor the names of its contributors may be used to # endorse or promote products derived from this software without specific # prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. curl -s -u username:password -d status="#nowplaying `quodlibet --print-playing`" http://twitter.com/statuses/update.xml >> ~/twitter_now_playing.log
Код раскрашен с помощью Paste.NoPHP.ru.
12.10.2009
И снова я решил заняться этим неблагодарным делом
Всем привет!
Надеюсь, что старые читатели блога serge.matveenko.ru сюда подтянутся.
Буду стараться писать что-нибудь полезное о заявленном в подзаголовке блога.
Ближайшие темы:
Надеюсь, что старые читатели блога serge.matveenko.ru сюда подтянутся.
Буду стараться писать что-нибудь полезное о заявленном в подзаголовке блога.
Ближайшие темы:
Подписаться на:
Сообщения (Atom)

