Pull to refresh
22
0
Денис Зыков @shai_hulud

Пользователь

Send message

В статье вместо реализации метода /convert заглушка. Вот метод из исходников на гитхабе:

app.post("/convert", async (req, res) => {
	let { value } = req.body;

	const prompt = `Convert the JSON object into Typescript interfaces \n ${value} Please, I need the only the code, I don't need any explanations.`;
	const completion = await openai.createChatCompletion({
		model: "gpt-3.5-turbo",
		messages: [{ role: "user", content: prompt }],
	});
	res.json({
		message: "Successful",
		response: completion.data.choices[0].message.content,
	});
});

Почему не объявить тип группы а уже потом ее инициировать?

interface MyFormControls {
  id: FormControl<string>;
  // ...
} 

private myForm: FormGroup<MyFormControls>;

Я вообще использую тип-обертку, который генерит этот тип из модели:

export type ModelFormControls<ModelT> = {
	[key in keyof ModelT]: FormControl<ModelT[key]>
};

Конечно это примитивный мета-тип, можно через тернарный оператор бахнуть поддержку объектов и массивов.

https://benlesh.medium.com/hot-vs-cold-observables-f8094ed53339

cold -> не генерируют значения пока никто не подписан

warm -> генерируют значения пока есть хоть один подписчик

hot -> генерируют значения независимо от наличия подписчиков

----------------------------------------------

сделать cold -> warm:

share() + refCount

сделать cold -> hot:

share()

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

SQS? Нет. DynamoDB? Нет. Просто используйте виртуальные машины EC2 и устанавливайте на них все, что нужно.

Если посыпать всё кубером, то проблем с маштабированием нет.

А альтернатива это сесть на штырь AWS и думать что это хребет айти-компании.

Можете развернуть мысль о том что "T4" это анти-паттерн?

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

Это "open-source" ловушка GPL ну и плюс плевок в лицо своим пользователям от Sencha.

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

Вы предупреждаете пользователей, что все эти админки/конфигураторы/редакторы/внутренние приложения надо обязательно опубликовать иначе могут наступить юридические последствия?

У них даже не будет возможности свичнуться на Commercial т.к. это запрещено.

Это же не ExtJs/Sencha в качестве UI?

По тому что если это оно, то вы нарушили условия лицензирования:

https://www.sencha.com/legal/restrictions/

Prohibited Uses

Under this Commercial License, you are not allowed to create applications that can be described as a development toolkit or library, an application builder, a website builder or any application that is intended for use by software, application, or website developers or designers. If you are concerned about this prohibition, you can discuss getting an OEM license by emailing us at license@sencha.com.

Бич хостинг с SSD за те же 50$ дает скорость чтения в районе 500 MiB/s, если gzipать логи, то за счёт стриминга архивированных данных можно получить множители до 10х т.е. в районе 5 GiB/s, избирательно парсить на такой "скорости" не рокет саинс.

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

---------------------

Но опять же, в описании задачи ничего нет про гео-привязку и просмотр логов. Так можно "придумывать" новые фичи вечно, в конце будет только одно решение Spring, Oracle и штат в 5000 человек.

Для для просто сокращалки БД не нужна. Программисты которые сразу думают какую БД выбрать еще не познали дзен.

пфф, смотрим nginx логи на предмет обращения.

30.000.000 url / month = 52 bytes/url + 8 bytes/short-url = 1,716 MiB / month

Выделенного сервера за 50$/m с 64г памяти хватит на 37 месяцев, так что можно хранить в памяти и дампить это барахло на диск. После 24 месяцев 2 раунда инвестиций должны быть уже съедены и можно продавать свою долю и начинать делать следующий стартап.

для всех нет, для автора да

Hidden text

если так придираться, то все "новые" концепции уже были изобретены бородачами в 60х, что растовские контракты памями, что async/await итд.

Аналогичное мнение, может мне сейчас и не надо, а завтра понадобится и найдется через гугл. Не самому же их делать :)

@Geronom побенчмаркай пожалуйста словари/деревья на добавление/удаление/поиск, включая concurrent, в свежем доднете. Маленькие на 100, большие на 1000, и огромные на 10-100к.

9.3.1. GET

Although request message framing is independent of the method used, content received in a GET request has no generally defined semantics, cannot alter the meaning or target of the request, and might lead some implementations to reject the request and close the connection because of its potential as a request smuggling attack (Section 11.2 of [HTTP/1.1]). A client SHOULD NOT generate content in a GET request unless it is made directly to an origin server that has previously indicated, in or out of band, that such a request has a purpose and will be adequately supported. An origin server SHOULD NOT rely on private agreements to receive content, since participants in HTTP communication are often unaware of intermediaries along the request chain.

Все еще не запрещено полностью, можно если сервер сам просит "ебни меня GETом чувак". Вся секция из 9110 про "можно если осторожно", говорит о том что есть стандарт 2616, а есть реализации. Повернуть взад и запретить уже нельзя, разрешить нельзя. Как и раньше нужен клиент поддерживающий GET с message body и сервер с аналогичной поддержкой.

В стандарте написано ровно то же, что и я написал ;)

Можно ссылку на стандарт. В RFC-2616 такого нет.

4.3 Message Body

The presence of a message-body in a request is signaled by the inclusion of a Content-Length or Transfer-Encoding header field in the request's message-headers. A message-body MUST NOT be included in a request if the specification of the request method (section 5.1.1) does not allow sending an entity-body in requests. A server SHOULD read and forward a message-body on any request; if the request method does not include defined semantics for an entity-body, then the message-body SHOULD be ignored when handling the request.

Т.е. послать можно, сервер не должен придавать этому значения. А в более поздней редакции RFC 7231

A payload within a GET request message has no defined semantics; sending a payload body on a GET request might cause some existing implementations to reject the request.

Слать можно, но работать не будет т.к. много программистов неправильно реализовали спеку.

Вкину свою getopt-styled библиотеку, у которой меньше фич, но которую проще использовать:

public class Program
{

  private static int Main(string[] arguments) =>
    CommandLine
      .CreateFromArguments(arguments)
      .Use<Program>() // set class with verbs/commands
      .Run();

  //
  // Usage: myapp.exe hello --name <name>
  // 
  public static int Hello(string name)
  //                  ^            ^
  //                 Verb        Option
  {
    Console.WriteLine("Hello " + name + "!");
    return 0; // exit code
  }  

}

влечёт за собой запрет GET и DELETE иметь тело запроса (поскольку этому телу невозможно приписать никакой осмысленной роли).

Вообще-то стандарт HTTP нигде не запрещает GET иметь тело, в теле GET можно передать фильтры в виде объекта, а не насиловать query часть URL.

Все реализации HTTP клиентов\серверов делятся на тех кто читал спеку и делал по спеке и тех кто делал по наитию сердца. От нечитающих спеки нам приехали уязвимости HTTP Request Split - Content-Length, Content-Encoding: chunked, HTTP Header Injection etc.

Hidden text

не глядя моё на бухтение статья понравилась, автор молодец.

lock-free queue не подразумевает исключительного доступа. Lock-free структуры данных вообще не связаны с примитивами синхронизации.

https://habr.com/ru/articles/665784/

вот тут человек перечислил популярные инструменты

А существующие инструменты, помимо гугл таблиц, которые выгружают JSON и сразу генерят код C# для загрузки не рассматривали?

Information

Rating
4,270-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity