January 25, 2012

Секретные коды Яндекса

Настало время мне менять работу.
Написал заявление и после первого шока уже чувствую, как напали на меня Вселенская Терпимость и Невероятное Спокойствие как я наблюдал у других коллег непосредственно за пару недель до ухода.
Не показалось, значит.

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

Каждый раз, когда появляются какие-то сообщения о винде или микрософт, я думаю: "Какое счастье, что меня это, наконец-то, не касается!.." :)
И ведь уже с 2008 года слез с винды, а всё ещё радуюсь 8)

Типичный программист – аутист и разговаривать и слушать не умеет.
Типичный начальник – диктатор, который разговаривать и слушать уже разучился 8)
Поэтому мы все умрём рано или поздно :)

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

Комментарий про хитрых милицейских: "Специалисты по безопасности на путях смеялись до слёз, глядя, как пассажиры пытаются найти вход в картинку вокзала."

Я – новая tzdata Джека.

Кто тут не робот? Проверь себя:

Корпоративная пирамида Маслоу – уже было.

А вот троллинг на тему "программистам не хватает места: заплатите налоги!"

я запускал убунту на маке, мне не нравится, как она работает тут.
мультитач работает отстойно: ложные срабатывания и интуитивно-непонятное поведение;
даже если система понимает мультитач, ни одно приложение его не поддерживает;
без 3-й кнопки мышки многие приложения (например, терминал) – практически неюзабельны;
время автономной работы в 2-3 раза меньше чем под макосом.

"Редкая дисковая ошибка": имена файлов правильные, размеры, даты создания – тоже; внутри файла – мусор. Мета-информация сохранилась и консистентна, данные - нет.

хорошо - чувство юмора НЕКОТОРЫХ людей с 7-го этажа не совпало с чувством юмора НЕКОТОРЫХ других людей.
так нормально?

После запуска Яндекса в Турции:
shuga : видел в кофе-поинте турецкие сладости? Интересно, теперь так будет всегда?
itroot : надо быстрее запускаться в Амстердаме!

Есть сорные слова типа "типа" и "так", а есть сорные команды типа "pwd" и "ls".
На долго запущенных консолях иногда бывает по нескольку экранов вывода этих команд.

Единственный жизненный способ скопировать на другую машину директорию, в которой 3427 файлов оказался

ssh user@host 'cd dir ; tar zcf - subdir' | tar zxf -

scp в случае указания dir/subdir/* не запускается из-за слишком длинной командной строки, а если его попросить скопировать dir/subdir, но он начинает тупить по одному файлу.
rsync -a в этой ситуации почему-то тоже лажает: копирует какую-то порцию файлов и потом просто зависает. после перезапуска копирует ещё какую-то часть и опять виснет.
ssh+tar победил.
Хорошо когда TIMTOWTDI.

ĭŋŧěŗńäțīõňâĺïżåťĺøñ

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

Пока в Thunderbird висит модальный диалог, в Firefox не запускается проигрывание видео.
Типа "Если стукнуть по голове, какой шнурок развяжется?"

«Начальник - это тот, кто берет ответственность на себя и закрывает собой направление»
А.Ю.Волож

В ту же тему:
Один великий человек в Яндексе как-то сказал "Власть не дают, власть берут".

Забавное "сетевое окружение" на Маке: Сидя на 6м этаже вижу в сетевом окружении 10-15 машин с 3го и 4го этажей. И никого - со своего.

Правильный способ "продать" юзеру изменения – дать ему ЛЁГКИЙ способ их попробовать и ещё более лёгкий способ вернуть всё назад.
Именно так был внедрён на gmail "приоритетный inbox". Но сейчас Гугл так уже не делает.

Подход к проектированию распределённых систем: REST vs RPC:
REST – гибкость, расширяемость, совместимость, TIMTOWTDI, "можно сделать всё" (но надо делать), unix-way
RPC – "работает само", "ничего дописывать не надо", почти нельзя ошибиться, не расширяется, сделать можно только то, что предусмотрено, windows-way
Если человек мыслит объектно-ориентировано, он будет думать интерфейсами и его "родной" способ взаимодействия – RPC.
Если человек мыслит функционально, он будет отталкиваться от сообщений и ему ближе REST.

менеджерам и тимлидам на заметку:
Although teams are responsible for the projects they are working on, managers are responsible for the environment they work in.
Because people’s behavior depends (in part) on their environment, it is imperative that you tweak the environment to get the best out of your teams.
Regularly check the list of safety, play, variation, visibility, and edge, and ask yourself whether you’ve done enough to give your team the best possible environment to work in.

Корпоративный троллинг
Метод исторического экскурса, кстати, довольно действенный.

Прикольные сервисы для быстрого копи-паста и даже создания контента:
http://www.etherpad.com/ http://etherpad.org/ http://piratepad.net/ http://typewith.me/ http://sync.in/
http://wrttn.in/ http://wrttn.in/s/more http://wrttn.in/fa2b56

Полезные советы для консоли
очень простой способ передать файлы с машины на машину — tar cz. | nc -l -p 2214 (на передающей стороне) и nc адрес 2214 | tar xz (на принимающей). 2214 — номер порта, выбирается по желанию. в разных версиях nc нужно писать nc -l -p или nc -l
в локальной сети из дефолтно-настроенных убунт, можно обращаться к машинам по имени, а не по айпи: username-desktop.local отрезольвится в ip машины, которую назвалиusername-desktop. это магия mdns, спасибо apple
avahi-browse -a быстро покажет список имен машин с в локальной сети, а ключ -r покажет сразу и их ip. как и в предыдущем хинте, требуется avahi, он есть в дефолтной убунте. сама команда — в пакете avahi-utils
пользуйтесь ctrl-R в консоли, чтобы не жать «вверх» по сто раз
history не резиновый. если что-то было забито в историю интерпретатора, рано или поздно оттуда может исчезнуть, не полагайтесь на него, как на справочник
используйте set -e в скриптах. неотработавший «cd» во временный каталог может надолго испортить настроениесодержимое /home
проверяйте код возврата
чтобы вернуться в предыдущий каталог, есть команда cd -. в zsh еще есть команда d еще есть команда dirs -v, показывающая историю переходов. еще в zsh можно делать вот так: cd -2
пишите в скриптах длинные --варианты параметров
не пишите в скриптах rm -rf $VAR/
используйте visudo для редактирования sudoers
потеряли пароль рута? при загрузке укажите ядру параметрinit=/bin/bash и сбростье пароль через passwd
у грепа есть полезный параметр --color
команда, чтобы перечитать отредактированный файл с переменными окружения: source /etc/environment .
пользуйтесь bash -x для отладки скриптов
пользуйтесь strace для отладки всего остального. от лишнего выхлопа спасет параметр -e имявызова
не путайте /bin/sh и /bin/bash, это не всегда одно и то же. особенно в дебиане, особенно в убунте
настройте алиасы
если на команду повешен алиас, то запустить ее «настоящую» можно, добавив в начале бэкслеш например: \ls
если терминал переклинило после некорректного выхода из псевдографической программы иили вырвашегося на просторы stdout мусора, есть волшебная команда reset
exec >file в скрипте перенаправит его вывод в файл и не перезапустит скрипт
уже написали вагон скриптов? забекапьте
не храните все в / или /home
lvm уже придумали
используйте в скриптах mktemp для создания временных файлов и каталогов
пишите переменные вот так: ${VAR}
VAR=X и export VAR=X — разные вещи
dd может показывать, сколько он уже скопировал, если пнуть его черз kill -USR1
kill может принимать аргументом номер задачи, а не только идентификатор процесса: kill %1
jobs, bg, fg, disown — тоже так умеют
если «вышли» из программы через ctrl-Z, вернуться можно командой fg
rsync нужен не только для сетевых операций
rm something и rm something/ — это разные вещи. и не только в rm, cp, ls и rsync — тоже
watch и repeat уже написаны, не надо велосипедить их через while true
at тоже уже написан, а sleep понимает время не только в секундах
sudo echo > file открывает файл на запись не с правами рута. это делается так: sudo sh -c 'echo > file'
если скрипт запускается в линуксе, это не значит, что он так же хорошо отработает в bsd или макоси
пишите --параметры перед аргументами, иначе ls file -l в bsd вас удивит
грепаете вывод ifconfig? ifconfig тоже бывает разный
нормально работающие версии утилит в bsd и макоси имеют приставку g: gsed, gmake

Плюс:
affe: а еще dd плюётся если kill -SIGINFO на процесс сказать
rbtz: SIGINFO, он же ^T, это bsd-specific.
Алексей Капранов: перенаправление с правами рута привык делать как echo | sudo tee file. Плюсы: команда слева от пайпа работает с ограниченными правами; вывод также по умолчанию виден в stdout. Минусы: вывод также по умолчанию виден в stdout :)
vavinov: Эта комбинация очень полезна, когда открываешь в vi какой-то конфиг, изменяешь, а при попытке сохранить понимаешь, что забыл sudo. Тогда можно сказать :%!sudo tee %

Я.Дресс-код: Если девушка "в поиске", она ходит пропуском наружу :)

Mac OS: lock console: /System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend

libext2fs

Прикольный тип данных в gcc: unsigned int:24& (ссылка на bit field)
gcc не попытался подставить это в шаблонную функцию и честно написал, что именно не подошло.

Визуализация работы автоматов regexp http://osteele.com/tools/reanimator/

Я считаю, клиенту сервиса нельзя отвечать: "у нас там защита от дурака, и она сработала именно на вас".

getaddrinfo кеширует ответы: при замене адреса в DNS сервис может до посинения ломиться на старый адрес, пока его не перезапустишь.

uint32_t sh = 32;
printf("0x%08X\n", ((uint32_t)0xFFFFFFFF << sh));
0

Про зеркало: почему лево и право местами меняются, а верх и низ - нет?
А почему вот тут изображение не наизнанку?

Вячеслав Матюхин: Тебе кажется, что меняется местами лево и право, потому что ты привык сопоставлять оригинал с отражением поворотом вокруг вертикальной оси. Поворот вокруг вертикальной оси меняет местами лево и право, и поэтому если оригинал повернуть вокруг вертикальной оси (встать спиной к зеркалу), у него лево и право поменяется, а у отражения - нет.
Но точно так же ты можешь сопоставить себя с отражением поворотом вокруг горизонтальной оси. Встань на голову перед зеркалом, спиной к зеркалу, и тогда поменяется местами верх и низ.
Я: На самом деле, зеркало меняет местами перед и зад :)

Usability: Каждая иконка и каждый значок обянаны иметь tooltip.

Как на разных языках программирования сделать одно и тоже

"С++ — это такой язык, при программировании на котором вред от неграмотного разработчика может многократно превышать пользу от его гениальных озарений. Грубо говоря, упаритесь потом битую память за ним ловить. Поэтому сначала следует выяснить, что человека вообще можно допускать к работе (это я насчет конструкторов копирования и т.п.), а уж потом взвешивать его сильные и слабые стороны."
//RSDN

Я: Тайм-киллер для программиста: взломать http://codepad.org/
breqwas: Блин, как одинакова реакция программистов на формочку, в которую можно запостить код :)))
Я: я больше скажу: в любую формочку можно запостить код ;)

Я: (2010-08-06 14:35:49) anavuajna: вот хороший сервис яндекс пожары. через несколько лет будет яндекс ядерные отаки, яндекс погромы)
viert: омг, ты знаешь anavuajna? =)

Захожу в кофе-поинт, а хозяюшка там пол моет.
Я остановился, а она мне: - Заходите.
Я ей: - Натопчу..
Она мне ласковым голосом: - Ничего.
Честное слово, никогда такого не видел! :)

netcat + xinetd = fail т.к. работают с сетью синхронно.