/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"
поиск
23 replies omitted. Click here to view the first page.
@e3d0fedaa9e2409993b3a2913d7c919a Anonymous 2021-07-03 18:18:08
@0d738@0d73805b72dc4415a61ba2afcb3cf638 И как удалять файл? ФМ должен сам позаботиться?
@6c0fd5b3558942f390a4a39c0c5dfd22 Anonymous 2021-07-03 18:18:55
@c5220@c5220b49f90e4412840d97e2964b83c3 ну, оба. Как индикатор, что этот файл существует ещё и в другом месте.
@c5b7e2ec96774ee18dbfb7c36ae343f0 Anonymous 2021-07-04 18:11:21
@59708@59708e964bad46f09c47b3fe5193c8dd Давно известно, что HFS для организации информации не подходит. Дальше проскипал.

c996d – ``DI in FP''c996dab1690b4eb9abe6fb0bef071997

@fab55233225e4e35a60493d590f755a1 Anonymous 2021-06-27 10:53:07
Почему в функциональном программировании не применяется dependency injection (я не видел, может плохо смотрел)?
28 replies omitted. Click here to view the first page.
@1523ee41b6e14e1883ffaa92bc12a96a Anonymous 2021-06-27 18:40:58
я хз короч
@75409a36c137442aa76b303c3ca71b79 Anonymous 2021-06-27 18:42:09
а, ты еще не можешь распаковать Wrap и вернуть из него экзистеншл
@aa31e6df7edc420c97e2fd4d4f900408 Anonymous 2021-06-27 18:42:31
ты можешь использовать его только в контексте распаковки

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

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

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

@4020104fb81940889710b71a8b6c64dd Anonymous 2021-04-08 17:15:46
Попробовал Vosk. В принципе, неплохо распознаёт, даже матюки понимает.
3 replies omitted. Click here to view the first page.
@02b53c5a89154c208ad4e1b62a78689f Anonymous 2021-04-09 13:53:03
@1748d@1748d387b2d4407594351c1516226604 А там пишут, что есть большие модели и мальнике 50mb. Ты на какой проверяешь?
@eb98d64e56b44e3386e31ad9e39d05ae Anonymous 2021-04-09 16:12:18
@02b53@02b53c5a89154c208ad4e1b62a78689f На той, которую смог достать. 3.7 ГБ.
@0c195bd64a13404895b2239f77b60912 Anonymous 2021-06-25 09:39:58
Да, хорошая полезная штука. Пригодилось когда надо было сконвертить бубнёж из одного ютуб видео в текст.

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

@2f650ed6740e458086b7c948c599e8b1 Anonymous 2021-04-10 21:10:24
@e65d8@e65d8e7067094b8589055a0446738e81
@01185@011859c4bc46423dae1be30f6868fde6
369 replies omitted. Click here to view the first page.
@0608f343fff64c4eb6315e858f2d2418 Anonymous 2021-05-20 15:22:50
Это не должно влиять на дизайн языка anyway.
@caf9ac9b9fe84cdd918d4833b210d812 Anonymous 2021-05-20 16:16:07
Логично.
@a122518e58cf4a1b9c8869b63157cb53 Anonymous 2021-05-20 16:16:22
Хотя вот в Eiffel оно таки повлияло.

@923d1093fada47a28fbff90d45005d72 Anonymous 2017-09-17 14:51:12
Задолбал ограниченный функционал систем букмарков в браузерах. Поэтому решил запилить свой браузер аддон для этого дела. Требования:
-теги (в блядском хроме, наверное, до сих пор нету тегов у закладок).
-наследуемость тегов. Обязательно множественная наследуемость, т.е., например, тег J.S.Bach относится и к тегу music и к тегу people; тег php относится и к тегу programming language и к тегу "зашквар".
-фолдеры не нужны, вместо них теги
-поиск по нескольким тегам
-сохранение снапшотов страниц, когда делаешь закладку, чтобы в будущем когда ссылка проебется, иметь хоть что-то
-поиск по тайтлам, поиск по содержимому, с возможностью одновременной фильтрацией по тегам, если нужно
-сортировка по всему чему только можно. Обязательно с возможностью сортировать по нескольким полям одновременно.
-отображение тегов в виде директорий как в файловой системе; возможность видеть всех парентов открытого тега где-нибудь в статус баре или еще как-нибудь; возможность видеть сколько всего букмарков принадлежит тегу; возможность видеть просто все букмарки (flat mode)
-синхронизация букмарков между разными браузерами
-импорт букмарков из firefox
26 replies omitted. Click here to view the first page.
@0d28af765544467cb470704cd31d8334 Anonymous 2021-04-07 19:38:48
@49cbb@49cbb33d1d4e4a2cb9cda672327a7740 На этих ваших "стульях" я и так сижу по 8 часов каждый день.
@e534941263aa4388b9265805aaefdbfa Anonymous 2021-04-07 20:19:58
@0d28a@0d28af765544467cb470704cd31d8334 Весьма весомая причина пересесть на бомжатские картонки.
@a6a9f21d7077472aa0879b1efc74e788 Anonymous 2021-04-08 19:14:58
@59013@5901350dd4f3460eab0cdbaea6d3ac2d кложа максимально противоположна х-лю, остальное те же яйца, только протухшие

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 "команд" в смысле "операций".