Pull to refresh
0
0
Send message

Правда ли, что от регулярок у разработчиков одни проблемы

Reading time5 min
Views14K

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

Самое очевидное решение — использовать прямую замену, применив встроенную в JavaScript функцию replace():

'Быстрее всего мы догоним ее на машине'.replace('ее', 'его');

Однако 'ее' также является окончанием слова 'Быстрее', а .replace() заменит первое вхождение подстроки. В итоге мы получим ожидаемо неверный результат: 'Быстрего всего мы догоним ее на машине'. Поэтому необходимо проверить строку на наличие символа, стоящего перед 'ее': если это пробел, можно делать замену.

Больше примеров и неочевидные выводы о том, нужны ли фронтендерам регулярки — внутри статьи.

Читать далее
Total votes 22: ↑18 and ↓4+18
Comments47

Роботизированная операционная модель Blue Prism: поговорим о практике внедрения RPA

Reading time9 min
Views5.3K


Blue Prism — известное и зарекомендовавшее себя решение (в том числе и на российском рынке) для автоматизации бизнеса. В этой статье мы не будем говорить о преимуществах использования RPA-платформ для оптимизации операционных расходов бизнеса. И без того понятно, что выполнение процесса без обеденных перерывов, перекуров и больничных будет эффективнее и в перспективе снизит операционные расходы. Вместо этого расскажем про роботизированную операционную модель (ROM) — это практика внедрения Blue Prism, направленная на получение бизнесом максимальной выгоды за счет развертывания системы роботизации. Blue Prism обладает полностью готовой методологией внедрения роботизации процессов и при внедрении решения в вашей организации вы сможете воспользоваться всем накопленным массивом знаний. Это поможет снизить неопределенность в проекте и позволит быстрее получить результат.

Технологии — хорошо, но умение ими пользоваться ещё лучше. ROM про максимально эффективное использование технологий роботизации. Это опыт множества внедрений для снижения time-to-market и получения результатов в течении нескольких недель.

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

Далее вы узнаете о лайфхаках на старте роботизации и о 7 основах роботизированной операционной модели для эффективного внедрения той самой роботизации. Все подробности под катом.
Читать дальше →
Total votes 3: ↑3 and ↓0+3
Comments2

Ruby-Дайджест за неделю (27 дек — 3 янв)

Reading time2 min
Views1.8K

В этом дайджесте:

• Обновление популярных гемов.
• Статистика по гемам за год.
• Интересные open-source проекты на GitHub #2.
• Подборка полезных гемов #2.
• Интересный контент, связанный с Ruby.
• Рейтинги языка за 2021 год.

Читать RubyDigest
Total votes 10: ↑9 and ↓1+11
Comments6

Настраиваем отказоустойчивость Pi-Hole в связке с Mikrotik

Reading time6 min
Views43K

В прошлой статье мы внедрили домашний сервер DoH с использованием Pi-Hole, чем не только пофильтровали большое количество рекламы, но и инкапсулировали наши DNS-запросы в HTTPS, что вывело их из поля фильтрации запросов оператором связи.

Всем замечательно это решение, но у него есть один нюанс. Если вдруг у нас закончились деньги на счету у оператора связи или по каким-то другим причинам пропал канал связи до внешнего мира, мы даже не сможем пополнить счет, чтобы восстановить сервис, потому что не будет работать DNS. Или, например, если наш Pi-Hole по каким-то причинам перестал работать - вот вроде и вся сеть работает, и гугл пингуется, а пока не пропишешь другой DNS-сервер - не будет счастья. А если вы еще в этот момент заняты чем-то другим и не можете приступить к восстановлению незамедлительно - домашние негодуют, портят радостное существование своими жалобами и даже котики, чуя общую нервозность, стремятся нагадить вам в тапки.

Огорчать котиков - дело последнее, поэтому в этой статье я опишу, как вы можете внедрить автоматическое переключение с использования Pi-Hole на использование операторских (как, впрочем, и любых других) DNS при проблемах на Pi-Hole.

Читать далее
Total votes 16: ↑16 and ↓0+16
Comments19

Истерия с NFT и современным искусством, поданная через призму Пелевина: вам нужно только 10 мин., чтобы быть в теме

Reading time7 min
Views25K

Эпиграф: Я вижу искусство как некое поле событий, на одном полюсе которого – веселые заговоры безбашенной молодежи с целью развести серьезный мир на хаха, охохо или немного денег, а на другом бизнес-проекты профессиональных промывателей мозгов, пытающихся эмитировать новые инвестиционные инструменты… В. Пелевин, iPhuck 10

Уверен, что даже далекие от блокчейна люди уже слышали про NFT-токены, которые современные творцы загоняют доверчивым миллионерам за бешенные деньги. Даже Хабр отметился такими публикациями: вот кто-то покупает бесплатный видеоклип за 6,5 млн. бакинских, а вот ставка на самый первый твит достигает 2,5 миллиона (опять не рублей), и это явно не предел. Когда читаешь комментарии, понимаешь, что читатели немного, скажем так, удивляются ситуации и явно не понимают — а зачем платить так много за то, что и так находится в свободном доступе. Причем, оно мало того, что свободное, так еще и легко копируемое. Т.е. рааааз - у тебя хоть тысяча таких твитов. 

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

Заходите, будет весело.
Total votes 37: ↑32 and ↓5+49
Comments73

Магия асинхронных операций: взгляд изнутри. Future

Reading time15 min
Views14K

Бу́дущее — гипотетическая часть линии времени, множество событий, которые ещё не произошли, но могут произойти.

Этот месяц может определённо пройти под девизом "Даёшь асинхронность!", на хабах Dart и Flutter. Неудивительно, ведь асинхронный и реактивный подход являются основой работы языка и фреймворка.

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

Читать далее
Total votes 13: ↑13 and ↓0+13
Comments5

История термоэлектричества: от железной дуги эпохи Вольта до 500-ваттных блоков на феррожидкостях

Reading time14 min
Views17K

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

Примечательно, что начиналось все с исследований сокращения лягушачьих лапок времен Наполеона Бонапарта. Лапки, по сути, выступали в роли вольтметра и привели ученых того времени к паре интересных открытий.

Читать далее
Total votes 40: ↑40 and ↓0+40
Comments15

Автоматизация рабочего процесса Java-проекта с помощью модифицированной модели ветвления Gitflow

Reading time14 min
Views5.6K

Автоматизация рабочего процесса Java-проекта с помощью модифицированной модели ветвления Gitflow


Ключевые выводы


  • Gitflow — это совместная модель ветвления, которая пытается использовать мощность, скорость и простоту ветвления Git. Этот метод хорошо работал в ситуации, которую мы описываем здесь, но другие отмечали, что использование Gitflow сопряжено со своими проблемами.
  • Документация по использованию Gitflow в размещения в источнике информации в лучшем случае является нечеткой.
  • Функции изолированы внутри ветвей. Вы можете управлять своими собственными изменениями функций изолированно. Этот подход отличается от разработки на основе магистралей, когда каждый разработчик фиксируется в основной ветке не реже одного раза в 24 часа.
  • Разделение функций с использованием изолированных ветвей позволяет вам решить, какие функции включать в каждый релиз. Компромисс здесь может заключаться в сложных слияниях.

Читать дальше →
Total votes 9: ↑7 and ↓2+7
Comments0

Почему зарплаты в IT на територии ЕС и Восточной Европы так слабо отличаются?

Reading time5 min
Views11K
Информационные технологии стали не только неотъемлемой частью нашей жизни, но и одним из лучших способов увеличения денежного потока для развивающихся стран. Невозможно отрицать влияние IT на медиану зарплат из-за возможности удалённой работы и международного сотрудничества. В данном посте я буду сравнивать IT-секторы двух стран и экономических зон — ЕС (на примере Польши) и вне ЕС (на примере Украины). Я считаю данный выбор стран показательным, поскольку, несмотря на культурное и историческое сходство, Польша считается развитой страной (ИЧР — 0,865), а Украина находится в списке развивающихся стран (ИЧР — 0,751). Чтобы начать наше сравнениe, давайте взглянем на несколько показателей в таблице ниже.

Сравнение экономики Польши и Украины
Данные: 1, 2, 3, 4, 5, 6, 7
Читать дальше →
Total votes 10: ↑6 and ↓4+6
Comments17

Как выбрать усилитель сотовой связи и мобильного интернета

Reading time9 min
Views112K
Чтобы разобраться в этом вопросе, нужно понимать основные принципы и условия работы данного устройства. Усилитель сотовой связи или по-другому репитер, повторитель сигнала, решает поставленную перед ним задачу в связке с другими компонентами — приёмопередающими антеннами — внешней и внутренней, а также высокочастотным кабелем, объединяющем все устройства в единую систему усиления сигнала.

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

В большинстве же случаев, для решения бытовых задач усиления сотового сигнала, достаточно готового комплекта, состоящего из репитера, двух антенн и кабеля. Тонкость в том, чтобы правильно подобрать комплект, подходящий по параметрам. Эти параметры мы и будем рассматривать в данной статье, но начнём с принципа работы.

Принцип работы усилителя сотовой связи


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

Слабый сигнал от базовой станции оператора улавливается внешней антенной, расположенной на улице. От внешней антенны сигнал по высокочастотному коаксиальному кабелю передаётся на репитер. Репитер усиливает сигнал и отправляет его дальше по кабелю на комнатную антенну. Комнатная антенна обменивается информацией с мобильными устройствами и отправляет сигнал в обратном направлении.

image
Читать дальше →
Total votes 13: ↑12 and ↓1+19
Comments36

IT-эмиграция с семьей. И особенности поиска работы в маленьком городе Германии, когда ты уже там

Reading time14 min
Views98K

Поехать работать в Австралию или Таиланд, когда тебе 25 и нет семьи, не так и сложно. И таких историй большое количество. А вот переехать, когда тебе под 40, жена и трое детей (8 лет, 5 лет и 2 года) — задача другого уровня сложности. Поэтому хочу поделиться своим опытом переезда в Германию.



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


Итак, 2015 год, мы с семьей живем в Санкт-Петербурге на съемной квартире. Долго думали, как нам переезжать, что делать со школой, местами в садике и съемной квартирой. Нами было принято несколько важных решений:

Читать дальше →
Total votes 109: ↑106 and ↓3+103
Comments173

Резервное копирование виртуальных машин в среде гипервизора QEMU/KVM

Reading time7 min
Views72K
image

Как известно, бэкапы нужно делать, мало того, нужно делать их так, чтобы потом с них можно было развернуться. Особенно это касается виртуальных машин (ВМ). Рассмотрим, как можно сделать бэкап виртуальных дисков машины в среде QCOW/KVM. Основных проблем здесь две: во-первых, нужно получить консистентый (целостный) бэкап, т.е. если у нас есть СУБД или другое ПО, которое активно использует собственный кэш на запись, то перед бэкапом его нужно попросить сбросить кэш и заморозить запись на диск, иначе данные-то в снэпшот попадут, но не те, и при восстановлении СУБД может не понять такой финт. Второй вопрос — производительность ВМ в режиме снэпшота, неплохо было бы, что бы ВМ не слишком тормозила, когда мы снимаем копию, и не зависала бы, когда мы удаляем снэпшот.

Сразу дам ответ на первый вопрос — чтобы получить консистентный бэкап, нужно перед созданием бэкапа выключить ВМ средствами гостевой ОС, тогда бэкап точно получится целостным. Если вас устраивает такая ситуация — статью можно дальше не читать. Если же нет — прошу под кат.
Читать дальше →
Total votes 27: ↑27 and ↓0+27
Comments34

Настройка своего сервера синхронизации Firefox Sync

Reading time5 min
Views42K
image

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

Firefox Sync реализуется двумя сущностями — сервисом авторизации (Firefox account API) и сервером синхронизации (Firefox Sync).

Давно возникла идея настроить свой сервер для синхронизации паролей, закладок и прочих радостей жизни. По роду деятельности, не очень доверяю публичным сервисам, таким, как LastPass или Google Account. На мой взгляд, приватные данные должны храниться на своем сервере.

Ну да хватит лирики, приступим к настройке.
Читать дальше →
Total votes 34: ↑32 and ↓2+30
Comments40

Открываем файлы во внешних приложениях

Reading time2 min
Views2.6K
Emacs имеет крутую курву обучения, но чем дальше, тем больше хочется делать в нем все, что можно и нельзя. В частности он обладает большим числом средств для навигации по файловой системе.
Я, например, использую Dired mode, ido, Org mode и закладки. Но существует проблема с открытием файлов во внешних приложениях: pdf в evince, avi в mplayer и т.д. Причем хочется задавать эти связи в одном месте. Emacs не был бы Emacs'ом, если бы не позволял сделать для этого какой-нибудь грязный хак =)
Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments5

Расширяем Emacs своими руками

Reading time4 min
Views4.9K
Статья о умелом использовании Emacs моего коллеги, желающего стать хабраГражданином, и наблюдать НЛО. Пожалуйста инвайт на d.klykvin@гмайл.ком

Однажды я открыл для себя игру Годвилль, где герой живёт сам по себе,
и подпинывать его надо когда самому будет не лень. Но, спустя n-ное
количество недель, мне надоело открывать браузер чтобы посмотреть
самочувствие моего героя, и я решил написать расширение для emacs,
которое будет само лезть в сеть и выводить интересующую меня
информацию.
Наверняка эта статья будет неинтересна гуру emacs, но для первых шагов
может пригодиться
Читать дальше →
Total votes 41: ↑32 and ↓9+23
Comments13

Реализация exceptions на plain C

Reading time4 min
Views6.9K
Продолжение вот этой статьи habrahabr.ru/post/131212, где я собирался показать, как «и ошибки удобно обрабатывать и exceptions при этом не использовать», да всё руки не доходили.

Итак, будем считать, что у нас ситуация, что «настоящие C++ exceptions» использовать нельзя — например, языком разработки является C или компилятор С++ для нашей платформы не поддерживает exceptions (или формально поддерживает, а реально этим пользоваться нельзя). Это, конечно, нетипично для desktop приложений, но вполне обычно для embedded разработки.
Читать дальше →
Total votes 47: ↑39 and ↓8+31
Comments50

Шаблоны на C. Да! На чистом С. Не С++

Reading time4 min
Views64K

Зачем?


Давайте представим себе, что нам нужно написать набор функций, которые отличаются друг от друга лишь парой ключевых слов (и, как правило, одно из них — название типа). Ну, вот, например, взгляните на функции, рассчитывающие суммы элементов массивов для разных типов
Читать дальше →
Total votes 81: ↑65 and ↓16+49
Comments65

Изучаем С используя GDB

Reading time6 min
Views107K
Перевод статьи Аллана О’Доннелла Learning C with GDB.

Исходя из особенностей таких высокоуровневых языков, как Ruby, Scheme или Haskell, изучение C может быть сложной задачей. В придачу к преодолению таких низкоуровневых особенностей C, как ручное управление памятью и указатели, вы еще должны обходиться без REPL. Как только Вы привыкнете к исследовательскому программированию в REPL, иметь дело с циклом написал-скомпилировал-запустил будет для Вас небольшим разочарованием.

Недавно мне пришло в голову, что я мог бы использовать GDB как псевдо-REPL для C. Я поэкспериментировал, используя GDB как инструмент для изучения языка, а не просто для отладки, и оказалось, что это очень весело.
Читать дальше →
Total votes 70: ↑66 and ↓4+62
Comments30

Разбираемся в С, изучая ассемблер

Reading time11 min
Views90K
Перевод статьи Дэвида Альберта — Understanding C by learning assembly.

В прошлый раз Аллан О’Доннелл рассказывал о том, как изучать С используя GDB. Сегодня же я хочу показать, как использование GDB может помочь в понимании ассемблера.

Уровни абстракции — отличные инструменты для создания вещей, но иногда они могут стать преградой на пути обучения. Цель этого поста — убедить вас, что для твердого понимания C нужно также хорошо понимать ассемблерный код, который генерирует компилятор. Я сделаю это на примере дизассемблирования и разбора простой программы на С с помощью GDB, а затем мы используем GDB и приобретенные знания ассемблера для изучения того, как устроены статические локальные переменные в С.
Читать дальше →
Total votes 76: ↑70 and ↓6+64
Comments31
1

Information

Rating
Does not participate
Registered
Activity