Pull to refresh
3
0.2
Send message

Excel — самый опасный софт на планете

Level of difficultyEasy
Reading time7 min
Views70K


В 80-е годы компании покупали компьютеры, чтобы запустить электронные таблицы. Автоматический расчёт налогов и зарплат казался чудом. Тысячи бухгалтеров оказались на улице, остальным пришлось осваивать работу ПК, а конкретно — Excel.

И до сих пор Excel играет важнейшую роль в бизнесе многих компаний. Без электронных таблиц у них просто всё развалится. Сложно найти на компьютере другую программу настолько древнюю и настолько важную, от которой столько всего зависит. И в такой ситуации факапы неизбежны.
Читать дальше →
Total votes 74: ↑63 and ↓11+73
Comments189

Разработчики встраиваемых систем не умеют программировать

Reading time9 min
Views59K

Заслуженно распространена точка зрения, что типичный разработчик высокоуровневого прикладного ПО настолько свыкся с доступностью системных ресурсов и мягкостью требований реального времени, что ожидать от него оптимизации кода в угоду снижения ресурсоёмкости приложения можно лишь в крайних случаях, когда этого прямо требуют интересы бизнеса. Это и логично, ведь в задачах прикладной автоматизации самым дорогим ресурсом остаётся ресурс человеческий. Более того, снижение когнитивных затрат на возню с байтами оставляет внимание разработчика свободным для задач первоочередной важности, таких как обеспечение функциональной корректности программы.

Редко когда речь заходит об обратной проблеме, имеющей место в куда более узких кругах разработчиков встраиваемых систем, включая системы повышенной отказоустойчивости. Есть основания полагать, что ранний опыт использования MCS51/AVR/PIC оказывается настолько психически травмирующим, что многие страдальцы затем продолжают считать байты на протяжении всей карьеры, даже когда объективных причин для этого не осталось. Это, конечно, не относится к случаям, где жёсткие ценовые ограничения задают потолок ресурсов вычислительной платформы (микроконтроллера). Но это справедливо в случаях, где цена вычислительной платформы в серии незначительна по сравнению со стоимостью изделия в целом и стоимостью разработки и верификации его нетривиального ПО, как это бывает на транспорте и сложной промышленной автоматизации. Именно о последней категории систем этот пост.

Читать далее
Total votes 100: ↑81 and ↓19+92
Comments239

Установка программы модификации сетевых пакетов NFQWS на роутер Keenetiс

Level of difficultyMedium
Reading time11 min
Views56K

Привет, Хабр!

Сегодня рассмотрим вариант установки утилиты модификации сетевых пакетов Zapret на роутеры Keenetic. В отличии от простого использования на конкретных устройствах, при установке на роутер появляется возможность обрабатывать трафик идущий от всех устройств, подключенных к домашней локальной сети (ПК, смартфоны и смарт телевизоры).

Читать далее
Total votes 47: ↑47 and ↓0+56
Comments390

Чиним замедление YouTube на уровне роутера

Level of difficultyMedium
Reading time6 min
Views547K

Всех категорический приветствую. Буквально первого августа, прямо в ночь, стал у меня жутко лагать YouTube. Естественно, мне это сильно не понравилось. Ну, что же, давайте разбираться, почему и как это исправить в условиях моей личной сети.

Что случилось?

Хорошо описано произошедшее здесь, на Хабре. Если совсем кратко, своими словами - во время установки SSL соединения в открытом виде домен передается к которому мы подключаемся(так называемое SNI). И если это googlevideo.com то начинают твориться "интересные вещи". Можно проверить это локально коммандами из статьи.

$ curl https://speedtest.selectel.ru/100MB -o/dev/null

Читать далее
Total votes 352: ↑350 and ↓2+405
Comments966

Замедление YouTube с технической стороны: ограничение и обход

Reading time5 min
Views416K

Привет, Хабр!

В последнее время замечаю огромное количество информации по поводу замедления Великого, но очень мало где видел конкретику о том, как именно это работает. Одно лишь отчаяние "мы все умрём".

Сразу скажу, что буду говорить обо всём, что известно на данный момент. Понятно, что с этим разбирался далеко не один я: огромное спасибо обывателям ntc party форума за проделанный ресёрч.

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

UPD 10.08.2024 Многие жалуются на недоступность ютуба в целом: не грузит домашнюю страницу. Переживать не стоит, оно обрабатывается всё тем же ТСПУ по всё той же стратегии, обходы должны работать.

Читать далее
Total votes 539: ↑539 and ↓0+630
Comments433

Коротко о Shadowsocks, или OpenVPN не нужен (в каждом доме)

Reading time6 min
Views284K
В наши дни, когда всякие нехорошие элементы так и норовят влезть в ваш трафик и как-то там напакостить, стало модным шифрование трафика. Начинание это благое и полезное, вот только делают его зачастую избыточно. Если шифрование трафика до доверенного сервера, типа своего VPS, — ваша единственная цель, то OpenVPN для такой цели слишком наворочен. Его долго настраивать, легко обнаружить, а главное — есть подводные камни, не зная которых можно получить такую ситуацию, что VPN стоит, а трафик идёт в обход. Всё это потому, что OpenVPN задумывался больше как средство доступа к маленькой сети через Интернет, а не для доступа ко всему Интернету.
Читать дальше →
Total votes 56: ↑55 and ↓1+54
Comments77

Shadowsocks-туннелирование корпоративного VPN

Level of difficultyEasy
Reading time8 min
Views52K

Если у вашей компании имеются серверы, работающие за границей, и доступ для внутренних пользователей вы предоставляете посредством VPN-протоколов (достаточно типовая схема, особенно после Covid — 2019, когда удалённая работа стала особенно популярной), то настало время действовать на опережение. Конечно, применение административного ресурса, возможно, защитит ваши интересы от тотальных проблем в будущем, но лучше подстраховаться, чем в один прекрасный день получить 100500 сообщений от систем мониторинга о недоступности опекаемых клиентов. Статья демонстрирует, как скрыть от противодействия со стороны систем глубокого анализа трафика сервисы компании, доступ к бизнес-процессам которых обеспечивается посредством VPN, используя для этого туннели shadowsocks.
Читать дальше →
Total votes 53: ↑53 and ↓0+53
Comments54

Разработка для заводов. Как это было

Level of difficultyEasy
Reading time11 min
Views13K

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

Читать далее
Total votes 41: ↑39 and ↓2+51
Comments19

История и наследие jQuery

Reading time7 min
Views25K

jQuery — это самая популярная в мире JavaScript-библиотека. Сообщество веб-разработчиков создало её в конце 2000-х, что привело к возникновению богатой экосистемы сайтов, плагинов и фреймворков, использующих под капотом jQuery.

Но в последние годы её статус главного инструмента для веб-разработки пошатнулся. Давайте посмотрим, почему jQuery стала популярной и почему она вышла из моды, а также в каких случаях её пока ещё целесообразно использовать для создания современных сайтов.
Читать дальше →
Total votes 61: ↑55 and ↓6+49
Comments17

Новый комплексный подход к разработке в Bitrix на D7

Level of difficultyHard
Reading time37 min
Views3K

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

Покажу как работать с bitrix cli внутри компонентов, покажу как писать тесты и browserlist, чтобы наш CSS и JS собирался согласно browserlist.

Покажу как возвращать через ajax именно компоненты Bitrix с их стилями и скриптами.

И напишем простой компонент на примере этого подхода.

Читать далее
Total votes 6: ↑5 and ↓1+4
Comments20

Докер контейнеры и прикладная некромантия

Level of difficultyEasy
Reading time8 min
Views5.4K

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

Будет два живых примера:

Медиавики, вики-движок на PHP, древняя инсталляция - обновляем с версии 1.24 от сентября 2014 года.

Забавный инструмент для генерации комиксов в стиле xkcd, написанный на Node.JS, и в последний раз обновлявшийся в марте 2013 года. Поднимаем и исследуем. Будут внезапные сюжетные повороты, и трагическая концовка.

Интересно, как воскресить эти артефакты древности? Тогда погнали!

Читать далее
Total votes 6: ↑6 and ↓0+10
Comments12

Почему здравый смысл важнее паттернов, а Active Record не так уж и плох

Reading time6 min
Views23K
Так уж вышло, что разработчики, особенно молодые, любят паттерны, любят спорить о том, какой паттерн нужно применять здесь или там. Спорить до хрипоты: это фасад или прокси, а может даже синглтон. А если у вас не чистая, гексагональная архитектура, то некоторые разработчики готовы сжечь на костре Святой Инквизиции.

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

А наличие во фреймворке нужных паттернов никак не гарантирует их правильного и осознанного применения.


Читать дальше →
Total votes 38: ↑35 and ↓3+40
Comments23

Active Record против Data Mapper-а для сохранения данных

Reading time4 min
Views82K
Эти 2 шаблона проектирования описаны в книге Мартина Фаулера «Шаблоны корпоративных приложений» и представляют собой способы работы с сохранением данных в объектно-ориентированном программировании.

Пример шаблона Active Record


class Foo
{
    protected $db;
    public $id;
    public $bar;
     
    public function __construct(PDO $db)
    {
        $this->db = $db;
    }
 
    public function do_something()
    {
        $this->bar .= uniqid();
    }
 
    public function save()
    {
        if ($this->id) {
            $sql = "UPDATE foo SET bar = :bar WHERE id = :id";
            $statement = $this->db->prepare($sql);
            $statement->bindParam("bar", $this->bar);
            $statement->bindParam("id", $this->id);
            $statement->execute();
        }
        else {
            $sql = "INSERT INTO foo (bar) VALUES (:bar)";
            $statement = $this->db->prepare($sql);
            $statement->bindParam("bar", $this->bar);
            $statement->execute();
            $this->id = $this->db->lastInsertId();
        }
    }
}
 
//Insert
$foo = new Foo($db);
$foo->bar = 'baz';
$foo->save();

В этом упрощенном примере, дескриптор базы данных вводится в конструкторе Foo (Использование инъекции зависимостей здесь позволяет тестировать объект без использования реальной базы данных), и Foo использует его, чтобы сохранять свои данные. Do_something — просто метод-заглушка, заменяющий бизнес логику.
Читать дальше →
Total votes 41: ↑36 and ↓5+31
Comments62

Я победил замедление YouTube

Reading time4 min
Views412K

Привет, Хабр! Ухудшение работы YouTube стало поистине трагическим событием, которое прибило почти все загрузчики видео, но я нашел легальный способ улучшить ситуацию! Как починить оборудование Google, не привлекая внимание санитаров.

Читать далее
Total votes 163: ↑150 and ↓13+167
Comments595

HTTP/3 от А до Я: основные концепции. Часть 1

Reading time20 min
Views85K

image
Фото Florencia Viadana, Unsplash.com


После почти пятилетних разработок протокол HTTP/3 наконец приближается к окончательному выпуску. Предыдущие итерации уже доступны как экспериментальная функция, но в 2021 году мы ждём широкого распространения протокола. Что такое HTTP/3? Зачем выпускать его так рано после HTTP/2? Как его можно или нужно использовать? Как он влияет на производительность?

Читать дальше →
Total votes 79: ↑78 and ↓1+95
Comments48

Трудности перехода с Windows на Mac и можно ли полностью отказаться от Windows?

Reading time7 min
Views17K

Многие пользователи WIndows поругивают ее последние версии. И даже заявляют что семерка была лучшей из всех. Я бы если честно, даже и XP еще использовал. Или Linux для decktop.

Общеизвестно (хотя есть и спорящие), что лучшим ноутбуком для Винды является макбук. Что лично для меня не подлежит сомнению. Я 10 лет назад перешел на Apple, чему весьма рад. Но вытянуть меня окончательно из болота Windows пока невозможно.

Читать далее
Total votes 23: ↑10 and ↓13+2
Comments139

Кажется, у меня появился джун

Level of difficultyMedium
Reading time7 min
Views18K

— Привет! Мы решили нанять тебе помощника на текущий проект, нашли подходящего кандидата. Кстати, он выходит в понедельник.
— Эммм, окей.

Читать далее
Total votes 20: ↑15 and ↓5+11
Comments12

Расшифровка моего интервью с автором Ruby

Reading time7 min
Views7.7K

Во время осенней конференции Ruby Russia я, на правах организатора, поймал в кулуарах автора Ruby и устроил ему часовой допрос интервью. Вопросы старался выбирать незаезженные, чтобы ответы были нам полезны, а не “за все хорошее против всего плохого”. И дедушка таки смог меня, старого плюсового разработчика, удивить! Под катом — расшифровка интервью, нетривиальное мнение Юкихиро Мацумото про типы вообще и руби в частности, а также возможность все это обсудить в комментах. На связи я с руби-командой Evrone наперевес. Мацумото мы приглашаем в Москву регулярно, есть возможность заранее придумать интересные вопросы для будущих интервью.
Total votes 26: ↑25 and ↓1+37
Comments4

Понимание джойнов сломано. Это точно не пересечение кругов, честно

Reading time4 min
Views329K

Так получилось, что я провожу довольно много собеседований на должность веб-программиста. Один из обязательных вопросов, который я задаю — это чем отличается INNER JOIN от LEFT JOIN.


Чаще всего ответ примерно такой: "inner join — это как бы пересечение множеств, т.е. остается только то, что есть в обеих таблицах, а left join — это когда левая таблица остается без изменений, а от правой добавляется пересечение множеств. Для всех остальных строк добавляется null". Еще, бывает, рисуют пересекающиеся круги.


Я так устал от этих ответов с пересечениями множеств и кругов, что даже перестал поправлять людей.


Дело в том, что этот ответ в общем случае неверен. Ну или, как минимум, не точен.

Читать дальше →
Total votes 179: ↑138 and ↓41+97
Comments225
1
23 ...

Information

Rating
2,236-th
Registered
Activity

Specialization

Backend Developer, Web Developer
Git
SQL
Python
Django