Pull to refresh
1
0
Send message

Переход с физического сервера на виртуальный

Reading time5 min
Views12K

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

Но есть случаи, когда виртуальный сервер удобнее домашнего. Например, он удобнее для раздачи файлов в интернете и обслуживания личного веб-сайта, а также для мониторинга и тестирования сервисов (программа должна быть постоянно в онлайне). Для создания дополнительной резервной копии файлового архива, которая будет физически удалена от основного домашнего хранилища. Даже ультрадешёвый сервер за 130 рублей в месяц способен одновременно поддерживать несколько процессов.
Читать дальше →
Total votes 20: ↑19 and ↓1+28
Comments10

Как написать свой клиент для YouTube, не привлекая внимания санитаров

Level of difficultyEasy
Reading time3 min
Views15K

Привет, Хабр! Когда‑то давно я наткнулся на ролик, где парень писал консольный клиент для YouTube. Идея была просто потрясающей!

Написать свой минималистичный и быстрый клиент, который не будет надоедать
лентами рекомендаций, рекламой, комментариями и т. д. Но вот беда, автор, не найдя возможности использовать YouTube API, решил спарсить одну из фронтенд обёрток над YouTube.

Стоит ли говорить о том, что такое решение сильно теряет в производительности и абсолютно нежизнеспособно на какой‑либо длительный период времени?

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

Пишем асинхронный парсер и скрапер картинок на Python с графическим интерфейсом

Reading time6 min
Views15K

В этой статье мы создадим desktop-приложение, которое по нашему запросу будет сохранять на нашем диске заданное количество картинок. Так как картинок будет много, мы воспользуемся асинхронностью Python для конкурентной реализации операций ввода-вывода. Посмотрим, чем отличаются библиотеки requests и aiohttp. Также создадим два дополнительных потока приложения, чтобы обойти глобальную блокировку интерпретатора Python.

Читать далее
Total votes 8: ↑6 and ↓2+6
Comments9

По локоть в легаси: пошагово перезапускаем устаревший портал на PHP

Level of difficultyMedium
Reading time10 min
Views12K

PHP — один из самых популярных языков веб-разработки уже около 20 лет, а самому языку скоро стукнет 30. За это время на нем написали огромное количество больших и маленьких проектов. Некоторые сайты, созданные в 90-х, 00-х и 10-х, хранят код еще с тех давних времен. И чем больше времени проходит с начала разработки, тем меньше на рынке специалистов, готовых разбираться в легаси и не самых современных технологиях.

В похожей ситуации оказался портал fishingsib.ru — один из крупнейших в рунете сайтов о рыбалке, который посещают больше 10 000 человек ежедневно. Он создавался в начале 2000-х как форум для рыбаков-любителей и пережил несколько довольно серьезных обновлений кодовой базы. Последнее из них — переезд на CakePHP 2 в 2012 году. На этом фреймворке и PHP 5 сайт жил до 2017 года.

Владелец fishingsib.ru планировал поддерживать и развивать сайт, внедрять новую функциональность, однако столкнулся с техническими проблемами. Любые доработки были очень долгими из-за неудачных архитектурных решений и сильной зависимости от устаревающего и не особенно популярного CakePHP 2. После каждого обновления появлялось множество багов. В то же время не удавалось найти новых разработчиков, потому что большинство специалистов не хотели работать в проекте с неактуальным стеком. Развитие проекта сильно замедлилось и стало понятно, что с технической частью нужно что-то делать.

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

Обрезать нельзя сжать. Как ускорить метрики проекта без больших вложений

Level of difficultyMedium
Reading time9 min
Views3.2K

Мы не раз читали на Хабре, почему важно иметь быстрые сайты, как это влияет на посещаемость, время на странице, глубину и прочее. Но каждый раз это инструкции о том, как поменять инфраструктуру серверов, потратить десятки часов на разработку и ощутимое количество денег. В случае больших корпораций, конечно же, такие действия оправданы. А маленькие стартапы обычно таким и вовсе не занимаются, фокусируясь на других задачах. Мы же оказались где-то посередине. У нас были плохие показатели, но времени на какие-то значительные изменения не было. И несмотря на наличие ресурсов мы решили пойти самым простым путём и, как и гласит закон Парето, получить 80% результата за 20% усилий. Меня зовут Савичев Игорь, я работаю в Самолете и мы занимаемся цифровизацией строительства на российском рынке. Мы развиваем IT-технологии в разных направлениях от девелопмента до финтеха. И сегодня я расскажу, можно ли сделать себе хорошо, быстро и не очень дорого.

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

Настраиваем минимальный WEB-сервер на Repka Pi 3. NGINX + PHP-FPM + MySQL и ставим Wordpress

Level of difficultyMedium
Reading time10 min
Views5.3K

В этой статье я расскажу как установить на Repka Pi 3 полноценный WEB сервер на Nginx с php-fpm и MySQL для того, чтоб в конечном счете установить WordPress и начать делать и размещать Ваш сайт на данной платформе. Ставить будем на родную ОС Repka Pi от 11.12.23 (последняя актуальна прошивка на момент написания статьи).

Читать далее
Total votes 10: ↑8 and ↓2+9
Comments22

Что нового в IMSProg?

Level of difficultyEasy
Reading time2 min
Views2.9K

Пару месяцев назад я писал историю создания программатора микросхем CH341a для Linux систем. Благодаря вашим отзывам и комментариям программа изменилась, надеюсь в лучшую сторону.

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

Nginx: шпаргалка

Level of difficultyEasy
Reading time2 min
Views22K

Шпаргалка по основным секциям Nginx, которые следует держать под рукой. Ниже приведены самые частые функции: включение SSL, переадресация, раздача статики и т.д.

Читать далее
Total votes 31: ↑15 and ↓16+1
Comments18

Разработка расширения для PHP на C++. Хуки встроенных функций и методов

Level of difficultyMedium
Reading time18 min
Views3.7K

PHP - это мощный и широко используемый язык программирования для веб-разработки. Однако, иногда требуется расширение функциональности или модификация стандартного поведения PHP с использованием более низкоуровневых языков, таких как C++. В этой статье мы рассмотрим, как создать расширение для PHP на C++ на примере разработки функциональности, позволяющей перехватывать вызовы встроенных функций и методов классов в php.

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

Postman: Основы тестирования API и первые шаги с инструментом

Level of difficultyMedium
Reading time14 min
Views93K

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

И вот на сцену выходит Postman - мощный и интуитивно понятный инструмент, предназначенный специально для тестирования и разработки API. В этой статье рассказывается о самых базовых вещах, с которых следует начать свое знакомство с Postman.

Отправка HTTP-запросов, создание тестов, организация запросов в коллекции, работа с переменными - все это лишь часть функциональности Postman, которая облегчает процесс тестирования и повышает его эффективность. Если вы только начинаете свой путь в изучении этого инструмента, не волнуйтесь! Этот гайд поможет вам разобраться с базовыми принципами работы с Postman и покажет, как сделать ваш процесс тестирования API гораздо более эффективным и приятным.

Готовы начать? Давайте вместе погрузимся в увлекательный мир тестирования API с Postman!

Читать далее
Total votes 13: ↑12 and ↓1+13
Comments13

Как я из телефона сделал сервер для своего бота в телеграме

Level of difficultyMedium
Reading time3 min
Views39K

Как я из телефона сделал сервер для своего бота в телеграме

Все началось с того что я написал своего бота и решил его выложить в открытый доступ, а точнее чтобы он работал круглосуточно, но платить деньги, за хостинг мне не хотелось. И тогда я вспомнил, что у меня как раз в ящиках залежались старые 2 телефона, можно сказать только один, потому что второй я превратил в кирпич (Неправильно перепрошил). Мой путь поиска программы для установки линукса начался с Termux, но к сожелению он работает только с Android 7+. А телефон на Android 5. Поэтому действенным решением я выбрал UserLAnd.

Читать далее
Total votes 27: ↑26 and ↓1+29
Comments59

База по SPI NOR FLASH

Level of difficultyEasy
Reading time2 min
Views4.5K

Еще недавно была моя публикация о программе IMSProg — программаторе для CH341a в Linux, а различные идеи продолжают приходить в голову. Происходит это во многом благодаря вашим комментариям к статье.

Микросхемы энергонезависимой памяти с последовательным интерфейсом SPI NOR FLASH все чаще применяются в различных микропроцессорных и микроконтроллерных устройствах от материнских плат до приставок для приема цифрового телевидения. Не могу сказать, что эта тенденция мне нравится — выход из строя устройств по причине разрушения информации BIOS в связи с применением этого типа микросхем многократно увеличился, но остановить процесс (прогресс?) невозможно.

Существует несколько десятков фирм, изготавливающих SPI NOR FLASH. У каждой из фирм несколько десятков моделей микросхем. При подключении такой микросхемы к программатору, чаще всего, сначала происходит подача на микросхему команды 9Fh, в ответ на которую микросхема отдает программатору несколько байт информации JEDEC ID — уникального числа, первый байт которого является кодом производителя, второй — модификацией микросхемы, а третий — кодом емкости (объема) микросхемы. Сравнивая эти три байта с таблицей софт программатора определяет модель микросхемы и выставляет соответствующие параметры для чтения, записи или стирания микросхемы.

Многие из производителей софта для программаторов безнадежно отстают от расширяющегося ассортимента и новые микросхемы не определяются программатором. Поэтому возникла идея объединения информации о SPI NOR FLASH в одном месте. В результате получилась очень большая таблица:

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

А был ли баг? Может бага и не было? Зачем, как и чем тестировать PHP код

Level of difficultyEasy
Reading time19 min
Views5.9K

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

Читать далее
Total votes 8: ↑6 and ↓2+9
Comments0

Простой ORM для sqlite3

Level of difficultyMedium
Reading time12 min
Views13K

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

Не бывало ли вам интересно, как работает изнутри такая идейно простая концепция? Благодаря чему достигается удобство работы? Сегодня мы напишем ORM самостоятельно и узнаем, какие инструменты python нам для этого понадобятся.
Читать дальше →
Total votes 37: ↑36 and ↓1+48
Comments26

IMSProg — программатор для CH341a в Linux

Level of difficultyMedium
Reading time4 min
Views15K

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

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

Протоколы семейства TCP/IP. Теория и практика

Level of difficultyMedium
Reading time23 min
Views115K
image

В сети можно найти огромное количество материала о том, как функционируют сети на базе стека протоколов TCP/IP, а также как писать компьютерные программы с сетевыми возможностями. При рассмотрении компьютерных сетей часто углубляются в описание физических основ и структур данных, передаваемых по сети, а при рассмотрении сетевого программирования основное внимание уделяют интернет-сокетам.

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

В ходе работы над статьёй я написал небольшое приложение, которое послужит отправной точкой для понимания компьютерных сетей и семейства протоколов TCP/IP. С приложением можно экспериментировать, получая дополнительные знания.

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

В статье изложены наиболее важные с моей точки зрения понятия, которые должен знать любой программист, хоть как-то сталкивающийся с компьютерными сетями. Так что без теоретических сведений не обошлось.
Читать дальше →
Total votes 82: ↑82 and ↓0+82
Comments5

Принцип работы async/await в JavaScript

Level of difficultyMedium
Reading time8 min
Views28K


Если вам доводилось работать с JavaScript, то вы наверняка встречались с синтаксисом async/await. Эта функциональность позволяет прописывать асинхронную логику синхронным образом, упрощая тем самым её понимание. Некоторым ветеранам JS известно, что async/await – это просто синтаксический сахар для существующего Promises API. Это означает, что в JS должен быть способ реализации функциональности async/await без использования ключевых слов async и await, хоть и более громоздкий. Именно об этом и пойдёт речь в данной статье.

Видео от автора на ту же тему.
Читать дальше →
Total votes 41: ↑40 and ↓1+54
Comments19

Работа с SQLite в Python (для чайников)

Level of difficultyMedium
Reading time14 min
Views134K

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

Читать далее
Total votes 4: ↑2 and ↓2+2
Comments9

Управление памятью в PHP. Сборка мусора, слабые ссылки и прочая челядь

Level of difficultyMedium
Reading time11 min
Views12K

1. Введенние.
2. Zval.
3. Циклические ссылки.
4. Сборщик мусора.
5. Алгоритм работы сборщика мусора.
6. Смотрим глазами.
7. Слабые ссылки.
8. Бонус-трэк: WeakMap.
9. Заключение.

Читать далее
Total votes 23: ↑22 and ↓1+26
Comments6

Как делается OpenSource: личный опыт

Level of difficultyMedium
Reading time17 min
Views37K

Я - автор двух пакетов, входящих более-менее во все дистрибутивы Linux: sane-airscan и ipp-usb.

Кроме того, sane-airscan входит во все основные дистрибутивы BSD (FreeBSD, NetBSD и OpenBSD) и в ChromeOS. ipp-usb в ChromeOS не взяли потому, что он написан на Go, а у них там очень жестко с размером исполняемых файлов, вместо этого они написали свое на Rust, но предпочли бы взять моё изделие, если бы могли. Совсем недавно появился порт ipp-usb на FreeBSD, вероятно, другие BSD тоже скоро подтянутся.

Вместе эти два пакета образуют стек "бездрайверного" сканирования документов для Linux и *BSD, а в перспективе нескольких лет, когда старые сканеры, наконец, вымрут, вероятно других драйверов и не останется.

Кроме того, ipp-usb делает возможным "бездрайверную" печать на USB-устройствах.

Здесь я хочу рассказать, каково оно, быть автором популярных OpenSource пакетов. Хоть эта работа и не принесла мне особых денег (на что я, впрочем, особо и не рассчитывал), она принесла мне бесценный опыт.

В целом, я полагаю, продвижение OpenSource пакетов структурно близко к продвижению на рынок программных продуктов. Занимаясь этой деятельностью, очень хорошо начинаешь понимать разницу между (1) написать программу, которая работает для меня (2) написать программу, которую можно назвать продуктом (3) вывести продукт на рынок.

Первое занимает гораздо меньше времени, чем второе. Второе - гораздо меньше времени, чем третье.

Читать далее
Total votes 394: ↑394 and ↓0+394
Comments71
1
23 ...

Information

Rating
Does not participate
Registered
Activity