Pull to refresh
17
0
Send message

Validation DSL на Groovy

Reading time3 min
Views5K
Одна из часто встречающихся проблем императивных языков программирования это отсутствие выражений для декларативных структур, таких как, к примеру, древовидные разметки или набор правил для обработки данных. В Groovy эта проблема решена с помощью классов типа Builder и мета-программированием на уровне абстрактного синтаксического дерева.
Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments3

JS tips

Reading time1 min
Views390
Алгоритм получение результата А && 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
Total votes 34: ↑18 and ↓16+2
Comments9

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

Reading time2 min
Views586
Набрел на интересный пример оптимизации при динамической компиляции
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;
    }
  }
Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments6

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

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

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.»

Пушистых Вам багов, господа!
Total votes 4: ↑3 and ↓1+2
Comments1

Information

Rating
Does not participate
Registered
Activity