Smartians — переходное звено между обычными вещами и умным домом.
Набор DIY компонент для превращения обычных приборов и вещей в умные: кнопки, крутилки, дёргалки и так далее. Неизвестно, как это будет вести себя в реальной жизни, но как концепт и база для дальнейших разработок очень круто.
http://frolicstudio.com/portfolio/smartians/
Набор DIY компонент для превращения обычных приборов и вещей в умные: кнопки, крутилки, дёргалки и так далее. Неизвестно, как это будет вести себя в реальной жизни, но как концепт и база для дальнейших разработок очень круто.
http://frolicstudio.com/portfolio/smartians/
Бюро Развития Гданьска раз в несколько лет организовывает аэрофотосъёмку города, по результатам которой можно посмотреть, как менялся город за последние 10 лет. Фотографии отличной детализации, карты ни капли не тормозят, сделано очень круто.
Сравнение по годам: http://gdansk.retromapy.pl
Фотографии с четырёх сторон (и ещё сверху): http://gdansk.ukosne.pl
Сравнение по годам: http://gdansk.retromapy.pl
Фотографии с четырёх сторон (и ещё сверху): http://gdansk.ukosne.pl
Когда ты публикуешь обновление приложения для звонков и не подумал над формулировкой.
Кажется, я старею и черствею. Возвращался домой на машине, опять долго искал в бардачке пульт от гаражных дверей — решил, что было бы здорово собрать на Arduino или Raspberry Pi штуку, которая бы при подъезде автоматически бы открывала ворота. Погуглил инструкции, разобрался в современных bluetooth-чипах, понял, что у меня пульт со сменным кодом, то есть просто так отправить сигнал по 433МГц не получится, подумал, что розетки рядом с кладовкой в гараже тоже нет, а от лампочки вести питание совсем колхоз, потом всё-таки решил разобраться с BT чипами для Ардуино, чтобы запитать от аккумулятора, но там всё хардкорно.
В общем, провёл так два часа, насытился и подумал, что просто прикреплю в укромном месте около руля пульт на двусторонний скотч.
В общем, провёл так два часа, насытился и подумал, что просто прикреплю в укромном месте около руля пульт на двусторонний скотч.
Написал небольшой post-mortem по перезапуску всех наших сайтов (vc.ru, TJournal и DTF) на новой версии платформы, которую мы разрабатываем.
https://tjournal.ru/team/81131-osnova-2-0
https://tjournal.ru/team/81131-osnova-2-0
Довольно интересная история, мне кажется — Danny van Kooten пишет, что два года назад они переписали сайт с Laravel на Go, потому что Go крутой (это правда), но сейчас переписали с Go обратно на PHP (Symfony 4), потому что поддерживать PHP, когда у тебя обычный сайт, намного проще, чем Go.
У меня у самого мысль переписать наши сайты на Go периодически проскакивает, но гоню её как могу — потому что с точки зрения бизнеса это ужасная затея. Поэтому тешим себя переписывая небольшие сервисы, в которых, конечно, купаемся в статической типизации и горутинах.
https://dannyvankooten.com/from-go-back-to-php-again/
У меня у самого мысль переписать наши сайты на Go периодически проскакивает, но гоню её как могу — потому что с точки зрения бизнеса это ужасная затея. Поэтому тешим себя переписывая небольшие сервисы, в которых, конечно, купаемся в статической типизации и горутинах.
https://dannyvankooten.com/from-go-back-to-php-again/
Awesome-подборка заблуждений разработчиков.
Например:
‣ В каждом дне 24 часа (нет, иногда мы переводим часы)
‣ Окей, в каждом дне в UTC ровно 24 часа (нет, бывают leap seconds)
‣ !def!xyz%abc@example.com — это невалидный email (ха-ха, валидный)
‣ У каждой страны есть столица (у Швейцарии нет)
‣ В каждом адресе есть название улицы (во многих небольших населённых пунктах в Европе нет названий у улиц)
‣ У человека есть имя (да и вообще, привет вашей БД, в которой есть поля first_name и last_name)
https://github.com/kdeldycke/awesome-falsehood
Например:
‣ В каждом дне 24 часа (нет, иногда мы переводим часы)
‣ Окей, в каждом дне в UTC ровно 24 часа (нет, бывают leap seconds)
‣ !def!xyz%abc@example.com — это невалидный email (ха-ха, валидный)
‣ У каждой страны есть столица (у Швейцарии нет)
‣ В каждом адресе есть название улицы (во многих небольших населённых пунктах в Европе нет названий у улиц)
‣ У человека есть имя (да и вообще, привет вашей БД, в которой есть поля first_name и last_name)
https://github.com/kdeldycke/awesome-falsehood
GitHub
GitHub - kdeldycke/awesome-falsehood: 😱 Falsehoods Programmers Believe in
😱 Falsehoods Programmers Believe in. Contribute to kdeldycke/awesome-falsehood development by creating an account on GitHub.
Мне очень нравится такой подход к дизайну — его не всегда удаётся воплотить в реальности, но очень важно периодически смотреть на свой продукт чужими глазами.
Прекрасно понимаю, что предложенная версия дизайна — утопия (или антиутопия), но не могу отделаться от ощущения, что страница, которую каждый из нас видит по несколько раз в день могла бы быть действительно лучше.
http://tonsky.me/blog/github-redesign/
P.S. Статистика там в конце не нужна, лучше расширить столбец со списком файлов.
Прекрасно понимаю, что предложенная версия дизайна — утопия (или антиутопия), но не могу отделаться от ощущения, что страница, которую каждый из нас видит по несколько раз в день могла бы быть действительно лучше.
http://tonsky.me/blog/github-redesign/
P.S. Статистика там в конце не нужна, лучше расширить столбец со списком файлов.
Может быть вы уже встречали этот проект, но почти наверняка ещё не использовали в работе, а между тем, Now становится всё популярнее.
https://zeit.co/now
Serverless — это такое логическое продолжение облачного хостинга с оплатой за ресурсы, который в какой-то момент приостановил своё развитие, будучи вытесненным дешёвыми VPS (спасибо, DIgitalOcean).
Now позволяет вам буквально закинуть в облако исходный код вашего приложения (node.js, Go, PHP, Python etc) или просто статику, а деплоем, аптаймом, масштабированием займётся Now. Вы будете платить только за непосредственно выполнение каждого запроса — есть бесплатный тариф с ограничениями и платный с оплатой за Гигабайто-секунды памяти и время исполнения скрипта (но там довольно низкие цены).
Под капотом там огромное количество фич — например, каждая ветка автоматически деплоится на отдельный домен, который можно тестировать отдельно от всего. Автоматический встроенный CDN.
Всё это приводит нас к тому, что любое приложение, которое не требует сложной БД или инфраструктуры может быть запущено в serverless. Например, можно поднять релиз-сервер для обновления mac-приложений, личный блог. Мой любимый пример, от которого взрывается мозг — serverless-скриншотилка сайтов.
Ещё примеры
Год назад я писал, что статические генераторы сайтов — это next big thing. И я до сих пор так считаю, только теперь, очевидно, они будут развиваться вместе с serverless. Миллионы небольших проектов могут быть довольно просто мигрированы в это облако версии 2.0 избавив разработчика от большей части головной боли, связанной с проектом.
https://zeit.co/now
Serverless — это такое логическое продолжение облачного хостинга с оплатой за ресурсы, который в какой-то момент приостановил своё развитие, будучи вытесненным дешёвыми VPS (спасибо, DIgitalOcean).
Now позволяет вам буквально закинуть в облако исходный код вашего приложения (node.js, Go, PHP, Python etc) или просто статику, а деплоем, аптаймом, масштабированием займётся Now. Вы будете платить только за непосредственно выполнение каждого запроса — есть бесплатный тариф с ограничениями и платный с оплатой за Гигабайто-секунды памяти и время исполнения скрипта (но там довольно низкие цены).
Под капотом там огромное количество фич — например, каждая ветка автоматически деплоится на отдельный домен, который можно тестировать отдельно от всего. Автоматический встроенный CDN.
Всё это приводит нас к тому, что любое приложение, которое не требует сложной БД или инфраструктуры может быть запущено в serverless. Например, можно поднять релиз-сервер для обновления mac-приложений, личный блог. Мой любимый пример, от которого взрывается мозг — serverless-скриншотилка сайтов.
Ещё примеры
Год назад я писал, что статические генераторы сайтов — это next big thing. И я до сих пор так считаю, только теперь, очевидно, они будут развиваться вместе с serverless. Миллионы небольших проектов могут быть довольно просто мигрированы в это облако версии 2.0 избавив разработчика от большей части головной боли, связанной с проектом.
W3C сегодня официально опубликовали WebAuthn — новый стандарт для универсальной аутентификации в вебе, который позволит нам избавиться от паролей. Список компаний, которые его поддержали или поддержат внушительный: Google, Microsoft, Apple, Alibaba, IBM, Intel, Mozilla и другие.
Вкратце смысл стандарта такой: вы сможете аутентифицироваться на сайте, который поддерживает WebAuthn, приложив палец к считывателю отпечатков на макбуке, пройдя биометрическую проверку на своём телефоне или с помощью FIDO2 hardware-токена.
Google Chrome и Mozilla Firefox уже добавили поддержку, Apple тестирует её в Safari Developer Preview. Dropbox, например уже интегрировали.
Демо — там прям можно зарегаться по отпечатку пальца, обязательно попробуйте.
Вкратце смысл стандарта такой: вы сможете аутентифицироваться на сайте, который поддерживает WebAuthn, приложив палец к считывателю отпечатков на макбуке, пройдя биометрическую проверку на своём телефоне или с помощью FIDO2 hardware-токена.
Google Chrome и Mozilla Firefox уже добавили поддержку, Apple тестирует её в Safari Developer Preview. Dropbox, например уже интегрировали.
Демо — там прям можно зарегаться по отпечатку пальца, обязательно попробуйте.
YouTube
Go Beyond Passwords with WebAuthn
Supported by all the leading browsers and web platforms, WebAuthn greatly simplifies and standardizes the integration of strong authentication into web and mobile applications. Learn more about how the YubiKey works in conjunction with WebAuthn to secure…
Но не стоит обольщаться, конечно. До сих пор это штука для тех у кого есть USB-токен. Потому что пока что зарегистрировавшись, например, на макбуке через биометрическую авторизацию, авторизоваться на андроид-телефоне по отпечатку вы не сможете. На самом деле даже на айфоне не сможете, потому что Safari ещё не поддерживает WebAuthn.
В общем, самый большой вопрос, на который я пока не нашёл ответа — как иметь универсальный hardware/biometrical токен, который будет работать на любом устройстве.
В общем, самый большой вопрос, на который я пока не нашёл ответа — как иметь универсальный hardware/biometrical токен, который будет работать на любом устройстве.
Продолжая тему статических генераторов сайтов. У меня есть блог, который когда-то давно работал на Ghost, но потом переехал на связку Hugo + Forestry. Всё было хорошо кроме того, что сайт выглядел просто ужасно. К сожалению, до сих пор толковых минималистичных шаблонов для Hugo не появилось, поэтому пришлось вооружиться документацией и парочкой свободных вечеров, чтобы освежить внешний вид. Новый дизайн вдохновлён блогом Никиты Прокопова и свёрстан с помощью мини-фреймворка Picnic.
Решил также отказаться от Forestry и выбрал вместо него Netlify (Now тоже пробовал, но Netlify более заточен под Hugo). Помимо всяких стандартных штук он умеет даже интегрировать на статический сайт простые формы, запускать AWS Lambda функции и даже логинить юзеров. Выглядит интересно, мне понравилось, поэтому блог сейчас хостится там.
Плюс ко всему я сверстал сайт сразу в AMP, то есть у него даже нет не-AMP версии. Верю, что это увеличивает скорость, ну и мне не нужно заниматься всякими штуками вроде Lazy Load для картинок.
https://chechannel.com/
Решил также отказаться от Forestry и выбрал вместо него Netlify (Now тоже пробовал, но Netlify более заточен под Hugo). Помимо всяких стандартных штук он умеет даже интегрировать на статический сайт простые формы, запускать AWS Lambda функции и даже логинить юзеров. Выглядит интересно, мне понравилось, поэтому блог сейчас хостится там.
Плюс ко всему я сверстал сайт сразу в AMP, то есть у него даже нет не-AMP версии. Верю, что это увеличивает скорость, ну и мне не нужно заниматься всякими штуками вроде Lazy Load для картинок.
https://chechannel.com/
Что вернёт этот кусок кода? Написано на PHP, но актуально и для JS.
Правильный ответ через 30 минут.
Правильный ответ через 30 минут.
$left = 11;
$r1 = 2;
$r3 = 1;
if ($left === $r1 | $r3) {
return '✅';
} else {
return '❌';
}
Если вы, как и я, считали, что код вернёт
Всё дело в том, что компилятор сначала сравнит 11 и 2 (
Так это работает в PHP и JS, а вот в Go работает как ожидается — сначала делается побитовое сложение и уже потом сравнение. Вот так.
false (❌), то вы ошибаетесь, будет true.Всё дело в том, что компилятор сначала сравнит 11 и 2 (
false) и потом сложит побитово false | 1 и получит 1.Так это работает в PHP и JS, а вот в Go работает как ожидается — сначала делается побитовое сложение и уже потом сравнение. Вот так.
Купил внешний HDD, чтобы бэкапить макбук через Time Machine, подключил, отформатировал, запустил бэкап. Каждый раз, как он доходил до половины, он прерывался с ошибкой:
Я его ещё дважды отформатировал, гуглил решения на форумах, несколько раз проверил на ошибки, всё без толку. Готовился к тому, чтобы возвращать его по гарантии, но решил напоследок погуглить ещё разок. В общем, оказалось, что проблема не в диске, а в макоси, ловите команду, которой можно посмотреть последние ошибки бэкапа, в моём случае там был какой-то некопируемый файл, который я просто удалил, и всё заработало.
An error occurred while copying files. The problem may be temporary. If the problem persists, use Disk Utility to repair your backup disk.Я его ещё дважды отформатировал, гуглил решения на форумах, несколько раз проверил на ошибки, всё без толку. Готовился к тому, чтобы возвращать его по гарантии, но решил напоследок погуглить ещё разок. В общем, оказалось, что проблема не в диске, а в макоси, ловите команду, которой можно посмотреть последние ошибки бэкапа, в моём случае там был какой-то некопируемый файл, который я просто удалил, и всё заработало.
log show --predicate 'subsystem == "com.apple.TimeMachine"' --info --last 4h | grep ErrorПросто послушайте, как звучит гендерно-нейтральный голос. Лично я пару секунд слышу его как женский, потом как мужской и потом снова как женский. Было бы круто, если бы Siri или Гугл-ассистент заговорили таким голосом, всё-таки не очень понятно, почему голос виртуальных помощников по умолчанию должен быть женским (вернее, понятно, почему, и понятно, почему с этим пытаются бороться).