У меня уже были ранее статьи про Интернет Шлюз ИКС — готовый программный шлюз на базе Freebsd с обширным функционалом. Сегодня я остановлюсь на одной из самых востребованных и популярных возможностей этого продукта — контентная фильтрация в том числе https трафика. Данный функционал очень актуален в государственных организациях, особенно в учебных учреждениях, где надо чётко выполнять требования законодательства в регулировании интернет трафика.
Архив автора: admin
Критерии выбора франшизы: как не допустить ошибок
Франчайзинг сегодня – это достаточно популярная тема. В период пандемии и кризиса очень сложно выйти на рынок самостоятельно, и потому предприниматели присматриваются к покупке франшизы, выбирая для себя подходящую отрасль и сферу.
Рынок франшиз действительно предлагает достаточно много вариантов на любой вкус, идею и бюджет. Однако все это разнообразие полно подводных камней в виде франшиз-пустышек, недобросовестных руководителей и попросту мошенников. И для того, чтобы не совершить ошибку, которая обойдется достаточно дорого и финансовом, и в моральном, и во временном плане, следует как можно более скрупулезно во всем разобраться. Перед тем как осуществлять выбор франшизы, следует ответить на несколько вопросов. Итак, во-первых, каковы требования к франшизе? Сюда входят по большей части личные критерии начинающего предпринимателя. Любой успешный и прибыльный бизнес основывается на определении конкретных его целей. Зачем строить бизнес? Почему именно эта сфера? Что я знаю о ней и чего не знаю? Каковы требования к руководителю, к персоналу? Каков объем инвестиций? Какими ресурсами я уже обладаю и что еще нужно? Что будет с бизнесом через пять, десять лет? Актуальна ли данная отрасль в моем регионе? Каков уровень конкуренции? Вопросов возникает великое множество и это лишь малая часть. Чем более подробными и беспристрастными будут ответы, тем легче будет двигаться дальше. А ответить на эти вопросы зачастую помогают каталоги с франшизами, скажем, вот тут к примеру можно ознакомиться с актуальным выбором франшиз фаст-фуда.
Еще один немаловажный пункт в вопросе работы по франшизе – это обилие правоустанавливающих документов. Один из них – непосредственно договор о сотрудничестве. Так или иначе, любой договор – это своеобразное ограничение свободы действий и выбора. Его масштабы могут быть разными, но так или иначе игнорировать их не получится, дабы избежать неприятных последствий. К правоустанавливающему документу следует отнестись с особой серьезностью. Во-первых, ставить подпись, которая является символом согласия с условиями, стоит ставить только после скрупулезного изучения каждого пункта как самостоятельно, так и в тандеме с профессиональным юристом. Второй пункт предпочтительнее, так как нередки случаи, когда руководители вносят в договор пункты, которые невозможно толковать однозначно, зашифровывают определенную информацию и выставляют максимально невыгодные условия расторжения и прекращения деятельности. Чтобы избежать в дальнейшем многих сложностей и не доводить дела до судебных разбирательств, следует уделить этому вопросу как можно больше времени. Следует тщательно изучить документ на предмет ограничений и соотнести все риски.
Следующий немаловажный вопрос – условия открытия и закрытия. Он уже сложнее. Уважающая себя, развитая, известная франшиза с хорошей репутацией в обязательном порядке заботится о собственном информационном следе. Это касается интернет-пространства: диджитализация во всех сферах практически ничего не оставляет неизвестным. Стоит собрать как можно больше сведений о различных событиях, связанных с компанией. Например, об открытии филиалов, об обороте товаров или востребованности услуг. Также нелишним будет узнать побольше о закрытии точек, если такое имело место быть: сроки, причины. Это нужно для того, чтобы сделать осознанный выбор. Франшиза может иметь большое количество филиалов, и если открытие новых продолжается, то это отлично, однако если закрытий происходит больше, следует об этом задуматься. Это, возможно, говорит о том, что бизнес-план не до конца проработан, команда недостаточно квалифицированная и не учтены многие риски.
В рамках данного вопроса следует опросить работающих франчайзи и тех, кто закрылся. Это может составить беспристрастное впечатление о руководителе и его способностях, о коллективе, о востребованности, о рабочем процессе в целом. Эти данные дорогого стоят и не находятся в открытом доступе, потому следует обязательно приложить усилия для их поиска. Следующий вопрос – концепция. Она должна быть четкой и гибкой, меняться под нужды того или иного региона, цель и миссия франшизы также должны быть ясны. Что касается репутации франшизы, то здесь следует уяснить, то данный вопрос предполагает открытость. Успешная франшиза стремится рассказывать о своих достижениях, демонстрировать доказательства их свершения, делиться отзывами клиентов и партнеров. Последние должна быть в открытом доступе. Должна быть возможность связаться с ними посредством звонка или в социальных сетях. Это нужно для того, чтобы потенциальные франчайзи могли побеседовать с действующими, задать вопросы и получить консультацию.
Далее – бизнес-модель. Это очень важный момент. В правильно составленном бизнес-плане должно быть четко прописаны сумма инвестиций на старте, прибыль, сроки окупаемости. Погрешности неизбежны, но суть необходимо отразить. Следует оценить и преимущества франшизы. Они могут заключаться в необычном виде деятельности, особой нетривиальной технологии, незанятой нише и тому подобное. У франчайзера должны быть собственные наработки, база поставщиков, особенная рекламная компания. Что касается инструкции, то любая информация отлично воспринимается посредством чек-листов, которые должны, в первую очередь, отразить вопрос о том, как запустить франшизу, а также как найти и удержать клиентов. Четко прописанные скрипты общения, портреты потенциальных соискателей, должностные инструкции и тому подобное. Все это франчайзер должен иметь в арсенале своего бизнеса для того, чтобы он был успешным. Наличие CRM, ERP-системы, работающего сайта, также говорит о зрелости и перспективности бизнеса. Конечно же, важно обучение. Успешная франшиза уделяет много времени и сил, чтобы предоставить своим партнерам и их сотрудникам качественные, актуальные знания, которые можно будет применить на практике. В совокупности, все это позволит начинающему предпринимателю сделать верный выбор, способный принести не только прибыль, но и душевное спокойствие.
Как создавать классы и объекты в Ruby
Ruby — это мощный язык программирования, предлагающий современные функции и инструменты. Одной из таких функций является поддержка объектно-ориентированного программирования, включая полиморфизм, инкапсуляции, абстракцию, наследование и многое другое.
В этой статье будет обсуждаться ключевая концепция объектно-ориентированного программирования: объект и классы.
Что такое классы Ruby и объекты O?
Начнем с класса.
Класс — это схема для создания объектов и предоставления реализаций значений, включая переменные, методы, атрибуты и многое другое.
С другой стороны, объект — это единственный экземпляр класса. Возьмем, к примеру, машину. Мы можем создать класс, который описывает чертежи сборки автомобиля. Атрибуты класса могут быть всем, что есть у автомобилей:
- Двигатель
- Дверь
- Модель
- Производитель
Класс автомобиля также может включать методы, которые представляют собой действия, которые могут выполнять объекты класса. Примером может служить то, что автомобиль может зажигаться, ускоряться, останавливаться и т. д.
Классы очень удобны, когда вам нужно создать похожие объекты только с различными аспектами. Вместо объявления блока кода для автомобиля Mercedes, Bugatti, Tesla и т. д. Вы можете создать один класс, на который ссылается каждая модель.
Как создать класс и объект в Ruby
Ruby — невероятный язык, который также очень прост в использовании. Он предоставляет простой синтаксис для создания класса.
Общий синтаксис:
class ClassName # БЛОК end
Мы начинаем с вызова ключевого слова class, за которым следует имя класса, который мы хотим создать. Имя класса начинается с заглавной буквы и использует CamelCase для следующих имен.
Внутри класса мы определяем все переменные и методы, которые потребуются классу.
Мы закрываем код класса с помощью ключевого слова end.
Пример
Давайте посмотрим на примере класса автомобиля.
class Car
def initialize(engine, name, year)
@engine = engine
@name = name
@year = year
end
def ignite
puts "Зажигание!"
end
def stop
puts "Остановка транспортного средства"
end
def accelerate(target_speed)
@target_speed = target_speed
puts "Автомобиль разгоняется до #{target_speed} m/h"
end
end
f = Car.new("a108d", "F A-Class", 2010 )
g = Car.new("00Ca", "Zero G-8", 2011)
h = Car.new("777d", "G Potato", 2022)
В приведенном выше коде мы начинаем с определения класса автомобиля. Внутри класса мы определяем метод инициализации, особый тип метода в Ruby, используемый для создания вызываемого экземпляра класса с необходимыми аргументами. Метод инициализации действует как конструктор для new.
Внутри метода инициализации мы передаем двигатель, имя и год выпуска автомобиля. Затем мы выполняем несколько действий с автомобилем, включая зажигание, ускорение и остановку.
Наконец, мы создаем экземпляр класса автомобиля. Мы называем это экземпляром, потому что мы создаем экземпляр класса.
Мы передаем параметры методу инициализации, который создает три уникальных типа автомобилей.
Использование методов класса
В приведенном выше примере мы создаем класс с различными методами, но еще не использовали их. Чтобы использовать метод, мы просто вводим имя объекта, за которым следует точка и имя метода.
Синтаксис:
my_object.method
Возьмем предыдущий пример; Чтобы зажечь автомобиль f, мы можем:
// Ссылка на код выше
f = Car.new("a108d", "F A-Class", 2010 )
g = Car.new("00Ca", "Zero G-8", 2011)
h = Car.new("777d", "G Potato", 2022)
f.ignite
Если мы запустим приведенный выше код, мы увидим, что автомобиль успешно загорелся, напечатав строку «Зажигание!»
Каждая часть метода инициализации работает как команда, определяющая действия, которые может выполнять объект, созданный из класса.
Получите исходный класс
Каждый тип в Ruby — это объект класса. Вы можете просмотреть, из какого класса создан объект, с помощью метода класса.
Например:
class Car
def initialize(engine, name, year)
@engine = engine
@name = name
@year = year
end
def ignite
puts "Зажигание!"
end
def stop
puts "Остановка транспортного средства"
end
def accelerate(target_speed)
@target_speed = target_speed
puts "Автомобиль разгоняется до #{target_speed} m/h"
end
end
f = Car.new("a108d", "F A-Class", 2010 )
puts "hello".class
puts 10.class
puts 11.023.class
puts f.class
После выполнения кода мы должны увидеть классы для строки, целого числа, числа с плавающей запятой и автомобиля как:
String Integer Float Car
Заключение
В этой статье мы изучили основы объектно-ориентированного программирования в Ruby с использованием классов и объектов. Приятно отметить, что ООП — обширная тема. Ознакомьтесь с другими ресурсами, чтобы узнать больше.
Найти максимальное значение в списке Python
Никто из нас не может оспаривать, что Python — один из самых популярных и полезных языков программирования. Он предлагает широкий спектр типов данных, которые полезны в широком диапазоне приложений.
Один из основных и универсальных типов данных в Python — это список. Список Python — это набор упорядоченных элементов, разделенных запятыми. Список Python является изменяемым, и вы можете изменять элементы списка.
Из этой статьи Вы узнаете, как создать список Python, и предложите различные способы найти максимальное значение внутри списка.
Как создать список Python
Начнем с основ: как создать список.
Чтобы создать список в Python, мы добавляем все элементы (разделяя каждый элемент запятой) внутри пары квадратных скобок [].
Элементы в списке Python могут поддерживать различные типы данных, включая строки, целые числа, числа с плавающей запятой, словари и даже вложенные списки.
В следующем примере создается список my_list с различными элементами в нем.
# инициализировать пустой список
my_list = []
# список с целыми числами, строками, числами с плавающей запятой, словарями и вложенными списками
my_list_ = [10, "Hello World", 10.1, ["nested_list", {"key": "value"}, 10]]
В первом списке мы инициализируем список без элементов. Затем мы заполняем его различными типами данных, включая целые числа, строки, числа с плавающей запятой, словари и списки.
Как получить доступ к элементам списка
Мы можем получить доступ к элементам в списке, используя различные методы. Для простоты мы обсудим только два метода.
Первый:
1: Индексирование массива
Чтобы получить доступ к элементам в массиве с использованием подхода индексирования массива, мы используем оператор индекса в Python. Внутри оператора мы передаем индекс, к которому хотим получить доступ.
Рассмотрим пример ниже:
db = [ "MySQL", "PostgreSQL", "SQLite", "MongoDB", "MariaDB", "Redis", "Microsoft SQL server", "Oracle", "Firebase", "Elasticsearch" ]
Допустим, в приведенном выше списке представлены самые популярные базы данных. Чтобы найти наиболее используемую базу данных, мы можем использовать синтаксис:
print(db[0])
Приведенный выше оператор должен возвратить MySQL.
Если мы попытаемся получить доступ к 10-му индексу, мы получим ошибку:
print(db[10]) IndexError: list index out of range
Вышеупомянутый метод полезен, когда вы знаете, сколько элементов находится в списке. Если вы не уверены в элементах в списке, вы можете использовать второй метод.
2: Использование цикла
Простой способ получить доступ ко всем элементам в списке — использовать простой цикл for. Пример кода для этого ниже:
db = [ "MySQL", "PostgreSQ;", "SQLite", "MongoDB", "MariaDB", "Redis", "Microsoft SQL server", "Oracle", "Firebase", "Elasticsearch" ] for item in db: print(item)
Это зациклит каждый элемент в списке db и распечатает каждый элемент в нем.
Пример вывода для этого:
MySQL PostgreSQ; SQLite MongoDB MariaDB Redis Microsoft SQL server Oracle Firebase Elasticsearch
Как найти максимальное значение в списке Python
Теперь давайте погрузимся в суть этой статьи; как найти максимальное значение в списке. Для этого мы будем реализовывать различные методы для достижения того же результата.
1. Использование метода сортировки
Первый метод, который мы можем использовать для поиска максимального значения в списке Python, — это метод сортировки.
Для этого мы передаем имя списка методу sort(), который отсортирует все значения в порядке возрастания. После процесса сортировки списка мы можем получить доступ к последнему элементу в массиве, чтобы получить наибольшее значение.
Например, рассмотрим массив значений ниже:
values = [ 10, 29.34, 23, 72, 110, 773, 322, 63, 1, 34, 5, 10, 64.3 ]
Мы можем просто вызвать метод сортировки по списку выше и получить последний элемент.
Чтобы получить последний элемент в массиве, мы можем использовать опцию индексирования и указать индекс как -1, который является последним элементом.
Рассмотрим пример кода ниже:
values = [
10, 23, 72, 110, 773, 322, 63, 1, 34, 5, 10
]
values.sort()
print(f"The maximum value in the list is: {values[-1]}")
Запустив приведенный выше код, мы должны получить максимальное значение как:
The maximum value in the list is: 773
2. Использование If… else
Другой простой способ получить максимальное значение в списке — использовать простой оператор if… else.
Чтобы реализовать это, мы сначала предполагаем, что наибольшее значение — это первый элемент в индексе. Затем мы перебираем каждый элемент в списке и проверяем, не превышает ли он начальное значение. Следовательно, оно установлено как максимальное значение; в противном случае переходите к следующему.
Рассмотрим реализацию ниже:
values = [
10, 23, 72, 110, 773, 322, 63, 1, 34, 5, 10
]
# предположим, что максимальное значение равно индексу 0
maximum = values[0]
for i in values:
if i > maximum:
maximum = i
print(f"Максимальное значение составляет: {maximum}")
Точно так же, если мы запустим приведенный выше код, мы должны получить максимальное значение 773. Вот пример вывода:
Максимальное значение составляет: 773
3: Использование функции Max
Python имеет встроенную функцию max, которую вы можете использовать для определения максимального значения в итерируемом объекте. Например, если мы вызываем функцию max в списке строк, она возвращает последний элемент со строками, расположенными в алфавитном порядке.
Вот пример:
values = [
10, 23, 72, 110, 773, 322, 63, 1, 34, 5, 10
]
print(f"Максимальное значение составляет: {max(values)}")
4: Использование метода Nlargest очереди кучи
Нетрадиционный способ найти наибольшее значение в списке — использовать метод nlargest в модуле Heap Queue.
Этот модуль реализует алгоритм очереди кучи. Узнайте больше о модуле очереди кучи Python.
Метод nlargest вернет наибольшие указанные значения. Например, если вы укажете 5, метод вернет 5 наибольших значений в указанной итерации.
Например:
from typing import ValuesView
import heapq
values = [
10, 23, 72, 110, 773, 322, 63, 1, 34, 5, 10
]
print(f"Максимальное значение составляет {heapq.nlargest(1, values)}")
Приведенный выше код должен вернуть значение 773.
Максимальное значение составляет: 773
Чтобы отобразить 5 наибольших значений, установите количество элементов на 5 следующим образом:
from typing import ValuesView
import heapq
values = [
10, 23, 72, 110, 773, 322, 63, 1, 34, 5, 10
]
print(f"Максимальными значениями по порядку являются {heapq.nlargest(5, values)}")
Это должно вернуть результат, аналогичный показанному ниже:
Максимальными значениями по порядку являются [773, 322, 110, 72, 63]
Хотя описанный выше метод может оказаться излишним, в некоторых случаях он может оказаться полезным.
Заключение
В этой статье показано, как создавать списки Python, получать доступ к элементам в списке и различные способы получения максимальных значений в списке Python.
Спасибо за чтение!
Bash-скрипты
Сегодня поговорим о bash-скриптах. Это — сценарии командной строки, написанные для оболочки bash. Существуют и другие оболочки, например — zsh, tcsh, ksh, но мы сосредоточимся на bash. Этот материал предназначен для всех желающих, единственное условие — умение работать в командной строке Linux.

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

Книга: Сильный искусственный интеллект : На подступах к сверхразуму. Александр Ведяхин.
Эта книга -первый кросс-дисциплинарный гид по искусственному интеллекту на русском языке. Сильный искусственный интеллект —
это следующая ступень в развитии ИИ, не обязательно наделенного самосознанием, но, в отличие от современных нейросетей, способного справляться с широким кругом задач в разных условиях. Авторы книги рассказывают о том, что должен уметь сильный ИИ, какие научные подходы помогут его создать и как изменится мир с его появлением.
Скачать бесплатно Книга: Сильный искусственный интеллект : На подступах к сверхразуму. Александр Ведяхин.
2021-08-23T08:36:36Книги и Курсы
