Изменения в автобилде
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 30.03.10 22:55
Оценка: 81 (2)
#Имя: FAQ.nemerle.Autobuild
Произошли изменения в логике создания автобилдов:

сборка теперь не осуществляется для каждого коммита, а только для тех, у которых в комментарии присутствует строка:

Publish: Label-1,Label-2,...,Label-N


Где, "Label-N" — список меток, которые будут присвоены файлу инсталятора при загрузке на гуглокод (http://code.google.com/p/nemerle/downloads/list). В настоящее время, активны следующие метки (они предопределены гуглокодом):

Featured             = Listed on project home page
Type-Executable      = Executable application
Type-Installer       = Download and run to install application
Type-Package         = Your OS package manager installs this
Type-Archive         = Download, unarchive, then follow directions
Type-Source          = Source code archive
Type-Docs            = This file contains documentation
OpSys-All            = Works with all operating systems
OpSys-Windows        = Works with Windows
OpSys-Linux          = Works with Linux
OpSys-OSX            = Works with Mac OS X
Deprecated           = Most users should NOT download this


При публикации, должна быть указана хотя бы метка "Type-Installer", в противном случае, билд не будет залит на сервер. Это временно, через пару дней сделаю, чтобы эта метка присваивалась автоматом.

В ближайшее время, также будут добавлены метки:

Build-Release
Build-Debug


которые будут определять тип сборки. В качестве примера можете глянуть коммент к ревизии 8696.

Пример:

Publish: Type-Installer,OpSys-Windows

... << RSDN@Home 1.2.0 alpha 4 rev. 1446>>

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re: Изменения в автобилде
От: VladD2 Российская Империя www.nemerle.org
Дата: 31.03.10 15:38
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

А можно дать два шаблона. Один для выкладывания фичуред-билда (того что на главной странице появляется) и для выкладывания обычного? Ну, чтобы можно было просто копи-паст и вуаля...
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Изменения в автобилде
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 31.03.10 19:49
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, kochetkov.vladimir, Вы писали:


VD>А можно дать два шаблона. Один для выкладывания фичуред-билда (того что на главной странице появляется) и для выкладывания обычного? Ну, чтобы можно было просто копи-паст и вуаля...


Ок: в настоящее время, нужно к тексту комментария к коммиту (который может быть произвольным) в произвольном месте добавить строчку:

Publish: Type-Installer,OpSys-Windows


для обычного билда и

Publish: Featured,Type-Installer,OpSys-Windows


для фичуред.

Дело в том, что сейчас уведомление от гуглокода принимает скрипт на php, забирает ревизию и собирает ее — батник, а полученный результат выкладывает на гуглокод скрипт на питоне

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

Publish: _


для обычного билда и

Publish: Featured


для фичуред.

А вообще, в гуглокоде "активные" комментарии к коммиту широко используются "из коробки" для интеграции с багтрекером и системой коллективных ревью. Например, после того, как перейдем на гугловский багтрекер, комментарий к коммиту, содержащий "Fixes issue XXXX" приведет к автоматическому закрытию тикета ХХХХ в багтрекере. Там довольно много таких ключевых слов на все случаи жизни. Могу написать что-то типа памятки, если интересно.
... << RSDN@Home 1.2.0 alpha 4 rev. 1446>>

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[3]: Изменения в автобилде
От: VladD2 Российская Империя www.nemerle.org
Дата: 31.03.10 20:03
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Ок: в настоящее время, нужно к тексту комментария к коммиту (который может быть произвольным) в произвольном месте добавить строчку:


KV>

KV>Publish: Type-Installer,OpSys-Windows


Пробелы после запятых допустимы? Можно так:

Publish: Publish: Featured, Type-Installer, OpSys-Windows


KV>Дело в том, что сейчас уведомление от гуглокода принимает скрипт на php, забирает ревизию и собирает ее — батник, а полученный результат выкладывает на гуглокод скрипт на питоне


Какой ужас!

KV>Я переписал сие на немерле и на днях, заменю весь этот зоопарк идеологически-правильным решениен


Прикольно. И как Nemerle в качестве замены скриптам? Код сильно разбух?

KV>А вообще, в гуглокоде "активные" комментарии к коммиту широко используются "из коробки"


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

KV>...для интеграции с багтрекером и системой коллективных ревью. Например, после того, как перейдем на гугловский багтрекер, комментарий к коммиту, содержащий "Fixes issue XXXX" приведет к автоматическому закрытию тикета ХХХХ в багтрекере. Там довольно много таких ключевых слов на все случаи жизни. Могу написать что-то типа памятки, если интересно.


Значит нужно переходить на гуглкодный багтрекер.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Изменения в автобилде
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 02.04.10 19:29
Оценка: 26 (1)
Здравствуйте, VladD2, Вы писали:

VD>Пробелы после запятых допустимы? Можно так:

VD>

VD>Publish: Publish: Featured, Type-Installer, OpSys-Windows


В текущем варианте нет, в немерловком — да (просто было лень с регэкспами в php возиться )

KV>>Я переписал сие на немерле и на днях, заменю весь этот зоопарк идеологически-правильным решениен

VD>Прикольно. И как Nemerle в качестве замены скриптам?

Стоит примерно посередине между питоном и c#. Лаконичность первого + строгая типизация второго.

+ в голове крутится мысль, что если бы заиметь интерпретатор (ну или эмулятор интерпретатора) немерла, да скрестить его с моделью объектов powershell (на уровне совместимости с егойными провайдерами) и сделать ко всему этому удобный шелл (типа ipython), то получился бы инструмент для админов, не знающий на винде себе равных.

VD>Код сильно разбух?


Есть немного, но было ожидаемо. Разбухает он там в основном по двум причинам: особенности дизайна некоторых классов самого фреймворка и необходимость описывать используемые структуры данных, которые в случае динамических языков и констуировались бы динамически. Пример первого случая (из кода генерации баннеров):

def sha1Bytes = SHA1Managed().ComputeHash(UTF8Encoding().GetBytes($"$gammaFolder$text"));
def stringBuilder = StringBuilder();
for (mutable i = 0; i < sha1Bytes.Length; i++) _ = stringBuilder.Append(sha1Bytes[i].ToString("x2"));
def sha1 = stringBuilder.ToString();


Я хз, как это (получить из конкатенации строк gammaFolder и text строку с их SHA1-хэшем) красивее сделать (хоть в шарпе, хоть в немерле). Буду рад, если кто-нибудь подскажет. В питоне и пхп это делается одной строчкой И таких мест там прилично.

В качестве примера второго случая, можно привести разбор уведомления о коммите, присылаемого гуглокодом. Оно приходит в формате json, и для работы с ним его надо десериализовать в живой объект. Средства для этого есть из коробки и в дотнете, и в питоне, и в пхп, но в последних двух — эту структуру не надо объявлять заранее, т.к. она будет динамически создана в соответствии с инфой из запроса. С другой стороны, хз чего там нам могут в этом json'e передать, поэтому с т.з. безопасности лучше объявлять эту структуру в любом случае, даже с динамической типизацией.

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

VD>Значит нужно переходить на гуглкодный багтрекер.


А мы уже, так сказать, "в пути" В течении этого месяца перейдем.
... << RSDN@Home 1.2.0 alpha 4 rev. 1446>>

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[5]: Изменения в автобилде
От: seregaa Ниоткуда http://blogtani.ru
Дата: 02.04.10 20:08
Оценка: 30 (1)
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Здравствуйте, VladD2, Вы писали:


KV>def stringBuilder = StringBuilder();

KV>for (mutable i = 0; i < sha1Bytes.Length; i++) _ = stringBuilder.Append(sha1Bytes[i].ToString("x2"));
KV>def sha1 = stringBuilder.ToString();

Вот это переписывается с помощью аккумулятора. Где то так:
def sha1 = sha1Bytes.Fold(StringBuilder(), (current, builder) => builder.Append(current.ToString("x2"))).ToString();
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
Re[5]: Изменения в автобилде
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.04.10 22:36
Оценка: 45 (1) +1
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Стоит примерно посередине между питоном и c#. Лаконичность первого + строгая типизация второго.


Это, на мой взгляд, не по середине, а выше .

KV>+ в голове крутится мысль, что если бы заиметь интерпретатор (ну или эмулятор интерпретатора) немерла, да скрестить его с моделью объектов powershell (на уровне совместимости с егойными провайдерами) и сделать ко всему этому удобный шелл (типа ipython), то получился бы инструмент для админов, не знающий на винде себе равных.


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

KV>Есть немного, но было ожидаемо. Разбухает он там в основном по двум причинам: особенности дизайна некоторых классов самого фреймворка


Это лечится созданием своих оберток (библиотек).

KV>и необходимость описывать используемые структуры данных, которые в случае динамических языков и констуировались бы динамически.


Можно пример?


KV>Пример первого случая (из кода генерации баннеров):


KV>
KV>def sha1Bytes = SHA1Managed().ComputeHash(UTF8Encoding().GetBytes($"$gammaFolder$text"));
KV>def stringBuilder = StringBuilder();
KV>for (mutable i = 0; i < sha1Bytes.Length; i++) _ = stringBuilder.Append(sha1Bytes[i].ToString("x2"));
KV>def sha1 = stringBuilder.ToString();
KV>


KV>Я хз, как это (получить из конкатенации строк gammaFolder и text строку с их SHA1-хэшем) красивее сделать (хоть в шарпе, хоть в немерле). Буду рад, если кто-нибудь подскажет. В питоне и пхп это делается одной строчкой И таких мест там прилично.


Во-первых, подобную фигню можно заложить в функцию.

Что касается цикла со стринг-билдером, то этот код можно переписать в одну строку с использованием $-строк:
$<#..$(sha1Bytes; ""; _.ToString("x2"))#>

Здесь "..$" — это сплайс обрабатывающий списки (в том числе и массивы).
После первой ";" идет разделитель. В данном случае это пустая строка.
После второй ";" идет функция преобразования значения элемента в строку.
Ну, и чтобы можно было использовать внутри строки кавычки используется рекурсивные строки — <# ... #>.

Думаю, что питонам такое не под силу. Тут только Лисп, насколько я знаю, может что-то противопоставить.

KV>В качестве примера второго случая, можно привести разбор уведомления о коммите, присылаемого гуглокодом. Оно приходит в формате json, и для работы с ним его надо десериализовать в живой объект. Средства для этого есть из коробки и в дотнете, и в питоне, и в пхп, но в последних двух — эту структуру не надо объявлять заранее, т.к. она будет динамически создана в соответствии с инфой из запроса. С другой стороны, хз чего там нам могут в этом json'e передать, поэтому с т.з. безопасности лучше объявлять эту структуру в любом случае, даже с динамической типизацией.


А что за средства есть в дотнете?

Вообще, для таких фишек можно было бы написать библиотеку (конвертирующую json в иерархию вариантов) или даже макрос.

KV>Короче — код немного разбух, но это не особо напрягает, если вдуматься, что тем самым, было получено взамен.


Интересно было бы поглядеть на оба варианта. Все же отличное сравнение для того чтобы понять куда развивать язык дальше.

VD>>Значит нужно переходить на гуглкодный багтрекер.


KV>А мы уже, так сказать, "в пути" В течении этого месяца перейдем.


Да, ну? Круть!!!
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.