Как стать автором
Обновить
4
0.1

Разработчик

Отправить сообщение

Ниже комментаторы уже накидали хороших вариантов автоматизации, а я обычно чаще всего писал запросы руками и потому прогрепать исходники на предмет нужной таблички было достаточно просто.
Тем более, что большая таблица в коде часто довольно хорошо локализована, в отличие от небольших справочников и запросы известны в лицо.
Когда использовал SQLAlchemy, то включал дебаг и вытаскивал запросы из консоли. В этом случае просто прогонял только небольшую ветку тестов, касающихся этой таблицы, чтоб не утонуть.
С ORM вообще смотреть в дебаг-консоль полезно, чтобы сразу увидеть, что генерируется плохой запрос.

  1. Создать индекс

  2. Не проверить, что он используется.

Классика, или почему всегда руками дёргаю explain analyze для всех запросов ещё на этапе разработки.

блин, насколько же проще забанить DHCP кому-то со стороны сервера DHCP или где-то по дороге :-D

Небольшая ремарка - поведение isinstance и match совсем разное.
Первый проходится по иерархии и проверяет классы всех предков на совпадение.

>>> isinstance(car, object)
True

Второй - потрошит объект, доставая из него match_args, позволяя делать ещё и так:

>>> def match_car(car):
...   match car:
...     case Subaru(2020, model, cost):
...         print("Subaru 2020 " + model)
...     case Subaru(2021, model, cost):
...         print("Subaru 2021 " + model)
...     case _:
...         print("Failure")
>>> match_car(car)
Subaru 2021 Outback

И важно не перепутать, когда что нужно.

И я сначала грешным делом подумал, что он на этих строках инстанцирует объект, но нет, там сделали отдельный опкод виртуальной машины MATCH_CLASS для проверки класса.

  5          68 COPY                     1
             70 LOAD_GLOBAL              4 (Subaru)
             82 LOAD_CONST               1 (())
             84 MATCH_CLASS              3
             86 COPY                     1
             88 POP_JUMP_FORWARD_IF_NONE    31 (to 152)
             90 UNPACK_SEQUENCE          3
             94 LOAD_CONST               3 (2020)
             96 COMPARE_OP               2 (==)
            102 POP_JUMP_FORWARD_IF_FALSE    23 (to 150)
            104 STORE_FAST               1 (model)
            106 STORE_FAST               2 (cost)
            108 POP_TOP

Сидишь-читаешь статью, а потом вспоминаешь про Person of Interest, где поднимается подобного рода вопрос и понимаешь, что там вовсе и не такая уж и фантастика описана.

в RabbitMQ можно задать лимит на число сообщений, которые в данный момент обрабатываются как и для каждого обработчика отдельно, так и глобально.
посылать ack руками только нужно будет после того, как выполнится запрос.
если пропускная способность позволит, то почему бы и не?
https://www.rabbitmq.com/consumer-prefetch.html#sharing-the-limit


Если хочется именно распределённый семафор и именно на код, который обслуживает запросы, то можно за какой-нибудь consul/ZooKeeper схватиться, но они небыстрые, придётся батчами хватать сразу.

я теперь в толк взять не могу, почему я видел похожую дичь в номенклатуре и техпроцессах, которую нам экспортировали с одного завода. т.е. у них тоже попытки автоматизации тянулись еще с ЕС?

Мы улучшили функциональность гиперссылок, чтобы автоматически обнаруживать ссылки внутри вашего терминала.

а как это работает? пытаетесь ли вы резолвить в этом месте домены? отправляются ли куда-то эти строчки?

Зелёный с фиолетовым?
  • Синдзи, полезай в грёбанного робота!
    EVA-01, конечно же.

Есть похожий на Jekyll движок для стат. сайтов — Hugo.
Для него есть фронтенды, которые позволяют постить https://gohugo.io/tools/frontends/
Мы используем netlify cms — это выглядит как кусок js в браузере, который ходит в наш гитлаб (приложение через OAuth) и позволяет контент-менеджеру редактировать статьи сайта. Мы его деплоим на тестовый и доступный только изнутри сайт, там контент-менеджер всё делает и потом это выкатывается на основную версию.

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

а о первом языке для изучения программирования

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


Тратить год университетского обучения чтобы научить сортировать массивы в консоли — это моветон.

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


Так вот, в обучение программированию никак не входят, например, кишки тредпула, или асинхронного рантайма

Окей, а что входит? Базовые алгоритмы и структуры данных? Перевод задачи с языка хз в тз, а потом подбор алгоритмов под тз? В идеале списком.
Мне просто кажется, что обучение программированию в вышке — это обучение понятиям. Итерация, рекурсия, оптимизация хвостового вызова, коллбеки, асинхронность, промисы, ивент луп, потоки, тредпул, модели памяти, модели вычислений, типы, структуры данных, объекты, итд — это всё примеры таких понятий. В идеале учебный язык должен хорошо иллюстрировать максимум таких концепций с минимумом шелухи вокруг. При этом желательно иметь встроенные средства визуализации, и, например, REPL, чтоб можно было чуть ли не на лекциях/практиках интерактивно иллюстрировать материал или график например вывести по-быстрому. Очень удобно те же сортировки иллюстрировать прямо на ходу, или то, как задачки в ивент лупе обрабатываются по очереди.
Чтоб не надо было как в java писать кучу лишних строчек, тащить развесистые библиотеки и IDE, просто чтоб студенты по выходу из вуза писали на знакомом индустриальном языке. Ничего против java не имею, но язык проектировали явно не для обучения, а чтоб можно было человека после недельных курсов посадить промышленный код фигачить.


есть тренд на уход от исключений в пользу сумм-типов.

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

Да и не сложные они.

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


Обучать можно прекрасно и без исключений

Студентов — нельзя. Им потом с ними жить в других языках.


Если для совсем мелких — то есть языки типа Черепашки или Скрэтча со встроенными средствами визуализации.

Да, пожалуй надо разделять языки для совсем детей — скрэтч итд и для первокурсников, которые пришли учиться на CS-факультеты.
Но даже в этом случае простая визуализация средствами стандартной библиотеки (важно!) — это очень полезная штука, значительно увеличивающая вовлеченность в процесс.


Инструменты для написания визуального интерфейса для Go есть. Они не лучше и не хуже, чем для Python, Java, C/C++ и пр.

Но все они хуже, чем старые-добрые дельфовые формочки, просто потому что их нет в коробке и как правило требуют приседаний, прежде чем начать ими пользоваться =)


Только вот большинство задач начальном этапе — это вообще голая консоль.

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

Go далеко не такой очевидный, когда дело доходит до горутин и каналов. Возможно их просто не нужно давать, но подозреваю без этого будет сложно, т.к. там весь Go ими пропитан. Плюс специфика result, err. В большинстве промышленных языков вместо этого используют исключения, а panic в Go сделан прямо скажем, по остаточному принципу.
В статье ещё указывается важный момент для начинающих — интерактивность, возможность увидеть результат, т.е. наличие тех же графических примитивов (да хоть те же окошки в дельфи или egavga.bgi) или работы с html (сейчас уже не катит, потому что всю интерактивность делают на js) в стандартной библиотеке, а в Go этого нет. Go — это всё же чисто индустриальный язык, который создан в гугле для нужд написания http-сервисов, который json или другие байтики туда-сюда гоняют.

Статья, кмк, откровенно плоха для хабра. Такое прокатило бы в lor/talks, но здесь было бы правильным показать кусочки исходников, приложить пару картинок с диаграммой взаимодействия, добавить ссылки на используемую спеку USB или развёрнутые цитаты из неё.
И ещё крайне желательно собрать всё это в кучу и послать баг-репорт автору подсистемы, просто потому что так устроено OSS-сообщество.

я написал для этого обработчик, который роняет процесс nodejs, т.к. имхо необработанный reject == исключение.

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

в голову приходят Elliptics и Cocaine
они куда менее известны.
А такой копирайт на CatBoost и ClickHouse скорее всего связан с тем, что права на написанный код сейчас явно переданы Яндексу.

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

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

1
23 ...

Информация

В рейтинге
2 459-й
Зарегистрирован
Активность