LINUX.ORG.RU

Сообщения Vit

 

Не получается вручную отправить бинарные данные как форму

https://github.com/nodeca/pako/blob/formdata/examples/browser.html#L55-L98

Делаю пример, где после упаковки бинарные данные отправляются на сервер. Решил слать как форму, потому что стандартно и удобно обрабатывать.

1. В современных браузерах есть FormData, и с ее помощью все отправляется хорошо.

2. Для старых браузеров вроде описывалось, что body запроса можно создать ручками, но ни фига не работает. Такое впечатление, что происходит перекодировка в UTF-8. Файл принимается, но вместо 44 байт приходит 64.

https://learn.javascript.ru/xhr-forms - вот тут и где-то на MDN похожие примеры, как отправлять бинарные данные в виде файла.

Можете посмотреть по ссылке, что я делаю не так?

 

Vit
()

Надо добавить поддержку WebAssembly в яваскриптовый ресайзер картинок

Т.к. в Firefox 52 уже включили поддержку WebAssembly, хочется поэкспериментировать, но руки никак не дойдут.

Надо закопипастить на сишечку вот эти 2 файла:

https://github.com/nodeca/pica/blob/master/lib/js/resize_array.js
https://github.com/nodeca/pica/blob/master/lib/js/unsharp.js

и разобраться как это скомпилировать в WA и потом дернуть из яваскрипта.

В ресайзере можно закодить только конвольверы, оставив расчет фильтров на яваскрипте. Unsharp mask надо тащить целиком, но там код простой как рельса.

Код дергается 1:1, без наворотов с SSE (он пока все равно в WA не поддерживается).

Под деньгам ХЗ сколько. Договоримся. Заодно мир улучшите :)

vitaly@rcdesign.ru

 , ,

Vit
()

Реально ли траффик сайта использовать для оценки качества поиска?

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

1. С какого количества юзеров (поисковых запросов?) такое вообще начинает работать и выдавать полезный результат?

2. Какой интерфейс для этого делают? На память приходит только «х» рядом с результатами, чтобы убирать плохие.

3. Как учитывать что данные, по которым ищем, меняются?

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

 

Vit
()

WebAssembly - встречайте на арене цирка

В течение недели-двух везде активируют бесплатно без СМС. Скоро в браузер можно будет конпелять питон и лисп :)

Ссылка на опеннет http://www.opennet.ru/opennews/art.shtml?num=46117

Правда пока эта хренотень в состоянии «минимально жизнеспособный продукт». Например нет поддежки SSE (SIMD и все что с этим связано). Ну и интерфейс с яваскриптом примерно никакой - на уровне простых переменных.

В принципе, из явных профитов - можно делать быстрое деление, которое в v8 на яваскрипте вызывает деоптимизации. Это из того, что на JS сейчас невозможно. Бывает иногда полезно, например если хочется у картинки цветовое пространство преобразовать.

 

Vit
()

Изобретаем ранкер для «похожих тем»

Как искать «похожие темы» на форуме? - тут я уже спрашивал насчет общих принципов, пора обсудить более приземленные и практические вопросы.

Итак, хочется сделать на коленке тупенький ранкер, дешево и сердито. Без категоризаций контента и попыток понять его смысл. За основу берем sphinx search c его proxmity-запросами (допускающими частичное совпадение), и ранкер bm25.

Теперь хочется к bm25 подмешать дополнительные критерии:

1. Если в теме нет ответов, она явно бесполезна мне как юзеру, поэтому среди «похожих» я бы ее видеть не хотел. С другой стороны, разницы между темами где 1000 и 100000 ответов я уже не вижу.

2. Как правило свежая инфа полезнее протухшей. Поэтому когда по bm25 много результатов, я бы предпочел видеть более свежие (по дате обновления) темы.

Что еще можно добавить? Где можно потырить готовые коэффициенты для таких логарифмических зависимостей (видел только для reddit)?

 ,

Vit
()

Посоветуйте разметку диска для сервера с docker

Хочется поднять новый сервер, и там все завернуть в docker. Не хотелось бы промахнуться с разметкой, файловыми системами и т.п., так как переделывать хлопотно.

Что вообще будет надо:

- пяток виртуалок (мне привычнее на убунте)
- много данных (база монги, и там же картинки в gridfs, 1-3 Тб)
- (?) возможность делать бакапы, наверное через снапшоты

Подскажите, кто с этой темой разбирался

- ubuntu server 16.04 сойдет или лучше другое?
- zfs уже можно ставить?
- как размечать диск (разделы, файловые системы и что куда монтировать)
- куда принято data volumes класть

Есть еще всякие модные CoreOS, но я не знаю, насколько оно юзабельное. В общем, хоцца современную хостовую ноду поднять, но я не особо в курсе, как нынче принято.

 ,

Vit
()

Ждем DMCA takedown в markdown-it :)

https://github.com/jonschlinkert/remarkable/issues/254

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

Краткая история драмы - чел много обещал про дружную работу, и ни фига не делал. Плюс в один момент, набухавшись или обколовшись, написал мне, что если я еще раз с ним заговорю в каком-то там ключе, то он заберет у меня права доступа. В итоге был послан. А еще выпилен из копирайтов, из принципа.

Кстати, за 3 года он так ни фига и не сделал - по истории видно. Код протух.

С тех пор он ноет про порушенные копирайты, тонны виртуальных усилий и т.п. В качестве формального доказательства предъявляя письмо, которое было написано по поводу ДРУГОГО репозитория и других планов :).

 ,

Vit
()

Как правильно терминировать большие POST-запросы в node.js?

Есть типовой вебсервер, который на каждый новый запрос вызывает стандартную function(req, res). Я хочу грамотно прерывать соединение, если кто-то пытается отправить слишком большой POST-запрос.

Будет ли достаточно дернуть res.end(413, 'request entity too large') или надо предпринимать какие-то дополниртельные шаги чтобы req (входящий стрим) тоже заткнуть? Я типа в курсе, что можно выставить флажок и просто перестать сохранять входящие данные, или вообще req.destroy(). Но хочется все-таки и грамотно входной стрим уконтрапупить, а не просто в холостую его гонять.

Как в ноде принято подобное делать?

 

Vit
()

В ноде кончилась почта

https://github.com/nodemailer/nodemailer

Автор самого популярного пакета для отправки почты сменил лицензию с MIT на EUPL. Учитывая что в ноде в основном все под MIT, теперь всем либо сидеть на старой версии, либо валить непонятно куда.

Появилось упоминание коммерческой лицензии за 780 евро в год.

Еще автор убил на гитхабе исходники модулей. Например этого https://www.npmjs.com/package/nodemailer-sendmail-transport

Какой добрый дядя, а ведь мог и шило в бок воткнуть.

 , ,

Vit
()

Очередной бананометр для гитхаба

http://beta.gitlance.net/top/javascript

По версии неизвестных экспертов я наговнокодил на яваскрипте среди первых двух сотен в мире, гы :). Это ж насколько тогда низкая средняя температура по больнице...

 

Vit
()

Как искать «похожие темы» на форуме?

Есть такая модная фича, когда в бложиках показывают ссылки на «похожие записи», или в конце тем форума показывают ссылки на «похожие темы». Интересует варианты, как cделать подобное. Самое примитивное, что приходит в голову, проиндексировать топики в sphinxsearch, и потом искать в заголовках

(название темы)/1

То есть, «должно совпадать хотя бы одно слово, с сортировкой по релевантности». Но наверняка есть много нюансов, например:

- какой критерий поиска
- какой критерий сортировки
- учитывать ли «давность» найденного
- показывать только предыдущие темы, или более свежие тоже
- искать только по заголовкам или по содержанию первого поста тоже

и т.п.

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

 ,

Vit
()

mapzen.com - есть ли подводные камни?

https://mapzen.com/

Кто-нибудь имел дело с их тайлами и сервисами? Есть подводные камни? С виду вектор выглядит симпатично.

 mapzen,

Vit
()

idoit - очередь задач под ноду

https://github.com/nodeca/idoit

Новый проект с говорящим названием от NIH-отдела нашей велосипедной фабрики. Очередь задач под ноду, на редиске. Готовых подобного уровня не нашлось, а поднимать ради простых вещей монстров типа RabbitMQ не хотелось.

По фичам напоминает Celery (группы, цепочки задач). Плюс есть итерирующий мапер, чтобы эффективно нарезать гиганские дырявые диапазоны на чанки с одинаковым числом элементов. Все апдейты состояний завернуты в транзакции, так что любой процесс может падать в произвольный момент - целостность не пострадает.

Разруливание тяжелых задач отдано на откуп системному шедюлеру. Просто делается пара пулов с воркерами, в один роутится всё «не блокирующее», во второй - с интенсивными вычислениями.

Отдельное спасибо dave и всем остальным, кто помог быстро сориентироваться в теме.

 , ,

Vit
()

Как правильно проксировать вебсокеты через nginx?

https://gist.github.com/puzrin/7bac87a7064576e78b8a347101bfea35#file-dev-rcop...

Вроде все сделал по советам в интернетах. Но есть один досадный косячок. Если перезапустить нодовский бакенд, то FAYE перестает устанавливать соединение с сервером, даже если страничку перегрузить.

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

Это можно как-то побороть?

 , ,

Vit
()

Теги vs Поиск. Есть ли польза от тегов?

На многих сайтах, вроде лора и пикабу, наравне с поиском делают теги. Мне интересна причина - это потому что поиск нормальный не осилили? Или не осилили подписку на поисковые запросы?

Тегами можно донести рубленые мысли в стиле Маяковского, но это спорное достоинство. Кто что думает? Когда теги лучше самого расхорошего поиска а когда нет?

 

Vit
()

Где есть человеческое управление компонентами (интерфейса)?

Вроде уже многие сталкивались с тем, что веб-страничку удобнее рассматривать не как «шаблончик полюс скриптик», а как набор самодостаточных компонетов (виджетов?). Где каждый компонент содержит все что ему надо - шаблон, стили, переводы, скрипты.

В принципе многие движутся в этом направлении - react, angular и т.п. Но вот чего я пока не нашел - как обеспечить изменение внешнего вида. Типовые задачи:

1. Допустим я хочу другой скин для сайта. Хорошо если мне повезет и достаточно изменить CSS. А если еще и верстку?
2. Допустим я хочу что-то добавить в существующий компонент из внешнего. Например, был форум. Добавили модуль блогов и на карточку юзера понадобилось добавить ссылки из бложика.

Появились ли какие-то методологии, как красиво разруливать подобные вещи? Пока приходилось сталкиваться с такими вещами:

- Накладывание текстовых diff на шаблоны. Стрёмная по жизни штука.
- Модификация DOM ручками через яваскрипт. Можно, но неудобно и в использовании и в поддержке.
- BEM XLST. Рабочая штука, но очень высокая цена входа. Сделано не для людей.
- Можно еще втыкать всякие хуки для иньекций, но это часто решает проблему уже после того как она случилась, а не заранее.

В основном все эти проблемы касаются только шаблонов:

- на CSS при БЕМ-овских именах классов подкрутить текущие стили не проблема.
- на JS в принципе медиатор c responsibility chains позволяет особо не париться о расширяемости. То, что много подписчиков могут образовать помойку разруливается разбивкой одной большой цепочки на несколько вложенных.

Возвращаясь к шаблонам - где придумали что-нибудь простое и удобное, чтобы подкручивать выхлоп «веб-компонент»? Яндексовский БЕМ ни на простое ни на удобное не тянет.

 ,

Vit
()

Не хочешь купить слона? А придётся

https://itmages.ru/image/view/4888841/e0c65ead

Юзер прислал скриншотег. Тем кто режет рекламу директа яндекс втуливает попандер с опросом. Какие однако находчивые и предприимчивые люди.

У кого-нибудь еще было?

 

Vit
()

А где нонче вешать вакансии про удалёнку?

Ну кроме местного job.

Зашел на HeadHunter - там теперь вакансии привязаны к городам. WTF? Каждый город выбирать ни каких денег не хватит. А мне кроме кроме часового пояса без разницы где люди находятся.

На сайты вроде суперджоба и т.п. кто-нибудь из чодких программистов ходит вообще?

 

Vit
()

нужен senior / architect (удаленка, фуллтайм)

Внезапно образовалась вакансия, т.к. один из разработчиков решил круто изменить свою жизнь :)

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

з/п 2.4К денег.

Основной проект этот https://dev.rcopen.com/, но побочно делается куча опенсорсных пакетов, которые можно отыскать через мой профиль. Делается это все для собственного развлечения, поэтому требования к качеству кода очень высокие.

Из плюсов:

- всё что делается - выкладывается на гитхабе, так что параллельно прокачивается ЧСВ и скор для следующей работы :).
- нет коммерческих целей, никто внезапно не прибежит с идиотскими срочными задачами от долбанутых заказчиков.
- нет жестких сроков, поэтому редко приходится гнать код из говна и палок (ну и выкладывать говнокод на всеобщее обозрение какбэ западло).

Из минусов:

- ну яваскрипт не всем нравится... тут ничего не поделать.
- днем надо пересекатья со всеми хотя бы 4 часа, поэтому часовой пояс очень далекий от GMT+3 не подойдет (либо надо будет двигать свой график).

Контакт: vitaly@rcdesign.ru, заголовок «Nodeca, программист». По возможности сразу присылайте пруфы, какой вы замечательный разработчик. Например, ссылку на свой интересный профиль с гитхаба. Вопросы задавать можно, но пруфы вперёд.

Если кому-то проще через hh - https://spb.hh.ru/vacancy/18390473

 , , ,

Vit
()

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

Связано с Как реализовать «подписку на поисковый запрос»?, подписками на поисковые запросы.

Допустим есть куча документов с массивами слов (тегов):

- A, B
- D, E, F,
- C, B, A

И т.д. слова и их комбинации произвольные.

И есть строка (заголовок темы) из слов [ x, y, z, ... ]. Как выбрать документы, все слова которых полностью подержатся в заголовке?

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

 

Vit
()

RSS подписка на новые темы