Pull to refresh
4
0
Send message

Создание PDF размером с Германию

Level of difficultyEasy
Reading time7 min
Views26K

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

Подобное утверждение появилось на просторах интернета ещё в 2007 году. Этот твит является характерным примером постов с аналогичным заявлением, в которых оно преподносится как твёрдый факт без каких-либо подтверждающих свидетельств или объяснений. То есть мы должны просто принять, что один PDF может покрыть лишь около половины площади Германии, и нам никак не объясняют, почему его магический предел составляет 381 километр.

Тут мне стало интересно – а создавал ли кто-нибудь такой большой PDF? Насколько это сложно? А можно ли сделать документ ещё больше?

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

Приступим!
Читать дальше →
Total votes 93: ↑90 and ↓3+120
Comments57

Создание telegram-ботов с интерактивным меню

Level of difficultyMedium
Reading time15 min
Views48K

Однажды меня попросили провести ревью и рефакторинг одного telegram-бота. Увидев файл размером 2000 строк, рассчитанный только на обработку разных меню я понял, что это требует унификации и общих подходов. Так родилась библиотека aiogram-dialog

В этой статье я бы хотел обратить внимание на некоторые проблемы, которые мы встречаем при создании таких меню, предложить варианты их решения. А во второй половине статьи показать как это решается с помощью aiogram-dialog.

Мы не будем рассматривать архитектуру всего приложения, об этом вы можете прочитать у Фаулера или Мартина. Мы поговорим только про определенную часть UI ботов. Так же это не будет введением в разработку telegram-ботов с нуля. Я предполагаю, что читатель знаком с питоном, ООП и слышал о такой вещи как DRY.

Примеры выбраны так, чтобы проще было показать определенные проблемы, но это не единственные сценарии приводящие к ним.

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

Укрощаем одноглазого змея. Разбираемся с WireGuard и делаем свой умный VPN

Reading time29 min
Views274K

Забавная ситуация: сайтов и сервисов, доступных только через VPN, все больше, но при этом многие российские компании закрывают доступ из-за границы. В результате приходится целыми днями теребить ползунки «вкл-выкл», что утомительно. Я расскажу, как с помощью магии маршрутов и WireGuard, решить эту проблему и сделать «умный» VPN, который не надо отключать.


Если ты пользуешься VPN, то и сам наверняка сталкиваешься с блокировками зарубежного трафика. К примеру, могут не открываться pochta.ru, leroymerlin.ru, rt.ru, avito.ru.


Получается мем.



Каждый с этим борется как может. Например, на устройствах Apple родными средствами можно настроить автоматизацию, которая будет запускать VPN, когда открываешь определенные приложения (например, Twitter), а когда выходишь из них — выключать обратно. Но это костыль, а хочется все сделать красиво, да еще и прокачать навык работы с сетью.


Поэтому мы сейчас попробуем «включать VPN чуть-чуть».

Читать дальше →
Total votes 43: ↑42 and ↓1+51
Comments73

Работа с файлами в JavaScript

Reading time24 min
Views108K
Доброго времени суток, друзья!

Мнение о том, что JavaScript не умеет взаимодействовать с файловой системой, является не совсем верным. Скорее, речь идет о том, что это взаимодействие существенно ограничено по сравнению с серверными языками программирования, такими как Node.js или PHP. Тем не менее, JavaScript умеет как получать (принимать), так и создавать некоторые типы файлов и успешно обрабатывать их нативными средствами.

В этой статье мы создадим три небольших проекта:

  • Реализуем получение и обработку изображений, аудио, видео и текста в формате txt и pdf
  • Создадим генератор JSON-файлов
  • Напишем две программы: одна будет формировать вопросы (в формате JSON), а другая использовать их для создания теста

Если Вам это интересно, прошу следовать за мной.

Код проекта на GitHub.
Total votes 8: ↑6 and ↓2+4
Comments1

Selenium для Python. Глава 4. Поиск элементов

Reading time7 min
Views334K
Продолжение перевода неофициальной документации Selenium для Python.
Перевод сделан с разрешения автора Baiju Muthukadan.
Оригинал можно найти здесь.

Содержание:


1. Установка
2. Первые Шаги
3. Навигация
4. Поиск Элементов
5. Ожидания
6. Объекты Страницы
7. WebDriver API
8. Приложение: Часто Задаваемые Вопросы
Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments6

Точки входа в Python

Reading time6 min
Views31K
Многие думают, что точки входа это такие инструкции в setup.py, которые позволяют сделать пакет доступным для запуска из командной строки. Это, в целом, верно, но возможности точек входа не ограничиваются этим.

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



Осторожно: специфический юмор далее по тексту.
Читать дальше →
Total votes 39: ↑39 and ↓0+39
Comments6

По колено в PDF. PHP парсер с плюшками

Reading time9 min
Views11K
Так получилось, что с месяц назад передо мной выросла совершенно неожиданная задача: сконвертировать PDF в html по имеющемуся шаблону. В том числе необходимо было разбивать все на страницы и выделять в них параграфы. Да и много еще чего. И все бы ничего, и обошелся бы я какой-нибудь левой библиотечкой, но кое-какие специфичные штучки-финтеплюшки, так необходимые мне, в библиотеках не нашлись. И это было печально…
Читать дальше →
Total votes 56: ↑53 and ↓3+50
Comments13

Дешёвые и дорогие батарейки ААА

Reading time3 min
Views347K
Реклама добилась своего: большинство покупателей уверены, что батарейки Duracell и Energizer значительно лучше других. Чтобы проверить, так ли это, я протестировал 20 видов щелочных (alkaline) батареек AAA — от самых дешёвых до самых дорогих.


Читать дальше →
Total votes 369: ↑363 and ↓6+357
Comments388

Новый MTProto-прокси сервер от Telegram

Reading time5 min
Views161K
Прокси-сервер является посредником между клиентом и сервером. Для обхода ограничений прокси-сервер должен быть установлен там, где нет ограничений доступа к требуемой информации, при этом не должно быть таковых ограничений и между клиентом и прокси-сервером.

image

Обновлённая поддержка прокси-серверов в клиентах Telegram


  • Новый MTProto-прокси. Работает с родным для Telegram протоколом MTProto
  • Открытый исходный код сервера на GitHub
  • Docker-образ на DockerHub
  • В мобильных клиентах появилась возможность добавлять несколько прокси-серверов каждого типа. Пользователь может выбрать наиболее подходящий
Читать дальше →
Total votes 106: ↑98 and ↓8+90
Comments261

Google Chrome — убираем рутину с помощью кастомного поиска

Reading time1 min
Views61K
Disclaimer: речь — о давно существующей функции, но, судя по комментам на Хабре, недооцененной, поэтому решил все-таки написать.

Google Chrome позволяет очень сильно ускорить рутинные задачи, связанные с различным поиском. используя адресную строку.

Например:


Как настроить?
Total votes 120: ↑108 and ↓12+96
Comments73

Закрываем 2013 год

Reading time1 min
Views14K
Здравствуйте, дорогие друзья!
Вот во Владивостоке уже наступил Новый 2014 год, и, по традиции, хотелось бы закрыть уползающий змейкой 2013, который принес много интересного и полезного на страницы Хабрахабра.



Хочу предложить каждому написать ссылки на те новости, которые стали наиболее важными и полезными в уходящем году.
Читать дальше →
Total votes 63: ↑49 and ↓14+35
Comments18

Домашний ЧПУ-фрезер как альтернатива 3D принтеру, часть первая — выбор станка

Reading time5 min
Views291K
Последнее время на хабре все чаще появляются топики, посвященные 3D-печати вообще и домашним 3D-принтерам в частности. И почти в каждом в комментариях вспыхивает холивар между романтиками, в жизни не видевшими 3D отпечатков, и практиками, единожды потрогавшими и разочаровавшимися. При этом вторые почему-то не приводят адекватных альтернативных технологий, комментарии носят либо чисто критический характер, либо предлагают заведомо более дорогие альтернативы. Тем не менее, достойная альтернатива есть — домашний фрезерный станок с ЧПУ.

Звучит удивительно, да? Как-то само слово станок в народе ассоциируется с производством, с отдельными помещениями и специально обученным персоналом. В действительности, существует большой класс ЧПУ-станков, рассчитанных на настольное использование в офисе и на малых производствах, а при желании — и дома. При этом цена маленьких ЧПУ-фрезеров приближается (чтобы не сказать равна) к реальной цене 3D-принтеров.

Жизнь сложилась так, что последний год с гаком я занимаюсь изготовлением литьевых форм для полиуретановых изделий на ЧПУ-фрезере. Поскольку до этого 10 лет оттрубил в IT ритейле, а образование не имеет никакого отношения ни к инжинирингу, ни к ЧПУ, осваивать технологии пришлось с нуля. За прошедший год я подрос с должности оператора-фрезеровщика до инженера-конструктора, а затем и до замдиректора по технологиям, моими стараниями ЧПУ-парк предприятия вырос с одинокого старенького роланда до 5 разнокалиберных станков. В связи с чем еще свеж и актуален опыт выбора, покупки, пусконаладки, тюнинга, эксплуатации и ремонта различных ЧПУ-станков.

И вот — решил поделиться опытом с сообществом. Я осознаю сам, и прошу принимать во внимание читателей, что я — самоучка без базового инженерного образования, все нижеизложенное основано исключительно на личном опыте.
Читать дальше →
Total votes 104: ↑98 and ↓6+92
Comments188

Облака — ещё дешевле

Reading time5 min
Views115K
Наверняка вы слышали о сервисах Amazon EC2, Rackspace и им подобным. Может быть даже пользовались. Лично мне бывает нужен иногда личный VPN-сервер. Для этих целей я уже давно держал микро-инстанс на Амазоне, предоставляемый им в течении первого года бесплатно. Плюс использовал для архивов Amazon Glacier, который с его ценой «1 цент за гигабайт в месяц» можно считать тоже почти бесплатным. Но вот год закончился и за EC2 стало нужно платить. Архивы мои тоже разрослись прилично и затраты на Glacier аналогично перестали радовать.

Случайно пробежавший мимо обзор сервиса DigitalOcean по-началу оставил меня равнодушным. Ну, облачный сервис, ну виртуалки. Ну да, чуть-чуть дешевле (но не так чтобы уж очень), чего-то аналогичного Glacier вроде бы нет да и вообще оно того не стоит.

Я сильно ошибался. Ниже будет рассказано как на базе DigitalOcean сделать себе VPN-сервер в пару десятков раз дешевле такого же на Амазоне и сервис хранения архивов, в бесконечность раз дешевле Glacier.
Читать дальше →
Total votes 120: ↑102 and ↓18+84
Comments87

51 Веб Приложение для Дизайнеров и Разработчиков

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

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

Данная статья представляет 51 веб приложений для дизайнеров и разработчиков.
Идем дальше...
Total votes 101: ↑86 and ↓15+71
Comments26

Information

Rating
Does not participate
Registered
Activity