Как-то давно я просматривал опции для команды ping и обратил внимание, что можно задавать размер ICMP пакета. "Хм", — подумал я: "Можно же сложить в сам пакет какую-то полезную нагрузку". Эта идея время от времени всплывала у меня в голове, но что именно можно хранить в пакете ICMP придумать не удавалось. Однако, недавно пришло понимание, что если хранить данные в ICMP пакете, то они не будут занимать место в оперативной памяти! То есть можно сделать key-value хранилище, где все данные будут храниться внутри сети.
Разработчик
Действительно умный дом в 2123 году
Сейчас вокруг понятия «Умный дом» выросло уже очень много всего, от совершенно бесполезного управления яркостью лампы через интернет, до вполне сносных автоватизированных систем. Однако после ознакомления с представленными системами всё же не покидает чувство некоторой обманутости. Дом, может оказаться, бесспорно атоматизированным, но как-то совершенно не умным.
В этой небольшой статье я попытаюсь сформулировать то, каким должен быть умный дом в далеком будущем. Когда технологии достигнут таких высот, что позволят изменять заложенное поведение, инстинкты и строение животных. А так же программировать поведение.
Симулякр социализма и кто будет новым Лениным
В моей статье я расскажу о признаках, которые вызывают у современных европейцев ощущение того, что они живут в условиях социализма. Я также перечислю то, чего не хватает, чтобы подтвердить эту гипотезу. Кроме того, я раскрою два условия, необходимых для установления коммунизма. Наконец, я объясню, почему AI на базе GTP4+ может стать новым Лениным.
Codepast people – programmers’ sunset
— Glitchy couch! — Anton exclaimed, yet another time crushing down his fingers by heavy coach he and Sergey were pulling for 14 storeys already.
— ‘Glitchy’? — Sergey asked — have you been coder in the past too?
They’ve been working almost a week together, but Sergey would have never suspected he was coder in the past. Lean and muscular Anton did not look the part at all.
— I had to in my student years, — Anton answered, abashed.
— Relax! One of us. Layout, three years and JS for every browser out there, — Sergey perked up, pushed the couch and pressed it a bit forcefully on Anton.
Mocking RESP API in 20 minutes via Yakbak
Imagine this: you are an ordinary frontend developer. When you open your mailbox you found a message — tomorrow DevOps team will make an optimization with Kubernetes. You are experienced developer and you know that environment operation test might go sideways. Test environment is crucial for your job as frontend developer and you don’t want to miss a whole day on a job, so there are two possible solutions present:
- Setup all microservices on your laptop
- Prepare mocks for API
I will describe how to mock REST API request via Yakbak.
Кешируем API ответы для frontend приложения с помощью Yakbak
Представьте себе типичную ситуацию: вы frontend разработчик в обычный компании. После сытного обеда вы лениво скроллите Хабр и смотрите Ютуб. Вдруг в чат прилетает сообщение от девопсов: "Ребята, мы планируем сегодня вечером разгрузить мастер и перенести admission контроллер на ноду и чтобы два раза не вставать всем подам выделим 50 CPU. Завтра всё будет работать как обычно, но быстрее!"
Вы понимаете, что скорее всего всё пойдёт не так и штатной работы микросервисов можно ожидать не раньше чем через пару дней. Но есть более важная для вас задача: на сегодняшнем митинге вы обещали тимлиду показать МВП фичи уже послезавтра.
Остаётся два варианта: поднять зоопарк микросервисов на своей машине прямо сейчас (долгий кровавый путь) или закешировать все необходимые для frontend приложения API запросы.
Предлагаю простой вариант использования второго варианта.
Новоглифы или иероглифы будущего
Как же приятно вдыхать воздух родного города после длительного перелёта! Утомительная командировка подошла к концу, солнце блестит в фюзеляже самолёта, а душа поёт и радуется. «Пожалуй, это лучший момент для селфи», — улыбнулся я фронтальной камере моего смартфона.
Экспресс от аэропорта слегка покачивался, навевая сладкую дрёму. За окном мелькали березки вперемешку со строениями непонятного назначения, назойливая мысль о том, что что-то новое и неуловимое появилось в моём городе никак не прогонялась. Я допил капучино, смял билет, запихнул его в стакан от кофе (всё равно его уже никто не будет проверять) и оторопел: на стакане были надписи на четырёх языках.
Подхалим
— А ключи?
— Дверь тебя сама узнает, — сказал Алексей, хлопнул дверью такси и уехал в аэропорт.
Конечно, я знал, что Алекс любит умные вещи, но, чтобы настолько умные!
Я подхватил рюкзак и направился к дому, уже вечерело, и перспектива остаться на улице в темноте меня не вдохновляла.
— Добрый вечер, Сергей! Отлично выглядите! — сказала дверь и открылась.
Прихожая была хорошо освещена, у входа ютились небольшая табуретка, полочки для обуви и тумба с зеркалом.
— Ваша обувь совсем не пахнет и хорошо подходит к вашему ремню! — донеслось откуда-то снизу, когда я бросил свои кроссовки на полочки для обуви. «Это было неожиданно. Что тут еще говорящее?» — не успел подумать я, как зеркало сообщило:
Only 39% of the functions in node_modules are unique in the default Angular project
Only 39% of the functions in node_modules
are unique in the default Angular project created by ng new my-app
.
I think the developers of open source solve problems in the same ways, because they study the same algorithms. Well, why be honest, they copy the popular solutions from StackOverflow also.
Только 39% функций в node_modules уникальны в дефолтном Angular проекте
39% — это количество уникальных функций в папке node_modules
в дефолтном Angular проекте, созданном командой ng new my-app
.
Мне было интересно посмотреть, сколько похожих функций существует в node_modules. Ведь наверняка же разработчики открытых библиотек решают проблемы одинаковыми способами, так же изучают одни и те же алгоритмы, ну и, чего кривить душой, копируют одни и те же решения со StackOverflow.
А что если перейти на Удобный Шестидневный календарь?
Примерно месяц назад я добавлял в интерфейс кнопку, которая устанавливала дату календаря, соответствующую понедельнику прошлой недели. В процессе разработки я понял, что было бы хорошо изменить требования, потому что реализовывать их достаточно сложно. Только менять требование заказчика как-то не очень хочется. А что если изменить календарь так, чтобы он стал удобный и для устного счета и для программирования?
Предложение по новому календарю
Примем, что в году 360 дней. В каждом месяце установим ровно по 30 дней. То есть 5 недель по 6 дней. Год начинается с понедельника, а каждый месяц будет начинается с понедельника и заканчивается субботой.
Оставшиеся 5 (в високосный год 6) дней находятся вне календаря. Назовём эту вневременную неделю "Предновогодней":
Число 360
имеет следующие простые делители 2
2
2
3
3
5
, то есть очень удобно для вообще любых математических манипуляций, да и 360° всем известно.
Как программист читает «Происхождение видов» Дарвина
Для лучшей демонстрации этой идеи, я взял параграф из книги Дарвина и биологические термины заменил на термины из мира разработки. Сами предложения остались оригинальными. Язык немного специфичный, но в целом, думаю, понятный.
Глава V. Законы вариации. Краткий обзор
Наше незнание законов вариации глубоко. Ни в одном из 100 случаев мы не можем определить причину, почему та или другая функция изменилась. Но во всех случаях, где мы обладаем средствами для сравнения, оказывается, что образование меньших различий между разновидностями одного компонента вызывается действием тех же законов, что и больших различий между компонентами одной библиотеки. Перемены в условиях обычно вызывают только колеблющуюся вариабельность, но иногда ведут к прямым и определенным результатам: и эти результаты с течением времени могут сделаться более сильно выраженными, хотя в пользу этого еще не имеется достаточного доказательства. Привычка – в образовании конституциональных особенностей, использование – в улучшении функции и неиспользование – в их деградации и уменьшении во многих случаях кажутся мощными в своем действии.
Сезоны сменяют друг друга всё раньше из года в год в Кемерово
В очередной раз поежившись, я полностью застегнул куртку и ускорил шаг, торопясь на работу. На работе горячий кофе, тёплый системный блок и интересные задачи. Но не они крутились у меня в голове, пока холодный ветер шарил у меня за пазухой, а небольшое смутное подозрение относительно смены сезонов. Необходимо было проверить, действительно ли потепление и похолодания приходят вовремя, а не раньше? Может быть сезоны сдвинуты?
Само собой разумеется, по-прибытии на работу я и думать забыл о своем смутном подозрении. Но оно не рассеялось окончательно, а периодически всплывало в голове, когда, например, я страдал от зноя в мае или видел желтеющее дерево в июле.
Итак, толком не следуя принципу, что нужно начать делать задумку в первые 48 часов, спустя много месяцев я таки провел небольшое исследование для проверки своего подозрения. Напоминанием стала статья на Гисметео.
Типичное использование Observable объектов в Angular 4
Представляю вашему вниманию типичные варианты использования Observable объектов в компонентах и сервисах Angular 4.
Подписка на параметр роутера и мапинг на другой Observable
Задача: При открытии страницы example.com/#/users/42
, по userId
получить данные пользователя.
Решение: При инициализации компоненты UserDetailsComponent
мы подписываемся на параметры роутера. То есть если userId
будет меняться — будер срабатывать наша подписка. Используя полученный userId
, мы из сервиса userService
получаем Observable
с данными пользователя.
// UserDetailsComponent
ngOnInit() {
this.route.params
.pluck('userId') // получаем userId из параметров
.switchMap(userId => this.userService.getData(userId))
.subscribe(user => this.user = user);
}
Соотношения реальной температуры и прогноза Яндекс.Погоды
Утром, когда завтракаю, почти ежедневно просматриваю Яндекс.Погоду и у меня переодически возникает чувство дежавю, но только наоборот. Глядишь — одна температура на выходные указана, а на другой день смотришь — уже совем другие показатели температуры обещаны. Потихоньку начинаешь сомневаться в своей памяти (30 лет — это же уже четвёртый десяток начался). Но чтобы окончательно не пасть духом — я решил проверить, насколько прогноз соотносится с реальной температурой.
Голубая линия — это реальная температура. Оранжевая область — это диапазон предсказаний.
Чего хотят координаторы доменных зон?
- Владелец домена;
- Администратор;
- Технический контакт;
- Контакт для счетов;
- Группа nameserver'ов.
Но некоторым координаторам доменных зон весьма скучно и, забавы ради, они выдумывают задачки для владельцев доменов и разработчиков. Расскажу о дополнительных данных для регистрации домена, которые нужно складывать в блок extension.
Домены: .cat, .scot, .gal, .eus
Текстовое поле: intendedUse — для описания цели использования домена. Мало ли что!
Домены: .nz
Текстовое поле: authCode
Если ты хочешь зарегистрировать hobbit.nz и есть уже домен hobbit.co.nz, то будь добр, введи код авторизации, иначе ты получишь… ничего не получишь (уточнил, сейчас требование уже снято, но пункт оставил в качестве примера).
А то распоясались
Современный гражданин плохо умеет сосредотачиваться на каком-либо деле, причин этому множество. Одной из них является распространение соцсетей, интернет ящиков, мессенджеров. Хорошим решением будет ограничение количества аккаунтов шестью. Дело в том, что редкий человек может держать в голове больше 6 объектов и не испытывать при этом стресса. Учет, то есть регистрацию в различных сервисах, предлагается осуществлять через госуслуги.
Учимся разбираться в искусстве программирования
Классика
Самый обычный код.
$size = sizeof($arr)-1;
for ($i = $size; $i>=0; $i--) {
for ($j = 0; $j<=($i-1); $j++)
if ($arr[$j]>$arr[$j+1]) {
$k = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $k;
}
}
Барокко
Барокко (итал. barocco — «причудливый», «странный», «склонный к излишествам»)
Барокко свойственны контрастность, напряженность, стремление к величию и пышности как в именовании, так и в комментариях, к слиянию разных стилей кодирования. Обычно уже на продакшене обнаруживаются скрытые «детонаторы».
Чаще всего используется в: JavaScript, C++, Java.
$SIZE = SIZEof($A_R__R)-1;
for ($i = $SIZE; $i>=0; $i--) {
for ($j = 0; $j<=($i-1); $j++)
if ($A_R__R[$j]>$A_R__R[$j+1]) {
//используем хитрый манёвр
$A_R__R[$j+1] = $A_R__R[$j]; + $A_R__R[$j+1];
$A_R__R[$j] = $A_R__R[$j+1] - $A_R__R[$j];
$A_R__R[$j+1] = $A_R__R[$j+1] - $A_R__R[$j];
}
}
Помогаем роботу-сортировщику на почте
Короткая предыстория
Беседовал я некоторое время назад со знакомым роботом. Устроился он временно на Почту России сортировщиком писем. Работёнка не пыльная, смотрит индекс на письме и помещает их в нужное отверстие. Но есть проблема с письмами, у которых в индексе сделана опечатка. На выяснение правильного индекса уходит много времени и пиво успевает выдыхаться.
Заноза в голове
После того разговора прошло уже достаточно времени, но дилемма почтовых индексов не выходила у меня из головы.
Казалось бы — что еще тут можно улучшить? Попробуем преобразить вид цифр индекса таким образом, чтобы даже если одна ошибка попадётся, ее можно было автоматически выявить и исправить.
Оказывается улучшить можно.
Попробуем нарисовать новый вид цифры 0.
Если интересно, зачем и почему — прошу под кат.
Information
- Rating
- 3,522-nd
- Location
- Новосибирск, Новосибирская обл., Россия
- Date of birth
- Registered
- Activity