Мысли: Наши рамки

Люди загоняют себя в рамки,
а потом всю жизнь из них пытаются выбраться

Сами себе враги

То ли ментальность, то ли окружение нас постоянно загоняет в рамки. Школа, университет — учат мыслить в пределах данности предмета. Любые мечталки и хотелки отсекаются фразой «Ишь размечтался!». Ребёнку с детства говорят, что надо, а что не надо делать. Надо учиться — вот только не понятно зачем надо и, самое главное, кому надо. Ребёнок вырастает, становиться родителем. И точно так же вдалбливает что надо что не надо уже своим детям.

Читать далее

Play Framework: локализация Date.since()

Play framework позволяет в шаблонах groovy использовать extension functions — т.е прицеплять методы на ходу к объектам.

В частности в play имеет расширение экземпляров класса Date — since(), который возвращает сколько времени прошло от указанной даты. Например «13 minutes ago»

С since() все хорошо, пока не требуется интернационализация. Если переопределить соответствующие ключи в файлах перевода, то для русского он возвращает нечто вроде 3 дняs назад. Другими словами этот метод не может отображать количество пройденного времени на любом языке, кроме английского.

Читать далее

HTC Desire: съел всё место

Внезапно, у меня опять кончилось место в телефоне.

Пошёл по известной дорожке:

  • Удалить старые приложения
  • Почистить кэш (твиттера, например)
  • Recorvery -> Wipe dalvik cache

Но в этот раз не помогло. Снёс кучу нечасто используемых приложений: через 30 минут снова стало свободно 0.5Mb.

Место кончилось на столько, что даже телефон не открывался, как и многие приложения.
Стандартная утилита не показывала каких-либо сверх-тяжелого софта (я рассчитывал где-то на 40+мб)

Напомню, что у меня HTC Desire с Runnymede AIO V6.0.4.3, прошивка стоит около 14 месяцев
Читать далее

Android: не используйте String.isEmpty

Ни eclipse ни intellj Idea ни android lint не предупреждают, что String.isEmpty() появился в Java 6, и после Android 2.3.

java.lang.NoSuchMethodError: java.lang.String.isEmpty
at pro.ezway.carmonitor.entity.TroubleCode.hasTitle(TroubleCode.java:142)
at pro.ezway.carmonitor.ui.fragments.TroubleCodesFragment$TroubleCodesAdapter.getView(TroubleCodesFragment.java:242)
at android.widget.AbsListView.obtainView(AbsListView.java:1315)
at android.widget.ListView.makeAndAddView(ListView.java:1727)

Читать далее

Android: запуск дефолтного ланчера

Есть неочевидная ситуация: вы пишете лаунчер лончер или что-то его заменяющее, отдебажили, всё работало. Конечно же, вы поставили его как програму по умолчанию и теперь он стартует вместо дефолтого. И вдруг, вылезает некая бага, которая начинает крушить, бомбить ронять телефон, перезапуская приложение. Перезапустится, конечно же, то, что упало, а упал лончер. И он снова падает. Development mode в продакшене отключён. Ну вы поняли.

На самом деле бывают ситуации ещё хуже, например, для vendor lock-in приложений, которые вообще скрывают, что они работают под андроид.

Предвкушая первую мысль как вернуть дефолтный лончер: вызвать в приложении finish(). Чёрт, это же домашний экран %)

Читать далее

Groovy: java слишком проста

Возьмём довольно частую задачку: есть несколько значений первой переменной, нужно сделать присвоить второй переменной какое-то значение, в зависимости от первой переменной, т.е. value mapping.

В джаве это делается примерно так:

String alertClass = "";
switch(code.toUpperCase().charAt(0)) {
case 'U':
    alertClass = "alert";
    break;
case 'P':
    alertClass = "alert-error";
    break;
case 'B':
    alertClass = "alert-warning";
    break;
case 'C':
    alertClass = "alert-info";
    break;
}
// now alertClass has value

Читать далее

Android: отложенное действие

Бывает необходиость выполнить что-то не сразу, а чуть позже в главном(main) потоке для GUI

Этот код поможет(на время разработки)

public class AwesomeActivity extends WorkspaceActivity {
   @Override
   public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        . . .
        new Handler() {{
            postDelayed(new Runnable() {
                @Override
                public void run() {
                    // do something here
                    hideShutter();
                }
            }, 1500);
        }};
   }
}

Читать далее

Удивительное время!


Посмотрите, что происходит вокруг! Жизнь людей меняется с молниеносной скоростью!

Технологии внедряются в повседневную жизнь с нереальной скоростью! Они развиваются на столько быстро, что люди не поспевают за ними.
Так было всегда — любые инновации долго входили в массы. Но в отличии от настоящего времени раньше были альтернативы. Современные инструменты «подсаживают» на себя людей, не оставляя альтернативы. Поэтому сейчас невозможно не учиться всю жизнь (в разной степени в зависимости от специфики)

Обернитесь, посмотрите, что поменялось за 10 лет у нас и за 20 в развитых странах!

Читать далее

ruX mind: о выборе сотрудников

Очень много читал и слышал о роли людей в команде или в компании, про их эффективность, оценки KPI. Даже читал, что в стартапе инвестор вкладывается по большей части не в идею, а в конкртеных людей. Ну да, я никогда с этим не спорил, принимал за правду. Да и логично, как говорится «Не Боги горшки обжигают».

А сегодня вечером пришёл инсайт и в очередной раз показал какой глубокий смысл в роли людей.
Читать далее

Play framework: SELECT .. IN

Наткнулся на очередную невозможность сделать казалось бы простые вещи: выполнить запрос

SELECT .. WHERE something IN list

т.е. выбрать все записи, в которых поле something равно чему то из списка list.

Обойти можно через JPA:

@Entity
@Table(name="ezTroubleCode")
public class TroubleCode extends Model {
   @Index(name = "IDXcode")
   @Column(nullable=false, length=5)
   public String code;

   . . .

   /**
    * Search for codes by codeId
    */

    public static List<troublecode> findByCode(List<string> codes) {
        Query q = JPA.em().createQuery("SELECT tc FROM TroubleCode tc WHERE code IN (:codes)");
        q.setParameter("codes", codes);
        return q.getResultList();
    }
}
</string></troublecode>

Читать далее

Post Navigation