Про поездку в Россию

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

Привезли с собой полные чемоданы подарков и просто заказов, у Нади аж перевес случился. Забавная история: когда мы у себя дома закончили собирать чемоданы, за 10 минут до нашего выезда в аэропорт курьер доставил коньки для фигурного катания (!), которые тоже было бы неплохо с собой захватить, чтобы потом по почте их не отправлять. Пришлось мне переворачивать всё в своём уже и так набитом чемодане, что-то выкидывать, что-то избавлять от коробок, чтобы их уместить. Кое-как довёз.

В Нижнем Новгороде и на Бору в целом всё как всегда. Где-то немного похорошело, где-то поплохело. Говорят, ситуация с пробками улучшилась (наверное, в основном благодаря новой станции метро). С другой стороны, мне показалось, что дороги стали хуже. Воздух по-прежнему такой же загрязнённый, хотя раньше, живя там, мы этого не замечали.

Статуя оленя на нижневолжской набережной, Нижний Новгород

Программистам живётся очень хорошо: зарплаты высокие из-за курса доллара, вакансий полно. Меня провели в относительно недавно открывшийся офис Яндекса в Нижнем Новгороде. Офис небольшой, но и работает там совсем мало людей, в результате там очень просторно. Минутка добровольной рекламы. Я примерно знаю, сколько там платят хорошему разработчику, и не понимаю, почему туда ещё не выстроилась очередь из кандидатов, ведь вакансии-то есть. Там делают Яндекс.Браузер, справочник организаций, мобильные карты. Нужны опытные разработчики Java, C++, Android.

Наделали фотографий на нашу камеру Fujifilm Instax Mini 8, которая сразу печатает, как полароид. Часть фотографий раздали, другие оставили себе, чтобы дома повесить. Таким образом, в отличие от цифровых фотографий, на эти мы будем смотреть чаще. С другой стороны, число кадров ограничено, поэтому со всеми друзьями и родственниками сфотографироваться не получилось. Что-что говорите, человечество развивается по спирали?

Фотографии Fujifilm Instax Mini 8

В своём старом барахле нашёл такой любопытный значок, который старше меня. Можно почитать

Значок "Информатика в жизни США"

После двух недель в России полетели в Амстердам к Ване. Но это отдельная история.

Когда мы покидали Амстердам, случилось приключение: нас с нашими документами не хотели регистрировать на рейс в США. Дело вот в чём: поскольку мы сейчас в процессе получения грин-карт, у нас есть специальные карточки (называются Employment Authorization and Advance Parole Card), которые дают право въезжать в страну и работать без визы. Служащие аэропорта Амстердама про эти карты по какой-то причине слыхом не слыхивали и отказались их принимать, якобы они не дают право въезда. А наши визы, по которым мы изначально приехали в Америку, стухли как раз пару дней назад, мы и не думали их продлевать. Но закончилось всё хорошо, один дядя позвонил  в местное консульство США, где ему подтвердили, что с картами всё ок. Даже не знаю, что бы мы делали, если бы время было не рабочее.

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

Накопилось #9

Нет, я не забыл и не забросил, просто времени не было. Поехали.

Эволюция кокпитов самолётов. Там есть кабина Blackbird, который я меньше недели назад лицезрел вживую в Нью-Йорке (впереди небольшой пост про Нью-Йорк). Ещё мне нравится зеркало заднего вида в одном из ранних истребителей.

Отчёт о поездке mi3ch (он вам тут ещё не надоел? :) в Чернобыль. Хорошие фотографии и интересно. В четырёх частях: ЗнакиСтанцияПрипятьДуга.

Про вакцину от оспы, как её транспортировали с помощью детей (!) на другие континенты без морозильных камер (в начале 19-го века-то). Continue reading “Накопилось #9”

Нью-Йорк, Россия, Амстердам

В конце мая едем в Нью-Йорк. Если кто-нибудь из знакомых там окажется (а такое бывает на удивление часто), можем встретиться. Пишите.

С 18 по 30 июня мы с Надей будем в России. Я буду в Нижнем Новгороде, Надя с мамой съездят в Питер на пару дней в дополнение к этому.

Пишите, если хочется встретиться. Можно попробовать что-нибудь заказать у нас, если нужно.

30 июня уедем в Амстердам на неделю к Ване К. Сомневаюсь, что кто-нибудь ещё из читателей будет там, но на всякий случай: пишите.

P. S. Пёс Палтус останется дома.

Corgi Corgzilla

Заглавные и строчные буквы в названиях на английском

Пролистывая в плеере свою музыкальную библиотеку, много раз задумывался о том, как правильно писать названия песен – “A Rush Of Blood To The Head”, или “A Rush of Blood to the Head”, или ещё как-нибудь. Стало интересно.

Правила «капитализации» букв в английском языке можно найти на множестве различных ресурсов; в некоторых местах их немного больше, чем в других. Мне удалось выделить следующие:

  1. Первое и последнее слово названия всегда пишется с заглавной буквы, вне зависимости от части речи. Остальные слова тоже пишутся с заглавных букв, за исключением перечисленных далее случаев.
  2. Следующие слова пишутся со строчных букв:
    • артикли: a, an, the;
    • союзы: and, but, or, nor;
    • as (только если за ним следует имя существительное).
  3. Предлоги:
    • пишутся с заглавных букв, если являются частью составного глагола (phrasal verb): Come On, Hold On, Carry On, Get Up, Let Down и т.д.;
    • пишутся со строчных букв, если их длина не превышает четырёх букв: at, by, for, from, in, into, of, off, on, onto, out, over, to, up, with и т.д.;
    • пишутся с заглавных букв, если их длина составляет пять букв и более: Across, After, Among, Beyond и т.д.
  4. Слово “to” пишется со строчной буквы, если за ним следует глагол в форме инфинитива (“How to Format Your Hard Disk”).
  5. Второе слово в словосочетании пишется с заглавной буквы, если это глагол или proper adjective (правильное прилагательное? в русском языке вроде нет такого), либо если слова равноценны: Cross-Reference, Pre-Microsoft Software, Read/Write Access, Run-Time. Если же второе слово является другой частью речи, то оно пишется со строчной буквы: How-to, Take-off.

Следующие слова в заголовках и названиях иногда по ошибке начинают со строчной буквы:

  • Also, Be, If, Than, That, Thus, When;
  • As (если за ним следует глагол).

Для русского языка правила использования заглавных букв гораздо проще: с заглавных букв следует начинать только первое слово названия и все имена собственные, входящие в его состав. В двойных названиях с прописных букв пишутся оба названия. (Взято отсюда, § 108).

P. S. Слово Capitalization в данном контексте на русский язык переводится только как неёмкое «применение заглавных букв».

Чикаго

Съездили в Чикаго на 3 дня в середине марта.

По дороге:

Местные произносят название города как “щикага”. Город большой. Его центр, находящийся на берегу озера Мичиган, известен своими небоскрёбами, а на десятки миль вокруг него простирается сплошная одноэтажная застройка. Continue reading “Чикаго”

Исключения без стек трейса в Java

Бывает, видишь в логе исключение, а стек трейса у него нет (он пустой):

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException

Одна строка и всё.

Это происходит, когда программа кидает очень много таких исключений. Сначала они генерируются как надо, с заполненным стек трейсом, и полностью попадают в лог. Потом виртуальная машина решает, что раз такие ошибки происходят очень часто, имеет смысл оптимизировать генерацию этих исключений (см. JIT). Тогда-то у них и пропадает стек трейс.

Поэтому когда вы у себя такое видите и не можете понять, откуда эти исключения вылетают, имеет смысл промотать лог назад (очень далеко назад, как правило) и поискать в том месте, где они впервые появились. И/или можно выключить эту оптимизацию с помощью следующего аргумента JVM

-XX:-OmitStackTraceInFastThrow

Если интересно, можно сымитировать подобную ситуацию простой программой:

public class Main2 {
 public static void main(String... args) {
  for (int i = 0; i < 1000000; i++) {
   try {
    int x = 0 / 0;
   } catch (Exception e) {
    if (e.getStackTrace().length == 0) {
     System.out.println("i=" + i);
     throw e;
    }
   }
  }
 }
}

У меня, например, цикл заканчивается на 12288-й итерации.

Мне не совсем понятна философия этой оптимизации. Да, исключения действительно “тяжёлые”. Но на то они и исключения, что должны происходить редко. И если в вашей программе они выкидываются очень часто, вы явно что-то делаете не так, и плохая производительность — это не главная ваша проблема. Ваша проблема в том, что вы не читали Item 57: Use exceptions only for exceptional conditions из Effective Java Блоха.

Может быть, кто-нибудь из читателей может объяснить?

Накрутка подписчиков в Инстаграме своими силами

В интернете есть ряд сервисов, которые за деньги пригоняют много подписчиков и “лайков” в ваш аккаунт в Instagram. Я точно не знаю, как именно это делают они, но мне самому удалось в некоторой степени повторить это на своём аккаунте с помощью бота, спортивного интереса ради.

Идея эта уже несколько недель витала в нездоровой голове, и в какой-то момент нашлось время попробовать. А ещё через несколько недель нашлось время описать. Суть такова:

  1. Любым способом находим много произвольных не закомых нам пользователей. Ставим им лайки и подписываемся.
  2. Эти люди получают уведомления на свои телефоны. Многие из них при этом сами заходят в наш профиль (всем любопытно, что за незнакомый чел на них подписался), смотрят и иногда подписываются в ответ.
  3. Чтобы ваш аккаунт не выглядел спамерным или взломанным (типа 100 подписчиков, а подписан на >9000), время от времени вероломно отписываемся от этих людей и отменяем свои лайки. Мало кто обратит на это внимание, поэтому большая часть подписчиков остаётся при нас.

Теперь немного подробностей. Continue reading “Накрутка подписчиков в Инстаграме своими силами”

Java puzzler

Отлично:

  1. Вставляем следующий код без изменений в B.java:
    class B extends A{B(Long i){
    new B(i/Long.compare(i,i));System.out.println("Win");}}
  2. Пишем что угодно в A.java
  3. Запускаем так: java -Djava.security.manager A . Security manager нужен, чтобы запретить читерство типа рефлексии.
  4. Программа должна достичь System.out.println(“Win”) в B и напечатать “Win”.

Источник. Туда пока что можно отправить своё решение взакрытую, но со временем комментарии с ответами откроются, поэтому будьте осторожны.