Не могу удержать и не поделиться моими впечатлениями типа "Вау! Это круто". Столкнулся с проектом где очень активно используют скрипты ant. Сказать, что они БОЛЬШИЕ, ничего не сказать. Там наверное есть все! Но особенно нравится скрипт, который "сбрасывает" орг до состояния репозитория. Т.е. сначала с орга сносится ВСЕ! Данные, метаданные. За исключением небольших мелочей вы получаете чистый дев орг, а потом проект заново заливается, настраивается и создается минимальный набор тестовых данных. Это супер! Скрипт работает около 5 минут, зато я могу быть уверен, что чтобы я не натворил, всегда можно вернуться к актуальной версии из репозитория. Это, кстати, очень полезно при переключениями между ветками системы контроля версий.
Не могу удержать и не поделиться моими впечатлениями типа [b]"Вау! Это круто"[/b].
Столкнулся с проектом где очень активно используют скрипты ant.
Сказать, что они БОЛЬШИЕ, ничего не сказать.
Там наверное есть все! Но особенно нравится скрипт, который "сбрасывает" орг до состояния репозитория.
Т.е. сначала с орга сносится ВСЕ! Данные, метаданные. За исключением небольших мелочей вы получаете чистый дев орг, а потом проект заново заливается, настраивается и создается минимальный набор тестовых данных.
Это супер! Скрипт работает около 5 минут, зато я могу быть уверен, что чтобы я не натворил, всегда можно вернуться к актуальной версии из репозитория. Это, кстати, очень полезно при переключениями между ветками системы контроля версий.
Так что, УЧИТЕ Ant!!!
Очень часто спрашивают на собеседованиях как ant Работает, мигратион тулз.
[quote="Dmitry Shnyrev"]Не могу удержать и не поделиться моими впечатлениями типа [b]"Вау! Это круто"[/b].
Столкнулся с проектом где очень активно используют скрипты ant.
Сказать, что они БОЛЬШИЕ, ничего не сказать.
Там наверное есть все! Но особенно нравится скрипт, который "сбрасывает" орг до состояния репозитория.
Т.е. сначала с орга сносится ВСЕ! Данные, метаданные. За исключением небольших мелочей вы получаете чистый дев орг, а потом проект заново заливается, настраивается и создается минимальный набор тестовых данных.
Это супер! Скрипт работает около 5 минут, зато я могу быть уверен, что чтобы я не натворил, всегда можно вернуться к актуальной версии из репозитория. Это, кстати, очень полезно при переключениями между ветками системы контроля версий.
Так что, УЧИТЕ Ant!!![/quote]
Очень часто спрашивают на собеседованиях как ant Работает, мигратион тулз.
Ну насколько я знаю скрипты от Financial Force это делают.
Ну насколько я знаю скрипты от Financial Force это делают.
Кстати да, в основе лежат эти скрипты (так в комментах написано), только они еще допилены по ходу. Подробности потом как-нибудь расскажу, я пока толком не разобрался что там да как.
[quote="wilder"]Ну насколько я знаю скрипты от Financial Force это делают.[/quote]
Кстати да, в основе лежат эти скрипты (так в комментах написано), только они еще допилены по ходу.
Подробности потом как-нибудь расскажу, я пока толком не разобрался что там да как.
Все равно, даже с учетом того что это Financial Force масштабы поражают. Это же надо такое придумать! Моя вера во могущество ant только укрепилась.
[quote="Dmitry Shnyrev"]Все равно, даже с учетом того что это Financial Force масштабы поражают.
Это же надо такое придумать! Моя вера во могущество ant только укрепилась.[/quote]
Он настолько крут что может легко заблокировать орг. Могу скинуть инфу как это делать:)
[quote="Sergey Prichepo"]Очень часто спрашивают на собеседованиях как ant Работает, мигратион тулз.[/quote]
А что там спрашивать - SF Metadata API
Спрашивать, то может и спрашивают, но я редко встречал людей которые в нем разбираются. Так что за человеком, которые знает Migration Tools (ant) или тот же Metadata API (а может и Tooling API) компании должны бегать, а не он на собеседованиях отвечать на глупые вопросы. Такой человек реально сможет организовать сложный процесс разработки в том числе и всеми любимый CI.
Спрашивать, то может и спрашивают, но я редко встречал людей которые в нем разбираются.
Так что за человеком, которые знает Migration Tools (ant) или тот же Metadata API (а может и Tooling API) компании должны бегать, а не он на собеседованиях отвечать на глупые вопросы. Такой человек реально сможет организовать сложный процесс разработки в том числе и всеми любимый CI.
Я все равно всем советую использовать Gradle вместо Ant.
[quote="Gres"]Я все равно всем советую использовать Gradle вместо Ant.[/quote]
Можешь привести небольшой пример как выкачать метадату из орга?
Какие преимущества от использования Gradle?
Также как в Ant
Отсутствие xml Groovy
На чем тебе удобнее писать скрипты? На xml, или на скриптовом языке?
[quote="Dmitry Shnyrev"]Можешь привести небольшой пример как выкачать метадату из орга? [/quote]
Также как в Ant
[quote="Dmitry Shnyrev"]Какие преимущества от использования Gradle?[/quote]
Отсутствие xml
Groovy
На чем тебе удобнее писать скрипты?
На xml, или на скриптовом языке?
Не совсем понял - сорри пока просто не занимался этой темой поэтому вопросы может и ламерские, но в ant есть специальный плагин - в Gradle тоже есть что-то для Salesforce?
[quote="Gres"]Также как в Ant [/quote]
Не совсем понял - сорри пока просто не занимался этой темой поэтому вопросы может и ламерские, но в ant есть специальный плагин - в Gradle тоже есть что-то для Salesforce?
Если быть точным, то для Ant есть не плагин, а набор кастомный тасок, которые описаны в ant-salesforce.jar/com/salesforce/antlib.xml
Суть в том, что в градле есть нативная поддержка Ant и мы можем использовать те же таски, только с человеческим синтаксисом.
[quote="Dmitry Shnyrev"][quote="Gres"]Также как в Ant [/quote]
Не совсем понял - сорри пока просто не занимался этой темой поэтому вопросы может и ламерские, но в ant есть специальный плагин - в Gradle тоже есть что-то для Salesforce?[/quote]
Если быть точным, то для Ant есть не плагин, а набор кастомный тасок, которые описаны в ant-salesforce.jar/com/salesforce/antlib.xml
Суть в том, что в градле есть нативная поддержка Ant и мы можем использовать те же таски, только с человеческим синтаксисом.
[code]
ant.retrieve(
username : sfUsername,
password : sfPassword,
serverurl : properties.getProperty('sf.serverurl'),
maxPoll : properties.getProperty('sf.maxPoll'),
retrieveTarget : properties.getProperty('sf.path.retrieveTarget'),
unpackaged : properties.getProperty('sf.path.packageXml')
)
[/code]
Суть в том, что в градле есть нативная поддержка Ant и мы можем использовать те же таски,
с этого и надо было начинать, а то пугаешь людей страшными названиями.
я прочитал одну книжку по Анту, и еще раз Force.com Migration Tool гайд.
вроде все понятно, буду пробовать.
Ант интересен как инструмент сам по себе. Вот например можно ли с его помошью прошерстить XML файлы в папке и заменить подстроку MyGenericCustomObject__c на ParticularProjectCustomObject__c? было бы вообще прекрасно.
[quote="Gres"]Суть в том, что в градле есть нативная поддержка Ant и мы можем использовать те же таски,[/quote]
с этого и надо было начинать, а то пугаешь людей страшными названиями.
я прочитал одну книжку по Анту, и еще раз Force.com Migration Tool гайд.
вроде все понятно, буду пробовать.
Ант интересен как инструмент сам по себе. Вот например можно ли с его помошью прошерстить XML файлы в папке и заменить подстроку MyGenericCustomObject__c на ParticularProjectCustomObject__c? было бы вообще прекрасно.
буду пробовать и изучать
Суть в том, что в градле есть нативная поддержка Ant и мы можем использовать те же таски,
с этого и надо было начинать, а то пугаешь людей страшными названиями.
я прочитал одну книжку по Анту, и еще раз Force.com Migration Tool гайд.
вроде все понятно, буду пробовать.
Ант интересен как инструмент сам по себе. Вот например можно ли с его помошью прошерстить XML файлы в папке и заменить подстроку MyGenericCustomObject__c на ParticularProjectCustomObject__c? было бы вообще прекрасно.
[quote="Den Brown"][quote="Gres"]Суть в том, что в градле есть нативная поддержка Ant и мы можем использовать те же таски,[/quote]
с этого и надо было начинать, а то пугаешь людей страшными названиями.
я прочитал одну книжку по Анту, и еще раз Force.com Migration Tool гайд.
вроде все понятно, буду пробовать.
Ант интересен как инструмент сам по себе. Вот например можно ли с его помошью прошерстить XML файлы в папке и заменить подстроку MyGenericCustomObject__c на ParticularProjectCustomObject__c? было бы вообще прекрасно.
буду пробовать и изучать[/quote]
А вот думаешь почему я перешел на Gradle?
А вот думаешь почему я перешел на Gradle?
потому что:
с человеческим синтаксисом.
а также возможно, что Gradle скрипт - это JAVA программа, которая позволяет работать с файлами, использовать бибилиотеки и прочее. но я не знаю, просто смотрю на пример Gradle кода выше и делаю догадки.
[quote="Gres"]А вот думаешь почему я перешел на Gradle?[/quote]
потому что:
[quote="Gres"]с человеческим синтаксисом. [/quote]
а также возможно, что Gradle скрипт - это JAVA программа, которая позволяет работать с файлами, использовать бибилиотеки и прочее. но я не знаю, просто смотрю на пример Gradle кода выше и делаю догадки.
Я вот не понимаю, у нас есть апекс, джаваскрипт, но нет нам нужно использовать еще и джаву для того, что бы развернуть код. Я вот планирую это изменить.
Я вот не понимаю, у нас есть апекс, джаваскрипт, но нет нам нужно использовать еще и джаву для того, что бы развернуть код. Я вот планирую это изменить.
Я вот не понимаю, у нас есть апекс, джаваскрипт, но нет нам нужно использовать еще и джаву для того, что бы развернуть код. Я вот планирую это изменить.
Меняй. Меня все устраивает! Для конкретного юзкейса должен быть свой инструмент - unix way. Для билдов - система сборки.
[quote="wilder"]Я вот не понимаю, у нас есть апекс, джаваскрипт, но нет нам нужно использовать еще и джаву для того, что бы развернуть код. Я вот планирую это изменить.[/quote]
Меняй.
Меня все устраивает!
Для конкретного юзкейса должен быть свой инструмент - unix way.
Для билдов - система сборки.
Ну я как раз и написал. Просто он пока не настолько мощный, и умеет делать только деплой, но тем не менее могу с уверенностью сказать что апекса вполне хватает.
Ну я как раз и написал. Просто он пока не настолько мощный, и умеет делать только деплой, но тем не менее могу с уверенностью сказать что апекса вполне хватает.
Я вот не понимаю, у нас есть апекс, джаваскрипт, но нет нам нужно использовать еще и джаву для того, что бы развернуть код. Я вот планирую это изменить.
[quote="wilder"]Я вот не понимаю, у нас есть апекс, джаваскрипт, но нет нам нужно использовать еще и джаву для того, что бы развернуть код. Я вот планирую это изменить.[/quote]
Я на питоне пишу скрипты :D
Ну я как раз и написал. Просто он пока не настолько мощный, и умеет делать только деплой, но тем не менее могу с уверенностью сказать что апекса вполне хватает.
[quote="wilder"]Ну я как раз и написал. Просто он пока не настолько мощный, и умеет делать только деплой, но тем не менее могу с уверенностью сказать что апекса вполне хватает.[/quote]
Я не вижу проблемы
Проблемы в apex в том, что "долгие" процессы нельзя использовать. Как apex справится с деплоем если например ant скрипт, который использует мой клиент пердит более 5 минут (хотя наверное там большая часть времени уходит на пересылку данных по моему быстрому каналу). но все равно, сидеть и думать что в какой-то отвественный момент у тебя закончится время и скрипт отвалится.
Проблемы в apex в том, что "долгие" процессы нельзя использовать. Как apex справится с деплоем если например ant скрипт, который использует мой клиент пердит более 5 минут (хотя наверное там большая часть времени уходит на пересылку данных по моему быстрому каналу). но все равно, сидеть и думать что в какой-то отвественный момент у тебя закончится время и скрипт отвалится.
А придумывать всякие костыли на батчах - это уже извращение.
[quote="Dmitry Shnyrev"]А придумывать всякие костыли на батчах - это уже извращение.[/quote]
А почему ты думаешь что это костыль ? И кстати работает очень хорошо.
Я знаю что это будет работать хорошо, но все равно программа в один поток как-то проще чем в асинхронную очередь.
[quote="Dmitry Shnyrev"]Я знаю что это будет работать хорошо, но все равно программа в один поток как-то проще чем в асинхронную очередь.[/quote]
Т.е. ты любишь, чтобы все выполнялось долго в одном потоке, а не асинхронно в разных?
Ну что значит люблю это проще чем заниматься еще распараллеливанием простого скрипта и контролем за потоками. Конечно элегантнее сделать асинхронно. Только в Salesforce батчи все равно не параллельно выполняются а по очереди просто асинхронно.
Ну что значит люблю :) это проще чем заниматься еще распараллеливанием простого скрипта и контролем за потоками.
Конечно элегантнее сделать асинхронно.
Только в Salesforce батчи все равно не параллельно выполняются а по очереди просто асинхронно.
Ну что значит люблю это проще чем заниматься еще распараллеливанием простого скрипта и контролем за потоками. Конечно элегантнее сделать асинхронно. Только в Salesforce батчи все равно не параллельно выполняются а по очереди просто асинхронно.
Я то имел ввиду настоящую параллельность. Просто к слову, на том же, тобой не любимом C#, это все делается элементарно. А как обстоят дела на питоне и иже с ним?
[quote="Dmitry Shnyrev"]Ну что значит люблю :) это проще чем заниматься еще распараллеливанием простого скрипта и контролем за потоками.
Конечно элегантнее сделать асинхронно.
Только в Salesforce батчи все равно не параллельно выполняются а по очереди просто асинхронно.[/quote]
Я то имел ввиду настоящую параллельность.
Просто к слову, на том же, тобой не любимом C#, это все делается элементарно.
А как обстоят дела на питоне и иже с ним?
Да нормально обстоят дела. Как и везде. В python есть специальные библиотеки для этого. В Go вообще эти возможности встроены в язык. Да и в Ruby должно быть. Не вижу чем может С# быть круче других современных полноценных языков
Да нормально обстоят дела. Как и везде.
В python есть специальные библиотеки для этого. В Go вообще эти возможности встроены в язык.
Да и в Ruby должно быть.
Не вижу чем может С# быть круче других современных полноценных языков :D
Не вижу чем может С# быть круче других современных полноценных языков
<trollMode> Тем, что параллельная обработка коллекции занимает 1 строчку кода. </trollMode>
[quote="Dmitry Shnyrev"]Не вижу чем может С# быть круче других современных полноценных языков [/quote]
<trollMode>
Тем, что параллельная обработка коллекции занимает 1 строчку кода.
</trollMode>
Ну до таких тонкостей в теме параллельного выполнения я не опускался. А что значит 1 строчка? т.е. до этой строчки все выполняется последовательно и после этой строчки все выполняется последовательно? А конкретно эта строчка (обработка коллекции) распараллеливается? Я больше думал что запускать в потоки нужно тяжелые задачи, чтобы они выполнялись параллельно, а потом просто собирать результат из всех потоков.
Ну до таких тонкостей в теме параллельного выполнения я не опускался.
А что значит 1 строчка? т.е. до этой строчки все выполняется последовательно и после этой строчки все выполняется последовательно? А конкретно эта строчка (обработка коллекции) распараллеливается?
Я больше думал что запускать в потоки нужно тяжелые задачи, чтобы они выполнялись параллельно, а потом просто собирать результат из всех потоков.