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

А пруф есть? GigaSearch научился указывать ссылки на источники информации

Время на прочтение2 мин
Количество просмотров2.4K

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

Кому интересно, как мы это сделали, добро пожаловать под кат.

Читать дальше
Всего голосов 12: ↑12 и ↓0+12
Комментарии6

Шарик, отвечающий на вопросы

Время на прочтение1 мин
Количество просмотров3.8K
Не знаю в какой блог засунуть. Видимо, «я пиарюсь» подходит больше остальных.

Сегодня я решал один важный вопрос и переклинило меня, что непременно нужно воспользоваться шариком, отвечающим на вопросы (как в фильме «трасса 60»).
Шарик, отвечающий на вопросы

Гугл нормальных online-шариков не нашел: либо предлагают купить материальный шарик, либо online, но этот шарик страшно выглядит и/или с хитрой логикой (например, нужно ввести текст вопроса, который проходит валидацию).

Собственно, примерно за час написал свой шарик. Нужно просто кликнуть по нему и получишь ответ.

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

http://www.ecm7.ru/8ball/

UPD:
Шарик переехал на собственный домен: www.8-ball.ru.
Старая ссылка тоже работает и перенаправляет на новое место.

UPD:
Благодаря NeonXP появилось расширение с шариком для Google Chrome.
Всего голосов 202: ↑145 и ↓57+88
Комментарии152

Решил 50 задач и ответил на вопрос — Python или JavaScript?

Время на прочтение28 мин
Количество просмотров50K


Привет, друзья!


Я — JavaScript-разработчик. Код пишу в основном на React (иногда на Vue), немного на TypeScript, немного на Node, немного знаю SQL, но...


  • со мной работает много людей, которые пишут код на Python
  • вокруг много разговоров про Python
  • повсюду преподают Python
  • Яндекс любит Python (раньше Гугл тоже его любил, но теперь у него есть Go)

Короче говоря, сложно было не заинтересоваться Python.


Как известно, лучший способ научиться "кодить" — это писать код.


Предлагаю вашему вниманию 50 популярных в сфере программирования задач, решенных с помощью Python и JavaScript.


Цель — сравнить языки на предмет предоставляемых ими возможностей.


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


Предполагается, что вы владеете хотя бы одним из названных языков на среднем уровне.

Читать дальше →
Всего голосов 28: ↑16 и ↓12+4
Комментарии54

Регистрация торговой марки

Время на прочтение1 мин
Количество просмотров701
Есть классное (ну, по крайней мере, для меня) название, связанное с ИТ, которое могло бы стать отличным названием для компании. Собственно, для этого оно и было придумано, но ситуация изменилась, создание компании откладывается, поэтому возник вопрос: как можно «застолбить» это название? Уж очень оно мне нравится.
Во-первых, в эпоху интернета нужно, конечно, зарегистрировать домен. В зоне ru я сделал это через неделю после придумки (кстати, считаю, что долго тянул, мог упустить). Com, net, org и прочие вторичны, да и нету у меня желания платить за их продление каждый год, пока название не используется.
Друг посоветовал зарегистрировать торговую марку. Наведя справки, рассказываю. В российском законодательстве отсутствует понятие «торговой марки», но есть понятие «товарный знак», эквивалентное ему (так что в «Консультанте» искать надо именно по нему). Регистрацию товарных знаков производит «Роспатент», причем оформляется в определенных классах товаров и услуг. Таким образом, регистрация товарного знака для одного класса не запрещает кому-то другому сделать то же самое с твоим названием в другом классе. На все про все уйдет 1-2 года при обычной или 7 месяцев при ускоренной регистрации, причем каждые 10 лет ее будет нужно продлять. В денежном эквиваленте это выражается так: словесное обозначение — 16,500 руб. (1-2 года) или 25,500 руб. (7 мес.); изобразительное обозначение — 18,000 руб. (1-2 года) или 27,000 руб. (7 мес.); комбинированное обозначение — 19,500 руб. (1-2 года) или 28,500 руб. (7 мес.). Короче, много для того, что, возможно, еще долго не будет использоваться и приносить прибыль.
Может, ты знаешь еще способы пусть не юридической, но хотя бы моральной (типа домена) защиты названия от увода?

Cross-posted to lj://diver.
Всего голосов 15: ↑13 и ↓2+11
Комментарии11

Тестовое задание для Связного FixedThreadPool на C#. Что здесь не так? UPD

Время на прочтение25 мин
Количество просмотров11K
UPDATE: Я не мог отказать себе в удовольствии исправить свой ошибочный код. Добавил раздел «Работа над ошибками», в котором привожу исправленный код и описание исправлений, основанное на полученных комментариях.

Это скорее пост-вопрос к специалистам, нежели просто кусок полезной информации. Приглашаю к дискуссии.
Недавно я имел счастье послать своё резюме в Связной на позицию .NET разработчика. В ответ меня попросили сделать тестовое задание на знание многопоточности. Я не могу назвать себя экспертом в этой области, но, тем не менее, прекрасно понял, как мне показалось, как реализовать следующие требования:

Требуется реализация класса на языке C#, аналогичного FixedThreadPool в Java, со следующими требованиями:
  • В конструктор этого класса должно передаваться количество потоков, которые будут выполнять задачи.
  • Интерфейс класса должен предоставлять методы: boolean execute(Task task, Priority priority) и void stop()
  • Интерфейс Task должен содержать один метод: void execute(), который вызывается в произвольном потоке.
  • Тип Priority — это перечисление из трёх приоритетов: HIGH, NORMAL, LOW. При этом во время выбора следующего задания из очереди действуют такие правила: на три задачи с приоритетом HIGH выполняется одна задача с приоритетом NORMAL, задачи с приоритетом LOW не выполняются, пока в очереди есть хоть одна задача с другим приоритетом.
  • До вызова метода stop() задачи ставятся в очередь на выполнение и метод boolean execute(Task task, Priority priority) сразу же возвращает true, не дожидаясь завершения выполнения задачи; а после вызова stop() новые задачи не добавляются в очередь на выполнение, и метод boolean execute(Task task, Priority priority) сразу же возвращает false.
  • Метод stop() ожидает завершения всех текущих задач (не очищая очередь).


Поскольку в задании не было сказано какими примитивами я должен пользоваться, должен ли сделать всё на простейших Thread или же использовать ThreadPool, TPL и т.п., я решил, что задание предполагает использование самых базовых элементов: Thread, ManualResetEvents и т.п. Написал за несколько часов, отослал. Сегодня позвонил и получил ответ через кадровика, который звучал примерно так: «это даже не близко к том, что надо». Это меня озадачило, ибо код работает и протестирован, явных огрехов, на мой взгляд нету.

Итак, на ваш суд представляю мою реализацию FixedThreadPool и сопутствующих классов. Сразу предупреждаю, что, по их мнению реализация ошибочна, и, соответственно, брать мою идею за основу не стоит. Некоторые коментарии по коду:

  • я решил инкапсулировать потоки задач в самом классе задачи,
  • два параметра с типом ILog нужны только для тестовых целей, к основной функциональности они, понятное дело, отношения не имеют,
  • весь проект, включая тестовое приложение можно загрузкить по ссылке (27 килобайт): тестовый проект на ifolder

Читать дальше →
Всего голосов 41: ↑27 и ↓14+13
Комментарии51