Все подряд публикации с habr.com
TypedAPI: клиент-сервер для TypeScript
Предлагаю вашему вниманию TypedAPI: библиотеку API клиента-сервера для проектов, в которых фронт и бэк написаны на TypeScript. Акцент делается на максимальной простоте использования. Суть такая: вы пишете API как обычный TypeScript класс с некоторыми ограничениями, потом автоматом из класса строится интерфейс, которым будет пользоваться клиентское приложение. Также генерируется некоторая служебная информация. Остается только настроить коннекторы (доступны HTTP и WebSocket). Валидацию, хранение подключений, и др. берет на себя TypedAPI. Есть поддержка событий.
Есть ли жизнь без тестов?
Это история про то, как нам удалось написать довольно сложную business-critical систему, и добиться, чтобы она была стабильной даже без юнит-тестов (WAT?!).
Django Admin с миллионами записей — 11 практик оптимизаций для начинающих
Django — самый популярный Python web-framework. За больше чем 10 лет оброс огромным слоем возможностей. Среди них можно выделить — Django Admin — это готовый CRUDL интерфейс с поиском, фильтрами и хитрыми настройками.
Каждый раз стартуя проект на Django, удивляюсь насколько круто иметь админку — web интерфейс просмотра данных. Да еще и бесплатно.
Каждый раз поддерживая проект на Django, удивляюсь, как же сложно поддерживать админку в рабочем состоянии.
В этой статье я постараюсь привести 11 практик, которые позволят избегать тормозов админки максимально долго.
DreamTeam в эпоху быстрых перемен
11 лайфхаков менеджерам IT-команд, которые стремятся обеспечить жизнеспособность и развитие своего бизнеса в условиях безумных скоростей и неопределённости
В апреле 2020 года Группа компаний ЦФТ, один из крупнейших российских финтех-провайдеров, поставляющий ИТ-продукты и услуги более чем 300 банкам и миллионам жителей из десятков стран, смогла перевести на удалённую работу 3000+ своих сотрудников, при этом не потеряв в управляемости, производительности и динамике финансовых показателей. Это лишь одно из действий в большом плане переналадки бизнеса в связи с приходом пандемии.
Но важно даже не это. Ситуация с ковидом подсветила мировые тенденции последних… цати лет, которые заключаются в необходимости быстро меняться, перестраивать процессы, выводить на рынок новые продукты. И на нашей очередной встрече с менеджерами и техническими директорами ЦФТ зашел разговор, как командам удаётся сохранять работоспособность в таких условиях.
Краткое руководство от…
Как я Дота-лигу открывал. Часть 3
Читать сначала: Как я Дота-лигу открывал. Часть 1
Продолжение: Как я Дота-лигу открывал. Часть 2
Ответвление: Как я продолжил дело Дота-лиги
Год 2008-й, середина осени. В результате вооруженного переворота у меня отобрали лигу, и теперь я стал абсолютно свободен от каких-либо обязанностей. Мне больше не надо следить за ботами, за серверами, за лигой, за админами и думать над её развитием. Наконец-то я могу изучать интересные мне технологии! Я начал ковырять PHP, и придумывать следующий проект…
8 советов программисту, как остаться в здравом уме
Быть веб-программистом это тяжёлая работа. Долгие часы, связанные с тем, что мы не получили ничего кроме проблем, могут сделать нашу работу невыносимой. Не говоря уже о дедлайнах и неразумных заказчиках. Ах, и том факте, что все мы будем жертвами нескончаемой войны браузеров.
Так почему же мы делаем то, что мы делаем? Мы любим программирование, мы любим создание функциональных, виртуальных миров где люди могут получать информацию, размещать картинки и встречать других людей. Мы любим принимать правила и обходить их. Мы любим публиковать коллекции кода, который в какой-либо день может стать настолько прибыльным как, например, Facebook или Digg.
Со всем тем вознаграждением, которое приходит к вам как к программисту, ваша работа может также подавлять вас. Справляться со стрессом который создаёт ваша работа — это важное умение. Я, как программист, составил для вас перечень способов, которые помогут вам остаться в здравом уме.
Текстовая игра на Blazor с нуля (+сорсы +демо)
Идея о том, что можно писать веб приложение без JavaScript интересна многим, а особенно тем кто начинал свой путь в программирование с серверного языка. Внедрение Web Assembly может (наконец-то) позволить это полноценно реализовать. Писать всю логику приложения на одном языке — звучит довольно заманчиво. Тем более, если этот код компилируется в бинарник, а не в промежуточный язык.
Эту технологию хотелось бы увидеть в не типичных веб-приложениях. Например, как это — писать что-то более интерактивное на Web Assembly (Blazor). Предлагаю попробовать создать простую текстовую интерактивную игру. В игре есть возможность создать свой вопрос и отвечать на вопросы других игроков, набирая очки за правильные ответы. Всё на одной странице и с помощью Blazor.
Результат:
Github
Demo
Symphony Commerce: цифровой коммерческий стартап года
Сервисная платформа Symphony Commerce, работающая с торговыми предприятиями, была названа Цифровым коммерческим стартапом года, опередив 60 других, тоже во многом интересных, проектов.
Компания дает коммерческие возможности, ранее не существовавшие вообще, либо такие, которые были доступны только мега-ритейлерам, брендам SMB, чтобы стимулировать их рост. Фирма была выбрана судейской группой, которая включала таких лидеров бизнес-индустрии, как Национальная Федерация Розничной Торговли, Northwest Venture Partners, Simon Venture Group, Modcloth, Hudson’s Bay Company и Abercrombie and Fitch. Данный проект был отмечен как стартап с наиболее значительным потенциалом для трансформации закупочного опыта и позитивного влияния на розничную индустрию. Что же может дать эта платформа вам?
DICOM: цифровые снимки в медицине — ликбез для системного администратора
Одним из самых компьютеризированных разделов медицины является радиодиагностика. Медицинские исследования генерируют большое количество данных, которые затем обрабатываются передовыми методами визуализации, 3D-реконструкции по срезам и даже машинного обучения. Этот топик призван помочь системным администраторам погрузиться в тематику передачи и хранения медицинских изображений.
Фото автора
Qbs: Шаблон настольного приложения
Введение
Давным давно, когда Qbs только вышла, я начинал писать эту статью, но так её и не закончил… Кажется, пришло время ее дописать. С тех пор многое изменилось, у Qbs наконец-то появилась документация, но примеров (к сожалению) в ней по-прежнему не так много. В этой статье я расскажу как написать шаблон (почти) полноценного десктопного приложения с использованием Qt.Widgets. По-хорошему, было бы неплохо сделать это на чистом C++, но я слишком ленив, чтобы сделать тестовый UI с помощью нативного АПИ под 3 платформы. Для примера я написал простое приложение ("рыбу"), состоящее из основного приложения, библиотеки и плагина, которое мы и будем разбирать
Кого заинтересовало, добро пожаловать под кат.
Прошивка Сisco CP-7906/7911
Телефоны Cisco CP-7906 и Cisco CP-7911 считаются аппаратами начального уровня, недорогие и массовые, но уже сняты с производства и продажи. 7911 гораздо интереснее по дизайну и удобству использования, чем 6921 и тем более 6911, которые позиционируется им на замену, имея равные цену и функционал. Кроме того, 6911 требует CallManager минимум 8 версии, для работы с второй линией и другим необходимым функционалом, что требует уже дополнительных лицензий.
Поэтому было решено прикупить бывших уже в употреблении, хорошо сохранившихся телефончиков, про запас, ибо потом их будет раздобыть сложнее. Купленные телефоны оказались со старой прошивкой, прошиты для протокола SIP, отказавшись работать с нашим сервером 7 версии.
Этому их пришлось научить, и здесь хочу описать процесс прошивки телефона cisco 7906/7911 для работы по протоколу SCCP с Cisco CallManager.
Маркетинговые войны (и причем здесь Хабр)
Привет хабр! Достаточно давно я прочитал книгу Маркетинговые войны. В неё рассказывается о довольно интересной точке зрения: на попытку ассоциировать стратегии в маркетинге со стратегиями в войне.
Потому в этой статье я кратко расскажу о принципах из книги, приведу пару примеров из жизни и поясню, при чем же здесь Хабр.
Год измеряем влажность почвы на ESP8266 и двух батарейках. Часть 2
Всем привет! В этой статье хочется рассказать, как заставить датчик влажности почвы проработать год на двух батарейках (ААА) и при этом сделать все более менее правильно. Первая статья — про выбор среды разработки (Arduino IDE) и платформу Blynk.
Картинка домашнего дуба для привлечения внимания
Садовод любитель
Для начала небольшое признание — я не программист и я домашний садовод. И то и другое это мое хобби. У меня на подоконниках сделаны полки, с специальной сине-красной светодиодной подсветкой, под которой растения должны расти с бОльшим энтузиазмом. Не вдаваясь в детали фотосинтеза и прочую ботанику, можно сказать, что светодиодная подсветка создала одну проблему, решая которую и родилось устройство, которому посвящена эта статья.
Спойлер Светодиоды греются, земля сохнет, поливаю я кое как.
Вот до чего бывают люди до чужого добра жадные, или еще одна ремарка про 44 50 49
Никто уже и не помнит, с чего все началось, но интересно куда это все движется. Возможно, кто-то уже изрек это до меня, но это не главное. Главное то, что существует болезнь, заразившись которой человек превращается в человека, который интеллектуально схож с бабушками, тяжело пережившими 90-е, и бездумно ругающие все, что есть сейчас происходит (и что в наше время… да колбаска… да по 25 копеек… Не важно, какую мы рассматриваем предметую область. Важно то, что ты, бабушка, меня веселишь до ужаса!
Пока большинство пользователей заняты поиском ASCII-HEX транслятора, моя ремарочка про систему, с которой имею честь работать уже много лет, будет вызывать много спорных вопросов. Системы DPI продуцируют смешанные чувства не только у меня, но и у нашего интернет-сообщества, порождая бесчисленные холивары и обсуждения. Может быть, данный пост еще немного приоткроет завесу, и расскажет о том, что мы двигаемся в нужном направлении. И…
Как мы делали небольшую охранную систему на RPi. Часть 2
Здравствуйте Хабражители! В предыдущей статье я рассказывал немного про железную часть проекта охранной системы и про систему на Python, которая работает с этим железом. В этой статье я продолжаю рассказ про серверную часть.
Как обойти капчу Гугл
Ранее нам попадались относительно «простые» капчи:
· Как обойти капчу, используя распознавание звука
· Как обойти капчу: нейросеть на Tensorflow,Keras,python v числовая зашумленная капча
В этот раз поработаем над чем-то более серьезным и давно знакомым:
Итак задача: обойти капчу, желательно с первого раза.
Пол Грэм: переписка Airbnb с инвесторами
«Сотни, если не тысячи бесед такого типа происходят сейчас»
Вчера Фред Уилсон опубликовал замечательный пост о том, как он прос… смотрел Airbnb.
Венчурные капиталисты пропускают хорошие стартапы все время, но чрезвычайно редко говорят об этом публично спустя долгий промежуток времени. Так что этот пост является еще одним свидетельством того, насколько Фрэд чудак. Он, вероятно, самый лучший венчурный капиталист, которого я знаю.
Чтение поста Фрэда заставило меня вернуться и просмотреть нашу с ним переписку по электронной почте в те времена, когда я пытался убедить его инвестировать в Airbnb. Это было довольно интересно читать. Вы можете увидеть мышление Фрэда в действии, то, как он вращается вокруг сделки.
Реализация алгоритма Минимакс на примере игры «Крестики-Нолики»
Недавно я написал непобедимую игру «Крестики-Нолики». Это был интересный и поучительный проект, который многому меня научил. Если у вас есть желание посмотреть результат — это можно сделать здесь.
Для того чтобы сделать игру непобедимой, было необходимо создать алгоритм, который может рассчитать все возможные ходы для «компьютерного» игрока. Далее, нужно использовать некоторую метрику, чтобы определить, какой ход является предпочтительным. После долгих исследований стало понятно, что алгоритм Минимакс, был тем, что мне нужно.
Понимание основ алгоритма и реализация игры заняли некоторое время. Я нашел много примеров кода и объяснений, тем не менее это оказалось не такой уж простой затеей. Надеюсь этот пост поможет некоторым из читателей оценить элегантность этого алгоритма.
Как стать кросс-функциональной командой
DevOps обычно рассматривается в двух ипостасях:
· Инструментарий — техника, tooling, технические процессы, CI/CD и прочие штуки — авто-всё, всё как код и т.д.
· Культура — это как отдельным разработчикам прийти всем вместе к «мир, дружба, жвачка».
На стыке этого у людей происходит некоторый слом, и они не понимают – ОК, есть DevOps, есть автоматизация, у нас всё это есть. Но, ребята, у нас команда из 10 человек — мы не можем, например, пилить процессинг на банк, или сервис для нашего биллинг-оператора, или что-то еще такое. 10 человек — та самая Scrum-команда, которой предлагается всё это сделать, — не могут этого технически.
У таких команд, помимо «мы так не умеем, потому что так раньше не делали», есть и другие вызовы. Михаил Бижан рассказал на конференции DevOps Conf 2019 о тех, с которыми встретилась его команда в Райффайзенбанке, и как они это решали. Михаил отвечает за автоматизацию в банке, вместе с командой внедряя инженерные практики и…
Враг не пройдёт, или как помочь командам соблюдать стандарты разработки
Подход governance as a code обеспечивает контроль соблюдения архитектурных принципов как в части конфигураций инфраструктуры, так и в части программного кода. Правила проверки каждого артефакта, будь то конфигурация k8s, список библиотек или даже описание сценария CI/CD, описаны специальным кодом проверки правил, имеют свой жизненный цикл, могут тестироваться и ничем не отличаются от обычного программного продукта.
Александр Токарев (Сбербанк) расскажет, как и что можно проверять в процессе разработки программного обеспечения, чтобы разрабатывать более безопасные и качественные приложения, и почему Сбербанк решил не использовать такие очевидные решения как SonarQube, а разработать собственное решение на базе Open Policy Agent без дополнительных пакетов над ним. Также Александр покажет, когда выбирать admission controller, когда использовать «чистый» Open Policy Agent, а когда можно обойтись без какого-либо контроля.
Александр…
Python: Работа с базой данных, часть 2/2: Используем ORM
часть 1/2: Используем DB-API часть 2/2: Используем ORM
Это вторая часть моей статьи по работе с базой данных в Python. В первой части мы рассмотрели основные принципы коммуникации с SQL базой данных, а в этой познакомимся с инструментарием, позволяющим облегчить нам это взаимодействие и сократить количество нашего кода в типовых задачах.
Статья ориентирована в первую очередь на начинающих, она не претендует на исчерпывающе глубокое изложение, а скорее дает краткую вводную в тему, объясняет самые востребованные подходы для старта и иллюстрирует это простыми примерами базовых операций.
Требуемый уровень подготовки: базовое понимание SQL и Python (код статьи проверялся под Python 3.6). Желательно ознакомится с первой частью, так как к ней будут неоднократные отсылки и сравнения. В конце статьи есть весь код примеров под спойлером в едином файле и список ссылок для более углубленного изучения материала.
Дружим Angular с Google
Дружим Angular с Google
Google ненавидит SPA
Когда мы говорим про современные интернет магазины, мы представляем себе тяжелые для понимания серверы, рендрящие тысячи статических страничек. Причем именно эти тысячи отрендеренных страниц одна из причин почему Single Page Applications не прижились в электронной коммерции. Даже крупнейшие магазины электронной коммерции по-прежнему выглядят как куча статических страниц, для пользователя это нескончаемый цикл кликов, ожидания и перезагрузки страниц.
Указатели на методы классов в C++
Привет, интернет.
Решил написать статью об указателях на методы классов. Недавно мне пришлось столкнуться с тем, как они работают изнутри, когда писал некоторые вещи ориентированные под компилятор. Эти указатели работают не совсем как обычные указатели, не имеют возможности быть приведенными в void, и часто имеют размер больше 8 байт. Информации на эту тему в интернете я нашел относительно немного, потому решил разобраться сам.
Как коронакризис повлиял на фрилансеров
Наткнулся я давеча на исследование Workspace про изменения в работе фрилансеров, которые спровоцировала эпидемия коронавируса. Почему для меня это важно? Я, хоть и называюсь компанией, по сути являюсь фрилансером. Тектоника — это не бизнес, а самозанятость.
Ребята опросили 714 фрилансеров из России (77,8%), Украины, Белоруссии, Израиля и Польши, пополам мужчин и женщин. Распределение по сферам было таким: 34,5% — дизайн, 30,2% — тексты, 19,6% — веб-разработка, 15,7% — программирование, 9,8% — SMM, 8,9% — маркетинг и реклама, 7,7% — SEO, 4,7% — аналитика, консалтинг.
Не буду пересказывать все статистические выкладки, посмотрите их в статье Workspace. Скажу о главном и поделюсь своими мыслями.
Сначала факты:
· 52,2% почувствовали обострение конкуренции.
· Работают фрилансеры примерно столько же, сколько в предыдущие месяцы, но новых клиентов стало сильно меньше.
· Доходы снизились у 69%, остались такими же у 19% и выросли у 12%. Почти у половины…
Гипотезы о преодолении инерции и ее природе
Каждый день мы сталкиваемся с явлением инерции. Имея различное высокотехнологичное оборудование, человечество так и не научилось преодолевать хотя бы на малую величину, влияние инерции. В данной статье анализируются гипотезы о возможном преодолении, ликвидации инерции, а также о ее природе.
Использование DiagnosticSource в .NET Core: практика
В предыдущей статье я рассказал про механизм DiagnosticSource и на простом примере показал, как с его помощью можно перехватывать запросы в базу данных через классы SqlConnection
и SqlCommand
и измерять время их выполнения.
В настоящее время DiagnosticSource уже используется в AspNetCore, EntityFrameworkCore, HttpClient и SqlClient — каждый из них отправляет собственные события, которые могут быть перехвачены и обработаны.
В этой статье я хочу рассмотреть несколько примеров того, как можно на практике использовать DiagnosticSource в приложениях ASP.NET Core.
· CorrelationID и пробрасывание заголовков между сервисами
· Сбор метрик и трассировок
· Логирование
Кроме того, в этой статье я решил собрать список событий, которые доступны для обработки и могут быть использованы в ваших приложениях, а также рассказать о некоторых подводных камнях, с которыми вы можете столкнуться, если решите использовать механизм DiagnosticSource в своём проекте.
Моделирование физических процессов при разработке электроники: почему и для чего?
Разработка корпусов для электроники — одна из наших любимых тем на Хабре. Мы уже рассказывали о роли промдизайна, разработке конструкции и производстве прототипов, но пока не затрагивали одну из самых интересных и важных тем — испытания спроектированных устройств, как виртуальные, так и реальные.
Выдержит ли корпус удар в трех плоскостях? Деформируется при экстремальных температурах? Хорошо ли продумана внутренняя система охлаждения электроники? Ответить на эти вопросы можно двумя способами. Первый: провести испытания готового устройства (прототипа) в реальной жизни и по результатам отправить его на доработку. Второй: провести виртуальное моделирование физических процессов и скорректировать проблемные места на этапе разработки. Это гораздо быстрее и эффективнее, так можно получить рабочие прототипы уже на первой итерации. Давайте рассмотрим оба варианта на реальных проектах…
О взаимодействии централизованных и распределённых организаций
Чем они отличаются? Какие у них преимущества и недостатки? Как перейти от одной к другой? Что произойдёт при их столкновении?
Эволюция модульного JavaScript
Скорее всего, когда Брендан Айк проектировал JavaScript, он не представлял, как эволюционирует его проект спустя двадцать лет. На данный момент вышло уже шесть основных спецификаций языка, и работа над его улучшением до сих пор продолжается.
Не будем лукавить: JavaScript никогда не был идеальным языком программирования. Одним из слабых мест в JS была модульность, а точнее её отсутствие. Действительно, зачем в скриптовом языке, который анимирует падающие на странице снежинки и валидирует форму, заботиться об изоляции кода и зависимостях? Ведь всё может прекрасно жить и общаться между собой в одной глобальной области — window.
С течением времени JavaScript трансформировался в язык общего назначения, так его начали использовать для построения сложных приложений в различных средах (браузер, сервер). При этом нельзя было положиться на старые подходы взаимодействия компонентов программы через глобальную область: с ростом объёма кода приложение становилось очень хрупким.…
Обработка аппаратных прерываний в архитектуре intel. i8080 — i80486, PIC, ISA, conventional PCI
В топике даётся обзор в исторической перспективе механизмов, используемых для сопряжения внешних устройств с CPU архитектуры x86.
СпойлерЯ понял, что никогда уже не допишу этот грандиозный обзор во всей его полноте, поэтому я просто убрал «часть 1» из названия. Возможно эта часть всё же будет кому-нибудь полезна.