Pull to refresh

как эффективно скрестить jira и svn

Reading time 1 min
Views 9.3K
Website development *
Исходная задача заключается в том, что мы хотим связать комиты в SVN с тикетами JIRA, причем:
1. Не должны пропускаться комиты без реально существующих тикетов в Jira
2. Непосредственно в Jira должна быть возможность посмотреть что (кто, когда...) комителось в SVN к контексте конкретного тикета.

Как оказалось не так просто нагуглить инфу на эту тему. Есть куча решений jira pre-commit hooks, но только одно (может и есть другие?!, но я не нашел) позволяет решить задачу «реально существующих тикетов в Jira». И так решения…
Читать дальше →
Total votes 6: ↑4 and ↓2 +2
Comments 3

WinAPI хук, который подменяет обращения к реестру

Reading time 1 min
Views 1.5K
Lumber room
Пытаясь привести любую программу к portable-варианту чаще всего сталкиваюсь с проблемой реестра. Многие любят сохранять там свои настройки что делает их невыносимыми не переносимыми (примеры — Last.fm, ProcExp, etc)

Возникла идея — написать лаунчер, который будет транслировать обращения к определенной ветке в реестре в запись/чтение из файла (например .ini)

Может быть такая программа уже существует? Гугление ни к чему не привело. Можно попробовать самому, но знаний WinAPI явно не хватит. Может у кого-то есть какие-то наработки в этом направлении?

Upd: YasonBy подсказал готовые решения: JauntePE, BoxedApp. Будем пробовать!
Total votes 12: ↑11 and ↓1 +10
Comments 32

Делаем файлы сценариев исполняемыми

Reading time 1 min
Views 2K
VIM *
По долгу службы часто приходится писать сценарии (shell scripts) для автоматизации рутинных задач. После сохранения файла каждый раз необходимо давать ему право на исполнение. Подобную задачу также можно автоматизировать непосредственно средствами редактора.

Открываем/создаем файл ~/.vimrc и вносим в него следующую строку:
au BufWritePost * if getline(1) =~ "^#!" | if getline(1) =~ "/bin/" | silent !chmod a+x | endif | endif
Приведенная директива проверяет первую строку сохраняемого файла и, если она начинается с "#!" и содержит "/bin/", присваивает последнему исполняемый атрибут.

Источник: shell-fu.
Total votes 28: ↑26 and ↓2 +24
Comments 16

Выполняем sudo при записи

Reading time 1 min
Views 6.6K
VIM *
В дополнение к предыдущей заметке "Делаем файлы сценариев исполняемыми"...

В практике системного администратора иногда случается так, что начинаешь править какой-либо сценарий, автоматизирующий процесс резервного копирования, например, а в конце концов выясняется, что не хватает прав на запись в данный файл, который, возможно, принадлежит пользователю root. Чтобы не сильно изворачиваться в подобной ситуации, сохранение изменений производим командой
:w !sudo tee %

Вопросы безопасности в данном случае находятся в рамках sudo.
Total votes 45: ↑42 and ↓3 +39
Comments 46

Help: будет ли работать хук клавиатуры Win32 под Win64?

Reading time 1 min
Views 929
Lumber room
Здравствуйте! Публикую пост от безысходности — никто из знакомых не подсказал, у самого Windows 32-битная, а Google даёт мусор. Итак…

Отладчик Builder 2010 подсказал мне: DLL, в котором устроен хук WinAPI, просто-напросто вставляется в адресное пространство каждой программы. В связи с этим возникают пара вопросов.

1. Будет ли работать 32-битный хук клавиатуры под 64-битной версией Windows?
2. Будет ли наоборот: 64-битный хук клавиатуры под 64-битной виндой, но в 32-битных программах? Если нет — как корректно сделать двойной хук?
Total votes 15: ↑6 and ↓9 -3
Comments 12

Перехват изменения значения атрибута у DOM элемента средствами Javascript

Reading time 1 min
Views 599
Lumber room
Пытаю решить задачу:

Вызвать событие при изменении атрибута disabled у Input'a.

Хотя на самом деле интерес в перехвате изменения любого атрибута,
а в случае с disabled="disabled" — перехват создания и уничтожения этого атрибута.

Решать такую задачу setInterval не рационально. Если таких элементов будет 100,
то тормоза неизбежны. Может кто-то уже справился с этой проблемой?

UPD: Одно из возможных решений
Total votes 4: ↑2 and ↓2 0
Comments 5

Решаем проблему вызова события onresize в ИЕ пока не произошло событие onload

Reading time 4 min
Views 494
Lumber room
В Internet Explorer есть странная вещь (одна из многих), это вызов события onresize тогда и только тогда, когда документ будет полностью загружен. Данная проблема есть в IE 6, 7, 8. Возникло желание побороть сие безобразие и сделать это довольно прозрачно, дабы можно было вешать обработчики не задумываясь что вызваться они могут гораздо позже, чем ожидалось.

Использую jQuery и его внутренний механизм специальных событий, дабы на время, пока документ загружается, можно было использовать альтернативу onresize, а после все вернуть на свои места.

Дабы не описывать механизм специальных событий приложу ссылку

а теперь собственно код:
Читать дальше →
Total votes 5: ↑5 and ↓0 +5
Comments 0

Автоматизация создания соответствий исполняемых файлов исходным кодам в GIT

Reading time 2 min
Views 2.5K
Git *
Имея программный проект с компилируемым языком программирования возникает задача имея исполняемый файл определить из каких исходных кодов он был собран. В данной статье мы опишем как автоматизировать добавление коммита в исполняемые файлы и как по нему в дальнейшем получить исходный код.
Читать дальше →
Total votes 10: ↑8 and ↓2 +6
Comments 7

SVN hooks: изменение комментария к ревизии

Reading time 3 min
Views 20K
Version control systems *
Не секрет, что по умолчанию изменение текста комментария к ревизии в SVN не разрешено. Пост предназначен для тех, кто хочет сделать это возможным, но не знает как.
заодно почитаем про хуки
Total votes 30: ↑25 and ↓5 +20
Comments 19

Создание плагинов для Redmine

Reading time 4 min
Views 16K
Ruby on Rails *
Sandbox
Процесс создания плагинов для Redmine очень слабо документирован. Задача данной статьи отчасти восполнить этот пробел, рассказав про успешный опыт создания небольшого, но полезного плагина. Важное примечание. Redmine написан на Ruby on Rails, вам нужно быть к этому готовым, если вы собрались делать свой плагин :)
Читать дальше →
Total votes 9: ↑9 and ↓0 +9
Comments 2

Групповая разработка сайтов через git — автоматическое создание/удаление сайтов из git-бранчей

Reading time 6 min
Views 22K
Website development *Git *
Tutorial
В этой статье я расскажу, как создать групповую среду разработки сайтов через git с помощью git-хуков. Статья рассчитана на опытных системных администраторов, я лишь опишу алгоритм.
Многое на эту тему уже обсуждалось, а я добавлю, как автоматически создавать или удалять сайты при создании/удалении бранчей в git-репозитории. Такая возможность может пригодиться, к примеру, если над разными частями сайта работают разные программисты и нужны разные площадки (бранчи). После основной разработки и тестирования выполняется merge в основную ветку, а бранчи и тестовые сайты удаляются или архивируются.

Читать дальше →
Total votes 45: ↑41 and ↓4 +37
Comments 14

Разрегистрация оконного крюка

Reading time 3 min
Views 46K
Development for Windows *
Sandbox

Холмс. А скажите, друг мой Ватсон, доводилось ли вам разрегистрировать оконный крюк, в особенности глобальный?

Ватсон. Хм… что же может быть проще, дорогой Холмс.
    ::UnhookWindowsHookEx( hhookMy);

Х. Не скажите, Ватсон, не скажите. После этого вызова DLL-модуль, содержащий функцию крюка, по-прежнему загружен во все процессы, в которые был загружен. Система выполняет выгрузку этого DLL лишь спустя некоторое время. А именно в тот момент, когда через очереди сообщений всех нитей (имеющих таковую очередь) пройдёт хотя бы по одному оконному сообщению. И так для каждого процесса на рабочем столе.

В. Вот, ничего себе!
Читать дальше →
Total votes 129: ↑110 and ↓19 +91
Comments 61

Делаем простое удержание курсора в окне Warcraft 3

Reading time 5 min
Views 19K
C++ *
Sandbox
Приветствую тебя, читатель. У меня есть хобби — это старый добрый Warcraft 3. На хабре уже был цикл статей, посвященный этой замечательной игре. Хочу поделиться с комьюнити одной утилитой, пригодившейся мне при проведении стримов. Всех заинтересовавшихся прошу пройти под кат.
Читать дальше →
Total votes 12: ↑11 and ↓1 +10
Comments 9

Использование PhpStorm для разработки под WordPress

Reading time 4 min
Views 42K
JetBrains corporate blog WordPress *PHP *
Tutorial
Несколько недель назад в PhpStorm 8 (доступной в рамках программы раннего доступа / Early Access Program) была добавлена поддержка популярной CMS WordPress. Свежий билд PhpStorm 8 EAP можно загрузить бесплатно прямо сейчас, так что все описанное в данном обучающем материале уже можно попробовать, а мы в свою очередь будем благодарны обратной связи в нашем багтрекере.

Исчерпывающую информацию о поддержке WordPress в PhpStorm можно найти в англоязычном материале WordPress Development using PhpStorm. В этом посте мы расскажем о самых важных функциях, включенных в поддержку WordPress в PhpStorm.

На данный момент поддержка включает:
  • интеграцию PhpStorm с WordPress для существующих проектов и новых плагинов;
  • настройку рабочей среды для разработки под WordPress;
  • настройку стандартов оформления кода WordPress и следование им;
  • поддержку хуков (включая автодополнение для параметров регистрирующих функций; навигацию от функций, регистрирующих хуки, к вызовам хуков; и другие функции);
  • поиск документации на WordPress.org прямо из редактора;
  • интеграцию с инструментами командной строки WordPress WP-CLI.

Читать дальше →
Total votes 36: ↑33 and ↓3 +30
Comments 16

Расширяем функциональность платформы для интернет-магазинов ReadyScript

Reading time 10 min
Views 5K
ReadyScript lab. corporate blog CMS *Website development *
Tutorial
Сегодня каждый заказчик желает видеть в своем интернет-магазине уникальные фишки. Это могут быть интересные накопительные скидки, реферальные программы, нестандартные фильтры для поиска определенных товаров, и т.д. Все это требует индивидуальных доработок функциональности CMS. В этой статье мы расскажем, какие возможности предлагает ReadyScript для создания индивидуальных решений.


Читать дальше →
Total votes 16: ↑11 and ↓5 +6
Comments 2

Разбираемся с установкой и загрузкой Linux на примере ArchLinux

Reading time 17 min
Views 121K
Configuring Linux *System administration *
Sandbox
Сначала мы установим Archlinux и превратим его в загрузочный сервер. Прямо оттуда подготовим новую компактную систему, в которую добавим минимальное графическое окружение и самый необходимый функционал (на примере Firefox). Научим нашу систему загружаться по сети даже на компьютерах с UEFI. Затем полностью переведём её в режим «только для чтения» (сделаем «живой»), что позволит нам использовать систему одновременно хоть на пол сотне разномастных компьютеров с одним единственным загрузочным сервером. Это всё будет работать даже внутри дешёвой 100-Мб сети, которую мы дополнительно «разгоним» в пару раз.

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

Постараюсь без долгих рассуждений пояснять происходящее, иногда забегая немного вперёд, но впоследствии обязательно раскладывая всё по полочкам. Чтобы у вас вообще не возникало проблем с пониманием, предполагаю, что вы уже работали с каким-нибудь готовым дистрибутивом Linux, пробовали писать простые скрипты с помощью nano или другого текстового редактора. Если вы новичок в ArchLinux, то узнаете много нового, а если «старичок», то узнаете поменьше, но, надеюсь, что в любом случае вы ещё сильнее полюбите Linux.

Информации оказалось очень много. И по устоявшейся голливудской традиции впереди вас ждёт сериал в нескольких частях:
продолжение;
окончание.

Сейчас мы установим Archlinux в VirtualBox, который можно будет клонировать и запускать практически на любом компьютере с legacy BIOS без каких-либо дополнительных настроек. Между делом мы познакомимся с основными приёмами работы с systemd, а также узнаем как его использовать для запуска произвольных служб и программ во время загрузки. Ещё мы увидим, какие этапы проходит Linux при загрузке, и напишем собственный обработчик (hook), который поместим в initramfs. Не знаете что такое initramfs? Тогда заходите под кат.
Читать дальше →
Total votes 11: ↑6 and ↓5 +1
Comments 6

Перехват системных вызовов Linux с помощью LSM

Reading time 9 min
Views 20K
Information Security *C *Development for Linux *
Sandbox


Недавно поступили такие задачи: собрать ядро Linux, написать для него модуль и с его помощью перехватывать системные вызовы. И если первые две я выполнил без проблем, то в процессе выполнения третьей у меня возникло впечатление, что работа с системными вызовами вышла из моды лет 10 назад.

Периодически я находил в интернете статьи, которые были близкими к тому, что я искал, некоторые были даже очень хорошо написаны, но у всех был существенный недостаток — они устарели.
Читать дальше →
Total votes 56: ↑54 and ↓2 +52
Comments 42

Изменение содержимого Web.config в runtime при отладке в Visual Studio и IISExpress

Reading time 8 min
Views 5.1K
.NET *
Технологически в этой статье ничего нового, просто еще одно полезное применение winapi-хуков для решения специфичной проблемы.

При работе с веб-проектами в Visual Studio существует одна неприятная мелочь — при использовании в процессе разработки нескольких бранчей, каждый из которых должен использовать свою копию окружения (например базу данных, или какие то внешние сервисы), возникает проблема с конфигурационными файлами в момент отладки — IISExpress использует только основной web.config в папке проекта, где обычно всякие connection strings содержат значения по умолчанию и где нет никаких специфичных для бранча настроек, и никаких трансформаций при запуске к нему не применяется. Можно конечно принудительно либо автоматически, либо вручную, применять трансформации к web.config, но во-первых измененный файл будет постоянно висеть в pending changes, что создает риск коммита нежелательных изменений, которые потом попадут в другие бранчи, а во-вторых это создает массу неудобств при его редактировании, поскольку перед коммитом каких-либо изменений в конфигурационном файле такие трансформации придется вручную убирать.

Рассмотрим как этого избежать.
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Comments 11

Git: много хуков полезных и разных

Reading time 4 min
Views 19K
DevOps *
Статья является вольным переводом вот этого материала. Любителям длинных и заумных первоисточников можно сразу читать оригинал.

Когда перед нами ставится задача при изменении кодбейса, например, в Github-репозитории выполнить пересборку/перезапуск какого-нибудь приложения на каком-то нашем окружении, то первое, что приходит на ум в качестве возможного триггера такой пересборки, это предоставляемый тем же гитхабом механизм веб-хуков: при наступлении какого-либо события с нашим удаленным репозиторием (т.к. появление нового коммита в какой-нибудь его отслеживаемой ветке) гитхаб задействует соответствующий веб-хук и «дернет» указанный в его настройках сервис, который и запустит процесс пересборки/перезапуска нашего приложения. Это стандартный широкоиспользуемый и простой механизм для таких случаев, все так делают, и все такое…

Но что, если наше приложение живет на хосте, доступ к которому по каким-то причинам гитхабу не положен? Например, хост находится в закрытой сети или за NAT'ом и недоступен из интернета?
Читать дальше →
Total votes 15: ↑14 and ↓1 +13
Comments 4