Как стать автором
Обновить
0
0
Анатолий Облаухов @anmilez

Пользователь

Отправить сообщение

Превращаем квартиру от застройщика в умную

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров26K

Мы много рассказываем об умных домах, но как насчет умной квартиры?

Сказано – сделано! Мы посетили типичную квартиру от известного застройщика, которую интегратор превратил в умную.

Чем такая квартира отличается от обычной? Какие умные функции выбрал хозяин? Все это вы узнаете в нашей новой статье. Ныряйте под кат

Читать далее
Всего голосов 39: ↑23 и ↓16+13
Комментарии79

Единый формат времени для приложения

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров9.6K

Данная статья была написана мной при работе в компании. Будет полезна для понимания времени разработчикам и аналитикам, а также для организации контрактов как best practice. Как выяснилось на практике, далеко не все представляют себе часовые пояса в разработке.

Команда работала с фреймворком Angular, ввиду этого будет он и упомянут. Утверждения правдивы и для React/Vue/... в схожих кейсах.

Читать далее
Всего голосов 1: ↑1 и ↓0+1
Комментарии14

Заблуждения программистов относительно времени

Время на прочтение3 мин
Количество просмотров90K
За последние пару лет я потратил много времени на дебаггинг чужих тестов. Это была интересная работа, иногда расстраивающая, но всегда поучительная. Кто-то может подумать, что в тестах нет багов, но конечно баги есть везде, и тесты не исключение.

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

На самом деле, я повидал так много заблуждений, которые оставляют след в чужих (и моих собственных) программах, что посчитал полезным составить список самых частых проблем.
Читать дальше →
Всего голосов 241: ↑218 и ↓23+195
Комментарии216

Мифы нашего времени: генетически модифицированные организмы. Так ли страшен черт?

Время на прочтение21 мин
Количество просмотров573K
Человеку давно свойственно интересоваться окружающим миром и находить объяснения тому окружающим вещам и событиям. Собственно, без этого человек не стал бы человеком. На базе верований, мифов развивалась сначала религия, а потом — и современная наука, которая уже весьма успешно объясняет окружающий мир от очень малых до впечатляющих масштабов. Но всегда оставались люди, которые противились прогрессу и распространяли устоявшиеся мифы, уверяя, что они отвечают на все вопросы и незачем двигаться дальше. Гром гремит — это Перун-громовержец злится; кто-то заболел — это Бог его наказывает, вот тебе объяснения, отстань, не задавай вопросов, а лучше помолись.
Современные мифы более глубоки и обычно связаны с наукой. Причины понятна — наука развилась (особенно в последнее время) до такой степени, что часто нужен колоссальный объем знаний, чтобы просто понять, о чем вообще идет речь. У многих людей этого объема нет или безвозвратно потерян, что и снижает их сопротивляемость к разного рода мифам нашего времени. Миф про вредность пищевых добавок Exxx; миф про полезность натурального и вредность «химии»; миф про врачей-убийц, травящих людей прививками; миф про настолько страшное ГМО, что наклейки с надписью «без ГМО» надо клеить даже на салфетки и на пачки с солью.
Картинка для привлечения внимания
Что такое ГМО? Зачем они нужны? Как велика опасность и польза от их использования? Есть ли доказательства безопасности этих организмов?
Рассуждения дилетанта на тему - под катом
Всего голосов 319: ↑291 и ↓28+263
Комментарии832

Программист учится рисовать. Дневник Емели

Время на прочтение16 мин
Количество просмотров35K
Так получилось, что моим основным хобби на лихой 2020-й год стало освоение ремесла рисования.

Еще в январе я дал себе некое обещание в виде цели к концу года — прокачать навык рисования (звучит конечно абстрактно и совсем не по SMART-у, я думаю, это и повлияло в дальнейшем на то, как я развивал этот навык весь год и что получилось в итоге).

spoiler
В конце года я остался доволен собой и окончательно понял, что я хотел бы прокачиваться и дальше!

image
Так выглядел мой уровень изобразительных навыков в ноябре предыдущего (2019-го) года

Формат подачи данной статьи — это на 95% личный дневник, который я вел в гугл-доке, записывая, что я делал каждый месяц, свои ощущения и как-то фиксируя собственный прогресс — смотрел, сколько работ мне удалось нарисовать и какого они были качества — нравились ли они мне лично или были совсем так себе по исполнению.
Читать дальше →
Всего голосов 105: ↑104 и ↓1+142
Комментарии123

Здравствуй, дорогой я двадцать лет назад

Время на прочтение18 мин
Количество просмотров48K


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

Читать дальше →
Всего голосов 94: ↑88 и ↓6+111
Комментарии113

Картинка, которая одновременно является кодом на Javascript

Время на прочтение6 мин
Количество просмотров62K

Изображения обычно хранятся как двоичные файлы, а файл Javascript по сути является обычным текстом. Оба типа файлов должны следовать собственным правилам: изображения имеют конкретный формат файла, определённым образом кодирующий данные. Для того, чтобы файлы Javascript можно было исполнять, они должны следовать определённому синтаксису. Я задался вопросом: можно ли создать файл изображения, одновременно являющийся допустимым синтаксисом Javascript, чтобы его можно было исполнять?

Прежде чем вы продолжите чтение, крайне рекомендую изучить эту песочницу кода с результатами моих экспериментов:

https://codesandbox.io/s/executable-gif-8yq0j?file=/index.html

Если вы хотите посмотреть изображение и изучить его самостоятельно, то скачать его можно отсюда:

https://executable-gif.glitch.me/image.gif
Читать дальше →
Всего голосов 107: ↑104 и ↓3+138
Комментарии36

Концерт для города с оркестром: кто и зачем записывает звуки повседневной жизни

Время на прочтение4 мин
Количество просмотров3.5K
Вы когда-нибудь задумывались о том, как с течением времени меняется звучание города? Когда-то оно ассоциировалось с криками торговцев и цоканьем копыт по брусчатке. Сегодня экосистему звука «обогатили» трамваи, автомобили и другие транспортные средства. Анализ всего этого многообразия — это целая наука. Ученые оценивают уровень шумового загрязнения, а бизнес использует аудио для совершенствования рабочих процессов — например, ретейлеры записывают то, как продавцы общаются с покупателями. Но некоторые энтузиасты просто стремятся сохранить «слепки нашей повседневности» — звучание всевозможных гаджетов, редких языков и потаенных уголков планеты.

Расскажем о нескольких старых и не очень проектах, формирующих «звуковой архив человечества».

Читать дальше →
Всего голосов 10: ↑9 и ↓1+15
Комментарии8

Последовательное скачивание в uTorrent за 2 клика

Время на прочтение1 мин
Количество просмотров137K
Привет, Хабр!

Прочитав публикацию «uTorrent на страже online просмотра», был удивлен, что до сих пор не опубликован способ включить возможность последовательного скачивания файлов, не прибегая к дополнительному софту вроде BEncode Editor, а просто и быстро — буквально за два клика.

Итак:
Читать дальше →
Всего голосов 29: ↑21 и ↓8+20
Комментарии80

Запуск VPN-сервера за провайдерским NAT'ом

Время на прочтение5 мин
Количество просмотров39K
Статья о том, как мне удалось запустить VPN-сервер за NAT'ом домашнего провайдера (без белого IP-адреса). Сразу оговорюсь: что работоспособность данной реализация напрямую зависит от типа NAT используемого Вашим провайдером, а также роутером.
Итак, возникла у меня необходимость подключаться со своего Android-смартфона к домашнему компьютеру, оба девайса подключены к Интернету через провайдерские NAT'ы, плюсом компьютер подключен через домашний роутер, который тоже NAT'ил соединения.
Классическая схема с использованием арендованного VPS/VDS с белым IP-адресом, а также аренда белого IP-адреса у провайдера не рассматривалась по нескольким причинам.
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии25

7 бесплатных курсов для разработчиков от Microsoft

Время на прочтение5 мин
Количество просмотров82K
Привет, Хабр! Сегодня мы начинаем серию статей, в которую войдет 5 подборок бесплатных обучающих курсов от компании Microsoft. В этой статье у нас самые крутые курсы для разработчиков, которые сильнее всего нравятся программистам.

Кстати!

  • Все курсы бесплатные (вы даже сможете попробовать платные продукты бесплатно);
  • 6/7 на русском языке;
  • Начать обучение можно мгновенно;
  • По окончании вы получите бейдж об успешном прохождении обучения.

Присоединяйтесь, подробности под катом!

Новая серия статей


Следующая серия статей, начало 2020 года


Эта серия статей, 2019 год


Читать дальше →
Всего голосов 35: ↑31 и ↓4+27
Комментарии18

Оптимизация или как не выстрелить себе в ногу

Время на прочтение8 мин
Количество просмотров4.4K

Всем доброго времени суток. Сегодня хочу с вами поговорить об оптимизации. Что это такое, зачем она нужна, и самое главное, как сделать так, чтобы потом не было мучительно больно.


Читать дальше →
Всего голосов 13: ↑9 и ↓4+5
Комментарии13

Браузерная ленивая загрузка изображений (атрибут loading)

Время на прочтение6 мин
Количество просмотров27K


Поддержка встроенной ленивой загрузки изображений и iframe пришла в веб!
Начиная с Chrome 76 версии, вы можете использовать новый атрибут loading для ленивой загрузки ресурсов без необходимости писать для этого дополнительный код или использовать стороннюю JavaScript-библиотеку. Давайте рассмотрим детали.
Всего голосов 17: ↑16 и ↓1+15
Комментарии13

Оптимизация хвостовой рекурсии в JavaScript

Время на прочтение4 мин
Количество просмотров26K
Привет, читатель.

Иногда для решении задачи приходится использовать Рекурсию, в которой есть свои плюсы и минусы. Я столкнулся с проблемой переполнения стека.
Максимальная глубина рекурсии ограничена движком JavaScript. Точно можно рассчитывать на 10000 вложенных вызовов, некоторые интерпретаторы допускают и больше, но для большинства из них 100000 вызовов – за пределами возможностей. Существуют автоматические оптимизации, помогающие избежать переполнения стека вызовов («оптимизация хвостовой рекурсии»), но они ещё не поддерживаются везде и работают только для простых случаев.

Пример рекурсивной функции:
function sum(n) {
  return n === 0 ? 0 : n + sum(n - 1)
}

sum(5) // 1 + 2 + 3 + 4 + 5  = 15
sum(100000) // Error: Maximum call stack size exceeded.

Читать дальше →
Всего голосов 32: ↑28 и ↓4+24
Комментарии32
2

Информация

В рейтинге
Не участвует
Откуда
Зеленоград, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность