Наши услуги

Мы предлагаем

serv2
Сайт визитка - лендинг
Одна шаблонная страница - когда надо сегодня
serv2
Сайт магазин с CRM
Главная страница, каталог товаров/услуг, личный кабинет продавца
serv2
Дизайн для своего сайта
Нарисуем вам новый дизайн
serv2
Доработка существующего сайта
Когда что-то сломалось
serv2
Дизайн печатной продукции
Визитки, баннеры, стикеры и прочее нецифровое, что можно будет потрогать :)
serv2
Не знаю как объяснить - посмотрите сами
И такое делаем :)

Почему мы?

Минимум взаимодействий
Минимум взаимодействий
Из материалов только ваша страница или сайт
Всегда на связи
Всегда на связи
Голосовые, текст, видео - как удобно :)
Бывает и дорого, но есть бесплатно
Бывает и дорого, но есть бесплатно
Качество не зависит от цены
Индивидуальный подход
Индивидуальный подход
Разумеется :)
business
Коротко

О нас

wow5
2015
работаем успешно с
wow3
5
Реализованных проектов

Это начало интересного текста обо мне

Чуть позже напишу тут интересный текст

Партнёров пока нет
Но, ты пиши если что :)

Наши работы

Работа 1
Работа 2

Ознакомьтесь с нашим сервисом и комфортным сотрудничеством

Тарифы

Сайтик фри
0
Точно такой лендинг
checkedВаши фото, контакты и тексты
checkedИмя сайта имя.dencompany.ru
checkedБез мелкого шрифта и камней
Лайт
от
5 000
₽/год
Когда сайт пробник понравился и надо расширяться
checkedСамостоятельное имя сайта
checkedИндивидуальные настройки
checkedCRM (личный кабинет продавца)
checkedБез мелкого шрифта и камней
Хочу всё
от
15 000
₽/мес
Когда налажен процесс или не очень, но надо много и не хочется вникать
checkedСамостоятельное имя сайта
checkedИндивидуальный дизайн
checkedCRM (личный кабинет продавца)
checkedПеренос товаров с текущего сайта
checkedБез мелкого шрифта и камней

Профессионалы своего дела

Наша команда

Фото
Fullstack ведущий программист
Денис

О нас говорят

Отзывы клиентов

Фото отзыв
Я — специалист по SMM
Linda
Дизайнер
Фото отзыв
Отзыв 1
Mark
Backend разработчик
Смотреть все

Все, что нужно знать о бизнесе

Блог

Читать блог
Фото блог
14
11.2026
5 основных инструментов для продвижения интернет-бизнеса
Я — специалист по SMM.
Фото блог
14
11.2026
5 основных инструментов для продвижения интернет-бизнеса
Раньше работала дома.
Фото блог
14
11.2026
5 основных инструментов для продвижения интернет-бизнеса
Я работала дома.

Все, что нужно знать о создании сайтов

Статьи

13.11.2026
Реализация алгоритма на Objective-C: пошаговое руководство для новичка Objective-C — это язык программирования, который долгое время был основным для разработки под macOS и iOS. Несмотря на появление Swift, понимание Objective-C остаётся полезным навыком, особенно при работе с устаревшим кодом и системными библиотеками. В этой статье мы разберём, как реализовать простой алгоритм на Objective-C, и уделим внимание ключевым особенностям языка, важным для начинающих. Что нужно знать перед началом Прежде чем приступить к написанию кода, новичку стоит усвоить несколько базовых концепций Objective-C. Синтаксис сообщений. В отличие от многих языков, методы вызываются через квадратные скобки: [объект метод]. Классы и объекты. Код организуется вокруг классов, описываемых в двух файлах: заголовочном (.h) и реализационном (.m). Управление памятью. Современный код использует автоматический подсчёт ссылок (ARC), что упрощает работу новичкам. Фундаментальные типы. Для чисел и строк используются NSNumber, NSString, а также примитивные типы вроде NSInteger. Постановка задачи В качестве примера реализуем алгоритм вычисления чисел Фибоначчи. Это классическая задача, которая хорошо показывает работу с циклами, переменными и методами. Мы создадим класс FibonacciCalculator с методом, возвращающим n-е число последовательности. Создание заголовочного файла Заголовочный файл объявляет интерфейс класса. Именно здесь другие части программы узнают, какие методы доступны. #import <Foundation/Foundation.h> @interface FibonacciCalculator : NSObject - (NSInteger)fibonacciNumberAtIndex:(NSInteger)index; @end Строка @interface объявляет новый класс, наследующий NSObject — базовый класс большинства объектов в Objective-C. Метод принимает целое число и возвращает целое число. Реализация алгоритма В файле реализации опишем сам алгоритм. Используем итеративный подход, так как он эффективнее рекурсивного и не приводит к переполнению стека при больших значениях. #import "FibonacciCalculator.h" @implementation FibonacciCalculator - (NSInteger)fibonacciNumberAtIndex:(NSInteger)index { if (index <= 0) { return 0; } if (index == 1) { return 1; } NSInteger previous = 0; NSInteger current = 1; for (NSInteger i = 2; i <= index; i++) { NSInteger next = previous + current; previous = current; current = next; } return current; } @end Разберём ключевые моменты реализации. Проверка граничных условий. Для индексов 0 и 1 возвращаются базовые значения последовательности. Инициализация переменных. Переменные previous и current хранят два последних числа. Цикл. На каждой итерации вычисляется следующее число и переменные сдвигаются. Возврат результата. Метод возвращает найденное значение через return. Использование класса в программе Теперь покажем, как вызвать созданный метод из основной программы. #import <Foundation/Foundation.h> #import "FibonacciCalculator.h" int main(int argc, const char * argv[]) { @autoreleasepool { FibonacciCalculator *calculator = [[FibonacciCalculator alloc] init]; NSInteger result = [calculator fibonacciNumberAtIndex:10]; NSLog(@"10-е число Фибоначчи: %ld", (long)result); } return 0; } Обратите внимание на конструкцию @autoreleasepool: она управляет пулом автоматического освобождения объектов и полезна при работе с памятью. Создание объекта происходит в два шага — выделение памяти через alloc и инициализация через init. Советы новичку Внимательно следите за скобками. Синтаксис сообщений Objective-C легко перепутать, особенно в начале. Используйте NSLog для отладки. Это удобный способ вывести значения переменных в консоль. Не забывайте про импорты. Без #import нужного заголовочного файла компилятор не увидит объявления класса. Практикуйтесь на простых задачах. Начните с алгоритмов сортировки и поиска, чтобы закрепить синтаксис. Реализация алгоритмов на Objective-C требует понимания как самой логики задачи, так и особенностей языка. Освоив базовый синтаксис классов, методов и работы с памятью, вы сможете уверенно переходить к более сложным проектам и поддерживать существующий код.
11.11.2026
Как объяснить дедушке, что такое Scheme Представьте, дедушка, что вы объясняете внуку, как собрать табурет. Вы не даёте ему готовый табурет, а показываете молоток, гвозди и доски. Scheme — это такой же набор простых инструментов для разговора с компьютером. Только вместо досок — скобки, а вместо гвоздей — маленькие команды. Почему всё в скобках В обычной жизни мы говорим: «Сложи два и три». В Scheme та же мысль записывается так: (+ 2 3). Скобка — это как кастрюля: сначала кладём в неё действие, потом ингредиенты. Компьютер открывает кастрюлю, видит действие и продукты, и выдаёт результат — пять. Дедушка, вы ведь варите борщ по рецепту? Сначала берёте кастрюлю, потом кладёте туда всё по порядку. Вот и Scheme работает по рецепту: действие всегда стоит первым, а за ним — то, с чем это действие работает. Три кита Scheme Чтобы не запутаться, запомните три простые вещи, на которых держится весь язык. Атомы — это как отдельные продукты: числа, слова, правда и ложь. Например, 42 или яблоко. Списки — это как корзина с продуктами, всё в скобках: (1 2 3). Выражения — это рецепт, который компьютер выполняет: (умножить 3 4). Из этих трёх китов складывается всё остальное, как из досок, гвоздей и молотка складывается мебель. Как Scheme думает Самое интересное — Scheme не говорит компьютеру «сделай шаг один, потом шаг два». Она говорит: «Вот тебе правило, примени его к данным». Это называется функциональным подходом. Вы описываете правило — маленькую функцию. Компьютер подставляет в правило нужные значения. Получается результат, и вы его используете дальше. Дедушка, это как ваша привычка: «Если гость пришёл — ставь чайник». Вы не расписываете каждый шаг, а называете правило, и оно работает само. Зачем это нужно сегодня Scheme — старый и уважаемый язык, ему больше сорока лет. Но он до сих пор жив, потому что учит думать чисто. На нём удобно объяснять, как устроены компьютеры и языки программирования. Многие современные языки взяли у Scheme идеи: например, умение обрабатывать списки и передавать функции как обычные значения. Если внук спросит, зачем учить Scheme, скажите так: это как учиться играть гаммы на пианино — играть сразу песни веселее, но гаммы делают руки умными. Scheme делает умной голову программиста. С чего начать дедушке Возьмите листок и напишите первую строчку: (+ 1 1). Это уже программа. Потом попробуйте (* 6 7) и (- 10 4). Когда освоитесь, попробуйте вложить одну скобку в другую: (+ (* 2 3) 4) — компьютер сначала умножит, потом сложит. Так, шаг за шагом, вы поймёте главную мысль: Scheme — это не про сложность, а про ясность. Каждая скобка — это маленький понятный шаг, а из шагов складывается большая и надёжная программа. И этому можно научить любого, даже дедушку, если объяснять спокойно и по порядку.
08.11.2026
Оптимизация кода на Lua: взгляд дальнобойщика Представьте, что вы дальнобойщик, а ваш код на Lua — это фура с грузом. Чем меньше лишнего веса в кузове, тем быстрее вы доедете до точки выгрузки и тем меньше топлива сожжёте. Оптимизация в Lua работает по тому же принципу: убираем балласт, правильно загружаем прицеп и следим за расходом ресурсов на каждом перегоне. Почему Lua требует аккуратности Lua — лёгкий и быстрый язык, но его динамическая природа означает, что многие вещи вычисляются прямо во время движения. Если не следить за этим, машина начнёт «жрать топливо» на ровном месте: таблицы пересоздаются, строки склеиваются впустую, глобальные переменные тормозят поиск. Дальнобойщик не выбрасывает груз на каждом светофоре — и вы не должны создавать таблицы внутри горячих циклов без нужды. Основные приёмы оптимизации Локализуйте всё, что можно Глобальные переменные в Lua ищутся через таблицу _ENV, и это как езда с открытым прицепом — медленно и с потерями. Сохраните часто используемые функции и значения в локальные переменные перед циклом. Локальные переменные индексируются быстрее глобальных. Вынесите math.floor, table.insert, string.format в локальные ссылки, если вызываете их в цикле. Помните, что Lua допускает не больше 200 локальных переменных в функции — не перегружайте кабину. Не создавайте мусор на ходу Каждая новая таблица или строка — это груз, который потом придётся выгружать сборщику мусора. В горячих участках кода избегайте создания временных таблиц и конкатенации строк в цикле. Используйте table.concat вместо повторного .. для сборки строки. Переиспользуйте таблицы-буферы, очищая их через table.remove или обнуление полей. Не бойтесь передавать таблицу как параметр, чтобы избежать аллокаций внутри функции. Следите за таблицами как за прицепом Таблицы в Lua — универсальный контейнер, но у них есть цена. Массивы (последовательности с целочисленными ключами) работают быстрее словарей, поэтому храните данные подряд, без «дыр» в индексах. Держите массивы плотными: индексы от 1 до n без пропусков. Для пар «ключ-значение» используйте хеш-часть осознанно и не смешивайте её с массивами без необходимости. Кэшируйте длину массива в локальной переменной, если читаете её в цикле. Измеряйте, а не гадайте Опытный дальнобойщик не меняет маршрут по интуиции — он смотрит на расход и время. Так и здесь: перед оптимизацией профилируйте код, найдите настоящие «пробки», а не красьте весь прицеп. Используйте os.clock или внешние профайлеры для замера участков. Оптимизируйте только доказанно медленные места. Проверяйте, что после правок поведение программы не изменилось. Итог Оптимизация на Lua — это дисциплина дальнобойщика: лёгкий груз, локальные переменные вместо глобальных, минимум мусора в горячих циклах, плотные массивы и обязательные замеры перед каждым изменением маршрута. Соблюдайте эти правила, и ваш код будет доезжать до цели быстро, экономно и без неожиданных поломок в пути.
Открыть все статьи
bg_1
Остались вопросы? Задавайте их немедленно.
мы проконсультируем совершенно бесплатно