Git в необычном амплуа

Не перестаю удивляться открытиям из мира командной строки с сайта commandlinefu.com. Вот, казалось бы, тривиальная задача: заархивировать исходники проекта для публикации. Можно вооружиться стандартным архиватором tar и, покумекав минут 10 (чтобы исключить из архива всякие вспомогательные файлы и прочие костыли) раза с пятого-десятого получить результат. А можно вот как:

git archive HEAD --format=tar | gzip -9  > myproject.tgz

Будет упаковано только то, что действительно имеет отношение к исходникам проекта, без «непотребных» файлов и каталогов (того же .git, например).

Конечно, для того, чтобы воспользоваться этой командой нужно вести репозитарий в формате git, но сейчас это не редкость.

Indent: отступы и интервалы в программном коде

Хочу рассказать об утилите indent, помогающей разметить исходный код пробелами и табуляциями в соответствии с теми или иными стандартами. Программа классическая, входит в состав любого Linux-дистрибутива, в котором установлены пакеты, связанные с разработкой. Но так ли это важно — правильно оформлять исходники?

( Читать дальше )

Http'ед

Заголовок топика составлен из двух слов — http и велосипед. Дело в том, что ни в одной сфере веб-программирования не изобретено столько велосипедов, сколько в аутентификации пользователей при входе на сайт. Что ни «движок» — то своя система. Сам я грешен, написал нечто подобное и прекрасно представляю, сколько факторов нужно учесть при создании простенького, казалось бы, механизма с двумя полями (логин и пароль) и одной кнопкой.

Между тем, стандартный протокол HTTP предоставляет для этой цели готовые средства, поддерживаемые как на уровне любого уважающего себя браузера, так и на уровне любого уважающего себя веб-сервера. Причем на стороне сервера, как правило, предлагается широкий диапазон способов проверки корректности введенных пользователем учетных данных: от простого текстового файла до сервера LDAP.




( Читать дальше )

Рекурсивный перебор файлов в Java

Недавно на Мтааламу был топик о том, что рекурсивный перебор файлов в языке Groovy осуществляется одной строкой. Но иногда эту задачу требуется выполнить на чистой Java. Вот один из нехитрых способов:




( Читать дальше )

Groovy Closures: искусство компактности

В языке Groovy помимо стандартных полей и методов существуют т.н. Closures. Средство это очень нетипичное для классического программирования, но чрезвычайно эффективное. Рассмотрим простой пример: нужно превратить «плохой» html-код вида

Строка 1<br>
Строка 2<br>
Строка 3<br>
Строка 4<br>


в «хороший»

<p>Строка 1</p>
<p>Строка 2</p>
<p>Строка 3</p>
<p>Строка 4</p>



( Читать дальше )

Криптоустойчивый пароль? Одной левой!

Подписавшись на новости ресурса "All commands", о существовании которого на днях сообщил камрад Mihael, не перестаю удивляться могуществу возможностей командной строки. Думаю, на Мтааламу время от времени стоит перепечатывать оттуда некоторые фрагменты, оснащая комментариями для начинающих. Вот, например, очень доступная для понимания, хотя и не самая короткая, команда для генерации криптоустойчивых паролей:

</dev/urandom tr -dc '12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB' | head -c8; echo


Для тех, кто не успел испугаться — пояснения под катом.



( Читать дальше )

Sakura: терминал в стиле бонсай

Сегодня сменил стандартный терминал Xfce на программу Sakura. Преимуществ несколько.




( Читать дальше )

Groovy: еще и shell

Создатели языка Groovy на славу оправдали его название (в переводе — «Превосходный»). Помимо могучих возможностей синтаксиса, в комплект входит несколько замечательных инструментов. Один из них — groovysh — задуман как альтернатива командному интерпретатору bash, не больше не меньше.




( Читать дальше )

Groovy: Про коня и лань 2

Недавно я писал о том, как интегрировать код, написанный на стандартной Java и на JavaFX. Сегодня речь пойдет о совмещении программ на Java с другим дружественным синтаксисом —




( Читать дальше )

Трабл с полями и переменными

Время от времени Java-программисты «наступают на грабли», обозначая одинаковыми словами поля класса и переменные внутри метода. Отладка при такой ошибке может очень сильно затянуться, поэтому хочу посвятить данной проблеме несколько строк.



( Читать дальше )