Search
Write a publication
Pull to refresh
2
0
Send message

SEO-friendly HTML для верстальщика

Reading time7 min
Views25K

В этой статье не будет подробного разбора всех аспектов SEO-friendly сайта. Я собрал здесь лишь тот объем информации, с которым мне необходимо было познакомиться для решения SEO-задач в компании ВсеИнструменты.

Читать далее

.NET провайдер логирования для Telegram

Level of difficultyMedium
Reading time3 min
Views14K

Не секрет, что Telegram является на данный момент одним из самых популярных мессенджеров. Особенно в среде ИТ-специалистов. Он удобен, в нем нет встроенной рекламы и работает весьма стабильно. Довольно большую часть времени я общаюсь как по работе, так и по личным вопросам именно в этом мессенджере. Поэтому в один прекрасный день я подумал о том, что было бы удобно, чтобы в этом же мессенджере я мог получать уведомления о работе некоторых своих сервисов. На тот момент я как раз активно работал над интеграцией проекта //devdigest и Telegram, поэтому используя тот же родной Telegram Bot SDK довольно быстро реализовал логгер.

Несколько дней назад я решил вернуться к этому проекту, слегка почистить и отрефакторить код, а затем выложить его в открытый доступ – быть может возможность получения логов в Телеграм будет полезна кому-то еще. Если этот кто-то – вы, то

добро пожаловать под кат

Тестирование с использованием Puppeteer

Reading time8 min
Views8.2K


Любите ли вы тесты, как люблю их я: всеми фибрами души, со всей страстью и энтузиазмом, на которые только способен разработчик, жадный до полного покрытия кода?


В этой статье я расскажу о тестировании кода с помощью Puppeteer — сервиса, который позволяет проверять работу скриптов в их естественной среде обитания — в браузере. Это не полноценный туториал по Puppeteer, а скорее набор советов о том, как писать осмысленные и стабильно работающие тесты.

Читать дальше →

Как я искал нормальный RDP-клиент и нашел целых три

Reading time5 min
Views249K


Remote Desktop Protocol — один из самых распространенных протоколов для удаленного управления, потому что он используется для работы с операционными системами Windows, которые часто незаменимы в корпоративной среде. Естественно, самый распространенный способ подключения к удаленной системе — использование средств встроенных в саму систему, но он не единственный и, более того, совершенно неприменимый, если используется другая ОС или сильно устаревшая Windows.

В этой статье я расскажу о нескольких альтернативных решениях, отличных от встроенных в дистрибутивы операционных систем: программу MobaXterm и два сервиса не требующих от пользователя установки приложений и работающих в обычном браузере.
Читать дальше →

Backend веб-сервиса в базе данных. Как заложить бизнес логику и сделать микросервиc-ретранслятор для API фронтенду

Reading time7 min
Views9.1K
Эта статья будет рассказывать как организовать легкое проектирование бизнес логики веб-сервиса в базе данных на встроенном PL-SQL.

Я расскажу как сделать простой сервис ретранслятор для фронтенда (пример будет на php), а так же как легко проектировать в базе аналог API и регистрировать это для ретрансляции фронтенду.
Читать дальше →

Автогенерация тестов на Puppeteer встроена в Chrome DevTools

Reading time3 min
Views21K

В Chrome 89 в DevTools добавлена экспериментальная поддержка автогенерации JS-скриптов на Puppeteer.

Схематично это работает так: вы открываете нужную страницу, в DevTools включаете запись действий, и после делаете что-то на странице обычным образом (кликаете по ссылкам и кнопкам, переходите на другие страницы, вводите текст). По мере выполнения действий браузер наполняет DevTools-вкладку с виртуальным файлом записи JS-кодом, описывающим через API Puppeteer все действия. После этого запись можно остановить, и сохранить полученный код в виде реального JS-файла.

Для демонстрации новой функциональности (названной Puppeteer Recorder) авторы подготовили небольшую демо-страницу (хотя проверять можно на любой странице, никаких предварительных условий от сайта не требуется).

Но сперва, поскольку это ещё ранняя экспериментальная функция (хотя авторы планируют развивать и расширять Puppeteer Recorder), её нужно включить в настройках DevTools, на вкладке Experiments, в виде пункта Recorder:

Читать далее

Как одним движением сжечь 10000$ и получить удар током

Reading time14 min
Views115K

Представим себе в сущности довольно-таки заурядную ситуацию: у вас сломался сетевой источник питания. Вы берете в руки мультиметр и измеряете напряжение на входе и выходе источника. На входе у вас честные 230 В переменного тока из розетки, а на выходе по нулям. Вы знаете, что ваш источник питания – импульсный, и вы в курсе про то, что транзисторами источника управляет ШИМ-контроллер, который очень легко идентифицируется на плате.
На столе у вас стоит новенький осциллограф Tektronix DPO 7254 или какой-нибудь LeCroy WavePro 7300A ценою более 10000$, и вы решаете посмотреть с его помощью сигналы ШИМ-контроллера, чтобы диагностировать его исправность или неисправность. На щупе осциллографа написано, что его максимально допустимое напряжение равно 1000 В, это с хорошим запасом больше напряжения в розетке. Непосредственно на самом осциллографе рядом с разъемами для подключения щупов написана цифра 400 V, кроме того, у вас щуп с делителем 1:100, что тоже вселяет уверенность, что все будет в порядке. Вы включаете осциллограф и пробуете подключить его щуп к плате источника питания, однако, как только вы касаетесь щупом осциллографа платы источника питания, проскакивает искра и раздается громкий ба-бах. Экран вашего новенького осциллографа безжизненно потухает, сам осциллограф не реагирует ни на какие кнопки, а комнату заполняет характерный запах сгоревшей электроники. Что же произошло? Почему сгорел осциллограф и как такого избежать? Обо всем этом читайте под катом.
Читать дальше →

Utm-метки в сквозной аналитике: особенности и проблемы

Reading time8 min
Views4K

Utm-разметка для систем сквозной аналитики — тёмный лес или страшный кошмар специалиста?

Ни то ни другое — если сразу придерживаться правил и логики. Да, большинство компаний задумывается о том, что хорошо бы отслеживать коммуникации с клиентом с самого начала. Но происходит это, лишь когда появляется необходимость в сквозной аналитике.

И речь идёт не о том, имеются ли у компании правила разметки для любого из каналов коммуникации. Речь о том, чтобы связать эти каналы воедино и иметь прозрачную структуру utm-меток во всех каналах сразу. И это действительно важная задача.

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

Читать далее

Внедрение зависимостей для начинающих

Reading time7 min
Views6.5K
Привет, Хабр!

У нас готовится к выходу второе издание легендарной книги Марка Симана "Внедрение зависимостей на платформе .NET".



Даже в такой объемной книге вряд ли возможно целиком охватить подобную тему. Но мы предлагаем вам сокращенный перевод очень доступной статьи, излагающей суть внедрения зависимостей простым языком — с примерами на C#.
Читать дальше →

Быстрое чтение CSV в C# (fast read CSV)

Reading time8 min
Views26K

Уже не первый год пользуюсь своим универсальным конвертером CSV файлов в БД SQL Server - ImportExportDataSql, который имеет ряд полезных функций, необходимых любому разработчику БД MSSQL, например: перенос данных с одной БД в другую через SQL скрипт, выгрузка структуры БД, загрузка/выгрузка файлов (с типом varbinary), объединение SQL выборок в один файл и др.

ImportExportDataSql бесплатный, портативный, без рекламы и оповещает об обновлениях.

Поставил себе цель, ускорить загрузку CSV в БД MSSQL быстрее, чем это делает стандартная утилита "bcp". В моем приложении используется стандартный способ чтения CSV файлов, через System.IO.StreamReader методом ReadLine, но я уверен, что стандартные способы не самые производительные.

Итак, сравним несколько библиотек, написанных на языке C#, которые читают CSV файлы и разбивают строку на массив строк (колонки). Результаты тестов будут складываться по нескольким параметрам: время выполнения, потребление оперативной памяти, средняя нагрузка CPU (%).

Подробные результаты тестов, а также исходники для тестирования описанных способов, приведены в конце статьи.

Читать далее

Обзор рынка автоматических шлагбаумов

Reading time6 min
Views8K

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

Шлагбаумы, как правило, классифицируются по способу управления и разделяются на механические и автоматические. Первые являются наиболее бюджетным решением и оптимально подходят для объектов, где подвод электричества на входную группу затруднен. Но наиболее широкое распространение получили автоматические шлагбаумы, применяемые на большинстве современных объектов. 

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

Надежность шлагбаума определяют тип двигателя и наличие защиты механизма при наезде автомобиля. Удобство управления обеспечивает возможность выбора оптимального способа открытия и закрытия шлагбаума исходя из задач объекта.

Рассмотрим с точки зрения данных параметров наиболее популярные модели автоматических шлагбаумов ведущих производителей СКУД, в число которых входят Came (Италия), Doorhan (Россия), Nice (Италия), PERCo (Россия) и FAAC (Италия): 

Читать далее

Препарируем Compound File Binary format (CFB), или начинаем парсить DOC

Reading time5 min
Views8.1K
Compound File – это довольно сложный универсальный бинарный формат файлов, лежащий в основе форматов офисных документов до MS Office 2007 (doc, xls, ppt, msg, …), отчасти MS Office 2007+ (например vbaProject.bin внутри xlsm) и других.

Под катом краткое описание как Compound File устроен внутри, которое, надеюсь, будет полезно как ликбез и поможет читателю лучше понимать что делают утилиты или про что пишут в статьях про CFB файлы.


Читать дальше →

Самые упоротые и забавные расширения для браузера: подборка

Reading time5 min
Views24K


Иногда разработчики “Желают странного” (С) А. Б. Стругацкие, из-за этого появляются необычные проекты, вроде запуска Doom на терминалах для считывания банковских карт и других, еще менее приспособленных для этого, девайсах. Чаще всего такое получается в результате тренировок, когда программист осваивает новую тему и реализует тестовый проект не в виде традиционного “Hello, Word!”, а чего-то более изощренного. Но ведь не все занимаются портированием древних шутеров на смарт-часы, есть и другие области разработки, более прикладные, но не менее интересные. Предположим, что человеку наскучило смотреть на длинные логи в консоли и grep’ать из них данные для отладки, хочется добавить интерактива и наглядности в свое обучение. Инструменты для этого выбираются самые разные, кто-то пользуется обычным графическим выводом, кто-то выводит данные через простенький сайт, а кто-то… пишет расширения для браузера!

В этой статье я расскажу вам о нескольких не самых практичных (хотя о практичных — тоже расскажу), но необычных расширениях. Они вряд ли войдут в подборку типа: “Топ-10 самых полезных расширений для разработчика” или пригодятся для розыгрыша коллег, но заставят озадаченно почесать затылок: “Ну и фантазия у автора!..” или просто улыбнуться.
Читать дальше →

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

Reading time17 min
Views45K


Автоматизация сопровождает нас повсюду и является спутником и признаком прогресса, снимая с человека необходимость выполнения рутинных действий и принятия рутинных решений. Но для принятия решений о будущем необходима информация о прошлом, поэтому автоматизация неизбежно связана с необходимостью накапливать, хранить и обрабатывать данные, чем и занимаются базы данных и системы управления базами данных. Объём данных не уменьшается, а только увеличивается, поэтому я всегда говорю своим студентам: я научу вас хаскелю, но это сломает вам жизнь и не поможет найти работу базы данных – это хлеб программиста, у разработчика баз данных работа будет всегда, учитесь ораклу базам данных – и хлеб с маслом и икрой вам обеспечен. Это я так, как обычно, полемически заостряюсь для мотивации, но совсем чуть-чуть.
Читать дальше на свой страх и риск

Бранч-стратегии при разработке в Git

Reading time4 min
Views26K
Если каждый член команды будет создавать ветки в Git так, как хочет, это обязательно приведет к хаосу и несогласованности. Чтобы избежать этого, лучше сформулировать и принять соответствующую бранч-стратегию — так вы сможете больше времени уделять разработке, а не управлению версиями. Нужно принять тот факт, что стратегия ветвления — важный рабочий инструмент.


Читать дальше →

Жизнь .NET приложения в Kubernetes

Reading time7 min
Views9.5K

Поддержка в рабочем состоянии заданного набора контейнеров является одним из главных преимуществ использования Kubernetes

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

Читать далее

CI/CD для проекта в GitHub с развертыванием на AWS EC2

Reading time6 min
Views12K

Имеем: проект web API на .net core с исходниками в GitHub.

Хотим: авторазвертывание на виртуалке AWS EC2 после завершения работы с кодом (для примера push в develop ветку).

Инструментарий: GitHub Actions, AWS CodeDeploy, S3, EC2.

Ниже flow процесса, который будем реализовывать, погнали.

Читать далее

Что под капотом у BI? Детальный разбор технологии In-Memory OLAP

Reading time15 min
Views14K
Привет, Хабр! Меня зовут Иван Вахмянин, и сегодня я хочу рассказать о том, что находится “под капотом” у современной BI-системы, от чего зависит ее производительность (и как можно её ненароком убить), и какие технические оптимизации позволяют технологии In-Memory OLAP выигрывать по скорости у других подходов.


Читать дальше →

DDD, CQRS, Event-Driven, модель акторов и микросервисы

Reading time11 min
Views17K

Хочу поделиться своим опытом реализации микросервисной архитектуры поверх actor-model фреймоворков, таких как AKKA и Microsoft Orleans.



Моя гипотеза: если использовать один стек для реализации микросервисов, то можно:


  • Существенно снизить сложность разработки и объем кода
  • Упростить отладку и поиск ошибок
  • Упростить деплой
  • Упростить задачу определения границ сервисов
  • Избавится от ограничения применения stateful-сервисов
  • Упростит работу с распределенными транзакциями.

О… Похоже на «серебряную пулю»! Давайте разберемся, так ли это.

Читать дальше →

Ультимативный список инструментов для разработчиков и опытных пользователей для Windows

Reading time6 min
Views77K
Можете ли вы поверить, что с момента моего последнего списка инструментов прошло 6 лет? Инструменты изменились, многие из них доступны онлайн, но, честно говоря, для составления нового списка инструментов требуется ОЧЕНЬ МНОГО РАБОТЫ. Но я смог, вот список на 2020-2021 годы. Это инструменты в моей папке Utils. Я создал папку d:\dropbox\utils и добавил ее в свой PATH. Таким образом, он будет на всех моих компьютерах, и я могу мгновенно добраться до любого из них.

Это обновленный до версии 2020-21 мой список 2003, 2005, 2006, 2007, 2009, 2011 и 2014 годов, который в настоящее время включает все остальные мои списки. Я занимаюсь этим более 17 лет. Вау. Думаю, стоит тратить на это больше времени.

Все собирают утилиты, и у большинства есть список из тех, которые, по их мнению, незаменимы. Вот мой. У всех есть свои задачи, и я, скорее всего, использую каждую хотя бы несколько раз в неделю. Для меня «утилита» означает утилитарность. По этому принципу и построен список.

Все это очень любимые и часто используемые утилиты. Я бы не рекомендовал их, если бы не использовал их постоянно. Никто не платил деньги за то, чтобы быть в этом списке.

Эту статью написал наш коллега Скотт. Вот версия на английском. Ну а сам список под катом.

Читать дальше →

Information

Rating
Does not participate
Registered
Activity