ruX’s mind: деньги вместе с ценностью

Слушая 200 выпуск \"Рунетологии\", в котором Максим рассказывал о своих успехах, жизни и проектах, сильно зацепила одна фраза.

В начале появился проект calend.ru - энциклопедия праздников, где просто была идея элементарная охватить максимум поисковых запросов вокруг праздников, которые коммерчески в общем мало окученны, за них мало кто бьётся

Read more

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

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

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

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

Read more

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

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

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

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

Read more

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

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

\"\"

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

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

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

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

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

Read more

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)

Read more

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

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

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

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

Read more

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

Read more

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);
}};
}
}

Read more

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

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

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

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

Read more

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

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

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

Read more