R. Schweppes

Дополнительные возможности программиста
1 мая 2016, 11:08

Белград, апрель 2016

Раздельный сбор мусора в аэропорту Никола Тесла.


От аэропорта до города надо добираться на автобусе. Кругом поля и травушка-муравушка.

Красивая брусчатка.

Дома с деревьями.

Местные жители.

Дядьки суровые.

Вся боль Сербии в этих глазах

Фото опубликовано R. Schweppes (@rschweppes)



Изящный памятник погибшим в автокатастрофе.

Памятник погибшим в виде руля

Фото опубликовано R. Schweppes (@rschweppes)



Большая реклама Хуавея.

Кажется, что-то нецензурное в переходе.

Компьютерный мастер.

Разнообразие архитектуры.

В кафешках можно курнуть, только окошко открой, чтоб не сильно воняло.

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

В женском норм.

Там даже есть куда мыло положить.

Стрит-арт.

Раритетный почтовый ящик с приятными деталями.

Памятник питонисту.

Шахматные столы в парке.

Вид с набережной.

Ящерка.

Какая-то изящная агитка на урне. Судя по всему, «длительность ролика» на сербском будет «траханье» или вроде того.

Вход в парк Калемегдан.

Кусочки крепости.

Увековеченный дядечка.

Можно встать на край стены, пофоткать.

Нумерация кабинок в мужском туалете на территории парка.

Душит одноглазого.

Памятник питонисту

Фото опубликовано R. Schweppes (@rschweppes)


И небольшой видос с бродячей собакой, голубями и питонистом.

14 октября 2015, 10:35

Апрельские тезисы — 8

Верховный главнонаркомандующий

Мэйл.руки

Шурупоинтроверт

Ганс Христиан Understand

Кюхельбехеровка

Азербайджайзер

Пакетная или коробочная версия конфет

Я волком бы выгрыз презерватив

Полные задрота и огня

Берегись автолюбителя

Егор Кабриолетов

Карточный додик

Торговал обфускатом

Интерактивный протопоп

Вениамин из трущоб

Самооценка сроков

Михайломоносов

Оценка Споков

Наталья Array()

Надежда — мой компас земной,
А удача — награда за смертность

Ашхаbody

Таблица унижения

margin-top-gear

Держу себя в форме милиционера

Ветчиносец

Географический дизайнер

Это устройство может работать быстрее, если захочет

Уголкипер

Редиректор школы

Картоночный домик

Одиннацать друзей Диджитал-оушена

Молочница и шоколадница

Блоггер-писячник

«Прыщи» как глагол повелительного наклонения

Идея для факапа

Наскальное яйцо

Адок Фотошоп

Лапидарственный

Тор 2: Штурмовик

Лол Маккартни

Соус Тесла

Оунер продуктового дизайнера

Булат Окуjava

Данте Обнагльели

«Отрисовал» как антоним глаголу «пририсовал»

Парень моего парня — мой парень

Выставил счёт напоказ

Поминальная квартира

Геморроженое

Каждой твари по запаре

Любовь — это вместе копить на липосакцию

Косякомые

Жрёт сына мать, а сыновей земля

Эра Альтроновна

Диджестив Джобс

Не могли бы вы оформить полный список доработок письмом и засунуть себе в жопу?

Письмо с инструкциями по восстановлению пароля высрано на ваш почтовый ящик

So close no matter how far
Couldn't be much more from the heart
Forever trusting who we are
And Ruby on Rails

Аллен Дюкан «Я не умею курить»

Менты сбываются

Сила действия равна силе священнодействия

Рассержант

— Добрый день, вам удобно говорить?
— Нет, а вам?

Резервный генератор случайных чисел

Если бы Олега Табакова звали не Олег, а Цыплёнок

Селфи для палки

Апхапхапхапха-йога

Яджурведа, яджурведа, яджурведа
Ну а хаджиме?
А хаджиме потом.

Хлоя Средиземноморец

Хороша ложка к побегу

Эль Капитель

— Привет, тебе удобно сейчас говорить?
— Да, конечно.
— Ну говори.




Предыдущие сборники:
Апрельские тезисы,
Апрельские тезисы — 2,
Апрельские тезисы — 3,
Апрельские тезисы — 4,
Апрельские тезисы — 5,
Апрельские тезисы — 6,
Апрельские тезисы — 7.

Прошло мимо меня, но, раз обнаружил, сообщить надо.

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

Например, вот твит Валеры:

А вот окошко реплая на этот твит:

Заметьте, упоминания @amazon в исходном твите не было, а в реплай он его вставил.

17 июля 2015, 7:56

Ребятам на заметку

Пожалуйста сберегите свое и не тратьте наше время, если:

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

http://hh.ru/vacancy/9399124

Некая Марина написала бумажное письмо в передачу Good Mythical Morning и прислала этим ребятам немного «русской еды».

Замес начинается примерно с 1:30:

Интересно наблюдать за тем, как американцы пытаются открыть банку шпрот консервным ножом, смакуют пряники и морщатся от кваса. Сушки так никто и не попробовал, жаль.

20 марта 2015, 11:59

Поговорим о рекурсии

Начинаешь, например, клепать вёрстку чего-нибудь:

~|⇒  mkdir test
~|⇒  cd test
~/test|⇒  touch index.html
~/test|⇒  touch style.css
~/test|⇒  mkdir css
~/test|⇒  mv style.css css
~/test|⇒  ls -al
total 0
drwxr-xr-x   5 rschweppes  staff   170 20 мар 11:11 .
drwxr-xr-x+ 86 rschweppes  staff  2924 20 мар 11:12 ..
drwxr-xr-x   3 rschweppes  staff   102 20 мар 11:11 css
-rw-r--r--   1 rschweppes  staff     0 20 мар 11:11 index.html

Клепает-клепает, а потом решает сделать вторую версию вёрстки из первой в подпапке v2, но не с нуля, а из копии этих файлов.

Для этого надо создать эту папку и скопировать в неё все файлы:

~/test|⇒  mkdir v2
~/test|⇒  cp -R * v2

В результате этой, на первый взгляд, логичной команды получаем паузу и такой результат:

Произошло следующее: папка v2 начала бесконечно копироваться в саму себя, создав длинное дерево

Так работает рекурсивный вызов команды cp, который, очевидно, нам не подходит.

Решение — rsync с параметром ‐‐exclude:

~/test|⇒  rsync -a --exclude=v2 * v2
~/test|⇒  tree
.
├── css
│   └── style.css
├── index.html
└── v2
    ├── css
    │   └── style.css
    └── index.html

3 directories, 4 files

И даже подпапку v2 заранее создавать не надо.

Кстати, если мы захотим не скопировать, а переместить содержимое папки в подпапку командой mv, получим более ожидаемый результат:

~/test|⇒  mv * v2
mv: rename v2 to v2/v2: Invalid argument

~/test|⇒  tree
.
└── v2
    ├── css
    │   └── style.css
    └── index.html

2 directories, 2 files

Так-то.

7 марта 2015, 7:55

Удалил Pocket

До свидания, Pocket. С тобой было хорошо, пока в метро не появился вай-фай.

27 февраля 2015, 0:47

Наушники — это классно

Иду от метро до автобусной остановки, вижу издалека, что 178-й уже приехал и людей набирает. Эх, думаю, сейчас уедет, нового ждать надо. И неспеша иду к остановке.

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

Зашёл и увидел странное: девушка, находясь уже за турникетом, многократно прислоняла «Тройку» к сканеру, а он в ответ загорался красным и уведомлял о блокировке в одну минуту.

Я прошел через турникет, потом мимо неё в середину салона и вытащил наушник, чтобы понять, что происходит.

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

Для предотвращения правонарушений и в качестве дополнительного напоминания пассажирам о правилах проезда в наземном транспорте действует задержка последующего прохода: по карте «Тройка», по билетам «ТАТ» с лимитом поездок, безлимитным «ТАТ» и «Единый», «туристическому» «Единому» на 1 сутки — 3 минуты; по билетам с лимитом поездок «Единый» и «90 минут»  — 10 минут.

Вопросы о порядке обращения, считывания, действия билетов

Но трёхминутный лимит всё испортил, а я зашёл как раз на последней минуте, когда в автобусе воцарилась атмосфера напряга, и девушка при этом непрерывно переспрашивала водителя: «А через минуту можно прислонить?.. Ну через минуту-то можно прислонить?.. Прислонить через минуту можно?..»

Водителя слышно не было, он тихонько сидел и не высовывался. Но и не трогался.

Наконец, минута прошла, сканер радостно пикнул, девушка крутанула турникет рукой, и народ приготовился ехать.

А водитель не приготовился. Когда девушка спокойно прошла в салон к своему приятелю, водитель вышел из кабинки, нацепив язвительное лицо, и хриплым голосом принялся уличать девушку в том, что она прошла через вход для инвалидов. Мол, ты что, инвалид, а?

(Зачем, дядя? Что ты делаешь? Для чего ты это говоришь? Чего ты хочешь добиться от этих людей?)

Я стоял ближе к концу автобуса, и деталей разговора не уловил, но в какой-то момент включился дагестанец и начал что-то отвечать водителю, который к тому моменту уже высказался, сел в кабину, закрыл двери и поехал.

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

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

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

(Господь мой и Бог мой, на дворе 23:00, автобус хоть и не забит, но все сидячие места заняты утомлёнными рабочим днём людьми, которые хотят просто приехать домой. Да, какая-то девочка ошиблась, задержала автобус на три минуты, но затем искренне пыталась исправиться и исправилась, потратив таки одну поездку с «Тройки» и, возможно, даже извинившись. Что сейчас происходит?)

В итоге недоразумение, порождённое неадекватными правилами пользования транспортом (почему можно заходить только в первую дверь?) и проездным документом (почему второму человеку обязательно иметь свой проездной и нельзя воспользоваться билетом товарища?) вылилось в лютый ад длиной в три остановки.

Я не переношу неконструктивных диалогов, поэтому воткнул наушники, сделал погромче, и просто смотрел в окно.

(Пффф... Никого ведь не смущает, что я тут молча стою между этими ребятами и не участвую в их празднике жизни?)

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

На третьей остановке они друг друга вытащили на улицу. Девушке, судя по всему, деваться было некуда, и она тоже вышла.

«Полярные точки зрения» встали друг перед другом на остановке, бранясь и слегка толкаясь.

Девушка лихорадочно что-то искала в айфоне и тыкала им в приятеля, пытаясь воззвать к его разуму.

(Что она открыла в телефоне? Фейсбук? Почему она тыкает телефоном в парня? Почему парниша держит красномордого... за руку?)

Автобус поехал дальше.

Кто-то из пассажиров продолжал сетовать, кто-то был озадачен сложившейся ситуацией, а большинство сидело спокойно и молчало так же, как и в начале пути. Так же, как и я.

В общем, наушники — это классно.

UPD. Возможно, там была не «Тройка», а «ТАТ», я в них плохо разбираюсь.

24 февраля 2015, 23:47

Идея: RAM-диск (когда нет SSD)

На работе я пользуюсь аймаком, в котором всё хорошо, кроме жесткого диска. Да, там нет ССД, нет Фьюжн-драйва, зато много оперативки и хороший процессор.

В основном я программирую проекты, которые лежат под локальным Апачем, и, если папка проекта большая (1-2 Гб), то и поиск по файлам долгий, и Апач подбуксовывает, и Гит захлёбывается.

Поэтому у меня возникла идея: отчего бы не использовать прелести оперативной памяти в виде RAM-диска для проекта, с которым работаешь прямо сейчас?

Сценарий скрипта или софтины прост:

  1. Смотрим, сколько занимает папка проекта.
  2. Делаем рамдиск размером с неё, но с некоторым запасом, например, в 512 Мб. Или округлить в большую сторону до 512 Мб.
  3. Переименовываем оригинальную папку, делаем рядом пустую со старым названием.
  4. Монтируем рамдиск в пустую папку (при этом надо предусмотреть защиту от резервного копирования и поисковой индексации).
  5. Копируем в неё все файлы проекта, включая папку Гита.
  6. Работаем с этой папкой в любимом редакторе, Апач ликует, Гит подыгрывает.
  7. Синхронизация изменений:
    1) в первой версии полная синхронизация по тычку либо после окончания работы с проектом,
    2) во второй версии синхронизируется каждый файл в фоне сразу после его изменения, а-ля дропбокс.
  8. Окончание работы: последняя синхронизация, чтоб ничего совсем не потерять, размонтирование рамдиска (и параллельная очистка памяти), удаление папки рамдиска, переименовывание папки проекта к изначальному названию.

Плюсы-минусы-подводные камни?

Ctrl + ↓ Ранее