Pull to refresh
17
Send message

Validation DSL на Groovy

Reading time3 min
Reach and readers5.3K
Одна из часто встречающихся проблем императивных языков программирования это отсутствие выражений для декларативных структур, таких как, к примеру, древовидные разметки или набор правил для обработки данных. В Groovy эта проблема решена с помощью классов типа Builder и мета-программированием на уровне абстрактного синтаксического дерева.
Читать дальше →

JS tips

Reading time1 min
Reach and readers435
Алгоритм получение результата А && B

Если операнд A истинный (true, «string», someObj), результатом является B, иначе — А.
То бишь код:

if (a) {
return a.member;
} else {
return a;
}


Может быть заменен на более компактный:

return a && a.member;

Алгоритм получение результата А || B

Если операнд A истинный, результатом является A, иначе — B.
Эта особенность может быть использована для присвоения дефолтных значений переменным:
last = input || default_value;

Создание объекта на лету

obj = {fieldName: "a"}; — объект с полем fieldName

Пример оптимизации в JVM

Reading time2 min
Reach and readers723
Набрел на интересный пример оптимизации при динамической компиляции
public class StupidMathTest {
  public interface Operator {
    public double operate(double d);
  }

  public static class SimpleAdder implements Operator {
    public double operate(double d) {
      return d + 1.0;
    }
  }
Читать дальше →

Svn. Откат изменений на сервере

Reading time1 min
Reach and readers4K
Бывает накомитешь какашек — потом жалеешь. Вот пилюля для отката изменений на сервере:

svn diff -r 73:68 http://my.repository.com/my/project/trunk

73 — наша текущая ревизия
68 — куда хотим откатиться

Смотрим дейстивтельно ли только мы вносили изменения файл. Если нет, то придется откатыватся вручную — через редактирования проблемных участков с последующим комитом. Если все ок:

svn merge --dry-run -r 73:68 http://my.repository.com/my/project/trunk/

Смотрим что будет мержиться, если нет никаких конфликтов идем дальше:

svn merge -r 73:68 http://my.repository.com/my/project/trunk/

svn merge просматривает измениния между 73 и 68 ревизией и применяет их к вашей рабочей копии

svn commit -m «Reverted to revision 68.»

Пушистых Вам багов, господа!

Information

Rating
Does not participate
Registered
Activity