вторник, 29 июля 2014 г.

Как получить сообщение последнего комита в SVN

Если вам понадобиться сообщение последнего комита в SVN это можно сделать следующей командой

$ PROJECT_DIR="/Users/vitaly/Development/MyProject"
$ svn up
$ svn log ${PROJECT_DIR} --xml --with-all-revprops -r committed | xmllint --xpath //msg/text\(\) --format -

Для этого у вас в контексте должна быть переменная PROJECT_DIR в которой указан путь к проекту, например PROJECT_DIR="/user/vitaly/development/MyProject".

Сначала делаем update, потом берем последний комит. Данные вернуться в виде xml, в котором будет тэг msg. Использую встроенную утилиту xmllint ищем через xpath тэг msg и берег текст внутри тэга.

svn up - обязательно перед svn log, а то можете получить пустой тэг в ответе к svn log.

вторник, 22 июля 2014 г.

Как добавить в svn файлы с "@" с командной строки


Если кто-то работал с svn из командной строки на mac, то возможно вы сталкивались с проблемой, что svn не понимает файлы с собакой "@".

Например, если вы хотите добавить файл menu-icon@2x.png выполнив команду svn add menu-icon@2x.png получите

svn add menu-icon@2x.png 
svn: warning: W155010: '........FILE PATH..../menu-icon' not found
svn: E200009: Could not add all targets because some targets don't exist
svn: E200009: Illegal target for the requested operation

Это решается добавлением "@" к название файла

vitaly$ svn add menu-icon@2x.png@ 
A  (bin)  menu-icon@2x.png
Narnia:Slice vitaly$


Допустим у вас есть целая папка с такими файлами

vitaly$ svn status
A       .
?       Splash-568h@2x.png
?       Splash@2x.png
?       background-568h@2x.png
?       background@2x.png
?       login-icon@2x.png
?       loupe-icon@2x.png
?       menu-icon@2x.png
?       password-icon@2x.png
?       reports-icon@2x.png
?       settings-icon@2x.png                                                               


По одному добавлять не удобно... Используем то, что уже знаем + pipe'ы и пишем следующий набор команд

vitaly$ ls | awk '{print $1"@" }' | xargs svn add
A  (bin)  Splash-568h@2x.png
A  (bin)  Splash@2x.png
A  (bin)  background-568h@2x.png
A  (bin)  background@2x.png
A  (bin)  login-icon@2x.png
A  (bin)  loupe-icon@2x.png
A  (bin)  menu-icon@2x.png
A  (bin)  password-icon@2x.png
A  (bin)  reports-icon@2x.png
A  (bin)  settings-icon@2x.png

ls - показывает список файлов в текущей папке
awk - сканер по патерну, аля regex. То, что в кавычках это команда которую мы выполняем если паттерн подошел. $1 будет название файла. "@" - то, что мы добавляем к названию файла
xargs - выполняем команду.

Таким же образом можно использовать и svn revert и тп.


понедельник, 1 июля 2013 г.

Как разбить контент по страницам перед window.print

Допустим у вас есть страница, которая поддерживает печать с браузера через window.print() и на этой странице 1 график и одна таблица.
Для того чтоб график был на 1 странице а таблица на 2 нужно вставить между элементами элемент-разделитель со стилей style="page-break-after: always" :


content here
"
" " content here

Полная статья здесь

пятница, 31 мая 2013 г.

Как отрендерить ASP.NET MVC страницу в строку

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

Как ?

public class ViewRenderer
    {
        public static string RenderView(string viewName, ControllerContext controllerContext, object model)
        {
            ViewEngineResult view = ViewEngines.Engines.FindView(controllerContext, viewName, null);
            controllerContext.Controller.ViewData.Model = model;

            using (var writer = new StringWriter())
            {
                ViewContext context = new ViewContext(
                    controllerContext,
                    view.View,
                    controllerContext.Controller.ViewData,
                    controllerContext.Controller.TempData,
                    writer);

                view.View.Render(context, writer);
                writer.Flush();

                return writer.ToString();
            }
        }
    }

Как пользоваться ?
Передаем название view, которое хотим отрендерить, ControllerContext у вас есть, это свойство в вашем контролере. Последний параметр - ваш класс модель с данными если нужно.

string html = ViewRenderer.RenderView("YTDClientReport", ControllerContext, YourViewModelInstance);

вторник, 21 мая 2013 г.

Как применить свой ttf шрифт в iOS приложении

Возможно вам приходилось или прийдется использовать нестандартные шрифты, которых нет в iOS.

Показываю как:
1. Добавляем шрифт в папку Supporting Files. В моем случае это AG_Friguer.ttf


2. Открываем plist файл и добавляем следующий ключ "Fonts provided by application". Добавляем элемент в этот ключ - название файла с расгирением шрифта, это важно, не имя шрифта, а так как называется файл, который вы добавили в Supporting Files.

3. Для того, чтобы использовать шрифт вам нужно знать его имя. Имя можно узнать через утилиту Font Book на маке. Запускаем ее, добавляем шрифт, выбираем Install Checked.


Далее смотрим имя шрифта. Как видим настоящее название AGFriquer. Именно это название мы будем использовать в себя в коде.


4. Использовать не сложно

        _topicTitleLabel.font = [UIFont fontWithName:@"AGFriquer" size:18.0f];

5. Результат