«Мак» для программиста

В комментариях кто-то мне писал, что «Мак» не очень-то подходит для программиста. Кому как, а под мои скромные нужды всё есть из коробки:

bolk-osx:~ bolk$ java -version 2>&1 | head -1
java version "1.6.0_24"

bolk-osx:~ bolk$ httpd -v | head -1
Server version: Apache/2.2.17 (Unix)

bolk-osx:~ bolk$ sqlite3 -version
3.6.12

bolk-osx:~ bolk$ ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]

bolk-osx:~ bolk$ python -V
Python 2.6.1

bolk-osx:~ bolk$ perl -v | head -2 | tail -1
This is perl, v5.10.0 built for darwin-thread-multi-2level

bolk-osx:~ bolk$ bash --version | head -1
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)

bolk-osx:~ bolk$ php -v | head -1
PHP 5.3.4 (cli) (built: Dec 15 2010 12:15:07)

Ну и так далее.

19 комментариев

«Эпл» не заплатила за рекламу?

В сериале «Числа» (Numb3rs), в одиннадцатой серии первого сезона, Чарли Эппс, один из главных героев, работает на «МакБуке» с заклееным бумажкой яблоком.

Кстати, в фильмах, кроме продукции «Эпл», часто встречается продукция фирмы Dell.

11 комментариев

Запуск сайтов из Spotlight

Занялся потихоньку автоматизацией своих задач на «Маке».

Очень хотелось сделать так, чтобы по короткому имени, набираемому в Spotlight, открывались какие-то сайты. В интранете «Яндекса» очень много сайтов, которые я открываю десятки раз за день, вот я и подумал — было бы круто, если бы я набирал в Spotlight «wiki», нажимал Enter и мне открывался бы сайт wiki.yandex-team.ru.

Я знаю, что тут много ребят сидят на Windows, поэтому поясню. Spotlight (его аналог) есть на Windows 7 — это поисковая строка, куда можно вбить начальные буквы какого-то названия, а операционная система предложит к запуску список программ и/или файлов, имена или метаинформация которых наилучшим образом подходит под заданную пользователем строку.

В Mac OS X удобно, что это поисковое поле появляется по кнопке Ctrl+Пробел.

Написать плагин к Spotlight мне пока слабо́, а вот набросать на AppleScript программу, открывающую одноимённый сайт — пожалуйста.

Идея такова: кладу на диск одну и ту же программу в нескольких копиях, с разными именами — «wiki», «jira», «calendar» и так далее. Теперь их можно запускать откуда угодно, включая Spotlight. После запуска программа смотрит какое у неё имя, прибавляет к нему префикс/суффикс и проверяет существует ли получившийся домен, если да, то открывает его в браузере.

Программу надо сохранить при помощи редактора AppleScript (AppleScript Editor) с нужным именем (↑⌘S), формат файла должен быть «программа» («application»).

Вот сама программа (наверное маску «%.yandex-team.ru» нужно будет убрать, она вам будет мешать, если вы только не работаете в «Яндексе»):

-- Ищет по маскам хост, подставляя имя программы,
-- если найден, открывает его в браузере
-- bolknote.ru апрель 2011

tell application "System Events"
    set appname to the name of the current application
end tell

repeat with mask in {"%.yandex-team.ru", "www.%.ru", "www.%.com"}
    set AppleScript's text item delimiters to "%"
    set mask to text items of mask
    set AppleScript's text item delimiters to appname
    set hostname to "" & mask
    
    if resolve(hostname) then
        open location "http://" & hostname
        exit repeat
    end if
end repeat

on resolve(host)
    try
        do shell script "host '" & host & "'"
        return true
    on error
        return false
    end try
end resolve

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

Добавлено позднее: в комментариях один из читателей предложил более простой и изящный вариант. Ура!

41 комментарий

Вопрос про iPod Touch G1

Кто знает, подскажите, пожалуйста.

У подруги iPod Touch первого поколения. Когда был куплен (с рук, б/у), там стояла какая-то достаточно старая прошивка и он был джейбрейкнут.

Подруга, подключив его к iTunes, обновила прошивку до 1.1.5 (это последняя для этой модели). После обновления с него исчезли все приложения, а в iTunes теперь (не знаю был ли до этого или всё было поставлено через какую-нибудь «Сидию») нет пункта «приложения» в меню этого устройства.

Теперь вопрос — это ли способ, не делая джейлбрейк, ставить приложения на это устройство? Если нет, то чем сейчас модно делать джейлбрейк iPod’ов? Я уже попробовал ZiPhone, не получилось, выдаёт какую-то невразумительную ошибку, что какой-то файл не найден.

7 комментариев

Почему я использую «Семажик», чтобы постить в блог

По-моему, это одна из самых забавных тем, которые родились в процессе обсуждения моего перехода на «Мак» — почему я не перейду с «Семажика» на постинг… через что, друзья мои?

Когда я писал движок своего блога (а я его именно писал, а не взял готовый, мне было интересно попробовать кое-какие новые идеи), один из принципов, которыми я руководствовался, был «используй готовое где только можно». Клиент для ЖЖ тогда имелся для любой платформы и его использование полностью освобождало меня от написания админки для сайта.

Я просто реализовал протокол ЖЖ (на деле даже два — Flat и Metaweblog) и несколько лет, не зная горя, писал в блог даже с телефонов, где нет ничего, кроме J2ME.

Так что «выкинь „Семажик“ и пиши через веб» — это совет от незнания, чтобы постить через веб, нужно обеспечить такую возможность, а у меня нет времени и желания этим заниматься, мне просто не интересно.

Так что я просто потратил немного времени и нашёл себе клиент, который меня устраивает — это Phoenix. Он не такой удобный, как «Семажик», но, в целом, неплох.

Добавлено позже: не знаю как так вышло, но почему-то этот сран… клиент, который меня устраивает, этот Phoenix удалил мне запись вместе с комментариями.

8 комментариев

IE 10 Platform Preview 1

Microsoft уже предлагает скачать Internet Explorer 10 Platform Preview 1.

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

31 комментарий

Windows → Mac OS X

Только не подумайте, что я сошёл с ума, но со вчерашнего дня я работаю под Mac OS X. Вчера я поменял свой Dell E4200 с Windows 7 на MacBook Air.

Причин такого перехода несколько.

Одна из основных причин следующая: вот уже много лет, переходя с версии на версию Windows, я использую FAR, я считаю, что это плохо и хочу убрать FAR из своей головы. Под Windows мне это сделать не удаётся, поэтому я предпочёл сменить операционную систему.

Вторая серьёзная причина такая: я верю в то, что мозг надо «качать», как я это делаю с мышцами, давать ему повышенную нагрузку время от времени, чтобы он не терял гибкость. Перейти разом на другую операционную систему — мне видится, достойная нагрузка.

Третья серьёзная причина: MacOS X — это всё-таки нечто похожее на Linux, тут я себе несколько упрощаю жизнь, я много работаю с удалёнными машинами под Ubuntu, так что система, где есть bash, grep и прочее — это возможность не переключаться. Хотя PowerShell мне будет не хватать.

Есть ещё и масса минорных причин. Их несколько, но достойны упоминания две.

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

Вторая минорная причина: некоторые важные для меня вещи в MacOS X делаются удобнее. Например, тут есть возможность примонтировать FTP как файловую систему, в Windows ничего лучше глючного WebDrive я не вижу уже много лет.

Я уже столкнулся с тем, что где-то мне придётся сильно ломать свои привычки, но, собственно, именно этого я и добивался. Меня пока сильно разочаровывают несколько вещей, например, отсутствие некоторого класса ПО хорошего качества. В частности, я пока так и не нашёл хорошего клиента к ЖЖ (выбрал пока Phoenix, но он слабое подобие Semagic), а для меня это важно — все посты в блог я пишу клиентом ЖЖ.

74 комментария

Размер табуляции в CSS

В CSS3 есть хорошее свойство tab-size, оно контролирует размер, в пробелах, отображаемой табуляции. Оно пока в стадии черновика; например, неизвестно будет ли введена новая единица измерения (скажем «sp») и можно ли будет указать размер в процентах, пикселях и т. п.

Тем временем, свойство уже реализовано в некоторых браузерах, с собственным префиксом. Свойство первым поддержала «Опера» (с версии 10.60, именно от этой компании и было выдвинуто предложение добавить это свойство в CSS3), затем оно было реализовано в четвёртой версии FireFox. Остальные браузеры пока не подтянулись.

Вот как выглядит CSS-код:

body {
    -o-tab-size: 4; /* размер табуляции — 4 (для Оперы 10.60+) */
    -moz-tab-size: 4; /* размер табуляции — 4 (для FireFox 4+) */
    -webkit-tab-size: 4; /* для будущих версий Safari и Chrome */
     tab-size: 4; /* размер табуляции — 4, на будущее */
}

Значение по-умолчанию для этого свойства — 8 (пробелов), так же можно указать специальное значение «inherit», в этом случае значение будет унаследовано от родительского элемента.

Добавлено позднее: для WebKit уже есть патч для поддержки свойства «-webkit-tab-size».

16 комментариев

Uptime в Windows (на CMD)

Я заморочился и написал uptime на чистом CMD, раз уж на PowerShell уже до меня сделали. CMD — ужасный язык программирования!

Это я после Турции до программирования дорвался.

Посмотреть что получилось.

@ECHO OFF
REM Евгений Степанищев //bolknote.ru 2011/04/09

REM Здесь CALL нельзя использовать, иначе хилый CMD не выдержит и лопнет —
REM подстановки переменных через %var% и !var! хватать перестанет
FOR /F "usebackq tokens=3" %%i ^
IN (`net stats srv ^| findstr /R "[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]*"`) DO SET DATE0=%%i

SET YEAR0=%DATE0:~6%
SET MONTH0=%DATE0:~3,2%
SET DAY0=%DATE0:~0,2%

SET YEAR1=%DATE:~6%
SET MONTH1=%DATE:~3,2%
SET DAY1=%DATE:~0,2%

REM Избавляемся от ведущих нулей, иначе CMD будет считать
REM числа восьмеричными
IF %DAY0:~0,1% == 0 SET DAY0=%DAY0:~1%
IF %MONTH0:~0,1% == 0 SET MONTH0=%MONTH0:~1%
IF %DAY1:~0,1% == 0 SET DAY1=%DAY1:~1%
IF %MONTH1:~0,1% == 0 SET MONTH1=%MONTH1:~1%

SET /A SUM=%DAY1%-%DAY0%
SETLOCAL ENABLEDELAYEDEXPANSION

IF %YEAR1% == %YEAR0% (
    SET /A END=%MONTH1%-1

    FOR /L %%M IN (%MONTH0%,1,!END!) DO (
        CALL :getMonthDays %%M %YEAR0%
        SET /A SUM+=!DAYS!
    )
) ELSE (
    REM 02.2010 -> +10 months
    FOR /L %%M IN (%MONTH0%,1,12) DO (
        CALL :getMonthDays %%M %YEAR0%
        SET /A SUM+=!DAYS!
    )

    REM 02.2011 -> +2 months
    FOR /L %%M IN (1,1,%MONTH1%) DO (
        CALL :getMonthDays %%M %YEAR0%
        SET /A SUM+=!DAYS!
    )

    REM Full years
    SET /A START=%YEAR0%+1
    SET /A STOP=%YEAR1%-1

    FOR /L %%Y IN (!START!,1,!STOP!) DO (
        CALL :isLeapYear %%Y
        IF !FEB! == 29 (
            SET /A SUM+=366
        ) ELSE (
            SET /A SUM+=365
        )
    )
)

ECHO %SUM%

GOTO :EOF

REM ====== Функции ==========

REM Високосный ли год?
REM isLeapYear <год>
:isLeapYear
SET /A FEB=(%1/400)*400

IF %FEB% == %1 (
    SET FEB=29
    GOTO :EOF
)

SET /A FEB=(%1/100)*100

IF %FEB% == %1 (
    SET FEB=28
    GOTO :EOF
)

SET /A FEB=(%1/4)*4

IF %FEB% == %1 (
    SET FEB=29
    GOTO :EOF
)

SET FEB=28
GOTO :EOF

REM Количество дней в месяце
REM getMonthDays <месяц> <год>

:getMonthDays
CALL :isLeapYear %2

IF %1 == 2 (
    SET DAYS=%FEB%
    GOTO :EOF
)

IF /I %1 LSS 8 (
    SET DAYS=30
    SET /A DAYS+="%1&1"
) ELSE (
    SET DAYS=31
    SET /A DAYS-="%1&1"
)

GOTO :EOF

14 комментариев

Uptime в Windows (на Powershell)

Написал на PowerShell скромный аналог утилиты uptime из Линукса (эта утилита показывает сколько дней компьютер работает без перезагрузки):

[math]::round(((Get-Date) - ($os=gwmi Win32_OperatingSystem).ConvertToDateTime($os.lastbootuptime)).TotalDays, 2)

В основном в сети предлагается запустить «net stats srv» и посмотреть строку «статистика после» («statistics since»), впрочем и вариантов на PowerShell тоже хватает. Кстати, можно сделать ещё и такой вариант:

[math]::round(((Get-Date) - (((net stats srv)[3] -split ' ')[2,3] -join ' ' | Get-Date)).TotalDays, 2)

Почти LISP. И всё-таки мне очень нравится PowerShell.

13 комментариев

Гора Тахталы

Поехали сегодня утром подниматься на фуникулёре на гору Тахталы — это гора около города Кемер, высота над уровнем моря — 2365 метров. Канатная дорога на эту гору вторая по длине в мире.

На вершине горы, конечно, лежит снег, там кристально чистый воздух. Сколько там до Кемера? Думаю, несколько километров, а город видно отлично. Правда иногда гору заволакивает облаками, но нам повезло, мы такое увидели только когда собрались обратно.

Скалистая гора, скрытая в густом тумане, видна сквозь ветви сосны на переднем плане; внизу — камни и кустарники.
Горный склон с хвойными деревьями и скалами, окутанный густым туманом и облаками.
Пассажиры в салоне общественного транспорта, вид со спины; человек в белой стёганой куртке на переднем плане, красный интерьер, окна и монитор на потолке.
Заснеженный горный склон с выступающими скалами на переднем плане, на заднем плане — облака, закрывающие долину и отдалённые холмы.
Снежная горная вершина на переднем плане, частично скрытая плотными облаками, за которыми виден лесистый склон другой горы.
Заснеженные горные вершины, частично скрытые густым туманом и низкими облаками, с видимыми скалистыми участками на склонах.
Красная горнолыжная кабина поднимается по канатной дороге над заснеженными скалистыми склонами горы в пасмурную погоду.
Мужчина в чёрной куртке смотрит на сенсорный экран управления подъёмником Frey AG Stans с цифрами и кнопками, установленный в красной раме.
Высокая металлическая опора канатной дороги на фоне туманных гор и деревьев, рядом — фрагменты современных зданий с белыми фасадами и жалюзи.

2 комментария

Несколько наблюдений о жизни в Турции

В Турции встречаются поделия российского автопрома. Причём, не какие-нибудь Нива-Шевроле, а самые что ни на есть ВАЗ-2109. Гид объяснил нам, что в Антальи бывает очень жарко — иногда 45—50°С, а у российских машин хороший движок (он так сказал!) — запускается даже при такой жаре.

Мне кажется, в Турции люди очень хорошо водят. Мы за всё время не видели ни одной аварии или помятой машины (что не значит, что этого тут не бывает), наш гид-водитель показал настоящий класс — в исторической части Антальи, где одна машина проезжает еле-еле, он ехал на приличной скорости, да ещё и задом в некоторых местах. При этом правила, бывает, нарушают — проезжают на красный свет, не пристёгиваются, подрезают.

На одном недостроенном здании заметил амулет от сглаза, знаете, такой традиционный — синий «глаз» с цветными кольцами неправильной формы внутри.

В торговом центре с удивлением рассматривал невиданное в наших краях чудо (а может кто-то знает, где у нас это можно купить?) — электрочайник с заварочным чайником наверху. Их там было много разных видов, целый ряд, но сфотографировать удалось только один, персонал магазина ревностно следил за мной, чтобы я ничего не сфотографировал.

Чайник с заварочным чайником (23.44КиБ)

13 комментариев

Памуккале

Так как погода в Лара Сиде, где мы отдыхаем, нас не порадовала, то вчера, в пять утра мы уехали за несколько сотен километров, в старинный город Памуккале, часть всемирного наследия ЮНЕСКО.

Памуккале — название турецкое, в переводе означает «хлопковая крепость», по одной из версий, название было дано из-за белых сталактитов, которые образуются минеральными источниками в этой местности, издалека они действительно напоминают нити хлопка.

Историческое название — Гиераполь («священный город» с греческого), город был построен во втором тысячилетии до нашей эры и был разрушен землетрясением в 1534.

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

Руины древних каменных построек с кирпичными арками на фоне туманных гор и зелёной растительности.
Руины древнего каменного сооружения с арочными проёмами на фоне туманного холма, вид из-за обветшалой каменной стены.
Руины древнего города с сохранившимися каменными колоннами и стенами на фоне пальмовой рощи под пасмурным небом.
Руины древнего города с каменными плитами, обломками колонн и группой туристов на фоне зелёного поля и туманного неба.
Руины древних каменных построек на фоне холмов, перед ними — дерево без листьев, скамейки и фонтанчик на мокром от дождя газоне.
Руины древнего города с обломками колонн, каменными стенами и ступенями на фоне серого неба и зелёной травы.
Древние каменные руины амфитеатра на зелёном склоне холма под пасмурным небом, с ветвями дерева на переднем плане.
Группа туристов изучает древний каменный саркофаг с надписями на зелёном холме под пасмурным небом.

Гордость исторической части Памуккале (рядом деревня с тем же названием) — амфитеатр на 15 тысяч зрителей, он исключительно хорошо сохранился, хотя, конечно, его ещё нужно реставрировать.

Руины древнего амфитеатра из светлого камня с арочными проёмами и каменными ступенями, окружённые зелёным холмом и разбросанными обломками под пасмурным небом.
Античный каменный амфитеатр с полукруглыми рядами сидений, деревянными перилами и несколькими посетителями на фоне туманного пейзажа.
Вид на античный театр с каменными рядами зрительских мест и сценой, частично покрытой металлическими лесами для реставрации, на фоне зелёных холмов и развалин.

Одна из причин, по которой туристы едут в Памуккале (и это та же причина, почему этот старинный город вообще появился) — горячие источники, которые выходят на поверхность в этой местности, «бассейн Клеопатры». Температура — около 36°С, очень комфортная, мы купались около часа. Особенно интересно, что в одном месте источника вода насыщена огромным количеством пузырьков газа, на манер шампанского.

Вода чистая, прекрасно видно дно, глубина, преимущественно, небольшая (около 1,5 метра), но в одном месте доходит до 4,5. Забавный контраст — купаешься в источнике, наслаждаешься теплом, а на мостике округляют глаза наглухо одетые японцы, спрашивающие «is it warm?», погода-то солнцем не балует.

А ещё минеральные соли горячего источника покрывают окрестные горы красивым белым налётом, издалека это похоже на снег. К слову, в Турции снег в горах явление частое, но нам этом месте не та высота гор. Воды из источника не хватает на всё это белое великолепие, поэтому воду пускают поочерёдно, то на одну террасу, то на другую.

Вид на белые известковые террасы с бирюзовыми бассейнами и парящим паром, где туристы гуляют по тропинкам на фоне зелёного холма.
Туристы гуляют босиком по белым террасам с голубой водой, испаряющейся в тумане, на фоне холмов и деревьев в пасмурный день.
Белые мраморные террасы с бассейнами воды на фоне туманной долины и гор
Туристы гуляют и сидят у кромки воды на белых террасах Памуккале, некоторые омывают ноги в ручьях, другие фотографируют пейзаж.
Люди купаются в бассейне с прозрачной водой, на заднем плане — кафе под навесом и пальма.

Жаль, не смогли посетить музей на территории — по понедельникам он закрыт.

Пара наблюдений о турецких дорогах. Местность, где мы находимся, по природе сильно, что можно спутать, напоминает Крым, только чуть более развитый. На трассах есть две интересные вещи.

Первое — специальные трёхцветные линейки, установленные по краям дороги. По ним можно оценить толщину сугроба, завалившего дорогу (иногда это случается — на перевалах в горах бывает настолько сурово, что русские зимы центрального района нервно курят в сторонке).

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

2 комментария

Средиземное море

Волны с белой пеной набегают на песчаный пляж под пасмурным небом; слева виден деревянный пирс, в воде — красные буи.
Волна с белой пеной разбивается о песчаный берег под пасмурным небом, вдали видны красные буи на воде.
Мощные белые волны разбиваются о берег на фоне серого неба и спокойного моря, создавая пенную пену на переднем плане.
Мощная волна с белой пеной разбивается о берег на фоне деревянного пирса и пасмурного неба.
Мощные волны с белой пеной накатывают на песчаный берег под пасмурным небом, на горизонте виден деревянный пирс.
Мощные волны разбиваются о берег на фоне разрушенного причала под пасмурным небом.
Мощные белые волны разбиваются у берега под пасмурным небом, справа видна часть деревянного пирса, уходящего в море.
Мощная волна с белой пеной разбивается у берега на фоне мрачного неба с тяжелыми облаками.

Вот оно какое — Средиземное море! Погода так себе, примерно +15, иногда дождь. Решили, что будем ездить на экскурсии и ходить в хамам (хамам входит в стоимость). Зато отель отличный и кормят хорошо, в любое время суток есть что поесть и всё очень качественное.

Кстати, живём мы всё же не в самой Анталье, а недалеко от Лара Сиде. До Антальи ходит 105 автобус, проезд стоит около доллара.

Татарский пригодился почти сразу, мы съездили в торговый центр «Özdilek», там и в маршрутном автобусе никто не говорил по-английски или русски, пришлось прибегать к своему скудному татарскому (впрочем, в магазине «Colin’s» всё же нашёлся паренёк, говоривший по-английски лучше меня).

Моя подруга Лена рассказала мне, что есть такая поговорка «счастлив тот, кто видел пять морей». Мы с женой видели Чёрное, Красное, Мёртвое, Средиземное и, если Индийский океан считается за море, то получается как раз пять.

13 комментариев

Турецкий язык

Мы сегодня в Анталью летим, сидим в Домодедове, ждём вылета (он будет в пять утра), регистрацию и контроль прошли. Пока ждём, я скачал русско-турецкий разговорник и слушаю слова. В турецком оказалось много знакомых слов.

Мы с женой родились в Татарстане, а татарский и турецкий языки родственники. Хотя мы оба очень плохо знаем татарский, тем не менее, кое-какие слова понимаем. Например, поторговаться на турецком, похоже сможем. Сравните счёт от одного до десяти на татарском и турецком.

Татарский: бер, ике, өч, дүрт, биш, алты, җиде, сигез, тугыз, ун. Турецкий: bir, iki, üç, dört, beş, altı, yedi, sekiz, dokuz, on.

8 комментариев

Башорг такой башорг

flapenguin: Знаешь, что у моей племянницы написано в учебнике по геометрии?
flapenguin: Треугольник называется прямоугольным, если _хотя бы один_ из углов равен 90 градусам.
flapenguin: Хотя бы один бл#дь. Fuck you, Pythagoras.

Сферический треугольник с прямыми углами, образованный дугами больших кругов на сфере.

На Башорге, как обычно, такие математики и профессионалы…

С днём математика вас!

35 комментариев

С первым апреля!

Поздравляю с первым апреля (35.96КиБ)

Сегодня решил поздравить коллег с первым апреля. К сожалению, QR-код, который я нарисовал сначала красным маркером, не распознавался на «Андроидах», поэтому пришлось перекрасить его в чёрный.

6 комментариев

Алиас для /etc/init.d/… restart

Устал я писать каждый раз строки вида «sudo /etc/init.d/nginx restart» для перезапуска многочисленных серверов, поэтому сделал себе короткий алиас. Я бы не упомянул об этом, если бы не два отличия.

Во-первых, алиас я сделал не через команду «alias», так как не знаю как для неё подставить параметр не в конец, а в произвольное место (если это вообще возможно), во-вторых, я сделал добавление для автодополнения в bash (если кто-нибудь знает ссылку на хороший мануал по этой теме, напишите в комментариях, пожалуйста).

Вот что получилось (у меня это в .bashrc):

rst () { command sudo /etc/init.d/$@ restart; }

function _rst() {
    local cur

    cur=${COMP_WORDS[COMP_CWORD]}
    if [ 1 -eq ${COMP_CWORD} ]; then
        COMPREPLY=( $(compgen -f -- /etc/init.d/$cur | xargs -n1 basename -- ) )
    else
        COMPREPLY=()
    fi
}

complete -F _rst rst

16 комментариев

Магия гитхаба

Прочувствовал магию «Гитхаба». Я сейчас дописываю один плагин для phpBB (это популярный движок форумов), в процессе написания нашёл ошибку в плагине automod (плагин, который нужен чтобы ставить другие плагины).

Поскольку automod выложен в git-репозитории на github, всё что нужно — зарегистрироваться, нажать кнопку «fork», склонировать репозиторий себе на машину, исправить ошибки, сделать commit/push и отослать pull request.

Авторы automod, когда увидят мой запрос, сделают merge с моей новой веткой и мои изменения помогут сделать мир лучше.

Очень просто и круто.

7 комментариев

bo.lk

А домен bo.lk до сих пор свободен. Стоит 25000 шриланкийских рупий (плюс налог 12%), получается около $250. Не, покупать не буду, но имя хорошее.

9 комментариев