/pr/ – programming



@9a2cdc5eb5e241b5bfeced68912fc499 Anonymous 2021-07-03 13:16:13
Решил написать себе простенькую прогу для заметок. Кому-нибудь интересно?
Идея такова: просто директория с текстовыми файлами (возможно по своим поддиректориями расбросанные). Каждый файл имеет формат:
tags: tag1, tag2, ...
Ну и тут дальше markdown. Вот и всё.

Имя файла - это сабжект.
И будет консольная прога notes.
Usage:
notes все записи покажет отсортиванные по дате создания
notes lm
то же самое по дате изменения
notes edit откроет в редакторе последнюю заметку
notes edit 3
редактировать третью запись из последних
notes tags=tag2,tag3 фильтрация по тегам
notes q="Some shit"
поиск
48 replies omitted. Click here to view the first page.
@c9ed437861ed478999571d233809e4d3 Anonymous 2021-07-23 19:57:46
пук
@0f9ea97b22aa48efb569372c07f9c3fd Anonymous 2021-07-23 19:57:50
пук
@844ecac97a0f4d8ebf320ef1d09f2b01 Anonymous 2021-07-23 20:02:31
Веселей занюхивай!

4e44d – ``срак''4e44d5c2dc4e45b98569b1892e46c4be

@ccbd5177dbeb45688eaa2b758a9178c9 Anonymous 2021-07-23 19:59:33
срак
1 replies omitted. Click here to view the first page.
@98aec9aae2174d74af94c83ee71eeff3 Anonymous 2021-07-23 19:59:41
срак
@ccfcc81b77f14570bc1828ca105a0c7c Anonymous 2021-07-23 19:59:45
срак
@cb13a36a4eaf488fba56bbd63a03c39e Anonymous 2021-07-23 19:59:49
срак

c996d – ``DI in FP''c996dab1690b4eb9abe6fb0bef071997

@fab55233225e4e35a60493d590f755a1 Anonymous 2021-06-27 10:53:07
Почему в функциональном программировании не применяется dependency injection (я не видел, может плохо смотрел)?
37 replies omitted. Click here to view the first page.
@4a007192a3474648a9f9ef9308abaa38 Anonymous 2021-07-23 19:39:35
@99629@996294214cf44928a4cd08c130a9a3ea Пукнул что ли?
@d88edd26cefb4dd284be7a785829bfcc Anonymous 2021-07-23 19:41:01
Один пук - хорошо, а два - лучше!
@cfcc197670c74c8494db17b5b81ef023 Anonymous 2021-07-23 19:41:26
@d88ed@d88edd26cefb4dd284be7a785829bfcc Пукал? Или занюхал? НЕ понял.

24411 – ``ООП умрёт?''24411c2e473045f782d698fed6513011

@529ec1ad656346dea0f82c3817b0b9f5 Anonymous 2021-06-27 10:07:59
Умрёт ли когда-нибудь ООП? Всё больше фич из функциональных языков перетекает в классические ООП языки типа C#. Всё меньше используется наследование.

ad5f4 – ``Распознавание речи''ad5f4ff3e3574022b6de8b9181a55c5c

@4020104fb81940889710b71a8b6c64dd Anonymous 2021-04-08 17:15:46
Попробовал Vosk. В принципе, неплохо распознаёт, даже матюки понимает.
61 replies omitted. Click here to view the first page.
@6d6cc2b1e70349c6ab01f6f596b2a059 Anonymous 2021-05-31 21:27:23
Пукал и занюхивал перед сном.
@8194e7cee45a4ed59de0dbdcd4fecc7c Anonymous 2021-05-31 21:28:34
Занюхал свеженький пук.
@0c195bd64a13404895b2239f77b60912 Anonymous 2021-06-25 09:39:58
Да, хорошая полезная штука. Пригодилось когда надо было сконвертить бубнёж из одного ютуб видео в текст.

023a8 – ``Божественный язык''023a8623a27042228f6b721cd7892454

@2f650ed6740e458086b7c948c599e8b1 Anonymous 2021-04-10 21:10:24
@e65d8@e65d8e7067094b8589055a0446738e81
@01185@011859c4bc46423dae1be30f6868fde6
657 replies omitted. Click here to view the first page.
@3edfffe736724ee8844a5ffef93c30a0 Anonymous 2021-05-31 21:14:54
Занюхал в автобусе у жирной тетки. Мне понравилось.
@2db2695c01d14192a1c2e0bb6ee7329d Anonymous 2021-05-31 21:19:30
Здесь у вас пукают? Можно присоединиться?
@a3c4cfad635d4a7985d8911d83a696c7 Anonymous 2021-05-31 21:24:58
Если в задницу воздуха немного закачать пуки усилятся?

@923d1093fada47a28fbff90d45005d72 Anonymous 2017-09-17 14:51:12
Задолбал ограниченный функционал систем букмарков в браузерах. Поэтому решил запилить свой браузер аддон для этого дела. Требования:
-теги (в блядском хроме, наверное, до сих пор нету тегов у закладок).
-наследуемость тегов. Обязательно множественная наследуемость, т.е., например, тег J.S.Bach относится и к тегу music и к тегу people; тег php относится и к тегу programming language и к тегу "зашквар".
-фолдеры не нужны, вместо них теги
-поиск по нескольким тегам
-сохранение снапшотов страниц, когда делаешь закладку, чтобы в будущем когда ссылка проебется, иметь хоть что-то
-поиск по тайтлам, поиск по содержимому, с возможностью одновременной фильтрацией по тегам, если нужно
-сортировка по всему чему только можно. Обязательно с возможностью сортировать по нескольким полям одновременно.
-отображение тегов в виде директорий как в файловой системе; возможность видеть всех парентов открытого тега где-нибудь в статус баре или еще как-нибудь; возможность видеть сколько всего букмарков принадлежит тегу; возможность видеть просто все букмарки (flat mode)
-синхронизация букмарков между разными браузерами
-импорт букмарков из firefox
78 replies omitted. Click here to view the first page.
@ac0304a301ef48188ae5d9ede184e083 Anonymous 2021-05-14 12:32:19
Пук слабой мощности.
@f8b364a2f30841de8468b96d4dc85ac3 Anonymous 2021-05-14 12:35:52
Чесночные пуки самые лучшие!
@9e5a9ce8436448babe7c065e6973d0ff Anonymous 2021-05-15 01:04:50
Вам пердели в лицо?

aded8 – ``Computer Science''aded8e24d0f44fb3b3b1b3ca0b159c7a

@e692c6b53cee4cbebcbb203f10aab017 Anonymous 2021-03-25 13:17:12
Доброго времени суток, уважаемые аноны. Несколько лет я занимаюсь программированием на языках C и C++ и пришло время повышать свою квалификацию. Итак, какую литературу можете посоветовать по Computer Science?
1 replies omitted. Click here to view the first page.
@d62215a845534681839e606ef6b8c51c Anonymous 2021-03-25 13:33:19
@c2dc7@c2dc7cb6f27a4f9e947c8dd0ed0fd0b1
Благодарю за ответ, не ожидал такого быстрого ответа здесь.
@26950d0088a84fcd87f890a767e45d71 Anonymous 2021-03-25 23:54:38
@0fefb340c5c84abea3a68905d668fe37 Anonymous 2021-03-26 07:19:18
@c2dc7@c2dc7cb6f27a4f9e947c8dd0ed0fd0b1 О, а вот про Verifiable C я не знал. Интересно, что они там отверифайили.

2cee3 – ``Умышленные баги''2cee372f1bae41369686a296bcbb4594

@f3ddb0eacbec4eaca6b4bb681c1af589 Anonymous 2020-10-31 04:22:13
После фикса одного бага в проекте, у меня закралось подозрение, что тот, кто писал код, оставил баг умышленно (потому что там буквально в рядом стоящих строках в одной написано правильно, в другой с багом, а стороки писались в одно и то же время). Этот человек уже не работает в компании, но раньше он занимался этим большим участком бизнес логики, написал его и сопровождал, а разобраться в нём кому-то ещё кроме него довольно сложно, потому что там дохуя всего и написано так, что без пол-литра не разберёшься. И тут меня внезапно осенило. Блядь, можно же оставлять мальнькие баги, которые вылазят только при определённых редких условиях. И когда его обнаруживают, ты уже знаешь что и где фиксить, ты можешь за пять минут всё пофиксить, но сказать, что, блядь, тут всё так сложно, надо разбираться, надо дохуя времени чтобы пофиксить, бла-бла-бла. Я так никогда не делал. А вы так делаете?
@40cdcac9162d4bc689c425cc357be2df Anonymous 2020-12-08 18:08:48
Это частный случай job securing. Работодатели стараются за такое наказывать на самом деле.
@075c4741dcf0445fa12180f67d9c615e Anonymous 2020-12-08 18:13:29
Только он сам уволился, проект заебал. И оставил кучу вот такого говна в подарок.

@a5e8c8239f644ed6a1c1c1d67bb3b328 Anonymous 2020-06-17 06:33:05
Делимся годными rust библиотеками.
https://github.com/bikeshedder/deadpool - годный коннекшн пул. Лучше чем bb8, который течёт и дедлочится.
https://github.com/Amanieu/parking_lot - Mutex, RwLock, который лучше того, что в std.
@f276b880a3a94c1da0a3ac0a86b925d4 Anonymous 2020-10-02 23:07:01
https://github.com/spacejam/sled - key/value embedded database. Хорошая вещь вроде бы. Заюзал для кеширования хтмла распаршеных постов в ui3 (который будет без js).
@e5223d920cde4c3e9468340a0d8dcbe1 Anonymous 2020-10-03 23:37:56
хм, не всё так хорошо с этим sled как казалось https://github.com/the-lean-crate/criner/issues/1

2dc0d – ``Python''2dc0d78555c74c5b9cffbe9788e71ee4

@f25bf749ae764069a846011dc1e8fd97 Anonymous 2020-09-20 17:13:54
Привет всем!

Примерно месяц назад начал изучать python, нахожусь в конце курса https://stepik.org/course/58852/, впринципе основы понятны, в каком направление двигаться дальше?

Собираюсь посомтреть курс по питону, прочитать какую-нибудь книгу и пытаться писать свой скрипт

Мало ли среди тех кто прочтет этот тред будет человек знающий питон и готовый поделиться своим опытом и помочь, может дать каких заданий, чтоб я попробовал решить, буду рад таким контактам
2 replies omitted. Click here to view the first page.
@482b692e88cd4827ba1cd5848006695c Anonymous 2020-09-20 17:47:49
Я бы начинал уже. Обучаться дальше можно в процессе. у меня обучение обычно просиходит от задачи: нужно что-то сделать - выясняешь как и делаешь.
@3ca4ef488c2546b1930affeeb689bebf Anonymous 2020-09-20 18:16:49
Звучит логично, спасибо за помощь!
@e4956ee0370e47ae9d0dd53b83096b2f Anonymous 2020-09-22 10:39:02
1) Укус Питона - брешь эти 120 страниц, кофе и от корки до корки решаешь за 3-4 часа
2) Потом идешь сюда https://pythonworld.ru/samouchitel-python и пол часа тратишь на краткий вводный курс в питон.
3) Открываешь Программируем(НЕ ИЗУЧАЕМ) программируем Лутца 1 том и страниц 30-80 по библиотекам os и sys, генераторы и визуализация\парсинг данных\сокеты - часов за 3-4 все это проходишь, решаешь, вникаешь

Это базис. Что-бы двигаться дальше, нужно знать куда ты тыкаешь, а я не знаю. Могу лишь посоветовать 2(3) книги

1) Автоматизация рутинных задач с Python
2) Думай на языке Python(матан, куча задач, но это уже уровень выше вкатывальщика)

Очень пригодятся 2 книги
Сборник рецептов Бизли
Сборник рецептов Лутца
Точные названия на русском гугли, позволит избежать велосипедов.

Если захочешь тома "Изучая Лутца" полистать, не забудь, уже вышел Изучаем Лутца 2019, не напорись на 2011г книгу.

Удачи

909c5 – ``json validation''909c5a5fee1346159c97b93bb2285e8c

@101ddc569a294f7298a369ba99c815ea Anonymous 2020-06-20 11:43:54
Считаю, что нужно создать новый способ валидации json. json schema и прочее - какое-то ужасное говно. Надо придумать что-то новое. Придумываем ITT.
Чего мне не хватает, например, так это параметризации схем, т.е. дженериков.
@972dc22504fa48f9a686fd2fce829d70 Anonymous 2020-06-21 13:33:31
Думаю это всё надо реализовать как какой-то специфический язык. Нужно начать с базовых вещей, которые должны быть в этом языке. Думаю лучше всё делать на основе предикатов: Json -> bool и функциий, которые возвращают предикаты.
Базовые предикаты:
is_int, is_float, is_bool, is_str, is_array, is_obj.
Дальше, все литералы json делаем литералами этого языка.
Будут ещё:
eq : Json -> Json -> bool
or и and.
is_number = or is_int is_float
is_null = eq null
@7567cf3cf65949c9b038eedb500db63f Anonymous 2020-06-21 18:09:24
Добавим логические операции: && || !.
Тогда and и or можно было через них выразить (но это не важно):
or p1 p2 j = || (p1 j) (p2 j)
not p j = ! (p j)
one_of p1 p2 j = or (and p1 (not p2)) (and (not p1) p2)
Добавим операции с числами: + * / %.
multiple_of n j = && (is_number j) (eq (% j n) 0)
Для чисел пусть будут lt, gt т.е. < и >.
lte x = or (lt x) (eq x)
gte x = or (gt x) (eq x)
Т.о. покрыли всё из numeric, boolean, null и combining
Ладно, и так понятно, что всё что есть в убогой json-schema можно с лёгкостью выразить.
А дженерики тоже легко выражаются просто за счёт использования HOF.

1e1d3 – ``Parser combinators''1e1d382218c2487b9a98db66208f0489

@f4b7f258ab924b6aa16f4584b38985f5 Anonymous 2020-06-15 11:17:54
Парсер комбинаторы. Что это? Нахуй нужны? В чём плюсы/минусы? По каким примерам/языкам лучше изучать?
@7d8003fe2ac141749fb77bb614f32c8b Anonymous 2020-06-15 16:17:11
Можно ли контролировать уровень вложенности (рекурсию)? Например, я не хочу парсить, а хочу оставить оригинальный текст, если уровень вложенность начинает превышать n. В своём говнокоде я могу просто в рекурсивной функции это контролировать дополнительным параметром. А с парсер комбинаторами как этого достичь?
@ed5f4b57cfd04677b0bbeba726bbf9df Anonymous 2020-06-16 11:31:34
https://docs.rs/nom/5.1.2/nom/
> A parser in nom is a function which, for an input type I, an output type O and an optional error type E, will have the following signature:
> fn parser(input: I) -> IResult<I, O, E>;
Т.е. я так понял, можно в качестве I взять, например, тапл (&str, i32), где второе значение будет уровень вложенности.
@ddae58157abd49eaa87a31e7e1e30b01 Anonymous 2020-06-17 01:36:42
https://github.com/Geal/nom/blob/master/examples/s_expression.rs
Отличный пример, всё понятно сразу стало.

8afc6 – ``Клиента тред''8afc67de3382436389ed7e941ca2c2c4

@b1bceb835734462bbf758ab23529612f Anonymous 2018-07-16 15:53:20
Писать буду на rust (книгу их полгода назад прочел). Т.к. на нем нихера еще не писал, то будет медленно получаться, думаю. Если совсем медленно будет, то надо забить и наговнякать на дристоне сначала.
Первым делом нужно написать основу без гуйни, которая делает запросы и может в SSE.
Потом написать хуйню для локального хранилища. Подумать в чем хранить данные (в идеале, должно быть опциально на выбор: файлы, sqlite какой-нибудь богомерзкий, etc.)
Потом пилить гуйню.
47 replies omitted. Click here to view the first page.
@429e44a8331441f2a93b49500bf4bce0 Anonymous 2019-11-24 15:54:53
Первая версия Web UI из которой уже можно постить и, в принципе, юзать.
@57a5a7d868c94374ae9e888c79bd7361 Anonymous 2020-02-01 14:49:57
Один раст не педераст?
@2b81cfa50d9045e0a1b804168f8d78c8 Anonymous 2020-02-05 14:17:41
@57a5a@57a5a7d868c94374ae9e888c79bd7361
Не хватает goмосека.

@3fe3aa6867f64317ab7585d23fdd3e53 Anonymous 2018-07-20 05:46:21
Нужно немного улучшить производительность.
В чате, после получения json с данными и перед добавлением постов на страницу, надо проверить длину, если слишком много символов, то добавлять не все посты, а часть (N килобайт). Все будет ок: на скролл вверх будет делаться запрос, как раньше, пропусков сообщений не будет.
Сделать и добавить в настройки возможность добавления базовых фильтров:
-скрыть по цвету юзера (команда должна быть /hide @123123)
-скрыть повторяющиеся посты.

Надо подумать, как быть с длинным контентом в чане и логах.
@cbd3fafdcc8b4f7d85b50b6a73d7f327 Anonymous 2018-07-20 08:05:13
Скрытие по нескольким регекспам.
@cdc2a2f723d64abf996749ff28fd9b0e Anonymous 2018-07-22 18:13:55
@3fe3a@3fe3aa6867f64317ab7585d23fdd3e53
-скрыть сообщения с указанного списка борд

29999 – ``CMQ''299995f5505e4223a8bff64b19becc5d

@01b18cab88594e94b645ede73c969569 Anonymous 2016-09-15 16:44:32
CMQ - circular message queue - the app/protocol name

Messages = {id: uuid, insert_timestamp: timestamp, message: text}

insert_date is the date/time in UTC of the record insertion.

http get:
1. /m/<uuid:id>/ - gets message record from Messages by id.
2. /mb/<uuid:id>/ - gets messages before <id>. The amount of returned records is limited.
3. /mbt/<timestamp:ts>/ - gets messages before <ts>.
4. /ma/<uuid:id>/ - gets messages after <ts>.
5. /mat/<timestamp:ts>/
6. /l/ - gets limits {max_msg_len: int,
43 replies omitted. Click here to view the first page.
@92cf1f3df9f54dd7bce517d996ae2b85 Anonymous 2017-02-08 03:54:30
Действительно, зачем?
@647abe9094294a989f08a8b1fb39da6b Anonymous 2017-08-23 08:34:03
> Допустим есть две ноды с номерами 1 и 2
Зачем? Всем по паре ключей и вперёд!
@f9094433488b4a2a86536b2116ef629e Anonymous 2017-08-23 12:18:58
@647ab@647abe9094294a989f08a8b1fb39da6b не понял тебя. И что?

c91c8 – ``Effect systems''c91c8a32a9724c14b89b606fd17276ec

@8a0ed56a28c1446cbf8e8abe5cffb711 Anonymous 2017-07-26 01:28:37
Решил разобраться, что такое (algebraic) effects.
Основная идея состоит в том, что любое impure поведение может быть описано эффектом - набором примитивных impure операций, семантика которых задается обработчиками эффектов. Например, IO командной строки может быть описано двумя операциями: readline - чтение пользовательского ввода и printline - вывод строки в консоль. Для мутабельных данных это операции get и set. Для исключений - raise.
Используя синтаксис языка
12 replies omitted. Click here to view the first page.
@40997e0db1fc46068d57498e7d1b87c7 Anonymous 2017-07-28 02:35:03
Чтобы обработать финальный результат (когда эффекта на самом деле не произошло в результате вычисления) используется return. Например,
выражение
if (False) then raise("oops") else 111

имеет тип exception int несмотря на то, что в результате его вычисления exception никогда не произодет и поэтому
(handler{
    raise(s) -> 666;
    return x -> x+265
})(fun() { if (False) then raise("oops") else 111 })
вернет 376.
@117bdb5906164eca9e52ec710de90d68 Anonymous 2017-07-28 02:35:29
Еще один пример. Т.к. <> это тоже формально (пустой) эффект, то для него можно создать обработчик, но т.к. операций у <> нету и всегда есть финальный результат, то он должен содержать return. Например, handler{ return x -> x }.
@93992fed144444559c0d8536a7836fa3 Anonymous 2017-07-28 02:37:28
@3287b@3287bc6bc809403a8e084f6a2604252f "команд" в смысле "операций".