Kubectl — основной консольный интерфейс для взаимодействия с Kubernetes и, безусловно, важный инструмент в руках любого администратора/DevOps-инженера, причастного к эксплуатации таких кластеров. Если вы пользуетесь им каждый день и делаете это по-настоящему активно, то, как это свойственно ИТ-специалистам, наверняка задумывались о способах упрощения/автоматизации своих манипуляций. Благо, это мир сисадминов, Open Source и консоли, так что в нём, конечно, уже нашлись и те, кто не только задумывался об этом, но и воплотил свои потребности в жизнь — в виде утилит, доступных теперь и всем «коллегам по цеху». О них и пойдёт речь в этом небольшом обзоре. Читать дальше ->
Kubectl — основной консольный интерфейс для взаимодействия с Kubernetes и, безусловно, важный инструмент в руках любого администратора/DevOps-инженера, причастного к эксплуатации таких кластеров. Если вы пользуетесь им каждый день и делаете это по-настоящему активно, то, как это свойственно ИТ-специалистам, наверняка задумывались о способах упрощения/автоматизации своих манипуляций. Благо, это мир сисадминов, Open Source и консоли, так что в нём, конечно, уже нашлись и те, кто не только задумывался об этом, но и воплотил свои потребности в жизнь — в виде утилит, доступных теперь и всем «коллегам по цеху». О них и пойдёт речь в этом небольшом обзоре. Читать дальше ->
Размышляя об HTML и CSS, вы, наверное, представляете себе их как технологии, которые всегда были вместе. Однако, через годы после того, как в 1989-м Тим Бернерс-Ли создал World Wide Web, CSS ещё и в помине не было. Первоначальные концепции, на которых построен веб, совершенно не предусматривали способов стилизации сайтов.
Вот небезызвестный пост из архивов старых рассылок. Его написал Марк Андриссен в 1994-м. Он приложил руку к созданию браузеров Mosaic и Netscape. В этом материале Андрессен отмечает, что так как не существует способа стилизации веб-сайтов с использованием HTML, единственное, что он может сказать веб-разработчикам, которые задают ему вопросы о графическом дизайне, было: «извиняюсь, но вы попали».
Десятилетие спустя CSS полным ходом шёл к тому, чтобы стать общепризнанным инструментом веб-дизайна. Что произошло за эти годы? Читать дальше ->
Главнокоммивояжер Аристарх стоял у окна и с лёгкой грустью во взгляде провожал стаю улетающих на юг комаров. Осень. Конец сезона. Пора дубинки, полюбившиеся жителям города Н в качестве средства самозащиты от кровососов и предмета статуса (известно, некусаный горожанин — милее надкушенного), забирать из оружейных лавок и завозить на их место рогатины от снежных троллей.
В рознице падение спроса на сезонные товары приводит к смене ассортимента на полках и возвратам невостребованных остатков на склады поставщиков. Кутерьма та еще. Не все могут похвастаться сбалансированным портфелем продуктов. Конец сезона может привести к кассовому разрыву и поставщики всячески стараются уменьшить потери. Незадача коммивояжера, как она есть.
Лето жаркое выдалось, потому сезон затянулся — мысль поселилась в голове Аристарха — годовой ритм миграции крылатых определенно укладывался в какие-то предопределённые природой рамки. А что если между продажами и погодой есть эта, как её, корреляция?
Покажи мне корреляцию погоды и продаж дубинок от комаров, вот тебе гигабайт сводных таблиц в экселе — так началось мое знакомство с возвратами сезонных продуктов.
В эту субботу, 11 ноября, мы приглашаем читателей Хабра на однодневную конференцию по Data Science, Machine Learning и AI. Это мероприятие завершит Sberbank Data Science Journey, ежегодные соревнования по интеллектуальному анализу данных с применением передовых математических методов и алгоритмов. В этом году состязание проводилось на первом в своем роде русскоязычном наборе данных.
Мы наградим победителей и послушаем выступления от ведущих исследователей Nate Kushman (MIT, Microsoft Research UK), Дмитрий Ветров (ФКН ВШЭ, Bayes Group), Михаил Бурцев (МФТИ, iPavlov), Евгений Бурнаев (Сколтех, ADASE group) и Александр Тужилин (New York University, Сбербанк AI Lab). Кроме того, на специальной секции про бизнес в AI о пути своих компаний и перспективах монетизации AI расскажут основатели компаний Prisma, NTechLab, Rubbles и Vision Labs.
Подробная программа и ссылка на регистрацию — под катом.
За 7 лет работы на рынке США FunCorp собрал 100 миллионов пользователей и 4 миллиона DAU в своих мобильных приложениях. В своем выступлении Денис рассказал, на какие продуктовые метрики ориентироваться, чтобы достичь максимальных результатов на американском рынке.
Привет, Хабр! 27 октября состоялась 4-я Международная конференция мобильных разработчиков MBLTdev 2017.
25 спикеров из Google, Uber, Avito, Fyusion, Sharewire, Tinkoff, PSPDFKit, Agoda, Сбербанк и других компаний выступили с докладами о последних трендах мобильной разработки и поделились собственным опытом и практикой. Главными темами конференции стали скорость и поддержка работы приложений, AR-взаимодействия, Core ML, анимации, Audio Unit Extension, организация работы в команде и многое другое. Как это было — читай под катом. Читать дальше ->
Парадный портрет автора, заодно иллюстрирующий идею современной веб-разработки
Сразу честно признаюсь: я существо отсталое. Ну чтобы потом меня пальцами на этот счет не тыкали. Программировать я начал чуть позже изобретения палки-копалки, но намного раньше постройки пирамид — в общем, когда еще птеродактили по небу летали.
Несмотря на некоторые недостатки — в виде ревматизма и отсиженного перед монитором зада — такой опыт дает и отдельные преимущества. Можно уютно расположившись в теплом болоте с умилением смотреть, как перед глазами мельтешат молодые и прогрессивные, неистово изобретая очередной велосипед с квадратными колесами.
Эта статья содержит всё, что вам нужно знать об alt-text! Когда их использовать и как идеально их подготовить. Подготовил я, Дэниель, веб-разработчик с частичной потерей зрения, который ежедневно использует скринридер.
Мой опыт с картинками в вебе
Во время сёрфинга в вебе я использую сочетание увелителя экрана и скринридера. Как показывает практика, увеличение экрана удобнее на дисплеях большого размера, а скринридер — на меньших устройствах. Читать дальше ->
В этой статье я расскажу, как мы генерируем документацию из комментариев в коде TypeScript. В целом, все довольно просто, если требования простые. Впрочем, донастроить под себя тоже не очень трудно.
В августе этого года компания Lenovo презентовала свою новую линейку продуктов для дата-центров под маркой ThinkSystem, в которую входят серверы, системы хранения данных и коммутаторы. Если говорить про серверную линейку, то всего в рамках новой торговой марки было представлено 14 моделей различных форм-факторов (напольных, стоечных, высокоплотных и блейд-серверов), в том числе и топовая система ThinkSystem SR950, рассчитанная на решение критически важных и ресурсоёмких задач, таких как базы данных, аналитика, ERP, CRM и, конечно же, виртуализация. Получить такую систему для обзора хотя бы на пару дней — большая удача и сегодня я постараюсь рассказать вам об этом интересном сервере как можно подробнее.
По умолчанию в Parallels Desktop 13 выставлены оптимальные настройки для работы. Но, если вы привыкли брать от жизни все, держите несколько советов, как увеличить быстродействие и сохранить заряд батареи вашего Макбука. Читать дальше ->
По умолчанию в Parallels Desktop 13 выставлены оптимальные настройки для работы. Но, если вы привыкли брать от жизни все, держите несколько советов, как увеличить быстродействие и сохранить заряд батареи вашего Макбука. Читать дальше ->
Практически во всех проектах, которыми я занимался, приходилось отображать список элементов (ленту), и эти элементы были разного типа. Часто задача решалась внутри главного адаптера, определяя тип элемента через instanceOf в getItemViewType(). Когда в ленте 2 или 3 типа, кажется, что такой подход себя оправдывает… Или нет? Что, если завтра придет требование ввести еще несколько типов да еще и по какой-то замысловатой логике?
В статье хочу показать, как паттерн DelegateAdapter позволяет решить эту проблему. Знакомым с паттерном может быть интересно посмотреть реализацию на Kotlin с использованием LayoutContainer. Читать дальше ->
Представляем интервью с ведущими экспертами в области безопасности: Владимиром Кочетковым (руководителем отдела исследований анализа защищенности приложений в Positive Technologies) и Михаилом Щербаковым (независимым разработчиком и консультантом в области информационной безопасности).
О чем эта статья? Процитирую одну из реплик Михаила:
“Разработка защищенного приложения – это частный случай разработки приложения, не содержащего ошибок вообще. Кроме этого ваше приложение использует сторонние библиотеки, защищенность которых тоже не гарантируется, далее оно выполняется на ОС и железе. Часто мы даже не можем сказать, на какой именно ОС и на каком железе. И все это со временем изменяется!”
Представляем интервью с ведущими экспертами в области безопасности: Владимиром Кочетковым (руководителем отдела исследований анализа защищенности приложений в Positive Technologies) и Михаилом Щербаковым (независимым разработчиком и консультантом в области информационной безопасности).
О чем эта статья? Процитирую одну из реплик Михаила:
“Разработка защищенного приложения – это частный случай разработки приложения, не содержащего ошибок вообще. Кроме этого ваше приложение использует сторонние библиотеки, защищенность которых тоже не гарантируется, далее оно выполняется на ОС и железе. Часто мы даже не можем сказать, на какой именно ОС и на каком железе. И все это со временем изменяется!”
Как известно из функциональных интерфейсов в Stream API нельзя выбрасывать контролируемые исключения. Если по каким-то причинам это необходимо (например, работа с файлами, базами данных или по сети), приходится оборачивать их в RuntimeException. Это неплохо работает если ошибки игнорируются, но если их необходимо обрабатывать, то код получается громоздкий и трудночитаемый. Я заинтересовался можно ли объявлять интерфейсы и методы с generic исключениями и неожиданно для себя узнал, что можно.
Зададим такой функциональный интерфейс, от стандартного интерфейса Function он отличается только наличием третьего generic-типа для бросаемого исключения.
public interface ThrowableFunction{
B apply(A a) throws T;
}
И объявим простенький метод, который преобразует коллекцию используя этот интерфейс, у этого метода также объявлен generic-тип для бросаемого исключения (совпадающий с типом исключения которое может выбросить функциональный интерфейс).
Как известно из функциональных интерфейсов в Stream API нельзя выбрасывать контролируемые исключения. Если по каким-то причинам это необходимо (например, работа с файлами, базами данных или по сети), приходится оборачивать их в RuntimeException. Это неплохо работает если ошибки игнорируются, но если их необходимо обрабатывать, то код получается громоздкий и трудночитаемый. Я заинтересовался можно ли объявлять интерфейсы и методы с generic исключениями и неожиданно для себя узнал, что можно.
Зададим такой функциональный интерфейс, от стандартного интерфейса Function он отличается только наличием третьего generic-типа для бросаемого исключения.
public interface ThrowableFunction{
B apply(A a) throws T;
}
И объявим простенький метод, который преобразует коллекцию используя этот интерфейс, у этого метода также объявлен generic-тип для бросаемого исключения (совпадающий с типом исключения которое может выбросить функциональный интерфейс).